q2-tecton-elements 1.67.2 → 1.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle-report.json +22598 -10670
- package/dist/cjs/click-elsewhere.q2-option-list.q2-popover.entry.cjs.js.map +1 -1
- package/dist/cjs/click-elsewhere_3.cjs.entry.js +46 -32
- package/dist/cjs/click-elsewhere_3.cjs.entry.js.map +1 -1
- package/dist/cjs/{component-DRAntnCA.js → component-iASoq6gx.js} +9 -3
- package/dist/cjs/component-iASoq6gx.js.map +1 -0
- package/dist/cjs/{index-YvKoRT-t.js → index-DmGkqdX2.js} +3 -3
- package/dist/cjs/index-DmGkqdX2.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-group.q2-resize-observer.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-action-group_2.cjs.entry.js +2 -2
- package/dist/cjs/q2-action-group_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +109 -4
- package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-action-sheet.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-avatar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-badge.cjs.entry.js +1 -1
- package/dist/cjs/q2-badge.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-badge.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-btn.q2-loading.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +6 -3
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-card-image.cjs.entry.js +2 -2
- package/dist/cjs/q2-card-image.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card-image.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
- package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +162 -29
- package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +3 -2
- package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-donut.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
- package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-checkbox.q2-tag.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-checkbox_2.cjs.entry.js +3 -3
- package/dist/cjs/q2-checkbox_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-context.cjs.entry.js +2 -2
- package/dist/cjs/q2-context.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-context.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-currency.cjs.entry.js +2 -3
- package/dist/cjs/q2-currency.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-currency.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
- package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-data-table.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +2 -2
- package/dist/cjs/q2-detail.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-detail.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
- package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown-item.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +3 -5
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-example.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-file-picker.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-form.cjs.entry.js +2 -2
- package/dist/cjs/q2-form.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-form.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-formatted-text.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-grid-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-grid.cjs.entry.js +32 -8
- package/dist/cjs/q2-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-grid.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +8 -5
- package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-input.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +2 -2
- package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-item.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-legend.cjs.entry.js +2 -3
- package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-legend.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-link.q2-list.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-link_2.cjs.entry.js +2 -2
- package/dist/cjs/q2-link_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-loc.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +3 -3
- package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-message.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-meter.cjs.entry.js +2 -2
- package/dist/cjs/q2-meter.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-meter.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-modal.cjs.entry.js +3 -3
- package/dist/cjs/q2-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +3 -3
- package/dist/cjs/q2-optgroup.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-optgroup.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-option.cjs.entry.js +3 -3
- package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-option.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-otp.cjs.entry.js +373 -0
- package/dist/cjs/q2-otp.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-otp.entry.cjs.js.map +1 -0
- package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
- package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pagination.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +24 -15
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pill.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio-group.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +3 -3
- package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
- package/dist/cjs/q2-section-container.cjs.entry.js +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +3 -3
- package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-section.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +1 -1
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-select.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +3 -3
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +3 -3
- package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-container.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js +2 -2
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-toast.cjs.entry.js +1 -1
- package/dist/cjs/q2-toast.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-toast.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +124 -5
- package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tooltip.entry.cjs.js.map +1 -1
- package/dist/cjs/{sanitize-html-string-CW6y5624.js → sanitize-html-string-D17Pr7-c.js} +21 -4
- package/dist/cjs/{sanitize-html-string-CW6y5624.js.map → sanitize-html-string-D17Pr7-c.js.map} +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/click-elsewhere/click-elsewhere.js +2 -0
- package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
- package/dist/collection/components/q2-action-group/q2-action-group.css +14 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +16 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +107 -2
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
- package/dist/collection/components/q2-avatar/q2-avatar.css +24 -0
- package/dist/collection/components/q2-avatar/test/q2-avatar-test.vr.js +61 -0
- package/dist/collection/components/q2-avatar/test/q2-avatar-test.vr.js.map +1 -0
- package/dist/collection/components/q2-badge/q2-badge.css +30 -0
- package/dist/collection/components/q2-badge/test/q2-badge-test.vr.js +34 -0
- package/dist/collection/components/q2-badge/test/q2-badge-test.vr.js.map +1 -0
- package/dist/collection/components/q2-btn/q2-btn.css +279 -0
- package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js +80 -0
- package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js.map +1 -0
- package/dist/collection/components/q2-calendar/q2-calendar.css +36 -0
- package/dist/collection/components/q2-calendar/q2-calendar.js +5 -2
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js +170 -0
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js.map +1 -0
- package/dist/collection/components/q2-card/q2-card.css +62 -0
- package/dist/collection/components/q2-card/test/q2-card-test.vr.js +72 -0
- package/dist/collection/components/q2-card/test/q2-card-test.vr.js.map +1 -0
- package/dist/collection/components/q2-card-image/q2-card-image.css +74 -13
- package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js +152 -0
- package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js.map +1 -0
- package/dist/collection/components/q2-carousel/q2-carousel.css +78 -13
- package/dist/collection/components/q2-carousel/q2-carousel.js +241 -27
- package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
- package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js +104 -0
- package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js.map +1 -0
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +26 -1
- package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.vr.js +126 -0
- package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.vr.js.map +1 -0
- package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.vr.js +105 -0
- package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.vr.js.map +1 -0
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +29 -0
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +21 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
- package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js +151 -0
- package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js.map +1 -0
- package/dist/collection/components/q2-checkbox/q2-checkbox.css +128 -0
- package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js +69 -0
- package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js.map +1 -0
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +21 -0
- package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js +61 -0
- package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js.map +1 -0
- package/dist/collection/components/q2-context/q2-context.css +16 -0
- package/dist/collection/components/q2-context/test/q2-context-test.vr.js +95 -0
- package/dist/collection/components/q2-context/test/q2-context-test.vr.js.map +1 -0
- package/dist/collection/components/q2-currency/q2-currency.css +31 -0
- package/dist/collection/components/q2-currency/q2-currency.js +3 -4
- package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
- package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js +79 -0
- package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js.map +1 -0
- package/dist/collection/components/q2-data-table/q2-data-table.css +51 -0
- package/dist/collection/components/q2-data-table/q2-data-table.js +1 -1
- package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js +79 -0
- package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js.map +1 -0
- package/dist/collection/components/q2-detail/q2-detail.css +42 -0
- package/dist/collection/components/q2-detail/q2-detail.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.css +8 -0
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +2 -4
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +11 -0
- package/dist/collection/components/q2-editable-field/q2-editable-field.css +5 -0
- package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.vr.js +89 -0
- package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.vr.js.map +1 -0
- package/dist/collection/components/q2-example/q2-example.js +1 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.css +64 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js +92 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js.map +1 -0
- package/dist/collection/components/q2-form/q2-form.css +34 -20
- package/dist/collection/components/q2-form/q2-form.js +1 -1
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.css +14 -0
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
- package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js +55 -0
- package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js.map +1 -0
- package/dist/collection/components/q2-grid/q2-grid.css +13 -0
- package/dist/collection/components/q2-grid/q2-grid.js +31 -7
- package/dist/collection/components/q2-grid/q2-grid.js.map +1 -1
- package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/q2-icon.css +15 -0
- package/dist/collection/components/q2-icon/test/q2-icon-test.vr.js +55 -0
- package/dist/collection/components/q2-icon/test/q2-icon-test.vr.js.map +1 -0
- package/dist/collection/components/q2-input/q2-input.css +104 -0
- package/dist/collection/components/q2-input/q2-input.js +6 -3
- package/dist/collection/components/q2-input/q2-input.js.map +1 -1
- package/dist/collection/components/q2-input/test/q2-input-test.vr.js +97 -0
- package/dist/collection/components/q2-input/test/q2-input-test.vr.js.map +1 -0
- package/dist/collection/components/q2-item/q2-item.css +28 -0
- package/dist/collection/components/q2-item/q2-item.js +1 -1
- package/dist/collection/components/q2-legend/q2-legend.css +16 -0
- package/dist/collection/components/q2-legend/q2-legend.js +21 -3
- package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
- package/dist/collection/components/q2-link/q2-link.css +20 -0
- package/dist/collection/components/q2-link/test/q2-link-test.vr.js +70 -0
- package/dist/collection/components/q2-link/test/q2-link-test.vr.js.map +1 -0
- package/dist/collection/components/q2-list/q2-list.css +14 -0
- package/dist/collection/components/q2-list/q2-list.js +1 -1
- package/dist/collection/components/q2-list/test/q2-list-test.vr.js +58 -0
- package/dist/collection/components/q2-list/test/q2-list-test.vr.js.map +1 -0
- package/dist/collection/components/q2-loading/q2-loading.css +9 -0
- package/dist/collection/components/q2-message/q2-message.css +29 -1
- package/dist/collection/components/q2-message/q2-message.js +1 -1
- package/dist/collection/components/q2-message/test/q2-message-test.vr.js +57 -0
- package/dist/collection/components/q2-message/test/q2-message-test.vr.js.map +1 -0
- package/dist/collection/components/q2-meter/q2-meter.css +40 -0
- package/dist/collection/components/q2-meter/q2-meter.js +1 -1
- package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js +78 -0
- package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js.map +1 -0
- package/dist/collection/components/q2-modal/q2-modal.css +21 -0
- package/dist/collection/components/q2-modal/q2-modal.js +1 -1
- package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js +107 -0
- package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js.map +1 -0
- package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.css +11 -0
- package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
- package/dist/collection/components/q2-option/q2-option.css +9 -0
- package/dist/collection/components/q2-option/q2-option.js +1 -1
- package/dist/collection/components/q2-option/q2-option.js.map +1 -1
- package/dist/collection/components/q2-option-list/q2-option-list.css +3 -0
- package/dist/collection/components/q2-option-list/q2-option-list.js +37 -28
- package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
- package/dist/collection/components/q2-otp/q2-otp.css +312 -0
- package/dist/collection/components/q2-otp/q2-otp.js +873 -0
- package/dist/collection/components/q2-otp/q2-otp.js.map +1 -0
- package/dist/collection/components/q2-pagination/q2-pagination.css +22 -0
- package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
- package/dist/collection/components/q2-pagination/test/q2-pagination-test.vr.js +145 -0
- package/dist/collection/components/q2-pagination/test/q2-pagination-test.vr.js.map +1 -0
- package/dist/collection/components/q2-pill/q2-pill.css +53 -0
- package/dist/collection/components/q2-pill/q2-pill.js +23 -14
- package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
- package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js +110 -0
- package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js.map +1 -0
- package/dist/collection/components/q2-popover/q2-popover.css +20 -0
- package/dist/collection/components/q2-popover/q2-popover.js +5 -2
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-radio/q2-radio.css +52 -1
- package/dist/collection/components/q2-radio/q2-radio.js +2 -2
- package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
- package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js +73 -0
- package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js.map +1 -0
- package/dist/collection/components/q2-radio-group/q2-radio-group.css +22 -0
- package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js +99 -0
- package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js.map +1 -0
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-section/q2-section.css +26 -0
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-section/test/q2-section-test.vr.js +68 -0
- package/dist/collection/components/q2-section/test/q2-section-test.vr.js.map +1 -0
- package/dist/collection/components/q2-select/q2-select.css +17 -0
- package/dist/collection/components/q2-select/test/q2-select-test.vr.js +107 -0
- package/dist/collection/components/q2-select/test/q2-select-test.vr.js.map +1 -0
- package/dist/collection/components/q2-stepper/q2-stepper.css +36 -0
- package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
- package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js +86 -0
- package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js.map +1 -0
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +31 -0
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js +97 -0
- package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js.map +1 -0
- package/dist/collection/components/q2-tab-container/q2-tab-container.css +38 -0
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js +78 -0
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js.map +1 -0
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tag/q2-tag.css +30 -1
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js +83 -0
- package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js.map +1 -0
- package/dist/collection/components/q2-textarea/q2-textarea.css +80 -0
- package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js +102 -0
- package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js.map +1 -0
- package/dist/collection/components/q2-toast/q2-toast.css +15 -0
- package/dist/collection/components/q2-tooltip/q2-tooltip.css +31 -0
- package/dist/collection/components/q2-tooltip/q2-tooltip.js +135 -4
- package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
- package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js +76 -0
- package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js.map +1 -0
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/collection/utils/component.js +7 -1
- package/dist/collection/utils/component.js.map +1 -1
- package/dist/collection/utils/index.js +1 -1
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/collection/utils/sanitize-html-string.js +19 -2
- package/dist/collection/utils/sanitize-html-string.js.map +1 -1
- package/dist/collection/utils/test/vr-helpers.js +98 -0
- package/dist/collection/utils/test/vr-helpers.js.map +1 -0
- package/dist/components/click-elsewhere2.js +2 -0
- package/dist/components/click-elsewhere2.js.map +1 -1
- package/dist/components/component.js +7 -1
- package/dist/components/component.js.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/index2.js +1 -1
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-action-group2.js.map +1 -1
- package/dist/components/q2-action-sheet.js +107 -2
- package/dist/components/q2-action-sheet.js.map +1 -1
- package/dist/components/q2-avatar2.js.map +1 -1
- package/dist/components/q2-badge2.js.map +1 -1
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-calendar.js +5 -2
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-card-image.js +1 -1
- package/dist/components/q2-card-image.js.map +1 -1
- package/dist/components/q2-card.js.map +1 -1
- package/dist/components/q2-carousel-pane.js +1 -135
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel-pane2.js +140 -0
- package/dist/components/q2-carousel-pane2.js.map +1 -0
- package/dist/components/q2-carousel.js +173 -29
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-donut.js +3 -1
- package/dist/components/q2-chart-donut.js.map +1 -1
- package/dist/components/q2-checkbox-group.js.map +1 -1
- package/dist/components/q2-checkbox2.js.map +1 -1
- package/dist/components/q2-context.js +1 -1
- package/dist/components/q2-context.js.map +1 -1
- package/dist/components/q2-currency.js +3 -4
- package/dist/components/q2-currency.js.map +1 -1
- package/dist/components/q2-data-table.js +1 -1
- package/dist/components/q2-data-table.js.map +1 -1
- package/dist/components/q2-detail.js +1 -1
- package/dist/components/q2-detail.js.map +1 -1
- package/dist/components/q2-dropdown-item2.js.map +1 -1
- package/dist/components/q2-dropdown.js +2 -4
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-editable-field.js.map +1 -1
- package/dist/components/q2-example.js +1 -1
- package/dist/components/q2-file-picker.js.map +1 -1
- package/dist/components/q2-form.js +2 -2
- package/dist/components/q2-form.js.map +1 -1
- package/dist/components/q2-formatted-text.js +1 -1
- package/dist/components/q2-formatted-text.js.map +1 -1
- package/dist/components/q2-grid.js +32 -8
- package/dist/components/q2-grid.js.map +1 -1
- package/dist/components/q2-icon2.js.map +1 -1
- package/dist/components/q2-input2.js +7 -4
- package/dist/components/q2-input2.js.map +1 -1
- package/dist/components/q2-item2.js +1 -1
- package/dist/components/q2-item2.js.map +1 -1
- package/dist/components/q2-legend2.js +3 -3
- package/dist/components/q2-legend2.js.map +1 -1
- package/dist/components/q2-link2.js.map +1 -1
- package/dist/components/q2-list2.js +1 -1
- package/dist/components/q2-list2.js.map +1 -1
- package/dist/components/q2-loading2.js.map +1 -1
- package/dist/components/q2-message2.js +2 -2
- package/dist/components/q2-message2.js.map +1 -1
- package/dist/components/q2-meter.js +1 -1
- package/dist/components/q2-meter.js.map +1 -1
- package/dist/components/q2-modal.js +1 -1
- package/dist/components/q2-modal.js.map +1 -1
- package/dist/components/q2-mutation-observer.js +1 -1
- package/dist/components/q2-optgroup2.js +1 -1
- package/dist/components/q2-optgroup2.js.map +1 -1
- package/dist/components/q2-option-list2.js +37 -28
- package/dist/components/q2-option-list2.js.map +1 -1
- package/dist/components/q2-option2.js +1 -1
- package/dist/components/q2-option2.js.map +1 -1
- package/dist/components/q2-otp.d.ts +11 -0
- package/dist/components/q2-otp.js +439 -0
- package/dist/components/q2-otp.js.map +1 -0
- package/dist/components/q2-pagination.js +3 -3
- package/dist/components/q2-pagination.js.map +1 -1
- package/dist/components/q2-pill.js +23 -14
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-popover2.js +5 -2
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-radio-group.js.map +1 -1
- package/dist/components/q2-radio.js +2 -2
- package/dist/components/q2-radio.js.map +1 -1
- package/dist/components/q2-relative-time.js +1 -1
- package/dist/components/q2-resize-observer2.js +1 -1
- package/dist/components/q2-section.js +2 -2
- package/dist/components/q2-section.js.map +1 -1
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/components/q2-stepper-pane.js +1 -1
- package/dist/components/q2-stepper-vertical.js +1 -1
- package/dist/components/q2-stepper-vertical.js.map +1 -1
- package/dist/components/q2-stepper.js +1 -1
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/components/q2-tab-container.js +1 -1
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tag2.js +2 -2
- package/dist/components/q2-tag2.js.map +1 -1
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/q2-toast.js.map +1 -1
- package/dist/components/q2-tooltip2.js +124 -5
- package/dist/components/q2-tooltip2.js.map +1 -1
- package/dist/components/sanitize-html-string.js +19 -2
- package/dist/components/sanitize-html-string.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/click-elsewhere.q2-option-list.q2-popover.entry.js.map +1 -1
- package/dist/esm/click-elsewhere_3.entry.js +46 -32
- package/dist/esm/click-elsewhere_3.entry.js.map +1 -1
- package/dist/esm/{component-DVxzK3WH.js → component-DaQM9u3s.js} +9 -3
- package/dist/esm/component-DaQM9u3s.js.map +1 -0
- package/dist/esm/{index-C4PILj1_.js → index-C5gj0T_3.js} +4 -4
- package/dist/esm/index-C5gj0T_3.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-group.q2-resize-observer.entry.js.map +1 -1
- package/dist/esm/q2-action-group_2.entry.js +2 -2
- package/dist/esm/q2-action-group_2.entry.js.map +1 -1
- package/dist/esm/q2-action-sheet.entry.js +109 -4
- package/dist/esm/q2-action-sheet.entry.js.map +1 -1
- package/dist/esm/q2-avatar.entry.js.map +1 -1
- package/dist/esm/q2-badge.entry.js +1 -1
- package/dist/esm/q2-badge.entry.js.map +1 -1
- package/dist/esm/q2-btn.q2-loading.entry.js.map +1 -1
- package/dist/esm/q2-btn_2.entry.js +1 -1
- package/dist/esm/q2-btn_2.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +6 -3
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-card-image.entry.js +2 -2
- package/dist/esm/q2-card-image.entry.js.map +1 -1
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-card.entry.js.map +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +3 -3
- package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +162 -29
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-chart-area.entry.js +1 -1
- package/dist/esm/q2-chart-bar.entry.js +1 -1
- package/dist/esm/q2-chart-donut.entry.js +3 -2
- package/dist/esm/q2-chart-donut.entry.js.map +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +2 -2
- package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
- package/dist/esm/q2-checkbox.q2-tag.entry.js.map +1 -1
- package/dist/esm/q2-checkbox_2.entry.js +3 -3
- package/dist/esm/q2-checkbox_2.entry.js.map +1 -1
- package/dist/esm/q2-context.entry.js +2 -2
- package/dist/esm/q2-context.entry.js.map +1 -1
- package/dist/esm/q2-currency.entry.js +3 -4
- package/dist/esm/q2-currency.entry.js.map +1 -1
- package/dist/esm/q2-data-table.entry.js +2 -2
- package/dist/esm/q2-data-table.entry.js.map +1 -1
- package/dist/esm/q2-detail.entry.js +2 -2
- package/dist/esm/q2-detail.entry.js.map +1 -1
- package/dist/esm/q2-dropdown-item.entry.js +2 -2
- package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +3 -5
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +1 -1
- package/dist/esm/q2-editable-field.entry.js.map +1 -1
- package/dist/esm/q2-example.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js.map +1 -1
- package/dist/esm/q2-form.entry.js +2 -2
- package/dist/esm/q2-form.entry.js.map +1 -1
- package/dist/esm/q2-formatted-text.entry.js +1 -1
- package/dist/esm/q2-formatted-text.entry.js.map +1 -1
- package/dist/esm/q2-grid-area.entry.js +1 -1
- package/dist/esm/q2-grid.entry.js +33 -9
- package/dist/esm/q2-grid.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +1 -1
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-input.entry.js +8 -5
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-item.entry.js +2 -2
- package/dist/esm/q2-item.entry.js.map +1 -1
- package/dist/esm/q2-legend.entry.js +2 -3
- package/dist/esm/q2-legend.entry.js.map +1 -1
- package/dist/esm/q2-link.q2-list.entry.js.map +1 -1
- package/dist/esm/q2-link_2.entry.js +2 -2
- package/dist/esm/q2-link_2.entry.js.map +1 -1
- package/dist/esm/q2-loc.entry.js +1 -1
- package/dist/esm/q2-message.entry.js +3 -3
- package/dist/esm/q2-message.entry.js.map +1 -1
- package/dist/esm/q2-meter.entry.js +2 -2
- package/dist/esm/q2-meter.entry.js.map +1 -1
- package/dist/esm/q2-modal.entry.js +3 -3
- package/dist/esm/q2-modal.entry.js.map +1 -1
- package/dist/esm/q2-month-picker.entry.js +1 -1
- package/dist/esm/q2-mutation-observer.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +3 -3
- package/dist/esm/q2-optgroup.entry.js.map +1 -1
- package/dist/esm/q2-option.entry.js +3 -3
- package/dist/esm/q2-option.entry.js.map +1 -1
- package/dist/esm/q2-otp.entry.js +371 -0
- package/dist/esm/q2-otp.entry.js.map +1 -0
- package/dist/esm/q2-pagination.entry.js +4 -4
- package/dist/esm/q2-pagination.entry.js.map +1 -1
- package/dist/esm/q2-pill.entry.js +24 -15
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +1 -1
- package/dist/esm/q2-radio-group.entry.js.map +1 -1
- package/dist/esm/q2-radio.entry.js +3 -3
- package/dist/esm/q2-radio.entry.js.map +1 -1
- package/dist/esm/q2-relative-time.entry.js +2 -2
- package/dist/esm/q2-section-container.entry.js +1 -1
- package/dist/esm/q2-section.entry.js +3 -3
- package/dist/esm/q2-section.entry.js.map +1 -1
- package/dist/esm/q2-select.entry.js +1 -1
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +3 -3
- package/dist/esm/q2-stepper-vertical.entry.js +2 -2
- package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/esm/q2-stepper.entry.js +2 -2
- package/dist/esm/q2-stepper.entry.js.map +1 -1
- package/dist/esm/q2-tab-container.entry.js +3 -3
- package/dist/esm/q2-tab-container.entry.js.map +1 -1
- package/dist/esm/q2-tab-pane.entry.js +2 -2
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +1 -1
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/q2-toast.entry.js +1 -1
- package/dist/esm/q2-toast.entry.js.map +1 -1
- package/dist/esm/q2-tooltip.entry.js +124 -5
- package/dist/esm/q2-tooltip.entry.js.map +1 -1
- package/dist/esm/{sanitize-html-string-B35VmRc9.js → sanitize-html-string-DPHNpMWE.js} +21 -4
- package/dist/{q2-tecton-elements/sanitize-html-string-B35VmRc9.js.map → esm/sanitize-html-string-DPHNpMWE.js.map} +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/playwright.config.js +12 -0
- package/dist/playwright.config.js.map +1 -0
- package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
- package/dist/q2-tecton-elements/click-elsewhere.q2-option-list.q2-popover.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/click-elsewhere_3.entry.js +44 -35
- package/dist/q2-tecton-elements/click-elsewhere_3.entry.js.map +1 -1
- package/dist/q2-tecton-elements/component-DaQM9u3s.js +46 -0
- package/dist/q2-tecton-elements/component-DaQM9u3s.js.map +1 -0
- package/dist/q2-tecton-elements/{index-C4PILj1_.js → index-C5gj0T_3.js} +4 -4
- package/dist/q2-tecton-elements/index-C5gj0T_3.js.map +1 -0
- package/dist/q2-tecton-elements/q2-action-group.q2-resize-observer.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-group_2.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-action-group_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-sheet.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +166 -70
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-badge.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-badge.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-badge.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-btn.q2-loading.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-btn_2.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-btn_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card-image.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card-image.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-card-image.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.js +402 -271
- package/dist/q2-tecton-elements/q2-carousel.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-donut.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +18 -16
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox.q2-tag.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-context.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-context.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-context.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-currency.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-currency.entry.js +34 -33
- package/dist/q2-tecton-elements/q2-currency.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-data-table.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-detail.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +18 -19
- package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-form.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-form.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-form.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-formatted-text.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-grid-area.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-grid.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-grid.entry.js +39 -14
- package/dist/q2-tecton-elements/q2-grid.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-icon.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-icon.entry.js +52 -52
- package/dist/q2-tecton-elements/q2-icon.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-input.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-input.entry.js +10 -6
- package/dist/q2-tecton-elements/q2-input.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-item.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-legend.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-legend.entry.js +4 -5
- package/dist/q2-tecton-elements/q2-legend.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-link.q2-list.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-link_2.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-link_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.js +28 -28
- package/dist/q2-tecton-elements/q2-message.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-meter.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-meter.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-meter.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-modal.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-modal.entry.js +53 -53
- package/dist/q2-tecton-elements/q2-modal.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-optgroup.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-otp.entry.esm.js.map +1 -0
- package/dist/q2-tecton-elements/q2-otp.entry.js +453 -0
- package/dist/q2-tecton-elements/q2-otp.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-pagination.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.js +29 -29
- package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pill.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pill.entry.js +43 -28
- package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.js +10 -10
- package/dist/q2-tecton-elements/q2-radio.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-section-container.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-section.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-section.entry.js +21 -21
- package/dist/q2-tecton-elements/q2-section.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +10 -10
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper.entry.js +33 -33
- package/dist/q2-tecton-elements/q2-stepper.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-container.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-container.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-tab-container.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-pane.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.js +136 -20
- package/dist/q2-tecton-elements/q2-tooltip.entry.js.map +1 -1
- package/dist/q2-tecton-elements/{sanitize-html-string-B35VmRc9.js → sanitize-html-string-DPHNpMWE.js} +147 -142
- package/dist/{esm/sanitize-html-string-B35VmRc9.js.map → q2-tecton-elements/sanitize-html-string-DPHNpMWE.js.map} +1 -1
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
- package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/playwright.config.d.ts +2 -0
- package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +22 -0
- package/dist/types/components/q2-avatar/test/q2-avatar-test.vr.d.ts +1 -0
- package/dist/types/components/q2-badge/test/q2-badge-test.vr.d.ts +1 -0
- package/dist/types/components/q2-btn/test/q2-btn-test.vr.d.ts +1 -0
- package/dist/types/components/q2-calendar/test/q2-calendar-test.vr.d.ts +1 -0
- package/dist/types/components/q2-card/test/q2-card-test.vr.d.ts +1 -0
- package/dist/types/components/q2-card-image/test/q2-card-image-test.vr.d.ts +1 -0
- package/dist/types/components/q2-carousel/q2-carousel.d.ts +29 -0
- package/dist/types/components/q2-carousel/test/q2-carousel-test.vr.d.ts +1 -0
- package/dist/types/components/q2-chart-area/test/q2-chart-area-test.vr.d.ts +1 -0
- package/dist/types/components/q2-chart-bar/test/q2-chart-bar-test.vr.d.ts +1 -0
- package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +2 -0
- package/dist/types/components/q2-chart-donut/test/q2-chart-donut-test.vr.d.ts +1 -0
- package/dist/types/components/q2-checkbox/test/q2-checkbox-test.vr.d.ts +1 -0
- package/dist/types/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.d.ts +1 -0
- package/dist/types/components/q2-context/test/q2-context-test.vr.d.ts +1 -0
- package/dist/types/components/q2-currency/test/q2-currency-test.vr.d.ts +1 -0
- package/dist/types/components/q2-data-table/test/q2-data-table-test.vr.d.ts +1 -0
- package/dist/types/components/q2-editable-field/test/q2-editable-field-test.vr.d.ts +1 -0
- package/dist/types/components/q2-file-picker/test/q2-file-picker-test.vr.d.ts +1 -0
- package/dist/types/components/q2-formatted-text/test/q2-formatted-text-test.vr.d.ts +1 -0
- package/dist/types/components/q2-grid/q2-grid.d.ts +10 -0
- package/dist/types/components/q2-icon/test/q2-icon-test.vr.d.ts +1 -0
- package/dist/types/components/q2-input/test/q2-input-test.vr.d.ts +1 -0
- package/dist/types/components/q2-legend/q2-legend.d.ts +2 -0
- package/dist/types/components/q2-link/test/q2-link-test.vr.d.ts +1 -0
- package/dist/types/components/q2-list/test/q2-list-test.vr.d.ts +1 -0
- package/dist/types/components/q2-message/test/q2-message-test.vr.d.ts +1 -0
- package/dist/types/components/q2-meter/test/q2-meter-test.vr.d.ts +1 -0
- package/dist/types/components/q2-modal/test/q2-modal-test.vr.d.ts +1 -0
- package/dist/types/components/q2-otp/q2-otp.d.ts +159 -0
- package/dist/types/components/q2-pagination/test/q2-pagination-test.vr.d.ts +1 -0
- package/dist/types/components/q2-pill/q2-pill.d.ts +5 -2
- package/dist/types/components/q2-pill/test/q2-pill-test.vr.d.ts +1 -0
- package/dist/types/components/q2-radio/q2-radio.d.ts +1 -1
- package/dist/types/components/q2-radio/test/q2-radio-test.vr.d.ts +1 -0
- package/dist/types/components/q2-radio-group/test/q2-radio-group-test.vr.d.ts +1 -0
- package/dist/types/components/q2-section/test/q2-section-test.vr.d.ts +1 -0
- package/dist/types/components/q2-select/test/q2-select-test.vr.d.ts +1 -0
- package/dist/types/components/q2-stepper/test/q2-stepper-test.vr.d.ts +1 -0
- package/dist/types/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.d.ts +1 -0
- package/dist/types/components/q2-tab-container/test/q2-tab-container-test.vr.d.ts +1 -0
- package/dist/types/components/q2-tag/test/q2-tag-test.vr.d.ts +1 -0
- package/dist/types/components/q2-textarea/test/q2-textarea-test.vr.d.ts +1 -0
- package/dist/types/components/q2-tooltip/q2-tooltip.d.ts +4 -0
- package/dist/types/components/q2-tooltip/test/q2-tooltip-test.vr.d.ts +1 -0
- package/dist/types/components.d.ts +306 -2
- package/dist/types/utils/component.d.ts +1 -1
- package/dist/types/utils/test/vr-helpers.d.ts +14 -0
- package/package.json +12 -3
- package/dist/cjs/component-DRAntnCA.js.map +0 -1
- package/dist/cjs/index-YvKoRT-t.js.map +0 -1
- package/dist/esm/component-DVxzK3WH.js.map +0 -1
- package/dist/esm/index-C4PILj1_.js.map +0 -1
- package/dist/q2-tecton-elements/component-DVxzK3WH.js +0 -40
- package/dist/q2-tecton-elements/component-DVxzK3WH.js.map +0 -1
- package/dist/q2-tecton-elements/index-C4PILj1_.js.map +0 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { expect } from "@playwright/test";
|
|
2
|
+
import { test } from "@stencil/playwright";
|
|
3
|
+
import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
|
|
4
|
+
// All variants set animated="false" to keep the loading shimmer out of the snapshot.
|
|
5
|
+
const COMMON = `label="Balance" max-value="$1,000" max-label="Available" animated="false"`;
|
|
6
|
+
const VARIANTS = [
|
|
7
|
+
{
|
|
8
|
+
name: 'basic',
|
|
9
|
+
html: `<q2-meter ${COMMON} completed-value="$300" completed-label="Balance"></q2-meter>`,
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
// margin-top reserves vertical space for the completed-dot tooltip in
|
|
13
|
+
// the dot-tooltip-hover snapshot. Without it the tooltip clips at the
|
|
14
|
+
// top of the viewport.
|
|
15
|
+
name: 'with-suggested',
|
|
16
|
+
html: `<div style="margin-top: 40px;"><q2-meter ${COMMON} completed-value="$300" completed-label="Balance" suggested-value="$500" suggested-label="Pending" dotted></q2-meter></div>`,
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'with-description',
|
|
20
|
+
html: `<q2-meter ${COMMON} description="Your account balance summary" completed-value="$300" completed-label="Balance" suggested-value="$500" suggested-label="Pending" dotted></q2-meter>`,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'no-dot',
|
|
24
|
+
html: `<q2-meter ${COMMON} completed-value="$300" completed-label="Balance" suggested-value="$500" suggested-label="Pending"></q2-meter>`,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'segments',
|
|
28
|
+
html: `<q2-meter ${COMMON} completed-value="$700" completed-label="Balance" segments="10" dotted></q2-meter>`,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'zero-completed',
|
|
32
|
+
html: `<q2-meter ${COMMON} completed-value="$0" completed-label="Balance" dotted></q2-meter>`,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'full-completed',
|
|
36
|
+
html: `<q2-meter ${COMMON} completed-value="$1,000" completed-label="Balance" dotted></q2-meter>`,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'hide-tooltip',
|
|
40
|
+
html: `<q2-meter ${COMMON} completed-value="$500" completed-label="Balance" hide-tooltip="true"></q2-meter>`,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'hero',
|
|
44
|
+
html: `<q2-meter ${COMMON} description="Your account balance summary" completed-value="$300" completed-label="Balance" suggested-value="$500" suggested-label="Pending" dotted></q2-meter>`,
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
const restingCase = (variant, theme) => {
|
|
48
|
+
test(`q2-meter--${variant.name}--resting — ${theme}`, async ({ page }) => {
|
|
49
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
50
|
+
await expect(page).toHaveScreenshot(`q2-meter--${variant.name}--resting--${theme}.png`);
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
const WITH_SUGGESTED = VARIANTS.find(v => v.name === 'with-suggested');
|
|
54
|
+
// Hover the q2-tooltip wrapper around the completed dot. The tooltip is CSS-:hover driven,
|
|
55
|
+
// so dispatching mouseenter on the inner host triggers the popover.
|
|
56
|
+
const dotTooltipHoverCase = (variant, theme) => {
|
|
57
|
+
test(`q2-meter--${variant.name}--dot-tooltip-hover — ${theme}`, async ({ page }) => {
|
|
58
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
59
|
+
const completedTooltip = page.locator('q2-meter').locator('.dot-container.completed q2-tooltip').first();
|
|
60
|
+
await completedTooltip.hover({ force: true });
|
|
61
|
+
// Allow tooltip positioning math to settle.
|
|
62
|
+
await page.waitForTimeout(150);
|
|
63
|
+
await expect(page).toHaveScreenshot(`q2-meter--${variant.name}--dot-tooltip-hover--${theme}.png`);
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
test.describe('q2-meter — variants × themes', () => {
|
|
67
|
+
for (const variant of VARIANTS) {
|
|
68
|
+
for (const theme of THEMES) {
|
|
69
|
+
restingCase(variant, theme);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (WITH_SUGGESTED) {
|
|
73
|
+
for (const theme of THEMES) {
|
|
74
|
+
dotTooltipHoverCase(WITH_SUGGESTED, theme);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=q2-meter-test.vr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"q2-meter-test.vr.js","sourceRoot":"","sources":["../../../../../src/components/q2-meter/test/q2-meter-test.vr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAS,MAAM,gCAAgC,CAAC;AAI1E,qFAAqF;AACrF,MAAM,MAAM,GAAG,2EAA2E,CAAC;AAE3F,MAAM,QAAQ,GAAc;IACxB;QACI,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,aAAa,MAAM,+DAA+D;KAC3F;IACD;QACI,sEAAsE;QACtE,sEAAsE;QACtE,uBAAuB;QACvB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,4CAA4C,MAAM,6HAA6H;KACxL;IACD;QACI,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,aAAa,MAAM,kKAAkK;KAC9L;IACD;QACI,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,aAAa,MAAM,gHAAgH;KAC5I;IACD;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,aAAa,MAAM,oFAAoF;KAChH;IACD;QACI,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,aAAa,MAAM,oEAAoE;KAChG;IACD;QACI,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,aAAa,MAAM,wEAAwE;KACpG;IACD;QACI,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,aAAa,MAAM,mFAAmF;KAC/G;IACD;QACI,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,aAAa,MAAM,kKAAkK;KAC9L;CACJ,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,KAAY,EAAE,EAAE;IACnD,IAAI,CAAC,aAAa,OAAO,CAAC,IAAI,eAAe,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACrE,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,aAAa,OAAO,CAAC,IAAI,cAAc,KAAK,MAAM,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;AAEvE,2FAA2F;AAC3F,oEAAoE;AACpE,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,KAAY,EAAE,EAAE;IAC3D,IAAI,CAAC,aAAa,OAAO,CAAC,IAAI,yBAAyB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/E,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,KAAK,EAAE,CAAC;QACzG,MAAM,gBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,4CAA4C;QAC5C,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,aAAa,OAAO,CAAC,IAAI,wBAAwB,KAAK,MAAM,CAAC,CAAC;IACtG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,IAAI,CAAC,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect } from '@playwright/test';\nimport { test } from '@stencil/playwright';\nimport { setupPage, THEMES, Theme } from '../../../utils/test/vr-helpers';\n\ntype Variant = { name: string; html: string };\n\n// All variants set animated=\"false\" to keep the loading shimmer out of the snapshot.\nconst COMMON = `label=\"Balance\" max-value=\"$1,000\" max-label=\"Available\" animated=\"false\"`;\n\nconst VARIANTS: Variant[] = [\n {\n name: 'basic',\n html: `<q2-meter ${COMMON} completed-value=\"$300\" completed-label=\"Balance\"></q2-meter>`,\n },\n {\n // margin-top reserves vertical space for the completed-dot tooltip in\n // the dot-tooltip-hover snapshot. Without it the tooltip clips at the\n // top of the viewport.\n name: 'with-suggested',\n html: `<div style=\"margin-top: 40px;\"><q2-meter ${COMMON} completed-value=\"$300\" completed-label=\"Balance\" suggested-value=\"$500\" suggested-label=\"Pending\" dotted></q2-meter></div>`,\n },\n {\n name: 'with-description',\n html: `<q2-meter ${COMMON} description=\"Your account balance summary\" completed-value=\"$300\" completed-label=\"Balance\" suggested-value=\"$500\" suggested-label=\"Pending\" dotted></q2-meter>`,\n },\n {\n name: 'no-dot',\n html: `<q2-meter ${COMMON} completed-value=\"$300\" completed-label=\"Balance\" suggested-value=\"$500\" suggested-label=\"Pending\"></q2-meter>`,\n },\n {\n name: 'segments',\n html: `<q2-meter ${COMMON} completed-value=\"$700\" completed-label=\"Balance\" segments=\"10\" dotted></q2-meter>`,\n },\n {\n name: 'zero-completed',\n html: `<q2-meter ${COMMON} completed-value=\"$0\" completed-label=\"Balance\" dotted></q2-meter>`,\n },\n {\n name: 'full-completed',\n html: `<q2-meter ${COMMON} completed-value=\"$1,000\" completed-label=\"Balance\" dotted></q2-meter>`,\n },\n {\n name: 'hide-tooltip',\n html: `<q2-meter ${COMMON} completed-value=\"$500\" completed-label=\"Balance\" hide-tooltip=\"true\"></q2-meter>`,\n },\n {\n name: 'hero',\n html: `<q2-meter ${COMMON} description=\"Your account balance summary\" completed-value=\"$300\" completed-label=\"Balance\" suggested-value=\"$500\" suggested-label=\"Pending\" dotted></q2-meter>`,\n },\n];\n\nconst restingCase = (variant: Variant, theme: Theme) => {\n test(`q2-meter--${variant.name}--resting — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme, setupLoc: true });\n await expect(page).toHaveScreenshot(`q2-meter--${variant.name}--resting--${theme}.png`);\n });\n};\n\nconst WITH_SUGGESTED = VARIANTS.find(v => v.name === 'with-suggested');\n\n// Hover the q2-tooltip wrapper around the completed dot. The tooltip is CSS-:hover driven,\n// so dispatching mouseenter on the inner host triggers the popover.\nconst dotTooltipHoverCase = (variant: Variant, theme: Theme) => {\n test(`q2-meter--${variant.name}--dot-tooltip-hover — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme, setupLoc: true });\n const completedTooltip = page.locator('q2-meter').locator('.dot-container.completed q2-tooltip').first();\n await completedTooltip.hover({ force: true });\n // Allow tooltip positioning math to settle.\n await page.waitForTimeout(150);\n await expect(page).toHaveScreenshot(`q2-meter--${variant.name}--dot-tooltip-hover--${theme}.png`);\n });\n};\n\ntest.describe('q2-meter — variants × themes', () => {\n for (const variant of VARIANTS) {\n for (const theme of THEMES) {\n restingCase(variant, theme);\n }\n }\n if (WITH_SUGGESTED) {\n for (const theme of THEMES) {\n dotTooltipHoverCase(WITH_SUGGESTED, theme);\n }\n }\n});\n"]}
|
|
@@ -65,6 +65,27 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
/**
|
|
69
|
+
* @prop --tct-modal-background: (<color>) Controls the background color of the modal dialog.
|
|
70
|
+
* @prop --tct-modal-color: (<color>) Controls the text color of the modal dialog.
|
|
71
|
+
* @prop --tct-modal-backdrop-background: (<color>) Controls the background color of the modal backdrop.
|
|
72
|
+
* @prop --tct-modal-border-radius: (<length-percentage>+) Controls the corner radius of the modal dialog.
|
|
73
|
+
* @prop --tct-modal-box-shadow: (*) Controls the box shadow of the modal dialog.
|
|
74
|
+
* @prop --tct-modal-padding: (<length-percentage>+) Controls the inner padding of the modal dialog.
|
|
75
|
+
* @prop --tct-modal-gap: (<length-percentage>) Controls the vertical gap between the modal header, content, and footer.
|
|
76
|
+
* @prop --tct-modal-header-height: (<length>) Controls the height of the modal header row.
|
|
77
|
+
* @prop --tct-modal-close-button-size: (<length>) Controls the size of the modal close button.
|
|
78
|
+
* @prop --tct-modal-content-gradient-height: (<length>) Controls the height of the scroll-edge gradient on the modal content.
|
|
79
|
+
* @prop --tct-modal-max-width: (<length-percentage>) Controls the maximum width of the modal dialog.
|
|
80
|
+
* @prop --tct-modal-max-height: (<length-percentage>) Controls the maximum height of the modal dialog.
|
|
81
|
+
* @prop --tct-modal-min-height: (<length-percentage>) Controls the minimum height of the modal dialog.
|
|
82
|
+
* @prop --tct-modal-icon-size: (<length>) Controls the height and width of the modal leading icon.
|
|
83
|
+
* @prop --tct-modal-icon-margin: (<length-percentage>+) Controls the margin around the modal leading icon.
|
|
84
|
+
* @prop --tct-modal-image-border-radius: (<length-percentage>) Controls the corner radius of the modal image.
|
|
85
|
+
* @prop --tct-modal-description-font-size: (<length-percentage>) Controls the font size of the modal description text.
|
|
86
|
+
* @prop --tct-modal-title-font-weight: (<number>) Controls the font weight of the modal title.
|
|
87
|
+
* @prop --tct-modal-tween: (*) Controls the open/close transition timing of the modal dialog.
|
|
88
|
+
*/
|
|
68
89
|
@keyframes showBackdrop {
|
|
69
90
|
from {
|
|
70
91
|
opacity: 0;
|
|
@@ -136,7 +136,7 @@ export class Q2Modal {
|
|
|
136
136
|
render() {
|
|
137
137
|
const interiorClasses = `interior`;
|
|
138
138
|
const renderStatus = `${this.renderStatus || ''}`;
|
|
139
|
-
return (h("dialog", { key: '
|
|
139
|
+
return (h("dialog", { key: 'f07045cb3a3e85c9ebb018aba4693f1b547da800', ref: el => (this.dialogElement = el), class: renderStatus, onClick: this.onClick }, h("div", { key: '215739e96bf781f3c9d7b1e67250820ccf858b75', class: interiorClasses }, this.title && (h("header", { key: '77ce6f5b51a36f296fd110e3506c44ff94d72c48' }, this.title && h("h2", { key: 'fe6c7e59889383c6af5615093e66c3837dd24bc4', class: "title" }, this.title), !!this.closable && (h("q2-btn", { key: '8da0a4c5499caffd385bbf78f2010f77f8c35785', class: "btn-close", "test-id": "btnClose", onClick: this.onCancel, label: "tecton.element.modal.close", "hide-label": true }, h("q2-icon", { key: '3526408cfbc99d56d74e3167624049a86dded3a4', type: "close" }))))), h("div", { key: 'ce3c96886c1d28d78040401b3782892c5bda7399', class: "content", ref: el => (this.contentElement = el) }, this.icon && (h("div", { key: 'e4bae20593b8877f9c713f5bf63e59574042735b', class: "icon" }, h("q2-icon", { key: '466a83589286d503c6a5a36ba1999a73df951c19', type: this.icon }))), this.imageSrc && (h("div", { key: '56a0e413b40319b7a40e79136575ee8849c339c6', class: "image" }, h("img", { key: '0d32cee3447aa42273a816c4cd8941d5df62b3b2', src: this.imageSrc }))), hasSlotContent(this.hostElement, 'content') && h("slot", { key: '3687527d29977c662dd480e6fb9727f47eb3522a', name: "content" }), this.description && h("p", { key: '34b49f5bb615192deec83726391b66680541eb12', class: "description" }, this.description), this.customMarkup && (h("p", { key: 'a44e20822b497cc95e2ad16430f3e3e27f1c164a', class: "customMarkup", innerHTML: sanitizeHTMLString(this.customMarkup) }))), h("footer", { key: 'ae01296dc46f5502b1cdfa7b1949639df942c124' }, h("q2-action-group", { key: 'b89615558a7129659ce1574cc026c2bc4d728e8b', "full-width": true }, h("slot", { key: 'f12ed356d57b290222a5dab301c83a85fbdc9c34', name: "action" }))))));
|
|
140
140
|
}
|
|
141
141
|
static get is() { return "q2-modal"; }
|
|
142
142
|
static get encapsulation() { return "shadow"; }
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { expect } from "@playwright/test";
|
|
2
|
+
import { test } from "@stencil/playwright";
|
|
3
|
+
import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
|
|
4
|
+
const ACTIONS = `
|
|
5
|
+
<q2-btn slot="action" intent="workflow-primary" label="Submit"></q2-btn>
|
|
6
|
+
<q2-btn slot="action" intent="workflow-secondary" label="Cancel"></q2-btn>
|
|
7
|
+
`;
|
|
8
|
+
const MANY_ACTIONS = `
|
|
9
|
+
<q2-btn slot="action" intent="workflow-primary" label="Submit"></q2-btn>
|
|
10
|
+
<q2-btn slot="action" intent="workflow-secondary" label="Cancel"></q2-btn>
|
|
11
|
+
<q2-btn slot="action" intent="workflow-escape" label="Reset 1"></q2-btn>
|
|
12
|
+
<q2-btn slot="action" intent="workflow-escape" label="Reset 2"></q2-btn>
|
|
13
|
+
<q2-btn slot="action" intent="workflow-escape" label="Reset 3"></q2-btn>
|
|
14
|
+
`;
|
|
15
|
+
const LONG_DESC = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula.';
|
|
16
|
+
// Inline SVG data URL — stable across runs, no network dependency.
|
|
17
|
+
const STABLE_IMAGE_SRC = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='600' height='200'><rect width='100%' height='100%' fill='%237aa9d6'/></svg>";
|
|
18
|
+
// q2-modal hosts default to display:none until openModal() runs, which makes
|
|
19
|
+
// setupPage's `[stencil-hydrated]:visible` wait time out. Prepending any visible
|
|
20
|
+
// hydrated Stencil element lets that wait resolve so we can call openModal().
|
|
21
|
+
// Once the modal opens, its backdrop covers this anchor entirely, so it doesn't
|
|
22
|
+
// pollute the snapshot.
|
|
23
|
+
const VISIBLE_HYDRATION_ANCHOR = `<q2-icon type="info"></q2-icon>`;
|
|
24
|
+
const VARIANTS = [
|
|
25
|
+
{
|
|
26
|
+
name: 'basic',
|
|
27
|
+
html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal title="Confirm action" description="Are you sure you want to continue with this action?">${ACTIONS}</q2-modal>`,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'not-closable',
|
|
31
|
+
html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal title="Required step" description="This step cannot be skipped." closable="false">${ACTIONS}</q2-modal>`,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'with-icon',
|
|
35
|
+
html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal title="Success!" icon="success-filled" description="Your changes were saved.">${ACTIONS}</q2-modal>`,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'with-image',
|
|
39
|
+
html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal title="Welcome" image-src="${STABLE_IMAGE_SRC}" description="Take a tour of the new dashboard.">${ACTIONS}</q2-modal>`,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'no-title',
|
|
43
|
+
html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal description="Body-only modal with no title or close button.">${ACTIONS}</q2-modal>`,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'long-description',
|
|
47
|
+
html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal title="Terms" description="${LONG_DESC}">${ACTIONS}</q2-modal>`,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'many-actions',
|
|
51
|
+
html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal title="Confirm action" description="Are you sure you want to continue with this action?">${MANY_ACTIONS}</q2-modal>`,
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
const openModal = async (page) => {
|
|
55
|
+
await page.locator('q2-modal').evaluate((el) => el.openModal());
|
|
56
|
+
// showModal() sets dialog.open synchronously. The component then flips to renderStatus
|
|
57
|
+
// 'is-open' on transitionend, but that event doesn't fire reliably under headless test
|
|
58
|
+
// automation (animations get paused). Wait for dialog.open + a couple of paint frames so
|
|
59
|
+
// toHaveScreenshot snaps the steady, fully-rendered modal.
|
|
60
|
+
await page.locator('q2-modal').evaluate(async (el) => {
|
|
61
|
+
var _a;
|
|
62
|
+
const dialog = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('dialog');
|
|
63
|
+
if (!dialog)
|
|
64
|
+
throw new Error('q2-modal dialog not found in shadow DOM');
|
|
65
|
+
if (!dialog.open) {
|
|
66
|
+
await new Promise(resolve => {
|
|
67
|
+
const observer = new MutationObserver(() => {
|
|
68
|
+
if (dialog.open) {
|
|
69
|
+
observer.disconnect();
|
|
70
|
+
resolve();
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
observer.observe(dialog, { attributes: true, attributeFilter: ['open'] });
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
await new Promise(r => requestAnimationFrame(() => requestAnimationFrame(r)));
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
const openCase = (variant, theme) => {
|
|
80
|
+
test(`q2-modal--${variant.name}--open — ${theme}`, async ({ page }) => {
|
|
81
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
82
|
+
await openModal(page);
|
|
83
|
+
await expect(page).toHaveScreenshot(`q2-modal--${variant.name}--open--${theme}.png`);
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
const focusCase = (variant, theme) => {
|
|
87
|
+
test(`q2-modal--${variant.name}--focus — ${theme}`, async ({ page }) => {
|
|
88
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
89
|
+
await openModal(page);
|
|
90
|
+
await page.keyboard.press('Tab');
|
|
91
|
+
await expect(page).toHaveScreenshot(`q2-modal--${variant.name}--focus--${theme}.png`);
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
const BASIC_VARIANT = VARIANTS.find(v => v.name === 'basic');
|
|
95
|
+
test.describe('q2-modal — variants × themes', () => {
|
|
96
|
+
for (const variant of VARIANTS) {
|
|
97
|
+
for (const theme of THEMES) {
|
|
98
|
+
openCase(variant, theme);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (BASIC_VARIANT) {
|
|
102
|
+
for (const theme of THEMES) {
|
|
103
|
+
focusCase(BASIC_VARIANT, theme);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=q2-modal-test.vr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"q2-modal-test.vr.js","sourceRoot":"","sources":["../../../../../src/components/q2-modal/test/q2-modal-test.vr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAS,MAAM,gCAAgC,CAAC;AAI1E,MAAM,OAAO,GAAG;;;CAGf,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;CAMpB,CAAC;AAEF,MAAM,SAAS,GACX,msBAAmsB,CAAC;AAExsB,mEAAmE;AACnE,MAAM,gBAAgB,GAClB,oJAAoJ,CAAC;AAEzJ,6EAA6E;AAC7E,iFAAiF;AACjF,8EAA8E;AAC9E,gFAAgF;AAChF,wBAAwB;AACxB,MAAM,wBAAwB,GAAG,iCAAiC,CAAC;AAEnE,MAAM,QAAQ,GAAc;IACxB;QACI,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,GAAG,wBAAwB,sGAAsG,OAAO,aAAa;KAC9J;IACD;QACI,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,GAAG,wBAAwB,+FAA+F,OAAO,aAAa;KACvJ;IACD;QACI,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,GAAG,wBAAwB,2FAA2F,OAAO,aAAa;KACnJ;IACD;QACI,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,GAAG,wBAAwB,wCAAwC,gBAAgB,qDAAqD,OAAO,aAAa;KACrK;IACD;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,GAAG,wBAAwB,0EAA0E,OAAO,aAAa;KAClI;IACD;QACI,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,GAAG,wBAAwB,wCAAwC,SAAS,KAAK,OAAO,aAAa;KAC9G;IACD;QACI,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,GAAG,wBAAwB,sGAAsG,YAAY,aAAa;KACnK;CACJ,CAAC;AAEF,MAAM,SAAS,GAAG,KAAK,EAAE,IAAqC,EAAE,EAAE;IAC9D,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAgD,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9G,uFAAuF;IACvF,uFAAuF;IACvF,yFAAyF;IACzF,2DAA2D;IAC3D,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAe,EAAE,EAAE;;QAC9D,MAAM,MAAM,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gBAC9B,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;oBACvC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBACd,QAAQ,CAAC,UAAU,EAAE,CAAC;wBACtB,OAAO,EAAE,CAAC;oBACd,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC;QACP,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,OAAgB,EAAE,KAAY,EAAE,EAAE;IAChD,IAAI,CAAC,aAAa,OAAO,CAAC,IAAI,YAAY,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAClE,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,aAAa,OAAO,CAAC,IAAI,WAAW,KAAK,MAAM,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,KAAY,EAAE,EAAE;IACjD,IAAI,CAAC,aAAa,OAAO,CAAC,IAAI,aAAa,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACnE,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,aAAa,OAAO,CAAC,IAAI,YAAY,KAAK,MAAM,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;AAE7D,IAAI,CAAC,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect } from '@playwright/test';\nimport { test } from '@stencil/playwright';\nimport { setupPage, THEMES, Theme } from '../../../utils/test/vr-helpers';\n\ntype Variant = { name: string; html: string };\n\nconst ACTIONS = `\n <q2-btn slot=\"action\" intent=\"workflow-primary\" label=\"Submit\"></q2-btn>\n <q2-btn slot=\"action\" intent=\"workflow-secondary\" label=\"Cancel\"></q2-btn>\n`;\n\nconst MANY_ACTIONS = `\n <q2-btn slot=\"action\" intent=\"workflow-primary\" label=\"Submit\"></q2-btn>\n <q2-btn slot=\"action\" intent=\"workflow-secondary\" label=\"Cancel\"></q2-btn>\n <q2-btn slot=\"action\" intent=\"workflow-escape\" label=\"Reset 1\"></q2-btn>\n <q2-btn slot=\"action\" intent=\"workflow-escape\" label=\"Reset 2\"></q2-btn>\n <q2-btn slot=\"action\" intent=\"workflow-escape\" label=\"Reset 3\"></q2-btn>\n`;\n\nconst LONG_DESC =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula.';\n\n// Inline SVG data URL — stable across runs, no network dependency.\nconst STABLE_IMAGE_SRC =\n \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='600' height='200'><rect width='100%' height='100%' fill='%237aa9d6'/></svg>\";\n\n// q2-modal hosts default to display:none until openModal() runs, which makes\n// setupPage's `[stencil-hydrated]:visible` wait time out. Prepending any visible\n// hydrated Stencil element lets that wait resolve so we can call openModal().\n// Once the modal opens, its backdrop covers this anchor entirely, so it doesn't\n// pollute the snapshot.\nconst VISIBLE_HYDRATION_ANCHOR = `<q2-icon type=\"info\"></q2-icon>`;\n\nconst VARIANTS: Variant[] = [\n {\n name: 'basic',\n html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal title=\"Confirm action\" description=\"Are you sure you want to continue with this action?\">${ACTIONS}</q2-modal>`,\n },\n {\n name: 'not-closable',\n html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal title=\"Required step\" description=\"This step cannot be skipped.\" closable=\"false\">${ACTIONS}</q2-modal>`,\n },\n {\n name: 'with-icon',\n html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal title=\"Success!\" icon=\"success-filled\" description=\"Your changes were saved.\">${ACTIONS}</q2-modal>`,\n },\n {\n name: 'with-image',\n html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal title=\"Welcome\" image-src=\"${STABLE_IMAGE_SRC}\" description=\"Take a tour of the new dashboard.\">${ACTIONS}</q2-modal>`,\n },\n {\n name: 'no-title',\n html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal description=\"Body-only modal with no title or close button.\">${ACTIONS}</q2-modal>`,\n },\n {\n name: 'long-description',\n html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal title=\"Terms\" description=\"${LONG_DESC}\">${ACTIONS}</q2-modal>`,\n },\n {\n name: 'many-actions',\n html: `${VISIBLE_HYDRATION_ANCHOR}<q2-modal title=\"Confirm action\" description=\"Are you sure you want to continue with this action?\">${MANY_ACTIONS}</q2-modal>`,\n },\n];\n\nconst openModal = async (page: import('@playwright/test').Page) => {\n await page.locator('q2-modal').evaluate((el: HTMLElement & { openModal(): Promise<void> }) => el.openModal());\n // showModal() sets dialog.open synchronously. The component then flips to renderStatus\n // 'is-open' on transitionend, but that event doesn't fire reliably under headless test\n // automation (animations get paused). Wait for dialog.open + a couple of paint frames so\n // toHaveScreenshot snaps the steady, fully-rendered modal.\n await page.locator('q2-modal').evaluate(async (el: HTMLElement) => {\n const dialog = el.shadowRoot?.querySelector('dialog');\n if (!dialog) throw new Error('q2-modal dialog not found in shadow DOM');\n if (!dialog.open) {\n await new Promise<void>(resolve => {\n const observer = new MutationObserver(() => {\n if (dialog.open) {\n observer.disconnect();\n resolve();\n }\n });\n observer.observe(dialog, { attributes: true, attributeFilter: ['open'] });\n });\n }\n await new Promise(r => requestAnimationFrame(() => requestAnimationFrame(r)));\n });\n};\n\nconst openCase = (variant: Variant, theme: Theme) => {\n test(`q2-modal--${variant.name}--open — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme, setupLoc: true });\n await openModal(page);\n await expect(page).toHaveScreenshot(`q2-modal--${variant.name}--open--${theme}.png`);\n });\n};\n\nconst focusCase = (variant: Variant, theme: Theme) => {\n test(`q2-modal--${variant.name}--focus — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme, setupLoc: true });\n await openModal(page);\n await page.keyboard.press('Tab');\n await expect(page).toHaveScreenshot(`q2-modal--${variant.name}--focus--${theme}.png`);\n });\n};\n\nconst BASIC_VARIANT = VARIANTS.find(v => v.name === 'basic');\n\ntest.describe('q2-modal — variants × themes', () => {\n for (const variant of VARIANTS) {\n for (const theme of THEMES) {\n openCase(variant, theme);\n }\n }\n if (BASIC_VARIANT) {\n for (const theme of THEMES) {\n focusCase(BASIC_VARIANT, theme);\n }\n }\n});\n"]}
|
|
@@ -92,7 +92,7 @@ export class Q2MutationObserver {
|
|
|
92
92
|
// #endregion
|
|
93
93
|
// #region Render Methods
|
|
94
94
|
render() {
|
|
95
|
-
return h("slot", { key: '
|
|
95
|
+
return h("slot", { key: 'e60ef36a762c6af123a91fe6c4def64179663098', onSlotchange: this.handleSlotChange });
|
|
96
96
|
}
|
|
97
97
|
static get is() { return "q2-mutation-observer"; }
|
|
98
98
|
static get encapsulation() { return "shadow"; }
|
|
@@ -65,6 +65,17 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
/**
|
|
69
|
+
* @prop --tct-optgroup-header-background: (<color>) Controls the background color of the optgroup header.
|
|
70
|
+
* @prop --tct-optgroup-header-color?: (<color>) Controls the optional text color of the optgroup header.
|
|
71
|
+
* @prop --tct-optgroup-header-font-size: (<length-percentage>) Controls the font size of the optgroup header.
|
|
72
|
+
* @prop --tct-optgroup-header-font-weight: (<number>) Controls the font weight of the optgroup header.
|
|
73
|
+
* @prop --tct-optgroup-header-letter-spacing?: (<length>) Controls the optional letter spacing of the optgroup header.
|
|
74
|
+
* @prop --tct-optgroup-header-padding: (<length-percentage>+) Controls the inner padding of the optgroup header.
|
|
75
|
+
* @prop --tct-optgroup-header-position: (<custom-ident>) Controls the CSS position value of the optgroup header.
|
|
76
|
+
* @prop --tct-optgroup-header-text-transform?: (<custom-ident>) Controls the optional text transform of the optgroup header.
|
|
77
|
+
* @prop --tct-optgroup-top: (<length>) Controls the top offset of the optgroup header when it is stickied within its scroll container.
|
|
78
|
+
*/
|
|
68
79
|
:host {
|
|
69
80
|
display: block;
|
|
70
81
|
}
|
|
@@ -55,7 +55,7 @@ export class Q2Optgroup {
|
|
|
55
55
|
// #endregion
|
|
56
56
|
// #region Render Methods
|
|
57
57
|
render() {
|
|
58
|
-
return (h("div", { key: '
|
|
58
|
+
return (h("div", { key: '4271765f1422cd33d73e1ed66b967994395bb4e1', class: "q2-optgroup-container", hidden: this.hidden, "aria-labelledby": this.headerId, role: "group" }, h("div", { key: 'f5efb564a7049f7e8d78c0b6fa5749e239ea5133', class: "q2-optgroup-header", id: this.headerId }, (this.label && loc(this.label)) || ''), h("div", { key: '9f932967082554e86e8048bba66a1493258f6d06', class: "q2-optgroup-options" }, h("slot", { key: 'd58e647529d66c50b6e0c9a79705128f0ffdf806' }))));
|
|
59
59
|
}
|
|
60
60
|
static get is() { return "q2-optgroup"; }
|
|
61
61
|
static get encapsulation() { return "shadow"; }
|
|
@@ -65,6 +65,15 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
/**
|
|
69
|
+
* @prop --tct-option-active-background: (<color>) Controls the background color of the option in its active, focused, and hover states.
|
|
70
|
+
* @prop --tct-option-active-color?: (<color>) Controls the optional text color of the option in its active, focused, and hover states.
|
|
71
|
+
* @prop --tct-option-content-font-size?: (<length-percentage>) Controls the optional font size of the option content.
|
|
72
|
+
* @prop --tct-option-focus-box-shadow: (*) Controls the box shadow of the option when focused via keyboard.
|
|
73
|
+
* @prop --tct-option-padding: (<length-percentage>+) Controls the inner padding of the option.
|
|
74
|
+
* @prop --tct-option-selected-icon-size: (<length>) Controls the size of the selected indicator icon.
|
|
75
|
+
* @prop --tct-option-selected-multiline-icon-size: (<length>) Controls the size of the selected indicator icon when multiline is set.
|
|
76
|
+
*/
|
|
68
77
|
:host(:not([separator]):not([separator=false])) {
|
|
69
78
|
--comp-padding: 0 var(--app-scale-2x, 10px);
|
|
70
79
|
--comp-selected-icon-size: var(--tct-option-selected-icon-size, var(--t-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3x, 15px))));
|
|
@@ -67,11 +67,11 @@ export class Q2Option {
|
|
|
67
67
|
this.mutationObserver = null;
|
|
68
68
|
}
|
|
69
69
|
componentWillLoad() {
|
|
70
|
-
hasValidAncestor(this.hostElement, 'q2-select, q2-option-list, q2-pill, q2-dropdown');
|
|
71
70
|
this.separatorChangedHandler(this.separator);
|
|
72
71
|
this.initDisplay();
|
|
73
72
|
}
|
|
74
73
|
componentDidLoad() {
|
|
74
|
+
hasValidAncestor(this.hostElement, 'q2-select, q2-option-list, q2-pill, q2-dropdown');
|
|
75
75
|
this.initMutationObserver();
|
|
76
76
|
}
|
|
77
77
|
// #endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-option.js","sourceRoot":"","sources":["../../../../src/components/q2-option/q2-option.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Element, ComponentInterface, Host, Event, EventEmitter, Watch } from '@stencil/core';\nimport { getAllText, loc } from '@/utils';\nimport { hasValidAncestor } from '@/utils/component';\n\n/**\n * @name Option\n * @category Forms\n * @summary Use as a selectable item within Select, Dropdown, Tag, or Pill components.\n */\n@Component({ tag: 'q2-option', shadow: true, styleUrl: 'q2-option.scss' })\nexport class Q2Option implements ComponentInterface {\n // #region Own Properties\n\n displayProvidedAtInit: boolean;\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 /**\n * Disables child q2-option selectable state and removes the selector space.\n * @private\n */\n @Prop({ reflect: true })\n _hideSelectedBlock: boolean = false;\n\n @Prop({ reflect: true, attribute: '_multiSelectHidden' })\n _multiSelectHidden: boolean = false;\n\n /**\n * Used by q2-option-list to indicate the option is active\n * @private\n */\n @Prop({ reflect: true })\n active: boolean;\n\n /** Disables the option. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * Used by consuming elements to disable all options in the group\n * @private\n */\n @Prop({ reflect: true })\n disabledGroup: boolean;\n\n /**\n * The text that is displayed in the field when selected. If not provided, any text inside the element will be used.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n display: string;\n\n /**\n * Used by consuming elements to enable multiline content support\n * @private\n */\n @Prop({ reflect: true })\n multiline: boolean;\n\n /**\n * Used by q2-option-list to set a role on the option\n * @type {('option' | 'menuitem' | 'separator')}\n * @private\n */\n @Prop({ reflect: true, mutable: true })\n role: string = 'option';\n\n /**\n * Used by q2-option-list to indicate the option is selected\n * @private\n */\n @Prop({ reflect: true })\n selected: boolean = false;\n\n /**\n * Renders a line in the item instead of text.\n * Click events from these items will not have details provided.\n * A `separator` allows for quick visual grouping of items, so interactions should not be bound to these options.\n */\n @Prop({ reflect: true })\n separator: boolean;\n\n /** Serves as the option's value. */\n @Prop({ reflect: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Used by consuming elements to indicate the display value of the option has changed.\n * @private\n */\n @Event()\n displayChanged: EventEmitter<{ value: string; display: string }>;\n\n /**\n * Is emitted when the option is clicked.\n */\n @Event()\n tctClick: EventEmitter<{ type: 'select' | 'remove'; value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n hasValidAncestor(this.hostElement, 'q2-select, q2-option-list, q2-pill, q2-dropdown');\n this.separatorChangedHandler(this.separator);\n this.initDisplay();\n }\n\n componentDidLoad() {\n this.initMutationObserver();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('display')\n displayChangedHandler() {\n this.display = loc(this.display);\n this.setTextContent();\n this.displayChanged.emit({ display: this.display, value: this.value });\n }\n\n @Watch('separator')\n separatorChangedHandler(separator: boolean) {\n if (!separator) return;\n this.role = 'separator';\n }\n\n // #endregion\n // #region Local Methods\n\n initDisplay = async () => {\n if (this.multiline) return;\n const textContent = await getAllText(this.hostElement);\n if (this.display) this.displayProvidedAtInit = true;\n this.display = !!this.display ? loc(this.display) : textContent;\n this.setTextContent();\n };\n\n initMutationObserver = () => {\n if (!('MutationObserver' in window)) return;\n const observer = new MutationObserver(this.mutationHandler);\n observer.observe(this.hostElement, { childList: true, subtree: true, characterData: true });\n this.mutationObserver = observer;\n };\n\n mutationHandler = async () => {\n const allTextContent = await getAllText(this.hostElement);\n if (this.display === allTextContent || this.multiline) return;\n if (!this.displayProvidedAtInit) this.display = allTextContent;\n };\n\n setTextContent = () => {\n const hasLoc: boolean = !!this.hostElement.querySelector('q2-loc');\n if (this.multiline || hasLoc) return;\n this.hostElement.textContent = loc(this.display);\n };\n\n // #endregion\n // #region Render Methods\n\n renderOption() {\n const { display, disabled, disabledGroup, selected, _multiSelectHidden, role } = this;\n const isDisabled = disabled || disabledGroup;\n return (\n <Host\n tabindex=\"-1\"\n aria-disabled={isDisabled ? 'true' : undefined}\n aria-selected={role === 'menuitem' ? undefined : `${!!selected}`}\n aria-hidden={_multiSelectHidden ? 'true' : undefined}\n display={loc(display)}\n onClick={() => {\n if (isDisabled) return;\n this.tctClick.emit({ type: 'select', value: this.value });\n }}\n onKeydown={(event: KeyboardEvent) => {\n if (isDisabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n setTimeout(() => {\n this.tctClick.emit({ type: 'select', value: this.value });\n }, 1);\n\n event.preventDefault();\n }\n }}\n >\n {this.selected && !this._hideSelectedBlock && <q2-icon type=\"checkmark\" />}\n <div class=\"content\">\n <slot />\n </div>\n </Host>\n );\n }\n\n renderSeparator() {\n return <div class=\"separator\"></div>;\n }\n\n render() {\n return this.separator ? this.renderSeparator() : this.renderOption();\n }\n\n // #endregion\n}\n"]}
|
|
1
|
+
{"version":3,"file":"q2-option.js","sourceRoot":"","sources":["../../../../src/components/q2-option/q2-option.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Element, ComponentInterface, Host, Event, EventEmitter, Watch } from '@stencil/core';\nimport { getAllText, loc } from '@/utils';\nimport { hasValidAncestor } from '@/utils/component';\n\n/**\n * @name Option\n * @category Forms\n * @summary Use as a selectable item within Select, Dropdown, Tag, or Pill components.\n */\n@Component({ tag: 'q2-option', shadow: true, styleUrl: 'q2-option.scss' })\nexport class Q2Option implements ComponentInterface {\n // #region Own Properties\n\n displayProvidedAtInit: boolean;\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 /**\n * Disables child q2-option selectable state and removes the selector space.\n * @private\n */\n @Prop({ reflect: true })\n _hideSelectedBlock: boolean = false;\n\n @Prop({ reflect: true, attribute: '_multiSelectHidden' })\n _multiSelectHidden: boolean = false;\n\n /**\n * Used by q2-option-list to indicate the option is active\n * @private\n */\n @Prop({ reflect: true })\n active: boolean;\n\n /** Disables the option. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * Used by consuming elements to disable all options in the group\n * @private\n */\n @Prop({ reflect: true })\n disabledGroup: boolean;\n\n /**\n * The text that is displayed in the field when selected. If not provided, any text inside the element will be used.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n display: string;\n\n /**\n * Used by consuming elements to enable multiline content support\n * @private\n */\n @Prop({ reflect: true })\n multiline: boolean;\n\n /**\n * Used by q2-option-list to set a role on the option\n * @type {('option' | 'menuitem' | 'separator')}\n * @private\n */\n @Prop({ reflect: true, mutable: true })\n role: string = 'option';\n\n /**\n * Used by q2-option-list to indicate the option is selected\n * @private\n */\n @Prop({ reflect: true })\n selected: boolean = false;\n\n /**\n * Renders a line in the item instead of text.\n * Click events from these items will not have details provided.\n * A `separator` allows for quick visual grouping of items, so interactions should not be bound to these options.\n */\n @Prop({ reflect: true })\n separator: boolean;\n\n /** Serves as the option's value. */\n @Prop({ reflect: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Used by consuming elements to indicate the display value of the option has changed.\n * @private\n */\n @Event()\n displayChanged: EventEmitter<{ value: string; display: string }>;\n\n /**\n * Is emitted when the option is clicked.\n */\n @Event()\n tctClick: EventEmitter<{ type: 'select' | 'remove'; value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n this.separatorChangedHandler(this.separator);\n this.initDisplay();\n }\n\n componentDidLoad() {\n hasValidAncestor(this.hostElement, 'q2-select, q2-option-list, q2-pill, q2-dropdown');\n this.initMutationObserver();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('display')\n displayChangedHandler() {\n this.display = loc(this.display);\n this.setTextContent();\n this.displayChanged.emit({ display: this.display, value: this.value });\n }\n\n @Watch('separator')\n separatorChangedHandler(separator: boolean) {\n if (!separator) return;\n this.role = 'separator';\n }\n\n // #endregion\n // #region Local Methods\n\n initDisplay = async () => {\n if (this.multiline) return;\n const textContent = await getAllText(this.hostElement);\n if (this.display) this.displayProvidedAtInit = true;\n this.display = !!this.display ? loc(this.display) : textContent;\n this.setTextContent();\n };\n\n initMutationObserver = () => {\n if (!('MutationObserver' in window)) return;\n const observer = new MutationObserver(this.mutationHandler);\n observer.observe(this.hostElement, { childList: true, subtree: true, characterData: true });\n this.mutationObserver = observer;\n };\n\n mutationHandler = async () => {\n const allTextContent = await getAllText(this.hostElement);\n if (this.display === allTextContent || this.multiline) return;\n if (!this.displayProvidedAtInit) this.display = allTextContent;\n };\n\n setTextContent = () => {\n const hasLoc: boolean = !!this.hostElement.querySelector('q2-loc');\n if (this.multiline || hasLoc) return;\n this.hostElement.textContent = loc(this.display);\n };\n\n // #endregion\n // #region Render Methods\n\n renderOption() {\n const { display, disabled, disabledGroup, selected, _multiSelectHidden, role } = this;\n const isDisabled = disabled || disabledGroup;\n return (\n <Host\n tabindex=\"-1\"\n aria-disabled={isDisabled ? 'true' : undefined}\n aria-selected={role === 'menuitem' ? undefined : `${!!selected}`}\n aria-hidden={_multiSelectHidden ? 'true' : undefined}\n display={loc(display)}\n onClick={() => {\n if (isDisabled) return;\n this.tctClick.emit({ type: 'select', value: this.value });\n }}\n onKeydown={(event: KeyboardEvent) => {\n if (isDisabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n setTimeout(() => {\n this.tctClick.emit({ type: 'select', value: this.value });\n }, 1);\n\n event.preventDefault();\n }\n }}\n >\n {this.selected && !this._hideSelectedBlock && <q2-icon type=\"checkmark\" />}\n <div class=\"content\">\n <slot />\n </div>\n </Host>\n );\n }\n\n renderSeparator() {\n return <div class=\"separator\"></div>;\n }\n\n render() {\n return this.separator ? this.renderSeparator() : this.renderOption();\n }\n\n // #endregion\n}\n"]}
|
|
@@ -158,38 +158,47 @@ export class Q2OptionList {
|
|
|
158
158
|
}, { once: true });
|
|
159
159
|
break;
|
|
160
160
|
case 'ArrowUp':
|
|
161
|
-
event.preventDefault();
|
|
162
|
-
const firstVisibleOption = allVisibleOptions[0];
|
|
163
|
-
const isFirstVisibleOptionActive = firstVisibleOption.active;
|
|
164
|
-
if (isFirstVisibleOptionActive)
|
|
165
|
-
break;
|
|
166
|
-
if (activeIndex === undefined) {
|
|
167
|
-
this.setDefaultActiveElement();
|
|
168
|
-
break;
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
const nextIndex = this.getNextVisibleIndex(-1);
|
|
172
|
-
if (nextIndex === -1)
|
|
173
|
-
break;
|
|
174
|
-
this.adjustActiveOptionAndScroll(nextIndex - activeIndex);
|
|
175
|
-
break;
|
|
176
|
-
}
|
|
177
161
|
case 'ArrowDown':
|
|
162
|
+
// Guard: only process if an option is currently focused
|
|
163
|
+
const focusedOption = document.activeElement;
|
|
164
|
+
const isOptionFocused = this.allOptions.some(opt => opt === focusedOption);
|
|
165
|
+
if (!isOptionFocused)
|
|
166
|
+
return;
|
|
178
167
|
event.preventDefault();
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
168
|
+
if (key === 'ArrowUp') {
|
|
169
|
+
const firstVisibleOption = allVisibleOptions[0];
|
|
170
|
+
const isFirstVisibleOptionActive = firstVisibleOption.active;
|
|
171
|
+
if (isFirstVisibleOptionActive)
|
|
172
|
+
break;
|
|
173
|
+
if (activeIndex === undefined) {
|
|
174
|
+
this.setDefaultActiveElement();
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
const nextIndex = this.getNextVisibleIndex(-1);
|
|
179
|
+
if (nextIndex === -1)
|
|
180
|
+
break;
|
|
181
|
+
this.adjustActiveOptionAndScroll(nextIndex - activeIndex);
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
186
184
|
}
|
|
187
185
|
else {
|
|
188
|
-
|
|
189
|
-
|
|
186
|
+
// ArrowDown
|
|
187
|
+
const lastVisibleOption = allVisibleOptions[allVisibleOptions.length - 1];
|
|
188
|
+
const isLastVisibleOptionActive = lastVisibleOption.active;
|
|
189
|
+
if (isLastVisibleOptionActive)
|
|
190
190
|
break;
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
if (activeIndex === undefined) {
|
|
192
|
+
this.setDefaultActiveElement();
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
const nextIndex = this.getNextVisibleIndex(1);
|
|
197
|
+
if (nextIndex === -1)
|
|
198
|
+
break;
|
|
199
|
+
this.adjustActiveOptionAndScroll(nextIndex - activeIndex);
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
193
202
|
}
|
|
194
203
|
case 'Home':
|
|
195
204
|
event.preventDefault();
|
|
@@ -574,7 +583,7 @@ export class Q2OptionList {
|
|
|
574
583
|
// #endregion
|
|
575
584
|
// #region Render Methods
|
|
576
585
|
render() {
|
|
577
|
-
return (h(Host, { key: '
|
|
586
|
+
return (h(Host, { key: 'ea6ef8ea9e667c6d1485212ea636b23725ce9043' }, h("div", { key: '6bc6ffec50a40b8b8ee4cf2b66388200eb3f0d32', class: "content", ref: el => (this.contentElement = el), onFocusout: this.focusoutHandler }, h("div", { key: '28b5d0460ceca2f0b9a8fd4fa018f949d04154df', class: "options", "aria-label": loc('tecton.element.optionList.label', [this.label]), "aria-multiselectable": this.type === 'menu' ? undefined : this.multiple ? 'true' : undefined, role: this.type || 'listbox', onKeyDown: this.internalKeydownHandler, onClick: this.clickHandler }, h("slot", { key: '666147b2cd06490c883c8a01b11e9cfa209a19dd' })))));
|
|
578
587
|
}
|
|
579
588
|
static get is() { return "q2-option-list"; }
|
|
580
589
|
static get encapsulation() { return "shadow"; }
|