q2-tecton-elements 1.37.1 → 1.38.1
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/cjs/click-elsewhere_2.cjs.entry.js +68 -58
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
- package/dist/cjs/{index-6f9f259c.js → index-09c712ea.js} +13 -2
- package/dist/cjs/index-09c712ea.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
- package/dist/cjs/q2-action-sheet.cjs.entry.js.map +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.cjs.entry.js +1 -1
- package/dist/cjs/q2-badge.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +3 -3
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +38 -4
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +2 -2
- package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +2 -2
- package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +2 -2
- package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
- package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
- package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +11 -2
- package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +7 -2
- package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/q2-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
- package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
- package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +26 -3
- package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +2 -2
- package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +125 -12
- package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-loc.cjs.entry.js +2 -2
- package/dist/cjs/q2-loc.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +5 -2
- package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +2 -2
- package/dist/cjs/q2-month-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-optgroup_2.cjs.entry.js +3 -3
- package/dist/cjs/q2-optgroup_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-option-list.cjs.entry.js +19 -11
- package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +2 -2
- package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +2 -2
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +7 -2
- package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +2 -2
- package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +2 -2
- package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +73 -20
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +16 -10
- package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tag.cjs.entry.js +2 -2
- 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 +39 -6
- package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +2 -2
- package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js.map +1 -1
- package/dist/collection/components/q2-action-sheet/styles.css +1 -1
- package/dist/collection/components/q2-avatar/styles.css +1 -1
- package/dist/collection/components/q2-badge/styles.css +1 -1
- package/dist/collection/components/q2-btn/styles.css +18 -3
- package/dist/collection/components/q2-calendar/index.js +59 -10
- package/dist/collection/components/q2-calendar/index.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-month-picker.css +1 -1
- package/dist/collection/components/q2-calendar/styles.css +1 -1
- package/dist/collection/components/q2-card/styles.css +1 -1
- package/dist/collection/components/q2-carousel/styles.css +1 -1
- package/dist/collection/components/q2-carousel-pane/styles.css +1 -1
- package/dist/collection/components/q2-chart-area/styles.css +1 -1
- package/dist/collection/components/q2-chart-bar/styles.css +1 -1
- package/dist/collection/components/q2-chart-donut/index.js +12 -3
- package/dist/collection/components/q2-chart-donut/index.js.map +1 -1
- package/dist/collection/components/q2-chart-donut/styles.css +1 -1
- package/dist/collection/components/q2-checkbox/styles.css +84 -20
- package/dist/collection/components/q2-checkbox-group/index.js +10 -2
- package/dist/collection/components/q2-checkbox-group/index.js.map +1 -1
- package/dist/collection/components/q2-checkbox-group/styles.css +1 -1
- package/dist/collection/components/q2-data-table/index.js +6 -6
- package/dist/collection/components/q2-data-table/styles.css +1 -1
- package/dist/collection/components/q2-dropdown/styles.css +1 -1
- package/dist/collection/components/q2-dropdown-item/styles.css +1 -1
- package/dist/collection/components/q2-editable-field/index.js +44 -9
- package/dist/collection/components/q2-editable-field/index.js.map +1 -1
- package/dist/collection/components/q2-editable-field/styles.css +1 -1
- package/dist/collection/components/q2-icon/styles.css +1 -1
- package/dist/collection/components/q2-input/formatting/date.js +1 -1
- package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
- package/dist/collection/components/q2-input/index.js +156 -16
- package/dist/collection/components/q2-input/index.js.map +1 -1
- package/dist/collection/components/q2-input/styles.css +64 -51
- package/dist/collection/components/q2-loading/styles.css +1 -1
- package/dist/collection/components/q2-loc/styles.css +1 -1
- package/dist/collection/components/q2-message/index.js +4 -1
- package/dist/collection/components/q2-message/index.js.map +1 -1
- package/dist/collection/components/q2-message/styles.css +1 -1
- package/dist/collection/components/q2-optgroup/styles.css +2 -2
- package/dist/collection/components/q2-option/styles.css +1 -1
- package/dist/collection/components/q2-option-list/index.js +19 -11
- package/dist/collection/components/q2-option-list/index.js.map +1 -1
- package/dist/collection/components/q2-option-list/styles.css +1 -1
- package/dist/collection/components/q2-pagination/styles.css +1 -1
- package/dist/collection/components/q2-pill/styles.css +7 -7
- package/dist/collection/components/q2-popover/index.js +90 -73
- package/dist/collection/components/q2-popover/index.js.map +1 -1
- package/dist/collection/components/q2-popover/styles.css +13 -13
- package/dist/collection/components/q2-radio/styles.css +36 -13
- package/dist/collection/components/q2-radio-group/index.js +10 -2
- package/dist/collection/components/q2-radio-group/index.js.map +1 -1
- package/dist/collection/components/q2-radio-group/styles.css +1 -1
- package/dist/collection/components/q2-section/styles.css +1 -1
- package/dist/collection/components/q2-select/index.js +96 -26
- package/dist/collection/components/q2-select/index.js.map +1 -1
- package/dist/collection/components/q2-select/styles.css +18 -10
- package/dist/collection/components/q2-stepper/styles.css +2 -12
- package/dist/collection/components/q2-stepper-pane/index.js +2 -2
- package/dist/collection/components/q2-stepper-pane/styles.css +1 -1
- package/dist/collection/components/q2-stepper-vertical/styles.css +1 -1
- package/dist/collection/components/q2-tab-container/index.js +14 -8
- package/dist/collection/components/q2-tab-container/index.js.map +1 -1
- package/dist/collection/components/q2-tab-container/styles.css +1 -1
- package/dist/collection/components/q2-tab-pane/styles.css +1 -1
- package/dist/collection/components/q2-tag/styles.css +4 -4
- package/dist/collection/components/q2-textarea/index.js +44 -8
- package/dist/collection/components/q2-textarea/index.js.map +1 -1
- package/dist/collection/components/q2-textarea/styles.css +69 -11
- package/dist/collection/components/q2-tooltip/styles.css +1 -1
- package/dist/collection/components/tecton-tab-pane/styles.css +1 -1
- package/dist/collection/utils/index.js +11 -1
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/components/index10.js +1 -1
- package/dist/components/index10.js.map +1 -1
- package/dist/components/index11.js +5 -2
- package/dist/components/index11.js.map +1 -1
- package/dist/components/index12.js +1 -1
- package/dist/components/index12.js.map +1 -1
- package/dist/components/index13.js +1 -1
- package/dist/components/index13.js.map +1 -1
- package/dist/components/index14.js +18 -10
- package/dist/components/index14.js.map +1 -1
- package/dist/components/index15.js +69 -59
- package/dist/components/index15.js.map +1 -1
- package/dist/components/index16.js +12 -2
- package/dist/components/index16.js.map +1 -1
- package/dist/components/index3.js +1 -1
- package/dist/components/index3.js.map +1 -1
- package/dist/components/index4.js +1 -1
- package/dist/components/index4.js.map +1 -1
- package/dist/components/index5.js +1 -1
- package/dist/components/index5.js.map +1 -1
- package/dist/components/index6.js +1 -1
- package/dist/components/index6.js.map +1 -1
- package/dist/components/index7.js +1 -1
- package/dist/components/index7.js.map +1 -1
- package/dist/components/index8.js +1 -1
- package/dist/components/index8.js.map +1 -1
- package/dist/components/index9.js +127 -12
- package/dist/components/index9.js.map +1 -1
- package/dist/components/q2-action-sheet.js +1 -1
- package/dist/components/q2-action-sheet.js.map +1 -1
- package/dist/components/q2-calendar.js +37 -3
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-card.js +1 -1
- package/dist/components/q2-card.js.map +1 -1
- package/dist/components/q2-carousel-pane.js +1 -1
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel.js +1 -1
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-area.js +1 -1
- package/dist/components/q2-chart-area.js.map +1 -1
- package/dist/components/q2-chart-bar.js +1 -1
- package/dist/components/q2-chart-bar.js.map +1 -1
- package/dist/components/q2-chart-donut.js +10 -1
- package/dist/components/q2-chart-donut.js.map +1 -1
- package/dist/components/q2-checkbox-group.js +6 -1
- package/dist/components/q2-checkbox-group.js.map +1 -1
- package/dist/components/q2-data-table.js +1 -1
- package/dist/components/q2-data-table.js.map +1 -1
- package/dist/components/q2-dropdown.js +1 -1
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-editable-field.js +25 -2
- package/dist/components/q2-editable-field.js.map +1 -1
- package/dist/components/q2-loc.js +1 -1
- package/dist/components/q2-loc.js.map +1 -1
- package/dist/components/q2-month-picker.js +1 -1
- package/dist/components/q2-month-picker.js.map +1 -1
- package/dist/components/q2-pagination.js +1 -1
- package/dist/components/q2-pagination.js.map +1 -1
- package/dist/components/q2-pill.js +1 -1
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-radio-group.js +6 -1
- package/dist/components/q2-radio-group.js.map +1 -1
- package/dist/components/q2-radio.js +1 -1
- package/dist/components/q2-radio.js.map +1 -1
- package/dist/components/q2-section.js +1 -1
- package/dist/components/q2-section.js.map +1 -1
- package/dist/components/q2-select.js +74 -19
- package/dist/components/q2-select.js.map +1 -1
- package/dist/components/q2-stepper-pane.js +1 -1
- package/dist/components/q2-stepper-pane.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +1 -1
- package/dist/components/q2-stepper-vertical.js.map +1 -1
- package/dist/components/q2-stepper.js +1 -1
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/components/q2-tab-container.js +15 -9
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tab-pane.js.map +1 -1
- package/dist/components/q2-tag.js +1 -1
- package/dist/components/q2-tag.js.map +1 -1
- package/dist/components/q2-textarea.js +38 -5
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/q2-tooltip.js +1 -1
- package/dist/components/q2-tooltip.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +1 -1
- package/dist/components/tecton-tab-pane.js.map +1 -1
- package/dist/esm/click-elsewhere_2.entry.js +68 -58
- package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
- package/dist/esm/{index-74a659a5.js → index-84f1034e.js} +13 -3
- package/dist/esm/index-84f1034e.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-sheet.entry.js +2 -2
- package/dist/esm/q2-action-sheet.entry.js.map +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.entry.js +1 -1
- package/dist/esm/q2-badge.entry.js.map +1 -1
- package/dist/esm/q2-btn_2.entry.js +3 -3
- package/dist/esm/q2-btn_2.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +38 -4
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-card.entry.js +2 -2
- package/dist/esm/q2-card.entry.js.map +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +2 -2
- package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +2 -2
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-chart-area.entry.js +2 -2
- package/dist/esm/q2-chart-area.entry.js.map +1 -1
- package/dist/esm/q2-chart-bar.entry.js +2 -2
- package/dist/esm/q2-chart-bar.entry.js.map +1 -1
- package/dist/esm/q2-chart-donut.entry.js +11 -2
- package/dist/esm/q2-chart-donut.entry.js.map +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +7 -2
- package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
- package/dist/esm/q2-checkbox.entry.js +2 -2
- package/dist/esm/q2-checkbox.entry.js.map +1 -1
- package/dist/esm/q2-data-table.entry.js +2 -2
- package/dist/esm/q2-data-table.entry.js.map +1 -1
- package/dist/esm/q2-dropdown-item.entry.js +2 -2
- package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +2 -2
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +26 -3
- package/dist/esm/q2-editable-field.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +2 -2
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-input.entry.js +125 -12
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-loc.entry.js +2 -2
- package/dist/esm/q2-loc.entry.js.map +1 -1
- package/dist/esm/q2-message.entry.js +5 -2
- package/dist/esm/q2-message.entry.js.map +1 -1
- package/dist/esm/q2-month-picker.entry.js +2 -2
- package/dist/esm/q2-month-picker.entry.js.map +1 -1
- package/dist/esm/q2-optgroup_2.entry.js +3 -3
- package/dist/esm/q2-optgroup_2.entry.js.map +1 -1
- package/dist/esm/q2-option-list.entry.js +19 -11
- package/dist/esm/q2-option-list.entry.js.map +1 -1
- package/dist/esm/q2-pagination.entry.js +2 -2
- package/dist/esm/q2-pagination.entry.js.map +1 -1
- package/dist/esm/q2-pill.entry.js +2 -2
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +7 -2
- package/dist/esm/q2-radio-group.entry.js.map +1 -1
- package/dist/esm/q2-radio.entry.js +2 -2
- package/dist/esm/q2-radio.entry.js.map +1 -1
- package/dist/esm/q2-section.entry.js +2 -2
- package/dist/esm/q2-section.entry.js.map +1 -1
- package/dist/esm/q2-select.entry.js +73 -20
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +2 -2
- package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +2 -2
- package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/esm/q2-stepper.entry.js +2 -2
- package/dist/esm/q2-stepper.entry.js.map +1 -1
- package/dist/esm/q2-tab-container.entry.js +16 -10
- package/dist/esm/q2-tab-container.entry.js.map +1 -1
- package/dist/esm/q2-tab-pane.entry.js +1 -1
- package/dist/esm/q2-tab-pane.entry.js.map +1 -1
- package/dist/esm/q2-tag.entry.js +2 -2
- 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 +39 -6
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/q2-tooltip.entry.js +2 -2
- package/dist/esm/q2-tooltip.entry.js.map +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +1 -1
- package/dist/esm/tecton-tab-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/p-059ea7c9.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-bfd69d42.entry.js.map → p-059ea7c9.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-072bda73.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-077107c1.entry.js.map → p-072bda73.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-0cade28b.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-47c60d4a.entry.js.map → p-0cade28b.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-0fb2be4c.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-536978fe.entry.js.map → p-0fb2be4c.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-107f07f2.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-4abbd0b1.entry.js.map → p-107f07f2.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-145849d0.entry.js +2 -0
- package/dist/q2-tecton-elements/p-145849d0.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-14e3c48f.entry.js +2 -0
- package/dist/q2-tecton-elements/p-14e3c48f.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-15179d55.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-46287c02.entry.js.map → p-15179d55.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-2812f9d2.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-58cdb9c7.entry.js.map → p-2812f9d2.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-29a7ca63.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-a52371cf.entry.js.map → p-29a7ca63.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-311f37e2.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-1c993698.entry.js.map → p-311f37e2.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-9ef2829e.entry.js → p-3d82d94f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-9ef2829e.entry.js.map → p-3d82d94f.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-8e7b762a.entry.js → p-52132d80.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-8e7b762a.entry.js.map → p-52132d80.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-57e81863.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-e45856f7.entry.js.map → p-57e81863.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-5843f6c8.entry.js +2 -0
- package/dist/q2-tecton-elements/p-5843f6c8.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-5c033ed9.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-09d4b3d3.entry.js.map → p-5c033ed9.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-a60f82c0.entry.js → p-69dcf12e.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-a60f82c0.entry.js.map → p-69dcf12e.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-6ae87415.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-9d743327.entry.js.map → p-6ae87415.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-72b4ecc6.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-597f8656.entry.js.map → p-72b4ecc6.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-81b917a5.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-9c9a2550.entry.js.map → p-81b917a5.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-85dc889e.entry.js +2 -0
- package/dist/q2-tecton-elements/p-85dc889e.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-8f273db2.entry.js +2 -0
- package/dist/q2-tecton-elements/p-8f273db2.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-8f8d5362.entry.js +2 -0
- package/dist/q2-tecton-elements/p-8f8d5362.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-9220365b.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-6cacc879.entry.js.map → p-9220365b.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-75fd6df5.entry.js → p-959f47ef.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-75fd6df5.entry.js.map → p-959f47ef.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-9da0db14.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-6170e44c.entry.js.map → p-9da0db14.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-a09c90c1.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-efbe6c17.entry.js.map → p-a09c90c1.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-a4017e55.entry.js +2 -0
- package/dist/q2-tecton-elements/p-a4017e55.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-a6b03db1.entry.js +2 -0
- package/dist/q2-tecton-elements/p-a6b03db1.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-af98db79.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-59d34a17.entry.js.map → p-af98db79.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-e8858d0d.entry.js → p-b83568e7.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-b83568e7.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-bb0d4f5a.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-ff6afb42.entry.js.map → p-bb0d4f5a.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-c057134f.entry.js +2 -0
- package/dist/q2-tecton-elements/p-c057134f.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-d7fb3534.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-3505f25c.entry.js.map → p-d7fb3534.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-db3bbfb8.entry.js +2 -0
- package/dist/q2-tecton-elements/p-db3bbfb8.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-deb773a5.entry.js +2 -0
- package/dist/q2-tecton-elements/p-deb773a5.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-e4dadcd7.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-9a28b93a.entry.js.map → p-e4dadcd7.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-e98d9cf2.entry.js +2 -0
- package/dist/q2-tecton-elements/p-e98d9cf2.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-f198f77b.entry.js +2 -0
- package/dist/q2-tecton-elements/p-f198f77b.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-f34521a4.js +2 -0
- package/dist/q2-tecton-elements/p-f34521a4.js.map +1 -0
- package/dist/q2-tecton-elements/p-f3868a77.entry.js +2 -0
- package/dist/q2-tecton-elements/p-f3868a77.entry.js.map +1 -0
- 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/test/elements/q2-calendar-test.e2e.js +109 -47
- package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-checkbox-test.e2e.js +156 -0
- package/dist/test/elements/q2-checkbox-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-editable-field-test.e2e.js +27 -0
- package/dist/test/elements/q2-editable-field-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-input-test.e2e.js +88 -4
- package/dist/test/elements/q2-input-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-option-list-test.e2e.js +40 -10
- package/dist/test/elements/q2-option-list-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-popover-test.e2e.js +269 -79
- package/dist/test/elements/q2-popover-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-select-test.e2e.js +117 -42
- package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tab-container-test.e2e.js +2 -2
- package/dist/test/elements/q2-tab-container-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-textarea-test.e2e.js +879 -199
- package/dist/test/elements/q2-textarea-test.e2e.js.map +1 -1
- package/dist/test/helpers.js +2 -1
- package/dist/test/helpers.js.map +1 -1
- package/dist/types/components/q2-calendar/index.d.ts +31 -0
- package/dist/types/components/q2-chart-donut/index.d.ts +9 -0
- package/dist/types/components/q2-checkbox-group/index.d.ts +5 -0
- package/dist/types/components/q2-editable-field/index.d.ts +23 -0
- package/dist/types/components/q2-input/index.d.ts +28 -2
- package/dist/types/components/q2-message/index.d.ts +3 -0
- package/dist/types/components/q2-popover/index.d.ts +9 -1
- package/dist/types/components/q2-radio-group/index.d.ts +5 -0
- package/dist/types/components/q2-select/index.d.ts +33 -3
- package/dist/types/components/q2-textarea/index.d.ts +12 -1
- package/dist/types/components.d.ts +93 -2
- package/dist/types/global.d.ts +2 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/package.json +3 -3
- package/dist/cjs/index-6f9f259c.js.map +0 -1
- package/dist/docs.d.ts +0 -322
- package/dist/docs.json +0 -10294
- package/dist/esm/index-74a659a5.js.map +0 -1
- package/dist/q2-tecton-elements/p-077107c1.entry.js +0 -2
- package/dist/q2-tecton-elements/p-09d4b3d3.entry.js +0 -2
- package/dist/q2-tecton-elements/p-0d4aec6e.entry.js +0 -2
- package/dist/q2-tecton-elements/p-0d4aec6e.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-1c993698.entry.js +0 -2
- package/dist/q2-tecton-elements/p-252889b7.entry.js +0 -2
- package/dist/q2-tecton-elements/p-252889b7.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-25bd1b18.entry.js +0 -2
- package/dist/q2-tecton-elements/p-25bd1b18.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-2a975246.entry.js +0 -2
- package/dist/q2-tecton-elements/p-2a975246.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-30facf35.entry.js +0 -2
- package/dist/q2-tecton-elements/p-30facf35.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-3505f25c.entry.js +0 -2
- package/dist/q2-tecton-elements/p-46287c02.entry.js +0 -2
- package/dist/q2-tecton-elements/p-47c60d4a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-4abbd0b1.entry.js +0 -2
- package/dist/q2-tecton-elements/p-536978fe.entry.js +0 -2
- package/dist/q2-tecton-elements/p-570c1d3d.entry.js +0 -2
- package/dist/q2-tecton-elements/p-570c1d3d.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-578e3f98.entry.js +0 -2
- package/dist/q2-tecton-elements/p-578e3f98.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-58cdb9c7.entry.js +0 -2
- package/dist/q2-tecton-elements/p-597f8656.entry.js +0 -2
- package/dist/q2-tecton-elements/p-59d34a17.entry.js +0 -2
- package/dist/q2-tecton-elements/p-5bc4d94c.entry.js +0 -2
- package/dist/q2-tecton-elements/p-5bc4d94c.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-6170e44c.entry.js +0 -2
- package/dist/q2-tecton-elements/p-67f33354.entry.js +0 -2
- package/dist/q2-tecton-elements/p-67f33354.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-680929be.entry.js +0 -2
- package/dist/q2-tecton-elements/p-680929be.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-6cacc879.entry.js +0 -2
- package/dist/q2-tecton-elements/p-7366d36d.entry.js +0 -2
- package/dist/q2-tecton-elements/p-7366d36d.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-9a28b93a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-9c9a2550.entry.js +0 -2
- package/dist/q2-tecton-elements/p-9d743327.entry.js +0 -2
- package/dist/q2-tecton-elements/p-a52371cf.entry.js +0 -2
- package/dist/q2-tecton-elements/p-a53e9f1e.entry.js +0 -2
- package/dist/q2-tecton-elements/p-a53e9f1e.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-ac82ea35.entry.js +0 -2
- package/dist/q2-tecton-elements/p-ac82ea35.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-bfd69d42.entry.js +0 -2
- package/dist/q2-tecton-elements/p-db6921fb.entry.js +0 -2
- package/dist/q2-tecton-elements/p-db6921fb.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-e45856f7.entry.js +0 -2
- package/dist/q2-tecton-elements/p-e8858d0d.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-ef856249.js +0 -2
- package/dist/q2-tecton-elements/p-ef856249.js.map +0 -1
- package/dist/q2-tecton-elements/p-efbe6c17.entry.js +0 -2
- package/dist/q2-tecton-elements/p-ff6afb42.entry.js +0 -2
- /package/dist/types/workspace/workspace/{tecton-production_release_1.37.x → tecton-production_release_1.38.x}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"index14.js","mappings":"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","names":[],"sources":["./src/components/q2-option-list/styles.scss?tag=q2-option-list&encapsulation=shadow","./src/components/q2-option-list/index.tsx"],"sourcesContent":["@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 {\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, loc, nextPaint, overrideFocus, waitForNextPaint } from 'src/utils';\n\nexport interface IOptionValue {\n value: string;\n display?: string;\n}\n\n@Component({\n tag: 'q2-option-list',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2OptionList implements ComponentInterface {\n @Prop({ reflect: true }) customSearch: boolean;\n @Prop({ reflect: true }) noSelect: boolean;\n @Prop({ reflect: true }) align: 'left' | 'right';\n @Prop({ mutable: true }) selectedOptions: IOptionValue[] = [];\n @Prop({ reflect: true }) multiple: boolean;\n @Prop({ reflect: true }) disabled: boolean;\n @Prop({ reflect: true, mutable: true }) showSelected: boolean;\n /**\n * Translates to the role of the option list\n * @type {('menu' | 'listbox')}\n */\n @Prop() type: 'menu' | 'listbox' = 'listbox';\n @Prop() label: string = loc('tecton.element.optionList.label');\n\n @Event() change: EventEmitter<{ value: string; values: IOptionValue[] }>;\n @Event() popoverState: EventEmitter<{ open: boolean; action: 'close' | 'select' | 'open' }>;\n @Event({ bubbles: false }) ready: EventEmitter;\n @State() hasOptions: boolean;\n contentElement: HTMLElement;\n activeIndex: number;\n pivotIndex: number;\n scheduledAfterRender: (() => void)[] = [];\n searchString: string;\n searchStringTimer: number;\n keyStore: {\n queue: string[];\n lastPressedAt: Date;\n } = {\n queue: [],\n lastPressedAt: new Date(),\n };\n\n @Element() hostElement: HTMLElement;\n\n /// LifeCycle Hooks ///\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 /// Getters ///\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 /// Helpers ///\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 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 scrollToActiveOption() {\n const activeOption = this.allOptions[this.activeIndex];\n activeOption?.scrollIntoView({ block: 'nearest' });\n }\n\n async openDropdownWithActiveElement(activeIndex: number) {\n if (this.disabled) return;\n this.activeIndex = activeIndex;\n this.popoverState.emit({ open: true, action: 'open' });\n await waitForNextPaint();\n this.setActiveOption();\n await waitForNextPaint();\n this.setFocusedOption();\n this.scrollToActiveOption();\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 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 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 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 isHostElementVisible = !!this.hostElement.offsetParent;\n if (isHostElementVisible) option.focus();\n else nextPaint(() => option.focus());\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 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 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 if (multiple) return;\n this.popoverState.emit({ open: false, action: 'select' });\n }\n\n adjustActiveOptionAndScroll(numToAdd: number) {\n this.activeIndex += numToAdd;\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 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 return list.find(v => {\n return (\n !v.element.disabled &&\n v.element.display &&\n (v.element.display.match(new RegExp(`^${keyStr}`, 'i')) ||\n v.element.display.replace(/\\s/g, '').match(new RegExp(`^${keyStr}`, '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) this.selectOption(this.allOptions[index]);\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 /// Watchers ///\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 @Watch('selectedOptions')\n selectedOptionsUpdated() {\n if (this.multiple) {\n this.updateMultipleOptionAttrs();\n } else {\n this.updateSingleOptionAttrs();\n }\n }\n\n /// Listeners ///\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 @Listen('click')\n handleClick(event: MouseEvent) {\n event.stopPropagation();\n }\n\n /// Public Methods ///\n @Method()\n async setDefaultActiveElement() {\n this.activeIndex = this.getDefaultActiveIndex();\n this.setActiveOption();\n this.setFocusedOption();\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 handleExternalKeydown(event: KeyboardEvent) {\n this.externalKeydownHandler(event);\n }\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 /// Event Handlers ///\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 this.activeIndex = 0;\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 this.activeIndex = 0;\n nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(0);\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 internalKeydownHandler = (event: KeyboardEvent) => {\n event.stopPropagation();\n const { activeIndex, customSearch, allOptions } = this;\n const { key, shiftKey } = event;\n\n let newOption;\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 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 break;\n\n case 'ArrowUp':\n event.preventDefault();\n const isFirstOptionActive = activeIndex === 0;\n if (isFirstOptionActive) 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 isLastOptionActive = activeIndex === allOptions.length - 1;\n if (isLastOptionActive) 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 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 /* tslint:enable:cyclomatic-complexity */\n\n focusoutHandler = (event: FocusEvent) => {\n const { relatedTarget } = event as unknown as { relatedTarget: HTMLQ2OptionElement };\n const isInDropdown = this.allOptions.includes(relatedTarget);\n const isInLightDom = !isInDropdown && this.hostElement.contains(relatedTarget);\n if (isInDropdown || isInLightDom) {\n event.stopPropagation();\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 };\n\n /// DOM ///\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 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"],"version":3}
|
|
1
|
+
{"file":"index14.js","mappings":"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","names":[],"sources":["./src/components/q2-option-list/styles.scss?tag=q2-option-list&encapsulation=shadow","./src/components/q2-option-list/index.tsx"],"sourcesContent":["@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 {\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, loc, nextPaint, overrideFocus, waitForNextPaint } from 'src/utils';\n\nexport interface IOptionValue {\n value: string;\n display?: string;\n}\n\n@Component({\n tag: 'q2-option-list',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2OptionList implements ComponentInterface {\n @Prop({ reflect: true }) customSearch: boolean;\n @Prop({ reflect: true }) noSelect: boolean;\n @Prop({ reflect: true }) align: 'left' | 'right';\n @Prop({ mutable: true }) selectedOptions: IOptionValue[] = [];\n @Prop({ reflect: true }) multiple: boolean;\n @Prop({ reflect: true }) disabled: boolean;\n @Prop({ reflect: true, mutable: true }) showSelected: boolean;\n /**\n * Translates to the role of the option list\n * @type {('menu' | 'listbox')}\n */\n @Prop() type: 'menu' | 'listbox' = 'listbox';\n @Prop() label: string = loc('tecton.element.optionList.label');\n\n @Event() change: EventEmitter<{ value: string; values: IOptionValue[] }>;\n @Event() popoverState: EventEmitter<{ open: boolean; action: 'close' | 'select' | 'open' }>;\n @Event({ bubbles: false }) ready: EventEmitter;\n @State() hasOptions: boolean;\n contentElement: HTMLElement;\n activeIndex: number;\n pivotIndex: number;\n scheduledAfterRender: (() => void)[] = [];\n searchString: string;\n searchStringTimer: number;\n keyStore: {\n queue: string[];\n lastPressedAt: Date;\n } = {\n queue: [],\n lastPressedAt: new Date(),\n };\n\n @Element() hostElement: HTMLElement;\n\n /// LifeCycle Hooks ///\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 /// Getters ///\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 /// Helpers ///\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 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 scrollToActiveOption() {\n const activeOption = this.allOptions[this.activeIndex];\n activeOption?.scrollIntoView({ block: 'nearest' });\n }\n\n async openDropdownWithActiveElement(activeIndex: number) {\n if (this.disabled) return;\n this.activeIndex = activeIndex;\n this.popoverState.emit({ open: true, action: 'open' });\n await waitForNextPaint();\n this.setActiveOption();\n await waitForNextPaint();\n this.setFocusedOption();\n this.scrollToActiveOption();\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 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 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 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 isHostElementVisible = !!this.hostElement.offsetParent;\n if (isHostElementVisible) option.focus();\n else nextPaint(() => option.focus());\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 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 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 adjustActiveOptionAndScroll(numToAdd: number) {\n this.activeIndex += numToAdd;\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 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 return list.find(v => {\n return (\n !v.element.disabled &&\n v.element.display &&\n (v.element.display.match(new RegExp(`^${keyStr}`, 'i')) ||\n v.element.display.replace(/\\s/g, '').match(new RegExp(`^${keyStr}`, '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 /// Watchers ///\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 @Watch('selectedOptions')\n selectedOptionsUpdated() {\n if (this.multiple) {\n this.updateMultipleOptionAttrs();\n } else {\n this.updateSingleOptionAttrs();\n }\n }\n\n /// Listeners ///\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 @Listen('click')\n handleClick(event: MouseEvent) {\n event.stopPropagation();\n }\n\n /// Public Methods ///\n @Method()\n async setDefaultActiveElement() {\n this.activeIndex = this.getDefaultActiveIndex();\n this.setActiveOption();\n this.setFocusedOption();\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 handleExternalKeydown(event: KeyboardEvent) {\n this.externalKeydownHandler(event);\n }\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 /// Event Handlers ///\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 this.activeIndex = 0;\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 this.activeIndex = 0;\n nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(0);\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 internalKeydownHandler = (event: KeyboardEvent) => {\n event.stopPropagation();\n const { activeIndex, customSearch, allOptions, multiple } = this;\n const { key, shiftKey } = event;\n\n let newOption;\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 isFirstOptionActive = activeIndex === 0;\n if (isFirstOptionActive) 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 isLastOptionActive = activeIndex === allOptions.length - 1;\n if (isLastOptionActive) 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 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 /* 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 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 /// DOM ///\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"],"version":3}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
|
2
|
-
import { r as resizeIframe, w as waitForNextPaint } from './index16.js';
|
|
2
|
+
import { j as handleDeprecationWarning, r as resizeIframe, n as nextPaint, w as waitForNextPaint } from './index16.js';
|
|
3
3
|
|
|
4
|
-
const stylesCss = "*{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 #
|
|
4
|
+
const stylesCss = "*{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{display:block;width:100%}:host([align=right]){display:block;position:absolute;right:0;text-align:end;left:unset}.container{display:none;overflow:hidden;opacity:0;height:0;position:absolute;top:var(--tct-popover-top, initial);background:var(--tct-popover-background, var(--app-white, #ffffff));color:var(--tct-popover-font-color, var(--t-text, #4d4d4d));z-index:var(--tct-popover-z-index, 100);width:max-content;min-width:var(--tct-popover-min-width, 135px);box-shadow:var(--tct-popover-box-shadow, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3)));text-align:start;left:0;margin-block:var(--tct-popover-margin-block, 0);border-width:var(--tct-popover-border-width, 0);border-style:solid;border-color:var(--tct-popover-border-color, transparent);border-radius:var(--tct-popover-border-radius, 0);max-height:var(--comp-pop-max-height);--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 3px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}.container::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.container::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.container::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}:host([block]) .container{left:unset;right:unset;width:100%;min-width:var(--tct-popover-min-width, unset)}:host([align=right]) .container{right:0;text-align:end;left:unset}:host([open]) .container.show{height:auto;overflow:auto;opacity:1}.container.up{bottom:var(--comp-pop-offset)}click-elsewhere{position:relative;display:block}.content{height:auto}";
|
|
5
5
|
|
|
6
6
|
const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLElement {
|
|
7
7
|
constructor() {
|
|
@@ -10,7 +10,16 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
10
10
|
this.__attachShadow();
|
|
11
11
|
this.popoverStateChanged = createEvent(this, "popoverStateChanged", 7);
|
|
12
12
|
this.scheduledAfterRender = [];
|
|
13
|
+
/**
|
|
14
|
+
* The number of pixels to leave between the popover and the edge of the viewport
|
|
15
|
+
*/
|
|
16
|
+
this.displayBuffer = 10;
|
|
13
17
|
/// Helpers ///
|
|
18
|
+
this.handleMinHeight = () => {
|
|
19
|
+
if (this.minHeight) {
|
|
20
|
+
handleDeprecationWarning(this, 'minHeight', 'prop');
|
|
21
|
+
}
|
|
22
|
+
};
|
|
14
23
|
this.viewPortChanged = () => {
|
|
15
24
|
if (!this.open)
|
|
16
25
|
return;
|
|
@@ -20,13 +29,14 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
20
29
|
this.align = undefined;
|
|
21
30
|
this.open = undefined;
|
|
22
31
|
this.block = undefined;
|
|
23
|
-
this.minHeight = undefined;
|
|
24
32
|
this.controlElement = undefined;
|
|
33
|
+
this.minHeight = undefined;
|
|
25
34
|
this.currentDirection = undefined;
|
|
26
35
|
this.show = false;
|
|
27
36
|
}
|
|
28
37
|
/// Lifecycle hooks ///
|
|
29
38
|
componentDidLoad() {
|
|
39
|
+
this.handleMinHeight();
|
|
30
40
|
if (this.open)
|
|
31
41
|
this.determinePopDirection();
|
|
32
42
|
}
|
|
@@ -57,11 +67,16 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
57
67
|
else {
|
|
58
68
|
this.removeViewportListeners();
|
|
59
69
|
this.currentDirection = undefined;
|
|
60
|
-
this.containerElement.style.removeProperty('display');
|
|
61
|
-
this.containerElement.style.removeProperty('--comp-pop-max-height');
|
|
62
70
|
this.show = false;
|
|
71
|
+
nextPaint(() => {
|
|
72
|
+
this.containerElement.style.removeProperty('--comp-pop-max-height');
|
|
73
|
+
this.containerElement.style.removeProperty('display');
|
|
74
|
+
});
|
|
63
75
|
}
|
|
64
76
|
}
|
|
77
|
+
minHeightProvided() {
|
|
78
|
+
this.handleMinHeight();
|
|
79
|
+
}
|
|
65
80
|
/// Listeners ///
|
|
66
81
|
popoverStateHandler(event) {
|
|
67
82
|
const { detail: { open }, } = event;
|
|
@@ -85,71 +100,65 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
85
100
|
this.currentDirection = direction;
|
|
86
101
|
this.show = true;
|
|
87
102
|
}
|
|
103
|
+
get isModule() {
|
|
104
|
+
var _a, _b;
|
|
105
|
+
const isIframe = window !== window.top;
|
|
106
|
+
const hasPlatformDimensions = Object.keys((_b = (_a = window.Tecton) === null || _a === void 0 ? void 0 : _a.platformDimensions) !== null && _b !== void 0 ? _b : {}).length > 0;
|
|
107
|
+
return isIframe && hasPlatformDimensions;
|
|
108
|
+
}
|
|
88
109
|
async determinePopDirection() {
|
|
89
|
-
var _a, _b
|
|
90
|
-
const { containerElement,
|
|
110
|
+
var _a, _b;
|
|
111
|
+
const { containerElement, direction, controlElement, displayBuffer } = this;
|
|
91
112
|
if (containerElement)
|
|
92
113
|
containerElement.style.maxHeight = null;
|
|
93
|
-
//
|
|
94
|
-
const currentOrStatedDirection = direction !== null && direction !== void 0 ? direction : currentDirection;
|
|
95
|
-
// Set the container to block so we can get the height
|
|
114
|
+
// Show the container so we can get the height
|
|
96
115
|
containerElement.style.setProperty('display', 'block');
|
|
97
116
|
await waitForNextPaint();
|
|
98
|
-
|
|
99
|
-
const { top:
|
|
117
|
+
const { isModule } = this;
|
|
118
|
+
const { top: controlTop, bottom: controlBottom } = (_a = controlElement === null || controlElement === void 0 ? void 0 : controlElement.getBoundingClientRect()) !== null && _a !== void 0 ? _a : {
|
|
100
119
|
top: 0,
|
|
101
|
-
|
|
120
|
+
bottom: 0,
|
|
102
121
|
};
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
else if (currentOrStatedDirection === undefined && canShowFullSizeAbove)
|
|
121
|
-
determinedDirection = 'up';
|
|
122
|
-
if (determinedDirection)
|
|
123
|
-
return this.setDirectionAndShow(determinedDirection);
|
|
124
|
-
// If full size will not fit then make it as tall as possible
|
|
125
|
-
const { minHeight = 150 } = this;
|
|
126
|
-
const displayBuffer = 5;
|
|
127
|
-
const canShowMinHeightBelow = bottomOffset >= minHeight + displayBuffer;
|
|
128
|
-
let maxHeight;
|
|
129
|
-
if (currentOrStatedDirection === 'down') {
|
|
130
|
-
maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);
|
|
131
|
-
determinedDirection = 'down';
|
|
132
|
-
}
|
|
133
|
-
else if (currentOrStatedDirection === 'up') {
|
|
134
|
-
maxHeight = Math.max(topOffset - displayBuffer, minHeight);
|
|
135
|
-
determinedDirection = 'up';
|
|
136
|
-
}
|
|
137
|
-
else if (canShowMinHeightBelow) {
|
|
138
|
-
maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);
|
|
139
|
-
determinedDirection = 'down';
|
|
122
|
+
let windowHeight;
|
|
123
|
+
let maxSpaceAbove;
|
|
124
|
+
let maxSpaceBelow;
|
|
125
|
+
if (isModule) {
|
|
126
|
+
const platformDimensions = (_b = window.Tecton) === null || _b === void 0 ? void 0 : _b.platformDimensions;
|
|
127
|
+
const distanceToIframeBottom = window.visualViewport.height - controlBottom;
|
|
128
|
+
const viewableSpaceBelow = platformDimensions.innerHeight - (platformDimensions.outletOffset + controlBottom);
|
|
129
|
+
const isIframeShorterThanWindow = distanceToIframeBottom < viewableSpaceBelow;
|
|
130
|
+
windowHeight = platformDimensions.innerHeight;
|
|
131
|
+
// If the top of the module is below the top of the window we just use the controlTop
|
|
132
|
+
// Otherwise we need to add the outletOffset to the controlTop
|
|
133
|
+
maxSpaceAbove =
|
|
134
|
+
(platformDimensions.outletOffset > 0 ? controlTop : controlTop + platformDimensions.outletOffset) -
|
|
135
|
+
displayBuffer;
|
|
136
|
+
maxSpaceBelow = isIframeShorterThanWindow
|
|
137
|
+
? distanceToIframeBottom - displayBuffer
|
|
138
|
+
: viewableSpaceBelow - displayBuffer;
|
|
140
139
|
}
|
|
141
140
|
else {
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
windowHeight = window.visualViewport.height;
|
|
142
|
+
maxSpaceAbove = controlTop - displayBuffer;
|
|
143
|
+
maxSpaceBelow = windowHeight - controlBottom - displayBuffer;
|
|
144
|
+
}
|
|
145
|
+
const directionWithMostSpace = maxSpaceAbove > maxSpaceBelow ? 'up' : 'down';
|
|
146
|
+
switch (direction !== null && direction !== void 0 ? direction : directionWithMostSpace) {
|
|
147
|
+
case 'up':
|
|
148
|
+
containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceAbove}px`);
|
|
149
|
+
return this.setDirectionAndShow('up');
|
|
150
|
+
case 'down':
|
|
151
|
+
containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceBelow}px`);
|
|
152
|
+
return this.setDirectionAndShow('down');
|
|
144
153
|
}
|
|
145
|
-
containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);
|
|
146
|
-
return this.setDirectionAndShow(determinedDirection);
|
|
147
154
|
}
|
|
148
155
|
determinePopOffset() {
|
|
149
|
-
var _a;
|
|
150
156
|
const { controlElement, containerElement } = this;
|
|
151
|
-
const
|
|
152
|
-
|
|
157
|
+
const controlStyle = getComputedStyle(controlElement);
|
|
158
|
+
const controlSize = parseInt(controlStyle.height) +
|
|
159
|
+
parseInt(controlStyle.borderTopWidth) +
|
|
160
|
+
parseInt(controlStyle.borderBottomWidth);
|
|
161
|
+
containerElement.style.setProperty('--comp-pop-offset', `${controlSize}px`);
|
|
153
162
|
}
|
|
154
163
|
/// DOM ///
|
|
155
164
|
render() {
|
|
@@ -160,7 +169,8 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
160
169
|
}
|
|
161
170
|
get hostElement() { return this; }
|
|
162
171
|
static get watchers() { return {
|
|
163
|
-
"open": ["openChanged"]
|
|
172
|
+
"open": ["openChanged"],
|
|
173
|
+
"minHeight": ["minHeightProvided"]
|
|
164
174
|
}; }
|
|
165
175
|
static get style() { return stylesCss; }
|
|
166
176
|
}, [1, "q2-popover", {
|
|
@@ -168,8 +178,8 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
168
178
|
"align": [513],
|
|
169
179
|
"open": [1540],
|
|
170
180
|
"block": [516],
|
|
171
|
-
"minHeight": [2, "min-height"],
|
|
172
181
|
"controlElement": [16],
|
|
182
|
+
"minHeight": [2, "min-height"],
|
|
173
183
|
"currentDirection": [32],
|
|
174
184
|
"show": [32],
|
|
175
185
|
"toggle": [64],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"index15.js","mappings":"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","names":[],"sources":["./src/components/q2-popover/styles.scss?tag=q2-popover&encapsulation=shadow","./src/components/q2-popover/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: block;\n width: 100%;\n}\n\n:host([align='right']) {\n display: block;\n position: absolute;\n right: 0;\n text-align: end;\n left: unset;\n}\n\n.container {\n display: none;\n overflow: hidden;\n opacity: 0;\n height: 0;\n position: absolute;\n top: var-list(var-prefixer(popover-top), initial);\n visibility: hidden;\n background: var-list(--tct-popover-background, var-prefixer(popover-background-color), --app-white, #ffffff);\n color: var-list(var-prefixer(popover-text-color), --t-text, #4d4d4d);\n z-index: var-list(var-prefixer(popover-z-index), 100);\n width: max-content;\n min-width: var-list(var-prefixer(popover-min-width), 135px);\n box-shadow: var-list(var-prefixer(popover-box-shadow), --app-shadow-1, unquote('0 2px 4px rgba(0, 0, 0, 0.3)'));\n text-align: start;\n left: 0;\n border-radius: var-list(var-prefixer(popover-border-radius), 0);\n\n // --comp-pop-max-height is set via JS\n max-height: var(--comp-pop-max-height);\n\n @include tiny-scrollbar();\n\n :host([block]) & {\n left: unset;\n right: unset;\n width: 100%;\n min-width: var-list(var-prefixer(popover-min-width), unset);\n }\n\n :host([align='right']) & {\n right: 0;\n text-align: end;\n left: unset;\n }\n\n :host([open]) & {\n visibility: visible;\n }\n\n :host([open]) &.show {\n height: auto;\n overflow: auto;\n opacity: 1;\n }\n\n &.up {\n bottom: var(--comp-pop-offset);\n }\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n\n.content {\n height: auto;\n}\n","import {\n Component,\n Prop,\n h,\n ComponentInterface,\n Element,\n Watch,\n Method,\n Listen,\n EventEmitter,\n Event,\n State,\n} from '@stencil/core';\nimport { resizeIframe, waitForNextPaint } from '../../utils';\n\n@Component({\n tag: 'q2-popover',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2Popover implements ComponentInterface {\n @Prop({ reflect: true }) direction: 'up' | 'down';\n @Prop({ reflect: true }) align: 'left' | 'right';\n @Prop({ reflect: true, mutable: true }) open: boolean;\n @Prop({ reflect: true }) block: boolean;\n @Prop() minHeight: number;\n @Prop() controlElement: HTMLElement;\n\n @Element() hostElement: HTMLElement;\n @Event() popoverStateChanged: EventEmitter<{ open: boolean }>;\n\n @State() currentDirection: 'down' | 'up' = undefined;\n @State() show: boolean = false;\n containerElement: HTMLDivElement;\n contentElement: HTMLDivElement;\n scheduledAfterRender: (() => void)[] = [];\n\n /// Lifecycle hooks ///\n componentDidLoad() {\n if (this.open) this.determinePopDirection();\n }\n\n componentDidRender() {\n setTimeout(() => {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }, 25);\n }\n\n disconnectedCallback() {\n this.removeViewportListeners();\n }\n\n /// Methods ///\n @Method()\n async toggle() {\n this.open = !this.open;\n }\n\n @Method()\n async scrollContainerTo(options: ScrollToOptions) {\n this.containerElement.scrollTo(options);\n }\n\n /// Watchers ///\n @Watch('open')\n openChanged(open) {\n this.popoverStateChanged.emit({ open });\n this.scheduledAfterRender.push(resizeIframe);\n if (open) {\n this.addViewportListeners();\n this.determinePopDirection();\n } else {\n this.removeViewportListeners();\n this.currentDirection = undefined;\n this.containerElement.style.removeProperty('display');\n this.containerElement.style.removeProperty('--comp-pop-max-height');\n this.show = false;\n }\n }\n\n /// Listeners ///\n @Listen('popoverState')\n popoverStateHandler(event: CustomEvent<{ open: boolean }>) {\n const {\n detail: { open },\n } = event;\n if (open === this.open) return;\n\n this.open = open;\n event.stopPropagation();\n }\n\n /// Helpers ///\n viewPortChanged = () => {\n if (!this.open) return;\n this.determinePopDirection();\n };\n\n addViewportListeners() {\n // window.visualViewport.addEventListener('scroll', this.viewPortChanged);\n window.visualViewport.addEventListener('resize', this.viewPortChanged);\n }\n\n removeViewportListeners() {\n // window.visualViewport.removeEventListener('scroll', this.viewPortChanged);\n window.visualViewport.removeEventListener('resize', this.viewPortChanged);\n }\n\n async setDirectionAndShow(direction: 'up' | 'down') {\n if (direction === 'up') {\n this.determinePopOffset();\n }\n\n this.currentDirection = direction;\n this.show = true;\n }\n\n async determinePopDirection() {\n const { containerElement, contentElement, direction, controlElement, currentDirection } = this;\n if (containerElement) containerElement.style.maxHeight = null;\n\n // If the direction is already set then use it, otherwise use the current direction\n const currentOrStatedDirection = direction ?? currentDirection;\n\n // Set the container to block so we can get the height\n containerElement.style.setProperty('display', 'block');\n await waitForNextPaint();\n\n // Determine the dimensions of the control element\n const { top: topOffset, height } = controlElement?.getBoundingClientRect() ?? {\n top: 0,\n height: 0,\n };\n\n const contentHeight = contentElement.clientHeight;\n const scrollY =\n window.Tecton?.platformDimensions?.scrollY ||\n window.visualViewport?.offsetTop || // Only Android Chrome provides this which we need when scrolled\n 0;\n const outletOffset = scrollY + (window.Tecton?.platformDimensions?.outletOffset || 0);\n const innerHeight =\n window.Tecton?.platformDimensions?.innerHeight || window.visualViewport?.height || window.innerHeight;\n const bottomOffset = scrollY + innerHeight - topOffset - height - outletOffset;\n const canShowFullSizeBelow = bottomOffset > contentHeight;\n const canShowFullSizeAbove = contentHeight <= topOffset;\n let determinedDirection: 'up' | 'down';\n\n // Show the full-size popover below or above if it will fit\n if (currentOrStatedDirection === 'down' && canShowFullSizeBelow) return this.setDirectionAndShow('down');\n else if (currentOrStatedDirection === 'up' && canShowFullSizeAbove) return this.setDirectionAndShow('up');\n else if (currentOrStatedDirection === undefined && canShowFullSizeBelow) determinedDirection = 'down';\n else if (currentOrStatedDirection === undefined && canShowFullSizeAbove) determinedDirection = 'up';\n\n if (determinedDirection) return this.setDirectionAndShow(determinedDirection);\n\n // If full size will not fit then make it as tall as possible\n const { minHeight = 150 } = this;\n const displayBuffer = 5;\n const canShowMinHeightBelow = bottomOffset >= minHeight + displayBuffer;\n\n let maxHeight;\n if (currentOrStatedDirection === 'down') {\n maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);\n determinedDirection = 'down';\n } else if (currentOrStatedDirection === 'up') {\n maxHeight = Math.max(topOffset - displayBuffer, minHeight);\n determinedDirection = 'up';\n } else if (canShowMinHeightBelow) {\n maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);\n determinedDirection = 'down';\n } else {\n maxHeight = Math.max(topOffset - scrollY - displayBuffer, minHeight);\n determinedDirection = 'up';\n }\n containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);\n return this.setDirectionAndShow(determinedDirection);\n }\n\n determinePopOffset() {\n const { controlElement, containerElement } = this;\n const dropdownHeight = controlElement?.getBoundingClientRect().height ?? 0;\n containerElement.style.setProperty('--comp-pop-offset', `${dropdownHeight}px`);\n }\n\n /// DOM ///\n render() {\n const containerClasses = ['container', this.currentDirection];\n if (this.show) containerClasses.push('show');\n\n return (\n <div\n ref={el => (this.containerElement = el)}\n class={containerClasses.join(' ')}\n test-id=\"outerContainer\"\n >\n <div\n ref={el => (this.contentElement = el)}\n class=\"content\"\n >\n <slot />\n </div>\n </div>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"index15.js","mappings":"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","names":[],"sources":["./src/components/q2-popover/styles.scss?tag=q2-popover&encapsulation=shadow","./src/components/q2-popover/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: block;\n width: 100%;\n}\n\n:host([align='right']) {\n display: block;\n position: absolute;\n right: 0;\n text-align: end;\n left: unset;\n}\n\n.container {\n display: none;\n overflow: hidden;\n opacity: 0;\n height: 0;\n position: absolute;\n top: var-list(--tct-popover-top, initial);\n background: var-list(--tct-popover-background, --app-white, #ffffff);\n color: var-list(--tct-popover-font-color, --t-text, #4d4d4d);\n z-index: var-list(--tct-popover-z-index, 100);\n width: max-content;\n min-width: var-list(--tct-popover-min-width, 135px);\n box-shadow: var-list(--tct-popover-box-shadow, --app-shadow-1, unquote('0 2px 4px rgba(0, 0, 0, 0.3)'));\n text-align: start;\n left: 0;\n margin-block: var-list(--tct-popover-margin-block, 0);\n border-width: var-list(--tct-popover-border-width, 0);\n border-style: solid;\n border-color: var-list(--tct-popover-border-color, transparent);\n border-radius: var-list(--tct-popover-border-radius, 0);\n\n // --comp-pop-max-height is set via JS\n max-height: var(--comp-pop-max-height);\n\n @include tiny-scrollbar();\n\n :host([block]) & {\n left: unset;\n right: unset;\n width: 100%;\n min-width: var-list(--tct-popover-min-width, unset);\n }\n\n :host([align='right']) & {\n right: 0;\n text-align: end;\n left: unset;\n }\n\n :host([open]) &.show {\n height: auto;\n overflow: auto;\n opacity: 1;\n }\n\n &.up {\n bottom: var(--comp-pop-offset);\n }\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n\n.content {\n height: auto;\n}\n","import {\n Component,\n Prop,\n h,\n ComponentInterface,\n Element,\n Watch,\n Method,\n Listen,\n EventEmitter,\n Event,\n State,\n} from '@stencil/core';\nimport { nextPaint, resizeIframe, waitForNextPaint, handleDeprecationWarning } from '../../utils';\n\n@Component({\n tag: 'q2-popover',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2Popover implements ComponentInterface {\n @Prop({ reflect: true }) direction: 'up' | 'down';\n @Prop({ reflect: true }) align: 'left' | 'right';\n @Prop({ reflect: true, mutable: true }) open: boolean;\n @Prop({ reflect: true }) block: boolean;\n @Prop() controlElement: HTMLElement;\n\n /** @deprecated */\n @Prop() minHeight: number;\n\n @Element() hostElement: HTMLElement;\n @Event() popoverStateChanged: EventEmitter<{ open: boolean }>;\n\n @State() currentDirection: 'down' | 'up' = undefined;\n @State() show: boolean = false;\n containerElement: HTMLDivElement;\n contentElement: HTMLDivElement;\n scheduledAfterRender: (() => void)[] = [];\n\n /**\n * The number of pixels to leave between the popover and the edge of the viewport\n */\n displayBuffer = 10;\n\n /// Lifecycle hooks ///\n componentDidLoad() {\n this.handleMinHeight();\n if (this.open) this.determinePopDirection();\n }\n\n componentDidRender() {\n setTimeout(() => {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }, 25);\n }\n\n disconnectedCallback() {\n this.removeViewportListeners();\n }\n\n /// Methods ///\n @Method()\n async toggle() {\n this.open = !this.open;\n }\n\n @Method()\n async scrollContainerTo(options: ScrollToOptions) {\n this.containerElement.scrollTo(options);\n }\n\n /// Watchers ///\n @Watch('open')\n openChanged(open) {\n this.popoverStateChanged.emit({ open });\n this.scheduledAfterRender.push(resizeIframe);\n if (open) {\n this.addViewportListeners();\n this.determinePopDirection();\n } else {\n this.removeViewportListeners();\n this.currentDirection = undefined;\n this.show = false;\n nextPaint(() => {\n this.containerElement.style.removeProperty('--comp-pop-max-height');\n this.containerElement.style.removeProperty('display');\n });\n }\n }\n\n @Watch('minHeight')\n minHeightProvided() {\n this.handleMinHeight();\n }\n\n /// Listeners ///\n @Listen('popoverState')\n popoverStateHandler(event: CustomEvent<{ open: boolean }>) {\n const {\n detail: { open },\n } = event;\n if (open === this.open) return;\n\n this.open = open;\n event.stopPropagation();\n }\n\n /// Helpers ///\n handleMinHeight = () => {\n if (this.minHeight) {\n handleDeprecationWarning(this, 'minHeight', 'prop');\n }\n };\n\n viewPortChanged = () => {\n if (!this.open) return;\n this.determinePopDirection();\n };\n\n addViewportListeners() {\n // window.visualViewport.addEventListener('scroll', this.viewPortChanged);\n window.visualViewport.addEventListener('resize', this.viewPortChanged);\n }\n\n removeViewportListeners() {\n // window.visualViewport.removeEventListener('scroll', this.viewPortChanged);\n window.visualViewport.removeEventListener('resize', this.viewPortChanged);\n }\n\n async setDirectionAndShow(direction: 'up' | 'down') {\n if (direction === 'up') {\n this.determinePopOffset();\n }\n\n this.currentDirection = direction;\n this.show = true;\n }\n\n get isModule() {\n const isIframe = window !== window.top;\n const hasPlatformDimensions = Object.keys(window.Tecton?.platformDimensions ?? {}).length > 0;\n return isIframe && hasPlatformDimensions;\n }\n\n async determinePopDirection() {\n const { containerElement, direction, controlElement, displayBuffer } = this;\n if (containerElement) containerElement.style.maxHeight = null;\n\n // Show the container so we can get the height\n containerElement.style.setProperty('display', 'block');\n await waitForNextPaint();\n\n const { isModule } = this;\n const { top: controlTop, bottom: controlBottom } = controlElement?.getBoundingClientRect() ?? {\n top: 0,\n bottom: 0,\n };\n\n let windowHeight: number;\n let maxSpaceAbove: number;\n let maxSpaceBelow: number;\n\n if (isModule) {\n const platformDimensions = window.Tecton?.platformDimensions;\n const distanceToIframeBottom = window.visualViewport.height - controlBottom;\n const viewableSpaceBelow =\n platformDimensions.innerHeight - (platformDimensions.outletOffset + controlBottom);\n const isIframeShorterThanWindow = distanceToIframeBottom < viewableSpaceBelow;\n windowHeight = platformDimensions.innerHeight;\n // If the top of the module is below the top of the window we just use the controlTop\n // Otherwise we need to add the outletOffset to the controlTop\n maxSpaceAbove =\n (platformDimensions.outletOffset > 0 ? controlTop : controlTop + platformDimensions.outletOffset) -\n displayBuffer;\n maxSpaceBelow = isIframeShorterThanWindow\n ? distanceToIframeBottom - displayBuffer\n : viewableSpaceBelow - displayBuffer;\n } else {\n windowHeight = window.visualViewport.height;\n maxSpaceAbove = controlTop - displayBuffer;\n maxSpaceBelow = windowHeight - controlBottom - displayBuffer;\n }\n\n const directionWithMostSpace: 'up' | 'down' = maxSpaceAbove > maxSpaceBelow ? 'up' : 'down';\n switch (direction ?? directionWithMostSpace) {\n case 'up':\n containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceAbove}px`);\n return this.setDirectionAndShow('up');\n case 'down':\n containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceBelow}px`);\n return this.setDirectionAndShow('down');\n default:\n break;\n }\n }\n\n determinePopOffset() {\n const { controlElement, containerElement } = this;\n const controlStyle = getComputedStyle(controlElement);\n const controlSize =\n parseInt(controlStyle.height) +\n parseInt(controlStyle.borderTopWidth) +\n parseInt(controlStyle.borderBottomWidth);\n\n containerElement.style.setProperty('--comp-pop-offset', `${controlSize}px`);\n }\n\n /// DOM ///\n render() {\n const containerClasses = ['container', this.currentDirection];\n if (this.show) containerClasses.push('show');\n\n return (\n <div\n ref={el => (this.containerElement = el)}\n class={containerClasses.join(' ')}\n test-id=\"outerContainer\"\n >\n <div\n ref={el => (this.contentElement = el)}\n class=\"content\"\n >\n <slot />\n </div>\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -520,7 +520,14 @@ function labelDOM(target) {
|
|
|
520
520
|
const { label, hideLabel, optional, readonly } = target;
|
|
521
521
|
const labelClasses = ['input-label'];
|
|
522
522
|
let helpText = '';
|
|
523
|
-
|
|
523
|
+
let shouldHideLabel = hideLabel;
|
|
524
|
+
if (!shouldHideLabel) {
|
|
525
|
+
const labelSlot = target.hostElement.shadowRoot.querySelector('slot[name="label"]');
|
|
526
|
+
const hasSlotContent = (labelSlot === null || labelSlot === void 0 ? void 0 : labelSlot.assignedNodes().length) > 0;
|
|
527
|
+
const hasLabel = !!label;
|
|
528
|
+
shouldHideLabel = hasLabel || hasSlotContent ? false : true;
|
|
529
|
+
}
|
|
530
|
+
if (shouldHideLabel)
|
|
524
531
|
labelClasses.push('sr');
|
|
525
532
|
if (optional) {
|
|
526
533
|
helpText = h("span", { class: "optional-tag" }, loc('tecton.element.input.optional'));
|
|
@@ -534,6 +541,9 @@ function labelDOM(target) {
|
|
|
534
541
|
label ? loc(label) : undefined,
|
|
535
542
|
helpText)));
|
|
536
543
|
}
|
|
544
|
+
function hasSlotContent(target, slotName) {
|
|
545
|
+
return target.querySelector(`[slot="${slotName}"]`) !== null;
|
|
546
|
+
}
|
|
537
547
|
function handleAriaLabel(target) {
|
|
538
548
|
const { ariaLabel } = target;
|
|
539
549
|
if (!ariaLabel)
|
|
@@ -628,6 +638,6 @@ const handleColor = (target) => {
|
|
|
628
638
|
}
|
|
629
639
|
};
|
|
630
640
|
|
|
631
|
-
export { handleRenamedProp as a, isTouchDevice as b, createGuid as c, isRelatedTargetWithinHost as d, isHostLosingFocus as e, addSmoothScrollPolyfill as f, labelDOM as g, handleAriaLabel as h, isEventFromElement as i, handleDeprecationWarning as j, handleColor as k, loc as l, messagesDOM as m, nextPaint as n, overrideFocus as o, isMobile as p,
|
|
641
|
+
export { handleRenamedProp as a, isTouchDevice as b, createGuid as c, isRelatedTargetWithinHost as d, isHostLosingFocus as e, addSmoothScrollPolyfill as f, labelDOM as g, handleAriaLabel as h, isEventFromElement as i, handleDeprecationWarning as j, handleColor as k, loc as l, messagesDOM as m, nextPaint as n, overrideFocus as o, isMobile as p, hasSlotContent as q, resizeIframe as r, setMessageHeight as s, isFirefox as t, waitForNextPaint as w };
|
|
632
642
|
|
|
633
643
|
//# sourceMappingURL=index16.js.map
|