diff --git a/assets/trix/stylesheets/icons.scss b/assets/trix/stylesheets/icons.scss index bbfc6e86a..a92d1f543 100644 --- a/assets/trix/stylesheets/icons.scss +++ b/assets/trix/stylesheets/icons.scss @@ -1,3 +1,4 @@ +$icon-attach: svgo-data-uri('trix/images/attach.svg', $precision: 1); $icon-bold: svgo-data-uri('trix/images/bold.svg', $precision: 1); $icon-bullets: svgo-data-uri('trix/images/bullets.svg', $precision: 0); $icon-code: svgo-data-uri('trix/images/code.svg', $precision: 1); diff --git a/assets/trix/stylesheets/toolbar.scss b/assets/trix/stylesheets/toolbar.scss index 7cc6f457d..08921fb1d 100644 --- a/assets/trix/stylesheets/toolbar.scss +++ b/assets/trix/stylesheets/toolbar.scss @@ -120,6 +120,7 @@ trix-toolbar { } } + .trix-button--icon-attach::before { background-image: $icon-attach; top: 8%; bottom: 4%; } .trix-button--icon-bold::before { background-image: $icon-bold; } .trix-button--icon-italic::before { background-image: $icon-italic; } .trix-button--icon-link::before { background-image: $icon-link; } diff --git a/src/trix/config/input.coffee b/src/trix/config/input.coffee index f87328db0..610ea42dc 100644 --- a/src/trix/config/input.coffee +++ b/src/trix/config/input.coffee @@ -6,3 +6,14 @@ Trix.config.input = 2 else 0 + + pickFiles: (callback) -> + input = Trix.makeElement("input", type: "file", multiple: true, hidden: true, id: "trix-file-input") + + input.addEventListener "change", -> + callback(input.files) + Trix.removeNode(input) + + Trix.removeNode(document.getElementById(input.id)) + document.body.appendChild(input) + input.click() diff --git a/src/trix/config/lang.coffee b/src/trix/config/lang.coffee index 8d24c413b..08d5094cc 100644 --- a/src/trix/config/lang.coffee +++ b/src/trix/config/lang.coffee @@ -1,4 +1,5 @@ Trix.config.lang = + attachFiles: "Attach Files" bold: "Bold" bullets: "Bullets" byte: "Byte" diff --git a/src/trix/config/toolbar.coffee b/src/trix/config/toolbar.coffee index 184f951bf..d85c66b65 100755 --- a/src/trix/config/toolbar.coffee +++ b/src/trix/config/toolbar.coffee @@ -20,6 +20,10 @@ Trix.config.toolbar = + + + + diff --git a/src/trix/controllers/editor_controller.coffee b/src/trix/controllers/editor_controller.coffee index a453fb91b..7a6e8bc96 100644 --- a/src/trix/controllers/editor_controller.coffee +++ b/src/trix/controllers/editor_controller.coffee @@ -311,6 +311,9 @@ class Trix.EditorController extends Trix.Controller decreaseNestingLevel: test: -> @editor.canDecreaseNestingLevel() perform: -> @editor.decreaseNestingLevel() and @render() + attachFiles: + test: -> true + perform: -> Trix.config.input.pickFiles(@editor.insertFiles) canInvokeAction: (actionName) -> if @actionIsExternal(actionName) diff --git a/src/trix/models/editor.coffee b/src/trix/models/editor.coffee index d75b64447..e8b25ce1b 100644 --- a/src/trix/models/editor.coffee +++ b/src/trix/models/editor.coffee @@ -48,7 +48,7 @@ class Trix.Editor insertFile: (file) -> @composition.insertFile(file) - insertFiles: (files) -> + insertFiles: (files) => @composition.insertFiles(files) insertHTML: (html) ->