q2-tecton-elements 1.70.2 → 1.71.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 +556 -231
- package/dist/cjs/click-elsewhere_3.cjs.entry.js +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-group_2.cjs.entry.js +3 -3
- package/dist/cjs/q2-action-sheet.cjs.entry.js +4 -3
- package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
- package/dist/cjs/q2-badge_2.cjs.entry.js +17 -8
- package/dist/cjs/q2-btn_2.cjs.entry.js +2 -2
- package/dist/cjs/q2-calendar.cjs.entry.js +8 -6
- package/dist/cjs/q2-card-image.cjs.entry.js +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +108 -74
- 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 +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox_2.cjs.entry.js +3 -3
- package/dist/cjs/q2-currency.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +3 -3
- 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-form.cjs.entry.js +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-legend.cjs.entry.js +1 -1
- package/dist/cjs/q2-link_2.cjs.entry.js +2 -2
- package/dist/cjs/q2-message.cjs.entry.js +1 -1
- package/dist/cjs/q2-meter.cjs.entry.js +1 -1
- package/dist/cjs/q2-modal.cjs.entry.js +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
- package/dist/cjs/q2-option.cjs.entry.js +1 -1
- package/dist/cjs/q2-otp.cjs.entry.js +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +18 -2
- package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +1 -1
- package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
- package/dist/cjs/q2-search.cjs.entry.js +2 -2
- package/dist/cjs/q2-section.cjs.entry.js +3 -3
- package/dist/cjs/q2-select.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +32 -9
- package/dist/cjs/q2-stepper.cjs.entry.js +18 -4
- package/dist/cjs/q2-surface.cjs.entry.js +3 -3
- package/dist/cjs/q2-tab-container.cjs.entry.js +89 -20
- 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 +3 -3
- package/dist/cjs/q2-toast.cjs.entry.js +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +26 -15
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +3 -3
- package/dist/collection/components/q2-action-group/q2-action-group.css +22 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +24 -1
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +3 -2
- package/dist/collection/components/q2-avatar/q2-avatar.css +23 -1
- package/dist/collection/components/q2-avatar/test/q2-avatar-test.vr.js +13 -1
- package/dist/collection/components/q2-badge/q2-badge.css +26 -4
- package/dist/collection/components/q2-badge/test/q2-badge-test.vr.js +13 -1
- package/dist/collection/components/q2-btn/q2-btn.css +53 -9
- package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js +19 -1
- package/dist/collection/components/q2-calendar/q2-calendar.css +26 -4
- package/dist/collection/components/q2-calendar/q2-calendar.js +7 -5
- package/dist/collection/components/q2-calendar/q2-month-picker.css +22 -0
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js +34 -1
- package/dist/collection/components/q2-card/q2-card.css +23 -1
- package/dist/collection/components/q2-card/test/q2-card-test.vr.js +10 -1
- package/dist/collection/components/q2-card-image/q2-card-image.css +23 -1
- package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js +9 -1
- package/dist/collection/components/q2-carousel/q2-carousel.css +29 -39
- package/dist/collection/components/q2-carousel/q2-carousel.js +122 -69
- package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js +5 -4
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +22 -0
- package/dist/collection/components/q2-chart-area/q2-chart-area.css +22 -0
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.css +22 -0
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +24 -2
- package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js +13 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.css +23 -1
- package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js +11 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +23 -1
- package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js +11 -1
- package/dist/collection/components/q2-currency/q2-currency.css +25 -3
- package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js +13 -1
- package/dist/collection/components/q2-data-table/q2-data-table.css +24 -2
- package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js +11 -1
- package/dist/collection/components/q2-detail/q2-detail.css +32 -10
- package/dist/collection/components/q2-dropdown/q2-dropdown.css +22 -0
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +22 -0
- package/dist/collection/components/q2-editable-field/q2-editable-field.css +22 -0
- package/dist/collection/components/q2-editable-field/q2-editable-field.js +2 -2
- package/dist/collection/components/q2-example/q2-example.css +23 -0
- package/dist/collection/components/q2-file-picker/q2-file-picker.css +57 -10
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js +14 -1
- package/dist/collection/components/q2-form/q2-form.css +22 -0
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.css +25 -3
- package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js +13 -1
- package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/q2-icon.css +22 -0
- package/dist/collection/components/q2-input/q2-input.css +26 -4
- package/dist/collection/components/q2-input/q2-input.js +39 -7
- package/dist/collection/components/q2-input/test/q2-input-test.vr.js +36 -1
- package/dist/collection/components/q2-item/q2-item.css +46 -2
- package/dist/collection/components/q2-item/test/q2-item-test.vr.js +12 -1
- package/dist/collection/components/q2-legend/q2-legend.css +24 -2
- package/dist/collection/components/q2-link/q2-link.css +22 -0
- package/dist/collection/components/q2-list/q2-list.css +46 -2
- package/dist/collection/components/q2-list/test/q2-list-test.vr.js +12 -1
- package/dist/collection/components/q2-loading/q2-loading.css +23 -0
- package/dist/collection/components/q2-message/q2-message.css +22 -0
- package/dist/collection/components/q2-meter/q2-meter.css +25 -3
- package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js +12 -1
- package/dist/collection/components/q2-modal/q2-modal.css +23 -1
- package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js +12 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.css +23 -1
- package/dist/collection/components/q2-option/q2-option.css +22 -0
- package/dist/collection/components/q2-option-list/q2-option-list.css +22 -0
- package/dist/collection/components/q2-otp/q2-otp.css +27 -4
- package/dist/collection/components/q2-otp/test/q2-otp-test.vr.js +12 -1
- package/dist/collection/components/q2-pagination/q2-pagination.css +22 -0
- package/dist/collection/components/q2-pill/q2-pill.css +42 -2
- package/dist/collection/components/q2-pill/q2-pill.js +18 -1
- package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js +27 -1
- package/dist/collection/components/q2-popover/q2-popover.css +22 -7
- package/dist/collection/components/q2-radio/q2-radio.css +24 -2
- package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js +12 -1
- package/dist/collection/components/q2-radio-group/q2-radio-group.css +23 -1
- package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js +11 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.css +22 -0
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.css +22 -0
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-search/q2-search.css +22 -0
- package/dist/collection/components/q2-search/q2-search.js +1 -1
- package/dist/collection/components/q2-section/q2-section.css +23 -1
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-section/test/q2-section-test.vr.js +11 -1
- package/dist/collection/components/q2-select/q2-select.css +22 -0
- package/dist/collection/components/q2-stepper/q2-stepper.css +38 -4
- package/dist/collection/components/q2-stepper/q2-stepper.js +17 -3
- package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js +12 -1
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.css +22 -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 +39 -5
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +31 -8
- package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js +16 -1
- package/dist/collection/components/q2-surface/q2-surface.css +71 -32
- package/dist/collection/components/q2-surface/q2-surface.js +7 -7
- package/dist/collection/components/q2-surface/test/q2-surface-test.vr.js +54 -0
- package/dist/collection/components/q2-tab-container/q2-tab-container.css +112 -6
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +114 -21
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js +24 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.css +22 -0
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tag/q2-tag.css +25 -2
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js +21 -1
- package/dist/collection/components/q2-textarea/q2-textarea.css +24 -2
- package/dist/collection/components/q2-textarea/q2-textarea.js +2 -2
- package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js +16 -1
- package/dist/collection/components/q2-toast/q2-toast.css +22 -0
- package/dist/collection/components/q2-tooltip/q2-tooltip.css +27 -19
- package/dist/collection/components/q2-tooltip/q2-tooltip.js +32 -21
- package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js +13 -1
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.css +22 -0
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/collection/utils/helpers.js +29 -6
- package/dist/collection/utils/test/vr-helpers.js +7 -0
- package/dist/components/q2-action-group2.js +1 -1
- package/dist/components/q2-action-sheet.js +21 -18
- package/dist/components/q2-avatar2.js +1 -1
- package/dist/components/q2-badge2.js +1 -1
- package/dist/components/q2-btn2.js +15 -15
- package/dist/components/q2-calendar.js +306 -301
- package/dist/components/q2-card-image.js +6 -6
- package/dist/components/q2-card.js +14 -14
- package/dist/components/q2-carousel-pane2.js +1 -1
- package/dist/components/q2-carousel.js +633 -585
- package/dist/components/q2-chart-area.js +1 -1
- package/dist/components/q2-chart-bar.js +70 -70
- package/dist/components/q2-chart-donut.js +1 -1
- package/dist/components/q2-checkbox-group.js +42 -42
- package/dist/components/q2-checkbox2.js +1 -1
- package/dist/components/q2-currency.js +32 -32
- package/dist/components/q2-data-table.js +34 -34
- package/dist/components/q2-detail.js +5 -5
- package/dist/components/q2-dropdown-item2.js +11 -11
- package/dist/components/q2-dropdown.js +17 -17
- package/dist/components/q2-editable-field.js +12 -11
- package/dist/components/q2-example.js +15 -15
- package/dist/components/q2-file-picker.js +25 -25
- package/dist/components/q2-form.js +11 -11
- package/dist/components/q2-formatted-text.js +5 -5
- package/dist/components/q2-icon2.js +1 -1
- package/dist/components/q2-input2.js +24 -13
- package/dist/components/q2-item2.js +1 -1
- package/dist/components/q2-legend2.js +56 -56
- package/dist/components/q2-link2.js +6 -6
- package/dist/components/q2-list2.js +22 -22
- package/dist/components/q2-loading2.js +1 -1
- package/dist/components/q2-message2.js +20 -20
- package/dist/components/q2-meter.js +1 -1
- package/dist/components/q2-modal.js +3 -3
- package/dist/components/q2-month-picker.js +10 -10
- package/dist/components/q2-optgroup2.js +7 -7
- package/dist/components/q2-option-list2.js +34 -34
- package/dist/components/q2-option2.js +13 -13
- package/dist/components/q2-otp.js +5 -5
- package/dist/components/q2-pagination.js +58 -58
- package/dist/components/q2-pill.js +66 -54
- package/dist/components/q2-popover2.js +1 -1
- package/dist/components/q2-radio-group.js +5 -5
- package/dist/components/q2-radio.js +14 -14
- package/dist/components/q2-relative-time.js +10 -10
- package/dist/components/q2-resize-observer2.js +9 -9
- package/dist/components/q2-search.js +5 -5
- package/dist/components/q2-section.js +22 -22
- package/dist/components/q2-select2.js +1 -1
- package/dist/components/q2-stepper-pane.js +33 -33
- package/dist/components/q2-stepper-vertical.js +84 -60
- package/dist/components/q2-stepper.js +79 -65
- package/dist/components/q2-surface.js +14 -14
- package/dist/components/q2-tab-container.js +110 -55
- package/dist/components/q2-tab-pane.js +7 -7
- package/dist/components/q2-tag2.js +39 -39
- package/dist/components/q2-textarea.js +16 -16
- package/dist/components/q2-toast.js +22 -22
- package/dist/components/q2-tooltip2.js +26 -25
- package/dist/components/tecton-tab-pane.js +11 -11
- package/dist/esm/click-elsewhere_3.entry.js +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-group_2.entry.js +3 -3
- package/dist/esm/q2-action-sheet.entry.js +4 -3
- package/dist/esm/q2-avatar.entry.js +1 -1
- package/dist/esm/q2-badge_2.entry.js +17 -8
- package/dist/esm/q2-btn_2.entry.js +2 -2
- package/dist/esm/q2-calendar.entry.js +8 -6
- package/dist/esm/q2-card-image.entry.js +1 -1
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +1 -1
- package/dist/esm/q2-carousel.entry.js +104 -70
- 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 +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +1 -1
- package/dist/esm/q2-checkbox_2.entry.js +3 -3
- package/dist/esm/q2-currency.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +1 -1
- package/dist/esm/q2-detail.entry.js +1 -1
- package/dist/esm/q2-dropdown-item.entry.js +1 -1
- package/dist/esm/q2-dropdown.entry.js +1 -1
- package/dist/esm/q2-editable-field.entry.js +3 -3
- package/dist/esm/q2-example.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js +1 -1
- package/dist/esm/q2-form.entry.js +1 -1
- package/dist/esm/q2-formatted-text.entry.js +1 -1
- package/dist/esm/q2-icon.entry.js +1 -1
- package/dist/esm/q2-item.entry.js +1 -1
- package/dist/esm/q2-legend.entry.js +1 -1
- package/dist/esm/q2-link_2.entry.js +2 -2
- package/dist/esm/q2-message.entry.js +1 -1
- package/dist/esm/q2-meter.entry.js +1 -1
- package/dist/esm/q2-modal.entry.js +1 -1
- package/dist/esm/q2-month-picker.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +1 -1
- package/dist/esm/q2-option.entry.js +1 -1
- package/dist/esm/q2-otp.entry.js +1 -1
- package/dist/esm/q2-pagination.entry.js +1 -1
- package/dist/esm/q2-pill.entry.js +18 -2
- package/dist/esm/q2-radio-group.entry.js +1 -1
- package/dist/esm/q2-radio.entry.js +1 -1
- package/dist/esm/q2-relative-time.entry.js +2 -2
- package/dist/esm/q2-search.entry.js +2 -2
- package/dist/esm/q2-section.entry.js +3 -3
- package/dist/esm/q2-select.entry.js +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +2 -2
- package/dist/esm/q2-stepper-vertical.entry.js +32 -9
- package/dist/esm/q2-stepper.entry.js +18 -4
- package/dist/esm/q2-surface.entry.js +3 -3
- package/dist/esm/q2-tab-container.entry.js +89 -20
- 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 +3 -3
- package/dist/esm/q2-toast.entry.js +1 -1
- package/dist/esm/q2-tooltip.entry.js +27 -16
- package/dist/esm/tecton-tab-pane.entry.js +3 -3
- package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
- package/dist/q2-tecton-elements/click-elsewhere_3.entry.js +23 -23
- package/dist/q2-tecton-elements/q2-action-group_2.entry.js +42 -42
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +21 -18
- package/dist/q2-tecton-elements/q2-avatar.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-badge_2.entry.js +25 -15
- package/dist/q2-tecton-elements/q2-btn_2.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-calendar.entry.js +120 -115
- package/dist/q2-tecton-elements/q2-card-image.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +11 -11
- package/dist/q2-tecton-elements/q2-carousel.entry.js +572 -540
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +166 -166
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +190 -190
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-currency.entry.js +40 -40
- package/dist/q2-tecton-elements/q2-data-table.entry.js +64 -64
- package/dist/q2-tecton-elements/q2-detail.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +21 -21
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +18 -17
- package/dist/q2-tecton-elements/q2-example.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-file-picker.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-form.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-icon.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-legend.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-link_2.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-message.entry.js +23 -23
- package/dist/q2-tecton-elements/q2-meter.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-modal.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +39 -39
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +13 -13
- package/dist/q2-tecton-elements/q2-option.entry.js +22 -22
- package/dist/q2-tecton-elements/q2-otp.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.js +11 -11
- package/dist/q2-tecton-elements/q2-pill.entry.js +30 -18
- package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.js +24 -24
- package/dist/q2-tecton-elements/q2-relative-time.entry.js +21 -21
- package/dist/q2-tecton-elements/q2-search.entry.js +12 -12
- package/dist/q2-tecton-elements/q2-section.entry.js +25 -25
- package/dist/q2-tecton-elements/q2-select.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +16 -16
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +77 -53
- package/dist/q2-tecton-elements/q2-stepper.entry.js +44 -30
- package/dist/q2-tecton-elements/q2-surface.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-tab-container.entry.js +109 -56
- package/dist/q2-tecton-elements/q2-tab-pane.entry.js +13 -13
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-toast.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-tooltip.entry.js +25 -24
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +11 -11
- package/dist/types/components/q2-carousel/q2-carousel.d.ts +14 -0
- package/dist/types/components/q2-input/q2-input.d.ts +7 -1
- package/dist/types/components/q2-pill/q2-pill.d.ts +2 -0
- package/dist/types/components/q2-stepper/q2-stepper.d.ts +1 -0
- package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +3 -2
- package/dist/types/components/q2-surface/q2-surface.d.ts +3 -3
- package/dist/types/components/q2-tab-container/q2-tab-container.d.ts +17 -3
- package/dist/types/components/q2-tooltip/q2-tooltip.d.ts +2 -1
- package/dist/types/components.d.ts +50 -21
- package/dist/types/utils/helpers.d.ts +16 -1
- package/dist/types/utils/test/vr-helpers.d.ts +11 -0
- package/package.json +12 -5
|
@@ -49,8 +49,61 @@ export class Q2Carousel {
|
|
|
49
49
|
this.label = 'tecton.element.carousel.ariaLabel';
|
|
50
50
|
/** Display navigation arrow buttons as another way to navigate the carousel. */
|
|
51
51
|
this.showNavigationArrows = false;
|
|
52
|
+
/**
|
|
53
|
+
* Rebuilt whenever a prop that feeds Swiper's static config (e.g. `loop`) changes,
|
|
54
|
+
* since Swiper reads its options only at construction time.
|
|
55
|
+
*/
|
|
56
|
+
this.buildCarouselOptions = () => {
|
|
57
|
+
this.universalCarouselOptions = {
|
|
58
|
+
centeredSlides: true,
|
|
59
|
+
loop: this.loop !== false,
|
|
60
|
+
focusableElements: 'q2-btn, q2-dropdown, q2-item, q2-list, a, input, select, textarea, button, video, label, option',
|
|
61
|
+
autoplay: this.autoPlay,
|
|
62
|
+
modules: [Autoplay],
|
|
63
|
+
on: {
|
|
64
|
+
realIndexChange: swiper => {
|
|
65
|
+
// When peek mode pads the DOM with duplicates (3- or 4-pane carousels),
|
|
66
|
+
// `swiper.realIndex` can point at a duplicate; map it back to the 0..paneCount-1
|
|
67
|
+
// range so `this.index`, pagination dots, and emitted events stay logical.
|
|
68
|
+
const logicalIndex = this.paneCount > 0 ? swiper.realIndex % this.paneCount : swiper.realIndex;
|
|
69
|
+
this.index = logicalIndex + 1;
|
|
70
|
+
this.updateCarouselPaneProps();
|
|
71
|
+
const isPaginationFocused = !!document.activeElement.closest(`#q2-carousel-${this.guid} .q2-carousel-page-indicator`);
|
|
72
|
+
const isCarouselFocused = !!document.activeElement.closest(`#q2-carousel-${this.guid} q2-carousel-pane`);
|
|
73
|
+
const isFocused = isPaginationFocused || isCarouselFocused;
|
|
74
|
+
this.handleAriaLive(isFocused);
|
|
75
|
+
mirrorEmit(this, ['change', 'tctChange'], { index: logicalIndex + 1 });
|
|
76
|
+
if (isPaginationFocused) {
|
|
77
|
+
this.paginationBtns[logicalIndex].focus({ preventScroll: true });
|
|
78
|
+
}
|
|
79
|
+
else if (isCarouselFocused)
|
|
80
|
+
swiper.slides[swiper.activeIndex].focus({
|
|
81
|
+
preventScroll: true,
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
afterInit: swiper => {
|
|
85
|
+
var _a;
|
|
86
|
+
this.swiper = swiper;
|
|
87
|
+
(_a = this.activePane) === null || _a === void 0 ? void 0 : _a.addEventListener('popoverStateChanged', this.handlePopovers);
|
|
88
|
+
},
|
|
89
|
+
slideChangeTransitionEnd: () => {
|
|
90
|
+
var _a;
|
|
91
|
+
(_a = this.activePane) === null || _a === void 0 ? void 0 : _a.addEventListener('popoverStateChanged', this.handlePopovers);
|
|
92
|
+
},
|
|
93
|
+
slideChangeTransitionStart: () => {
|
|
94
|
+
var _a;
|
|
95
|
+
(_a = this.activePane) === null || _a === void 0 ? void 0 : _a.removeEventListener('popoverStateChanged', this.handlePopovers);
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
this.fullWidthDisplayOptions = {
|
|
100
|
+
slidesPerView: 1,
|
|
101
|
+
spaceBetween: 100,
|
|
102
|
+
...this.universalCarouselOptions,
|
|
103
|
+
};
|
|
104
|
+
};
|
|
52
105
|
this.configureCarousel = (carouselWrapper, carouselOptions) => {
|
|
53
|
-
var _a, _b, _c
|
|
106
|
+
var _a, _b, _c;
|
|
54
107
|
// Disconnect observer to prevent infinite loop from Swiper's internal DOM changes (e.g. loop mode)
|
|
55
108
|
(_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
56
109
|
if (!!this.swiper) {
|
|
@@ -65,11 +118,11 @@ export class Q2Carousel {
|
|
|
65
118
|
// fires during construction and may overwrite this.index
|
|
66
119
|
const targetIndex = this.realIndex;
|
|
67
120
|
new Swiper(carouselWrapper, carouselOptions);
|
|
68
|
-
|
|
121
|
+
this.slideToPane(targetIndex, 0);
|
|
69
122
|
// Ensure popover listener is on the active pane after initial positioning
|
|
70
|
-
(
|
|
123
|
+
(_b = this.activePane) === null || _b === void 0 ? void 0 : _b.addEventListener('popoverStateChanged', this.handlePopovers);
|
|
71
124
|
if (this.autoPlayInProgress)
|
|
72
|
-
(
|
|
125
|
+
(_c = this.swiper) === null || _c === void 0 ? void 0 : _c.autoplay.start();
|
|
73
126
|
this.managePaneHeightObserver();
|
|
74
127
|
// Re-observe after Swiper's DOM changes have settled
|
|
75
128
|
requestAnimationFrame(() => {
|
|
@@ -77,6 +130,15 @@ export class Q2Carousel {
|
|
|
77
130
|
(_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.hostElement, { childList: true, subtree: true });
|
|
78
131
|
});
|
|
79
132
|
};
|
|
133
|
+
this.getPaginationLabel = (index) => {
|
|
134
|
+
const pane = this.paneArray.find(pane => pane.index === index);
|
|
135
|
+
const paneLabel = (pane === null || pane === void 0 ? void 0 : pane.label) || (pane === null || pane === void 0 ? void 0 : pane.getAttribute('label'));
|
|
136
|
+
const itemDescription = loc('tecton.element.carousel.itemDescription', [
|
|
137
|
+
(index + 1).toString(),
|
|
138
|
+
this.paneCount.toString(),
|
|
139
|
+
]);
|
|
140
|
+
return paneLabel ? `${loc(paneLabel)}, ${itemDescription}` : itemDescription;
|
|
141
|
+
};
|
|
80
142
|
this.handleAutoPlayPause = (action) => {
|
|
81
143
|
var _a;
|
|
82
144
|
if (!this.autoPlay)
|
|
@@ -107,7 +169,7 @@ export class Q2Carousel {
|
|
|
107
169
|
}
|
|
108
170
|
};
|
|
109
171
|
this.keydownHandler = (event) => {
|
|
110
|
-
var _a, _b
|
|
172
|
+
var _a, _b;
|
|
111
173
|
switch (event.key) {
|
|
112
174
|
case 'ArrowRight':
|
|
113
175
|
event.preventDefault();
|
|
@@ -119,11 +181,11 @@ export class Q2Carousel {
|
|
|
119
181
|
break;
|
|
120
182
|
case 'Home':
|
|
121
183
|
event.preventDefault();
|
|
122
|
-
|
|
184
|
+
this.slideToPane(0);
|
|
123
185
|
break;
|
|
124
186
|
case 'End':
|
|
125
187
|
event.preventDefault();
|
|
126
|
-
|
|
188
|
+
this.slideToPane(this.paneCount - 1);
|
|
127
189
|
break;
|
|
128
190
|
}
|
|
129
191
|
};
|
|
@@ -177,6 +239,17 @@ export class Q2Carousel {
|
|
|
177
239
|
return;
|
|
178
240
|
this.carouselWrapperWidth = this.carouselWrapper.clientWidth;
|
|
179
241
|
};
|
|
242
|
+
/**
|
|
243
|
+
* Swiper's `slideToLoop` snaps by real (logical) index but only exists when loop mode is on.
|
|
244
|
+
* For non-looped carousels, `slideTo` targets the same logical index directly since the DOM
|
|
245
|
+
* has no duplicates.
|
|
246
|
+
*/
|
|
247
|
+
this.slideToPane = (index, speed) => {
|
|
248
|
+
if (!this.swiper)
|
|
249
|
+
return;
|
|
250
|
+
const fn = this.loop !== false ? this.swiper.slideToLoop : this.swiper.slideTo;
|
|
251
|
+
speed === undefined ? fn.call(this.swiper, index) : fn.call(this.swiper, index, speed);
|
|
252
|
+
};
|
|
180
253
|
/**
|
|
181
254
|
* Swiper's loop mode needs enough DOM slides on both sides of a centered active slide. For
|
|
182
255
|
* two-pane full-width carousels and 3 to 5 pane peek carousels, we double the pane set in the
|
|
@@ -185,11 +258,15 @@ export class Q2Carousel {
|
|
|
185
258
|
* logical index changes are mapped back to the real-pane range via `modulo paneCount`.
|
|
186
259
|
*/
|
|
187
260
|
this.syncPaneDuplicates = () => {
|
|
261
|
+
const existingDuplicates = Array.from(this.hostElement.querySelectorAll('q2-carousel-pane[data-q2-pane-duplicate]'));
|
|
262
|
+
existingDuplicates.forEach(node => node.remove());
|
|
263
|
+
// Duplicates only exist to satisfy Swiper's loop-mode minimum slide count.
|
|
264
|
+
// Non-looped carousels navigate their real panes directly.
|
|
265
|
+
if (this.loop === false)
|
|
266
|
+
return;
|
|
188
267
|
const realPanes = this.paneArray;
|
|
189
268
|
const realCount = realPanes.length;
|
|
190
269
|
const needsDuplicates = realCount === 2 || (!this.useFullWidthPanes && realCount >= 3 && realCount <= 5);
|
|
191
|
-
const existingDuplicates = Array.from(this.hostElement.querySelectorAll('q2-carousel-pane[data-q2-pane-duplicate]'));
|
|
192
|
-
existingDuplicates.forEach(node => node.remove());
|
|
193
270
|
if (!needsDuplicates || realCount === 0)
|
|
194
271
|
return;
|
|
195
272
|
const parent = realPanes[0].parentElement;
|
|
@@ -271,7 +348,8 @@ export class Q2Carousel {
|
|
|
271
348
|
return (h("div", { class: insufficientPanesContainerClasses.join(' ') }, h("div", { class: "insufficient-panes-icon-wrapper" }, h("q2-icon", { type: "warning" })), h("p", { class: "insufficient-panes-header" }, h("strong", null, loc('tecton.element.carousel.insufficientPanesMessageHeader'))), h("p", { class: "insufficient-panes-body" }, loc('tecton.element.carousel.insufficientPanesMessageBody'))));
|
|
272
349
|
};
|
|
273
350
|
this.renderNextNavBtn = () => {
|
|
274
|
-
|
|
351
|
+
const disabled = this.loop === false && this.realIndex >= this.paneCount - 1;
|
|
352
|
+
return (h("div", { class: "next-btn" }, h("q2-btn", { class: "q2-carousel-navigation-button q2-carousel-navigation-button-next", intent: "workflow-primary", label: loc('tecton.element.carousel.nextItemLabel'), hideLabel: true, disabled: disabled || undefined, onTctClick: () => { var _a; return (_a = this.swiper) === null || _a === void 0 ? void 0 : _a.slideNext(); } }, h("q2-icon", { type: "arrow-right" }))));
|
|
275
353
|
};
|
|
276
354
|
this.renderPaginationArea = () => {
|
|
277
355
|
const { useDynamicPaginationDots, realIndex, paneCount } = this;
|
|
@@ -290,14 +368,12 @@ export class Q2Carousel {
|
|
|
290
368
|
const isWithinTwoOfActive = Math.abs(index - realIndex) <= 2 && !isActive;
|
|
291
369
|
if (isWithinTwoOfActive)
|
|
292
370
|
btnClasses = [...btnClasses, 'active-adjacent'];
|
|
293
|
-
return (h("button", { type: "button", role: "tab", tabIndex: isActive ? undefined : -1, "aria-selected": `${isActive}`, class: btnClasses.join(' '), onClick: () =>
|
|
294
|
-
(index + 1).toString(),
|
|
295
|
-
paneCount.toString(),
|
|
296
|
-
]) }));
|
|
371
|
+
return (h("button", { type: "button", role: "tab", tabIndex: isActive ? undefined : -1, "aria-selected": `${isActive}`, class: btnClasses.join(' '), onClick: () => this.slideToPane(index), onKeyDown: this.keydownHandler, "aria-label": this.getPaginationLabel(index) }));
|
|
297
372
|
})));
|
|
298
373
|
};
|
|
299
374
|
this.renderPrevNavBtn = () => {
|
|
300
|
-
|
|
375
|
+
const disabled = this.loop === false && this.realIndex <= 0;
|
|
376
|
+
return (h("div", { class: "prev-btn" }, h("q2-btn", { class: "q2-carousel-navigation-button q2-carousel-navigation-button-prev", intent: "workflow-primary", label: loc('tecton.element.carousel.previousItemLabel'), hideLabel: true, disabled: disabled || undefined, onTctClick: () => { var _a; return (_a = this.swiper) === null || _a === void 0 ? void 0 : _a.slidePrev(); } }, h("q2-icon", { type: "arrow-left" }))));
|
|
301
377
|
};
|
|
302
378
|
}
|
|
303
379
|
// #endregion
|
|
@@ -324,53 +400,7 @@ export class Q2Carousel {
|
|
|
324
400
|
if (!hasValidChildren(this.hostElement, 'q2-carousel-pane')) {
|
|
325
401
|
filterChildren(this.hostElement, 'q2-carousel-pane');
|
|
326
402
|
}
|
|
327
|
-
this.
|
|
328
|
-
centeredSlides: true,
|
|
329
|
-
loop: true,
|
|
330
|
-
focusableElements: 'q2-btn, q2-dropdown, q2-item, q2-list, a, input, select, textarea, button, video, label, option',
|
|
331
|
-
autoplay: this.autoPlay,
|
|
332
|
-
modules: [Autoplay],
|
|
333
|
-
on: {
|
|
334
|
-
realIndexChange: swiper => {
|
|
335
|
-
// When peek mode pads the DOM with duplicates (3- or 4-pane carousels),
|
|
336
|
-
// `swiper.realIndex` can point at a duplicate; map it back to the 0..paneCount-1
|
|
337
|
-
// range so `this.index`, pagination dots, and emitted events stay logical.
|
|
338
|
-
const logicalIndex = this.paneCount > 0 ? swiper.realIndex % this.paneCount : swiper.realIndex;
|
|
339
|
-
this.index = logicalIndex + 1;
|
|
340
|
-
this.updateCarouselPaneProps();
|
|
341
|
-
const isPaginationFocused = !!document.activeElement.closest(`#q2-carousel-${this.guid} .q2-carousel-page-indicator`);
|
|
342
|
-
const isCarouselFocused = !!document.activeElement.closest(`#q2-carousel-${this.guid} q2-carousel-pane`);
|
|
343
|
-
const isFocused = isPaginationFocused || isCarouselFocused;
|
|
344
|
-
this.handleAriaLive(isFocused);
|
|
345
|
-
mirrorEmit(this, ['change', 'tctChange'], { index: logicalIndex + 1 });
|
|
346
|
-
if (isPaginationFocused) {
|
|
347
|
-
this.paginationBtns[logicalIndex].focus({ preventScroll: true });
|
|
348
|
-
}
|
|
349
|
-
else if (isCarouselFocused)
|
|
350
|
-
swiper.slides[swiper.activeIndex].focus({
|
|
351
|
-
preventScroll: true,
|
|
352
|
-
});
|
|
353
|
-
},
|
|
354
|
-
afterInit: swiper => {
|
|
355
|
-
var _a;
|
|
356
|
-
this.swiper = swiper;
|
|
357
|
-
(_a = this.activePane) === null || _a === void 0 ? void 0 : _a.addEventListener('popoverStateChanged', this.handlePopovers);
|
|
358
|
-
},
|
|
359
|
-
slideChangeTransitionEnd: () => {
|
|
360
|
-
var _a;
|
|
361
|
-
(_a = this.activePane) === null || _a === void 0 ? void 0 : _a.addEventListener('popoverStateChanged', this.handlePopovers);
|
|
362
|
-
},
|
|
363
|
-
slideChangeTransitionStart: () => {
|
|
364
|
-
var _a;
|
|
365
|
-
(_a = this.activePane) === null || _a === void 0 ? void 0 : _a.removeEventListener('popoverStateChanged', this.handlePopovers);
|
|
366
|
-
},
|
|
367
|
-
},
|
|
368
|
-
};
|
|
369
|
-
this.fullWidthDisplayOptions = {
|
|
370
|
-
slidesPerView: 1,
|
|
371
|
-
spaceBetween: 100,
|
|
372
|
-
...this.universalCarouselOptions,
|
|
373
|
-
};
|
|
403
|
+
this.buildCarouselOptions();
|
|
374
404
|
}
|
|
375
405
|
componentDidLoad() {
|
|
376
406
|
this.setCarouselWrapperWidth();
|
|
@@ -385,8 +415,7 @@ export class Q2Carousel {
|
|
|
385
415
|
// #endregion
|
|
386
416
|
// #region Listeners
|
|
387
417
|
carouselPaneClicked(event) {
|
|
388
|
-
|
|
389
|
-
(_a = this.swiper) === null || _a === void 0 ? void 0 : _a.slideToLoop(event.detail.paneIndex);
|
|
418
|
+
this.slideToPane(event.detail.paneIndex);
|
|
390
419
|
}
|
|
391
420
|
delegateFocus(event) {
|
|
392
421
|
var _a, _b;
|
|
@@ -402,12 +431,12 @@ export class Q2Carousel {
|
|
|
402
431
|
* @testOnly
|
|
403
432
|
*/
|
|
404
433
|
async selectCarouselPane(index) {
|
|
405
|
-
var _a, _b
|
|
434
|
+
var _a, _b;
|
|
406
435
|
if (index > this.paneCount)
|
|
407
436
|
return;
|
|
408
437
|
const actualIndex = index > 0 ? index - 1 : 0;
|
|
409
|
-
|
|
410
|
-
const activeSlide = (
|
|
438
|
+
this.slideToPane(actualIndex);
|
|
439
|
+
const activeSlide = (_a = this.swiper) === null || _a === void 0 ? void 0 : _a.slides[(_b = this.swiper) === null || _b === void 0 ? void 0 : _b.activeIndex];
|
|
411
440
|
activeSlide === null || activeSlide === void 0 ? void 0 : activeSlide.focus({ preventScroll: true });
|
|
412
441
|
}
|
|
413
442
|
/**
|
|
@@ -441,6 +470,8 @@ export class Q2Carousel {
|
|
|
441
470
|
this.revampCarousel();
|
|
442
471
|
}
|
|
443
472
|
revampCarousel() {
|
|
473
|
+
this.buildCarouselOptions();
|
|
474
|
+
this.syncPaneDuplicates();
|
|
444
475
|
this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);
|
|
445
476
|
}
|
|
446
477
|
indexChanged(newIndex) {
|
|
@@ -452,7 +483,7 @@ export class Q2Carousel {
|
|
|
452
483
|
// to programmatically slide — otherwise the watcher fights our own realIndexChange mapping.
|
|
453
484
|
const swiperLogicalIndex = this.paneCount > 0 ? this.swiper.realIndex % this.paneCount : this.swiper.realIndex;
|
|
454
485
|
if (newIndex !== swiperLogicalIndex + 1) {
|
|
455
|
-
this.
|
|
486
|
+
this.slideToPane(this.realIndex);
|
|
456
487
|
}
|
|
457
488
|
}
|
|
458
489
|
// #endregion
|
|
@@ -530,7 +561,7 @@ export class Q2Carousel {
|
|
|
530
561
|
paginationWrapperClasses.push('evenly-space');
|
|
531
562
|
if (showNavigationArrows && arrowPosition === 'hug')
|
|
532
563
|
paginationWrapperClasses.push('center-space');
|
|
533
|
-
return (h(Host, { key: '
|
|
564
|
+
return (h(Host, { key: '2c623516b2b0ce7800440110cde323bdf065abc1', id: `q2-carousel-${this.guid}`, class: "q2-carousel-instance" }, insufficientPanes ? (this.renderInsufficientPanesDisplay()) : (h(Fragment, null, paneCount > 1 && (h("div", { class: paginationWrapperClasses.join(' ') }, showNavigationArrows &&
|
|
534
565
|
['bottom', 'hug'].includes(arrowPosition) &&
|
|
535
566
|
this.renderPrevNavBtn(), h("div", { class: "q2-carousel-control-center-tray" }, !hidePagination && this.renderPaginationArea(), autoPlay && this.renderAutoPlayBtn()), showNavigationArrows &&
|
|
536
567
|
['bottom', 'hug'].includes(arrowPosition) &&
|
|
@@ -792,6 +823,25 @@ export class Q2Carousel {
|
|
|
792
823
|
"attribute": "label",
|
|
793
824
|
"defaultValue": "'tecton.element.carousel.ariaLabel'"
|
|
794
825
|
},
|
|
826
|
+
"loop": {
|
|
827
|
+
"type": "boolean",
|
|
828
|
+
"mutable": false,
|
|
829
|
+
"complexType": {
|
|
830
|
+
"original": "boolean",
|
|
831
|
+
"resolved": "boolean",
|
|
832
|
+
"references": {}
|
|
833
|
+
},
|
|
834
|
+
"required": false,
|
|
835
|
+
"optional": false,
|
|
836
|
+
"docs": {
|
|
837
|
+
"tags": [],
|
|
838
|
+
"text": "Enables continuous looping so navigating past the last pane wraps to the first (and vice versa). Defaults to enabled; pass `false` to disable."
|
|
839
|
+
},
|
|
840
|
+
"getter": false,
|
|
841
|
+
"setter": false,
|
|
842
|
+
"reflect": true,
|
|
843
|
+
"attribute": "loop"
|
|
844
|
+
},
|
|
795
845
|
"showNavigationArrows": {
|
|
796
846
|
"type": "boolean",
|
|
797
847
|
"mutable": false,
|
|
@@ -944,6 +994,9 @@ export class Q2Carousel {
|
|
|
944
994
|
}, {
|
|
945
995
|
"propName": "autoPlay",
|
|
946
996
|
"methodName": "revampCarousel"
|
|
997
|
+
}, {
|
|
998
|
+
"propName": "loop",
|
|
999
|
+
"methodName": "revampCarousel"
|
|
947
1000
|
}, {
|
|
948
1001
|
"propName": "index",
|
|
949
1002
|
"methodName": "indexChanged"
|
|
@@ -50,6 +50,10 @@ const VARIANTS = [
|
|
|
50
50
|
name: 'hide-pagination',
|
|
51
51
|
html: carousel('hide-pagination show-navigation-arrows'),
|
|
52
52
|
},
|
|
53
|
+
{
|
|
54
|
+
name: 'loop-disabled',
|
|
55
|
+
html: carousel('loop="false" show-navigation-arrows'),
|
|
56
|
+
},
|
|
53
57
|
];
|
|
54
58
|
// Focus is exercised on the with-arrows variant, which has all three interactive
|
|
55
59
|
// regions present: navigation arrows, pagination indicator (tablist), and the
|
|
@@ -82,10 +86,7 @@ const focusIndicatorCase = (variant, theme) => {
|
|
|
82
86
|
const focusPaneCase = (variant, theme) => {
|
|
83
87
|
test(`q2-carousel--${variant.name}--focus-pane — ${theme}`, async ({ page }) => {
|
|
84
88
|
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
85
|
-
await page.
|
|
86
|
-
await page.keyboard.press('Tab');
|
|
87
|
-
await page.keyboard.press('Tab');
|
|
88
|
-
await page.keyboard.press('Tab');
|
|
89
|
+
await page.locator('q2-carousel-pane.swiper-slide-active').focus();
|
|
89
90
|
await expect(page).toHaveScreenshot(`q2-carousel--${variant.name}--focus-pane--${theme}.png`);
|
|
90
91
|
});
|
|
91
92
|
};
|
|
@@ -65,6 +65,28 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
@container style(--t-prefers-motion: "reduced") {
|
|
69
|
+
*,
|
|
70
|
+
*::before,
|
|
71
|
+
*::after {
|
|
72
|
+
animation-duration: 0.01ms !important;
|
|
73
|
+
transition-duration: 0.01ms !important;
|
|
74
|
+
animation-delay: 0ms !important;
|
|
75
|
+
transition-delay: 0ms !important;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
@container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
|
|
79
|
+
@media (prefers-reduced-motion: reduce) {
|
|
80
|
+
*,
|
|
81
|
+
*::before,
|
|
82
|
+
*::after {
|
|
83
|
+
animation-duration: 0.01ms !important;
|
|
84
|
+
transition-duration: 0.01ms !important;
|
|
85
|
+
animation-delay: 0ms !important;
|
|
86
|
+
transition-delay: 0ms !important;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
68
90
|
/**
|
|
69
91
|
* @prop --tct-carousel-pane-border-color: (<color>) Controls the border color of the carousel pane container.
|
|
70
92
|
* @prop --tct-carousel-pane-border-radius: (<length-percentage>) Controls the corner radius of the carousel pane container.
|
|
@@ -65,6 +65,28 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
@container style(--t-prefers-motion: "reduced") {
|
|
69
|
+
*,
|
|
70
|
+
*::before,
|
|
71
|
+
*::after {
|
|
72
|
+
animation-duration: 0.01ms !important;
|
|
73
|
+
transition-duration: 0.01ms !important;
|
|
74
|
+
animation-delay: 0ms !important;
|
|
75
|
+
transition-delay: 0ms !important;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
@container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
|
|
79
|
+
@media (prefers-reduced-motion: reduce) {
|
|
80
|
+
*,
|
|
81
|
+
*::before,
|
|
82
|
+
*::after {
|
|
83
|
+
animation-duration: 0.01ms !important;
|
|
84
|
+
transition-duration: 0.01ms !important;
|
|
85
|
+
animation-delay: 0ms !important;
|
|
86
|
+
transition-delay: 0ms !important;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
68
90
|
/**
|
|
69
91
|
* @prop --tct-area-chart-width?: (<length-percentage>) Controls the width of the area chart.
|
|
70
92
|
* @prop --tct-area-chart-height?: (<length-percentage>) Controls the height of the area chart.
|
|
@@ -65,6 +65,28 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
@container style(--t-prefers-motion: "reduced") {
|
|
69
|
+
*,
|
|
70
|
+
*::before,
|
|
71
|
+
*::after {
|
|
72
|
+
animation-duration: 0.01ms !important;
|
|
73
|
+
transition-duration: 0.01ms !important;
|
|
74
|
+
animation-delay: 0ms !important;
|
|
75
|
+
transition-delay: 0ms !important;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
@container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
|
|
79
|
+
@media (prefers-reduced-motion: reduce) {
|
|
80
|
+
*,
|
|
81
|
+
*::before,
|
|
82
|
+
*::after {
|
|
83
|
+
animation-duration: 0.01ms !important;
|
|
84
|
+
transition-duration: 0.01ms !important;
|
|
85
|
+
animation-delay: 0ms !important;
|
|
86
|
+
transition-delay: 0ms !important;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
68
90
|
/**
|
|
69
91
|
* @prop --tct-bar-chart-width?: (<length-percentage>) Controls the width of the bar chart.
|
|
70
92
|
* @prop --tct-bar-chart-height?: (<length-percentage>) Controls the height of the bar chart.
|
|
@@ -65,6 +65,28 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
@container style(--t-prefers-motion: "reduced") {
|
|
69
|
+
*,
|
|
70
|
+
*::before,
|
|
71
|
+
*::after {
|
|
72
|
+
animation-duration: 0.01ms !important;
|
|
73
|
+
transition-duration: 0.01ms !important;
|
|
74
|
+
animation-delay: 0ms !important;
|
|
75
|
+
transition-delay: 0ms !important;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
@container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
|
|
79
|
+
@media (prefers-reduced-motion: reduce) {
|
|
80
|
+
*,
|
|
81
|
+
*::before,
|
|
82
|
+
*::after {
|
|
83
|
+
animation-duration: 0.01ms !important;
|
|
84
|
+
transition-duration: 0.01ms !important;
|
|
85
|
+
animation-delay: 0ms !important;
|
|
86
|
+
transition-delay: 0ms !important;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
68
90
|
/**
|
|
69
91
|
* @prop --tct-chart-donut-text-color: (<color>) Controls the text color of the chart donut center card content.
|
|
70
92
|
* @prop --tct-chart-donut-focus-visible-box-shadow: (*) Controls the box shadow of the chart container when focused via keyboard.
|
|
@@ -186,11 +208,11 @@ q2-icon {
|
|
|
186
208
|
}
|
|
187
209
|
|
|
188
210
|
.name {
|
|
189
|
-
font-size: var(--tct-chart-donut-name-font-size, var(--t-chart-donut-name-font-size, 14px));
|
|
211
|
+
font-size: var(--tct-chart-donut-name-font-size, var(--t-chart-donut-name-font-size, var(--const-px-14, 14px)));
|
|
190
212
|
}
|
|
191
213
|
|
|
192
214
|
.value {
|
|
193
|
-
font-size: var(--tct-chart-donut-value-font-size, var(--t-chart-donut-value-font-size, 21px));
|
|
215
|
+
font-size: var(--tct-chart-donut-value-font-size, var(--t-chart-donut-value-font-size, var(--const-px-21, 21px)));
|
|
194
216
|
}
|
|
195
217
|
|
|
196
218
|
figure {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { expect } from "@playwright/test";
|
|
2
2
|
import { test } from "@stencil/playwright";
|
|
3
|
-
import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
|
|
3
|
+
import { setupPage, THEMES, FONT_SCALE_PX, FONT_SCALE_SUFFIX } from "../../../utils/test/vr-helpers";
|
|
4
4
|
const SHORT_DATA = [
|
|
5
5
|
{ id: 'food', name: 'Food & Dining', value: 2796.59, icon: 'silverware' },
|
|
6
6
|
{ id: 'uncategorized', name: 'Uncategorized', value: 2702.52, icon: 'question' },
|
|
@@ -148,3 +148,15 @@ test.describe('q2-chart-donut — variants × themes', () => {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
});
|
|
151
|
+
// 'with-summary' renders center-card name + value, exercising
|
|
152
|
+
// --tct-chart-donut-name-font-size and --tct-chart-donut-value-font-size.
|
|
153
|
+
const WITH_SUMMARY_VARIANT = VARIANTS.find(v => v.name === 'with-summary');
|
|
154
|
+
test.describe(`q2-chart-donut — scaled font size × themes`, () => {
|
|
155
|
+
for (const theme of THEMES) {
|
|
156
|
+
test(`q2-chart-donut--with-summary--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
|
|
157
|
+
await setupPage(page, WITH_SUMMARY_VARIANT.html, { theme, setupLoc: true, fontSizePx: FONT_SCALE_PX });
|
|
158
|
+
await setChartData(page, SHORT_DATA);
|
|
159
|
+
await expect(page).toHaveScreenshot(`q2-chart-donut--with-summary--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
});
|
|
@@ -65,6 +65,28 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
@container style(--t-prefers-motion: "reduced") {
|
|
69
|
+
*,
|
|
70
|
+
*::before,
|
|
71
|
+
*::after {
|
|
72
|
+
animation-duration: 0.01ms !important;
|
|
73
|
+
transition-duration: 0.01ms !important;
|
|
74
|
+
animation-delay: 0ms !important;
|
|
75
|
+
transition-delay: 0ms !important;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
@container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
|
|
79
|
+
@media (prefers-reduced-motion: reduce) {
|
|
80
|
+
*,
|
|
81
|
+
*::before,
|
|
82
|
+
*::after {
|
|
83
|
+
animation-duration: 0.01ms !important;
|
|
84
|
+
transition-duration: 0.01ms !important;
|
|
85
|
+
animation-delay: 0ms !important;
|
|
86
|
+
transition-delay: 0ms !important;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
68
90
|
/**
|
|
69
91
|
* @prop --tct-checkbox-margin: (<length-percentage>+) Controls the outer margin of the checkbox host.
|
|
70
92
|
* @prop --tct-checkbox-margin-top?: (<length-percentage>) Controls the optional top margin of the checkbox host when --tct-checkbox-margin is not set.
|
|
@@ -207,7 +229,7 @@ button {
|
|
|
207
229
|
--comp-checkbox-default-column-gap: var(--app-scale-2x, 10px);
|
|
208
230
|
--comp-checkbox-default-row-gap: 0;
|
|
209
231
|
--comp-checkbox-default-gap: var(--comp-checkbox-default-row-gap) var(--comp-checkbox-default-column-gap);
|
|
210
|
-
--comp-checkbox-label-line-height: var(--tct-checkbox-label-line-height, 24px);
|
|
232
|
+
--comp-checkbox-label-line-height: var(--tct-checkbox-label-line-height, var(--const-px-24, 24px));
|
|
211
233
|
--comp-checkbox-tween: var(--tct-tween-1, var(--app-tween-1, 0.2s ease));
|
|
212
234
|
--comp-checkbox-toggle-width: var(--tct-checkbox-toggle-width, var(--t-checkbox-toggle-width, 38px));
|
|
213
235
|
--comp-checkbox-toggle-track-fill: var(--tct-checkbox-toggle-track-fill, var(--tct-checkbox-toggle-track-color, transparent));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { expect } from "@playwright/test";
|
|
2
2
|
import { test } from "@stencil/playwright";
|
|
3
|
-
import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
|
|
3
|
+
import { setupPage, THEMES, FONT_SCALE_PX, FONT_SCALE_SUFFIX } from "../../../utils/test/vr-helpers";
|
|
4
4
|
const VARIANTS = [
|
|
5
5
|
{ name: 'default-unchecked', html: `<q2-checkbox label="Option"></q2-checkbox>` },
|
|
6
6
|
{ name: 'default-checked', html: `<q2-checkbox label="Option" checked></q2-checkbox>` },
|
|
@@ -66,3 +66,13 @@ test.describe('q2-checkbox — variants × themes', () => {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
});
|
|
69
|
+
// 'default-unchecked' exercises --tct-checkbox-label-line-height (label text line-height).
|
|
70
|
+
const DEFAULT_UNCHECKED = VARIANTS.find(v => v.name === 'default-unchecked');
|
|
71
|
+
test.describe(`q2-checkbox — scaled font size × themes`, () => {
|
|
72
|
+
for (const theme of THEMES) {
|
|
73
|
+
test(`q2-checkbox--default-unchecked--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
|
|
74
|
+
await setupPage(page, DEFAULT_UNCHECKED.html, { theme, fontSizePx: FONT_SCALE_PX });
|
|
75
|
+
await expect(page).toHaveScreenshot(`q2-checkbox--default-unchecked--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
});
|
|
@@ -65,6 +65,28 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
@container style(--t-prefers-motion: "reduced") {
|
|
69
|
+
*,
|
|
70
|
+
*::before,
|
|
71
|
+
*::after {
|
|
72
|
+
animation-duration: 0.01ms !important;
|
|
73
|
+
transition-duration: 0.01ms !important;
|
|
74
|
+
animation-delay: 0ms !important;
|
|
75
|
+
transition-delay: 0ms !important;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
@container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
|
|
79
|
+
@media (prefers-reduced-motion: reduce) {
|
|
80
|
+
*,
|
|
81
|
+
*::before,
|
|
82
|
+
*::after {
|
|
83
|
+
animation-duration: 0.01ms !important;
|
|
84
|
+
transition-duration: 0.01ms !important;
|
|
85
|
+
animation-delay: 0ms !important;
|
|
86
|
+
transition-delay: 0ms !important;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
68
90
|
/**
|
|
69
91
|
* @prop --tct-checkbox-group-margin: (<length-percentage>+) Controls the outer margin of the checkbox-group host.
|
|
70
92
|
* @prop --tct-checkbox-group-margin-top: (<length-percentage>) Controls the top margin of the checkbox-group host when --tct-checkbox-group-margin is not set.
|
|
@@ -149,7 +171,7 @@ legend.sr-only {
|
|
|
149
171
|
.optional-tag {
|
|
150
172
|
margin-left: var(--tct-checkbox-group-label-optional-margin-left, var(--app-scale-1x, 5px));
|
|
151
173
|
color: var(--tct-checkbox-group-label-optional-color, var(--t-checkbox-group-label-optional-color, var(--tct-a11y-color, var(--t-a11y-color, var(--tct-a11y-gray-color, var(--t-a11y-gray-color, var(--tct-gray-7, var(--t-gray-7, var(--tct-gray-d1, var(--t-gray-d1, var(--app-gray-d1, rgba(77, 77, 77, 0.77))))))))))));
|
|
152
|
-
font-size: var(--tct-checkbox-group-label-optional-font-size, 12px);
|
|
174
|
+
font-size: var(--tct-checkbox-group-label-optional-font-size, var(--const-px-12, 12px));
|
|
153
175
|
font-weight: var(--tct-checkbox-group-label-optional-font-weight, 400);
|
|
154
176
|
}
|
|
155
177
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { expect } from "@playwright/test";
|
|
2
2
|
import { test } from "@stencil/playwright";
|
|
3
|
-
import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
|
|
3
|
+
import { setupPage, THEMES, FONT_SCALE_PX, FONT_SCALE_SUFFIX } from "../../../utils/test/vr-helpers";
|
|
4
4
|
const STANDARD_CHILDREN = `
|
|
5
5
|
<q2-checkbox label="Option 1" value="opt-1"></q2-checkbox>
|
|
6
6
|
<q2-checkbox label="Option 2" value="opt-2"></q2-checkbox>
|
|
@@ -58,3 +58,13 @@ test.describe('q2-checkbox-group — variants × themes', () => {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
});
|
|
61
|
+
// 'optional' exercises --tct-checkbox-group-label-optional-font-size (.optional-tag).
|
|
62
|
+
const OPTIONAL_VARIANT = VARIANTS.find(v => v.name === 'optional');
|
|
63
|
+
test.describe(`q2-checkbox-group — scaled font size × themes`, () => {
|
|
64
|
+
for (const theme of THEMES) {
|
|
65
|
+
test(`q2-checkbox-group--optional--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
|
|
66
|
+
await setupPage(page, OPTIONAL_VARIANT.html, { theme, fontSizePx: FONT_SCALE_PX });
|
|
67
|
+
await expect(page).toHaveScreenshot(`q2-checkbox-group--optional--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
});
|