diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-09-12 11:22:17 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-12 11:22:17 -0400 |
commit | 41db9ec89b8eb76009f0cf8894aa0f6e2cc2f8bd (patch) | |
tree | aa58d7b8b7a004c1cd35b43c73c61a654608b400 | |
parent | 568775c6dc9ff4acc2386b8983cda037b87655e0 (diff) |
Use a grid layout for scanning inputs (#814)
-rw-r--r-- | ext/bg/css/settings.css | 62 | ||||
-rw-r--r-- | ext/bg/js/settings/scan-inputs-controller.js | 12 | ||||
-rw-r--r-- | ext/bg/settings.html | 55 |
3 files changed, 76 insertions, 53 deletions
diff --git a/ext/bg/css/settings.css b/ext/bg/css/settings.css index 0bf15f01..a66a0455 100644 --- a/ext/bg/css/settings.css +++ b/ext/bg/css/settings.css @@ -131,20 +131,19 @@ html:root:not([data-options-general-result-output-mode=merge]) #dict-main-group .scan-input-list { counter-reset: scan-input-id; } -.scan-input-table { +.scan-input-grid { + display: grid; + grid-template-columns: auto auto 1fr auto; + grid-template-rows: auto; width: 100%; margin-bottom: 8px; } .scan-input-index-cell { - position: relative; - min-width: 40px; + grid-area: 1/1/4/1; } .scan-input-index { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; + height: 100%; + width: 40px; font-size: 14px; color: #555; background-color: #eee; @@ -168,17 +167,42 @@ html:root:not([data-options-general-result-output-mode=merge]) #dict-main-group background-color: #eee; border: 1px solid #ccc; width: 100%; + height: 100%; } .scan-input-input-cell { width: 100%; } +.scan-input-content-cell .form-control, +.scan-input-content-cell button { + border-radius: 0; +} +.scan-input-prefix-cell[data-property=include] { + grid-area: 1/2/1/2; +} +.scan-input-prefix-cell[data-property=exclude] { + grid-area: 2/2/2/2; +} +.scan-input-prefix-cell[data-property=types] { + grid-area: 3/2/3/2; +} +.scan-input-content-cell[data-property=include] { + grid-area: 1/3/1/3; +} +.scan-input-content-cell[data-property=exclude] { + grid-area: 2/3/2/3; +} +.scan-input-content-cell[data-property=types] { + grid-area: 3/3/3/3; +} +.scan-input-suffix-cell { + grid-area: 1/4/1/4; +} +.scan-input-suffix-cell>button { + height: 100%; +} .scan-input-input-cell-inner { display: flex; } -.scan-input-input-cell-inner .form-control, -.scan-input-input-cell-inner button { - border-radius: 0; -} .scan-input-input-cell-inner button { padding-left: 10px; padding-right: 10px; @@ -186,22 +210,26 @@ html:root:not([data-options-general-result-output-mode=merge]) #dict-main-group .scan-input-input-cell-inner button>span { width: 20px; } -.scan-input-remove-button-cell>button { +.scan-input-suffix-cell>button { border-top-left-radius: 0; border-bottom-left-radius: 0; } -.scan-input tr:last-of-type .scan-input-input-cell-inner button:last-of-type, -.scan-input tr:last-of-type .scan-input-input-cell-inner .form-control:last-of-type { +.scan-input-input-cell-inner>.scan-input-type-list-container { + height: auto; + min-height: 34px; border-bottom-right-radius: 4px; + padding-top: 5px; + padding-bottom: 5px; } .scan-input-type-list { display: flex; + flex-flow: row wrap; + margin-left: -1em; } .scan-input-type { font-weight: normal; margin: 0; -} -.scan-input-type+.scan-input-type { + white-space: nowrap; margin-left: 1em; } .scan-input-type>input[type=checkbox] { diff --git a/ext/bg/js/settings/scan-inputs-controller.js b/ext/bg/js/settings/scan-inputs-controller.js index 3151e4fd..5895ccea 100644 --- a/ext/bg/js/settings/scan-inputs-controller.js +++ b/ext/bg/js/settings/scan-inputs-controller.js @@ -129,10 +129,10 @@ class ScanInputField { prepare(container, include, exclude) { const node = this._instantiateTemplate('#scan-input-template'); - const includeInputNode = node.querySelector('.scan-input-include .scan-input-field'); - const includeMouseButton = node.querySelector('.scan-input-include .mouse-button'); - const excludeInputNode = node.querySelector('.scan-input-exclude .scan-input-field'); - const excludeMouseButton = node.querySelector('.scan-input-exclude .mouse-button'); + const includeInputNode = node.querySelector('.scan-input-field[data-property=include]'); + const includeMouseButton = node.querySelector('.mouse-button[data-property=include]'); + const excludeInputNode = node.querySelector('.scan-input-field[data-property=exclude]'); + const excludeMouseButton = node.querySelector('.mouse-button[data-property=exclude]'); const removeButton = node.querySelector('.scan-input-remove'); this._node = node; @@ -149,8 +149,8 @@ class ScanInputField { this._eventListeners.addEventListener(removeButton, 'click', this._onRemoveClick.bind(this)); for (const typeCheckbox of node.querySelectorAll('.scan-input-type-checkbox')) { - const {type} = typeCheckbox.dataset; - typeCheckbox.dataset.setting = `scanning.inputs[${this._index}].types.${type}`; + const {property} = typeCheckbox.dataset; + typeCheckbox.dataset.setting = `scanning.inputs[${this._index}].types.${property}`; } } diff --git a/ext/bg/settings.html b/ext/bg/settings.html index eb20f5f7..e934a92c 100644 --- a/ext/bg/settings.html +++ b/ext/bg/settings.html @@ -434,36 +434,31 @@ <button class="btn btn-default" id="scan-input-add" title="Add scan input"><span class="glyphicon glyphicon-plus"></span></button> <template id="scan-input-template"><div class="scan-input"> - <table class="scan-input-table"><tbody> - <tr class="scan-input-include"> - <td class="scan-input-index-cell" rowspan="3"><div class="scan-input-index"></div></td> - <td class="scan-input-prefix-cell"><div class="scan-input-prefix">Include</div></td> - <td class="scan-input-input-cell"><div class="scan-input-input-cell-inner"> - <input type="text" class="form-control scan-input-field" placeholder="No inputs"> - <button class="btn btn-default mouse-button" title="Mouse button"><span class="mouse-button-icon"></span></button> - </div></td> - <td class="scan-input-remove-button-cell"><button class="btn btn-danger scan-input-remove" title="Remove"><span class="glyphicon glyphicon-remove"></span></button></td> - </tr> - <tr class="scan-input-exclude"> - <td class="scan-input-prefix-cell"><div class="scan-input-prefix">Exclude</div></td> - <td class="scan-input-input-cell"><div class="scan-input-input-cell-inner"> - <input type="text" class="form-control scan-input-field" placeholder="No inputs"> - <button class="btn btn-default mouse-button" title="Mouse button"><span class="mouse-button-icon"></span></button> - </div></td> - <td class="scan-input-empty-cell"></td> - </tr> - <tr class="scan-input-types"> - <td class="scan-input-prefix-cell"><div class="scan-input-prefix">Types</div></td> - <td class="scan-input-input-cell"><div class="scan-input-input-cell-inner"> - <div class="form-control scan-input-type-list"> - <label class="scan-input-type"><input type="checkbox" class="scan-input-type-checkbox" data-type="mouse"><span>Mouse</span></label> - <label class="scan-input-type"><input type="checkbox" class="scan-input-type-checkbox" data-type="touch"><span>Touch</span></label> - <label class="scan-input-type"><input type="checkbox" class="scan-input-type-checkbox" data-type="pen"><span>Pen</span></label> - </div> - </div></td> - <td class="scan-input-empty-cell"></td> - </tr> - </tbody></table> + <div class="scan-input-grid"> + <div class="scan-input-index-cell"><div class="scan-input-index"></div></div> + + <div class="scan-input-prefix-cell" data-property="include"><div class="scan-input-prefix">Include</div></div> + <div class="scan-input-content-cell" data-property="include"><div class="scan-input-input-cell-inner"> + <input type="text" class="form-control scan-input-field" placeholder="No inputs" data-property="include"> + <button class="btn btn-default mouse-button" title="Mouse button" data-property="include"><span class="mouse-button-icon"></span></button> + </div></div> + <div class="scan-input-suffix-cell"><button class="btn btn-danger scan-input-remove" title="Remove"><span class="glyphicon glyphicon-remove"></span></button></div> + + <div class="scan-input-prefix-cell" data-property="exclude"><div class="scan-input-prefix">Exclude</div></div> + <div class="scan-input-content-cell" data-property="exclude"><div class="scan-input-input-cell-inner"> + <input type="text" class="form-control scan-input-field" placeholder="No inputs" data-property="exclude"> + <button class="btn btn-default mouse-button" title="Mouse button" data-property="exclude"><span class="mouse-button-icon"></span></button> + </div></div> + + <div class="scan-input-prefix-cell" data-property="types"><div class="scan-input-prefix">Types</div></div> + <div class="scan-input-content-cell" data-property="types"><div class="scan-input-input-cell-inner"> + <div class="scan-input-type-list-container form-control"><div class="scan-input-type-list"> + <label class="scan-input-type"><input type="checkbox" class="scan-input-type-checkbox" data-property="mouse"><span>Mouse</span></label> + <label class="scan-input-type"><input type="checkbox" class="scan-input-type-checkbox" data-property="touch"><span>Touch</span></label> + <label class="scan-input-type"><input type="checkbox" class="scan-input-type-checkbox" data-property="pen"><span>Pen</span></label> + </div></div> + </div></div> + </div> </div></template> </div> </div> |