q2-tecton-elements 1.66.2 → 1.67.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle-report.json +3106 -2970
- package/dist/cjs/action-sheet-D71RSc-w.js.map +1 -1
- package/dist/cjs/click-elsewhere.q2-option-list.q2-popover.entry.cjs.js.map +1 -0
- package/dist/cjs/{q2-option-list_2.cjs.entry.js → click-elsewhere_3.cjs.entry.js} +168 -20
- package/dist/cjs/click-elsewhere_3.cjs.entry.js.map +1 -0
- package/dist/cjs/{index-DyAq0y0v.js → index-YvKoRT-t.js} +61 -21
- package/dist/cjs/index-YvKoRT-t.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-group_2.cjs.entry.js +3 -3
- package/dist/cjs/q2-action-sheet.cjs.entry.js +3 -3
- package/dist/cjs/q2-avatar.cjs.entry.js +33 -2
- 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-btn.q2-loading.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +22 -8
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +3 -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 +3 -3
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +4 -4
- 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 +67 -42
- 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 +4 -2
- package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-area.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +4 -2
- package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-bar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +7 -3
- 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 +3 -3
- 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 -0
- package/dist/cjs/q2-checkbox_2.cjs.entry.js +322 -0
- package/dist/cjs/q2-checkbox_2.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-context.cjs.entry.js +2 -2
- package/dist/cjs/q2-currency.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +13 -16
- 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-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/q2-editable-field.cjs.entry.js +2 -2
- 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 +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
- package/dist/cjs/q2-grid-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-grid.cjs.entry.js +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +11 -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 +2 -2
- 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 +3 -3
- 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 -2
- 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 +14 -6
- 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-modal.cjs.entry.js +4 -21
- 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 +3 -3
- package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
- package/dist/cjs/q2-option.cjs.entry.js +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +12 -7
- 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 +3 -3
- 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 +3 -3
- 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.cjs.entry.js +3 -3
- package/dist/cjs/q2-select.cjs.entry.js +22 -8
- 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 +7 -6
- package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +16 -8
- 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 +7 -4
- 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 +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +3 -3
- 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-tooltip.cjs.entry.js +33 -3
- 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-C2iwHNz5.js → sanitize-html-string-CW6y5624.js} +27 -17
- package/dist/cjs/sanitize-html-string-CW6y5624.js.map +1 -0
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
- package/dist/collection/__mocks__/echarts.js +12 -0
- package/dist/collection/__mocks__/echarts.js.map +1 -0
- package/dist/collection/collection-manifest.json +3 -3
- package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
- package/dist/collection/components/q2-avatar/q2-avatar.css +84 -89
- package/dist/collection/components/q2-avatar/q2-avatar.js +35 -1
- package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
- package/dist/collection/components/q2-btn/q2-btn.css +10 -3
- package/dist/collection/components/q2-btn/q2-btn.js +42 -6
- package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.css +4 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
- package/dist/collection/components/q2-card-image/q2-card-image.js +2 -2
- package/dist/collection/components/q2-carousel/q2-carousel.css +143 -13
- package/dist/collection/components/q2-carousel/q2-carousel.js +90 -42
- package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +2 -11
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
- package/dist/collection/components/q2-chart-area/q2-chart-area.js +18 -16
- package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +8 -6
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +4 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +30 -26
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.css +4 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.js +38 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +1 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +1 -1
- package/dist/collection/components/q2-context/q2-context.js +1 -1
- package/dist/collection/components/q2-currency/q2-currency.js +1 -1
- package/dist/collection/components/q2-data-table/q2-data-table.css +14 -0
- package/dist/collection/components/q2-data-table/q2-data-table.js +47 -50
- package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
- package/dist/collection/components/q2-detail/q2-detail.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +1 -1
- package/dist/collection/components/q2-editable-field/q2-editable-field.js +2 -2
- package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
- package/dist/collection/components/q2-example/q2-example.js +1 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.js +9 -9
- package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
- package/dist/collection/components/q2-form/q2-form.js +1 -1
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
- package/dist/collection/components/q2-grid/q2-grid.js +1 -1
- package/dist/collection/components/q2-grid-area/q2-grid-area.js +1 -1
- package/dist/collection/components/q2-icon/assets/brand.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/browsersos.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/cards.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/communication.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/currencies.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/devices.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/filetypes.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/gestures.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/icon-list.json +1 -1
- package/dist/collection/components/q2-icon/assets/icon-map.json +1 -1
- package/dist/collection/components/q2-icon/assets/legacy.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/mobile.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/status.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/q2-icon.js +8 -0
- package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input.js +42 -42
- package/dist/collection/components/q2-input/q2-input.js.map +1 -1
- package/dist/collection/components/q2-item/q2-item.css +4 -0
- package/dist/collection/components/q2-item/q2-item.js +1 -1
- package/dist/collection/components/q2-legend/q2-legend.css +3 -0
- package/dist/collection/components/q2-legend/q2-legend.js +36 -36
- package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
- package/dist/collection/components/q2-link/q2-link.css +5 -2
- package/dist/collection/components/q2-link/q2-link.js +33 -3
- package/dist/collection/components/q2-link/q2-link.js.map +1 -1
- package/dist/collection/components/q2-list/q2-list.js +1 -1
- package/dist/collection/components/q2-message/q2-message.css +19 -16
- package/dist/collection/components/q2-message/q2-message.js +1 -1
- package/dist/collection/components/q2-message/q2-message.js.map +1 -1
- package/dist/collection/components/q2-meter/q2-meter.js +1 -1
- package/dist/collection/components/q2-modal/q2-modal.css +3 -3
- package/dist/collection/components/q2-modal/q2-modal.js +1 -94
- package/dist/collection/components/q2-modal/q2-modal.js.map +1 -1
- package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
- package/dist/collection/components/q2-option-list/q2-option-list.js +13 -13
- package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
- package/dist/collection/components/q2-pagination/q2-pagination.js +15 -10
- package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
- package/dist/collection/components/q2-pill/q2-pill.css +9 -0
- package/dist/collection/components/q2-pill/q2-pill.js +13 -13
- package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
- package/dist/collection/components/q2-popover/q2-popover.css +66 -1
- package/dist/collection/components/q2-popover/q2-popover.js +94 -14
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-radio/q2-radio.css +4 -3
- package/dist/collection/components/q2-radio/q2-radio.js +1 -1
- package/dist/collection/components/q2-radio-group/q2-radio-group.css +1 -1
- package/dist/collection/components/q2-radio-group/q2-radio-group.js +1 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-select/q2-select.js +23 -7
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/components/q2-stepper/q2-stepper.css +9 -2
- package/dist/collection/components/q2-stepper/q2-stepper.js +5 -2
- package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +52 -30
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +11 -2
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +20 -6
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.css +7 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tag/q2-tag.css +3 -0
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-textarea/q2-textarea.css +1 -0
- package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
- package/dist/collection/components/q2-tooltip/q2-tooltip.css +1 -1
- package/dist/collection/components/q2-tooltip/q2-tooltip.js +34 -1
- package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/collection/index.js +1 -0
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/utils/action-sheet.js.map +1 -1
- package/dist/collection/utils/index.js +59 -19
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/components/action-sheet.js.map +1 -1
- package/dist/components/index2.js +59 -19
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-action-group2.js +1 -1
- package/dist/components/q2-action-sheet.js +1 -1
- package/dist/components/q2-avatar2.js +34 -2
- package/dist/components/q2-avatar2.js.map +1 -1
- package/dist/components/q2-btn2.js +22 -7
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-calendar.js +2 -2
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-card-image.js +2 -2
- package/dist/components/q2-carousel-pane.js +3 -3
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel.js +69 -55
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-area.js +3 -1
- package/dist/components/q2-chart-area.js.map +1 -1
- package/dist/components/q2-chart-bar.js +3 -1
- package/dist/components/q2-chart-bar.js.map +1 -1
- package/dist/components/q2-chart-donut.js +6 -2
- package/dist/components/q2-chart-donut.js.map +1 -1
- package/dist/components/q2-checkbox-group.js +2 -2
- package/dist/components/q2-checkbox-group.js.map +1 -1
- package/dist/components/q2-checkbox2.js +13 -2
- package/dist/components/q2-checkbox2.js.map +1 -1
- package/dist/components/q2-context.js +1 -1
- package/dist/components/q2-currency.js +1 -1
- package/dist/components/q2-data-table.js +46 -25
- package/dist/components/q2-data-table.js.map +1 -1
- package/dist/components/q2-detail.js +1 -1
- package/dist/components/q2-dropdown.js +1 -1
- package/dist/components/q2-editable-field.js +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 +1 -1
- package/dist/components/q2-formatted-text.js +1 -1
- package/dist/components/q2-grid-area.js +1 -1
- package/dist/components/q2-grid.js +1 -1
- package/dist/components/q2-icon2.js +10 -0
- package/dist/components/q2-icon2.js.map +1 -1
- package/dist/components/q2-input2.js +1 -1
- package/dist/components/q2-input2.js.map +1 -1
- package/dist/components/q2-item2.js +2 -2
- package/dist/components/q2-item2.js.map +1 -1
- package/dist/components/q2-legend2.js +2 -2
- package/dist/components/q2-legend2.js.map +1 -1
- package/dist/components/q2-link2.js +13 -4
- package/dist/components/q2-link2.js.map +1 -1
- package/dist/components/q2-list2.js +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-modal.js +2 -23
- package/dist/components/q2-modal.js.map +1 -1
- package/dist/components/q2-month-picker.js +2 -2
- package/dist/components/q2-mutation-observer.js +1 -1
- package/dist/components/q2-optgroup2.js +1 -1
- package/dist/components/q2-option-list2.js +1 -1
- package/dist/components/q2-option-list2.js.map +1 -1
- package/dist/components/q2-pagination.js +11 -6
- package/dist/components/q2-pagination.js.map +1 -1
- package/dist/components/q2-pill.js +2 -2
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-popover2.js +76 -15
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-radio-group.js +2 -2
- 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-select2.js +23 -8
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/components/q2-stepper-pane.js +9 -6
- package/dist/components/q2-stepper-pane.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +16 -8
- package/dist/components/q2-stepper-vertical.js.map +1 -1
- package/dist/components/q2-stepper.js +6 -3
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/components/q2-tab-container.js +2 -2
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tag.js +1 -257
- package/dist/components/q2-tag.js.map +1 -1
- package/dist/{esm/q2-tag.entry.js → components/q2-tag2.js} +68 -15
- package/dist/components/q2-tag2.js.map +1 -0
- package/dist/components/q2-textarea.js +2 -2
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/q2-tooltip2.js +35 -3
- package/dist/components/q2-tooltip2.js.map +1 -1
- package/dist/components/sanitize-html-string.js +25 -15
- package/dist/components/sanitize-html-string.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/action-sheet-B7adb3xs.js.map +1 -1
- package/dist/esm/click-elsewhere.q2-option-list.q2-popover.entry.js.map +1 -0
- package/dist/esm/{q2-option-list_2.entry.js → click-elsewhere_3.entry.js} +169 -22
- package/dist/esm/click-elsewhere_3.entry.js.map +1 -0
- package/dist/esm/{index-B4WYBDS9.js → index-C4PILj1_.js} +61 -21
- package/dist/esm/index-C4PILj1_.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-group_2.entry.js +3 -3
- package/dist/esm/q2-action-sheet.entry.js +3 -3
- package/dist/esm/q2-avatar.entry.js +33 -2
- package/dist/esm/q2-avatar.entry.js.map +1 -1
- package/dist/esm/q2-badge.entry.js +1 -1
- package/dist/esm/q2-btn.q2-loading.entry.js.map +1 -1
- package/dist/esm/q2-btn_2.entry.js +22 -8
- package/dist/esm/q2-btn_2.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +3 -3
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-card-image.entry.js +3 -3
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +4 -4
- package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +67 -42
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-chart-area.entry.js +4 -2
- package/dist/esm/q2-chart-area.entry.js.map +1 -1
- package/dist/esm/q2-chart-bar.entry.js +4 -2
- package/dist/esm/q2-chart-bar.entry.js.map +1 -1
- package/dist/esm/q2-chart-donut.entry.js +7 -3
- package/dist/esm/q2-chart-donut.entry.js.map +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +3 -3
- package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
- package/dist/esm/q2-checkbox.q2-tag.entry.js.map +1 -0
- package/dist/esm/q2-checkbox_2.entry.js +319 -0
- package/dist/esm/q2-checkbox_2.entry.js.map +1 -0
- package/dist/esm/q2-context.entry.js +2 -2
- package/dist/esm/q2-currency.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +13 -16
- package/dist/esm/q2-data-table.entry.js.map +1 -1
- package/dist/esm/q2-detail.entry.js +2 -2
- package/dist/esm/q2-dropdown-item.entry.js +1 -1
- package/dist/esm/q2-dropdown.entry.js +2 -2
- package/dist/esm/q2-editable-field.entry.js +2 -2
- 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 +1 -1
- package/dist/esm/q2-formatted-text.entry.js +1 -1
- package/dist/esm/q2-grid-area.entry.js +1 -1
- package/dist/esm/q2-grid.entry.js +1 -1
- package/dist/esm/q2-icon.entry.js +11 -1
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-input.entry.js +2 -2
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-item.entry.js +3 -3
- package/dist/esm/q2-item.entry.js.map +1 -1
- package/dist/esm/q2-legend.entry.js +2 -2
- 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 +14 -6
- 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-modal.entry.js +4 -21
- package/dist/esm/q2-modal.entry.js.map +1 -1
- package/dist/esm/q2-month-picker.entry.js +3 -3
- package/dist/esm/q2-mutation-observer.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +2 -2
- package/dist/esm/q2-option.entry.js +1 -1
- package/dist/esm/q2-pagination.entry.js +12 -7
- package/dist/esm/q2-pagination.entry.js.map +1 -1
- package/dist/esm/q2-pill.entry.js +3 -3
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +3 -3
- 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.entry.js +3 -3
- package/dist/esm/q2-select.entry.js +22 -8
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +7 -6
- package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +16 -8
- package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/esm/q2-stepper.entry.js +7 -4
- 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 +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +3 -3
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/q2-toast.entry.js +1 -1
- package/dist/esm/q2-tooltip.entry.js +33 -3
- package/dist/esm/q2-tooltip.entry.js.map +1 -1
- package/dist/esm/{sanitize-html-string-BPwFpYg-.js → sanitize-html-string-B35VmRc9.js} +27 -17
- package/dist/esm/sanitize-html-string-B35VmRc9.js.map +1 -0
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/q2-tecton-elements/action-sheet-B7adb3xs.js.map +1 -1
- package/dist/q2-tecton-elements/assets/brand.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/browsersos.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/cards.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/communication.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/currencies.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/devices.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/filetypes.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/gestures.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/icon-list.json +1 -1
- package/dist/q2-tecton-elements/assets/icon-map.json +1 -1
- package/dist/q2-tecton-elements/assets/legacy.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/mobile.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/status.symbol.svg +1 -1
- package/dist/q2-tecton-elements/click-elsewhere.q2-option-list.q2-popover.entry.esm.js.map +1 -0
- package/dist/q2-tecton-elements/{q2-option-list_2.entry.js → click-elsewhere_3.entry.js} +357 -224
- package/dist/q2-tecton-elements/click-elsewhere_3.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{index-B4WYBDS9.js → index-C4PILj1_.js} +53 -14
- package/dist/q2-tecton-elements/index-C4PILj1_.js.map +1 -0
- package/dist/q2-tecton-elements/q2-action-group_2.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +10 -10
- package/dist/q2-tecton-elements/q2-avatar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.js +68 -30
- package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-badge.entry.js +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 +30 -21
- 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.js +3 -3
- package/dist/q2-tecton-elements/q2-card.entry.js +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 +17 -17
- 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 +269 -242
- package/dist/q2-tecton-elements/q2-carousel.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +6 -5
- package/dist/q2-tecton-elements/q2-chart-area.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-bar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +4 -3
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js.map +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 +13 -11
- 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 +8 -8
- 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 -0
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +482 -0
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-context.entry.js +16 -16
- package/dist/q2-tecton-elements/q2-currency.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-data-table.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.js +26 -28
- package/dist/q2-tecton-elements/q2-data-table.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +79 -79
- package/dist/q2-tecton-elements/q2-editable-field.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +2 -2
- 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.js +2 -2
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-grid-area.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-grid.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-icon.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-icon.entry.js +122 -111
- 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 +7 -7
- 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 +40 -40
- 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 +3 -3
- 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 +24 -18
- 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 +29 -25
- package/dist/q2-tecton-elements/q2-message.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-meter.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-modal.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-modal.entry.js +65 -79
- package/dist/q2-tecton-elements/q2-modal.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +30 -30
- package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-option.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.js +43 -32
- 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 +40 -40
- 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 +8 -8
- 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 +23 -23
- 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.entry.js +12 -12
- package/dist/q2-tecton-elements/q2-select.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.js +21 -8
- package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +16 -15
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +73 -67
- 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 +38 -36
- 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 +19 -19
- package/dist/q2-tecton-elements/q2-tab-container.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-pane.entry.js +2 -2
- 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 +4 -4
- package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.js +41 -5
- package/dist/q2-tecton-elements/q2-tooltip.entry.js.map +1 -1
- package/dist/q2-tecton-elements/{sanitize-html-string-BPwFpYg-.js → sanitize-html-string-B35VmRc9.js} +118 -109
- package/dist/q2-tecton-elements/sanitize-html-string-B35VmRc9.js.map +1 -0
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
- package/dist/scripts/docs-generator/index.js +1 -1
- package/dist/scripts/docs-generator/index.js.map +1 -1
- package/dist/types/__mocks__/echarts.d.ts +16 -0
- package/dist/types/components/q2-avatar/q2-avatar.d.ts +9 -0
- package/dist/types/components/q2-btn/q2-btn.d.ts +6 -0
- package/dist/types/components/q2-calendar/q2-calendar-helpers.d.ts +3 -3
- package/dist/types/components/q2-calendar/q2-calendar-types.d.ts +2 -2
- package/dist/types/components/q2-calendar/q2-calendar-validation.d.ts +5 -5
- package/dist/types/components/q2-calendar/q2-calendar.d.ts +8 -8
- package/dist/types/components/q2-carousel/q2-carousel.d.ts +6 -0
- package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +4 -4
- package/dist/types/components/q2-chart-bar/q2-chart-bar.d.ts +3 -3
- package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +9 -9
- package/dist/types/components/q2-checkbox/q2-checkbox.d.ts +11 -0
- package/dist/types/components/q2-data-table/q2-data-table.d.ts +8 -41
- package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +4 -4
- package/dist/types/components/q2-file-picker/q2-file-picker.d.ts +1 -13
- package/dist/types/components/q2-input/formatting/alpha.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/alphanumeric.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/cif.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/clabe.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/credit-card.d.ts +2 -2
- package/dist/types/components/q2-input/formatting/currency.d.ts +2 -2
- package/dist/types/components/q2-input/formatting/generic.d.ts +2 -2
- package/dist/types/components/q2-input/formatting/iban.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/number.d.ts +3 -2
- package/dist/types/components/q2-input/formatting/numeric.d.ts +2 -2
- package/dist/types/components/q2-input/formatting/phone.d.ts +2 -2
- package/dist/types/components/q2-input/formatting/postal.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/routingnumber.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/ssn.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/swift.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/tin.d.ts +1 -1
- package/dist/types/components/q2-input/q2-input-types.d.ts +2 -22
- package/dist/types/components/q2-input/q2-input.d.ts +16 -15
- package/dist/types/components/q2-legend/q2-legend.d.ts +11 -11
- package/dist/types/components/q2-link/q2-link.d.ts +6 -0
- package/dist/types/components/q2-modal/q2-modal.d.ts +0 -17
- package/dist/types/components/q2-option-list/q2-option-list.d.ts +4 -4
- package/dist/types/components/q2-pagination/q2-pagination.d.ts +2 -0
- package/dist/types/components/q2-pill/q2-pill.d.ts +5 -5
- package/dist/types/components/q2-popover/q2-popover.d.ts +8 -0
- package/dist/types/components/q2-select/q2-select.d.ts +9 -6
- package/dist/types/components/q2-stepper-pane/q2-stepper-pane.d.ts +8 -11
- package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +10 -7
- package/dist/types/components/q2-tooltip/q2-tooltip.d.ts +4 -0
- package/dist/types/components.d.ts +148 -118
- package/dist/types/global.d.ts +2 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/utils/action-sheet.d.ts +5 -5
- package/dist/types/utils/index.d.ts +13 -0
- package/package.json +8 -9
- package/dist/cjs/click-elsewhere.cjs.entry.js +0 -97
- package/dist/cjs/click-elsewhere.cjs.entry.js.map +0 -1
- package/dist/cjs/click-elsewhere.entry.cjs.js.map +0 -1
- package/dist/cjs/index-DyAq0y0v.js.map +0 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +0 -110
- package/dist/cjs/q2-checkbox.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-checkbox.entry.cjs.js.map +0 -1
- package/dist/cjs/q2-option-list.q2-popover.entry.cjs.js.map +0 -1
- package/dist/cjs/q2-option-list_2.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-tag.cjs.entry.js +0 -211
- package/dist/cjs/q2-tag.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-tag.entry.cjs.js.map +0 -1
- package/dist/cjs/sanitize-html-string-C2iwHNz5.js.map +0 -1
- package/dist/esm/click-elsewhere.entry.js +0 -95
- package/dist/esm/click-elsewhere.entry.js.map +0 -1
- package/dist/esm/index-B4WYBDS9.js.map +0 -1
- package/dist/esm/q2-checkbox.entry.js +0 -108
- package/dist/esm/q2-checkbox.entry.js.map +0 -1
- package/dist/esm/q2-option-list.q2-popover.entry.js.map +0 -1
- package/dist/esm/q2-option-list_2.entry.js.map +0 -1
- package/dist/esm/q2-tag.entry.js.map +0 -1
- package/dist/esm/sanitize-html-string-BPwFpYg-.js.map +0 -1
- package/dist/q2-tecton-elements/click-elsewhere.entry.esm.js.map +0 -1
- package/dist/q2-tecton-elements/click-elsewhere.entry.js +0 -94
- package/dist/q2-tecton-elements/click-elsewhere.entry.js.map +0 -1
- package/dist/q2-tecton-elements/index-B4WYBDS9.js.map +0 -1
- package/dist/q2-tecton-elements/q2-checkbox.entry.esm.js.map +0 -1
- package/dist/q2-tecton-elements/q2-checkbox.entry.js +0 -228
- package/dist/q2-tecton-elements/q2-checkbox.entry.js.map +0 -1
- package/dist/q2-tecton-elements/q2-option-list.q2-popover.entry.esm.js.map +0 -1
- package/dist/q2-tecton-elements/q2-option-list_2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/q2-tag.entry.esm.js.map +0 -1
- package/dist/q2-tecton-elements/q2-tag.entry.js +0 -256
- package/dist/q2-tecton-elements/q2-tag.entry.js.map +0 -1
- package/dist/q2-tecton-elements/sanitize-html-string-BPwFpYg-.js.map +0 -1
|
@@ -2,7 +2,7 @@ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/i
|
|
|
2
2
|
import { j as handleDeprecationWarning, w as waitForNextPaint, u as isInScrollableContainer, d as isMobile } from './index2.js';
|
|
3
3
|
import { m as mirrorEmit } from './mirror-emit.js';
|
|
4
4
|
|
|
5
|
-
const q2PopoverCss = "*{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}.legacy.container{display:none}.legacy.show{display:block;z-index:var(--tct-popover-z-index, 50)}:popover-open,.show{position:absolute;margin:0;padding:var(--tct-popover-padding, 0);overflow:auto;background:var(--tct-popover-background, var(--app-white, #ffffff));backdrop-filter:var(--tct-popover-backdrop-filter, none);color:var(--tct-popover-font-color, var(--t-text, #4d4d4d));min-width:var(--tct-popover-min-width, 135px);margin-block:var(--tct-popover-margin-block, 0);box-shadow:var(--tct-popover-box-shadow, var(--app-shadow-
|
|
5
|
+
const q2PopoverCss = "*{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}.legacy.container{display:none}.legacy.show{display:block;z-index:var(--tct-popover-z-index, 50)}@keyframes popoverOpen{from{opacity:0;transform:scale(0.95)}to{opacity:1;transform:scale(1)}}@keyframes popoverClose{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0.95)}}:popover-open,.show{position:absolute;margin:0;padding:var(--tct-popover-padding, 0);overflow:auto;background:var(--tct-popover-background, var(--app-white, #ffffff));backdrop-filter:var(--tct-popover-backdrop-filter, none);color:var(--tct-popover-font-color, var(--t-text, #4d4d4d));min-width:var(--tct-popover-min-width, 135px);margin-block:var(--tct-popover-margin-block, 0);box-shadow:var(--tct-popover-box-shadow, var(--app-shadow-3, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)));border-width:var(--tct-popover-border-width, 0);border-style:solid;border-color:var(--tct-popover-border-color, transparent);border-radius:var(--tct-popover-border-radius, 0);max-height:var(--comp-pop-max-height);left:var(--comp-pop-left);opacity:var(--comp-pop-opacity, 0);--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 4px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}:popover-open.animating-open,.show.animating-open{animation-name:popoverOpen;animation-duration:var(--tct-popover-open-animation-duration, var(--t-tween-time-in-1, 150ms));animation-timing-function:var(--tct-popover-open-animation-timing-function, ease-out);animation-fill-mode:var(--tct-popover-open-animation-fill-mode, forwards)}:popover-open.animating-close,.show.animating-close{animation-name:popoverClose;animation-duration:var(--tct-popover-close-animation-duration, var(--t-tween-time-out-1, 100ms));animation-timing-function:var(--tct-popover-close-animation-timing-function, ease-in);animation-fill-mode:var(--tct-popover-close-animation-fill-mode, forwards)}@media (prefers-reduced-motion: reduce){:popover-open.animating-open,:popover-open.animating-close,.show.animating-open,.show.animating-close{animation:none}}:popover-open.block,.show.block{right:unset;width:var(--comp-pop-width);min-width:var(--tct-popover-min-width, unset)}:popover-open.left,.show.left{left:var(--comp-pop-left);right:unset}:popover-open.right,.show.right{right:var(--comp-pop-right);left:unset}:popover-open.down,.show.down{top:var(--tct-popover-top, var(--comp-pop-top));bottom:unset}:popover-open.up,.show.up{top:unset;bottom:var(--comp-pop-bottom)}:popover-open.down.left:not(.mobile),.show.down.left:not(.mobile){transform-origin:top left}:popover-open.down.right:not(.mobile),.show.down.right:not(.mobile){transform-origin:top right}:popover-open.up.left:not(.mobile),.show.up.left:not(.mobile){transform-origin:bottom left}:popover-open.up.right:not(.mobile),.show.up.right:not(.mobile){transform-origin:bottom right}:popover-open.mobile.down,.show.mobile.down{transform-origin:center top}:popover-open.mobile.up,.show.mobile.up{transform-origin:center bottom}:popover-open::-webkit-scrollbar,.show::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}:popover-open::-webkit-scrollbar-thumb,.show::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}:popover-open::-webkit-scrollbar-track,.show::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}click-elsewhere{position:relative;display:block}";
|
|
6
6
|
|
|
7
7
|
const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLElement {
|
|
8
8
|
constructor() {
|
|
@@ -16,8 +16,10 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
16
16
|
*/
|
|
17
17
|
this.displayBuffer = 10;
|
|
18
18
|
this.orientationChanged = false;
|
|
19
|
+
this.pendingAnimationResolve = null;
|
|
19
20
|
// #endregion
|
|
20
21
|
// #region State Properties
|
|
22
|
+
this.animationState = 'idle';
|
|
21
23
|
this.currentDirection = undefined;
|
|
22
24
|
// remove `show` when we transitiong fully to Popover API and get rid of 'legacy' mode
|
|
23
25
|
this.show = false;
|
|
@@ -25,6 +27,12 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
25
27
|
// #region Public Property API
|
|
26
28
|
/** Aligns the popover to the left or right side of the control element. */
|
|
27
29
|
this.align = 'left';
|
|
30
|
+
/**
|
|
31
|
+
* Controls whether the popover is animated when opening/closing.
|
|
32
|
+
* Default is true (animated). Set to false to disable animations.
|
|
33
|
+
* Animation is also disabled if the user has enabled prefers-reduced-motion.
|
|
34
|
+
*/
|
|
35
|
+
this.animated = true;
|
|
28
36
|
this.mode = null;
|
|
29
37
|
this.handleMinHeight = () => {
|
|
30
38
|
if (this.minHeight) {
|
|
@@ -36,6 +44,8 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
36
44
|
};
|
|
37
45
|
this.setAbsoluteCSSProperties = async () => {
|
|
38
46
|
const { controlElement, containerElement, currentDirection, align } = this;
|
|
47
|
+
if (!containerElement)
|
|
48
|
+
return;
|
|
39
49
|
if (align === 'right') {
|
|
40
50
|
containerElement.style.setProperty('--comp-pop-right', '0');
|
|
41
51
|
containerElement.style.setProperty('--comp-pop-left', 'unset');
|
|
@@ -56,11 +66,14 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
56
66
|
}
|
|
57
67
|
// Wait for one paint to prevent layout thrashing
|
|
58
68
|
await waitForNextPaint();
|
|
59
|
-
containerElement
|
|
69
|
+
if (this.containerElement)
|
|
70
|
+
containerElement.style.setProperty('--comp-pop-opacity', '1');
|
|
60
71
|
};
|
|
61
72
|
this.setPopoverAPICSSProperties = async () => {
|
|
62
73
|
var _a, _b, _c;
|
|
63
74
|
const { controlElement, containerElement, currentDirection, isModule, align } = this;
|
|
75
|
+
if (!containerElement)
|
|
76
|
+
return;
|
|
64
77
|
const { top: controlTop, bottom: controlBottom, left: controlLeft, right: controlRight, } = (_b = (_a = controlElement === null || controlElement === void 0 ? void 0 : controlElement.getBoundingClientRect) === null || _a === void 0 ? void 0 : _a.call(controlElement)) !== null && _b !== void 0 ? _b : {
|
|
65
78
|
top: 0,
|
|
66
79
|
bottom: 0,
|
|
@@ -79,8 +92,9 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
79
92
|
}
|
|
80
93
|
if (this.block)
|
|
81
94
|
containerElement.style.setProperty('--comp-pop-width', `${(controlElement === null || controlElement === void 0 ? void 0 : controlElement.offsetWidth) || 0}px`);
|
|
95
|
+
const isScrollableIframe = isModule && isInScrollableContainer(this.hostElement);
|
|
82
96
|
if (currentDirection === 'up') {
|
|
83
|
-
if (isModule) {
|
|
97
|
+
if (isModule && !isScrollableIframe) {
|
|
84
98
|
containerElement.style.setProperty('--comp-pop-bottom', `${window.innerHeight - controlTop}px`);
|
|
85
99
|
}
|
|
86
100
|
else {
|
|
@@ -88,7 +102,7 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
88
102
|
}
|
|
89
103
|
}
|
|
90
104
|
if (currentDirection === 'down') {
|
|
91
|
-
if (isModule) {
|
|
105
|
+
if (isModule && !isScrollableIframe) {
|
|
92
106
|
containerElement.style.setProperty('--comp-pop-top', `${controlBottom}px`);
|
|
93
107
|
}
|
|
94
108
|
else {
|
|
@@ -97,7 +111,8 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
97
111
|
}
|
|
98
112
|
// Wait for one paint to prevent layout thrashing
|
|
99
113
|
await waitForNextPaint();
|
|
100
|
-
containerElement
|
|
114
|
+
if (this.containerElement)
|
|
115
|
+
containerElement.style.setProperty('--comp-pop-opacity', '1');
|
|
101
116
|
};
|
|
102
117
|
this.viewPortChanged = () => {
|
|
103
118
|
if (!this.open)
|
|
@@ -112,8 +127,13 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
112
127
|
// #endregion
|
|
113
128
|
// #region Component Lifecycle Events
|
|
114
129
|
disconnectedCallback() {
|
|
130
|
+
var _a;
|
|
115
131
|
this.removeViewportListeners();
|
|
116
|
-
|
|
132
|
+
if (this.pendingAnimationResolve) {
|
|
133
|
+
this.pendingAnimationResolve();
|
|
134
|
+
this.pendingAnimationResolve = null;
|
|
135
|
+
}
|
|
136
|
+
(_a = this.containerElement) === null || _a === void 0 ? void 0 : _a.removeEventListener('toggle', this.handlePopoverToggleEvent);
|
|
117
137
|
this.containerElement = null;
|
|
118
138
|
this.contentElement = null;
|
|
119
139
|
this.controlElement = null;
|
|
@@ -125,9 +145,10 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
125
145
|
}
|
|
126
146
|
}
|
|
127
147
|
componentDidLoad() {
|
|
148
|
+
var _a;
|
|
128
149
|
this.handleMinHeight();
|
|
129
150
|
if (this.supportsPopoverAPI)
|
|
130
|
-
this.containerElement.addEventListener('toggle', this.handlePopoverToggleEvent);
|
|
151
|
+
(_a = this.containerElement) === null || _a === void 0 ? void 0 : _a.addEventListener('toggle', this.handlePopoverToggleEvent);
|
|
131
152
|
if (this.open)
|
|
132
153
|
this.determinePopDirection();
|
|
133
154
|
}
|
|
@@ -143,7 +164,8 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
143
164
|
// #endregion
|
|
144
165
|
// #region Public Methods API
|
|
145
166
|
async scrollContainerTo(options) {
|
|
146
|
-
|
|
167
|
+
var _a;
|
|
168
|
+
(_a = this.containerElement) === null || _a === void 0 ? void 0 : _a.scrollTo(options);
|
|
147
169
|
}
|
|
148
170
|
async toggle() {
|
|
149
171
|
this.open = !this.open;
|
|
@@ -156,12 +178,37 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
156
178
|
async openChanged(open) {
|
|
157
179
|
mirrorEmit(this, ['popoverStateChanged', 'tctPopoverStateChanged'], { open });
|
|
158
180
|
if (open) {
|
|
181
|
+
this.animationState = 'opening';
|
|
159
182
|
this.addViewportListeners();
|
|
160
183
|
this.determinePopDirection();
|
|
161
184
|
}
|
|
162
185
|
else {
|
|
186
|
+
this.animationState = 'closing';
|
|
163
187
|
this.removeViewportListeners();
|
|
188
|
+
// Wait for close animation to complete
|
|
189
|
+
if (this.animated) {
|
|
190
|
+
await new Promise(resolve => {
|
|
191
|
+
var _a;
|
|
192
|
+
const handleAnimationEnd = () => {
|
|
193
|
+
var _a;
|
|
194
|
+
this.pendingAnimationResolve = null;
|
|
195
|
+
(_a = this.containerElement) === null || _a === void 0 ? void 0 : _a.removeEventListener('animationend', handleAnimationEnd);
|
|
196
|
+
resolve();
|
|
197
|
+
};
|
|
198
|
+
this.pendingAnimationResolve = handleAnimationEnd;
|
|
199
|
+
(_a = this.containerElement) === null || _a === void 0 ? void 0 : _a.addEventListener('animationend', handleAnimationEnd);
|
|
200
|
+
if (!this.containerElement)
|
|
201
|
+
resolve();
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
// No animation, proceed immediately
|
|
206
|
+
await waitForNextPaint();
|
|
207
|
+
}
|
|
208
|
+
if (!this.containerElement)
|
|
209
|
+
return;
|
|
164
210
|
this.currentDirection = undefined;
|
|
211
|
+
this.animationState = 'idle';
|
|
165
212
|
if (this.mode === 'legacy' || !this.supportsPopoverAPI) {
|
|
166
213
|
this.show = false;
|
|
167
214
|
}
|
|
@@ -208,6 +255,8 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
208
255
|
window.addEventListener('orientationchange', this.viewPortOrientationChanged);
|
|
209
256
|
}
|
|
210
257
|
clearCSSProperties() {
|
|
258
|
+
if (!this.containerElement)
|
|
259
|
+
return;
|
|
211
260
|
this.containerElement.style.removeProperty('--comp-pop-max-height');
|
|
212
261
|
this.containerElement.style.removeProperty('--comp-pop-top');
|
|
213
262
|
this.containerElement.style.removeProperty('--comp-pop-bottom');
|
|
@@ -222,6 +271,8 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
222
271
|
if (containerElement)
|
|
223
272
|
containerElement.style.maxHeight = null;
|
|
224
273
|
await waitForNextPaint();
|
|
274
|
+
if (!this.containerElement)
|
|
275
|
+
return;
|
|
225
276
|
const { isModule } = this;
|
|
226
277
|
const { top: controlTop, bottom: controlBottom } = (_b = (_a = controlElement === null || controlElement === void 0 ? void 0 : controlElement.getBoundingClientRect) === null || _a === void 0 ? void 0 : _a.call(controlElement)) !== null && _b !== void 0 ? _b : {
|
|
227
278
|
top: 0,
|
|
@@ -230,7 +281,8 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
230
281
|
let windowHeight;
|
|
231
282
|
let maxSpaceAbove;
|
|
232
283
|
let maxSpaceBelow;
|
|
233
|
-
|
|
284
|
+
const isScrollableIframe = isModule && isInScrollableContainer(this.hostElement);
|
|
285
|
+
if (isModule && !isScrollableIframe) {
|
|
234
286
|
const { outletOffset = 0, innerHeight = window.innerHeight, top: topBarHeight = 0, bottom: bottomBarHeight = 0, } = ((_c = window.Tecton) === null || _c === void 0 ? void 0 : _c.platformDimensions) || {};
|
|
235
287
|
const distanceToIframeBottom = window.innerHeight - controlBottom;
|
|
236
288
|
// controlElement position visually on the page
|
|
@@ -253,13 +305,13 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
253
305
|
}
|
|
254
306
|
const directionWithMostSpace = maxSpaceAbove > maxSpaceBelow ? 'up' : 'down';
|
|
255
307
|
// We do not want to update the max height once the popover is open unless the page orientation shifts (resize or mobile use cases)
|
|
256
|
-
const shouldUpdateMaxHeight = !containerElement.style.getPropertyValue('--comp-pop-max-height') || this.orientationChanged;
|
|
308
|
+
const shouldUpdateMaxHeight = !(containerElement === null || containerElement === void 0 ? void 0 : containerElement.style.getPropertyValue('--comp-pop-max-height')) || this.orientationChanged;
|
|
257
309
|
// we do not want to constantly update the max-height after an orientation change, so we switch this back to false
|
|
258
310
|
this.orientationChanged = false;
|
|
259
311
|
const currentOrDetermineDirection = this.currentDirection || providedDirection || directionWithMostSpace;
|
|
260
312
|
switch (currentOrDetermineDirection) {
|
|
261
313
|
case 'up':
|
|
262
|
-
if (shouldUpdateMaxHeight) {
|
|
314
|
+
if (shouldUpdateMaxHeight && containerElement) {
|
|
263
315
|
const priorityMaxHeight = this.validatedMaxHeight || maxSpaceAbove;
|
|
264
316
|
const maxHeight = Math.min(maxSpaceAbove, priorityMaxHeight);
|
|
265
317
|
containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);
|
|
@@ -267,7 +319,7 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
267
319
|
this.setDirectionAndShow('up');
|
|
268
320
|
break;
|
|
269
321
|
case 'down':
|
|
270
|
-
if (shouldUpdateMaxHeight) {
|
|
322
|
+
if (shouldUpdateMaxHeight && containerElement) {
|
|
271
323
|
const priorityMaxHeight = this.validatedMaxHeight || maxSpaceBelow;
|
|
272
324
|
const maxHeight = Math.min(maxSpaceBelow, priorityMaxHeight);
|
|
273
325
|
containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);
|
|
@@ -285,10 +337,11 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
285
337
|
window.removeEventListener('orientationchange', this.viewPortOrientationChanged);
|
|
286
338
|
}
|
|
287
339
|
setDirectionAndShow(direction) {
|
|
340
|
+
var _a;
|
|
288
341
|
// Due to some runtime inconsistency across devices/browsers we need to add one more check here because the
|
|
289
342
|
// popover can be closed between the time the popover is opened and the time the direction is determined
|
|
290
343
|
const isOpen = this.open;
|
|
291
|
-
if (!isOpen)
|
|
344
|
+
if (!isOpen || !this.containerElement)
|
|
292
345
|
return;
|
|
293
346
|
this.currentDirection = direction;
|
|
294
347
|
if (this.mode === 'legacy' || !this.supportsPopoverAPI) {
|
|
@@ -297,20 +350,26 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
297
350
|
}
|
|
298
351
|
else {
|
|
299
352
|
this.setPopoverAPICSSProperties();
|
|
300
|
-
this.containerElement.showPopover();
|
|
353
|
+
(_a = this.containerElement) === null || _a === void 0 ? void 0 : _a.showPopover();
|
|
301
354
|
}
|
|
302
355
|
}
|
|
303
356
|
// #endregion
|
|
304
357
|
// #region Render Methods
|
|
305
358
|
render() {
|
|
306
359
|
const containerClasses = ['container', this.currentDirection, this.align];
|
|
360
|
+
if (isMobile())
|
|
361
|
+
containerClasses.push('mobile');
|
|
307
362
|
if (this.show)
|
|
308
363
|
containerClasses.push('show');
|
|
309
364
|
if (this.block)
|
|
310
365
|
containerClasses.push('block');
|
|
311
366
|
if (this.mode === 'legacy')
|
|
312
367
|
containerClasses.push('legacy');
|
|
313
|
-
|
|
368
|
+
if (this.animated && this.animationState === 'opening')
|
|
369
|
+
containerClasses.push('animating-open');
|
|
370
|
+
if (this.animated && this.animationState === 'closing')
|
|
371
|
+
containerClasses.push('animating-close');
|
|
372
|
+
return (h("div", { key: '779d18b2765abec3eff0f19ca297b01356a06a7d', ref: el => (this.containerElement = el), class: containerClasses.join(' '), "test-id": "outerContainer", tabIndex: -1, popover: "manual" }, h("div", { key: '47eb4c1420bbc63f821333c03804c1843363f946', ref: el => (this.contentElement = el), class: "content" }, h("slot", { key: '8554a334fd61f07cf712e2bdbe797f7835878469' }))));
|
|
314
373
|
}
|
|
315
374
|
get hostElement() { return this; }
|
|
316
375
|
static get watchers() { return {
|
|
@@ -320,6 +379,7 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
320
379
|
static get style() { return q2PopoverCss; }
|
|
321
380
|
}, [1, "q2-popover", {
|
|
322
381
|
"align": [513],
|
|
382
|
+
"animated": [516],
|
|
323
383
|
"block": [516],
|
|
324
384
|
"controlElement": [16, "control-element"],
|
|
325
385
|
"direction": [513],
|
|
@@ -327,6 +387,7 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
|
|
|
327
387
|
"minHeight": [2, "min-height"],
|
|
328
388
|
"mode": [1],
|
|
329
389
|
"open": [1540],
|
|
390
|
+
"animationState": [32],
|
|
330
391
|
"currentDirection": [32],
|
|
331
392
|
"show": [32],
|
|
332
393
|
"scrollContainerTo": [64],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"q2-popover2.js","mappings":"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","names":["__stencil_proxyCustomElement"],"sources":["src/components/q2-popover/q2-popover.scss?tag=q2-popover&encapsulation=shadow","src/components/q2-popover/q2-popover.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n.legacy {\n &.container {\n display: none;\n }\n\n &.show {\n display: block;\n z-index: var-list(--tct-popover-z-index, 50);\n }\n}\n\n:popover-open,\n.show {\n position: absolute;\n margin: 0;\n padding: var-list(--tct-popover-padding, 0);\n overflow: auto;\n background: var-list(--tct-popover-background, --app-white, #ffffff);\n backdrop-filter: var-list(--tct-popover-backdrop-filter, none);\n color: var-list(--tct-popover-font-color, --t-text, #4d4d4d);\n min-width: var-list(--tct-popover-min-width, 135px);\n margin-block: var-list(--tct-popover-margin-block, 0);\n box-shadow: var-list(\n --tct-popover-box-shadow,\n --app-shadow-1,\n unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)')\n );\n border-width: var-list(--tct-popover-border-width, 0);\n border-style: solid;\n border-color: var-list(--tct-popover-border-color, transparent);\n border-radius: var-list(--tct-popover-border-radius, 0);\n // the --comp variables are set via JS\n max-height: var(--comp-pop-max-height);\n left: var(--comp-pop-left);\n opacity: var(--comp-pop-opacity, 0);\n\n &.block {\n right: unset;\n width: var(--comp-pop-width);\n min-width: var-list(--tct-popover-min-width, unset);\n }\n\n &.left {\n left: var(--comp-pop-left);\n right: unset;\n }\n\n &.right {\n right: var(--comp-pop-right);\n left: unset;\n }\n\n &.down {\n top: var-list(--tct-popover-top, --comp-pop-top);\n bottom: unset;\n }\n\n &.up {\n top: unset;\n bottom: var(--comp-pop-bottom);\n }\n\n @include tiny-scrollbar();\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n","import {\n Component,\n Prop,\n h,\n ComponentInterface,\n Element,\n Watch,\n Method,\n Listen,\n EventEmitter,\n Event,\n State,\n} from '@stencil/core';\nimport { handleDeprecationWarning, waitForNextPaint, isMobile, isInScrollableContainer } from '../../utils';\nimport mirrorEmit from '@/utils/mirror-emit';\n\n/**\n * ***********\n * * WARNING *\n * ***********\n * Touching this file obligates you to manually test thoroughly, because Puppeteer can't capture every edgecase.\n *\n * Each of the following Scenarios must be tested on each Device, in each Environment.\n *\n * Scenarios:\n * - Q2 Select searchable\n * - Q2 Select non-searchable\n *\n * Orientations:\n * - Portrait\n * - Landscape\n *\n * Devices:\n * - iOS Safari\n * - Android Chrome\n * - MacOS Safari\n * - Chrome\n * - Firefox\n *\n * Environments:\n * - Standard (Outside of Iframe)\n * - SDK Extension (Inside of Iframe)\n */\n\n/**\n * @name Popover\n * @category Display\n * @summary Use for positioning floating content relative to a trigger element.\n */\n@Component({ tag: 'q2-popover', shadow: true, styleUrl: 'q2-popover.scss' })\nexport class Q2Popover implements ComponentInterface {\n // #region Own Properties\n\n containerElement: HTMLDivElement;\n contentElement: HTMLDivElement;\n /**\n * The number of pixels to leave between the popover and the edge of the viewport\n */\n displayBuffer = 10;\n orientationChanged: boolean = false;\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 currentDirection: 'down' | 'up' = undefined;\n\n // remove `show` when we transitiong fully to Popover API and get rid of 'legacy' mode\n @State()\n show: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /** Aligns the popover to the left or right side of the control element. */\n @Prop({ reflect: true })\n align: 'left' | 'right' = 'left';\n\n /** Indicates the popover will match the width of its parent element. */\n @Prop({ reflect: true })\n block: boolean;\n\n /** The element that controls the popover's behavior. */\n @Prop()\n controlElement: HTMLElement;\n\n /**\n * Force the direction of the popover when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop({ reflect: true })\n direction: 'up' | 'down';\n\n /**\n * Force the maximum height of the popover. This value will be interpreted as pixels.\n * If no value is passed, or the value exceeds available space, the component will auto-detect the maximum height based on available space.\n */\n @Prop()\n maxHeight: number;\n\n /** @deprecated */\n @Prop()\n minHeight: number;\n\n @Prop()\n mode: 'legacy' = null;\n\n /** Controls whether the popover is open or closed. */\n @Prop({ reflect: true, mutable: true })\n open: boolean;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the popover is opened or closed.\n * @deprecated Use 'tctPopoverStateChanged' instead\n */\n @Event()\n popoverStateChanged: EventEmitter<{ open: boolean }>;\n\n /**\n * Emitted when the popover is opened or closed.\n */\n @Event()\n tctPopoverStateChanged: EventEmitter<{ open: boolean }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.removeViewportListeners();\n this.containerElement.removeEventListener('toggle', this.handlePopoverToggleEvent);\n this.containerElement = null;\n this.contentElement = null;\n this.controlElement = null;\n }\n\n componentWillLoad() {\n if (!this.supportsPopoverAPI) {\n console.warn(\n 'The Popover API is not supported in this browser. Please update your browser to the latest version. The component will use legacy mode.'\n );\n this.mode = 'legacy';\n }\n }\n\n componentDidLoad() {\n this.handleMinHeight();\n if (this.supportsPopoverAPI) this.containerElement.addEventListener('toggle', this.handlePopoverToggleEvent);\n if (this.open) this.determinePopDirection();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('popoverState')\n popoverStateHandler(event: CustomEvent<{ open: boolean }>) {\n const {\n detail: { open },\n } = event;\n if (open === this.open) return;\n\n this.open = open;\n event.stopPropagation();\n }\n\n // #endregion\n // #region Public Methods API\n\n @Method()\n async scrollContainerTo(options: ScrollToOptions) {\n this.containerElement.scrollTo(options);\n }\n\n @Method()\n async toggle() {\n this.open = !this.open;\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('minHeight')\n minHeightProvided() {\n this.handleMinHeight();\n }\n\n @Watch('open')\n async openChanged(open: boolean) {\n mirrorEmit(this, ['popoverStateChanged', 'tctPopoverStateChanged'], { open });\n\n if (open) {\n this.addViewportListeners();\n this.determinePopDirection();\n } else {\n this.removeViewportListeners();\n this.currentDirection = undefined;\n if (this.mode === 'legacy' || !this.supportsPopoverAPI) {\n this.show = false;\n } else {\n this.containerElement.hidePopover();\n }\n\n await waitForNextPaint();\n this.clearCSSProperties();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get isModule(): boolean {\n const isIframe = window !== window.top;\n const hasPlatformDimensions = Object.keys(window.Tecton?.platformDimensions ?? {}).length > 0;\n return isIframe && hasPlatformDimensions;\n }\n\n get providedDirection(): 'up' | 'down' | undefined {\n const { direction } = this;\n switch (direction) {\n case 'up':\n case 'down':\n return direction;\n default:\n return undefined;\n }\n }\n\n get supportsPopoverAPI(): boolean {\n return Object.hasOwn(HTMLElement.prototype, 'popover');\n }\n\n get validatedMaxHeight(): number | undefined {\n const { maxHeight } = this;\n return isNaN(maxHeight) ? undefined : maxHeight;\n }\n\n addViewportListeners() {\n window.addEventListener('resize', this.viewPortOrientationChanged);\n visualViewport?.addEventListener('resize', this.viewPortChanged);\n if (isInScrollableContainer(this.hostElement) && !isMobile()) {\n window.addEventListener('scroll', this.viewPortChanged, { passive: true, capture: true });\n }\n screen?.orientation?.addEventListener('orientationchange', this.viewPortOrientationChanged);\n window.addEventListener('orientationchange', this.viewPortOrientationChanged);\n }\n\n clearCSSProperties() {\n this.containerElement.style.removeProperty('--comp-pop-max-height');\n this.containerElement.style.removeProperty('--comp-pop-top');\n this.containerElement.style.removeProperty('--comp-pop-bottom');\n this.containerElement.style.removeProperty('--comp-pop-left');\n this.containerElement.style.removeProperty('--comp-pop-right');\n this.containerElement.style.removeProperty('--comp-pop-width');\n this.containerElement.style.removeProperty('--comp-pop-opacity');\n }\n\n async determinePopDirection() {\n const { containerElement, controlElement, providedDirection, displayBuffer } = this;\n if (containerElement) containerElement.style.maxHeight = null;\n await waitForNextPaint();\n\n const { isModule } = this;\n const { top: controlTop, bottom: controlBottom } = controlElement?.getBoundingClientRect?.() ?? {\n top: 0,\n bottom: 0,\n };\n\n let windowHeight: number;\n let maxSpaceAbove: number;\n let maxSpaceBelow: number;\n if (isModule) {\n const {\n outletOffset = 0,\n innerHeight = window.innerHeight,\n top: topBarHeight = 0,\n bottom: bottomBarHeight = 0,\n } = window.Tecton?.platformDimensions || {};\n\n const distanceToIframeBottom = window.innerHeight - controlBottom;\n\n // controlElement position visually on the page\n const visualControlTop = outletOffset > 0 ? controlTop : controlTop + outletOffset - topBarHeight;\n const visualControlBottom = outletOffset + controlBottom - topBarHeight;\n\n // visual space around the controlElement\n const viewableSpaceAbove = visualControlTop;\n const viewableSpaceBelow = innerHeight - bottomBarHeight - visualControlBottom;\n\n // calculate space above and below controlElement\n const isIframeShorterThanWindow = distanceToIframeBottom < viewableSpaceBelow;\n maxSpaceAbove = viewableSpaceAbove - displayBuffer;\n maxSpaceBelow = isIframeShorterThanWindow\n ? distanceToIframeBottom - displayBuffer\n : viewableSpaceBelow - displayBuffer;\n } else {\n windowHeight = window.innerHeight;\n maxSpaceAbove = controlTop - displayBuffer;\n maxSpaceBelow = windowHeight - controlBottom - displayBuffer;\n }\n\n const directionWithMostSpace: 'up' | 'down' = maxSpaceAbove > maxSpaceBelow ? 'up' : 'down';\n\n // We do not want to update the max height once the popover is open unless the page orientation shifts (resize or mobile use cases)\n const shouldUpdateMaxHeight =\n !containerElement.style.getPropertyValue('--comp-pop-max-height') || this.orientationChanged;\n // we do not want to constantly update the max-height after an orientation change, so we switch this back to false\n this.orientationChanged = false;\n const currentOrDetermineDirection = this.currentDirection || providedDirection || directionWithMostSpace;\n\n switch (currentOrDetermineDirection) {\n case 'up':\n if (shouldUpdateMaxHeight) {\n const priorityMaxHeight = this.validatedMaxHeight || maxSpaceAbove;\n const maxHeight = Math.min(maxSpaceAbove, priorityMaxHeight);\n containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);\n }\n this.setDirectionAndShow('up');\n break;\n case 'down':\n if (shouldUpdateMaxHeight) {\n const priorityMaxHeight = this.validatedMaxHeight || maxSpaceBelow;\n const maxHeight = Math.min(maxSpaceBelow, priorityMaxHeight);\n containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);\n }\n this.setDirectionAndShow('down');\n break;\n default:\n break;\n }\n }\n\n handleMinHeight = () => {\n if (this.minHeight) {\n handleDeprecationWarning(this, 'minHeight', 'prop');\n }\n };\n\n handlePopoverToggleEvent = (event: ToggleEvent) => {\n mirrorEmit(this, ['popoverStateChanged', 'tctPopoverStateChanged'], { open: event.newState === 'open' });\n };\n\n removeViewportListeners() {\n window.removeEventListener('resize', this.viewPortOrientationChanged);\n visualViewport?.removeEventListener('resize', this.viewPortChanged);\n window.removeEventListener('scroll', this.viewPortChanged, { capture: true });\n screen?.orientation?.removeEventListener('orientationchange', this.viewPortOrientationChanged);\n window.removeEventListener('orientationchange', this.viewPortOrientationChanged);\n }\n\n setAbsoluteCSSProperties = async () => {\n const { controlElement, containerElement, currentDirection, align } = this;\n\n if (align === 'right') {\n containerElement.style.setProperty('--comp-pop-right', '0');\n containerElement.style.setProperty('--comp-pop-left', 'unset');\n } else {\n containerElement.style.setProperty('--comp-pop-left', '0');\n containerElement.style.setProperty('--comp-pop-right', 'unset');\n }\n\n if (this.block) {\n containerElement.style.setProperty('--comp-pop-width', '100%');\n }\n\n if (currentDirection === 'up') {\n const controlStyle = getComputedStyle(controlElement);\n const controlSize =\n parseInt(controlStyle.height || '0') +\n parseInt(controlStyle.borderTopWidth || '0') +\n parseInt(controlStyle.borderBottomWidth || '0');\n\n containerElement.style.setProperty('--comp-pop-bottom', `${controlSize}px`);\n }\n\n // Wait for one paint to prevent layout thrashing\n await waitForNextPaint();\n containerElement.style.setProperty('--comp-pop-opacity', '1');\n };\n\n setDirectionAndShow(direction: 'up' | 'down') {\n // Due to some runtime inconsistency across devices/browsers we need to add one more check here because the\n // popover can be closed between the time the popover is opened and the time the direction is determined\n const isOpen = this.open;\n if (!isOpen) return;\n\n this.currentDirection = direction;\n if (this.mode === 'legacy' || !this.supportsPopoverAPI) {\n this.show = true;\n this.setAbsoluteCSSProperties();\n } else {\n this.setPopoverAPICSSProperties();\n this.containerElement.showPopover();\n }\n }\n\n setPopoverAPICSSProperties = async () => {\n const { controlElement, containerElement, currentDirection, isModule, align } = this;\n const {\n top: controlTop,\n bottom: controlBottom,\n left: controlLeft,\n right: controlRight,\n } = controlElement?.getBoundingClientRect?.() ?? {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n\n const popoverLeft: number = controlLeft;\n const popoverRight: number = window?.visualViewport?.width - controlRight;\n\n if (align === 'right') {\n containerElement.style.setProperty('--comp-pop-right', `${popoverRight - window.scrollX}px`);\n containerElement.style.setProperty('--comp-pop-left', 'unset');\n } else {\n containerElement.style.setProperty('--comp-pop-left', `${popoverLeft + window.scrollX}px`);\n containerElement.style.setProperty('--comp-pop-right', 'unset');\n }\n\n if (this.block) containerElement.style.setProperty('--comp-pop-width', `${controlElement?.offsetWidth || 0}px`);\n\n if (currentDirection === 'up') {\n if (isModule) {\n containerElement.style.setProperty('--comp-pop-bottom', `${window.innerHeight - controlTop}px`);\n } else {\n containerElement.style.setProperty(\n '--comp-pop-bottom',\n `${window.innerHeight - controlTop - window.scrollY}px`\n );\n }\n }\n\n if (currentDirection === 'down') {\n if (isModule) {\n containerElement.style.setProperty('--comp-pop-top', `${controlBottom}px`);\n } else {\n containerElement.style.setProperty('--comp-pop-top', `${controlBottom + window.scrollY}px`);\n }\n }\n\n // Wait for one paint to prevent layout thrashing\n await waitForNextPaint();\n containerElement.style.setProperty('--comp-pop-opacity', '1');\n };\n\n viewPortChanged = () => {\n if (!this.open) return;\n this.determinePopDirection();\n };\n\n viewPortOrientationChanged = () => {\n this.orientationChanged = true;\n this.viewPortChanged();\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const containerClasses = ['container', this.currentDirection, this.align];\n if (this.show) containerClasses.push('show');\n if (this.block) containerClasses.push('block');\n if (this.mode === 'legacy') containerClasses.push('legacy');\n\n return (\n <div\n ref={el => (this.containerElement = el)}\n class={containerClasses.join(' ')}\n test-id=\"outerContainer\"\n tabIndex={-1}\n popover=\"manual\"\n >\n <div\n ref={el => (this.contentElement = el)}\n class=\"content\"\n >\n <slot />\n </div>\n </div>\n );\n }\n\n // #endregion\n}\n"],"version":3}
|
|
1
|
+
{"file":"q2-popover2.js","mappings":"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","names":["__stencil_proxyCustomElement"],"sources":["src/components/q2-popover/q2-popover.scss?tag=q2-popover&encapsulation=shadow","src/components/q2-popover/q2-popover.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n.legacy {\n &.container {\n display: none;\n }\n\n &.show {\n display: block;\n z-index: var-list(--tct-popover-z-index, 50);\n }\n}\n\n@keyframes popoverOpen {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes popoverClose {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.95);\n }\n}\n\n:popover-open,\n.show {\n position: absolute;\n margin: 0;\n padding: var-list(--tct-popover-padding, 0);\n overflow: auto;\n background: var-list(--tct-popover-background, --app-white, #ffffff);\n backdrop-filter: var-list(--tct-popover-backdrop-filter, none);\n color: var-list(--tct-popover-font-color, --t-text, #4d4d4d);\n min-width: var-list(--tct-popover-min-width, 135px);\n margin-block: var-list(--tct-popover-margin-block, 0);\n box-shadow: var-list(\n --tct-popover-box-shadow,\n --app-shadow-3,\n unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)')\n );\n border-width: var-list(--tct-popover-border-width, 0);\n border-style: solid;\n border-color: var-list(--tct-popover-border-color, transparent);\n border-radius: var-list(--tct-popover-border-radius, 0);\n // the --comp variables are set via JS\n max-height: var(--comp-pop-max-height);\n left: var(--comp-pop-left);\n opacity: var(--comp-pop-opacity, 0);\n\n &.animating-open {\n animation-name: popoverOpen;\n animation-duration: var-list(--tct-popover-open-animation-duration, --t-tween-time-in-1, 150ms);\n animation-timing-function: var-list(--tct-popover-open-animation-timing-function, ease-out);\n animation-fill-mode: var-list(--tct-popover-open-animation-fill-mode, forwards);\n }\n\n &.animating-close {\n animation-name: popoverClose;\n animation-duration: var-list(--tct-popover-close-animation-duration, --t-tween-time-out-1, 100ms);\n animation-timing-function: var-list(--tct-popover-close-animation-timing-function, ease-in);\n animation-fill-mode: var-list(--tct-popover-close-animation-fill-mode, forwards);\n }\n\n // Respect user's motion preferences\n @media (prefers-reduced-motion: reduce) {\n &.animating-open,\n &.animating-close {\n animation: none;\n }\n }\n\n &.block {\n right: unset;\n width: var(--comp-pop-width);\n min-width: var-list(--tct-popover-min-width, unset);\n }\n\n &.left {\n left: var(--comp-pop-left);\n right: unset;\n }\n\n &.right {\n right: var(--comp-pop-right);\n left: unset;\n }\n\n &.down {\n top: var-list(--tct-popover-top, --comp-pop-top);\n bottom: unset;\n }\n\n &.up {\n top: unset;\n bottom: var(--comp-pop-bottom);\n }\n\n // Desktop: corner-based transform origin\n &.down.left:not(.mobile) {\n transform-origin: top left;\n }\n\n &.down.right:not(.mobile) {\n transform-origin: top right;\n }\n\n &.up.left:not(.mobile) {\n transform-origin: bottom left;\n }\n\n &.up.right:not(.mobile) {\n transform-origin: bottom right;\n }\n\n // Mobile: center-based transform origin\n &.mobile.down {\n transform-origin: center top;\n }\n\n &.mobile.up {\n transform-origin: center bottom;\n }\n\n @include tiny-scrollbar();\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n","import {\n Component,\n Prop,\n h,\n ComponentInterface,\n Element,\n Watch,\n Method,\n Listen,\n EventEmitter,\n Event,\n State,\n} from '@stencil/core';\nimport { handleDeprecationWarning, waitForNextPaint, isMobile, isInScrollableContainer } from '../../utils';\nimport mirrorEmit from '@/utils/mirror-emit';\n\n/**\n * ***********\n * * WARNING *\n * ***********\n * Touching this file obligates you to manually test thoroughly, because Puppeteer can't capture every edgecase.\n *\n * Each of the following Scenarios must be tested on each Device, in each Environment.\n *\n * Scenarios:\n * - Q2 Select searchable\n * - Q2 Select non-searchable\n *\n * Orientations:\n * - Portrait\n * - Landscape\n *\n * Devices:\n * - iOS Safari\n * - Android Chrome\n * - MacOS Safari\n * - Chrome\n * - Firefox\n *\n * Environments:\n * - Standard (Outside of Iframe)\n * - SDK Extension (Inside of Iframe)\n */\n\n/**\n * @name Popover\n * @category Display\n * @summary Use for positioning floating content relative to a trigger element.\n */\n@Component({ tag: 'q2-popover', shadow: true, styleUrl: 'q2-popover.scss' })\nexport class Q2Popover implements ComponentInterface {\n // #region Own Properties\n\n containerElement: HTMLDivElement;\n contentElement: HTMLDivElement;\n /**\n * The number of pixels to leave between the popover and the edge of the viewport\n */\n displayBuffer = 10;\n orientationChanged: boolean = false;\n pendingAnimationResolve: (() => void) | null = null;\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 animationState: 'idle' | 'opening' | 'closing' = 'idle';\n\n @State()\n currentDirection: 'down' | 'up' = undefined;\n\n // remove `show` when we transitiong fully to Popover API and get rid of 'legacy' mode\n @State()\n show: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /** Aligns the popover to the left or right side of the control element. */\n @Prop({ reflect: true })\n align: 'left' | 'right' = 'left';\n\n /**\n * Controls whether the popover is animated when opening/closing.\n * Default is true (animated). Set to false to disable animations.\n * Animation is also disabled if the user has enabled prefers-reduced-motion.\n */\n @Prop({ reflect: true })\n animated: boolean = true;\n\n /** Indicates the popover will match the width of its parent element. */\n @Prop({ reflect: true })\n block: boolean;\n\n /** The element that controls the popover's behavior. */\n @Prop()\n controlElement: HTMLElement;\n\n /**\n * Force the direction of the popover when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop({ reflect: true })\n direction: 'up' | 'down';\n\n /**\n * Force the maximum height of the popover. This value will be interpreted as pixels.\n * If no value is passed, or the value exceeds available space, the component will auto-detect the maximum height based on available space.\n */\n @Prop()\n maxHeight: number;\n\n /** @deprecated */\n @Prop()\n minHeight: number;\n\n @Prop()\n mode: 'legacy' = null;\n\n /** Controls whether the popover is open or closed. */\n @Prop({ reflect: true, mutable: true })\n open: boolean;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the popover is opened or closed.\n * @deprecated Use 'tctPopoverStateChanged' instead\n */\n @Event()\n popoverStateChanged: EventEmitter<{ open: boolean }>;\n\n /**\n * Emitted when the popover is opened or closed.\n */\n @Event()\n tctPopoverStateChanged: EventEmitter<{ open: boolean }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.removeViewportListeners();\n if (this.pendingAnimationResolve) {\n this.pendingAnimationResolve();\n this.pendingAnimationResolve = null;\n }\n this.containerElement?.removeEventListener('toggle', this.handlePopoverToggleEvent);\n this.containerElement = null;\n this.contentElement = null;\n this.controlElement = null;\n }\n\n componentWillLoad() {\n if (!this.supportsPopoverAPI) {\n console.warn(\n 'The Popover API is not supported in this browser. Please update your browser to the latest version. The component will use legacy mode.'\n );\n this.mode = 'legacy';\n }\n }\n\n componentDidLoad() {\n this.handleMinHeight();\n if (this.supportsPopoverAPI) this.containerElement?.addEventListener('toggle', this.handlePopoverToggleEvent);\n if (this.open) this.determinePopDirection();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('popoverState')\n popoverStateHandler(event: CustomEvent<{ open: boolean }>) {\n const {\n detail: { open },\n } = event;\n if (open === this.open) return;\n\n this.open = open;\n event.stopPropagation();\n }\n\n // #endregion\n // #region Public Methods API\n\n @Method()\n async scrollContainerTo(options: ScrollToOptions) {\n this.containerElement?.scrollTo(options);\n }\n\n @Method()\n async toggle() {\n this.open = !this.open;\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('minHeight')\n minHeightProvided() {\n this.handleMinHeight();\n }\n\n @Watch('open')\n async openChanged(open: boolean) {\n mirrorEmit(this, ['popoverStateChanged', 'tctPopoverStateChanged'], { open });\n\n if (open) {\n this.animationState = 'opening';\n this.addViewportListeners();\n this.determinePopDirection();\n } else {\n this.animationState = 'closing';\n this.removeViewportListeners();\n\n // Wait for close animation to complete\n if (this.animated) {\n await new Promise<void>(resolve => {\n const handleAnimationEnd = () => {\n this.pendingAnimationResolve = null;\n this.containerElement?.removeEventListener('animationend', handleAnimationEnd);\n resolve();\n };\n this.pendingAnimationResolve = handleAnimationEnd;\n this.containerElement?.addEventListener('animationend', handleAnimationEnd);\n if (!this.containerElement) resolve();\n });\n } else {\n // No animation, proceed immediately\n await waitForNextPaint();\n }\n\n if (!this.containerElement) return;\n\n this.currentDirection = undefined;\n this.animationState = 'idle';\n if (this.mode === 'legacy' || !this.supportsPopoverAPI) {\n this.show = false;\n } else {\n this.containerElement.hidePopover();\n }\n\n await waitForNextPaint();\n this.clearCSSProperties();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get isModule(): boolean {\n const isIframe = window !== window.top;\n const hasPlatformDimensions = Object.keys(window.Tecton?.platformDimensions ?? {}).length > 0;\n return isIframe && hasPlatformDimensions;\n }\n\n get providedDirection(): 'up' | 'down' | undefined {\n const { direction } = this;\n switch (direction) {\n case 'up':\n case 'down':\n return direction;\n default:\n return undefined;\n }\n }\n\n get supportsPopoverAPI(): boolean {\n return Object.hasOwn(HTMLElement.prototype, 'popover');\n }\n\n get validatedMaxHeight(): number | undefined {\n const { maxHeight } = this;\n return isNaN(maxHeight) ? undefined : maxHeight;\n }\n\n addViewportListeners() {\n window.addEventListener('resize', this.viewPortOrientationChanged);\n visualViewport?.addEventListener('resize', this.viewPortChanged);\n if (isInScrollableContainer(this.hostElement) && !isMobile()) {\n window.addEventListener('scroll', this.viewPortChanged, { passive: true, capture: true });\n }\n screen?.orientation?.addEventListener('orientationchange', this.viewPortOrientationChanged);\n window.addEventListener('orientationchange', this.viewPortOrientationChanged);\n }\n\n clearCSSProperties() {\n if (!this.containerElement) return;\n this.containerElement.style.removeProperty('--comp-pop-max-height');\n this.containerElement.style.removeProperty('--comp-pop-top');\n this.containerElement.style.removeProperty('--comp-pop-bottom');\n this.containerElement.style.removeProperty('--comp-pop-left');\n this.containerElement.style.removeProperty('--comp-pop-right');\n this.containerElement.style.removeProperty('--comp-pop-width');\n this.containerElement.style.removeProperty('--comp-pop-opacity');\n }\n\n async determinePopDirection() {\n const { containerElement, controlElement, providedDirection, displayBuffer } = this;\n if (containerElement) containerElement.style.maxHeight = null;\n await waitForNextPaint();\n if (!this.containerElement) return;\n\n const { isModule } = this;\n const { top: controlTop, bottom: controlBottom } = controlElement?.getBoundingClientRect?.() ?? {\n top: 0,\n bottom: 0,\n };\n\n let windowHeight: number;\n let maxSpaceAbove: number;\n let maxSpaceBelow: number;\n const isScrollableIframe = isModule && isInScrollableContainer(this.hostElement);\n if (isModule && !isScrollableIframe) {\n const {\n outletOffset = 0,\n innerHeight = window.innerHeight,\n top: topBarHeight = 0,\n bottom: bottomBarHeight = 0,\n } = window.Tecton?.platformDimensions || {};\n\n const distanceToIframeBottom = window.innerHeight - controlBottom;\n\n // controlElement position visually on the page\n const visualControlTop = outletOffset > 0 ? controlTop : controlTop + outletOffset - topBarHeight;\n const visualControlBottom = outletOffset + controlBottom - topBarHeight;\n\n // visual space around the controlElement\n const viewableSpaceAbove = visualControlTop;\n const viewableSpaceBelow = innerHeight - bottomBarHeight - visualControlBottom;\n\n // calculate space above and below controlElement\n const isIframeShorterThanWindow = distanceToIframeBottom < viewableSpaceBelow;\n maxSpaceAbove = viewableSpaceAbove - displayBuffer;\n maxSpaceBelow = isIframeShorterThanWindow\n ? distanceToIframeBottom - displayBuffer\n : viewableSpaceBelow - displayBuffer;\n } else {\n windowHeight = window.innerHeight;\n maxSpaceAbove = controlTop - displayBuffer;\n maxSpaceBelow = windowHeight - controlBottom - displayBuffer;\n }\n\n const directionWithMostSpace: 'up' | 'down' = maxSpaceAbove > maxSpaceBelow ? 'up' : 'down';\n\n // We do not want to update the max height once the popover is open unless the page orientation shifts (resize or mobile use cases)\n const shouldUpdateMaxHeight =\n !containerElement?.style.getPropertyValue('--comp-pop-max-height') || this.orientationChanged;\n // we do not want to constantly update the max-height after an orientation change, so we switch this back to false\n this.orientationChanged = false;\n const currentOrDetermineDirection = this.currentDirection || providedDirection || directionWithMostSpace;\n\n switch (currentOrDetermineDirection) {\n case 'up':\n if (shouldUpdateMaxHeight && containerElement) {\n const priorityMaxHeight = this.validatedMaxHeight || maxSpaceAbove;\n const maxHeight = Math.min(maxSpaceAbove, priorityMaxHeight);\n containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);\n }\n this.setDirectionAndShow('up');\n break;\n case 'down':\n if (shouldUpdateMaxHeight && containerElement) {\n const priorityMaxHeight = this.validatedMaxHeight || maxSpaceBelow;\n const maxHeight = Math.min(maxSpaceBelow, priorityMaxHeight);\n containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);\n }\n this.setDirectionAndShow('down');\n break;\n default:\n break;\n }\n }\n\n handleMinHeight = () => {\n if (this.minHeight) {\n handleDeprecationWarning(this, 'minHeight', 'prop');\n }\n };\n\n handlePopoverToggleEvent = (event: ToggleEvent) => {\n mirrorEmit(this, ['popoverStateChanged', 'tctPopoverStateChanged'], { open: event.newState === 'open' });\n };\n\n removeViewportListeners() {\n window.removeEventListener('resize', this.viewPortOrientationChanged);\n visualViewport?.removeEventListener('resize', this.viewPortChanged);\n window.removeEventListener('scroll', this.viewPortChanged, { capture: true });\n screen?.orientation?.removeEventListener('orientationchange', this.viewPortOrientationChanged);\n window.removeEventListener('orientationchange', this.viewPortOrientationChanged);\n }\n\n setAbsoluteCSSProperties = async () => {\n const { controlElement, containerElement, currentDirection, align } = this;\n if (!containerElement) return;\n\n if (align === 'right') {\n containerElement.style.setProperty('--comp-pop-right', '0');\n containerElement.style.setProperty('--comp-pop-left', 'unset');\n } else {\n containerElement.style.setProperty('--comp-pop-left', '0');\n containerElement.style.setProperty('--comp-pop-right', 'unset');\n }\n\n if (this.block) {\n containerElement.style.setProperty('--comp-pop-width', '100%');\n }\n\n if (currentDirection === 'up') {\n const controlStyle = getComputedStyle(controlElement);\n const controlSize =\n parseInt(controlStyle.height || '0') +\n parseInt(controlStyle.borderTopWidth || '0') +\n parseInt(controlStyle.borderBottomWidth || '0');\n\n containerElement.style.setProperty('--comp-pop-bottom', `${controlSize}px`);\n }\n\n // Wait for one paint to prevent layout thrashing\n await waitForNextPaint();\n if (this.containerElement) containerElement.style.setProperty('--comp-pop-opacity', '1');\n };\n\n setDirectionAndShow(direction: 'up' | 'down') {\n // Due to some runtime inconsistency across devices/browsers we need to add one more check here because the\n // popover can be closed between the time the popover is opened and the time the direction is determined\n const isOpen = this.open;\n if (!isOpen || !this.containerElement) return;\n\n this.currentDirection = direction;\n if (this.mode === 'legacy' || !this.supportsPopoverAPI) {\n this.show = true;\n this.setAbsoluteCSSProperties();\n } else {\n this.setPopoverAPICSSProperties();\n this.containerElement?.showPopover();\n }\n }\n\n setPopoverAPICSSProperties = async () => {\n const { controlElement, containerElement, currentDirection, isModule, align } = this;\n if (!containerElement) return;\n const {\n top: controlTop,\n bottom: controlBottom,\n left: controlLeft,\n right: controlRight,\n } = controlElement?.getBoundingClientRect?.() ?? {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n\n const popoverLeft: number = controlLeft;\n const popoverRight: number = window?.visualViewport?.width - controlRight;\n\n if (align === 'right') {\n containerElement.style.setProperty('--comp-pop-right', `${popoverRight - window.scrollX}px`);\n containerElement.style.setProperty('--comp-pop-left', 'unset');\n } else {\n containerElement.style.setProperty('--comp-pop-left', `${popoverLeft + window.scrollX}px`);\n containerElement.style.setProperty('--comp-pop-right', 'unset');\n }\n\n if (this.block) containerElement.style.setProperty('--comp-pop-width', `${controlElement?.offsetWidth || 0}px`);\n\n const isScrollableIframe = isModule && isInScrollableContainer(this.hostElement);\n\n if (currentDirection === 'up') {\n if (isModule && !isScrollableIframe) {\n containerElement.style.setProperty('--comp-pop-bottom', `${window.innerHeight - controlTop}px`);\n } else {\n containerElement.style.setProperty(\n '--comp-pop-bottom',\n `${window.innerHeight - controlTop - window.scrollY}px`\n );\n }\n }\n\n if (currentDirection === 'down') {\n if (isModule && !isScrollableIframe) {\n containerElement.style.setProperty('--comp-pop-top', `${controlBottom}px`);\n } else {\n containerElement.style.setProperty('--comp-pop-top', `${controlBottom + window.scrollY}px`);\n }\n }\n\n // Wait for one paint to prevent layout thrashing\n await waitForNextPaint();\n if (this.containerElement) containerElement.style.setProperty('--comp-pop-opacity', '1');\n };\n\n viewPortChanged = () => {\n if (!this.open) return;\n this.determinePopDirection();\n };\n\n viewPortOrientationChanged = () => {\n this.orientationChanged = true;\n this.viewPortChanged();\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const containerClasses = ['container', this.currentDirection, this.align];\n if (isMobile()) containerClasses.push('mobile');\n if (this.show) containerClasses.push('show');\n if (this.block) containerClasses.push('block');\n if (this.mode === 'legacy') containerClasses.push('legacy');\n if (this.animated && this.animationState === 'opening') containerClasses.push('animating-open');\n if (this.animated && this.animationState === 'closing') containerClasses.push('animating-close');\n\n return (\n <div\n ref={el => (this.containerElement = el)}\n class={containerClasses.join(' ')}\n test-id=\"outerContainer\"\n tabIndex={-1}\n popover=\"manual\"\n >\n <div\n ref={el => (this.contentElement = el)}\n class=\"content\"\n >\n <slot />\n </div>\n </div>\n );\n }\n\n // #endregion\n}\n"],"version":3}
|
|
@@ -3,7 +3,7 @@ import { c as createGuid, o as overrideFocus, i as isEventFromElement, r as rend
|
|
|
3
3
|
import { m as mirrorEmit } from './mirror-emit.js';
|
|
4
4
|
import { d as defineCustomElement$2 } from './q2-icon2.js';
|
|
5
5
|
|
|
6
|
-
const q2RadioGroupCss = "*{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{--comp-default-radio-group-margin:var(--tct-radio-group-margin-top, var(--t-radio-group-margin-top, var(--app-scale-5x, 25px))) 0 var(--tct-radio-group-margin-bottom, var(--t-radio-group-margin-bottom, var(--app-scale-5x, 25px)));display:block;margin:var(--tct-radio-group-margin, var(--comp-default-radio-group-margin))}fieldset{padding:var(--tct-radio-group-fieldset-padding, 0);margin:0;border:0;position:relative}.label-row{display:grid;grid-template-columns:1fr 24px;grid-template-areas:\"label icon\";column-gap:var(--tct-radio-group-label-column-gap, var(--app-scale-2x, 10px));color:var(--tct-radio-group-label-font-color, inherit);font-size:var(--tct-radio-group-label-font-size, inherit);font-weight:var(--tct-radio-group-label-font-weight, 600);text-transform:var(--tct-radio-group-label-text-transform, none);letter-spacing:var(--tct-radio-group-label-letter-spacing, inherit)}.label-row q2-icon{grid-area:icon;margin-top:-2px;margin-bottom:-2px}.group-legend{font-weight:600}legend.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;border:0}.optional-tag{margin-left:var(--tct-radio-group-label-optional-margin-left, var(--app-scale-1x, 5px));color:var(--tct-radio-group-label-optional-color, var(--t-radio-group-label-optional-color, var(--tct-a11y-color, var(--t-a11y-color, var(--tct-a11y-gray-color, var(--t-a11y-gray-color, var(--tct-gray-7, var(--t-gray-7, var(--tct-gray-d1, var(--t-gray-d1, var(--app-gray-d1, rgba(77, 77, 77, 0.77))))))))))));font-size:var(--tct-radio-group-label-optional-font-size, var(--t-radio-group-label-optional-font-size, 12px));font-weight:var(--tct-radio-group-label-optional-font-weight, var(--t-radio-group-label-optional-font-weight, 400))}.tile-container,.tile-container .options-container{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;flex-grow:1}.options-container{--comp-default-margin:var(--app-scale-1x, 5px) 0;--comp-options-margin:var(--tct-radio-group-options-margin, var(--t-radio-group-options-margin, var(--comp-default-margin, 5px 0)));margin:var(--comp-options-margin);padding:var(--tct-radio-group-options-padding, var(--t-radio-group-options-padding, var(--app-scale-0x, 0px)));border-width:1px;border-color:transparent;border-style:solid;border-radius:var(--tct-radio-group-border-radius, var(--app-border-radius-1, 4px))}:host([has-error]) .options-container{border-color:var(--tct-radio-group-error-border-color, var(--const-stoplight-alert, #d20a0a))}:host([has-error=false]) .options-container{border-color:transparent}.tile-container.left{justify-content:start}.tile-container.right{justify-content:end}.tile-container .options-container{gap:var(--tct-radio-group-tile-gap, var(--t-radio-group-tile-gap, var(--app-scale-2x, 10px)));justify-content:inherit}";
|
|
6
|
+
const q2RadioGroupCss = "*{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{--comp-default-radio-group-margin:var(--tct-radio-group-margin-top, var(--t-radio-group-margin-top, var(--app-scale-5x, 25px))) 0 var(--tct-radio-group-margin-bottom, var(--t-radio-group-margin-bottom, var(--app-scale-5x, 25px)));display:block;margin:var(--tct-radio-group-margin, var(--comp-default-radio-group-margin))}fieldset{padding:var(--tct-radio-group-fieldset-padding, 0);margin:0;border:0;position:relative}.label-row{display:grid;grid-template-columns:1fr 24px;grid-template-areas:\"label icon\";column-gap:var(--tct-radio-group-label-column-gap, var(--app-scale-2x, 10px));color:var(--tct-radio-group-label-font-color, inherit);font-size:var(--tct-radio-group-label-font-size, inherit);font-weight:var(--tct-radio-group-label-font-weight, 600);text-transform:var(--tct-radio-group-label-text-transform, none);letter-spacing:var(--tct-radio-group-label-letter-spacing, inherit)}.label-row q2-icon{grid-area:icon;margin-top:-2px;margin-bottom:-2px}.group-legend{font-weight:600}legend.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;border:0}.optional-tag{margin-left:var(--tct-radio-group-label-optional-margin-left, var(--app-scale-1x, 5px));color:var(--tct-radio-group-label-optional-color, var(--t-radio-group-label-optional-color, var(--tct-a11y-color, var(--t-a11y-color, var(--tct-a11y-gray-color, var(--t-a11y-gray-color, var(--tct-gray-7, var(--t-gray-7, var(--tct-gray-d1, var(--t-gray-d1, var(--app-gray-d1, rgba(77, 77, 77, 0.77))))))))))));font-size:var(--tct-radio-group-label-optional-font-size, var(--t-radio-group-label-optional-font-size, 12px));font-weight:var(--tct-radio-group-label-optional-font-weight, var(--t-radio-group-label-optional-font-weight, 400))}.tile-container,.tile-container .options-container{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;flex-grow:1}.options-container{--comp-default-margin:var(--app-scale-1x, 5px) 0;--comp-options-margin:var(--tct-radio-group-options-margin, var(--t-radio-group-options-margin, var(--comp-default-margin, 5px 0)));margin:var(--comp-options-margin);padding:var(--tct-radio-group-options-padding, var(--t-radio-group-options-padding, var(--app-scale-0x, 0px)));border-width:var(--tct-radio-group-border-width, 1px);border-color:transparent;border-style:solid;border-radius:var(--tct-radio-group-border-radius, var(--app-border-radius-1, 4px))}:host([has-error]) .options-container{border-color:var(--tct-radio-group-error-border-color, var(--const-stoplight-alert, #d20a0a))}:host([has-error=false]) .options-container{border-color:transparent}.tile-container.left{justify-content:start}.tile-container.right{justify-content:end}.tile-container .options-container{gap:var(--tct-radio-group-tile-gap, var(--t-radio-group-tile-gap, var(--app-scale-2x, 10px)));justify-content:inherit}";
|
|
7
7
|
|
|
8
8
|
const Q2RadioGroup$1 = /*@__PURE__*/ proxyCustomElement(class Q2RadioGroup extends HTMLElement {
|
|
9
9
|
constructor() {
|
|
@@ -181,7 +181,7 @@ const Q2RadioGroup$1 = /*@__PURE__*/ proxyCustomElement(class Q2RadioGroup exten
|
|
|
181
181
|
const showLabel = this.label || this.optional || this.readonly;
|
|
182
182
|
const { hasError } = this;
|
|
183
183
|
const showLabelRow = (showLabel && !this.hideLabel) || hasError;
|
|
184
|
-
return (h(Fragment, { key: '
|
|
184
|
+
return (h(Fragment, { key: '3fa5b7ba14cd74a3544ad38d40c74127126f0fc6' }, showLabelRow && (h("div", { key: '254b8a8ec9f21fccf2227966f56e366682957da8', class: "label-row" }, showLabel && !this.hideLabel && h("div", { key: 'f1176458f14bfc50adaab4a0d5342a7fcf58c6a4', class: "group-legend" }, renderLabel(this)), hasError && (h("q2-icon", { key: '7b829af0555cd13090459c5dc83ba22ce4cbe92c', type: "error", "test-id": "iconError" })))), h("fieldset", { key: '1eb9e6e18c1a5442d4582f23649b06d3864412b7', onChange: this.onInnerRadioChange, "aria-invalid": hasError ? `${hasError}` : undefined }, showLabel && h("legend", { key: '2ee4c9b44c86077fbda3f9eef02da24546cb6ec6', class: "sr-only" }, renderLabel(this)), this.inputDom())));
|
|
185
185
|
}
|
|
186
186
|
get hostElement() { return this; }
|
|
187
187
|
static get watchers() { return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"q2-radio-group.js","mappings":"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","names":["Q2RadioGroup","__stencil_proxyCustomElement"],"sources":["src/components/q2-radio-group/q2-radio-group.scss?tag=q2-radio-group&encapsulation=shadow","src/components/q2-radio-group/q2-radio-group.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n --comp-default-radio-group-margin: #{var-list(var-prefixer(radio-group-margin-top), --app-scale-5x, 25px) 0\n var-list(var-prefixer(radio-group-margin-bottom), --app-scale-5x, 25px)};\n display: block;\n margin: var-list(--tct-radio-group-margin, --comp-default-radio-group-margin);\n}\n\nfieldset {\n padding: var(--tct-radio-group-fieldset-padding, 0);\n margin: 0;\n border: 0;\n position: relative;\n}\n\n.label-row {\n display: grid;\n grid-template-columns: 1fr 24px;\n grid-template-areas: 'label icon';\n column-gap: var(--tct-radio-group-label-column-gap, var(--app-scale-2x, 10px));\n\n color: var-list(--tct-radio-group-label-font-color, inherit);\n font-size: var-list(--tct-radio-group-label-font-size, inherit);\n font-weight: var-list(--tct-radio-group-label-font-weight, 600);\n text-transform: var-list(--tct-radio-group-label-text-transform, none);\n letter-spacing: var-list(--tct-radio-group-label-letter-spacing, inherit);\n\n q2-icon {\n grid-area: icon;\n margin-top: -2px;\n margin-bottom: -2px;\n }\n}\n\n.group-legend {\n font-weight: 600;\n}\n\nlegend.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n border: 0;\n}\n\n.optional-tag {\n margin-left: var-list(--tct-radio-group-label-optional-margin-left, --app-scale-1x, 5px);\n color: var-list(\n var-prefixer(radio-group-label-optional-color),\n var-prefixer(a11y-color),\n var-prefixer(a11y-gray-color),\n var-prefixer(gray-7),\n var-prefixer(gray-d1),\n --app-gray-d1,\n rgba(77, 77, 77, 0.77)\n );\n font-size: var-list(var-prefixer(radio-group-label-optional-font-size), 12px);\n font-weight: var-list(var-prefixer(radio-group-label-optional-font-weight), 400);\n}\n\n.tile-container {\n &,\n .options-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-grow: 1;\n }\n}\n\n.options-container {\n --comp-default-margin: #{var-list(--app-scale-1x, 5px)} 0;\n --comp-options-margin: #{var-list(var-prefixer(radio-group-options-margin), --comp-default-margin, unquote('5px 0'))};\n margin: var(--comp-options-margin);\n padding: var-list(var-prefixer(radio-group-options-padding), --app-scale-0x, 0px);\n border-width: 1px;\n border-color: transparent;\n border-style: solid;\n border-radius: var-list(--tct-radio-group-border-radius, --app-border-radius-1, 4px);\n\n :host([has-error]) & {\n border-color: var-list(--tct-radio-group-error-border-color, --const-stoplight-alert, #d20a0a);\n }\n :host([has-error='false']) & {\n border-color: transparent;\n }\n}\n\n.tile-container {\n &.left {\n justify-content: start;\n }\n &.right {\n justify-content: end;\n }\n\n .options-container {\n gap: var-list(var-prefixer(radio-group-tile-gap), --app-scale-2x, 10px);\n justify-content: inherit;\n }\n}\n","import {\n Component,\n Prop,\n Element,\n h,\n Listen,\n EventEmitter,\n Event,\n ComponentInterface,\n Watch,\n Fragment,\n Method,\n} from '@stencil/core';\nimport { createGuid, isEventFromElement, overrideFocus, renderLabel } from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\n\n/**\n * @name Radio Group\n * @category Forms\n * @summary Use for selecting exactly one option from a small set of choices.\n * @slot label - An optional slot to display a custom label.\n */\n@Component({ tag: 'q2-radio-group', shadow: true, styleUrl: 'q2-radio-group.scss' })\nexport class Q2RadioGroup implements ComponentInterface {\n // #region Own Properties\n\n _id: string = `radio-group-${createGuid()}`;\n mutationObserver: MutationObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /** Determines if all radios in the group are put into a `disabled` state. */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /** Determines if the component should display in an errant state. */\n @Prop({ reflect: true })\n hasError: boolean = false;\n\n /**\n * Hide's the group's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Text for the fieldset legend describing the radio group.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string;\n\n /** Identifier which ties all radios together for accessibility and DOM selection. */\n @Prop({ reflect: true })\n name: string;\n\n /** Appends \"(optional)\" to the group label, and sets `aria-required` on the nested input tag to `false`. */\n @Prop({ reflect: true })\n optional: boolean;\n\n /** Determines if all radios in the group can be focused, but not interacted with. */\n @Prop({ reflect: true })\n readonly: boolean;\n\n /** Provides alignment direction for tile-style radio group. */\n @Prop({ reflect: true })\n tileAlignment: 'left' | 'center' | 'right' = 'center';\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n tilelayout: boolean;\n\n /** Show the radio group as a horizontal set of tiles. */\n @Prop({ reflect: true, mutable: true })\n tileLayout: boolean;\n\n /** The `value` of the currently selected `q2-radio` within the `q2-radio-group`. */\n @Prop({ mutable: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the value of the radio group changes.\n * @legacyEvent\n * @deprecated Use 'tctChange' instead\n */\n @Event()\n change: EventEmitter<{ value: string }>;\n\n /**\n * Emitted when the value of the radio group changes.\n * @legacyEvent\n */\n @Event()\n tctChange: EventEmitter<{ value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.checkedRadioExists();\n this.onMutationObserved();\n this.handleDeprecatedTilelayout(this.tilelayout);\n }\n\n componentDidLoad() {\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true });\n this.mutationObserver = observer;\n overrideFocus(this.hostElement);\n this.checkedRadioExists();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n if (event.target === this.hostElement) {\n if (!this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n const radio = this.hostElement.querySelector('q2-radio[checked]') || this.hostElement.querySelector('q2-radio');\n radio?.dispatchEvent(new FocusEvent('focus'));\n }\n\n @Listen('keydown')\n keydownHandler(event: KeyboardEvent) {\n const currentValue = (event.target as HTMLElement).getAttribute('value') || this.value;\n let index = this.radioElements.findIndex(\n el => el === event.target || (el as HTMLElement).getAttribute('value') === currentValue\n );\n let sign = 0;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n sign = -1;\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n sign = 1;\n break;\n }\n\n if (index === -1 || sign === 0) {\n return;\n }\n index += sign;\n index = sign < 0 ? Math.max(0, index) : Math.min(this.radioElements.length - 1, index);\n event.preventDefault();\n if (!this.readonly) {\n this.value = this.radioElements[index].value;\n }\n this.radioElements[index].dispatchEvent(new FocusEvent('focus'));\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the `<q2-radio>` option with the provided value.\n *\n * @testOnly\n */\n @Method()\n setValue(value: string) {\n this.radioElements.forEach(radio => {\n if (value !== radio.value) return;\n radio.click();\n });\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('disabled')\n disabledUpdated() {\n this.radioElements.forEach(radio => {\n radio.groupDisabled = this.disabled;\n });\n }\n\n @Watch('name')\n nameUpdated() {\n this.radioElements.forEach(radio => {\n radio.name = this.name || this._id;\n });\n }\n\n @Watch('readonly')\n readonlyUpdated() {\n const readonly = this.readonly;\n this.radioElements.forEach(radio => (radio.groupReadonly = readonly));\n }\n\n @Watch('tilelayout')\n handleDeprecatedTilelayout(tilelayout: boolean) {\n if (typeof tilelayout !== 'boolean') return;\n this.tileLayout = tilelayout;\n this.tilelayout = undefined;\n }\n\n @Watch('tileLayout')\n tileLayoutUpdated(tileLayout: boolean) {\n this.radioElements.forEach(radio => {\n radio.groupTileLayout = tileLayout;\n });\n }\n\n @Watch('value')\n valueUpdated(newVal: string) {\n this.radioElements.forEach(radio => {\n radio.checked = newVal === radio.value;\n // Removes checked attribute from trailing radios, if multiple individual radio's are intially checked (checked={true}) at componentDidLoad\n if (!radio.checked) {\n radio.removeAttribute('checked');\n radio.tabIndex = -1;\n } else if (radio.checked) {\n radio.tabIndex = 0;\n }\n });\n }\n\n // #endregion\n // #region Local Methods\n\n get inputId() {\n return this._id;\n }\n\n get radioElements() {\n return Array.from(this.hostElement.querySelectorAll('q2-radio')) as HTMLQ2RadioElement[];\n }\n\n checkedRadioExists = () => {\n // Returns first checked individual q2-radio or undefined if none are set to checked={true}\n const firstCheckedRadio = this.radioElements.find(radio => radio.checked === true) || undefined;\n\n // Changes radio-group[\"value\"] if inital value is not set and if a any individual q2-radio is checked\n if (!this.value && !!firstCheckedRadio) {\n this.value = firstCheckedRadio.value;\n } else if (!this.value && !firstCheckedRadio) {\n // if no radios are meant to be checked, then assign first radio tabIndex of 0\n if (this.radioElements.length) this.radioElements[0].tabIndex = 0;\n }\n };\n\n inputDom() {\n if (this.tileLayout) {\n const { tileAlignment } = this;\n const alignment = ['left', 'center', 'right'].includes(tileAlignment) ? tileAlignment : 'center';\n return (\n <div class={`tile-container ${alignment}`}>\n <div class=\"options-container\">\n <slot />\n </div>\n </div>\n );\n } else {\n return (\n <div class=\"options-container\">\n <slot />\n </div>\n );\n }\n }\n\n onInnerRadioChange = (event: CustomEvent) => {\n event.stopImmediatePropagation();\n if (this.readonly) return;\n\n mirrorEmit(this, ['change', 'tctChange'], { value: event.detail.value });\n };\n\n onMutationObserved = () => {\n this.valueUpdated(this.value);\n this.nameUpdated();\n this.disabledUpdated();\n this.readonlyUpdated();\n this.tileLayoutUpdated(this.tileLayout);\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const showLabel = this.label || this.optional || this.readonly;\n const { hasError } = this;\n const showLabelRow = (showLabel && !this.hideLabel) || hasError;\n return (\n <Fragment>\n {showLabelRow && (\n <div class=\"label-row\">\n {showLabel && !this.hideLabel && <div class=\"group-legend\">{renderLabel(this)}</div>}\n {hasError && (\n <q2-icon\n type=\"error\"\n test-id=\"iconError\"\n ></q2-icon>\n )}\n </div>\n )}\n <fieldset\n onChange={this.onInnerRadioChange}\n aria-invalid={hasError ? `${hasError}` : undefined}\n >\n {showLabel && <legend class=\"sr-only\">{renderLabel(this)}</legend>}\n {this.inputDom()}\n </fieldset>\n </Fragment>\n );\n }\n\n // #endregion\n}\n"],"version":3}
|
|
1
|
+
{"file":"q2-radio-group.js","mappings":"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","names":["Q2RadioGroup","__stencil_proxyCustomElement"],"sources":["src/components/q2-radio-group/q2-radio-group.scss?tag=q2-radio-group&encapsulation=shadow","src/components/q2-radio-group/q2-radio-group.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n --comp-default-radio-group-margin: #{var-list(var-prefixer(radio-group-margin-top), --app-scale-5x, 25px) 0\n var-list(var-prefixer(radio-group-margin-bottom), --app-scale-5x, 25px)};\n display: block;\n margin: var-list(--tct-radio-group-margin, --comp-default-radio-group-margin);\n}\n\nfieldset {\n padding: var(--tct-radio-group-fieldset-padding, 0);\n margin: 0;\n border: 0;\n position: relative;\n}\n\n.label-row {\n display: grid;\n grid-template-columns: 1fr 24px;\n grid-template-areas: 'label icon';\n column-gap: var(--tct-radio-group-label-column-gap, var(--app-scale-2x, 10px));\n\n color: var-list(--tct-radio-group-label-font-color, inherit);\n font-size: var-list(--tct-radio-group-label-font-size, inherit);\n font-weight: var-list(--tct-radio-group-label-font-weight, 600);\n text-transform: var-list(--tct-radio-group-label-text-transform, none);\n letter-spacing: var-list(--tct-radio-group-label-letter-spacing, inherit);\n\n q2-icon {\n grid-area: icon;\n margin-top: -2px;\n margin-bottom: -2px;\n }\n}\n\n.group-legend {\n font-weight: 600;\n}\n\nlegend.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n border: 0;\n}\n\n.optional-tag {\n margin-left: var-list(--tct-radio-group-label-optional-margin-left, --app-scale-1x, 5px);\n color: var-list(\n var-prefixer(radio-group-label-optional-color),\n var-prefixer(a11y-color),\n var-prefixer(a11y-gray-color),\n var-prefixer(gray-7),\n var-prefixer(gray-d1),\n --app-gray-d1,\n rgba(77, 77, 77, 0.77)\n );\n font-size: var-list(var-prefixer(radio-group-label-optional-font-size), 12px);\n font-weight: var-list(var-prefixer(radio-group-label-optional-font-weight), 400);\n}\n\n.tile-container {\n &,\n .options-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-grow: 1;\n }\n}\n\n.options-container {\n --comp-default-margin: #{var-list(--app-scale-1x, 5px)} 0;\n --comp-options-margin: #{var-list(var-prefixer(radio-group-options-margin), --comp-default-margin, unquote('5px 0'))};\n margin: var(--comp-options-margin);\n padding: var-list(var-prefixer(radio-group-options-padding), --app-scale-0x, 0px);\n border-width: var-list(--tct-radio-group-border-width, 1px);\n border-color: transparent;\n border-style: solid;\n border-radius: var-list(--tct-radio-group-border-radius, --app-border-radius-1, 4px);\n\n :host([has-error]) & {\n border-color: var-list(--tct-radio-group-error-border-color, --const-stoplight-alert, #d20a0a);\n }\n :host([has-error='false']) & {\n border-color: transparent;\n }\n}\n\n.tile-container {\n &.left {\n justify-content: start;\n }\n &.right {\n justify-content: end;\n }\n\n .options-container {\n gap: var-list(var-prefixer(radio-group-tile-gap), --app-scale-2x, 10px);\n justify-content: inherit;\n }\n}\n","import {\n Component,\n Prop,\n Element,\n h,\n Listen,\n EventEmitter,\n Event,\n ComponentInterface,\n Watch,\n Fragment,\n Method,\n} from '@stencil/core';\nimport { createGuid, isEventFromElement, overrideFocus, renderLabel } from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\n\n/**\n * @name Radio Group\n * @category Forms\n * @summary Use for selecting exactly one option from a small set of choices.\n * @slot label - An optional slot to display a custom label.\n */\n@Component({ tag: 'q2-radio-group', shadow: true, styleUrl: 'q2-radio-group.scss' })\nexport class Q2RadioGroup implements ComponentInterface {\n // #region Own Properties\n\n _id: string = `radio-group-${createGuid()}`;\n mutationObserver: MutationObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /** Determines if all radios in the group are put into a `disabled` state. */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /** Determines if the component should display in an errant state. */\n @Prop({ reflect: true })\n hasError: boolean = false;\n\n /**\n * Hide's the group's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Text for the fieldset legend describing the radio group.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string;\n\n /** Identifier which ties all radios together for accessibility and DOM selection. */\n @Prop({ reflect: true })\n name: string;\n\n /** Appends \"(optional)\" to the group label, and sets `aria-required` on the nested input tag to `false`. */\n @Prop({ reflect: true })\n optional: boolean;\n\n /** Determines if all radios in the group can be focused, but not interacted with. */\n @Prop({ reflect: true })\n readonly: boolean;\n\n /** Provides alignment direction for tile-style radio group. */\n @Prop({ reflect: true })\n tileAlignment: 'left' | 'center' | 'right' = 'center';\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n tilelayout: boolean;\n\n /** Show the radio group as a horizontal set of tiles. */\n @Prop({ reflect: true, mutable: true })\n tileLayout: boolean;\n\n /** The `value` of the currently selected `q2-radio` within the `q2-radio-group`. */\n @Prop({ mutable: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the value of the radio group changes.\n * @legacyEvent\n * @deprecated Use 'tctChange' instead\n */\n @Event()\n change: EventEmitter<{ value: string }>;\n\n /**\n * Emitted when the value of the radio group changes.\n * @legacyEvent\n */\n @Event()\n tctChange: EventEmitter<{ value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.checkedRadioExists();\n this.onMutationObserved();\n this.handleDeprecatedTilelayout(this.tilelayout);\n }\n\n componentDidLoad() {\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true });\n this.mutationObserver = observer;\n overrideFocus(this.hostElement);\n this.checkedRadioExists();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n if (event.target === this.hostElement) {\n if (!this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n const radio = this.hostElement.querySelector('q2-radio[checked]') || this.hostElement.querySelector('q2-radio');\n radio?.dispatchEvent(new FocusEvent('focus'));\n }\n\n @Listen('keydown')\n keydownHandler(event: KeyboardEvent) {\n const currentValue = (event.target as HTMLElement).getAttribute('value') || this.value;\n let index = this.radioElements.findIndex(\n el => el === event.target || (el as HTMLElement).getAttribute('value') === currentValue\n );\n let sign = 0;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n sign = -1;\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n sign = 1;\n break;\n }\n\n if (index === -1 || sign === 0) {\n return;\n }\n index += sign;\n index = sign < 0 ? Math.max(0, index) : Math.min(this.radioElements.length - 1, index);\n event.preventDefault();\n if (!this.readonly) {\n this.value = this.radioElements[index].value;\n }\n this.radioElements[index].dispatchEvent(new FocusEvent('focus'));\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the `<q2-radio>` option with the provided value.\n *\n * @testOnly\n */\n @Method()\n setValue(value: string) {\n this.radioElements.forEach(radio => {\n if (value !== radio.value) return;\n radio.click();\n });\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('disabled')\n disabledUpdated() {\n this.radioElements.forEach(radio => {\n radio.groupDisabled = this.disabled;\n });\n }\n\n @Watch('name')\n nameUpdated() {\n this.radioElements.forEach(radio => {\n radio.name = this.name || this._id;\n });\n }\n\n @Watch('readonly')\n readonlyUpdated() {\n const readonly = this.readonly;\n this.radioElements.forEach(radio => (radio.groupReadonly = readonly));\n }\n\n @Watch('tilelayout')\n handleDeprecatedTilelayout(tilelayout: boolean) {\n if (typeof tilelayout !== 'boolean') return;\n this.tileLayout = tilelayout;\n this.tilelayout = undefined;\n }\n\n @Watch('tileLayout')\n tileLayoutUpdated(tileLayout: boolean) {\n this.radioElements.forEach(radio => {\n radio.groupTileLayout = tileLayout;\n });\n }\n\n @Watch('value')\n valueUpdated(newVal: string) {\n this.radioElements.forEach(radio => {\n radio.checked = newVal === radio.value;\n // Removes checked attribute from trailing radios, if multiple individual radio's are intially checked (checked={true}) at componentDidLoad\n if (!radio.checked) {\n radio.removeAttribute('checked');\n radio.tabIndex = -1;\n } else if (radio.checked) {\n radio.tabIndex = 0;\n }\n });\n }\n\n // #endregion\n // #region Local Methods\n\n get inputId() {\n return this._id;\n }\n\n get radioElements() {\n return Array.from(this.hostElement.querySelectorAll('q2-radio')) as HTMLQ2RadioElement[];\n }\n\n checkedRadioExists = () => {\n // Returns first checked individual q2-radio or undefined if none are set to checked={true}\n const firstCheckedRadio = this.radioElements.find(radio => radio.checked === true) || undefined;\n\n // Changes radio-group[\"value\"] if inital value is not set and if a any individual q2-radio is checked\n if (!this.value && !!firstCheckedRadio) {\n this.value = firstCheckedRadio.value;\n } else if (!this.value && !firstCheckedRadio) {\n // if no radios are meant to be checked, then assign first radio tabIndex of 0\n if (this.radioElements.length) this.radioElements[0].tabIndex = 0;\n }\n };\n\n inputDom() {\n if (this.tileLayout) {\n const { tileAlignment } = this;\n const alignment = ['left', 'center', 'right'].includes(tileAlignment) ? tileAlignment : 'center';\n return (\n <div class={`tile-container ${alignment}`}>\n <div class=\"options-container\">\n <slot />\n </div>\n </div>\n );\n } else {\n return (\n <div class=\"options-container\">\n <slot />\n </div>\n );\n }\n }\n\n onInnerRadioChange = (event: CustomEvent) => {\n event.stopImmediatePropagation();\n if (this.readonly) return;\n\n mirrorEmit(this, ['change', 'tctChange'], { value: event.detail.value });\n };\n\n onMutationObserved = () => {\n this.valueUpdated(this.value);\n this.nameUpdated();\n this.disabledUpdated();\n this.readonlyUpdated();\n this.tileLayoutUpdated(this.tileLayout);\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const showLabel = this.label || this.optional || this.readonly;\n const { hasError } = this;\n const showLabelRow = (showLabel && !this.hideLabel) || hasError;\n return (\n <Fragment>\n {showLabelRow && (\n <div class=\"label-row\">\n {showLabel && !this.hideLabel && <div class=\"group-legend\">{renderLabel(this)}</div>}\n {hasError && (\n <q2-icon\n type=\"error\"\n test-id=\"iconError\"\n ></q2-icon>\n )}\n </div>\n )}\n <fieldset\n onChange={this.onInnerRadioChange}\n aria-invalid={hasError ? `${hasError}` : undefined}\n >\n {showLabel && <legend class=\"sr-only\">{renderLabel(this)}</legend>}\n {this.inputDom()}\n </fieldset>\n </Fragment>\n );\n }\n\n // #endregion\n}\n"],"version":3}
|