q2-tecton-elements 1.45.2 → 1.46.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/cjs/click-elsewhere_2.cjs.entry.js +36 -4
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
- package/dist/cjs/{index-0430339e.js → index-c385e32f.js} +1 -1
- package/dist/cjs/{index-0430339e.js.map → index-c385e32f.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +2 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +5 -4
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +33 -2
- package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-currency.cjs.entry.js +1 -1
- package/dist/cjs/q2-currency.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +2 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +5 -3
- package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +17 -10
- package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-list.cjs.entry.js +1 -1
- package/dist/cjs/q2-list.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +59 -0
- package/dist/cjs/q2-optgroup.cjs.entry.js.map +1 -0
- package/dist/cjs/{q2-optgroup_2.cjs.entry.js → q2-option.cjs.entry.js} +1 -52
- package/dist/cjs/q2-option.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-pagination.cjs.entry.js +22 -3
- package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +2 -2
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
- package/dist/cjs/q2-section.cjs.entry.js +2 -2
- package/dist/cjs/q2-select.cjs.entry.js +6 -6
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +6 -6
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +2 -2
- package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-tag.cjs.entry.js +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
- package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
- package/dist/collection/components/q2-btn/q2-btn.js +29 -5
- package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.css +3 -0
- package/dist/collection/components/q2-calendar/q2-calendar.js +24 -2
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-carousel/q2-carousel.js +33 -2
- package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
- package/dist/collection/components/q2-currency/q2-currency.css +4 -0
- package/dist/collection/components/q2-data-table/q2-data-table.js +6 -6
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +23 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-icon/q2-icon.js +6 -4
- package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input.js +43 -15
- package/dist/collection/components/q2-input/q2-input.js.map +1 -1
- package/dist/collection/components/q2-item/q2-item.css +11 -11
- package/dist/collection/components/q2-list/q2-list.css +8 -5
- package/dist/collection/components/q2-option-list/q2-option-list.js +2 -2
- package/dist/collection/components/q2-pagination/q2-pagination.css +17 -2
- package/dist/collection/components/q2-pagination/q2-pagination.js +53 -2
- package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
- package/dist/collection/components/q2-pill/q2-pill.js +2 -2
- package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
- package/dist/collection/components/q2-popover/q2-popover.css +3 -0
- package/dist/collection/components/q2-popover/q2-popover.js +53 -3
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-select/q2-select.js +44 -6
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/components/q2-stepper/q2-stepper.js +2 -2
- package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +4 -4
- 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 +6 -6
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +2 -2
- 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 +1 -1
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-textarea/q2-textarea.css +2 -2
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/components/click-elsewhere2.js.map +1 -1
- package/dist/components/index2.js +1 -1
- package/dist/components/q2-btn2.js +4 -2
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-calendar.js +5 -3
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-carousel.js +33 -2
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-currency.js +1 -1
- package/dist/components/q2-currency.js.map +1 -1
- package/dist/components/q2-dropdown.js +3 -1
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-icon2.js +6 -4
- package/dist/components/q2-icon2.js.map +1 -1
- package/dist/components/q2-input2.js +20 -12
- package/dist/components/q2-input2.js.map +1 -1
- package/dist/components/q2-item.js +1 -1
- package/dist/components/q2-item.js.map +1 -1
- package/dist/components/q2-list.js +1 -1
- package/dist/components/q2-list.js.map +1 -1
- package/dist/components/q2-message2.js +1 -1
- package/dist/components/q2-option-list2.js +1 -1
- package/dist/components/q2-pagination.js +64 -13
- package/dist/components/q2-pagination.js.map +1 -1
- package/dist/components/q2-pill.js +2 -2
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-popover2.js +38 -5
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-relative-time.js +1 -1
- package/dist/components/q2-section.js +2 -2
- package/dist/components/q2-select.js +1 -709
- package/dist/components/q2-select.js.map +1 -1
- package/dist/components/q2-select2.js +715 -0
- package/dist/components/q2-select2.js.map +1 -0
- package/dist/components/q2-stepper-pane.js +2 -2
- package/dist/components/q2-stepper-pane.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +6 -6
- package/dist/components/q2-stepper-vertical.js.map +1 -1
- package/dist/components/q2-stepper.js +2 -2
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/components/q2-tab-container.js +2 -2
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tag.js +1 -1
- package/dist/components/q2-textarea.js +1 -1
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/click-elsewhere_2.entry.js +36 -4
- package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
- package/dist/esm/{index-e940b40e.js → index-f0dfb099.js} +1 -1
- package/dist/esm/{index-e940b40e.js.map → index-f0dfb099.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-btn_2.entry.js +2 -1
- package/dist/esm/q2-btn_2.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +5 -4
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +33 -2
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-currency.entry.js +1 -1
- package/dist/esm/q2-currency.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +2 -1
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +6 -4
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-input.entry.js +17 -10
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-item.entry.js +1 -1
- package/dist/esm/q2-item.entry.js.map +1 -1
- package/dist/esm/q2-list.entry.js +1 -1
- package/dist/esm/q2-list.entry.js.map +1 -1
- package/dist/esm/q2-optgroup.entry.js +55 -0
- package/dist/esm/q2-optgroup.entry.js.map +1 -0
- package/dist/esm/{q2-optgroup_2.entry.js → q2-option.entry.js} +3 -53
- package/dist/esm/q2-option.entry.js.map +1 -0
- package/dist/esm/q2-pagination.entry.js +22 -3
- package/dist/esm/q2-pagination.entry.js.map +1 -1
- package/dist/esm/q2-pill.entry.js +2 -2
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-relative-time.entry.js +2 -2
- package/dist/esm/q2-section.entry.js +2 -2
- package/dist/esm/q2-select.entry.js +6 -6
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +2 -2
- package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +6 -6
- package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/esm/q2-stepper.entry.js +2 -2
- package/dist/esm/q2-stepper.entry.js.map +1 -1
- package/dist/esm/q2-tab-container.entry.js +2 -2
- package/dist/esm/q2-tab-container.entry.js.map +1 -1
- package/dist/esm/q2-tab-pane.entry.js +1 -1
- package/dist/esm/q2-tag.entry.js +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +1 -1
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/q2-tecton-elements/{p-685b821c.entry.js → p-0eff37c6.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-fcc84527.entry.js → p-12326313.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-12326313.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-176ad382.entry.js +2 -0
- package/dist/q2-tecton-elements/p-176ad382.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-f4d77672.entry.js → p-195a133c.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-1b37b8c6.entry.js +2 -0
- package/dist/q2-tecton-elements/p-1b37b8c6.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-1c4aa7e3.entry.js +2 -0
- package/dist/q2-tecton-elements/p-1c4aa7e3.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-1e927478.entry.js +2 -0
- package/dist/q2-tecton-elements/p-1e927478.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-36398b59.entry.js +2 -0
- package/dist/q2-tecton-elements/p-36398b59.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-7ce6e587.js → p-3c42c90f.js} +1 -1
- package/dist/q2-tecton-elements/p-66af375f.entry.js +2 -0
- package/dist/q2-tecton-elements/p-66af375f.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-6ebe37ea.entry.js +2 -0
- package/dist/q2-tecton-elements/p-6ebe37ea.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-79df783e.entry.js +2 -0
- package/dist/q2-tecton-elements/p-79df783e.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-7e1dc7e8.entry.js +2 -0
- package/dist/q2-tecton-elements/p-7e1dc7e8.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-05b015a8.entry.js → p-87bbeb9c.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-05b015a8.entry.js.map → p-87bbeb9c.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-89305707.entry.js +2 -0
- package/dist/q2-tecton-elements/p-89305707.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-debd5249.entry.js → p-ad274c67.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-debd5249.entry.js.map → p-ad274c67.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-c56b58e9.entry.js +2 -0
- package/dist/q2-tecton-elements/p-c56b58e9.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-2436c843.entry.js → p-cb4f9b33.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-cb4f9b33.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-5dc5c4e2.entry.js → p-d013e05d.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-d013e05d.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-d1522382.entry.js +2 -0
- package/dist/q2-tecton-elements/p-d1522382.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-63192fac.entry.js → p-da7fc914.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-e3230823.entry.js +2 -0
- package/dist/q2-tecton-elements/p-e3230823.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-b376c111.entry.js → p-e47dbfbe.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-a214077c.entry.js → p-e4a2469f.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-f0813fb4.entry.js +2 -0
- package/dist/q2-tecton-elements/p-f0813fb4.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-fc9f43f8.entry.js +2 -0
- package/dist/q2-tecton-elements/p-fc9f43f8.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
- package/dist/test/elements/q2-calendar-test.e2e.js +21 -1
- package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-carousel-test.e2e.js +67 -1
- package/dist/test/elements/q2-carousel-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-detail/q2-list-test.e2e.js +1 -1
- package/dist/test/elements/q2-detail/q2-list-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-dropdown-test.e2e.js +30 -0
- package/dist/test/elements/q2-dropdown-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-icon-test.e2e.js +17 -0
- package/dist/test/elements/q2-icon-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-input-test.e2e.js +25 -2
- package/dist/test/elements/q2-input-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-pagination-test.e2e.js +22 -0
- package/dist/test/elements/q2-pagination-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-pill-test.e2e.js +21 -2
- package/dist/test/elements/q2-pill-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-popover-test.spec.js +99 -13
- package/dist/test/elements/q2-popover-test.spec.js.map +1 -1
- package/dist/test/elements/q2-select-test.e2e.js +50 -8
- package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-stepper-test.e2e.js +10 -17
- package/dist/test/elements/q2-stepper-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-stepper-vertical-test.e2e.js +20 -4
- package/dist/test/elements/q2-stepper-vertical-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tab-container-test.e2e.js +10 -4
- package/dist/test/elements/q2-tab-container-test.e2e.js.map +1 -1
- package/dist/types/components/q2-btn/q2-btn.d.ts +14 -3
- package/dist/types/components/q2-carousel/q2-carousel.d.ts +2 -0
- package/dist/types/components/q2-icon/q2-icon.d.ts +1 -0
- package/dist/types/components/q2-input/q2-input.d.ts +10 -3
- package/dist/types/components/q2-popover/q2-popover.d.ts +3 -1
- package/dist/types/components.d.ts +82 -4
- package/package.json +3 -3
- package/dist/cjs/q2-optgroup_2.cjs.entry.js.map +0 -1
- package/dist/esm/q2-optgroup_2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-1c17d118.entry.js +0 -2
- package/dist/q2-tecton-elements/p-1c17d118.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-2436c843.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-3b1ea100.entry.js +0 -2
- package/dist/q2-tecton-elements/p-3b1ea100.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-445990a8.entry.js +0 -2
- package/dist/q2-tecton-elements/p-445990a8.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-4a332c2a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-4a332c2a.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-4b81a121.entry.js +0 -2
- package/dist/q2-tecton-elements/p-4b81a121.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-50bd4437.entry.js +0 -2
- package/dist/q2-tecton-elements/p-50bd4437.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-5dc5c4e2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-7c12ba02.entry.js +0 -2
- package/dist/q2-tecton-elements/p-7c12ba02.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-7f663376.entry.js +0 -2
- package/dist/q2-tecton-elements/p-7f663376.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-a977e723.entry.js +0 -2
- package/dist/q2-tecton-elements/p-a977e723.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-b3d10d52.entry.js +0 -2
- package/dist/q2-tecton-elements/p-b3d10d52.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-c4c458b7.entry.js +0 -2
- package/dist/q2-tecton-elements/p-c4c458b7.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-d1a9ed3d.entry.js +0 -2
- package/dist/q2-tecton-elements/p-d1a9ed3d.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-f1281e3f.entry.js +0 -2
- package/dist/q2-tecton-elements/p-f1281e3f.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-f162c670.entry.js +0 -2
- package/dist/q2-tecton-elements/p-f162c670.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-fcc84527.entry.js.map +0 -1
- /package/dist/q2-tecton-elements/{p-685b821c.entry.js.map → p-0eff37c6.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-f4d77672.entry.js.map → p-195a133c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-7ce6e587.js.map → p-3c42c90f.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-63192fac.entry.js.map → p-da7fc914.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-b376c111.entry.js.map → p-e47dbfbe.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-a214077c.entry.js.map → p-e4a2469f.entry.js.map} +0 -0
- /package/dist/types/workspace/workspace/{tecton-production_release_1.45.x → _Gitlab_tecton-production_master}/packages/q2-tecton-elements/.stencil/test/elements/q2-detail/slot-component.d.ts +0 -0
- /package/dist/types/workspace/workspace/{tecton-production_release_1.45.x → _Gitlab_tecton-production_master}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +0 -0
|
@@ -159,9 +159,10 @@ export class Q2Input {
|
|
|
159
159
|
this.step = undefined;
|
|
160
160
|
this.textHidden = undefined;
|
|
161
161
|
this.type = 'text';
|
|
162
|
+
this._role = undefined;
|
|
162
163
|
this.value = undefined;
|
|
163
|
-
this.ariaControls = undefined;
|
|
164
164
|
this.ariaOwns = undefined;
|
|
165
|
+
this.ariaControls = undefined;
|
|
165
166
|
this.ariaHaspopup = undefined;
|
|
166
167
|
this.ariaExpanded = undefined;
|
|
167
168
|
this.ariaActivedescendant = undefined;
|
|
@@ -235,7 +236,6 @@ export class Q2Input {
|
|
|
235
236
|
}
|
|
236
237
|
get ariaAttributes() {
|
|
237
238
|
return {
|
|
238
|
-
ariaControls: getAriaValueFromProp(this.ariaControls),
|
|
239
239
|
ariaOwns: getAriaValueFromProp(this.ariaOwns),
|
|
240
240
|
ariaHaspopup: getAriaValueFromProp(this.ariaHaspopup, [
|
|
241
241
|
'true',
|
|
@@ -253,9 +253,13 @@ export class Q2Input {
|
|
|
253
253
|
get hasCustomDisplaySlot() {
|
|
254
254
|
return !!this.hostElement.querySelector('[slot=custom-display]');
|
|
255
255
|
}
|
|
256
|
-
get
|
|
256
|
+
get clearClasses() {
|
|
257
257
|
var _a;
|
|
258
|
-
|
|
258
|
+
const classes = ['btn-clear'];
|
|
259
|
+
if (!this.clearable || !(((_a = this.inputField) === null || _a === void 0 ? void 0 : _a.value) || this.value)) {
|
|
260
|
+
classes.push('hidden');
|
|
261
|
+
}
|
|
262
|
+
return classes;
|
|
259
263
|
}
|
|
260
264
|
get shouldCursorStartAtEnd() {
|
|
261
265
|
return this.type === 'currency';
|
|
@@ -381,6 +385,9 @@ export class Q2Input {
|
|
|
381
385
|
get visibilityToggleText() {
|
|
382
386
|
return loc(`tecton.element.input.toggle.${this.textHidden ? 'show' : 'hide'}`);
|
|
383
387
|
}
|
|
388
|
+
get visibilityToggleAriaLabel() {
|
|
389
|
+
return `tecton.element.input.toggleAriaLabel.${this.textHidden ? `show ${this.label}` : `hide ${this.label}`}`;
|
|
390
|
+
}
|
|
384
391
|
formatAndUpdateValueFromProp() {
|
|
385
392
|
this.formattedValueObject = this.getFormattedValue(this.stringValue, true);
|
|
386
393
|
if (!this.pseudo) {
|
|
@@ -551,7 +558,7 @@ export class Q2Input {
|
|
|
551
558
|
}
|
|
552
559
|
/////// VIEW METHODS ///////
|
|
553
560
|
render() {
|
|
554
|
-
return (h("div", { key: '
|
|
561
|
+
return (h("div", { key: '99673dcff3480239090a523f3bd11fe50dc3bb7c', class: this.wrapperClasses }, h("div", { key: '81b949df05caf96b67fdee796cabe21c202b5e46', class: "label-wrapper" }, labelDOM(this), this.countDOM()), this.inputContainerDOM(), messagesDOM(this)));
|
|
555
562
|
}
|
|
556
563
|
countDOM() {
|
|
557
564
|
if (!this.showCount)
|
|
@@ -562,23 +569,23 @@ export class Q2Input {
|
|
|
562
569
|
/* tslint:disable:cyclomatic-complexity */
|
|
563
570
|
inputContainerDOM() {
|
|
564
571
|
const { hasInputLeftSlot, hasInputRightSlot } = this;
|
|
565
|
-
return (h("div", { class: "input-container", tabindex: -1, "test-id": "inputContainer" }, h("div", { class: "input-icons-container-left" }, this.formattedValueObject.prefix && (h("div", { class: "input-prefix" }, this.formattedValueObject.prefix)), this.computedIconLeft && (h("div", null, h("q2-icon", { type: this.computedIconLeft, class: this.computedClassForIconLeft }))), hasInputLeftSlot && h("slot", { name: "input-left" }), this.showIconSeparator && h("div", { class: "vertical-separator" }), this.hasError && this.type === 'currency' && (h("div", { "test-id": "divIconError", onClick: this.onRefocusInput }, h("q2-icon", { type: "error", class: "icon-error", "test-id": "iconError" })))), this.pseudo ? this.pseudoInputDOM() : this.standardInputDOM(), h("div", { class: "input-icons-container-right" },
|
|
572
|
+
return (h("div", { class: "input-container", tabindex: -1, "test-id": "inputContainer" }, h("div", { class: "input-icons-container-left" }, this.formattedValueObject.prefix && (h("div", { class: "input-prefix" }, this.formattedValueObject.prefix)), this.computedIconLeft && (h("div", null, h("q2-icon", { type: this.computedIconLeft, class: this.computedClassForIconLeft }))), hasInputLeftSlot && h("slot", { name: "input-left" }), this.showIconSeparator && h("div", { class: "vertical-separator" }), this.hasError && this.type === 'currency' && (h("div", { "test-id": "divIconError", onClick: this.onRefocusInput }, h("q2-icon", { type: "error", class: "icon-error", "test-id": "iconError" })))), this.pseudo ? this.pseudoInputDOM() : this.standardInputDOM(), h("div", { class: "input-icons-container-right" }, h("q2-btn", { class: this.clearClasses.join(' '), ariaLabel: loc('tecton.element.input.clear', [this.label]), "test-id": "clearButton", onClick: this.onClearInput }, h("q2-icon", { type: "close", class: "icon-clear" })), ['password', 'text', 'ssn', 'tin'].includes(this.type) && this.showVisibilityToggle && (h("q2-btn", { class: "btn-visibility-toggle", "test-id": "toggleVisibilityButton", onClick: this.onToggleVisibility, label: this.visibilityToggleAriaLabel, "hide-label": true }, this.visibilityToggleText)), this.formattedValueObject.suffix && (h("span", { class: "input-suffix" }, this.formattedValueObject.suffix)), this.badgeValue && (h("q2-badge", { size: "large", theme: this.badgeTheme }, this.badgeValue)), this.hasError && this.type !== 'currency' && (h("div", { "test-id": "divIconError", onClick: this.onRefocusInput }, h("q2-icon", { type: "error", class: "icon-error", "test-id": "iconError" }))), this.iconRight && !this.formattedValueObject.suffix && (h("div", null, h("q2-icon", { type: this.iconRight, class: "icon-right" }))), hasInputRightSlot && h("slot", { name: "input-right" }))));
|
|
566
573
|
}
|
|
567
574
|
/* tslint:enable:cyclomatic-complexity */
|
|
568
575
|
/* tslint:disable:cyclomatic-complexity */
|
|
569
576
|
standardInputDOM() {
|
|
570
577
|
const { hasCustomDisplaySlot } = this;
|
|
571
578
|
const inputClasses = ['input-field'];
|
|
572
|
-
const {
|
|
579
|
+
const { ariaOwns, ariaHaspopup, ariaExpanded, ariaActivedescendant } = this.ariaAttributes;
|
|
573
580
|
if (hasCustomDisplaySlot)
|
|
574
581
|
inputClasses.push('sr');
|
|
575
|
-
return (h(Fragment, null, hasCustomDisplaySlot && (h("div", { class: "custom-display-container" }, h("slot", { name: "custom-display" }))), h("input", { class: inputClasses.join(' '), id: this.inputId, type: this.computedType, size: this.formattedValueObject.prefix ? 10 : undefined, max: this.max, min: this.min, step: this.step, "aria-current": this.current || undefined, "aria-describedby": this.inputDescribedBy, "aria-required": `${!this.optional}`, "aria-invalid": `${this.hasError}`, "aria-
|
|
582
|
+
return (h(Fragment, null, hasCustomDisplaySlot && (h("div", { class: "custom-display-container" }, h("slot", { name: "custom-display" }))), h("input", { class: inputClasses.join(' '), id: this.inputId, type: this.computedType, size: this.formattedValueObject.prefix ? 10 : undefined, max: this.max, min: this.min, step: this.step, "aria-current": this.current || undefined, "aria-describedby": this.inputDescribedBy, "aria-required": `${!this.optional}`, "aria-invalid": `${this.hasError}`, "aria-owns": ariaOwns, "aria-haspopup": ariaHaspopup, "aria-expanded": ariaExpanded, "aria-activedescendant": ariaActivedescendant, autocomplete: this.computedAutocomplete, autocapitalize: this.autocapitalize, autocorrect: this.autocorrect === 'on' ? 'on' : 'off', autofocus: this.autofocus, placeholder: (this.placeholder && loc(this.placeholder)) || undefined, role: this._role, "test-id": "inputField", readonly: !!this.readonly, disabled: !!this.disabled, onFocus: this.onInputFocus, onBlur: this.onInputBlur, onClick: this.onInputClick, onKeyDown: this.onInputKeydown, onInput: this.onInputInput, onPaste: this.onInputPaste, inputmode: this.inputMode })));
|
|
576
583
|
}
|
|
577
584
|
/* tslint:enable:cyclomatic-complexity */
|
|
578
585
|
pseudoInputDOM() {
|
|
579
586
|
const showPlaceholder = !this.value && !!this.placeholder;
|
|
580
|
-
const {
|
|
581
|
-
return (h("div", { class: "pseudo-input-container" }, h("button", { class: "input-field", type: "button", id: this.inputId, "aria-describedby": this.inputDescribedBy, "aria-invalid": `${this.hasError}`, "aria-
|
|
587
|
+
const { ariaOwns, ariaHaspopup, ariaExpanded, ariaActivedescendant } = this.ariaAttributes;
|
|
588
|
+
return (h("div", { class: "pseudo-input-container" }, h("button", { class: "input-field", type: "button", id: this.inputId, "aria-describedby": this.inputDescribedBy, "aria-invalid": `${this.hasError}`, "aria-owns": ariaOwns, "aria-haspopup": ariaHaspopup, "aria-expanded": ariaExpanded, "aria-activedescendant": ariaActivedescendant, role: (this.role && `${this.role}`) || 'textbox', disabled: !!this.disabled, "test-id": "q2InputInnerClearButton", onFocus: this.onInputFocus, onBlur: this.onInputBlur }, h("div", { class: "custom-display-container" }, h("slot", { name: "custom-display" }, h("span", { class: showPlaceholder ? 'placeholder-text' : '' }, showPlaceholder ? this.placeholder : this.value))))));
|
|
582
589
|
}
|
|
583
590
|
placeCursorAtEnd() {
|
|
584
591
|
const { inputField } = this;
|
|
@@ -1200,7 +1207,7 @@ export class Q2Input {
|
|
|
1200
1207
|
"references": {
|
|
1201
1208
|
"InputType": {
|
|
1202
1209
|
"location": "local",
|
|
1203
|
-
"path": "/workspace/workspace/
|
|
1210
|
+
"path": "/workspace/workspace/_Gitlab_tecton-production_master/packages/q2-tecton-elements/src/components/q2-input/q2-input.tsx",
|
|
1204
1211
|
"id": "src/components/q2-input/q2-input.tsx::InputType"
|
|
1205
1212
|
}
|
|
1206
1213
|
}
|
|
@@ -1215,6 +1222,27 @@ export class Q2Input {
|
|
|
1215
1222
|
"reflect": true,
|
|
1216
1223
|
"defaultValue": "'text'"
|
|
1217
1224
|
},
|
|
1225
|
+
"_role": {
|
|
1226
|
+
"type": "string",
|
|
1227
|
+
"mutable": true,
|
|
1228
|
+
"complexType": {
|
|
1229
|
+
"original": "'combobox' | undefined",
|
|
1230
|
+
"resolved": "\"combobox\"",
|
|
1231
|
+
"references": {}
|
|
1232
|
+
},
|
|
1233
|
+
"required": false,
|
|
1234
|
+
"optional": false,
|
|
1235
|
+
"docs": {
|
|
1236
|
+
"tags": [{
|
|
1237
|
+
"name": "private",
|
|
1238
|
+
"text": "Defaults to undefined\nWill assign role to combobox when used inside q2-select and q2-calendar."
|
|
1239
|
+
}],
|
|
1240
|
+
"text": "Allows for correct semantics of q2-input element when aria-expanded."
|
|
1241
|
+
},
|
|
1242
|
+
"attribute": "_role",
|
|
1243
|
+
"reflect": false,
|
|
1244
|
+
"defaultValue": "undefined"
|
|
1245
|
+
},
|
|
1218
1246
|
"value": {
|
|
1219
1247
|
"type": "string",
|
|
1220
1248
|
"mutable": true,
|
|
@@ -1235,7 +1263,7 @@ export class Q2Input {
|
|
|
1235
1263
|
"attribute": "value",
|
|
1236
1264
|
"reflect": false
|
|
1237
1265
|
},
|
|
1238
|
-
"
|
|
1266
|
+
"ariaOwns": {
|
|
1239
1267
|
"type": "string",
|
|
1240
1268
|
"mutable": false,
|
|
1241
1269
|
"complexType": {
|
|
@@ -1249,10 +1277,10 @@ export class Q2Input {
|
|
|
1249
1277
|
"tags": [],
|
|
1250
1278
|
"text": ""
|
|
1251
1279
|
},
|
|
1252
|
-
"attribute": "aria-
|
|
1280
|
+
"attribute": "aria-owns",
|
|
1253
1281
|
"reflect": false
|
|
1254
1282
|
},
|
|
1255
|
-
"
|
|
1283
|
+
"ariaControls": {
|
|
1256
1284
|
"type": "string",
|
|
1257
1285
|
"mutable": false,
|
|
1258
1286
|
"complexType": {
|
|
@@ -1266,7 +1294,7 @@ export class Q2Input {
|
|
|
1266
1294
|
"tags": [],
|
|
1267
1295
|
"text": ""
|
|
1268
1296
|
},
|
|
1269
|
-
"attribute": "aria-
|
|
1297
|
+
"attribute": "aria-controls",
|
|
1270
1298
|
"reflect": false
|
|
1271
1299
|
},
|
|
1272
1300
|
"ariaHaspopup": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-input.js","sourceRoot":"","sources":["../../../../src/components/q2-input/q2-input.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAK,EAEL,CAAC,EACD,KAAK,EACL,MAAM,EACN,QAAQ,EACR,MAAM,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,UAAU,EACV,oBAAoB,EACpB,QAAQ,EACR,GAAG,EACH,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,SAAS,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,iBAAiB,MAAM,oBAAoB,CAAC;AACnD,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,kBAAkB,MAAM,2BAA2B,CAAC;AAC3D,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,aAAa,EAAE,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,gBAAgB,MAAM,0BAA0B,CAAC;AAIxD,MAAM,YAAY,GAAG;IACjB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,MAAM;IACX,YAAY,EAAE,MAAM;IACpB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;IACZ,aAAa,EAAE,MAAM;CACxB,CAAC;AAKF,MAAM,OAAO,OAAO;;QAqMhB,yBAAoB,GAAmB,EAAE,CAAC;QAE1C,aAAQ,GAAY,QAAQ,EAAE,CAAC;QAkD/B,uBAAkB,GAAG,GAAG,EAAE;YACtB,uEAAuE;YACvE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAClD,CAAC,CAAC;QAoFF,SAAI,GAAG,UAAU,EAAE,CAAC;QAuQpB,sBAAsB;QAEtB,uBAAkB,GAAG,GAAG,EAAE;YACtB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QACvC,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAChB,IAAI,IAAI,CAAC,qBAAqB;gBAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5D,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAChB,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBACtC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,CAChC,IAAI,CAAC,sBAAsB;oBACvB,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBACzB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,CACtE,CAAC;YACN,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QACnC,CAAC,CAAC;QAEF,gBAAW,GAAG,GAAG,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;gBACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;gBACpD,IAAI,CAAC,MAAM,CAAC,IAAI,iBACZ,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,EACtC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,EAC7D,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,IAC7D,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EACjF,CAAC;YACP,CAAC;QACL,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,KAAiB,EAAE,EAAE;YACjC,KAAK,CAAC,eAAe,EAAE,CAAC;YAExB,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;gBAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YACjE,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAClG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;QAC5C,CAAC,CAAC;QAgEF,iBAAY,GAAG,CAAC,KAAqB,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC3B,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC1D,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;gBACtE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC,CAAC;QAmBF,yBAAoB,GAAG,GAAG,EAAE;YACxB,kFAAkF;YAClF,MAAM,cAAc,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;YAC7D,4GAA4G;YAC5G,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;YAC7F,IAAI,CAAC,KAAK,CAAC,IAAI,iBACX,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,EACtC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,EAC7D,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,IAC7D,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EACjF,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEF,kFAAkF;QAClF,wEAAwE;QACxE,0BAAqB,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC7C,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;gBAAE,OAAO;YAChE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;YACrC,IAAI,CAAC,uBAAuB,GAAG,YAAY,CAAC,cAAc,KAAK,YAAY,CAAC,YAAY,CAAC;QAC7F,CAAC,CAAC;QAEF,mBAAc,GAAG,CAAC,KAAoB,EAAE,EAAE;YACtC,MAAM,kBAAkB,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC9F,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;YAEtB,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;gBAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,IAAI,CAAC,qBAAqB,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,cAAc,EAAE,CAAC;YAC3F,IAAI,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;gBAC3E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;gBACpD,IAAI,CAAC,MAAM,CAAC,IAAI,iBACZ,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,EACtC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,EAC7D,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,IAC7D,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EACjF,CAAC;YACP,CAAC;QACL,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAChB,MAAM,WAAW,GAAG;gBAChB,KAAK,EAAE,EAAE;gBACT,cAAc,EAAE,EAAE;gBAClB,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB;aACnE,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC,CAAC;QAEF,mBAAc,GAAG,GAAG,EAAE;YAClB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACxB,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC,CAAC;;;;;;;;;wBA3uB2C,KAAK;;;;;;;;;;;;;;;;;;oCAuGO,KAAK;;;oBAgBnB,MAAM;;;;;;;;;;uBA2BrB,KAAK;8BACC,CAAC;;IAWnC,gCAAgC;IAEhC,iBAAiB;QACb,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAE3E,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE;YACtD,GAAG,EAAE,GAAG,EAAE,eAAC,OAAA,MAAA,MAAA,IAAI,CAAC,oBAAoB,0CAAE,cAAc,mCAAI,EAAE,CAAA,EAAA;SAC7D,CAAC,CAAC;QAEH,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;QACrE,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/D,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;IACrC,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;IACnC,CAAC;IAED,oBAAoB;;QAChB,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,MAAA,IAAI,CAAC,gBAAgB,0CAAE,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACjC,CAAC;IAOD,iBAAiB,CAAC,KAAa,EAAE,wBAAiC;QAC9D,MAAM,mBAAmB,GAAG;YACxB,QAAQ,EAAE,cAAc;YACxB,KAAK,EAAE,iBAAiB;YACxB,GAAG,EAAE,SAAS;YACd,GAAG,EAAE,SAAS;YACd,YAAY,EAAE,kBAAkB;YAChC,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,UAAU;YAChB,aAAa,EAAE,gBAAgB,CAAC,MAAM;SACzC,CAAC;QAEF,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;QAChG,CAAC;QAED,OAAO;YACH,KAAK;YACL,cAAc,EAAE,KAAK;YACrB,mBAAmB,EAAE,KAAK;YAC1B,wBAAwB,EAAE,CAAC;YAC3B,gBAAgB,EAAE,KAAK;SAC1B,CAAC;IACN,CAAC;IAED,IAAI,cAAc;QACd,OAAO;YACH,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC;YACrD,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC7C,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE;gBAClD,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,SAAS;gBACT,MAAM;gBACN,MAAM;gBACN,QAAQ;aACX,CAAC;YACF,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACxE,oBAAoB,EAAE,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC;SACxE,CAAC;IACN,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,QAAQ;;QACR,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,KAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,sBAAsB;QACtB,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;IACpC,CAAC;IAED,IAAI,qBAAqB;QACrB,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;IACrD,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,CACH,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;YACtD,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;YACnD,EAAE,CACL,CAAC;IACN,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAmB,cAAc,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAC1D,CAAC;IAID,IAAI,OAAO;QACP,OAAO,cAAc,IAAI,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,YAAY;QACZ,MAAM,WAAW,GAAa;YAC1B,UAAU;YACV,OAAO;YACP,KAAK;YACL,KAAK;YACL,cAAc;YACd,OAAO;YACP,SAAS;YACT,YAAY;YACZ,QAAQ;YACR,MAAM;YACN,aAAa;SAChB,CAAC;QAEF,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc;QACd,MAAM,UAAU,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK;YAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK;YAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO;YAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,gBAAgB;YAAE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,iBAAiB;YAAE,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS;YAAE,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3F,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;YAAE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;YAC1D,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,oBAAoB;YAAE,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAErE,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,YAAY;QACZ,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrE,OAAO,UAAU,CAAC;QACtB,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;QAC5D,CAAC;IACL,CAAC;IAED,IAAI,oBAAoB;QACpB,8BAA8B;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,oBAAoB,CAAC;QAC1D,OAAO,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;IACtC,CAAC;IAED,IAAI,gBAAgB;QAChB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;YACnC,OAAO;QACX,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;IAC7E,CAAC;IAED,IAAI,wBAAwB;QACxB,IAAI,SAAS,GAAG,WAAW,CAAC;QAC5B,IAAI,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,CAAC;YAC1C,SAAS,IAAI,kBAAkB,CAAC;QACpC,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,WAAW;QACX,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,eAAe;QACf,wDAAwD;QACxD,OAAO,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,GAAG,CAAC,+BAA+B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,4BAA4B;QACxB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAE3E,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,GAAG,EAAE;gBAClB,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;YACrE,CAAC,CAAC;YAEF,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpF,CAAC;IACL,CAAC;IAED,IAAI,SAAS;QACT,MAAM,YAAY,GAAG;YACjB,QAAQ,EAAE,SAAS;YACnB,GAAG,EAAE,SAAS;YACd,GAAG,EAAE,SAAS;YACd,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,SAAS;YACf,aAAa,EAAE,SAAS;SAC3B,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC;IAC/D,CAAC;IAED,6BAA6B;IAG7B,6BAA6B,CAAC,SAAmB;;QAC7C,MAAM,gBAAgB,GAAG,GAAG,CAAC;QAC7B,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,cAAc;gBAAE,OAAO;YAChC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;gBACjD,IAAI,CAAC,OAAO,GAAG,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;YAC9D,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,MAAA,IAAI,CAAC,cAAc,0CAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/B,CAAC;IACL,CAAC;IAGD,iBAAiB;QACb,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;IAGD,4BAA4B;QACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnD,CAAC;IAGD,YAAY;QACR,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;IAGD,sBAAsB;QAClB,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAGD,cAAc;QACV,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,eAAe;IACf;;;;;;;OAOG;IAEH,QAAQ,CAAC,KAAa;QAClB,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC5B,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,UAAU,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;QACzB,UAAU,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;OAOG;IAEH,UAAU;QACN,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,oCAAoC;IAEpC,kBAAkB,CAAC,KAAK;QACpB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO;QACzD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAGD,mBAAmB,CAAC,KAAkB;QAClC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAClE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACpC,CAAC;IACL,CAAC;IA0ED,sBAAsB,CAAC,KAAiB;QACpC,sDAAsD;QACtD,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;YACrC,OAAO;QACX,CAAC;QACD,qDAAqD;QACrD,IAAI,KAAK,CAAC,SAAS,KAAK,uBAAuB,IAAI,KAAK,CAAC,SAAS,KAAK,sBAAsB;YAAE,OAAO;QAEtG,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAC;QAC/C,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAC5C,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAErD,IAAI,cAAc,KAAK,IAAI;YAAE,OAAO;QAEpC,IAAI,SAAS,CAAC;QACd,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;YACtB,KAAK,uBAAuB;gBACxB,MAAM,iBAAiB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;gBAC1E,MAAM,kBAAkB,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAClE,SAAS,GAAG;oBACR,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC;oBACnE,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc;oBACpE,iBAAiB,EAAE,CAAC;oBACpB,eAAe,EAAE,CAAC;iBACrB,CAAC;gBACF,MAAM;YACV,KAAK,sBAAsB;gBACvB,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;gBAClE,MAAM,kBAAkB,GAAG,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACjE,SAAS,GAAG;oBACR,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC;oBACnE,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC;oBACxE,iBAAiB,EAAE,CAAC;oBACpB,eAAe,EAAE,CAAC;iBACrB,CAAC;gBACF,MAAM;YACV;gBACI,OAAO;QACf,CAAC;QAED,8DAA8D;QAC9D,MAAM,QAAQ,GAAG;YACb,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC;YAChD,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC;SACjD,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,MAAM,qBAAqB,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACnG,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,cAAc,CAAC;QACjF,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAC9B,iBAAiB,CAAC,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC,eAAe,EAC5E,CAAC,CACJ,CAAC;QAEF,KAAK,CAAC,KAAK,GAAG,iBAAiB,CAAC;QAChC,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAE9D,2FAA2F;QAC3F,IAAI,iBAAiB,KAAK,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACnF,CAAC;IACL,CAAC;IAWD,eAAe,CAAC,iBAAwC;QACpD,IACI,IAAI,CAAC,SAAS,KAAK,SAAS;YAC5B,iBAAiB,CAAC,gBAAgB,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS;YAC3D,iBAAiB,CAAC,gBAAgB,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,EAChG,CAAC;YACC,IAAI,CAAC,oBAAoB,GAAG,iBAAiB,CAAC;QAClD,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACxB,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CACtC,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAC/D,KAAK,CACR,CAAC;YACF,IAAI,CAAC,oBAAoB,GAAG,iBAAiB,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IA+DD,4BAA4B;IAE5B,MAAM;QACF,OAAO,CACH,4DAAK,KAAK,EAAE,IAAI,CAAC,cAAc;YAC3B,4DAAK,KAAK,EAAC,eAAe;gBACrB,QAAQ,CAAC,IAAI,CAAC;gBACd,IAAI,CAAC,QAAQ,EAAE,CACd;YACL,IAAI,CAAC,iBAAiB,EAAE;YACxB,WAAW,CAAC,IAAI,CAAC,CAChB,CACT,CAAC;IACN,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;QAEjD,OAAO,CACH,WAAK,KAAK,EAAC,WAAW;YACjB,oBAAoB,CAAC,gBAAgB,CAAC,MAAM;YAC5C,SAAS,IAAI,IAAI,SAAS,EAAE,CAC3B,CACT,CAAC;IACN,CAAC;IAED,0CAA0C;IAC1C,iBAAiB;QACb,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;QACrD,OAAO,CACH,WACI,KAAK,EAAC,iBAAiB,EACvB,QAAQ,EAAE,CAAC,CAAC,aACJ,gBAAgB;YAExB,WAAK,KAAK,EAAC,4BAA4B;gBAClC,IAAI,CAAC,oBAAoB,CAAC,MAAM,IAAI,CACjC,WAAK,KAAK,EAAC,cAAc,IAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAO,CACrE;gBACA,IAAI,CAAC,gBAAgB,IAAI,CACtB;oBACI,eACI,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAC3B,KAAK,EAAE,IAAI,CAAC,wBAAwB,GACtC,CACA,CACT;gBACA,gBAAgB,IAAI,YAAM,IAAI,EAAC,YAAY,GAAG;gBAC9C,IAAI,CAAC,iBAAiB,IAAI,WAAK,KAAK,EAAC,oBAAoB,GAAG;gBAC5D,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAC1C,sBACY,cAAc,EACtB,OAAO,EAAE,IAAI,CAAC,cAAc;oBAE5B,eACI,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,YAAY,aACV,WAAW,GACrB,CACA,CACT,CACC;YACL,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC9D,WAAK,KAAK,EAAC,6BAA6B;gBACnC,IAAI,CAAC,QAAQ,IAAI,CACd,cACI,KAAK,EAAC,WAAW,EACjB,SAAS,EAAE,GAAG,CAAC,4BAA4B,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,aAClD,aAAa,EACrB,OAAO,EAAE,IAAI,CAAC,YAAY;oBAE1B,eACI,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,YAAY,GACpB,CACG,CACZ;gBACA,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAoB,IAAI,CACpF,cACI,KAAK,EAAC,uBAAuB,aACrB,wBAAwB,EAChC,OAAO,EAAE,IAAI,CAAC,kBAAkB,IAE/B,IAAI,CAAC,oBAAoB,CACrB,CACZ;gBACA,IAAI,CAAC,oBAAoB,CAAC,MAAM,IAAI,CACjC,YAAM,KAAK,EAAC,cAAc,IAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAQ,CACvE;gBACA,IAAI,CAAC,UAAU,IAAI,CAChB,gBACI,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,IAAI,CAAC,UAAU,IAErB,IAAI,CAAC,UAAU,CACT,CACd;gBACA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAC1C,sBACY,cAAc,EACtB,OAAO,EAAE,IAAI,CAAC,cAAc;oBAE5B,eACI,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,YAAY,aACV,WAAW,GACrB,CACA,CACT;gBACA,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,IAAI,CACpD;oBACI,eACI,IAAI,EAAE,IAAI,CAAC,SAAS,EACpB,KAAK,EAAC,YAAY,GACpB,CACA,CACT;gBACA,iBAAiB,IAAI,YAAM,IAAI,EAAC,aAAa,GAAG,CAC/C,CACJ,CACT,CAAC;IACN,CAAC;IACD,yCAAyC;IAEzC,0CAA0C;IAC1C,gBAAgB;QACZ,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;QACtC,MAAM,YAAY,GAAG,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;QACzG,IAAI,oBAAoB;YAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,CACH,EAAC,QAAQ;YACJ,oBAAoB,IAAI,CACrB,WAAK,KAAK,EAAC,0BAA0B;gBACjC,YAAM,IAAI,EAAC,gBAAgB,GAAQ,CACjC,CACT;YACD,aACI,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAC7B,EAAE,EAAE,IAAI,CAAC,OAAO,EAChB,IAAI,EAAE,IAAI,CAAC,YAAY,EACvB,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EACvD,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,IAAI,EAAE,IAAI,CAAC,IAAI,kBACD,IAAI,CAAC,OAAO,IAAI,SAAS,sBACrB,IAAI,CAAC,gBAAgB,mBACxB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,kBACpB,GAAG,IAAI,CAAC,QAAQ,EAAE,mBACjB,YAAY,eAChB,QAAQ,mBACJ,YAAY,mBACZ,YAAY,2BACJ,oBAAoB,EAC3C,YAAY,EAAE,IAAI,CAAC,oBAAoB,EACvC,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,WAAW,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EACrD,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,WAAW,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,SAAS,EACrE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,aACxC,YAAY,EACpB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EACzB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EACzB,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,MAAM,EAAE,IAAI,CAAC,WAAW,EACxB,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,SAAS,EAAE,IAAI,CAAC,cAAc,EAC9B,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,SAAS,EAAE,IAAI,CAAC,SAAS,GAC3B,CACK,CACd,CAAC;IACN,CAAC;IACD,yCAAyC;IAEzC,cAAc;QACV,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QAC1D,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;QAEzG,OAAO,CACH,WAAK,KAAK,EAAC,wBAAwB;YAC/B,cACI,KAAK,EAAC,aAAa,EACnB,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,IAAI,CAAC,OAAO,sBACE,IAAI,CAAC,gBAAgB,kBACzB,GAAG,IAAI,CAAC,QAAQ,EAAE,mBACjB,YAAY,eAChB,QAAQ,mBACJ,YAAY,mBACZ,YAAY,2BACJ,oBAAoB,EAC3C,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,EAChD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,aACjB,yBAAyB,EACjC,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,MAAM,EAAE,IAAI,CAAC,WAAW;gBAExB,WAAK,KAAK,EAAC,0BAA0B;oBACjC,YAAM,IAAI,EAAC,gBAAgB;wBACvB,YAAM,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,IACjD,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAC7C,CACJ,CACL,CACD,CACP,CACT,CAAC;IACN,CAAC;IAED,gBAAgB;QACZ,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC5B,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;IAClF,CAAC;IAED,8BAA8B;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,MAAM,CAAC;QACxE,MAAM,kBAAkB,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO;YACH,gBAAgB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,eAAe;YACpE,WAAW,EAAE,eAAe;YAC5B,mBAAmB,EAAE,KAAK,IAAI,kBAAkB;YAChD,YAAY,EAAE,KAAK;SACtB,CAAC;IACN,CAAC;IAED,8BAA8B;;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC5B,MAAM,WAAW,GAAG,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,0CAAE,MAAM,mCAAI,CAAC,CAAC;QACnD,MAAM,gBAAgB,GAAG,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,mCAAI,WAAW,CAAC;QAEnE,OAAO;YACH,gBAAgB;YAChB,WAAW;YACX,mBAAmB,EAAE,WAAW;YAChC,YAAY,EAAE,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC;SACrD,CAAC;IACN,CAAC;IAED,iBAAiB,CAAC,UAAuB;QACrC,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;YAC9B,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC;YAE1E,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC3B,IAAI,mBAAmB,GAAG,WAAW,KAAK,CAAC,EAAE,CAAC;oBAC1C,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC,CAAC;gBACxE,CAAC;qBAAM,CAAC;oBACJ,MAAM,UAAU,GAAG,mBAAmB,GAAG,WAAW,CAAC;oBACrD,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,UAAU,EAAE,gBAAgB,GAAG,UAAU,CAAC,CAAC;gBAC1F,CAAC;YACL,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC3B,MAAM,UAAU,GAAG,WAAW,GAAG,mBAAmB,CAAC;gBACrD,4CAA4C;gBAC5C,MAAM,WAAW,GAAG,gBAAgB,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzE,KAAK,CAAC,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACtD,CAAC;QACL,CAAC;IACL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACJ","sourcesContent":["import {\n Component,\n Prop,\n Element,\n State,\n Event,\n EventEmitter,\n h,\n Watch,\n Listen,\n Fragment,\n Method,\n} from '@stencil/core';\nimport {\n createGuid,\n getAriaValueFromProp,\n labelDOM,\n loc,\n messagesDOM,\n setMessageHeight,\n handleAriaLabel,\n overrideFocus,\n isEventFromElement,\n isMobile,\n hasSlotContent,\n nextPaint,\n} from 'src/utils';\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 { 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};\n\nexport type InputType = keyof typeof inputTypeMap;\n\n@Component({ tag: 'q2-input', shadow: true, styleUrl: 'q2-input.scss' })\nexport class Q2Input {\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 * @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 }) 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 }) 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 }) 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 }) autofocus: boolean;\n\n /** The color of the badge when in the active state. */\n @Prop({ reflect: true }) badgeTheme: Q2Badge['theme'];\n\n /** Displays a `q2-badge` element on the right side of the input. */\n @Prop({ reflect: true }) 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 }) 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() current: 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false';\n\n /** Indicates the field cannot be focused or interacted with. */\n @Prop({ reflect: true }) 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() 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 }) 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 }) 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 above).\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 }) 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() hints: string[];\n\n /** Shows a left-aligned [q2-icon](https://tecton.q2developer.com/ui/q2-icon/) within the field. */\n @Prop({ reflect: true }) iconLeft: Q2Icon['type'];\n\n /** Shows a right-aligned [q2-icon](https://tecton.q2developer.com/ui/q2-icon/) within the field. */\n @Prop({ reflect: true }) 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 }) 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 }) 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 }) 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 }) 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 }) optional: boolean;\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 }) placeholder: string;\n\n /** Component will display as a clickable `<button>` styled to be identical to the default `<input>` field. */\n @Prop({ reflect: true }) 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 }) readonly: boolean;\n\n /** Indicates the element's intended purpose to assistive technology, according to the [WAI-ARIA Roles Model](https://www.w3.org/WAI/PF/aria/roles). */\n @Prop() 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 }) 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 }) showVisibilityToggle: boolean = false;\n\n /**\n * When present, it jumps the value in incremens 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 }) 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 }) textHidden: boolean;\n\n /** Specifies the field's expeted [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 }) type: InputType = 'text';\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 }) value: string;\n\n @Prop() ariaControls: string;\n @Prop() ariaOwns: string;\n @Prop() ariaHaspopup: string;\n @Prop() ariaExpanded: string;\n @Prop() ariaActivedescendant: string;\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true }) ariaLabel: string;\n\n @State() formattedValueObject: IFormatterValueObject;\n @State() hasFocus: boolean;\n @State() isSmall: boolean = false;\n @State() checkSlotCount: number = 0;\n\n @Element() hostElement: HTMLElement;\n\n resizeObserver: ResizeObserver;\n scheduledAfterRender: (() => void)[] = [];\n valueOnFocus: string;\n isMobile: boolean = isMobile();\n mutationObserver: MutationObserver;\n textSelectedForDeletion: boolean;\n\n /////// LIFECYCLE HOOKS ////////\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 if (this.textHidden === undefined) {\n this.textHidden = this.type === 'password';\n }\n\n this.manageClearableResizeObserver(this.clearable);\n }\n\n componentDidLoad() {\n if (!this.pseudo) {\n this.inputField.value = this.formattedValueObject.formattedValue;\n }\n\n if (this.autofocus === true) {\n this.inputField.focus();\n }\n\n overrideFocus(this.hostElement);\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true });\n this.mutationObserver = observer;\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n disconnectedCallback() {\n this.manageClearableResizeObserver();\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n onMutationObserved = () => {\n // Updating checkSlotCount to force re-render when slot content changes\n this.checkSlotCount = this.checkSlotCount + 1;\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 '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 get ariaAttributes() {\n return {\n ariaControls: getAriaValueFromProp(this.ariaControls),\n ariaOwns: getAriaValueFromProp(this.ariaOwns),\n ariaHaspopup: getAriaValueFromProp(this.ariaHaspopup, [\n 'true',\n 'false',\n 'menu',\n 'listbox',\n 'tree',\n 'grid',\n 'dialog',\n ]),\n ariaExpanded: getAriaValueFromProp(this.ariaExpanded, ['true', 'false']),\n ariaActivedescendant: getAriaValueFromProp(this.ariaActivedescendant),\n };\n }\n\n get hasCustomDisplaySlot() {\n return !!this.hostElement.querySelector('[slot=custom-display]');\n }\n\n get canClear() {\n return this.clearable && !!(this.inputField?.value || this.value);\n }\n\n get shouldCursorStartAtEnd() {\n return this.type === 'currency';\n }\n\n get shouldCursorStayAtEnd() {\n return this.isMobile && this.type === 'currency';\n }\n\n get hasError() {\n return Array.isArray(this.errors) && this.errors.length > 0;\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 inputField() {\n return this.hostElement.shadowRoot.querySelector<HTMLInputElement>('.input-field');\n }\n\n get showMessages() {\n return this.messages.length > 0 && !this.hideMessages;\n }\n\n guid = createGuid();\n\n get inputId() {\n return `input-guid-${this.guid}`;\n }\n\n get inputDescribedBy() {\n return this.showMessages ? `${this.inputId}-description` : undefined;\n }\n\n get hasInputLeftSlot() {\n return hasSlotContent(this.hostElement, 'input-left');\n }\n\n get hasInputRightSlot() {\n return hasSlotContent(this.hostElement, 'input-right');\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 ];\n\n return maskedTypes.includes(this.type);\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 get computedType() {\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 computedAutocomplete() {\n // force off for currency type\n if (this.type === 'currency') return 'transaction-amount';\n return this.autocomplete || 'off';\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 showIconSeparator(): boolean {\n return this.type === 'credit-card' || !!this.formattedValueObject.prefix;\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 stringValue(): string {\n return (this.value && String(this.value)) || '';\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 visibilityToggleText(): string {\n return loc(`tecton.element.input.toggle.${this.textHidden ? 'show' : 'hide'}`);\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 get inputMode() {\n const inputModeMap = {\n currency: 'numeric',\n ssn: 'numeric',\n tin: 'numeric',\n numeric: 'decimal',\n percentage: 'decimal',\n postal: 'numeric',\n date: 'numeric',\n 'credit-card': 'numeric',\n };\n\n return (this.type && inputModeMap[this.type]) || undefined;\n }\n\n //////// OBSERVERS //////////\n\n @Watch('clearable')\n manageClearableResizeObserver(clearable?: boolean) {\n const isSmallThreshold = 190;\n if (clearable) {\n if (this.resizeObserver) 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('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('value')\n valueObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('formattedValueObject')\n formattedValueObjectObserver() {\n this.formatted.emit(this.formattedValueObject);\n }\n\n @Watch('type')\n typeObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('formatModifier')\n formatModifierObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('hints')\n hintsObserver() {\n this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));\n }\n\n @Watch('errors')\n errorsObserver() {\n this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));\n }\n\n /// Methods ///\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 /**\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 clearValue() {\n if (!this.clearable) return;\n this.onClearInput();\n }\n\n ///////// HOST ELEMENT EVENTS //////\n @Listen('focus')\n onHostElementFocus(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.inputField.focus();\n }\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n event.stopPropagation();\n if (event.target === this.hostElement && !this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n\n ///////// Events /////////\n\n /**\n * Emitted when the field value is updated.\n * @legacyEvent\n */\n @Event() input: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field loses focus after the value has been changed.\n * @legacyEvent\n */\n @Event() 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 @Event() clear: EventEmitter<undefined>;\n\n /**\n * Emitted when the field value is formatted.\n */\n @Event() formatted: EventEmitter<IFormatterValueObject>;\n\n ///// ACTIONS ////////\n\n onToggleVisibility = () => {\n this.hostElement.dispatchEvent(new FocusEvent('focus'));\n this.textHidden = !this.textHidden;\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 this.shouldCursorStartAtEnd\n ? this.placeCursorAtEnd()\n : this.setCursorPosition(this.calculateCursorPositionOnFocus())\n );\n }\n this.hasFocus = true;\n setMessageHeight(this);\n this.valueOnFocus = this.value;\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 this.change.emit({\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 onInputInput = (event: InputEvent) => {\n event.stopPropagation();\n\n if (this.type === 'currency') this.handleCurrencyDeletion(event);\n const newFormattedValue = this.getFormattedValue((event.target as HTMLInputElement).value, false);\n this.handleDataInput(newFormattedValue);\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 (event.inputType !== 'deleteContentBackward' && event.inputType !== 'deleteContentForward') 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 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 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 this.input.emit({\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 this.clear.emit();\n }\n this.setCursorPosition(cursorPosition);\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 handleCurrencyKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Backspace' && event.key !== 'Delete') return;\n const inputElement = this.inputField;\n this.textSelectedForDeletion = inputElement.selectionStart !== inputElement.selectionEnd;\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 this.change.emit({\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 onClearInput = () => {\n const eventDetail = {\n value: '',\n formattedValue: '',\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n };\n this.input.emit(eventDetail);\n this.change.emit(eventDetail);\n this.clear.emit();\n this.inputField.focus();\n };\n\n onRefocusInput = () => {\n if (this.showMessages) {\n this.inputField.focus();\n setMessageHeight(this);\n }\n };\n\n /////// VIEW METHODS ///////\n\n render() {\n return (\n <div class={this.wrapperClasses}>\n <div class=\"label-wrapper\">\n {labelDOM(this)}\n {this.countDOM()}\n </div>\n {this.inputContainerDOM()}\n {messagesDOM(this)}\n </div>\n );\n }\n\n countDOM() {\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 /* tslint:disable:cyclomatic-complexity */\n inputContainerDOM() {\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.pseudoInputDOM() : this.standardInputDOM()}\n <div class=\"input-icons-container-right\">\n {this.canClear && (\n <q2-btn\n class=\"btn-clear\"\n ariaLabel={loc('tecton.element.input.clear', [this.label])}\n test-id=\"clearButton\"\n onClick={this.onClearInput}\n >\n <q2-icon\n type=\"close\"\n class=\"icon-clear\"\n />\n </q2-btn>\n )}\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 >\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 /* tslint:enable:cyclomatic-complexity */\n\n /* tslint:disable:cyclomatic-complexity */\n standardInputDOM() {\n const { hasCustomDisplaySlot } = this;\n const inputClasses = ['input-field'];\n const { ariaControls, ariaOwns, ariaHaspopup, ariaExpanded, 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 class={inputClasses.join(' ')}\n id={this.inputId}\n type={this.computedType}\n size={this.formattedValueObject.prefix ? 10 : 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-controls={ariaControls}\n aria-owns={ariaOwns}\n aria-haspopup={ariaHaspopup}\n aria-expanded={ariaExpanded}\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 role={(this.role && `${this.role}`) || undefined}\n test-id=\"inputField\"\n readonly={!!this.readonly}\n disabled={!!this.disabled}\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n onClick={this.onInputClick}\n onKeyDown={this.onInputKeydown}\n onInput={this.onInputInput}\n onPaste={this.onInputPaste}\n inputmode={this.inputMode}\n />\n </Fragment>\n );\n }\n /* tslint:enable:cyclomatic-complexity */\n\n pseudoInputDOM() {\n const showPlaceholder = !this.value && !!this.placeholder;\n const { ariaControls, 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-controls={ariaControls}\n aria-owns={ariaOwns}\n aria-haspopup={ariaHaspopup}\n aria-expanded={ariaExpanded}\n aria-activedescendant={ariaActivedescendant}\n role={(this.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 ? this.placeholder : this.value}\n </span>\n </slot>\n </div>\n </button>\n </div>\n );\n }\n\n placeCursorAtEnd() {\n const { inputField } = this;\n inputField.selectionStart = inputField.selectionEnd = inputField.value.length;\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 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: getSelection().toString().length > 0,\n };\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"]}
|
|
1
|
+
{"version":3,"file":"q2-input.js","sourceRoot":"","sources":["../../../../src/components/q2-input/q2-input.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n Element,\n State,\n Event,\n EventEmitter,\n h,\n Watch,\n Listen,\n Fragment,\n Method,\n} from '@stencil/core';\nimport {\n createGuid,\n getAriaValueFromProp,\n labelDOM,\n loc,\n messagesDOM,\n setMessageHeight,\n handleAriaLabel,\n overrideFocus,\n isEventFromElement,\n isMobile,\n hasSlotContent,\n nextPaint,\n} from 'src/utils';\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 { 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};\n\nexport type InputType = keyof typeof inputTypeMap;\n\n@Component({ tag: 'q2-input', shadow: true, styleUrl: 'q2-input.scss' })\nexport class Q2Input {\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 * @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 }) 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 }) 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 }) 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 }) autofocus: boolean;\n\n /** The color of the badge when in the active state. */\n @Prop({ reflect: true }) badgeTheme: Q2Badge['theme'];\n\n /** Displays a `q2-badge` element on the right side of the input. */\n @Prop({ reflect: true }) 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 }) 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() current: 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false';\n\n /** Indicates the field cannot be focused or interacted with. */\n @Prop({ reflect: true }) 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() 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 }) 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 }) 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 above).\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 }) 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() hints: string[];\n\n /** Shows a left-aligned [q2-icon](https://tecton.q2developer.com/ui/q2-icon/) within the field. */\n @Prop({ reflect: true }) iconLeft: Q2Icon['type'];\n\n /** Shows a right-aligned [q2-icon](https://tecton.q2developer.com/ui/q2-icon/) within the field. */\n @Prop({ reflect: true }) 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 }) 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 }) 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 }) 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 }) 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 }) optional: boolean;\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 }) placeholder: string;\n\n /** Component will display as a clickable `<button>` styled to be identical to the default `<input>` field. */\n @Prop({ reflect: true }) 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 }) readonly: boolean;\n\n /** Indicates the element's intended purpose to assistive technology, according to the [WAI-ARIA Roles Model](https://www.w3.org/WAI/PF/aria/roles). */\n @Prop() 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 }) 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 }) showVisibilityToggle: boolean = false;\n\n /**\n * When present, it jumps the value in incremens 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 }) 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 }) textHidden: boolean;\n\n /** Specifies the field's expeted [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 }) type: InputType = 'text';\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 }) _role: 'combobox' | undefined = undefined;\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 }) value: string;\n\n @Prop() ariaOwns: string;\n @Prop() ariaControls: string;\n @Prop() ariaHaspopup: string;\n @Prop() ariaExpanded: string;\n @Prop() ariaActivedescendant: string;\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true }) ariaLabel: string;\n\n @State() formattedValueObject: IFormatterValueObject;\n @State() hasFocus: boolean;\n @State() isSmall: boolean = false;\n @State() checkSlotCount: number = 0;\n\n @Element() hostElement: HTMLElement;\n\n resizeObserver: ResizeObserver;\n scheduledAfterRender: (() => void)[] = [];\n valueOnFocus: string;\n isMobile: boolean = isMobile();\n mutationObserver: MutationObserver;\n textSelectedForDeletion: boolean;\n\n /////// LIFECYCLE HOOKS ////////\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 if (this.textHidden === undefined) {\n this.textHidden = this.type === 'password';\n }\n\n this.manageClearableResizeObserver(this.clearable);\n }\n\n componentDidLoad() {\n if (!this.pseudo) {\n this.inputField.value = this.formattedValueObject.formattedValue;\n }\n\n if (this.autofocus === true) {\n this.inputField.focus();\n }\n\n overrideFocus(this.hostElement);\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true });\n this.mutationObserver = observer;\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n disconnectedCallback() {\n this.manageClearableResizeObserver();\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n onMutationObserved = () => {\n // Updating checkSlotCount to force re-render when slot content changes\n this.checkSlotCount = this.checkSlotCount + 1;\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 '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 get ariaAttributes() {\n return {\n ariaOwns: getAriaValueFromProp(this.ariaOwns),\n ariaHaspopup: getAriaValueFromProp(this.ariaHaspopup, [\n 'true',\n 'false',\n 'menu',\n 'listbox',\n 'tree',\n 'grid',\n 'dialog',\n ]),\n ariaExpanded: getAriaValueFromProp(this.ariaExpanded, ['true', 'false']),\n ariaActivedescendant: getAriaValueFromProp(this.ariaActivedescendant),\n };\n }\n\n get hasCustomDisplaySlot() {\n return !!this.hostElement.querySelector('[slot=custom-display]');\n }\n\n get clearClasses() {\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 shouldCursorStartAtEnd() {\n return this.type === 'currency';\n }\n\n get shouldCursorStayAtEnd() {\n return this.isMobile && this.type === 'currency';\n }\n\n get hasError() {\n return Array.isArray(this.errors) && this.errors.length > 0;\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 inputField() {\n return this.hostElement.shadowRoot.querySelector<HTMLInputElement>('.input-field');\n }\n\n get showMessages() {\n return this.messages.length > 0 && !this.hideMessages;\n }\n\n guid = createGuid();\n\n get inputId() {\n return `input-guid-${this.guid}`;\n }\n\n get inputDescribedBy() {\n return this.showMessages ? `${this.inputId}-description` : undefined;\n }\n\n get hasInputLeftSlot() {\n return hasSlotContent(this.hostElement, 'input-left');\n }\n\n get hasInputRightSlot() {\n return hasSlotContent(this.hostElement, 'input-right');\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 ];\n\n return maskedTypes.includes(this.type);\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 get computedType() {\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 computedAutocomplete() {\n // force off for currency type\n if (this.type === 'currency') return 'transaction-amount';\n return this.autocomplete || 'off';\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 showIconSeparator(): boolean {\n return this.type === 'credit-card' || !!this.formattedValueObject.prefix;\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 stringValue(): string {\n return (this.value && String(this.value)) || '';\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 visibilityToggleText(): string {\n return loc(`tecton.element.input.toggle.${this.textHidden ? 'show' : 'hide'}`);\n }\n\n get visibilityToggleAriaLabel(): string {\n return `tecton.element.input.toggleAriaLabel.${this.textHidden ? `show ${this.label}` : `hide ${this.label}`}`;\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 get inputMode() {\n const inputModeMap = {\n currency: 'numeric',\n ssn: 'numeric',\n tin: 'numeric',\n numeric: 'decimal',\n percentage: 'decimal',\n postal: 'numeric',\n date: 'numeric',\n 'credit-card': 'numeric',\n };\n\n return (this.type && inputModeMap[this.type]) || undefined;\n }\n\n //////// OBSERVERS //////////\n\n @Watch('clearable')\n manageClearableResizeObserver(clearable?: boolean) {\n const isSmallThreshold = 190;\n if (clearable) {\n if (this.resizeObserver) 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('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('value')\n valueObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('formattedValueObject')\n formattedValueObjectObserver() {\n this.formatted.emit(this.formattedValueObject);\n }\n\n @Watch('type')\n typeObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('formatModifier')\n formatModifierObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('hints')\n hintsObserver() {\n this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));\n }\n\n @Watch('errors')\n errorsObserver() {\n this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));\n }\n\n /// Methods ///\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 /**\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 clearValue() {\n if (!this.clearable) return;\n this.onClearInput();\n }\n\n ///////// HOST ELEMENT EVENTS //////\n @Listen('focus')\n onHostElementFocus(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.inputField.focus();\n }\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n event.stopPropagation();\n if (event.target === this.hostElement && !this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n\n ///////// Events /////////\n\n /**\n * Emitted when the field value is updated.\n * @legacyEvent\n */\n @Event() input: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field loses focus after the value has been changed.\n * @legacyEvent\n */\n @Event() 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 @Event() clear: EventEmitter<undefined>;\n\n /**\n * Emitted when the field value is formatted.\n */\n @Event() formatted: EventEmitter<IFormatterValueObject>;\n\n ///// ACTIONS ////////\n\n onToggleVisibility = () => {\n this.hostElement.dispatchEvent(new FocusEvent('focus'));\n this.textHidden = !this.textHidden;\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 this.shouldCursorStartAtEnd\n ? this.placeCursorAtEnd()\n : this.setCursorPosition(this.calculateCursorPositionOnFocus())\n );\n }\n this.hasFocus = true;\n setMessageHeight(this);\n this.valueOnFocus = this.value;\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 this.change.emit({\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 onInputInput = (event: InputEvent) => {\n event.stopPropagation();\n\n if (this.type === 'currency') this.handleCurrencyDeletion(event);\n const newFormattedValue = this.getFormattedValue((event.target as HTMLInputElement).value, false);\n this.handleDataInput(newFormattedValue);\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 (event.inputType !== 'deleteContentBackward' && event.inputType !== 'deleteContentForward') 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 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 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 this.input.emit({\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 this.clear.emit();\n }\n this.setCursorPosition(cursorPosition);\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 handleCurrencyKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Backspace' && event.key !== 'Delete') return;\n const inputElement = this.inputField;\n this.textSelectedForDeletion = inputElement.selectionStart !== inputElement.selectionEnd;\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 this.change.emit({\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 onClearInput = () => {\n const eventDetail = {\n value: '',\n formattedValue: '',\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n };\n this.input.emit(eventDetail);\n this.change.emit(eventDetail);\n this.clear.emit();\n this.inputField.focus();\n };\n\n onRefocusInput = () => {\n if (this.showMessages) {\n this.inputField.focus();\n setMessageHeight(this);\n }\n };\n\n /////// VIEW METHODS ///////\n\n render() {\n return (\n <div class={this.wrapperClasses}>\n <div class=\"label-wrapper\">\n {labelDOM(this)}\n {this.countDOM()}\n </div>\n {this.inputContainerDOM()}\n {messagesDOM(this)}\n </div>\n );\n }\n\n countDOM() {\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 /* tslint:disable:cyclomatic-complexity */\n inputContainerDOM() {\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.pseudoInputDOM() : this.standardInputDOM()}\n <div class=\"input-icons-container-right\">\n <q2-btn\n class={this.clearClasses.join(' ')}\n ariaLabel={loc('tecton.element.input.clear', [this.label])}\n test-id=\"clearButton\"\n onClick={this.onClearInput}\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={this.visibilityToggleAriaLabel}\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 /* tslint:enable:cyclomatic-complexity */\n\n /* tslint:disable:cyclomatic-complexity */\n standardInputDOM() {\n const { hasCustomDisplaySlot } = this;\n const inputClasses = ['input-field'];\n const { ariaOwns, ariaHaspopup, ariaExpanded, 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 class={inputClasses.join(' ')}\n id={this.inputId}\n type={this.computedType}\n size={this.formattedValueObject.prefix ? 10 : 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-expanded={ariaExpanded}\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 role={this._role}\n test-id=\"inputField\"\n readonly={!!this.readonly}\n disabled={!!this.disabled}\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n onClick={this.onInputClick}\n onKeyDown={this.onInputKeydown}\n onInput={this.onInputInput}\n onPaste={this.onInputPaste}\n inputmode={this.inputMode}\n />\n </Fragment>\n );\n }\n /* tslint:enable:cyclomatic-complexity */\n\n pseudoInputDOM() {\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 && `${this.role}`) || 'textbox'}\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 ? this.placeholder : this.value}\n </span>\n </slot>\n </div>\n </button>\n </div>\n );\n }\n\n placeCursorAtEnd() {\n const { inputField } = this;\n inputField.selectionStart = inputField.selectionEnd = inputField.value.length;\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 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: getSelection().toString().length > 0,\n };\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"]}
|
|
@@ -162,22 +162,17 @@ button {
|
|
|
162
162
|
box-shadow: var(--const-double-focus-ring);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
::slotted([slot]) {
|
|
166
|
-
--tct-avatar-height: var(--tct-item-avatar-height, var(--app-scale-7x, 35px));
|
|
167
|
-
--tct-avatar-width: var(--tct-item-avatar-width, var(--app-scale-7x, 35px));
|
|
168
|
-
}
|
|
169
|
-
|
|
170
165
|
.action {
|
|
166
|
+
--tct-btn-icon-height: var(--tct-item-action-icon-height, var(--app-scale-6x, 30px));
|
|
167
|
+
--tct-btn-icon-width: var(--tct-item-action-icon-width, var(--app-scale-6x, 30px));
|
|
168
|
+
--tct-icon-size: var(--tct-item-action-icon-size, var(--app-scale-6x, 30px));
|
|
169
|
+
--tct-radio-label-hidden-columns: 18px;
|
|
170
|
+
--tct-radio-label-margin-right: 0;
|
|
171
|
+
--tct-radio-margin: 0;
|
|
171
172
|
align-items: center;
|
|
172
173
|
display: flex;
|
|
173
174
|
grid-row: 1;
|
|
174
175
|
justify-content: center;
|
|
175
|
-
--tct-btn-icon-height: 28px;
|
|
176
|
-
--tct-btn-icon-width: 28px;
|
|
177
|
-
--tct-icon-size: 16px;
|
|
178
|
-
--tct-radio-label-hidden-columns: 18px;
|
|
179
|
-
--tct-radio-label-margin-right: 0;
|
|
180
|
-
--tct-radio-margin: 0;
|
|
181
176
|
}
|
|
182
177
|
.action-no-bullet {
|
|
183
178
|
grid-column: 2;
|
|
@@ -190,10 +185,15 @@ button {
|
|
|
190
185
|
}
|
|
191
186
|
|
|
192
187
|
.bullet {
|
|
188
|
+
--tct-avatar-fallback-height: var(--tct-item-avatar-height, var(--app-scale-7x, 35px));
|
|
189
|
+
--tct-avatar-fallback-width: var(--tct-item-avatar-width, var(--app-scale-7x, 35px));
|
|
190
|
+
--tct-avatar-height: var(--tct-item-avatar-height, var(--app-scale-7x, 35px));
|
|
191
|
+
--tct-avatar-width: var(--tct-item-avatar-width, var(--app-scale-7x, 35px));
|
|
193
192
|
grid-column: 1;
|
|
194
193
|
grid-row-start: 1;
|
|
195
194
|
grid-row-end: 3;
|
|
196
195
|
padding-top: var(--tct-item-bullet-padding-top, var(--app-scale-1x, 5px));
|
|
196
|
+
text-align: center;
|
|
197
197
|
}
|
|
198
198
|
.bullet-no-footer {
|
|
199
199
|
grid-row-end: 2;
|
|
@@ -132,15 +132,18 @@ button {
|
|
|
132
132
|
visibility: hidden;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
:host([bordered]:not([bordered=false])) ::slotted(q2-item:not(:last-child)),
|
|
136
|
-
|
|
135
|
+
:host([bordered]:not([bordered=false])) ::slotted(q2-item:not(:last-child)),
|
|
136
|
+
:host([bordered]:not([bordered=false])) .header {
|
|
137
|
+
border-style: var(--tct-list-item-border-style, solid);
|
|
138
|
+
border-width: var(--tct-list-item-border-width, 0 0 1px 0);
|
|
139
|
+
border-color: var(--tct-list-item-border-color, var(--t-gray-12, #d9d9d9));
|
|
137
140
|
}
|
|
138
141
|
|
|
139
142
|
.header {
|
|
140
|
-
--comp-default-header-padding:
|
|
143
|
+
--comp-default-header-padding: 0 var(--app-scale-4x, 20px);
|
|
141
144
|
display: flex;
|
|
142
145
|
gap: var(--app-scale-3x, 12px);
|
|
143
|
-
padding: var(--tct-list-header-padding, var(--
|
|
146
|
+
padding: var(--tct-list-header-padding, var(--comp-default-header-padding));
|
|
144
147
|
min-height: var(--tct-list-header-min-height, var(--t-list-header-min-height, 44px));
|
|
145
148
|
}
|
|
146
149
|
.header-spacebetween {
|
|
@@ -156,7 +159,7 @@ button {
|
|
|
156
159
|
width: 100%;
|
|
157
160
|
height: var(--tct-list-label-height, 44px);
|
|
158
161
|
line-height: var(--tct-list-label-line-height, 44px);
|
|
159
|
-
font-size: var(--tct-list-label-font-size,
|
|
162
|
+
font-size: var(--tct-list-label-font-size, var(--app-font-size, 14px));
|
|
160
163
|
font-weight: var(--tct-list-label-font-weight, 600);
|
|
161
164
|
color: var(--tct-list-label-font-color, var(--t-text, #4d4d4d));
|
|
162
165
|
}
|
|
@@ -659,7 +659,7 @@ export class Q2OptionList {
|
|
|
659
659
|
"references": {
|
|
660
660
|
"IOptionValue": {
|
|
661
661
|
"location": "local",
|
|
662
|
-
"path": "/workspace/workspace/
|
|
662
|
+
"path": "/workspace/workspace/_Gitlab_tecton-production_master/packages/q2-tecton-elements/src/components/q2-option-list/q2-option-list.tsx",
|
|
663
663
|
"id": "src/components/q2-option-list/q2-option-list.tsx::IOptionValue"
|
|
664
664
|
}
|
|
665
665
|
}
|
|
@@ -731,7 +731,7 @@ export class Q2OptionList {
|
|
|
731
731
|
"references": {
|
|
732
732
|
"IOptionValue": {
|
|
733
733
|
"location": "local",
|
|
734
|
-
"path": "/workspace/workspace/
|
|
734
|
+
"path": "/workspace/workspace/_Gitlab_tecton-production_master/packages/q2-tecton-elements/src/components/q2-option-list/q2-option-list.tsx",
|
|
735
735
|
"id": "src/components/q2-option-list/q2-option-list.tsx::IOptionValue"
|
|
736
736
|
}
|
|
737
737
|
}
|