q2-tecton-elements 1.65.0 → 1.66.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 +1904 -742
- package/dist/cjs/{action-sheet-CiK2Bap_.js → action-sheet-D71RSc-w.js} +5 -2
- package/dist/cjs/action-sheet-D71RSc-w.js.map +1 -0
- package/dist/cjs/component-DRAntnCA.js +47 -0
- package/dist/cjs/component-DRAntnCA.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 +121 -45
- package/dist/cjs/q2-action-group_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +9 -5
- 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 +2 -2
- package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-avatar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-btn.q2-loading.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +13 -4
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +3 -3
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-card-image.cjs.entry.js +5 -5
- 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 +7 -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 +12 -2
- 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 +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +5 -1
- 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.cjs.entry.js +3 -4
- package/dist/cjs/q2-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-context.cjs.entry.js +1 -1
- 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 +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +19 -9
- 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 +3 -1
- 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 +33 -8
- 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-example.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js +2 -2
- package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-file-picker.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-form.cjs.entry.js +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
- package/dist/cjs/q2-grid-area.cjs.entry.js +9 -1
- package/dist/cjs/q2-grid-area.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-grid-area.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +6 -0
- 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 -6
- 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 +17 -17
- 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 +1 -1
- package/dist/cjs/q2-link.q2-list.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-link_2.cjs.entry.js +11 -7
- package/dist/cjs/q2-link_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +2 -2
- 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 +1 -1
- package/dist/cjs/q2-modal.cjs.entry.js +2 -2
- package/dist/cjs/q2-month-picker.cjs.entry.js +2 -2
- package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +4 -2
- 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-list.q2-popover.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-option-list_2.cjs.entry.js +5 -3
- package/dist/cjs/q2-option-list_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-option.cjs.entry.js +3 -1
- 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-pagination.cjs.entry.js +10 -12
- 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 +2 -2
- package/dist/cjs/q2-radio.cjs.entry.js +2 -2
- 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 +1 -1
- package/dist/cjs/q2-section-container.cjs.entry.js +2 -0
- package/dist/cjs/q2-section-container.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-section-container.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +2 -2
- package/dist/cjs/q2-select.cjs.entry.js +7 -3
- 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 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +6 -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 +5 -1
- 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 +8 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-pane.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tag.cjs.entry.js +3 -3
- package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tag.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
- 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 +192 -0
- package/dist/cjs/q2-toast.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-toast.entry.cjs.js.map +1 -0
- package/dist/cjs/{sanitize-html-string-DPqrzfM9.js → sanitize-html-string-C2iwHNz5.js} +30 -6
- package/dist/cjs/sanitize-html-string-C2iwHNz5.js.map +1 -0
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +4 -2
- package/dist/cjs/tecton-tab-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/tecton-tab-pane.entry.cjs.js.map +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/q2-action-group/q2-action-group.css +11 -4
- package/dist/collection/components/q2-action-group/q2-action-group.js +121 -45
- package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +8 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +9 -5
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
- package/dist/collection/components/q2-avatar/q2-avatar.css +3 -0
- package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
- package/dist/collection/components/q2-btn/q2-btn.css +9 -1
- package/dist/collection/components/q2-btn/q2-btn.js +1 -1
- package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.css +5 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js +2 -2
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
- package/dist/collection/components/q2-card/q2-card.css +1 -0
- package/dist/collection/components/q2-card-image/q2-card-image.js +6 -6
- package/dist/collection/components/q2-card-image/q2-card-image.js.map +1 -1
- package/dist/collection/components/q2-carousel/q2-carousel.css +1 -1
- package/dist/collection/components/q2-carousel/q2-carousel.js +11 -1
- package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +11 -1
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +6 -2
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
- package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.css +135 -14
- package/dist/collection/components/q2-checkbox/q2-checkbox.js +2 -8
- package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +5 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
- package/dist/collection/components/q2-context/q2-context.js +1 -1
- package/dist/collection/components/q2-context/q2-context.js.map +1 -1
- package/dist/collection/components/q2-currency/q2-currency.js +1 -1
- package/dist/collection/components/q2-data-table/q2-data-table.css +3 -0
- package/dist/collection/components/q2-data-table/q2-data-table.js +53 -20
- package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
- package/dist/collection/components/q2-detail/q2-detail.css +6 -0
- package/dist/collection/components/q2-detail/q2-detail.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.css +17 -0
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +75 -8
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +1 -0
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +2 -0
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
- package/dist/collection/components/q2-editable-field/q2-editable-field.js +1 -1
- package/dist/collection/components/q2-example/q2-example.js +1 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.css +4 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.js +4 -4
- package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
- package/dist/collection/components/q2-form/q2-form.js +1 -1
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
- package/dist/collection/components/q2-grid/q2-grid.js +30 -30
- package/dist/collection/components/q2-grid-area/q2-grid-area.js +51 -43
- package/dist/collection/components/q2-grid-area/q2-grid-area.js.map +1 -1
- package/dist/collection/components/q2-icon/assets/brand.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/browsersos.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/cards.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/communication.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/currencies.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/devices.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/filetypes.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/gestures.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/icon-list.json +1 -1
- package/dist/collection/components/q2-icon/assets/icon-map.json +1 -1
- package/dist/collection/components/q2-icon/assets/legacy.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/mobile.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
- package/dist/collection/components/q2-input/formatting/phone.js +4 -2
- package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input.css +3 -0
- package/dist/collection/components/q2-input/q2-input.js +6 -6
- package/dist/collection/components/q2-input/q2-input.js.map +1 -1
- package/dist/collection/components/q2-item/q2-item.css +3 -0
- package/dist/collection/components/q2-item/q2-item.js +19 -18
- package/dist/collection/components/q2-item/q2-item.js.map +1 -1
- package/dist/collection/components/q2-legend/q2-legend.js +1 -1
- package/dist/collection/components/q2-link/q2-link.css +53 -1
- package/dist/collection/components/q2-link/q2-link.js +50 -8
- package/dist/collection/components/q2-link/q2-link.js.map +1 -1
- package/dist/collection/components/q2-list/q2-list.js +1 -1
- package/dist/collection/components/q2-loading/q2-loading.css +1 -1
- package/dist/collection/components/q2-loading/q2-loading.js +10 -1
- package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
- package/dist/collection/components/q2-message/q2-message.css +1 -0
- package/dist/collection/components/q2-message/q2-message.js +1 -1
- package/dist/collection/components/q2-meter/q2-meter.js +1 -1
- package/dist/collection/components/q2-modal/q2-modal.js +1 -1
- package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.css +6 -4
- package/dist/collection/components/q2-optgroup/q2-optgroup.js +3 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
- package/dist/collection/components/q2-option/q2-option.css +5 -0
- package/dist/collection/components/q2-option/q2-option.js +2 -0
- package/dist/collection/components/q2-option/q2-option.js.map +1 -1
- package/dist/collection/components/q2-option-list/q2-option-list.js +8 -6
- package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
- package/dist/collection/components/q2-pagination/q2-pagination.css +3 -0
- package/dist/collection/components/q2-pagination/q2-pagination.js +20 -17
- package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
- package/dist/collection/components/q2-pill/q2-pill.js +1 -1
- package/dist/collection/components/q2-popover/q2-popover.css +1 -1
- package/dist/collection/components/q2-popover/q2-popover.js +1 -1
- package/dist/collection/components/q2-radio/q2-radio.css +85 -35
- package/dist/collection/components/q2-radio/q2-radio.js +1 -1
- package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-section-container/q2-section-container.js +2 -0
- package/dist/collection/components/q2-section-container/q2-section-container.js.map +1 -1
- package/dist/collection/components/q2-select/q2-select.js +6 -5
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/components/q2-stepper/q2-stepper.css +1 -3
- package/dist/collection/components/q2-stepper/q2-stepper.js +6 -2
- package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +7 -5
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +5 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +8 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
- package/dist/collection/components/q2-tag/q2-tag.css +8 -0
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-textarea/q2-textarea.css +2 -1
- package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
- package/dist/collection/components/q2-toast/q2-toast.css +230 -0
- package/dist/collection/components/q2-toast/q2-toast.js +452 -0
- package/dist/collection/components/q2-toast/q2-toast.js.map +1 -0
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +4 -2
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
- package/dist/collection/utils/action-sheet.js +3 -0
- package/dist/collection/utils/action-sheet.js.map +1 -1
- package/dist/collection/utils/component.js +38 -0
- package/dist/collection/utils/component.js.map +1 -0
- package/dist/collection/utils/helpers.js +6 -1
- package/dist/collection/utils/helpers.js.map +1 -1
- package/dist/collection/utils/sanitize-html-string.js +6 -0
- package/dist/collection/utils/sanitize-html-string.js.map +1 -1
- package/dist/components/action-sheet.js +3 -0
- package/dist/components/action-sheet.js.map +1 -1
- package/dist/components/component.js +42 -0
- package/dist/components/component.js.map +1 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/q2-action-group2.js +121 -45
- package/dist/components/q2-action-group2.js.map +1 -1
- package/dist/components/q2-action-sheet.js +9 -5
- package/dist/components/q2-action-sheet.js.map +1 -1
- package/dist/components/q2-avatar2.js +2 -2
- package/dist/components/q2-avatar2.js.map +1 -1
- package/dist/components/q2-btn2.js +2 -2
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-calendar.js +3 -3
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-card-image.js +6 -6
- package/dist/components/q2-card-image.js.map +1 -1
- package/dist/components/q2-card.js +1 -1
- package/dist/components/q2-card.js.map +1 -1
- package/dist/components/q2-carousel-pane.js +7 -3
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel.js +12 -2
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-area.js +1 -1
- package/dist/components/q2-chart-bar.js +1 -1
- package/dist/components/q2-chart-donut.js +1 -1
- package/dist/components/q2-checkbox-group.js +5 -1
- package/dist/components/q2-checkbox-group.js.map +1 -1
- package/dist/components/q2-checkbox2.js +3 -4
- 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 +1 -1
- package/dist/components/q2-data-table.js +20 -9
- package/dist/components/q2-data-table.js.map +1 -1
- package/dist/components/q2-detail.js +2 -2
- package/dist/components/q2-detail.js.map +1 -1
- package/dist/components/q2-dropdown-item2.js +3 -1
- package/dist/components/q2-dropdown-item2.js.map +1 -1
- package/dist/components/q2-dropdown.js +34 -7
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-editable-field.js +1 -1
- package/dist/components/q2-example.js +1 -1
- package/dist/components/q2-file-picker.js +2 -2
- package/dist/components/q2-file-picker.js.map +1 -1
- package/dist/components/q2-form.js +1 -1
- package/dist/components/q2-formatted-text.js +1 -1
- package/dist/components/q2-grid-area.js +9 -1
- package/dist/components/q2-grid-area.js.map +1 -1
- package/dist/components/q2-icon2.js +6 -0
- package/dist/components/q2-icon2.js.map +1 -1
- package/dist/components/q2-input2.js +8 -6
- package/dist/components/q2-input2.js.map +1 -1
- package/dist/components/q2-item2.js +17 -17
- package/dist/components/q2-item2.js.map +1 -1
- package/dist/components/q2-legend2.js +1 -1
- package/dist/components/q2-link2.js +12 -6
- package/dist/components/q2-link2.js.map +1 -1
- package/dist/components/q2-list2.js +1 -1
- package/dist/components/q2-loading2.js +11 -2
- 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-modal.js +1 -1
- package/dist/components/q2-month-picker.js +2 -2
- package/dist/components/q2-mutation-observer.js +1 -1
- package/dist/components/q2-optgroup2.js +4 -2
- package/dist/components/q2-optgroup2.js.map +1 -1
- package/dist/components/q2-option-list2.js +3 -1
- package/dist/components/q2-option-list2.js.map +1 -1
- package/dist/components/q2-option2.js +3 -1
- package/dist/components/q2-option2.js.map +1 -1
- package/dist/components/q2-pagination.js +11 -13
- package/dist/components/q2-pagination.js.map +1 -1
- package/dist/components/q2-pill.js +1 -1
- package/dist/components/q2-popover2.js +2 -2
- package/dist/components/q2-popover2.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-container.js +2 -0
- package/dist/components/q2-section-container.js.map +1 -1
- package/dist/components/q2-section.js +2 -2
- package/dist/components/q2-select2.js +6 -2
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/components/q2-stepper-pane.js +3 -1
- package/dist/components/q2-stepper-pane.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +1 -1
- package/dist/components/q2-stepper.js +7 -3
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/components/q2-tab-container.js +5 -1
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +8 -1
- package/dist/components/q2-tab-pane.js.map +1 -1
- package/dist/components/q2-tag.js +2 -2
- package/dist/components/q2-tag.js.map +1 -1
- package/dist/components/q2-textarea.js +2 -2
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/q2-toast.d.ts +11 -0
- package/dist/components/q2-toast.js +233 -0
- package/dist/components/q2-toast.js.map +1 -0
- package/dist/components/sanitize-html-string.js +28 -5
- package/dist/components/sanitize-html-string.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +4 -2
- package/dist/components/tecton-tab-pane.js.map +1 -1
- package/dist/esm/{action-sheet-WwoBwnIp.js → action-sheet-B7adb3xs.js} +5 -2
- package/dist/esm/action-sheet-B7adb3xs.js.map +1 -0
- package/dist/esm/component-DVxzK3WH.js +42 -0
- package/dist/esm/component-DVxzK3WH.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 +121 -45
- package/dist/esm/q2-action-group_2.entry.js.map +1 -1
- package/dist/esm/q2-action-sheet.entry.js +9 -5
- package/dist/esm/q2-action-sheet.entry.js.map +1 -1
- package/dist/esm/q2-avatar.entry.js +2 -2
- package/dist/esm/q2-avatar.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 +13 -4
- package/dist/esm/q2-btn_2.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +3 -3
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-card-image.entry.js +6 -6
- 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 +7 -3
- package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +12 -2
- 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 +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +5 -1
- package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
- package/dist/esm/q2-checkbox.entry.js +3 -4
- package/dist/esm/q2-checkbox.entry.js.map +1 -1
- package/dist/esm/q2-context.entry.js +1 -1
- package/dist/esm/q2-context.entry.js.map +1 -1
- package/dist/esm/q2-currency.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +19 -9
- 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 +3 -1
- package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +33 -8
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +1 -1
- package/dist/esm/q2-example.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js +2 -2
- package/dist/esm/q2-file-picker.entry.js.map +1 -1
- package/dist/esm/q2-form.entry.js +1 -1
- package/dist/esm/q2-formatted-text.entry.js +1 -1
- package/dist/esm/q2-grid-area.entry.js +10 -2
- package/dist/esm/q2-grid-area.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +6 -0
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-input.entry.js +8 -6
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-item.entry.js +17 -17
- package/dist/esm/q2-item.entry.js.map +1 -1
- package/dist/esm/q2-legend.entry.js +1 -1
- package/dist/esm/q2-link.q2-list.entry.js.map +1 -1
- package/dist/esm/q2-link_2.entry.js +11 -7
- package/dist/esm/q2-link_2.entry.js.map +1 -1
- package/dist/esm/q2-message.entry.js +2 -2
- package/dist/esm/q2-message.entry.js.map +1 -1
- package/dist/esm/q2-meter.entry.js +1 -1
- package/dist/esm/q2-modal.entry.js +2 -2
- package/dist/esm/q2-month-picker.entry.js +2 -2
- package/dist/esm/q2-mutation-observer.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +4 -2
- package/dist/esm/q2-optgroup.entry.js.map +1 -1
- package/dist/esm/q2-option-list.q2-popover.entry.js.map +1 -1
- package/dist/esm/q2-option-list_2.entry.js +5 -3
- package/dist/esm/q2-option-list_2.entry.js.map +1 -1
- package/dist/esm/q2-option.entry.js +3 -1
- package/dist/esm/q2-option.entry.js.map +1 -1
- package/dist/esm/q2-pagination.entry.js +10 -12
- package/dist/esm/q2-pagination.entry.js.map +1 -1
- package/dist/esm/q2-pill.entry.js +2 -2
- package/dist/esm/q2-radio.entry.js +2 -2
- package/dist/esm/q2-radio.entry.js.map +1 -1
- package/dist/esm/q2-relative-time.entry.js +1 -1
- package/dist/esm/q2-section-container.entry.js +2 -0
- package/dist/esm/q2-section-container.entry.js.map +1 -1
- package/dist/esm/q2-section.entry.js +2 -2
- package/dist/esm/q2-select.entry.js +7 -3
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +3 -1
- package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +1 -1
- package/dist/esm/q2-stepper.entry.js +7 -3
- package/dist/esm/q2-stepper.entry.js.map +1 -1
- package/dist/esm/q2-tab-container.entry.js +5 -1
- package/dist/esm/q2-tab-container.entry.js.map +1 -1
- package/dist/esm/q2-tab-pane.entry.js +9 -2
- package/dist/esm/q2-tab-pane.entry.js.map +1 -1
- package/dist/esm/q2-tag.entry.js +3 -3
- package/dist/esm/q2-tag.entry.js.map +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +2 -2
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/q2-toast.entry.js +190 -0
- package/dist/esm/q2-toast.entry.js.map +1 -0
- package/dist/esm/{sanitize-html-string-DOVERJq5.js → sanitize-html-string-BPwFpYg-.js} +30 -7
- package/dist/esm/sanitize-html-string-BPwFpYg-.js.map +1 -0
- package/dist/esm/tecton-tab-pane.entry.js +4 -2
- package/dist/esm/tecton-tab-pane.entry.js.map +1 -1
- package/dist/jest.e2e-coverage.js +25 -0
- package/dist/jest.e2e-coverage.js.map +1 -0
- package/dist/q2-tecton-elements/{action-sheet-WwoBwnIp.js → action-sheet-B7adb3xs.js} +19 -14
- package/dist/q2-tecton-elements/action-sheet-B7adb3xs.js.map +1 -0
- package/dist/q2-tecton-elements/assets/brand.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/browsersos.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/cards.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/communication.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/currencies.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/devices.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/filetypes.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/gestures.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/icon-list.json +1 -1
- package/dist/q2-tecton-elements/assets/icon-map.json +1 -1
- package/dist/q2-tecton-elements/assets/legacy.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/mobile.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
- package/dist/q2-tecton-elements/component-DVxzK3WH.js +40 -0
- package/dist/q2-tecton-elements/component-DVxzK3WH.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 +131 -63
- 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 +79 -75
- 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 +7 -7
- package/dist/q2-tecton-elements/q2-avatar.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 +11 -4
- 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 -3
- 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 +11 -11
- 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 +25 -20
- 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 +79 -67
- package/dist/q2-tecton-elements/q2-carousel.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +20 -15
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox.entry.js +70 -71
- package/dist/q2-tecton-elements/q2-checkbox.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 +12 -12
- package/dist/q2-tecton-elements/q2-context.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-currency.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-data-table.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.js +40 -27
- 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 +10 -10
- 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 +11 -8
- 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 +113 -85
- package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +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 +3 -2
- package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-form.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-grid-area.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-grid-area.entry.js +18 -7
- package/dist/q2-tecton-elements/q2-grid-area.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 +145 -137
- 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 +14 -8
- 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 +56 -53
- package/dist/q2-tecton-elements/q2-item.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
- 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 +22 -18
- package/dist/q2-tecton-elements/q2-link_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-message.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-meter.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-modal.entry.js +21 -21
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +30 -30
- package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +15 -12
- package/dist/q2-tecton-elements/q2-optgroup.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option-list.q2-popover.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option-list_2.entry.js +52 -49
- package/dist/q2-tecton-elements/q2-option-list_2.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 +15 -12
- package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.js +66 -66
- package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pill.entry.js +37 -37
- package/dist/q2-tecton-elements/q2-radio.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.js +47 -45
- package/dist/q2-tecton-elements/q2-radio.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-relative-time.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-section-container.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-section-container.entry.js +5 -2
- package/dist/q2-tecton-elements/q2-section-container.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-section.entry.js +11 -11
- package/dist/q2-tecton-elements/q2-select.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.js +6 -3
- package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +22 -19
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +69 -69
- package/dist/q2-tecton-elements/q2-stepper.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper.entry.js +42 -39
- 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 +21 -16
- package/dist/q2-tecton-elements/q2-tab-container.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-pane.entry.js +17 -7
- package/dist/q2-tecton-elements/q2-tab-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tag.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tag.entry.js +65 -65
- package/dist/q2-tecton-elements/q2-tag.entry.js.map +1 -1
- 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 +3 -3
- package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.esm.js.map +1 -0
- package/dist/q2-tecton-elements/q2-toast.entry.js +222 -0
- package/dist/q2-tecton-elements/q2-toast.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{sanitize-html-string-DOVERJq5.js → sanitize-html-string-BPwFpYg-.js} +167 -145
- package/dist/q2-tecton-elements/sanitize-html-string-BPwFpYg-.js.map +1 -0
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +8 -8
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js.map +1 -1
- package/dist/scripts/docs-generator/index.js +1 -1
- package/dist/scripts/docs-generator/index.js.map +1 -1
- package/dist/types/Users/kvanhouten/Documents/Work/tecton/packages/q2-tecton-elements/.stencil/jest.e2e-coverage.d.ts +1 -0
- package/dist/types/components/q2-action-group/q2-action-group.d.ts +7 -4
- package/dist/types/components/q2-carousel-pane/q2-carousel-pane.d.ts +1 -0
- package/dist/types/components/q2-checkbox/q2-checkbox.d.ts +0 -5
- package/dist/types/components/q2-data-table/q2-data-table.d.ts +8 -0
- package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +22 -3
- package/dist/types/components/q2-grid-area/q2-grid-area.d.ts +2 -0
- package/dist/types/components/q2-input/q2-input.d.ts +4 -5
- package/dist/types/components/q2-item/q2-item.d.ts +5 -4
- package/dist/types/components/q2-link/q2-link.d.ts +4 -0
- package/dist/types/components/q2-pagination/q2-pagination.d.ts +11 -3
- package/dist/types/components/q2-select/q2-select.d.ts +1 -2
- package/dist/types/components/q2-tab-pane/q2-tab-pane.d.ts +2 -0
- package/dist/types/components/q2-toast/q2-toast.d.ts +67 -0
- package/dist/types/components.d.ts +189 -34
- package/dist/types/utils/action-sheet.d.ts +2 -1
- package/dist/types/utils/component.d.ts +4 -0
- package/dist/types/utils/sanitize-html-string.d.ts +1 -0
- package/package.json +11 -7
- package/dist/cjs/action-sheet-CiK2Bap_.js.map +0 -1
- package/dist/cjs/sanitize-html-string-DPqrzfM9.js.map +0 -1
- package/dist/esm/action-sheet-WwoBwnIp.js.map +0 -1
- package/dist/esm/sanitize-html-string-DOVERJq5.js.map +0 -1
- package/dist/q2-tecton-elements/action-sheet-WwoBwnIp.js.map +0 -1
- package/dist/q2-tecton-elements/sanitize-html-string-DOVERJq5.js.map +0 -1
- /package/dist/types/Users/kvanhouten/Documents/Work/{tecton_extra → tecton}/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +0 -0
- /package/dist/types/Users/kvanhouten/Documents/Work/{tecton_extra → tecton}/packages/q2-tecton-elements/.stencil/scripts/docs-generator/index.d.ts +0 -0
- /package/dist/types/Users/kvanhouten/Documents/Work/{tecton_extra → tecton}/packages/q2-tecton-elements/.stencil/scripts/docs-generator/markdown-generator.d.ts +0 -0
- /package/dist/types/Users/kvanhouten/Documents/Work/{tecton_extra → tecton}/packages/q2-tecton-elements/.stencil/scripts/docs-generator/tag-handlers.d.ts +0 -0
- /package/dist/types/Users/kvanhouten/Documents/Work/{tecton_extra → tecton}/packages/q2-tecton-elements/.stencil/scripts/docs-generator/types.d.ts +0 -0
|
@@ -5,9 +5,11 @@ export default function formatPhoneNumber(value, isoCode = 'US') {
|
|
|
5
5
|
const options = {
|
|
6
6
|
prefix,
|
|
7
7
|
};
|
|
8
|
-
|
|
8
|
+
// Strip non-digit characters so pasting mixed text (e.g. "abc123") behaves
|
|
9
|
+
// the same as typing digits one-by-one, where alpha characters are blocked.
|
|
10
|
+
const val = (value || '').replace(/[^0-9]/g, '');
|
|
9
11
|
// Brazil need edge case handle, mobile: (xx) xxxxx-xxxx, land phone: (xx) xxxx-xxxx
|
|
10
|
-
if (isoCode === 'BR' && val.
|
|
12
|
+
if (isoCode === 'BR' && val.length === 11) {
|
|
11
13
|
return formatValue(val, '(##) #####-####', options);
|
|
12
14
|
}
|
|
13
15
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phone.js","sourceRoot":"","sources":["../../../../../src/components/q2-input/formatting/phone.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,KAAa,EAAE,UAAkB,IAAI;IAC3E,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,EAAE,CAAC;IAE9E,MAAM,OAAO,GAAG;QACZ,MAAM;KACT,CAAC;IAEF,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"phone.js","sourceRoot":"","sources":["../../../../../src/components/q2-input/formatting/phone.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,KAAa,EAAE,UAAkB,IAAI;IAC3E,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,EAAE,CAAC;IAE9E,MAAM,OAAO,GAAG;QACZ,MAAM;KACT,CAAC;IAEF,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACjD,oFAAoF;IACpF,IAAI,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACxC,OAAO,WAAW,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACJ,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;AACL,CAAC","sourcesContent":["import { IFormatterValueObject } from '../q2-input-types';\nimport formatValue from './generic';\nimport { phoneNumberFormats } from './phone-number-formats';\n\nexport default function formatPhoneNumber(value: string, isoCode: string = 'US'): IFormatterValueObject {\n const { mask, prefix } = phoneNumberFormats[isoCode] || phoneNumberFormats.US;\n\n const options = {\n prefix,\n };\n\n // Strip non-digit characters so pasting mixed text (e.g. \"abc123\") behaves\n // the same as typing digits one-by-one, where alpha characters are blocked.\n const val = (value || '').replace(/[^0-9]/g, '');\n // Brazil need edge case handle, mobile: (xx) xxxxx-xxxx, land phone: (xx) xxxx-xxxx\n if (isoCode === 'BR' && val.length === 11) {\n return formatValue(val, '(##) #####-####', options);\n } else {\n return formatValue(val, mask, options);\n }\n}\n"]}
|
|
@@ -109,7 +109,7 @@ export class Q2Input {
|
|
|
109
109
|
...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),
|
|
110
110
|
});
|
|
111
111
|
if (!this.formattedValueObject.value) {
|
|
112
|
-
mirrorEmit(this, ['clear', 'tctClear'],
|
|
112
|
+
mirrorEmit(this, ['clear', 'tctClear'], { source: 'input' });
|
|
113
113
|
}
|
|
114
114
|
this.setCursorPosition(cursorPosition);
|
|
115
115
|
};
|
|
@@ -128,7 +128,7 @@ export class Q2Input {
|
|
|
128
128
|
};
|
|
129
129
|
mirrorEmit(this, ['input', 'tctInput'], eventDetail);
|
|
130
130
|
mirrorEmit(this, ['change', 'tctChange'], eventDetail);
|
|
131
|
-
mirrorEmit(this, ['clear', 'tctClear'],
|
|
131
|
+
mirrorEmit(this, ['clear', 'tctClear'], { source: 'button' });
|
|
132
132
|
this.inputField.focus();
|
|
133
133
|
};
|
|
134
134
|
this.onInputBlur = () => {
|
|
@@ -722,7 +722,7 @@ export class Q2Input {
|
|
|
722
722
|
}
|
|
723
723
|
render() {
|
|
724
724
|
const { ariaControls, ariaExpanded } = this.ariaAttributes;
|
|
725
|
-
return (h(Host, { key: '
|
|
725
|
+
return (h(Host, { key: '750a3affc17370a955a0e1c7a033b1e6abb22cb9', role: this._role, "aria-controls": ariaControls, "aria-expanded": ariaExpanded }, h("div", { key: '90af7681069fca55d58f1793e3222f4ca6c65a36', class: this.wrapperClasses }, h("div", { key: 'c956843c5bb23740d21291bbbb692ccf782f55c6', class: "label-wrapper" }, renderLabel(this), this.renderCountDOM()), this.renderInputContainerDOM(), renderMessages(this))));
|
|
726
726
|
}
|
|
727
727
|
static get is() { return "q2-input"; }
|
|
728
728
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1544,7 +1544,7 @@ export class Q2Input {
|
|
|
1544
1544
|
"references": {
|
|
1545
1545
|
"InputType": {
|
|
1546
1546
|
"location": "local",
|
|
1547
|
-
"path": "/Users/kvanhouten/Documents/Work/
|
|
1547
|
+
"path": "/Users/kvanhouten/Documents/Work/tecton/packages/q2-tecton-elements/src/components/q2-input/q2-input.tsx",
|
|
1548
1548
|
"id": "src/components/q2-input/q2-input.tsx::InputType"
|
|
1549
1549
|
}
|
|
1550
1550
|
}
|
|
@@ -1654,7 +1654,7 @@ export class Q2Input {
|
|
|
1654
1654
|
"name": "deprecated",
|
|
1655
1655
|
"text": "Use 'tctClear' instead"
|
|
1656
1656
|
}],
|
|
1657
|
-
"text": "Emitted when the field value is cleared.\
|
|
1657
|
+
"text": "Emitted when the field value is cleared.\nEmitted with `{ source: 'input' }` when search text is cleared by keyboard.\nEmitted with `{ source: 'button' }` when search text is cleared by clicking clear icon."
|
|
1658
1658
|
},
|
|
1659
1659
|
"complexType": {
|
|
1660
1660
|
"original": "undefined",
|
|
@@ -1771,7 +1771,7 @@ export class Q2Input {
|
|
|
1771
1771
|
"composed": true,
|
|
1772
1772
|
"docs": {
|
|
1773
1773
|
"tags": [],
|
|
1774
|
-
"text": "Emitted when the field value is cleared.\
|
|
1774
|
+
"text": "Emitted when the field value is cleared.\nEmitted with `{ source: 'input' }` when search text is cleared by keyboard.\nEmitted with `{ source: 'button' }` when search text is cleared by clicking clear icon."
|
|
1775
1775
|
},
|
|
1776
1776
|
"complexType": {
|
|
1777
1777
|
"original": "undefined",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-input.js","sourceRoot":"","sources":["../../../../src/components/q2-input/q2-input.tsx"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGJ","sourcesContent":["import {\n Component,\n Prop,\n Element,\n State,\n Event,\n EventEmitter,\n h,\n Host,\n Watch,\n Listen,\n Fragment,\n Method,\n} from '@stencil/core';\nimport {\n createGuid,\n getAriaValueFromProp,\n renderLabel,\n loc,\n renderMessages,\n setMessageHeight,\n handleAriaLabel,\n overrideFocus,\n isEventFromElement,\n isMobile,\n hasSlotContent,\n nextPaint,\n} from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nimport { IFormatterValueObject, ICursorData, IEventDetail } from './q2-input-types';\nimport formatCurrency from './formatting/currency';\nimport formatPhoneNumber from './formatting/phone';\nimport formatSSN from './formatting/ssn';\nimport formatTIN from './formatting/tin';\nimport formatAlphanumeric from './formatting/alphanumeric';\nimport formatAlpha from './formatting/alpha';\nimport formatNumeric, { formatPercentage } from './formatting/numeric';\nimport formatPostalCode from './formatting/postal';\nimport formatDate from './formatting/date';\nimport formatCreditCard from './formatting/credit-card';\nimport formatCIF from './formatting/cif';\nimport formatRoutingNumber from './formatting/routingnumber';\nimport formatSwift from './formatting/swift';\nimport formatIBAN from './formatting/iban';\nimport formatCLABE from './formatting/clabe';\nimport { Q2Icon } from '../q2-icon/q2-icon';\nimport { Q2Badge } from '../q2-badge/q2-badge';\n\nconst inputTypeMap = {\n text: 'text',\n tel: 'tel',\n number: 'number',\n password: 'text',\n search: 'search',\n url: 'url',\n email: 'email',\n currency: 'text',\n phone: 'tel',\n ssn: 'text',\n alphanumeric: 'text',\n alpha: 'text',\n numeric: 'text',\n percentage: 'text',\n postal: 'text',\n date: 'text',\n 'credit-card': 'text',\n cif: 'text',\n routingnumber: 'text',\n swift: 'text',\n iban: 'text',\n clabe: 'text',\n};\n\nexport type InputType = keyof typeof inputTypeMap;\n\n/**\n * @name Input\n * @category Forms\n * @summary Use for single-line text entry including email, phone, currency, SSN, and password.\n * @slot label - An optional slot to display a custom label.\n * @slot input-left - An optional slot to add a [Button](https://tecton.q2developer.com/design-system/q2-btn) on the left-hand side of the input field.\n * @slot input-right - An optional slot to add a [Button](https://tecton.q2developer.com/design-system/q2-btn) on the right-hand side of the input field.\n * @slot custom-display - An optional slot to display custom content in the input field.\n */\n@Component({ tag: 'q2-input', shadow: true, styleUrl: 'q2-input.scss' })\nexport class Q2Input {\n // #region Own Properties\n\n guid = createGuid();\n inputRef: HTMLInputElement;\n isClickEvent: boolean = false;\n isMobile: boolean = isMobile();\n mutationObserver: MutationObserver;\n resizeObserver: ResizeObserver;\n scheduledAfterRender: (() => void)[] = [];\n textSelectedForDeletion: boolean;\n valueOnFocus: string;\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 checkSlotCount: number = 0;\n\n @State()\n formattedValueObject: IFormatterValueObject;\n\n @State()\n hasFocus: boolean;\n\n @State()\n isSmall: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Sets readonly to true on the input without adding the \"read only\" label.\n *\n * Can be used to prevent user input while still presenting the necessary information for assistive technology.\n * @private\n */\n @Prop({ mutable: true })\n _preventEntry: boolean = undefined;\n\n /**\n * Allows for correct semantics of q2-input element when aria-expanded.\n * @private\n * Defaults to undefined\n * Will assign role to combobox when used inside q2-select and q2-calendar.\n */\n @Prop({ mutable: true })\n _role: 'combobox' | undefined = undefined;\n\n @Prop()\n ariaActivedescendant: string;\n\n @Prop()\n ariaControls: string;\n\n @Prop({ reflect: true })\n ariaExpanded: string;\n\n @Prop()\n ariaHaspopup: string;\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n @Prop()\n ariaOwns: string;\n\n /**\n * The `autocapitalize` attribute is an enumerated attribute that controls whether and how text input is automatically capitalized as it is entered/edited by the user.\n *\n * [See MDN for a list of supported values](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize#value).\n * @info\n * This attribute only affects the behavior of input mechanisms like virtual keyboards on mobile devices and voice input.\n */\n @Prop({ reflect: true })\n autocapitalize: string;\n\n /**\n * The HTML autocomplete attribute lets web developers specify what permission (if any) the user agent has to provide automated assistance in filling out form field values,\n * as well as guidance to the browser as to the type of information expected in the field.\n *\n * [See MDN for a list of supported values](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values).\n */\n @Prop({ reflect: true })\n autocomplete: string;\n\n /**\n * A string that indicates whether or not to activate automatic correction while the user is editing this field.\n * @warning\n * This is currently only supported in Safari.\n */\n @Prop({ reflect: true })\n autocorrect: 'on' | 'off';\n\n /**\n * Autofocus is enabled when the property is added to an element. To disable, remove attribute or set it to false.\n * If applied to multiple elements, the first one will receive focus.\n */\n @Prop({ reflect: true })\n autofocus: boolean;\n\n /** The color of the badge when in the active state. The property `badgeValue` must be provided. */\n @Prop({ reflect: true })\n badgeTheme: Q2Badge['theme'];\n\n /** Displays a `q2-badge` element on the right side of the input. */\n @Prop({ reflect: true })\n badgeValue: string;\n\n /** Renders an icon button when the field is non-empty. Pressing the button clears all input from the field. */\n @Prop({ reflect: true })\n clearable: boolean;\n\n /**\n * If provided a value, it sets the `aria-current` attribute on the inner input.\n * [See MDN for more information on aria-current](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current).\n */\n @Prop()\n current: 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false';\n\n /** Indicates the field cannot be focused or interacted with. */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * Each item in the `errors` array will appear below the input field when the field is focused.\n * @localizable\n */\n @Prop()\n errors: string[];\n\n /**\n * Defines the field's expected input format, and automatically masks user input to conform.\n * Specific types support different modifier options. See the section on Format Modifiers for all available options.\n */\n @Prop({ reflect: true })\n formatModifier: string;\n\n /**\n * Hide's the field's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * When `true` and the input field has an active validation error, the field shows the error state without displaying associated error messages below the field (from the errors array).\n * Primarily used for dropdown selects and date pickers whose controls appear below the input field (where the error messages, if displayed, would also appear).\n */\n @Prop({ reflect: true })\n hideMessages: boolean;\n\n /**\n * Each item in the `hints` array will appear below the input field when the field is focused.\n * @info\n * The `errors` array takes precedence over the `hints` array. If an input field has both hints and errors, only the errors will display.\n * Once all errors are resolved, the hints display the next time the field is focused.\n * @localizable\n */\n @Prop()\n hints: string[];\n\n /** Shows a left-aligned [q2-icon](https://tecton.q2developer.com/design-system/q2-icon/) within the field. */\n @Prop({ reflect: true })\n iconLeft: Q2Icon['type'];\n\n /** Shows a right-aligned [q2-icon](https://tecton.q2developer.com/design-system/q2-icon/) within the field. */\n @Prop({ reflect: true })\n iconRight: Q2Icon['type'];\n\n /**\n * The label that appears above the field. This is announced by screen readers when the field is focused.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * When present, it does not allow a value greater than `max` when the user uses the Up/Down arrow keys to change the value.\n * @info\n * Only applicable when `type=\"number\"`.\n */\n @Prop({ reflect: true })\n max: number;\n\n /**\n * Defines the maximum allowed input length in characters. Formatting characters (e.g. `.`, `-`, etc) are included in the `maxlength` comparison.\n * Make sure you account for them when setting the `maxlength` value. Input types that use masks have their own inherent `maxlength`.\n */\n @Prop({ reflect: true, mutable: true })\n maxlength: number;\n\n /**\n * When present, it does not allow a value less than the `min` when the user uses the Up/Down arrow keys to change the value.\n * @info\n * Only applicable when `type=\"number\"`.\n */\n @Prop({ reflect: true })\n min: number;\n\n /** Appends \"(optional)\" to the field label, and sets `aria-required` on the nested input tag to `false`. */\n @Prop({ reflect: true })\n optional: boolean;\n\n /**\n * Applies the value as a RegEx pattern to assess the validity of the input field's value.\n * Check the ValidityState's `patternMismatch` property for the result.\n *\n * **Example:**\n * @snippet\n * <q2-input label=\"My input\" pattern=\"[a-zA-Z0-9]{3,5}\" id=\"myInput\"></q2-input>\n * // enter \"abcdefgh\" in the input field (too many characters)\n * const myInput = document.querySelector('#myInput');\n * console.log(myInput.validity.patternMismatch); // true\n */\n @Prop({ reflect: true, mutable: true })\n pattern: string;\n\n /**\n * Text that appears within the field when it is blurred and empty.\n * Placeholder text disappears when the user focuses on the field and provides input.\n * @info\n * Primarily used for rare cases in which a visible form label is not expected (e.g., search fields).\n * @localizable\n */\n @Prop({ reflect: true })\n placeholder: string;\n\n /** Component will display as a clickable `<button>` styled to be identical to the default `<input>` field. */\n @Prop({ reflect: true })\n pseudo: boolean;\n\n /**\n * Appends \"(read only)\" to the field label, and field becomes unusable, but remains focusable.\n * Takes priority over `optional` if both are `true`.\n */\n @Prop({ reflect: true })\n readonly: boolean;\n\n /**\n * Indicates the element's intended purpose to assistive technology.\n * @deprecated\n */\n @Prop()\n role: string;\n\n /**\n * Shows a character counter above the input field to track the number of characters currently in the field.\n * If `maxlength` is set, `showCount` displays the number of characters in relation the `maxlength` value.\n */\n @Prop({ reflect: true })\n showCount: boolean;\n\n /**\n * Displays a toggle button at the end of the input field which shows or hides the actual value.\n * @info\n * Only applicable when `type` is `text`, `password`, or `ssn`.\n */\n @Prop({ reflect: true })\n showVisibilityToggle: boolean = false;\n\n /**\n * When present, it jumps the value in increments of `step` when the user uses the Up/Down arrow keys to change the value.\n * @info\n * Only applicable when `type=\"number\"`.\n */\n @Prop({ reflect: true })\n step: number;\n\n /**\n * Controls visibility of the value when the type is `text`, `password`, or `ssn`.\n * When the input type is `password`, it will default to `true`, hiding the text.\n */\n @Prop({ reflect: true, mutable: true })\n textHidden: boolean;\n\n /** Specifies the field's expected [input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types), and provides the optimal keyboard on mobile devices. */\n @Prop({ reflect: true })\n type: InputType = 'text';\n\n /**\n * Returns a read-only `ValidityState` object representing the validity states of the element.\n * [See MDN for more information on ValidityState](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState).\n */\n @Prop({ reflect: true, mutable: true })\n validity: ValidityState;\n\n /**\n * The value of the input field.\n * @info\n * The visible value of formatted input fields may not match the element's `value` property.\n * When setting an input's value programmatically (e.g. pre-populating a form), ensure that the supplied value is in a format that can be handled by its consuming logic.\n * `q2-input` does not change its own `value` outside of its default change event handler.\n *\n * In `q2-input` where `type=\"currency\"`\n * - element.value = 1234.56\n * - visible value: $1,234.56\n *\n */\n @Prop({ mutable: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the field loses focus after the value has been changed.\n * @deprecated Use 'tctChange' instead\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field value is cleared.\n *\n * Requires the `clearable` prop to be set to `true`.\n *\n * @deprecated Use 'tctClear' instead\n */\n @Event()\n clear: EventEmitter<undefined>;\n\n /**\n * Emitted when the field value is formatted.\n *\n * @deprecated Use 'tctFormatted' instead\n */\n @Event()\n formatted: EventEmitter<IFormatterValueObject>;\n\n /**\n * Emitted when the field value is updated.\n * @deprecated Use 'tctInput' instead\n * @legacyEvent\n */\n @Event()\n input: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the validation is updated.\n * @deprecated Use 'tctInvalid' instead\n * @legacyEvent\n */\n @Event()\n invalid: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field loses focus after the value has been changed.\n * @legacyEvent\n */\n @Event()\n tctChange: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field value is cleared.\n *\n * Requires the `clearable` prop to be set to `true`.\n */\n @Event()\n tctClear: EventEmitter<undefined>;\n\n /**\n * Emitted when the field value is formatted.\n */\n @Event()\n tctFormatted: EventEmitter<IFormatterValueObject>;\n\n /**\n * Emitted when the field value is updated.\n * @legacyEvent\n */\n @Event()\n tctInput: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the validation is updated.\n * @legacyEvent\n */\n @Event()\n tctInvalid: EventEmitter<IEventDetail>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.manageClearableResizeObserver();\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n if (isNaN(this.maxlength)) {\n this.maxlength = undefined;\n }\n this.formattedValueObject = this.getFormattedValue(this.stringValue, true);\n\n Object.defineProperty(this.hostElement, 'formattedValue', {\n get: () => this.formattedValueObject?.formattedValue ?? '',\n });\n\n handleAriaLabel(this);\n this.updateComboboxAriaLabel();\n if (this.textHidden === undefined) {\n this.textHidden = this.type === 'password';\n }\n\n this.manageClearableResizeObserver(this.clearable);\n }\n\n componentDidLoad() {\n overrideFocus(this.hostElement);\n\n if (!this.pseudo) this.inputField.value = this.formattedValueObject.formattedValue;\n if (!!this.autofocus) this.inputField.focus();\n\n this.initMutationObserver();\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n onHostElementChange(event: CustomEvent | Event) {\n if (!(event instanceof CustomEvent)) {\n event.stopPropagation();\n return;\n }\n if (event.target === this.hostElement && !this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n\n @Listen('focus')\n onHostElementFocus(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.inputField.focus();\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates firing checkValidity on `<input>`, emits `invalid` event if validation failed.\n */\n @Method()\n async checkValidity() {\n this.inputRef.checkValidity();\n return this.validateInput();\n }\n\n /**\n * Emulates clicking the clear button when the input is clearable.\n *\n * @warning\n * Only applicable when the input is clearable.\n *\n * @testOnly\n */\n @Method()\n async clearValue() {\n if (!this.clearable) return;\n this.onClearInput();\n }\n\n /**\n * Emulates focusing the `<input>`, entering the provided value, and emitting an `input` event.\n *\n * This method leaves the focus on the `<input>` and as a result does not trigger the `change` event. If you want\n * to trigger the` change` event, move the focus to another element after calling this method.\n *\n * @testOnly\n */\n @Method()\n setValue(value: string) {\n const { inputField } = this;\n inputField.focus();\n inputField.dispatchEvent(new FocusEvent('focus'));\n inputField.value = value;\n inputField.dispatchEvent(new InputEvent('input'));\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('_role')\n @Watch('label')\n updateComboboxAriaLabel() {\n // Set aria-label directly on host for combobox role\n // (can't use ariaLabel prop as it has deprecated handling that hides the label)\n if (this._role === 'combobox' && this.label) {\n this.hostElement.setAttribute('aria-label', loc(this.label));\n }\n }\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n // Skip deprecated ariaLabel handling for combobox role\n // (combobox sets aria-label directly for accessibility without hiding the visual label)\n if (this._role === 'combobox') return;\n handleAriaLabel(this);\n }\n\n @Watch('clearable')\n manageClearableResizeObserver(clearable?: boolean) {\n if ('ResizeObserver' in window === false) return;\n const isSmallThreshold = 190;\n if (clearable) {\n if (this.resizeObserver) return;\n if (typeof ResizeObserver === 'undefined') return;\n this.resizeObserver = new ResizeObserver(([entry]) => {\n this.isSmall = isSmallThreshold > entry.contentRect.width;\n });\n this.resizeObserver.observe(this.hostElement);\n } else {\n this.isSmall = false;\n this.resizeObserver?.unobserve(this.hostElement);\n this.resizeObserver = null;\n }\n }\n\n @Watch('errors')\n errorsObserver() {\n this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));\n }\n\n @Watch('formatModifier')\n formatModifierObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('formattedValueObject')\n formattedValueObjectObserver() {\n mirrorEmit(this, ['formatted', 'tctFormatted'], this.formattedValueObject);\n }\n\n @Watch('hints')\n hintsObserver() {\n this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));\n }\n\n @Watch('type')\n typeObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('value')\n valueObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n // #endregion\n // #region Local Methods\n\n get ariaAttributes() {\n return {\n ariaActivedescendant: getAriaValueFromProp(this.ariaActivedescendant),\n ariaControls: getAriaValueFromProp(this.ariaControls),\n ariaExpanded: getAriaValueFromProp(this.ariaExpanded, ['true', 'false']),\n ariaHaspopup: getAriaValueFromProp(this.ariaHaspopup, [\n 'true',\n 'false',\n 'menu',\n 'listbox',\n 'tree',\n 'grid',\n 'dialog',\n ]),\n ariaOwns: getAriaValueFromProp(this.ariaOwns),\n };\n }\n\n get canSetSelection(): boolean {\n // email and number type don't support setSelectionRange\n return !['email', 'number'].includes(this.computedType);\n }\n\n get clearClasses(): string[] {\n const classes = ['btn-clear'];\n if (!this.clearable || !(this.inputField?.value || this.value)) {\n classes.push('hidden');\n }\n return classes;\n }\n\n get computedAutocomplete(): string {\n // force off for currency type\n if (this.type === 'currency') return 'transaction-amount';\n return this.autocomplete || 'off';\n }\n\n get computedClassForIconLeft(): string | undefined {\n let className = 'icon-left';\n if (this.formattedValueObject.leftIconMuted) {\n className += ' icon-left-muted';\n }\n return className;\n }\n\n get computedIconLeft(): string | undefined {\n if (this.formattedValueObject.prefix) {\n return;\n }\n\n if (this.type === 'search') {\n return 'search';\n }\n\n if (this.formattedValueObject.leftIcon) {\n return this.formattedValueObject.leftIcon;\n }\n\n return this.iconLeft;\n }\n\n get computedType(): string {\n if (['password', 'text', 'ssn'].includes(this.type) && this.textHidden) {\n return 'password';\n } else {\n return (this.type && inputTypeMap[this.type]) || 'text';\n }\n }\n\n get hasCustomDisplaySlot(): boolean {\n return hasSlotContent(this.hostElement, 'custom-display');\n }\n\n get hasError(): boolean {\n return Array.isArray(this.errors) && this.errors.length > 0;\n }\n\n get hasInputLeftSlot(): boolean {\n return hasSlotContent(this.hostElement, 'input-left');\n }\n\n get hasInputRightSlot(): boolean {\n return hasSlotContent(this.hostElement, 'input-right');\n }\n\n get inputDescribedBy(): string | undefined {\n return this.showMessages ? `${this.inputId}-description` : undefined;\n }\n\n get inputField(): HTMLInputElement {\n return this.hostElement.shadowRoot.querySelector<HTMLInputElement>('.input-field');\n }\n\n get inputId() {\n return `input-guid-${this.guid}`;\n }\n\n get inputMode() {\n const inputModeMap = {\n currency: 'numeric',\n ssn: 'numeric',\n tin: 'numeric',\n numeric: 'decimal',\n percentage: 'decimal',\n date: 'numeric',\n 'credit-card': 'numeric',\n };\n\n return (this.type && inputModeMap[this.type]) || undefined;\n }\n\n get isMaskedType(): boolean {\n const maskedTypes: string[] = [\n 'currency',\n 'phone',\n 'ssn',\n 'tin',\n 'alphanumeric',\n 'alpha',\n 'numeric',\n 'percentage',\n 'postal',\n 'date',\n 'credit-card',\n 'cif',\n 'routingnumber',\n 'swift',\n 'iban',\n 'clabe',\n ];\n\n return maskedTypes.includes(this.type);\n }\n\n get messages(): string[] {\n return (\n (this.errors && this.errors.length > 0 && this.errors) ||\n (this.hints && this.hints.length > 0 && this.hints) ||\n []\n );\n }\n\n get shouldCursorStartAtEnd(): boolean {\n return this.type === 'currency';\n }\n\n get shouldCursorStayAtEnd(): boolean {\n return this.isMobile && this.type === 'currency';\n }\n\n get showIconSeparator(): boolean {\n return this.type === 'credit-card' || !!this.formattedValueObject.prefix;\n }\n\n get showMessages(): boolean {\n return this.messages.length > 0 && !this.hideMessages;\n }\n\n get stringValue(): string {\n const notCoercable = Object.prototype.toString.call(this.value) === '[object Object]';\n return notCoercable ? '' : (this.value && String(this.value)) || '';\n }\n\n get visibilityToggleAriaLabel(): string {\n return `tecton.element.input.toggleAriaLabel.${this.textHidden ? 'show' : 'hide'}`;\n }\n\n get visibilityToggleText(): string {\n return loc(`tecton.element.input.toggle.${this.textHidden ? 'show' : 'hide'}`);\n }\n\n get wrapperClasses() {\n const classNames = ['field-container'];\n if (this.hasError) classNames.push('has-error');\n if (!!this.value) classNames.push('has-value');\n if (this.clearable && !!this.value) classNames.push('has-clear');\n if (this.hasFocus) classNames.push('has-focus');\n if (this.isSmall) classNames.push('is-small');\n if (this.formattedValueObject.prefix) classNames.push('has-prefix');\n if (this.computedIconLeft) classNames.push('has-icon-left');\n if (this.showIconSeparator) classNames.push('has-icon-separator');\n if (this.formattedValueObject.suffix) classNames.push('has-suffix');\n if (!this.formattedValueObject.suffix && this.iconRight) classNames.push('has-icon-right');\n if (this.type === 'currency') classNames.push('right-aligned');\n else classNames.push('left-aligned');\n if (this.hasCustomDisplaySlot) classNames.push('has-custom-display');\n\n return classNames.join(' ');\n }\n\n calculateCursorPositionOnFocus(): ICursorData {\n const { inputField } = this;\n const valueLength = inputField?.value?.length ?? 0;\n const startingPosition = inputField?.selectionStart ?? valueLength;\n\n return {\n startingPosition,\n valueLength,\n previousValueLength: valueLength,\n hasSelection: window.getSelection().toString().length > 0,\n };\n }\n\n calculateCursorPositionOnInput(): ICursorData {\n const input = this.inputField;\n const formattedLength = this.formattedValueObject.formattedValue.length;\n const currentValueLength = input.value.length;\n const defaultPosition = this.type === 'currency' ? formattedLength : 0;\n return {\n startingPosition: (input && input.selectionStart) || defaultPosition,\n valueLength: formattedLength,\n previousValueLength: input && currentValueLength,\n hasSelection: false,\n };\n }\n\n formatAndUpdateValueFromProp() {\n this.formattedValueObject = this.getFormattedValue(this.stringValue, true);\n\n if (!this.pseudo) {\n const setValue = () => {\n this.inputField.value = this.formattedValueObject.formattedValue;\n };\n\n this.inputField ? setValue() : this.scheduledAfterRender.push(() => setValue());\n }\n }\n\n getFormattedValue(value: string, valueChangedFromProperty: boolean): IFormatterValueObject {\n const formattingFunctions = {\n currency: formatCurrency,\n phone: formatPhoneNumber,\n ssn: formatSSN,\n tin: formatTIN,\n alphanumeric: formatAlphanumeric,\n alpha: formatAlpha,\n numeric: formatNumeric,\n percentage: formatPercentage,\n postal: formatPostalCode,\n date: formatDate,\n cif: formatCIF,\n routingnumber: formatRoutingNumber,\n swift: formatSwift,\n iban: formatIBAN,\n clabe: formatCLABE,\n 'credit-card': formatCreditCard.format,\n };\n\n if (formattingFunctions[this.type]) {\n return formattingFunctions[this.type](value, this.formatModifier, valueChangedFromProperty);\n }\n\n return {\n value,\n formattedValue: value,\n fullyFormattedValue: value,\n formattingCharacterCount: 0,\n unformattedValue: value,\n };\n }\n\n handleCurrencyDeletion(event: InputEvent) {\n // Don't do anything if text was selected for deletion\n if (this.textSelectedForDeletion) {\n this.textSelectedForDeletion = false;\n return;\n }\n // We only care about \"Backspace\" and \"Delete\" events\n if (!['deleteContentBackward', 'deleteContentForward'].includes(event.inputType)) return;\n\n const input = event.target as HTMLInputElement;\n const cursorPosition = input.selectionStart;\n const { formattedValue } = this.formattedValueObject;\n\n if (cursorPosition === null) return;\n\n let cursorMap;\n switch (event.inputType) {\n case 'deleteContentBackward':\n const valueBeforeCursor = formattedValue.substring(0, cursorPosition + 1);\n const isPrevCharAlphaNum = /[a-zA-Z0-9]$/.test(valueBeforeCursor);\n cursorMap = {\n leftIndex: isPrevCharAlphaNum ? cursorPosition : cursorPosition - 1,\n rightIndex: isPrevCharAlphaNum ? cursorPosition + 1 : cursorPosition,\n afterCursorOffset: 0,\n newCursorOffset: 1,\n };\n break;\n case 'deleteContentForward':\n const valueAfterCursor = formattedValue.substring(cursorPosition);\n const isNextCharAlphaNum = /^[a-zA-Z0-9]/.test(valueAfterCursor);\n cursorMap = {\n leftIndex: isNextCharAlphaNum ? cursorPosition : cursorPosition + 1,\n rightIndex: isNextCharAlphaNum ? cursorPosition + 1 : cursorPosition + 2,\n afterCursorOffset: 1,\n newCursorOffset: 0,\n };\n break;\n default:\n return;\n }\n\n // Ensure the cursor doesn't move with a newly formatted value\n const newValue = [\n formattedValue.substring(0, cursorMap.leftIndex),\n formattedValue.substring(cursorMap.rightIndex),\n ].join('');\n const charactersAfterCursor = formattedValue.length - cursorPosition - cursorMap.afterCursorOffset;\n const newFormattedValue = this.getFormattedValue(newValue, false).formattedValue;\n const newCursorPosition = Math.max(\n newFormattedValue.length - charactersAfterCursor + cursorMap.newCursorOffset,\n 0\n );\n\n input.value = newFormattedValue;\n input.setSelectionRange(newCursorPosition, newCursorPosition);\n\n // This handles a runtime issue when a character is deleted from the beginning of the input\n if (newCursorPosition === 0) {\n nextPaint(() => input.setSelectionRange(newCursorPosition, newCursorPosition));\n }\n }\n\n /**\n * Sets textSelectedForDeletion to true if the user has selected text for deletion\n * This is used to prevent other logic from running when text is deleted\n */\n handleCurrencyKeydown = (event: KeyboardEvent) => {\n if (!['Backspace', 'Delete'].includes(event.key)) return;\n const inputElement = this.inputField;\n this.textSelectedForDeletion = inputElement.selectionStart !== inputElement.selectionEnd;\n };\n\n handleDataInput(newFormattedValue: IFormatterValueObject) {\n if (\n this.maxlength === undefined ||\n newFormattedValue.unformattedValue.length <= this.maxlength ||\n newFormattedValue.unformattedValue.length <= this.formattedValueObject.unformattedValue.length\n ) {\n this.formattedValueObject = newFormattedValue;\n } else if (this.maxlength) {\n newFormattedValue = this.getFormattedValue(\n newFormattedValue.unformattedValue.substring(0, this.maxlength),\n false\n );\n this.formattedValueObject = newFormattedValue;\n }\n this.handleValueAndCursor();\n }\n\n handleValueAndCursor = () => {\n // ORDER IMPORTANT: calculate cursor position -> set value -> set cursor position\n const cursorPosition = this.calculateCursorPositionOnInput();\n // when type=number: returns only valid decimal on input event, should not update itself (e.g. typing \"1.\" )\n if (this.type !== 'number') this.inputField.value = this.formattedValueObject.formattedValue;\n mirrorEmit(this, ['input', 'tctInput'], {\n value: this.formattedValueObject.value,\n formattedValue: this.formattedValueObject.fullyFormattedValue,\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),\n });\n if (!this.formattedValueObject.value) {\n mirrorEmit(this, ['clear', 'tctClear'], undefined);\n }\n this.setCursorPosition(cursorPosition);\n };\n\n initMutationObserver = () => {\n if (!('MutationObserver' in window)) return;\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true });\n this.mutationObserver = observer;\n };\n\n onClearInput = () => {\n const eventDetail = {\n value: '',\n formattedValue: '',\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n };\n mirrorEmit(this, ['input', 'tctInput'], eventDetail);\n mirrorEmit(this, ['change', 'tctChange'], eventDetail);\n mirrorEmit(this, ['clear', 'tctClear'], undefined);\n this.inputField.focus();\n };\n\n onInputBlur = () => {\n this.hasFocus = false;\n setMessageHeight(this);\n if (this.valueOnFocus !== this.formattedValueObject.value) {\n this.valueOnFocus = this.formattedValueObject.value;\n mirrorEmit(this, ['change', 'tctChange'], {\n value: this.formattedValueObject.value,\n formattedValue: this.formattedValueObject.fullyFormattedValue,\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),\n });\n }\n };\n\n onInputClick = () => {\n if (this.shouldCursorStayAtEnd) this.placeCursorAtEnd();\n };\n\n onInputFocus = () => {\n if (this.inputField.tagName === 'INPUT') {\n this.scheduledAfterRender.push(() => {\n if (this.isClickEvent && this.shouldCursorStartAtEnd) {\n this.placeCursorAtEnd();\n } else {\n this.setCursorPosition(this.calculateCursorPositionOnFocus());\n }\n this.isClickEvent = false;\n });\n }\n this.hasFocus = true;\n setMessageHeight(this);\n this.valueOnFocus = this.value;\n };\n\n onInputInput = (event: InputEvent) => {\n event.stopPropagation();\n if (this.type === 'currency') this.handleCurrencyDeletion(event);\n const newFormattedValue = this.getFormattedValue((event.target as HTMLInputElement).value, false);\n this.handleDataInput(newFormattedValue);\n this.validateInput();\n };\n\n onInputKeydown = (event: KeyboardEvent) => {\n const keysThatMoveCursor = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'];\n const { key } = event;\n\n if (this.type === 'currency') this.handleCurrencyKeydown(event);\n if (this.shouldCursorStayAtEnd && keysThatMoveCursor.includes(key)) event.preventDefault();\n if (key === 'Enter' && this.valueOnFocus !== this.formattedValueObject.value) {\n this.valueOnFocus = this.formattedValueObject.value;\n mirrorEmit(this, ['change', 'tctChange'], {\n value: this.formattedValueObject.value,\n formattedValue: this.formattedValueObject.fullyFormattedValue,\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),\n });\n }\n };\n\n onInputMousedown = () => {\n this.isClickEvent = true;\n };\n\n onInputPaste = (event: ClipboardEvent) => {\n if (this.type === 'currency') {\n const clipboardData = event.clipboardData.getData('text');\n const newFormattedValue = this.getFormattedValue(clipboardData, true);\n event.preventDefault();\n this.handleDataInput(newFormattedValue);\n }\n };\n\n onMutationObserved = () => {\n // Updating checkSlotCount to force re-render when slot content changes\n this.checkSlotCount = this.checkSlotCount + 1;\n };\n\n onRefocusInput = () => {\n if (this.showMessages) {\n this.inputField.focus();\n setMessageHeight(this);\n }\n };\n\n onToggleVisibility = () => {\n this.hostElement.dispatchEvent(new FocusEvent('focus'));\n this.textHidden = !this.textHidden;\n };\n\n placeCursorAtEnd() {\n const { inputField } = this;\n inputField.selectionStart = inputField.selectionEnd = inputField.value.length;\n }\n\n setCursorPosition(cursorData: ICursorData) {\n if (this.canSetSelection && !cursorData.hasSelection) {\n const input = this.inputField;\n const { valueLength, previousValueLength, startingPosition } = cursorData;\n\n if (this.type === 'currency') {\n if (previousValueLength - valueLength === 1) {\n input.setSelectionRange(startingPosition - 1, startingPosition - 1);\n } else {\n const difference = previousValueLength - valueLength;\n input.setSelectionRange(startingPosition - difference, startingPosition - difference);\n }\n }\n\n if (this.type !== 'currency') {\n const difference = valueLength - previousValueLength;\n // Never allow the cursor to move in reverse\n const newPosition = startingPosition + (difference > 0 ? difference : 0);\n input.setSelectionRange(newPosition, newPosition);\n }\n }\n }\n\n validateInput = () => {\n this.validity = this.inputRef?.validity;\n if (this.validity?.valid === false) {\n mirrorEmit(this, ['invalid', 'tctInvalid'], undefined);\n }\n return !!this.validity?.valid;\n };\n\n // #endregion\n // #region Render Methods\n\n renderCountDOM() {\n if (!this.showCount) return;\n const { maxlength, formattedValueObject } = this;\n\n return (\n <div class=\"count-tag\">\n {formattedValueObject.unformattedValue.length}\n {maxlength && `/${maxlength}`}\n </div>\n );\n }\n\n renderInputContainerDOM() {\n const { hasInputLeftSlot, hasInputRightSlot } = this;\n return (\n <div\n class=\"input-container\"\n tabindex={-1}\n test-id=\"inputContainer\"\n >\n <div class=\"input-icons-container-left\">\n {this.formattedValueObject.prefix && (\n <div class=\"input-prefix\">{this.formattedValueObject.prefix}</div>\n )}\n {this.computedIconLeft && (\n <div>\n <q2-icon\n type={this.computedIconLeft}\n class={this.computedClassForIconLeft}\n />\n </div>\n )}\n {hasInputLeftSlot && <slot name=\"input-left\" />}\n {this.showIconSeparator && <div class=\"vertical-separator\" />}\n {this.hasError && this.type === 'currency' && (\n <div\n test-id=\"divIconError\"\n onClick={this.onRefocusInput}\n >\n <q2-icon\n type=\"error\"\n class=\"icon-error\"\n test-id=\"iconError\"\n />\n </div>\n )}\n </div>\n {this.pseudo ? this.renderPseudoInputDOM() : this.renderStandardInputDOM()}\n <div class=\"input-icons-container-right\">\n <q2-btn\n class={this.clearClasses.join(' ')}\n label={loc('tecton.element.input.clear', [this.label])}\n hideLabel={true}\n test-id=\"clearButton\"\n onClick={this.onClearInput}\n onKeyDown={e => e.stopPropagation()}\n >\n <q2-icon\n type=\"close\"\n class=\"icon-clear\"\n />\n </q2-btn>\n {['password', 'text', 'ssn', 'tin'].includes(this.type) && this.showVisibilityToggle && (\n <q2-btn\n class=\"btn-visibility-toggle\"\n test-id=\"toggleVisibilityButton\"\n onClick={this.onToggleVisibility}\n label={loc(this.visibilityToggleAriaLabel, { label: this.label })}\n hide-label={true}\n >\n {this.visibilityToggleText}\n </q2-btn>\n )}\n {this.formattedValueObject.suffix && (\n <span class=\"input-suffix\">{this.formattedValueObject.suffix}</span>\n )}\n {this.badgeValue && (\n <q2-badge\n size=\"large\"\n theme={this.badgeTheme}\n >\n {this.badgeValue}\n </q2-badge>\n )}\n {this.hasError && this.type !== 'currency' && (\n <div\n test-id=\"divIconError\"\n onClick={this.onRefocusInput}\n >\n <q2-icon\n type=\"error\"\n class=\"icon-error\"\n test-id=\"iconError\"\n />\n </div>\n )}\n {this.iconRight && !this.formattedValueObject.suffix && (\n <div>\n <q2-icon\n type={this.iconRight}\n class=\"icon-right\"\n />\n </div>\n )}\n {hasInputRightSlot && <slot name=\"input-right\" />}\n </div>\n </div>\n );\n }\n\n renderPseudoInputDOM() {\n const showPlaceholder = !this.value && !!this.placeholder;\n const { ariaOwns, ariaHaspopup, ariaExpanded, ariaActivedescendant } = this.ariaAttributes;\n\n return (\n <div class=\"pseudo-input-container\">\n <button\n class=\"input-field\"\n type=\"button\"\n id={this.inputId}\n aria-describedby={this.inputDescribedBy}\n aria-invalid={`${this.hasError}`}\n aria-owns={ariaOwns}\n aria-haspopup={ariaHaspopup}\n aria-expanded={ariaExpanded}\n aria-activedescendant={ariaActivedescendant}\n role={this.role || undefined}\n disabled={!!this.disabled}\n test-id=\"q2InputInnerClearButton\"\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n >\n <div class=\"custom-display-container\">\n <slot name=\"custom-display\">\n <span class={showPlaceholder ? 'placeholder-text' : ''}>\n {showPlaceholder ? loc(this.placeholder) : loc(this.value)}\n </span>\n </slot>\n </div>\n </button>\n </div>\n );\n }\n\n renderStandardInputDOM() {\n const { hasCustomDisplaySlot } = this;\n const inputClasses = ['input-field'];\n const { ariaOwns, ariaHaspopup, ariaActivedescendant } = this.ariaAttributes;\n if (hasCustomDisplaySlot) inputClasses.push('sr');\n return (\n <Fragment>\n {hasCustomDisplaySlot && (\n <div class=\"custom-display-container\">\n <slot name=\"custom-display\"></slot>\n </div>\n )}\n <input\n ref={el => (this.inputRef = el)}\n class={inputClasses.join(' ')}\n id={this.inputId}\n type={this.computedType}\n size={this.formattedValueObject.prefix ? 10 : undefined}\n maxlength={['date', 'currency'].includes(this.type) ? undefined : this.maxlength || undefined}\n max={this.max}\n min={this.min}\n step={this.step}\n aria-current={this.current || undefined}\n aria-describedby={this.inputDescribedBy}\n aria-required={`${!this.optional}`}\n aria-invalid={`${this.hasError}`}\n aria-owns={ariaOwns}\n aria-haspopup={ariaHaspopup}\n aria-activedescendant={ariaActivedescendant}\n autocomplete={this.computedAutocomplete}\n autocapitalize={this.autocapitalize}\n autocorrect={this.autocorrect === 'on' ? 'on' : 'off'}\n autofocus={this.autofocus}\n placeholder={(this.placeholder && loc(this.placeholder)) || undefined}\n test-id=\"inputField\"\n readonly={this.readonly || this._preventEntry}\n disabled={!!this.disabled}\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n onClick={this.onInputClick}\n onKeyDown={this.onInputKeydown}\n onMouseDown={this.onInputMousedown}\n onInput={this.onInputInput}\n onPaste={this.onInputPaste}\n inputmode={this.inputMode}\n pattern={this.pattern || undefined}\n />\n </Fragment>\n );\n }\n\n render() {\n const { ariaControls, ariaExpanded } = this.ariaAttributes;\n return (\n <Host\n role={this._role}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n >\n <div class={this.wrapperClasses}>\n <div class=\"label-wrapper\">\n {renderLabel(this)}\n {this.renderCountDOM()}\n </div>\n {this.renderInputContainerDOM()}\n {renderMessages(this)}\n </div>\n </Host>\n );\n }\n\n // #endregion\n}\n"]}
|
|
1
|
+
{"version":3,"file":"q2-input.js","sourceRoot":"","sources":["../../../../src/components/q2-input/q2-input.tsx"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGJ","sourcesContent":["import {\n Component,\n Prop,\n Element,\n State,\n Event,\n EventEmitter,\n h,\n Host,\n Watch,\n Listen,\n Fragment,\n Method,\n} from '@stencil/core';\nimport {\n createGuid,\n getAriaValueFromProp,\n renderLabel,\n loc,\n renderMessages,\n setMessageHeight,\n handleAriaLabel,\n overrideFocus,\n isEventFromElement,\n isMobile,\n hasSlotContent,\n nextPaint,\n} from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nimport { IFormatterValueObject, ICursorData, IEventDetail } from './q2-input-types';\nimport formatCurrency from './formatting/currency';\nimport formatPhoneNumber from './formatting/phone';\nimport formatSSN from './formatting/ssn';\nimport formatTIN from './formatting/tin';\nimport formatAlphanumeric from './formatting/alphanumeric';\nimport formatAlpha from './formatting/alpha';\nimport formatNumeric, { formatPercentage } from './formatting/numeric';\nimport formatPostalCode from './formatting/postal';\nimport formatDate from './formatting/date';\nimport formatCreditCard from './formatting/credit-card';\nimport formatCIF from './formatting/cif';\nimport formatRoutingNumber from './formatting/routingnumber';\nimport formatSwift from './formatting/swift';\nimport formatIBAN from './formatting/iban';\nimport formatCLABE from './formatting/clabe';\nimport { Q2Icon } from '../q2-icon/q2-icon';\nimport { Q2Badge } from '../q2-badge/q2-badge';\n\nconst inputTypeMap = {\n text: 'text',\n tel: 'tel',\n number: 'number',\n password: 'text',\n search: 'search',\n url: 'url',\n email: 'email',\n currency: 'text',\n phone: 'tel',\n ssn: 'text',\n alphanumeric: 'text',\n alpha: 'text',\n numeric: 'text',\n percentage: 'text',\n postal: 'text',\n date: 'text',\n 'credit-card': 'text',\n cif: 'text',\n routingnumber: 'text',\n swift: 'text',\n iban: 'text',\n clabe: 'text',\n};\n\nexport type InputType = keyof typeof inputTypeMap;\n\n/**\n * @name Input\n * @category Forms\n * @summary Use for single-line text entry including email, phone, currency, SSN, and password.\n * @slot label - An optional slot to display a custom label.\n * @slot input-left - An optional slot to add a [Button](https://tecton.q2developer.com/design-system/q2-btn) on the left-hand side of the input field.\n * @slot input-right - An optional slot to add a [Button](https://tecton.q2developer.com/design-system/q2-btn) on the right-hand side of the input field.\n * @slot custom-display - An optional slot to display custom content in the input field.\n */\n@Component({ tag: 'q2-input', shadow: true, styleUrl: 'q2-input.scss' })\nexport class Q2Input {\n // #region Own Properties\n\n guid = createGuid();\n inputRef: HTMLInputElement;\n isClickEvent: boolean = false;\n isMobile: boolean = isMobile();\n mutationObserver: MutationObserver;\n resizeObserver: ResizeObserver;\n scheduledAfterRender: (() => void)[] = [];\n textSelectedForDeletion: boolean;\n valueOnFocus: string;\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 checkSlotCount: number = 0;\n\n @State()\n formattedValueObject: IFormatterValueObject;\n\n @State()\n hasFocus: boolean;\n\n @State()\n isSmall: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Sets readonly to true on the input without adding the \"read only\" label.\n *\n * Can be used to prevent user input while still presenting the necessary information for assistive technology.\n * @private\n */\n @Prop({ mutable: true })\n _preventEntry: boolean = undefined;\n\n /**\n * Allows for correct semantics of q2-input element when aria-expanded.\n * @private\n * Defaults to undefined\n * Will assign role to combobox when used inside q2-select and q2-calendar.\n */\n @Prop({ mutable: true })\n _role: 'combobox' | undefined = undefined;\n\n @Prop()\n ariaActivedescendant: string;\n\n @Prop()\n ariaControls: string;\n\n @Prop({ reflect: true })\n ariaExpanded: string;\n\n @Prop()\n ariaHaspopup: string;\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n @Prop()\n ariaOwns: string;\n\n /**\n * The `autocapitalize` attribute is an enumerated attribute that controls whether and how text input is automatically capitalized as it is entered/edited by the user.\n *\n * [See MDN for a list of supported values](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize#value).\n * @info\n * This attribute only affects the behavior of input mechanisms like virtual keyboards on mobile devices and voice input.\n */\n @Prop({ reflect: true })\n autocapitalize: string;\n\n /**\n * The HTML autocomplete attribute lets web developers specify what permission (if any) the user agent has to provide automated assistance in filling out form field values,\n * as well as guidance to the browser as to the type of information expected in the field.\n *\n * [See MDN for a list of supported values](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values).\n */\n @Prop({ reflect: true })\n autocomplete: string;\n\n /**\n * A string that indicates whether or not to activate automatic correction while the user is editing this field.\n * @warning\n * This is currently only supported in Safari.\n */\n @Prop({ reflect: true })\n autocorrect: 'on' | 'off';\n\n /**\n * Autofocus is enabled when the property is added to an element. To disable, remove attribute or set it to false.\n * If applied to multiple elements, the first one will receive focus.\n */\n @Prop({ reflect: true })\n autofocus: boolean;\n\n /** The color of the badge when in the active state. The property `badgeValue` must be provided. */\n @Prop({ reflect: true })\n badgeTheme: Q2Badge['theme'];\n\n /** Displays a `q2-badge` element on the right side of the input. */\n @Prop({ reflect: true })\n badgeValue: string;\n\n /** Renders an icon button when the field is non-empty. Pressing the button clears all input from the field. */\n @Prop({ reflect: true })\n clearable: boolean;\n\n /**\n * If provided a value, it sets the `aria-current` attribute on the inner input.\n * [See MDN for more information on aria-current](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current).\n */\n @Prop()\n current: 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false';\n\n /** Indicates the field cannot be focused or interacted with. */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * Each item in the `errors` array will appear below the input field when the field is focused.\n * @localizable\n */\n @Prop()\n errors: string[];\n\n /**\n * Defines the field's expected input format, and automatically masks user input to conform.\n * Specific types support different modifier options. See the section on Format Modifiers for all available options.\n */\n @Prop({ reflect: true })\n formatModifier: string;\n\n /**\n * Hide's the field's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * When `true` and the input field has an active validation error, the field shows the error state without displaying associated error messages below the field (from the errors array).\n * Primarily used for dropdown selects and date pickers whose controls appear below the input field (where the error messages, if displayed, would also appear).\n */\n @Prop({ reflect: true })\n hideMessages: boolean;\n\n /**\n * Each item in the `hints` array will appear below the input field when the field is focused.\n * @info\n * The `errors` array takes precedence over the `hints` array. If an input field has both hints and errors, only the errors will display.\n * Once all errors are resolved, the hints display the next time the field is focused.\n * @localizable\n */\n @Prop()\n hints: string[];\n\n /** Shows a left-aligned [q2-icon](https://tecton.q2developer.com/design-system/q2-icon/) within the field. */\n @Prop({ reflect: true })\n iconLeft: Q2Icon['type'];\n\n /** Shows a right-aligned [q2-icon](https://tecton.q2developer.com/design-system/q2-icon/) within the field. */\n @Prop({ reflect: true })\n iconRight: Q2Icon['type'];\n\n /**\n * The label that appears above the field. This is announced by screen readers when the field is focused.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * When present, it does not allow a value greater than `max` when the user uses the Up/Down arrow keys to change the value.\n * @info\n * Only applicable when `type=\"number\"`.\n */\n @Prop({ reflect: true })\n max: number;\n\n /**\n * Defines the maximum allowed input length in characters. Formatting characters (e.g. `.`, `-`, etc) are included in the `maxlength` comparison.\n * Make sure you account for them when setting the `maxlength` value. Input types that use masks have their own inherent `maxlength`.\n */\n @Prop({ reflect: true, mutable: true })\n maxlength: number;\n\n /**\n * When present, it does not allow a value less than the `min` when the user uses the Up/Down arrow keys to change the value.\n * @info\n * Only applicable when `type=\"number\"`.\n */\n @Prop({ reflect: true })\n min: number;\n\n /** Appends \"(optional)\" to the field label, and sets `aria-required` on the nested input tag to `false`. */\n @Prop({ reflect: true })\n optional: boolean;\n\n /**\n * Applies the value as a RegEx pattern to assess the validity of the input field's value.\n * Check the ValidityState's `patternMismatch` property for the result.\n *\n * **Example:**\n * @snippet\n * <q2-input label=\"My input\" pattern=\"[a-zA-Z0-9]{3,5}\" id=\"myInput\"></q2-input>\n * // enter \"abcdefgh\" in the input field (too many characters)\n * const myInput = document.querySelector('#myInput');\n * console.log(myInput.validity.patternMismatch); // true\n */\n @Prop({ reflect: true, mutable: true })\n pattern: string;\n\n /**\n * Text that appears within the field when it is blurred and empty.\n * Placeholder text disappears when the user focuses on the field and provides input.\n * @info\n * Primarily used for rare cases in which a visible form label is not expected (e.g., search fields).\n * @localizable\n */\n @Prop({ reflect: true })\n placeholder: string;\n\n /** Component will display as a clickable `<button>` styled to be identical to the default `<input>` field. */\n @Prop({ reflect: true })\n pseudo: boolean;\n\n /**\n * Appends \"(read only)\" to the field label, and field becomes unusable, but remains focusable.\n * Takes priority over `optional` if both are `true`.\n */\n @Prop({ reflect: true })\n readonly: boolean;\n\n /**\n * Indicates the element's intended purpose to assistive technology.\n * @deprecated\n */\n @Prop()\n role: string;\n\n /**\n * Shows a character counter above the input field to track the number of characters currently in the field.\n * If `maxlength` is set, `showCount` displays the number of characters in relation the `maxlength` value.\n */\n @Prop({ reflect: true })\n showCount: boolean;\n\n /**\n * Displays a toggle button at the end of the input field which shows or hides the actual value.\n * @info\n * Only applicable when `type` is `text`, `password`, or `ssn`.\n */\n @Prop({ reflect: true })\n showVisibilityToggle: boolean = false;\n\n /**\n * When present, it jumps the value in increments of `step` when the user uses the Up/Down arrow keys to change the value.\n * @info\n * Only applicable when `type=\"number\"`.\n */\n @Prop({ reflect: true })\n step: number;\n\n /**\n * Controls visibility of the value when the type is `text`, `password`, or `ssn`.\n * When the input type is `password`, it will default to `true`, hiding the text.\n */\n @Prop({ reflect: true, mutable: true })\n textHidden: boolean;\n\n /** Specifies the field's expected [input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types), and provides the optimal keyboard on mobile devices. */\n @Prop({ reflect: true })\n type: InputType = 'text';\n\n /**\n * Returns a read-only `ValidityState` object representing the validity states of the element.\n * [See MDN for more information on ValidityState](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState).\n */\n @Prop({ reflect: true, mutable: true })\n validity: ValidityState;\n\n /**\n * The value of the input field.\n * @info\n * The visible value of formatted input fields may not match the element's `value` property.\n * When setting an input's value programmatically (e.g. pre-populating a form), ensure that the supplied value is in a format that can be handled by its consuming logic.\n * `q2-input` does not change its own `value` outside of its default change event handler.\n *\n * In `q2-input` where `type=\"currency\"`\n * - element.value = 1234.56\n * - visible value: $1,234.56\n *\n */\n @Prop({ mutable: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the field loses focus after the value has been changed.\n * @deprecated Use 'tctChange' instead\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field value is cleared.\n * Emitted with `{ source: 'input' }` when search text is cleared by keyboard.\n * Emitted with `{ source: 'button' }` when search text is cleared by clicking clear icon.\n * @deprecated Use 'tctClear' instead\n */\n @Event()\n clear: EventEmitter<undefined>;\n\n /**\n * Emitted when the field value is formatted.\n *\n * @deprecated Use 'tctFormatted' instead\n */\n @Event()\n formatted: EventEmitter<IFormatterValueObject>;\n\n /**\n * Emitted when the field value is updated.\n * @deprecated Use 'tctInput' instead\n * @legacyEvent\n */\n @Event()\n input: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the validation is updated.\n * @deprecated Use 'tctInvalid' instead\n * @legacyEvent\n */\n @Event()\n invalid: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field loses focus after the value has been changed.\n * @legacyEvent\n */\n @Event()\n tctChange: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field value is cleared.\n * Emitted with `{ source: 'input' }` when search text is cleared by keyboard.\n * Emitted with `{ source: 'button' }` when search text is cleared by clicking clear icon.\n */\n @Event()\n tctClear: EventEmitter<undefined>;\n\n /**\n * Emitted when the field value is formatted.\n */\n @Event()\n tctFormatted: EventEmitter<IFormatterValueObject>;\n\n /**\n * Emitted when the field value is updated.\n * @legacyEvent\n */\n @Event()\n tctInput: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the validation is updated.\n * @legacyEvent\n */\n @Event()\n tctInvalid: EventEmitter<IEventDetail>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.manageClearableResizeObserver();\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n if (isNaN(this.maxlength)) {\n this.maxlength = undefined;\n }\n this.formattedValueObject = this.getFormattedValue(this.stringValue, true);\n\n Object.defineProperty(this.hostElement, 'formattedValue', {\n get: () => this.formattedValueObject?.formattedValue ?? '',\n });\n\n handleAriaLabel(this);\n this.updateComboboxAriaLabel();\n if (this.textHidden === undefined) {\n this.textHidden = this.type === 'password';\n }\n\n this.manageClearableResizeObserver(this.clearable);\n }\n\n componentDidLoad() {\n overrideFocus(this.hostElement);\n\n if (!this.pseudo) this.inputField.value = this.formattedValueObject.formattedValue;\n if (!!this.autofocus) this.inputField.focus();\n\n this.initMutationObserver();\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n onHostElementChange(event: CustomEvent | Event) {\n if (!(event instanceof CustomEvent)) {\n event.stopPropagation();\n return;\n }\n if (event.target === this.hostElement && !this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n\n @Listen('focus')\n onHostElementFocus(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.inputField.focus();\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates firing checkValidity on `<input>`, emits `invalid` event if validation failed.\n */\n @Method()\n async checkValidity() {\n this.inputRef.checkValidity();\n return this.validateInput();\n }\n\n /**\n * Emulates clicking the clear button when the input is clearable.\n *\n * @warning\n * Only applicable when the input is clearable.\n *\n * @testOnly\n */\n @Method()\n async clearValue() {\n if (!this.clearable) return;\n this.onClearInput();\n }\n\n /**\n * Emulates focusing the `<input>`, entering the provided value, and emitting an `input` event.\n *\n * This method leaves the focus on the `<input>` and as a result does not trigger the `change` event. If you want\n * to trigger the` change` event, move the focus to another element after calling this method.\n *\n * @testOnly\n */\n @Method()\n setValue(value: string) {\n const { inputField } = this;\n inputField.focus();\n inputField.dispatchEvent(new FocusEvent('focus'));\n inputField.value = value;\n inputField.dispatchEvent(new InputEvent('input'));\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('_role')\n @Watch('label')\n updateComboboxAriaLabel() {\n // Set aria-label directly on host for combobox role\n // (can't use ariaLabel prop as it has deprecated handling that hides the label)\n if (this._role === 'combobox' && this.label) {\n this.hostElement.setAttribute('aria-label', loc(this.label));\n }\n }\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n // Skip deprecated ariaLabel handling for combobox role\n // (combobox sets aria-label directly for accessibility without hiding the visual label)\n if (this._role === 'combobox') return;\n handleAriaLabel(this);\n }\n\n @Watch('clearable')\n manageClearableResizeObserver(clearable?: boolean) {\n if ('ResizeObserver' in window === false) return;\n const isSmallThreshold = 190;\n if (clearable) {\n if (this.resizeObserver) return;\n if (typeof ResizeObserver === 'undefined') return;\n this.resizeObserver = new ResizeObserver(([entry]) => {\n this.isSmall = isSmallThreshold > entry.contentRect.width;\n });\n this.resizeObserver.observe(this.hostElement);\n } else {\n this.isSmall = false;\n this.resizeObserver?.unobserve(this.hostElement);\n this.resizeObserver = null;\n }\n }\n\n @Watch('errors')\n errorsObserver() {\n this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));\n }\n\n @Watch('formatModifier')\n formatModifierObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('formattedValueObject')\n formattedValueObjectObserver() {\n mirrorEmit(this, ['formatted', 'tctFormatted'], this.formattedValueObject);\n }\n\n @Watch('hints')\n hintsObserver() {\n this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));\n }\n\n @Watch('type')\n typeObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('value')\n valueObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n // #endregion\n // #region Local Methods\n\n get ariaAttributes() {\n return {\n ariaActivedescendant: getAriaValueFromProp(this.ariaActivedescendant),\n ariaControls: getAriaValueFromProp(this.ariaControls),\n ariaExpanded: getAriaValueFromProp(this.ariaExpanded, ['true', 'false']),\n ariaHaspopup: getAriaValueFromProp(this.ariaHaspopup, [\n 'true',\n 'false',\n 'menu',\n 'listbox',\n 'tree',\n 'grid',\n 'dialog',\n ]),\n ariaOwns: getAriaValueFromProp(this.ariaOwns),\n };\n }\n\n get canSetSelection(): boolean {\n // email and number type don't support setSelectionRange\n return !['email', 'number'].includes(this.computedType);\n }\n\n get clearClasses(): string[] {\n const classes = ['btn-clear'];\n if (!this.clearable || !(this.inputField?.value || this.value)) {\n classes.push('hidden');\n }\n return classes;\n }\n\n get computedAutocomplete(): string {\n // force off for currency type\n if (this.type === 'currency') return 'transaction-amount';\n return this.autocomplete || 'off';\n }\n\n get computedClassForIconLeft(): string | undefined {\n let className = 'icon-left';\n if (this.formattedValueObject.leftIconMuted) {\n className += ' icon-left-muted';\n }\n return className;\n }\n\n get computedIconLeft(): string | undefined {\n if (this.formattedValueObject.prefix) {\n return;\n }\n\n if (this.type === 'search') {\n return 'search';\n }\n\n if (this.formattedValueObject.leftIcon) {\n return this.formattedValueObject.leftIcon;\n }\n\n return this.iconLeft;\n }\n\n get computedType(): string {\n if (['password', 'text', 'ssn'].includes(this.type) && this.textHidden) {\n return 'password';\n } else {\n return (this.type && inputTypeMap[this.type]) || 'text';\n }\n }\n\n get hasCustomDisplaySlot(): boolean {\n return hasSlotContent(this.hostElement, 'custom-display');\n }\n\n get hasError(): boolean {\n return Array.isArray(this.errors) && this.errors.length > 0;\n }\n\n get hasInputLeftSlot(): boolean {\n return hasSlotContent(this.hostElement, 'input-left');\n }\n\n get hasInputRightSlot(): boolean {\n return hasSlotContent(this.hostElement, 'input-right');\n }\n\n get inputDescribedBy(): string | undefined {\n return this.showMessages ? `${this.inputId}-description` : undefined;\n }\n\n get inputField(): HTMLInputElement {\n return this.hostElement.shadowRoot.querySelector<HTMLInputElement>('.input-field');\n }\n\n get inputId() {\n return `input-guid-${this.guid}`;\n }\n\n get inputMode() {\n const inputModeMap = {\n currency: 'numeric',\n ssn: 'numeric',\n tin: 'numeric',\n numeric: 'decimal',\n percentage: 'decimal',\n date: 'numeric',\n 'credit-card': 'numeric',\n };\n\n return (this.type && inputModeMap[this.type]) || undefined;\n }\n\n get isMaskedType(): boolean {\n const maskedTypes: string[] = [\n 'currency',\n 'phone',\n 'ssn',\n 'tin',\n 'alphanumeric',\n 'alpha',\n 'numeric',\n 'percentage',\n 'postal',\n 'date',\n 'credit-card',\n 'cif',\n 'routingnumber',\n 'swift',\n 'iban',\n 'clabe',\n ];\n\n return maskedTypes.includes(this.type);\n }\n\n get messages(): string[] {\n return (\n (this.errors && this.errors.length > 0 && this.errors) ||\n (this.hints && this.hints.length > 0 && this.hints) ||\n []\n );\n }\n\n get shouldCursorStartAtEnd(): boolean {\n return this.type === 'currency';\n }\n\n get shouldCursorStayAtEnd(): boolean {\n return this.isMobile && this.type === 'currency';\n }\n\n get showIconSeparator(): boolean {\n return this.type === 'credit-card' || !!this.formattedValueObject.prefix;\n }\n\n get showMessages(): boolean {\n return this.messages.length > 0 && !this.hideMessages;\n }\n\n get stringValue(): string {\n const notCoercable = Object.prototype.toString.call(this.value) === '[object Object]';\n return notCoercable ? '' : (this.value && String(this.value)) || '';\n }\n\n get visibilityToggleAriaLabel(): string {\n return `tecton.element.input.toggleAriaLabel.${this.textHidden ? 'show' : 'hide'}`;\n }\n\n get visibilityToggleText(): string {\n return loc(`tecton.element.input.toggle.${this.textHidden ? 'show' : 'hide'}`);\n }\n\n get wrapperClasses() {\n const classNames = ['field-container'];\n if (this.hasError) classNames.push('has-error');\n if (!!this.value) classNames.push('has-value');\n if (this.clearable && !!this.value) classNames.push('has-clear');\n if (this.hasFocus) classNames.push('has-focus');\n if (this.isSmall) classNames.push('is-small');\n if (this.formattedValueObject.prefix) classNames.push('has-prefix');\n if (this.computedIconLeft) classNames.push('has-icon-left');\n if (this.showIconSeparator) classNames.push('has-icon-separator');\n if (this.formattedValueObject.suffix) classNames.push('has-suffix');\n if (!this.formattedValueObject.suffix && this.iconRight) classNames.push('has-icon-right');\n if (this.type === 'currency') classNames.push('right-aligned');\n else classNames.push('left-aligned');\n if (this.hasCustomDisplaySlot) classNames.push('has-custom-display');\n\n return classNames.join(' ');\n }\n\n calculateCursorPositionOnFocus(): ICursorData {\n const { inputField } = this;\n const valueLength = inputField?.value?.length ?? 0;\n const startingPosition = inputField?.selectionStart ?? valueLength;\n\n return {\n startingPosition,\n valueLength,\n previousValueLength: valueLength,\n hasSelection: window.getSelection().toString().length > 0,\n };\n }\n\n calculateCursorPositionOnInput(): ICursorData {\n const input = this.inputField;\n const formattedLength = this.formattedValueObject.formattedValue.length;\n const currentValueLength = input.value.length;\n const defaultPosition = this.type === 'currency' ? formattedLength : 0;\n return {\n startingPosition: (input && input.selectionStart) || defaultPosition,\n valueLength: formattedLength,\n previousValueLength: input && currentValueLength,\n hasSelection: false,\n };\n }\n\n formatAndUpdateValueFromProp() {\n this.formattedValueObject = this.getFormattedValue(this.stringValue, true);\n\n if (!this.pseudo) {\n const setValue = () => {\n this.inputField.value = this.formattedValueObject.formattedValue;\n };\n\n this.inputField ? setValue() : this.scheduledAfterRender.push(() => setValue());\n }\n }\n\n getFormattedValue(value: string, valueChangedFromProperty: boolean): IFormatterValueObject {\n const formattingFunctions = {\n currency: formatCurrency,\n phone: formatPhoneNumber,\n ssn: formatSSN,\n tin: formatTIN,\n alphanumeric: formatAlphanumeric,\n alpha: formatAlpha,\n numeric: formatNumeric,\n percentage: formatPercentage,\n postal: formatPostalCode,\n date: formatDate,\n cif: formatCIF,\n routingnumber: formatRoutingNumber,\n swift: formatSwift,\n iban: formatIBAN,\n clabe: formatCLABE,\n 'credit-card': formatCreditCard.format,\n };\n\n if (formattingFunctions[this.type]) {\n return formattingFunctions[this.type](value, this.formatModifier, valueChangedFromProperty);\n }\n\n return {\n value,\n formattedValue: value,\n fullyFormattedValue: value,\n formattingCharacterCount: 0,\n unformattedValue: value,\n };\n }\n\n handleCurrencyDeletion(event: InputEvent) {\n // Don't do anything if text was selected for deletion\n if (this.textSelectedForDeletion) {\n this.textSelectedForDeletion = false;\n return;\n }\n // We only care about \"Backspace\" and \"Delete\" events\n if (!['deleteContentBackward', 'deleteContentForward'].includes(event.inputType)) return;\n\n const input = event.target as HTMLInputElement;\n const cursorPosition = input.selectionStart;\n const { formattedValue } = this.formattedValueObject;\n\n if (cursorPosition === null) return;\n\n let cursorMap;\n switch (event.inputType) {\n case 'deleteContentBackward':\n const valueBeforeCursor = formattedValue.substring(0, cursorPosition + 1);\n const isPrevCharAlphaNum = /[a-zA-Z0-9]$/.test(valueBeforeCursor);\n cursorMap = {\n leftIndex: isPrevCharAlphaNum ? cursorPosition : cursorPosition - 1,\n rightIndex: isPrevCharAlphaNum ? cursorPosition + 1 : cursorPosition,\n afterCursorOffset: 0,\n newCursorOffset: 1,\n };\n break;\n case 'deleteContentForward':\n const valueAfterCursor = formattedValue.substring(cursorPosition);\n const isNextCharAlphaNum = /^[a-zA-Z0-9]/.test(valueAfterCursor);\n cursorMap = {\n leftIndex: isNextCharAlphaNum ? cursorPosition : cursorPosition + 1,\n rightIndex: isNextCharAlphaNum ? cursorPosition + 1 : cursorPosition + 2,\n afterCursorOffset: 1,\n newCursorOffset: 0,\n };\n break;\n default:\n return;\n }\n\n // Ensure the cursor doesn't move with a newly formatted value\n const newValue = [\n formattedValue.substring(0, cursorMap.leftIndex),\n formattedValue.substring(cursorMap.rightIndex),\n ].join('');\n const charactersAfterCursor = formattedValue.length - cursorPosition - cursorMap.afterCursorOffset;\n const newFormattedValue = this.getFormattedValue(newValue, false).formattedValue;\n const newCursorPosition = Math.max(\n newFormattedValue.length - charactersAfterCursor + cursorMap.newCursorOffset,\n 0\n );\n\n input.value = newFormattedValue;\n input.setSelectionRange(newCursorPosition, newCursorPosition);\n\n // This handles a runtime issue when a character is deleted from the beginning of the input\n if (newCursorPosition === 0) {\n nextPaint(() => input.setSelectionRange(newCursorPosition, newCursorPosition));\n }\n }\n\n /**\n * Sets textSelectedForDeletion to true if the user has selected text for deletion\n * This is used to prevent other logic from running when text is deleted\n */\n handleCurrencyKeydown = (event: KeyboardEvent) => {\n if (!['Backspace', 'Delete'].includes(event.key)) return;\n const inputElement = this.inputField;\n this.textSelectedForDeletion = inputElement.selectionStart !== inputElement.selectionEnd;\n };\n\n handleDataInput(newFormattedValue: IFormatterValueObject) {\n if (\n this.maxlength === undefined ||\n newFormattedValue.unformattedValue.length <= this.maxlength ||\n newFormattedValue.unformattedValue.length <= this.formattedValueObject.unformattedValue.length\n ) {\n this.formattedValueObject = newFormattedValue;\n } else if (this.maxlength) {\n newFormattedValue = this.getFormattedValue(\n newFormattedValue.unformattedValue.substring(0, this.maxlength),\n false\n );\n this.formattedValueObject = newFormattedValue;\n }\n this.handleValueAndCursor();\n }\n\n handleValueAndCursor = () => {\n // ORDER IMPORTANT: calculate cursor position -> set value -> set cursor position\n const cursorPosition = this.calculateCursorPositionOnInput();\n // when type=number: returns only valid decimal on input event, should not update itself (e.g. typing \"1.\" )\n if (this.type !== 'number') this.inputField.value = this.formattedValueObject.formattedValue;\n mirrorEmit(this, ['input', 'tctInput'], {\n value: this.formattedValueObject.value,\n formattedValue: this.formattedValueObject.fullyFormattedValue,\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),\n });\n if (!this.formattedValueObject.value) {\n mirrorEmit(this, ['clear', 'tctClear'], { source: 'input' });\n }\n this.setCursorPosition(cursorPosition);\n };\n\n initMutationObserver = () => {\n if (!('MutationObserver' in window)) return;\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true });\n this.mutationObserver = observer;\n };\n\n onClearInput = () => {\n const eventDetail = {\n value: '',\n formattedValue: '',\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n };\n mirrorEmit(this, ['input', 'tctInput'], eventDetail);\n mirrorEmit(this, ['change', 'tctChange'], eventDetail);\n mirrorEmit(this, ['clear', 'tctClear'], { source: 'button' });\n this.inputField.focus();\n };\n\n onInputBlur = () => {\n this.hasFocus = false;\n setMessageHeight(this);\n if (this.valueOnFocus !== this.formattedValueObject.value) {\n this.valueOnFocus = this.formattedValueObject.value;\n mirrorEmit(this, ['change', 'tctChange'], {\n value: this.formattedValueObject.value,\n formattedValue: this.formattedValueObject.fullyFormattedValue,\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),\n });\n }\n };\n\n onInputClick = () => {\n if (this.shouldCursorStayAtEnd) this.placeCursorAtEnd();\n };\n\n onInputFocus = () => {\n if (this.inputField.tagName === 'INPUT') {\n this.scheduledAfterRender.push(() => {\n if (this.isClickEvent && this.shouldCursorStartAtEnd) {\n this.placeCursorAtEnd();\n } else {\n this.setCursorPosition(this.calculateCursorPositionOnFocus());\n }\n this.isClickEvent = false;\n });\n }\n this.hasFocus = true;\n setMessageHeight(this);\n this.valueOnFocus = this.value;\n };\n\n onInputInput = (event: InputEvent) => {\n event.stopPropagation();\n if (this.type === 'currency') this.handleCurrencyDeletion(event);\n const newFormattedValue = this.getFormattedValue((event.target as HTMLInputElement).value, false);\n this.handleDataInput(newFormattedValue);\n this.validateInput();\n };\n\n onInputKeydown = (event: KeyboardEvent) => {\n const keysThatMoveCursor = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'];\n const { key } = event;\n\n if (this.type === 'currency') this.handleCurrencyKeydown(event);\n if (this.shouldCursorStayAtEnd && keysThatMoveCursor.includes(key)) event.preventDefault();\n if (key === 'Enter' && this.valueOnFocus !== this.formattedValueObject.value) {\n this.valueOnFocus = this.formattedValueObject.value;\n mirrorEmit(this, ['change', 'tctChange'], {\n value: this.formattedValueObject.value,\n formattedValue: this.formattedValueObject.fullyFormattedValue,\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),\n });\n }\n };\n\n onInputMousedown = () => {\n this.isClickEvent = true;\n };\n\n onInputPaste = (event: ClipboardEvent) => {\n if (this.type === 'currency') {\n const clipboardData = event.clipboardData.getData('text');\n const newFormattedValue = this.getFormattedValue(clipboardData, true);\n event.preventDefault();\n this.handleDataInput(newFormattedValue);\n }\n };\n\n onMutationObserved = () => {\n // Updating checkSlotCount to force re-render when slot content changes\n this.checkSlotCount = this.checkSlotCount + 1;\n };\n\n onRefocusInput = () => {\n if (this.showMessages) {\n this.inputField.focus();\n setMessageHeight(this);\n }\n };\n\n onToggleVisibility = () => {\n this.hostElement.dispatchEvent(new FocusEvent('focus'));\n this.textHidden = !this.textHidden;\n };\n\n placeCursorAtEnd() {\n const { inputField } = this;\n inputField.selectionStart = inputField.selectionEnd = inputField.value.length;\n }\n\n setCursorPosition(cursorData: ICursorData) {\n if (this.canSetSelection && !cursorData.hasSelection) {\n const input = this.inputField;\n const { valueLength, previousValueLength, startingPosition } = cursorData;\n\n if (this.type === 'currency') {\n if (previousValueLength - valueLength === 1) {\n input.setSelectionRange(startingPosition - 1, startingPosition - 1);\n } else {\n const difference = previousValueLength - valueLength;\n input.setSelectionRange(startingPosition - difference, startingPosition - difference);\n }\n }\n\n if (this.type !== 'currency') {\n const difference = valueLength - previousValueLength;\n // Never allow the cursor to move in reverse\n const newPosition = startingPosition + (difference > 0 ? difference : 0);\n input.setSelectionRange(newPosition, newPosition);\n }\n }\n }\n\n validateInput = () => {\n this.validity = this.inputRef?.validity;\n if (this.validity?.valid === false) {\n mirrorEmit(this, ['invalid', 'tctInvalid'], undefined);\n }\n return !!this.validity?.valid;\n };\n\n // #endregion\n // #region Render Methods\n\n renderCountDOM() {\n if (!this.showCount) return;\n const { maxlength, formattedValueObject } = this;\n\n return (\n <div class=\"count-tag\">\n {formattedValueObject.unformattedValue.length}\n {maxlength && `/${maxlength}`}\n </div>\n );\n }\n\n renderInputContainerDOM() {\n const { hasInputLeftSlot, hasInputRightSlot } = this;\n return (\n <div\n class=\"input-container\"\n tabindex={-1}\n test-id=\"inputContainer\"\n >\n <div class=\"input-icons-container-left\">\n {this.formattedValueObject.prefix && (\n <div class=\"input-prefix\">{this.formattedValueObject.prefix}</div>\n )}\n {this.computedIconLeft && (\n <div>\n <q2-icon\n type={this.computedIconLeft}\n class={this.computedClassForIconLeft}\n />\n </div>\n )}\n {hasInputLeftSlot && <slot name=\"input-left\" />}\n {this.showIconSeparator && <div class=\"vertical-separator\" />}\n {this.hasError && this.type === 'currency' && (\n <div\n test-id=\"divIconError\"\n onClick={this.onRefocusInput}\n >\n <q2-icon\n type=\"error\"\n class=\"icon-error\"\n test-id=\"iconError\"\n />\n </div>\n )}\n </div>\n {this.pseudo ? this.renderPseudoInputDOM() : this.renderStandardInputDOM()}\n <div class=\"input-icons-container-right\">\n <q2-btn\n class={this.clearClasses.join(' ')}\n label={loc('tecton.element.input.clear', [this.label])}\n hideLabel={true}\n test-id=\"clearButton\"\n onClick={this.onClearInput}\n onKeyDown={e => e.stopPropagation()}\n >\n <q2-icon\n type=\"close\"\n class=\"icon-clear\"\n />\n </q2-btn>\n {['password', 'text', 'ssn', 'tin'].includes(this.type) && this.showVisibilityToggle && (\n <q2-btn\n class=\"btn-visibility-toggle\"\n test-id=\"toggleVisibilityButton\"\n onClick={this.onToggleVisibility}\n label={loc(this.visibilityToggleAriaLabel, { label: this.label })}\n hide-label={true}\n >\n {this.visibilityToggleText}\n </q2-btn>\n )}\n {this.formattedValueObject.suffix && (\n <span class=\"input-suffix\">{this.formattedValueObject.suffix}</span>\n )}\n {this.badgeValue && (\n <q2-badge\n size=\"large\"\n theme={this.badgeTheme}\n >\n {this.badgeValue}\n </q2-badge>\n )}\n {this.hasError && this.type !== 'currency' && (\n <div\n test-id=\"divIconError\"\n onClick={this.onRefocusInput}\n >\n <q2-icon\n type=\"error\"\n class=\"icon-error\"\n test-id=\"iconError\"\n />\n </div>\n )}\n {this.iconRight && !this.formattedValueObject.suffix && (\n <div>\n <q2-icon\n type={this.iconRight}\n class=\"icon-right\"\n />\n </div>\n )}\n {hasInputRightSlot && <slot name=\"input-right\" />}\n </div>\n </div>\n );\n }\n\n renderPseudoInputDOM() {\n const showPlaceholder = !this.value && !!this.placeholder;\n const { ariaOwns, ariaHaspopup, ariaExpanded, ariaActivedescendant } = this.ariaAttributes;\n\n return (\n <div class=\"pseudo-input-container\">\n <button\n class=\"input-field\"\n type=\"button\"\n id={this.inputId}\n aria-describedby={this.inputDescribedBy}\n aria-invalid={`${this.hasError}`}\n aria-owns={ariaOwns}\n aria-haspopup={ariaHaspopup}\n aria-expanded={ariaExpanded}\n aria-activedescendant={ariaActivedescendant}\n role={this.role || undefined}\n disabled={!!this.disabled}\n test-id=\"q2InputInnerClearButton\"\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n >\n <div class=\"custom-display-container\">\n <slot name=\"custom-display\">\n <span class={showPlaceholder ? 'placeholder-text' : ''}>\n {showPlaceholder ? loc(this.placeholder) : loc(this.value)}\n </span>\n </slot>\n </div>\n </button>\n </div>\n );\n }\n\n renderStandardInputDOM() {\n const { hasCustomDisplaySlot } = this;\n const inputClasses = ['input-field'];\n const { ariaOwns, ariaHaspopup, ariaActivedescendant } = this.ariaAttributes;\n if (hasCustomDisplaySlot) inputClasses.push('sr');\n return (\n <Fragment>\n {hasCustomDisplaySlot && (\n <div class=\"custom-display-container\">\n <slot name=\"custom-display\"></slot>\n </div>\n )}\n <input\n ref={el => (this.inputRef = el)}\n class={inputClasses.join(' ')}\n id={this.inputId}\n type={this.computedType}\n size={this.formattedValueObject.prefix ? 10 : undefined}\n maxlength={['date', 'currency'].includes(this.type) ? undefined : this.maxlength || undefined}\n max={this.max}\n min={this.min}\n step={this.step}\n aria-current={this.current || undefined}\n aria-describedby={this.inputDescribedBy}\n aria-required={`${!this.optional}`}\n aria-invalid={`${this.hasError}`}\n aria-owns={ariaOwns}\n aria-haspopup={ariaHaspopup}\n aria-activedescendant={ariaActivedescendant}\n autocomplete={this.computedAutocomplete}\n autocapitalize={this.autocapitalize}\n autocorrect={this.autocorrect === 'on' ? 'on' : 'off'}\n autofocus={this.autofocus}\n placeholder={(this.placeholder && loc(this.placeholder)) || undefined}\n test-id=\"inputField\"\n readonly={this.readonly || this._preventEntry}\n disabled={!!this.disabled}\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n onClick={this.onInputClick}\n onKeyDown={this.onInputKeydown}\n onMouseDown={this.onInputMousedown}\n onInput={this.onInputInput}\n onPaste={this.onInputPaste}\n inputmode={this.inputMode}\n pattern={this.pattern || undefined}\n />\n </Fragment>\n );\n }\n\n render() {\n const { ariaControls, ariaExpanded } = this.ariaAttributes;\n return (\n <Host\n role={this._role}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n >\n <div class={this.wrapperClasses}>\n <div class=\"label-wrapper\">\n {renderLabel(this)}\n {this.renderCountDOM()}\n </div>\n {this.renderInputContainerDOM()}\n {renderMessages(this)}\n </div>\n </Host>\n );\n }\n\n // #endregion\n}\n"]}
|
|
@@ -206,6 +206,9 @@ button {
|
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
.footer {
|
|
209
|
+
color: var(--tct-item-footer-color, inherit);
|
|
210
|
+
font-size: var(--tct-item-footer-font-size, inherit);
|
|
211
|
+
font-weight: var(--tct-item-footer-font-weight, inherit);
|
|
209
212
|
grid-column-start: 2;
|
|
210
213
|
grid-column-end: 4;
|
|
211
214
|
grid-row: 2;
|
|
@@ -4,7 +4,8 @@ import { hasSlotContent, overrideFocus } from "../../utils/index";
|
|
|
4
4
|
* @name Item
|
|
5
5
|
* @category Display
|
|
6
6
|
* @summary Use for laying out structured content with header, body, and footer text, icons, and actions.
|
|
7
|
-
* @slot
|
|
7
|
+
* @slot decorator - An optional slot to display custom content in the decorator area.
|
|
8
|
+
* Supports either [Icon](https://tecton.q2developer.com/design-system/q2-icon/) or [Avatar](https://tecton.q2developer.com/design-system/q2-avatar/).
|
|
8
9
|
* Use this to provide a visual indicator or icon for your item.
|
|
9
10
|
*
|
|
10
11
|
* @slot header - An optional slot to display custom content in the header area.
|
|
@@ -14,7 +15,7 @@ import { hasSlotContent, overrideFocus } from "../../utils/index";
|
|
|
14
15
|
* Use this to provide the main content of your item.
|
|
15
16
|
*
|
|
16
17
|
* @slot action - An optional slot to display custom content in the action area.
|
|
17
|
-
*
|
|
18
|
+
* Supports buttons, checkboxes, dropdowns, or other interactive elements related to the item.
|
|
18
19
|
*
|
|
19
20
|
* @slot footer - An optional slot to display custom content in the footer area.
|
|
20
21
|
* Use this to provide additional information or actions related to the item.
|
|
@@ -50,28 +51,28 @@ export class Q2Item {
|
|
|
50
51
|
// #region Local Methods
|
|
51
52
|
get actionClasses() {
|
|
52
53
|
const classes = ['action'];
|
|
53
|
-
if (!this.
|
|
54
|
+
if (!this.hasDecoratorSlotContent) {
|
|
54
55
|
classes.push(`action-no-bullet`);
|
|
55
56
|
}
|
|
56
57
|
return classes.join(' ');
|
|
57
58
|
}
|
|
58
|
-
get
|
|
59
|
-
const classes = ['bullet'];
|
|
59
|
+
get decoratorClasses() {
|
|
60
|
+
const classes = ['bullet', 'decorator'];
|
|
60
61
|
if (!this.hasFooterSlotContent) {
|
|
61
|
-
classes.push(`bullet-no-footer`);
|
|
62
|
+
classes.push(`bullet-no-footer`, `decorator-no-footer`);
|
|
62
63
|
}
|
|
63
64
|
return classes.join(' ');
|
|
64
65
|
}
|
|
65
66
|
get footerClasses() {
|
|
66
67
|
const classes = ['footer'];
|
|
67
|
-
if (!this.hasActionSlotContent && !this.
|
|
68
|
+
if (!this.hasActionSlotContent && !this.hasDecoratorSlotContent) {
|
|
68
69
|
classes.push(`footer-no-action-nor-bullet`);
|
|
69
70
|
}
|
|
70
71
|
else if (!this.hasActionSlotContent) {
|
|
71
72
|
classes.push(`footer-no-action`);
|
|
72
73
|
}
|
|
73
|
-
else if (!this.
|
|
74
|
-
classes.push(`footer-no-bullet`);
|
|
74
|
+
else if (!this.hasDecoratorSlotContent) {
|
|
75
|
+
classes.push(`footer-no-bullet`, `footer-no-decorator`);
|
|
75
76
|
}
|
|
76
77
|
return classes.join(' ');
|
|
77
78
|
}
|
|
@@ -81,8 +82,8 @@ export class Q2Item {
|
|
|
81
82
|
get hasBodySlotContent() {
|
|
82
83
|
return hasSlotContent(this.hostElement, 'body');
|
|
83
84
|
}
|
|
84
|
-
get
|
|
85
|
-
return hasSlotContent(this.hostElement, 'bullet');
|
|
85
|
+
get hasDecoratorSlotContent() {
|
|
86
|
+
return hasSlotContent(this.hostElement, 'decorator') || hasSlotContent(this.hostElement, 'bullet');
|
|
86
87
|
}
|
|
87
88
|
get hasFooterSlotContent() {
|
|
88
89
|
return hasSlotContent(this.hostElement, 'footer');
|
|
@@ -92,14 +93,14 @@ export class Q2Item {
|
|
|
92
93
|
}
|
|
93
94
|
get itemClasses() {
|
|
94
95
|
const classes = ['item'];
|
|
95
|
-
if (!this.hasActionSlotContent && !this.
|
|
96
|
+
if (!this.hasActionSlotContent && !this.hasDecoratorSlotContent) {
|
|
96
97
|
classes.push(`item-no-action-nor-bullet`);
|
|
97
98
|
}
|
|
98
99
|
else if (!this.hasActionSlotContent) {
|
|
99
100
|
classes.push(`item-no-action`);
|
|
100
101
|
}
|
|
101
|
-
else if (!this.
|
|
102
|
-
classes.push(`item-no-bullet`);
|
|
102
|
+
else if (!this.hasDecoratorSlotContent) {
|
|
103
|
+
classes.push(`item-no-bullet`, `item-no-decorator`);
|
|
103
104
|
}
|
|
104
105
|
if (!this.hasFooterSlotContent) {
|
|
105
106
|
classes.push(`item-no-footer`);
|
|
@@ -108,11 +109,11 @@ export class Q2Item {
|
|
|
108
109
|
}
|
|
109
110
|
get mainClasses() {
|
|
110
111
|
const classes = ['main'];
|
|
111
|
-
if (!this.hasActionSlotContent && !this.
|
|
112
|
+
if (!this.hasActionSlotContent && !this.hasDecoratorSlotContent) {
|
|
112
113
|
classes.push(`main-no-action-nor-bullet`);
|
|
113
114
|
}
|
|
114
|
-
else if (!this.
|
|
115
|
-
classes.push(`main-no-bullet`);
|
|
115
|
+
else if (!this.hasDecoratorSlotContent) {
|
|
116
|
+
classes.push(`main-no-bullet`, `main-no-decorator`);
|
|
116
117
|
}
|
|
117
118
|
return classes.join(' ');
|
|
118
119
|
}
|
|
@@ -120,7 +121,7 @@ export class Q2Item {
|
|
|
120
121
|
// #region Render Methods
|
|
121
122
|
render() {
|
|
122
123
|
const { clickable } = this;
|
|
123
|
-
return (h("div", { key: '
|
|
124
|
+
return (h("div", { key: '031b5234d0a672203b5611b485e123c61281a728', "test-id": "itemContainer", class: this.itemClasses, ref: el => (this.itemElement = el), role: clickable ? 'button' : undefined, tabIndex: clickable ? 0 : undefined }, this.hasDecoratorSlotContent && (h("div", { key: 'dd55fd88f122b0aa1830680e3d104ad1a51e969c', class: this.decoratorClasses }, h("slot", { key: '384102a2d0764bff0a542759d62382146e524872', name: "decorator" }, h("slot", { key: 'c46aa05fbb824df0454d517637593dd8a0dc4095', name: "bullet" })))), h("div", { key: '1c6dbbd0f2a9c1c40c82cbc940c2ec8367e07057', class: this.mainClasses }, this.hasHeaderSlotContent && (h("div", { key: '5d2d1c2a4333d14bf185f57e20a4b064ed6a269b', class: "header" }, h("slot", { key: '2da3db423b914bcd7cdd52ace4e898c1b7957b8f', name: "header" }))), this.hasBodySlotContent && (h("div", { key: '82fc01d1ab048104b14b269c41af995a53bac2c3', class: "body" }, h("slot", { key: '3d254e0f4a297671d64014bc92b8ebe33d90200b', name: "body" })))), this.hasActionSlotContent && (h("div", { key: '8186ab3896ca69110dbfbcb90fe9cec73a6ed695', class: this.actionClasses }, h("slot", { key: 'e05c19d86e8cbbd696b2a50cc081dc51ed2ba006', name: "action" }))), this.hasFooterSlotContent && (h("div", { key: '671f2bb2bc7e0f2af9082771cf9d70ea489d5cda', class: this.footerClasses }, h("slot", { key: 'e078cc80aba9b91ac5000ceb3ba39d4f756a4fb1', name: "footer" })))));
|
|
124
125
|
}
|
|
125
126
|
static get is() { return "q2-item"; }
|
|
126
127
|
static get encapsulation() { return "shadow"; }
|