Fixing merge
Этот коммит содержится в:
178
.sass-lint.yml
Обычный файл
178
.sass-lint.yml
Обычный файл
@@ -0,0 +1,178 @@
|
|||||||
|
# sass-lint config generated by make-sass-lint-config v0.1.1
|
||||||
|
#
|
||||||
|
# The following scss-lint Linters are not yet supported by sass-lint:
|
||||||
|
# DisableLinterReason, ElsePlacement, PropertyCount, SelectorDepth
|
||||||
|
# SpaceAroundOperator, TrailingWhitespace, UnnecessaryParentReference, Compass::*
|
||||||
|
#
|
||||||
|
# The following settings/values are unsupported by sass-lint:
|
||||||
|
# Linter Indentation, option "allow_non_nested_indentation"
|
||||||
|
# Linter Indentation, option "character"
|
||||||
|
# Linter NestingDepth, option "ignore_parent_selectors"
|
||||||
|
# Linter PropertySortOrder, option "min_properties"
|
||||||
|
# Linter PropertySortOrder, option "separate_groups"
|
||||||
|
# Linter SpaceBeforeBrace, option "allow_single_line_padding"
|
||||||
|
# Linter VendorPrefix, option "identifier_list"
|
||||||
|
|
||||||
|
files:
|
||||||
|
include: '**/*.scss'
|
||||||
|
options:
|
||||||
|
formatter: stylish
|
||||||
|
merge-default-rules: false
|
||||||
|
rules:
|
||||||
|
bem-depth:
|
||||||
|
- 1
|
||||||
|
- max-depth: 3
|
||||||
|
border-zero:
|
||||||
|
- 1
|
||||||
|
- convention: none
|
||||||
|
brace-style:
|
||||||
|
- 2
|
||||||
|
- allow-single-line: true
|
||||||
|
class-name-format:
|
||||||
|
- 1
|
||||||
|
- convention: hyphenatedbem
|
||||||
|
clean-import-paths:
|
||||||
|
- 1
|
||||||
|
- filename-extension: false
|
||||||
|
leading-underscore: false
|
||||||
|
empty-line-between-blocks:
|
||||||
|
- 2
|
||||||
|
- ignore-single-line-rulesets: true
|
||||||
|
extends-before-declarations: 1
|
||||||
|
extends-before-mixins: 1
|
||||||
|
final-newline:
|
||||||
|
- 1
|
||||||
|
- include: true
|
||||||
|
force-attribute-nesting: 1
|
||||||
|
force-element-nesting: 1
|
||||||
|
force-pseudo-nesting: 1
|
||||||
|
function-name-format:
|
||||||
|
- 1
|
||||||
|
- allow-leading-underscore: true
|
||||||
|
convention: hyphenatedlowercase
|
||||||
|
hex-length:
|
||||||
|
- 1
|
||||||
|
- style: short
|
||||||
|
hex-notation:
|
||||||
|
- 1
|
||||||
|
- style: lowercase
|
||||||
|
id-name-format:
|
||||||
|
- 1
|
||||||
|
- convention: hyphenatedbem
|
||||||
|
indentation:
|
||||||
|
- 2
|
||||||
|
- size: 4
|
||||||
|
leading-zero:
|
||||||
|
- 1
|
||||||
|
- include: false
|
||||||
|
mixin-name-format:
|
||||||
|
- 0
|
||||||
|
- allow-leading-underscore: true
|
||||||
|
convention: hyphenatedlowercase
|
||||||
|
mixins-before-declarations: 1
|
||||||
|
nesting-depth:
|
||||||
|
- 1
|
||||||
|
- max-depth: 4
|
||||||
|
no-color-keyword: 1
|
||||||
|
no-color-literals: 1
|
||||||
|
no-css-comments: 1
|
||||||
|
no-debug: 1
|
||||||
|
no-duplicate-properties: 1
|
||||||
|
no-empty-rulesets: 1
|
||||||
|
no-extends: 0
|
||||||
|
no-ids: 1
|
||||||
|
no-important: 1
|
||||||
|
no-invalid-hex: 1
|
||||||
|
no-mergeable-selectors: 1
|
||||||
|
no-misspelled-properties:
|
||||||
|
- 1
|
||||||
|
- extra-properties: ['overflow-scrolling', 'font-smoothing']
|
||||||
|
no-qualifying-elements:
|
||||||
|
- 1
|
||||||
|
- allow-element-with-attribute: false
|
||||||
|
allow-element-with-class: false
|
||||||
|
allow-element-with-id: false
|
||||||
|
no-trailing-zero: 1
|
||||||
|
no-transition-all: 0
|
||||||
|
no-url-protocols: 1
|
||||||
|
no-vendor-prefixes:
|
||||||
|
- 1
|
||||||
|
- additional-identifiers: []
|
||||||
|
excluded-identifiers: []
|
||||||
|
placeholder-in-extend: 1
|
||||||
|
placeholder-name-format:
|
||||||
|
- 1
|
||||||
|
- convention: hyphenatedlowercase
|
||||||
|
property-sort-order:
|
||||||
|
- 1
|
||||||
|
- ignore-custom-properties: false
|
||||||
|
property-units:
|
||||||
|
- 1
|
||||||
|
- global:
|
||||||
|
- ch
|
||||||
|
- em
|
||||||
|
- ex
|
||||||
|
- rem
|
||||||
|
- cm
|
||||||
|
- in
|
||||||
|
- mm
|
||||||
|
- pc
|
||||||
|
- pt
|
||||||
|
- px
|
||||||
|
- q
|
||||||
|
- vh
|
||||||
|
- vw
|
||||||
|
- vmin
|
||||||
|
- vmax
|
||||||
|
- deg
|
||||||
|
- grad
|
||||||
|
- rad
|
||||||
|
- turn
|
||||||
|
- ms
|
||||||
|
- s
|
||||||
|
- Hz
|
||||||
|
- kHz
|
||||||
|
- dpi
|
||||||
|
- dpcm
|
||||||
|
- dppx
|
||||||
|
- '%'
|
||||||
|
per-property: {}
|
||||||
|
quotes:
|
||||||
|
- 1
|
||||||
|
- style: single
|
||||||
|
shorthand-values:
|
||||||
|
- 1
|
||||||
|
- allowed-shorthands:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
single-line-per-selector: 2
|
||||||
|
space-after-bang:
|
||||||
|
- 2
|
||||||
|
- include: false
|
||||||
|
space-after-colon:
|
||||||
|
- 2
|
||||||
|
- include: true
|
||||||
|
space-after-comma:
|
||||||
|
- 1
|
||||||
|
- include: true
|
||||||
|
space-before-bang:
|
||||||
|
- 2
|
||||||
|
- include: true
|
||||||
|
space-before-brace:
|
||||||
|
- 2
|
||||||
|
- include: true
|
||||||
|
space-before-colon: 1
|
||||||
|
space-between-parens:
|
||||||
|
- 2
|
||||||
|
- include: false
|
||||||
|
trailing-semicolon: 2
|
||||||
|
url-quotes: 1
|
||||||
|
variable-for-property:
|
||||||
|
- 0
|
||||||
|
- properties: []
|
||||||
|
variable-name-format:
|
||||||
|
- 1
|
||||||
|
- allow-leading-underscore: true
|
||||||
|
convention: hyphenatedlowercase
|
||||||
|
zero-unit: 1
|
||||||
4
Godeps/Godeps.json
сгенерированный
4
Godeps/Godeps.json
сгенерированный
@@ -5,6 +5,10 @@
|
|||||||
"./..."
|
"./..."
|
||||||
],
|
],
|
||||||
"Deps": [
|
"Deps": [
|
||||||
|
{
|
||||||
|
"ImportPath": "github.com/NYTimes/gziphandler",
|
||||||
|
"Rev": "a88790d49798560db24af70fb6a10a66e2549a72"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/alecthomas/log4go",
|
"ImportPath": "github.com/alecthomas/log4go",
|
||||||
"Rev": "8e9057c3b25c409a34c0b9737cdc82cbcafeabce"
|
"Rev": "8e9057c3b25c409a34c0b9737cdc82cbcafeabce"
|
||||||
|
|||||||
13
Godeps/_workspace/src/github.com/NYTimes/gziphandler/LICENSE.md
сгенерированный
поставляемый
Обычный файл
13
Godeps/_workspace/src/github.com/NYTimes/gziphandler/LICENSE.md
сгенерированный
поставляемый
Обычный файл
@@ -0,0 +1,13 @@
|
|||||||
|
Copyright (c) 2015 The New York Times Company
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this library except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
52
Godeps/_workspace/src/github.com/NYTimes/gziphandler/README.md
сгенерированный
поставляемый
Обычный файл
52
Godeps/_workspace/src/github.com/NYTimes/gziphandler/README.md
сгенерированный
поставляемый
Обычный файл
@@ -0,0 +1,52 @@
|
|||||||
|
Gzip Handler
|
||||||
|
============
|
||||||
|
|
||||||
|
This is a tiny Go package which wraps HTTP handlers to transparently gzip the
|
||||||
|
response body, for clients which support it. Although it's usually simpler to
|
||||||
|
leave that to a reverse proxy (like nginx or Varnish), this package is useful
|
||||||
|
when that's undesirable.
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Call `GzipHandler` with any handler (an object which implements the
|
||||||
|
`http.Handler` interface), and it'll return a new handler which gzips the
|
||||||
|
response. For example:
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
"github.com/NYTimes/gziphandler"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
withoutGz := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
w.Header().Set("Content-Type", "text/plain")
|
||||||
|
io.WriteString(w, "Hello, World")
|
||||||
|
})
|
||||||
|
|
||||||
|
withGz := gziphandler.GzipHandler(withoutGz)
|
||||||
|
|
||||||
|
http.Handle("/", withGz)
|
||||||
|
http.ListenAndServe("0.0.0.0:8000", nil)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
The docs can be found at [godoc.org] [docs], as usual.
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
[Apache 2.0] [license].
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[docs]: https://godoc.org/github.com/nytimes/gziphandler
|
||||||
|
[license]: https://github.com/nytimes/gziphandler/blob/master/LICENSE.md
|
||||||
140
Godeps/_workspace/src/github.com/NYTimes/gziphandler/gzip.go
сгенерированный
поставляемый
Обычный файл
140
Godeps/_workspace/src/github.com/NYTimes/gziphandler/gzip.go
сгенерированный
поставляемый
Обычный файл
@@ -0,0 +1,140 @@
|
|||||||
|
package gziphandler
|
||||||
|
|
||||||
|
import (
|
||||||
|
"compress/gzip"
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
vary = "Vary"
|
||||||
|
acceptEncoding = "Accept-Encoding"
|
||||||
|
contentEncoding = "Content-Encoding"
|
||||||
|
)
|
||||||
|
|
||||||
|
type codings map[string]float64
|
||||||
|
|
||||||
|
// The default qvalue to assign to an encoding if no explicit qvalue is set.
|
||||||
|
// This is actually kind of ambiguous in RFC 2616, so hopefully it's correct.
|
||||||
|
// The examples seem to indicate that it is.
|
||||||
|
const DEFAULT_QVALUE = 1.0
|
||||||
|
|
||||||
|
var gzipWriterPool = sync.Pool{
|
||||||
|
New: func() interface{} { return gzip.NewWriter(nil) },
|
||||||
|
}
|
||||||
|
|
||||||
|
// GzipResponseWriter provides an http.ResponseWriter interface, which gzips
|
||||||
|
// bytes before writing them to the underlying response. This doesn't set the
|
||||||
|
// Content-Encoding header, nor close the writers, so don't forget to do that.
|
||||||
|
type GzipResponseWriter struct {
|
||||||
|
gw *gzip.Writer
|
||||||
|
http.ResponseWriter
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write appends data to the gzip writer.
|
||||||
|
func (w GzipResponseWriter) Write(b []byte) (int, error) {
|
||||||
|
return w.gw.Write(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Flush flushes the underlying *gzip.Writer and then the underlying
|
||||||
|
// http.ResponseWriter if it is an http.Flusher. This makes GzipResponseWriter
|
||||||
|
// an http.Flusher.
|
||||||
|
func (w GzipResponseWriter) Flush() {
|
||||||
|
w.gw.Flush()
|
||||||
|
if fw, ok := w.ResponseWriter.(http.Flusher); ok {
|
||||||
|
fw.Flush()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GzipHandler wraps an HTTP handler, to transparently gzip the response body if
|
||||||
|
// the client supports it (via the Accept-Encoding header).
|
||||||
|
func GzipHandler(h http.Handler) http.Handler {
|
||||||
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
w.Header().Add(vary, acceptEncoding)
|
||||||
|
|
||||||
|
if acceptsGzip(r) {
|
||||||
|
// Bytes written during ServeHTTP are redirected to this gzip writer
|
||||||
|
// before being written to the underlying response.
|
||||||
|
gzw := gzipWriterPool.Get().(*gzip.Writer)
|
||||||
|
defer gzipWriterPool.Put(gzw)
|
||||||
|
gzw.Reset(w)
|
||||||
|
defer gzw.Close()
|
||||||
|
|
||||||
|
w.Header().Set(contentEncoding, "gzip")
|
||||||
|
h.ServeHTTP(GzipResponseWriter{gzw, w}, r)
|
||||||
|
} else {
|
||||||
|
h.ServeHTTP(w, r)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// acceptsGzip returns true if the given HTTP request indicates that it will
|
||||||
|
// accept a gzippped response.
|
||||||
|
func acceptsGzip(r *http.Request) bool {
|
||||||
|
acceptedEncodings, _ := parseEncodings(r.Header.Get(acceptEncoding))
|
||||||
|
return acceptedEncodings["gzip"] > 0.0
|
||||||
|
}
|
||||||
|
|
||||||
|
// parseEncodings attempts to parse a list of codings, per RFC 2616, as might
|
||||||
|
// appear in an Accept-Encoding header. It returns a map of content-codings to
|
||||||
|
// quality values, and an error containing the errors encounted. It's probably
|
||||||
|
// safe to ignore those, because silently ignoring errors is how the internet
|
||||||
|
// works.
|
||||||
|
//
|
||||||
|
// See: http://tools.ietf.org/html/rfc2616#section-14.3
|
||||||
|
func parseEncodings(s string) (codings, error) {
|
||||||
|
c := make(codings)
|
||||||
|
e := make([]string, 0)
|
||||||
|
|
||||||
|
for _, ss := range strings.Split(s, ",") {
|
||||||
|
coding, qvalue, err := parseCoding(ss)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
e = append(e, err.Error())
|
||||||
|
|
||||||
|
} else {
|
||||||
|
c[coding] = qvalue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO (adammck): Use a proper multi-error struct, so the individual errors
|
||||||
|
// can be extracted if anyone cares.
|
||||||
|
if len(e) > 0 {
|
||||||
|
return c, fmt.Errorf("errors while parsing encodings: %s", strings.Join(e, ", "))
|
||||||
|
}
|
||||||
|
|
||||||
|
return c, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// parseCoding parses a single conding (content-coding with an optional qvalue),
|
||||||
|
// as might appear in an Accept-Encoding header. It attempts to forgive minor
|
||||||
|
// formatting errors.
|
||||||
|
func parseCoding(s string) (coding string, qvalue float64, err error) {
|
||||||
|
for n, part := range strings.Split(s, ";") {
|
||||||
|
part = strings.TrimSpace(part)
|
||||||
|
qvalue = DEFAULT_QVALUE
|
||||||
|
|
||||||
|
if n == 0 {
|
||||||
|
coding = strings.ToLower(part)
|
||||||
|
|
||||||
|
} else if strings.HasPrefix(part, "q=") {
|
||||||
|
qvalue, err = strconv.ParseFloat(strings.TrimPrefix(part, "q="), 64)
|
||||||
|
|
||||||
|
if qvalue < 0.0 {
|
||||||
|
qvalue = 0.0
|
||||||
|
|
||||||
|
} else if qvalue > 1.0 {
|
||||||
|
qvalue = 1.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if coding == "" {
|
||||||
|
err = fmt.Errorf("empty content-coding")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
17
Makefile
17
Makefile
@@ -136,6 +136,7 @@ package:
|
|||||||
tar -C dist -czf $(DIST_PATH).tar.gz mattermost
|
tar -C dist -czf $(DIST_PATH).tar.gz mattermost
|
||||||
|
|
||||||
build-client:
|
build-client:
|
||||||
|
mkdir -p webapp/dist/files
|
||||||
cd webapp && make build
|
cd webapp && make build
|
||||||
|
|
||||||
go-test:
|
go-test:
|
||||||
@@ -196,15 +197,10 @@ clean: stop-docker
|
|||||||
rm -Rf $(DIST_ROOT)
|
rm -Rf $(DIST_ROOT)
|
||||||
go clean $(GOFLAGS) -i ./...
|
go clean $(GOFLAGS) -i ./...
|
||||||
|
|
||||||
rm -rf web/react/node_modules
|
cd webapp && make clean
|
||||||
rm -f web/static/js/bundle*.js
|
|
||||||
rm -f web/static/js/bundle*.js.map
|
|
||||||
rm -f web/static/js/libs*.js
|
|
||||||
rm -f web/static/css/styles.css
|
|
||||||
|
|
||||||
rm -rf api/data
|
rm -rf api/data
|
||||||
rm -rf logs
|
rm -rf logs
|
||||||
rm -rf web/sass-files/.sass-cache
|
|
||||||
|
|
||||||
rm -rf Godeps/_workspace/pkg/
|
rm -rf Godeps/_workspace/pkg/
|
||||||
|
|
||||||
@@ -220,14 +216,17 @@ nuke: | clean clean-docker
|
|||||||
|
|
||||||
touch $@
|
touch $@
|
||||||
|
|
||||||
run: start-docker run-server run-client
|
run: | start-docker run-client run-server
|
||||||
|
|
||||||
run-server: .prepare-go
|
run-server: .prepare-go
|
||||||
@echo Starting go web server
|
@echo Starting go web server
|
||||||
$(GO) run $(GOFLAGS) mattermost.go -config=config.json &
|
$(GO) run $(GOFLAGS) mattermost.go -config=config.json &
|
||||||
|
|
||||||
run-client: build-client
|
run-client:
|
||||||
@echo Starting react processo
|
@echo Starting client
|
||||||
|
|
||||||
|
mkdir -p webapp/dist/files
|
||||||
|
cd webapp && make run
|
||||||
|
|
||||||
@if [ "$(BUILD_ENTERPRISE)" = "true" ] && [ -d "$(ENTERPRISE_DIR)" ]; then \
|
@if [ "$(BUILD_ENTERPRISE)" = "true" ] && [ -d "$(ENTERPRISE_DIR)" ]; then \
|
||||||
cp ./config/config.json ./config/config.json.bak; \
|
cp ./config/config.json ./config/config.json.bak; \
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ func InitCommand(r *mux.Router) {
|
|||||||
sr := r.PathPrefix("/commands").Subrouter()
|
sr := r.PathPrefix("/commands").Subrouter()
|
||||||
|
|
||||||
sr.Handle("/execute", ApiUserRequired(executeCommand)).Methods("POST")
|
sr.Handle("/execute", ApiUserRequired(executeCommand)).Methods("POST")
|
||||||
sr.Handle("/list", ApiUserRequired(listCommands)).Methods("GET")
|
sr.Handle("/list", ApiUserRequired(listCommands)).Methods("POST")
|
||||||
|
|
||||||
sr.Handle("/create", ApiUserRequired(createCommand)).Methods("POST")
|
sr.Handle("/create", ApiUserRequired(createCommand)).Methods("POST")
|
||||||
sr.Handle("/list_team_commands", ApiUserRequired(listTeamCommands)).Methods("GET")
|
sr.Handle("/list_team_commands", ApiUserRequired(listTeamCommands)).Methods("GET")
|
||||||
@@ -76,7 +76,9 @@ func listCommands(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
} else {
|
} else {
|
||||||
teamCmds := result.Data.([]*model.Command)
|
teamCmds := result.Data.([]*model.Command)
|
||||||
for _, cmd := range teamCmds {
|
for _, cmd := range teamCmds {
|
||||||
if cmd.AutoComplete && !seen[cmd.Id] {
|
if cmd.ExternalManagement {
|
||||||
|
commands = append(commands, autocompleteCommands(c, cmd, r)...)
|
||||||
|
} else if cmd.AutoComplete && !seen[cmd.Id] {
|
||||||
cmd.Sanitize()
|
cmd.Sanitize()
|
||||||
seen[cmd.Trigger] = true
|
seen[cmd.Trigger] = true
|
||||||
commands = append(commands, cmd)
|
commands = append(commands, cmd)
|
||||||
@@ -88,6 +90,92 @@ func listCommands(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
w.Write([]byte(model.CommandListToJson(commands)))
|
w.Write([]byte(model.CommandListToJson(commands)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func autocompleteCommands(c *Context, cmd *model.Command, r *http.Request) []*model.Command {
|
||||||
|
props := model.MapFromJson(r.Body)
|
||||||
|
command := strings.TrimSpace(props["command"])
|
||||||
|
channelId := strings.TrimSpace(props["channelId"])
|
||||||
|
parts := strings.Split(command, " ")
|
||||||
|
trigger := parts[0][1:]
|
||||||
|
message := strings.Join(parts[1:], " ")
|
||||||
|
|
||||||
|
chanChan := Srv.Store.Channel().Get(channelId)
|
||||||
|
teamChan := Srv.Store.Team().Get(c.Session.TeamId)
|
||||||
|
userChan := Srv.Store.User().Get(c.Session.UserId)
|
||||||
|
|
||||||
|
var team *model.Team
|
||||||
|
if tr := <-teamChan; tr.Err != nil {
|
||||||
|
c.Err = tr.Err
|
||||||
|
return make([]*model.Command, 0, 32)
|
||||||
|
} else {
|
||||||
|
team = tr.Data.(*model.Team)
|
||||||
|
}
|
||||||
|
|
||||||
|
var user *model.User
|
||||||
|
if ur := <-userChan; ur.Err != nil {
|
||||||
|
c.Err = ur.Err
|
||||||
|
return make([]*model.Command, 0, 32)
|
||||||
|
} else {
|
||||||
|
user = ur.Data.(*model.User)
|
||||||
|
}
|
||||||
|
|
||||||
|
var channel *model.Channel
|
||||||
|
if cr := <-chanChan; cr.Err != nil {
|
||||||
|
c.Err = cr.Err
|
||||||
|
return make([]*model.Command, 0, 32)
|
||||||
|
} else {
|
||||||
|
channel = cr.Data.(*model.Channel)
|
||||||
|
}
|
||||||
|
|
||||||
|
l4g.Debug(fmt.Sprintf(utils.T("api.command.execute_command.debug"), trigger, c.Session.UserId))
|
||||||
|
p := url.Values{}
|
||||||
|
p.Set("token", cmd.Token)
|
||||||
|
|
||||||
|
p.Set("team_id", cmd.TeamId)
|
||||||
|
p.Set("team_domain", team.Name)
|
||||||
|
|
||||||
|
p.Set("channel_id", channelId)
|
||||||
|
p.Set("channel_name", channel.Name)
|
||||||
|
|
||||||
|
p.Set("user_id", c.Session.UserId)
|
||||||
|
p.Set("user_name", user.Username)
|
||||||
|
|
||||||
|
p.Set("command", "/"+trigger)
|
||||||
|
p.Set("text", message)
|
||||||
|
p.Set("response_url", "not supported yet")
|
||||||
|
p.Set("suggest", "true")
|
||||||
|
|
||||||
|
method := "POST"
|
||||||
|
if cmd.Method == model.COMMAND_METHOD_GET {
|
||||||
|
method = "GET"
|
||||||
|
}
|
||||||
|
|
||||||
|
tr := &http.Transport{
|
||||||
|
TLSClientConfig: &tls.Config{InsecureSkipVerify: *utils.Cfg.ServiceSettings.EnableInsecureOutgoingConnections},
|
||||||
|
}
|
||||||
|
client := &http.Client{Transport: tr}
|
||||||
|
|
||||||
|
req, _ := http.NewRequest(method, cmd.URL, strings.NewReader(p.Encode()))
|
||||||
|
req.Header.Set("Accept", "application/json")
|
||||||
|
if cmd.Method == model.COMMAND_METHOD_POST {
|
||||||
|
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp, err := client.Do(req); err != nil {
|
||||||
|
c.Err = model.NewLocAppError("command", "api.command.execute_command.failed.app_error", map[string]interface{}{"Trigger": trigger}, err.Error())
|
||||||
|
} else {
|
||||||
|
if resp.StatusCode == http.StatusOK {
|
||||||
|
response := model.CommandListFromJson(resp.Body)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
} else {
|
||||||
|
body, _ := ioutil.ReadAll(resp.Body)
|
||||||
|
c.Err = model.NewLocAppError("command", "api.command.execute_command.failed_resp.app_error", map[string]interface{}{"Trigger": trigger, "Status": resp.Status}, string(body))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return make([]*model.Command, 0, 32)
|
||||||
|
}
|
||||||
|
|
||||||
func executeCommand(c *Context, w http.ResponseWriter, r *http.Request) {
|
func executeCommand(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
props := model.MapFromJson(r.Body)
|
props := model.MapFromJson(r.Body)
|
||||||
command := strings.TrimSpace(props["command"])
|
command := strings.TrimSpace(props["command"])
|
||||||
@@ -159,7 +247,7 @@ func executeCommand(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
teamCmds := result.Data.([]*model.Command)
|
teamCmds := result.Data.([]*model.Command)
|
||||||
for _, cmd := range teamCmds {
|
for _, cmd := range teamCmds {
|
||||||
if trigger == cmd.Trigger {
|
if trigger == cmd.Trigger || cmd.ExternalManagement {
|
||||||
l4g.Debug(fmt.Sprintf(utils.T("api.command.execute_command.debug"), trigger, c.Session.UserId))
|
l4g.Debug(fmt.Sprintf(utils.T("api.command.execute_command.debug"), trigger, c.Session.UserId))
|
||||||
|
|
||||||
p := url.Values{}
|
p := url.Values{}
|
||||||
|
|||||||
@@ -24,7 +24,10 @@ func TestListCommands(t *testing.T) {
|
|||||||
|
|
||||||
Client.LoginByEmail(team.Name, user1.Email, "pwd")
|
Client.LoginByEmail(team.Name, user1.Email, "pwd")
|
||||||
|
|
||||||
if results, err := Client.ListCommands(); err != nil {
|
channel1 := &model.Channel{DisplayName: "AA", Name: "aa" + model.NewId() + "a", Type: model.CHANNEL_OPEN, TeamId: team.Id}
|
||||||
|
channel1 = Client.Must(Client.CreateChannel(channel1)).Data.(*model.Channel)
|
||||||
|
|
||||||
|
if results, err := Client.ListCommands(channel1.Id, "/test"); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else {
|
} else {
|
||||||
commands := results.Data.([]*model.Command)
|
commands := results.Data.([]*model.Command)
|
||||||
|
|||||||
@@ -21,7 +21,8 @@
|
|||||||
"SessionLengthSSOInDays": 30,
|
"SessionLengthSSOInDays": 30,
|
||||||
"SessionCacheInMinutes": 10,
|
"SessionCacheInMinutes": 10,
|
||||||
"WebsocketSecurePort": 443,
|
"WebsocketSecurePort": 443,
|
||||||
"WebsocketPort": 80
|
"WebsocketPort": 80,
|
||||||
|
"WebserverMode": "regular"
|
||||||
},
|
},
|
||||||
"TeamSettings": {
|
"TeamSettings": {
|
||||||
"SiteName": "Mattermost",
|
"SiteName": "Mattermost",
|
||||||
@@ -144,4 +145,4 @@
|
|||||||
"Directory": "./data/",
|
"Directory": "./data/",
|
||||||
"EnableDaily": false
|
"EnableDaily": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,5 +107,5 @@ sleep 5
|
|||||||
# ------------------------
|
# ------------------------
|
||||||
|
|
||||||
echo starting platform
|
echo starting platform
|
||||||
cd /mattermost/bin
|
cd /mattermost/mattermost/bin
|
||||||
./platform -config=/config_docker.json
|
./platform -config=/config_docker.json
|
||||||
|
|||||||
@@ -3131,14 +3131,14 @@
|
|||||||
"id": "store.sql_user.get.app_error",
|
"id": "store.sql_user.get.app_error",
|
||||||
"translation": "We encountered an error finding the account"
|
"translation": "We encountered an error finding the account"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "store.sql_user.get_by_auth.other.app_error",
|
|
||||||
"translation": "We encountered an error trying to find the account by authentication type."
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "store.sql_user.get_by_auth.missing_account.app_error",
|
"id": "store.sql_user.get_by_auth.missing_account.app_error",
|
||||||
"translation": "We couldn't find an existing account matching your authentication type for this team. This team may require an invite from the team owner to join."
|
"translation": "We couldn't find an existing account matching your authentication type for this team. This team may require an invite from the team owner to join."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "store.sql_user.get_by_auth.other.app_error",
|
||||||
|
"translation": "We encountered an error trying to find the account by authentication type."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "store.sql_user.get_by_username.app_error",
|
"id": "store.sql_user.get_by_username.app_error",
|
||||||
"translation": "We couldn't find an existing account matching your username for this team. This team may require an invite from the team owner to join."
|
"translation": "We couldn't find an existing account matching your username for this team. This team may require an invite from the team owner to join."
|
||||||
|
|||||||
@@ -3079,6 +3079,10 @@
|
|||||||
"id": "store.sql_user.get_by_auth.missing_account.app_error",
|
"id": "store.sql_user.get_by_auth.missing_account.app_error",
|
||||||
"translation": "No pudimos encontrar una cuenta existente que coincida con tu tipo de autenticación para este equipo. Es posible que necesites una invitación por parte del dueño del equipo para unirte."
|
"translation": "No pudimos encontrar una cuenta existente que coincida con tu tipo de autenticación para este equipo. Es posible que necesites una invitación por parte del dueño del equipo para unirte."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "store.sql_user.get_by_auth.other.app_error",
|
||||||
|
"translation": "Encontramos un error tratando de identificar la cuenta con este tipo de autenticación."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "store.sql_user.get_by_username.app_error",
|
"id": "store.sql_user.get_by_username.app_error",
|
||||||
"translation": "No pudimos encontrar una cuenta existente que coincida con tu nombre de usuario para este equipo. Es posible que necesites una invitación por parte del dueño del equipo para unirte."
|
"translation": "No pudimos encontrar una cuenta existente que coincida con tu nombre de usuario para este equipo. Es posible que necesites una invitación por parte del dueño del equipo para unirte."
|
||||||
|
|||||||
@@ -363,8 +363,11 @@ func (c *Client) Command(channelId string, command string, suggest bool) (*Resul
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) ListCommands() (*Result, *AppError) {
|
func (c *Client) ListCommands(channelId string, command string) (*Result, *AppError) {
|
||||||
if r, err := c.DoApiGet("/commands/list", "", ""); err != nil {
|
m := make(map[string]string)
|
||||||
|
m["command"] = command
|
||||||
|
m["channelId"] = channelId
|
||||||
|
if r, err := c.DoApiPost("/commands/list", MapToJson(m)); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else {
|
} else {
|
||||||
return &Result{r.Header.Get(HEADER_REQUEST_ID),
|
return &Result{r.Header.Get(HEADER_REQUEST_ID),
|
||||||
|
|||||||
@@ -14,22 +14,23 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Command struct {
|
type Command struct {
|
||||||
Id string `json:"id"`
|
Id string `json:"id"`
|
||||||
Token string `json:"token"`
|
Token string `json:"token"`
|
||||||
CreateAt int64 `json:"create_at"`
|
CreateAt int64 `json:"create_at"`
|
||||||
UpdateAt int64 `json:"update_at"`
|
UpdateAt int64 `json:"update_at"`
|
||||||
DeleteAt int64 `json:"delete_at"`
|
DeleteAt int64 `json:"delete_at"`
|
||||||
CreatorId string `json:"creator_id"`
|
CreatorId string `json:"creator_id"`
|
||||||
TeamId string `json:"team_id"`
|
TeamId string `json:"team_id"`
|
||||||
Trigger string `json:"trigger"`
|
ExternalManagement bool `json:"external_management"`
|
||||||
Method string `json:"method"`
|
Trigger string `json:"trigger"`
|
||||||
Username string `json:"username"`
|
Method string `json:"method"`
|
||||||
IconURL string `json:"icon_url"`
|
Username string `json:"username"`
|
||||||
AutoComplete bool `json:"auto_complete"`
|
IconURL string `json:"icon_url"`
|
||||||
AutoCompleteDesc string `json:"auto_complete_desc"`
|
AutoComplete bool `json:"auto_complete"`
|
||||||
AutoCompleteHint string `json:"auto_complete_hint"`
|
AutoCompleteDesc string `json:"auto_complete_desc"`
|
||||||
DisplayName string `json:"display_name"`
|
AutoCompleteHint string `json:"auto_complete_hint"`
|
||||||
URL string `json:"url"`
|
DisplayName string `json:"display_name"`
|
||||||
|
URL string `json:"url"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Command) ToJson() string {
|
func (o *Command) ToJson() string {
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ const (
|
|||||||
|
|
||||||
SERVICE_GITLAB = "gitlab"
|
SERVICE_GITLAB = "gitlab"
|
||||||
SERVICE_GOOGLE = "google"
|
SERVICE_GOOGLE = "google"
|
||||||
|
|
||||||
|
WEBSERVER_MODE_REGULAR = "regular"
|
||||||
|
WEBSERVER_MODE_GZIP = "gzip"
|
||||||
|
WEBSERVER_MODE_DISABLED = "disabled"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ServiceSettings struct {
|
type ServiceSettings struct {
|
||||||
@@ -46,6 +50,7 @@ type ServiceSettings struct {
|
|||||||
SessionCacheInMinutes *int
|
SessionCacheInMinutes *int
|
||||||
WebsocketSecurePort *int
|
WebsocketSecurePort *int
|
||||||
WebsocketPort *int
|
WebsocketPort *int
|
||||||
|
WebserverMode *string
|
||||||
}
|
}
|
||||||
|
|
||||||
type SSOSettings struct {
|
type SSOSettings struct {
|
||||||
@@ -391,6 +396,11 @@ func (o *Config) SetDefaults() {
|
|||||||
*o.ServiceSettings.AllowCorsFrom = ""
|
*o.ServiceSettings.AllowCorsFrom = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if o.ServiceSettings.WebserverMode == nil {
|
||||||
|
o.ServiceSettings.WebserverMode = new(string)
|
||||||
|
*o.ServiceSettings.WebserverMode = "regular"
|
||||||
|
}
|
||||||
|
|
||||||
if o.ComplianceSettings.Enable == nil {
|
if o.ComplianceSettings.Enable == nil {
|
||||||
o.ComplianceSettings.Enable = new(bool)
|
o.ComplianceSettings.Enable = new(bool)
|
||||||
*o.ComplianceSettings.Enable = false
|
*o.ComplianceSettings.Enable = false
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ func NewSqlCommandStore(sqlStore *SqlStore) CommandStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s SqlCommandStore) UpgradeSchemaIfNeeded() {
|
func (s SqlCommandStore) UpgradeSchemaIfNeeded() {
|
||||||
|
s.CreateColumnIfNotExists("Commands", "ExternalManagement", "tinyint(1)", "boolean", "0")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s SqlCommandStore) CreateIndexesIfNotExists() {
|
func (s SqlCommandStore) CreateIndexesIfNotExists() {
|
||||||
|
|||||||
16
web/web.go
16
web/web.go
@@ -7,6 +7,8 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/NYTimes/gziphandler"
|
||||||
|
|
||||||
l4g "github.com/alecthomas/log4go"
|
l4g "github.com/alecthomas/log4go"
|
||||||
"github.com/mattermost/platform/api"
|
"github.com/mattermost/platform/api"
|
||||||
"github.com/mattermost/platform/model"
|
"github.com/mattermost/platform/model"
|
||||||
@@ -23,11 +25,17 @@ func InitWeb() {
|
|||||||
|
|
||||||
mainrouter := api.Srv.Router
|
mainrouter := api.Srv.Router
|
||||||
|
|
||||||
staticDir := utils.FindDir(CLIENT_DIR)
|
if *utils.Cfg.ServiceSettings.WebserverMode != "disabled" {
|
||||||
l4g.Debug("Using client directory at %v", staticDir)
|
staticDir := utils.FindDir(CLIENT_DIR)
|
||||||
mainrouter.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir(staticDir))))
|
l4g.Debug("Using client directory at %v", staticDir)
|
||||||
|
if *utils.Cfg.ServiceSettings.WebserverMode == "gzip" {
|
||||||
|
mainrouter.PathPrefix("/static/").Handler(gziphandler.GzipHandler(http.StripPrefix("/static/", http.FileServer(http.Dir(staticDir)))))
|
||||||
|
} else {
|
||||||
|
mainrouter.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir(staticDir))))
|
||||||
|
}
|
||||||
|
|
||||||
mainrouter.Handle("/{anything:.*}", api.AppHandlerIndependent(root)).Methods("GET")
|
mainrouter.Handle("/{anything:.*}", api.AppHandlerIndependent(root)).Methods("GET")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var browsersNotSupported string = "MSIE/8;MSIE/9;MSIE/10;Internet Explorer/8;Internet Explorer/9;Internet Explorer/10;Safari/7;Safari/8"
|
var browsersNotSupported string = "MSIE/8;MSIE/9;MSIE/10;Internet Explorer/8;Internet Explorer/9;Internet Explorer/10;Safari/7;Safari/8"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.PHONY: build test
|
.PHONY: build test run clean
|
||||||
|
|
||||||
test:
|
test:
|
||||||
@echo Checking for style guide compliance
|
@echo Checking for style guide compliance
|
||||||
@@ -12,7 +12,20 @@ test:
|
|||||||
|
|
||||||
touch $@
|
touch $@
|
||||||
|
|
||||||
build: .npminstall
|
build: | .npminstall test
|
||||||
@echo Building mattermost web client
|
@echo Building mattermost Webapp
|
||||||
|
|
||||||
npm run build
|
npm run build
|
||||||
|
|
||||||
|
run: .npminstall
|
||||||
|
@echo Running mattermost Webapp for development
|
||||||
|
|
||||||
|
npm run run
|
||||||
|
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@echo Cleaning Webapp
|
||||||
|
|
||||||
|
rm -rf dist
|
||||||
|
rm -rf node_modules
|
||||||
|
rm .npminstall
|
||||||
|
|||||||
@@ -120,7 +120,10 @@ export default class CenterPanel extends React.Component {
|
|||||||
id='app-content'
|
id='app-content'
|
||||||
className='app__content'
|
className='app__content'
|
||||||
>
|
>
|
||||||
<div id='channel-header'>
|
<div
|
||||||
|
id='channel-header'
|
||||||
|
className='channel-header'
|
||||||
|
>
|
||||||
<ChannelHeader
|
<ChannelHeader
|
||||||
user={this.state.user}
|
user={this.state.user}
|
||||||
/>
|
/>
|
||||||
|
|||||||
101
webapp/components/code_preview.jsx
Обычный файл
101
webapp/components/code_preview.jsx
Обычный файл
@@ -0,0 +1,101 @@
|
|||||||
|
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||||
|
// See License.txt for license information.
|
||||||
|
|
||||||
|
import $ from 'jquery';
|
||||||
|
import * as syntaxHightlighting from 'utils/syntax_hightlighting.jsx';
|
||||||
|
import Constants from 'utils/constants.jsx';
|
||||||
|
import FileInfoPreview from './file_info_preview.jsx';
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default class CodePreview extends React.Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
|
||||||
|
this.updateStateFromProps = this.updateStateFromProps.bind(this);
|
||||||
|
this.handleReceivedError = this.handleReceivedError.bind(this);
|
||||||
|
this.handleReceivedCode = this.handleReceivedCode.bind(this);
|
||||||
|
|
||||||
|
this.state = {
|
||||||
|
code: '',
|
||||||
|
lang: '',
|
||||||
|
loading: true,
|
||||||
|
success: true
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
this.updateStateFromProps(this.props);
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillReceiveProps(nextProps) {
|
||||||
|
if (this.props.fileUrl !== nextProps.fileUrl) {
|
||||||
|
this.updateStateFromProps(nextProps);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
updateStateFromProps(props) {
|
||||||
|
var usedLanguage = syntaxHightlighting.getLang(props.filename);
|
||||||
|
|
||||||
|
if (!usedLanguage || props.fileInfo.size > Constants.CODE_PREVIEW_MAX_FILE_SIZE) {
|
||||||
|
this.setState({code: '', lang: '', loading: false, success: false});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setState({code: '', lang: usedLanguage, loading: true});
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
async: true,
|
||||||
|
url: props.fileUrl,
|
||||||
|
type: 'GET',
|
||||||
|
error: this.handleReceivedError,
|
||||||
|
success: this.handleReceivedCode
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleReceivedCode(data) {
|
||||||
|
const parsed = syntaxHightlighting.formatCode(this.state.lang, data, this.props.filename);
|
||||||
|
this.setState({code: parsed, loading: false, success: true});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleReceivedError() {
|
||||||
|
this.setState({loading: false, success: false});
|
||||||
|
}
|
||||||
|
|
||||||
|
static support(filename) {
|
||||||
|
return typeof syntaxHightlighting.getLang(filename) !== 'undefined';
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
if (this.state.loading) {
|
||||||
|
return (
|
||||||
|
<div className='view-image__loading'>
|
||||||
|
<img
|
||||||
|
className='loader-image'
|
||||||
|
src='/static/images/load.gif'
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.state.success) {
|
||||||
|
return (
|
||||||
|
<FileInfoPreview
|
||||||
|
filename={this.props.filename}
|
||||||
|
fileUrl={this.props.fileUrl}
|
||||||
|
fileInfo={this.props.fileInfo}
|
||||||
|
formatMessage={this.props.formatMessage}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return <div dangerouslySetInnerHTML={{__html: this.state.code}}/>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CodePreview.propTypes = {
|
||||||
|
filename: React.PropTypes.string.isRequired,
|
||||||
|
fileUrl: React.PropTypes.string.isRequired,
|
||||||
|
fileInfo: React.PropTypes.object.isRequired,
|
||||||
|
formatMessage: React.PropTypes.func.isRequired
|
||||||
|
};
|
||||||
@@ -160,7 +160,7 @@ export default class MoreChannels extends React.Component {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className='modal fade'
|
className='modal fade more-channel__modal'
|
||||||
id='more_channels'
|
id='more_channels'
|
||||||
ref='modal'
|
ref='modal'
|
||||||
tabIndex='-1'
|
tabIndex='-1'
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class NewChannelModal extends React.Component {
|
|||||||
}
|
}
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
if (Utils.isBrowserIE()) {
|
if (Utils.isBrowserIE()) {
|
||||||
$('body').addClass('browser--IE');
|
$('body').addClass('browser--ie');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
handleSubmit(e) {
|
handleSubmit(e) {
|
||||||
|
|||||||
@@ -158,6 +158,7 @@ export default class PopoverListMembers extends React.Component {
|
|||||||
<Popover
|
<Popover
|
||||||
ref='memebersPopover'
|
ref='memebersPopover'
|
||||||
title={title}
|
title={title}
|
||||||
|
className='member-list__popover'
|
||||||
id='member-list-popover'
|
id='member-list-popover'
|
||||||
>
|
>
|
||||||
<div className='more-modal__list'>{popoverHtml}</div>
|
<div className='more-modal__list'>{popoverHtml}</div>
|
||||||
|
|||||||
@@ -37,9 +37,9 @@ CommandSuggestion.propTypes = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default class CommandProvider {
|
export default class CommandProvider {
|
||||||
handlePretextChanged(suggestionId, pretext) {
|
handlePretextChanged(suggestionId, pretext, channelId) {
|
||||||
if (pretext.startsWith('/')) {
|
if (pretext.startsWith('/')) {
|
||||||
AsyncClient.getSuggestedCommands(pretext, suggestionId, CommandSuggestion);
|
AsyncClient.getSuggestedCommands(pretext, channelId, suggestionId, CommandSuggestion);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ export default class SuggestionBox extends React.Component {
|
|||||||
|
|
||||||
handlePretextChanged(pretext) {
|
handlePretextChanged(pretext) {
|
||||||
for (const provider of this.props.providers) {
|
for (const provider of this.props.providers) {
|
||||||
provider.handlePretextChanged(this.suggestionId, pretext);
|
provider.handlePretextChanged(this.suggestionId, pretext, this.props.channelId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,6 +160,7 @@ SuggestionBox.propTypes = {
|
|||||||
value: React.PropTypes.string.isRequired,
|
value: React.PropTypes.string.isRequired,
|
||||||
onUserInput: React.PropTypes.func,
|
onUserInput: React.PropTypes.func,
|
||||||
providers: React.PropTypes.arrayOf(React.PropTypes.object),
|
providers: React.PropTypes.arrayOf(React.PropTypes.object),
|
||||||
|
channelId: React.PropTypes.string,
|
||||||
|
|
||||||
// explicitly name any input event handlers we override and need to manually call
|
// explicitly name any input event handlers we override and need to manually call
|
||||||
onChange: React.PropTypes.func,
|
onChange: React.PropTypes.func,
|
||||||
|
|||||||
@@ -224,6 +224,7 @@ export default class Textbox extends React.Component {
|
|||||||
style={{visibility: this.state.preview ? 'hidden' : 'visible'}}
|
style={{visibility: this.state.preview ? 'hidden' : 'visible'}}
|
||||||
listComponent={SuggestionList}
|
listComponent={SuggestionList}
|
||||||
providers={this.suggestionProviders}
|
providers={this.suggestionProviders}
|
||||||
|
channelId={this.props.channelId}
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
ref='preview'
|
ref='preview'
|
||||||
|
|||||||
@@ -4,9 +4,13 @@
|
|||||||
import LoadingScreen from '../loading_screen.jsx';
|
import LoadingScreen from '../loading_screen.jsx';
|
||||||
|
|
||||||
import * as Client from 'utils/client.jsx';
|
import * as Client from 'utils/client.jsx';
|
||||||
|
import * as Utils from 'utils/utils.jsx';
|
||||||
|
import Constants from 'utils/constants.jsx';
|
||||||
|
|
||||||
import {intlShape, injectIntl, defineMessages, FormattedMessage, FormattedHTMLMessage} from 'react-intl';
|
import {intlShape, injectIntl, defineMessages, FormattedMessage, FormattedHTMLMessage} from 'react-intl';
|
||||||
|
|
||||||
|
const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES;
|
||||||
|
|
||||||
const holders = defineMessages({
|
const holders = defineMessages({
|
||||||
requestTypePost: {
|
requestTypePost: {
|
||||||
id: 'user.settings.cmds.request_type_post',
|
id: 'user.settings.cmds.request_type_post',
|
||||||
@@ -59,6 +63,7 @@ export default class ManageCommandCmds extends React.Component {
|
|||||||
this.getCmds = this.getCmds.bind(this);
|
this.getCmds = this.getCmds.bind(this);
|
||||||
this.addNewCmd = this.addNewCmd.bind(this);
|
this.addNewCmd = this.addNewCmd.bind(this);
|
||||||
this.emptyCmd = this.emptyCmd.bind(this);
|
this.emptyCmd = this.emptyCmd.bind(this);
|
||||||
|
this.updateExternalManagement = this.updateExternalManagement.bind(this);
|
||||||
this.updateTrigger = this.updateTrigger.bind(this);
|
this.updateTrigger = this.updateTrigger.bind(this);
|
||||||
this.updateURL = this.updateURL.bind(this);
|
this.updateURL = this.updateURL.bind(this);
|
||||||
this.updateMethod = this.updateMethod.bind(this);
|
this.updateMethod = this.updateMethod.bind(this);
|
||||||
@@ -99,7 +104,7 @@ export default class ManageCommandCmds extends React.Component {
|
|||||||
addNewCmd(e) {
|
addNewCmd(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
if (this.state.cmd.trigger === '' || this.state.cmd.url === '') {
|
if (this.state.cmd.url === '' || (this.state.cmd.trigger === '' && !this.state.external_management)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,6 +194,12 @@ export default class ManageCommandCmds extends React.Component {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateExternalManagement(e) {
|
||||||
|
var cmd = this.state.cmd;
|
||||||
|
cmd.external_management = e.target.checked;
|
||||||
|
this.setState(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
updateTrigger(e) {
|
updateTrigger(e) {
|
||||||
var cmd = this.state.cmd;
|
var cmd = this.state.cmd;
|
||||||
cmd.trigger = e.target.value;
|
cmd.trigger = e.target.value;
|
||||||
@@ -270,11 +281,26 @@ export default class ManageCommandCmds extends React.Component {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let slashCommandAutocompleteDiv;
|
||||||
|
if (Utils.isFeatureEnabled(PreReleaseFeatures.SLASHCMD_AUTOCMP)) {
|
||||||
|
slashCommandAutocompleteDiv = (
|
||||||
|
<div className='padding-top x2'>
|
||||||
|
<strong>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.external_management'
|
||||||
|
defaultMessage='External management: '
|
||||||
|
/>
|
||||||
|
</strong><span className='word-break--all'>{cmd.external_management ? this.props.intl.formatMessage(holders.autocompleteYes) : this.props.intl.formatMessage(holders.autocompleteNo)}</span>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
cmds.push(
|
cmds.push(
|
||||||
<div
|
<div
|
||||||
key={cmd.id}
|
key={cmd.id}
|
||||||
className='webhook__item webcmd__item'
|
className='webhook__item webcmd__item'
|
||||||
>
|
>
|
||||||
|
{slashCommandAutocompleteDiv}
|
||||||
{triggerDiv}
|
{triggerDiv}
|
||||||
<div className='padding-top x2 webcmd__url'>
|
<div className='padding-top x2 webcmd__url'>
|
||||||
<strong>
|
<strong>
|
||||||
@@ -416,7 +442,170 @@ export default class ManageCommandCmds extends React.Component {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
const disableButton = this.state.cmd.trigger === '' || this.state.cmd.url === '';
|
const disableButton = this.state.cmd.url === '' || (this.state.cmd.trigger === '' && !this.state.external_management);
|
||||||
|
|
||||||
|
let triggerInput;
|
||||||
|
if (!this.state.cmd.external_management) {
|
||||||
|
triggerInput = (
|
||||||
|
<div className='padding-top x2'>
|
||||||
|
<label className='control-label'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.trigger'
|
||||||
|
defaultMessage='Command Trigger Word: '
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
<div className='padding-top'>
|
||||||
|
<input
|
||||||
|
ref='trigger'
|
||||||
|
className='form-control'
|
||||||
|
value={this.state.cmd.trigger}
|
||||||
|
onChange={this.updateTrigger}
|
||||||
|
placeholder={this.props.intl.formatMessage(holders.addTriggerPlaceholder)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className='padding-top'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.trigger_desc'
|
||||||
|
defaultMessage='Examples: /patient, /client, /employee Reserved: /echo, /join, /logout, /me, /shrug'
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
let slashCommandAutocompleteCheckbox;
|
||||||
|
if (Utils.isFeatureEnabled(PreReleaseFeatures.SLASHCMD_AUTOCMP)) {
|
||||||
|
slashCommandAutocompleteCheckbox = (
|
||||||
|
<div className='padding-top x2'>
|
||||||
|
<label className='control-label'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.external_management'
|
||||||
|
defaultMessage='External management: '
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
<div className='padding-top'>
|
||||||
|
<div className='checkbox'>
|
||||||
|
<label>
|
||||||
|
<input
|
||||||
|
type='checkbox'
|
||||||
|
checked={this.state.cmd.external_management}
|
||||||
|
onChange={this.updateExternalManagement}
|
||||||
|
/>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.slashCmd_autocmp'
|
||||||
|
defaultMessage='Enable external application to offer autocomplete'
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
let autoCompleteSettings;
|
||||||
|
if (!this.state.cmd.external_management) {
|
||||||
|
autoCompleteSettings = (
|
||||||
|
<div>
|
||||||
|
<div className='padding-top x2'>
|
||||||
|
<label className='control-label'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.auto_complete'
|
||||||
|
defaultMessage='Autocomplete: '
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
<div className='padding-top'>
|
||||||
|
<div className='checkbox'>
|
||||||
|
<label>
|
||||||
|
<input
|
||||||
|
type='checkbox'
|
||||||
|
checked={this.state.cmd.auto_complete}
|
||||||
|
onChange={this.updateAutoComplete}
|
||||||
|
/>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.auto_complete_help'
|
||||||
|
defaultMessage=' Show this command in the autocomplete list.'
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='padding-top x2'>
|
||||||
|
<label className='control-label'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.auto_complete_hint'
|
||||||
|
defaultMessage='Autocomplete Hint: '
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
<div className='padding-top'>
|
||||||
|
<input
|
||||||
|
ref='autoCompleteHint'
|
||||||
|
className='form-control'
|
||||||
|
value={this.state.cmd.auto_complete_hint}
|
||||||
|
onChange={this.updateAutoCompleteHint}
|
||||||
|
placeholder={this.props.intl.formatMessage(holders.addAutoCompleteHintPlaceholder)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className='padding-top'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.auto_complete_hint_desc'
|
||||||
|
defaultMessage='Optional hint in the autocomplete list about parameters needed for command.'
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='padding-top x2'>
|
||||||
|
<label className='control-label'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.auto_complete_desc'
|
||||||
|
defaultMessage='Autocomplete Description: '
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
<div className='padding-top'>
|
||||||
|
<input
|
||||||
|
ref='autoCompleteDesc'
|
||||||
|
className='form-control'
|
||||||
|
value={this.state.cmd.auto_complete_desc}
|
||||||
|
onChange={this.updateAutoCompleteDesc}
|
||||||
|
placeholder={this.props.intl.formatMessage(holders.addAutoCompleteDescPlaceholder)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className='padding-top'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.auto_complete_desc_desc'
|
||||||
|
defaultMessage='Optional short description of slash command for the autocomplete list.'
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='padding-top x2'>
|
||||||
|
<label className='control-label'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.display_name'
|
||||||
|
defaultMessage='Descriptive Label: '
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
<div className='padding-top'>
|
||||||
|
<input
|
||||||
|
ref='displayName'
|
||||||
|
className='form-control'
|
||||||
|
value={this.state.cmd.display_name}
|
||||||
|
onChange={this.updateDisplayName}
|
||||||
|
placeholder={this.props.intl.formatMessage(holders.addDisplayNamePlaceholder)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className='padding-top'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.cmds.cmd_display_name'
|
||||||
|
defaultMessage='Brief description of slash command to show in listings.'
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
{addError}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div key='addCommandCmd'>
|
<div key='addCommandCmd'>
|
||||||
@@ -433,29 +622,8 @@ export default class ManageCommandCmds extends React.Component {
|
|||||||
<div className='padding-top divider-light'></div>
|
<div className='padding-top divider-light'></div>
|
||||||
<div className='padding-top'>
|
<div className='padding-top'>
|
||||||
|
|
||||||
<div className='padding-top x2'>
|
{slashCommandAutocompleteCheckbox}
|
||||||
<label className='control-label'>
|
{triggerInput}
|
||||||
<FormattedMessage
|
|
||||||
id='user.settings.cmds.trigger'
|
|
||||||
defaultMessage='Command Trigger Word: '
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div className='padding-top'>
|
|
||||||
<input
|
|
||||||
ref='trigger'
|
|
||||||
className='form-control'
|
|
||||||
value={this.state.cmd.trigger}
|
|
||||||
onChange={this.updateTrigger}
|
|
||||||
placeholder={this.props.intl.formatMessage(holders.addTriggerPlaceholder)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className='padding-top'>
|
|
||||||
<FormattedMessage
|
|
||||||
id='user.settings.cmds.trigger_desc'
|
|
||||||
defaultMessage='Examples: /patient, /client, /employee Reserved: /echo, /join, /logout, /me, /shrug'
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='padding-top x2'>
|
<div className='padding-top x2'>
|
||||||
<label className='control-label'>
|
<label className='control-label'>
|
||||||
@@ -560,102 +728,7 @@ export default class ManageCommandCmds extends React.Component {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='padding-top x2'>
|
{autoCompleteSettings}
|
||||||
<label className='control-label'>
|
|
||||||
<FormattedMessage
|
|
||||||
id='user.settings.cmds.auto_complete'
|
|
||||||
defaultMessage='Autocomplete: '
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div className='padding-top'>
|
|
||||||
<div className='checkbox'>
|
|
||||||
<label>
|
|
||||||
<input
|
|
||||||
type='checkbox'
|
|
||||||
checked={this.state.cmd.auto_complete}
|
|
||||||
onChange={this.updateAutoComplete}
|
|
||||||
/>
|
|
||||||
<FormattedMessage
|
|
||||||
id='user.settings.cmds.auto_complete_help'
|
|
||||||
defaultMessage=' Show this command in the autocomplete list.'
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='padding-top x2'>
|
|
||||||
<label className='control-label'>
|
|
||||||
<FormattedMessage
|
|
||||||
id='user.settings.cmds.auto_complete_hint'
|
|
||||||
defaultMessage='Autocomplete Hint: '
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div className='padding-top'>
|
|
||||||
<input
|
|
||||||
ref='autoCompleteHint'
|
|
||||||
className='form-control'
|
|
||||||
value={this.state.cmd.auto_complete_hint}
|
|
||||||
onChange={this.updateAutoCompleteHint}
|
|
||||||
placeholder={this.props.intl.formatMessage(holders.addAutoCompleteHintPlaceholder)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className='padding-top'>
|
|
||||||
<FormattedMessage
|
|
||||||
id='user.settings.cmds.auto_complete_hint_desc'
|
|
||||||
defaultMessage='Optional hint in the autocomplete list about parameters needed for command.'
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='padding-top x2'>
|
|
||||||
<label className='control-label'>
|
|
||||||
<FormattedMessage
|
|
||||||
id='user.settings.cmds.auto_complete_desc'
|
|
||||||
defaultMessage='Autocomplete Description: '
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div className='padding-top'>
|
|
||||||
<input
|
|
||||||
ref='autoCompleteDesc'
|
|
||||||
className='form-control'
|
|
||||||
value={this.state.cmd.auto_complete_desc}
|
|
||||||
onChange={this.updateAutoCompleteDesc}
|
|
||||||
placeholder={this.props.intl.formatMessage(holders.addAutoCompleteDescPlaceholder)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className='padding-top'>
|
|
||||||
<FormattedMessage
|
|
||||||
id='user.settings.cmds.auto_complete_desc_desc'
|
|
||||||
defaultMessage='Optional short description of slash command for the autocomplete list.'
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='padding-top x2'>
|
|
||||||
<label className='control-label'>
|
|
||||||
<FormattedMessage
|
|
||||||
id='user.settings.cmds.display_name'
|
|
||||||
defaultMessage='Descriptive Label: '
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div className='padding-top'>
|
|
||||||
<input
|
|
||||||
ref='displayName'
|
|
||||||
className='form-control'
|
|
||||||
value={this.state.cmd.display_name}
|
|
||||||
onChange={this.updateDisplayName}
|
|
||||||
placeholder={this.props.intl.formatMessage(holders.addDisplayNamePlaceholder)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className='padding-top'>
|
|
||||||
<FormattedMessage
|
|
||||||
id='user.settings.cmds.cmd_display_name'
|
|
||||||
defaultMessage='Brief description of slash command to show in listings.'
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
{addError}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='padding-top x2 padding-bottom'>
|
<div className='padding-top x2 padding-bottom'>
|
||||||
<a
|
<a
|
||||||
|
|||||||
@@ -51,6 +51,10 @@ const holders = defineMessages({
|
|||||||
EMBED_TOGGLE: {
|
EMBED_TOGGLE: {
|
||||||
id: 'user.settings.advance.embed_toggle',
|
id: 'user.settings.advance.embed_toggle',
|
||||||
defaultMessage: 'Show toggle for all embed previews'
|
defaultMessage: 'Show toggle for all embed previews'
|
||||||
|
},
|
||||||
|
SLASHCMD_AUTOCMP: {
|
||||||
|
id: 'user.settings.advance.slashCmd_autocmp',
|
||||||
|
defaultMessage: 'Enable external application to offer slash command autocomplete'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -195,7 +195,7 @@ export default class UserSettingsDisplay extends React.Component {
|
|||||||
const showUsername = (
|
const showUsername = (
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='user.settings.display.showUsername'
|
id='user.settings.display.showUsername'
|
||||||
defaultMessage='Show username (team default)'
|
defaultMessage='Show username (default)'
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
const showNickname = (
|
const showNickname = (
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import * as Client from 'utils/client.jsx';
|
|||||||
import * as Utils from 'utils/utils.jsx';
|
import * as Utils from 'utils/utils.jsx';
|
||||||
import AudioVideoPreview from './audio_video_preview.jsx';
|
import AudioVideoPreview from './audio_video_preview.jsx';
|
||||||
import Constants from 'utils/constants.jsx';
|
import Constants from 'utils/constants.jsx';
|
||||||
|
import CodePreview from './code_preview.jsx';
|
||||||
import FileInfoPreview from './file_info_preview.jsx';
|
import FileInfoPreview from './file_info_preview.jsx';
|
||||||
import FileStore from 'stores/file_store.jsx';
|
import FileStore from 'stores/file_store.jsx';
|
||||||
import ViewImagePopoverBar from './view_image_popover_bar.jsx';
|
import ViewImagePopoverBar from './view_image_popover_bar.jsx';
|
||||||
@@ -254,6 +255,15 @@ class ViewImageModal extends React.Component {
|
|||||||
formatMessage={this.props.intl.formatMessage}
|
formatMessage={this.props.intl.formatMessage}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
} else if (CodePreview.support(filename)) {
|
||||||
|
content = (
|
||||||
|
<CodePreview
|
||||||
|
filename={filename}
|
||||||
|
fileUrl={fileUrl}
|
||||||
|
fileInfo={fileInfo}
|
||||||
|
formatMessage={this.props.intl.formatMessage}
|
||||||
|
/>
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
content = (
|
content = (
|
||||||
<FileInfoPreview
|
<FileInfoPreview
|
||||||
@@ -311,18 +321,19 @@ class ViewImageModal extends React.Component {
|
|||||||
<Modal
|
<Modal
|
||||||
show={this.props.show}
|
show={this.props.show}
|
||||||
onHide={this.props.onModalDismissed}
|
onHide={this.props.onModalDismissed}
|
||||||
className='image_modal'
|
className='modal-image'
|
||||||
dialogClassName='modal-image'
|
dialogClassName='modal-image'
|
||||||
>
|
>
|
||||||
<Modal.Body
|
<Modal.Body
|
||||||
modalClassName='image-body'
|
modalClassName='modal-image__body'
|
||||||
onClick={this.props.onModalDismissed}
|
onClick={this.props.onModalDismissed}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className={'image-wrapper'}
|
className={'modal-image__wrapper'}
|
||||||
onClick={this.props.onModalDismissed}
|
onClick={this.props.onModalDismissed}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
|
className='modal-back'
|
||||||
onMouseEnter={this.onMouseEnterImage}
|
onMouseEnter={this.onMouseEnterImage}
|
||||||
onMouseLeave={this.onMouseLeaveImage}
|
onMouseLeave={this.onMouseLeaveImage}
|
||||||
onClick={(e) => e.stopPropagation()}
|
onClick={(e) => e.stopPropagation()}
|
||||||
|
|||||||
@@ -1126,6 +1126,7 @@
|
|||||||
"tutorial_tip.seen": "Seen this before? ",
|
"tutorial_tip.seen": "Seen this before? ",
|
||||||
"upload_overlay.info": "Drop a file to upload it.",
|
"upload_overlay.info": "Drop a file to upload it.",
|
||||||
"user.settings.advance.embed_preview": "Show preview snippet of links below message",
|
"user.settings.advance.embed_preview": "Show preview snippet of links below message",
|
||||||
|
"user.settings.advance.slashCmd_autocmp": "Enable external application to offer slash command autocomplete",
|
||||||
"user.settings.advance.embed_toggle": "Show toggle for all embed previews",
|
"user.settings.advance.embed_toggle": "Show toggle for all embed previews",
|
||||||
"user.settings.advance.enabled": "enabled",
|
"user.settings.advance.enabled": "enabled",
|
||||||
"user.settings.advance.feature": " Feature ",
|
"user.settings.advance.feature": " Feature ",
|
||||||
@@ -1173,6 +1174,7 @@
|
|||||||
"user.settings.cmds.url_desc": "The callback URL to receive the HTTP POST or GET event request when the slash command is run.",
|
"user.settings.cmds.url_desc": "The callback URL to receive the HTTP POST or GET event request when the slash command is run.",
|
||||||
"user.settings.cmds.username": "Response Username: ",
|
"user.settings.cmds.username": "Response Username: ",
|
||||||
"user.settings.cmds.username_desc": "Choose a username override for responses for this slash command. Usernames can consist of up to 22 characters consisting of lowercase letters, numbers and they symbols \"-\", \"_\", and \".\" .",
|
"user.settings.cmds.username_desc": "Choose a username override for responses for this slash command. Usernames can consist of up to 22 characters consisting of lowercase letters, numbers and they symbols \"-\", \"_\", and \".\" .",
|
||||||
|
"user.settings.cmds.slashCmd_autocmp": "Enable external application to offer autocomplete",
|
||||||
"user.settings.custom_theme.awayIndicator": "Away Indicator",
|
"user.settings.custom_theme.awayIndicator": "Away Indicator",
|
||||||
"user.settings.custom_theme.buttonBg": "Button BG",
|
"user.settings.custom_theme.buttonBg": "Button BG",
|
||||||
"user.settings.custom_theme.buttonColor": "Button Text",
|
"user.settings.custom_theme.buttonColor": "Button Text",
|
||||||
@@ -1209,7 +1211,7 @@
|
|||||||
"user.settings.display.preferTime": "Select how you prefer time displayed.",
|
"user.settings.display.preferTime": "Select how you prefer time displayed.",
|
||||||
"user.settings.display.showFullname": "Show first and last name",
|
"user.settings.display.showFullname": "Show first and last name",
|
||||||
"user.settings.display.showNickname": "Show nickname if one exists, otherwise show first and last name",
|
"user.settings.display.showNickname": "Show nickname if one exists, otherwise show first and last name",
|
||||||
"user.settings.display.showUsername": "Show username (team default)",
|
"user.settings.display.showUsername": "Show username (default)",
|
||||||
"user.settings.display.teammateDisplay": "Teammate Name Display",
|
"user.settings.display.teammateDisplay": "Teammate Name Display",
|
||||||
"user.settings.display.theme.customTheme": "Custom Theme",
|
"user.settings.display.theme.customTheme": "Custom Theme",
|
||||||
"user.settings.display.theme.describe": "Open to manage your theme",
|
"user.settings.display.theme.describe": "Open to manage your theme",
|
||||||
|
|||||||
@@ -1174,7 +1174,7 @@
|
|||||||
"user.settings.display.preferTime": "Selecione como você prefere que a hora seja mostrada.",
|
"user.settings.display.preferTime": "Selecione como você prefere que a hora seja mostrada.",
|
||||||
"user.settings.display.showFullname": "Mostrar primeiro e último nome",
|
"user.settings.display.showFullname": "Mostrar primeiro e último nome",
|
||||||
"user.settings.display.showNickname": "Mostras apelidos se um existir, caso contrário mostrar o primeiro e último nome",
|
"user.settings.display.showNickname": "Mostras apelidos se um existir, caso contrário mostrar o primeiro e último nome",
|
||||||
"user.settings.display.showUsername": "Mostrar nome de usuário (equipe padrão)",
|
"user.settings.display.showUsername": "Mostrar nome de usuário (padrão)",
|
||||||
"user.settings.display.teammateDisplay": "Nome de Exibição da Equipe de Trabalho",
|
"user.settings.display.teammateDisplay": "Nome de Exibição da Equipe de Trabalho",
|
||||||
"user.settings.display.theme.customTheme": "Tema Customizado",
|
"user.settings.display.theme.customTheme": "Tema Customizado",
|
||||||
"user.settings.display.theme.describe": "Abrir para gerenciar seu tema",
|
"user.settings.display.theme.describe": "Abrir para gerenciar seu tema",
|
||||||
@@ -1313,4 +1313,4 @@
|
|||||||
"web.footer.terms": "Termos",
|
"web.footer.terms": "Termos",
|
||||||
"web.header.back": "Voltar",
|
"web.header.back": "Voltar",
|
||||||
"web.root.singup_info": "Toda comunicação em um só lugar, pesquisável e acessível em qualquer lugar"
|
"web.root.singup_info": "Toda comunicação em um só lugar, pesquisável e acessível em qualquer lugar"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
"babel-loader": "6.2.4",
|
"babel-loader": "6.2.4",
|
||||||
"babel-plugin-transform-runtime": "6.6.0",
|
"babel-plugin-transform-runtime": "6.6.0",
|
||||||
"babel-polyfill": "6.7.2",
|
"babel-polyfill": "6.7.2",
|
||||||
"babel-preset-es2015": "6.6.0",
|
"babel-preset-es2015-webpack": "6.4.0",
|
||||||
"babel-preset-react": "6.5.0",
|
"babel-preset-react": "6.5.0",
|
||||||
"babel-preset-stage-0": "6.5.0",
|
"babel-preset-stage-0": "6.5.0",
|
||||||
"eslint": "2.2.0",
|
"eslint": "2.2.0",
|
||||||
@@ -39,6 +39,7 @@
|
|||||||
"exports-loader": "0.6.3",
|
"exports-loader": "0.6.3",
|
||||||
"extract-text-webpack-plugin": "1.0.1",
|
"extract-text-webpack-plugin": "1.0.1",
|
||||||
"file-loader": "0.8.5",
|
"file-loader": "0.8.5",
|
||||||
|
"url-loader": "0.5.7",
|
||||||
"html-loader": "0.4.3",
|
"html-loader": "0.4.3",
|
||||||
"copy-webpack-plugin": "1.1.1",
|
"copy-webpack-plugin": "1.1.1",
|
||||||
"css-loader": "0.23.1",
|
"css-loader": "0.23.1",
|
||||||
@@ -52,6 +53,7 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"check": "eslint --ext \".jsx\" --ignore-pattern node_modules --quiet .",
|
"check": "eslint --ext \".jsx\" --ignore-pattern node_modules --quiet .",
|
||||||
"build": "webpack --progress"
|
"build": "webpack --optimize-dedupe",
|
||||||
|
"run": "webpack --progress"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,11 @@
|
|||||||
|
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
|
|
||||||
import 'sass/styles.scss';
|
|
||||||
import 'bootstrap/dist/css/bootstrap.css';
|
import 'bootstrap/dist/css/bootstrap.css';
|
||||||
import 'jasny-bootstrap/dist/css/jasny-bootstrap.css';
|
import 'jasny-bootstrap/dist/css/jasny-bootstrap.css';
|
||||||
import 'bootstrap-colorpicker/dist/css/bootstrap-colorpicker.css';
|
import 'bootstrap-colorpicker/dist/css/bootstrap-colorpicker.css';
|
||||||
import 'google-fonts/google-fonts.css';
|
import 'google-fonts/google-fonts.css';
|
||||||
|
import 'sass/styles.scss';
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom';
|
||||||
|
|||||||
@@ -6,22 +6,24 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: $bg--gray;
|
background: $bg--gray;
|
||||||
|
height: 100%;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
&.sticky {
|
.sticky {
|
||||||
background: $bg--white;
|
background: $white;
|
||||||
|
|
||||||
> .container-fluid {
|
> .container-fluid {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.inner-wrap {
|
.inner-wrap {
|
||||||
> .row.content {
|
> .row {
|
||||||
min-height: 100%;
|
&.content {
|
||||||
margin-bottom: -89px;
|
margin-bottom: -89px;
|
||||||
|
min-height: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -30,9 +32,11 @@ body {
|
|||||||
.inner-wrap {
|
.inner-wrap {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
> .row.main {
|
> .row {
|
||||||
height: 100%;
|
&.main {
|
||||||
position: relative;
|
height: 100%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,20 +6,20 @@ strong {
|
|||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
|
color: $primary-color;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
color: $color--primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:focus,
|
&:focus,
|
||||||
a:hover {
|
&:hover {
|
||||||
color: $color--primary--hover;
|
color: $primary-color--hover;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
|
@include font-smoothing;
|
||||||
font-family: 'Open Sans', sans-serif;
|
font-family: 'Open Sans', sans-serif;
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.word-break--all {
|
.word-break--all {
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.alert {
|
.alert {
|
||||||
padding: 8px 12px;
|
|
||||||
@include border-radius($border-rad);
|
@include border-radius($border-rad);
|
||||||
|
padding: 8px 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.alert--confirm {
|
.alert--confirm {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
float: left;
|
float: left;
|
||||||
padding: 4px 10px;
|
|
||||||
margin: 1px 0 0 10px;
|
margin: 1px 0 0 10px;
|
||||||
}
|
padding: 4px 10px;
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,19 +5,19 @@
|
|||||||
@include border-radius($border-rad);
|
@include border-radius($border-rad);
|
||||||
|
|
||||||
&.btn-primary {
|
&.btn-primary {
|
||||||
|
background: $primary-color;
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
background: $color--primary;
|
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus,
|
&:focus,
|
||||||
&:active {
|
&:active {
|
||||||
background: $color--primary--hover;
|
background: $primary-color--hover;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.btn-inactive {
|
&.btn-inactive {
|
||||||
|
background: $light-gray;
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
background: #707070;
|
color: $white;
|
||||||
color: #fff;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.emoticon {
|
.emoticon {
|
||||||
width: 1.5em;
|
|
||||||
height: 1.5em;
|
|
||||||
display: inline-block;
|
|
||||||
margin-bottom: .25em;
|
|
||||||
background-size: contain;
|
background-size: contain;
|
||||||
|
display: inline-block;
|
||||||
|
height: 1.5em;
|
||||||
|
margin-bottom: .25em;
|
||||||
|
width: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.emoticon-suggestion {
|
.emoticon-suggestion {
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
width: 100%;
|
|
||||||
height: 30px;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
height: 30px;
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.emoticon-suggestion__image {
|
.emoticon-suggestion__image {
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
height: 20px;
|
||||||
margin: 6px 6px 0 5px;
|
margin: 6px 6px 0 5px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
|
width: 20px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +1,28 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.error-bar {
|
.error-bar {
|
||||||
background-color: #09f;
|
background-color: darken($primary-color, 5%);
|
||||||
text-align: center;
|
color: $white;
|
||||||
position: relative;
|
padding: 5px 30px;
|
||||||
color: #fff;
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
top: 0;
|
top: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
padding: 5px 30px;
|
|
||||||
|
|
||||||
&__close {
|
&__close {
|
||||||
position: absolute;
|
color: $white;
|
||||||
right: 0;
|
font-family: 'Open Sans', sans-serif;
|
||||||
top: 0;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
text-decoration: none;
|
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
font-family: 'Open Sans', sans-serif;
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
text-decoration: none;
|
||||||
|
top: 0;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: #fff;
|
color: $white;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +1,31 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.file-preview__container {
|
.file-preview__container {
|
||||||
position: relative;
|
|
||||||
margin: 1px 0 10px;
|
|
||||||
width: 100%;
|
|
||||||
max-height: 100px;
|
|
||||||
height: 100px;
|
height: 100px;
|
||||||
white-space: nowrap;
|
margin: 1px 0 10px;
|
||||||
|
max-height: 100px;
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
|
position: relative;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-preview {
|
.file-preview {
|
||||||
|
@include clearfix;
|
||||||
|
border: 1px solid $light-gray;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 120px;
|
|
||||||
height: 100px;
|
height: 100px;
|
||||||
margin: 0 0 0 10px;
|
margin: 0 0 0 10px;
|
||||||
position: relative;
|
position: relative;
|
||||||
border: 1px solid #ddd;
|
width: 120px;
|
||||||
@include clearfix;
|
|
||||||
|
|
||||||
&:hover .file-preview__remove:after {
|
&:hover {
|
||||||
@include opacity(1);
|
.file-preview__remove {
|
||||||
|
&:after {
|
||||||
|
@include opacity(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
@@ -29,13 +33,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.spinner {
|
.spinner {
|
||||||
position: absolute;
|
height: 32px;
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -16px;
|
margin-left: -16px;
|
||||||
margin-top: -16px;
|
margin-top: -16px;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
width: 32px;
|
width: 32px;
|
||||||
height: 32px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,14 +50,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.file-preview__remove {
|
.file-preview__remove {
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
left: 0;
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
&:after {
|
&:after {
|
||||||
background: rgba(0, 0, 0, .4);
|
@include opacity(0);
|
||||||
|
@include alpha-property(background, $black, .4);
|
||||||
content: '';
|
content: '';
|
||||||
height: 100%;
|
height: 100%;
|
||||||
left: 0;
|
left: 0;
|
||||||
@@ -61,33 +66,31 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@include opacity(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
i {
|
i {
|
||||||
top: 5px;
|
color: $white;
|
||||||
right: 5px;
|
|
||||||
position: absolute;
|
|
||||||
color: #fff;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
z-index: 5;
|
|
||||||
opacity: inherit;
|
opacity: inherit;
|
||||||
text-shadow: 0 0px 3px #444;
|
position: absolute;
|
||||||
text-shadow: 0 0px 3px rgba(0, 0, 0, .7);
|
right: 5px;
|
||||||
|
text-shadow: 0 0 3px alpha-color($black, .7);
|
||||||
|
top: 5px;
|
||||||
|
z-index: 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.image-comment {
|
.image-comment {
|
||||||
background-position: left top;
|
background-position: left top;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
width: 300px;
|
|
||||||
height: 300px;
|
height: 300px;
|
||||||
|
width: 300px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.file-icon {
|
.file-icon {
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
&.audio {
|
&.audio {
|
||||||
@include file-icon('../images/icons/audio.png');
|
@include file-icon('../images/icons/audio.png');
|
||||||
@@ -131,36 +134,30 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-image__column {
|
.post-image__column {
|
||||||
|
border: 1px solid alpha-color($black, .2);
|
||||||
|
float: left;
|
||||||
|
height: 100px;
|
||||||
|
margin: 5px 10px 5px 0;
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 240px;
|
width: 240px;
|
||||||
height: 100px;
|
|
||||||
float: left;
|
|
||||||
margin: 5px 10px 5px 0;
|
|
||||||
border: 1px solid lightgrey;
|
|
||||||
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
color: grey;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-image__load {
|
.post-image__load {
|
||||||
|
background-position: center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 20px 20px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-size: 20px 20px;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center;
|
|
||||||
background-image: url('~images/load.gif');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-image {
|
.post-image {
|
||||||
width: 100%;
|
background-color: $white;
|
||||||
height: 100%;
|
|
||||||
background-color: #fff;
|
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: relative;
|
position: relative;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
&.small {
|
&.small {
|
||||||
background-position: center;
|
background-position: center;
|
||||||
@@ -170,60 +167,59 @@
|
|||||||
background-position: top left;
|
background-position: top left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.spinner.file__loading {
|
.spinner {
|
||||||
position: absolute;
|
.file__loading {
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -16px;
|
margin-left: -16px;
|
||||||
top: 50%;
|
margin-top: -16px;
|
||||||
margin-top: -16px;
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.file__loaded {
|
.file__loaded {
|
||||||
max-width: initial;
|
max-width: initial;
|
||||||
|
|
||||||
&.landscape,
|
&.landscape,
|
||||||
&.quadrat {
|
&.quadrat {
|
||||||
height: 100px;
|
height: 100px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.portrait {
|
&.portrait {
|
||||||
width: 120px;
|
width: 120px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover .file-playback__controls.stop {
|
|
||||||
@include opacity(1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-image__thumbnail {
|
.post-image__thumbnail {
|
||||||
|
@include cursor(zoom-in);
|
||||||
float: left;
|
float: left;
|
||||||
width: 50%;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
cursor: zoom-in;
|
width: 50%;
|
||||||
cursor: -webkit-zoom-in;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-image__details {
|
.post-image__details {
|
||||||
float: left;
|
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
word-break: break-word;
|
background: $white;
|
||||||
width: 50%;
|
border-left: 1px solid $light-gray;
|
||||||
height: 100%;
|
color: alpha-color($black, .8);
|
||||||
background: white;
|
float: left;
|
||||||
border-left: 1px solid #ddd;
|
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
height: 100%;
|
||||||
padding: 7px;
|
padding: 7px;
|
||||||
color: #333;
|
width: 50%;
|
||||||
|
word-break: break-word;
|
||||||
|
|
||||||
.post-image__name {
|
.post-image__name {
|
||||||
margin-bottom: 3px;
|
|
||||||
display: block;
|
display: block;
|
||||||
|
margin-bottom: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-image__download {
|
.post-image__download {
|
||||||
|
@include opacity(.7);
|
||||||
|
cursor: pointer;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding-right: 7px;
|
padding-right: 7px;
|
||||||
cursor: pointer;
|
|
||||||
@include opacity(.7);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-image__type {
|
.post-image__type {
|
||||||
@@ -231,57 +227,56 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-image__size {
|
.post-image__size {
|
||||||
margin-left: 4px;
|
|
||||||
@include opacity(.6);
|
@include opacity(.6);
|
||||||
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-details__container {
|
.file-details__container {
|
||||||
@include display-flex;
|
@include display-flex;
|
||||||
display: -ms-flexbox;
|
background: $white;
|
||||||
|
|
||||||
.file-details {
|
.file-details {
|
||||||
width: 320px;
|
|
||||||
height: 270px;
|
height: 270px;
|
||||||
padding: 14px;
|
padding: 14px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
|
width: 320px;
|
||||||
|
|
||||||
.file-details__name {
|
.file-details__name {
|
||||||
color: #333;
|
color: alpha-color($black, .9);
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-details__info {
|
.file-details__info {
|
||||||
color: grey;
|
color: alpha-color($black, .5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-details__preview {
|
.file-details__preview {
|
||||||
width: 320px;
|
border-right: 1px solid $light-gray;
|
||||||
height: 270px;
|
height: 270px;
|
||||||
border-right: 1px solid #ddd;
|
|
||||||
vertical-align: center;
|
vertical-align: center;
|
||||||
|
width: 320px;
|
||||||
|
|
||||||
// helper to center the image icon in the preview window
|
// helper to center the image icon in the preview window
|
||||||
.file-details__preview-helper {
|
.file-details__preview-helper {
|
||||||
height: 100%;
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
height: 100%;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-playback__controls {
|
.file-playback__controls {
|
||||||
|
@include single-transition(opacity, .6s);
|
||||||
|
bottom: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 22px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 5px;
|
right: 5px;
|
||||||
bottom: 0;
|
|
||||||
font-size: 22px;
|
|
||||||
cursor: pointer;
|
|
||||||
z-index: 2;
|
|
||||||
-webkit-transition: opacity .6s;
|
|
||||||
-moz-transition: opacity .6s;
|
|
||||||
-o-transition: opacity .6s;
|
|
||||||
transition: opacity .6s;
|
transition: opacity .6s;
|
||||||
|
z-index: 2;
|
||||||
|
|
||||||
&.stop {
|
&.stop {
|
||||||
@include opacity(0);
|
@include opacity(0);
|
||||||
@@ -289,6 +284,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.view-image__loading {
|
.view-image__loading {
|
||||||
background: black;
|
background: $black;
|
||||||
min-height: 100px;
|
min-height: 100px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,12 +15,21 @@
|
|||||||
&.no-resize {
|
&.no-resize {
|
||||||
resize: none;
|
resize: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&[disabled],
|
||||||
|
[readonly] {
|
||||||
|
@include alpha-property(background, $white, .1);
|
||||||
|
color: inherit;
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-control[disabled],
|
fieldset {
|
||||||
.form-control[readonly],
|
&[disabled] {
|
||||||
fieldset[disabled] .form-control {
|
.form-control {
|
||||||
cursor: auto;
|
@include alpha-property(background, $white, .1);
|
||||||
background: rgba(#fff, .1);
|
color: inherit;
|
||||||
color: inherit;
|
cursor: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,22 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
a {
|
a {
|
||||||
|
color: $primary-color;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
color: $color--primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:focus,
|
|
||||||
a:hover {
|
|
||||||
color: $color--primary--hover;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-danger,
|
|
||||||
a.text-danger {
|
|
||||||
color: #e05f5d;
|
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: #e05f5d;
|
color: $primary-color--hover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-danger {
|
||||||
|
color: desaturate($red, 20%);
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: desaturate($red, 20%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,24 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.mention {
|
.mention {
|
||||||
color: #fff;
|
@include border-radius(3px);
|
||||||
background: $color--primary;
|
background: $primary-color;
|
||||||
|
color: $white;
|
||||||
|
padding-bottom: 2px;
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
padding-bottom: 2px;
|
|
||||||
@include border-radius(3px);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.mentions__name {
|
.mentions__name {
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
height: 36px;
|
|
||||||
padding: 2px;
|
|
||||||
z-index: 101;
|
|
||||||
line-height: 36px;
|
|
||||||
font-size: 13px;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
font-size: 13px;
|
||||||
|
height: 36px;
|
||||||
|
line-height: 36px;
|
||||||
|
padding: 2px;
|
||||||
|
position: relative;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 101;
|
||||||
|
|
||||||
.mention-align {
|
.mention-align {
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
@@ -28,29 +28,29 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.mention__image {
|
.mention__image {
|
||||||
margin-right: 6px;
|
@include border-radius(32px);
|
||||||
height: 32px;
|
|
||||||
width: 32px;
|
|
||||||
line-height: 36px;
|
|
||||||
display: block;
|
display: block;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 36px;
|
||||||
|
margin-right: 6px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@include border-radius(32px);
|
width: 32px;
|
||||||
|
|
||||||
.mention--align {
|
.mention--align {
|
||||||
|
display: inline-block;
|
||||||
max-width: 80%;
|
max-width: 80%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: inline-block;
|
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.mention__fullname {
|
.mention__fullname {
|
||||||
color: grey;
|
color: $dark-gray;
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mention--highlight {
|
.mention--highlight {
|
||||||
background-color: #fff2bb;
|
background-color: $yellow;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,24 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
#channel_members_modal .modal-body {
|
.browser--ie {
|
||||||
min-height: 110px;
|
.modal {
|
||||||
|
.modal-dialog {
|
||||||
|
@include translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-body {
|
.modal-body {
|
||||||
padding: 20px 15px;
|
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
padding: 20px 15px;
|
||||||
|
|
||||||
|
.edit-modal-body {
|
||||||
|
overflow: visible;
|
||||||
|
|
||||||
|
.suggestion-list__content {
|
||||||
|
max-height: 150px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.more-table {
|
.more-table {
|
||||||
@@ -15,27 +27,23 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.modal {
|
.modal {
|
||||||
|
color: alpha-color($black, .9);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
color: #333;
|
|
||||||
|
|
||||||
body.browser--IE & {
|
&.modal-image {
|
||||||
.modal-dialog {
|
.modal-backdrop {
|
||||||
@include translateY(0);
|
&.in {
|
||||||
}
|
@include opacity(.7);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.image_modal {
|
|
||||||
.modal-backdrop.in {
|
|
||||||
@include opacity(.7);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-textarea {
|
.custom-textarea {
|
||||||
|
border-color: $light-gray;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
border-color: #ccc;
|
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
border-color: #ccc;
|
border-color: $light-gray;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -44,15 +52,15 @@
|
|||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
|
||||||
&.btn-default {
|
&.btn-default {
|
||||||
border: none;
|
|
||||||
background: transparent;
|
background: transparent;
|
||||||
|
border: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.info__label {
|
.info__label {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
text-align: right;
|
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.team-member-list {
|
.team-member-list {
|
||||||
@@ -60,21 +68,21 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.remove__member {
|
.remove__member {
|
||||||
|
color: $dark-gray;
|
||||||
float: right;
|
float: right;
|
||||||
color: #999;
|
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
line-height: 0;
|
line-height: 0;
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: #e56565;
|
color: $red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-dialog {
|
.modal-dialog {
|
||||||
max-width: 95%;
|
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
|
max-width: 95%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-push-down {
|
.modal-push-down {
|
||||||
@@ -82,51 +90,51 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.modal-next-bar {
|
.modal-next-bar {
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
right: 0;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-header {
|
.modal-header {
|
||||||
border-radius: 0;
|
@include border-radius(0);
|
||||||
background: $color--primary;
|
|
||||||
color: #fff;
|
|
||||||
padding: 15px 15px 11px;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
min-height: 56px;
|
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
|
background: $primary-color;
|
||||||
|
border: 1px solid $light-gray;
|
||||||
|
color: $white;
|
||||||
|
min-height: 56px;
|
||||||
|
padding: 15px 15px 11px;
|
||||||
|
|
||||||
.modal-title {
|
.modal-title {
|
||||||
|
color: $bg--gray;
|
||||||
float: left;
|
float: left;
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
line-height: 27px;
|
line-height: 27px;
|
||||||
color: #f4f4f4;
|
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
|
color: $white;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: #fff;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-action {
|
.modal-action {
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
button.close {
|
.close {
|
||||||
color: #fff;
|
|
||||||
@include opacity(1);
|
@include opacity(1);
|
||||||
z-index: 5;
|
@include single-transition(all, .25s, ease-in);
|
||||||
width: 30px;
|
color: $white;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
@include single-transition(all, .25s, ease-in);
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
|
width: 30px;
|
||||||
|
z-index: 5;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: rgba(0, 0, 0, .1);
|
@include alpha-property(background, $black, .1);
|
||||||
}
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
@@ -149,8 +157,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.no-channel-message {
|
.no-channel-message {
|
||||||
text-align: center;
|
|
||||||
padding: 2em 1em;
|
padding: 2em 1em;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
.primary-message {
|
.primary-message {
|
||||||
font-size: 1.25em;
|
font-size: 1.25em;
|
||||||
@@ -168,46 +176,46 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.modal-chevron-icon {
|
.modal-chevron-icon {
|
||||||
top: 50%;
|
|
||||||
font-size: 120%;
|
font-size: 120%;
|
||||||
|
top: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-prev-bar {
|
.modal-prev-bar {
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
left: 0;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
&#more_channels {
|
&.more-channel__modal {
|
||||||
.modal-body {
|
.modal-body {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-image {
|
.modal-image {
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
.modal-body {
|
.modal-body {
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
height: 100%;
|
|
||||||
display: table;
|
display: table;
|
||||||
|
height: 100%;
|
||||||
|
max-height: 100%;
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-height: 100%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.image-wrapper {
|
.modal-image__wrapper {
|
||||||
position: relative;
|
|
||||||
max-width: 90%;
|
|
||||||
@include border-radius(3px);
|
@include border-radius(3px);
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
vertical-align: middle;
|
max-width: 90%;
|
||||||
|
position: relative;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@@ -215,33 +223,31 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.default {
|
&.default {
|
||||||
width: 100%;
|
|
||||||
height: 80%;
|
height: 80%;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
audio,
|
audio,
|
||||||
canvas,
|
canvas,
|
||||||
progress,
|
progress,
|
||||||
video {
|
video {
|
||||||
max-width: 100%;
|
|
||||||
height: auto;
|
|
||||||
display: block;
|
display: block;
|
||||||
|
height: auto;
|
||||||
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-close {
|
.modal-close {
|
||||||
background: url('../images/close.png') no-repeat;
|
@include single-transition(opacity, .6s);
|
||||||
@include background-size(100% 100%);
|
@include background-size(100% 100%);
|
||||||
width: 37px;
|
@include opacity(0);
|
||||||
|
background-image: url('../images/close.png');
|
||||||
|
cursor: pointer;
|
||||||
height: 37px;
|
height: 37px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: -13px;
|
right: -13px;
|
||||||
top: -13px;
|
top: -13px;
|
||||||
@include opacity(0);
|
|
||||||
-webkit-transition: opacity .6s;
|
|
||||||
-moz-transition: opacity .6s;
|
|
||||||
-o-transition: opacity .6s;
|
|
||||||
transition: opacity .6s;
|
transition: opacity .6s;
|
||||||
cursor: pointer;
|
width: 37px;
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
|
|
||||||
&.modal-close--show {
|
&.modal-close--show {
|
||||||
@@ -250,99 +256,109 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
|
display: inline-block;
|
||||||
min-height: 100px;
|
min-height: 100px;
|
||||||
min-width: 320px;
|
min-width: 320px;
|
||||||
background: #fff;
|
|
||||||
display: inline-block;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
&:hover .file-playback__controls.stop {
|
code {
|
||||||
@include opacity(1);
|
min-height: 130px;
|
||||||
}
|
min-width: 330px;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre, code {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-body--code {
|
||||||
|
max-height: calc(100vh - 80px);
|
||||||
|
max-width: calc(100vw - 80px);
|
||||||
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
max-width: 100%;
|
|
||||||
max-height: 100%;
|
max-height: 100%;
|
||||||
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.spinner.file__loading {
|
.spinner {
|
||||||
z-index: 2;
|
.file__loading {
|
||||||
position: absolute;
|
left: 50%;
|
||||||
left: 50%;
|
margin-left: -16px;
|
||||||
margin-left: -16px;
|
margin-top: -16px;
|
||||||
top: 50%;
|
position: absolute;
|
||||||
margin-top: -16px;
|
top: 50%;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-content {
|
.modal-content {
|
||||||
|
background: alpha-color($black, 0);
|
||||||
|
border: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
background: rgba(0, 0, 0, 0);
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border: none;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.image-body {
|
.modal-image__body {
|
||||||
vertical-align: middle;
|
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
text-align: center;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
overflow: visible;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: visible;
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.image-control {
|
.image-control {
|
||||||
width: 50px;
|
background: url('../images/prev.png') left no-repeat;
|
||||||
height: 45px;
|
|
||||||
float: left;
|
float: left;
|
||||||
background: url(../images/prev.png) left no-repeat;
|
height: 45px;
|
||||||
top: 50%;
|
|
||||||
position: relative;
|
|
||||||
margin-top: -23px;
|
margin-top: -23px;
|
||||||
|
position: relative;
|
||||||
|
top: 50%;
|
||||||
|
width: 50px;
|
||||||
|
|
||||||
&.image-next {
|
&.image-next {
|
||||||
|
background: url('../images/next.png') left no-repeat;
|
||||||
float: right;
|
float: right;
|
||||||
background: url(../images/next.png) left no-repeat;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.loader-image {
|
.loader-image {
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
|
||||||
margin: auto;
|
margin: auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.loader-percent {
|
.loader-percent {
|
||||||
position: absolute;
|
|
||||||
top: 55px;
|
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
color: $dark-gray;
|
||||||
right: 0;
|
|
||||||
margin: auto;
|
|
||||||
color: grey;
|
|
||||||
height: 20px;
|
height: 20px;
|
||||||
|
left: 0;
|
||||||
|
margin: auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 55px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-button-bar {
|
.modal-button-bar {
|
||||||
position: absolute;
|
@include single-transition(opacity, .6s);
|
||||||
bottom: -40px;
|
|
||||||
left: 0px;
|
|
||||||
right: 0px;
|
|
||||||
background-color: #222;
|
|
||||||
@include border-radius(0 0 3px 3px);
|
@include border-radius(0 0 3px 3px);
|
||||||
@include opacity(0);
|
@include opacity(0);
|
||||||
-webkit-transition: opacity .6s;
|
background-color: $black;
|
||||||
-moz-transition: opacity .6s;
|
bottom: -40px;
|
||||||
-o-transition: opacity .6s;
|
left: 0;
|
||||||
transition: opacity .6s;
|
|
||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
|
||||||
&.footer--show {
|
&.footer--show {
|
||||||
@include opacity(1);
|
@include opacity(1);
|
||||||
@@ -356,10 +372,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
vertical-align: middle;
|
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
color: white;
|
color: $white;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.public-link {
|
.public-link {
|
||||||
@@ -376,11 +392,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.row--invite {
|
.row--invite {
|
||||||
margin-right: 40px;
|
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
|
margin-right: 40px;
|
||||||
|
|
||||||
.col-sm-6 {
|
.col-sm-6 {
|
||||||
padding: 0 0 0 15px;
|
padding: 0 0 0 15px;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
@@ -389,26 +406,26 @@
|
|||||||
|
|
||||||
.more-modal {
|
.more-modal {
|
||||||
.user-list {
|
.user-list {
|
||||||
overflow-y: auto;
|
|
||||||
overflow-x: hidden;
|
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
overflow-x: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-body {
|
.modal-body {
|
||||||
padding: 10px 0 20px;
|
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
|
padding: 10px 0 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-row {
|
.filter-row {
|
||||||
margin: 10px 0;
|
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
|
margin: 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-count {
|
.member-count {
|
||||||
margin-top: 5px;
|
|
||||||
float: right;
|
|
||||||
@include opacity(.8);
|
@include opacity(.8);
|
||||||
|
float: right;
|
||||||
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.more-purpose {
|
.more-purpose {
|
||||||
@@ -416,21 +433,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-body.edit-modal-body {
|
|
||||||
overflow: visible;
|
|
||||||
|
|
||||||
.suggestion-list__content {
|
|
||||||
max-height: 150px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.more-modal__list {
|
.more-modal__list {
|
||||||
overflow: auto;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
.popover & {
|
.popover & {
|
||||||
font-size: 0.95em;
|
font-size: .95em;
|
||||||
|
|
||||||
.more-modal__row {
|
.more-modal__row {
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
@@ -442,9 +451,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.more-modal__image {
|
.more-modal__image {
|
||||||
|
@include border-radius(60px);
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
@include border-radius(60px);
|
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -462,33 +471,33 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.more-modal__name {
|
.more-modal__name {
|
||||||
font-weight: 600;
|
|
||||||
font-size: .95em;
|
font-size: .95em;
|
||||||
white-space: nowrap;
|
font-weight: 600;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.more-modal__description {
|
.more-modal__description {
|
||||||
@include opacity(.7);
|
@include opacity(.7);
|
||||||
display: block;
|
display: block;
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.more-modal__row {
|
.more-modal__row {
|
||||||
|
border-bottom: 1px solid;
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 8px 15px;
|
padding: 8px 15px;
|
||||||
border-bottom: 1px solid;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
|
@include opacity(.8);
|
||||||
font-size: .9em;
|
font-size: .9em;
|
||||||
|
margin: 5px 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
@include opacity(.8);
|
|
||||||
margin: 5px 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.prompt {
|
.prompt {
|
||||||
background: #fff;
|
background: $white;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid $light-gray;
|
||||||
padding: 1em 2em 0;
|
|
||||||
margin: 50px auto;
|
margin: 50px auto;
|
||||||
max-width: 90%;
|
max-width: 90%;
|
||||||
|
padding: 1em 2em 0;
|
||||||
width: 600px;
|
width: 600px;
|
||||||
|
|
||||||
.prompt__heading {
|
.prompt__heading {
|
||||||
|
display: table;
|
||||||
font-size: em(20px);
|
font-size: em(20px);
|
||||||
line-height: normal;
|
line-height: normal;
|
||||||
margin: 1em 0;
|
margin: 1em 0;
|
||||||
display: table;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
@@ -26,13 +26,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.prompt__allow {
|
.prompt__allow {
|
||||||
margin: 1em 0;
|
|
||||||
font-size: em(24px);
|
font-size: em(24px);
|
||||||
|
margin: 1em 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prompt__buttons {
|
.prompt__buttons {
|
||||||
text-align: right;
|
border-top: 1px solid $dark-gray;
|
||||||
border-top: 1px solid #ddd;
|
|
||||||
padding: 1.5em 0;
|
padding: 1.5em 0;
|
||||||
|
text-align: right;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,32 +3,38 @@
|
|||||||
|
|
||||||
.popover {
|
.popover {
|
||||||
@include border-radius($border-rad);
|
@include border-radius($border-rad);
|
||||||
color: #333;
|
color: lighten($black, 25%);
|
||||||
|
|
||||||
&.bottom,
|
&.bottom,
|
||||||
&.right,
|
&.right,
|
||||||
&.top,
|
&.top,
|
||||||
&.left {
|
&.left {
|
||||||
> .arrow:after {
|
> .arrow {
|
||||||
border-color: transparent;
|
&:after {
|
||||||
|
border-color: transparent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.popover-title {
|
.popover-title {
|
||||||
background: rgba(black, .05);
|
background: alpha-color($black, .05);
|
||||||
padding: 8px 10px;
|
padding: 8px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.popover-content {
|
.popover-content {
|
||||||
p:last-child {
|
p {
|
||||||
margin-bottom: 5px;
|
&:last-child {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.channel-header__info .popover-content {
|
.channel-header__info {
|
||||||
max-height: 250px;
|
.popover-content {
|
||||||
overflow: auto;
|
max-height: 250px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.user-popover {
|
.user-popover {
|
||||||
@@ -36,32 +42,35 @@
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.code-popover .popover-content {
|
.code-popover {
|
||||||
padding: 5px;
|
.popover-content {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.user-popover__image {
|
.user-popover__image {
|
||||||
margin: 0 0 10px;
|
|
||||||
@include border-radius(128px);
|
@include border-radius(128px);
|
||||||
|
margin: 0 0 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.user-popover__email {
|
.user-popover__email {
|
||||||
|
display: block;
|
||||||
max-width: 200px;
|
max-width: 200px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
display: block;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-help-popover {
|
.search-help-popover {
|
||||||
visibility: hidden;
|
|
||||||
max-width: none;
|
|
||||||
width: 100%;
|
|
||||||
top: 36px;
|
|
||||||
@include single-transition(opacity, .3s, ease-in);
|
@include single-transition(opacity, .3s, ease-in);
|
||||||
font-size: em(13px);
|
font-size: em(13px);
|
||||||
|
max-width: none;
|
||||||
|
top: 36px;
|
||||||
|
visibility: hidden;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
&.autocomplete {
|
&.autocomplete {
|
||||||
display: block;
|
display: block;
|
||||||
|
|
||||||
.popover-content {
|
.popover-content {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -69,65 +78,68 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.search-autocomplete__divider {
|
.search-autocomplete__divider {
|
||||||
margin: 10px 0 5px;
|
|
||||||
line-height: 21px;
|
line-height: 21px;
|
||||||
|
margin: 10px 0 5px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
span {
|
|
||||||
|
> span {
|
||||||
|
background: $white;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding-right: 10px;
|
padding-right: 10px;
|
||||||
background: #fff;
|
|
||||||
z-index: 5;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
|
z-index: 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:before {
|
&:before {
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
height: 1px;
|
|
||||||
background: #ddd;
|
|
||||||
top: 10px;
|
|
||||||
left: 0;
|
|
||||||
@include opacity(.2);
|
@include opacity(.2);
|
||||||
|
background: $dark-gray;
|
||||||
|
content: '';
|
||||||
|
height: 1px;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-autocomplete__item {
|
.search-autocomplete__item {
|
||||||
cursor: pointer;
|
|
||||||
padding: 6px 8px;
|
|
||||||
margin: 3px 0 0 5px;
|
|
||||||
@include border-radius(2px);
|
@include border-radius(2px);
|
||||||
white-space: nowrap;
|
cursor: pointer;
|
||||||
|
margin: 3px 0 0 5px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
padding: 6px 8px;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: rgba(black, .1);
|
background: alpha-color($black, .1);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.selected {
|
&.selected {
|
||||||
background: rgba(black, .2);
|
background: alpha-color($black, .2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
margin-right: 5px;
|
|
||||||
@include opacity(.5);
|
@include opacity(.5);
|
||||||
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-img {
|
.profile-img {
|
||||||
margin-top: -1px;
|
|
||||||
height: 16px;
|
height: 16px;
|
||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
|
margin-top: -1px;
|
||||||
width: 16px;
|
width: 16px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.bottom > .arrow {
|
&.bottom > .arrow {
|
||||||
top: -18px;
|
|
||||||
border-width: 9px;
|
border-width: 9px;
|
||||||
left: 30px;
|
left: 30px;
|
||||||
|
top: -18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.popover-content {
|
.popover-content {
|
||||||
@@ -142,9 +154,11 @@
|
|||||||
|
|
||||||
ul {
|
ul {
|
||||||
padding-left: 17px;
|
padding-left: 17px;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
@include opacity(.8);
|
@include opacity(.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
strong,
|
strong,
|
||||||
b {
|
b {
|
||||||
@include opacity(1);
|
@include opacity(1);
|
||||||
@@ -156,25 +170,28 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.visible {
|
&.visible {
|
||||||
visibility: visible;
|
|
||||||
@include opacity(1);
|
@include opacity(1);
|
||||||
|
visibility: visible;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#member-list-popover {
|
.member-list__popover {
|
||||||
max-width: initial;
|
max-width: initial;
|
||||||
|
|
||||||
.popover-content {
|
.popover-content {
|
||||||
position: relative;
|
|
||||||
padding: 0;
|
|
||||||
width: 260px;
|
|
||||||
max-height: 350px;
|
max-height: 350px;
|
||||||
|
padding: 0;
|
||||||
|
position: relative;
|
||||||
|
width: 260px;
|
||||||
|
|
||||||
.text-nowrap {
|
.text-nowrap {
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 26px;
|
||||||
|
overflow: hidden;
|
||||||
padding: 6px 10px;
|
padding: 6px 10px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
overflow: hidden;
|
|
||||||
line-height: 26px;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.more__name {
|
.more__name {
|
||||||
margin-left: 6px;
|
margin-left: 6px;
|
||||||
max-width: 140px;
|
max-width: 140px;
|
||||||
|
|||||||
@@ -1,28 +1,25 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
::-webkit-scrollbar
|
::-webkit-scrollbar {
|
||||||
{
|
height: 8px; // for horizontal scrollbars
|
||||||
width: 8px; /* for vertical scrollbars */
|
width: 8px; // for vertical scrollbars
|
||||||
height: 8px; /* for horizontal scrollbars */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar-track
|
::-webkit-scrollbar-track {
|
||||||
{
|
background: rgba(0, 0, 0, .1);
|
||||||
background: rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb
|
::-webkit-scrollbar-thumb {
|
||||||
{
|
|
||||||
@include border-radius($border-rad * 2);
|
@include border-radius($border-rad * 2);
|
||||||
background: rgba(0, 0, 0, 0.4);
|
background: rgba(0, 0, 0, .4);
|
||||||
}
|
}
|
||||||
|
|
||||||
body{
|
body {
|
||||||
scrollbar-face-color: rgba(0, 0, 0, 0.1);
|
|
||||||
scrollbar-shadow-color: #2D2C4D;
|
|
||||||
scrollbar-highlight-color:#7D7E94;
|
|
||||||
scrollbar-3dlight-color: #7D7E94;
|
scrollbar-3dlight-color: #7D7E94;
|
||||||
scrollbar-darkshadow-color: #2D2C4D;
|
|
||||||
scrollbar-track-color: rgba(0, 0, 0, 0.1);
|
|
||||||
scrollbar-arrow-color: #C1C1D1;
|
scrollbar-arrow-color: #C1C1D1;
|
||||||
|
scrollbar-darkshadow-color: #2D2C4D;
|
||||||
|
scrollbar-face-color: rgba(0, 0, 0, .1);
|
||||||
|
scrollbar-highlight-color: #7D7E94;
|
||||||
|
scrollbar-shadow-color: #2D2C4D;
|
||||||
|
scrollbar-track-color: rgba(0, 0, 0, .1);
|
||||||
}
|
}
|
||||||
@@ -1,15 +1,19 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
#channel-header .search-bar__container {
|
.channel-header {
|
||||||
padding: 0 9px 0 3px;
|
.search-bar__container {
|
||||||
|
padding: 0 9px 0 3px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-bar__container {
|
.search-bar__container {
|
||||||
padding: 12px 8px 0 0;
|
|
||||||
@include flex(0 0 56px);
|
@include flex(0 0 56px);
|
||||||
|
padding: 12px 8px 0 0;
|
||||||
|
|
||||||
.sidebar--right.move--left & {
|
.sidebar--right {
|
||||||
padding-right: 42px;
|
&.move--left & {
|
||||||
|
padding-right: 42px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18,62 +22,60 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.search__clear {
|
.search__clear {
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
line-height: 45px;
|
|
||||||
margin-right: 13px;
|
|
||||||
@include single-transition(all, .2s, linear);
|
@include single-transition(all, .2s, linear);
|
||||||
@include translateX(60px);
|
@include translateX(60px);
|
||||||
z-index: 5;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
display: none;
|
||||||
|
line-height: 45px;
|
||||||
|
margin-right: 13px;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
z-index: 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-item-snippet {
|
.search-item-snippet {
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar__collapse {
|
|
||||||
cursor: pointer;
|
|
||||||
z-index: 5;
|
|
||||||
fill: #fff;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
font-size: 35px;
|
|
||||||
width: 49px;
|
|
||||||
@include single-transition(all, .2s, linear);
|
|
||||||
@include translateX(0px);
|
|
||||||
text-align: center;
|
|
||||||
padding-left: 1px;
|
|
||||||
line-height: 40px;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-item-snippet {
|
|
||||||
ul,
|
ul,
|
||||||
ol {
|
ol {
|
||||||
padding-left: 20px;
|
padding-left: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sidebar__collapse {
|
||||||
|
@include single-transition(all, .2s, linear);
|
||||||
|
@include translateX(0);
|
||||||
|
cursor: pointer;
|
||||||
|
display: none;
|
||||||
|
fill: $white;
|
||||||
|
font-size: 35px;
|
||||||
|
left: 0;
|
||||||
|
line-height: 40px;
|
||||||
|
padding-left: 1px;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
width: 49px;
|
||||||
|
z-index: 5;
|
||||||
|
}
|
||||||
|
|
||||||
.sidebar__search-icon {
|
.sidebar__search-icon {
|
||||||
|
@include opacity(.5);
|
||||||
|
color: $dark-gray;
|
||||||
|
display: none;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-left: 10px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 15px;
|
top: 15px;
|
||||||
margin-left: 10px;
|
|
||||||
font-size: 14px;
|
|
||||||
@include opacity(.5);
|
|
||||||
display: none;
|
|
||||||
color: #777;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.search__form {
|
.search__form {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.search-bar__container & {
|
.search-bar__container & {
|
||||||
margin: 0;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
@include border-radius(2px);
|
@include border-radius(2px);
|
||||||
|
border: 1px solid $light-gray;
|
||||||
|
margin: 0;
|
||||||
width: 300px;
|
width: 300px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,21 +84,21 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.search-bar {
|
.search-bar {
|
||||||
|
box-shadow: none;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
padding-right: 30px;
|
padding-right: 30px;
|
||||||
box-shadow: none;
|
|
||||||
|
|
||||||
.search-bar__container & {
|
.search-bar__container & {
|
||||||
height: 30px;
|
|
||||||
border: none;
|
border: none;
|
||||||
|
height: 30px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.glyphicon-refresh-animate {
|
.glyphicon-refresh-animate {
|
||||||
top: 27px;
|
color: $dark-gray;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 27px;
|
right: 27px;
|
||||||
color: #999;
|
top: 27px;
|
||||||
|
|
||||||
.search-bar__container & {
|
.search-bar__container & {
|
||||||
right: 7px;
|
right: 7px;
|
||||||
@@ -106,30 +108,29 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.search-items-container {
|
.search-items-container {
|
||||||
position: relative;
|
|
||||||
overflow: auto;
|
|
||||||
-webkit-overflow-scrolling: touch;
|
|
||||||
@include flex(1 1 auto);
|
@include flex(1 1 auto);
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
height: calc(100% - 56px);
|
height: calc(100% - 56px);
|
||||||
|
overflow: auto;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-results-header {
|
.search-results-header {
|
||||||
|
border-bottom: $border-gray;
|
||||||
|
color: #999999;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
text-transform: uppercase;
|
|
||||||
color: #999;
|
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #888;
|
|
||||||
height: 44px;
|
height: 44px;
|
||||||
line-height: 44px;
|
line-height: 44px;
|
||||||
padding: 0 10px 0 10px;
|
padding: 0 10px;
|
||||||
border-bottom: $border-gray;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-item__container {
|
.search-item__container {
|
||||||
.post {
|
.post {
|
||||||
padding: 0 1em 1em;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
padding: 0 1em 1em;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
border: none;
|
border: none;
|
||||||
@@ -137,17 +138,17 @@
|
|||||||
|
|
||||||
.search-channel__name {
|
.search-channel__name {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
margin: 0 0 10px 0;
|
margin: 0 0 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-item__jump {
|
.search-item__jump {
|
||||||
|
@include opacity(.8);
|
||||||
|
font-size: 13px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 0px;
|
top: 0;
|
||||||
font-size: 13px;
|
|
||||||
@include opacity(.8);
|
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@include opacity(1);
|
@include opacity(1);
|
||||||
@@ -155,9 +156,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.search-item__comment {
|
.search-item__comment {
|
||||||
|
margin-right: 35px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
margin-right: 35px;
|
|
||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,5 +172,5 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.search-highlight {
|
.search-highlight {
|
||||||
background-color: #fff2bb;
|
background-color: $yellow;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.suggestion-list {
|
.suggestion-list {
|
||||||
|
@extend %popover-box-shadow;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
@extend %popover-box-shadow;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.suggestion-list--top {
|
.suggestion-list--top {
|
||||||
@@ -11,31 +11,31 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.suggestion-list__content {
|
.suggestion-list__content {
|
||||||
width: 100%;
|
background-color: $white;
|
||||||
max-height: 292px;
|
|
||||||
background-color: #fff;
|
|
||||||
border: $border-gray;
|
border: $border-gray;
|
||||||
|
max-height: 292px;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
.command {
|
.command {
|
||||||
position: relative;
|
border-bottom: 1px solid $light-gray;
|
||||||
width: 100%;
|
font-size: .95em;
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
padding: 5px 10px 8px;
|
padding: 5px 10px 8px;
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
z-index: 101;
|
z-index: 101;
|
||||||
font-size: .95em;
|
|
||||||
border-bottom: 1px solid #ddd;
|
|
||||||
|
|
||||||
.command__desc {
|
.command__desc {
|
||||||
margin-left: 5px;
|
|
||||||
@include opacity(.5);
|
@include opacity(.5);
|
||||||
line-height: normal;
|
line-height: normal;
|
||||||
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.suggestion-list__content--top {
|
.suggestion-list__content--top {
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
.tooltip {
|
.tooltip {
|
||||||
.tooltip-inner {
|
.tooltip-inner {
|
||||||
word-break: break-word;
|
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
padding: 3px 10px 4px;
|
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
padding: 3px 10px 4px;
|
||||||
|
word-break: break-word;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,72 +1,76 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.tip-backdrop {
|
.tip-backdrop {
|
||||||
background: rgba(black, .5);
|
background: alpha-color($black, .5);
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tip-overlay {
|
.tip-overlay {
|
||||||
width: 350px;
|
|
||||||
max-width: 90%;
|
|
||||||
position: absolute;
|
|
||||||
background-color: #fff;
|
|
||||||
@include border-radius(3px);
|
@include border-radius(3px);
|
||||||
|
background-color: $white;
|
||||||
|
max-width: 90%;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
position: absolute;
|
||||||
|
width: 350px;
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
|
|
||||||
.arrow {
|
.arrow {
|
||||||
border-width: 10px;
|
|
||||||
position: absolute;
|
|
||||||
display: block;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
|
border-width: 10px;
|
||||||
|
display: block;
|
||||||
|
height: 0;
|
||||||
|
position: absolute;
|
||||||
|
width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.tip-overlay--sidebar {
|
&.tip-overlay--sidebar {
|
||||||
max-width: 75%;
|
|
||||||
margin: 50px 0 0 10px;
|
margin: 50px 0 0 10px;
|
||||||
|
max-width: 75%;
|
||||||
min-height: 330px;
|
min-height: 330px;
|
||||||
|
|
||||||
.tutorial__footer {
|
.tutorial__footer {
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
bottom: 20px;
|
bottom: 20px;
|
||||||
left: 0;
|
left: 0;
|
||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.arrow {
|
.arrow {
|
||||||
top: 80px;
|
border-left-width: 0;
|
||||||
|
border-right-color: $white;
|
||||||
left: -10px;
|
left: -10px;
|
||||||
margin-top: -10px;
|
margin-top: -10px;
|
||||||
border-left-width: 0;
|
top: 80px;
|
||||||
border-right-color: #fff;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.tip-overlay--header {
|
&.tip-overlay--header {
|
||||||
margin: 10px 0 0 10px;
|
margin: 10px 0 0 10px;
|
||||||
|
|
||||||
.arrow {
|
.arrow {
|
||||||
top: 15px;
|
|
||||||
left: -10px;
|
|
||||||
border-left-width: 0;
|
border-left-width: 0;
|
||||||
border-right-color: #fff;
|
border-right-color: $white;
|
||||||
|
left: -10px;
|
||||||
|
top: 15px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.tip-overlay--chat {
|
&.tip-overlay--chat {
|
||||||
margin-top: -10px;
|
margin-top: -10px;
|
||||||
|
|
||||||
.arrow {
|
.arrow {
|
||||||
|
border-bottom-width: 0;
|
||||||
|
border-top-color: $white;
|
||||||
|
bottom: -10px;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -10px;
|
margin-left: -10px;
|
||||||
border-bottom-width: 0;
|
|
||||||
border-top-color: #fff;
|
|
||||||
bottom: -10px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,18 +90,18 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
background: #ccc;
|
|
||||||
color: #fff;
|
|
||||||
@include border-radius(3px);
|
@include border-radius(3px);
|
||||||
|
background: alpha-color($black, .3);
|
||||||
border: none;
|
border: none;
|
||||||
|
color: $white;
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:active,
|
&:active,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: #fff;
|
background: alpha-color($black, .4);
|
||||||
border: none;
|
border: none;
|
||||||
background: #bbb;
|
color: $white;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,81 +114,88 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tutorial__circles {
|
.tutorial__circles {
|
||||||
margin: 1.5em 0px -1.7em -4px;
|
margin: 1.5em 0 -1.7em -4px;
|
||||||
|
|
||||||
.circle {
|
.circle {
|
||||||
width: 7px;
|
|
||||||
height: 7px;
|
height: 7px;
|
||||||
margin: 0 4px;
|
margin: 0 4px;
|
||||||
|
width: 7px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tip-button {
|
.tip-button {
|
||||||
z-index: 998;
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
right: -10px;
|
right: -10px;
|
||||||
top: -10px;
|
top: -10px;
|
||||||
position: relative;
|
z-index: 998;
|
||||||
cursor: pointer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tip-div {
|
.tip-div {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0px;
|
right: 0;
|
||||||
right: 0px;
|
top: 0;
|
||||||
|
|
||||||
&.tip-overlay--header {
|
&.tip-overlay--header {
|
||||||
top: 21px;
|
|
||||||
right: 2px;
|
right: 2px;
|
||||||
|
top: 21px;
|
||||||
|
|
||||||
.tip-button {
|
.tip-button {
|
||||||
@include opacity(.8);
|
@include opacity(.8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.tip-overlay--sidebar {
|
&.tip-overlay--sidebar {
|
||||||
left: 0;
|
|
||||||
@include opacity(.8);
|
@include opacity(.8);
|
||||||
|
left: 0;
|
||||||
top: -9px;
|
top: -9px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tutorial-steps__container {
|
.tutorial-steps__container {
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
display: table;
|
display: table;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
text-align: center;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
.tutorial__content {
|
.tutorial__content {
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
vertical-align: middle;
|
|
||||||
padding-bottom: 100px;
|
|
||||||
padding: 20px 40px 40px;
|
padding: 20px 40px 40px;
|
||||||
|
vertical-align: middle;
|
||||||
|
|
||||||
.tutorial__steps {
|
.tutorial__steps {
|
||||||
position: relative;
|
display: inline-block;
|
||||||
|
margin-bottom: 50px;
|
||||||
max-width: 310px;
|
max-width: 310px;
|
||||||
min-height: 370px;
|
min-height: 370px;
|
||||||
margin-bottom: 50px;
|
position: relative;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
display: inline-block;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tutorial__footer {
|
.tutorial__footer {
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: em(40px);
|
font-size: em(40px);
|
||||||
margin: -20px 0 30px;
|
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
margin: -20px 0 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-size: em(24px);
|
font-size: em(24px);
|
||||||
margin-bottom: 30px;
|
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
margin-bottom: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tutorial__circles {
|
.tutorial__circles {
|
||||||
position: absolute;
|
|
||||||
bottom: 40px;
|
bottom: 40px;
|
||||||
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tutorial-skip {
|
.tutorial-skip {
|
||||||
margin-left: 13px;
|
margin-left: 13px;
|
||||||
}
|
}
|
||||||
@@ -192,17 +203,19 @@
|
|||||||
|
|
||||||
.tutorial__circles {
|
.tutorial__circles {
|
||||||
margin: 2em 0;
|
margin: 2em 0;
|
||||||
|
|
||||||
.circle {
|
.circle {
|
||||||
width: 9px;
|
|
||||||
height: 9px;
|
|
||||||
@include border-radius(9px);
|
@include border-radius(9px);
|
||||||
@include opacity(.2);
|
@include opacity(.2);
|
||||||
background: #000;
|
background: $black;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
height: 9px;
|
||||||
margin: 0 5px;
|
margin: 0 5px;
|
||||||
|
width: 9px;
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
background: $color--primary;
|
|
||||||
@include opacity(1);
|
@include opacity(1);
|
||||||
|
background: $primary-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,65 +1,68 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.video-div {
|
.video-div {
|
||||||
position: relative;
|
|
||||||
max-width: 480px;
|
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
|
max-width: 480px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
.video-thumbnail {
|
.video-thumbnail {
|
||||||
max-width: 100%;
|
|
||||||
height: auto;
|
height: auto;
|
||||||
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.block {
|
.block {
|
||||||
background-color: rgba(0,0,0,.5);
|
background-color: alpha-color($black, .5);
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
|
height: 150px;
|
||||||
|
left: 50%;
|
||||||
|
margin: -75px 0 0 -100px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 50%;
|
|
||||||
margin-top: -100px;
|
|
||||||
width: 200px;
|
width: 200px;
|
||||||
margin: -75px 0 0 -100px;
|
|
||||||
height: 150px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.video-type {
|
.video-type {
|
||||||
@include opacity(.8);
|
@include opacity(.8);
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
margin: 0px;
|
margin: 0;
|
||||||
padding: 0px;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.video-title {
|
.video-title {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
margin-top: 3px;
|
margin-top: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.play-button {
|
.play-button {
|
||||||
width: 100px;
|
@include border-radius(14px);
|
||||||
|
border: 4px solid alpha-color($white, .4);
|
||||||
height: 100px;
|
height: 100px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 26px;
|
|
||||||
right: 51px;
|
right: 51px;
|
||||||
border: 4px solid;
|
top: 26px;
|
||||||
border-color: rgba(255,255,255,.4);
|
width: 100px;
|
||||||
border-radius: 14px;
|
|
||||||
}
|
span {
|
||||||
.play-button span {
|
border-bottom: 36px solid transparent;
|
||||||
position: absolute;
|
border-left: 60px solid alpha-color($white, .4);
|
||||||
top: 10px;
|
border-top: 36px solid transparent;
|
||||||
left: 20px;
|
height: 0;
|
||||||
width: 0;
|
left: 20px;
|
||||||
height: 0;
|
position: absolute;
|
||||||
border-top: 36px solid transparent;
|
top: 10px;
|
||||||
border-bottom: 36px solid transparent;
|
width: 0;
|
||||||
border-left: 60px solid rgba(255,255,255,.4);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.img-div {
|
.img-div {
|
||||||
-moz-force-broken-image-icon: 1;
|
-moz-force-broken-image-icon: 1;
|
||||||
position: relative;
|
|
||||||
max-width: 450px;
|
|
||||||
max-height: 500px;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
max-height: 500px;
|
||||||
|
max-width: 450px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
&.placeholder {
|
&.placeholder {
|
||||||
height: 500px;
|
height: 500px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,21 +15,22 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.app__content {
|
.app__content {
|
||||||
height: 100%;
|
|
||||||
padding-top: 50px;
|
|
||||||
margin-left: 220px;
|
|
||||||
position: relative;
|
|
||||||
background: #fff;
|
|
||||||
@include display-flex;
|
@include display-flex;
|
||||||
@include flex-direction(column);
|
@include flex-direction(column);
|
||||||
|
background: $white;
|
||||||
|
height: 100%;
|
||||||
|
margin-left: 220px;
|
||||||
|
padding-top: 50px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
.channel__wrap & {
|
.channel__wrap & {
|
||||||
padding-top: 0;
|
padding-top: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#post-create {
|
#post-create {
|
||||||
@include flex(0 0 auto);
|
@include flex(0 0 auto);
|
||||||
background: #fff;
|
background: $white;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
z-index: 3;
|
z-index: 3;
|
||||||
}
|
}
|
||||||
@@ -37,12 +38,12 @@
|
|||||||
#archive-link-home {
|
#archive-link-home {
|
||||||
@include flex(0 0 auto);
|
@include flex(0 0 auto);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 10px 20px;
|
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
padding: 10px 20px;
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
font-size: 11px;
|
|
||||||
@include opacity(.7);
|
@include opacity(.7);
|
||||||
|
font-size: 11px;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@@ -50,36 +51,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-list {
|
|
||||||
.new-messages-hr {
|
|
||||||
margin-top: 5px;
|
|
||||||
margin-bottom: 0px;
|
|
||||||
border: 0;
|
|
||||||
border-top: 1px solid #f80;
|
|
||||||
}
|
|
||||||
|
|
||||||
.new-messages-text {
|
|
||||||
margin-top: 2px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
color: #f80;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.new-messages-hr {
|
|
||||||
margin-top: 5px;
|
|
||||||
margin-bottom: 0px;
|
|
||||||
border: 0;
|
|
||||||
border-top: 1px solid #f80;
|
|
||||||
}
|
|
||||||
|
|
||||||
.new-messages-text {
|
|
||||||
margin-top: 2px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
color: #f80;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-message-text {
|
.delete-message-text {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.footer-pane {
|
.footer-pane {
|
||||||
background: #eee;
|
background: $light-gray;
|
||||||
padding-bottom: 1em;
|
padding-bottom: 1em;
|
||||||
|
|
||||||
.footer-link {
|
.footer-link {
|
||||||
padding: 0 1.5em;
|
padding: 0 1.5em;
|
||||||
|
|
||||||
&.copyright {
|
&.copyright {
|
||||||
color: #999;
|
color: $dark-gray;
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-site-name {
|
.footer-site-name {
|
||||||
padding: 1.5em 0 1em;
|
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
padding: 1.5em 0 1em;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,32 +6,32 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.form__label {
|
.form__label {
|
||||||
text-align: left;
|
|
||||||
padding-right: 3px;
|
|
||||||
font-weight: 600;
|
|
||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
|
font-weight: 600;
|
||||||
|
padding-right: 3px;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
&.light {
|
&.light {
|
||||||
font-weight: normal;
|
color: $dark-gray;
|
||||||
color: #999;
|
|
||||||
font-size: 1.05em;
|
font-size: 1.05em;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
|
font-weight: normal;
|
||||||
padding-top: 2px;
|
padding-top: 2px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.input__help {
|
.input__help {
|
||||||
|
@include opacity(.8);
|
||||||
color: inherit;
|
color: inherit;
|
||||||
margin: 10px 0 0 10px;
|
margin: 10px 0 0 10px;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
@include opacity(.8);
|
|
||||||
|
|
||||||
&.dark {
|
&.dark {
|
||||||
@include opacity(1);
|
@include opacity(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.error {
|
&.error {
|
||||||
color: #a94442;
|
color: darken($red, 20%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,13 +49,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.help-block {
|
.help-block {
|
||||||
|
color: $dark-gray;
|
||||||
font-size: .95em;
|
font-size: .95em;
|
||||||
margin: 10px 0 0;
|
margin: 10px 0 0;
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.disabled-input {
|
|
||||||
background-color: #ddd !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-group {
|
.form-group {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
#channel-header {
|
.channel-header {
|
||||||
@include flex(0 0 56px);
|
@include flex(0 0 56px);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -15,8 +15,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.header-dropdown__icon {
|
.header-dropdown__icon {
|
||||||
font-size: 11px;
|
|
||||||
color: inherit;
|
color: inherit;
|
||||||
|
font-size: 11px;
|
||||||
top: 3px;
|
top: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,12 +31,12 @@
|
|||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
|
|
||||||
&.dropdown {
|
&.dropdown {
|
||||||
|
float: left;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
padding-right: 1em;
|
padding-right: 1em;
|
||||||
float: left;
|
|
||||||
|
|
||||||
.header-dropdown__icon {
|
.header-dropdown__icon {
|
||||||
color: #777;
|
color: $dark-gray;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@@ -49,10 +49,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.description {
|
&.description {
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
max-height: 45px;
|
max-height: 45px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
|
||||||
.markdown-inline-img {
|
.markdown-inline-img {
|
||||||
max-height: 45px;
|
max-height: 45px;
|
||||||
}
|
}
|
||||||
@@ -65,14 +66,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.channel-intro {
|
.channel-intro {
|
||||||
|
border-bottom: 1px solid $light-gray;
|
||||||
margin: 0 auto 35px;
|
margin: 0 auto 35px;
|
||||||
padding: 0 1em 5px;
|
|
||||||
max-width: 1000px;
|
max-width: 1000px;
|
||||||
border-bottom: 1px solid lightgrey;
|
padding: 0 1em 5px;
|
||||||
|
|
||||||
.intro-links {
|
.intro-links {
|
||||||
margin: 0 1.5em 10px 0;
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
margin: 0 1.5em 10px 0;
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
@@ -80,28 +81,30 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.channel-intro-profile {
|
.channel-intro-profile {
|
||||||
margin-top: 5px;
|
|
||||||
margin-left: 63px;
|
margin-left: 63px;
|
||||||
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.channel-intro-img {
|
.channel-intro-img {
|
||||||
float: left;
|
float: left;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
@include border-radius(100px);
|
@include border-radius(100px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.channel-intro__title {
|
.channel-intro__title {
|
||||||
font-weight: 600;
|
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
|
font-weight: 600;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.channel-intro__content {
|
.channel-intro__content {
|
||||||
background: #f7f7f7;
|
|
||||||
padding: 10px 15px;
|
|
||||||
@include border-radius(3px);
|
@include border-radius(3px);
|
||||||
|
background: $bg--gray;
|
||||||
|
padding: 10px 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.channel-intro-text {
|
.channel-intro-text {
|
||||||
margin-top: 35px;
|
margin-top: 35px;
|
||||||
}
|
}
|
||||||
@@ -111,28 +114,28 @@
|
|||||||
.sidebar--left,
|
.sidebar--left,
|
||||||
.sidebar--menu {
|
.sidebar--menu {
|
||||||
.team__header {
|
.team__header {
|
||||||
position: relative;
|
|
||||||
padding: 9px 10px;
|
|
||||||
@include legacy-pie-clearfix;
|
@include legacy-pie-clearfix;
|
||||||
|
padding: 9px 10px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
&:before {
|
&:before {
|
||||||
@include single-transition(all, .05s, linear);
|
@include single-transition(all, .05s, linear);
|
||||||
content: '';
|
|
||||||
background: none;
|
background: none;
|
||||||
top: 0;
|
content: '';
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
&:before {
|
&:before {
|
||||||
background: rgba(black, .1);
|
@include alpha-property(background, $black, .1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.user__name {
|
.user__name {
|
||||||
color: #fff;
|
color: $white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-right {
|
.navbar-right {
|
||||||
@@ -145,95 +148,88 @@
|
|||||||
.navbar-right {
|
.navbar-right {
|
||||||
font-size: .85em;
|
font-size: .85em;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 10px;
|
|
||||||
right: 22px;
|
right: 22px;
|
||||||
|
top: 10px;
|
||||||
z-index: 5;
|
z-index: 5;
|
||||||
|
|
||||||
.dropdown-toggle {
|
.dropdown-toggle {
|
||||||
|
@include opacity(.8);
|
||||||
@include single-transition(all, .1s, linear);
|
@include single-transition(all, .1s, linear);
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
@include opacity(.8);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
li a {
|
a {
|
||||||
|
overflow: hidden;
|
||||||
padding: 3px 20px;
|
padding: 3px 20px;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown__icon {
|
.dropdown__icon {
|
||||||
fill: #fff;
|
fill: $white;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.settings__link a:hover,
|
|
||||||
a:visited,
|
|
||||||
a:link,
|
|
||||||
a:active {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.user__picture {
|
.user__picture {
|
||||||
width: 36px;
|
|
||||||
height: 36px;
|
|
||||||
float: left;
|
|
||||||
@include border-radius(36px);
|
@include border-radius(36px);
|
||||||
|
float: left;
|
||||||
|
height: 36px;
|
||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
|
width: 36px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header__info {
|
.header__info {
|
||||||
color: #fff;
|
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
|
color: $white;
|
||||||
padding-left: 2px;
|
padding-left: 2px;
|
||||||
z-index: 1;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.team__name,
|
.team__name,
|
||||||
.user__name {
|
.user__name {
|
||||||
display: block;
|
display: block;
|
||||||
font-weight: 600;
|
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
max-width: 85%;
|
max-width: 85%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.team__name {
|
.team__name {
|
||||||
|
float: left;
|
||||||
line-height: 22px;
|
line-height: 22px;
|
||||||
margin-top: -2px;
|
margin-top: -2px;
|
||||||
float: left;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.user__name {
|
.user__name {
|
||||||
@include single-transition(all, .1s, linear);
|
@include single-transition(all, .1s, linear);
|
||||||
|
@include alpha-property(color, $white, .8);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 18px;
|
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #eee;
|
line-height: 18px;
|
||||||
color: rgba(#fff, .8);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
> .nav {
|
> .nav {
|
||||||
> li {
|
> li {
|
||||||
> a {
|
> a {
|
||||||
|
background: none;
|
||||||
float: right;
|
float: right;
|
||||||
background: none !important;
|
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
&.dropdown-toggle {
|
.dropdown-toggle {
|
||||||
line-height: 1.8;
|
color: $white;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
color: #fff;
|
line-height: 1.8;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.search__clear {
|
.search__clear {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -250,27 +246,29 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.channel-header {
|
.channel-header {
|
||||||
width: 100%;
|
|
||||||
border-left: none;
|
border-left: none;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 56px;
|
line-height: 56px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
#member_popover {
|
#member_popover {
|
||||||
width: 50px;
|
color: #999999;
|
||||||
color: #999;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
width: 50px;
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
margin-left: 4px;
|
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.alt {
|
&.alt {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
||||||
th {
|
th {
|
||||||
font-weight: normal !important;
|
font-weight: normal !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
td {
|
td {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
@@ -278,37 +276,39 @@
|
|||||||
|
|
||||||
th {
|
th {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
text-align: left !important;
|
|
||||||
border-left: none;
|
border-left: none;
|
||||||
width: 100%;
|
|
||||||
padding-left: 1em;
|
padding-left: 1em;
|
||||||
|
text-align: left !important;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
width: 8.9%;
|
width: 8.9%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
td {
|
td {
|
||||||
padding: 5px 25px 5px !important;
|
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
padding: 5px 25px 5px !important;
|
||||||
text-align: center !important;
|
text-align: center !important;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
text-align: left !important;
|
text-align: left !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.heading {
|
.heading {
|
||||||
margin: 0;
|
color: #555555;
|
||||||
color: #555;
|
display: inline-block;
|
||||||
font-size: 1.3em;
|
font-size: 1.3em;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
margin: 0 4px 0 0;
|
||||||
|
max-width: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
max-width: 100%;
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
margin-right: 4px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.caret {
|
.caret {
|
||||||
@@ -318,13 +318,13 @@
|
|||||||
.more {
|
.more {
|
||||||
color: #81848b;
|
color: #81848b;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: top;
|
|
||||||
text-transform: capitalize;
|
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
text-transform: capitalize;
|
||||||
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
.disabled {
|
.disabled {
|
||||||
color: #999;
|
color: #999999;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -342,11 +342,11 @@
|
|||||||
|
|
||||||
.channel-header__links {
|
.channel-header__links {
|
||||||
font-family: 'Open Sans', sans-serif;
|
font-family: 'Open Sans', sans-serif;
|
||||||
|
font-size: 22px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
width: 24px;
|
|
||||||
line-height: 26px;
|
line-height: 26px;
|
||||||
margin-right: 9px;
|
margin-right: 9px;
|
||||||
font-size: 22px;
|
width: 24px;
|
||||||
|
|
||||||
.channel__wrap.move--left & {
|
.channel__wrap.move--left & {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -355,14 +355,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
> a {
|
> a {
|
||||||
color: inherit;
|
|
||||||
text-decoration: none;
|
|
||||||
@include opacity(.6);
|
@include opacity(.6);
|
||||||
@include single-transition(all, .1s, ease-in);
|
@include single-transition(all, .1s, ease-in);
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@include opacity(1);
|
@include opacity(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,43 +16,77 @@
|
|||||||
#post-list {
|
#post-list {
|
||||||
.markdown-inline-img {
|
.markdown-inline-img {
|
||||||
-moz-force-broken-image-icon: 1;
|
-moz-force-broken-image-icon: 1;
|
||||||
max-height: 500px;
|
|
||||||
height: 500px;
|
height: 500px;
|
||||||
|
max-height: 500px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-body--code {
|
.post-body--code {
|
||||||
|
overflow-x: auto;
|
||||||
|
overflow-y: hidden;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
pre {
|
pre {
|
||||||
margin-bottom: 0;
|
border: 1px solid rgba(221,221,221,0.2);
|
||||||
word-break: normal;
|
border-radius: .25em;
|
||||||
overflow: auto;
|
margin: 0;
|
||||||
word-wrap: normal;
|
padding: 0px;
|
||||||
|
text-align: left;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
border: none;
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
|
||||||
|
td {
|
||||||
|
padding: 0 .5em;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover .post-body--code__language {
|
||||||
|
@include opacity(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-body--code__language {
|
.post-body--code__language {
|
||||||
-webkit-transform: translate3d(0,0,0);
|
@include opacity(0);
|
||||||
position: absolute;
|
@include translate3d(0, 0, 0);
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
color: #fff;
|
|
||||||
background: #21586d;
|
background: #21586d;
|
||||||
padding: 4px 10px 5px 10px;
|
border-radius: 0 .25em;
|
||||||
font-size: 13px;
|
color: $white;
|
||||||
opacity: .7;
|
padding: 4px 10px 5px;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
-webkit-transition: opacity 0.6s;
|
||||||
|
-moz-transition: opacity 0.6s;
|
||||||
|
-o-transition: opacity 0.6s;
|
||||||
|
transition: opacity 0.6s;
|
||||||
z-index: 5;
|
z-index: 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.post-body--code__lineno {
|
||||||
|
border-right: 1px solid #aaa;
|
||||||
|
color: #aaa;
|
||||||
|
margin-right: .5em;
|
||||||
|
text-align: right;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
-o-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
.post__body {
|
.post__body {
|
||||||
hr {
|
hr {
|
||||||
height: 4px;
|
@include opacity(.2);
|
||||||
padding: 0;
|
|
||||||
margin: 15px 0 16px;
|
|
||||||
background-color: #e7e7e7;
|
background-color: #e7e7e7;
|
||||||
border: 0 none;
|
border: 0 none;
|
||||||
@include opacity(.2);
|
height: 4px;
|
||||||
|
margin: 15px 0 16px;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
code {
|
code {
|
||||||
@@ -67,50 +101,53 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.markdown__table {
|
.markdown__table {
|
||||||
background: #fff;
|
background: $white;
|
||||||
margin: 5px 0 10px;
|
margin: 5px 0 10px;
|
||||||
|
|
||||||
th,
|
th,
|
||||||
td {
|
td {
|
||||||
padding: 6px 13px;
|
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
|
padding: 6px 13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
tbody tr {
|
tbody tr {
|
||||||
background: #fff;
|
background: $white;
|
||||||
|
|
||||||
&:nth-child(2n) {
|
&:nth-child(2n) {
|
||||||
background-color: #f8f8f8;
|
background-color: #f8f8f8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
blockquote {
|
blockquote {
|
||||||
border: none;
|
border: none;
|
||||||
position: relative;
|
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
padding: 10px 10px 10px 38px;
|
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
|
padding: 10px 10px 10px 38px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
&:before {
|
&:before {
|
||||||
font-family: FontAwesome;
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
display: inline-block;
|
|
||||||
text-decoration: inherit;
|
|
||||||
content: '\f10d';
|
|
||||||
left: 8px;
|
|
||||||
top: 5px;
|
|
||||||
position: absolute;
|
|
||||||
font-size: 20px;
|
|
||||||
@include opacity(.6);
|
@include opacity(.6);
|
||||||
|
content: '\f10d';
|
||||||
|
display: inline-block;
|
||||||
|
font-family: FontAwesome;
|
||||||
|
font-size: 20px;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
left: 8px;
|
||||||
|
position: absolute;
|
||||||
|
text-decoration: inherit;
|
||||||
|
top: 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pre {
|
pre {
|
||||||
border: none;
|
color: inherit;
|
||||||
margin: 5px 0;
|
margin: 5px 0;
|
||||||
color: inherit;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
code {
|
code {
|
||||||
background: #fff;
|
background: $white;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,14 @@
|
|||||||
|
|
||||||
#navbar {
|
#navbar {
|
||||||
input {
|
input {
|
||||||
margin: 0px 5px 0px 2px;
|
margin: 0 5px 0 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-default {
|
.navbar-default {
|
||||||
position: absolute;
|
background: $primary-color;
|
||||||
border: none;
|
border: none;
|
||||||
min-height: 45px;
|
min-height: 45px;
|
||||||
background: $color--primary;
|
position: absolute;
|
||||||
|
|
||||||
.navbar-nav {
|
.navbar-nav {
|
||||||
> li {
|
> li {
|
||||||
@@ -30,19 +30,19 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.navbar-toggle {
|
.navbar-toggle {
|
||||||
width: 43px;
|
|
||||||
float: left;
|
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
fill: $white;
|
||||||
|
float: left;
|
||||||
|
height: 44px;
|
||||||
|
line-height: 48px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
line-height: 48px;
|
width: 43px;
|
||||||
height: 44px;
|
|
||||||
z-index: 5;
|
z-index: 5;
|
||||||
fill: #fff;
|
|
||||||
|
|
||||||
.icon-bar {
|
.icon-bar {
|
||||||
background: #fff;
|
background: $white;
|
||||||
width: 21px;
|
width: 21px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.icon--white {
|
.icon--white {
|
||||||
color: #fff;
|
color: $white;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
@@ -62,16 +62,16 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.navbar-brand {
|
.navbar-brand {
|
||||||
padding: 0 .5em;
|
|
||||||
height: 45px;
|
|
||||||
line-height: 45px;
|
|
||||||
float: none;
|
float: none;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
|
height: 45px;
|
||||||
|
line-height: 45px;
|
||||||
|
padding: 0 .5em;
|
||||||
|
|
||||||
.heading {
|
.heading {
|
||||||
margin-right: 3px;
|
color: $white;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: #fff;
|
margin-right: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-dropdown__icon {
|
.header-dropdown__icon {
|
||||||
@@ -79,36 +79,36 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-toggle {
|
.dropdown-toggle {
|
||||||
color: #fff;
|
color: $white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.description {
|
.description {
|
||||||
|
color: $white;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-right: .5em;
|
margin-right: .5em;
|
||||||
color: #fff;
|
|
||||||
|
|
||||||
&.info-popover {
|
&.info-popover {
|
||||||
width: 19px;
|
|
||||||
height: 19px;
|
|
||||||
background: url('../images/info__icon.png');
|
|
||||||
@include background-size(100% 100%);
|
@include background-size(100% 100%);
|
||||||
vertical-align: middle;
|
background: url('../images/info__icon.png');
|
||||||
top: -1px;
|
|
||||||
position: relative;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
height: 19px;
|
||||||
|
position: relative;
|
||||||
|
top: -1px;
|
||||||
|
vertical-align: middle;
|
||||||
|
width: 19px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-channel {
|
.sidebar-channel {
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
white-space: nowrap;
|
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,11 +117,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.more-channel-table {
|
.more-channel-table {
|
||||||
width: 100%;
|
|
||||||
border: 1px solid #dbdbdc;
|
border: 1px solid #dbdbdc;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
td {
|
td {
|
||||||
padding: 7px;
|
padding: 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
width: 110px;
|
width: 110px;
|
||||||
}
|
}
|
||||||
@@ -129,9 +131,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.badge-notify {
|
.badge-notify {
|
||||||
background: red;
|
background: $red;
|
||||||
position: absolute;
|
|
||||||
left: 4px;
|
left: 4px;
|
||||||
|
position: absolute;
|
||||||
top: 3px;
|
top: 3px;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,8 +27,8 @@
|
|||||||
|
|
||||||
.post {
|
.post {
|
||||||
&.post--root {
|
&.post--root {
|
||||||
padding-bottom: 1.2em;
|
|
||||||
border-bottom: 1px solid #ddd;
|
border-bottom: 1px solid #ddd;
|
||||||
|
padding-bottom: 1.2em;
|
||||||
|
|
||||||
.post__body {
|
.post__body {
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
@@ -37,8 +37,8 @@
|
|||||||
|
|
||||||
.post__header {
|
.post__header {
|
||||||
.col__reply {
|
.col__reply {
|
||||||
top: 0;
|
|
||||||
text-align: right;
|
text-align: right;
|
||||||
|
top: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,13 +48,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
hr {
|
hr {
|
||||||
margin-bottom: 0;
|
|
||||||
border: none;
|
border: none;
|
||||||
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-create__container {
|
.post-create__container {
|
||||||
width: 100%;
|
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
.textarea-wrapper {
|
.textarea-wrapper {
|
||||||
min-height: 100px;
|
min-height: 100px;
|
||||||
@@ -70,48 +70,46 @@
|
|||||||
|
|
||||||
.msg-typing {
|
.msg-typing {
|
||||||
@include opacity(.7);
|
@include opacity(.7);
|
||||||
float: left;
|
|
||||||
margin-top: 3px;
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 20px;
|
|
||||||
min-width: 1px;
|
|
||||||
display: block;
|
display: block;
|
||||||
|
float: left;
|
||||||
|
font-size: 13px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
margin-top: 3px;
|
||||||
max-width: 230px;
|
max-width: 230px;
|
||||||
|
min-width: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-create-footer {
|
.post-create-footer {
|
||||||
width: 100%;
|
|
||||||
padding: 5px 0 10px;
|
padding: 5px 0 10px;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-right-comments-upload-in-progress {
|
.post-right-comments-upload-in-progress {
|
||||||
padding: 6px 0;
|
|
||||||
color: #a8adb7;
|
color: #a8adb7;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
|
padding: 6px 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-right-header {
|
.post-right-header {
|
||||||
font-size: 1em;
|
border-bottom: $border-gray;
|
||||||
text-transform: uppercase;
|
|
||||||
color: #999;
|
color: #999;
|
||||||
|
font-size: 1em;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #888;
|
|
||||||
height: 39px;
|
height: 39px;
|
||||||
padding: 10px 10px 0 15px;
|
padding: 10px 10px 0 15px;
|
||||||
border-bottom: $border-gray;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-right-root-container {
|
.post-right-root-container {
|
||||||
|
border-bottom: $border-gray;
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
border-bottom: $border-gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-right-root-container {
|
|
||||||
ul {
|
ul {
|
||||||
padding-left: 0;
|
|
||||||
margin-bottom: 2px;
|
margin-bottom: 2px;
|
||||||
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,19 +129,19 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-right-create-comment-container {
|
.post-right-create-comment-container {
|
||||||
padding: 5px;
|
|
||||||
margin-bottom: 18px;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
|
margin-bottom: 18px;
|
||||||
|
padding: 5px;
|
||||||
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-right__scroll {
|
.post-right__scroll {
|
||||||
position: relative;
|
|
||||||
overflow: auto;
|
|
||||||
-webkit-overflow-scrolling: touch;
|
|
||||||
@include flex(1 1 auto);
|
@include flex(1 1 auto);
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
overflow: auto;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
.file-preview__container {
|
.file-preview__container {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
|
|||||||
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
@@ -1,86 +1,97 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.sidebar--left {
|
.sidebar--left {
|
||||||
|
background: #fafafa;
|
||||||
|
border-right: $border-gray;
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 220px;
|
width: 220px;
|
||||||
left: 0;
|
|
||||||
height: 100%;
|
|
||||||
border-right: $border-gray;
|
|
||||||
background: #fafafa;
|
|
||||||
z-index: 5;
|
z-index: 5;
|
||||||
|
|
||||||
&.sidebar--padded {
|
&.sidebar--padded {
|
||||||
padding-top: 44px;
|
padding-top: 44px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
max-height: 400px;
|
max-height: 400px;
|
||||||
|
max-width: 200px;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
max-width: 200px;
|
|
||||||
width: 200px;
|
width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search__form {
|
.search__form {
|
||||||
|
display: none;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 1em 1em 0;
|
padding: 1em 1em 0;
|
||||||
display: none;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge {
|
.badge {
|
||||||
background-color: $color--primary;
|
background-color: $primary-color;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
top: 5px;
|
top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status {
|
.status {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 6px;
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 1px;
|
top: 1px;
|
||||||
margin-right: 6px;
|
|
||||||
width: 12px;
|
width: 12px;
|
||||||
display: inline-block;
|
|
||||||
svg {
|
svg {
|
||||||
max-height: 14px;
|
max-height: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
i,
|
i,
|
||||||
path,
|
path,
|
||||||
ellipse {
|
ellipse {
|
||||||
@include opacity(.5);
|
@include opacity(.5);
|
||||||
|
|
||||||
&.online--icon,
|
&.online--icon,
|
||||||
&.away--icon {
|
&.away--icon {
|
||||||
@include opacity(1);
|
@include opacity(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.fa-lock {
|
.fa-lock {
|
||||||
margin-left: 1px;
|
margin-left: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fa-globe {
|
.fa-globe {
|
||||||
top: -1px;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
|
top: -1px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-pills__container {
|
.nav-pills__container {
|
||||||
height: calc(100% - 80px);
|
|
||||||
position: relative;
|
|
||||||
overflow: auto;
|
|
||||||
-webkit-overflow-scrolling: touch;
|
-webkit-overflow-scrolling: touch;
|
||||||
|
height: calc(100% - 80px);
|
||||||
|
overflow: auto;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-pills__unread-indicator {
|
.nav-pills__unread-indicator {
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
width: 72%;
|
|
||||||
color: #fff;
|
|
||||||
background: #2389d7;
|
|
||||||
@include border-radius(50px);
|
@include border-radius(50px);
|
||||||
|
background: #2389d7;
|
||||||
|
color: #ffffff;
|
||||||
|
font-size: 13.5px;
|
||||||
|
left: 0;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
padding: 3px 0 4px;
|
padding: 3px 0 4px;
|
||||||
font-size: 13.5px;
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
width: 72%;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-pills__unread-indicator-top {
|
.nav-pills__unread-indicator-top {
|
||||||
top: 66px;
|
top: 66px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-pills__unread-indicator-bottom {
|
.nav-pills__unread-indicator-bottom {
|
||||||
bottom: 20px;
|
bottom: 20px;
|
||||||
}
|
}
|
||||||
@@ -91,71 +102,83 @@
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
li {
|
li {
|
||||||
> h4 {
|
> h4 {
|
||||||
|
color: #aaaaaa;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
text-transform: uppercase;
|
|
||||||
margin: 1.1em 0 .5em;
|
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #aaa;
|
|
||||||
letter-spacing: -.3px;
|
letter-spacing: -.3px;
|
||||||
|
margin: 1.1em 0 .5em;
|
||||||
padding: 0 10px 0 15px;
|
padding: 0 10px 0 15px;
|
||||||
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
> a {
|
> a {
|
||||||
padding: 3px 10px 3px 25px;
|
|
||||||
line-height: 1.5;
|
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
white-space: nowrap;
|
line-height: 1.5;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
padding: 3px 10px 3px 25px;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
&.has-badge {
|
&.has-badge {
|
||||||
padding-right: 30px;
|
padding-right: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.has-close {
|
&.has-close {
|
||||||
padding-right: 30px;
|
padding-right: 30px;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
.btn-close {
|
.btn-close {
|
||||||
display: block;
|
|
||||||
@include opacity(.8);
|
@include opacity(.8);
|
||||||
|
display: block;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-close {
|
.btn-close {
|
||||||
|
@include opacity(0);
|
||||||
|
display: none;
|
||||||
font-family: 'Open Sans', sans-serif;
|
font-family: 'Open Sans', sans-serif;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 600;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 15px;
|
right: 15px;
|
||||||
top: -1px;
|
top: -1px;
|
||||||
font-size: 20px;
|
|
||||||
font-weight: 600;
|
|
||||||
@include opacity(0);
|
|
||||||
display: none;
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@include opacity(1);
|
@include opacity(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.nav-more {
|
&.nav-more {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.unread-title {
|
&.unread-title {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
a {
|
a {
|
||||||
&:before {
|
&:before {
|
||||||
|
background: $black;
|
||||||
content: '';
|
content: '';
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
|
||||||
width: 5px;
|
width: 5px;
|
||||||
height: 100%;
|
|
||||||
background: #000;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a,
|
a,
|
||||||
a:hover,
|
a:hover,
|
||||||
a:focus {
|
a:focus {
|
||||||
background-color: rgba(black, .1);
|
@include alpha-property(background-color, $black, .1);
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -163,35 +186,37 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-title {
|
.modal-title {
|
||||||
line-height: 2em;
|
line-height: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.add-channel-btn {
|
.add-channel-btn {
|
||||||
|
color: #aaaaaa;
|
||||||
float: right;
|
float: right;
|
||||||
outline: none;
|
font-size: 22px;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 18px;
|
||||||
margin: -2px 0 0 0;
|
margin: -2px 0 0 0;
|
||||||
color: #aaa;
|
outline: none;
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: 22px;
|
|
||||||
line-height: 18px;
|
|
||||||
font-weight: 700;
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: #666;
|
color: #666666;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.channel-loading-gif {
|
.channel-loading-gif {
|
||||||
height: 15px;
|
height: 15px;
|
||||||
width: 15px;
|
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
|
width: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.join-channel-loading-gif {
|
.join-channel-loading-gif {
|
||||||
margin-top: 5px;
|
|
||||||
margin-left: 10px;
|
|
||||||
height: 25px;
|
height: 25px;
|
||||||
|
margin-left: 10px;
|
||||||
|
margin-top: 5px;
|
||||||
width: 25px;
|
width: 25px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,69 +1,79 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.sidebar--menu {
|
.sidebar--menu {
|
||||||
position: absolute;
|
|
||||||
width: 220px;
|
|
||||||
right: 0;
|
|
||||||
height: 100%;
|
|
||||||
border-right: $border-gray;
|
|
||||||
padding: 0 0 2em 0;
|
|
||||||
background: #fafafa;
|
background: #fafafa;
|
||||||
|
border-right: $border-gray;
|
||||||
display: none;
|
display: none;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 0 2em;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
width: 220px;
|
||||||
|
|
||||||
.nav-pills__container {
|
.nav-pills__container {
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.team__header {
|
.team__header {
|
||||||
|
@include legacy-pie-clearfix;
|
||||||
display: none;
|
display: none;
|
||||||
padding: 0 15px;
|
padding: 0 15px;
|
||||||
@include legacy-pie-clearfix;
|
|
||||||
a {
|
a {
|
||||||
color: #fff;
|
color: $white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-right {
|
.navbar-right {
|
||||||
font-size: .85em;
|
font-size: .85em;
|
||||||
margin: 16px -5px 0;
|
margin: 16px -5px 0;
|
||||||
|
|
||||||
.dropdown-toggle {
|
.dropdown-toggle {
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
li a {
|
li a {
|
||||||
padding: 3 20px;
|
|
||||||
color: #555;
|
color: #555;
|
||||||
|
padding: 3 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown__icon {
|
.dropdown__icon {
|
||||||
width: 4px;
|
|
||||||
height: 16px;
|
|
||||||
@include background-size(100% 100%);
|
@include background-size(100% 100%);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
height: 16px;
|
||||||
|
width: 4px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.team__name {
|
.team__name {
|
||||||
float: left;
|
float: left;
|
||||||
line-height: 50px;
|
|
||||||
font-weight: 600;
|
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 50px;
|
||||||
max-width: 80%;
|
max-width: 80%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav {
|
.nav {
|
||||||
> li {
|
> li {
|
||||||
> a {
|
> a {
|
||||||
font-size: 15px;
|
|
||||||
background: none !important;
|
background: none !important;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
|
font-size: 15px;
|
||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
padding: 0 15px;
|
padding: 0 15px;
|
||||||
|
|
||||||
.fa,
|
.fa,
|
||||||
.glyphicon {
|
.glyphicon {
|
||||||
width: 25px;
|
|
||||||
text-align: center;
|
|
||||||
left: -5px;
|
left: -5px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
width: 25px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.sidebar--right {
|
.sidebar--right {
|
||||||
position: fixed;
|
|
||||||
width: 400px;
|
|
||||||
height: 100%;
|
|
||||||
right: 0px;
|
|
||||||
padding: 0;
|
|
||||||
background: #fff;
|
|
||||||
@include translateX(400px);
|
@include translateX(400px);
|
||||||
|
background: $white;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0;
|
||||||
|
position: fixed;
|
||||||
|
right: 0;
|
||||||
|
width: 400px;
|
||||||
|
|
||||||
.post-body {
|
.post-body {
|
||||||
img {
|
img {
|
||||||
@@ -26,39 +26,39 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar--right__content {
|
.sidebar--right__content {
|
||||||
height: 100%;
|
|
||||||
@include display-flex;
|
@include display-flex;
|
||||||
@include flex-direction(column);
|
@include flex-direction(column);
|
||||||
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar--right__back {
|
.sidebar--right__back {
|
||||||
color: inherit;
|
|
||||||
@include opacity(.8);
|
@include opacity(.8);
|
||||||
width: 30px;
|
color: inherit;
|
||||||
text-align: center;
|
|
||||||
margin: 0 0 0 -14px;
|
|
||||||
font-size: 13px;
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
font-size: 13px;
|
||||||
|
margin: 0 0 0 -14px;
|
||||||
|
text-align: center;
|
||||||
|
width: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-right__body {
|
.sidebar-right__body {
|
||||||
|
@include border-radius(2px 0 0 0);
|
||||||
|
@include display-flex;
|
||||||
@include flex(1 1 auto);
|
@include flex(1 1 auto);
|
||||||
|
@include flex-direction(column);
|
||||||
border-left: $border-gray;
|
border-left: $border-gray;
|
||||||
border-top: $border-gray;
|
border-top: $border-gray;
|
||||||
@include display-flex;
|
|
||||||
@include flex-direction(column);
|
|
||||||
height: calc(100% - 56px);
|
height: calc(100% - 56px);
|
||||||
@include border-radius(2px 0 0 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar__overlay {
|
.sidebar__overlay {
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background-color: yellow;
|
|
||||||
@include opacity(.1);
|
@include opacity(.1);
|
||||||
position: absolute;
|
background-color: $yellow;
|
||||||
z-index: 5;
|
height: 100%;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.input-group {
|
.input-group {
|
||||||
@@ -66,17 +66,17 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar--right__close {
|
.sidebar--right__close {
|
||||||
margin: 11px 0 0 0;
|
|
||||||
width: 22px;
|
|
||||||
height: 22px;
|
|
||||||
opacity: .5;
|
|
||||||
font-size: 22px;
|
|
||||||
line-height: 0;
|
|
||||||
background: none;
|
|
||||||
float: right;
|
|
||||||
outline: none;
|
|
||||||
border: none;
|
|
||||||
@include single-transition(all, .2s, ease-in);
|
@include single-transition(all, .2s, ease-in);
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
float: right;
|
||||||
|
font-size: 22px;
|
||||||
|
height: 22px;
|
||||||
|
line-height: 0;
|
||||||
|
margin: 11px 0 0;
|
||||||
|
opacity: .5;
|
||||||
|
outline: none;
|
||||||
|
width: 22px;
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:active {
|
&:active {
|
||||||
@@ -90,14 +90,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar--right__header {
|
.sidebar--right__header {
|
||||||
font-size: 1em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
color: inherit;
|
|
||||||
height: 44px;
|
|
||||||
padding: 0 1em;
|
|
||||||
line-height: 44px;
|
|
||||||
@include flex(0 0 44px);
|
@include flex(0 0 44px);
|
||||||
border-bottom: $border-gray;
|
border-bottom: $border-gray;
|
||||||
|
color: inherit;
|
||||||
|
font-size: 1em;
|
||||||
|
height: 44px;
|
||||||
|
line-height: 44px;
|
||||||
|
padding: 0 1em;
|
||||||
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar--right__subheader {
|
.sidebar--right__subheader {
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.webhooks__container {
|
.webhooks__container {
|
||||||
background: rgba(black, .1);
|
|
||||||
border: 1px solid;
|
|
||||||
@include border-radius(3px);
|
@include border-radius(3px);
|
||||||
padding: 0 13px 15px;
|
@include alpha-property(background, $black, .1);
|
||||||
|
border: 1px solid;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
padding: 0 13px 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.webhook__item {
|
.webhook__item {
|
||||||
@@ -19,16 +19,16 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.webhook__remove {
|
.webhook__remove {
|
||||||
position: absolute;
|
color: #e05f5d;
|
||||||
right: -7px;
|
|
||||||
top: 8px;
|
|
||||||
width: 30px;
|
|
||||||
height: 30px;
|
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
height: 30px;
|
||||||
|
position: absolute;
|
||||||
|
right: -7px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: #e05f5d;
|
top: 8px;
|
||||||
|
width: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.webhook__url {
|
.webhook__url {
|
||||||
|
|||||||
@@ -32,21 +32,23 @@
|
|||||||
.tip-overlay {
|
.tip-overlay {
|
||||||
&.tip-overlay--chat {
|
&.tip-overlay--chat {
|
||||||
margin: -10px 0 0 -10px;
|
margin: -10px 0 0 -10px;
|
||||||
|
|
||||||
.arrow {
|
.arrow {
|
||||||
right: 15px;
|
|
||||||
left: auto;
|
left: auto;
|
||||||
|
right: 15px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.inner-wrap {
|
.inner-wrap {
|
||||||
&.move--left {
|
&.move--left {
|
||||||
.file-overlay {
|
.file-overlay {
|
||||||
font-size: em(18px);
|
font-size: em(18px);
|
||||||
|
|
||||||
.overlay__circle {
|
.overlay__circle {
|
||||||
width: 300px;
|
|
||||||
height: 300px;
|
height: 300px;
|
||||||
margin: -150px 0 0 -150px;
|
margin: -150px 0 0 -150px;
|
||||||
|
width: 300px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.overlay__files {
|
.overlay__files {
|
||||||
@@ -62,4 +64,4 @@
|
|||||||
.modal-lg {
|
.modal-lg {
|
||||||
width: 700px;
|
width: 700px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -519,7 +519,7 @@
|
|||||||
.search-bar__container {
|
.search-bar__container {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@include flex(0 0 44px);
|
@include flex(0 0 44px);
|
||||||
background: $color--primary;
|
background: $primary-color;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
|
||||||
&.focused {
|
&.focused {
|
||||||
@@ -756,9 +756,11 @@
|
|||||||
.app__content {
|
.app__content {
|
||||||
padding-top: 45px;
|
padding-top: 45px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
||||||
.channel__wrap & {
|
.channel__wrap & {
|
||||||
padding-top: 45px;
|
padding-top: 45px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel-header {
|
#channel-header {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -775,11 +777,6 @@
|
|||||||
.post-comments {
|
.post-comments {
|
||||||
padding: 9px 21px 10px 10px !important;
|
padding: 9px 21px 10px 10px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-image__column .post-image .file-playback__controls.stop,
|
|
||||||
.image-wrapper > a .file-playback__controls.stop {
|
|
||||||
@include opacity(1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 640px) {
|
@media screen and (max-width: 640px) {
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
@media screen and (max-width: 960px) {
|
@media screen and (max-width: 960px) {
|
||||||
.sidebar--right {
|
.sidebar--right {
|
||||||
z-index: 5;
|
|
||||||
@include translateX(100%);
|
|
||||||
@include single-transition(all, .5s, ease);
|
@include single-transition(all, .5s, ease);
|
||||||
|
@include translateX(100%);
|
||||||
|
z-index: 5;
|
||||||
|
|
||||||
&.move--left {
|
&.move--left {
|
||||||
@include translateX(0);
|
@include translateX(0);
|
||||||
@@ -32,4 +32,4 @@
|
|||||||
.second-bar {
|
.second-bar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
.access-history__table {
|
.access-history__table {
|
||||||
display: table;
|
display: table;
|
||||||
width: 100%;
|
|
||||||
padding-top: 15px;
|
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
|
padding-top: 15px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -16,8 +16,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.access__date {
|
.access__date {
|
||||||
font-weight: 600;
|
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
|
font-weight: 600;
|
||||||
width: 190px;
|
width: 190px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,36 +1,27 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
@keyframes highlight {
|
|
||||||
from {
|
|
||||||
background: rgba(yellow, .5);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
background: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.animation--highlight {
|
.animation--highlight {
|
||||||
&:before {
|
&:before {
|
||||||
content: '';
|
|
||||||
animation: highlight 1.5s ease;
|
animation: highlight 1.5s ease;
|
||||||
|
content: '';
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.activity-log__table {
|
.activity-log__table {
|
||||||
|
border-top: 1px solid $light-gray;
|
||||||
display: table;
|
display: table;
|
||||||
width: 100%;
|
|
||||||
line-height: 1.8;
|
line-height: 1.8;
|
||||||
border-top: 1px solid #ddd;
|
|
||||||
padding: 15px 0;
|
padding: 15px 0;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
padding-top: 0;
|
|
||||||
border: none;
|
border: none;
|
||||||
|
padding-top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
@@ -49,6 +40,7 @@
|
|||||||
.report__platform {
|
.report__platform {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,26 +15,25 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-weight: 600;
|
|
||||||
border-bottom: 1px solid #ddd;
|
border-bottom: 1px solid #ddd;
|
||||||
padding-bottom: .5em;
|
font-weight: 600;
|
||||||
margin: 1em 0;
|
margin: 1em 0;
|
||||||
|
padding-bottom: .5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table {
|
.table {
|
||||||
background: #fff;
|
background: $white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-control {
|
.form-control {
|
||||||
background-color: #fff;
|
background-color: $white;
|
||||||
border: 1px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
color: #555;
|
color: #555;
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
|
@include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6));
|
||||||
border-color: #66afe9;
|
border-color: #66afe9;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
|
|
||||||
box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,7 +41,7 @@
|
|||||||
color: #333;
|
color: #333;
|
||||||
|
|
||||||
&.btn-primary {
|
&.btn-primary {
|
||||||
background: #2389d7;
|
background: $primary-color;
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus,
|
&:focus,
|
||||||
@@ -53,7 +52,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
background: #fff;
|
background: $white;
|
||||||
border: 1px solid rgba(0,0,0,.15);
|
border: 1px solid rgba(0,0,0,.15);
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
@@ -86,38 +85,38 @@
|
|||||||
|
|
||||||
> h4 {
|
> h4 {
|
||||||
background: #333;
|
background: #333;
|
||||||
padding: 10px 10px;
|
|
||||||
margin: 1px 0 0;
|
margin: 1px 0 0;
|
||||||
|
padding: 10px;
|
||||||
|
|
||||||
.menu-icon--right {
|
.menu-icon--right {
|
||||||
top: 6px;
|
|
||||||
right: 12px;
|
right: 12px;
|
||||||
|
top: 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu-icon--right {
|
.menu-icon--right {
|
||||||
position: absolute;
|
|
||||||
right: 10px;
|
|
||||||
top: 3px;
|
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
height: 20px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
|
position: absolute;
|
||||||
|
right: 10px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
top: 3px;
|
||||||
|
width: 20px;
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
|
color: $white;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
right: -2px;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
color: #fff;
|
right: -2px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.nav__sub-menu {
|
&.nav__sub-menu {
|
||||||
|
@include font-smoothing(initial);
|
||||||
background: #111;
|
background: #111;
|
||||||
-webkit-font-smoothing: auto;
|
|
||||||
|
|
||||||
&.padded {
|
&.padded {
|
||||||
padding: 5px 0;
|
padding: 5px 0;
|
||||||
@@ -125,30 +124,31 @@
|
|||||||
|
|
||||||
li {
|
li {
|
||||||
> a {
|
> a {
|
||||||
font-size: 13px;
|
|
||||||
padding: 5px 35px 5px 15px;
|
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: #bbb;
|
color: #bbb;
|
||||||
|
font-size: 13px;
|
||||||
|
padding: 5px 35px 5px 15px;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: lighten($color--primary, 10);
|
color: lighten($primary-color, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
color: #fff;
|
color: $white;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-more {
|
.nav-more {
|
||||||
font-size: 13px;
|
|
||||||
padding: 5px 15px;
|
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: #bbb;
|
color: #bbb;
|
||||||
display: block;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
font-size: 13px;
|
||||||
|
padding: 5px 15px;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: lighten($color--primary, 10);
|
color: lighten($primary-color, 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -166,13 +166,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.log__panel {
|
.log__panel {
|
||||||
overflow: scroll;
|
|
||||||
width: 100%;
|
|
||||||
height: 800px;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
margin-top: 10px;
|
|
||||||
padding: 5px;
|
|
||||||
background-color: white;
|
background-color: white;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
height: 800px;
|
||||||
|
margin-top: 10px;
|
||||||
|
overflow: scroll;
|
||||||
|
padding: 5px;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.compliance__panel {
|
.compliance__panel {
|
||||||
@@ -199,10 +199,10 @@
|
|||||||
color: #333;
|
color: #333;
|
||||||
|
|
||||||
&.admin {
|
&.admin {
|
||||||
overflow: auto;
|
|
||||||
background-color: #f1f1f1;
|
background-color: #f1f1f1;
|
||||||
padding: 0 20px 20px;
|
|
||||||
min-height: 600px;
|
min-height: 600px;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 0 20px 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wrapper--fixed {
|
.wrapper--fixed {
|
||||||
@@ -213,9 +213,9 @@
|
|||||||
margin-top: 40px;
|
margin-top: 40px;
|
||||||
|
|
||||||
.control-label {
|
.control-label {
|
||||||
text-align: left;
|
|
||||||
padding-right: 0;
|
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
padding-right: 0;
|
||||||
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-group {
|
.form-group {
|
||||||
@@ -223,22 +223,25 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.file__upload {
|
.file__upload {
|
||||||
position: relative;
|
|
||||||
margin: 0 10px 10px 0;
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
margin: 0 10px 10px 0;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
input {
|
input {
|
||||||
position: absolute;
|
|
||||||
@include opacity(0);
|
@include opacity(0);
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
z-index: 5;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.help-text {
|
.help-text {
|
||||||
|
color: #777;
|
||||||
|
margin: 10px 0 0 15px;
|
||||||
|
|
||||||
&.no-margin {
|
&.no-margin {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
@@ -248,9 +251,6 @@
|
|||||||
padding-left: 23px;
|
padding-left: 23px;
|
||||||
}
|
}
|
||||||
|
|
||||||
margin: 10px 0 0 15px;
|
|
||||||
color: #777;
|
|
||||||
|
|
||||||
.help-link {
|
.help-link {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
@@ -262,10 +262,10 @@
|
|||||||
|
|
||||||
.alert {
|
.alert {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 5px 7px;
|
|
||||||
margin: 1em 0 0;
|
margin: 1em 0 0;
|
||||||
top: 1px;
|
padding: 5px 7px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
top: 1px;
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
@@ -274,11 +274,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.banner {
|
.banner {
|
||||||
background: #fff;
|
background: $white;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
padding: .7em 1.5em;
|
|
||||||
font-size: .95em;
|
font-size: .95em;
|
||||||
margin: 2em 0;
|
margin: 2em 0;
|
||||||
|
padding: .7em 1.5em;
|
||||||
|
|
||||||
.banner__heading {
|
.banner__heading {
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
@@ -295,19 +295,19 @@
|
|||||||
|
|
||||||
.popover {
|
.popover {
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
width: 100%;
|
|
||||||
font-size: .95em;
|
font-size: .95em;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.panel {
|
.panel {
|
||||||
border: none;
|
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.panel-default {
|
.panel-default {
|
||||||
> .panel-heading {
|
> .panel-heading {
|
||||||
padding: 10px 0;
|
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
padding: 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.panel-body {
|
.panel-body {
|
||||||
@@ -324,9 +324,9 @@
|
|||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
text-decoration: none;
|
|
||||||
display: block;
|
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
|
display: block;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
&.collapsed {
|
&.collapsed {
|
||||||
.fa-minus {
|
.fa-minus {
|
||||||
@@ -339,10 +339,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
font-size: 18px;
|
|
||||||
float: right;
|
|
||||||
margin-top: 8px;
|
|
||||||
color: #aaa;
|
color: #aaa;
|
||||||
|
float: right;
|
||||||
|
font-size: 18px;
|
||||||
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fa-plus {
|
.fa-plus {
|
||||||
|
|||||||
@@ -5,15 +5,15 @@
|
|||||||
padding-bottom: 20px;
|
padding-bottom: 20px;
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
width: 1170px;
|
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
padding: 0 15px;
|
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
|
padding: 0 15px;
|
||||||
|
width: 1170px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1.markdown__heading {
|
h1.markdown__heading {
|
||||||
border-bottom: 1px solid #ddd;
|
border-bottom: 1px solid #ddd;
|
||||||
padding-bottom: 1rem;
|
|
||||||
margin: 1em 0 1em;
|
margin: 1em 0 1em;
|
||||||
|
padding-bottom: 1rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,23 +8,23 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.error__container {
|
.error__container {
|
||||||
max-width: 800px;
|
color: #555;
|
||||||
margin: 0 auto;
|
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
vertical-align: top;
|
margin: 0 auto;
|
||||||
|
max-width: 800px;
|
||||||
padding: 5em 0;
|
padding: 5em 0;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
color: #555;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
.error__icon {
|
.error__icon {
|
||||||
font-size: 4em;
|
|
||||||
color: #ccc;
|
color: #ccc;
|
||||||
|
font-size: 4em;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
font-weight: 600;
|
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
|
font-weight: 600;
|
||||||
margin: .8em 0 .5em;
|
margin: .8em 0 .5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,32 +4,32 @@
|
|||||||
|
|
||||||
.loading-screen {
|
.loading-screen {
|
||||||
display: table;
|
display: table;
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 60px;
|
padding: 60px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
.loading__content {
|
.loading__content {
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
vertical-align: middle;
|
|
||||||
font-size: 0;
|
font-size: 0;
|
||||||
|
vertical-align: middle;
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
|
display: inline-block;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
margin: 0 .2em 0;
|
margin: 0 .2em;
|
||||||
display: inline-block;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.round {
|
.round {
|
||||||
background-color: #444;
|
@include animation(move .75s infinite linear);
|
||||||
width: 4px;
|
@include border-radius(10px);
|
||||||
height: 4px;
|
background-color: #444444;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
height: 4px;
|
||||||
margin: 0 2px;
|
margin: 0 2px;
|
||||||
opacity: .1;
|
opacity: .1;
|
||||||
@include border-radius(10px);
|
width: 4px;
|
||||||
@include animation(move .75s infinite linear);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@for $i from 1 through 3 {
|
@for $i from 1 through 3 {
|
||||||
@@ -42,6 +42,7 @@
|
|||||||
from {
|
from {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
to {
|
to {
|
||||||
opacity: .1;
|
opacity: .1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,41 +2,47 @@
|
|||||||
|
|
||||||
.user-settings {
|
.user-settings {
|
||||||
min-height: 300px;
|
min-height: 300px;
|
||||||
|
|
||||||
.table-responsive {
|
.table-responsive {
|
||||||
max-width: 560px;
|
|
||||||
max-height: 300px;
|
max-height: 300px;
|
||||||
|
max-width: 560px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal {
|
.modal {
|
||||||
.settings-modal {
|
.settings-modal {
|
||||||
width: 800px;
|
width: 800px;
|
||||||
|
|
||||||
.modal-back {
|
.modal-back {
|
||||||
width: 50px;
|
|
||||||
height: 40px;
|
|
||||||
top: 12px;
|
|
||||||
font-size: 27px;
|
font-size: 27px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
|
height: 40px;
|
||||||
|
left: 0;
|
||||||
line-height: 32px;
|
line-height: 32px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
top: 12px;
|
||||||
|
width: 50px;
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
line-height: inherit;
|
line-height: inherit;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
|
||||||
left: 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-body {
|
.modal-body {
|
||||||
padding: 0;
|
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
min-height: calc(100% - 62px);
|
min-height: calc(100% - 62px);
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
li {
|
li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
label {
|
label {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
@@ -44,87 +50,110 @@
|
|||||||
.no-padding--left {
|
.no-padding--left {
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.padding-top {
|
.padding-top {
|
||||||
padding-top: 7px;
|
padding-top: 7px;
|
||||||
|
|
||||||
&.x2 {
|
&.x2 {
|
||||||
padding-top: 14px;
|
padding-top: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.x3 {
|
&.x3 {
|
||||||
padding-top: 21px;
|
padding-top: 21px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.padding-bottom {
|
.padding-bottom {
|
||||||
padding-bottom: 7px;
|
padding-bottom: 7px;
|
||||||
|
|
||||||
&.x2 {
|
&.x2 {
|
||||||
padding-bottom: 14px;
|
padding-bottom: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.x3 {
|
&.x3 {
|
||||||
padding-bottom: 21px;
|
padding-bottom: 21px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.control-label {
|
.control-label {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|
||||||
&.text-left {
|
&.text-left {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-img {
|
.profile-img {
|
||||||
width: 128px;
|
|
||||||
height: 128px;
|
height: 128px;
|
||||||
|
width: 128px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.settings-table {
|
.settings-table {
|
||||||
max-width: 1000px;
|
|
||||||
margin: 0 auto;
|
|
||||||
display: table;
|
display: table;
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 1000px;
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav {
|
.nav {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
width: 179px;
|
width: 179px;
|
||||||
|
|
||||||
&.position--top {
|
&.position--top {
|
||||||
top: 57px;
|
top: 57px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.security-links {
|
.security-links {
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.settings-links {
|
.settings-links {
|
||||||
width: 180px;
|
width: 180px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.settings-content {
|
.settings-content {
|
||||||
padding: 0px 20px 30px;
|
padding: 0 20px 30px;
|
||||||
|
|
||||||
.modal-header {
|
.modal-header {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-min {
|
.section-min {
|
||||||
padding: 1em 0;
|
padding: 1em 0;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
position: relative;
|
position: relative;
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: #f9f9f9;
|
background: #f9f9f9;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover .fa {
|
&:hover .fa {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover .section-edit {
|
&:hover .section-edit {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-max {
|
.section-max {
|
||||||
background: rgba(black, .05);
|
|
||||||
padding: 1em 0 1.3em;
|
|
||||||
margin-bottom: 0;
|
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
|
@include alpha-property(background, $black, .05);
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding: 1em 0 1.3em;
|
||||||
|
|
||||||
.section-title {
|
.section-title {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
@@ -136,50 +165,54 @@
|
|||||||
padding: 4px 5px;
|
padding: 4px 5px;
|
||||||
width: 40px;
|
width: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
border: 1px solid rgba(black, .15);
|
border: 1px solid rgba(black, .15);
|
||||||
width: 29px;
|
width: 29px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.group--code {
|
.group--code {
|
||||||
|
|
||||||
select {
|
select {
|
||||||
|
@include appearance(none);
|
||||||
|
appearance: none;
|
||||||
padding-right: 25px;
|
padding-right: 25px;
|
||||||
|
|
||||||
|
&::ms-expand {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
select::-ms-expand {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
&:before {
|
&:before {
|
||||||
pointer-events: none;
|
@include font-smoothing;
|
||||||
position: absolute;
|
|
||||||
top: 11px;
|
|
||||||
right: 50px;
|
|
||||||
z-index: 5;
|
|
||||||
content: '\f0d7';
|
content: '\f0d7';
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font: normal normal normal 14px/1 FontAwesome;
|
font: normal normal normal 14px/1 FontAwesome;
|
||||||
font-size: inherit;
|
pointer-events: none;
|
||||||
|
position: absolute;
|
||||||
|
right: 50px;
|
||||||
text-rendering: auto;
|
text-rendering: auto;
|
||||||
-webkit-font-smoothing: antialiased;
|
top: 11px;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
z-index: 5;
|
||||||
}
|
|
||||||
select {
|
|
||||||
-moz-appearance: none;
|
|
||||||
-webkit-appearance: none;
|
|
||||||
appearance: none;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.premade-themes {
|
.premade-themes {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
|
|
||||||
.theme-label {
|
.theme-label {
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
border: 3px solid transparent;
|
border: 3px solid transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.active {
|
.active {
|
||||||
img {
|
img {
|
||||||
border-color: $color--primary;
|
border-color: $primary-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -197,12 +230,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.theme-elements__header {
|
.theme-elements__header {
|
||||||
margin: 10px 20px 0px 0;
|
|
||||||
border-bottom: 1px solid #ccc;
|
border-bottom: 1px solid #ccc;
|
||||||
padding: 5px 0 10px;
|
cursor: pointer;
|
||||||
font-size: em(13.5px);
|
font-size: em(13.5px);
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
cursor: pointer;
|
margin: 10px 20px 0 0;
|
||||||
|
padding: 5px 0 10px;
|
||||||
|
|
||||||
.fa-minus {
|
.fa-minus {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -212,39 +245,41 @@
|
|||||||
.fa-minus {
|
.fa-minus {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fa-plus {
|
.fa-plus {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.header__icon {
|
.header__icon {
|
||||||
float: right;
|
|
||||||
@include opacity(.5);
|
@include opacity(.5);
|
||||||
|
float: right;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.theme-elements__body {
|
.theme-elements__body {
|
||||||
padding-top: 5px;
|
|
||||||
display: none;
|
|
||||||
@include legacy-pie-clearfix;
|
|
||||||
background: rgba(255, 255, 255, .05);
|
|
||||||
padding: 20px 0 0 20px;
|
|
||||||
margin: 0 20px 0 0;
|
|
||||||
@include border-radius(0 0 3px 3px);
|
@include border-radius(0 0 3px 3px);
|
||||||
|
@include legacy-pie-clearfix;
|
||||||
|
@include alpha-property(background-color, $white, .05);
|
||||||
|
display: none;
|
||||||
|
margin: 0 20px 0 0;
|
||||||
|
padding: 20px 0 0 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-label {
|
.custom-label {
|
||||||
white-space: nowrap;
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
width: 100%;
|
font-weight: normal;
|
||||||
|
margin-bottom: 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
margin-bottom: 0;
|
white-space: nowrap;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.input-group-addon {
|
.input-group-addon {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.radio {
|
.radio {
|
||||||
label {
|
label {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -253,32 +288,33 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.section-title {
|
.section-title {
|
||||||
margin-bottom: 5px;
|
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
margin-bottom: 5px;
|
||||||
padding-right: 50px;
|
padding-right: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-edit {
|
.section-edit {
|
||||||
text-align: right;
|
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
|
text-align: right;
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
margin-right: 5px;
|
|
||||||
font-size: 12px;
|
|
||||||
@include opacity(.5);
|
@include opacity(.5);
|
||||||
display: none;
|
display: none;
|
||||||
|
font-size: 12px;
|
||||||
|
margin-right: 5px;
|
||||||
&.fa-chevron-down {
|
&.fa-chevron-down {
|
||||||
top: -1px;
|
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
top: -1px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-describe {
|
.section-describe {
|
||||||
@include opacity(.7);
|
|
||||||
white-space: pre;
|
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
|
@include opacity(.7);
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
white-space: pre;
|
||||||
}
|
}
|
||||||
|
|
||||||
.divider-dark {
|
.divider-dark {
|
||||||
@@ -290,8 +326,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.setting-list {
|
.setting-list {
|
||||||
padding: 0;
|
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.setting-list__hint {
|
.setting-list__hint {
|
||||||
@@ -305,68 +341,77 @@
|
|||||||
.setting-list-item {
|
.setting-list-item {
|
||||||
margin-top: 7px;
|
margin-top: 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.has-error {
|
.has-error {
|
||||||
color: #a94442;
|
color: #a94442;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-status {
|
.file-status {
|
||||||
|
color: #555;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
color: #555;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.confirm-import {
|
.confirm-import {
|
||||||
padding: 4px 10px;
|
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
|
padding: 4px 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-pills {
|
.nav-pills {
|
||||||
> li {
|
> li {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
padding: 8px 5px 8px 15px;
|
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
color: #777;
|
color: #777;
|
||||||
|
padding: 8px 5px 8px 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.glyphicon {
|
.glyphicon {
|
||||||
width: 25px;
|
|
||||||
top: 2px;
|
top: 2px;
|
||||||
|
width: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
a {
|
a {
|
||||||
background-color: rgba(black, .1);
|
@include alpha-property(background-color, $black, .1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
a {
|
a {
|
||||||
color: #111;
|
|
||||||
background-color: #e1e1e1;
|
background-color: #e1e1e1;
|
||||||
|
color: #111;
|
||||||
|
|
||||||
&:before {
|
&:before {
|
||||||
|
background: $black;
|
||||||
content: '';
|
content: '';
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
|
||||||
width: 5px;
|
width: 5px;
|
||||||
height: 100%;
|
|
||||||
background: #000;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a,
|
a,
|
||||||
a:hover,
|
a:hover,
|
||||||
a:focus {
|
a:focus {
|
||||||
background-color: rgba(black, .1);
|
@include alpha-property(background-color, $black, .1);
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
position: relative;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-size: em(20px);
|
font-size: em(20px);
|
||||||
}
|
}
|
||||||
@@ -391,13 +436,15 @@
|
|||||||
|
|
||||||
.member-div {
|
.member-div {
|
||||||
border-bottom: 1px solid lightgrey;
|
border-bottom: 1px solid lightgrey;
|
||||||
position: relative;
|
|
||||||
padding: 2px;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
padding: 2px;
|
||||||
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
border-top: 1px solid lightgrey;
|
border-top: 1px solid lightgrey;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-profile-img {
|
.post-profile-img {
|
||||||
@include border-radius(50px);
|
@include border-radius(50px);
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
@@ -407,14 +454,14 @@
|
|||||||
.member-role,
|
.member-role,
|
||||||
.member-drop {
|
.member-drop {
|
||||||
.fa {
|
.fa {
|
||||||
margin-right: 5px;
|
|
||||||
@include opacity(.5);
|
@include opacity(.5);
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-menu {
|
.member-menu {
|
||||||
top: -50%;
|
|
||||||
right: 110%;
|
right: 110%;
|
||||||
|
top: -50%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -425,13 +472,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.member-menu {
|
.member-menu {
|
||||||
right: 0px;
|
|
||||||
left: auto;
|
left: auto;
|
||||||
|
right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-list {
|
.member-list {
|
||||||
width: 100%;
|
|
||||||
overflow-x: visible;
|
overflow-x: visible;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-page {
|
.member-page {
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
.signup-header {
|
.signup-header {
|
||||||
width: 100%;
|
background: $bg--gray;
|
||||||
line-height: 33px;
|
line-height: 33px;
|
||||||
padding: 0 1em .2em;
|
padding: 0 1em .2em;
|
||||||
background: $bg--gray;
|
width: 100%;
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.signup-team__container {
|
.signup-team__container {
|
||||||
padding: 100px 0px 50px 0px;
|
|
||||||
max-width: 380px;
|
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
max-width: 380px;
|
||||||
|
padding: 100px 0 50px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
&.padding--less {
|
&.padding--less {
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.form-control:focus {
|
.form-control:focus {
|
||||||
@include box-shadow(inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6));
|
@include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6));
|
||||||
}
|
}
|
||||||
|
|
||||||
h1,
|
h1,
|
||||||
@@ -39,16 +39,16 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
font-weight: 600;
|
|
||||||
margin-bottom: .8em;
|
|
||||||
letter-spacing: -.5px;
|
|
||||||
font-size: em(30px);
|
font-size: em(30px);
|
||||||
|
font-weight: 600;
|
||||||
|
letter-spacing: -.5px;
|
||||||
|
margin-bottom: .8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-weight: 600;
|
|
||||||
margin: 0 0 1.3em 0;
|
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
|
font-weight: 600;
|
||||||
|
margin: 0 0 1.3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
color: #555;
|
color: #555555;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
margin-bottom: 1em;
|
margin-bottom: 1em;
|
||||||
}
|
}
|
||||||
@@ -81,32 +81,32 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.form-control {
|
.form-control {
|
||||||
text-align: left;
|
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
|
text-align: left;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.input-group-addon {
|
.input-group-addon {
|
||||||
text-align: left;
|
|
||||||
width: 50%;
|
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
text-align: left;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
width: 50%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.inner__content {
|
.inner__content {
|
||||||
padding: 0 1rem;
|
|
||||||
margin: 30px 0 20px;
|
margin: 30px 0 20px;
|
||||||
|
padding: 0 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.block--gray {
|
.block--gray {
|
||||||
|
@include border-radius(3px);
|
||||||
background: #f2f2f2;
|
background: #f2f2f2;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: .85em 1.2em;
|
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@include border-radius(3px);
|
padding: .85em 1.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
form {
|
form {
|
||||||
@@ -114,32 +114,32 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.signup-team-confirm__container {
|
.signup-team-confirm__container {
|
||||||
padding: 100px 0px 100px 0px;
|
padding: 100px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.signup-team-logo {
|
.signup-team-logo {
|
||||||
display: none;
|
display: none;
|
||||||
|
margin: 0 0 2em;
|
||||||
width: 210px;
|
width: 210px;
|
||||||
margin: 0 0 2em 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.signup-team-login {
|
.signup-team-login {
|
||||||
padding-bottom: 10px;
|
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
padding-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.signup-team__name {
|
.signup-team__name {
|
||||||
margin: .5em 0 0;
|
|
||||||
font-size: 2.2em;
|
font-size: 2.2em;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
margin: .5em 0 0;
|
||||||
padding-left: 1rem;
|
padding-left: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.signup-team__subdomain {
|
.signup-team__subdomain {
|
||||||
margin: .2em 0 1.2em;
|
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
padding-left: 1rem;
|
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
|
margin: .2em 0 1.2em;
|
||||||
|
padding-left: 1rem;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,21 +148,21 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.or__container {
|
.or__container {
|
||||||
|
background: #dddddd;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
background: #ddd;
|
|
||||||
text-align: left;
|
|
||||||
margin: 2em 0;
|
margin: 2em 0;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
width: 40px;
|
background: #ffffff;
|
||||||
top: -10px;
|
|
||||||
position: relative;
|
|
||||||
font-size: 1.14286em;
|
|
||||||
line-height: 20px;
|
|
||||||
font-weight: 600;
|
|
||||||
background: #fff;
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
font-size: 1.14286em;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 20px;
|
||||||
|
position: relative;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
top: -10px;
|
||||||
|
width: 40px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,9 +177,9 @@
|
|||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
padding: em(7px) em(15px);
|
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
|
padding: em(7px) em(15px);
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
@@ -187,29 +187,29 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
width: 18px;
|
|
||||||
height: 18px;
|
|
||||||
margin-right: 8px;
|
|
||||||
@include background-size(100% 100%);
|
@include background-size(100% 100%);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
height: 18px;
|
||||||
|
margin-right: 8px;
|
||||||
|
width: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.btn-custom-login {
|
&.btn-custom-login {
|
||||||
|
@include border-radius(2px);
|
||||||
|
color: $white;
|
||||||
display: block;
|
display: block;
|
||||||
min-width: 200px;
|
|
||||||
width: 200px;
|
|
||||||
padding: 0 1em;
|
|
||||||
margin: 1em 1rem;
|
|
||||||
height: 40px;
|
height: 40px;
|
||||||
line-height: 34px;
|
line-height: 34px;
|
||||||
color: #fff;
|
margin: 1em 1rem;
|
||||||
@include border-radius(2px);
|
min-width: 200px;
|
||||||
|
padding: 0 1em;
|
||||||
|
width: 200px;
|
||||||
|
|
||||||
&.gitlab {
|
&.gitlab {
|
||||||
background: #548;
|
background: #554488;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: darken(#548, 10%);
|
background: darken(#554488, 10%);
|
||||||
}
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
@@ -250,10 +250,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.email {
|
&.email {
|
||||||
background: #2389d7;
|
background: $primary-color;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: darken(#2389d7, 10%);
|
background: $primary-color--hover;
|
||||||
}
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
@@ -269,15 +269,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.btn-default {
|
&.btn-default {
|
||||||
color: #444;
|
color: #444444;
|
||||||
}
|
}
|
||||||
|
|
||||||
.glyphicon {
|
.glyphicon {
|
||||||
&.glyphicon-ok,
|
&.glyphicon-ok,
|
||||||
&.glyphicon-refresh {
|
&.glyphicon-refresh {
|
||||||
margin-right: .5em;
|
|
||||||
left: -2px;
|
|
||||||
font-size: .9em;
|
font-size: .9em;
|
||||||
|
left: -2px;
|
||||||
|
margin-right: .5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.glyphicon-chevron-right {
|
&.glyphicon-chevron-right {
|
||||||
@@ -296,28 +296,29 @@
|
|||||||
|
|
||||||
.has-error {
|
.has-error {
|
||||||
.control-label {
|
.control-label {
|
||||||
background: #f2f2f2;
|
|
||||||
padding: .7em 1em;
|
|
||||||
@include border-radius(3px);
|
@include border-radius(3px);
|
||||||
margin: 1em 0 0;
|
background: #f2f2f2;
|
||||||
|
color: #999999;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
color: #999;
|
margin: 1em 0 0;
|
||||||
|
padding: .7em 1em;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
&:before {
|
&:before {
|
||||||
@extend .fa;
|
@extend %font-awesome;
|
||||||
|
color: #aaaaaa;
|
||||||
content: '\f071';
|
content: '\f071';
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
color: #aaa;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.reset-form {
|
.reset-form {
|
||||||
@include border-radius(3px);
|
@include border-radius(3px);
|
||||||
position: relative;
|
|
||||||
font-size: .95em;
|
font-size: .95em;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
p {
|
p {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
@@ -363,12 +364,12 @@
|
|||||||
|
|
||||||
.black,
|
.black,
|
||||||
&.black {
|
&.black {
|
||||||
color: #000;
|
color: #000000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.color--light {
|
.color--light {
|
||||||
color: #777;
|
color: #777777;
|
||||||
}
|
}
|
||||||
|
|
||||||
.margin--extra {
|
.margin--extra {
|
||||||
@@ -381,9 +382,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.signup-team-all {
|
.signup-team-all {
|
||||||
margin: 0 0 20px;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
@include border-radius(2px);
|
@include border-radius(2px);
|
||||||
|
border: 1px solid #dddddd;
|
||||||
|
margin: 0 0 20px;
|
||||||
|
|
||||||
.signup-team-dir {
|
.signup-team-dir {
|
||||||
background: #fafafa;
|
background: #fafafa;
|
||||||
border-top: 1px solid #d5d5d5;
|
border-top: 1px solid #d5d5d5;
|
||||||
@@ -395,25 +397,25 @@
|
|||||||
a {
|
a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
display: block;
|
display: block;
|
||||||
padding: 0 15px;
|
|
||||||
line-height: 3.5em;
|
|
||||||
height: 3.5em;
|
|
||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
|
height: 3.5em;
|
||||||
|
line-height: 3.5em;
|
||||||
|
padding: 0 15px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.signup-team-dir__name {
|
.signup-team-dir__name {
|
||||||
white-space: nowrap;
|
|
||||||
float: left;
|
float: left;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
width: 90%;
|
width: 90%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.signup-team-dir__arrow {
|
.signup-team-dir__arrow {
|
||||||
|
color: #999999;
|
||||||
float: right;
|
float: right;
|
||||||
font-size: .9em;
|
font-size: .9em;
|
||||||
color: #999;
|
|
||||||
line-height: 3.5em;
|
line-height: 3.5em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,45 +2,45 @@
|
|||||||
|
|
||||||
.team_statistics {
|
.team_statistics {
|
||||||
.total-count {
|
.total-count {
|
||||||
|
@include border-radius(3px);
|
||||||
|
background: $white;
|
||||||
|
border: 1px solid $light-gray;
|
||||||
margin: 1em 0;
|
margin: 1em 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: #fff;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@include border-radius(3px);
|
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
|
border-bottom: 1px solid $light-gray;
|
||||||
|
font-size: 13px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
padding: 7px 10px;
|
padding: 7px 10px;
|
||||||
border-bottom: 1px solid #ddd;
|
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-size: 13px;
|
|
||||||
|
|
||||||
.fa {
|
.fa {
|
||||||
|
color: #555555;
|
||||||
float: right;
|
float: right;
|
||||||
margin: 0px 0 0;
|
|
||||||
color: #555;
|
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
|
margin: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
|
color: #555555;
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: #555;
|
|
||||||
padding: .3em 0 .35em;
|
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
padding: .3em 0 .35em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.total-count--day {
|
.total-count--day {
|
||||||
width: 760px;
|
background: $white;
|
||||||
height: 275px;
|
border: 1px solid $light-gray;
|
||||||
border: 1px solid #ddd;
|
|
||||||
padding: 5px 10px 10px 10px;
|
|
||||||
margin: 10px 10px 10px 10px;
|
|
||||||
background: #fff;
|
|
||||||
clear: both;
|
clear: both;
|
||||||
|
height: 275px;
|
||||||
|
margin: 10px;
|
||||||
|
padding: 5px 10px 10px;
|
||||||
|
width: 760px;
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
@@ -50,8 +50,8 @@
|
|||||||
|
|
||||||
.recent-active-users {
|
.recent-active-users {
|
||||||
table {
|
table {
|
||||||
width: 100%;
|
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
@@ -68,14 +68,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
td {
|
td {
|
||||||
font-weight: 400;
|
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
font-size: 13px;
|
|
||||||
border-left: 1px solid #ddd;
|
|
||||||
border-top: 1px solid #ddd;
|
|
||||||
padding: 5px 5px 6px;
|
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
|
border-left: 1px solid $light-gray;
|
||||||
|
border-top: 1px solid $light-gray;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 400;
|
||||||
|
padding: 5px 5px 6px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
border-left: none;
|
border-left: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,21 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
@-webkit-keyframes spin2 {
|
|
||||||
from {
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
-webkit-transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
@keyframes spin {
|
||||||
from {
|
from {
|
||||||
transform: scale(1) rotate(0deg);
|
transform: scale(1) rotate(0deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
to {
|
to {
|
||||||
transform: scale(1) rotate(360deg);
|
transform: scale(1) rotate(360deg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes highlight {
|
||||||
|
from {
|
||||||
|
@include alpha-property(background, $yellow, .5);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,6 +4,20 @@
|
|||||||
@return #{$pixels/$context}em
|
@return #{$pixels/$context}em
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@function alpha-color($color, $amount) {
|
||||||
|
@return rgba($color, $amount)
|
||||||
|
}
|
||||||
|
|
||||||
%popover-box-shadow {
|
%popover-box-shadow {
|
||||||
@include box-shadow(rgba(black, .175) 1px -3px 12px);
|
@include box-shadow(rgba(black, .175) 1px -3px 12px);
|
||||||
|
}
|
||||||
|
|
||||||
|
%font-awesome {
|
||||||
|
display: inline-block;
|
||||||
|
font: normal normal normal 14px/1 FontAwesome;
|
||||||
|
font-size: inherit;
|
||||||
|
text-rendering: auto;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
transform: translate(0, 0);
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,29 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
@mixin file-icon($path) {
|
@mixin file-icon($path) {
|
||||||
background: #fff url($path);
|
@include background-size(60px auto);
|
||||||
|
background-color: $white;
|
||||||
|
background-image: url($path);
|
||||||
background-position: center;
|
background-position: center;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
@include background-size(60px auto);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@mixin alpha-property($property, $color, $opacity) {
|
||||||
|
#{$property}: rgba($color, $opacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin font-smoothing($value: antialiased) {
|
||||||
|
@if $value == antialiased {
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
@else {
|
||||||
|
-webkit-font-smoothing: subpixel-antialiased;
|
||||||
|
-moz-osx-font-smoothing: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin cursor($value) {
|
||||||
|
cursor: -webkit-$value;
|
||||||
|
cursor: zoom-$value;
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
// Only for combining all the files in this folder
|
// Only for combining all the files in this folder
|
||||||
@import 'variables';
|
@import 'variables';
|
||||||
@import 'animations';
|
|
||||||
@import 'functions';
|
@import 'functions';
|
||||||
@import 'mixins';
|
@import 'mixins';
|
||||||
|
@import 'animations';
|
||||||
|
|||||||
@@ -1,10 +1,16 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
// Color Variables
|
// Color Variables
|
||||||
$color--primary: rgb(35, 137, 215);
|
$primary-color: rgb(35, 137, 215);
|
||||||
$color--primary--hover: darken($color--primary, 10%);
|
$primary-color--hover: darken($primary-color, 10%);
|
||||||
$bg--gray: rgb(245, 245, 245);
|
$bg--gray: rgb(245, 245, 245);
|
||||||
$bg--white: rgb(255, 255, 255);
|
$white: rgb(255, 255, 255);
|
||||||
|
$black: rgb(0, 0, 0);
|
||||||
|
$red: rgb(229, 101, 101);
|
||||||
|
$yellow: rgb(255, 255, 0);
|
||||||
|
$light-gray: rgba(0, 0, 0, .06);
|
||||||
|
$gray: rgba(0, 0, 0, .3);
|
||||||
|
$dark-gray: rgba(0, 0, 0, .5);
|
||||||
|
|
||||||
// Page Variables
|
// Page Variables
|
||||||
$border-gray: 1px solid #ddd;
|
$border-gray: 1px solid #ddd;
|
||||||
|
|||||||
@@ -781,12 +781,12 @@ export function savePreferences(preferences, success, error) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getSuggestedCommands(command, suggestionId, component) {
|
export function getSuggestedCommands(command, channelId, suggestionId, component) {
|
||||||
client.listCommands(
|
client.listCommands({command: command, channelId: channelId},
|
||||||
(data) => {
|
(data) => {
|
||||||
var matches = [];
|
var matches = [];
|
||||||
data.forEach((cmd) => {
|
data.forEach((cmd) => {
|
||||||
if (('/' + cmd.trigger).indexOf(command) === 0) {
|
if (('/' + cmd.trigger).indexOf(command) === 0 || cmd.external_management) {
|
||||||
let s = '/' + cmd.trigger;
|
let s = '/' + cmd.trigger;
|
||||||
let hint = '';
|
let hint = '';
|
||||||
if (cmd.auto_complete_hint && cmd.auto_complete_hint.length !== 0) {
|
if (cmd.auto_complete_hint && cmd.auto_complete_hint.length !== 0) {
|
||||||
|
|||||||
@@ -1031,12 +1031,13 @@ export function regenCommandToken(data, success, error) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function listCommands(success, error) {
|
export function listCommands(data, success, error) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/api/v1/commands/list',
|
url: '/api/v1/commands/list',
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
type: 'GET',
|
type: 'POST',
|
||||||
|
data: JSON.stringify(data),
|
||||||
success,
|
success,
|
||||||
error: function onError(xhr, status, err) {
|
error: function onError(xhr, status, err) {
|
||||||
var e = handleError('listCommands', xhr, status, err);
|
var e = handleError('listCommands', xhr, status, err);
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ export default {
|
|||||||
PRESENTATION_TYPES: ['ppt', 'pptx'],
|
PRESENTATION_TYPES: ['ppt', 'pptx'],
|
||||||
SPREADSHEET_TYPES: ['xlsx', 'csv'],
|
SPREADSHEET_TYPES: ['xlsx', 'csv'],
|
||||||
WORD_TYPES: ['doc', 'docx'],
|
WORD_TYPES: ['doc', 'docx'],
|
||||||
CODE_TYPES: ['css', 'html', 'js', 'php', 'rb'],
|
CODE_TYPES: ['as', 'applescript', 'osascript', 'scpt', 'bash', 'sh', 'zsh', 'clj', 'boot', 'cl2', 'cljc', 'cljs', 'cljs.hl', 'cljscm', 'cljx', 'hic', 'coffee', '_coffee', 'cake', 'cjsx', 'cson', 'iced', 'cpp', 'c', 'cc', 'h', 'c++', 'h++', 'hpp', 'cs', 'csharp', 'css', 'd', 'di', 'dart', 'delphi', 'dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm', 'diff', 'django', 'jinja', 'dockerfile', 'docker', 'erl', 'f90', 'f95', 'fsharp', 'fs', 'gcode', 'nc', 'go', 'groovy', 'handlebars', 'hbs', 'html.hbs', 'html.handlebars', 'hs', 'hx', 'java', 'jsp', 'js', 'jsx', 'json', 'jl', 'kt', 'ktm', 'kts', 'less', 'lisp', 'lua', 'mk', 'mak', 'md', 'mkdown', 'mkd', 'matlab', 'm', 'mm', 'objc', 'obj-c', 'ml', 'perl', 'pl', 'php', 'php3', 'php4', 'php5', 'php6', 'ps', 'ps1', 'pp', 'py', 'gyp', 'r', 'ruby', 'rb', 'gemspec', 'podspec', 'thor', 'irb', 'rs', 'scala', 'scm', 'sld', 'scss', 'st', 'sql', 'swift', 'tex', 'vbnet', 'vb', 'bas', 'vbs', 'v', 'veo', 'xml', 'html', 'xhtml', 'rss', 'atom', 'xsl', 'plist', 'yaml'],
|
||||||
PDF_TYPES: ['pdf'],
|
PDF_TYPES: ['pdf'],
|
||||||
PATCH_TYPES: ['patch'],
|
PATCH_TYPES: ['patch'],
|
||||||
ICON_FROM_TYPE: {
|
ICON_FROM_TYPE: {
|
||||||
@@ -515,30 +515,64 @@ export default {
|
|||||||
SPACE: 32,
|
SPACE: 32,
|
||||||
TAB: 9
|
TAB: 9
|
||||||
},
|
},
|
||||||
|
CODE_PREVIEW_MAX_FILE_SIZE: 500000, // 500 KB
|
||||||
HighlightedLanguages: {
|
HighlightedLanguages: {
|
||||||
diff: 'Diff',
|
actionscript: {name: 'ActionScript', extensions: ['as']},
|
||||||
apache: 'Apache',
|
applescript: {name: 'AppleScript', extensions: ['applescript', 'osascript', 'scpt']},
|
||||||
makefile: 'Makefile',
|
bash: {name: 'Bash', extensions: ['bash', 'sh', 'zsh']},
|
||||||
http: 'HTTP',
|
clojure: {name: 'Clojure', extensions: ['clj', 'boot', 'cl2', 'cljc', 'cljs', 'cljs.hl', 'cljscm', 'cljx', 'hic']},
|
||||||
json: 'JSON',
|
coffeescript: {name: 'CoffeeScript', extensions: ['coffee', '_coffee', 'cake', 'cjsx', 'cson', 'iced']},
|
||||||
markdown: 'Markdown',
|
cpp: {name: 'C/C++', extensions: ['cpp', 'c', 'cc', 'h', 'c++', 'h++', 'hpp']},
|
||||||
javascript: 'JavaScript',
|
cs: {name: 'C#', extensions: ['cs', 'csharp']},
|
||||||
css: 'CSS',
|
css: {name: 'CSS', extensions: ['css']},
|
||||||
nginx: 'nginx',
|
d: {name: 'D', extensions: ['d', 'di']},
|
||||||
objectivec: 'Objective-C',
|
dart: {name: 'Dart', extensions: ['dart']},
|
||||||
python: 'Python',
|
delphi: {name: 'Delphi', extensions: ['delphi', 'dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm']},
|
||||||
xml: 'XML',
|
diff: {name: 'Diff', extensions: ['diff', 'patch']},
|
||||||
perl: 'Perl',
|
django: {name: 'Django', extensions: ['django', 'jinja']},
|
||||||
bash: 'Bash',
|
dockerfile: {name: 'Dockerfile', extensions: ['dockerfile', 'docker']},
|
||||||
php: 'PHP',
|
erlang: {name: 'Erlang', extensions: ['erl']},
|
||||||
coffeescript: 'CoffeeScript',
|
fortran: {name: 'Fortran', extensions: ['f90', 'f95']},
|
||||||
cs: 'C#',
|
fsharp: {name: 'F#', extensions: ['fsharp', 'fs']},
|
||||||
cpp: 'C++',
|
gcode: {name: 'G-Code', extensions: ['gcode', 'nc']},
|
||||||
sql: 'SQL',
|
go: {name: 'Go', extensions: ['go']},
|
||||||
go: 'Go',
|
groovy: {name: 'Groovy', extensions: ['groovy']},
|
||||||
ruby: 'Ruby',
|
handlebars: {name: 'Handlebars', extensions: ['handlebars', 'hbs', 'html.hbs', 'html.handlebars']},
|
||||||
java: 'Java',
|
haskell: {name: 'Haskell', extensions: ['hs']},
|
||||||
ini: 'ini'
|
haxe: {name: 'Haxe', extensions: ['hx']},
|
||||||
|
java: {name: 'Java', extensions: ['java', 'jsp']},
|
||||||
|
javascript: {name: 'JavaScript', extensions: ['js', 'jsx']},
|
||||||
|
json: {name: 'JSON', extensions: ['json']},
|
||||||
|
julia: {name: 'Julia', extensions: ['jl']},
|
||||||
|
kotlin: {name: 'Kotlin', extensions: ['kt', 'ktm', 'kts']},
|
||||||
|
less: {name: 'Less', extensions: ['less']},
|
||||||
|
lisp: {name: 'Lisp', extensions: ['lisp']},
|
||||||
|
lua: {name: 'Lua', extensions: ['lua']},
|
||||||
|
makefile: {name: 'Makefile', extensions: ['mk', 'mak']},
|
||||||
|
markdown: {name: 'Markdown', extensions: ['md', 'mkdown', 'mkd']},
|
||||||
|
matlab: {name: 'Matlab', extensions: ['matlab', 'm']},
|
||||||
|
objectivec: {name: 'Objective C', extensions: ['mm', 'objc', 'obj-c']},
|
||||||
|
ocaml: {name: 'OCaml', extensions: ['ml']},
|
||||||
|
perl: {name: 'Perl', extensions: ['perl', 'pl']},
|
||||||
|
php: {name: 'PHP', extensions: ['php', 'php3', 'php4', 'php5', 'php6']},
|
||||||
|
powershell: {name: 'PowerShell', extensions: ['ps', 'ps1']},
|
||||||
|
puppet: {name: 'Puppet', extensions: ['pp']},
|
||||||
|
python: {name: 'Python', extensions: ['py', 'gyp']},
|
||||||
|
r: {name: 'R', extensions: ['r']},
|
||||||
|
ruby: {name: 'Ruby', extensions: ['ruby', 'rb', 'gemspec', 'podspec', 'thor', 'irb']},
|
||||||
|
rust: {name: 'Rust', extensions: ['rs']},
|
||||||
|
scala: {name: 'Scala', extensions: ['scala']},
|
||||||
|
scheme: {name: 'Scheme', extensions: ['scm', 'sld']},
|
||||||
|
scss: {name: 'SCSS', extensions: ['scss']},
|
||||||
|
smalltalk: {name: 'Smalltalk', extensions: ['st']},
|
||||||
|
sql: {name: 'SQL', extensions: ['sql']},
|
||||||
|
swift: {name: 'Swift', extensions: ['swift']},
|
||||||
|
tex: {name: 'TeX', extensions: ['tex']},
|
||||||
|
vbnet: {name: 'VB.Net', extensions: ['vbnet', 'vb', 'bas']},
|
||||||
|
vbscript: {name: 'VBScript', extensions: ['vbs']},
|
||||||
|
verilog: {name: 'Verilog', extensions: ['v', 'veo']},
|
||||||
|
xml: {name: 'HTML, XML', extensions: ['xml', 'html', 'xhtml', 'rss', 'atom', 'xsl', 'plist']},
|
||||||
|
yaml: {name: 'YAML', extensions: ['yaml']}
|
||||||
},
|
},
|
||||||
PostsViewJumpTypes: {
|
PostsViewJumpTypes: {
|
||||||
BOTTOM: 1,
|
BOTTOM: 1,
|
||||||
@@ -561,6 +595,10 @@ export default {
|
|||||||
EMBED_TOGGLE: {
|
EMBED_TOGGLE: {
|
||||||
label: 'embed_toggle',
|
label: 'embed_toggle',
|
||||||
description: 'Show toggle for all embed previews'
|
description: 'Show toggle for all embed previews'
|
||||||
|
},
|
||||||
|
SLASHCMD_AUTOCMP: {
|
||||||
|
label: 'slashCmd_autocmp',
|
||||||
|
description: 'Enable external application to offer slash command autocomplete'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
OVERLAY_TIME_DELAY: 400,
|
OVERLAY_TIME_DELAY: 400,
|
||||||
|
|||||||
@@ -1,65 +1,14 @@
|
|||||||
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
|
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
|
||||||
// See License.txt for license information.
|
// See License.txt for license information.
|
||||||
|
|
||||||
import highlightJs from 'highlight.js/lib/highlight.js';
|
|
||||||
import highlightJsDiff from 'highlight.js/lib/languages/diff.js';
|
|
||||||
import highlightJsApache from 'highlight.js/lib/languages/apache.js';
|
|
||||||
import highlightJsMakefile from 'highlight.js/lib/languages/makefile.js';
|
|
||||||
import highlightJsHttp from 'highlight.js/lib/languages/http.js';
|
|
||||||
import highlightJsJson from 'highlight.js/lib/languages/json.js';
|
|
||||||
import highlightJsMarkdown from 'highlight.js/lib/languages/markdown.js';
|
|
||||||
import highlightJsJavascript from 'highlight.js/lib/languages/javascript.js';
|
|
||||||
import highlightJsCss from 'highlight.js/lib/languages/css.js';
|
|
||||||
import highlightJsNginx from 'highlight.js/lib/languages/nginx.js';
|
|
||||||
import highlightJsObjectivec from 'highlight.js/lib/languages/objectivec.js';
|
|
||||||
import highlightJsPython from 'highlight.js/lib/languages/python.js';
|
|
||||||
import highlightJsXml from 'highlight.js/lib/languages/xml.js';
|
|
||||||
import highlightJsPerl from 'highlight.js/lib/languages/perl.js';
|
|
||||||
import highlightJsBash from 'highlight.js/lib/languages/bash.js';
|
|
||||||
import highlightJsPhp from 'highlight.js/lib/languages/php.js';
|
|
||||||
import highlightJsCoffeescript from 'highlight.js/lib/languages/coffeescript.js';
|
|
||||||
import highlightJsCs from 'highlight.js/lib/languages/cs.js';
|
|
||||||
import highlightJsCpp from 'highlight.js/lib/languages/cpp.js';
|
|
||||||
import highlightJsSql from 'highlight.js/lib/languages/sql.js';
|
|
||||||
import highlightJsGo from 'highlight.js/lib/languages/go.js';
|
|
||||||
import highlightJsRuby from 'highlight.js/lib/languages/ruby.js';
|
|
||||||
import highlightJsJava from 'highlight.js/lib/languages/java.js';
|
|
||||||
import highlightJsIni from 'highlight.js/lib/languages/ini.js';
|
|
||||||
|
|
||||||
highlightJs.registerLanguage('diff', highlightJsDiff);
|
|
||||||
highlightJs.registerLanguage('apache', highlightJsApache);
|
|
||||||
highlightJs.registerLanguage('makefile', highlightJsMakefile);
|
|
||||||
highlightJs.registerLanguage('http', highlightJsHttp);
|
|
||||||
highlightJs.registerLanguage('json', highlightJsJson);
|
|
||||||
highlightJs.registerLanguage('markdown', highlightJsMarkdown);
|
|
||||||
highlightJs.registerLanguage('javascript', highlightJsJavascript);
|
|
||||||
highlightJs.registerLanguage('css', highlightJsCss);
|
|
||||||
highlightJs.registerLanguage('nginx', highlightJsNginx);
|
|
||||||
highlightJs.registerLanguage('objectivec', highlightJsObjectivec);
|
|
||||||
highlightJs.registerLanguage('python', highlightJsPython);
|
|
||||||
highlightJs.registerLanguage('xml', highlightJsXml);
|
|
||||||
highlightJs.registerLanguage('perl', highlightJsPerl);
|
|
||||||
highlightJs.registerLanguage('bash', highlightJsBash);
|
|
||||||
highlightJs.registerLanguage('php', highlightJsPhp);
|
|
||||||
highlightJs.registerLanguage('coffeescript', highlightJsCoffeescript);
|
|
||||||
highlightJs.registerLanguage('cs', highlightJsCs);
|
|
||||||
highlightJs.registerLanguage('cpp', highlightJsCpp);
|
|
||||||
highlightJs.registerLanguage('sql', highlightJsSql);
|
|
||||||
highlightJs.registerLanguage('go', highlightJsGo);
|
|
||||||
highlightJs.registerLanguage('ruby', highlightJsRuby);
|
|
||||||
highlightJs.registerLanguage('java', highlightJsJava);
|
|
||||||
highlightJs.registerLanguage('ini', highlightJsIni);
|
|
||||||
|
|
||||||
import * as TextFormatting from './text_formatting.jsx';
|
import * as TextFormatting from './text_formatting.jsx';
|
||||||
import * as Utils from './utils.jsx';
|
import * as Utils from './utils.jsx';
|
||||||
|
import * as syntaxHightlighting from './syntax_hightlighting.jsx';
|
||||||
|
|
||||||
import marked from 'marked';
|
import marked from 'marked';
|
||||||
import katex from 'katex';
|
import katex from 'katex';
|
||||||
import 'katex/dist/katex.min.css';
|
import 'katex/dist/katex.min.css';
|
||||||
|
|
||||||
import Constants from 'utils/constants.jsx';
|
|
||||||
const HighlightedLanguages = Constants.HighlightedLanguages;
|
|
||||||
|
|
||||||
function markdownImageLoaded(image) {
|
function markdownImageLoaded(image) {
|
||||||
image.style.height = 'auto';
|
image.style.height = 'auto';
|
||||||
}
|
}
|
||||||
@@ -110,31 +59,11 @@ class MattermostMarkdownRenderer extends marked.Renderer {
|
|||||||
this.formattingOptions = formattingOptions;
|
this.formattingOptions = formattingOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
code(code, language, escaped) {
|
code(code, language) {
|
||||||
let usedLanguage = language || '';
|
let usedLanguage = language || '';
|
||||||
usedLanguage = usedLanguage.toLowerCase();
|
usedLanguage = usedLanguage.toLowerCase();
|
||||||
|
|
||||||
// treat html as xml to prevent injection attacks
|
if (usedLanguage === 'tex' || usedLanguage === 'latex') {
|
||||||
if (usedLanguage === 'html') {
|
|
||||||
usedLanguage = 'xml';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (HighlightedLanguages[usedLanguage]) {
|
|
||||||
const parsed = highlightJs.highlight(usedLanguage, code);
|
|
||||||
|
|
||||||
return (
|
|
||||||
'<div class="post-body--code">' +
|
|
||||||
'<span class="post-body--code__language">' +
|
|
||||||
HighlightedLanguages[usedLanguage] +
|
|
||||||
'</span>' +
|
|
||||||
'<pre>' +
|
|
||||||
'<code class="hljs">' +
|
|
||||||
parsed.value +
|
|
||||||
'</code>' +
|
|
||||||
'</pre>' +
|
|
||||||
'</div>'
|
|
||||||
);
|
|
||||||
} else if (usedLanguage === 'tex' || usedLanguage === 'latex') {
|
|
||||||
try {
|
try {
|
||||||
const html = katex.renderToString(code, {throwOnError: false, displayMode: true});
|
const html = katex.renderToString(code, {throwOnError: false, displayMode: true});
|
||||||
|
|
||||||
@@ -144,13 +73,12 @@ class MattermostMarkdownRenderer extends marked.Renderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
// treat html as xml to prevent injection attacks
|
||||||
'<pre>' +
|
if (usedLanguage === 'html') {
|
||||||
'<code class="hljs">' +
|
usedLanguage = 'xml';
|
||||||
(escaped ? code : TextFormatting.sanitizeHtml(code)) + '\n' +
|
}
|
||||||
'</code>' +
|
|
||||||
'</pre>'
|
return syntaxHightlighting.formatCode(usedLanguage, code);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
codespan(text) {
|
codespan(text) {
|
||||||
|
|||||||
197
webapp/utils/syntax_hightlighting.jsx
Обычный файл
197
webapp/utils/syntax_hightlighting.jsx
Обычный файл
@@ -0,0 +1,197 @@
|
|||||||
|
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||||
|
// See License.txt for license information.
|
||||||
|
|
||||||
|
import * as Utils from './utils.jsx';
|
||||||
|
import * as TextFormatting from './text_formatting.jsx';
|
||||||
|
import Constants from './constants.jsx';
|
||||||
|
|
||||||
|
import hlJS from 'highlight.js/lib/highlight.js';
|
||||||
|
|
||||||
|
import hljsActionscript from 'highlight.js/lib/languages/actionscript.js';
|
||||||
|
import hljsApplescript from 'highlight.js/lib/languages/applescript.js';
|
||||||
|
import hljsBash from 'highlight.js/lib/languages/bash.js';
|
||||||
|
import hljsClojure from 'highlight.js/lib/languages/clojure.js';
|
||||||
|
import hljsCoffeescript from 'highlight.js/lib/languages/coffeescript.js';
|
||||||
|
import hljsCpp from 'highlight.js/lib/languages/cpp.js';
|
||||||
|
import hljsCs from 'highlight.js/lib/languages/cs.js';
|
||||||
|
import hljsCss from 'highlight.js/lib/languages/css.js';
|
||||||
|
import hljsD from 'highlight.js/lib/languages/d.js';
|
||||||
|
import hljsDart from 'highlight.js/lib/languages/dart.js';
|
||||||
|
import hljsDelphi from 'highlight.js/lib/languages/delphi.js';
|
||||||
|
import hljsDiff from 'highlight.js/lib/languages/diff.js';
|
||||||
|
import hljsDjango from 'highlight.js/lib/languages/django.js';
|
||||||
|
import hljsDockerfile from 'highlight.js/lib/languages/dockerfile.js';
|
||||||
|
import hljsErlang from 'highlight.js/lib/languages/erlang.js';
|
||||||
|
import hljsFortran from 'highlight.js/lib/languages/fortran.js';
|
||||||
|
import hljsFsharp from 'highlight.js/lib/languages/fsharp.js';
|
||||||
|
import hljsGcode from 'highlight.js/lib/languages/gcode.js';
|
||||||
|
import hljsGo from 'highlight.js/lib/languages/go.js';
|
||||||
|
import hljsGroovy from 'highlight.js/lib/languages/groovy.js';
|
||||||
|
import hljsHandlebars from 'highlight.js/lib/languages/handlebars.js';
|
||||||
|
import hljsHaskell from 'highlight.js/lib/languages/haskell.js';
|
||||||
|
import hljsHaxe from 'highlight.js/lib/languages/haxe.js';
|
||||||
|
import hljsJava from 'highlight.js/lib/languages/java.js';
|
||||||
|
import hljsJavascript from 'highlight.js/lib/languages/javascript.js';
|
||||||
|
import hljsJson from 'highlight.js/lib/languages/json.js';
|
||||||
|
import hljsJulia from 'highlight.js/lib/languages/julia.js';
|
||||||
|
import hljsKotlin from 'highlight.js/lib/languages/kotlin.js';
|
||||||
|
import hljsLess from 'highlight.js/lib/languages/less.js';
|
||||||
|
import hljsLisp from 'highlight.js/lib/languages/lisp.js';
|
||||||
|
import hljsLua from 'highlight.js/lib/languages/lua.js';
|
||||||
|
import hljsMakefile from 'highlight.js/lib/languages/makefile.js';
|
||||||
|
import hljsMarkdown from 'highlight.js/lib/languages/markdown.js';
|
||||||
|
import hljsMatlab from 'highlight.js/lib/languages/matlab.js';
|
||||||
|
import hljsObjectivec from 'highlight.js/lib/languages/objectivec.js';
|
||||||
|
import hljsOcaml from 'highlight.js/lib/languages/ocaml.js';
|
||||||
|
import hljsPerl from 'highlight.js/lib/languages/perl.js';
|
||||||
|
import hljsPhp from 'highlight.js/lib/languages/php.js';
|
||||||
|
import hljsPowershell from 'highlight.js/lib/languages/powershell.js';
|
||||||
|
import hljsPuppet from 'highlight.js/lib/languages/puppet.js';
|
||||||
|
import hljsPython from 'highlight.js/lib/languages/python.js';
|
||||||
|
import hljsR from 'highlight.js/lib/languages/r.js';
|
||||||
|
import hljsRuby from 'highlight.js/lib/languages/ruby.js';
|
||||||
|
import hljsRust from 'highlight.js/lib/languages/rust.js';
|
||||||
|
import hljsScala from 'highlight.js/lib/languages/scala.js';
|
||||||
|
import hljsScheme from 'highlight.js/lib/languages/scheme.js';
|
||||||
|
import hljsScss from 'highlight.js/lib/languages/scss.js';
|
||||||
|
import hljsSmalltalk from 'highlight.js/lib/languages/smalltalk.js';
|
||||||
|
import hljsSql from 'highlight.js/lib/languages/sql.js';
|
||||||
|
import hljsSwift from 'highlight.js/lib/languages/swift.js';
|
||||||
|
import hljsTex from 'highlight.js/lib/languages/tex.js';
|
||||||
|
import hljsVbnet from 'highlight.js/lib/languages/vbnet.js';
|
||||||
|
import hljsVbscript from 'highlight.js/lib/languages/vbscript.js';
|
||||||
|
import hljsVerilog from 'highlight.js/lib/languages/verilog.js';
|
||||||
|
import hljsXml from 'highlight.js/lib/languages/xml.js';
|
||||||
|
import hljsYaml from 'highlight.js/lib/languages/yaml.js';
|
||||||
|
|
||||||
|
hlJS.registerLanguage('actionscript', hljsActionscript);
|
||||||
|
hlJS.registerLanguage('applescript', hljsApplescript);
|
||||||
|
hlJS.registerLanguage('bash', hljsBash);
|
||||||
|
hlJS.registerLanguage('clojure', hljsClojure);
|
||||||
|
hlJS.registerLanguage('coffeescript', hljsCoffeescript);
|
||||||
|
hlJS.registerLanguage('cpp', hljsCpp);
|
||||||
|
hlJS.registerLanguage('cs', hljsCs);
|
||||||
|
hlJS.registerLanguage('css', hljsCss);
|
||||||
|
hlJS.registerLanguage('d', hljsD);
|
||||||
|
hlJS.registerLanguage('dart', hljsDart);
|
||||||
|
hlJS.registerLanguage('delphi', hljsDelphi);
|
||||||
|
hlJS.registerLanguage('diff', hljsDiff);
|
||||||
|
hlJS.registerLanguage('django', hljsDjango);
|
||||||
|
hlJS.registerLanguage('dockerfile', hljsDockerfile);
|
||||||
|
hlJS.registerLanguage('erlang', hljsErlang);
|
||||||
|
hlJS.registerLanguage('fortran', hljsFortran);
|
||||||
|
hlJS.registerLanguage('fsharp', hljsFsharp);
|
||||||
|
hlJS.registerLanguage('gcode', hljsGcode);
|
||||||
|
hlJS.registerLanguage('go', hljsGo);
|
||||||
|
hlJS.registerLanguage('groovy', hljsGroovy);
|
||||||
|
hlJS.registerLanguage('handlebars', hljsHandlebars);
|
||||||
|
hlJS.registerLanguage('haskell', hljsHaskell);
|
||||||
|
hlJS.registerLanguage('haxe', hljsHaxe);
|
||||||
|
hlJS.registerLanguage('java', hljsJava);
|
||||||
|
hlJS.registerLanguage('javascript', hljsJavascript);
|
||||||
|
hlJS.registerLanguage('json', hljsJson);
|
||||||
|
hlJS.registerLanguage('julia', hljsJulia);
|
||||||
|
hlJS.registerLanguage('kotlin', hljsKotlin);
|
||||||
|
hlJS.registerLanguage('less', hljsLess);
|
||||||
|
hlJS.registerLanguage('lisp', hljsLisp);
|
||||||
|
hlJS.registerLanguage('lua', hljsLua);
|
||||||
|
hlJS.registerLanguage('makefile', hljsMakefile);
|
||||||
|
hlJS.registerLanguage('markdown', hljsMarkdown);
|
||||||
|
hlJS.registerLanguage('matlab', hljsMatlab);
|
||||||
|
hlJS.registerLanguage('objectivec', hljsObjectivec);
|
||||||
|
hlJS.registerLanguage('ocaml', hljsOcaml);
|
||||||
|
hlJS.registerLanguage('perl', hljsPerl);
|
||||||
|
hlJS.registerLanguage('php', hljsPhp);
|
||||||
|
hlJS.registerLanguage('powershell', hljsPowershell);
|
||||||
|
hlJS.registerLanguage('puppet', hljsPuppet);
|
||||||
|
hlJS.registerLanguage('python', hljsPython);
|
||||||
|
hlJS.registerLanguage('r', hljsR);
|
||||||
|
hlJS.registerLanguage('ruby', hljsRuby);
|
||||||
|
hlJS.registerLanguage('rust', hljsRust);
|
||||||
|
hlJS.registerLanguage('scala', hljsScala);
|
||||||
|
hlJS.registerLanguage('scheme', hljsScheme);
|
||||||
|
hlJS.registerLanguage('scss', hljsScss);
|
||||||
|
hlJS.registerLanguage('smalltalk', hljsSmalltalk);
|
||||||
|
hlJS.registerLanguage('sql', hljsSql);
|
||||||
|
hlJS.registerLanguage('swift', hljsSwift);
|
||||||
|
hlJS.registerLanguage('tex', hljsTex);
|
||||||
|
hlJS.registerLanguage('vbnet', hljsVbnet);
|
||||||
|
hlJS.registerLanguage('vbscript', hljsVbscript);
|
||||||
|
hlJS.registerLanguage('verilog', hljsVerilog);
|
||||||
|
hlJS.registerLanguage('xml', hljsXml);
|
||||||
|
hlJS.registerLanguage('yaml', hljsYaml);
|
||||||
|
|
||||||
|
const HighlightedLanguages = Constants.HighlightedLanguages;
|
||||||
|
|
||||||
|
export function formatCode(lang, data, filename) {
|
||||||
|
var language = lang || '';
|
||||||
|
var parsed;
|
||||||
|
var header = '';
|
||||||
|
|
||||||
|
language = language.toLowerCase();
|
||||||
|
|
||||||
|
if (HighlightedLanguages[language]) {
|
||||||
|
var name = HighlightedLanguages[language].name;
|
||||||
|
|
||||||
|
if (filename) {
|
||||||
|
const fname = decodeURIComponent(Utils.getFileName(filename));
|
||||||
|
name = fname + ' - ' + name;
|
||||||
|
}
|
||||||
|
|
||||||
|
header = '<span class="post-body--code__language">' + name + '</span>';
|
||||||
|
|
||||||
|
try {
|
||||||
|
parsed = hlJS.highlight(language, data).value;
|
||||||
|
} catch (e) {
|
||||||
|
parsed = TextFormatting.sanitizeHtml(data);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
parsed = TextFormatting.sanitizeHtml(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
const lines = data.match(/\r\n|\r|\n|$/g).length;
|
||||||
|
var strlines = '';
|
||||||
|
for (var i = 1; i <= lines; i++) {
|
||||||
|
if (strlines) {
|
||||||
|
strlines += '\n' + i;
|
||||||
|
} else {
|
||||||
|
strlines += i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
'<div class="post-body--code">' +
|
||||||
|
header +
|
||||||
|
'<pre>' +
|
||||||
|
'<code class="hljs">' +
|
||||||
|
'<table>' +
|
||||||
|
'<tbody>' +
|
||||||
|
'<tr>' +
|
||||||
|
'<td class="post-body--code__lineno">' + strlines + '</td>' +
|
||||||
|
'<td>' +
|
||||||
|
parsed +
|
||||||
|
'</td>' +
|
||||||
|
'</tr>' +
|
||||||
|
'</tbody>' +
|
||||||
|
'</table>' +
|
||||||
|
'</code>' +
|
||||||
|
'</pre>' +
|
||||||
|
'</div>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getLang(filename) {
|
||||||
|
const fileInfo = Utils.splitFileLocation(filename);
|
||||||
|
var ext = fileInfo.ext;
|
||||||
|
if (!ext) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ext = ext.toLowerCase();
|
||||||
|
for (var key in HighlightedLanguages) {
|
||||||
|
if (HighlightedLanguages[key].extensions.find((x) => x === ext)) {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
@@ -213,6 +213,11 @@ function highlightCurrentMentions(text, tokens) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (const mention of UserStore.getCurrentMentionKeys()) {
|
for (const mention of UserStore.getCurrentMentionKeys()) {
|
||||||
|
// occasionally we get an empty mention which matches a bunch of empty strings
|
||||||
|
if (!mention) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
output = output.replace(new RegExp(`(^|\\W)(${escapeRegex(mention)})\\b`, 'gi'), replaceCurrentMentionWithToken);
|
output = output.replace(new RegExp(`(^|\\W)(${escapeRegex(mention)})\\b`, 'gi'), replaceCurrentMentionWithToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -680,7 +680,7 @@ export function applyTheme(theme) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (theme.centerChannelBg) {
|
if (theme.centerChannelBg) {
|
||||||
changeCss('.app__content, .markdown__table, .markdown__table tbody tr, .suggestion-list__content, .modal .modal-content', 'background:' + theme.centerChannelBg, 1);
|
changeCss('.app__content, .markdown__table, .markdown__table tbody tr, .suggestion-list__content, .modal .modal-content, .modal .modal-back', 'background:' + theme.centerChannelBg, 1);
|
||||||
changeCss('#post-list .post-list-holder-by-time', 'background:' + theme.centerChannelBg, 1);
|
changeCss('#post-list .post-list-holder-by-time', 'background:' + theme.centerChannelBg, 1);
|
||||||
changeCss('#post-create', 'background:' + theme.centerChannelBg, 1);
|
changeCss('#post-create', 'background:' + theme.centerChannelBg, 1);
|
||||||
changeCss('.date-separator .separator__text, .new-separator .separator__text', 'background:' + theme.centerChannelBg, 1);
|
changeCss('.date-separator .separator__text, .new-separator .separator__text', 'background:' + theme.centerChannelBg, 1);
|
||||||
@@ -763,7 +763,6 @@ export function applyTheme(theme) {
|
|||||||
if (theme.buttonBg) {
|
if (theme.buttonBg) {
|
||||||
changeCss('.btn.btn-primary, .tutorial__circles .circle.active', 'background:' + theme.buttonBg, 1);
|
changeCss('.btn.btn-primary, .tutorial__circles .circle.active', 'background:' + theme.buttonBg, 1);
|
||||||
changeCss('.btn.btn-primary:hover, .btn.btn-primary:active, .btn.btn-primary:focus', 'background:' + changeColor(theme.buttonBg, -0.25), 1);
|
changeCss('.btn.btn-primary:hover, .btn.btn-primary:active, .btn.btn-primary:focus', 'background:' + changeColor(theme.buttonBg, -0.25), 1);
|
||||||
changeCss('.file-playback__controls', 'color:' + changeColor(theme.buttonBg, -0.25), 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (theme.buttonColor) {
|
if (theme.buttonColor) {
|
||||||
|
|||||||
@@ -17,20 +17,21 @@ module.exports = {
|
|||||||
loaders: [
|
loaders: [
|
||||||
{
|
{
|
||||||
test: /\.jsx?$/,
|
test: /\.jsx?$/,
|
||||||
loader: 'babel-loader',
|
loader: 'babel',
|
||||||
exclude: /(node_modules|non_npm_dependencies)/,
|
exclude: /(node_modules|non_npm_dependencies)/,
|
||||||
query: {
|
query: {
|
||||||
presets: ['react', 'es2015', 'stage-0'],
|
presets: ['react', 'es2015-webpack', 'stage-0'],
|
||||||
plugins: ['transform-runtime']
|
plugins: ['transform-runtime'],
|
||||||
|
cacheDirectory: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /\.json$/,
|
test: /\.json$/,
|
||||||
loader: 'json-loader'
|
loader: 'json'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /(node_modules|non_npm_dependencies)\/.+\.(js|jsx)$/,
|
test: /(node_modules|non_npm_dependencies)\/.+\.(js|jsx)$/,
|
||||||
loader: 'imports-loader',
|
loader: 'imports',
|
||||||
query: {
|
query: {
|
||||||
$: 'jquery',
|
$: 'jquery',
|
||||||
jQuery: 'jquery'
|
jQuery: 'jquery'
|
||||||
@@ -46,7 +47,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /\.(png|eot|tiff|svg|woff2|woff|ttf|gif)$/,
|
test: /\.(png|eot|tiff|svg|woff2|woff|ttf|gif)$/,
|
||||||
loader: 'file-loader',
|
loader: 'file',
|
||||||
query: {
|
query: {
|
||||||
name: 'files/[hash].[ext]'
|
name: 'files/[hash].[ext]'
|
||||||
}
|
}
|
||||||
@@ -67,7 +68,22 @@ module.exports = {
|
|||||||
htmlExtract,
|
htmlExtract,
|
||||||
new CopyWebpackPlugin([
|
new CopyWebpackPlugin([
|
||||||
{from: 'images/emoji', to: 'emoji'}
|
{from: 'images/emoji', to: 'emoji'}
|
||||||
])
|
]),
|
||||||
|
new webpack.optimize.UglifyJsPlugin({
|
||||||
|
'screw-ie8': true,
|
||||||
|
mangle: {
|
||||||
|
toplevel: false
|
||||||
|
},
|
||||||
|
compress: {
|
||||||
|
warnings: false
|
||||||
|
},
|
||||||
|
comments: false
|
||||||
|
}),
|
||||||
|
new webpack.optimize.AggressiveMergingPlugin(),
|
||||||
|
new webpack.LoaderOptionsPlugin({
|
||||||
|
minimize: true,
|
||||||
|
debug: false
|
||||||
|
})
|
||||||
],
|
],
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user