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
|
@@ -9,6 +9,7 @@ export class Q2Tooltip {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
// #region Own Properties
|
|
11
11
|
this.animationEndCount = 0;
|
|
12
|
+
this.cachedTooltipHeight = null;
|
|
12
13
|
/**
|
|
13
14
|
* Makes the component focusable, thereby putting it in the tab order of the keyboard.
|
|
14
15
|
* @warning
|
|
@@ -31,6 +32,19 @@ export class Q2Tooltip {
|
|
|
31
32
|
}
|
|
32
33
|
// #endregion
|
|
33
34
|
// #region Listeners
|
|
35
|
+
documentPointerHandler(event) {
|
|
36
|
+
var _a;
|
|
37
|
+
if (!this.focusClass || this.persistent)
|
|
38
|
+
return;
|
|
39
|
+
const isEventInsideTooltip = ((_a = event.composedPath) === null || _a === void 0 ? void 0 : _a.call(event).includes(this.hostElement)) ||
|
|
40
|
+
(event.target instanceof Node && this.hostElement.contains(event.target));
|
|
41
|
+
if (isEventInsideTooltip) {
|
|
42
|
+
this.persistOnHoverDismissed = false;
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
this.persistOnHoverDismissed = true;
|
|
46
|
+
this.hideTooltip();
|
|
47
|
+
}
|
|
34
48
|
focusCaptureHandler() {
|
|
35
49
|
this.checkFocusClass();
|
|
36
50
|
}
|
|
@@ -69,6 +83,10 @@ export class Q2Tooltip {
|
|
|
69
83
|
// #region Watchers
|
|
70
84
|
labelChanged() {
|
|
71
85
|
this.propagateTooltip();
|
|
86
|
+
this.cachedTooltipHeight = null; // Invalidate cache
|
|
87
|
+
if (this.shouldBeVisible || this.persistent) {
|
|
88
|
+
this.adjustSide();
|
|
89
|
+
}
|
|
72
90
|
}
|
|
73
91
|
// #endregion
|
|
74
92
|
// #region Local Methods
|
|
@@ -78,16 +96,38 @@ export class Q2Tooltip {
|
|
|
78
96
|
return this.hostElement.matches(':hover, :focus-within') && !this.persistOnHoverDismissed;
|
|
79
97
|
}
|
|
80
98
|
adjustSide() {
|
|
81
|
-
const { left: hostLeft, right: hostRight, width: hostWidth } = this.hostElement.getBoundingClientRect();
|
|
99
|
+
const { left: hostLeft, right: hostRight, width: hostWidth, top: hostTop, bottom: hostBottom, } = this.hostElement.getBoundingClientRect();
|
|
82
100
|
if (!hostLeft || !hostWidth)
|
|
83
101
|
return;
|
|
102
|
+
// Find the constraining container (modal, dialog, or any overflow:hidden ancestor)
|
|
103
|
+
const constrainingContainer = this.findConstrainingContainer();
|
|
104
|
+
const containerRect = constrainingContainer.getBoundingClientRect();
|
|
84
105
|
const { width, paddingLeft, paddingRight } = window.getComputedStyle(this.tooltipElement, '::after');
|
|
85
106
|
const tooltipWidth = Number(width.replace(/[px]/g, '')) +
|
|
86
107
|
Number(paddingLeft.replace(/[px]/g, '')) +
|
|
87
108
|
Number(paddingRight.replace(/[px]/g, ''));
|
|
88
109
|
const extraMargin = ['se', 'sw', 'ne', 'nw'].includes(this.position) ? 0 : 15;
|
|
89
|
-
|
|
90
|
-
const
|
|
110
|
+
// Calculate available space relative to constraining container
|
|
111
|
+
const distanceLeft = hostLeft - containerRect.left + hostWidth / 2;
|
|
112
|
+
const distanceRight = containerRect.right - hostRight + hostWidth / 2;
|
|
113
|
+
const distanceTop = hostTop - containerRect.top;
|
|
114
|
+
const distanceBottom = containerRect.bottom - hostBottom;
|
|
115
|
+
// Calculate tooltip height dynamically
|
|
116
|
+
const tooltipHeight = this.calculateTooltipHeight();
|
|
117
|
+
// Check if we need to flip vertical position
|
|
118
|
+
if (['n', 'ne', 'nw'].includes(this.position) && distanceTop < tooltipHeight) {
|
|
119
|
+
// Not enough space above, try flipping to bottom
|
|
120
|
+
if (distanceBottom >= tooltipHeight) {
|
|
121
|
+
this.position = this.position.replace('n', 's');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else if (['s', 'se', 'sw'].includes(this.position) && distanceBottom < tooltipHeight) {
|
|
125
|
+
// Not enough space below, try flipping to top
|
|
126
|
+
if (distanceTop >= tooltipHeight) {
|
|
127
|
+
this.position = this.position.replace('s', 'n');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Adjust horizontal positioning
|
|
91
131
|
if (['ne', 'se'].includes(this.position)) {
|
|
92
132
|
if (tooltipWidth > distanceRight) {
|
|
93
133
|
this.tooltipElement.style.setProperty('--comp-offset-translate', `-${Math.round(tooltipWidth - distanceRight + extraMargin)}px`);
|
|
@@ -109,6 +149,19 @@ export class Q2Tooltip {
|
|
|
109
149
|
this.tooltipElement.style.setProperty('--comp-offset-translate', `0px`);
|
|
110
150
|
}
|
|
111
151
|
}
|
|
152
|
+
// Handle east/west positioning
|
|
153
|
+
if (this.position === 'e' && tooltipWidth > distanceRight) {
|
|
154
|
+
// Not enough space on right, flip to left
|
|
155
|
+
if (distanceLeft >= tooltipWidth) {
|
|
156
|
+
this.position = 'w';
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else if (this.position === 'w' && tooltipWidth > distanceLeft) {
|
|
160
|
+
// Not enough space on left, flip to right
|
|
161
|
+
if (distanceRight >= tooltipWidth) {
|
|
162
|
+
this.position = 'e';
|
|
163
|
+
}
|
|
164
|
+
}
|
|
112
165
|
}
|
|
113
166
|
animationEndHandler() {
|
|
114
167
|
this.animationEndCount = this.animationEndCount + 1;
|
|
@@ -121,6 +174,54 @@ export class Q2Tooltip {
|
|
|
121
174
|
this.animationEndCount = 0;
|
|
122
175
|
}
|
|
123
176
|
}
|
|
177
|
+
calculateTooltipHeight() {
|
|
178
|
+
if (this.cachedTooltipHeight !== null) {
|
|
179
|
+
return this.cachedTooltipHeight;
|
|
180
|
+
}
|
|
181
|
+
try {
|
|
182
|
+
const styles = window.getComputedStyle(this.tooltipElement, '::after');
|
|
183
|
+
// Try to get computed height first
|
|
184
|
+
const computedHeight = styles.height;
|
|
185
|
+
if (computedHeight && computedHeight !== 'auto' && computedHeight !== '0px') {
|
|
186
|
+
const height = Number(computedHeight.replace(/px/g, ''));
|
|
187
|
+
const paddingTop = Number(styles.paddingTop.replace(/px/g, ''));
|
|
188
|
+
const paddingBottom = Number(styles.paddingBottom.replace(/px/g, ''));
|
|
189
|
+
this.cachedTooltipHeight = height + paddingTop + paddingBottom;
|
|
190
|
+
return this.cachedTooltipHeight;
|
|
191
|
+
}
|
|
192
|
+
// Fallback: Calculate based on text and wrapping
|
|
193
|
+
const width = Number(styles.width.replace(/px/g, ''));
|
|
194
|
+
const paddingLeft = Number(styles.paddingLeft.replace(/px/g, ''));
|
|
195
|
+
const paddingRight = Number(styles.paddingRight.replace(/px/g, ''));
|
|
196
|
+
const paddingTop = Number(styles.paddingTop.replace(/px/g, ''));
|
|
197
|
+
const paddingBottom = Number(styles.paddingBottom.replace(/px/g, ''));
|
|
198
|
+
const fontSize = Number(styles.fontSize.replace(/px/g, ''));
|
|
199
|
+
const lineHeightStr = styles.lineHeight;
|
|
200
|
+
const lineHeight = lineHeightStr === 'normal' ? fontSize * 1.5 : Number(lineHeightStr.replace(/px/g, ''));
|
|
201
|
+
const contentWidth = width - paddingLeft - paddingRight;
|
|
202
|
+
const whiteSpace = styles.whiteSpace;
|
|
203
|
+
// Single-line tooltip (white-space: pre)
|
|
204
|
+
if (whiteSpace === 'pre' || !this.multiline) {
|
|
205
|
+
return lineHeight + paddingTop + paddingBottom;
|
|
206
|
+
}
|
|
207
|
+
// Multi-line tooltip: estimate line count
|
|
208
|
+
const text = this.label || '';
|
|
209
|
+
const avgCharWidth = fontSize * 0.5; // Approximation for character width
|
|
210
|
+
const charsPerLine = Math.floor(contentWidth / avgCharWidth);
|
|
211
|
+
const estimatedLines = Math.max(1, Math.ceil(text.length / charsPerLine));
|
|
212
|
+
const totalHeight = estimatedLines * lineHeight + paddingTop + paddingBottom;
|
|
213
|
+
// Add some buffer for safety (10px)
|
|
214
|
+
this.cachedTooltipHeight = Math.ceil(totalHeight) + 10;
|
|
215
|
+
return this.cachedTooltipHeight;
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
console.warn('Failed to calculate tooltip height, using fallback', error);
|
|
219
|
+
// Fallback based on multiline mode
|
|
220
|
+
const fallbackHeight = this.multiline ? 80 : 50;
|
|
221
|
+
this.cachedTooltipHeight = fallbackHeight;
|
|
222
|
+
return fallbackHeight;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
124
225
|
checkFocusClass() {
|
|
125
226
|
if (!this.shouldBeVisible)
|
|
126
227
|
return;
|
|
@@ -137,6 +238,24 @@ export class Q2Tooltip {
|
|
|
137
238
|
}
|
|
138
239
|
}
|
|
139
240
|
}
|
|
241
|
+
findConstrainingContainer() {
|
|
242
|
+
let element = this.hostElement.parentElement;
|
|
243
|
+
while (element && element !== document.body) {
|
|
244
|
+
const style = window.getComputedStyle(element);
|
|
245
|
+
const overflow = style.overflow + style.overflowX + style.overflowY;
|
|
246
|
+
// Check if this element constrains overflow
|
|
247
|
+
if (overflow.includes('hidden') || overflow.includes('auto') || overflow.includes('scroll')) {
|
|
248
|
+
return element;
|
|
249
|
+
}
|
|
250
|
+
// Check for q2-modal interior element
|
|
251
|
+
if (element.tagName === 'DIALOG' || element.classList.contains('interior')) {
|
|
252
|
+
return element;
|
|
253
|
+
}
|
|
254
|
+
element = element.parentElement;
|
|
255
|
+
}
|
|
256
|
+
// If no constraining container found, use the viewport
|
|
257
|
+
return document.documentElement;
|
|
258
|
+
}
|
|
140
259
|
findFocusVisibleElement(element) {
|
|
141
260
|
if (!element)
|
|
142
261
|
return;
|
|
@@ -359,6 +478,18 @@ export class Q2Tooltip {
|
|
|
359
478
|
}
|
|
360
479
|
static get listeners() {
|
|
361
480
|
return [{
|
|
481
|
+
"name": "click",
|
|
482
|
+
"method": "documentPointerHandler",
|
|
483
|
+
"target": "document",
|
|
484
|
+
"capture": false,
|
|
485
|
+
"passive": false
|
|
486
|
+
}, {
|
|
487
|
+
"name": "touchstart",
|
|
488
|
+
"method": "documentPointerHandler",
|
|
489
|
+
"target": "document",
|
|
490
|
+
"capture": false,
|
|
491
|
+
"passive": true
|
|
492
|
+
}, {
|
|
362
493
|
"name": "focus",
|
|
363
494
|
"method": "focusCaptureHandler",
|
|
364
495
|
"target": undefined,
|
|
@@ -395,7 +526,7 @@ export class Q2Tooltip {
|
|
|
395
526
|
"capture": false,
|
|
396
527
|
"passive": true
|
|
397
528
|
}, {
|
|
398
|
-
"name": "
|
|
529
|
+
"name": "click",
|
|
399
530
|
"method": "handleMouseOver",
|
|
400
531
|
"target": undefined,
|
|
401
532
|
"capture": false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-tooltip.js","sourceRoot":"","sources":["../../../../src/components/q2-tooltip/q2-tooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, ComponentInterface, Element, Listen, State, Watch } from '@stencil/core';\nimport { isEventFromElement, overrideFocus } from 'src/utils';\n\n/**\n * @name Tooltip\n * @category Feedback\n * @summary Use for brief hints or explanations shown on hover or focus.\n */\n@Component({ tag: 'q2-tooltip', shadow: true, styleUrl: 'q2-tooltip.scss' })\nexport class Q2Tooltip implements ComponentInterface {\n // #region Own Properties\n\n animationEndCount = 0;\n tooltipElement: HTMLDivElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n focusClass: 'has-keyboard-focus' | 'has-generic-focus' | 'has-generic-focus-out';\n\n @State()\n persistOnHoverDismissed: boolean;\n\n // #endregion\n // #region Public Property API\n\n /** Displays the element as a block, making it take up the full width of its container. */\n @Prop({ reflect: true })\n block: boolean;\n\n /**\n * Makes the component focusable, thereby putting it in the tab order of the keyboard.\n * @warning\n * This is only meant to be used when the `q2-tooltip` is wrapped around an element that is not focusable (e.g., icons, static text, badges, etc.).\n */\n @Prop({ reflect: true })\n focusable: boolean = false;\n\n /** Whether to show the tooltip immediately upon hover. */\n @Prop({ reflect: true })\n immediate: boolean;\n\n /** text that is displayed when the tooltip is activated. */\n @Prop({ reflect: true })\n label: string;\n\n /** Enables the use of multi-line tooltips with a default `max-width` of `200px`. */\n @Prop({ reflect: true })\n multiline: boolean;\n\n /** Displays the tooltip persistently. */\n @Prop({ reflect: true })\n persistent: boolean;\n\n /**\n * Allows the tooltip bubble itself to be hovered.\n * When enabled, the tooltip remains visible while moving between the trigger and the tooltip bubble.\n */\n @Prop({ reflect: true })\n persistOnHover: boolean;\n\n /** The position of the tooltip based on [cardinal and intercardinal directions](https://en.wikipedia.org/wiki/Cardinal_direction). */\n @Prop({ reflect: true })\n position: 'n' | 's' | 'e' | 'w' | 'nw' | 'ne' | 'sw' | 'se' = 'n';\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback(): void {\n this.clearTooltipOnChildren();\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n this.propagateTooltip();\n if (this.persistent) this.adjustSide();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus', { capture: true })\n focusCaptureHandler() {\n this.checkFocusClass();\n }\n\n @Listen('focus')\n focusHandler(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n if (!this.focusable) return;\n this.tooltipElement.focus();\n }\n\n @Listen('focusout')\n focusOutHandler() {\n if (this.shouldBeVisible) return;\n if (this.focusClass === 'has-generic-focus') this.focusClass = 'has-generic-focus-out';\n else this.focusClass = null;\n }\n\n // Escape must be handled on `document` so it still dismisses when the tooltip is visible by hover only and focus is not inside the tooltip host.\n @Listen('keydown', { target: 'document' })\n keyDownDocumentHandler(event: KeyboardEvent) {\n if (!['Esc', 'Escape'].includes(event.key)) return;\n if (!this.shouldBeVisible) return;\n if (this.persistOnHover) this.persistOnHoverDismissed = true;\n this.hideTooltip();\n }\n\n @Listen('mouseenter')\n mouseEnterHandler() {\n this.persistOnHoverDismissed = false;\n }\n\n @Listen('mouseover')\n @Listen('mouseclick')\n handleMouseOver() {\n this.adjustSide();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('label')\n labelChanged() {\n this.propagateTooltip();\n }\n\n // #endregion\n // #region Local Methods\n\n get shouldBeVisible() {\n if (this.persistent) return true;\n return this.hostElement.matches(':hover, :focus-within') && !this.persistOnHoverDismissed;\n }\n\n adjustSide() {\n const { left: hostLeft, right: hostRight, width: hostWidth } = this.hostElement.getBoundingClientRect();\n if (!hostLeft || !hostWidth) return;\n\n const { width, paddingLeft, paddingRight } = window.getComputedStyle(this.tooltipElement, '::after');\n\n const tooltipWidth =\n Number(width.replace(/[px]/g, '')) +\n Number(paddingLeft.replace(/[px]/g, '')) +\n Number(paddingRight.replace(/[px]/g, ''));\n const extraMargin = ['se', 'sw', 'ne', 'nw'].includes(this.position) ? 0 : 15;\n\n const distanceLeft = hostLeft + hostWidth / 2;\n const distanceRight = window.innerWidth - hostRight + +hostWidth / 2;\n\n if (['ne', 'se'].includes(this.position)) {\n if (tooltipWidth > distanceRight) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `-${Math.round(tooltipWidth - distanceRight + extraMargin)}px`\n );\n }\n } else if (['nw', 'sw'].includes(this.position)) {\n if (tooltipWidth > distanceLeft) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `${Math.round(tooltipWidth - distanceLeft + extraMargin)}px`\n );\n }\n } else if (['n', 's'].includes(this.position)) {\n if (tooltipWidth / 2 > distanceLeft) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `${Math.round(tooltipWidth / 2 - distanceLeft + extraMargin)}px`\n );\n } else if (tooltipWidth / 2 > distanceRight) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `-${Math.round(tooltipWidth / 2 - distanceRight + extraMargin)}px`\n );\n } else {\n this.tooltipElement.style.setProperty('--comp-offset-translate', `0px`);\n }\n }\n }\n\n animationEndHandler() {\n this.animationEndCount = this.animationEndCount + 1;\n const { focusClass, animationEndCount } = this;\n\n // animationEnd is fired once for :before and once for :after pseudo elements\n // there are multiple animations defined for .has-generic-focus\n // so we need to wait for all of them to finish before we can remove the class\n if (focusClass === 'has-generic-focus-out' || (focusClass === 'has-generic-focus' && animationEndCount === 4)) {\n this.focusClass = null;\n this.animationEndCount = 0;\n }\n }\n\n checkFocusClass() {\n if (!this.shouldBeVisible) return;\n const isKeyboardFocus = !!this.findFocusVisibleElement(document.activeElement);\n this.focusClass = isKeyboardFocus ? 'has-keyboard-focus' : 'has-generic-focus';\n if (isKeyboardFocus) return;\n }\n\n clearTooltipOnChildren() {\n const children = Array.from(this.hostElement.children);\n for (const child of children) {\n if ('_tooltip' in child) {\n (child as HTMLElement & { _tooltip: string })._tooltip = undefined;\n }\n }\n }\n\n findFocusVisibleElement(element: Element) {\n if (!element) return;\n if (element.shadowRoot) element = this.findFocusVisibleElement(element.shadowRoot.activeElement);\n return element?.matches(':focus-visible') ? element : null;\n }\n\n hideTooltip() {\n if (this.focusClass === 'has-generic-focus') this.focusClass = 'has-generic-focus-out';\n else this.focusClass = null;\n }\n\n propagateTooltip() {\n if (this.focusable) return;\n const children = Array.from(this.hostElement.children);\n for (const child of children) {\n if ('_tooltip' in child) {\n (child as HTMLElement & { _tooltip: string })._tooltip = this.label || undefined;\n }\n }\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { focusClass } = this;\n const classes = ['tooltip'];\n if (focusClass) classes.push(focusClass);\n if (this.persistOnHoverDismissed) classes.push('dismissed');\n\n return this.label ? (\n <div\n tabindex={this.focusable ? 0 : undefined}\n ref={el => (this.tooltipElement = el)}\n class={classes.join(' ')}\n aria-label={this.focusable ? this.label : undefined}\n data-label={this.label}\n onAnimationEnd={() => this.animationEndHandler()}\n role={this.focusable ? 'tooltip' : undefined}\n test-id=\"tooltipContainer\"\n >\n <slot onSlotchange={() => this.propagateTooltip()} />\n </div>\n ) : (\n <slot onSlotchange={() => this.propagateTooltip()} />\n );\n }\n\n // #endregion\n}\n"]}
|
|
1
|
+
{"version":3,"file":"q2-tooltip.js","sourceRoot":"","sources":["../../../../src/components/q2-tooltip/q2-tooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, ComponentInterface, Element, Listen, State, Watch } from '@stencil/core';\nimport { isEventFromElement, overrideFocus } from 'src/utils';\n\n/**\n * @name Tooltip\n * @category Feedback\n * @summary Use for brief hints or explanations shown on hover or focus.\n */\n@Component({ tag: 'q2-tooltip', shadow: true, styleUrl: 'q2-tooltip.scss' })\nexport class Q2Tooltip implements ComponentInterface {\n // #region Own Properties\n\n animationEndCount = 0;\n cachedTooltipHeight: number | null = null;\n tooltipElement: HTMLDivElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n focusClass: 'has-keyboard-focus' | 'has-generic-focus' | 'has-generic-focus-out';\n\n @State()\n persistOnHoverDismissed: boolean;\n\n // #endregion\n // #region Public Property API\n\n /** Displays the element as a block, making it take up the full width of its container. */\n @Prop({ reflect: true })\n block: boolean;\n\n /**\n * Makes the component focusable, thereby putting it in the tab order of the keyboard.\n * @warning\n * This is only meant to be used when the `q2-tooltip` is wrapped around an element that is not focusable (e.g., icons, static text, badges, etc.).\n */\n @Prop({ reflect: true })\n focusable: boolean = false;\n\n /** Whether to show the tooltip immediately upon hover. */\n @Prop({ reflect: true })\n immediate: boolean;\n\n /** text that is displayed when the tooltip is activated. */\n @Prop({ reflect: true })\n label: string;\n\n /** Enables the use of multi-line tooltips with a default `max-width` of `200px`. */\n @Prop({ reflect: true })\n multiline: boolean;\n\n /** Displays the tooltip persistently. */\n @Prop({ reflect: true })\n persistent: boolean;\n\n /**\n * Allows the tooltip bubble itself to be hovered.\n * When enabled, the tooltip remains visible while moving between the trigger and the tooltip bubble.\n */\n @Prop({ reflect: true })\n persistOnHover: boolean;\n\n /** The position of the tooltip based on [cardinal and intercardinal directions](https://en.wikipedia.org/wiki/Cardinal_direction). */\n @Prop({ reflect: true })\n position: 'n' | 's' | 'e' | 'w' | 'nw' | 'ne' | 'sw' | 'se' = 'n';\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback(): void {\n this.clearTooltipOnChildren();\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n this.propagateTooltip();\n if (this.persistent) this.adjustSide();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('click', { target: 'document' })\n @Listen('touchstart', { target: 'document' })\n documentPointerHandler(event: Event) {\n if (!this.focusClass || this.persistent) return;\n const isEventInsideTooltip =\n event.composedPath?.().includes(this.hostElement) ||\n (event.target instanceof Node && this.hostElement.contains(event.target));\n if (isEventInsideTooltip) {\n this.persistOnHoverDismissed = false;\n return;\n }\n this.persistOnHoverDismissed = true;\n this.hideTooltip();\n }\n\n @Listen('focus', { capture: true })\n focusCaptureHandler() {\n this.checkFocusClass();\n }\n\n @Listen('focus')\n focusHandler(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n if (!this.focusable) return;\n this.tooltipElement.focus();\n }\n\n @Listen('focusout')\n focusOutHandler() {\n if (this.shouldBeVisible) return;\n if (this.focusClass === 'has-generic-focus') this.focusClass = 'has-generic-focus-out';\n else this.focusClass = null;\n }\n\n // Escape must be handled on `document` so it still dismisses when the tooltip is visible by hover only and focus is not inside the tooltip host.\n @Listen('keydown', { target: 'document' })\n keyDownDocumentHandler(event: KeyboardEvent) {\n if (!['Esc', 'Escape'].includes(event.key)) return;\n if (!this.shouldBeVisible) return;\n if (this.persistOnHover) this.persistOnHoverDismissed = true;\n this.hideTooltip();\n }\n\n @Listen('mouseenter')\n mouseEnterHandler() {\n this.persistOnHoverDismissed = false;\n }\n\n @Listen('mouseover')\n @Listen('click')\n handleMouseOver() {\n this.adjustSide();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('label')\n labelChanged() {\n this.propagateTooltip();\n this.cachedTooltipHeight = null; // Invalidate cache\n if (this.shouldBeVisible || this.persistent) {\n this.adjustSide();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get shouldBeVisible() {\n if (this.persistent) return true;\n return this.hostElement.matches(':hover, :focus-within') && !this.persistOnHoverDismissed;\n }\n\n adjustSide() {\n const {\n left: hostLeft,\n right: hostRight,\n width: hostWidth,\n top: hostTop,\n bottom: hostBottom,\n } = this.hostElement.getBoundingClientRect();\n if (!hostLeft || !hostWidth) return;\n\n // Find the constraining container (modal, dialog, or any overflow:hidden ancestor)\n const constrainingContainer = this.findConstrainingContainer();\n const containerRect = constrainingContainer.getBoundingClientRect();\n\n const { width, paddingLeft, paddingRight } = window.getComputedStyle(this.tooltipElement, '::after');\n\n const tooltipWidth =\n Number(width.replace(/[px]/g, '')) +\n Number(paddingLeft.replace(/[px]/g, '')) +\n Number(paddingRight.replace(/[px]/g, ''));\n const extraMargin = ['se', 'sw', 'ne', 'nw'].includes(this.position) ? 0 : 15;\n\n // Calculate available space relative to constraining container\n const distanceLeft = hostLeft - containerRect.left + hostWidth / 2;\n const distanceRight = containerRect.right - hostRight + hostWidth / 2;\n const distanceTop = hostTop - containerRect.top;\n const distanceBottom = containerRect.bottom - hostBottom;\n\n // Calculate tooltip height dynamically\n const tooltipHeight = this.calculateTooltipHeight();\n\n // Check if we need to flip vertical position\n if (['n', 'ne', 'nw'].includes(this.position) && distanceTop < tooltipHeight) {\n // Not enough space above, try flipping to bottom\n if (distanceBottom >= tooltipHeight) {\n this.position = this.position.replace('n', 's') as any;\n }\n } else if (['s', 'se', 'sw'].includes(this.position) && distanceBottom < tooltipHeight) {\n // Not enough space below, try flipping to top\n if (distanceTop >= tooltipHeight) {\n this.position = this.position.replace('s', 'n') as any;\n }\n }\n\n // Adjust horizontal positioning\n if (['ne', 'se'].includes(this.position)) {\n if (tooltipWidth > distanceRight) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `-${Math.round(tooltipWidth - distanceRight + extraMargin)}px`\n );\n }\n } else if (['nw', 'sw'].includes(this.position)) {\n if (tooltipWidth > distanceLeft) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `${Math.round(tooltipWidth - distanceLeft + extraMargin)}px`\n );\n }\n } else if (['n', 's'].includes(this.position)) {\n if (tooltipWidth / 2 > distanceLeft) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `${Math.round(tooltipWidth / 2 - distanceLeft + extraMargin)}px`\n );\n } else if (tooltipWidth / 2 > distanceRight) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `-${Math.round(tooltipWidth / 2 - distanceRight + extraMargin)}px`\n );\n } else {\n this.tooltipElement.style.setProperty('--comp-offset-translate', `0px`);\n }\n }\n\n // Handle east/west positioning\n if (this.position === 'e' && tooltipWidth > distanceRight) {\n // Not enough space on right, flip to left\n if (distanceLeft >= tooltipWidth) {\n this.position = 'w';\n }\n } else if (this.position === 'w' && tooltipWidth > distanceLeft) {\n // Not enough space on left, flip to right\n if (distanceRight >= tooltipWidth) {\n this.position = 'e';\n }\n }\n }\n\n animationEndHandler() {\n this.animationEndCount = this.animationEndCount + 1;\n const { focusClass, animationEndCount } = this;\n\n // animationEnd is fired once for :before and once for :after pseudo elements\n // there are multiple animations defined for .has-generic-focus\n // so we need to wait for all of them to finish before we can remove the class\n if (focusClass === 'has-generic-focus-out' || (focusClass === 'has-generic-focus' && animationEndCount === 4)) {\n this.focusClass = null;\n this.animationEndCount = 0;\n }\n }\n\n calculateTooltipHeight(): number {\n if (this.cachedTooltipHeight !== null) {\n return this.cachedTooltipHeight;\n }\n\n try {\n const styles = window.getComputedStyle(this.tooltipElement, '::after');\n\n // Try to get computed height first\n const computedHeight = styles.height;\n if (computedHeight && computedHeight !== 'auto' && computedHeight !== '0px') {\n const height = Number(computedHeight.replace(/px/g, ''));\n const paddingTop = Number(styles.paddingTop.replace(/px/g, ''));\n const paddingBottom = Number(styles.paddingBottom.replace(/px/g, ''));\n this.cachedTooltipHeight = height + paddingTop + paddingBottom;\n return this.cachedTooltipHeight;\n }\n\n // Fallback: Calculate based on text and wrapping\n const width = Number(styles.width.replace(/px/g, ''));\n const paddingLeft = Number(styles.paddingLeft.replace(/px/g, ''));\n const paddingRight = Number(styles.paddingRight.replace(/px/g, ''));\n const paddingTop = Number(styles.paddingTop.replace(/px/g, ''));\n const paddingBottom = Number(styles.paddingBottom.replace(/px/g, ''));\n\n const fontSize = Number(styles.fontSize.replace(/px/g, ''));\n const lineHeightStr = styles.lineHeight;\n const lineHeight = lineHeightStr === 'normal' ? fontSize * 1.5 : Number(lineHeightStr.replace(/px/g, ''));\n\n const contentWidth = width - paddingLeft - paddingRight;\n const whiteSpace = styles.whiteSpace;\n\n // Single-line tooltip (white-space: pre)\n if (whiteSpace === 'pre' || !this.multiline) {\n return lineHeight + paddingTop + paddingBottom;\n }\n\n // Multi-line tooltip: estimate line count\n const text = this.label || '';\n const avgCharWidth = fontSize * 0.5; // Approximation for character width\n const charsPerLine = Math.floor(contentWidth / avgCharWidth);\n const estimatedLines = Math.max(1, Math.ceil(text.length / charsPerLine));\n\n const totalHeight = estimatedLines * lineHeight + paddingTop + paddingBottom;\n\n // Add some buffer for safety (10px)\n this.cachedTooltipHeight = Math.ceil(totalHeight) + 10;\n return this.cachedTooltipHeight;\n } catch (error) {\n console.warn('Failed to calculate tooltip height, using fallback', error);\n // Fallback based on multiline mode\n const fallbackHeight = this.multiline ? 80 : 50;\n this.cachedTooltipHeight = fallbackHeight;\n return fallbackHeight;\n }\n }\n\n checkFocusClass() {\n if (!this.shouldBeVisible) return;\n const isKeyboardFocus = !!this.findFocusVisibleElement(document.activeElement);\n this.focusClass = isKeyboardFocus ? 'has-keyboard-focus' : 'has-generic-focus';\n if (isKeyboardFocus) return;\n }\n\n clearTooltipOnChildren() {\n const children = Array.from(this.hostElement.children);\n for (const child of children) {\n if ('_tooltip' in child) {\n (child as HTMLElement & { _tooltip: string })._tooltip = undefined;\n }\n }\n }\n\n findConstrainingContainer(): Element {\n let element: Element = this.hostElement.parentElement;\n\n while (element && element !== document.body) {\n const style = window.getComputedStyle(element);\n const overflow = style.overflow + style.overflowX + style.overflowY;\n\n // Check if this element constrains overflow\n if (overflow.includes('hidden') || overflow.includes('auto') || overflow.includes('scroll')) {\n return element;\n }\n\n // Check for q2-modal interior element\n if (element.tagName === 'DIALOG' || element.classList.contains('interior')) {\n return element;\n }\n\n element = element.parentElement;\n }\n\n // If no constraining container found, use the viewport\n return document.documentElement;\n }\n\n findFocusVisibleElement(element: Element) {\n if (!element) return;\n if (element.shadowRoot) element = this.findFocusVisibleElement(element.shadowRoot.activeElement);\n return element?.matches(':focus-visible') ? element : null;\n }\n\n hideTooltip() {\n if (this.focusClass === 'has-generic-focus') this.focusClass = 'has-generic-focus-out';\n else this.focusClass = null;\n }\n\n propagateTooltip() {\n if (this.focusable) return;\n const children = Array.from(this.hostElement.children);\n for (const child of children) {\n if ('_tooltip' in child) {\n (child as HTMLElement & { _tooltip: string })._tooltip = this.label || undefined;\n }\n }\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { focusClass } = this;\n const classes = ['tooltip'];\n if (focusClass) classes.push(focusClass);\n if (this.persistOnHoverDismissed) classes.push('dismissed');\n\n return this.label ? (\n <div\n tabindex={this.focusable ? 0 : undefined}\n ref={el => (this.tooltipElement = el)}\n class={classes.join(' ')}\n aria-label={this.focusable ? this.label : undefined}\n data-label={this.label}\n onAnimationEnd={() => this.animationEndHandler()}\n role={this.focusable ? 'tooltip' : undefined}\n test-id=\"tooltipContainer\"\n >\n <slot onSlotchange={() => this.propagateTooltip()} />\n </div>\n ) : (\n <slot onSlotchange={() => this.propagateTooltip()} />\n );\n }\n\n // #endregion\n}\n"]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { expect } from "@playwright/test";
|
|
2
|
+
import { test } from "@stencil/playwright";
|
|
3
|
+
import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
|
|
4
|
+
const TRIGGER = `<q2-btn intent="workflow-primary"><span>Trigger</span></q2-btn>`;
|
|
5
|
+
// Pad the wrapper so the tooltip has room to render in any direction without clipping.
|
|
6
|
+
const wrap = (inner) => `<div style="padding: 80px; display: inline-block;">${inner}</div>`;
|
|
7
|
+
// Use `immediate` so hover doesn't have to wait through the 1s delay before the
|
|
8
|
+
// tooltip appears. Don't use `persistent` — it skips animation but also doesn't
|
|
9
|
+
// trigger the same render path as a real hover, which causes positioning bugs.
|
|
10
|
+
const tooltipHtml = (position, label = 'Tooltip text') => wrap(`<q2-tooltip label="${label}" position="${position}" immediate>${TRIGGER}</q2-tooltip>`);
|
|
11
|
+
const VARIANTS = [
|
|
12
|
+
{ name: 'position-n', html: tooltipHtml('n'), states: ['resting'] },
|
|
13
|
+
{ name: 'position-s', html: tooltipHtml('s'), states: ['resting'] },
|
|
14
|
+
{ name: 'position-e', html: tooltipHtml('e'), states: ['resting'] },
|
|
15
|
+
{ name: 'position-w', html: tooltipHtml('w'), states: ['resting'] },
|
|
16
|
+
{ name: 'position-ne', html: tooltipHtml('ne'), states: ['resting'] },
|
|
17
|
+
{ name: 'position-nw', html: tooltipHtml('nw'), states: ['resting'] },
|
|
18
|
+
{ name: 'position-se', html: tooltipHtml('se'), states: ['resting'] },
|
|
19
|
+
{ name: 'position-sw', html: tooltipHtml('sw'), states: ['resting'] },
|
|
20
|
+
{
|
|
21
|
+
name: 'multiline',
|
|
22
|
+
html: wrap(`<q2-tooltip label="A long tooltip that wraps across multiple lines for readability." position="n" immediate multiline>${TRIGGER}</q2-tooltip>`),
|
|
23
|
+
states: ['resting'],
|
|
24
|
+
multiline: true,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'block',
|
|
28
|
+
html: `<div style="padding: 80px;"><q2-tooltip label="Block tooltip" position="n" immediate block>${TRIGGER}</q2-tooltip></div>`,
|
|
29
|
+
states: ['resting'],
|
|
30
|
+
block: true,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'focusable',
|
|
34
|
+
html: wrap(`<q2-tooltip label="Focusable tooltip" position="n" focusable><span>Static text</span></q2-tooltip>`),
|
|
35
|
+
states: ['focus'],
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
// Hover the q2-tooltip host element to surface the bubble. waitForFunction
|
|
39
|
+
// confirms the bubble is visible (opacity > 0) before snapshotting.
|
|
40
|
+
const hoverToShow = async (page) => {
|
|
41
|
+
await page.locator('q2-tooltip').first().hover();
|
|
42
|
+
await page.waitForFunction(() => {
|
|
43
|
+
var _a;
|
|
44
|
+
const tt = document.querySelector('q2-tooltip');
|
|
45
|
+
const bubble = (_a = tt === null || tt === void 0 ? void 0 : tt.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.tooltip');
|
|
46
|
+
if (!bubble)
|
|
47
|
+
return false;
|
|
48
|
+
const after = window.getComputedStyle(bubble, '::after');
|
|
49
|
+
return after.opacity === '1' && after.visibility === 'visible';
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
const restingCase = (variant, theme) => {
|
|
53
|
+
test(`q2-tooltip--${variant.name}--resting — ${theme}`, async ({ page }) => {
|
|
54
|
+
await setupPage(page, variant.html, { theme });
|
|
55
|
+
await hoverToShow(page);
|
|
56
|
+
await expect(page).toHaveScreenshot(`q2-tooltip--${variant.name}--resting--${theme}.png`);
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
const focusCase = (variant, theme) => {
|
|
60
|
+
test(`q2-tooltip--${variant.name}--focus — ${theme}`, async ({ page }) => {
|
|
61
|
+
await setupPage(page, variant.html, { theme });
|
|
62
|
+
await page.keyboard.press('Tab');
|
|
63
|
+
await expect(page).toHaveScreenshot(`q2-tooltip--${variant.name}--focus--${theme}.png`);
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
test.describe('q2-tooltip — variants × themes', () => {
|
|
67
|
+
for (const variant of VARIANTS) {
|
|
68
|
+
for (const theme of THEMES) {
|
|
69
|
+
if (variant.states.includes('resting'))
|
|
70
|
+
restingCase(variant, theme);
|
|
71
|
+
if (variant.states.includes('focus'))
|
|
72
|
+
focusCase(variant, theme);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=q2-tooltip-test.vr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"q2-tooltip-test.vr.js","sourceRoot":"","sources":["../../../../../src/components/q2-tooltip/test/q2-tooltip-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 State = 'resting' | 'focus';\ntype Variant = { name: string; html: string; states: State[]; multiline?: boolean; block?: boolean };\n\nconst TRIGGER = `<q2-btn intent=\"workflow-primary\"><span>Trigger</span></q2-btn>`;\n\n// Pad the wrapper so the tooltip has room to render in any direction without clipping.\nconst wrap = (inner: string) => `<div style=\"padding: 80px; display: inline-block;\">${inner}</div>`;\n\n// Use `immediate` so hover doesn't have to wait through the 1s delay before the\n// tooltip appears. Don't use `persistent` — it skips animation but also doesn't\n// trigger the same render path as a real hover, which causes positioning bugs.\nconst tooltipHtml = (position: string, label = 'Tooltip text') =>\n wrap(`<q2-tooltip label=\"${label}\" position=\"${position}\" immediate>${TRIGGER}</q2-tooltip>`);\n\nconst VARIANTS: Variant[] = [\n { name: 'position-n', html: tooltipHtml('n'), states: ['resting'] },\n { name: 'position-s', html: tooltipHtml('s'), states: ['resting'] },\n { name: 'position-e', html: tooltipHtml('e'), states: ['resting'] },\n { name: 'position-w', html: tooltipHtml('w'), states: ['resting'] },\n { name: 'position-ne', html: tooltipHtml('ne'), states: ['resting'] },\n { name: 'position-nw', html: tooltipHtml('nw'), states: ['resting'] },\n { name: 'position-se', html: tooltipHtml('se'), states: ['resting'] },\n { name: 'position-sw', html: tooltipHtml('sw'), states: ['resting'] },\n {\n name: 'multiline',\n html: wrap(\n `<q2-tooltip label=\"A long tooltip that wraps across multiple lines for readability.\" position=\"n\" immediate multiline>${TRIGGER}</q2-tooltip>`\n ),\n states: ['resting'],\n multiline: true,\n },\n {\n name: 'block',\n html: `<div style=\"padding: 80px;\"><q2-tooltip label=\"Block tooltip\" position=\"n\" immediate block>${TRIGGER}</q2-tooltip></div>`,\n states: ['resting'],\n block: true,\n },\n {\n name: 'focusable',\n html: wrap(\n `<q2-tooltip label=\"Focusable tooltip\" position=\"n\" focusable><span>Static text</span></q2-tooltip>`\n ),\n states: ['focus'],\n },\n];\n\n// Hover the q2-tooltip host element to surface the bubble. waitForFunction\n// confirms the bubble is visible (opacity > 0) before snapshotting.\nconst hoverToShow = async (page: import('@playwright/test').Page) => {\n await page.locator('q2-tooltip').first().hover();\n await page.waitForFunction(() => {\n const tt = document.querySelector('q2-tooltip');\n const bubble = tt?.shadowRoot?.querySelector<HTMLElement>('.tooltip');\n if (!bubble) return false;\n const after = window.getComputedStyle(bubble, '::after');\n return after.opacity === '1' && after.visibility === 'visible';\n });\n};\n\nconst restingCase = (variant: Variant, theme: Theme) => {\n test(`q2-tooltip--${variant.name}--resting — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n await hoverToShow(page);\n await expect(page).toHaveScreenshot(`q2-tooltip--${variant.name}--resting--${theme}.png`);\n });\n};\n\nconst focusCase = (variant: Variant, theme: Theme) => {\n test(`q2-tooltip--${variant.name}--focus — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n await page.keyboard.press('Tab');\n await expect(page).toHaveScreenshot(`q2-tooltip--${variant.name}--focus--${theme}.png`);\n });\n};\n\ntest.describe('q2-tooltip — variants × themes', () => {\n for (const variant of VARIANTS) {\n for (const theme of THEMES) {\n if (variant.states.includes('resting')) restingCase(variant, theme);\n if (variant.states.includes('focus')) focusCase(variant, theme);\n }\n }\n});\n"]}
|
|
@@ -49,9 +49,9 @@ export class TectonTabPane {
|
|
|
49
49
|
// #endregion
|
|
50
50
|
// #region Render Methods
|
|
51
51
|
render() {
|
|
52
|
-
return (h("div", { key: '
|
|
52
|
+
return (h("div", { key: '064545f0fed8a7d7b7aac0ec36179d745fc350af', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, this.selected && this.provided !== undefined && !this.provided && (h("div", { key: 'b74988726b4e15f377d76d9af1921a0c68027d8d' }, h("slot", { key: 'e4e020b962bc6d21520a5d394a4b0a4ecc060476', name: "loading-wrapper" }), h("iframe", { key: 'c33f35f9c4a49e23bfe5ee9b1ad2100a746e2a1f', hidden: true, name: this.moduleId, scrolling: "no", src: this.showForm && this.authPayload.length ? '' : this.url || '', "data-module-id": this.moduleId, style: this.minHeight ? { minHeight: this.minHeight } : null, onLoad: this.onIFrameLoad, title: this.iframeTitle, allow: "geolocation; camera" }), this._showForm && this.authPayload ? (h("form", { hidden: true, method: "post", action: this.url, target: this.moduleId, encType: "multipart/form-data" }, this.authPayload.map(element => {
|
|
53
53
|
return (h("input", { type: "hidden", value: element.value, name: element.key }));
|
|
54
|
-
}))) : (''))), h("div", { key: '
|
|
54
|
+
}))) : (''))), h("div", { key: 'c6e4e3295cbf6dbdcddb7f8109a19bfe3a4975dd', class: "slot-wrapper", hidden: this.selected && this.provided !== undefined && !this.provided }, h("slot", { key: 'd2db52e88ddfe939b119217ca3c69ed93e9d4e38' }))));
|
|
55
55
|
}
|
|
56
56
|
static get is() { return "tecton-tab-pane"; }
|
|
57
57
|
static get encapsulation() { return "shadow"; }
|
|
@@ -8,7 +8,13 @@ export const hasValidParent = (hostElement, requiredParents) => {
|
|
|
8
8
|
};
|
|
9
9
|
export const hasValidAncestor = (hostElement, requiredParents) => {
|
|
10
10
|
const selector = Array.isArray(requiredParents) ? requiredParents.join(',').toLowerCase() : requiredParents;
|
|
11
|
-
|
|
11
|
+
// First try closest() for direct ancestors (works for non-shadow cases)
|
|
12
|
+
let isValid = !!hostElement.closest(selector);
|
|
13
|
+
// If not found and element is slotted, check the slot's parent
|
|
14
|
+
if (!isValid && hostElement.assignedSlot) {
|
|
15
|
+
// Walk up from the slot through its ancestors
|
|
16
|
+
isValid = !!hostElement.assignedSlot.closest(selector);
|
|
17
|
+
}
|
|
12
18
|
if (!isValid) {
|
|
13
19
|
console.warn(`${hostElement.tagName} requires ${selector} as a parent`);
|
|
14
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/utils/component.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAAoB,EAAE,eAAkC,EAAW,EAAE;IAChG,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;IAC5G,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO,aAAa,QAAQ,cAAc,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/utils/component.ts"],"names":[],"mappings":"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","sourcesContent":["export const hasValidParent = (hostElement: Element, requiredParents: string | string[]): boolean => {\n const selector = Array.isArray(requiredParents) ? requiredParents.join(',').toLowerCase() : requiredParents;\n const isValid = !!hostElement.parentElement.matches(selector);\n if (!isValid) {\n console.warn(`${hostElement.tagName} requires ${selector} as a parent`);\n }\n return isValid;\n};\n\nexport const hasValidAncestor = (hostElement: HTMLElement, requiredParents: string | string[]): boolean => {\n const selector = Array.isArray(requiredParents) ? requiredParents.join(',').toLowerCase() : requiredParents;\n\n // First try closest() for direct ancestors (works for non-shadow cases)\n let isValid = !!hostElement.closest(selector);\n\n // If not found and element is slotted, check the slot's parent\n if (!isValid && hostElement.assignedSlot) {\n // Walk up from the slot through its ancestors\n isValid = !!hostElement.assignedSlot.closest(selector);\n }\n\n if (!isValid) {\n console.warn(`${hostElement.tagName} requires ${selector} as a parent`);\n }\n return isValid;\n};\n\nexport const hasValidChildren = (element: Element, allowedChildren: string | string[]): boolean => {\n const app = Array.isArray(allowedChildren)\n ? allowedChildren.map(x => x.toLowerCase())\n : [allowedChildren.toLowerCase()];\n const isValid = !Array.from(element.children).some(x => !app.includes(x.tagName.toLowerCase()));\n if (!isValid) {\n console.warn(`${element.tagName} expects only ${app.join(',')} as children`);\n }\n return isValid;\n};\n\nexport const filterChildren = (element: Element, allowedChildren: string | string[]): void => {\n const app = Array.isArray(allowedChildren)\n ? allowedChildren.map(x => x.toLowerCase())\n : [allowedChildren.toLowerCase()];\n\n Array.from(element.children).forEach(el => {\n if (!app.includes(el.tagName.toLowerCase())) {\n console.warn(`${el.tagName} is not allowed as a child of ${element.tagName} and has been removed.`);\n el.remove();\n }\n });\n};\n"]}
|
|
@@ -174,7 +174,7 @@ export function getBrowserInfo() {
|
|
|
174
174
|
if (userAgent.includes(' iPhone OS') && !userAgent.includes('Safari')) {
|
|
175
175
|
// iOS app WebView — no "Safari" token in userAgent
|
|
176
176
|
name = 'Safari';
|
|
177
|
-
version = userAgent.split(' iPhone OS')[1].trim().split(/\s/)[0].
|
|
177
|
+
version = userAgent.split(' iPhone OS')[1].trim().split(/\s/)[0].replace(/_/g, '.');
|
|
178
178
|
}
|
|
179
179
|
else if (userAgent.includes(' iOS/')) {
|
|
180
180
|
// Alternate iOS app userAgent format (e.g. ngam-ios/26.5.0.107 arm64 iOS/26.4 CFNetwork/1.0 Darwin/25.4.0)
|