q2-tecton-elements 1.67.2 → 1.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle-report.json +22598 -10670
- package/dist/cjs/click-elsewhere.q2-option-list.q2-popover.entry.cjs.js.map +1 -1
- package/dist/cjs/click-elsewhere_3.cjs.entry.js +46 -32
- package/dist/cjs/click-elsewhere_3.cjs.entry.js.map +1 -1
- package/dist/cjs/{component-DRAntnCA.js → component-iASoq6gx.js} +9 -3
- package/dist/cjs/component-iASoq6gx.js.map +1 -0
- package/dist/cjs/{index-YvKoRT-t.js → index-DmGkqdX2.js} +3 -3
- package/dist/cjs/index-DmGkqdX2.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-group.q2-resize-observer.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-action-group_2.cjs.entry.js +2 -2
- package/dist/cjs/q2-action-group_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +109 -4
- package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-action-sheet.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-avatar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-badge.cjs.entry.js +1 -1
- package/dist/cjs/q2-badge.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-badge.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-btn.q2-loading.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +6 -3
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-card-image.cjs.entry.js +2 -2
- package/dist/cjs/q2-card-image.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card-image.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
- package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +162 -29
- package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +3 -2
- package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-donut.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
- package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-checkbox.q2-tag.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-checkbox_2.cjs.entry.js +3 -3
- package/dist/cjs/q2-checkbox_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-context.cjs.entry.js +2 -2
- package/dist/cjs/q2-context.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-context.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-currency.cjs.entry.js +2 -3
- package/dist/cjs/q2-currency.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-currency.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
- package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-data-table.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +2 -2
- package/dist/cjs/q2-detail.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-detail.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
- package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown-item.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +3 -5
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-example.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-file-picker.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-form.cjs.entry.js +2 -2
- package/dist/cjs/q2-form.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-form.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-formatted-text.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-grid-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-grid.cjs.entry.js +32 -8
- package/dist/cjs/q2-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-grid.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +8 -5
- package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-input.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +2 -2
- package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-item.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-legend.cjs.entry.js +2 -3
- package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-legend.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-link.q2-list.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-link_2.cjs.entry.js +2 -2
- package/dist/cjs/q2-link_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-loc.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +3 -3
- package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-message.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-meter.cjs.entry.js +2 -2
- package/dist/cjs/q2-meter.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-meter.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-modal.cjs.entry.js +3 -3
- package/dist/cjs/q2-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +3 -3
- package/dist/cjs/q2-optgroup.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-optgroup.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-option.cjs.entry.js +3 -3
- package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-option.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-otp.cjs.entry.js +373 -0
- package/dist/cjs/q2-otp.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-otp.entry.cjs.js.map +1 -0
- package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
- package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pagination.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +24 -15
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pill.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio-group.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +3 -3
- package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
- package/dist/cjs/q2-section-container.cjs.entry.js +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +3 -3
- package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-section.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +1 -1
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-select.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +3 -3
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +3 -3
- package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-container.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js +2 -2
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-toast.cjs.entry.js +1 -1
- package/dist/cjs/q2-toast.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-toast.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +124 -5
- package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tooltip.entry.cjs.js.map +1 -1
- package/dist/cjs/{sanitize-html-string-CW6y5624.js → sanitize-html-string-D17Pr7-c.js} +21 -4
- package/dist/cjs/{sanitize-html-string-CW6y5624.js.map → sanitize-html-string-D17Pr7-c.js.map} +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/click-elsewhere/click-elsewhere.js +2 -0
- package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
- package/dist/collection/components/q2-action-group/q2-action-group.css +14 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +16 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +107 -2
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
- package/dist/collection/components/q2-avatar/q2-avatar.css +24 -0
- package/dist/collection/components/q2-avatar/test/q2-avatar-test.vr.js +61 -0
- package/dist/collection/components/q2-avatar/test/q2-avatar-test.vr.js.map +1 -0
- package/dist/collection/components/q2-badge/q2-badge.css +30 -0
- package/dist/collection/components/q2-badge/test/q2-badge-test.vr.js +34 -0
- package/dist/collection/components/q2-badge/test/q2-badge-test.vr.js.map +1 -0
- package/dist/collection/components/q2-btn/q2-btn.css +279 -0
- package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js +80 -0
- package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js.map +1 -0
- package/dist/collection/components/q2-calendar/q2-calendar.css +36 -0
- package/dist/collection/components/q2-calendar/q2-calendar.js +5 -2
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js +170 -0
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js.map +1 -0
- package/dist/collection/components/q2-card/q2-card.css +62 -0
- package/dist/collection/components/q2-card/test/q2-card-test.vr.js +72 -0
- package/dist/collection/components/q2-card/test/q2-card-test.vr.js.map +1 -0
- package/dist/collection/components/q2-card-image/q2-card-image.css +74 -13
- package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js +152 -0
- package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js.map +1 -0
- package/dist/collection/components/q2-carousel/q2-carousel.css +78 -13
- package/dist/collection/components/q2-carousel/q2-carousel.js +241 -27
- package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
- package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js +104 -0
- package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js.map +1 -0
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +26 -1
- package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.vr.js +126 -0
- package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.vr.js.map +1 -0
- package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.vr.js +105 -0
- package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.vr.js.map +1 -0
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +29 -0
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +21 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
- package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js +151 -0
- package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js.map +1 -0
- package/dist/collection/components/q2-checkbox/q2-checkbox.css +128 -0
- package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js +69 -0
- package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js.map +1 -0
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +21 -0
- package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js +61 -0
- package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js.map +1 -0
- package/dist/collection/components/q2-context/q2-context.css +16 -0
- package/dist/collection/components/q2-context/test/q2-context-test.vr.js +95 -0
- package/dist/collection/components/q2-context/test/q2-context-test.vr.js.map +1 -0
- package/dist/collection/components/q2-currency/q2-currency.css +31 -0
- package/dist/collection/components/q2-currency/q2-currency.js +3 -4
- package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
- package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js +79 -0
- package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js.map +1 -0
- package/dist/collection/components/q2-data-table/q2-data-table.css +51 -0
- package/dist/collection/components/q2-data-table/q2-data-table.js +1 -1
- package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js +79 -0
- package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js.map +1 -0
- package/dist/collection/components/q2-detail/q2-detail.css +42 -0
- package/dist/collection/components/q2-detail/q2-detail.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.css +8 -0
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +2 -4
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +11 -0
- package/dist/collection/components/q2-editable-field/q2-editable-field.css +5 -0
- package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.vr.js +89 -0
- package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.vr.js.map +1 -0
- package/dist/collection/components/q2-example/q2-example.js +1 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.css +64 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js +92 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js.map +1 -0
- package/dist/collection/components/q2-form/q2-form.css +34 -20
- package/dist/collection/components/q2-form/q2-form.js +1 -1
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.css +14 -0
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
- package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js +55 -0
- package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js.map +1 -0
- package/dist/collection/components/q2-grid/q2-grid.css +13 -0
- package/dist/collection/components/q2-grid/q2-grid.js +31 -7
- package/dist/collection/components/q2-grid/q2-grid.js.map +1 -1
- package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/q2-icon.css +15 -0
- package/dist/collection/components/q2-icon/test/q2-icon-test.vr.js +55 -0
- package/dist/collection/components/q2-icon/test/q2-icon-test.vr.js.map +1 -0
- package/dist/collection/components/q2-input/q2-input.css +104 -0
- package/dist/collection/components/q2-input/q2-input.js +6 -3
- package/dist/collection/components/q2-input/q2-input.js.map +1 -1
- package/dist/collection/components/q2-input/test/q2-input-test.vr.js +97 -0
- package/dist/collection/components/q2-input/test/q2-input-test.vr.js.map +1 -0
- package/dist/collection/components/q2-item/q2-item.css +28 -0
- package/dist/collection/components/q2-item/q2-item.js +1 -1
- package/dist/collection/components/q2-legend/q2-legend.css +16 -0
- package/dist/collection/components/q2-legend/q2-legend.js +21 -3
- package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
- package/dist/collection/components/q2-link/q2-link.css +20 -0
- package/dist/collection/components/q2-link/test/q2-link-test.vr.js +70 -0
- package/dist/collection/components/q2-link/test/q2-link-test.vr.js.map +1 -0
- package/dist/collection/components/q2-list/q2-list.css +14 -0
- package/dist/collection/components/q2-list/q2-list.js +1 -1
- package/dist/collection/components/q2-list/test/q2-list-test.vr.js +58 -0
- package/dist/collection/components/q2-list/test/q2-list-test.vr.js.map +1 -0
- package/dist/collection/components/q2-loading/q2-loading.css +9 -0
- package/dist/collection/components/q2-message/q2-message.css +29 -1
- package/dist/collection/components/q2-message/q2-message.js +1 -1
- package/dist/collection/components/q2-message/test/q2-message-test.vr.js +57 -0
- package/dist/collection/components/q2-message/test/q2-message-test.vr.js.map +1 -0
- package/dist/collection/components/q2-meter/q2-meter.css +40 -0
- package/dist/collection/components/q2-meter/q2-meter.js +1 -1
- package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js +78 -0
- package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js.map +1 -0
- package/dist/collection/components/q2-modal/q2-modal.css +21 -0
- package/dist/collection/components/q2-modal/q2-modal.js +1 -1
- package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js +107 -0
- package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js.map +1 -0
- package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.css +11 -0
- package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
- package/dist/collection/components/q2-option/q2-option.css +9 -0
- package/dist/collection/components/q2-option/q2-option.js +1 -1
- package/dist/collection/components/q2-option/q2-option.js.map +1 -1
- package/dist/collection/components/q2-option-list/q2-option-list.css +3 -0
- package/dist/collection/components/q2-option-list/q2-option-list.js +37 -28
- package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
- package/dist/collection/components/q2-otp/q2-otp.css +312 -0
- package/dist/collection/components/q2-otp/q2-otp.js +873 -0
- package/dist/collection/components/q2-otp/q2-otp.js.map +1 -0
- package/dist/collection/components/q2-pagination/q2-pagination.css +22 -0
- package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
- package/dist/collection/components/q2-pagination/test/q2-pagination-test.vr.js +145 -0
- package/dist/collection/components/q2-pagination/test/q2-pagination-test.vr.js.map +1 -0
- package/dist/collection/components/q2-pill/q2-pill.css +53 -0
- package/dist/collection/components/q2-pill/q2-pill.js +23 -14
- package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
- package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js +110 -0
- package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js.map +1 -0
- package/dist/collection/components/q2-popover/q2-popover.css +20 -0
- package/dist/collection/components/q2-popover/q2-popover.js +5 -2
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-radio/q2-radio.css +52 -1
- package/dist/collection/components/q2-radio/q2-radio.js +2 -2
- package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
- package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js +73 -0
- package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js.map +1 -0
- package/dist/collection/components/q2-radio-group/q2-radio-group.css +22 -0
- package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js +99 -0
- package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js.map +1 -0
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-section/q2-section.css +26 -0
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-section/test/q2-section-test.vr.js +68 -0
- package/dist/collection/components/q2-section/test/q2-section-test.vr.js.map +1 -0
- package/dist/collection/components/q2-select/q2-select.css +17 -0
- package/dist/collection/components/q2-select/test/q2-select-test.vr.js +107 -0
- package/dist/collection/components/q2-select/test/q2-select-test.vr.js.map +1 -0
- package/dist/collection/components/q2-stepper/q2-stepper.css +36 -0
- package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
- package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js +86 -0
- package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js.map +1 -0
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +31 -0
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js +97 -0
- package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js.map +1 -0
- package/dist/collection/components/q2-tab-container/q2-tab-container.css +38 -0
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js +78 -0
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js.map +1 -0
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tag/q2-tag.css +30 -1
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js +83 -0
- package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js.map +1 -0
- package/dist/collection/components/q2-textarea/q2-textarea.css +80 -0
- package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js +102 -0
- package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js.map +1 -0
- package/dist/collection/components/q2-toast/q2-toast.css +15 -0
- package/dist/collection/components/q2-tooltip/q2-tooltip.css +31 -0
- package/dist/collection/components/q2-tooltip/q2-tooltip.js +135 -4
- package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
- package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js +76 -0
- package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js.map +1 -0
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/collection/utils/component.js +7 -1
- package/dist/collection/utils/component.js.map +1 -1
- package/dist/collection/utils/index.js +1 -1
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/collection/utils/sanitize-html-string.js +19 -2
- package/dist/collection/utils/sanitize-html-string.js.map +1 -1
- package/dist/collection/utils/test/vr-helpers.js +98 -0
- package/dist/collection/utils/test/vr-helpers.js.map +1 -0
- package/dist/components/click-elsewhere2.js +2 -0
- package/dist/components/click-elsewhere2.js.map +1 -1
- package/dist/components/component.js +7 -1
- package/dist/components/component.js.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/index2.js +1 -1
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-action-group2.js.map +1 -1
- package/dist/components/q2-action-sheet.js +107 -2
- package/dist/components/q2-action-sheet.js.map +1 -1
- package/dist/components/q2-avatar2.js.map +1 -1
- package/dist/components/q2-badge2.js.map +1 -1
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-calendar.js +5 -2
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-card-image.js +1 -1
- package/dist/components/q2-card-image.js.map +1 -1
- package/dist/components/q2-card.js.map +1 -1
- package/dist/components/q2-carousel-pane.js +1 -135
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel-pane2.js +140 -0
- package/dist/components/q2-carousel-pane2.js.map +1 -0
- package/dist/components/q2-carousel.js +173 -29
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-donut.js +3 -1
- package/dist/components/q2-chart-donut.js.map +1 -1
- package/dist/components/q2-checkbox-group.js.map +1 -1
- package/dist/components/q2-checkbox2.js.map +1 -1
- package/dist/components/q2-context.js +1 -1
- package/dist/components/q2-context.js.map +1 -1
- package/dist/components/q2-currency.js +3 -4
- package/dist/components/q2-currency.js.map +1 -1
- package/dist/components/q2-data-table.js +1 -1
- package/dist/components/q2-data-table.js.map +1 -1
- package/dist/components/q2-detail.js +1 -1
- package/dist/components/q2-detail.js.map +1 -1
- package/dist/components/q2-dropdown-item2.js.map +1 -1
- package/dist/components/q2-dropdown.js +2 -4
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-editable-field.js.map +1 -1
- package/dist/components/q2-example.js +1 -1
- package/dist/components/q2-file-picker.js.map +1 -1
- package/dist/components/q2-form.js +2 -2
- package/dist/components/q2-form.js.map +1 -1
- package/dist/components/q2-formatted-text.js +1 -1
- package/dist/components/q2-formatted-text.js.map +1 -1
- package/dist/components/q2-grid.js +32 -8
- package/dist/components/q2-grid.js.map +1 -1
- package/dist/components/q2-icon2.js.map +1 -1
- package/dist/components/q2-input2.js +7 -4
- package/dist/components/q2-input2.js.map +1 -1
- package/dist/components/q2-item2.js +1 -1
- package/dist/components/q2-item2.js.map +1 -1
- package/dist/components/q2-legend2.js +3 -3
- package/dist/components/q2-legend2.js.map +1 -1
- package/dist/components/q2-link2.js.map +1 -1
- package/dist/components/q2-list2.js +1 -1
- package/dist/components/q2-list2.js.map +1 -1
- package/dist/components/q2-loading2.js.map +1 -1
- package/dist/components/q2-message2.js +2 -2
- package/dist/components/q2-message2.js.map +1 -1
- package/dist/components/q2-meter.js +1 -1
- package/dist/components/q2-meter.js.map +1 -1
- package/dist/components/q2-modal.js +1 -1
- package/dist/components/q2-modal.js.map +1 -1
- package/dist/components/q2-mutation-observer.js +1 -1
- package/dist/components/q2-optgroup2.js +1 -1
- package/dist/components/q2-optgroup2.js.map +1 -1
- package/dist/components/q2-option-list2.js +37 -28
- package/dist/components/q2-option-list2.js.map +1 -1
- package/dist/components/q2-option2.js +1 -1
- package/dist/components/q2-option2.js.map +1 -1
- package/dist/components/q2-otp.d.ts +11 -0
- package/dist/components/q2-otp.js +439 -0
- package/dist/components/q2-otp.js.map +1 -0
- package/dist/components/q2-pagination.js +3 -3
- package/dist/components/q2-pagination.js.map +1 -1
- package/dist/components/q2-pill.js +23 -14
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-popover2.js +5 -2
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-radio-group.js.map +1 -1
- package/dist/components/q2-radio.js +2 -2
- package/dist/components/q2-radio.js.map +1 -1
- package/dist/components/q2-relative-time.js +1 -1
- package/dist/components/q2-resize-observer2.js +1 -1
- package/dist/components/q2-section.js +2 -2
- package/dist/components/q2-section.js.map +1 -1
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/components/q2-stepper-pane.js +1 -1
- package/dist/components/q2-stepper-vertical.js +1 -1
- package/dist/components/q2-stepper-vertical.js.map +1 -1
- package/dist/components/q2-stepper.js +1 -1
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/components/q2-tab-container.js +1 -1
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tag2.js +2 -2
- package/dist/components/q2-tag2.js.map +1 -1
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/q2-toast.js.map +1 -1
- package/dist/components/q2-tooltip2.js +124 -5
- package/dist/components/q2-tooltip2.js.map +1 -1
- package/dist/components/sanitize-html-string.js +19 -2
- package/dist/components/sanitize-html-string.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/click-elsewhere.q2-option-list.q2-popover.entry.js.map +1 -1
- package/dist/esm/click-elsewhere_3.entry.js +46 -32
- package/dist/esm/click-elsewhere_3.entry.js.map +1 -1
- package/dist/esm/{component-DVxzK3WH.js → component-DaQM9u3s.js} +9 -3
- package/dist/esm/component-DaQM9u3s.js.map +1 -0
- package/dist/esm/{index-C4PILj1_.js → index-C5gj0T_3.js} +4 -4
- package/dist/esm/index-C5gj0T_3.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-group.q2-resize-observer.entry.js.map +1 -1
- package/dist/esm/q2-action-group_2.entry.js +2 -2
- package/dist/esm/q2-action-group_2.entry.js.map +1 -1
- package/dist/esm/q2-action-sheet.entry.js +109 -4
- package/dist/esm/q2-action-sheet.entry.js.map +1 -1
- package/dist/esm/q2-avatar.entry.js.map +1 -1
- package/dist/esm/q2-badge.entry.js +1 -1
- package/dist/esm/q2-badge.entry.js.map +1 -1
- package/dist/esm/q2-btn.q2-loading.entry.js.map +1 -1
- package/dist/esm/q2-btn_2.entry.js +1 -1
- package/dist/esm/q2-btn_2.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +6 -3
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-card-image.entry.js +2 -2
- package/dist/esm/q2-card-image.entry.js.map +1 -1
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-card.entry.js.map +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +3 -3
- package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +162 -29
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-chart-area.entry.js +1 -1
- package/dist/esm/q2-chart-bar.entry.js +1 -1
- package/dist/esm/q2-chart-donut.entry.js +3 -2
- package/dist/esm/q2-chart-donut.entry.js.map +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +2 -2
- package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
- package/dist/esm/q2-checkbox.q2-tag.entry.js.map +1 -1
- package/dist/esm/q2-checkbox_2.entry.js +3 -3
- package/dist/esm/q2-checkbox_2.entry.js.map +1 -1
- package/dist/esm/q2-context.entry.js +2 -2
- package/dist/esm/q2-context.entry.js.map +1 -1
- package/dist/esm/q2-currency.entry.js +3 -4
- package/dist/esm/q2-currency.entry.js.map +1 -1
- package/dist/esm/q2-data-table.entry.js +2 -2
- package/dist/esm/q2-data-table.entry.js.map +1 -1
- package/dist/esm/q2-detail.entry.js +2 -2
- package/dist/esm/q2-detail.entry.js.map +1 -1
- package/dist/esm/q2-dropdown-item.entry.js +2 -2
- package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +3 -5
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +1 -1
- package/dist/esm/q2-editable-field.entry.js.map +1 -1
- package/dist/esm/q2-example.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js.map +1 -1
- package/dist/esm/q2-form.entry.js +2 -2
- package/dist/esm/q2-form.entry.js.map +1 -1
- package/dist/esm/q2-formatted-text.entry.js +1 -1
- package/dist/esm/q2-formatted-text.entry.js.map +1 -1
- package/dist/esm/q2-grid-area.entry.js +1 -1
- package/dist/esm/q2-grid.entry.js +33 -9
- package/dist/esm/q2-grid.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +1 -1
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-input.entry.js +8 -5
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-item.entry.js +2 -2
- package/dist/esm/q2-item.entry.js.map +1 -1
- package/dist/esm/q2-legend.entry.js +2 -3
- package/dist/esm/q2-legend.entry.js.map +1 -1
- package/dist/esm/q2-link.q2-list.entry.js.map +1 -1
- package/dist/esm/q2-link_2.entry.js +2 -2
- package/dist/esm/q2-link_2.entry.js.map +1 -1
- package/dist/esm/q2-loc.entry.js +1 -1
- package/dist/esm/q2-message.entry.js +3 -3
- package/dist/esm/q2-message.entry.js.map +1 -1
- package/dist/esm/q2-meter.entry.js +2 -2
- package/dist/esm/q2-meter.entry.js.map +1 -1
- package/dist/esm/q2-modal.entry.js +3 -3
- package/dist/esm/q2-modal.entry.js.map +1 -1
- package/dist/esm/q2-month-picker.entry.js +1 -1
- package/dist/esm/q2-mutation-observer.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +3 -3
- package/dist/esm/q2-optgroup.entry.js.map +1 -1
- package/dist/esm/q2-option.entry.js +3 -3
- package/dist/esm/q2-option.entry.js.map +1 -1
- package/dist/esm/q2-otp.entry.js +371 -0
- package/dist/esm/q2-otp.entry.js.map +1 -0
- package/dist/esm/q2-pagination.entry.js +4 -4
- package/dist/esm/q2-pagination.entry.js.map +1 -1
- package/dist/esm/q2-pill.entry.js +24 -15
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +1 -1
- package/dist/esm/q2-radio-group.entry.js.map +1 -1
- package/dist/esm/q2-radio.entry.js +3 -3
- package/dist/esm/q2-radio.entry.js.map +1 -1
- package/dist/esm/q2-relative-time.entry.js +2 -2
- package/dist/esm/q2-section-container.entry.js +1 -1
- package/dist/esm/q2-section.entry.js +3 -3
- package/dist/esm/q2-section.entry.js.map +1 -1
- package/dist/esm/q2-select.entry.js +1 -1
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +3 -3
- package/dist/esm/q2-stepper-vertical.entry.js +2 -2
- package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/esm/q2-stepper.entry.js +2 -2
- package/dist/esm/q2-stepper.entry.js.map +1 -1
- package/dist/esm/q2-tab-container.entry.js +3 -3
- package/dist/esm/q2-tab-container.entry.js.map +1 -1
- package/dist/esm/q2-tab-pane.entry.js +2 -2
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +1 -1
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/q2-toast.entry.js +1 -1
- package/dist/esm/q2-toast.entry.js.map +1 -1
- package/dist/esm/q2-tooltip.entry.js +124 -5
- package/dist/esm/q2-tooltip.entry.js.map +1 -1
- package/dist/esm/{sanitize-html-string-B35VmRc9.js → sanitize-html-string-DPHNpMWE.js} +21 -4
- package/dist/{q2-tecton-elements/sanitize-html-string-B35VmRc9.js.map → esm/sanitize-html-string-DPHNpMWE.js.map} +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/playwright.config.js +12 -0
- package/dist/playwright.config.js.map +1 -0
- package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
- package/dist/q2-tecton-elements/click-elsewhere.q2-option-list.q2-popover.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/click-elsewhere_3.entry.js +44 -35
- package/dist/q2-tecton-elements/click-elsewhere_3.entry.js.map +1 -1
- package/dist/q2-tecton-elements/component-DaQM9u3s.js +46 -0
- package/dist/q2-tecton-elements/component-DaQM9u3s.js.map +1 -0
- package/dist/q2-tecton-elements/{index-C4PILj1_.js → index-C5gj0T_3.js} +4 -4
- package/dist/q2-tecton-elements/index-C5gj0T_3.js.map +1 -0
- package/dist/q2-tecton-elements/q2-action-group.q2-resize-observer.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-group_2.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-action-group_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-sheet.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +166 -70
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-badge.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-badge.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-badge.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-btn.q2-loading.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-btn_2.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-btn_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card-image.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card-image.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-card-image.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.js +402 -271
- package/dist/q2-tecton-elements/q2-carousel.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-donut.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +18 -16
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox.q2-tag.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-context.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-context.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-context.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-currency.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-currency.entry.js +34 -33
- package/dist/q2-tecton-elements/q2-currency.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-data-table.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-detail.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +18 -19
- package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-form.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-form.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-form.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-formatted-text.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-grid-area.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-grid.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-grid.entry.js +39 -14
- package/dist/q2-tecton-elements/q2-grid.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-icon.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-icon.entry.js +52 -52
- package/dist/q2-tecton-elements/q2-icon.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-input.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-input.entry.js +10 -6
- package/dist/q2-tecton-elements/q2-input.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-item.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-legend.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-legend.entry.js +4 -5
- package/dist/q2-tecton-elements/q2-legend.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-link.q2-list.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-link_2.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-link_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.js +28 -28
- package/dist/q2-tecton-elements/q2-message.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-meter.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-meter.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-meter.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-modal.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-modal.entry.js +53 -53
- package/dist/q2-tecton-elements/q2-modal.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-optgroup.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-otp.entry.esm.js.map +1 -0
- package/dist/q2-tecton-elements/q2-otp.entry.js +453 -0
- package/dist/q2-tecton-elements/q2-otp.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-pagination.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.js +29 -29
- package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pill.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pill.entry.js +43 -28
- package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.js +10 -10
- package/dist/q2-tecton-elements/q2-radio.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-section-container.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-section.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-section.entry.js +21 -21
- package/dist/q2-tecton-elements/q2-section.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +10 -10
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper.entry.js +33 -33
- package/dist/q2-tecton-elements/q2-stepper.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-container.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-container.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-tab-container.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-pane.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.js +136 -20
- package/dist/q2-tecton-elements/q2-tooltip.entry.js.map +1 -1
- package/dist/q2-tecton-elements/{sanitize-html-string-B35VmRc9.js → sanitize-html-string-DPHNpMWE.js} +147 -142
- package/dist/{esm/sanitize-html-string-B35VmRc9.js.map → q2-tecton-elements/sanitize-html-string-DPHNpMWE.js.map} +1 -1
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
- package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/playwright.config.d.ts +2 -0
- package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +22 -0
- package/dist/types/components/q2-avatar/test/q2-avatar-test.vr.d.ts +1 -0
- package/dist/types/components/q2-badge/test/q2-badge-test.vr.d.ts +1 -0
- package/dist/types/components/q2-btn/test/q2-btn-test.vr.d.ts +1 -0
- package/dist/types/components/q2-calendar/test/q2-calendar-test.vr.d.ts +1 -0
- package/dist/types/components/q2-card/test/q2-card-test.vr.d.ts +1 -0
- package/dist/types/components/q2-card-image/test/q2-card-image-test.vr.d.ts +1 -0
- package/dist/types/components/q2-carousel/q2-carousel.d.ts +29 -0
- package/dist/types/components/q2-carousel/test/q2-carousel-test.vr.d.ts +1 -0
- package/dist/types/components/q2-chart-area/test/q2-chart-area-test.vr.d.ts +1 -0
- package/dist/types/components/q2-chart-bar/test/q2-chart-bar-test.vr.d.ts +1 -0
- package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +2 -0
- package/dist/types/components/q2-chart-donut/test/q2-chart-donut-test.vr.d.ts +1 -0
- package/dist/types/components/q2-checkbox/test/q2-checkbox-test.vr.d.ts +1 -0
- package/dist/types/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.d.ts +1 -0
- package/dist/types/components/q2-context/test/q2-context-test.vr.d.ts +1 -0
- package/dist/types/components/q2-currency/test/q2-currency-test.vr.d.ts +1 -0
- package/dist/types/components/q2-data-table/test/q2-data-table-test.vr.d.ts +1 -0
- package/dist/types/components/q2-editable-field/test/q2-editable-field-test.vr.d.ts +1 -0
- package/dist/types/components/q2-file-picker/test/q2-file-picker-test.vr.d.ts +1 -0
- package/dist/types/components/q2-formatted-text/test/q2-formatted-text-test.vr.d.ts +1 -0
- package/dist/types/components/q2-grid/q2-grid.d.ts +10 -0
- package/dist/types/components/q2-icon/test/q2-icon-test.vr.d.ts +1 -0
- package/dist/types/components/q2-input/test/q2-input-test.vr.d.ts +1 -0
- package/dist/types/components/q2-legend/q2-legend.d.ts +2 -0
- package/dist/types/components/q2-link/test/q2-link-test.vr.d.ts +1 -0
- package/dist/types/components/q2-list/test/q2-list-test.vr.d.ts +1 -0
- package/dist/types/components/q2-message/test/q2-message-test.vr.d.ts +1 -0
- package/dist/types/components/q2-meter/test/q2-meter-test.vr.d.ts +1 -0
- package/dist/types/components/q2-modal/test/q2-modal-test.vr.d.ts +1 -0
- package/dist/types/components/q2-otp/q2-otp.d.ts +159 -0
- package/dist/types/components/q2-pagination/test/q2-pagination-test.vr.d.ts +1 -0
- package/dist/types/components/q2-pill/q2-pill.d.ts +5 -2
- package/dist/types/components/q2-pill/test/q2-pill-test.vr.d.ts +1 -0
- package/dist/types/components/q2-radio/q2-radio.d.ts +1 -1
- package/dist/types/components/q2-radio/test/q2-radio-test.vr.d.ts +1 -0
- package/dist/types/components/q2-radio-group/test/q2-radio-group-test.vr.d.ts +1 -0
- package/dist/types/components/q2-section/test/q2-section-test.vr.d.ts +1 -0
- package/dist/types/components/q2-select/test/q2-select-test.vr.d.ts +1 -0
- package/dist/types/components/q2-stepper/test/q2-stepper-test.vr.d.ts +1 -0
- package/dist/types/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.d.ts +1 -0
- package/dist/types/components/q2-tab-container/test/q2-tab-container-test.vr.d.ts +1 -0
- package/dist/types/components/q2-tag/test/q2-tag-test.vr.d.ts +1 -0
- package/dist/types/components/q2-textarea/test/q2-textarea-test.vr.d.ts +1 -0
- package/dist/types/components/q2-tooltip/q2-tooltip.d.ts +4 -0
- package/dist/types/components/q2-tooltip/test/q2-tooltip-test.vr.d.ts +1 -0
- package/dist/types/components.d.ts +306 -2
- package/dist/types/utils/component.d.ts +1 -1
- package/dist/types/utils/test/vr-helpers.d.ts +14 -0
- package/package.json +12 -3
- package/dist/cjs/component-DRAntnCA.js.map +0 -1
- package/dist/cjs/index-YvKoRT-t.js.map +0 -1
- package/dist/esm/component-DVxzK3WH.js.map +0 -1
- package/dist/esm/index-C4PILj1_.js.map +0 -1
- package/dist/q2-tecton-elements/component-DVxzK3WH.js +0 -40
- package/dist/q2-tecton-elements/component-DVxzK3WH.js.map +0 -1
- package/dist/q2-tecton-elements/index-C4PILj1_.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-carousel.js","sourceRoot":"","sources":["../../../../src/components/q2-carousel/q2-carousel.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n Prop,\n Watch,\n State,\n Fragment,\n Element,\n Host,\n h,\n Event,\n EventEmitter,\n Listen,\n Method,\n} from '@stencil/core';\nimport Swiper from 'swiper';\nimport { Autoplay } from 'swiper/modules';\nimport type { SwiperOptions } from 'swiper/types';\nimport { createGuid, loc, handleAriaLabel, overrideFocus, isEventFromElement } from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nimport { filterChildren, hasValidChildren } from '@/utils/component';\n\nconst carouselBreakpoint = 500; /* width in px of this host element where the layout starts to get unruly */\nconst carouselDesktopBreakpoint = 1024; /* viewport width where we show 3 full panes */\n\n/**\n * @name Carousel\n * @category Display\n * @summary Use for cycling through a series of content slides with swipe or button navigation.\n */\n@Component({ tag: 'q2-carousel', shadow: false, styleUrl: 'q2-carousel.scss' })\nexport class Q2Carousel implements ComponentInterface {\n // #region Own Properties\n\n carouselPaneWrapperElement: HTMLElement;\n carouselWrapper: HTMLElement;\n fullWidthDisplayOptions: SwiperOptions;\n guid = createGuid();\n mutationObserver: MutationObserver;\n swiper?: Swiper = null;\n universalCarouselOptions: SwiperOptions;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n /** Manages re-rendering the component when the `ariaLive` value changes. */\n @State()\n ariaLiveValue: 'polite' | 'off' = 'polite';\n\n /** Manages re-rendering the autoPlay button when clicked. */\n @State()\n autoPlayInProgress: boolean = false;\n\n /** Manages re-rendering the component when resize event is consumed. */\n @State()\n carouselWrapperWidth: number = 0;\n\n /** Manages sizing the component based on changes in `carouselWrapperWidth`. */\n @State()\n compactMode: boolean = false;\n\n /** Manages re-rendering the component when panes are added or removed. */\n @State()\n currentPaneCount: number = this.paneCount;\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true })\n ariaLabel: string;\n\n /** Position to show the navigation arrows\n * `float`: vertically centered and float over the carousel pane.\n * `bottom`: bottom area around pagination indicator, the arrows at far left/right edges.\n * `hug`: bottom area around pagination indicator and wraps the pagination indicator.\n */\n @Prop({ reflect: true })\n arrowPosition: 'bottom' | 'hug' | 'float' | undefined;\n\n /** Enables the auto-play feature and starts the carousel without user input. */\n @Prop({ reflect: true })\n autoPlay: boolean = false;\n\n /** Display the carousel panes as frameless with no container or shadow. */\n @Prop({ reflect: true })\n framelessPanes: boolean = false;\n\n /** Display the carousel panes full-width rather than with peeking content. */\n @Prop({ reflect: true })\n fullWidthPanes: boolean = false;\n\n /** Hide the dots below the carousel that provide navigation control and indicate which page is currently active. */\n @Prop({ reflect: true })\n hidePagination: boolean = false;\n\n /** The currently displayed carousel pane. */\n @Prop({ reflect: true, mutable: true })\n index: number = 1;\n\n /**\n * The label that is associated with the carousel. This is not displayed visually, but is presented by screen readers.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string = 'tecton.element.carousel.ariaLabel';\n\n /** Display navigation arrow buttons as another way to navigate the carousel. */\n @Prop({ reflect: true })\n showNavigationArrows: boolean = false;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the displayed carousel pane changes.\n * @deprecated Use 'tctChange' instead\n */\n @Event()\n change: EventEmitter<{ index: number }>;\n\n /**\n * Emitted when the displayed carousel pane changes.\n */\n @Event()\n tctChange: EventEmitter<{ index: number }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n if (!!this.swiper) {\n this.tearDownCarousel();\n }\n\n window.removeEventListener('resize', this.setCarouselWrapperWidth);\n }\n\n componentWillLoad() {\n handleAriaLabel(this);\n this.updateCarouselPaneProps();\n window.addEventListener('resize', this.setCarouselWrapperWidth);\n\n if (!hasValidChildren(this.hostElement, 'q2-carousel-pane')) {\n filterChildren(this.hostElement, 'q2-carousel-pane');\n }\n\n this.universalCarouselOptions = {\n centeredSlides: true,\n loop: true,\n focusableElements:\n 'q2-btn, q2-dropdown, q2-item, q2-list, a, input, select, textarea, button, video, label, option',\n autoplay: this.autoPlay,\n modules: [Autoplay],\n on: {\n realIndexChange: swiper => {\n this.index = swiper.realIndex + 1;\n this.updateCarouselPaneProps();\n const isPaginationFocused = !!document.activeElement.closest(\n `#q2-carousel-${this.guid} .q2-carousel-page-indicator`\n );\n const isCarouselFocused = !!document.activeElement.closest(\n `#q2-carousel-${this.guid} q2-carousel-pane`\n );\n const isFocused = isPaginationFocused || isCarouselFocused;\n this.handleAriaLive(isFocused);\n mirrorEmit(this, ['change', 'tctChange'], { index: swiper.realIndex + 1 });\n\n if (isPaginationFocused) {\n this.paginationBtns[swiper.realIndex].focus({ preventScroll: true });\n } else if (isCarouselFocused)\n (swiper.slides[swiper.activeIndex] as HTMLElement).focus({\n preventScroll: true,\n });\n },\n afterInit: swiper => {\n this.swiper = swiper;\n this.activePane?.addEventListener('popoverStateChanged', this.handlePopovers);\n },\n slideChangeTransitionEnd: () => {\n this.activePane?.addEventListener('popoverStateChanged', this.handlePopovers);\n },\n slideChangeTransitionStart: () => {\n this.activePane?.removeEventListener('popoverStateChanged', this.handlePopovers);\n },\n },\n };\n\n this.fullWidthDisplayOptions = {\n slidesPerView: 1,\n spaceBetween: 100,\n ...this.universalCarouselOptions,\n };\n }\n\n componentDidLoad() {\n this.setCarouselWrapperWidth();\n if (this.carouselWrapper && !!this.paneArray.length) {\n this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);\n }\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('clickCarouselPane')\n carouselPaneClicked(event) {\n this.swiper?.slideToLoop(event.detail.paneIndex);\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n const activePane = this.swiper?.slides[this.swiper?.realIndex];\n if (!isEventFromElement(event, this.hostElement) || !activePane) return;\n (activePane as HTMLElement).focus({ preventScroll: true });\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Clicks and Focuses the `q2-carousel-pane` matching the specified index.\n * @testOnly\n */\n @Method()\n async selectCarouselPane(index: number) {\n if (index > this.paneCount) return;\n const actualIndex = index > 0 ? index - 1 : 0;\n this.swiper?.slideToLoop(actualIndex);\n const activeSlide = this.swiper?.slides[this.swiper?.activeIndex] as HTMLElement;\n activeSlide?.focus({ preventScroll: true });\n }\n\n /**\n * Clicks and Focuses the `<button>` that controls playing or pausing the auto-play feature of the carousel.\n *\n * @warning\n * If the `autoPlay` property is not enabled, this method does nothing.\n *\n * @testOnly\n */\n @Method()\n async togglePlayPause() {\n if (!this.autoPlay) return;\n const playPauseBtn = this.hostElement.querySelector('.q2-carousel-autoplay-control') as HTMLButtonElement;\n playPauseBtn?.click();\n playPauseBtn?.focus();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('carouselWrapperWidth')\n carouselWrapperWidthChanged() {\n this.compactMode = this.carouselWrapperWidth < carouselBreakpoint;\n }\n\n @Watch('framelessPanes')\n framelessPanesChanged() {\n this.updateCarouselPaneProps();\n this.revampCarousel();\n }\n\n @Watch('fullWidthPanes')\n @Watch('framelessPanes')\n @Watch('compactMode')\n @Watch('autoPlay')\n revampCarousel() {\n this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);\n }\n\n @Watch('index')\n indexChanged(newIndex) {\n // this allows the carousel to be swiped programmatically via the index prop\n if (newIndex !== this.swiper?.realIndex + 1) {\n this.swiper?.slideToLoop(this.realIndex);\n // this.swiper?.slideTo(this.realIndex);\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get activeCarouselOptions() {\n return this.fullWidthPanes || this.framelessPanes\n ? this.fullWidthDisplayOptions\n : this.peekContentDisplayOptions;\n }\n\n get activePane(): HTMLElement {\n const activeSlide = this.swiper?.slides[this.swiper?.activeIndex] ?? 0;\n return activeSlide instanceof HTMLElement ? activeSlide : null;\n }\n\n get insufficientPanes() {\n return this.paneCount < 1;\n }\n\n get paginationBtns(): NodeListOf<HTMLButtonElement> {\n return this.hostElement.querySelectorAll('.q2-carousel-page-indicator');\n }\n\n get paneArray(): HTMLQ2CarouselPaneElement[] {\n return Array.from(this.hostElement.querySelectorAll('q2-carousel-pane'));\n }\n\n get paneCount() {\n return this.paneArray.length;\n }\n\n get peekContentDisplayOptions(): SwiperOptions {\n return {\n slidesPerView: 2,\n spaceBetween: this.compactMode ? 0 : 10,\n centerInsufficientSlides: false,\n breakpoints: {\n [carouselDesktopBreakpoint]: {\n slidesPerView: 2,\n },\n },\n ...this.universalCarouselOptions,\n };\n }\n\n get realIndex(): number {\n const indexNum = Number(this.index);\n return indexNum > 0 ? indexNum - 1 : 0;\n }\n\n get useDynamicPaginationDots() {\n return this.paneCount && this.paneCount > 5;\n }\n\n configureCarousel = (carouselWrapper, carouselOptions) => {\n // Disconnect observer to prevent infinite loop from Swiper's internal DOM changes (e.g. loop mode)\n this.mutationObserver?.disconnect();\n\n if (!!this.swiper) {\n this.tearDownCarousel();\n }\n this.autoPlayInProgress = this.autoPlay;\n\n // Save the target index before Swiper init — the realIndexChange callback\n // fires during construction and may overwrite this.index\n const targetIndex = this.realIndex;\n new Swiper(carouselWrapper, carouselOptions);\n this.swiper?.slideToLoop(targetIndex, 0);\n // Ensure popover listener is on the active pane after initial positioning\n this.activePane?.addEventListener('popoverStateChanged', this.handlePopovers);\n if (this.autoPlayInProgress) this.swiper?.autoplay.start();\n\n // Re-observe after Swiper's DOM changes have settled\n requestAnimationFrame(() => {\n this.mutationObserver?.observe(this.hostElement, { childList: true, subtree: true });\n });\n };\n\n handleAriaLive(activeAndFocused: boolean) {\n if (this.autoPlayInProgress && !activeAndFocused) {\n this.ariaLiveValue = 'off';\n } else {\n this.ariaLiveValue = 'polite';\n }\n }\n\n handleAutoPlayPause = (action: 'play' | 'pause') => {\n if (!this.autoPlay) return;\n const autoplay = this.swiper?.autoplay;\n switch (action) {\n case 'play':\n autoplay.start();\n this.autoPlayInProgress = true;\n break;\n case 'pause':\n autoplay.stop();\n this.autoPlayInProgress = false;\n break;\n }\n };\n\n handlePopovers = (event: CustomEvent) => {\n const { swiper, carouselPaneWrapperElement } = this;\n if (event.detail.open) {\n carouselPaneWrapperElement.style.left = `${swiper?.translate}px`;\n carouselPaneWrapperElement.style.transform = null;\n swiper?.disable();\n } else {\n carouselPaneWrapperElement.style.left = null;\n carouselPaneWrapperElement.style.transform = `translate3d(${swiper?.translate}px, 0, 0)`;\n swiper?.enable();\n }\n };\n\n keydownHandler = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n this.swiper?.slideNext();\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n this.swiper?.slidePrev();\n break;\n\n case 'Home':\n event.preventDefault();\n this.swiper?.slideToLoop(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.swiper?.slideToLoop(this.paneCount - 1);\n break;\n }\n };\n\n onMutationObserved = () => {\n if (this.paneCount !== this.currentPaneCount) {\n this.updateCarouselPaneProps();\n this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);\n }\n };\n\n setCarouselWrapperWidth = () => {\n if (this.insufficientPanes) return;\n this.carouselWrapperWidth = this.carouselWrapper.clientWidth;\n };\n\n tearDownCarousel = () => {\n this.swiper.destroy();\n this.swiper = null;\n };\n\n updateCarouselPaneProps = () => {\n const { framelessPanes, paneCount, paneArray } = this;\n\n paneArray.forEach((pane, domIndex) => {\n const swiperIndex = pane.getAttribute('data-swiper-slide-index');\n const index = swiperIndex !== null ? parseInt(swiperIndex, 10) : domIndex;\n pane.index = index;\n pane.siblingCount = paneCount;\n pane.isActivePane = index === this.realIndex;\n pane.slotFrameless = framelessPanes || undefined;\n });\n this.currentPaneCount = paneCount;\n };\n\n // #endregion\n // #region Render Methods\n\n renderAutoPlayBtn = () => {\n const { autoPlayInProgress } = this;\n return (\n <button\n type=\"button\"\n class=\"q2-carousel-autoplay-control\"\n aria-label={loc(\n autoPlayInProgress\n ? 'tecton.element.carousel.pausePlayLabel'\n : 'tecton.element.carousel.resumePlayLabel'\n )}\n onClick={() => this.handleAutoPlayPause(autoPlayInProgress ? 'pause' : 'play')}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n class=\"autoplay-icon\"\n aria-hidden=\"true\"\n >\n {autoPlayInProgress ? (\n <path d=\"M7.667 3.667h-2c-.737 0-1.334.597-1.334 1.333v14c0 .736.597 1.333 1.334 1.333h2C8.403 20.333 9 19.736 9 19V5c0-.736-.597-1.333-1.333-1.333Zm10.666 0h-2C15.597 3.667 15 4.264 15 5v14c0 .736.597 1.333 1.333 1.333h2c.737 0 1.334-.597 1.334-1.333V5c0-.736-.597-1.333-1.334-1.333Z\" />\n ) : (\n <path d=\"m6.868 3.837 12.656 7.008a1.316 1.316 0 0 1 0 2.31L6.868 20.163c-.892.494-1.993-.144-1.993-1.155V4.992c0-1.01 1.1-1.65 1.993-1.155Z\" />\n )}\n </svg>\n </button>\n );\n };\n\n renderInsufficientPanesDisplay = () => {\n let insufficientPanesContainerClasses = [\n 'insufficient-pane-feedback',\n this.fullWidthPanes ? 'full-width-display' : 'content-peek-display',\n ];\n if (this.compactMode) insufficientPanesContainerClasses = [...insufficientPanesContainerClasses, 'compact'];\n\n return (\n <div class={insufficientPanesContainerClasses.join(' ')}>\n <div class=\"insufficient-panes-icon-wrapper\">\n <q2-icon type=\"warning\" />\n </div>\n <p class=\"insufficient-panes-header\">\n <strong>{loc('tecton.element.carousel.insufficientPanesMessageHeader')}</strong>\n </p>\n <p class=\"insufficient-panes-body\">{loc('tecton.element.carousel.insufficientPanesMessageBody')}</p>\n </div>\n );\n };\n\n renderNextNavBtn = () => {\n return (\n <div class=\"next-btn\">\n <button\n type=\"button\"\n class=\"q2-carousel-navigation-button q2-carousel-navigation-button-next\"\n aria-label={loc('tecton.element.carousel.nextItemLabel')}\n onClick={() => this.swiper?.slideNext()}\n >\n <q2-icon type=\"arrow-right\" />\n </button>\n </div>\n );\n };\n\n renderPaginationArea = () => {\n const { useDynamicPaginationDots, realIndex, paneCount } = this;\n const paginationContainerClasses = ['q2-carousel-pagination', 'autoplay'];\n if (useDynamicPaginationDots) paginationContainerClasses.push('dynamic');\n if (this.autoPlayInProgress) paginationContainerClasses.push('autoplay-on');\n\n return (\n <div\n class={paginationContainerClasses.join(' ')}\n role=\"tablist\"\n aria-label={loc('tecton.element.carousel.tabWrapperLabel')}\n >\n {Array.from({ length: paneCount }, (_, i) => i).map(index => {\n const isActive = index === realIndex;\n let btnClasses = ['q2-carousel-page-indicator', `q2-carousel-page-indicator-${index}`];\n if (isActive) btnClasses = [...btnClasses, 'active-page'];\n if (useDynamicPaginationDots) btnClasses = [...btnClasses, 'dynamic'];\n\n const withinOneOfActive = index === realIndex + 1 || index === realIndex - 1;\n if (withinOneOfActive) btnClasses = [...btnClasses, 'active-adjacent'];\n\n const withinTwoOfActive = index === realIndex + 2 || index === realIndex - 2;\n if (withinTwoOfActive) btnClasses = [...btnClasses, 'active-adjacent-adjacent'];\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n tabIndex={isActive ? undefined : -1}\n aria-selected={`${isActive}`}\n class={btnClasses.join(' ')}\n onClick={() => this.swiper?.slideToLoop(index)}\n onKeyDown={this.keydownHandler}\n aria-label={loc('tecton.element.carousel.itemDescription', [\n (index + 1).toString(),\n paneCount.toString(),\n ])}\n ></button>\n );\n })}\n </div>\n );\n };\n\n renderPrevNavBtn = () => {\n return (\n <div class=\"prev-btn\">\n <button\n type=\"button\"\n class=\"q2-carousel-navigation-button q2-carousel-navigation-button-prev\"\n aria-label={loc('tecton.element.carousel.previousItemLabel')}\n onClick={() => this.swiper?.slidePrev()}\n >\n <q2-icon type=\"arrow-left\" />\n </button>\n </div>\n );\n };\n\n render() {\n const {\n paneCount,\n fullWidthPanes,\n framelessPanes,\n compactMode,\n showNavigationArrows,\n arrowPosition = 'bottom',\n insufficientPanes,\n autoPlay,\n hidePagination,\n ariaLiveValue,\n label,\n } = this;\n let carouselContainerClasses = ['q2-carousel-swiper-container', 'swiper'];\n if (fullWidthPanes) carouselContainerClasses = [...carouselContainerClasses, 'full-width-display'];\n if (framelessPanes) carouselContainerClasses = [...carouselContainerClasses, 'frameless-display'];\n if (!fullWidthPanes && !framelessPanes)\n carouselContainerClasses = [...carouselContainerClasses, 'content-peek-display'];\n if (compactMode) carouselContainerClasses = [...carouselContainerClasses, 'compact'];\n\n const paginationWrapperClasses = ['q2-carousel-pagination-navigation-wrapper'];\n if (showNavigationArrows && arrowPosition === 'bottom') paginationWrapperClasses.push('evenly-space');\n if (showNavigationArrows && arrowPosition === 'hug') paginationWrapperClasses.push('center-space');\n\n return (\n <Host\n id={`q2-carousel-${this.guid}`}\n class=\"q2-carousel-instance\"\n >\n {insufficientPanes ? (\n this.renderInsufficientPanesDisplay()\n ) : (\n <Fragment>\n {paneCount > 1 && (\n <div class={paginationWrapperClasses.join(' ')}>\n {showNavigationArrows &&\n ['bottom', 'hug'].includes(arrowPosition) &&\n this.renderPrevNavBtn()}\n\n <div class=\"q2-carousel-control-center-tray\">\n {!hidePagination && this.renderPaginationArea()}\n {autoPlay && this.renderAutoPlayBtn()}\n </div>\n\n {showNavigationArrows &&\n ['bottom', 'hug'].includes(arrowPosition) &&\n this.renderNextNavBtn()}\n </div>\n )}\n\n <section\n class={carouselContainerClasses.join(' ')}\n ref={el => (this.carouselWrapper = el)}\n aria-roledescription=\"carousel\"\n aria-label={loc(label)}\n >\n <div\n class=\"q2-carousel-swiper-wrapper swiper-wrapper\"\n ref={el => (this.carouselPaneWrapperElement = el)}\n aria-live={ariaLiveValue}\n onKeyDown={this.keydownHandler}\n >\n <slot></slot>\n </div>\n {showNavigationArrows && arrowPosition === 'float' && (\n <div class=\"q2-carousel-floating-arrow-wrapper\">\n {this.renderPrevNavBtn()}\n {this.renderNextNavBtn()}\n </div>\n )}\n </section>\n </Fragment>\n )}\n </Host>\n );\n }\n\n // #endregion\n}\n"]}
|
|
1
|
+
{"version":3,"file":"q2-carousel.js","sourceRoot":"","sources":["../../../../src/components/q2-carousel/q2-carousel.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n Prop,\n Watch,\n State,\n Fragment,\n Element,\n Host,\n h,\n Event,\n EventEmitter,\n Listen,\n Method,\n} from '@stencil/core';\nimport Swiper from 'swiper';\nimport { Autoplay } from 'swiper/modules';\nimport type { SwiperOptions } from 'swiper/types';\nimport { createGuid, loc, handleAriaLabel, overrideFocus, isEventFromElement, isMobile } from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nimport { filterChildren, hasValidChildren } from '@/utils/component';\n\nconst carouselDesktopBreakpoint = 1024; /* viewport width where we show 3 full panes */\n\n/**\n * @name Carousel\n * @category Display\n * @summary Use for cycling through a series of content slides with swipe or button navigation.\n */\n@Component({ tag: 'q2-carousel', shadow: false, styleUrl: 'q2-carousel.scss' })\nexport class Q2Carousel implements ComponentInterface {\n // #region Own Properties\n\n carouselPaneWrapperElement: HTMLElement;\n carouselWrapper: HTMLElement;\n fullWidthDisplayOptions: SwiperOptions;\n guid = createGuid();\n mutationObserver: MutationObserver;\n paneResizeObserver?: ResizeObserver;\n swiper?: Swiper = null;\n syncPaneHeightFrame?: number;\n universalCarouselOptions: SwiperOptions;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n /** Manages re-rendering the component when the `ariaLive` value changes. */\n @State()\n ariaLiveValue: 'polite' | 'off' = 'polite';\n\n /** Manages re-rendering the autoPlay button when clicked. */\n @State()\n autoPlayInProgress: boolean = false;\n\n /** Manages re-rendering the component when resize event is consumed. */\n @State()\n carouselWrapperWidth: number = 0;\n\n /** Manages sizing the component based on changes in `carouselWrapperWidth`. */\n @State()\n compactMode: boolean = false;\n\n /** Manages re-rendering the component when panes are added or removed. */\n @State()\n currentPaneCount: number = this.paneCount;\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true })\n ariaLabel: string;\n\n /** Position to show the navigation arrows\n * `float`: vertically centered and float over the carousel pane.\n * `bottom`: bottom area around pagination indicator, the arrows at far left/right edges.\n * `hug`: bottom area around pagination indicator and wraps the pagination indicator.\n */\n @Prop({ reflect: true })\n arrowPosition: 'bottom' | 'hug' | 'float' | undefined;\n\n /** Keeps all carousel panes at the height of the tallest pane. */\n @Prop({ reflect: true })\n autoHeight: boolean = false;\n\n /** Enables the auto-play feature and starts the carousel without user input. */\n @Prop({ reflect: true })\n autoPlay: boolean = false;\n\n /** Adjusts width of active pane automatically in compact screen based on the carousel width. */\n @Prop({ reflect: true })\n autoWidth: boolean = false;\n\n /** Breakpoint pixel number for switching to compact mode when autoWIdth is enabled, default is 500.*/\n @Prop({ reflect: true })\n compactBreakpoint: number = 500;\n\n /** Display a gradient fade on the left and right edges of the carousel. */\n @Prop({ reflect: true })\n edgeFade: boolean;\n\n /** Display the carousel panes as frameless with no container or shadow. */\n @Prop({ reflect: true })\n framelessPanes: boolean = false;\n\n /** Display the carousel panes full-width rather than with peeking content. */\n @Prop({ reflect: true })\n fullWidthPanes: boolean = false;\n\n /** Hide the dots below the carousel that provide navigation control and indicate which page is currently active. */\n @Prop({ reflect: true })\n hidePagination: boolean = false;\n\n /** The currently displayed carousel pane. */\n @Prop({ reflect: true, mutable: true })\n index: number = 1;\n\n /**\n * The label that is associated with the carousel. This is not displayed visually, but is presented by screen readers.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string = 'tecton.element.carousel.ariaLabel';\n\n /** Display navigation arrow buttons as another way to navigate the carousel. */\n @Prop({ reflect: true })\n showNavigationArrows: boolean = false;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the displayed carousel pane changes.\n * @deprecated Use 'tctChange' instead\n */\n @Event()\n change: EventEmitter<{ index: number }>;\n\n /**\n * Emitted when the displayed carousel pane changes.\n */\n @Event()\n tctChange: EventEmitter<{ index: number }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n this.paneResizeObserver?.disconnect();\n if (this.syncPaneHeightFrame !== undefined) {\n cancelAnimationFrame(this.syncPaneHeightFrame);\n }\n if (!!this.swiper) {\n this.tearDownCarousel();\n }\n\n window.removeEventListener('resize', this.setCarouselWrapperWidth);\n }\n\n componentWillLoad() {\n handleAriaLabel(this);\n this.updateCarouselPaneProps();\n window.addEventListener('resize', this.setCarouselWrapperWidth);\n\n if (!hasValidChildren(this.hostElement, 'q2-carousel-pane')) {\n filterChildren(this.hostElement, 'q2-carousel-pane');\n }\n\n this.universalCarouselOptions = {\n centeredSlides: true,\n loop: true,\n focusableElements:\n 'q2-btn, q2-dropdown, q2-item, q2-list, a, input, select, textarea, button, video, label, option',\n autoplay: this.autoPlay,\n modules: [Autoplay],\n on: {\n realIndexChange: swiper => {\n // When peek mode pads the DOM with duplicates (3- or 4-pane carousels),\n // `swiper.realIndex` can point at a duplicate; map it back to the 0..paneCount-1\n // range so `this.index`, pagination dots, and emitted events stay logical.\n const logicalIndex = this.paneCount > 0 ? swiper.realIndex % this.paneCount : swiper.realIndex;\n this.index = logicalIndex + 1;\n this.updateCarouselPaneProps();\n const isPaginationFocused = !!document.activeElement.closest(\n `#q2-carousel-${this.guid} .q2-carousel-page-indicator`\n );\n const isCarouselFocused = !!document.activeElement.closest(\n `#q2-carousel-${this.guid} q2-carousel-pane`\n );\n const isFocused = isPaginationFocused || isCarouselFocused;\n this.handleAriaLive(isFocused);\n mirrorEmit(this, ['change', 'tctChange'], { index: logicalIndex + 1 });\n\n if (isPaginationFocused) {\n this.paginationBtns[logicalIndex].focus({ preventScroll: true });\n } else if (isCarouselFocused)\n (swiper.slides[swiper.activeIndex] as HTMLElement).focus({\n preventScroll: true,\n });\n },\n afterInit: swiper => {\n this.swiper = swiper;\n this.activePane?.addEventListener('popoverStateChanged', this.handlePopovers);\n },\n slideChangeTransitionEnd: () => {\n this.activePane?.addEventListener('popoverStateChanged', this.handlePopovers);\n },\n slideChangeTransitionStart: () => {\n this.activePane?.removeEventListener('popoverStateChanged', this.handlePopovers);\n },\n },\n };\n\n this.fullWidthDisplayOptions = {\n slidesPerView: 1,\n spaceBetween: 100,\n ...this.universalCarouselOptions,\n };\n }\n\n componentDidLoad() {\n this.setCarouselWrapperWidth();\n if (this.carouselWrapper && !!this.paneArray.length) {\n this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);\n }\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('clickCarouselPane')\n carouselPaneClicked(event) {\n this.swiper?.slideToLoop(event.detail.paneIndex);\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n const activePane = this.swiper?.slides[this.swiper?.realIndex];\n if (!isEventFromElement(event, this.hostElement) || !activePane) return;\n (activePane as HTMLElement).focus({ preventScroll: true });\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Clicks and Focuses the `q2-carousel-pane` matching the specified index.\n * @testOnly\n */\n @Method()\n async selectCarouselPane(index: number) {\n if (index > this.paneCount) return;\n const actualIndex = index > 0 ? index - 1 : 0;\n this.swiper?.slideToLoop(actualIndex);\n const activeSlide = this.swiper?.slides[this.swiper?.activeIndex] as HTMLElement;\n activeSlide?.focus({ preventScroll: true });\n }\n\n /**\n * Clicks and Focuses the `<button>` that controls playing or pausing the auto-play feature of the carousel.\n *\n * @warning\n * If the `autoPlay` property is not enabled, this method does nothing.\n *\n * @testOnly\n */\n @Method()\n async togglePlayPause() {\n if (!this.autoPlay) return;\n const playPauseBtn = this.hostElement.querySelector('.q2-carousel-autoplay-control') as HTMLButtonElement;\n playPauseBtn?.click();\n playPauseBtn?.focus();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('autoHeight')\n autoHeightChanged() {\n this.managePaneHeightObserver();\n }\n\n @Watch('carouselWrapperWidth')\n carouselWrapperWidthChanged() {\n this.compactMode = this.carouselWrapperWidth < this.compactBreakpoint;\n }\n\n @Watch('framelessPanes')\n framelessPanesChanged() {\n this.updateCarouselPaneProps();\n this.revampCarousel();\n }\n\n @Watch('fullWidthPanes')\n @Watch('framelessPanes')\n @Watch('compactMode')\n @Watch('autoPlay')\n revampCarousel() {\n this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);\n }\n\n @Watch('index')\n indexChanged(newIndex) {\n // this allows the carousel to be swiped programmatically via the index prop\n if (!this.swiper) return;\n // Small looped carousels duplicate the pane set, so `swiper.realIndex` may point\n // at a duplicate. Compare against its logical (mod paneCount) equivalent before deciding\n // to programmatically slide — otherwise the watcher fights our own realIndexChange mapping.\n const swiperLogicalIndex = this.paneCount > 0 ? this.swiper.realIndex % this.paneCount : this.swiper.realIndex;\n if (newIndex !== swiperLogicalIndex + 1) {\n this.swiper.slideToLoop(this.realIndex);\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get activeCarouselOptions() {\n return this.useFullWidthPanes ? this.fullWidthDisplayOptions : this.peekContentDisplayOptions;\n }\n\n get activePane(): HTMLElement {\n const activeSlide = this.swiper?.slides[this.swiper?.activeIndex] ?? 0;\n return activeSlide instanceof HTMLElement ? activeSlide : null;\n }\n\n get insufficientPanes() {\n return this.paneCount < 1;\n }\n\n get paginationBtns(): NodeListOf<HTMLButtonElement> {\n return this.hostElement.querySelectorAll('.q2-carousel-page-indicator');\n }\n\n get paneArray(): HTMLQ2CarouselPaneElement[] {\n return Array.from(\n this.hostElement.querySelectorAll<HTMLQ2CarouselPaneElement>(\n 'q2-carousel-pane:not([data-q2-pane-duplicate])'\n )\n );\n }\n\n get paneCount() {\n return this.paneArray.length;\n }\n\n get peekContentDisplayOptions(): SwiperOptions {\n const slidesPerView = (this.autoWidth && this.compactMode) || isMobile() ? 1.2 : 2;\n return {\n slidesPerView,\n spaceBetween: 10,\n centerInsufficientSlides: false,\n breakpoints: {\n [carouselDesktopBreakpoint]: {\n slidesPerView,\n },\n },\n ...this.universalCarouselOptions,\n };\n }\n\n get realIndex(): number {\n const indexNum = Number(this.index);\n return indexNum > 0 ? indexNum - 1 : 0;\n }\n\n get useDynamicPaginationDots() {\n return this.paneCount && this.paneCount > 5;\n }\n\n /**\n * Swiper's loop mode rearranges existing DOM slides rather than cloning them. Small pane sets\n * are padded in `syncPaneDuplicates` so Swiper has enough slides while Pane N still visually\n * loops back to Pane 1.\n */\n get useFullWidthPanes() {\n return this.fullWidthPanes || this.paneCount < 3;\n }\n\n configureCarousel = (carouselWrapper, carouselOptions) => {\n // Disconnect observer to prevent infinite loop from Swiper's internal DOM changes (e.g. loop mode)\n this.mutationObserver?.disconnect();\n\n if (!!this.swiper) {\n this.tearDownCarousel();\n }\n this.autoPlayInProgress = this.autoPlay;\n\n // Pad the DOM with duplicate panes before Swiper initializes so small carousels have\n // enough slides for loop mode to rearrange neighbors without leaving empty slots.\n this.syncPaneDuplicates();\n this.updateCarouselPaneProps();\n\n // Save the target index before Swiper init — the realIndexChange callback\n // fires during construction and may overwrite this.index\n const targetIndex = this.realIndex;\n new Swiper(carouselWrapper, carouselOptions);\n this.swiper?.slideToLoop(targetIndex, 0);\n // Ensure popover listener is on the active pane after initial positioning\n this.activePane?.addEventListener('popoverStateChanged', this.handlePopovers);\n if (this.autoPlayInProgress) this.swiper?.autoplay.start();\n this.managePaneHeightObserver();\n\n // Re-observe after Swiper's DOM changes have settled\n requestAnimationFrame(() => {\n this.mutationObserver?.observe(this.hostElement, { childList: true, subtree: true });\n });\n };\n\n handleAriaLive(activeAndFocused: boolean) {\n if (this.autoPlayInProgress && !activeAndFocused) {\n this.ariaLiveValue = 'off';\n } else {\n this.ariaLiveValue = 'polite';\n }\n }\n\n handleAutoPlayPause = (action: 'play' | 'pause') => {\n if (!this.autoPlay) return;\n const autoplay = this.swiper?.autoplay;\n switch (action) {\n case 'play':\n autoplay.start();\n this.autoPlayInProgress = true;\n break;\n case 'pause':\n autoplay.stop();\n this.autoPlayInProgress = false;\n break;\n }\n };\n\n handlePopovers = (event: CustomEvent) => {\n const { swiper, carouselPaneWrapperElement } = this;\n if (event.detail.open) {\n carouselPaneWrapperElement.style.left = `${swiper?.translate}px`;\n carouselPaneWrapperElement.style.transform = null;\n swiper?.disable();\n } else {\n carouselPaneWrapperElement.style.left = null;\n carouselPaneWrapperElement.style.transform = `translate3d(${swiper?.translate}px, 0, 0)`;\n swiper?.enable();\n }\n };\n\n keydownHandler = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n this.swiper?.slideNext();\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n this.swiper?.slidePrev();\n break;\n\n case 'Home':\n event.preventDefault();\n this.swiper?.slideToLoop(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.swiper?.slideToLoop(this.paneCount - 1);\n break;\n }\n };\n\n managePaneHeightObserver = () => {\n if (this.autoHeight) {\n this.observePaneHeights();\n return;\n }\n\n this.paneResizeObserver?.disconnect();\n if (this.syncPaneHeightFrame !== undefined) {\n cancelAnimationFrame(this.syncPaneHeightFrame);\n this.syncPaneHeightFrame = undefined;\n }\n this.hostElement.style.removeProperty('--q2-carousel-equal-pane-height');\n this.swiper?.update?.();\n };\n\n observePaneHeights = () => {\n this.paneResizeObserver?.disconnect();\n\n if (typeof ResizeObserver === 'undefined') {\n this.schedulePaneHeightSync();\n return;\n }\n\n this.paneResizeObserver = new ResizeObserver(this.schedulePaneHeightSync);\n this.hostElement.querySelectorAll<HTMLElement>('.q2-carousel-pane-main-content').forEach(paneContent => {\n this.paneResizeObserver.observe(paneContent);\n });\n this.schedulePaneHeightSync();\n };\n\n onMutationObserved = () => {\n if (this.paneCount !== this.currentPaneCount) {\n this.updateCarouselPaneProps();\n this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);\n } else if (this.autoHeight) {\n this.schedulePaneHeightSync();\n }\n };\n\n schedulePaneHeightSync = () => {\n if (this.syncPaneHeightFrame !== undefined) {\n cancelAnimationFrame(this.syncPaneHeightFrame);\n }\n this.syncPaneHeightFrame = requestAnimationFrame(() => {\n this.syncPaneHeightFrame = undefined;\n this.syncPaneHeights();\n });\n };\n\n setCarouselWrapperWidth = () => {\n if (this.insufficientPanes) return;\n this.carouselWrapperWidth = this.carouselWrapper.clientWidth;\n };\n\n /**\n * Swiper's loop mode needs enough DOM slides on both sides of a centered active slide. For\n * two-pane full-width carousels and 3 to 5 pane peek carousels, we double the pane set in the\n * DOM by cloning each real pane once, giving Swiper 4 to 10 slides to loop through. Duplicates are tagged with\n * `data-q2-pane-duplicate`; they're excluded from `paneArray` / `paneCount` / pagination, and\n * logical index changes are mapped back to the real-pane range via `modulo paneCount`.\n */\n syncPaneDuplicates = () => {\n const realPanes = this.paneArray;\n const realCount = realPanes.length;\n const needsDuplicates = realCount === 2 || (!this.useFullWidthPanes && realCount >= 3 && realCount <= 5);\n\n const existingDuplicates = Array.from(\n this.hostElement.querySelectorAll<HTMLQ2CarouselPaneElement>('q2-carousel-pane[data-q2-pane-duplicate]')\n );\n existingDuplicates.forEach(node => node.remove());\n\n if (!needsDuplicates || realCount === 0) return;\n\n const parent = realPanes[0].parentElement;\n for (let i = 0; i < realCount; i += 1) {\n // Build a fresh pane and clone only the user-authored slot content. Cloning the\n // hydrated real pane would copy Stencil's rendered `<article class=\"...main-content\">`\n // wrapper, so when the duplicate hydrates it re-wraps → nested articles.\n const clone = document.createElement('q2-carousel-pane') as HTMLQ2CarouselPaneElement;\n clone.setAttribute('data-q2-pane-duplicate', 'true');\n clone.setAttribute('aria-hidden', 'true');\n // Apply the same classes Stencil will add on hydration so Swiper recognizes the\n // duplicates as slides during initialization (which happens before Stencil runs).\n clone.classList.add('q2-carousel-pane', 'swiper-slide', `q2-carousel-pane-${i}`);\n const sourceContentRoot =\n realPanes[i].querySelector<HTMLElement>(':scope > article.q2-carousel-pane-main-content') ||\n realPanes[i];\n Array.from(sourceContentRoot.children).forEach(child => {\n clone.appendChild(child.cloneNode(true));\n });\n parent.appendChild(clone);\n }\n };\n\n syncPaneHeights = () => {\n this.hostElement.style.removeProperty('--q2-carousel-equal-pane-height');\n\n const paneContentElements = Array.from(\n this.hostElement.querySelectorAll<HTMLElement>('.q2-carousel-pane-main-content')\n );\n const tallestPaneHeight = Math.max(...paneContentElements.map(paneContent => paneContent.offsetHeight), 0);\n\n if (tallestPaneHeight) {\n this.hostElement.style.setProperty('--q2-carousel-equal-pane-height', `${tallestPaneHeight}px`);\n }\n\n this.swiper?.update?.();\n };\n\n tearDownCarousel = () => {\n this.swiper.destroy();\n this.swiper = null;\n };\n\n updateCarouselPaneProps = () => {\n const { framelessPanes, paneArray, paneCount } = this;\n // Swiper's loop mode reorders slide DOM nodes, so DOM order no longer matches pane identity.\n // When Swiper has tagged a slide, use its data-swiper-slide-index as the authoritative index.\n paneArray.forEach((pane, domIndex) => {\n const swiperIndex = pane.getAttribute('data-swiper-slide-index');\n const rawIndex = swiperIndex !== null ? parseInt(swiperIndex, 10) : domIndex;\n const logicalIndex = paneCount > 0 ? rawIndex % paneCount : rawIndex;\n pane.index = logicalIndex;\n pane.siblingCount = paneCount;\n pane.isActivePane = logicalIndex === this.realIndex;\n pane.slotFrameless = framelessPanes || undefined;\n });\n // Duplicate panes mirror real panes visually but never own \"active\" — active stays unique\n // on the real DOM pane. Their `index` maps clicks back to the source via `slideToLoop` in\n // `carouselPaneClicked`.\n const duplicatePanes = Array.from(\n this.hostElement.querySelectorAll<HTMLQ2CarouselPaneElement>('q2-carousel-pane[data-q2-pane-duplicate]')\n );\n duplicatePanes.forEach((pane, domIndex) => {\n const swiperIndex = pane.getAttribute('data-swiper-slide-index');\n const rawIndex = swiperIndex !== null ? parseInt(swiperIndex, 10) : domIndex + paneCount;\n const logicalIndex = paneCount > 0 ? rawIndex % paneCount : rawIndex;\n pane.index = logicalIndex;\n pane.siblingCount = paneCount;\n pane.isActivePane = false;\n pane.slotFrameless = framelessPanes || undefined;\n });\n this.currentPaneCount = paneCount;\n };\n\n // #endregion\n // #region Render Methods\n\n renderAutoPlayBtn = () => {\n const { autoPlayInProgress } = this;\n return (\n <button\n type=\"button\"\n class=\"q2-carousel-autoplay-control\"\n aria-label={loc(\n autoPlayInProgress\n ? 'tecton.element.carousel.pausePlayLabel'\n : 'tecton.element.carousel.resumePlayLabel'\n )}\n onClick={() => this.handleAutoPlayPause(autoPlayInProgress ? 'pause' : 'play')}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n class=\"autoplay-icon\"\n aria-hidden=\"true\"\n >\n {autoPlayInProgress ? (\n <path d=\"M7.667 3.667h-2c-.737 0-1.334.597-1.334 1.333v14c0 .736.597 1.333 1.334 1.333h2C8.403 20.333 9 19.736 9 19V5c0-.736-.597-1.333-1.333-1.333Zm10.666 0h-2C15.597 3.667 15 4.264 15 5v14c0 .736.597 1.333 1.333 1.333h2c.737 0 1.334-.597 1.334-1.333V5c0-.736-.597-1.333-1.334-1.333Z\" />\n ) : (\n <path d=\"m6.868 3.837 12.656 7.008a1.316 1.316 0 0 1 0 2.31L6.868 20.163c-.892.494-1.993-.144-1.993-1.155V4.992c0-1.01 1.1-1.65 1.993-1.155Z\" />\n )}\n </svg>\n </button>\n );\n };\n\n renderInsufficientPanesDisplay = () => {\n let insufficientPanesContainerClasses = [\n 'insufficient-pane-feedback',\n this.useFullWidthPanes ? 'full-width-display' : 'content-peek-display',\n ];\n if (this.compactMode) insufficientPanesContainerClasses = [...insufficientPanesContainerClasses, 'compact'];\n\n return (\n <div class={insufficientPanesContainerClasses.join(' ')}>\n <div class=\"insufficient-panes-icon-wrapper\">\n <q2-icon type=\"warning\" />\n </div>\n <p class=\"insufficient-panes-header\">\n <strong>{loc('tecton.element.carousel.insufficientPanesMessageHeader')}</strong>\n </p>\n <p class=\"insufficient-panes-body\">{loc('tecton.element.carousel.insufficientPanesMessageBody')}</p>\n </div>\n );\n };\n\n renderNextNavBtn = () => {\n return (\n <div class=\"next-btn\">\n <button\n type=\"button\"\n class=\"q2-carousel-navigation-button q2-carousel-navigation-button-next\"\n aria-label={loc('tecton.element.carousel.nextItemLabel')}\n onClick={() => this.swiper?.slideNext()}\n >\n <q2-icon type=\"arrow-right\" />\n </button>\n </div>\n );\n };\n\n renderPaginationArea = () => {\n const { useDynamicPaginationDots, realIndex, paneCount } = this;\n const paginationContainerClasses = ['q2-carousel-pagination', 'autoplay'];\n if (useDynamicPaginationDots) paginationContainerClasses.push('dynamic');\n if (this.autoPlayInProgress) paginationContainerClasses.push('autoplay-on');\n\n return (\n <div\n class={paginationContainerClasses.join(' ')}\n role=\"tablist\"\n aria-label={loc('tecton.element.carousel.tabWrapperLabel')}\n >\n {Array.from({ length: paneCount }, (_, i) => i).map(index => {\n const isActive = index === realIndex;\n let btnClasses = ['q2-carousel-page-indicator', `q2-carousel-page-indicator-${index}`];\n if (isActive) btnClasses = [...btnClasses, 'active-page'];\n if (useDynamicPaginationDots) btnClasses = [...btnClasses, 'dynamic'];\n\n const withinOneOfActive = index === realIndex + 1 || index === realIndex - 1;\n if (withinOneOfActive) btnClasses = [...btnClasses, 'active-adjacent'];\n\n const withinTwoOfActive = index === realIndex + 2 || index === realIndex - 2;\n if (withinTwoOfActive) btnClasses = [...btnClasses, 'active-adjacent-adjacent'];\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n tabIndex={isActive ? undefined : -1}\n aria-selected={`${isActive}`}\n class={btnClasses.join(' ')}\n onClick={() => this.swiper?.slideToLoop(index)}\n onKeyDown={this.keydownHandler}\n aria-label={loc('tecton.element.carousel.itemDescription', [\n (index + 1).toString(),\n paneCount.toString(),\n ])}\n ></button>\n );\n })}\n </div>\n );\n };\n\n renderPrevNavBtn = () => {\n return (\n <div class=\"prev-btn\">\n <button\n type=\"button\"\n class=\"q2-carousel-navigation-button q2-carousel-navigation-button-prev\"\n aria-label={loc('tecton.element.carousel.previousItemLabel')}\n onClick={() => this.swiper?.slidePrev()}\n >\n <q2-icon type=\"arrow-left\" />\n </button>\n </div>\n );\n };\n\n render() {\n const {\n paneCount,\n useFullWidthPanes,\n framelessPanes,\n compactMode,\n showNavigationArrows,\n arrowPosition = 'bottom',\n insufficientPanes,\n autoPlay,\n hidePagination,\n ariaLiveValue,\n label,\n } = this;\n let carouselContainerClasses = ['q2-carousel-swiper-container', 'swiper'];\n if (useFullWidthPanes) carouselContainerClasses = [...carouselContainerClasses, 'full-width-display'];\n if (framelessPanes) carouselContainerClasses = [...carouselContainerClasses, 'frameless-display'];\n if (!useFullWidthPanes) carouselContainerClasses = [...carouselContainerClasses, 'content-peek-display'];\n if (compactMode) carouselContainerClasses = [...carouselContainerClasses, 'compact'];\n\n const paginationWrapperClasses = ['q2-carousel-pagination-navigation-wrapper'];\n if (showNavigationArrows && arrowPosition === 'bottom') paginationWrapperClasses.push('evenly-space');\n if (showNavigationArrows && arrowPosition === 'hug') paginationWrapperClasses.push('center-space');\n\n return (\n <Host\n id={`q2-carousel-${this.guid}`}\n class=\"q2-carousel-instance\"\n >\n {insufficientPanes ? (\n this.renderInsufficientPanesDisplay()\n ) : (\n <Fragment>\n {paneCount > 1 && (\n <div class={paginationWrapperClasses.join(' ')}>\n {showNavigationArrows &&\n ['bottom', 'hug'].includes(arrowPosition) &&\n this.renderPrevNavBtn()}\n\n <div class=\"q2-carousel-control-center-tray\">\n {!hidePagination && this.renderPaginationArea()}\n {autoPlay && this.renderAutoPlayBtn()}\n </div>\n\n {showNavigationArrows &&\n ['bottom', 'hug'].includes(arrowPosition) &&\n this.renderNextNavBtn()}\n </div>\n )}\n\n <div class=\"q2-carousel-section-wrapper\">\n {this.edgeFade && <div class=\"q2-carousel-edge-fade q2-carousel-edge-fade-left\"></div>}\n {this.edgeFade && <div class=\"q2-carousel-edge-fade q2-carousel-edge-fade-right\"></div>}\n <section\n class={carouselContainerClasses.join(' ')}\n ref={el => (this.carouselWrapper = el)}\n aria-roledescription=\"carousel\"\n aria-label={loc(label)}\n >\n <div\n class=\"q2-carousel-swiper-wrapper swiper-wrapper\"\n ref={el => (this.carouselPaneWrapperElement = el)}\n aria-live={ariaLiveValue}\n onKeyDown={this.keydownHandler}\n >\n <slot></slot>\n </div>\n {showNavigationArrows && arrowPosition === 'float' && (\n <div class=\"q2-carousel-floating-arrow-wrapper\">\n {this.renderPrevNavBtn()}\n {this.renderNextNavBtn()}\n </div>\n )}\n </section>\n </div>\n </Fragment>\n )}\n </Host>\n );\n }\n\n // #endregion\n}\n"]}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { expect } from "@playwright/test";
|
|
2
|
+
import { test } from "@stencil/playwright";
|
|
3
|
+
import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
|
|
4
|
+
const PANE = (n, total) => `
|
|
5
|
+
<q2-carousel-pane>
|
|
6
|
+
<q2-item style="--tct-action-group-margin: 0; --tct-item-vertical-spacing: 15px">
|
|
7
|
+
<div slot="header"><span>Pane ${n}</span></div>
|
|
8
|
+
<div slot="body" style="padding-top: 8px; font-size: 14px">
|
|
9
|
+
This carousel has a total of ${total} steps. This is step ${n}.
|
|
10
|
+
</div>
|
|
11
|
+
</q2-item>
|
|
12
|
+
</q2-carousel-pane>
|
|
13
|
+
`;
|
|
14
|
+
const PANES_5 = [1, 2, 3, 4, 5].map(n => PANE(n, 5)).join('');
|
|
15
|
+
const carousel = (attrs) => `<q2-carousel auto-height ${attrs}>${PANES_5}</q2-carousel>`;
|
|
16
|
+
const VARIANTS = [
|
|
17
|
+
{
|
|
18
|
+
name: 'default',
|
|
19
|
+
html: carousel(''),
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'with-arrows',
|
|
23
|
+
html: carousel('show-navigation-arrows'),
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'arrows-bottom',
|
|
27
|
+
html: carousel('show-navigation-arrows arrow-position="bottom"'),
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'arrows-hug',
|
|
31
|
+
html: carousel('show-navigation-arrows arrow-position="hug"'),
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'arrows-float',
|
|
35
|
+
html: carousel('show-navigation-arrows arrow-position="float"'),
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'full-width-panes',
|
|
39
|
+
html: carousel('full-width-panes show-navigation-arrows'),
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'frameless-panes',
|
|
43
|
+
html: carousel('frameless-panes show-navigation-arrows'),
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'edge-fade',
|
|
47
|
+
html: carousel('edge-fade show-navigation-arrows'),
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'hide-pagination',
|
|
51
|
+
html: carousel('hide-pagination show-navigation-arrows'),
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
// Focus is exercised on the with-arrows variant, which has all three interactive
|
|
55
|
+
// regions present: navigation arrows, pagination indicator (tablist), and the
|
|
56
|
+
// active pane. Tab order is: prev-arrow → indicator → next-arrow → pane.
|
|
57
|
+
const FOCUS_VARIANT = {
|
|
58
|
+
name: 'with-arrows',
|
|
59
|
+
html: carousel('show-navigation-arrows'),
|
|
60
|
+
};
|
|
61
|
+
const restingCase = (variant, theme) => {
|
|
62
|
+
test(`q2-carousel--${variant.name}--resting — ${theme}`, async ({ page }) => {
|
|
63
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
64
|
+
await expect(page).toHaveScreenshot(`q2-carousel--${variant.name}--resting--${theme}.png`);
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
const focusArrowCase = (variant, theme) => {
|
|
68
|
+
test(`q2-carousel--${variant.name}--focus-arrow — ${theme}`, async ({ page }) => {
|
|
69
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
70
|
+
await page.keyboard.press('Tab');
|
|
71
|
+
await expect(page).toHaveScreenshot(`q2-carousel--${variant.name}--focus-arrow--${theme}.png`);
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
const focusIndicatorCase = (variant, theme) => {
|
|
75
|
+
test(`q2-carousel--${variant.name}--focus-indicator — ${theme}`, async ({ page }) => {
|
|
76
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
77
|
+
await page.keyboard.press('Tab');
|
|
78
|
+
await page.keyboard.press('Tab');
|
|
79
|
+
await expect(page).toHaveScreenshot(`q2-carousel--${variant.name}--focus-indicator--${theme}.png`);
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
const focusPaneCase = (variant, theme) => {
|
|
83
|
+
test(`q2-carousel--${variant.name}--focus-pane — ${theme}`, async ({ page }) => {
|
|
84
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
85
|
+
await page.keyboard.press('Tab');
|
|
86
|
+
await page.keyboard.press('Tab');
|
|
87
|
+
await page.keyboard.press('Tab');
|
|
88
|
+
await page.keyboard.press('Tab');
|
|
89
|
+
await expect(page).toHaveScreenshot(`q2-carousel--${variant.name}--focus-pane--${theme}.png`);
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
test.describe('q2-carousel — variants × themes', () => {
|
|
93
|
+
for (const variant of VARIANTS) {
|
|
94
|
+
for (const theme of THEMES) {
|
|
95
|
+
restingCase(variant, theme);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
for (const theme of THEMES) {
|
|
99
|
+
focusArrowCase(FOCUS_VARIANT, theme);
|
|
100
|
+
focusIndicatorCase(FOCUS_VARIANT, theme);
|
|
101
|
+
focusPaneCase(FOCUS_VARIANT, theme);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=q2-carousel-test.vr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"q2-carousel-test.vr.js","sourceRoot":"","sources":["../../../../../src/components/q2-carousel/test/q2-carousel-test.vr.ts"],"names":[],"mappings":"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","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 PANE = (n: number, total: number) => `\n <q2-carousel-pane>\n <q2-item style=\"--tct-action-group-margin: 0; --tct-item-vertical-spacing: 15px\">\n <div slot=\"header\"><span>Pane ${n}</span></div>\n <div slot=\"body\" style=\"padding-top: 8px; font-size: 14px\">\n This carousel has a total of ${total} steps. This is step ${n}.\n </div>\n </q2-item>\n </q2-carousel-pane>\n`;\n\nconst PANES_5 = [1, 2, 3, 4, 5].map(n => PANE(n, 5)).join('');\n\nconst carousel = (attrs: string) => `<q2-carousel auto-height ${attrs}>${PANES_5}</q2-carousel>`;\n\nconst VARIANTS: Variant[] = [\n {\n name: 'default',\n html: carousel(''),\n },\n {\n name: 'with-arrows',\n html: carousel('show-navigation-arrows'),\n },\n {\n name: 'arrows-bottom',\n html: carousel('show-navigation-arrows arrow-position=\"bottom\"'),\n },\n {\n name: 'arrows-hug',\n html: carousel('show-navigation-arrows arrow-position=\"hug\"'),\n },\n {\n name: 'arrows-float',\n html: carousel('show-navigation-arrows arrow-position=\"float\"'),\n },\n {\n name: 'full-width-panes',\n html: carousel('full-width-panes show-navigation-arrows'),\n },\n {\n name: 'frameless-panes',\n html: carousel('frameless-panes show-navigation-arrows'),\n },\n {\n name: 'edge-fade',\n html: carousel('edge-fade show-navigation-arrows'),\n },\n {\n name: 'hide-pagination',\n html: carousel('hide-pagination show-navigation-arrows'),\n },\n];\n\n// Focus is exercised on the with-arrows variant, which has all three interactive\n// regions present: navigation arrows, pagination indicator (tablist), and the\n// active pane. Tab order is: prev-arrow → indicator → next-arrow → pane.\nconst FOCUS_VARIANT: Variant = {\n name: 'with-arrows',\n html: carousel('show-navigation-arrows'),\n};\n\nconst restingCase = (variant: Variant, theme: Theme) => {\n test(`q2-carousel--${variant.name}--resting — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme, setupLoc: true });\n await expect(page).toHaveScreenshot(`q2-carousel--${variant.name}--resting--${theme}.png`);\n });\n};\n\nconst focusArrowCase = (variant: Variant, theme: Theme) => {\n test(`q2-carousel--${variant.name}--focus-arrow — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme, setupLoc: true });\n await page.keyboard.press('Tab');\n await expect(page).toHaveScreenshot(`q2-carousel--${variant.name}--focus-arrow--${theme}.png`);\n });\n};\n\nconst focusIndicatorCase = (variant: Variant, theme: Theme) => {\n test(`q2-carousel--${variant.name}--focus-indicator — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme, setupLoc: true });\n await page.keyboard.press('Tab');\n await page.keyboard.press('Tab');\n await expect(page).toHaveScreenshot(`q2-carousel--${variant.name}--focus-indicator--${theme}.png`);\n });\n};\n\nconst focusPaneCase = (variant: Variant, theme: Theme) => {\n test(`q2-carousel--${variant.name}--focus-pane — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme, setupLoc: true });\n await page.keyboard.press('Tab');\n await page.keyboard.press('Tab');\n await page.keyboard.press('Tab');\n await page.keyboard.press('Tab');\n await expect(page).toHaveScreenshot(`q2-carousel--${variant.name}--focus-pane--${theme}.png`);\n });\n};\n\ntest.describe('q2-carousel — variants × themes', () => {\n for (const variant of VARIANTS) {\n for (const theme of THEMES) {\n restingCase(variant, theme);\n }\n }\n for (const theme of THEMES) {\n focusArrowCase(FOCUS_VARIANT, theme);\n focusIndicatorCase(FOCUS_VARIANT, theme);\n focusPaneCase(FOCUS_VARIANT, theme);\n }\n});\n"]}
|
|
@@ -65,10 +65,25 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
/**
|
|
69
|
+
* @prop --tct-carousel-pane-border-color: (<color>) Controls the border color of the carousel pane container.
|
|
70
|
+
* @prop --tct-carousel-pane-border-radius: (<length-percentage>) Controls the corner radius of the carousel pane container.
|
|
71
|
+
* @prop --tct-carousel-pane-border-width: (<length>) Controls the border width of the carousel pane container.
|
|
72
|
+
* @prop --tct-carousel-pane-box-shadow: (*) Controls the box shadow of the carousel pane container.
|
|
73
|
+
* @prop --tct-carousel-pane-focus-visible-box-shadow: (*) Controls the box shadow of the carousel pane container when focused via keyboard.
|
|
74
|
+
* @prop --tct-carousel-pane-height: (<length-percentage>) Controls the height of the carousel pane container.
|
|
75
|
+
* @prop --tct-carousel-pane-inactive-background: (<color>) Controls the background color of the carousel pane container when inactive.
|
|
76
|
+
* @prop --tct-carousel-pane-inactive-box-shadow: (*) Controls the box shadow of the carousel pane container when inactive.
|
|
77
|
+
* @prop --tct-carousel-pane-padding: (<length-percentage>+) Controls the inner padding of the carousel pane container.
|
|
78
|
+
*/
|
|
79
|
+
q2-carousel .swiper-wrapper {
|
|
80
|
+
align-items: stretch;
|
|
81
|
+
}
|
|
68
82
|
q2-carousel .swiper-slide {
|
|
83
|
+
display: flex;
|
|
69
84
|
flex-shrink: 0;
|
|
70
85
|
width: 100%;
|
|
71
|
-
height:
|
|
86
|
+
height: auto;
|
|
72
87
|
position: relative;
|
|
73
88
|
transition-property: transform;
|
|
74
89
|
transition: all 0.2s;
|
|
@@ -79,6 +94,12 @@ q2-carousel .q2-carousel-swiper-container.full-width-display q2-carousel-pane.q2
|
|
|
79
94
|
q2-carousel .q2-carousel-swiper-container.full-width-display q2-carousel-pane.q2-carousel-pane:not([is-active-pane]) .q2-carousel-pane-main-content {
|
|
80
95
|
box-shadow: var(--tct-carousel-pane-box-shadow, var(--comp-carousel-shadow));
|
|
81
96
|
}
|
|
97
|
+
q2-carousel .q2-carousel-swiper-container.frameless-display q2-carousel-pane.q2-carousel-pane .q2-carousel-pane-main-content {
|
|
98
|
+
box-shadow: none;
|
|
99
|
+
}
|
|
100
|
+
q2-carousel[auto-height] q2-carousel-pane.q2-carousel-pane .q2-carousel-pane-main-content {
|
|
101
|
+
height: auto;
|
|
102
|
+
}
|
|
82
103
|
|
|
83
104
|
q2-carousel-pane.q2-carousel-pane {
|
|
84
105
|
--comp-carousel-pane-tween: var(--tct-tween-1, var(--app-tween-1, 0.2s ease));
|
|
@@ -104,6 +125,10 @@ q2-carousel-pane.q2-carousel-pane button:hover {
|
|
|
104
125
|
opacity: 0.7;
|
|
105
126
|
}
|
|
106
127
|
q2-carousel-pane.q2-carousel-pane .q2-carousel-pane-main-content {
|
|
128
|
+
box-sizing: border-box;
|
|
129
|
+
flex: 1 1 auto;
|
|
130
|
+
width: 100%;
|
|
131
|
+
min-height: var(--q2-carousel-equal-pane-height, auto);
|
|
107
132
|
box-shadow: var(--tct-carousel-pane-box-shadow, var(--comp-carousel-shadow));
|
|
108
133
|
transition: var(--comp-carousel-pane-tween);
|
|
109
134
|
background: var(--tct-carousel-background, var(--tct-carousel-background-color, var(--t-carousel-background-color, var(--tct-white, var(--app-white, #ffffff)))));
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { expect } from "@playwright/test";
|
|
2
|
+
import { test } from "@stencil/playwright";
|
|
3
|
+
import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
|
|
4
|
+
const CHART_SIZE = 'style="width: 600px; height: 400px"';
|
|
5
|
+
const SHORT_DATA = [
|
|
6
|
+
{ id: 'sun', name: 'Sun', value: 45 },
|
|
7
|
+
{ id: 'mon', name: 'Mon', value: 36 },
|
|
8
|
+
{ id: 'tue', name: 'Tue', value: 62 },
|
|
9
|
+
{ id: 'wed', name: 'Wed', value: 51 },
|
|
10
|
+
{ id: 'thu', name: 'Thu', value: 104 },
|
|
11
|
+
{ id: 'fri', name: 'Fri', value: 122 },
|
|
12
|
+
{ id: 'sat', name: 'Sat', value: 215 },
|
|
13
|
+
];
|
|
14
|
+
const LONG_NAME_DATA = [
|
|
15
|
+
{ id: 'jan', name: 'January', value: 45 },
|
|
16
|
+
{ id: 'feb', name: 'February', value: 36 },
|
|
17
|
+
{ id: 'mar', name: 'March', value: 62 },
|
|
18
|
+
{ id: 'apr', name: 'April', value: 51 },
|
|
19
|
+
{ id: 'may', name: 'May', value: 104 },
|
|
20
|
+
{ id: 'jun', name: 'June', value: 122 },
|
|
21
|
+
{ id: 'jul', name: 'July', value: 215 },
|
|
22
|
+
];
|
|
23
|
+
const VARIANTS = [
|
|
24
|
+
{
|
|
25
|
+
name: 'default',
|
|
26
|
+
html: `<q2-chart-area ${CHART_SIZE}></q2-chart-area>`,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'with-name',
|
|
30
|
+
html: `<q2-chart-area ${CHART_SIZE} chart-name="Weekly Spending" show-chart-name="true"></q2-chart-area>`,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'name-center',
|
|
34
|
+
html: `<q2-chart-area ${CHART_SIZE} chart-name="Weekly Spending" show-chart-name="true" align-chart-name="center"></q2-chart-area>`,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'name-right',
|
|
38
|
+
html: `<q2-chart-area ${CHART_SIZE} chart-name="Weekly Spending" show-chart-name="true" align-chart-name="right"></q2-chart-area>`,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'with-subtitle',
|
|
42
|
+
html: `<q2-chart-area ${CHART_SIZE} chart-name="Weekly Spending" chart-sub-title="Last 7 days" show-chart-name="true"></q2-chart-area>`,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'grid-horizontal',
|
|
46
|
+
html: `<q2-chart-area ${CHART_SIZE} grid-lines="horizontal"></q2-chart-area>`,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'grid-vertical',
|
|
50
|
+
html: `<q2-chart-area ${CHART_SIZE} grid-lines="vertical"></q2-chart-area>`,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'grid-off',
|
|
54
|
+
html: `<q2-chart-area ${CHART_SIZE} grid-lines="off"></q2-chart-area>`,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'datapoint-labels',
|
|
58
|
+
html: `<q2-chart-area ${CHART_SIZE} show-datapoint-labels="true"></q2-chart-area>`,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'hide-name-axis',
|
|
62
|
+
html: `<q2-chart-area ${CHART_SIZE} hide-name-axis-labels="true"></q2-chart-area>`,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'hide-value-axis',
|
|
66
|
+
html: `<q2-chart-area ${CHART_SIZE} hide-value-axis-labels="true"></q2-chart-area>`,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'offset-names',
|
|
70
|
+
html: `<q2-chart-area ${CHART_SIZE} offset-data-names="true"></q2-chart-area>`,
|
|
71
|
+
data: LONG_NAME_DATA,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'format-currency',
|
|
75
|
+
html: `<q2-chart-area ${CHART_SIZE} format="currency" format-modifier="2dec"></q2-chart-area>`,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: 'names-truncate',
|
|
79
|
+
html: `<q2-chart-area ${CHART_SIZE} data-names-overflow="truncate" data-names-width="40"></q2-chart-area>`,
|
|
80
|
+
data: LONG_NAME_DATA,
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'combined-hero',
|
|
84
|
+
html: `<q2-chart-area ${CHART_SIZE} chart-name="Weekly Spending" show-chart-name="true" grid-lines="horizontal" show-datapoint-labels="true"></q2-chart-area>`,
|
|
85
|
+
},
|
|
86
|
+
];
|
|
87
|
+
const setChartData = async (page, data) => {
|
|
88
|
+
await page.locator('q2-chart-area').evaluate((el, payload) => {
|
|
89
|
+
el.data = payload;
|
|
90
|
+
}, data);
|
|
91
|
+
// echarts marks the canvas with aria-hidden="true" once the 'finished' event has fired.
|
|
92
|
+
// Waiting on that attribute keeps the snapshot from racing the canvas paint.
|
|
93
|
+
await page.locator('q2-chart-area').evaluate(async (el) => {
|
|
94
|
+
var _a;
|
|
95
|
+
const canvas = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('canvas');
|
|
96
|
+
if (!canvas)
|
|
97
|
+
return;
|
|
98
|
+
if (canvas.getAttribute('aria-hidden') === 'true')
|
|
99
|
+
return;
|
|
100
|
+
await new Promise(resolve => {
|
|
101
|
+
const observer = new MutationObserver(() => {
|
|
102
|
+
if (canvas.getAttribute('aria-hidden') === 'true') {
|
|
103
|
+
observer.disconnect();
|
|
104
|
+
resolve();
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
observer.observe(canvas, { attributes: true, attributeFilter: ['aria-hidden'] });
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
const restingCase = (variant, theme) => {
|
|
112
|
+
test(`q2-chart-area--${variant.name}--resting — ${theme}`, async ({ page }) => {
|
|
113
|
+
var _a;
|
|
114
|
+
await setupPage(page, variant.html, { theme });
|
|
115
|
+
await setChartData(page, (_a = variant.data) !== null && _a !== void 0 ? _a : SHORT_DATA);
|
|
116
|
+
await expect(page).toHaveScreenshot(`q2-chart-area--${variant.name}--resting--${theme}.png`);
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
test.describe('q2-chart-area — variants × themes', () => {
|
|
120
|
+
for (const variant of VARIANTS) {
|
|
121
|
+
for (const theme of THEMES) {
|
|
122
|
+
restingCase(variant, theme);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
//# sourceMappingURL=q2-chart-area-test.vr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"q2-chart-area-test.vr.js","sourceRoot":"","sources":["../../../../../src/components/q2-chart-area/test/q2-chart-area-test.vr.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@playwright/test';\nimport { test } from '@stencil/playwright';\nimport { setupPage, THEMES, Theme } from '../../../utils/test/vr-helpers';\n\nconst CHART_SIZE = 'style=\"width: 600px; height: 400px\"';\n\nconst SHORT_DATA = [\n { id: 'sun', name: 'Sun', value: 45 },\n { id: 'mon', name: 'Mon', value: 36 },\n { id: 'tue', name: 'Tue', value: 62 },\n { id: 'wed', name: 'Wed', value: 51 },\n { id: 'thu', name: 'Thu', value: 104 },\n { id: 'fri', name: 'Fri', value: 122 },\n { id: 'sat', name: 'Sat', value: 215 },\n];\n\nconst LONG_NAME_DATA = [\n { id: 'jan', name: 'January', value: 45 },\n { id: 'feb', name: 'February', value: 36 },\n { id: 'mar', name: 'March', value: 62 },\n { id: 'apr', name: 'April', value: 51 },\n { id: 'may', name: 'May', value: 104 },\n { id: 'jun', name: 'June', value: 122 },\n { id: 'jul', name: 'July', value: 215 },\n];\n\ntype Variant = {\n name: string;\n html: string;\n data?: Array<{ id: string; name: string; value: number }>;\n};\n\nconst VARIANTS: Variant[] = [\n {\n name: 'default',\n html: `<q2-chart-area ${CHART_SIZE}></q2-chart-area>`,\n },\n {\n name: 'with-name',\n html: `<q2-chart-area ${CHART_SIZE} chart-name=\"Weekly Spending\" show-chart-name=\"true\"></q2-chart-area>`,\n },\n {\n name: 'name-center',\n html: `<q2-chart-area ${CHART_SIZE} chart-name=\"Weekly Spending\" show-chart-name=\"true\" align-chart-name=\"center\"></q2-chart-area>`,\n },\n {\n name: 'name-right',\n html: `<q2-chart-area ${CHART_SIZE} chart-name=\"Weekly Spending\" show-chart-name=\"true\" align-chart-name=\"right\"></q2-chart-area>`,\n },\n {\n name: 'with-subtitle',\n html: `<q2-chart-area ${CHART_SIZE} chart-name=\"Weekly Spending\" chart-sub-title=\"Last 7 days\" show-chart-name=\"true\"></q2-chart-area>`,\n },\n {\n name: 'grid-horizontal',\n html: `<q2-chart-area ${CHART_SIZE} grid-lines=\"horizontal\"></q2-chart-area>`,\n },\n {\n name: 'grid-vertical',\n html: `<q2-chart-area ${CHART_SIZE} grid-lines=\"vertical\"></q2-chart-area>`,\n },\n {\n name: 'grid-off',\n html: `<q2-chart-area ${CHART_SIZE} grid-lines=\"off\"></q2-chart-area>`,\n },\n {\n name: 'datapoint-labels',\n html: `<q2-chart-area ${CHART_SIZE} show-datapoint-labels=\"true\"></q2-chart-area>`,\n },\n {\n name: 'hide-name-axis',\n html: `<q2-chart-area ${CHART_SIZE} hide-name-axis-labels=\"true\"></q2-chart-area>`,\n },\n {\n name: 'hide-value-axis',\n html: `<q2-chart-area ${CHART_SIZE} hide-value-axis-labels=\"true\"></q2-chart-area>`,\n },\n {\n name: 'offset-names',\n html: `<q2-chart-area ${CHART_SIZE} offset-data-names=\"true\"></q2-chart-area>`,\n data: LONG_NAME_DATA,\n },\n {\n name: 'format-currency',\n html: `<q2-chart-area ${CHART_SIZE} format=\"currency\" format-modifier=\"2dec\"></q2-chart-area>`,\n },\n {\n name: 'names-truncate',\n html: `<q2-chart-area ${CHART_SIZE} data-names-overflow=\"truncate\" data-names-width=\"40\"></q2-chart-area>`,\n data: LONG_NAME_DATA,\n },\n {\n name: 'combined-hero',\n html: `<q2-chart-area ${CHART_SIZE} chart-name=\"Weekly Spending\" show-chart-name=\"true\" grid-lines=\"horizontal\" show-datapoint-labels=\"true\"></q2-chart-area>`,\n },\n];\n\ntype ChartDatum = { id: string; name: string; value: number };\n\nconst setChartData = async (page: import('@playwright/test').Page, data: ChartDatum[]) => {\n await page.locator('q2-chart-area').evaluate((el: HTMLElement & { data: ChartDatum[] }, payload) => {\n el.data = payload;\n }, data);\n // echarts marks the canvas with aria-hidden=\"true\" once the 'finished' event has fired.\n // Waiting on that attribute keeps the snapshot from racing the canvas paint.\n await page.locator('q2-chart-area').evaluate(async (el: HTMLElement) => {\n const canvas = el.shadowRoot?.querySelector('canvas');\n if (!canvas) return;\n if (canvas.getAttribute('aria-hidden') === 'true') return;\n await new Promise<void>(resolve => {\n const observer = new MutationObserver(() => {\n if (canvas.getAttribute('aria-hidden') === 'true') {\n observer.disconnect();\n resolve();\n }\n });\n observer.observe(canvas, { attributes: true, attributeFilter: ['aria-hidden'] });\n });\n });\n};\n\nconst restingCase = (variant: Variant, theme: Theme) => {\n test(`q2-chart-area--${variant.name}--resting — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n await setChartData(page, variant.data ?? SHORT_DATA);\n await expect(page).toHaveScreenshot(`q2-chart-area--${variant.name}--resting--${theme}.png`);\n });\n};\n\ntest.describe('q2-chart-area — variants × themes', () => {\n for (const variant of VARIANTS) {\n for (const theme of THEMES) {\n restingCase(variant, theme);\n }\n }\n});\n"]}
|