aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pages/options.coffee24
1 files changed, 18 insertions, 6 deletions
diff --git a/pages/options.coffee b/pages/options.coffee
index c85acd9a..ba1635d5 100644
--- a/pages/options.coffee
+++ b/pages/options.coffee
@@ -38,6 +38,18 @@ class Option
bgSettings.clear @field
@fetch()
+ # Static method.
+ @saveOptions: ->
+ Option.all.map (option) -> option.save()
+ $("saveOptions").disabled = true
+
+ # Used by text options. <ctrl-Enter> saves all options.
+ activateCtrlEnterListener: (element) ->
+ element.addEventListener "keyup", (event) ->
+ if event.ctrlKey and event.keyCode == 13
+ element.blur()
+ Option.saveOptions()
+
# Abstract method; only implemented in sub-classes.
# Populate the option's DOM element (@element) with the setting's current value.
# populateElement: (value) -> DO_SOMETHING
@@ -54,6 +66,7 @@ class TextOption extends Option
constructor: (field,enableSaveButton) ->
super(field,enableSaveButton)
@element.addEventListener "input", enableSaveButton
+ @activateCtrlEnterListener @element
populateElement: (value) -> @element.value = value
readValueFromElement: -> @element.value.trim()
@@ -61,6 +74,8 @@ class NonEmptyTextOption extends Option
constructor: (field,enableSaveButton) ->
super(field,enableSaveButton)
@element.addEventListener "input", enableSaveButton
+ @activateCtrlEnterListener @element
+
populateElement: (value) -> @element.value = value
# If the new value is not empty, then return it. Otherwise, restore the default value.
readValueFromElement: -> if value = @element.value.trim() then value else @restoreToDefault()
@@ -96,7 +111,8 @@ class ExclusionRulesOption extends Option
for field in ["pattern", "passKeys"]
element = row.querySelector ".#{field}"
element.value = rule[field]
- for event in [ "keyup", "change" ]
+ @activateCtrlEnterListener element
+ for event in [ "input", "change" ]
element.addEventListener event, enableSaveButton
remove = row.querySelector ".exclusionRemoveButton"
@@ -137,10 +153,6 @@ class ExclusionRulesOption extends Option
enableSaveButton = ->
$("saveOptions").removeAttribute "disabled"
-saveOptions = ->
- Option.all.map (option) -> option.save()
- $("saveOptions").disabled = true
-
# Display either "linkHintNumbers" or "linkHintCharacters", depending upon "filterLinkHints".
maintainLinkHintsView = ->
hide = (el) -> el.parentNode.parentNode.style.display = "none"
@@ -188,7 +200,7 @@ document.addEventListener "DOMContentLoaded", ->
userDefinedLinkHintCss: TextOption
}
- $("saveOptions").addEventListener "click", saveOptions
+ $("saveOptions").addEventListener "click", Option.saveOptions
$("advancedOptionsLink").addEventListener "click", toggleAdvancedOptions
$("showCommands").addEventListener "click", activateHelpDialog
$("filterLinkHints").addEventListener "click", maintainLinkHintsView