q2-tecton-elements 1.67.2 → 1.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle-report.json +22598 -10670
- package/dist/cjs/click-elsewhere.q2-option-list.q2-popover.entry.cjs.js.map +1 -1
- package/dist/cjs/click-elsewhere_3.cjs.entry.js +46 -32
- package/dist/cjs/click-elsewhere_3.cjs.entry.js.map +1 -1
- package/dist/cjs/{component-DRAntnCA.js → component-iASoq6gx.js} +9 -3
- package/dist/cjs/component-iASoq6gx.js.map +1 -0
- package/dist/cjs/{index-YvKoRT-t.js → index-DmGkqdX2.js} +3 -3
- package/dist/cjs/index-DmGkqdX2.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-group.q2-resize-observer.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-action-group_2.cjs.entry.js +2 -2
- package/dist/cjs/q2-action-group_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +109 -4
- package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-action-sheet.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-avatar.entry.cjs.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-badge.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-btn.q2-loading.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +6 -3
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-card-image.cjs.entry.js +2 -2
- package/dist/cjs/q2-card-image.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card-image.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
- package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +162 -29
- package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +3 -2
- package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-donut.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
- package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-checkbox.q2-tag.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-checkbox_2.cjs.entry.js +3 -3
- package/dist/cjs/q2-checkbox_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-context.cjs.entry.js +2 -2
- package/dist/cjs/q2-context.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-context.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-currency.cjs.entry.js +2 -3
- package/dist/cjs/q2-currency.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-currency.entry.cjs.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-data-table.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +2 -2
- package/dist/cjs/q2-detail.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-detail.entry.cjs.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-item.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +3 -5
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-example.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-file-picker.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-form.cjs.entry.js +2 -2
- package/dist/cjs/q2-form.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-form.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-formatted-text.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-grid-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-grid.cjs.entry.js +32 -8
- package/dist/cjs/q2-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-grid.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +8 -5
- package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-input.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +2 -2
- package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-item.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-legend.cjs.entry.js +2 -3
- package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-legend.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-link.q2-list.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-link_2.cjs.entry.js +2 -2
- package/dist/cjs/q2-link_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-loc.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +3 -3
- package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-message.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-meter.cjs.entry.js +2 -2
- package/dist/cjs/q2-meter.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-meter.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-modal.cjs.entry.js +3 -3
- package/dist/cjs/q2-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +3 -3
- package/dist/cjs/q2-optgroup.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-optgroup.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-option.cjs.entry.js +3 -3
- package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-option.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-otp.cjs.entry.js +373 -0
- package/dist/cjs/q2-otp.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-otp.entry.cjs.js.map +1 -0
- package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
- package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pagination.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +24 -15
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pill.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio-group.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +3 -3
- package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
- package/dist/cjs/q2-section-container.cjs.entry.js +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +3 -3
- package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-section.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +1 -1
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-select.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +3 -3
- 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-vertical.entry.cjs.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-stepper.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +3 -3
- package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-container.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js +2 -2
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-toast.cjs.entry.js +1 -1
- package/dist/cjs/q2-toast.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-toast.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +124 -5
- package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tooltip.entry.cjs.js.map +1 -1
- package/dist/cjs/{sanitize-html-string-CW6y5624.js → sanitize-html-string-D17Pr7-c.js} +21 -4
- package/dist/cjs/{sanitize-html-string-CW6y5624.js.map → sanitize-html-string-D17Pr7-c.js.map} +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/click-elsewhere/click-elsewhere.js +2 -0
- package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
- package/dist/collection/components/q2-action-group/q2-action-group.css +14 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +16 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +107 -2
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
- package/dist/collection/components/q2-avatar/q2-avatar.css +24 -0
- package/dist/collection/components/q2-avatar/test/q2-avatar-test.vr.js +61 -0
- package/dist/collection/components/q2-avatar/test/q2-avatar-test.vr.js.map +1 -0
- package/dist/collection/components/q2-badge/q2-badge.css +30 -0
- package/dist/collection/components/q2-badge/test/q2-badge-test.vr.js +34 -0
- package/dist/collection/components/q2-badge/test/q2-badge-test.vr.js.map +1 -0
- package/dist/collection/components/q2-btn/q2-btn.css +279 -0
- package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js +80 -0
- package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js.map +1 -0
- package/dist/collection/components/q2-calendar/q2-calendar.css +36 -0
- package/dist/collection/components/q2-calendar/q2-calendar.js +5 -2
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js +170 -0
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js.map +1 -0
- package/dist/collection/components/q2-card/q2-card.css +62 -0
- package/dist/collection/components/q2-card/test/q2-card-test.vr.js +72 -0
- package/dist/collection/components/q2-card/test/q2-card-test.vr.js.map +1 -0
- package/dist/collection/components/q2-card-image/q2-card-image.css +74 -13
- package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js +152 -0
- package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js.map +1 -0
- package/dist/collection/components/q2-carousel/q2-carousel.css +78 -13
- package/dist/collection/components/q2-carousel/q2-carousel.js +241 -27
- package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
- package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js +104 -0
- package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js.map +1 -0
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +26 -1
- package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.vr.js +126 -0
- package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.vr.js.map +1 -0
- package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.vr.js +105 -0
- package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.vr.js.map +1 -0
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +29 -0
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +21 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
- package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js +151 -0
- package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js.map +1 -0
- package/dist/collection/components/q2-checkbox/q2-checkbox.css +128 -0
- package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js +69 -0
- package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js.map +1 -0
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +21 -0
- package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js +61 -0
- package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js.map +1 -0
- package/dist/collection/components/q2-context/q2-context.css +16 -0
- package/dist/collection/components/q2-context/test/q2-context-test.vr.js +95 -0
- package/dist/collection/components/q2-context/test/q2-context-test.vr.js.map +1 -0
- package/dist/collection/components/q2-currency/q2-currency.css +31 -0
- package/dist/collection/components/q2-currency/q2-currency.js +3 -4
- package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
- package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js +79 -0
- package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js.map +1 -0
- package/dist/collection/components/q2-data-table/q2-data-table.css +51 -0
- package/dist/collection/components/q2-data-table/q2-data-table.js +1 -1
- package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js +79 -0
- package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js.map +1 -0
- package/dist/collection/components/q2-detail/q2-detail.css +42 -0
- package/dist/collection/components/q2-detail/q2-detail.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.css +8 -0
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +2 -4
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +11 -0
- package/dist/collection/components/q2-editable-field/q2-editable-field.css +5 -0
- package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.vr.js +89 -0
- package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.vr.js.map +1 -0
- package/dist/collection/components/q2-example/q2-example.js +1 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.css +64 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js +92 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js.map +1 -0
- package/dist/collection/components/q2-form/q2-form.css +34 -20
- package/dist/collection/components/q2-form/q2-form.js +1 -1
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.css +14 -0
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
- package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js +55 -0
- package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js.map +1 -0
- package/dist/collection/components/q2-grid/q2-grid.css +13 -0
- package/dist/collection/components/q2-grid/q2-grid.js +31 -7
- package/dist/collection/components/q2-grid/q2-grid.js.map +1 -1
- package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/q2-icon.css +15 -0
- package/dist/collection/components/q2-icon/test/q2-icon-test.vr.js +55 -0
- package/dist/collection/components/q2-icon/test/q2-icon-test.vr.js.map +1 -0
- package/dist/collection/components/q2-input/q2-input.css +104 -0
- package/dist/collection/components/q2-input/q2-input.js +6 -3
- package/dist/collection/components/q2-input/q2-input.js.map +1 -1
- package/dist/collection/components/q2-input/test/q2-input-test.vr.js +97 -0
- package/dist/collection/components/q2-input/test/q2-input-test.vr.js.map +1 -0
- package/dist/collection/components/q2-item/q2-item.css +28 -0
- package/dist/collection/components/q2-item/q2-item.js +1 -1
- package/dist/collection/components/q2-legend/q2-legend.css +16 -0
- package/dist/collection/components/q2-legend/q2-legend.js +21 -3
- package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
- package/dist/collection/components/q2-link/q2-link.css +20 -0
- package/dist/collection/components/q2-link/test/q2-link-test.vr.js +70 -0
- package/dist/collection/components/q2-link/test/q2-link-test.vr.js.map +1 -0
- package/dist/collection/components/q2-list/q2-list.css +14 -0
- package/dist/collection/components/q2-list/q2-list.js +1 -1
- package/dist/collection/components/q2-list/test/q2-list-test.vr.js +58 -0
- package/dist/collection/components/q2-list/test/q2-list-test.vr.js.map +1 -0
- package/dist/collection/components/q2-loading/q2-loading.css +9 -0
- package/dist/collection/components/q2-message/q2-message.css +29 -1
- package/dist/collection/components/q2-message/q2-message.js +1 -1
- package/dist/collection/components/q2-message/test/q2-message-test.vr.js +57 -0
- package/dist/collection/components/q2-message/test/q2-message-test.vr.js.map +1 -0
- package/dist/collection/components/q2-meter/q2-meter.css +40 -0
- package/dist/collection/components/q2-meter/q2-meter.js +1 -1
- package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js +78 -0
- package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js.map +1 -0
- package/dist/collection/components/q2-modal/q2-modal.css +21 -0
- package/dist/collection/components/q2-modal/q2-modal.js +1 -1
- package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js +107 -0
- package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js.map +1 -0
- package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.css +11 -0
- package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
- package/dist/collection/components/q2-option/q2-option.css +9 -0
- package/dist/collection/components/q2-option/q2-option.js +1 -1
- package/dist/collection/components/q2-option/q2-option.js.map +1 -1
- package/dist/collection/components/q2-option-list/q2-option-list.css +3 -0
- package/dist/collection/components/q2-option-list/q2-option-list.js +37 -28
- package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
- package/dist/collection/components/q2-otp/q2-otp.css +312 -0
- package/dist/collection/components/q2-otp/q2-otp.js +873 -0
- package/dist/collection/components/q2-otp/q2-otp.js.map +1 -0
- package/dist/collection/components/q2-pagination/q2-pagination.css +22 -0
- package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
- package/dist/collection/components/q2-pagination/test/q2-pagination-test.vr.js +145 -0
- package/dist/collection/components/q2-pagination/test/q2-pagination-test.vr.js.map +1 -0
- package/dist/collection/components/q2-pill/q2-pill.css +53 -0
- package/dist/collection/components/q2-pill/q2-pill.js +23 -14
- package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
- package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js +110 -0
- package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js.map +1 -0
- package/dist/collection/components/q2-popover/q2-popover.css +20 -0
- package/dist/collection/components/q2-popover/q2-popover.js +5 -2
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-radio/q2-radio.css +52 -1
- package/dist/collection/components/q2-radio/q2-radio.js +2 -2
- package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
- package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js +73 -0
- package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js.map +1 -0
- package/dist/collection/components/q2-radio-group/q2-radio-group.css +22 -0
- package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js +99 -0
- package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js.map +1 -0
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-section/q2-section.css +26 -0
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-section/test/q2-section-test.vr.js +68 -0
- package/dist/collection/components/q2-section/test/q2-section-test.vr.js.map +1 -0
- package/dist/collection/components/q2-select/q2-select.css +17 -0
- package/dist/collection/components/q2-select/test/q2-select-test.vr.js +107 -0
- package/dist/collection/components/q2-select/test/q2-select-test.vr.js.map +1 -0
- package/dist/collection/components/q2-stepper/q2-stepper.css +36 -0
- package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
- package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js +86 -0
- package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js.map +1 -0
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +31 -0
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js +97 -0
- package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js.map +1 -0
- package/dist/collection/components/q2-tab-container/q2-tab-container.css +38 -0
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js +78 -0
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js.map +1 -0
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tag/q2-tag.css +30 -1
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js +83 -0
- package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js.map +1 -0
- package/dist/collection/components/q2-textarea/q2-textarea.css +80 -0
- package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js +102 -0
- package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js.map +1 -0
- package/dist/collection/components/q2-toast/q2-toast.css +15 -0
- package/dist/collection/components/q2-tooltip/q2-tooltip.css +31 -0
- package/dist/collection/components/q2-tooltip/q2-tooltip.js +135 -4
- package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
- package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js +76 -0
- package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js.map +1 -0
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/collection/utils/component.js +7 -1
- package/dist/collection/utils/component.js.map +1 -1
- package/dist/collection/utils/index.js +1 -1
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/collection/utils/sanitize-html-string.js +19 -2
- package/dist/collection/utils/sanitize-html-string.js.map +1 -1
- package/dist/collection/utils/test/vr-helpers.js +98 -0
- package/dist/collection/utils/test/vr-helpers.js.map +1 -0
- package/dist/components/click-elsewhere2.js +2 -0
- package/dist/components/click-elsewhere2.js.map +1 -1
- package/dist/components/component.js +7 -1
- package/dist/components/component.js.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/index2.js +1 -1
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-action-group2.js.map +1 -1
- package/dist/components/q2-action-sheet.js +107 -2
- package/dist/components/q2-action-sheet.js.map +1 -1
- package/dist/components/q2-avatar2.js.map +1 -1
- package/dist/components/q2-badge2.js.map +1 -1
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-calendar.js +5 -2
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-card-image.js +1 -1
- package/dist/components/q2-card-image.js.map +1 -1
- package/dist/components/q2-card.js.map +1 -1
- package/dist/components/q2-carousel-pane.js +1 -135
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel-pane2.js +140 -0
- package/dist/components/q2-carousel-pane2.js.map +1 -0
- package/dist/components/q2-carousel.js +173 -29
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-donut.js +3 -1
- package/dist/components/q2-chart-donut.js.map +1 -1
- package/dist/components/q2-checkbox-group.js.map +1 -1
- package/dist/components/q2-checkbox2.js.map +1 -1
- package/dist/components/q2-context.js +1 -1
- package/dist/components/q2-context.js.map +1 -1
- package/dist/components/q2-currency.js +3 -4
- package/dist/components/q2-currency.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-detail.js +1 -1
- package/dist/components/q2-detail.js.map +1 -1
- package/dist/components/q2-dropdown-item2.js.map +1 -1
- package/dist/components/q2-dropdown.js +2 -4
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-editable-field.js.map +1 -1
- package/dist/components/q2-example.js +1 -1
- package/dist/components/q2-file-picker.js.map +1 -1
- package/dist/components/q2-form.js +2 -2
- package/dist/components/q2-form.js.map +1 -1
- package/dist/components/q2-formatted-text.js +1 -1
- package/dist/components/q2-formatted-text.js.map +1 -1
- package/dist/components/q2-grid.js +32 -8
- package/dist/components/q2-grid.js.map +1 -1
- package/dist/components/q2-icon2.js.map +1 -1
- package/dist/components/q2-input2.js +7 -4
- package/dist/components/q2-input2.js.map +1 -1
- package/dist/components/q2-item2.js +1 -1
- package/dist/components/q2-item2.js.map +1 -1
- package/dist/components/q2-legend2.js +3 -3
- package/dist/components/q2-legend2.js.map +1 -1
- package/dist/components/q2-link2.js.map +1 -1
- package/dist/components/q2-list2.js +1 -1
- package/dist/components/q2-list2.js.map +1 -1
- package/dist/components/q2-loading2.js.map +1 -1
- package/dist/components/q2-message2.js +2 -2
- package/dist/components/q2-message2.js.map +1 -1
- package/dist/components/q2-meter.js +1 -1
- package/dist/components/q2-meter.js.map +1 -1
- package/dist/components/q2-modal.js +1 -1
- package/dist/components/q2-modal.js.map +1 -1
- package/dist/components/q2-mutation-observer.js +1 -1
- package/dist/components/q2-optgroup2.js +1 -1
- package/dist/components/q2-optgroup2.js.map +1 -1
- package/dist/components/q2-option-list2.js +37 -28
- package/dist/components/q2-option-list2.js.map +1 -1
- package/dist/components/q2-option2.js +1 -1
- package/dist/components/q2-option2.js.map +1 -1
- package/dist/components/q2-otp.d.ts +11 -0
- package/dist/components/q2-otp.js +439 -0
- package/dist/components/q2-otp.js.map +1 -0
- package/dist/components/q2-pagination.js +3 -3
- package/dist/components/q2-pagination.js.map +1 -1
- package/dist/components/q2-pill.js +23 -14
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-popover2.js +5 -2
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-radio-group.js.map +1 -1
- package/dist/components/q2-radio.js +2 -2
- package/dist/components/q2-radio.js.map +1 -1
- package/dist/components/q2-relative-time.js +1 -1
- package/dist/components/q2-resize-observer2.js +1 -1
- package/dist/components/q2-section.js +2 -2
- package/dist/components/q2-section.js.map +1 -1
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/components/q2-stepper-pane.js +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 +1 -1
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tag2.js +2 -2
- package/dist/components/q2-tag2.js.map +1 -1
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/q2-toast.js.map +1 -1
- package/dist/components/q2-tooltip2.js +124 -5
- package/dist/components/q2-tooltip2.js.map +1 -1
- package/dist/components/sanitize-html-string.js +19 -2
- package/dist/components/sanitize-html-string.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/click-elsewhere.q2-option-list.q2-popover.entry.js.map +1 -1
- package/dist/esm/click-elsewhere_3.entry.js +46 -32
- package/dist/esm/click-elsewhere_3.entry.js.map +1 -1
- package/dist/esm/{component-DVxzK3WH.js → component-DaQM9u3s.js} +9 -3
- package/dist/esm/component-DaQM9u3s.js.map +1 -0
- package/dist/esm/{index-C4PILj1_.js → index-C5gj0T_3.js} +4 -4
- package/dist/esm/index-C5gj0T_3.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-group.q2-resize-observer.entry.js.map +1 -1
- package/dist/esm/q2-action-group_2.entry.js +2 -2
- package/dist/esm/q2-action-group_2.entry.js.map +1 -1
- package/dist/esm/q2-action-sheet.entry.js +109 -4
- package/dist/esm/q2-action-sheet.entry.js.map +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.q2-loading.entry.js.map +1 -1
- package/dist/esm/q2-btn_2.entry.js +1 -1
- package/dist/esm/q2-btn_2.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +6 -3
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-card-image.entry.js +2 -2
- package/dist/esm/q2-card-image.entry.js.map +1 -1
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-card.entry.js.map +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +3 -3
- package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +162 -29
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-chart-area.entry.js +1 -1
- package/dist/esm/q2-chart-bar.entry.js +1 -1
- package/dist/esm/q2-chart-donut.entry.js +3 -2
- package/dist/esm/q2-chart-donut.entry.js.map +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +2 -2
- package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
- package/dist/esm/q2-checkbox.q2-tag.entry.js.map +1 -1
- package/dist/esm/q2-checkbox_2.entry.js +3 -3
- package/dist/esm/q2-checkbox_2.entry.js.map +1 -1
- package/dist/esm/q2-context.entry.js +2 -2
- package/dist/esm/q2-context.entry.js.map +1 -1
- package/dist/esm/q2-currency.entry.js +3 -4
- package/dist/esm/q2-currency.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-detail.entry.js +2 -2
- package/dist/esm/q2-detail.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 +3 -5
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +1 -1
- package/dist/esm/q2-editable-field.entry.js.map +1 -1
- package/dist/esm/q2-example.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js.map +1 -1
- package/dist/esm/q2-form.entry.js +2 -2
- package/dist/esm/q2-form.entry.js.map +1 -1
- package/dist/esm/q2-formatted-text.entry.js +1 -1
- package/dist/esm/q2-formatted-text.entry.js.map +1 -1
- package/dist/esm/q2-grid-area.entry.js +1 -1
- package/dist/esm/q2-grid.entry.js +33 -9
- package/dist/esm/q2-grid.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +1 -1
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-input.entry.js +8 -5
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-item.entry.js +2 -2
- package/dist/esm/q2-item.entry.js.map +1 -1
- package/dist/esm/q2-legend.entry.js +2 -3
- package/dist/esm/q2-legend.entry.js.map +1 -1
- package/dist/esm/q2-link.q2-list.entry.js.map +1 -1
- package/dist/esm/q2-link_2.entry.js +2 -2
- package/dist/esm/q2-link_2.entry.js.map +1 -1
- package/dist/esm/q2-loc.entry.js +1 -1
- package/dist/esm/q2-message.entry.js +3 -3
- package/dist/esm/q2-message.entry.js.map +1 -1
- package/dist/esm/q2-meter.entry.js +2 -2
- package/dist/esm/q2-meter.entry.js.map +1 -1
- package/dist/esm/q2-modal.entry.js +3 -3
- package/dist/esm/q2-modal.entry.js.map +1 -1
- package/dist/esm/q2-month-picker.entry.js +1 -1
- package/dist/esm/q2-mutation-observer.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +3 -3
- package/dist/esm/q2-optgroup.entry.js.map +1 -1
- package/dist/esm/q2-option.entry.js +3 -3
- package/dist/esm/q2-option.entry.js.map +1 -1
- package/dist/esm/q2-otp.entry.js +371 -0
- package/dist/esm/q2-otp.entry.js.map +1 -0
- package/dist/esm/q2-pagination.entry.js +4 -4
- package/dist/esm/q2-pagination.entry.js.map +1 -1
- package/dist/esm/q2-pill.entry.js +24 -15
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +1 -1
- package/dist/esm/q2-radio-group.entry.js.map +1 -1
- package/dist/esm/q2-radio.entry.js +3 -3
- package/dist/esm/q2-radio.entry.js.map +1 -1
- package/dist/esm/q2-relative-time.entry.js +2 -2
- package/dist/esm/q2-section-container.entry.js +1 -1
- package/dist/esm/q2-section.entry.js +3 -3
- package/dist/esm/q2-section.entry.js.map +1 -1
- package/dist/esm/q2-select.entry.js +1 -1
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +3 -3
- 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 +3 -3
- package/dist/esm/q2-tab-container.entry.js.map +1 -1
- package/dist/esm/q2-tab-pane.entry.js +2 -2
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +1 -1
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/q2-toast.entry.js +1 -1
- package/dist/esm/q2-toast.entry.js.map +1 -1
- package/dist/esm/q2-tooltip.entry.js +124 -5
- package/dist/esm/q2-tooltip.entry.js.map +1 -1
- package/dist/esm/{sanitize-html-string-B35VmRc9.js → sanitize-html-string-DPHNpMWE.js} +21 -4
- package/dist/{q2-tecton-elements/sanitize-html-string-B35VmRc9.js.map → esm/sanitize-html-string-DPHNpMWE.js.map} +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/playwright.config.js +12 -0
- package/dist/playwright.config.js.map +1 -0
- package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
- package/dist/q2-tecton-elements/click-elsewhere.q2-option-list.q2-popover.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/click-elsewhere_3.entry.js +44 -35
- package/dist/q2-tecton-elements/click-elsewhere_3.entry.js.map +1 -1
- package/dist/q2-tecton-elements/component-DaQM9u3s.js +46 -0
- package/dist/q2-tecton-elements/component-DaQM9u3s.js.map +1 -0
- package/dist/q2-tecton-elements/{index-C4PILj1_.js → index-C5gj0T_3.js} +4 -4
- package/dist/q2-tecton-elements/index-C5gj0T_3.js.map +1 -0
- package/dist/q2-tecton-elements/q2-action-group.q2-resize-observer.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-group_2.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-action-group_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-sheet.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +166 -70
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-badge.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-badge.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-badge.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-btn.q2-loading.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-btn_2.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-btn_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card-image.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card-image.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-card-image.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.js +402 -271
- package/dist/q2-tecton-elements/q2-carousel.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-donut.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +18 -16
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox.q2-tag.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-context.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-context.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-context.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-currency.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-currency.entry.js +34 -33
- package/dist/q2-tecton-elements/q2-currency.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-data-table.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-detail.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +18 -19
- package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-form.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-form.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-form.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-formatted-text.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-grid-area.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-grid.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-grid.entry.js +39 -14
- package/dist/q2-tecton-elements/q2-grid.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-icon.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-icon.entry.js +52 -52
- package/dist/q2-tecton-elements/q2-icon.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-input.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-input.entry.js +10 -6
- package/dist/q2-tecton-elements/q2-input.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-item.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-legend.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-legend.entry.js +4 -5
- package/dist/q2-tecton-elements/q2-legend.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-link.q2-list.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-link_2.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-link_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.js +28 -28
- package/dist/q2-tecton-elements/q2-message.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-meter.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-meter.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-meter.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-modal.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-modal.entry.js +53 -53
- package/dist/q2-tecton-elements/q2-modal.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-optgroup.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-otp.entry.esm.js.map +1 -0
- package/dist/q2-tecton-elements/q2-otp.entry.js +453 -0
- package/dist/q2-tecton-elements/q2-otp.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-pagination.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.js +29 -29
- package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pill.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pill.entry.js +43 -28
- package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.js +10 -10
- package/dist/q2-tecton-elements/q2-radio.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-section-container.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-section.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-section.entry.js +21 -21
- package/dist/q2-tecton-elements/q2-section.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +10 -10
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper.entry.js +33 -33
- package/dist/q2-tecton-elements/q2-stepper.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-container.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-container.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-tab-container.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-pane.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.js +136 -20
- package/dist/q2-tecton-elements/q2-tooltip.entry.js.map +1 -1
- package/dist/q2-tecton-elements/{sanitize-html-string-B35VmRc9.js → sanitize-html-string-DPHNpMWE.js} +147 -142
- package/dist/{esm/sanitize-html-string-B35VmRc9.js.map → q2-tecton-elements/sanitize-html-string-DPHNpMWE.js.map} +1 -1
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
- package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/playwright.config.d.ts +2 -0
- package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +22 -0
- package/dist/types/components/q2-avatar/test/q2-avatar-test.vr.d.ts +1 -0
- package/dist/types/components/q2-badge/test/q2-badge-test.vr.d.ts +1 -0
- package/dist/types/components/q2-btn/test/q2-btn-test.vr.d.ts +1 -0
- package/dist/types/components/q2-calendar/test/q2-calendar-test.vr.d.ts +1 -0
- package/dist/types/components/q2-card/test/q2-card-test.vr.d.ts +1 -0
- package/dist/types/components/q2-card-image/test/q2-card-image-test.vr.d.ts +1 -0
- package/dist/types/components/q2-carousel/q2-carousel.d.ts +29 -0
- package/dist/types/components/q2-carousel/test/q2-carousel-test.vr.d.ts +1 -0
- package/dist/types/components/q2-chart-area/test/q2-chart-area-test.vr.d.ts +1 -0
- package/dist/types/components/q2-chart-bar/test/q2-chart-bar-test.vr.d.ts +1 -0
- package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +2 -0
- package/dist/types/components/q2-chart-donut/test/q2-chart-donut-test.vr.d.ts +1 -0
- package/dist/types/components/q2-checkbox/test/q2-checkbox-test.vr.d.ts +1 -0
- package/dist/types/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.d.ts +1 -0
- package/dist/types/components/q2-context/test/q2-context-test.vr.d.ts +1 -0
- package/dist/types/components/q2-currency/test/q2-currency-test.vr.d.ts +1 -0
- package/dist/types/components/q2-data-table/test/q2-data-table-test.vr.d.ts +1 -0
- package/dist/types/components/q2-editable-field/test/q2-editable-field-test.vr.d.ts +1 -0
- package/dist/types/components/q2-file-picker/test/q2-file-picker-test.vr.d.ts +1 -0
- package/dist/types/components/q2-formatted-text/test/q2-formatted-text-test.vr.d.ts +1 -0
- package/dist/types/components/q2-grid/q2-grid.d.ts +10 -0
- package/dist/types/components/q2-icon/test/q2-icon-test.vr.d.ts +1 -0
- package/dist/types/components/q2-input/test/q2-input-test.vr.d.ts +1 -0
- package/dist/types/components/q2-legend/q2-legend.d.ts +2 -0
- package/dist/types/components/q2-link/test/q2-link-test.vr.d.ts +1 -0
- package/dist/types/components/q2-list/test/q2-list-test.vr.d.ts +1 -0
- package/dist/types/components/q2-message/test/q2-message-test.vr.d.ts +1 -0
- package/dist/types/components/q2-meter/test/q2-meter-test.vr.d.ts +1 -0
- package/dist/types/components/q2-modal/test/q2-modal-test.vr.d.ts +1 -0
- package/dist/types/components/q2-otp/q2-otp.d.ts +159 -0
- package/dist/types/components/q2-pagination/test/q2-pagination-test.vr.d.ts +1 -0
- package/dist/types/components/q2-pill/q2-pill.d.ts +5 -2
- package/dist/types/components/q2-pill/test/q2-pill-test.vr.d.ts +1 -0
- package/dist/types/components/q2-radio/q2-radio.d.ts +1 -1
- package/dist/types/components/q2-radio/test/q2-radio-test.vr.d.ts +1 -0
- package/dist/types/components/q2-radio-group/test/q2-radio-group-test.vr.d.ts +1 -0
- package/dist/types/components/q2-section/test/q2-section-test.vr.d.ts +1 -0
- package/dist/types/components/q2-select/test/q2-select-test.vr.d.ts +1 -0
- package/dist/types/components/q2-stepper/test/q2-stepper-test.vr.d.ts +1 -0
- package/dist/types/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.d.ts +1 -0
- package/dist/types/components/q2-tab-container/test/q2-tab-container-test.vr.d.ts +1 -0
- package/dist/types/components/q2-tag/test/q2-tag-test.vr.d.ts +1 -0
- package/dist/types/components/q2-textarea/test/q2-textarea-test.vr.d.ts +1 -0
- package/dist/types/components/q2-tooltip/q2-tooltip.d.ts +4 -0
- package/dist/types/components/q2-tooltip/test/q2-tooltip-test.vr.d.ts +1 -0
- package/dist/types/components.d.ts +306 -2
- package/dist/types/utils/component.d.ts +1 -1
- package/dist/types/utils/test/vr-helpers.d.ts +14 -0
- package/package.json +12 -3
- package/dist/cjs/component-DRAntnCA.js.map +0 -1
- package/dist/cjs/index-YvKoRT-t.js.map +0 -1
- package/dist/esm/component-DVxzK3WH.js.map +0 -1
- package/dist/esm/index-C4PILj1_.js.map +0 -1
- package/dist/q2-tecton-elements/component-DVxzK3WH.js +0 -40
- package/dist/q2-tecton-elements/component-DVxzK3WH.js.map +0 -1
- package/dist/q2-tecton-elements/index-C4PILj1_.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-action-group.q2-resize-observer.entry.esm.js","sources":["src/components/q2-action-group/q2-action-group.scss?tag=q2-action-group&encapsulation=shadow","src/components/q2-action-group/q2-action-group.tsx","src/components/q2-resize-observer/q2-resize-observer.scss?tag=q2-resize-observer&encapsulation=shadow","src/components/q2-resize-observer/q2-resize-observer.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host(:not([hidden])) {\n display: block;\n width: 100%;\n --comp-default-action-group-margin: #{var-list(--app-scale-5x, 25px)} 0;\n margin: var-list(--tct-action-group-margin, --comp-default-action-group-margin);\n}\n\n.container {\n --comp-default-action-group-gap: #{var-list(--tct-action-group-gap, --app-scale-2x, 10px)};\n --comp-link-gap: #{var-list(--tct-action-group-gap, --app-scale-4x, 20px)};\n --tct-btn-icon-height: 30px;\n width: 100%;\n display: flex;\n gap: var(--comp-default-action-group-gap);\n\n &.has-q2-link {\n gap: var(--comp-link-gap);\n }\n\n &.has-q2-btn-coin {\n column-gap: var-list(--tct-action-group-coin-column-gap, --app-scale-1x, 5px);\n row-gap: var-list(--tct-action-group-coin-row-gap, --app-scale-5x, 25px);\n }\n\n &.vertical {\n flex-direction: var-list(--tct-action-group-vertical-flex-direction, column);\n\n ::slotted(q2-btn) {\n display: block;\n width: 100%;\n }\n }\n\n &.horizontal {\n justify-content: var-list(--tct-action-group-horizontal-justify-content, flex-start);\n flex-direction: var-list(--tct-action-group-horizontal-flex-direction, row-reverse);\n align-items: var-list(--tct-action-group-horizontal-align-items, center);\n flex-wrap: var-list(--tct-action-group-horizontal-flex-wrap, wrap);\n\n &.full-width {\n --tct-action-group-horizontal-justify-content: space-around;\n flex-wrap: nowrap;\n }\n\n &.has-q2-btn-coin {\n justify-content: var(--tct-action-group-coin-horizontal-justify-content, center);\n flex-direction: var(--tct-action-group-horizontal-flex-direction, row);\n }\n\n ::slotted(:not(q2-btn)) {\n position: relative;\n }\n\n ::slotted(:not(q2-btn):not(.is-last-action))::before {\n content: '';\n display: inline-block;\n width: 0;\n height: var(--tct-action-group-separator-height, 20px);\n border-left: 1px solid #{var-list(--tct-action-group-separator-color, --t-gray-12, #d9d9d9)};\n position: absolute;\n left: calc(var(--comp-link-gap) * -0.5);\n top: 50%;\n transform: translateY(-50%);\n }\n }\n\n &.vertical,\n &.horizontal.full-width {\n ::slotted(q2-btn) {\n display: block;\n width: 100%;\n }\n }\n\n :host([full-width]:not([full-width=\"false\"])) & {\n justify-content: space-evenly;\n }\n}\n","import { Q2ResizeObserverCustomEvent } from '@/components';\nimport { nextPaint } from '@/utils';\nimport { Component, ComponentInterface, h, Element, Prop, State, Watch } from '@stencil/core';\n\n/**\n * @name Action Group\n * @category Display\n * @summary Use for laying out groups of buttons or links with consistent spacing.\n */\n@Component({\n tag: 'q2-action-group',\n styleUrl: 'q2-action-group.scss',\n shadow: true,\n})\nexport class Q2ActionGroup implements ComponentInterface {\n // #region Own Properties\n\n container: HTMLDivElement;\n mutationObserver: MutationObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n autoOrientation: 'vertical' | 'horizontal' = 'vertical';\n\n @State()\n slottedElements: HTMLElement[] = [];\n\n // #endregion\n // #region Public Property API\n\n /**\n * Whether the slotted elements should take up the full width of the container when in horizontal orientation.\n *\n * @warning\n * This will prevent the buttons from wrapping when the container is too small to fit all buttons.\n */\n @Prop({ reflect: true })\n fullWidth: boolean;\n\n /**\n * The orientation of the buttons, which will override the auto orientation.\n *\n * @info\n * This will override and disable the auto determination of the orientation.\n * @warning\n * Vertical orientation is not supported for [Links](https://tecton.q2developer.com/design-system/q2-link/)\n * or `\"coin\"` [Buttons](https://tecton.q2developer.com/design-system/q2-btn/), and will be set to \"horizontal\".\n */\n @Prop({ reflect: true, mutable: true })\n orientation: 'auto' | 'vertical' | 'horizontal' = 'auto';\n\n /**\n * The width, in pixels, that determines whether to display the buttons in vertical or horizontal orientation\n *\n * @info\n * The component determines this based on the width of the element itself, not the browser window.\n */\n @Prop({ reflect: false })\n orientationThreshold: number = 440;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback(): void {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n }\n\n componentWillLoad() {\n this.filterSlottedElements();\n }\n\n componentDidLoad() {\n this.initMutationObserver();\n }\n\n componentDidRender() {\n this.handleSeparator();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('orientation')\n toggleHiddenForOneFrame() {\n const { container } = this;\n if (!container) return;\n container.style.display = 'none';\n // Fixes Safari not making the buttons fill the container when going from horizontal and full-width to vertical\n nextPaint(() =>\n nextPaint(() => {\n container.style.display = null;\n this.filterSlottedElements();\n })\n );\n }\n\n // #endregion\n // #region Local Methods\n\n get computedOrientation(): 'vertical' | 'horizontal' {\n let orientation = this.orientation;\n if (!orientation) orientation = 'auto';\n return orientation === 'auto' ? this.autoOrientation : orientation;\n }\n\n get shouldDisableResizeObserver(): boolean {\n let orientation = this.orientation;\n if (!orientation) orientation = 'auto';\n // these are not supported in a 'vertical' orientation, so we will disable resizing\n if (!this.hasBtnOnly(this.slottedElements)) return true;\n return orientation !== 'auto';\n }\n\n filterSlottedElements = () => {\n if (!('HTMLSlotElement' in window)) return;\n const { computedOrientation } = this;\n // get the elements of the hostElement\n const assignedElements = Array.from(this.hostElement.children);\n if (!assignedElements.length) return;\n\n // Remove all elements that are not approved Tecton components\n const approvedElements = ['Q2-BTN', 'Q2-LINK', 'Q2-DROPDOWN', 'Q2-TOOLTIP'];\n let flattened = this.flattenElements(assignedElements).filter(el => {\n // Handle Q2-TOOLTIP validation\n if (el.tagName === 'Q2-TOOLTIP') {\n if (el.children.length !== 1) {\n console.warn('Q2-ACTION-GROUP: Q2-TOOLTIP is only allowed a single child inside Q2-ACTION-GROUP.');\n el.remove();\n return false;\n }\n if (el.children[0] && !['Q2-BTN', 'Q2-LINK'].includes(el.children[0].tagName)) {\n console.warn(\n 'Q2-ACTION-GROUP: Q2-TOOLTIP is only allowed to have a Q2-BTN or a Q2-LINK inside Q2-ACTION-GROUP.'\n );\n el.remove();\n return false;\n }\n return true;\n }\n\n const allowed = approvedElements.includes(el.tagName);\n if (!allowed) el.remove();\n return allowed;\n });\n\n // Filter out non-coined buttons if coin exists\n if (this.hasCoin(flattened)) {\n flattened = flattened.filter(el => {\n let tagName = el.tagName;\n let intent = el.getAttribute('intent');\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n intent = el.children[0].getAttribute('intent');\n }\n if (tagName === 'Q2-BTN' && intent === 'coin') {\n return true;\n } else {\n el.remove();\n return false;\n }\n });\n }\n\n const incompatibleOrientation = computedOrientation === 'vertical' && !this.hasBtnOnly(flattened);\n if (incompatibleOrientation) {\n console.warn(\n 'Q2-ACTION-GROUP: \"Vertical\" orientation is supported only for Q2-BTN (not coin intent), otherwise orientation will be set to \"horizontal\".'\n );\n this.orientation = 'horizontal';\n }\n this.slottedElements = flattened;\n };\n\n flattenElements = (assignedElements: Element[]): HTMLElement[] => {\n const flattened = [];\n assignedElements.forEach(el => {\n if (el.tagName === 'SLOT') {\n const slotAssignedElements = (el as HTMLSlotElement).assignedElements({ flatten: true });\n slotAssignedElements.forEach(slotEl => {\n flattened.push(slotEl);\n });\n } else {\n flattened.push(el);\n }\n });\n return flattened;\n };\n\n handleFullWidth(fullWidth: boolean) {\n this.slottedElements.forEach(el => {\n const element = el.tagName === 'Q2-TOOLTIP' ? el.children[0] : el;\n if (['Q2-LINK', 'Q2-DROPDOWN'].includes(element.tagName)) {\n if (fullWidth) element.setAttribute('full-width', '');\n else element.removeAttribute('full-width');\n }\n });\n }\n\n handleResize = (\n event: Q2ResizeObserverCustomEvent<{\n entries: ResizeObserverEntry[];\n }>\n ) => {\n const width = event.detail.entries[0].contentRect.width;\n const shouldBeVertical = this.orientationThreshold > width;\n this.autoOrientation = shouldBeVertical ? 'vertical' : 'horizontal';\n };\n\n handleSeparator = () => {\n const list = this.slottedElements.filter(el => {\n let tagName = el.tagName;\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n }\n return ['Q2-LINK', 'Q2-DROPDOWN'].includes(tagName);\n });\n list.forEach((link, index) => {\n link.classList.remove('is-last-action');\n if (index === list.length - 1) link.classList.add('is-last-action');\n });\n };\n\n hasBtnOnly(elements: HTMLElement[]) {\n return elements.every(el => {\n let tagName = el.tagName;\n let intent = el.getAttribute('intent');\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n intent = el.children[0].getAttribute('intent');\n }\n return tagName === 'Q2-BTN' && intent !== 'coin';\n });\n }\n\n hasCoin(elements: HTMLElement[]) {\n return elements.find(el => {\n let tagName = el.tagName;\n let intent = el.getAttribute('intent');\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n intent = el.children[0].getAttribute('intent');\n }\n return tagName === 'Q2-BTN' && intent === 'coin';\n });\n }\n\n initMutationObserver = () => {\n if (!('MutationObserver' in window)) return;\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n };\n\n onMutationObserved = () => {\n this.filterSlottedElements();\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { shouldDisableResizeObserver, computedOrientation, fullWidth, slottedElements } = this;\n const containerClassNames = ['container'];\n if (fullWidth && computedOrientation === 'horizontal') containerClassNames.push('full-width');\n containerClassNames.push(computedOrientation);\n slottedElements.forEach(el => {\n let tagName = el.tagName.toLowerCase();\n let intent = el.getAttribute('intent');\n if (tagName === 'q2-tooltip') {\n tagName = el.children[0].tagName.toLowerCase();\n intent = el.children[0].getAttribute('intent');\n if (!containerClassNames.includes('has-q2-tooltip')) containerClassNames.push('has-q2-tooltip');\n }\n const className = `has-${tagName}${tagName === 'q2-btn' && intent === 'coin' ? '-coin' : ''}`;\n if (!containerClassNames.includes(className)) containerClassNames.push(className);\n });\n this.handleFullWidth(!!fullWidth);\n\n return (\n <q2-resize-observer\n onTctResize={this.handleResize}\n disabled={shouldDisableResizeObserver}\n >\n <div\n ref={el => (this.container = el)}\n class={containerClassNames.join(' ')}\n role=\"group\"\n >\n <slot />\n </div>\n </q2-resize-observer>\n );\n }\n\n // #endregion\n}\n","@import '../../styles/host.scss';\n\n:host(:not([hidden])) {\n display: block;\n width: 100%;\n}\n","import { Component, ComponentInterface, Element, EventEmitter, h, Prop, Event, Method, Watch } from '@stencil/core';\n\n/**\n * @name Resize Observer\n * @category Utility\n * @summary Use for detecting size changes to elements and emitting resize events.\n */\n@Component({\n tag: 'q2-resize-observer',\n styleUrl: 'q2-resize-observer.scss',\n shadow: true,\n})\nexport class Q2ResizeObserver implements ComponentInterface {\n // #region Own Properties\n\n currentResizeObserverEntries: ResizeObserverEntry[];\n observedElements: HTMLElement[] = [];\n resizeObserver?: ResizeObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Determines wheter or not events will be emitted from the component.\n */\n @Prop({ reflect: true })\n disabled: boolean;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when any of the observed elements are resized.\n */\n @Event()\n tctResize: EventEmitter<{ entries: ResizeObserverEntry[] }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.stopObserver();\n this.resizeObserver = null;\n }\n\n componentDidLoad() {\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(resizeEntries => {\n this.tctResize.emit({ entries: resizeEntries });\n this.currentResizeObserverEntries = resizeEntries;\n });\n } else {\n console.warn('ResizeObserver is not defined.');\n }\n\n if (!this.disabled) {\n this.startObserver();\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Returns the latest entries reported by the component.\n */\n @Method()\n async getCurrentResizeEntries(): Promise<ResizeObserverEntry[]> {\n return this.currentResizeObserverEntries || [];\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('disabled')\n disabledUpdated(newVal: boolean) {\n if (newVal) {\n this.stopObserver();\n } else {\n this.startObserver();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n handleSlotChange = () => {\n if (this.disabled) return;\n this.startObserver();\n };\n\n startObserver() {\n const slot = this.hostElement.shadowRoot!.querySelector('slot');\n if (slot === null) return;\n\n const elements = (slot.assignedElements?.({ flatten: true }) as HTMLElement[]) ?? [];\n\n // Unwatch previous elements\n this.observedElements?.forEach(el => this.resizeObserver?.unobserve(el));\n this.observedElements = [];\n\n // Watch new elements\n elements.forEach(el => {\n this.resizeObserver?.observe(el);\n this.observedElements.push(el);\n });\n }\n\n stopObserver() {\n this.resizeObserver?.disconnect();\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return <slot onSlotchange={this.handleSlotChange} />;\n }\n\n // #endregion\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"q2-action-group.q2-resize-observer.entry.esm.js","sources":["src/components/q2-action-group/q2-action-group.scss?tag=q2-action-group&encapsulation=shadow","src/components/q2-action-group/q2-action-group.tsx","src/components/q2-resize-observer/q2-resize-observer.scss?tag=q2-resize-observer&encapsulation=shadow","src/components/q2-resize-observer/q2-resize-observer.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n@import './variables';\n\n:host(:not([hidden])) {\n display: block;\n width: 100%;\n --comp-default-action-group-margin: #{var-list(--app-scale-5x, 25px)} 0;\n margin: var-list(--tct-action-group-margin, --comp-default-action-group-margin);\n}\n\n.container {\n --comp-default-action-group-gap: #{var-list(--tct-action-group-gap, --app-scale-2x, 10px)};\n --comp-link-gap: #{var-list(--tct-action-group-gap, --app-scale-4x, 20px)};\n --tct-btn-icon-height: 30px;\n width: 100%;\n display: flex;\n gap: var(--comp-default-action-group-gap);\n\n &.has-q2-link {\n gap: var(--comp-link-gap);\n }\n\n &.has-q2-btn-coin {\n column-gap: var-list(--tct-action-group-coin-column-gap, --app-scale-1x, 5px);\n row-gap: var-list(--tct-action-group-coin-row-gap, --app-scale-5x, 25px);\n }\n\n &.vertical {\n flex-direction: var-list(--tct-action-group-vertical-flex-direction, column);\n\n ::slotted(q2-btn) {\n display: block;\n width: 100%;\n }\n }\n\n &.horizontal {\n justify-content: var-list(--tct-action-group-horizontal-justify-content, flex-start);\n flex-direction: var-list(--tct-action-group-horizontal-flex-direction, row-reverse);\n align-items: var-list(--tct-action-group-horizontal-align-items, center);\n flex-wrap: var-list(--tct-action-group-horizontal-flex-wrap, wrap);\n\n &.full-width {\n --tct-action-group-horizontal-justify-content: space-around;\n flex-wrap: nowrap;\n }\n\n &.has-q2-btn-coin {\n justify-content: var(--tct-action-group-coin-horizontal-justify-content, center);\n flex-direction: var(--tct-action-group-horizontal-flex-direction, row);\n }\n\n ::slotted(:not(q2-btn)) {\n position: relative;\n }\n\n ::slotted(:not(q2-btn):not(.is-last-action))::before {\n content: '';\n display: inline-block;\n width: 0;\n height: var(--tct-action-group-separator-height, 20px);\n border-left: 1px solid #{var-list(--tct-action-group-separator-color, --t-gray-12, #d9d9d9)};\n position: absolute;\n left: calc(var(--comp-link-gap) * -0.5);\n top: 50%;\n transform: translateY(-50%);\n }\n }\n\n &.vertical,\n &.horizontal.full-width {\n ::slotted(q2-btn) {\n display: block;\n width: 100%;\n }\n }\n\n :host([full-width]:not([full-width=\"false\"])) & {\n justify-content: space-evenly;\n }\n}\n","import { Q2ResizeObserverCustomEvent } from '@/components';\nimport { nextPaint } from '@/utils';\nimport { Component, ComponentInterface, h, Element, Prop, State, Watch } from '@stencil/core';\n\n/**\n * @name Action Group\n * @category Display\n * @summary Use for laying out groups of buttons or links with consistent spacing.\n */\n@Component({\n tag: 'q2-action-group',\n styleUrl: 'q2-action-group.scss',\n shadow: true,\n})\nexport class Q2ActionGroup implements ComponentInterface {\n // #region Own Properties\n\n container: HTMLDivElement;\n mutationObserver: MutationObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n autoOrientation: 'vertical' | 'horizontal' = 'vertical';\n\n @State()\n slottedElements: HTMLElement[] = [];\n\n // #endregion\n // #region Public Property API\n\n /**\n * Whether the slotted elements should take up the full width of the container when in horizontal orientation.\n *\n * @warning\n * This will prevent the buttons from wrapping when the container is too small to fit all buttons.\n */\n @Prop({ reflect: true })\n fullWidth: boolean;\n\n /**\n * The orientation of the buttons, which will override the auto orientation.\n *\n * @info\n * This will override and disable the auto determination of the orientation.\n * @warning\n * Vertical orientation is not supported for [Links](https://tecton.q2developer.com/design-system/q2-link/)\n * or `\"coin\"` [Buttons](https://tecton.q2developer.com/design-system/q2-btn/), and will be set to \"horizontal\".\n */\n @Prop({ reflect: true, mutable: true })\n orientation: 'auto' | 'vertical' | 'horizontal' = 'auto';\n\n /**\n * The width, in pixels, that determines whether to display the buttons in vertical or horizontal orientation\n *\n * @info\n * The component determines this based on the width of the element itself, not the browser window.\n */\n @Prop({ reflect: false })\n orientationThreshold: number = 440;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback(): void {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n }\n\n componentWillLoad() {\n this.filterSlottedElements();\n }\n\n componentDidLoad() {\n this.initMutationObserver();\n }\n\n componentDidRender() {\n this.handleSeparator();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('orientation')\n toggleHiddenForOneFrame() {\n const { container } = this;\n if (!container) return;\n container.style.display = 'none';\n // Fixes Safari not making the buttons fill the container when going from horizontal and full-width to vertical\n nextPaint(() =>\n nextPaint(() => {\n container.style.display = null;\n this.filterSlottedElements();\n })\n );\n }\n\n // #endregion\n // #region Local Methods\n\n get computedOrientation(): 'vertical' | 'horizontal' {\n let orientation = this.orientation;\n if (!orientation) orientation = 'auto';\n return orientation === 'auto' ? this.autoOrientation : orientation;\n }\n\n get shouldDisableResizeObserver(): boolean {\n let orientation = this.orientation;\n if (!orientation) orientation = 'auto';\n // these are not supported in a 'vertical' orientation, so we will disable resizing\n if (!this.hasBtnOnly(this.slottedElements)) return true;\n return orientation !== 'auto';\n }\n\n filterSlottedElements = () => {\n if (!('HTMLSlotElement' in window)) return;\n const { computedOrientation } = this;\n // get the elements of the hostElement\n const assignedElements = Array.from(this.hostElement.children);\n if (!assignedElements.length) return;\n\n // Remove all elements that are not approved Tecton components\n const approvedElements = ['Q2-BTN', 'Q2-LINK', 'Q2-DROPDOWN', 'Q2-TOOLTIP'];\n let flattened = this.flattenElements(assignedElements).filter(el => {\n // Handle Q2-TOOLTIP validation\n if (el.tagName === 'Q2-TOOLTIP') {\n if (el.children.length !== 1) {\n console.warn('Q2-ACTION-GROUP: Q2-TOOLTIP is only allowed a single child inside Q2-ACTION-GROUP.');\n el.remove();\n return false;\n }\n if (el.children[0] && !['Q2-BTN', 'Q2-LINK'].includes(el.children[0].tagName)) {\n console.warn(\n 'Q2-ACTION-GROUP: Q2-TOOLTIP is only allowed to have a Q2-BTN or a Q2-LINK inside Q2-ACTION-GROUP.'\n );\n el.remove();\n return false;\n }\n return true;\n }\n\n const allowed = approvedElements.includes(el.tagName);\n if (!allowed) el.remove();\n return allowed;\n });\n\n // Filter out non-coined buttons if coin exists\n if (this.hasCoin(flattened)) {\n flattened = flattened.filter(el => {\n let tagName = el.tagName;\n let intent = el.getAttribute('intent');\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n intent = el.children[0].getAttribute('intent');\n }\n if (tagName === 'Q2-BTN' && intent === 'coin') {\n return true;\n } else {\n el.remove();\n return false;\n }\n });\n }\n\n const incompatibleOrientation = computedOrientation === 'vertical' && !this.hasBtnOnly(flattened);\n if (incompatibleOrientation) {\n console.warn(\n 'Q2-ACTION-GROUP: \"Vertical\" orientation is supported only for Q2-BTN (not coin intent), otherwise orientation will be set to \"horizontal\".'\n );\n this.orientation = 'horizontal';\n }\n this.slottedElements = flattened;\n };\n\n flattenElements = (assignedElements: Element[]): HTMLElement[] => {\n const flattened = [];\n assignedElements.forEach(el => {\n if (el.tagName === 'SLOT') {\n const slotAssignedElements = (el as HTMLSlotElement).assignedElements({ flatten: true });\n slotAssignedElements.forEach(slotEl => {\n flattened.push(slotEl);\n });\n } else {\n flattened.push(el);\n }\n });\n return flattened;\n };\n\n handleFullWidth(fullWidth: boolean) {\n this.slottedElements.forEach(el => {\n const element = el.tagName === 'Q2-TOOLTIP' ? el.children[0] : el;\n if (['Q2-LINK', 'Q2-DROPDOWN'].includes(element.tagName)) {\n if (fullWidth) element.setAttribute('full-width', '');\n else element.removeAttribute('full-width');\n }\n });\n }\n\n handleResize = (\n event: Q2ResizeObserverCustomEvent<{\n entries: ResizeObserverEntry[];\n }>\n ) => {\n const width = event.detail.entries[0].contentRect.width;\n const shouldBeVertical = this.orientationThreshold > width;\n this.autoOrientation = shouldBeVertical ? 'vertical' : 'horizontal';\n };\n\n handleSeparator = () => {\n const list = this.slottedElements.filter(el => {\n let tagName = el.tagName;\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n }\n return ['Q2-LINK', 'Q2-DROPDOWN'].includes(tagName);\n });\n list.forEach((link, index) => {\n link.classList.remove('is-last-action');\n if (index === list.length - 1) link.classList.add('is-last-action');\n });\n };\n\n hasBtnOnly(elements: HTMLElement[]) {\n return elements.every(el => {\n let tagName = el.tagName;\n let intent = el.getAttribute('intent');\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n intent = el.children[0].getAttribute('intent');\n }\n return tagName === 'Q2-BTN' && intent !== 'coin';\n });\n }\n\n hasCoin(elements: HTMLElement[]) {\n return elements.find(el => {\n let tagName = el.tagName;\n let intent = el.getAttribute('intent');\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n intent = el.children[0].getAttribute('intent');\n }\n return tagName === 'Q2-BTN' && intent === 'coin';\n });\n }\n\n initMutationObserver = () => {\n if (!('MutationObserver' in window)) return;\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n };\n\n onMutationObserved = () => {\n this.filterSlottedElements();\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { shouldDisableResizeObserver, computedOrientation, fullWidth, slottedElements } = this;\n const containerClassNames = ['container'];\n if (fullWidth && computedOrientation === 'horizontal') containerClassNames.push('full-width');\n containerClassNames.push(computedOrientation);\n slottedElements.forEach(el => {\n let tagName = el.tagName.toLowerCase();\n let intent = el.getAttribute('intent');\n if (tagName === 'q2-tooltip') {\n tagName = el.children[0].tagName.toLowerCase();\n intent = el.children[0].getAttribute('intent');\n if (!containerClassNames.includes('has-q2-tooltip')) containerClassNames.push('has-q2-tooltip');\n }\n const className = `has-${tagName}${tagName === 'q2-btn' && intent === 'coin' ? '-coin' : ''}`;\n if (!containerClassNames.includes(className)) containerClassNames.push(className);\n });\n this.handleFullWidth(!!fullWidth);\n\n return (\n <q2-resize-observer\n onTctResize={this.handleResize}\n disabled={shouldDisableResizeObserver}\n >\n <div\n ref={el => (this.container = el)}\n class={containerClassNames.join(' ')}\n role=\"group\"\n >\n <slot />\n </div>\n </q2-resize-observer>\n );\n }\n\n // #endregion\n}\n","@import '../../styles/host.scss';\n\n:host(:not([hidden])) {\n display: block;\n width: 100%;\n}\n","import { Component, ComponentInterface, Element, EventEmitter, h, Prop, Event, Method, Watch } from '@stencil/core';\n\n/**\n * @name Resize Observer\n * @category Utility\n * @summary Use for detecting size changes to elements and emitting resize events.\n */\n@Component({\n tag: 'q2-resize-observer',\n styleUrl: 'q2-resize-observer.scss',\n shadow: true,\n})\nexport class Q2ResizeObserver implements ComponentInterface {\n // #region Own Properties\n\n currentResizeObserverEntries: ResizeObserverEntry[];\n observedElements: HTMLElement[] = [];\n resizeObserver?: ResizeObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Determines wheter or not events will be emitted from the component.\n */\n @Prop({ reflect: true })\n disabled: boolean;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when any of the observed elements are resized.\n */\n @Event()\n tctResize: EventEmitter<{ entries: ResizeObserverEntry[] }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.stopObserver();\n this.resizeObserver = null;\n }\n\n componentDidLoad() {\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(resizeEntries => {\n this.tctResize.emit({ entries: resizeEntries });\n this.currentResizeObserverEntries = resizeEntries;\n });\n } else {\n console.warn('ResizeObserver is not defined.');\n }\n\n if (!this.disabled) {\n this.startObserver();\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Returns the latest entries reported by the component.\n */\n @Method()\n async getCurrentResizeEntries(): Promise<ResizeObserverEntry[]> {\n return this.currentResizeObserverEntries || [];\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('disabled')\n disabledUpdated(newVal: boolean) {\n if (newVal) {\n this.stopObserver();\n } else {\n this.startObserver();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n handleSlotChange = () => {\n if (this.disabled) return;\n this.startObserver();\n };\n\n startObserver() {\n const slot = this.hostElement.shadowRoot!.querySelector('slot');\n if (slot === null) return;\n\n const elements = (slot.assignedElements?.({ flatten: true }) as HTMLElement[]) ?? [];\n\n // Unwatch previous elements\n this.observedElements?.forEach(el => this.resizeObserver?.unobserve(el));\n this.observedElements = [];\n\n // Watch new elements\n elements.forEach(el => {\n this.resizeObserver?.observe(el);\n this.observedElements.push(el);\n });\n }\n\n stopObserver() {\n this.resizeObserver?.disconnect();\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return <slot onSlotchange={this.handleSlotChange} />;\n }\n\n // #endregion\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as t, h as i, g as e, c as n } from "./index-CGkHOjh1.js";
|
|
2
2
|
|
|
3
|
-
import { n as o } from "./index-
|
|
3
|
+
import { n as o } from "./index-C5gj0T_3.js";
|
|
4
4
|
|
|
5
5
|
const r = '*{box-sizing:border-box}*:active{outline:none}*:focus-visible{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(:not([hidden])){display:block;width:100%;--comp-default-action-group-margin:var(--app-scale-5x, 25px) 0;margin:var(--tct-action-group-margin, var(--comp-default-action-group-margin))}.container{--comp-default-action-group-gap:var(--tct-action-group-gap, var(--app-scale-2x, 10px));--comp-link-gap:var(--tct-action-group-gap, var(--app-scale-4x, 20px));--tct-btn-icon-height:30px;width:100%;display:flex;gap:var(--comp-default-action-group-gap)}.container.has-q2-link{gap:var(--comp-link-gap)}.container.has-q2-btn-coin{column-gap:var(--tct-action-group-coin-column-gap, var(--app-scale-1x, 5px));row-gap:var(--tct-action-group-coin-row-gap, var(--app-scale-5x, 25px))}.container.vertical{flex-direction:var(--tct-action-group-vertical-flex-direction, column)}.container.vertical ::slotted(q2-btn){display:block;width:100%}.container.horizontal{justify-content:var(--tct-action-group-horizontal-justify-content, flex-start);flex-direction:var(--tct-action-group-horizontal-flex-direction, row-reverse);align-items:var(--tct-action-group-horizontal-align-items, center);flex-wrap:var(--tct-action-group-horizontal-flex-wrap, wrap)}.container.horizontal.full-width{--tct-action-group-horizontal-justify-content:space-around;flex-wrap:nowrap}.container.horizontal.has-q2-btn-coin{justify-content:var(--tct-action-group-coin-horizontal-justify-content, center);flex-direction:var(--tct-action-group-horizontal-flex-direction, row)}.container.horizontal ::slotted(:not(q2-btn)){position:relative}.container.horizontal ::slotted(:not(q2-btn):not(.is-last-action))::before{content:"";display:inline-block;width:0;height:var(--tct-action-group-separator-height, 20px);border-left:1px solid var(--tct-action-group-separator-color, var(--t-gray-12, #d9d9d9));position:absolute;left:calc(var(--comp-link-gap) * -0.5);top:50%;transform:translateY(-50%)}.container.vertical ::slotted(q2-btn),.container.horizontal.full-width ::slotted(q2-btn){display:block;width:100%}:host([full-width]:not([full-width=false])) .container{justify-content:space-evenly}';
|
|
6
6
|
|
|
@@ -321,7 +321,7 @@ const l = class {
|
|
|
321
321
|
// #region Render Methods
|
|
322
322
|
render() {
|
|
323
323
|
return i("slot", {
|
|
324
|
-
key: "
|
|
324
|
+
key: "dbf5c5c896f9ab48a32ce58a4ffcf7bf287920e2",
|
|
325
325
|
onSlotchange: this.handleSlotChange
|
|
326
326
|
});
|
|
327
327
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["q2ActionGroupCss","Q2ActionGroup","constructor","hostRef","this","autoOrientation","slottedElements","orientation","orientationThreshold","filterSlottedElements","window","computedOrientation","assignedElements","Array","from","hostElement","children","length","approvedElements","flattened","flattenElements","filter","el","tagName","console","warn","remove","includes","allowed","hasCoin","intent","getAttribute","incompatibleOrientation","hasBtnOnly","forEach","slotAssignedElements","flatten","slotEl","push","handleResize","event","width","detail","entries","contentRect","shouldBeVertical","handleSeparator","list","link","index","classList","add","initMutationObserver","observer","MutationObserver","onMutationObserved","observe","childList","subtree","mutationObserver","disconnectedCallback","disconnect","componentWillLoad","componentDidLoad","componentDidRender","toggleHiddenForOneFrame","container","style","display","nextPaint","shouldDisableResizeObserver","handleFullWidth","fullWidth","element","setAttribute","removeAttribute","elements","every","find","render","containerClassNames","toLowerCase","className","h","key","onTctResize","disabled","ref","class","join","role","q2ResizeObserverCss","Q2ResizeObserver","observedElements","handleSlotChange","startObserver","stopObserver","resizeObserver","ResizeObserver","resizeEntries","tctResize","emit","currentResizeObserverEntries","getCurrentResizeEntries","disabledUpdated","newVal","slot","shadowRoot","querySelector","_b","_a","call","_c","unobserve","onSlotchange"],"sources":["src/components/q2-action-group/q2-action-group.scss?tag=q2-action-group&encapsulation=shadow","src/components/q2-action-group/q2-action-group.tsx","src/components/q2-resize-observer/q2-resize-observer.scss?tag=q2-resize-observer&encapsulation=shadow","src/components/q2-resize-observer/q2-resize-observer.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host(:not([hidden])) {\n display: block;\n width: 100%;\n --comp-default-action-group-margin: #{var-list(--app-scale-5x, 25px)} 0;\n margin: var-list(--tct-action-group-margin, --comp-default-action-group-margin);\n}\n\n.container {\n --comp-default-action-group-gap: #{var-list(--tct-action-group-gap, --app-scale-2x, 10px)};\n --comp-link-gap: #{var-list(--tct-action-group-gap, --app-scale-4x, 20px)};\n --tct-btn-icon-height: 30px;\n width: 100%;\n display: flex;\n gap: var(--comp-default-action-group-gap);\n\n &.has-q2-link {\n gap: var(--comp-link-gap);\n }\n\n &.has-q2-btn-coin {\n column-gap: var-list(--tct-action-group-coin-column-gap, --app-scale-1x, 5px);\n row-gap: var-list(--tct-action-group-coin-row-gap, --app-scale-5x, 25px);\n }\n\n &.vertical {\n flex-direction: var-list(--tct-action-group-vertical-flex-direction, column);\n\n ::slotted(q2-btn) {\n display: block;\n width: 100%;\n }\n }\n\n &.horizontal {\n justify-content: var-list(--tct-action-group-horizontal-justify-content, flex-start);\n flex-direction: var-list(--tct-action-group-horizontal-flex-direction, row-reverse);\n align-items: var-list(--tct-action-group-horizontal-align-items, center);\n flex-wrap: var-list(--tct-action-group-horizontal-flex-wrap, wrap);\n\n &.full-width {\n --tct-action-group-horizontal-justify-content: space-around;\n flex-wrap: nowrap;\n }\n\n &.has-q2-btn-coin {\n justify-content: var(--tct-action-group-coin-horizontal-justify-content, center);\n flex-direction: var(--tct-action-group-horizontal-flex-direction, row);\n }\n\n ::slotted(:not(q2-btn)) {\n position: relative;\n }\n\n ::slotted(:not(q2-btn):not(.is-last-action))::before {\n content: '';\n display: inline-block;\n width: 0;\n height: var(--tct-action-group-separator-height, 20px);\n border-left: 1px solid #{var-list(--tct-action-group-separator-color, --t-gray-12, #d9d9d9)};\n position: absolute;\n left: calc(var(--comp-link-gap) * -0.5);\n top: 50%;\n transform: translateY(-50%);\n }\n }\n\n &.vertical,\n &.horizontal.full-width {\n ::slotted(q2-btn) {\n display: block;\n width: 100%;\n }\n }\n\n :host([full-width]:not([full-width=\"false\"])) & {\n justify-content: space-evenly;\n }\n}\n","import { Q2ResizeObserverCustomEvent } from '@/components';\nimport { nextPaint } from '@/utils';\nimport { Component, ComponentInterface, h, Element, Prop, State, Watch } from '@stencil/core';\n\n/**\n * @name Action Group\n * @category Display\n * @summary Use for laying out groups of buttons or links with consistent spacing.\n */\n@Component({\n tag: 'q2-action-group',\n styleUrl: 'q2-action-group.scss',\n shadow: true,\n})\nexport class Q2ActionGroup implements ComponentInterface {\n // #region Own Properties\n\n container: HTMLDivElement;\n mutationObserver: MutationObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n autoOrientation: 'vertical' | 'horizontal' = 'vertical';\n\n @State()\n slottedElements: HTMLElement[] = [];\n\n // #endregion\n // #region Public Property API\n\n /**\n * Whether the slotted elements should take up the full width of the container when in horizontal orientation.\n *\n * @warning\n * This will prevent the buttons from wrapping when the container is too small to fit all buttons.\n */\n @Prop({ reflect: true })\n fullWidth: boolean;\n\n /**\n * The orientation of the buttons, which will override the auto orientation.\n *\n * @info\n * This will override and disable the auto determination of the orientation.\n * @warning\n * Vertical orientation is not supported for [Links](https://tecton.q2developer.com/design-system/q2-link/)\n * or `\"coin\"` [Buttons](https://tecton.q2developer.com/design-system/q2-btn/), and will be set to \"horizontal\".\n */\n @Prop({ reflect: true, mutable: true })\n orientation: 'auto' | 'vertical' | 'horizontal' = 'auto';\n\n /**\n * The width, in pixels, that determines whether to display the buttons in vertical or horizontal orientation\n *\n * @info\n * The component determines this based on the width of the element itself, not the browser window.\n */\n @Prop({ reflect: false })\n orientationThreshold: number = 440;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback(): void {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n }\n\n componentWillLoad() {\n this.filterSlottedElements();\n }\n\n componentDidLoad() {\n this.initMutationObserver();\n }\n\n componentDidRender() {\n this.handleSeparator();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('orientation')\n toggleHiddenForOneFrame() {\n const { container } = this;\n if (!container) return;\n container.style.display = 'none';\n // Fixes Safari not making the buttons fill the container when going from horizontal and full-width to vertical\n nextPaint(() =>\n nextPaint(() => {\n container.style.display = null;\n this.filterSlottedElements();\n })\n );\n }\n\n // #endregion\n // #region Local Methods\n\n get computedOrientation(): 'vertical' | 'horizontal' {\n let orientation = this.orientation;\n if (!orientation) orientation = 'auto';\n return orientation === 'auto' ? this.autoOrientation : orientation;\n }\n\n get shouldDisableResizeObserver(): boolean {\n let orientation = this.orientation;\n if (!orientation) orientation = 'auto';\n // these are not supported in a 'vertical' orientation, so we will disable resizing\n if (!this.hasBtnOnly(this.slottedElements)) return true;\n return orientation !== 'auto';\n }\n\n filterSlottedElements = () => {\n if (!('HTMLSlotElement' in window)) return;\n const { computedOrientation } = this;\n // get the elements of the hostElement\n const assignedElements = Array.from(this.hostElement.children);\n if (!assignedElements.length) return;\n\n // Remove all elements that are not approved Tecton components\n const approvedElements = ['Q2-BTN', 'Q2-LINK', 'Q2-DROPDOWN', 'Q2-TOOLTIP'];\n let flattened = this.flattenElements(assignedElements).filter(el => {\n // Handle Q2-TOOLTIP validation\n if (el.tagName === 'Q2-TOOLTIP') {\n if (el.children.length !== 1) {\n console.warn('Q2-ACTION-GROUP: Q2-TOOLTIP is only allowed a single child inside Q2-ACTION-GROUP.');\n el.remove();\n return false;\n }\n if (el.children[0] && !['Q2-BTN', 'Q2-LINK'].includes(el.children[0].tagName)) {\n console.warn(\n 'Q2-ACTION-GROUP: Q2-TOOLTIP is only allowed to have a Q2-BTN or a Q2-LINK inside Q2-ACTION-GROUP.'\n );\n el.remove();\n return false;\n }\n return true;\n }\n\n const allowed = approvedElements.includes(el.tagName);\n if (!allowed) el.remove();\n return allowed;\n });\n\n // Filter out non-coined buttons if coin exists\n if (this.hasCoin(flattened)) {\n flattened = flattened.filter(el => {\n let tagName = el.tagName;\n let intent = el.getAttribute('intent');\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n intent = el.children[0].getAttribute('intent');\n }\n if (tagName === 'Q2-BTN' && intent === 'coin') {\n return true;\n } else {\n el.remove();\n return false;\n }\n });\n }\n\n const incompatibleOrientation = computedOrientation === 'vertical' && !this.hasBtnOnly(flattened);\n if (incompatibleOrientation) {\n console.warn(\n 'Q2-ACTION-GROUP: \"Vertical\" orientation is supported only for Q2-BTN (not coin intent), otherwise orientation will be set to \"horizontal\".'\n );\n this.orientation = 'horizontal';\n }\n this.slottedElements = flattened;\n };\n\n flattenElements = (assignedElements: Element[]): HTMLElement[] => {\n const flattened = [];\n assignedElements.forEach(el => {\n if (el.tagName === 'SLOT') {\n const slotAssignedElements = (el as HTMLSlotElement).assignedElements({ flatten: true });\n slotAssignedElements.forEach(slotEl => {\n flattened.push(slotEl);\n });\n } else {\n flattened.push(el);\n }\n });\n return flattened;\n };\n\n handleFullWidth(fullWidth: boolean) {\n this.slottedElements.forEach(el => {\n const element = el.tagName === 'Q2-TOOLTIP' ? el.children[0] : el;\n if (['Q2-LINK', 'Q2-DROPDOWN'].includes(element.tagName)) {\n if (fullWidth) element.setAttribute('full-width', '');\n else element.removeAttribute('full-width');\n }\n });\n }\n\n handleResize = (\n event: Q2ResizeObserverCustomEvent<{\n entries: ResizeObserverEntry[];\n }>\n ) => {\n const width = event.detail.entries[0].contentRect.width;\n const shouldBeVertical = this.orientationThreshold > width;\n this.autoOrientation = shouldBeVertical ? 'vertical' : 'horizontal';\n };\n\n handleSeparator = () => {\n const list = this.slottedElements.filter(el => {\n let tagName = el.tagName;\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n }\n return ['Q2-LINK', 'Q2-DROPDOWN'].includes(tagName);\n });\n list.forEach((link, index) => {\n link.classList.remove('is-last-action');\n if (index === list.length - 1) link.classList.add('is-last-action');\n });\n };\n\n hasBtnOnly(elements: HTMLElement[]) {\n return elements.every(el => {\n let tagName = el.tagName;\n let intent = el.getAttribute('intent');\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n intent = el.children[0].getAttribute('intent');\n }\n return tagName === 'Q2-BTN' && intent !== 'coin';\n });\n }\n\n hasCoin(elements: HTMLElement[]) {\n return elements.find(el => {\n let tagName = el.tagName;\n let intent = el.getAttribute('intent');\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n intent = el.children[0].getAttribute('intent');\n }\n return tagName === 'Q2-BTN' && intent === 'coin';\n });\n }\n\n initMutationObserver = () => {\n if (!('MutationObserver' in window)) return;\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n };\n\n onMutationObserved = () => {\n this.filterSlottedElements();\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { shouldDisableResizeObserver, computedOrientation, fullWidth, slottedElements } = this;\n const containerClassNames = ['container'];\n if (fullWidth && computedOrientation === 'horizontal') containerClassNames.push('full-width');\n containerClassNames.push(computedOrientation);\n slottedElements.forEach(el => {\n let tagName = el.tagName.toLowerCase();\n let intent = el.getAttribute('intent');\n if (tagName === 'q2-tooltip') {\n tagName = el.children[0].tagName.toLowerCase();\n intent = el.children[0].getAttribute('intent');\n if (!containerClassNames.includes('has-q2-tooltip')) containerClassNames.push('has-q2-tooltip');\n }\n const className = `has-${tagName}${tagName === 'q2-btn' && intent === 'coin' ? '-coin' : ''}`;\n if (!containerClassNames.includes(className)) containerClassNames.push(className);\n });\n this.handleFullWidth(!!fullWidth);\n\n return (\n <q2-resize-observer\n onTctResize={this.handleResize}\n disabled={shouldDisableResizeObserver}\n >\n <div\n ref={el => (this.container = el)}\n class={containerClassNames.join(' ')}\n role=\"group\"\n >\n <slot />\n </div>\n </q2-resize-observer>\n );\n }\n\n // #endregion\n}\n","@import '../../styles/host.scss';\n\n:host(:not([hidden])) {\n display: block;\n width: 100%;\n}\n","import { Component, ComponentInterface, Element, EventEmitter, h, Prop, Event, Method, Watch } from '@stencil/core';\n\n/**\n * @name Resize Observer\n * @category Utility\n * @summary Use for detecting size changes to elements and emitting resize events.\n */\n@Component({\n tag: 'q2-resize-observer',\n styleUrl: 'q2-resize-observer.scss',\n shadow: true,\n})\nexport class Q2ResizeObserver implements ComponentInterface {\n // #region Own Properties\n\n currentResizeObserverEntries: ResizeObserverEntry[];\n observedElements: HTMLElement[] = [];\n resizeObserver?: ResizeObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Determines wheter or not events will be emitted from the component.\n */\n @Prop({ reflect: true })\n disabled: boolean;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when any of the observed elements are resized.\n */\n @Event()\n tctResize: EventEmitter<{ entries: ResizeObserverEntry[] }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.stopObserver();\n this.resizeObserver = null;\n }\n\n componentDidLoad() {\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(resizeEntries => {\n this.tctResize.emit({ entries: resizeEntries });\n this.currentResizeObserverEntries = resizeEntries;\n });\n } else {\n console.warn('ResizeObserver is not defined.');\n }\n\n if (!this.disabled) {\n this.startObserver();\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Returns the latest entries reported by the component.\n */\n @Method()\n async getCurrentResizeEntries(): Promise<ResizeObserverEntry[]> {\n return this.currentResizeObserverEntries || [];\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('disabled')\n disabledUpdated(newVal: boolean) {\n if (newVal) {\n this.stopObserver();\n } else {\n this.startObserver();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n handleSlotChange = () => {\n if (this.disabled) return;\n this.startObserver();\n };\n\n startObserver() {\n const slot = this.hostElement.shadowRoot!.querySelector('slot');\n if (slot === null) return;\n\n const elements = (slot.assignedElements?.({ flatten: true }) as HTMLElement[]) ?? [];\n\n // Unwatch previous elements\n this.observedElements?.forEach(el => this.resizeObserver?.unobserve(el));\n this.observedElements = [];\n\n // Watch new elements\n elements.forEach(el => {\n this.resizeObserver?.observe(el);\n this.observedElements.push(el);\n });\n }\n\n stopObserver() {\n this.resizeObserver?.disconnect();\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return <slot onSlotchange={this.handleSlotChange} />;\n }\n\n // #endregion\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["q2ActionGroupCss","Q2ActionGroup","constructor","hostRef","this","autoOrientation","slottedElements","orientation","orientationThreshold","filterSlottedElements","window","computedOrientation","assignedElements","Array","from","hostElement","children","length","approvedElements","flattened","flattenElements","filter","el","tagName","console","warn","remove","includes","allowed","hasCoin","intent","getAttribute","incompatibleOrientation","hasBtnOnly","forEach","slotAssignedElements","flatten","slotEl","push","handleResize","event","width","detail","entries","contentRect","shouldBeVertical","handleSeparator","list","link","index","classList","add","initMutationObserver","observer","MutationObserver","onMutationObserved","observe","childList","subtree","mutationObserver","disconnectedCallback","disconnect","componentWillLoad","componentDidLoad","componentDidRender","toggleHiddenForOneFrame","container","style","display","nextPaint","shouldDisableResizeObserver","handleFullWidth","fullWidth","element","setAttribute","removeAttribute","elements","every","find","render","containerClassNames","toLowerCase","className","h","key","onTctResize","disabled","ref","class","join","role","q2ResizeObserverCss","Q2ResizeObserver","observedElements","handleSlotChange","startObserver","stopObserver","resizeObserver","ResizeObserver","resizeEntries","tctResize","emit","currentResizeObserverEntries","getCurrentResizeEntries","disabledUpdated","newVal","slot","shadowRoot","querySelector","_b","_a","call","_c","unobserve","onSlotchange"],"sources":["src/components/q2-action-group/q2-action-group.scss?tag=q2-action-group&encapsulation=shadow","src/components/q2-action-group/q2-action-group.tsx","src/components/q2-resize-observer/q2-resize-observer.scss?tag=q2-resize-observer&encapsulation=shadow","src/components/q2-resize-observer/q2-resize-observer.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n@import './variables';\n\n:host(:not([hidden])) {\n display: block;\n width: 100%;\n --comp-default-action-group-margin: #{var-list(--app-scale-5x, 25px)} 0;\n margin: var-list(--tct-action-group-margin, --comp-default-action-group-margin);\n}\n\n.container {\n --comp-default-action-group-gap: #{var-list(--tct-action-group-gap, --app-scale-2x, 10px)};\n --comp-link-gap: #{var-list(--tct-action-group-gap, --app-scale-4x, 20px)};\n --tct-btn-icon-height: 30px;\n width: 100%;\n display: flex;\n gap: var(--comp-default-action-group-gap);\n\n &.has-q2-link {\n gap: var(--comp-link-gap);\n }\n\n &.has-q2-btn-coin {\n column-gap: var-list(--tct-action-group-coin-column-gap, --app-scale-1x, 5px);\n row-gap: var-list(--tct-action-group-coin-row-gap, --app-scale-5x, 25px);\n }\n\n &.vertical {\n flex-direction: var-list(--tct-action-group-vertical-flex-direction, column);\n\n ::slotted(q2-btn) {\n display: block;\n width: 100%;\n }\n }\n\n &.horizontal {\n justify-content: var-list(--tct-action-group-horizontal-justify-content, flex-start);\n flex-direction: var-list(--tct-action-group-horizontal-flex-direction, row-reverse);\n align-items: var-list(--tct-action-group-horizontal-align-items, center);\n flex-wrap: var-list(--tct-action-group-horizontal-flex-wrap, wrap);\n\n &.full-width {\n --tct-action-group-horizontal-justify-content: space-around;\n flex-wrap: nowrap;\n }\n\n &.has-q2-btn-coin {\n justify-content: var(--tct-action-group-coin-horizontal-justify-content, center);\n flex-direction: var(--tct-action-group-horizontal-flex-direction, row);\n }\n\n ::slotted(:not(q2-btn)) {\n position: relative;\n }\n\n ::slotted(:not(q2-btn):not(.is-last-action))::before {\n content: '';\n display: inline-block;\n width: 0;\n height: var(--tct-action-group-separator-height, 20px);\n border-left: 1px solid #{var-list(--tct-action-group-separator-color, --t-gray-12, #d9d9d9)};\n position: absolute;\n left: calc(var(--comp-link-gap) * -0.5);\n top: 50%;\n transform: translateY(-50%);\n }\n }\n\n &.vertical,\n &.horizontal.full-width {\n ::slotted(q2-btn) {\n display: block;\n width: 100%;\n }\n }\n\n :host([full-width]:not([full-width=\"false\"])) & {\n justify-content: space-evenly;\n }\n}\n","import { Q2ResizeObserverCustomEvent } from '@/components';\nimport { nextPaint } from '@/utils';\nimport { Component, ComponentInterface, h, Element, Prop, State, Watch } from '@stencil/core';\n\n/**\n * @name Action Group\n * @category Display\n * @summary Use for laying out groups of buttons or links with consistent spacing.\n */\n@Component({\n tag: 'q2-action-group',\n styleUrl: 'q2-action-group.scss',\n shadow: true,\n})\nexport class Q2ActionGroup implements ComponentInterface {\n // #region Own Properties\n\n container: HTMLDivElement;\n mutationObserver: MutationObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n autoOrientation: 'vertical' | 'horizontal' = 'vertical';\n\n @State()\n slottedElements: HTMLElement[] = [];\n\n // #endregion\n // #region Public Property API\n\n /**\n * Whether the slotted elements should take up the full width of the container when in horizontal orientation.\n *\n * @warning\n * This will prevent the buttons from wrapping when the container is too small to fit all buttons.\n */\n @Prop({ reflect: true })\n fullWidth: boolean;\n\n /**\n * The orientation of the buttons, which will override the auto orientation.\n *\n * @info\n * This will override and disable the auto determination of the orientation.\n * @warning\n * Vertical orientation is not supported for [Links](https://tecton.q2developer.com/design-system/q2-link/)\n * or `\"coin\"` [Buttons](https://tecton.q2developer.com/design-system/q2-btn/), and will be set to \"horizontal\".\n */\n @Prop({ reflect: true, mutable: true })\n orientation: 'auto' | 'vertical' | 'horizontal' = 'auto';\n\n /**\n * The width, in pixels, that determines whether to display the buttons in vertical or horizontal orientation\n *\n * @info\n * The component determines this based on the width of the element itself, not the browser window.\n */\n @Prop({ reflect: false })\n orientationThreshold: number = 440;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback(): void {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n }\n\n componentWillLoad() {\n this.filterSlottedElements();\n }\n\n componentDidLoad() {\n this.initMutationObserver();\n }\n\n componentDidRender() {\n this.handleSeparator();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('orientation')\n toggleHiddenForOneFrame() {\n const { container } = this;\n if (!container) return;\n container.style.display = 'none';\n // Fixes Safari not making the buttons fill the container when going from horizontal and full-width to vertical\n nextPaint(() =>\n nextPaint(() => {\n container.style.display = null;\n this.filterSlottedElements();\n })\n );\n }\n\n // #endregion\n // #region Local Methods\n\n get computedOrientation(): 'vertical' | 'horizontal' {\n let orientation = this.orientation;\n if (!orientation) orientation = 'auto';\n return orientation === 'auto' ? this.autoOrientation : orientation;\n }\n\n get shouldDisableResizeObserver(): boolean {\n let orientation = this.orientation;\n if (!orientation) orientation = 'auto';\n // these are not supported in a 'vertical' orientation, so we will disable resizing\n if (!this.hasBtnOnly(this.slottedElements)) return true;\n return orientation !== 'auto';\n }\n\n filterSlottedElements = () => {\n if (!('HTMLSlotElement' in window)) return;\n const { computedOrientation } = this;\n // get the elements of the hostElement\n const assignedElements = Array.from(this.hostElement.children);\n if (!assignedElements.length) return;\n\n // Remove all elements that are not approved Tecton components\n const approvedElements = ['Q2-BTN', 'Q2-LINK', 'Q2-DROPDOWN', 'Q2-TOOLTIP'];\n let flattened = this.flattenElements(assignedElements).filter(el => {\n // Handle Q2-TOOLTIP validation\n if (el.tagName === 'Q2-TOOLTIP') {\n if (el.children.length !== 1) {\n console.warn('Q2-ACTION-GROUP: Q2-TOOLTIP is only allowed a single child inside Q2-ACTION-GROUP.');\n el.remove();\n return false;\n }\n if (el.children[0] && !['Q2-BTN', 'Q2-LINK'].includes(el.children[0].tagName)) {\n console.warn(\n 'Q2-ACTION-GROUP: Q2-TOOLTIP is only allowed to have a Q2-BTN or a Q2-LINK inside Q2-ACTION-GROUP.'\n );\n el.remove();\n return false;\n }\n return true;\n }\n\n const allowed = approvedElements.includes(el.tagName);\n if (!allowed) el.remove();\n return allowed;\n });\n\n // Filter out non-coined buttons if coin exists\n if (this.hasCoin(flattened)) {\n flattened = flattened.filter(el => {\n let tagName = el.tagName;\n let intent = el.getAttribute('intent');\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n intent = el.children[0].getAttribute('intent');\n }\n if (tagName === 'Q2-BTN' && intent === 'coin') {\n return true;\n } else {\n el.remove();\n return false;\n }\n });\n }\n\n const incompatibleOrientation = computedOrientation === 'vertical' && !this.hasBtnOnly(flattened);\n if (incompatibleOrientation) {\n console.warn(\n 'Q2-ACTION-GROUP: \"Vertical\" orientation is supported only for Q2-BTN (not coin intent), otherwise orientation will be set to \"horizontal\".'\n );\n this.orientation = 'horizontal';\n }\n this.slottedElements = flattened;\n };\n\n flattenElements = (assignedElements: Element[]): HTMLElement[] => {\n const flattened = [];\n assignedElements.forEach(el => {\n if (el.tagName === 'SLOT') {\n const slotAssignedElements = (el as HTMLSlotElement).assignedElements({ flatten: true });\n slotAssignedElements.forEach(slotEl => {\n flattened.push(slotEl);\n });\n } else {\n flattened.push(el);\n }\n });\n return flattened;\n };\n\n handleFullWidth(fullWidth: boolean) {\n this.slottedElements.forEach(el => {\n const element = el.tagName === 'Q2-TOOLTIP' ? el.children[0] : el;\n if (['Q2-LINK', 'Q2-DROPDOWN'].includes(element.tagName)) {\n if (fullWidth) element.setAttribute('full-width', '');\n else element.removeAttribute('full-width');\n }\n });\n }\n\n handleResize = (\n event: Q2ResizeObserverCustomEvent<{\n entries: ResizeObserverEntry[];\n }>\n ) => {\n const width = event.detail.entries[0].contentRect.width;\n const shouldBeVertical = this.orientationThreshold > width;\n this.autoOrientation = shouldBeVertical ? 'vertical' : 'horizontal';\n };\n\n handleSeparator = () => {\n const list = this.slottedElements.filter(el => {\n let tagName = el.tagName;\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n }\n return ['Q2-LINK', 'Q2-DROPDOWN'].includes(tagName);\n });\n list.forEach((link, index) => {\n link.classList.remove('is-last-action');\n if (index === list.length - 1) link.classList.add('is-last-action');\n });\n };\n\n hasBtnOnly(elements: HTMLElement[]) {\n return elements.every(el => {\n let tagName = el.tagName;\n let intent = el.getAttribute('intent');\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n intent = el.children[0].getAttribute('intent');\n }\n return tagName === 'Q2-BTN' && intent !== 'coin';\n });\n }\n\n hasCoin(elements: HTMLElement[]) {\n return elements.find(el => {\n let tagName = el.tagName;\n let intent = el.getAttribute('intent');\n if (el.tagName === 'Q2-TOOLTIP') {\n tagName = el.children[0].tagName;\n intent = el.children[0].getAttribute('intent');\n }\n return tagName === 'Q2-BTN' && intent === 'coin';\n });\n }\n\n initMutationObserver = () => {\n if (!('MutationObserver' in window)) return;\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n };\n\n onMutationObserved = () => {\n this.filterSlottedElements();\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { shouldDisableResizeObserver, computedOrientation, fullWidth, slottedElements } = this;\n const containerClassNames = ['container'];\n if (fullWidth && computedOrientation === 'horizontal') containerClassNames.push('full-width');\n containerClassNames.push(computedOrientation);\n slottedElements.forEach(el => {\n let tagName = el.tagName.toLowerCase();\n let intent = el.getAttribute('intent');\n if (tagName === 'q2-tooltip') {\n tagName = el.children[0].tagName.toLowerCase();\n intent = el.children[0].getAttribute('intent');\n if (!containerClassNames.includes('has-q2-tooltip')) containerClassNames.push('has-q2-tooltip');\n }\n const className = `has-${tagName}${tagName === 'q2-btn' && intent === 'coin' ? '-coin' : ''}`;\n if (!containerClassNames.includes(className)) containerClassNames.push(className);\n });\n this.handleFullWidth(!!fullWidth);\n\n return (\n <q2-resize-observer\n onTctResize={this.handleResize}\n disabled={shouldDisableResizeObserver}\n >\n <div\n ref={el => (this.container = el)}\n class={containerClassNames.join(' ')}\n role=\"group\"\n >\n <slot />\n </div>\n </q2-resize-observer>\n );\n }\n\n // #endregion\n}\n","@import '../../styles/host.scss';\n\n:host(:not([hidden])) {\n display: block;\n width: 100%;\n}\n","import { Component, ComponentInterface, Element, EventEmitter, h, Prop, Event, Method, Watch } from '@stencil/core';\n\n/**\n * @name Resize Observer\n * @category Utility\n * @summary Use for detecting size changes to elements and emitting resize events.\n */\n@Component({\n tag: 'q2-resize-observer',\n styleUrl: 'q2-resize-observer.scss',\n shadow: true,\n})\nexport class Q2ResizeObserver implements ComponentInterface {\n // #region Own Properties\n\n currentResizeObserverEntries: ResizeObserverEntry[];\n observedElements: HTMLElement[] = [];\n resizeObserver?: ResizeObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Determines wheter or not events will be emitted from the component.\n */\n @Prop({ reflect: true })\n disabled: boolean;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when any of the observed elements are resized.\n */\n @Event()\n tctResize: EventEmitter<{ entries: ResizeObserverEntry[] }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.stopObserver();\n this.resizeObserver = null;\n }\n\n componentDidLoad() {\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(resizeEntries => {\n this.tctResize.emit({ entries: resizeEntries });\n this.currentResizeObserverEntries = resizeEntries;\n });\n } else {\n console.warn('ResizeObserver is not defined.');\n }\n\n if (!this.disabled) {\n this.startObserver();\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Returns the latest entries reported by the component.\n */\n @Method()\n async getCurrentResizeEntries(): Promise<ResizeObserverEntry[]> {\n return this.currentResizeObserverEntries || [];\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('disabled')\n disabledUpdated(newVal: boolean) {\n if (newVal) {\n this.stopObserver();\n } else {\n this.startObserver();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n handleSlotChange = () => {\n if (this.disabled) return;\n this.startObserver();\n };\n\n startObserver() {\n const slot = this.hostElement.shadowRoot!.querySelector('slot');\n if (slot === null) return;\n\n const elements = (slot.assignedElements?.({ flatten: true }) as HTMLElement[]) ?? [];\n\n // Unwatch previous elements\n this.observedElements?.forEach(el => this.resizeObserver?.unobserve(el));\n this.observedElements = [];\n\n // Watch new elements\n elements.forEach(el => {\n this.resizeObserver?.observe(el);\n this.observedElements.push(el);\n });\n }\n\n stopObserver() {\n this.resizeObserver?.disconnect();\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return <slot onSlotchange={this.handleSlotChange} />;\n }\n\n // #endregion\n}\n"],"mappings":";;;;AAAA,MAAMA,IAAmB;;MCcZC,IAAa;EAL1B,WAAAC,CAAAC;;;;QAqBIC,KAAeC,kBAA8B;IAG7CD,KAAeE,kBAAkB;;;;;;;;;eAwBjCF,KAAWG,cAAuC;;;;;;eASlDH,KAAoBI,uBAAW;IA0D/BJ,KAAqBK,wBAAG;MACpB,MAAM,qBAAqBC,SAAS;MACpC,OAAMC,qBAAEA,KAAwBP;;YAEhC,MAAMQ,IAAmBC,MAAMC,KAAKV,KAAKW,YAAYC;MACrD,KAAKJ,EAAiBK,QAAQ;;YAG9B,MAAMC,IAAmB,EAAC,UAAU,WAAW,eAAe;MAC9D,IAAIC,IAAYf,KAAKgB,gBAAgBR,GAAkBS,QAAOC;;QAE1D,IAAIA,EAAGC,YAAY,cAAc;UAC7B,IAAID,EAAGN,SAASC,WAAW,GAAG;YAC1BO,QAAQC,KAAK;YACbH,EAAGI;YACH,OAAO;;UAEX,IAAIJ,EAAGN,SAAS,OAAO,EAAC,UAAU,YAAWW,SAASL,EAAGN,SAAS,GAAGO,UAAU;YAC3EC,QAAQC,KACJ;YAEJH,EAAGI;YACH,OAAO;;UAEX,OAAO;;QAGX,MAAME,IAAUV,EAAiBS,SAASL,EAAGC;QAC7C,KAAKK,GAASN,EAAGI;QACjB,OAAOE;AAAO;;YAIlB,IAAIxB,KAAKyB,QAAQV,IAAY;QACzBA,IAAYA,EAAUE,QAAOC;UACzB,IAAIC,IAAUD,EAAGC;UACjB,IAAIO,IAASR,EAAGS,aAAa;UAC7B,IAAIT,EAAGC,YAAY,cAAc;YAC7BA,IAAUD,EAAGN,SAAS,GAAGO;YACzBO,IAASR,EAAGN,SAAS,GAAGe,aAAa;;UAEzC,IAAIR,MAAY,YAAYO,MAAW,QAAQ;YAC3C,OAAO;iBACJ;YACHR,EAAGI;YACH,OAAO;;;;MAKnB,MAAMM,IAA0BrB,MAAwB,eAAeP,KAAK6B,WAAWd;MACvF,IAAIa,GAAyB;QACzBR,QAAQC,KACJ;QAEJrB,KAAKG,cAAc;;MAEvBH,KAAKE,kBAAkBa;AAAS;IAGpCf,KAAAgB,kBAAmBR;MACf,MAAMO,IAAY;MAClBP,EAAiBsB,SAAQZ;QACrB,IAAIA,EAAGC,YAAY,QAAQ;UACvB,MAAMY,IAAwBb,EAAuBV,iBAAiB;YAAEwB,SAAS;;UACjFD,EAAqBD,SAAQG;YACzBlB,EAAUmB,KAAKD;AAAO;eAEvB;UACHlB,EAAUmB,KAAKhB;;;MAGvB,OAAOH;AAAS;IAapBf,KAAAmC,eACIC;MAIA,MAAMC,IAAQD,EAAME,OAAOC,QAAQ,GAAGC,YAAYH;MAClD,MAAMI,IAAmBzC,KAAKI,uBAAuBiC;MACrDrC,KAAKC,kBAAkBwC,IAAmB,aAAa;AAAY;IAGvEzC,KAAe0C,kBAAG;MACd,MAAMC,IAAO3C,KAAKE,gBAAgBe,QAAOC;QACrC,IAAIC,IAAUD,EAAGC;QACjB,IAAID,EAAGC,YAAY,cAAc;UAC7BA,IAAUD,EAAGN,SAAS,GAAGO;;QAE7B,OAAO,EAAC,WAAW,gBAAeI,SAASJ;AAAQ;MAEvDwB,EAAKb,SAAQ,CAACc,GAAMC;QAChBD,EAAKE,UAAUxB,OAAO;QACtB,IAAIuB,MAAUF,EAAK9B,SAAS,GAAG+B,EAAKE,UAAUC,IAAI;AAAiB;AACrE;IA2BN/C,KAAoBgD,uBAAG;MACnB,MAAM,sBAAsB1C,SAAS;MACrC,MAAM2C,IAAW,IAAIC,iBAAiBlD,KAAKmD;MAC3CF,EAASG,QAAQpD,KAAKW,aAAa;QAAE0C,WAAW;QAAMC,SAAS;;MAC/DtD,KAAKuD,mBAAmBN;AAAQ;IAGpCjD,KAAkBmD,qBAAG;MACjBnD,KAAKK;AAAuB;AAyCnC;;;EA3OG,oBAAAmD;IACI,IAAIxD,KAAKuD,kBAAkB;MACvBvD,KAAKuD,iBAAiBE;MACtBzD,KAAKuD,mBAAmB;;;EAIhC,iBAAAG;IACI1D,KAAKK;;EAGT,gBAAAsD;IACI3D,KAAKgD;;EAGT,kBAAAY;IACI5D,KAAK0C;;;;EAOT,uBAAAmB;IACI,OAAMC,WAAEA,KAAc9D;IACtB,KAAK8D,GAAW;IAChBA,EAAUC,MAAMC,UAAU;;QAE1BC,GAAU,MACNA,GAAU;MACNH,EAAUC,MAAMC,UAAU;MAC1BhE,KAAKK;AAAuB;;;;EAQxC,uBAAIE;IACA,IAAIJ,IAAcH,KAAKG;IACvB,KAAKA,GAAaA,IAAc;IAChC,OAAOA,MAAgB,SAASH,KAAKC,kBAAkBE;;EAG3D,+BAAI+D;IACA,IAAI/D,IAAcH,KAAKG;IACvB,KAAKA,GAAaA,IAAc;;QAEhC,KAAKH,KAAK6B,WAAW7B,KAAKE,kBAAkB,OAAO;IACnD,OAAOC,MAAgB;;EA8E3B,eAAAgE,CAAgBC;IACZpE,KAAKE,gBAAgB4B,SAAQZ;MACzB,MAAMmD,IAAUnD,EAAGC,YAAY,eAAeD,EAAGN,SAAS,KAAKM;MAC/D,IAAI,EAAC,WAAW,gBAAeK,SAAS8C,EAAQlD,UAAU;QACtD,IAAIiD,GAAWC,EAAQC,aAAa,cAAc,UAC7CD,EAAQE,gBAAgB;;;;EA6BzC,UAAA1C,CAAW2C;IACP,OAAOA,EAASC,OAAMvD;MAClB,IAAIC,IAAUD,EAAGC;MACjB,IAAIO,IAASR,EAAGS,aAAa;MAC7B,IAAIT,EAAGC,YAAY,cAAc;QAC7BA,IAAUD,EAAGN,SAAS,GAAGO;QACzBO,IAASR,EAAGN,SAAS,GAAGe,aAAa;;MAEzC,OAAOR,MAAY,YAAYO,MAAW;AAAM;;EAIxD,OAAAD,CAAQ+C;IACJ,OAAOA,EAASE,MAAKxD;MACjB,IAAIC,IAAUD,EAAGC;MACjB,IAAIO,IAASR,EAAGS,aAAa;MAC7B,IAAIT,EAAGC,YAAY,cAAc;QAC7BA,IAAUD,EAAGN,SAAS,GAAGO;QACzBO,IAASR,EAAGN,SAAS,GAAGe,aAAa;;MAEzC,OAAOR,MAAY,YAAYO,MAAW;AAAM;;;;EAkBxD,MAAAiD;IACI,OAAMT,6BAAEA,GAA2B3D,qBAAEA,GAAmB6D,WAAEA,GAASlE,iBAAEA,KAAoBF;IACzF,MAAM4E,IAAsB,EAAC;IAC7B,IAAIR,KAAa7D,MAAwB,cAAcqE,EAAoB1C,KAAK;IAChF0C,EAAoB1C,KAAK3B;IACzBL,EAAgB4B,SAAQZ;MACpB,IAAIC,IAAUD,EAAGC,QAAQ0D;MACzB,IAAInD,IAASR,EAAGS,aAAa;MAC7B,IAAIR,MAAY,cAAc;QAC1BA,IAAUD,EAAGN,SAAS,GAAGO,QAAQ0D;QACjCnD,IAASR,EAAGN,SAAS,GAAGe,aAAa;QACrC,KAAKiD,EAAoBrD,SAAS,mBAAmBqD,EAAoB1C,KAAK;;MAElF,MAAM4C,IAAY,OAAO3D,IAAUA,MAAY,YAAYO,MAAW,SAAS,UAAU;MACzF,KAAKkD,EAAoBrD,SAASuD,IAAYF,EAAoB1C,KAAK4C;AAAU;IAErF9E,KAAKmE,kBAAkBC;IAEvB,OACIW,EACI;MAAAC,KAAA;MAAAC,aAAajF,KAAKmC;MAClB+C,UAAUhB;OAEVa,EACI;MAAAC,KAAA;MAAAG,KAAKjE,KAAOlB,KAAK8D,YAAY5C;MAC7BkE,OAAOR,EAAoBS,KAAK;MAChCC,MAAK;OAELP,EAAQ;MAAAC,KAAA;;;;;;;;;;;;;;;AC3S5B,MAAMO,IAAsB;;MCYfC,IAAgB;EAL7B,WAAA1F,CAAAC;;;IASIC,KAAgByF,mBAAkB;;;QA4ElCzF,KAAgB0F,mBAAG;MACf,IAAI1F,KAAKkF,UAAU;MACnBlF,KAAK2F;AAAe;AAgC3B;;;EAhFG,oBAAAnC;IACIxD,KAAK4F;IACL5F,KAAK6F,iBAAiB;;EAG1B,gBAAAlC;IACI,WAAWmC,mBAAmB,aAAa;MACvC9F,KAAK6F,iBAAiB,IAAIC,gBAAeC;QACrC/F,KAAKgG,UAAUC,KAAK;UAAE1D,SAASwD;;QAC/B/F,KAAKkG,+BAA+BH;AAAa;WAElD;MACH3E,QAAQC,KAAK;;IAGjB,KAAKrB,KAAKkF,UAAU;MAChBlF,KAAK2F;;;;;;;;EAWb,6BAAMQ;IACF,OAAOnG,KAAKkG,gCAAgC;;;;EAOhD,eAAAE,CAAgBC;IACZ,IAAIA,GAAQ;MACRrG,KAAK4F;WACF;MACH5F,KAAK2F;;;EAYb,aAAAA;;IACI,MAAMW,IAAOtG,KAAKW,YAAY4F,WAAYC,cAAc;IACxD,IAAIF,MAAS,MAAM;IAEnB,MAAM9B,KAAWiC,KAACC,IAAAJ,EAAK9F,sBAAgB,QAAAkG,WAAA,aAAAA,EAAAC,KAAAL,GAAG;MAAEtE,SAAS;YAAyB,QAAAyE,WAAA,IAAAA,IAAI;;SAGlFG,IAAA5G,KAAKyF,sBAAgB,QAAAmB,WAAA,aAAAA,EAAE9E,SAAQZ;MAAM,IAAAwF;MAAA,QAAAA,IAAA1G,KAAK6F,oBAAc,QAAAa,WAAA,aAAAA,EAAEG,UAAU3F;AAAG;IACvElB,KAAKyF,mBAAmB;;QAGxBjB,EAAS1C,SAAQZ;;OACbwF,IAAA1G,KAAK6F,oBAAc,QAAAa,WAAA,aAAAA,EAAEtD,QAAQlC;MAC7BlB,KAAKyF,iBAAiBvD,KAAKhB;AAAG;;EAItC,YAAA0E;;KACIc,IAAA1G,KAAK6F,oBAAgB,QAAAa,WAAA,aAAAA,EAAAjD;;;;EAMzB,MAAAkB;IACI,OAAOI,EAAA;MAAAC,KAAA;MAAM8B,cAAc9G,KAAK0F","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-action-sheet.entry.esm.js","sources":["src/components/q2-action-sheet/q2-action-sheet.scss?tag=q2-action-sheet&encapsulation=shadow","src/components/q2-action-sheet/q2-action-sheet.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n@keyframes showBackdrop {\n from {\n opacity: 0;\n }\n}\n\n@keyframes hideBackdrop {\n to {\n opacity: 0;\n }\n}\n\n// CSS variables don't inherit into the ::backdrop pseudo-element\n$animation-tween: #{var-list(--tct-action-sheet-tween, --app-tween-2, unquote('0.4s ease'))};\n\ndialog {\n --comp-border-radius-default: var(--app-scale-3x, 15px) var(--app-scale-3x, 15px) 0 0;\n --comp-border-radius: #{var-list(--tct-action-sheet-border-radius, --comp-border-radius-default)};\n --comp-desktop-border-radius: #{var-list(--tct-action-sheet-border-radius, --app-scale-3x, 15px)};\n --comp-close-button-size: #{var-list(--tct-action-sheet-close-button-size, --t-a11y-min-size, 44px)};\n --comp-header-height: #{var-list(--tct-action-sheet-header-height, --t-a11y-min-size, 44px)};\n --comp-dialog-background: #{var-list(--tct-action-sheet-background, --t-base, #ffffff)};\n --comp-dialog-color: #{var-list(--tct-action-sheet-color, --t-text, #4d4d4d)};\n --comp-dialog-padding: #{var-list(--tct-action-sheet-padding, --app-scale-3x, 15px)};\n --comp-content-gradient-height: #{var-list(--tct-action-sheet-content-gradient-height, --app-scale-2x, 10px)};\n --comp-dialog-gap: #{var-list(--tct-action-sheet-gap, --app-scale-2x, 10px)};\n --comp-dialog-max-width: #{var-list(--tct-action-sheet-max-width, 400px)};\n --comp-dialog-max-height: #{var-list(--tct-action-sheet-max-height, --comp-action-sheet-computed-max-height, 75vh)};\n --comp-dialog-min-height: #{var-list(--tct-action-sheet-min-height, --comp-action-sheet-computed-min-height, 20vh)};\n --comp-dialog-box-shadow: #{var-list(\n --tct-action-sheet-box-shadow,\n --app-shadow-2,\n unquote(\"0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)\")\n )};\n\n position: fixed;\n top: 100%;\n bottom: unset;\n color: var(--comp-dialog-color);\n background: var(--comp-dialog-background);\n transition: transform $animation-tween, opacity $animation-tween;\n width: 100%;\n max-width: var(--comp-dialog-max-width);\n border: 0;\n border-radius: var(--comp-border-radius);\n box-shadow: var(--comp-dialog-box-shadow);\n padding: 0;\n height: auto;\n overflow: hidden;\n min-height: var(--comp-dialog-min-height);\n max-height: var(--comp-dialog-max-height);\n\n &::backdrop {\n opacity: 0;\n background: var-list(--tct-action-sheet-backdrop-background, --t-top-a2, rgba(13, 13, 13, 0.6));\n }\n\n &[open] {\n &.is-opening,\n &.is-open {\n transform: translateY(-100%);\n\n @media screen and (min-width: 1200px) {\n opacity: 1;\n transform: translateY(0);\n }\n\n &::backdrop {\n opacity: 1;\n animation: showBackdrop $animation-tween;\n }\n }\n\n &.is-closing {\n transform: translateY(10%);\n\n &::backdrop {\n animation: hideBackdrop $animation-tween;\n }\n }\n }\n\n @media screen and (min-width: 1200px) {\n border-radius: var(--comp-desktop-border-radius);\n top: 0px;\n bottom: 0px;\n height: fit-content;\n transform: translateY(10%);\n opacity: 0;\n }\n}\n\n.content {\n overflow-y: auto;\n @include tiny-scrollbar();\n}\n\n.interior {\n display: grid;\n grid-template-rows: 44px 1fr auto;\n gap: var(--comp-dialog-gap);\n max-height: calc(var(--comp-dialog-max-height) - var(--comp-dialog-padding));\n padding: var(--comp-dialog-padding);\n\n // Scroll overlays\n &.is-list {\n header,\n footer {\n position: relative;\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n height: var(--comp-content-gradient-height);\n width: 100%;\n z-index: 1;\n }\n }\n }\n\n [slot=\"popover-top\"] {\n padding: var-list(--tct-dropdown-popover-top-slot-padding, 0);\n border-bottom: var-list(--tct-dropdown-slot-border-top);\n }\n\n [slot=\"popover-bottom\"] {\n padding: var-list(--tct-dropdown-popover-bottom-slot-padding, 0);\n border-top: var-list(--tct-dropdown-slot-border-bottom);\n }\n}\n\nheader {\n display: grid;\n grid-template-columns: var(--comp-close-button-size) 1fr var(--comp-close-button-size);\n grid-template-areas: '. title close';\n gap: var(--comp-dialog-gap);\n\n .title {\n grid-area: title;\n text-align: center;\n line-height: var(--comp-header-height);\n }\n\n .btn-close {\n grid-area: close;\n width: var(--comp-close-button-size);\n height: var(--comp-close-button-size);\n }\n}\n\nfooter {\n display: flex;\n justify-content: end;\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n Method,\n h,\n State,\n Event,\n EventEmitter,\n Element,\n Fragment,\n} from '@stencil/core';\nimport { Q2OptionListCustomEvent } from 'src/components';\nimport { loc, waitForNextPaint } from 'src/utils';\nimport sanitizeHTMLString, { sanitizeActionSheetSlotHtml } from 'src/utils/sanitize-html-string';\nimport type {\n ActionSheetListCloseData,\n ActionSheetData,\n ActionSheetListData,\n ActionSheetMessageData,\n ActionSheetSelectedOption,\n ActionSheetListOption,\n ActionSheetListOptgroup,\n} from 'q2-tecton-common/lib/types/action-sheet';\nimport mirrorEmit from '@/utils/mirror-emit';\n\n/**\n * @name Action Sheet\n * @category Display\n * @summary Use for presenting a modal sheet.\n */\n@Component({ tag: 'q2-action-sheet', shadow: true, styleUrl: 'q2-action-sheet.scss' })\nexport class Q2ActionSheet implements ComponentInterface {\n // #region Own Properties\n\n contentElement: HTMLDivElement;\n dialogElement: HTMLDialogElement;\n initialSelectedOptions: ActionSheetSelectedOption[] = [];\n maxHeight: number = 0.75;\n minHeight: number = 0.2;\n optionListElement: HTMLQ2OptionListElement;\n selectedOptions: { values: ActionSheetSelectedOption[]; value: string } = { values: [], value: '' };\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n isScrollable: boolean = false;\n\n @State()\n renderStatus: 'is-open' | 'is-closing' | 'is-opening' = 'is-closing';\n\n // #endregion\n // #region Public Property API\n\n @Prop({ mutable: true })\n data: ActionSheetData;\n\n @Prop()\n hideClose: boolean;\n\n @Prop()\n title: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the action sheet is closed.\n * @deprecated Use 'tctClose' instead\n */\n @Event()\n close: EventEmitter<ActionSheetListCloseData>;\n\n /**\n * Emitted when the component has finished rendering.\n * @private\n */\n @Event({ bubbles: false })\n ready: EventEmitter;\n\n /**\n * Emitted when the action sheet is closed.\n */\n @Event()\n tctClose: EventEmitter<ActionSheetListCloseData>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.dialogElement.removeEventListener('cancel', this.onCancel);\n }\n\n componentDidLoad() {\n this.dialogElement.addEventListener('cancel', this.onCancel);\n this.ready.emit();\n }\n\n // #endregion\n // #region Public Methods API\n\n @Method()\n async hide(data: ActionSheetListCloseData = { value: '', values: [], type: 'confirm' }) {\n mirrorEmit(this, ['close', 'tctClose'], data);\n this.renderStatus = 'is-closing';\n this.dialogElement.addEventListener(\n 'transitionend',\n () => {\n if (this.renderStatus !== 'is-closing') return;\n this.dialogElement.close();\n this.renderStatus = null;\n this.data = undefined;\n this.initialSelectedOptions = [];\n this.selectedOptions = { values: [], value: '' };\n this.hidePostHook();\n },\n { once: true }\n );\n }\n\n @Method()\n async show() {\n this.showPreHook();\n await waitForNextPaint();\n this.updateDialogMinMaxHeight();\n this.storeInitialValues();\n\n if (this.dialogElement.open) return;\n\n this.dialogElement.showModal();\n this.renderStatus = 'is-opening';\n this.dialogElement.addEventListener(\n 'transitionend',\n () => {\n if (this.renderStatus !== 'is-opening') return;\n this.renderStatus = 'is-open';\n this.focusContent();\n },\n { once: true }\n );\n }\n\n // #endregion\n // #region Local Methods\n\n focusContent() {\n const { data } = this;\n if (!data) return;\n if (data.appearance === 'list') {\n const { event } = data;\n if (event instanceof KeyboardEvent) {\n this.optionListElement.handleExternalKeydown(event);\n } else {\n this.optionListElement.focus();\n }\n }\n }\n\n generateOptgroup = (option: ActionSheetListOptgroup) => {\n const optgroupElement = document.createElement('q2-optgroup');\n if (option.label) optgroupElement.setAttribute('label', option.label);\n if (option.disabled) optgroupElement.setAttribute('disabled', '');\n if (!!option.options.length)\n option.options.forEach(opt => optgroupElement.appendChild(this.generateOption(opt)));\n return optgroupElement;\n };\n\n generateOption = (option: ActionSheetListOption) => {\n const optionElement = document.createElement('q2-option');\n const { innerHTML, ...attributes } = option;\n if (innerHTML) optionElement.innerHTML = sanitizeHTMLString(innerHTML);\n Object.entries(attributes).forEach(([key, value]) => {\n if (value === undefined) return;\n if (typeof value === 'boolean') {\n if (value) optionElement.setAttribute(key, '');\n } else {\n optionElement.setAttribute(key, value);\n }\n });\n return optionElement;\n };\n\n hidePostHook() {\n const { data } = this;\n if (!data) return;\n if (data.appearance === 'list') {\n this.hostElement.innerHTML = null;\n }\n }\n\n onCancel = (event: Event) => {\n event.preventDefault();\n const { initialSelectedOptions } = this;\n this.hide({\n value: initialSelectedOptions?.[0]?.value ?? '',\n values: initialSelectedOptions,\n type: 'cancel',\n });\n };\n\n onClick = (event: MouseEvent) => {\n const eventTarget = event.target as HTMLElement;\n if (!(eventTarget instanceof HTMLElement)) return;\n\n const isInContent = !!eventTarget.closest('.interior, q2-action-sheet');\n if (isInContent) return;\n this.onCancel(event);\n };\n\n onListChange = (event: Q2OptionListCustomEvent<{ value: string; values: ActionSheetSelectedOption[] }>) => {\n this.selectedOptions = event.detail;\n };\n\n onListDone = () => {\n this.hide({\n ...this.selectedOptions,\n type: 'confirm',\n });\n };\n\n onListPopoverStateChange = (\n event: Q2OptionListCustomEvent<{ open: boolean; action: 'close' | 'select' | 'open' }>\n ) => {\n if (event.detail.open) return;\n\n if (event.detail.action === 'close') {\n this.onCancel(event);\n } else {\n this.onListDone();\n }\n };\n\n showPreHook() {\n const { data } = this;\n if (!data) return;\n if (data.appearance === 'list') {\n this.hostElement.innerHTML = null;\n data.options.forEach(option => {\n this.hostElement.appendChild(\n 'options' in option ? this.generateOptgroup(option) : this.generateOption(option)\n );\n });\n }\n }\n\n storeInitialValues() {\n const { data } = this;\n if (!data) return;\n if (data.appearance === 'list') {\n this.initialSelectedOptions = data.listProps.selectedOptions;\n }\n }\n\n updateDialogMinMaxHeight() {\n const windowHeight = window.innerHeight;\n this.dialogElement.style.setProperty(\n '--comp-action-sheet-computed-min-height',\n `${Math.floor(windowHeight * this.minHeight)}px`\n );\n this.dialogElement.style.setProperty(\n '--comp-action-sheet-computed-max-height',\n `${Math.floor(windowHeight * this.maxHeight)}px`\n );\n }\n\n // #endregion\n // #region Render Methods\n\n renderList = ({ data }: { data: ActionSheetListData }) => {\n const { listProps, slotsHtml = [] } = data;\n return (\n <Fragment>\n {slotsHtml\n .filter(entry => entry.slot === 'top')\n .map(entry => (\n <div innerHTML={sanitizeActionSheetSlotHtml(entry.html)}></div>\n ))}\n <div\n class=\"content\"\n ref={el => (this.contentElement = el)}\n >\n <q2-option-list\n ref={el => (this.optionListElement = el)}\n multiple={listProps.multiple}\n noSelect={listProps.noSelect}\n onChange={this.onListChange}\n onPopoverState={this.onListPopoverStateChange}\n selectedOptions={listProps.selectedOptions}\n >\n <slot />\n </q2-option-list>\n </div>\n <footer>\n {listProps.multiple && (\n <q2-btn\n test-id=\"btnDone\"\n intent=\"workflow-primary\"\n onClick={this.onListDone}\n >\n {loc('tecton.element.actionSheet.done')}\n </q2-btn>\n )}\n </footer>\n {slotsHtml\n .filter(entry => entry.slot === 'bottom')\n .map(entry => (\n <div innerHTML={sanitizeActionSheetSlotHtml(entry.html)}></div>\n ))}\n </Fragment>\n );\n };\n\n renderMessage = ({ data }: { data: ActionSheetMessageData }) => {\n return (\n <q2-message type={data.type}>\n {data.title && <h2>{data.title}</h2>}\n {data.description && <p>{data.description}</p>}\n </q2-message>\n );\n };\n\n renderSlot = () => {\n return (\n <div\n class=\"content\"\n ref={el => (this.contentElement = el)}\n >\n <slot />\n </div>\n );\n };\n\n render() {\n const { data } = this;\n const showHeader = data?.title || this.title || !this.hideClose;\n const renderStatus = this.renderStatus || '';\n\n let RenderContent = null;\n switch (data?.appearance) {\n case 'message':\n RenderContent = this.renderMessage;\n break;\n\n case 'list':\n RenderContent = this.renderList;\n break;\n\n default:\n RenderContent = this.renderSlot;\n break;\n }\n const appearance = data?.appearance || 'slot';\n const interiorClasses = `interior is-${appearance}`;\n return (\n <dialog\n ref={el => (this.dialogElement = el)}\n class={renderStatus}\n onClick={this.onClick}\n >\n <div class={interiorClasses}>\n {showHeader && (\n <header>\n <div class=\"title\">{data?.title || this.title}</div>\n {!this.hideClose && (\n <q2-btn\n class=\"btn-close\"\n test-id=\"btnClose\"\n onClick={this.onCancel}\n label=\"tecton.element.actionSheet.close\"\n hide-label\n >\n <q2-icon type=\"close\" />\n </q2-btn>\n )}\n </header>\n )}\n {this.data?.description && <p>{data.description}</p>}\n {RenderContent && <RenderContent data={this.data} />}\n </div>\n </dialog>\n );\n }\n\n // #endregion\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"q2-action-sheet.entry.esm.js","sources":["src/components/q2-action-sheet/q2-action-sheet.scss?tag=q2-action-sheet&encapsulation=shadow","src/components/q2-action-sheet/q2-action-sheet.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n@import './variables';\n\n@keyframes showBackdrop {\n from {\n opacity: 0;\n }\n}\n\n@keyframes hideBackdrop {\n to {\n opacity: 0;\n }\n}\n\n// CSS variables don't inherit into the ::backdrop pseudo-element\n$animation-tween: #{var-list(--tct-action-sheet-tween, --app-tween-2, unquote('0.4s ease'))};\n\ndialog {\n --comp-border-radius-default: var(--app-scale-3x, 15px) var(--app-scale-3x, 15px) 0 0;\n --comp-border-radius: #{var-list(--tct-action-sheet-border-radius, --comp-border-radius-default)};\n --comp-desktop-border-radius: #{var-list(--tct-action-sheet-border-radius, --app-scale-3x, 15px)};\n --comp-close-button-size: #{var-list(--tct-action-sheet-close-button-size, --t-a11y-min-size, 44px)};\n --comp-header-height: #{var-list(--tct-action-sheet-header-height, --t-a11y-min-size, 44px)};\n --comp-dialog-background: #{var-list(--tct-action-sheet-background, --t-base, #ffffff)};\n --comp-dialog-color: #{var-list(--tct-action-sheet-color, --t-text, #4d4d4d)};\n --comp-dialog-padding: #{var-list(--tct-action-sheet-padding, --app-scale-3x, 15px)};\n --comp-content-gradient-height: #{var-list(--tct-action-sheet-content-gradient-height, --app-scale-2x, 10px)};\n --comp-dialog-gap: #{var-list(--tct-action-sheet-gap, --app-scale-2x, 10px)};\n --comp-dialog-max-width: #{var-list(--tct-action-sheet-max-width, 400px)};\n --comp-dialog-max-height: #{var-list(--tct-action-sheet-max-height, --comp-action-sheet-computed-max-height, 75vh)};\n --comp-dialog-min-height: #{var-list(--tct-action-sheet-min-height, --comp-action-sheet-computed-min-height, 20vh)};\n --comp-dialog-box-shadow: #{var-list(\n --tct-action-sheet-box-shadow,\n --app-shadow-2,\n unquote(\"0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)\")\n )};\n\n position: fixed;\n top: 100%;\n bottom: unset;\n color: var(--comp-dialog-color);\n background: var(--comp-dialog-background);\n transition: transform $animation-tween, opacity $animation-tween;\n width: 100%;\n max-width: var(--comp-dialog-max-width);\n border: 0;\n border-radius: var(--comp-border-radius);\n box-shadow: var(--comp-dialog-box-shadow);\n padding: 0;\n height: auto;\n overflow: hidden;\n min-height: var(--comp-dialog-min-height);\n max-height: var(--comp-dialog-max-height);\n\n &::backdrop {\n opacity: 0;\n background: var-list(--tct-action-sheet-backdrop-background, --t-top-a2, rgba(13, 13, 13, 0.6));\n }\n\n &[open] {\n &.is-opening,\n &.is-open {\n transform: translateY(-100%);\n\n @media screen and (min-width: 1200px) {\n opacity: 1;\n transform: translateY(0);\n }\n\n &::backdrop {\n opacity: 1;\n animation: showBackdrop $animation-tween;\n }\n }\n\n &.is-closing {\n transform: translateY(10%);\n\n &::backdrop {\n animation: hideBackdrop $animation-tween;\n }\n }\n }\n\n @media screen and (min-width: 1200px) {\n border-radius: var(--comp-desktop-border-radius);\n top: 0px;\n bottom: 0px;\n height: fit-content;\n transform: translateY(10%);\n opacity: 0;\n }\n}\n\n.content {\n overflow-y: auto;\n @include tiny-scrollbar();\n}\n\n.interior {\n display: grid;\n grid-template-rows: 44px 1fr auto;\n gap: var(--comp-dialog-gap);\n max-height: calc(var(--comp-dialog-max-height) - var(--comp-dialog-padding));\n padding: var(--comp-dialog-padding);\n\n // Scroll overlays\n &.is-list {\n header,\n footer {\n position: relative;\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n height: var(--comp-content-gradient-height);\n width: 100%;\n z-index: 1;\n }\n }\n }\n\n [slot=\"popover-top\"] {\n padding: var-list(--tct-dropdown-popover-top-slot-padding, 0);\n border-bottom: var-list(--tct-dropdown-slot-border-top);\n }\n\n [slot=\"popover-bottom\"] {\n padding: var-list(--tct-dropdown-popover-bottom-slot-padding, 0);\n border-top: var-list(--tct-dropdown-slot-border-bottom);\n }\n}\n\nheader {\n display: grid;\n grid-template-columns: var(--comp-close-button-size) 1fr var(--comp-close-button-size);\n grid-template-areas: '. title close';\n gap: var(--comp-dialog-gap);\n\n .title {\n grid-area: title;\n text-align: center;\n line-height: var(--comp-header-height);\n }\n\n .btn-close {\n grid-area: close;\n width: var(--comp-close-button-size);\n height: var(--comp-close-button-size);\n }\n}\n\nfooter {\n display: flex;\n justify-content: end;\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n Method,\n h,\n State,\n Event,\n EventEmitter,\n Element,\n Fragment,\n} from '@stencil/core';\nimport { Q2OptionListCustomEvent } from 'src/components';\nimport { loc, waitForNextPaint } from 'src/utils';\nimport sanitizeHTMLString, { sanitizeActionSheetSlotHtml } from 'src/utils/sanitize-html-string';\nimport type {\n ActionSheetListCloseData,\n ActionSheetData,\n ActionSheetListData,\n ActionSheetMessageData,\n ActionSheetSelectedOption,\n ActionSheetListOption,\n ActionSheetListOptgroup,\n} from 'q2-tecton-common/lib/types/action-sheet';\nimport mirrorEmit from '@/utils/mirror-emit';\n\n/**\n * @name Action Sheet\n * @category Display\n * @summary Use for presenting a modal sheet.\n */\n@Component({ tag: 'q2-action-sheet', shadow: true, styleUrl: 'q2-action-sheet.scss' })\nexport class Q2ActionSheet implements ComponentInterface {\n // #region Own Properties\n\n closeButtonElement: HTMLQ2BtnElement;\n contentElement: HTMLDivElement;\n dialogElement: HTMLDialogElement;\n doneButtonElement: HTMLQ2BtnElement;\n initialSelectedOptions: ActionSheetSelectedOption[] = [];\n maxHeight: number = 0.75;\n minHeight: number = 0.2;\n optionListElement: HTMLQ2OptionListElement;\n selectedOptions: { values: ActionSheetSelectedOption[]; value: string } = { values: [], value: '' };\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n isScrollable: boolean = false;\n\n @State()\n renderStatus: 'is-open' | 'is-closing' | 'is-opening' = 'is-closing';\n\n // #endregion\n // #region Public Property API\n\n @Prop({ mutable: true })\n data: ActionSheetData;\n\n @Prop()\n hideClose: boolean;\n\n @Prop()\n title: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the action sheet is closed.\n * @deprecated Use 'tctClose' instead\n */\n @Event()\n close: EventEmitter<ActionSheetListCloseData>;\n\n /**\n * Emitted when the component has finished rendering.\n * @private\n */\n @Event({ bubbles: false })\n ready: EventEmitter;\n\n /**\n * Emitted when the action sheet is closed.\n */\n @Event()\n tctClose: EventEmitter<ActionSheetListCloseData>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.dialogElement.removeEventListener('cancel', this.onCancel);\n this.dialogElement.removeEventListener('keydown', this.handleDialogKeydown, true);\n }\n\n componentDidLoad() {\n this.dialogElement.addEventListener('cancel', this.onCancel);\n // Use capture phase to intercept Tab before option-list handles it\n this.dialogElement.addEventListener('keydown', this.handleDialogKeydown, true);\n this.ready.emit();\n }\n\n // #endregion\n // #region Public Methods API\n\n @Method()\n async hide(data: ActionSheetListCloseData = { value: '', values: [], type: 'confirm' }) {\n mirrorEmit(this, ['close', 'tctClose'], data);\n this.renderStatus = 'is-closing';\n this.dialogElement.addEventListener(\n 'transitionend',\n () => {\n if (this.renderStatus !== 'is-closing') return;\n this.dialogElement.close();\n this.renderStatus = null;\n this.data = undefined;\n this.initialSelectedOptions = [];\n this.selectedOptions = { values: [], value: '' };\n this.hidePostHook();\n },\n { once: true }\n );\n }\n\n @Method()\n async show() {\n this.showPreHook();\n await waitForNextPaint();\n this.updateDialogMinMaxHeight();\n this.storeInitialValues();\n\n if (this.dialogElement.open) return;\n\n this.dialogElement.showModal();\n this.renderStatus = 'is-opening';\n this.dialogElement.addEventListener(\n 'transitionend',\n () => {\n if (this.renderStatus !== 'is-opening') return;\n this.renderStatus = 'is-open';\n this.focusContent();\n },\n { once: true }\n );\n }\n\n // #endregion\n // #region Local Methods\n\n focusContent() {\n const { data } = this;\n if (!data) return;\n if (data.appearance === 'list') {\n const { event } = data;\n if (event instanceof KeyboardEvent) {\n this.optionListElement.handleExternalKeydown(event);\n } else {\n this.optionListElement.focus();\n }\n }\n }\n\n /**\n * Focuses the last visible (non-hidden, non-disabled) option in the option list.\n * Uses the async getOptions() method, but is invoked after preventDefault() has\n * already been called synchronously by the caller.\n */\n focusLastVisibleOption = async () => {\n if (!this.optionListElement) return;\n const allOptions = await this.optionListElement.getOptions();\n const lastVisibleOption = allOptions\n .slice()\n .reverse()\n .find(opt => !opt.hidden && !opt.disabled);\n if (lastVisibleOption) {\n lastVisibleOption.focus();\n }\n };\n\n generateOptgroup = (option: ActionSheetListOptgroup) => {\n const optgroupElement = document.createElement('q2-optgroup');\n if (option.label) optgroupElement.setAttribute('label', option.label);\n if (option.disabled) optgroupElement.setAttribute('disabled', '');\n if (!!option.options.length)\n option.options.forEach(opt => optgroupElement.appendChild(this.generateOption(opt)));\n return optgroupElement;\n };\n\n generateOption = (option: ActionSheetListOption) => {\n const optionElement = document.createElement('q2-option');\n const { innerHTML, ...attributes } = option;\n if (innerHTML) optionElement.innerHTML = sanitizeHTMLString(innerHTML);\n Object.entries(attributes).forEach(([key, value]) => {\n if (value === undefined) return;\n if (typeof value === 'boolean') {\n if (value) optionElement.setAttribute(key, '');\n } else {\n optionElement.setAttribute(key, value);\n }\n });\n return optionElement;\n };\n\n /**\n * Handles keyboard navigation within the action sheet dialog.\n * Manages Tab navigation between options and action buttons (close/done).\n * Allows Tab to exit to browser chrome when reaching boundaries.\n *\n * NOTE: This handler is intentionally synchronous. `event.preventDefault()`\n * must be called before the browser processes the Tab key (i.e., during the\n * synchronous portion of the keydown event). Introducing an `await` here\n * allows the browser to shift focus before preventDefault runs, which causes\n * Tab from the close button to escape the dialog instead of cycling back to\n * the options.\n * @param event - The keyboard event.\n */\n handleDialogKeydown = (event: KeyboardEvent) => {\n const { data } = this;\n // Only activate for list appearance with an option list\n if (!data || data.appearance !== 'list' || !this.optionListElement) return;\n\n const { key, shiftKey } = event;\n if (key !== 'Tab') return;\n\n const shadowActiveElement = this.hostElement.shadowRoot.activeElement;\n const closeButton = this.closeButtonElement;\n const doneButton = this.doneButtonElement;\n\n const isInCloseButton = shadowActiveElement === closeButton;\n const isInDoneButton = shadowActiveElement === doneButton;\n\n // q2-option lives in light DOM, so document.activeElement is the option element itself when focused.\n // Avoid `await optionListElement.getOptions()` here — that defers the handler past\n // the browser's default Tab handling, making preventDefault() ineffective.\n const activeElement = document.activeElement;\n const isOnOption =\n !!activeElement &&\n (activeElement.tagName === 'Q2-OPTION' || activeElement.tagName === 'Q2-DROPDOWN-ITEM') &&\n this.hostElement.contains(activeElement);\n\n if (shiftKey) {\n // Shift+Tab: if on close button\n if (isInCloseButton) {\n // With a done button (multi-select): allow default to exit to browser.\n // Browser Shift+Tab from the URL bar lands on the done button (last\n // tabbable in DOM order), which redirects to the last option via\n // focusLastVisibleOption — so choices remain reachable.\n if (doneButton) {\n // Let it bubble - exits to browser chrome\n return;\n }\n // Without a done button (single-select): redirect to the last visible\n // option. Otherwise focus would exit to the URL bar and the next\n // Shift+Tab back into the page would land on the close button (the\n // only tabbable in the modal), trapping the user in URL ↔ close\n // with no path back to choices.\n event.preventDefault();\n this.focusLastVisibleOption();\n }\n // Shift+Tab: if on done button, focus last option\n else if (isInDoneButton) {\n event.preventDefault();\n this.focusLastVisibleOption();\n }\n // Shift+Tab: if on any option, go to close button\n else if (isOnOption && closeButton) {\n event.preventDefault();\n closeButton.focus();\n }\n } else {\n // Forward Tab: if on close button, skip to first/selected option\n if (isInCloseButton) {\n event.preventDefault();\n this.optionListElement.focus();\n }\n // Forward Tab: if on done button, allow default to exit to browser\n else if (isInDoneButton) {\n // Let it bubble - exits to browser chrome\n return;\n }\n // Forward Tab: if on any option\n else if (isOnOption) {\n if (doneButton) {\n // With done button: go to done button\n event.preventDefault();\n doneButton.focus();\n }\n // else: No done button - allow default Tab behavior to exit to browser\n }\n }\n };\n\n hidePostHook() {\n const { data } = this;\n if (!data) return;\n if (data.appearance === 'list') {\n this.hostElement.innerHTML = null;\n }\n }\n\n onCancel = (event: Event) => {\n event.preventDefault();\n const { initialSelectedOptions } = this;\n this.hide({\n value: initialSelectedOptions?.[0]?.value ?? '',\n values: initialSelectedOptions,\n type: 'cancel',\n });\n };\n\n onClick = (event: MouseEvent) => {\n const eventTarget = event.target as HTMLElement;\n if (!(eventTarget instanceof HTMLElement)) return;\n\n const isInContent = !!eventTarget.closest('.interior, q2-action-sheet');\n if (isInContent) return;\n this.onCancel(event);\n };\n\n onListChange = (event: Q2OptionListCustomEvent<{ value: string; values: ActionSheetSelectedOption[] }>) => {\n this.selectedOptions = event.detail;\n };\n\n onListDone = () => {\n this.hide({\n ...this.selectedOptions,\n type: 'confirm',\n });\n };\n\n onListPopoverStateChange = (\n event: Q2OptionListCustomEvent<{ open: boolean; action: 'close' | 'select' | 'open' }>\n ) => {\n if (event.detail.open) return;\n\n if (event.detail.action === 'close') {\n this.onCancel(event);\n } else {\n this.onListDone();\n }\n };\n\n showPreHook() {\n const { data } = this;\n if (!data) return;\n if (data.appearance === 'list') {\n this.hostElement.innerHTML = null;\n data.options.forEach(option => {\n this.hostElement.appendChild(\n 'options' in option ? this.generateOptgroup(option) : this.generateOption(option)\n );\n });\n }\n }\n\n storeInitialValues() {\n const { data } = this;\n if (!data) return;\n if (data.appearance === 'list') {\n this.initialSelectedOptions = data.listProps.selectedOptions;\n }\n }\n\n updateDialogMinMaxHeight() {\n const windowHeight = window.innerHeight;\n this.dialogElement.style.setProperty(\n '--comp-action-sheet-computed-min-height',\n `${Math.floor(windowHeight * this.minHeight)}px`\n );\n this.dialogElement.style.setProperty(\n '--comp-action-sheet-computed-max-height',\n `${Math.floor(windowHeight * this.maxHeight)}px`\n );\n }\n\n // #endregion\n // #region Render Methods\n\n renderList = ({ data }: { data: ActionSheetListData }) => {\n const { listProps, slotsHtml = [] } = data;\n return (\n <Fragment>\n {slotsHtml\n .filter(entry => entry.slot === 'top')\n .map(entry => (\n <div innerHTML={sanitizeActionSheetSlotHtml(entry.html)}></div>\n ))}\n <div\n class=\"content\"\n ref={el => (this.contentElement = el)}\n >\n <q2-option-list\n ref={el => (this.optionListElement = el)}\n multiple={listProps.multiple}\n noSelect={listProps.noSelect}\n onChange={this.onListChange}\n onPopoverState={this.onListPopoverStateChange}\n selectedOptions={listProps.selectedOptions}\n >\n <slot />\n </q2-option-list>\n </div>\n <footer>\n {listProps.multiple && (\n <q2-btn\n ref={el => (this.doneButtonElement = el)}\n test-id=\"btnDone\"\n intent=\"workflow-primary\"\n onClick={this.onListDone}\n >\n {loc('tecton.element.actionSheet.done')}\n </q2-btn>\n )}\n </footer>\n {slotsHtml\n .filter(entry => entry.slot === 'bottom')\n .map(entry => (\n <div innerHTML={sanitizeActionSheetSlotHtml(entry.html)}></div>\n ))}\n </Fragment>\n );\n };\n\n renderMessage = ({ data }: { data: ActionSheetMessageData }) => {\n return (\n <q2-message type={data.type}>\n {data.title && <h2>{data.title}</h2>}\n {data.description && <p>{data.description}</p>}\n </q2-message>\n );\n };\n\n renderSlot = () => {\n return (\n <div\n class=\"content\"\n ref={el => (this.contentElement = el)}\n >\n <slot />\n </div>\n );\n };\n\n render() {\n const { data } = this;\n const showHeader = data?.title || this.title || !this.hideClose;\n const renderStatus = this.renderStatus || '';\n\n let RenderContent = null;\n switch (data?.appearance) {\n case 'message':\n RenderContent = this.renderMessage;\n break;\n\n case 'list':\n RenderContent = this.renderList;\n break;\n\n default:\n RenderContent = this.renderSlot;\n break;\n }\n const appearance = data?.appearance || 'slot';\n const interiorClasses = `interior is-${appearance}`;\n return (\n <dialog\n ref={el => (this.dialogElement = el)}\n class={renderStatus}\n onClick={this.onClick}\n >\n <div class={interiorClasses}>\n {showHeader && (\n <header>\n <div class=\"title\">{data?.title || this.title}</div>\n {!this.hideClose && (\n <q2-btn\n ref={el => (this.closeButtonElement = el)}\n class=\"btn-close\"\n test-id=\"btnClose\"\n onClick={this.onCancel}\n label=\"tecton.element.actionSheet.close\"\n hide-label\n >\n <q2-icon type=\"close\" />\n </q2-btn>\n )}\n </header>\n )}\n {this.data?.description && <p>{data.description}</p>}\n {RenderContent && <RenderContent data={this.data} />}\n </div>\n </dialog>\n );\n }\n\n // #endregion\n}\n"],"names":[],"mappings":"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"}
|