q2-tecton-elements 1.52.2 → 1.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle-report.json +43422 -0
- package/dist/cjs/{action-sheet-d32c41ae.js → action-sheet-8254c0fd.js} +6 -3
- package/dist/cjs/action-sheet-8254c0fd.js.map +1 -0
- package/dist/cjs/click-elsewhere.cjs.entry.js +96 -0
- package/dist/cjs/click-elsewhere.cjs.entry.js.map +1 -0
- package/dist/cjs/{index-07285783.js → index-76f63767.js} +1 -21
- package/dist/cjs/index-76f63767.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-group.cjs.entry.js +38 -17
- package/dist/cjs/q2-action-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
- package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
- package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-badge_7.cjs.entry.js +52 -18
- package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +17 -16
- package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +48 -99
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js +236 -0
- package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-item_3.cjs.entry.js +251 -0
- package/dist/cjs/q2-item_3.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-loc.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
- package/dist/cjs/{q2-option-list.cjs.entry.js → q2-option-list_2.cjs.entry.js} +355 -21
- package/dist/cjs/q2-option-list_2.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-option.cjs.entry.js +18 -4
- package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
- package/dist/cjs/q2-pill.cjs.entry.js +14 -9
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +1 -1
- package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
- package/dist/cjs/q2-resize-observer.cjs.entry.js +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +3 -3
- package/dist/cjs/q2-select.cjs.entry.js +8 -5
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
- package/dist/cjs/q2-tag.cjs.entry.js +9 -4
- package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/q2-action-group/q2-action-group.css +25 -8
- package/dist/collection/components/q2-action-group/q2-action-group.js +55 -33
- package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
- package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js +142 -6
- package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +1 -1
- package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js +126 -62
- package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -1
- package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js +1 -1
- package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-avatar/q2-avatar.css +5 -0
- package/dist/collection/components/q2-btn/q2-btn.css +74 -0
- package/dist/collection/components/q2-btn/q2-btn.js +50 -16
- package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
- package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js +29 -0
- package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +83 -103
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +188 -24
- package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +1 -1
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +54 -16
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.css +307 -0
- package/dist/collection/components/q2-file-picker/q2-file-picker.js +426 -0
- package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js +11 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js +435 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js.map +1 -0
- package/dist/collection/components/q2-item/q2-item.css +3 -0
- package/dist/collection/components/q2-link/q2-link.js +26 -7
- package/dist/collection/components/q2-link/q2-link.js.map +1 -1
- package/dist/collection/components/q2-link/test/q2-link-test.e2e.js +20 -118
- package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-link/test/q2-link-test.spec.js +193 -0
- package/dist/collection/components/q2-link/test/q2-link-test.spec.js.map +1 -0
- package/dist/collection/components/q2-list/q2-list.css +6 -0
- package/dist/collection/components/q2-loading/q2-loading.js +1 -1
- package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
- package/dist/collection/components/q2-option/q2-option.css +9 -3
- package/dist/collection/components/q2-option/q2-option.js +37 -4
- package/dist/collection/components/q2-option/q2-option.js.map +1 -1
- package/dist/collection/components/q2-option/test/q2-option-test.spec.js +22 -0
- package/dist/collection/components/q2-option/test/q2-option-test.spec.js.map +1 -1
- package/dist/collection/components/q2-option-list/q2-option-list.js +56 -29
- package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
- package/dist/collection/components/q2-option-list/test/q2-option-list.spec.js +489 -0
- package/dist/collection/components/q2-option-list/test/q2-option-list.spec.js.map +1 -0
- package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
- package/dist/collection/components/q2-pill/q2-pill.js +12 -7
- package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
- package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +109 -1
- package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-popover/q2-popover.js +1 -1
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-select/q2-select.js +7 -4
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +1 -14
- package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tag/q2-tag.js +7 -2
- package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
- package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +1 -1
- package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/collection/utils/action-sheet.js +5 -2
- package/dist/collection/utils/action-sheet.js.map +1 -1
- package/dist/collection/utils/helpers.js +29 -3
- package/dist/collection/utils/helpers.js.map +1 -1
- package/dist/collection/utils/test/action-sheet-test.e2e.js +34 -6
- package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -1
- package/dist/components/action-sheet.js +6 -3
- package/dist/components/action-sheet.js.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/index2.js +1 -20
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-action-group.js +41 -19
- package/dist/components/q2-action-group.js.map +1 -1
- package/dist/components/q2-avatar2.js +1 -1
- package/dist/components/q2-avatar2.js.map +1 -1
- package/dist/components/q2-btn2.js +50 -16
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-dropdown-item2.js +19 -17
- package/dist/components/q2-dropdown-item2.js.map +1 -1
- package/dist/components/q2-dropdown.js +67 -110
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-file-picker.d.ts +11 -0
- package/dist/components/q2-file-picker.js +301 -0
- package/dist/components/q2-file-picker.js.map +1 -0
- package/dist/components/q2-item.js +1 -130
- package/dist/components/q2-item.js.map +1 -1
- package/dist/{esm/q2-item.entry.js → components/q2-item2.js} +29 -11
- package/dist/components/q2-item2.js.map +1 -0
- package/dist/components/q2-link.js +1 -86
- package/dist/components/q2-link.js.map +1 -1
- package/dist/{esm/q2-link.entry.js → components/q2-link2.js} +42 -10
- package/dist/components/q2-link2.js.map +1 -0
- package/dist/components/q2-list.js +1 -94
- package/dist/components/q2-list.js.map +1 -1
- package/dist/{esm/q2-list.entry.js → components/q2-list2.js} +30 -11
- package/dist/components/q2-list2.js.map +1 -0
- package/dist/components/q2-loading2.js.map +1 -1
- package/dist/components/q2-option-list2.js +44 -19
- package/dist/components/q2-option-list2.js.map +1 -1
- package/dist/components/q2-option2.js +20 -4
- package/dist/components/q2-option2.js.map +1 -1
- package/dist/components/q2-pagination.js +3 -3
- package/dist/components/q2-pill.js +13 -8
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-popover2.js +1 -1
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-relative-time.js +1 -1
- package/dist/components/q2-resize-observer2.js +1 -1
- package/dist/components/q2-section.js +2 -2
- package/dist/components/q2-select2.js +8 -5
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +1 -1
- package/dist/components/q2-stepper.js +1 -1
- package/dist/components/q2-tab-container.js +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tag.js +8 -3
- package/dist/components/q2-tag.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/{action-sheet-e64cb6f7.js → action-sheet-1e24cb38.js} +7 -4
- package/dist/esm/action-sheet-1e24cb38.js.map +1 -0
- package/dist/esm/click-elsewhere.entry.js +92 -0
- package/dist/esm/click-elsewhere.entry.js.map +1 -0
- package/dist/esm/{index-d18e2a20.js → index-504f1a9e.js} +2 -21
- package/dist/esm/index-504f1a9e.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-group.entry.js +39 -18
- package/dist/esm/q2-action-group.entry.js.map +1 -1
- package/dist/esm/q2-action-sheet.entry.js +1 -1
- package/dist/esm/q2-avatar.entry.js +1 -1
- package/dist/esm/q2-avatar.entry.js.map +1 -1
- package/dist/esm/q2-badge_7.entry.js +52 -18
- package/dist/esm/q2-badge_7.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +1 -1
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +1 -1
- package/dist/esm/q2-carousel.entry.js +1 -1
- package/dist/esm/q2-chart-area.entry.js +1 -1
- package/dist/esm/q2-chart-bar.entry.js +1 -1
- package/dist/esm/q2-chart-donut.entry.js +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +1 -1
- package/dist/esm/q2-checkbox.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +1 -1
- package/dist/esm/q2-detail.entry.js +1 -1
- package/dist/esm/q2-dropdown-item.entry.js +18 -17
- package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +48 -99
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js +232 -0
- package/dist/esm/q2-file-picker.entry.js.map +1 -0
- package/dist/esm/q2-item_3.entry.js +245 -0
- package/dist/esm/q2-item_3.entry.js.map +1 -0
- package/dist/esm/q2-loc.entry.js +1 -1
- package/dist/esm/q2-message.entry.js +1 -1
- package/dist/esm/q2-month-picker.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +1 -1
- package/dist/esm/{q2-option-list.entry.js → q2-option-list_2.entry.js} +355 -22
- package/dist/esm/q2-option-list_2.entry.js.map +1 -0
- package/dist/esm/q2-option.entry.js +18 -4
- package/dist/esm/q2-option.entry.js.map +1 -1
- package/dist/esm/q2-pagination.entry.js +4 -4
- package/dist/esm/q2-pill.entry.js +14 -9
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +1 -1
- package/dist/esm/q2-radio.entry.js +1 -1
- package/dist/esm/q2-relative-time.entry.js +2 -2
- package/dist/esm/q2-resize-observer.entry.js +1 -1
- package/dist/esm/q2-section.entry.js +3 -3
- package/dist/esm/q2-select.entry.js +8 -5
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +2 -2
- package/dist/esm/q2-stepper.entry.js +2 -2
- package/dist/esm/q2-tag.entry.js +9 -4
- package/dist/esm/q2-tag.entry.js.map +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +1 -1
- package/dist/esm/q2-tooltip.entry.js +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/q2-tecton-elements/action-sheet-1e24cb38.js +80 -0
- package/dist/q2-tecton-elements/action-sheet-1e24cb38.js.map +1 -0
- package/dist/q2-tecton-elements/click-elsewhere.entry.js +90 -0
- package/dist/q2-tecton-elements/click-elsewhere.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{index-d18e2a20.js → index-504f1a9e.js} +51 -69
- package/dist/q2-tecton-elements/index-504f1a9e.js.map +1 -0
- package/dist/q2-tecton-elements/q2-action-group.entry.js +57 -33
- package/dist/q2-tecton-elements/q2-action-group.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-badge_7.entry.js +222 -181
- package/dist/q2-tecton-elements/q2-badge_7.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-checkbox.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +34 -34
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +86 -137
- package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js +339 -0
- package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-item_3.entry.js +332 -0
- package/dist/q2-tecton-elements/q2-item_3.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-option-list_2.entry.js +902 -0
- package/dist/q2-tecton-elements/q2-option-list_2.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-option.entry.js +31 -21
- package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.js +34 -34
- package/dist/q2-tecton-elements/q2-pill.entry.js +24 -20
- package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-resize-observer.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-section.entry.js +19 -19
- package/dist/q2-tecton-elements/q2-select.entry.js +21 -18
- package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +37 -37
- package/dist/q2-tecton-elements/q2-stepper.entry.js +29 -29
- package/dist/q2-tecton-elements/q2-tag.entry.js +15 -11
- package/dist/q2-tecton-elements/q2-tag.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
- package/dist/types/components/q2-action-group/q2-action-group.d.ts +19 -11
- package/dist/types/components/q2-btn/q2-btn.d.ts +8 -3
- package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +18 -9
- package/dist/types/components/q2-dropdown-item/q2-dropdown-item.d.ts +14 -1
- package/dist/types/components/q2-file-picker/q2-file-picker.d.ts +98 -0
- package/dist/types/components/q2-link/q2-link.d.ts +8 -6
- package/dist/types/components/q2-loading/q2-loading.d.ts +2 -2
- package/dist/types/components/q2-option/q2-option.d.ts +10 -1
- package/dist/types/components/q2-option-list/q2-option-list.d.ts +9 -8
- package/dist/types/components/q2-pill/q2-pill.d.ts +2 -2
- package/dist/types/components.d.ts +192 -28
- package/dist/types/util.d.ts +1 -0
- package/dist/types/utils/helpers.d.ts +1 -1
- package/package.json +4 -3
- package/dist/cjs/action-sheet-d32c41ae.js.map +0 -1
- package/dist/cjs/click-elsewhere_2.cjs.entry.js +0 -406
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +0 -1
- package/dist/cjs/index-07285783.js.map +0 -1
- package/dist/cjs/q2-item.cjs.entry.js +0 -120
- package/dist/cjs/q2-item.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-link.cjs.entry.js +0 -64
- package/dist/cjs/q2-link.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-list.cjs.entry.js +0 -83
- package/dist/cjs/q2-list.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-option-list.cjs.entry.js.map +0 -1
- package/dist/esm/action-sheet-e64cb6f7.js.map +0 -1
- package/dist/esm/click-elsewhere_2.entry.js +0 -401
- package/dist/esm/click-elsewhere_2.entry.js.map +0 -1
- package/dist/esm/index-d18e2a20.js.map +0 -1
- package/dist/esm/q2-item.entry.js.map +0 -1
- package/dist/esm/q2-link.entry.js.map +0 -1
- package/dist/esm/q2-list.entry.js.map +0 -1
- package/dist/esm/q2-option-list.entry.js.map +0 -1
- package/dist/q2-tecton-elements/action-sheet-e64cb6f7.js +0 -77
- package/dist/q2-tecton-elements/action-sheet-e64cb6f7.js.map +0 -1
- package/dist/q2-tecton-elements/click-elsewhere_2.entry.js +0 -398
- package/dist/q2-tecton-elements/click-elsewhere_2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/index-d18e2a20.js.map +0 -1
- package/dist/q2-tecton-elements/q2-item.entry.js +0 -158
- package/dist/q2-tecton-elements/q2-item.entry.js.map +0 -1
- package/dist/q2-tecton-elements/q2-link.entry.js +0 -83
- package/dist/q2-tecton-elements/q2-link.entry.js.map +0 -1
- package/dist/q2-tecton-elements/q2-list.entry.js +0 -100
- package/dist/q2-tecton-elements/q2-list.entry.js.map +0 -1
- package/dist/q2-tecton-elements/q2-option-list.entry.js +0 -585
- package/dist/q2-tecton-elements/q2-option-list.entry.js.map +0 -1
|
@@ -1,585 +0,0 @@
|
|
|
1
|
-
import { r as t, c as e, h as s, H as i, g as n } from "./index-7a5365e2.js";
|
|
2
|
-
|
|
3
|
-
import { n as o, l as h, o as a, i as c, w as r, x as l } from "./index-d18e2a20.js";
|
|
4
|
-
|
|
5
|
-
function sanitizeRegexString(t) {
|
|
6
|
-
return t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const d = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{position:relative;width:100%;display:block;line-height:var(--tct-option-list-line-height, var(--t-option-list-line-height, var(--app-line-height, 1.428571429em)))}.content{text-align:start}:host([is-sizeable]) .content{display:block;height:auto}";
|
|
10
|
-
|
|
11
|
-
const f = d;
|
|
12
|
-
|
|
13
|
-
const p = class {
|
|
14
|
-
constructor(s) {
|
|
15
|
-
t(this, s);
|
|
16
|
-
this.change = e(this, "change", 7);
|
|
17
|
-
this.popoverState = e(this, "popoverState", 7);
|
|
18
|
-
this.ready = e(this, "ready", 3);
|
|
19
|
-
this.keyStore = {
|
|
20
|
-
queue: [],
|
|
21
|
-
lastPressedAt: new Date
|
|
22
|
-
};
|
|
23
|
-
this.scheduledAfterRender = [];
|
|
24
|
-
this.clickHandler = t => {
|
|
25
|
-
const e = t.target;
|
|
26
|
-
const s = e.closest("q2-option");
|
|
27
|
-
this.selectOption(s);
|
|
28
|
-
if (this.multiple) return;
|
|
29
|
-
this.popoverState.emit({
|
|
30
|
-
open: false,
|
|
31
|
-
action: "select"
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
/* tslint:disable:cyclomatic-complexity */ this.externalKeydownHandler = t => {
|
|
35
|
-
t.stopPropagation();
|
|
36
|
-
const {activeIndex: e, customSearch: s, allOptions: i} = this;
|
|
37
|
-
const {key: n} = t;
|
|
38
|
-
let h;
|
|
39
|
-
switch (n) {
|
|
40
|
-
case " ":
|
|
41
|
-
if (this.searchString) {
|
|
42
|
-
if (s) break;
|
|
43
|
-
this.searchOptions(n, true);
|
|
44
|
-
break;
|
|
45
|
-
} else if (this.type === "menu") {
|
|
46
|
-
this.activeIndex = 0;
|
|
47
|
-
this.openDropdownWithActiveElement(0);
|
|
48
|
-
} else {
|
|
49
|
-
this.setDefaultActiveElement();
|
|
50
|
-
o((() => this.popoverState.emit({
|
|
51
|
-
open: true,
|
|
52
|
-
action: "open"
|
|
53
|
-
})));
|
|
54
|
-
}
|
|
55
|
-
break;
|
|
56
|
-
|
|
57
|
-
case "Enter":
|
|
58
|
-
if (this.type === "menu") {
|
|
59
|
-
this.activeIndex = 0;
|
|
60
|
-
this.openDropdownWithActiveElement(0);
|
|
61
|
-
} else {
|
|
62
|
-
this.setDefaultActiveElement();
|
|
63
|
-
o((() => this.popoverState.emit({
|
|
64
|
-
open: true,
|
|
65
|
-
action: "open"
|
|
66
|
-
})));
|
|
67
|
-
}
|
|
68
|
-
break;
|
|
69
|
-
|
|
70
|
-
case "ArrowUp":
|
|
71
|
-
t.preventDefault();
|
|
72
|
-
h = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(-1);
|
|
73
|
-
if (h === -1) break;
|
|
74
|
-
this.openDropdownWithActiveElement(h);
|
|
75
|
-
break;
|
|
76
|
-
|
|
77
|
-
case "ArrowDown":
|
|
78
|
-
t.preventDefault();
|
|
79
|
-
h = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(1);
|
|
80
|
-
if (h === -1) break;
|
|
81
|
-
this.openDropdownWithActiveElement(h);
|
|
82
|
-
break;
|
|
83
|
-
|
|
84
|
-
case "Home":
|
|
85
|
-
t.preventDefault();
|
|
86
|
-
this.openDropdownWithActiveElement(0);
|
|
87
|
-
break;
|
|
88
|
-
|
|
89
|
-
case "End":
|
|
90
|
-
t.preventDefault();
|
|
91
|
-
this.openDropdownWithActiveElement(i.length - 1);
|
|
92
|
-
break;
|
|
93
|
-
|
|
94
|
-
case "PageUp":
|
|
95
|
-
t.preventDefault();
|
|
96
|
-
this.openDropdownWithActiveElement(Math.max((e || 0) - 10, 0));
|
|
97
|
-
break;
|
|
98
|
-
|
|
99
|
-
case "PageDown":
|
|
100
|
-
t.preventDefault();
|
|
101
|
-
this.openDropdownWithActiveElement(Math.min((e || 0) + 10, i.length - 1));
|
|
102
|
-
break;
|
|
103
|
-
|
|
104
|
-
case "Tab":
|
|
105
|
-
this.popoverState.emit({
|
|
106
|
-
open: false,
|
|
107
|
-
action: "close"
|
|
108
|
-
});
|
|
109
|
-
break;
|
|
110
|
-
|
|
111
|
-
case "Esc":
|
|
112
|
-
case "Escape":
|
|
113
|
-
if (this.noSelect) this.setActiveElement(null);
|
|
114
|
-
this.popoverState.emit({
|
|
115
|
-
open: false,
|
|
116
|
-
action: "close"
|
|
117
|
-
});
|
|
118
|
-
break;
|
|
119
|
-
|
|
120
|
-
default:
|
|
121
|
-
if (s) break;
|
|
122
|
-
if (!n.match(/^[\w]$/)) break;
|
|
123
|
-
this.searchOptions(n, true);
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
/* tslint:enable:cyclomatic-complexity */ this.focusoutHandler = t => {
|
|
128
|
-
const {relatedTarget: e} = t;
|
|
129
|
-
const s = this.allOptions.includes(e);
|
|
130
|
-
const i = !s && this.hostElement.contains(e);
|
|
131
|
-
if (s || i) {
|
|
132
|
-
t.stopPropagation();
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
this.internalKeydownHandler = t => {
|
|
136
|
-
t.stopPropagation();
|
|
137
|
-
const {activeIndex: e, customSearch: s, allOptions: i, allVisibleOptions: n, multiple: o} = this;
|
|
138
|
-
const {key: h, shiftKey: a} = t;
|
|
139
|
-
let c;
|
|
140
|
-
switch (h) {
|
|
141
|
-
case " ":
|
|
142
|
-
if (this.searchString && !this.multiple) {
|
|
143
|
-
if (s) break;
|
|
144
|
-
this.searchOptions(h, false);
|
|
145
|
-
break;
|
|
146
|
-
}
|
|
147
|
-
t.preventDefault();
|
|
148
|
-
c = i.find((t => t.active));
|
|
149
|
-
if (!c || c.disabled) break;
|
|
150
|
-
this.selectOption(c);
|
|
151
|
-
if (o) break;
|
|
152
|
-
this.popoverState.emit({
|
|
153
|
-
open: false,
|
|
154
|
-
action: "select"
|
|
155
|
-
});
|
|
156
|
-
break;
|
|
157
|
-
|
|
158
|
-
case "Enter":
|
|
159
|
-
t.preventDefault();
|
|
160
|
-
c = i.find((t => t.active));
|
|
161
|
-
if (!c || c.disabled) break;
|
|
162
|
-
this.selectOption(c);
|
|
163
|
-
if (o) break;
|
|
164
|
-
this.popoverState.emit({
|
|
165
|
-
open: false,
|
|
166
|
-
action: "select"
|
|
167
|
-
});
|
|
168
|
-
break;
|
|
169
|
-
|
|
170
|
-
case "ArrowUp":
|
|
171
|
-
t.preventDefault();
|
|
172
|
-
const r = n[0].active;
|
|
173
|
-
if (r) break;
|
|
174
|
-
if (e === undefined) {
|
|
175
|
-
this.setDefaultActiveElement();
|
|
176
|
-
break;
|
|
177
|
-
} else {
|
|
178
|
-
const t = this.getNextVisibleIndex(-1);
|
|
179
|
-
if (t === -1) break;
|
|
180
|
-
this.adjustActiveOptionAndScroll(t - e);
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
case "ArrowDown":
|
|
185
|
-
t.preventDefault();
|
|
186
|
-
const l = n[n.length - 1].active;
|
|
187
|
-
if (l) break;
|
|
188
|
-
if (e === undefined) {
|
|
189
|
-
this.setDefaultActiveElement();
|
|
190
|
-
break;
|
|
191
|
-
} else {
|
|
192
|
-
const t = this.getNextVisibleIndex(1);
|
|
193
|
-
if (t === -1) break;
|
|
194
|
-
this.adjustActiveOptionAndScroll(t - e);
|
|
195
|
-
break;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
case "Home":
|
|
199
|
-
t.preventDefault();
|
|
200
|
-
this.openDropdownWithActiveElement(0);
|
|
201
|
-
break;
|
|
202
|
-
|
|
203
|
-
case "End":
|
|
204
|
-
t.preventDefault();
|
|
205
|
-
this.openDropdownWithActiveElement(i.length - 1);
|
|
206
|
-
break;
|
|
207
|
-
|
|
208
|
-
case "PageUp":
|
|
209
|
-
t.preventDefault();
|
|
210
|
-
this.openDropdownWithActiveElement(Math.max(e - 10, 0));
|
|
211
|
-
break;
|
|
212
|
-
|
|
213
|
-
case "PageDown":
|
|
214
|
-
t.preventDefault();
|
|
215
|
-
this.openDropdownWithActiveElement(Math.min(e + 10, i.length - 1));
|
|
216
|
-
break;
|
|
217
|
-
|
|
218
|
-
case "Tab":
|
|
219
|
-
if (a) break;
|
|
220
|
-
if (this.multiple && this.type === "listbox") break;
|
|
221
|
-
if (this.type === "menu") {
|
|
222
|
-
this.popoverState.emit({
|
|
223
|
-
open: false,
|
|
224
|
-
action: "close"
|
|
225
|
-
});
|
|
226
|
-
break;
|
|
227
|
-
}
|
|
228
|
-
c = i.find((t => t.active));
|
|
229
|
-
if (!c || c.disabled) return;
|
|
230
|
-
this.selectOption(c);
|
|
231
|
-
break;
|
|
232
|
-
|
|
233
|
-
case "Esc":
|
|
234
|
-
case "Escape":
|
|
235
|
-
if (this.noSelect) this.setActiveElement(null);
|
|
236
|
-
this.popoverState.emit({
|
|
237
|
-
open: false,
|
|
238
|
-
action: "close"
|
|
239
|
-
});
|
|
240
|
-
break;
|
|
241
|
-
|
|
242
|
-
default:
|
|
243
|
-
if (s) break;
|
|
244
|
-
if (!h.match(/^[\w]$/)) break;
|
|
245
|
-
this.searchOptions(h, false);
|
|
246
|
-
break;
|
|
247
|
-
}
|
|
248
|
-
};
|
|
249
|
-
this.searchAndFocus = (t, e) => {
|
|
250
|
-
// pseudo search in non-searchable select
|
|
251
|
-
const reorder = () => {
|
|
252
|
-
this.pivotIndex = this.pivotIndex === undefined ? 0 : (this.activeIndex || 0) + 1;
|
|
253
|
-
const t = this.allOptions.map(((t, e) => ({
|
|
254
|
-
element: t,
|
|
255
|
-
index: e
|
|
256
|
-
})));
|
|
257
|
-
return [ ...t.slice(this.pivotIndex), ...t.slice(0, this.pivotIndex) ];
|
|
258
|
-
};
|
|
259
|
-
const buildQueue = () => {
|
|
260
|
-
const e = new Date;
|
|
261
|
-
if (e.getTime() - this.keyStore.lastPressedAt.getTime() > 1e3) {
|
|
262
|
-
// empty stored keys if delay > 1s
|
|
263
|
-
this.keyStore.queue.length = 0;
|
|
264
|
-
}
|
|
265
|
-
if (this.keyStore.queue.length !== 1 || this.keyStore.queue[0] !== t) {
|
|
266
|
-
this.keyStore.queue.push(t);
|
|
267
|
-
}
|
|
268
|
-
this.keyStore.lastPressedAt = e;
|
|
269
|
-
};
|
|
270
|
-
const searchIndex = t => {
|
|
271
|
-
const e = this.keyStore.queue.join("");
|
|
272
|
-
const s = sanitizeRegexString(e);
|
|
273
|
-
return t.find((t => !t.element.disabled && t.element.display && (t.element.display.match(new RegExp(`^${s}`, "i")) || t.element.display.replace(/\s/g, "").match(new RegExp(`^${s}`, "i")))));
|
|
274
|
-
};
|
|
275
|
-
const setFocus = ({index: t}) => {
|
|
276
|
-
if (this.multiple) {
|
|
277
|
-
// multiple: should open to make sure that which options are selected
|
|
278
|
-
this.openDropdownWithActiveElement(t);
|
|
279
|
-
} else {
|
|
280
|
-
this.activeIndex = t;
|
|
281
|
-
if (e) {
|
|
282
|
-
this.selectOption(this.allOptions[t]);
|
|
283
|
-
this.popoverState.emit({
|
|
284
|
-
open: false,
|
|
285
|
-
action: "select"
|
|
286
|
-
});
|
|
287
|
-
} else this.setActiveElement(t);
|
|
288
|
-
}
|
|
289
|
-
};
|
|
290
|
-
buildQueue();
|
|
291
|
-
const s = searchIndex(reorder());
|
|
292
|
-
if (s) {
|
|
293
|
-
setFocus(s);
|
|
294
|
-
}
|
|
295
|
-
};
|
|
296
|
-
this.hasOptions = undefined;
|
|
297
|
-
this.align = undefined;
|
|
298
|
-
this.customSearch = undefined;
|
|
299
|
-
this.disabled = undefined;
|
|
300
|
-
this.label = h("tecton.element.optionList.label");
|
|
301
|
-
this.multiple = undefined;
|
|
302
|
-
this.noSelect = undefined;
|
|
303
|
-
this.selectedOptions = [];
|
|
304
|
-
this.showSelected = undefined;
|
|
305
|
-
this.type = "listbox";
|
|
306
|
-
}
|
|
307
|
-
// #endregion
|
|
308
|
-
// #region Component Lifecycle Events
|
|
309
|
-
componentWillLoad() {
|
|
310
|
-
this.hasOptions = !!this.hostElement.querySelectorAll("q2-option").length;
|
|
311
|
-
}
|
|
312
|
-
componentDidLoad() {
|
|
313
|
-
a(this.hostElement);
|
|
314
|
-
this.checkOptions();
|
|
315
|
-
this.selectedOptionsUpdated();
|
|
316
|
-
this.ready.emit();
|
|
317
|
-
}
|
|
318
|
-
componentDidRender() {
|
|
319
|
-
this.scheduledAfterRender.forEach((t => t()));
|
|
320
|
-
this.scheduledAfterRender = [];
|
|
321
|
-
}
|
|
322
|
-
// #endregion
|
|
323
|
-
// #region Listeners
|
|
324
|
-
handleClick(t) {
|
|
325
|
-
t.stopPropagation();
|
|
326
|
-
}
|
|
327
|
-
delegateFocus(t) {
|
|
328
|
-
if (!c(t, this.hostElement)) return;
|
|
329
|
-
this.popoverState.emit({
|
|
330
|
-
open: true,
|
|
331
|
-
action: "open"
|
|
332
|
-
});
|
|
333
|
-
const {activeIndex: e} = this;
|
|
334
|
-
if (typeof e === "number" && e > -1) {
|
|
335
|
-
this.setActiveOption();
|
|
336
|
-
this.setFocusedOption();
|
|
337
|
-
} else {
|
|
338
|
-
this.setDefaultActiveElement();
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
// #endregion
|
|
342
|
-
// #region Public Methods API
|
|
343
|
-
async getContents() {
|
|
344
|
-
return this.allContents;
|
|
345
|
-
}
|
|
346
|
-
async getOptions() {
|
|
347
|
-
return this.allOptions;
|
|
348
|
-
}
|
|
349
|
-
async handleExternalKeydown(t) {
|
|
350
|
-
this.externalKeydownHandler(t);
|
|
351
|
-
}
|
|
352
|
-
async setActiveElement(t) {
|
|
353
|
-
this.activeIndex = t;
|
|
354
|
-
this.setActiveOption();
|
|
355
|
-
this.setFocusedOption();
|
|
356
|
-
}
|
|
357
|
-
async setDefaultActiveElement() {
|
|
358
|
-
this.activeIndex = this.getDefaultActiveIndex();
|
|
359
|
-
this.setActiveOption();
|
|
360
|
-
this.setFocusedOption();
|
|
361
|
-
}
|
|
362
|
-
// #endregion
|
|
363
|
-
// #region Watchers
|
|
364
|
-
selectedOptionsUpdated() {
|
|
365
|
-
if (this.multiple) {
|
|
366
|
-
this.updateMultipleOptionAttrs();
|
|
367
|
-
} else {
|
|
368
|
-
this.updateSingleOptionAttrs();
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
showSelectedUpdated(t) {
|
|
372
|
-
if (t && this.selectedOptions.length === 0) {
|
|
373
|
-
this.showSelected = false;
|
|
374
|
-
return;
|
|
375
|
-
}
|
|
376
|
-
this.allOptions.forEach((e => e._multiSelectHidden = t ? !e.selected : false));
|
|
377
|
-
}
|
|
378
|
-
// #endregion
|
|
379
|
-
// #region Local Methods
|
|
380
|
-
get allContents() {
|
|
381
|
-
const t = this.getRootSlot(this.hostElement);
|
|
382
|
-
const e = [ "Q2-OPTGROUP", "Q2-OPTION" ];
|
|
383
|
-
return t.filter((t => e.includes(t.tagName)));
|
|
384
|
-
}
|
|
385
|
-
get allOptions() {
|
|
386
|
-
const t = this.allContents;
|
|
387
|
-
const extractOptions = t => t.reduce(((t, e) => {
|
|
388
|
-
if (e.tagName === "Q2-OPTGROUP") {
|
|
389
|
-
return [ ...t, ...extractOptions(Array.from(e.children)) ];
|
|
390
|
-
} else if (e.tagName === "Q2-OPTION") {
|
|
391
|
-
return [ ...t, e ];
|
|
392
|
-
} else {
|
|
393
|
-
return t;
|
|
394
|
-
}
|
|
395
|
-
}), []);
|
|
396
|
-
return extractOptions(t);
|
|
397
|
-
}
|
|
398
|
-
get allVisibleOptions() {
|
|
399
|
-
return this.allOptions.filter((t => !t.hidden && !t._multiSelectHidden && !t.disabled && !t.disabledGroup));
|
|
400
|
-
}
|
|
401
|
-
adjustActiveOptionAndScroll(t) {
|
|
402
|
-
this.activeIndex += t;
|
|
403
|
-
this.setActiveOption();
|
|
404
|
-
this.setFocusedOption();
|
|
405
|
-
this.scrollToActiveOption();
|
|
406
|
-
}
|
|
407
|
-
async checkOptions() {
|
|
408
|
-
const {type: t} = this;
|
|
409
|
-
const e = await this.getOptions();
|
|
410
|
-
if (!t) return;
|
|
411
|
-
const s = t === "menu" ? "menuitem" : "option";
|
|
412
|
-
e.forEach((t => {
|
|
413
|
-
t.role = s;
|
|
414
|
-
}));
|
|
415
|
-
}
|
|
416
|
-
focusSelectedSibling(t) {
|
|
417
|
-
const {allVisibleOptions: e, allOptions: s} = this;
|
|
418
|
-
const i = e.length < 2;
|
|
419
|
-
if (i) {
|
|
420
|
-
this.showSelected = false;
|
|
421
|
-
return;
|
|
422
|
-
}
|
|
423
|
-
const n = e.indexOf(t);
|
|
424
|
-
const o = n ? n - 1 : n + 1;
|
|
425
|
-
const h = e[o];
|
|
426
|
-
const a = s.indexOf(h);
|
|
427
|
-
this.activeIndex = a;
|
|
428
|
-
this.setFocusedOption();
|
|
429
|
-
this.scheduledAfterRender.push((() => {
|
|
430
|
-
t._multiSelectHidden = !t.selected;
|
|
431
|
-
}));
|
|
432
|
-
}
|
|
433
|
-
getDefaultActiveIndex() {
|
|
434
|
-
const {allOptions: t} = this;
|
|
435
|
-
const e = t.findIndex((t => t.selected));
|
|
436
|
-
if (e > -1) return e;
|
|
437
|
-
const s = t.findIndex((t => !t.hidden));
|
|
438
|
-
if (s > -1) return s;
|
|
439
|
-
return 0;
|
|
440
|
-
}
|
|
441
|
-
getNextVisibleIndex(t) {
|
|
442
|
-
const {allVisibleOptions: e, allOptions: s, activeIndex: i} = this;
|
|
443
|
-
const n = s[i];
|
|
444
|
-
const o = e.indexOf(n);
|
|
445
|
-
let h = o + t;
|
|
446
|
-
if (h < 0) {
|
|
447
|
-
h = e.length - 1;
|
|
448
|
-
} else if (h > e.length - 1) {
|
|
449
|
-
h = 0;
|
|
450
|
-
}
|
|
451
|
-
const a = e[h];
|
|
452
|
-
return s.indexOf(a);
|
|
453
|
-
}
|
|
454
|
-
getRootSlot(t) {
|
|
455
|
-
var e;
|
|
456
|
-
const s = t.querySelector("slot");
|
|
457
|
-
const i = (e = s === null || s === void 0 ? void 0 : s.assignedElements()) !== null && e !== void 0 ? e : Array.from(t.children);
|
|
458
|
-
const n = !!i.length && i[0].tagName === "SLOT";
|
|
459
|
-
if (n) {
|
|
460
|
-
return this.getRootSlot(i[0]);
|
|
461
|
-
} else {
|
|
462
|
-
return i;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
async openDropdownWithActiveElement(t) {
|
|
466
|
-
if (this.disabled) return;
|
|
467
|
-
this.popoverState.emit({
|
|
468
|
-
open: true,
|
|
469
|
-
action: "open"
|
|
470
|
-
});
|
|
471
|
-
await r();
|
|
472
|
-
this.activeIndex = t;
|
|
473
|
-
this.setActiveOption();
|
|
474
|
-
this.setFocusedOption();
|
|
475
|
-
this.scrollToActiveOption();
|
|
476
|
-
}
|
|
477
|
-
resetTimer() {
|
|
478
|
-
if (this.searchStringTimer) {
|
|
479
|
-
clearTimeout(this.searchStringTimer);
|
|
480
|
-
}
|
|
481
|
-
this.searchStringTimer = window.setTimeout((() => {
|
|
482
|
-
this.searchString = null;
|
|
483
|
-
}), 2e3);
|
|
484
|
-
}
|
|
485
|
-
scrollToActiveOption() {
|
|
486
|
-
const t = this.allOptions[this.activeIndex];
|
|
487
|
-
t === null || t === void 0 ? void 0 : t.scrollIntoView({
|
|
488
|
-
block: "center"
|
|
489
|
-
});
|
|
490
|
-
}
|
|
491
|
-
searchOptions(t, e) {
|
|
492
|
-
this.searchString = t;
|
|
493
|
-
this.searchAndFocus(t, e);
|
|
494
|
-
}
|
|
495
|
-
selectOption(t) {
|
|
496
|
-
const {multiple: e, noSelect: s, showSelected: i} = this;
|
|
497
|
-
if (!t || t.disabled || t.disabledGroup) return;
|
|
498
|
-
const n = t.value;
|
|
499
|
-
const o = {
|
|
500
|
-
value: n,
|
|
501
|
-
display: t.display || t.innerText.trim()
|
|
502
|
-
};
|
|
503
|
-
let h = [];
|
|
504
|
-
if (e) {
|
|
505
|
-
const {selectedOptions: e} = this;
|
|
506
|
-
const s = e.find((t => t.value === n));
|
|
507
|
-
if (s) {
|
|
508
|
-
h = e.filter((({value: t}) => t !== n));
|
|
509
|
-
} else {
|
|
510
|
-
h = [ ...e, o ];
|
|
511
|
-
}
|
|
512
|
-
if (i) this.focusSelectedSibling(t);
|
|
513
|
-
} else {
|
|
514
|
-
h = [ o ];
|
|
515
|
-
}
|
|
516
|
-
if (s) this.setActiveElement(null); else this.selectedOptions = h;
|
|
517
|
-
this.change.emit({
|
|
518
|
-
value: n,
|
|
519
|
-
values: h
|
|
520
|
-
});
|
|
521
|
-
}
|
|
522
|
-
setActiveOption() {
|
|
523
|
-
const t = this.activeIndex;
|
|
524
|
-
this.allOptions.forEach(((e, s) => {
|
|
525
|
-
e.active = t === s;
|
|
526
|
-
}));
|
|
527
|
-
}
|
|
528
|
-
setFocusedOption() {
|
|
529
|
-
const t = this.allOptions[this.activeIndex];
|
|
530
|
-
if (!t) return;
|
|
531
|
-
const e = l(t);
|
|
532
|
-
if (e) t.focus(); else o((() => t.focus()));
|
|
533
|
-
}
|
|
534
|
-
updateMultipleOptionAttrs() {
|
|
535
|
-
const {allOptions: t, selectedOptions: e} = this;
|
|
536
|
-
const s = e.map((({value: t}) => t));
|
|
537
|
-
t.forEach((t => {
|
|
538
|
-
t.selected = s.includes(t.value);
|
|
539
|
-
}));
|
|
540
|
-
}
|
|
541
|
-
updateSingleOptionAttrs() {
|
|
542
|
-
var t;
|
|
543
|
-
const {allOptions: e, selectedOptions: s} = this;
|
|
544
|
-
const i = ((t = s[0]) === null || t === void 0 ? void 0 : t.value) || undefined;
|
|
545
|
-
e.forEach((t => {
|
|
546
|
-
t.selected = t.value === i;
|
|
547
|
-
}));
|
|
548
|
-
}
|
|
549
|
-
// #endregion
|
|
550
|
-
// #region Render Methods
|
|
551
|
-
render() {
|
|
552
|
-
return s(i, {
|
|
553
|
-
key: "221e3d11f55902cd286a6f69cb1c30ce4cc3cb1c"
|
|
554
|
-
}, s("div", {
|
|
555
|
-
key: "5e08ad2fd5a1a773976285ad16f2e2ef6e2161be",
|
|
556
|
-
class: "content",
|
|
557
|
-
ref: t => this.contentElement = t,
|
|
558
|
-
onFocusout: this.focusoutHandler
|
|
559
|
-
}, s("div", {
|
|
560
|
-
key: "537330008c139176aaa19ba997579e61f841fffb",
|
|
561
|
-
class: "options",
|
|
562
|
-
"aria-label": h("tecton.element.optionList.label", [ this.label ]),
|
|
563
|
-
"aria-multiselectable": `${!!this.multiple}`,
|
|
564
|
-
role: this.type || "listbox",
|
|
565
|
-
onKeyDown: this.internalKeydownHandler,
|
|
566
|
-
onClick: this.clickHandler
|
|
567
|
-
}, s("slot", {
|
|
568
|
-
key: "9204233743b02ead43bbe4f9329973059af24414"
|
|
569
|
-
}))));
|
|
570
|
-
}
|
|
571
|
-
get hostElement() {
|
|
572
|
-
return n(this);
|
|
573
|
-
}
|
|
574
|
-
static get watchers() {
|
|
575
|
-
return {
|
|
576
|
-
selectedOptions: [ "selectedOptionsUpdated" ],
|
|
577
|
-
showSelected: [ "showSelectedUpdated" ]
|
|
578
|
-
};
|
|
579
|
-
}
|
|
580
|
-
};
|
|
581
|
-
|
|
582
|
-
p.style = f;
|
|
583
|
-
|
|
584
|
-
export { p as q2_option_list };
|
|
585
|
-
//# sourceMappingURL=q2-option-list.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["sanitizeRegexString","regexString","replace","q2OptionListCss","Q2OptionListStyle0","Q2OptionList","this","keyStore","queue","lastPressedAt","Date","scheduledAfterRender","clickHandler","event","target","option","closest","selectOption","multiple","popoverState","emit","open","action","externalKeydownHandler","stopPropagation","activeIndex","customSearch","allOptions","key","nextIndex","searchString","searchOptions","type","openDropdownWithActiveElement","setDefaultActiveElement","nextPaint","preventDefault","selectedOptions","length","getDefaultActiveIndex","getNextVisibleIndex","Math","max","min","noSelect","setActiveElement","match","focusoutHandler","relatedTarget","isInQ2OptionList","includes","isInLightDom","hostElement","contains","internalKeydownHandler","allVisibleOptions","shiftKey","newOption","find","element","active","disabled","isFirstVisibleOptionActive","undefined","adjustActiveOptionAndScroll","isLastVisibleOptionActive","searchAndFocus","keyValue","shouldSelect","reorder","pivotIndex","list","map","index","slice","buildQueue","now","getTime","push","searchIndex","keyStr","join","sanitizedKeyStr","v","display","RegExp","setFocus","matched","loc","componentWillLoad","hasOptions","querySelectorAll","componentDidLoad","overrideFocus","checkOptions","selectedOptionsUpdated","ready","componentDidRender","forEach","fn","handleClick","delegateFocus","isEventFromElement","setActiveOption","setFocusedOption","getContents","allContents","getOptions","handleExternalKeydown","updateMultipleOptionAttrs","updateSingleOptionAttrs","showSelectedUpdated","showSelected","_multiSelectHidden","selected","rootSlot","getRootSlot","acceptedTags","filter","tagName","contents","extractOptions","elements","reduce","acc","Array","from","children","hidden","disabledGroup","numToAdd","scrollToActiveOption","options","optionRole","role","focusSelectedSibling","hasNoSiblings","selectedOptionVisibleIndex","indexOf","nextVisibleSiblingIndex","nextVisibleSibling","nextSiblingIndex","firstSelected","findIndex","firstEnabled","direction","activeOption","visibleActiveOptionIndex","nextVisibleOptionIndex","nextVisibleOption","slot","querySelector","assignedElements","_a","hasAnotherSlot","waitForNextPaint","resetTimer","searchStringTimer","clearTimeout","window","setTimeout","scrollIntoView","block","selectedOption","selectedValue","value","valueObject","innerText","trim","values","isAlreadySelected","change","elementIndex","isOptionVisible","isVisible","focus","selectedValues","render","h","Host","class","ref","el","contentElement","onFocusout","label","onKeyDown","onClick"],"sources":["src/utils/sanitize-regex-string.ts","src/components/q2-option-list/q2-option-list.scss?tag=q2-option-list&encapsulation=shadow","src/components/q2-option-list/q2-option-list.tsx"],"sourcesContent":["export default function sanitizeRegexString(regexString: string) {\n return regexString.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n position: relative;\n width: 100%;\n display: block;\n line-height: var-list(var-prefixer(option-list-line-height),--app-line-height, 1.428571429em);\n}\n\n.content {\n text-align: start;\n\n :host([is-sizeable]) & {\n display: block;\n height: auto;\n }\n}\n","import sanitizeRegexString from '@/utils/sanitize-regex-string';\nimport {\n Component,\n Prop,\n h,\n Event,\n State,\n Element,\n ComponentInterface,\n Host,\n EventEmitter,\n Method,\n Watch,\n Listen,\n} from '@stencil/core';\nimport { isEventFromElement, isVisible, loc, nextPaint, overrideFocus, waitForNextPaint } from 'src/utils';\n\nexport interface IOptionValue {\n value: string;\n display?: string;\n}\n\n@Component({ tag: 'q2-option-list', shadow: true, styleUrl: 'q2-option-list.scss' })\nexport class Q2OptionList implements ComponentInterface {\n // #region Own Properties\n\n activeIndex: number;\n contentElement: HTMLElement;\n keyStore: {\n queue: string[];\n lastPressedAt: Date;\n } = {\n queue: [],\n lastPressedAt: new Date(),\n };\n pivotIndex: number;\n scheduledAfterRender: (() => void)[] = [];\n searchString: string;\n searchStringTimer: number;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n hasOptions: boolean;\n\n // #endregion\n // #region Public Property API\n\n @Prop({ reflect: true })\n align: 'left' | 'right';\n\n /** Indicates a custom search is being implemented for the option list. */\n @Prop({ reflect: true })\n customSearch: boolean;\n\n /** Disables the option list. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /** Determines the label that is applied to the option list for accessibility purposes. */\n @Prop()\n label: string = loc('tecton.element.optionList.label');\n\n /**\n * Enables the multi-select ability for the option list.\n * @info\n * Only applicable when options are provided.\n */\n @Prop({ reflect: true })\n multiple: boolean;\n\n /** Disables the logic that handles selecting and focusing an option in the option list. */\n @Prop({ reflect: true })\n noSelect: boolean;\n\n /** A list of the selected options on the element. */\n @Prop({ mutable: true })\n selectedOptions: IOptionValue[] = [];\n\n /** Applies focus to the selected option. */\n @Prop({ reflect: true, mutable: true })\n showSelected: boolean;\n\n /** Translates to the role of the option list */\n @Prop()\n type: 'menu' | 'listbox' = 'listbox';\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when an option is selected or deselected.\n *\n * When the multi-select is enabled, the `value` property will be `undefined` and the `selectedOptions` property\n * will contain the selected option values.\n */\n @Event()\n change: EventEmitter<{ value: string; values: IOptionValue[] }>;\n\n /**\n * Emitted to indicate the intended state of the popover.\n * @private\n */\n @Event()\n popoverState: EventEmitter<{ open: boolean; action: 'close' | 'select' | 'open' }>;\n\n /**\n * Emitted when the component has finished rendering.\n * @private\n */\n @Event({ bubbles: false })\n ready: EventEmitter<undefined>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.hasOptions = !!this.hostElement.querySelectorAll('q2-option').length;\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n this.checkOptions();\n this.selectedOptionsUpdated();\n this.ready.emit();\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('click')\n handleClick(event: MouseEvent) {\n event.stopPropagation();\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.popoverState.emit({ open: true, action: 'open' });\n const { activeIndex } = this;\n if (typeof activeIndex === 'number' && activeIndex > -1) {\n this.setActiveOption();\n this.setFocusedOption();\n } else {\n this.setDefaultActiveElement();\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n @Method()\n async getContents(): Promise<(HTMLQ2OptgroupElement | HTMLQ2OptionElement)[]> {\n return this.allContents;\n }\n\n @Method()\n async getOptions(): Promise<HTMLQ2OptionElement[]> {\n return this.allOptions;\n }\n\n @Method()\n async handleExternalKeydown(event: KeyboardEvent) {\n this.externalKeydownHandler(event);\n }\n\n @Method()\n async setActiveElement(index: number) {\n this.activeIndex = index;\n this.setActiveOption();\n this.setFocusedOption();\n }\n\n @Method()\n async setDefaultActiveElement() {\n this.activeIndex = this.getDefaultActiveIndex();\n this.setActiveOption();\n this.setFocusedOption();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('selectedOptions')\n selectedOptionsUpdated() {\n if (this.multiple) {\n this.updateMultipleOptionAttrs();\n } else {\n this.updateSingleOptionAttrs();\n }\n }\n\n @Watch('showSelected')\n showSelectedUpdated(showSelected: boolean) {\n if (showSelected && this.selectedOptions.length === 0) {\n this.showSelected = false;\n return;\n }\n this.allOptions.forEach(option => (option._multiSelectHidden = showSelected ? !option.selected : false));\n }\n\n // #endregion\n // #region Local Methods\n\n get allContents(): (HTMLQ2OptgroupElement | HTMLQ2OptionElement)[] {\n const rootSlot = this.getRootSlot(this.hostElement);\n const acceptedTags = ['Q2-OPTGROUP', 'Q2-OPTION'];\n return rootSlot.filter(element => acceptedTags.includes(element.tagName)) as (\n | HTMLQ2OptgroupElement\n | HTMLQ2OptionElement\n )[];\n }\n\n get allOptions(): HTMLQ2OptionElement[] {\n const contents = this.allContents;\n\n const extractOptions = (\n elements: (HTMLQ2OptgroupElement | HTMLQ2OptionElement | Element)[]\n ): HTMLQ2OptionElement[] => {\n return elements.reduce((acc, element) => {\n if (element.tagName === 'Q2-OPTGROUP') {\n return [...acc, ...extractOptions(Array.from(element.children))];\n } else if (element.tagName === 'Q2-OPTION') {\n return [...acc, element];\n } else {\n return acc;\n }\n }, []);\n };\n\n return extractOptions(contents);\n }\n\n get allVisibleOptions(): HTMLQ2OptionElement[] {\n return this.allOptions.filter(\n option => !option.hidden && !option._multiSelectHidden && !option.disabled && !option.disabledGroup\n );\n }\n\n adjustActiveOptionAndScroll(numToAdd: number) {\n this.activeIndex += numToAdd;\n this.setActiveOption();\n this.setFocusedOption();\n this.scrollToActiveOption();\n }\n\n async checkOptions() {\n const { type } = this;\n const options = await this.getOptions();\n if (!type) return;\n const optionRole = type === 'menu' ? 'menuitem' : 'option';\n options.forEach(option => {\n option.role = optionRole;\n });\n }\n\n clickHandler = (event: Event) => {\n const target = event.target as HTMLQ2OptionElement;\n const option = target.closest('q2-option');\n this.selectOption(option);\n if (this.multiple) return;\n this.popoverState.emit({ open: false, action: 'select' });\n };\n\n /* tslint:disable:cyclomatic-complexity */\n externalKeydownHandler = (event: KeyboardEvent) => {\n event.stopPropagation();\n const { activeIndex, customSearch, allOptions } = this;\n const { key } = event;\n\n let nextIndex;\n switch (key) {\n case ' ':\n if (this.searchString) {\n if (customSearch) break;\n\n this.searchOptions(key, true);\n break;\n } else if (this.type === 'menu') {\n this.activeIndex = 0;\n this.openDropdownWithActiveElement(0);\n } else {\n this.setDefaultActiveElement();\n nextPaint(() => this.popoverState.emit({ open: true, action: 'open' }));\n }\n break;\n\n case 'Enter':\n if (this.type === 'menu') {\n this.activeIndex = 0;\n this.openDropdownWithActiveElement(0);\n } else {\n this.setDefaultActiveElement();\n nextPaint(() => this.popoverState.emit({ open: true, action: 'open' }));\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(-1);\n if (nextIndex === -1) break;\n this.openDropdownWithActiveElement(nextIndex);\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(1);\n if (nextIndex === -1) break;\n this.openDropdownWithActiveElement(nextIndex);\n break;\n\n case 'Home':\n event.preventDefault();\n this.openDropdownWithActiveElement(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.openDropdownWithActiveElement(allOptions.length - 1);\n break;\n\n case 'PageUp':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.max((activeIndex || 0) - 10, 0));\n break;\n\n case 'PageDown':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.min((activeIndex || 0) + 10, allOptions.length - 1));\n break;\n\n case 'Tab':\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n case 'Esc':\n case 'Escape':\n if (this.noSelect) this.setActiveElement(null);\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n default:\n if (customSearch) break;\n if (!key.match(/^[\\w]$/)) break;\n\n this.searchOptions(key, true);\n break;\n }\n };\n\n /* tslint:enable:cyclomatic-complexity */\n\n focusoutHandler = (event: FocusEvent) => {\n const { relatedTarget } = event as unknown as { relatedTarget: HTMLQ2OptionElement };\n const isInQ2OptionList = this.allOptions.includes(relatedTarget);\n const isInLightDom = !isInQ2OptionList && this.hostElement.contains(relatedTarget);\n if (isInQ2OptionList || isInLightDom) {\n event.stopPropagation();\n }\n };\n\n focusSelectedSibling(option: HTMLQ2OptionElement) {\n const { allVisibleOptions, allOptions } = this;\n const hasNoSiblings = allVisibleOptions.length < 2;\n if (hasNoSiblings) {\n this.showSelected = false;\n return;\n }\n\n const selectedOptionVisibleIndex = allVisibleOptions.indexOf(option);\n const nextVisibleSiblingIndex = selectedOptionVisibleIndex\n ? selectedOptionVisibleIndex - 1\n : selectedOptionVisibleIndex + 1;\n const nextVisibleSibling = allVisibleOptions[nextVisibleSiblingIndex];\n const nextSiblingIndex = allOptions.indexOf(nextVisibleSibling);\n\n this.activeIndex = nextSiblingIndex;\n this.setFocusedOption();\n this.scheduledAfterRender.push(() => {\n option._multiSelectHidden = !option.selected;\n });\n }\n\n getDefaultActiveIndex() {\n const { allOptions } = this;\n const firstSelected = allOptions.findIndex(element => element.selected);\n if (firstSelected > -1) return firstSelected;\n\n const firstEnabled = allOptions.findIndex(element => !element.hidden);\n if (firstEnabled > -1) return firstEnabled;\n\n return 0;\n }\n\n getNextVisibleIndex(direction) {\n const { allVisibleOptions, allOptions, activeIndex } = this;\n const activeOption = allOptions[activeIndex];\n const visibleActiveOptionIndex = allVisibleOptions.indexOf(activeOption);\n let nextVisibleOptionIndex = visibleActiveOptionIndex + direction;\n\n if (nextVisibleOptionIndex < 0) {\n nextVisibleOptionIndex = allVisibleOptions.length - 1;\n } else if (nextVisibleOptionIndex > allVisibleOptions.length - 1) {\n nextVisibleOptionIndex = 0;\n }\n\n const nextVisibleOption = allVisibleOptions[nextVisibleOptionIndex];\n return allOptions.indexOf(nextVisibleOption);\n }\n\n getRootSlot(element: Element): Element[] {\n const slot = element.querySelector('slot');\n const assignedElements = slot?.assignedElements() ?? Array.from(element.children);\n const hasAnotherSlot = !!assignedElements.length && assignedElements[0].tagName === 'SLOT';\n if (hasAnotherSlot) {\n return this.getRootSlot(assignedElements[0]);\n } else {\n return assignedElements;\n }\n }\n\n internalKeydownHandler = (event: KeyboardEvent) => {\n event.stopPropagation();\n const { activeIndex, customSearch, allOptions, allVisibleOptions, multiple } = this;\n const { key, shiftKey } = event;\n\n let newOption: HTMLQ2OptionElement;\n switch (key) {\n case ' ':\n if (this.searchString && !this.multiple) {\n if (customSearch) break;\n\n this.searchOptions(key, false);\n break;\n }\n\n event.preventDefault();\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) break;\n this.selectOption(newOption);\n if (multiple) break;\n this.popoverState.emit({ open: false, action: 'select' });\n break;\n\n case 'Enter':\n event.preventDefault();\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) break;\n this.selectOption(newOption);\n if (multiple) break;\n this.popoverState.emit({ open: false, action: 'select' });\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n const isFirstVisibleOptionActive = allVisibleOptions[0].active;\n if (isFirstVisibleOptionActive) break;\n if (activeIndex === undefined) {\n this.setDefaultActiveElement();\n break;\n } else {\n const nextIndex = this.getNextVisibleIndex(-1);\n if (nextIndex === -1) break;\n this.adjustActiveOptionAndScroll(nextIndex - activeIndex);\n break;\n }\n\n case 'ArrowDown':\n event.preventDefault();\n const isLastVisibleOptionActive = allVisibleOptions[allVisibleOptions.length - 1].active;\n if (isLastVisibleOptionActive) break;\n if (activeIndex === undefined) {\n this.setDefaultActiveElement();\n break;\n } else {\n const nextIndex = this.getNextVisibleIndex(1);\n if (nextIndex === -1) break;\n this.adjustActiveOptionAndScroll(nextIndex - activeIndex);\n break;\n }\n\n case 'Home':\n event.preventDefault();\n this.openDropdownWithActiveElement(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.openDropdownWithActiveElement(allOptions.length - 1);\n break;\n\n case 'PageUp':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.max(activeIndex - 10, 0));\n break;\n\n case 'PageDown':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.min(activeIndex + 10, allOptions.length - 1));\n break;\n\n case 'Tab':\n if (shiftKey) break;\n if (this.multiple && this.type === 'listbox') break;\n if (this.type === 'menu') {\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n }\n\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) return;\n this.selectOption(newOption);\n break;\n\n case 'Esc':\n case 'Escape':\n if (this.noSelect) this.setActiveElement(null);\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n default:\n if (customSearch) break;\n if (!key.match(/^[\\w]$/)) break;\n\n this.searchOptions(key, false);\n break;\n }\n };\n\n async openDropdownWithActiveElement(activeIndex: number) {\n if (this.disabled) return;\n this.popoverState.emit({ open: true, action: 'open' });\n await waitForNextPaint();\n this.activeIndex = activeIndex;\n this.setActiveOption();\n this.setFocusedOption();\n this.scrollToActiveOption();\n }\n\n resetTimer() {\n if (this.searchStringTimer) {\n clearTimeout(this.searchStringTimer);\n }\n\n this.searchStringTimer = window.setTimeout(() => {\n this.searchString = null;\n }, 2000);\n }\n\n scrollToActiveOption() {\n const activeOption = this.allOptions[this.activeIndex];\n activeOption?.scrollIntoView({ block: 'center' });\n }\n\n searchAndFocus = (keyValue: string, shouldSelect: boolean) => {\n // pseudo search in non-searchable select\n const reorder = () => {\n this.pivotIndex = this.pivotIndex === undefined ? 0 : (this.activeIndex || 0) + 1;\n const list = this.allOptions.map((element, index) => ({ element, index }));\n return [...list.slice(this.pivotIndex), ...list.slice(0, this.pivotIndex)];\n };\n\n const buildQueue = () => {\n const now = new Date();\n if (now.getTime() - this.keyStore.lastPressedAt.getTime() > 1000) {\n // empty stored keys if delay > 1s\n this.keyStore.queue.length = 0;\n }\n if (this.keyStore.queue.length !== 1 || this.keyStore.queue[0] !== keyValue) {\n this.keyStore.queue.push(keyValue);\n }\n this.keyStore.lastPressedAt = now;\n };\n\n const searchIndex = (list: any[]) => {\n const keyStr = this.keyStore.queue.join('');\n const sanitizedKeyStr = sanitizeRegexString(keyStr);\n return list.find(v => {\n return (\n !v.element.disabled &&\n v.element.display &&\n (v.element.display.match(new RegExp(`^${sanitizedKeyStr}`, 'i')) ||\n v.element.display.replace(/\\s/g, '').match(new RegExp(`^${sanitizedKeyStr}`, 'i')))\n );\n });\n };\n\n const setFocus = ({ index }) => {\n if (this.multiple) {\n // multiple: should open to make sure that which options are selected\n this.openDropdownWithActiveElement(index);\n } else {\n this.activeIndex = index;\n if (shouldSelect) {\n this.selectOption(this.allOptions[index]);\n this.popoverState.emit({ open: false, action: 'select' });\n } else this.setActiveElement(index);\n }\n };\n\n buildQueue();\n const matched = searchIndex(reorder());\n if (matched) {\n setFocus(matched);\n }\n };\n\n searchOptions(key: string, shouldSelect?: boolean) {\n this.searchString = key;\n this.searchAndFocus(key, shouldSelect);\n }\n\n selectOption(selectedOption: HTMLQ2OptionElement) {\n const { multiple, noSelect, showSelected } = this;\n if (!selectedOption || selectedOption.disabled || selectedOption.disabledGroup) return;\n const selectedValue = selectedOption.value;\n const valueObject = {\n value: selectedValue,\n display: selectedOption.display || selectedOption.innerText.trim(),\n };\n\n let values: IOptionValue[] = [];\n if (multiple) {\n const { selectedOptions } = this;\n const isAlreadySelected = selectedOptions.find(option => option.value === selectedValue);\n\n if (isAlreadySelected) {\n values = selectedOptions.filter(({ value }) => value !== selectedValue);\n } else {\n values = [...selectedOptions, valueObject];\n }\n\n if (showSelected) this.focusSelectedSibling(selectedOption);\n } else {\n values = [valueObject];\n }\n\n if (noSelect) this.setActiveElement(null);\n else this.selectedOptions = values;\n\n this.change.emit({ value: selectedValue, values });\n }\n\n setActiveOption() {\n const activeIndex = this.activeIndex;\n\n this.allOptions.forEach((element, elementIndex) => {\n element.active = activeIndex === elementIndex;\n });\n }\n\n setFocusedOption() {\n const option = this.allOptions[this.activeIndex];\n if (!option) return;\n\n const isOptionVisible = isVisible(option);\n if (isOptionVisible) option.focus();\n else nextPaint(() => option.focus());\n }\n\n updateMultipleOptionAttrs() {\n const { allOptions, selectedOptions } = this;\n const selectedValues = selectedOptions.map(({ value }) => value);\n allOptions.forEach(element => {\n element.selected = selectedValues.includes(element.value);\n });\n }\n\n updateSingleOptionAttrs() {\n const { allOptions, selectedOptions } = this;\n const selectedValue = selectedOptions[0]?.value || undefined;\n allOptions.forEach(element => {\n element.selected = element.value === selectedValue;\n });\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <Host>\n <div\n class=\"content\"\n ref={el => (this.contentElement = el)}\n onFocusout={this.focusoutHandler}\n >\n <div\n class=\"options\"\n aria-label={loc('tecton.element.optionList.label', [this.label])}\n aria-multiselectable={`${!!this.multiple}`}\n role={this.type || 'listbox'}\n onKeyDown={this.internalKeydownHandler}\n onClick={this.clickHandler}\n >\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}
|