From 8c79b2c5e7e3b25ce5eb0fa94e856b5b9b1f77f1 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sun, 26 Nov 2017 21:06:39 +0900 Subject: fix keymap field --- src/settings/components/form/keymaps-form.jsx | 4 ++-- src/settings/components/form/keymaps-form.scss | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'src/settings/components/form') diff --git a/src/settings/components/form/keymaps-form.jsx b/src/settings/components/form/keymaps-form.jsx index f64320c..8ec0456 100644 --- a/src/settings/components/form/keymaps-form.jsx +++ b/src/settings/components/form/keymaps-form.jsx @@ -62,10 +62,10 @@ class KeymapsForm extends Component { if (!values) { values = {}; } - return
+ return
{ KeyMapFields.map((group, index) => { - return
+ return
{ group.map((field) => { let name = field[0]; diff --git a/src/settings/components/form/keymaps-form.scss b/src/settings/components/form/keymaps-form.scss index 3a83910..1a4e5cd 100644 --- a/src/settings/components/form/keymaps-form.scss +++ b/src/settings/components/form/keymaps-form.scss @@ -1,9 +1,11 @@ .form-keymaps-form { column-count: 3; - .keymap-fields-group { + + &-field-group { margin-top: 24px; } - .keymap-fields-group:first-of-type { - margin-top: 0; + + &-field-group:first-of-type { + margin-top: 24px; } } -- cgit v1.2.3 From 6b7fad3e494ddca1133fd9e9e6c7ebe7479b7f03 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sun, 26 Nov 2017 21:54:27 +0900 Subject: fix form key bindings --- src/settings/components/form/keymaps-form.jsx | 6 ++++-- src/shared/settings/default.js | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src/settings/components/form') diff --git a/src/settings/components/form/keymaps-form.jsx b/src/settings/components/form/keymaps-form.jsx index 8ec0456..ac24689 100644 --- a/src/settings/components/form/keymaps-form.jsx +++ b/src/settings/components/form/keymaps-form.jsx @@ -8,8 +8,10 @@ const KeyMapFields = [ ['scroll.vertically?{"count":-1}', 'Scroll up'], ['scroll.horizonally?{"count":-1}', 'Scroll left'], ['scroll.horizonally?{"count":1}', 'Scroll right'], - ['scroll.home', 'Scroll leftmost'], - ['scroll.end', 'Scroll last'], + ['scroll.home', 'Scroll to leftmost'], + ['scroll.end', 'Scroll to rightmost'], + ['scroll.top', 'Scroll to top'], + ['scroll.bottom', 'Scroll to bottom'], ['scroll.pages?{"count":-0.5}', 'Scroll up by half of screen'], ['scroll.pages?{"count":0.5}', 'Scroll up by half of screen'], ['scroll.pages?{"count":-1}', 'Scroll up by a screen'], diff --git a/src/shared/settings/default.js b/src/shared/settings/default.js index 71465c9..527725a 100644 --- a/src/shared/settings/default.js +++ b/src/shared/settings/default.js @@ -70,6 +70,8 @@ export default { 'scroll.horizonally?{"count":1}': 'l', 'scroll.home': '0', 'scroll.end': '$', + 'scroll.top': 'gg', + 'scroll.bottom': 'G', 'scroll.pages?{"count":-0.5}': '', 'scroll.pages?{"count":0.5}': '', 'scroll.pages?{"count":-1}': '', -- cgit v1.2.3 From 6821372fc71779b458eed52f614d5a15571129d0 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sun, 26 Nov 2017 21:59:29 +0900 Subject: fix form key bindings --- src/settings/components/form/keymaps-form.jsx | 3 ++- src/shared/settings/default.js | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src/settings/components/form') diff --git a/src/settings/components/form/keymaps-form.jsx b/src/settings/components/form/keymaps-form.jsx index ac24689..f99318f 100644 --- a/src/settings/components/form/keymaps-form.jsx +++ b/src/settings/components/form/keymaps-form.jsx @@ -23,7 +23,8 @@ const KeyMapFields = [ ['tabs.prev?{"count":1}', 'Select prev Tab'], ['tabs.first', 'Select first tab'], ['tabs.last', 'Select last tab'], - ['tabs.reload?{"cache":true}', 'Reload current tab'], + ['tabs.reload?{"cache":false}', 'Reload current tab'], + ['tabs.reload?{"cache":true}', 'Reload with no caches'], ['tabs.pin.toggle', 'Toggle pinned state'], ['tabs.duplicate', 'Dupplicate a tab'], ], [ diff --git a/src/shared/settings/default.js b/src/shared/settings/default.js index 527725a..14ed548 100644 --- a/src/shared/settings/default.js +++ b/src/shared/settings/default.js @@ -83,7 +83,8 @@ export default { 'tabs.prev?{"count":1}': 'K', 'tabs.first': 'g0', 'tabs.last': 'g$', - 'tabs.reload?{"cache":true}': 'r', + 'tabs.reload?{"cache":false}': 'r', + 'tabs.reload?{"cache":true}': 'R', 'tabs.pin.toggle': 'zp', 'tabs.duplicate': 'zd', -- cgit v1.2.3 From e1060f9bb218202d13a4382584f220d47173194c Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Tue, 28 Nov 2017 20:45:22 +0900 Subject: remove default form settings --- src/settings/components/form/keymaps-form.jsx | 4 ++ src/settings/components/index.jsx | 15 +++++- src/shared/settings/default.js | 68 --------------------------- src/shared/settings/values.js | 14 +++--- test/shared/settings/values.test.js | 4 +- 5 files changed, 27 insertions(+), 78 deletions(-) (limited to 'src/settings/components/form') diff --git a/src/settings/components/form/keymaps-form.jsx b/src/settings/components/form/keymaps-form.jsx index f99318f..f3b6abe 100644 --- a/src/settings/components/form/keymaps-form.jsx +++ b/src/settings/components/form/keymaps-form.jsx @@ -58,6 +58,8 @@ const KeyMapFields = [ ] ]; +const AllowdOps = [].concat(...KeyMapFields.map(group => group.map(e => e[0]))); + class KeymapsForm extends Component { render() { @@ -99,4 +101,6 @@ class KeymapsForm extends Component { } } +KeymapsForm.AllowdOps = AllowdOps; + export default KeymapsForm; diff --git a/src/settings/components/index.jsx b/src/settings/components/index.jsx index 3961982..38f7db8 100644 --- a/src/settings/components/index.jsx +++ b/src/settings/components/index.jsx @@ -123,6 +123,18 @@ class SettingsComponent extends Component { } } + validateValue(e) { + let next = Object.assign({}, this.state); + + next.errors.json = ''; + try { + this.validate(e.target); + } catch (err) { + next.errors.json = err.message; + } + next.settings[e.target.name] = e.target.value; + } + bindForm(name, value) { let next = Object.assign({}, this.state, { settings: Object.assign({}, this.state.settings, { @@ -164,7 +176,8 @@ class SettingsComponent extends Component { return; } next.settings.form = - settingsValues.formFromJson(this.state.settings.json); + settingsValues.formFromJson( + this.state.settings.json, KeymapsForm.AllowdOps); } next.settings.source = to; diff --git a/src/shared/settings/default.js b/src/shared/settings/default.js index 14ed548..d187565 100644 --- a/src/shared/settings/default.js +++ b/src/shared/settings/default.js @@ -61,72 +61,4 @@ export default { } } }`, - - 'form': { - 'keymaps': { - 'scroll.vertically?{"count":1}': 'j', - 'scroll.vertically?{"count":-1}': 'k', - 'scroll.horizonally?{"count":-1}': 'h', - 'scroll.horizonally?{"count":1}': 'l', - 'scroll.home': '0', - 'scroll.end': '$', - 'scroll.top': 'gg', - 'scroll.bottom': 'G', - 'scroll.pages?{"count":-0.5}': '', - 'scroll.pages?{"count":0.5}': '', - 'scroll.pages?{"count":-1}': '', - 'scroll.pages?{"count":1}': '', - - 'tabs.close': 'd', - 'tabs.reopen': 'u', - 'tabs.next?{"count":1}': 'J', - 'tabs.prev?{"count":1}': 'K', - 'tabs.first': 'g0', - 'tabs.last': 'g$', - 'tabs.reload?{"cache":false}': 'r', - 'tabs.reload?{"cache":true}': 'R', - 'tabs.pin.toggle': 'zp', - 'tabs.duplicate': 'zd', - - 'follow.start?{"newTab":false}': 'f', - 'follow.start?{"newTab":true}': 'F', - 'navigate.history.prev': 'H', - 'navigate.history.next': 'L', - 'navigate.link.next': ']]', - 'navigate.link.prev': '[[', - 'navigate.parent': 'gu', - 'navigate.root': 'gU', - - 'find.start': '/', - 'find.next': 'n', - 'find.prev': 'N', - - 'command.show': ':', - 'command.show.open?{"alter":false}': 'o', - 'command.show.open?{"alter":true}': 'O', - 'command.show.tabopen?{"alter":false}': 't', - 'command.show.tabopen?{"alter":true}': 'T', - 'command.show.winopen?{"alter":false}': 'w', - 'command.show.winopen?{"alter":true}': 'W', - 'command.show.buffer': 'b', - - 'addon.toggle.enabled': '', - 'urls.yank': 'y', - 'zoom.in': 'zi', - 'zoom.out': 'zo', - 'zoom.neutral': 'zz', - }, - 'search': { - 'default': 'google', - 'engines': [ - ['google', 'https,//google.com/search?q={}'], - ['yahoo', 'https,//search.yahoo.com/search?p={}'], - ['bing', 'https,//www.bing.com/search?q={}'], - ['duckduckgo', 'https,//duckduckgo.com/?q={}'], - ['twitter', 'https,//twitter.com/search?q={}'], - ['wikipedia', 'https,//en.wikipedia.org/w/index.php?search={}'], - ] - }, - 'blacklist': [], - } }; diff --git a/src/shared/settings/values.js b/src/shared/settings/values.js index 4482fbb..4e55fa0 100644 --- a/src/shared/settings/values.js +++ b/src/shared/settings/values.js @@ -1,5 +1,3 @@ -import DefaultSettings from './default'; - const operationFromFormName = (name) => { let [type, argStr] = name.split('?'); let args = {}; @@ -55,16 +53,16 @@ const jsonFromValue = (value) => { return JSON.stringify(value, undefined, 2); }; -const formFromValue = (value) => { - +const formFromValue = (value, allowedOps) => { let keymaps = undefined; + if (value.keymaps) { - let allowedOps = new Set(Object.keys(DefaultSettings.form.keymaps)); + let allowedSet = new Set(allowedOps); keymaps = {}; for (let keys of Object.keys(value.keymaps)) { let op = operationToFormName(value.keymaps[keys]); - if (allowedOps.has(op)) { + if (allowedSet.has(op)) { keymaps[op] = keys; } } @@ -89,9 +87,9 @@ const jsonFromForm = (form) => { return jsonFromValue(valueFromForm(form)); }; -const formFromJson = (json) => { +const formFromJson = (json, allowedOps) => { let value = valueFromJson(json); - return formFromValue(value); + return formFromValue(value, allowedOps); }; export { diff --git a/test/shared/settings/values.test.js b/test/shared/settings/values.test.js index 2c222b6..2632cd7 100644 --- a/test/shared/settings/values.test.js +++ b/test/shared/settings/values.test.js @@ -98,9 +98,11 @@ describe("settings values", () => { search: { default: 'google', engines: { google: 'https://google.com/search?q={}' }}, blacklist: [ '*.slack.com'] }; - let form = values.formFromValue(value); + let allowed = ['scroll.vertically?{"count":1}', 'scroll.home' ]; + let form = values.formFromValue(value, allowed); expect(form.keymaps).to.have.property('scroll.vertically?{"count":1}', 'j'); + expect(form.keymaps).to.not.have.property('scroll.vertically?{"count":100}'); expect(form.keymaps).to.have.property('scroll.home', '0'); expect(Object.keys(form.keymaps)).to.have.lengthOf(2); expect(form.search).to.have.property('default', 'google'); -- cgit v1.2.3