q2-tecton-elements 1.47.1 → 1.47.3
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 +76 -35
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
- package/dist/cjs/{index-a93362ed.js → index-3f1498f7.js} +33 -1
- package/dist/cjs/index-3f1498f7.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +4 -2
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-list.cjs.entry.js +1 -1
- package/dist/cjs/q2-loc.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
- package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +101 -9
- 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-vertical.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
- package/dist/cjs/q2-tab-container.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-tooltip.cjs.entry.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +3 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-popover/q2-popover.css +19 -11
- package/dist/collection/components/q2-popover/q2-popover.js +77 -35
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-select/q2-select.js +109 -10
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/utils/index.js +31 -0
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/components/index2.js +32 -1
- package/dist/components/index2.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-popover2.js +76 -35
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-select2.js +102 -10
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/esm/click-elsewhere_2.entry.js +76 -35
- package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
- package/dist/esm/{index-3c5cd75e.js → index-58266aeb.js} +33 -2
- package/dist/esm/index-58266aeb.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-sheet.entry.js +1 -1
- package/dist/esm/q2-btn_2.entry.js +1 -1
- package/dist/esm/q2-calendar.entry.js +1 -1
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +1 -1
- package/dist/esm/q2-carousel.entry.js +1 -1
- package/dist/esm/q2-chart-area.entry.js +1 -1
- package/dist/esm/q2-chart-bar.entry.js +1 -1
- package/dist/esm/q2-chart-donut.entry.js +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +1 -1
- package/dist/esm/q2-checkbox.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +1 -1
- package/dist/esm/q2-detail.entry.js +1 -1
- package/dist/esm/q2-dropdown-item.entry.js +1 -1
- package/dist/esm/q2-dropdown.entry.js +4 -2
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +1 -1
- package/dist/esm/q2-icon.entry.js +1 -1
- package/dist/esm/q2-input.entry.js +1 -1
- package/dist/esm/q2-item.entry.js +1 -1
- package/dist/esm/q2-list.entry.js +1 -1
- package/dist/esm/q2-loc.entry.js +1 -1
- package/dist/esm/q2-message.entry.js +1 -1
- package/dist/esm/q2-month-picker.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +1 -1
- package/dist/esm/q2-option-list.entry.js +1 -1
- package/dist/esm/q2-pagination.entry.js +1 -1
- package/dist/esm/q2-pill.entry.js +1 -1
- package/dist/esm/q2-radio-group.entry.js +1 -1
- package/dist/esm/q2-radio.entry.js +1 -1
- package/dist/esm/q2-section.entry.js +1 -1
- package/dist/esm/q2-select.entry.js +101 -9
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +1 -1
- package/dist/esm/q2-stepper.entry.js +1 -1
- package/dist/esm/q2-tab-container.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-tooltip.entry.js +1 -1
- package/dist/jest.setup.js +33 -0
- package/dist/jest.setup.js.map +1 -0
- package/dist/q2-tecton-elements/{p-ccbc168f.entry.js → p-13698aac.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-fce6bc58.entry.js → p-161ed50c.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-4ef5222b.entry.js → p-2a13d460.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-46085a34.entry.js → p-3468d85d.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-c5ae8890.entry.js → p-36ae4077.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-0a211fb4.entry.js → p-3876d25b.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-08d5de5c.entry.js → p-3bc82292.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-6be0e333.entry.js → p-3d6e350e.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-e1c642fa.entry.js → p-40f1aa86.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-414c5d4e.entry.js +2 -0
- package/dist/q2-tecton-elements/p-414c5d4e.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-132005d2.entry.js → p-48ecbcc9.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-e786ba03.entry.js → p-4e58e187.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-a2caa101.entry.js → p-50476216.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-f450db0b.entry.js → p-534e9fba.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-5502457b.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-e9e66809.entry.js.map → p-5502457b.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-fe1f1ff4.entry.js → p-5d339d72.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-1d824cdf.entry.js → p-646214e2.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-cb8e7ebb.entry.js → p-6b803417.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-2de3e7b1.entry.js → p-72167021.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-74d67722.entry.js +2 -0
- package/dist/q2-tecton-elements/p-74d67722.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-85a7b1ab.entry.js → p-7c5ee4aa.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-7ea95f38.js +2 -0
- package/dist/q2-tecton-elements/p-7ea95f38.js.map +1 -0
- package/dist/q2-tecton-elements/{p-84fc61f5.entry.js → p-803a5897.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-432532fe.entry.js → p-871bad24.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-5214296a.entry.js → p-8764a131.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-d6c8d94d.entry.js → p-8a2b4f10.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-68276771.entry.js → p-97774780.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-81bb9436.entry.js → p-9c129294.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-3030d55f.entry.js → p-a9579fd1.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-def9be7b.entry.js → p-a99e1dc6.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-28b0de1c.entry.js → p-af3a383f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-07f40176.entry.js → p-b85b6bc1.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-59551fa4.entry.js → p-bb08bb1f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-63038a54.entry.js → p-c30c53dc.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-572805fc.entry.js → p-c782a1d6.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-ca17f7ca.entry.js → p-cd225920.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-044b8914.entry.js → p-cdfe6e9d.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-aa768c36.entry.js → p-d38edfbf.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-644d5b2e.entry.js → p-e08c6b8f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-4740e969.entry.js → p-e4241b1a.entry.js} +2 -2
- 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 +2 -2
- package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-dropdown-test.e2e.js +2 -14
- package/dist/test/elements/q2-dropdown-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-pagination-test.e2e.js +2 -1
- package/dist/test/elements/q2-pagination-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-pill-test.e2e.js +1 -1
- package/dist/test/elements/q2-pill-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-popover-test.e2e.js +1 -34
- package/dist/test/elements/q2-popover-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-popover-test.spec.js +896 -374
- package/dist/test/elements/q2-popover-test.spec.js.map +1 -1
- package/dist/test/elements/q2-select-test.e2e.js +1 -1
- package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-select-test.spec.js +552 -0
- package/dist/test/elements/q2-select-test.spec.js.map +1 -0
- package/dist/test/elements/q2-tag-test.e2e.js +1 -1
- package/dist/test/elements/q2-tag-test.e2e.js.map +1 -1
- package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +10 -0
- package/dist/types/components/q2-popover/q2-popover.d.ts +5 -3
- package/dist/types/components/q2-select/q2-select.d.ts +11 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/package.json +3 -3
- package/dist/cjs/index-a93362ed.js.map +0 -1
- package/dist/esm/index-3c5cd75e.js.map +0 -1
- package/dist/q2-tecton-elements/p-84190698.js +0 -2
- package/dist/q2-tecton-elements/p-84190698.js.map +0 -1
- package/dist/q2-tecton-elements/p-94acf745.entry.js +0 -2
- package/dist/q2-tecton-elements/p-94acf745.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-97e01336.entry.js +0 -2
- package/dist/q2-tecton-elements/p-97e01336.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-e9e66809.entry.js +0 -2
- /package/dist/q2-tecton-elements/{p-ccbc168f.entry.js.map → p-13698aac.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-fce6bc58.entry.js.map → p-161ed50c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-4ef5222b.entry.js.map → p-2a13d460.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-46085a34.entry.js.map → p-3468d85d.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-c5ae8890.entry.js.map → p-36ae4077.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-0a211fb4.entry.js.map → p-3876d25b.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-08d5de5c.entry.js.map → p-3bc82292.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-6be0e333.entry.js.map → p-3d6e350e.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-e1c642fa.entry.js.map → p-40f1aa86.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-132005d2.entry.js.map → p-48ecbcc9.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-e786ba03.entry.js.map → p-4e58e187.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-a2caa101.entry.js.map → p-50476216.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-f450db0b.entry.js.map → p-534e9fba.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-fe1f1ff4.entry.js.map → p-5d339d72.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-1d824cdf.entry.js.map → p-646214e2.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-cb8e7ebb.entry.js.map → p-6b803417.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-2de3e7b1.entry.js.map → p-72167021.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-85a7b1ab.entry.js.map → p-7c5ee4aa.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-84fc61f5.entry.js.map → p-803a5897.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-432532fe.entry.js.map → p-871bad24.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-5214296a.entry.js.map → p-8764a131.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-d6c8d94d.entry.js.map → p-8a2b4f10.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-68276771.entry.js.map → p-97774780.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-81bb9436.entry.js.map → p-9c129294.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-3030d55f.entry.js.map → p-a9579fd1.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-def9be7b.entry.js.map → p-a99e1dc6.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-28b0de1c.entry.js.map → p-af3a383f.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-07f40176.entry.js.map → p-b85b6bc1.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-59551fa4.entry.js.map → p-bb08bb1f.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-63038a54.entry.js.map → p-c30c53dc.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-572805fc.entry.js.map → p-c782a1d6.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-ca17f7ca.entry.js.map → p-cd225920.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-044b8914.entry.js.map → p-cdfe6e9d.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-aa768c36.entry.js.map → p-d38edfbf.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-644d5b2e.entry.js.map → p-e08c6b8f.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-4740e969.entry.js.map → p-e4241b1a.entry.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"q2-select-test.spec.js","sourceRoot":"","sources":["../../../test/elements/q2-select-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { SpecPage, newSpecPage } from '@stencil/core/testing';\nimport { Q2Select } from 'src/components/q2-select/q2-select';\nimport { Q2OptionList } from 'src/components/q2-option-list/q2-option-list';\nimport * as utils from 'src/utils';\n\n// Set up global screen object for testing\nconst mockScreen = {\n orientation: {\n type: 'portrait-primary',\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n },\n};\n(global as any).screen = mockScreen;\nObject.defineProperty(window, 'screen', {\n writable: true,\n value: mockScreen,\n});\n\n// Set up global visualViewport for testing\nconst mockVisualViewport = {\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n width: 800,\n height: 600,\n};\n(global as any).visualViewport = mockVisualViewport;\nObject.defineProperty(window, 'visualViewport', {\n value: mockVisualViewport,\n configurable: true,\n});\n\nconst samplePlatformDimensions = {\n scrollY: 0,\n innerHeight: 800,\n innerWidth: 600,\n outletOffset: 20,\n};\n\nconst sampleTectonWindow = {\n inMobileApp: false,\n noStrings: false,\n platformUrl: '',\n platformDimensions: samplePlatformDimensions,\n};\n\ndescribe('q2-select', () => {\n afterEach(() => {\n jest.restoreAllMocks();\n });\n\n let specPage: SpecPage;\n let specSelect: Q2Select;\n let specElement;\n let isMobileSpy: jest.SpyInstance;\n let handleAriaLabelSpy: jest.SpyInstance;\n let overrideFocusSpy: jest.SpyInstance;\n\n // Helper function to set screen orientation type\n const setOrientationType = (type: string) => {\n mockScreen.orientation.type = type;\n };\n\n // Helper function to set document.activeElement\n const setActiveElement = (element: Element | null) => {\n Object.defineProperty(document, 'activeElement', {\n value: element,\n writable: true,\n configurable: true,\n });\n };\n\n beforeEach(() => {\n isMobileSpy = jest.spyOn(utils, 'isMobile').mockReturnValue(false);\n handleAriaLabelSpy = jest.spyOn(utils, 'handleAriaLabel');\n overrideFocusSpy = jest.spyOn(utils, 'overrideFocus');\n\n setOrientationType('landscape-primary');\n\n (mockScreen.orientation.addEventListener as jest.Mock).mockClear();\n (mockScreen.orientation.removeEventListener as jest.Mock).mockClear();\n });\n\n describe('Props', () => {});\n describe('Events', () => {});\n describe('Component Lifecycle Events', () => {\n describe('disconnectedCallback', () => {\n it('calls disconnect() on mutationObserver', async () => {\n specSelect = new Q2Select();\n specSelect.mutationObserver = new MutationObserver(() => {});\n const disconnectSpy = jest.spyOn(specSelect.mutationObserver, 'disconnect');\n specSelect.disconnectedCallback();\n\n expect(disconnectSpy).toHaveBeenCalled();\n });\n\n it('sets mutationObserver to null', async () => {\n specSelect = new Q2Select();\n specSelect.mutationObserver = new MutationObserver(() => {});\n\n expect(specSelect.mutationObserver).not.toBeNull();\n\n specSelect.disconnectedCallback();\n\n expect(specSelect.mutationObserver).toBeNull();\n });\n\n it('calls destroyEventListeners', async () => {\n specSelect = new Q2Select();\n const destroyEventListenersSpy = jest.spyOn(specSelect, 'destroyEventListeners');\n specSelect.disconnectedCallback();\n\n expect(destroyEventListenersSpy).toHaveBeenCalled();\n });\n });\n\n describe('componentWillLoad', () => {\n it('calls handleAriaLabel() helper function', async () => {\n specSelect = new Q2Select();\n specSelect.componentWillLoad();\n\n expect(handleAriaLabelSpy).toHaveBeenCalled();\n });\n\n it('calls handleOrientationChange', async () => {\n specSelect = new Q2Select();\n const handleOrientationChangeSpy = jest.spyOn(specSelect, 'handleOrientationChange');\n specSelect.componentWillLoad();\n\n expect(handleOrientationChangeSpy).toHaveBeenCalled();\n });\n\n it('calls buildStructuredSelectedOptions', async () => {\n specSelect = new Q2Select();\n const buildOptionsSpy = jest.spyOn(specSelect, 'buildStructuredSelectedOptions');\n specSelect.componentWillLoad();\n\n expect(buildOptionsSpy).toHaveBeenCalled();\n });\n\n it('calls handleMultilineOptionsUpdate', async () => {\n specSelect = new Q2Select();\n const handleUpdateSpy = jest.spyOn(specSelect, 'handleMultilineOptionsUpdate');\n specSelect.componentWillLoad();\n\n expect(handleUpdateSpy).toHaveBeenCalled();\n });\n });\n describe('componentDidLoad', () => {\n it('calls initMutationObserver', async () => {\n specPage = await newSpecPage({\n components: [Q2Select, Q2OptionList],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n const initMutationObserverSpy = jest.spyOn(specSelect, 'initMutationObserver');\n specSelect.componentDidLoad();\n\n expect(initMutationObserverSpy).toHaveBeenCalled();\n });\n\n it('calls initEventListeners', async () => {\n specPage = await newSpecPage({\n components: [Q2Select],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n const initEventListenersSpy = jest.spyOn(specSelect, 'initEventListeners');\n specSelect.componentDidLoad();\n\n expect(initEventListenersSpy).toHaveBeenCalled();\n });\n\n it('calls overrideFocus helper', async () => {\n specPage = await newSpecPage({\n components: [Q2Select],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n specElement = specPage.root;\n specSelect.componentDidLoad();\n\n expect(overrideFocusSpy).toHaveBeenCalledWith(specElement);\n });\n\n it('setTimeout calls checkSelectedDisplay', async () => {\n specPage = await newSpecPage({\n components: [Q2Select],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n const checkSelectedDisplaySpy = jest.spyOn(specSelect, 'checkSelectedDisplay');\n\n jest.useFakeTimers();\n specSelect.componentDidLoad();\n jest.runAllTimers();\n\n expect(checkSelectedDisplaySpy).toHaveBeenCalled();\n jest.useRealTimers();\n });\n });\n describe('componentDidRender', () => {\n it('calls forEach on scheduledAfterRender', async () => {\n specSelect = new Q2Select();\n specSelect.scheduledAfterRender = [jest.fn()];\n const forEachSpy = jest.spyOn(specSelect.scheduledAfterRender, 'forEach');\n\n jest.useFakeTimers();\n specSelect.componentDidRender();\n jest.runAllTimers();\n\n expect(forEachSpy).toHaveBeenCalled();\n jest.useRealTimers();\n });\n });\n });\n describe('Listeners', () => {});\n describe('Public Methods API', () => {\n describe('Public Methods', () => {});\n describe('Test Methods', () => {});\n });\n describe('Watchers', () => {\n describe('openChanged', () => {\n it('calls addTouchEventListeners when isOpen is true', async () => {\n specSelect = new Q2Select();\n const addTouchEventListenersSpy = jest.spyOn(specSelect, 'addTouchEventListeners');\n specSelect.openChanged(true);\n expect(addTouchEventListenersSpy).toHaveBeenCalled();\n });\n it('calls removeTouchEventListeners when isOpen is false', async () => {\n specSelect = new Q2Select();\n const removeTouchEventListenersSpy = jest.spyOn(specSelect, 'removeTouchEventListeners');\n specSelect.openChanged(false);\n expect(removeTouchEventListenersSpy).toHaveBeenCalled();\n });\n });\n });\n describe('Local Methods', () => {\n describe('Getters', () => {\n describe('isModule', () => {\n beforeEach(() => {\n specSelect = new Q2Select();\n });\n it('returns false when window top matches window and platformDimensions is not defined', async () => {\n expect(window.top).toBe(window);\n expect(window.Tecton).toBeUndefined();\n expect(specSelect.isModule).toBe(false);\n });\n\n it('returns false when window top does not match window and platformDimensions is not defined', async () => {\n const windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n expect(window.top).not.toEqual(window);\n expect(window.Tecton).toBeUndefined();\n expect(specSelect.isModule).toBe(false);\n windowSpy.mockRestore();\n });\n\n it('returns false when window top matches window and platformDimensions is defined', async () => {\n window.Tecton = sampleTectonWindow;\n expect(window.top).toBe(window);\n expect(window.Tecton.platformDimensions).toBeTruthy();\n expect(specSelect.isModule).toBe(false);\n });\n\n it('returns true when window top does not match window and platformDimensions is defined', async () => {\n const windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n window.Tecton = sampleTectonWindow;\n expect(specSelect.isModule).toBe(true);\n windowSpy.mockRestore();\n });\n });\n });\n describe('Methods', () => {\n describe('addTouchEventListeners', () => {\n it('does not add touchstart listener to popover when isMobile is false', async () => {\n specSelect = new Q2Select();\n specSelect.popoverElement = document.createElement('div') as HTMLQ2PopoverElement;\n specSelect.popoverElement.addEventListener = jest.fn();\n isMobileSpy.mockReturnValue(false);\n specSelect.addTouchEventListeners();\n\n expect(specSelect.popoverElement.addEventListener).not.toHaveBeenCalledWith(\n 'touchstart',\n specSelect.handleTouchStart,\n { passive: true }\n );\n });\n\n it('adds touchstart listener when isMobile is true', async () => {\n specSelect = new Q2Select();\n specSelect.popoverElement = document.createElement('div') as HTMLQ2PopoverElement;\n specSelect.popoverElement.addEventListener = jest.fn();\n isMobileSpy.mockReturnValue(true);\n specSelect.addTouchEventListeners();\n\n expect(specSelect.popoverElement.addEventListener).toHaveBeenCalledWith(\n 'touchstart',\n specSelect.handleTouchStart,\n { passive: true }\n );\n });\n });\n\n describe('clickedElsewhere', () => {\n let mockTarget;\n let customEvent;\n beforeEach(async () => {\n specSelect = new Q2Select();\n mockTarget = { localName: 'click-elsewhere' } as unknown as EventTarget;\n customEvent = { target: mockTarget, stopPropagation: jest.fn() } as unknown as CustomEvent;\n specSelect = new Q2Select();\n specSelect.popoverElement = { open: true } as HTMLQ2PopoverElement;\n jest.spyOn(specSelect, 'innerInputField', 'get').mockReturnValue({ blur: jest.fn() } as any);\n });\n\n it('does nothing if target.localName is not \"click-elsewhere\"', async () => {\n mockTarget = { localName: 'div' } as unknown as EventTarget;\n customEvent = { target: mockTarget } as unknown as CustomEvent;\n\n specSelect.clickedElsewhere(customEvent);\n });\n\n it('calls stopPropagation', async () => {\n specSelect.clickedElsewhere(customEvent);\n\n expect(customEvent.stopPropagation).toHaveBeenCalled();\n });\n\n it('sets popoverElement.open to false', async () => {\n specSelect.clickedElsewhere(customEvent);\n\n expect(specSelect.popoverElement.open).toBe(false);\n });\n\n it('calls blur() on the innerInputField', async () => {\n specSelect.clickedElsewhere(customEvent);\n\n expect(specSelect.innerInputField.blur).toHaveBeenCalled();\n });\n });\n\n describe('destroyEventListeners', () => {\n let windowRemoveEventListenerSpy: jest.SpyInstance;\n beforeEach(() => {\n isMobileSpy.mockReturnValue(true);\n specSelect = new Q2Select();\n mockScreen.orientation.removeEventListener.mockClear();\n windowRemoveEventListenerSpy = jest.spyOn(window, 'removeEventListener');\n mockVisualViewport.removeEventListener.mockClear();\n });\n\n it('checks if isMobile', async () => {\n specSelect = new Q2Select();\n specSelect.destroyEventListeners();\n\n expect(isMobileSpy).toHaveBeenCalled();\n });\n\n describe('when in mobile environment', () => {\n it('calls removeEventListener on screen.orientation ', async () => {\n specSelect.destroyEventListeners();\n\n expect(mockScreen.orientation.removeEventListener).toHaveBeenCalledWith(\n 'change',\n specSelect.handleOrientationChange\n );\n });\n\n it('calls removeEventListener on window', async () => {\n specSelect.destroyEventListeners();\n\n expect(windowRemoveEventListenerSpy).toHaveBeenCalledWith(\n 'resize',\n specSelect.handleOrientationChange\n );\n });\n\n it('calls removeEventListener on visualViewport', async () => {\n mockVisualViewport.removeEventListener.mockClear();\n specSelect.destroyEventListeners();\n expect(mockVisualViewport.removeEventListener).toHaveBeenCalledWith(\n 'resize',\n specSelect.handleOrientationChange\n );\n });\n\n it('calls removeTouchEventListeners', async () => {\n const removeTouchEventListenersSpy = jest.spyOn(specSelect, 'removeTouchEventListeners');\n specSelect.destroyEventListeners();\n expect(removeTouchEventListenersSpy).toHaveBeenCalled();\n });\n });\n\n it('does NOT remove event listener when NOT mobile', async () => {\n isMobileSpy.mockReturnValue(false);\n specSelect = new Q2Select();\n specSelect.destroyEventListeners();\n\n expect(mockScreen.orientation.removeEventListener).not.toHaveBeenCalled();\n expect(windowRemoveEventListenerSpy).not.toHaveBeenCalled();\n expect(mockVisualViewport.removeEventListener).not.toHaveBeenCalled();\n });\n });\n\n describe('handleOrientationChange', () => {\n beforeEach(() => {\n isMobileSpy.mockReturnValue(true);\n specSelect = new Q2Select();\n });\n\n it('checks if isMobile', async () => {\n specSelect.handleOrientationChange();\n\n expect(isMobileSpy).toHaveBeenCalled();\n });\n\n describe('when searchable is initially true', () => {\n beforeEach(() => {\n specSelect.searchable = true;\n specSelect.originalSearchable = true;\n });\n\n it('sets \"searchable\" to false if in landscape orientation', async () => {\n setOrientationType('landscape-primary');\n specSelect.handleOrientationChange();\n\n expect(specSelect.searchable).toBe(false);\n });\n\n it('does nothing in portrait orientation', async () => {\n setOrientationType('portrait-primary');\n specSelect.handleOrientationChange();\n\n expect(specSelect.searchable).toBe(true);\n });\n\n it('restores searchable when returning to portrait', async () => {\n setOrientationType('landscape-primary');\n specSelect.handleOrientationChange();\n\n expect(specSelect.searchable).toBe(false);\n\n setOrientationType('portrait-primary');\n specSelect.handleOrientationChange();\n\n expect(specSelect.searchable).toBe(true);\n });\n });\n\n describe('when searchable is initially undefined/false', () => {\n it('does nothing', async () => {\n specSelect.originalSearchable = false;\n setOrientationType('landscape-primary');\n specSelect.handleOrientationChange();\n\n expect(specSelect.searchable).toBe(false);\n });\n });\n });\n\n describe('handleTouchStart', () => {\n it('does not focus the target if the activeElement is not the hostElement', async () => {\n specPage = await newSpecPage({\n components: [Q2Select],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n specElement = specPage.root;\n const element = document.createElement('div');\n const touchEvent = new TouchEvent('touchmove', {\n target: element,\n });\n const focusSpy = jest.spyOn(touchEvent.target as HTMLElement, 'focus');\n setActiveElement(element);\n specSelect.handleTouchStart(touchEvent);\n\n expect(document.activeElement).not.toBe(specElement);\n expect(focusSpy).not.toHaveBeenCalled();\n });\n\n it('does not call focus on the target if the target is the hostElement', async () => {\n specPage = await newSpecPage({\n components: [Q2Select],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n specElement = specPage.root;\n const touchEvent = new TouchEvent('touchmove', {\n target: specElement,\n });\n const focusSpy = jest.spyOn(touchEvent.target as HTMLElement, 'focus');\n setActiveElement(specElement);\n specSelect.handleTouchStart(touchEvent);\n\n expect(touchEvent.target).toBe(specElement);\n expect(focusSpy).not.toHaveBeenCalled();\n });\n\n describe('when hostElement is activeElement and target is not hostElement', () => {\n let targetFocusSpy: jest.SpyInstance;\n let targetElement: HTMLElement;\n beforeEach(async () => {\n specPage = await newSpecPage({\n components: [Q2Select],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n specElement = specPage.root;\n setActiveElement(specElement);\n specSelect.inputFocused = true;\n\n expect(document.activeElement).toBe(specElement);\n expect(specSelect.lastTouchWasInPopover).toBe(false);\n\n targetElement = specElement.shadowRoot.querySelector('q2-popover');\n const touchEvent = new TouchEvent('touchmove', {\n target: targetElement,\n });\n targetFocusSpy = jest.spyOn(targetElement, 'focus');\n expect(touchEvent.target).toBe(targetElement);\n specSelect.handleTouchStart(touchEvent);\n });\n\n it('sets inputFocused to false', async () => {\n expect(specSelect.inputFocused).toBe(false);\n });\n\n it('sets lastTouchWasInPopover to true', async () => {\n expect(specSelect.lastTouchWasInPopover).toBe(true);\n });\n\n it('calls focus on the target element', async () => {\n expect(targetFocusSpy).toHaveBeenCalled();\n });\n });\n });\n\n describe('initEventListeners', () => {\n let windowAddEventListenerSpy: jest.SpyInstance;\n beforeEach(() => {\n isMobileSpy.mockReturnValue(true);\n specSelect = new Q2Select();\n mockScreen.orientation.addEventListener.mockClear();\n windowAddEventListenerSpy = jest.spyOn(window, 'addEventListener');\n mockVisualViewport.addEventListener.mockClear();\n });\n\n it('checks if isMobile', async () => {\n specSelect = new Q2Select();\n specSelect.initEventListeners();\n\n expect(isMobileSpy).toHaveBeenCalled();\n });\n\n describe('when in mobile environment', () => {\n it('calls addEventListener on screen.orientation', async () => {\n specSelect.initEventListeners();\n\n expect(mockScreen.orientation.addEventListener).toHaveBeenCalledWith(\n 'change',\n specSelect.handleOrientationChange\n );\n });\n\n it('calls addEventListener on window', async () => {\n specSelect.initEventListeners();\n\n expect(windowAddEventListenerSpy).toHaveBeenCalledWith(\n 'resize',\n specSelect.handleOrientationChange\n );\n });\n\n it('calls addEventListener on visualViewport', async () => {\n specSelect.initEventListeners();\n\n expect(mockVisualViewport.addEventListener).toHaveBeenCalledWith(\n 'resize',\n specSelect.handleOrientationChange\n );\n });\n });\n\n it('does NOT add event listener when NOT mobile', async () => {\n isMobileSpy.mockReturnValue(false);\n specSelect = new Q2Select();\n specSelect.initEventListeners();\n\n expect(mockScreen.orientation.addEventListener).not.toHaveBeenCalled();\n expect(mockVisualViewport.addEventListener).not.toHaveBeenCalled();\n expect(windowAddEventListenerSpy).not.toHaveBeenCalled();\n });\n });\n });\n });\n describe('Render Methods', () => {});\n\n describe('Accessibility', () => {\n describe('Keyboard Controls', () => {\n let handleOptionListExternalKeydownSpy: jest.SpyInstance;\n let q2Select: HTMLQ2SelectElement;\n beforeEach(async () => {\n specPage = await newSpecPage({\n components: [Q2Select, Q2OptionList],\n html: `<q2-select></q2-select>`,\n });\n q2Select = specPage.root as HTMLQ2SelectElement;\n const q2SelectInstance = specPage.rootInstance as Q2Select;\n handleOptionListExternalKeydownSpy = jest.spyOn(q2SelectInstance, 'handleOptionListExternalKeydown');\n });\n afterEach(() => {\n handleOptionListExternalKeydownSpy.mockRestore();\n });\n it(\"'Tab' keypress not handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'Tab' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'Enter' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'Enter' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'ArrowUp' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'ArrowUp' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'ArrowDown' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'ArrowDown' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'Home' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'Home' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'End' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'End' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'PageUp' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'PageUp' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'PageDown' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'PageDown' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'Esc' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'Esc' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'Space' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'Space' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n });\n });\n});\n"]}
|
|
@@ -446,7 +446,7 @@ describe('q2-tag', () => {
|
|
|
446
446
|
await page.waitForChanges();
|
|
447
447
|
const snapshot = await page.accessibility.snapshot();
|
|
448
448
|
const button = snapshot.children[0];
|
|
449
|
-
const optionList = snapshot.children[1];
|
|
449
|
+
const optionList = snapshot.children[1].children[0];
|
|
450
450
|
expect(button.role).toEqual('combobox');
|
|
451
451
|
expect(optionList.role).toEqual('menu');
|
|
452
452
|
expect(optionList.children).toHaveLength(3);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-tag-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-tag-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\nimport { ActionSheetListCloseData } from 'q2-tecton-common/lib/utility/action-sheet';\nimport {\n setup,\n getFocusedAttribute,\n getFocusedTagName,\n getFocusedOptionValue,\n getActiveElementTestId,\n getListOfStyleCompilationIssues,\n} from '../helpers';\n\ndescribe('q2-tag', () => {\n let page: E2EPage;\n let tag: E2EElement;\n let optionList: E2EElement;\n let popover: E2EElement;\n let controlBtn: E2EElement;\n let allOptions: E2EElement[];\n let optionContainer: E2EElement;\n let clickSpy: EventSpy;\n let changeSpy: EventSpy;\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: `<q2-tag></q2-tag>` });\n expect(await getListOfStyleCompilationIssues(page, 'q2-tag')).toHaveLength(0);\n });\n\n it('does not render button or dropdown by default', async () => {\n page = await setup({\n html: `<q2-tag label=\"My tag\"></q2-tag>`,\n });\n optionList = await page.find('q2-tag >>> q2-option-list');\n controlBtn = await page.find('q2-tag >>> button');\n\n expect(controlBtn).toBeNull();\n expect(optionList).toBeNull();\n });\n\n describe('when options are provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n allOptions = await page.findAll('q2-option');\n optionList = await page.find('q2-tag >>> q2-option-list');\n popover = await page.find('q2-tag >>> q2-popover');\n optionContainer = await page.find('q2-tag >>> q2-option-list >>> .options');\n controlBtn = await page.find('q2-tag >>> button');\n clickSpy = await tag.spyOnEvent('click');\n changeSpy = await tag.spyOnEvent('change');\n });\n\n it('renders the tag-wrapper as a button', async () => {\n const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');\n expect(tagWrapper.nodeName).toEqual('BUTTON');\n });\n\n it('can select option via keyboard', async () => {\n const tagLabel = await page.find('q2-tag >>> .tag');\n\n expect(tagLabel.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n\n await optionContainer.press('ArrowDown');\n await page.waitForChanges();\n expect(await getFocusedOptionValue(page)).toEqual('2');\n await allOptions[1].press(' ');\n await page.waitForChanges();\n\n expect(tag).not.toHaveAttribute('open');\n expect(popover).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '2',\n });\n expect(changeSpy).not.toHaveReceivedEvent();\n });\n\n it('can select option via mouse', async () => {\n const tagLabel = await page.find('q2-tag >>> .tag');\n\n expect(tagLabel.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n\n await controlBtn.click();\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedTagName(page)).toEqual('Q2-TAG');\n\n await allOptions[1].click();\n await page.waitForChanges();\n\n // expect(tag).not.toHaveAttribute('open');\n // expect(popover).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '2',\n });\n expect(changeSpy).not.toHaveReceivedEvent();\n });\n\n describe('when keyboard is pressed', () => {\n it('opens list and focuses first option on ArrowDown', async () => {\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on ArrowUp', async () => {\n await controlBtn.press('ArrowUp');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('3');\n });\n\n it('opens list and focuses first option on Enter', async () => {\n await controlBtn.press('Enter');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses first option on Space', async () => {\n await controlBtn.press(' ');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on Home', async () => {\n await controlBtn.press('Home');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('1');\n });\n\n it('opens list and focuses last option on End', async () => {\n await controlBtn.press('End');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('3');\n });\n });\n });\n\n describe('when options are NOT provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n });\n it('renders the tag-wrapper as a div', async () => {\n const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');\n expect(tagWrapper.nodeName).toEqual('DIV');\n });\n it('zero is not rendered inside the click-elsewhere element (TCT-2433)', async () => {\n const clickElsewhere = await page.find('q2-tag >>> click-elsewhere');\n expect(await tag.getProperty('label')).toBe('My tag');\n expect(clickElsewhere.textContent.slice(-1)).not.toBe('0');\n });\n });\n\n describe('Props', () => {\n describe('hoist', () => {\n const runHoistSetup = async (\n action: string,\n hoistEnabled: boolean = false,\n defineShowActionSheet: boolean = false,\n isCancelled: boolean = false\n ) => {\n page = await setup({\n html: `\n <q2-tag ${hoistEnabled ? 'hoist' : ''} label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n\n if (defineShowActionSheet) {\n await page.evaluate(isCancelled => {\n const returnValue: ActionSheetListCloseData = isCancelled\n ? {\n type: 'cancel',\n value: '',\n values: [],\n }\n : {\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n type: 'confirm',\n };\n (this as Window).TectonElements.showActionSheet = async () => returnValue;\n }, isCancelled);\n }\n\n popover = await page.find('q2-tag >>> q2-popover');\n tag = await page.find('q2-tag');\n controlBtn = await page.find('q2-tag >>> button');\n clickSpy = await tag.spyOnEvent('click');\n\n expect(popover).not.toHaveAttribute('open');\n\n if (action === 'click') {\n await controlBtn.click();\n } else {\n await controlBtn.press(action);\n }\n await page.waitForChanges();\n };\n\n describe('when window.Tecton.useActionSheets is true', () => {\n it('defaults the hoist prop to true', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `);\n await page.waitForChanges();\n\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('hoist')).toEqual(true);\n });\n\n it('sets hoist to false when manually set to false', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-tag label=\"My tag\" hoist=\"false\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `);\n await page.waitForChanges();\n\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('hoist')).toEqual(false);\n });\n });\n\n describe('when false (default)', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', false, true);\n\n expect(popover).toHaveAttribute('open');\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n describe('when true', () => {\n describe('when window.TectonElements.showActionSheet is not defined', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', true, false);\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n describe('when window.TectonElements.showActionSheet is defined', () => {\n ['click', 'ArrowDown', 'Space', 'Enter'].forEach(action => {\n it(`calls showActionSheet on ${action}`, async () => {\n await runHoistSetup(action, true, true);\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n it(`calls showActionSheet on click and returns no data when cancelled`, async () => {\n await runHoistSetup('click', true, true, true);\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '',\n });\n });\n });\n });\n });\n\n describe('popoverMinHeight', () => {\n describe('when not provided', () => {\n it('defaults to 150 and passes that value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await tag.getProperty('popoverMinHeight')).toEqual(150);\n expect(await popover.getProperty('minHeight')).toEqual(150);\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" popover-min-height=\"300\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await popover.getProperty('minHeight')).toEqual(300);\n });\n });\n });\n\n describe('popoverDirection', () => {\n describe('when not provided', () => {\n it('does not default and does not pass a value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await tag.getProperty('popoverDirection')).toBeUndefined();\n expect(await popover.getProperty('direction')).toBeUndefined();\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" popover-direction=\"up\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await popover.getProperty('direction')).toEqual('up');\n });\n });\n });\n describe('popoverAlingment', () => {\n it('can be initally set to left, then assigned to right, then back to left', async () => {\n page = await setup({\n html: `\n <q2-tag popover-alignment=\"left\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('popoverAlignment')).toEqual('left');\n\n tag.setProperty('popoverAlignment', 'right');\n await page.waitForChanges();\n\n expect(await tag.getProperty('popoverAlignment')).toEqual('right');\n\n tag.setProperty('popoverAlignment', 'left');\n await page.waitForChanges();\n\n expect(await tag.getProperty('popoverAlignment')).toEqual('left');\n });\n it('will default to right via the prop inital value in q2-tag', async () => {\n page = await setup({\n html: `\n <q2-tag>\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('popoverAlignment')).toEqual('right');\n });\n });\n });\n\n describe('focus', () => {\n let page: E2EPage;\n let tag: E2EElement;\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n });\n\n it('focuses active option and opens the list when focus event is dispatched', async function (): Promise<void> {\n await tag.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n\n it('focuses active option and opens the list when element.focus() is called', async function (): Promise<void> {\n await tag.focus();\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-2161', () => {\n it('leaves the element when Tab is pressed', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n <button test-id=\"btn-next\">Test</button>\n `,\n });\n tag = await page.find('q2-tag');\n await tag.focus();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-control');\n\n await tag.press('Tab');\n await page.waitForChanges();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-next');\n });\n });\n });\n\n describe('Accessibility', () => {\n it(\"option-list should have a role of 'menu' and the options a role of 'menuoption'\", async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" open>\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n\n const snapshot = await page.accessibility.snapshot();\n const button = snapshot.children[0];\n const optionList = snapshot.children[1];\n\n expect(button.role).toEqual('combobox');\n expect(optionList.role).toEqual('menu');\n expect(optionList.children).toHaveLength(3);\n optionList.children.forEach(child => {\n expect(child.role).toEqual('menuitem');\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-tag-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-tag-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\nimport { ActionSheetListCloseData } from 'q2-tecton-common/lib/utility/action-sheet';\nimport {\n setup,\n getFocusedAttribute,\n getFocusedTagName,\n getFocusedOptionValue,\n getActiveElementTestId,\n getListOfStyleCompilationIssues,\n} from '../helpers';\n\ndescribe('q2-tag', () => {\n let page: E2EPage;\n let tag: E2EElement;\n let optionList: E2EElement;\n let popover: E2EElement;\n let controlBtn: E2EElement;\n let allOptions: E2EElement[];\n let optionContainer: E2EElement;\n let clickSpy: EventSpy;\n let changeSpy: EventSpy;\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: `<q2-tag></q2-tag>` });\n expect(await getListOfStyleCompilationIssues(page, 'q2-tag')).toHaveLength(0);\n });\n\n it('does not render button or dropdown by default', async () => {\n page = await setup({\n html: `<q2-tag label=\"My tag\"></q2-tag>`,\n });\n optionList = await page.find('q2-tag >>> q2-option-list');\n controlBtn = await page.find('q2-tag >>> button');\n\n expect(controlBtn).toBeNull();\n expect(optionList).toBeNull();\n });\n\n describe('when options are provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n allOptions = await page.findAll('q2-option');\n optionList = await page.find('q2-tag >>> q2-option-list');\n popover = await page.find('q2-tag >>> q2-popover');\n optionContainer = await page.find('q2-tag >>> q2-option-list >>> .options');\n controlBtn = await page.find('q2-tag >>> button');\n clickSpy = await tag.spyOnEvent('click');\n changeSpy = await tag.spyOnEvent('change');\n });\n\n it('renders the tag-wrapper as a button', async () => {\n const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');\n expect(tagWrapper.nodeName).toEqual('BUTTON');\n });\n\n it('can select option via keyboard', async () => {\n const tagLabel = await page.find('q2-tag >>> .tag');\n\n expect(tagLabel.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n\n await optionContainer.press('ArrowDown');\n await page.waitForChanges();\n expect(await getFocusedOptionValue(page)).toEqual('2');\n await allOptions[1].press(' ');\n await page.waitForChanges();\n\n expect(tag).not.toHaveAttribute('open');\n expect(popover).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '2',\n });\n expect(changeSpy).not.toHaveReceivedEvent();\n });\n\n it('can select option via mouse', async () => {\n const tagLabel = await page.find('q2-tag >>> .tag');\n\n expect(tagLabel.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n\n await controlBtn.click();\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedTagName(page)).toEqual('Q2-TAG');\n\n await allOptions[1].click();\n await page.waitForChanges();\n\n // expect(tag).not.toHaveAttribute('open');\n // expect(popover).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '2',\n });\n expect(changeSpy).not.toHaveReceivedEvent();\n });\n\n describe('when keyboard is pressed', () => {\n it('opens list and focuses first option on ArrowDown', async () => {\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on ArrowUp', async () => {\n await controlBtn.press('ArrowUp');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('3');\n });\n\n it('opens list and focuses first option on Enter', async () => {\n await controlBtn.press('Enter');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses first option on Space', async () => {\n await controlBtn.press(' ');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on Home', async () => {\n await controlBtn.press('Home');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('1');\n });\n\n it('opens list and focuses last option on End', async () => {\n await controlBtn.press('End');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('3');\n });\n });\n });\n\n describe('when options are NOT provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n });\n it('renders the tag-wrapper as a div', async () => {\n const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');\n expect(tagWrapper.nodeName).toEqual('DIV');\n });\n it('zero is not rendered inside the click-elsewhere element (TCT-2433)', async () => {\n const clickElsewhere = await page.find('q2-tag >>> click-elsewhere');\n expect(await tag.getProperty('label')).toBe('My tag');\n expect(clickElsewhere.textContent.slice(-1)).not.toBe('0');\n });\n });\n\n describe('Props', () => {\n describe('hoist', () => {\n const runHoistSetup = async (\n action: string,\n hoistEnabled: boolean = false,\n defineShowActionSheet: boolean = false,\n isCancelled: boolean = false\n ) => {\n page = await setup({\n html: `\n <q2-tag ${hoistEnabled ? 'hoist' : ''} label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n\n if (defineShowActionSheet) {\n await page.evaluate(isCancelled => {\n const returnValue: ActionSheetListCloseData = isCancelled\n ? {\n type: 'cancel',\n value: '',\n values: [],\n }\n : {\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n type: 'confirm',\n };\n (this as Window).TectonElements.showActionSheet = async () => returnValue;\n }, isCancelled);\n }\n\n popover = await page.find('q2-tag >>> q2-popover');\n tag = await page.find('q2-tag');\n controlBtn = await page.find('q2-tag >>> button');\n clickSpy = await tag.spyOnEvent('click');\n\n expect(popover).not.toHaveAttribute('open');\n\n if (action === 'click') {\n await controlBtn.click();\n } else {\n await controlBtn.press(action);\n }\n await page.waitForChanges();\n };\n\n describe('when window.Tecton.useActionSheets is true', () => {\n it('defaults the hoist prop to true', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `);\n await page.waitForChanges();\n\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('hoist')).toEqual(true);\n });\n\n it('sets hoist to false when manually set to false', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-tag label=\"My tag\" hoist=\"false\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `);\n await page.waitForChanges();\n\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('hoist')).toEqual(false);\n });\n });\n\n describe('when false (default)', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', false, true);\n\n expect(popover).toHaveAttribute('open');\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n describe('when true', () => {\n describe('when window.TectonElements.showActionSheet is not defined', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', true, false);\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n describe('when window.TectonElements.showActionSheet is defined', () => {\n ['click', 'ArrowDown', 'Space', 'Enter'].forEach(action => {\n it(`calls showActionSheet on ${action}`, async () => {\n await runHoistSetup(action, true, true);\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n it(`calls showActionSheet on click and returns no data when cancelled`, async () => {\n await runHoistSetup('click', true, true, true);\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '',\n });\n });\n });\n });\n });\n\n describe('popoverMinHeight', () => {\n describe('when not provided', () => {\n it('defaults to 150 and passes that value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await tag.getProperty('popoverMinHeight')).toEqual(150);\n expect(await popover.getProperty('minHeight')).toEqual(150);\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" popover-min-height=\"300\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await popover.getProperty('minHeight')).toEqual(300);\n });\n });\n });\n\n describe('popoverDirection', () => {\n describe('when not provided', () => {\n it('does not default and does not pass a value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await tag.getProperty('popoverDirection')).toBeUndefined();\n expect(await popover.getProperty('direction')).toBeUndefined();\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" popover-direction=\"up\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await popover.getProperty('direction')).toEqual('up');\n });\n });\n });\n describe('popoverAlingment', () => {\n it('can be initally set to left, then assigned to right, then back to left', async () => {\n page = await setup({\n html: `\n <q2-tag popover-alignment=\"left\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('popoverAlignment')).toEqual('left');\n\n tag.setProperty('popoverAlignment', 'right');\n await page.waitForChanges();\n\n expect(await tag.getProperty('popoverAlignment')).toEqual('right');\n\n tag.setProperty('popoverAlignment', 'left');\n await page.waitForChanges();\n\n expect(await tag.getProperty('popoverAlignment')).toEqual('left');\n });\n it('will default to right via the prop inital value in q2-tag', async () => {\n page = await setup({\n html: `\n <q2-tag>\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('popoverAlignment')).toEqual('right');\n });\n });\n });\n\n describe('focus', () => {\n let page: E2EPage;\n let tag: E2EElement;\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n });\n\n it('focuses active option and opens the list when focus event is dispatched', async function (): Promise<void> {\n await tag.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n\n it('focuses active option and opens the list when element.focus() is called', async function (): Promise<void> {\n await tag.focus();\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-2161', () => {\n it('leaves the element when Tab is pressed', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n <button test-id=\"btn-next\">Test</button>\n `,\n });\n tag = await page.find('q2-tag');\n await tag.focus();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-control');\n\n await tag.press('Tab');\n await page.waitForChanges();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-next');\n });\n });\n });\n\n describe('Accessibility', () => {\n it(\"option-list should have a role of 'menu' and the options a role of 'menuoption'\", async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" open>\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n\n const snapshot = await page.accessibility.snapshot();\n const button = snapshot.children[0];\n const optionList = snapshot.children[1].children[0];\n\n expect(button.role).toEqual('combobox');\n expect(optionList.role).toEqual('menu');\n expect(optionList.children).toHaveLength(3);\n optionList.children.forEach(child => {\n expect(child.role).toEqual('menuitem');\n });\n });\n });\n});\n"]}
|
|
@@ -31,8 +31,8 @@ export declare class Q2Popover implements ComponentInterface {
|
|
|
31
31
|
* The number of pixels to leave between the popover and the edge of the viewport
|
|
32
32
|
*/
|
|
33
33
|
displayBuffer: number;
|
|
34
|
-
/** remove when Popover API is supported in iOS */
|
|
35
34
|
orientationChanged: boolean;
|
|
35
|
+
componentWillLoad(): void;
|
|
36
36
|
componentDidLoad(): void;
|
|
37
37
|
disconnectedCallback(): void;
|
|
38
38
|
toggle(): Promise<void>;
|
|
@@ -42,14 +42,16 @@ export declare class Q2Popover implements ComponentInterface {
|
|
|
42
42
|
popoverStateHandler(event: CustomEvent<{
|
|
43
43
|
open: boolean;
|
|
44
44
|
}>): void;
|
|
45
|
-
get
|
|
45
|
+
get providedDirection(): 'up' | 'down' | undefined;
|
|
46
46
|
get isModule(): boolean;
|
|
47
|
+
get supportsPopoverAPI(): boolean;
|
|
47
48
|
handleMinHeight: () => void;
|
|
49
|
+
handlePopoverToggleEvent: (event: ToggleEvent) => void;
|
|
48
50
|
viewPortChanged: () => void;
|
|
49
51
|
viewPortOrientationChanged: () => void;
|
|
50
52
|
addViewportListeners(): void;
|
|
51
53
|
removeViewportListeners(): void;
|
|
52
|
-
|
|
54
|
+
setPopoverAPICSSProperties: () => Promise<void>;
|
|
53
55
|
setAbsoluteCSSProperties: () => Promise<void>;
|
|
54
56
|
clearCSSProperties(): void;
|
|
55
57
|
setDirectionAndShow(direction: 'up' | 'down'): void;
|
|
@@ -98,15 +98,18 @@ export declare class Q2Select implements ComponentInterface {
|
|
|
98
98
|
prioritizeSearch: boolean;
|
|
99
99
|
structuredSelectedOptions: IOptionValue[];
|
|
100
100
|
inputField?: HTMLQ2InputElement;
|
|
101
|
+
lastTouchWasInPopover: boolean;
|
|
101
102
|
optionList: HTMLQ2OptionListElement;
|
|
102
103
|
popoverElement?: HTMLQ2PopoverElement;
|
|
103
104
|
popoverTopContainer?: HTMLDivElement;
|
|
104
105
|
scheduledAfterRender: (() => void)[];
|
|
105
106
|
mutationObserver: MutationObserver;
|
|
107
|
+
originalSearchable: boolean;
|
|
106
108
|
componentWillLoad(): void;
|
|
107
109
|
componentDidLoad(): void;
|
|
108
110
|
componentDidRender(): void;
|
|
109
111
|
disconnectedCallback(): void;
|
|
112
|
+
get isModule(): boolean;
|
|
110
113
|
get innerInputField(): HTMLInputElement | HTMLButtonElement;
|
|
111
114
|
get innerInputContainer(): HTMLElement;
|
|
112
115
|
get badgeValue(): string;
|
|
@@ -186,10 +189,13 @@ export declare class Q2Select implements ComponentInterface {
|
|
|
186
189
|
handleFocusout(event: FocusEvent): void;
|
|
187
190
|
handleSelectedDisplay(event: CustomEvent): void;
|
|
188
191
|
executeActionSheet(event: MouseEvent | KeyboardEvent): Promise<void>;
|
|
192
|
+
addTouchEventListeners: () => void;
|
|
189
193
|
handleSelectionChanges(changeDetails: {
|
|
190
194
|
value?: string;
|
|
191
195
|
values?: IOptionValue[];
|
|
192
196
|
}): void;
|
|
197
|
+
initEventListeners: () => void;
|
|
198
|
+
initMutationObserver: () => void;
|
|
193
199
|
showSelectedOptions: () => void;
|
|
194
200
|
showAllOptions: () => void;
|
|
195
201
|
clearValue(): void;
|
|
@@ -202,9 +208,13 @@ export declare class Q2Select implements ComponentInterface {
|
|
|
202
208
|
}>) => void;
|
|
203
209
|
openDropdownWithoutActiveElement(): void;
|
|
204
210
|
closeDropdown(): void;
|
|
211
|
+
destroyEventListeners: () => void;
|
|
205
212
|
clearSearchText(): void;
|
|
206
213
|
toggleDropdown(): void;
|
|
207
214
|
focusInput(): void;
|
|
215
|
+
handleOptionListExternalKeydown(event: KeyboardEvent): void;
|
|
216
|
+
handleOrientationChange: () => void;
|
|
217
|
+
handleTouchStart: (event: TouchEvent) => void;
|
|
208
218
|
statusMessageTimer: NodeJS.Timeout;
|
|
209
219
|
setStatusMessage(message: any): void;
|
|
210
220
|
checkSelectedOptions(): void;
|
|
@@ -225,6 +235,7 @@ export declare class Q2Select implements ComponentInterface {
|
|
|
225
235
|
inputChangeHandler: (event: Event) => void;
|
|
226
236
|
clickedElsewhere: (event: CustomEvent) => void;
|
|
227
237
|
onCustomDisplayClick: (event: MouseEvent) => void;
|
|
238
|
+
removeTouchEventListeners: () => void;
|
|
228
239
|
renderCustomDisplay(): any;
|
|
229
240
|
render(): any;
|
|
230
241
|
optionsDropdown(): any;
|
|
@@ -13,6 +13,7 @@ import { Q2Radio } from "../components/q2-radio/q2-radio";
|
|
|
13
13
|
import { Q2Select } from "../components/q2-select/q2-select";
|
|
14
14
|
import { FormFieldTypes, IDict } from "../util";
|
|
15
15
|
export declare function isMobile(): boolean;
|
|
16
|
+
export declare function isInScrollableContainer(element: any): boolean;
|
|
16
17
|
export declare function isHostLosingFocus(event: FocusEvent, hostElement: HTMLElement): boolean;
|
|
17
18
|
export declare function isRelatedTargetWithinHost(event: FocusEvent, element: HTMLElement): boolean;
|
|
18
19
|
export declare function isEventFromElement(event: Event, element: HTMLElement): boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "q2-tecton-elements",
|
|
3
|
-
"version": "1.47.
|
|
3
|
+
"version": "1.47.3",
|
|
4
4
|
"description": "Q2 Tecton Custom Elements",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Q2 Tecton Team",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@stencil/core": "4.18.0",
|
|
36
|
-
"q2-tecton-common": "1.47.
|
|
36
|
+
"q2-tecton-common": "1.47.3",
|
|
37
37
|
"swiper": "8.4.4"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"typescript": "5.4.5",
|
|
55
55
|
"typescript-eslint": "^7.11.0"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "644ff01caff88f66bd06814a2558f535a5e1a7ca"
|
|
58
58
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"index-a93362ed.js","mappings":"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","names":["h"],"sources":["src/utils/index.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { Q2Btn } from 'src/components/q2-btn/q2-btn';\nimport { Q2Calendar } from 'src/components/q2-calendar/q2-calendar';\nimport { Q2Carousel } from 'src/components/q2-carousel/q2-carousel';\nimport { Q2Checkbox } from 'src/components/q2-checkbox/q2-checkbox';\nimport { Q2CheckboxGroup } from 'src/components/q2-checkbox-group/q2-checkbox-group';\nimport { Q2RadioGroup } from 'src/components/q2-radio-group/q2-radio-group';\nimport { Q2Dropdown } from 'src/components/q2-dropdown/q2-dropdown';\nimport { Q2DropdownItem } from 'src/components/q2-dropdown-item/q2-dropdown-item';\nimport { Q2EditableField } from 'src/components/q2-editable-field/q2-editable-field';\nimport { Q2Input } from 'src/components/q2-input/q2-input';\nimport { Q2Loading } from 'src/components/q2-loading/q2-loading';\nimport { Q2Radio } from 'src/components/q2-radio/q2-radio';\nimport { Q2Select } from 'src/components/q2-select/q2-select';\nimport { FormFieldTypes, IDict } from 'src/util';\n\nexport function isMobile(): boolean {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile|IEMobile|Windows Phone|Opera Mini/i.test(\n navigator.userAgent\n );\n}\n\nexport function isHostLosingFocus(event: FocusEvent, hostElement: HTMLElement) {\n const type = event.type;\n const focusInTypes = ['focusin', 'focus'];\n const isFocusIn = focusInTypes.includes(type);\n\n // on focusin: `target` is element losing focus, `relatedTarget` is element gaining focus\n // on focusout: `target` is element gaining focus, `relatedTarget` is element losing focus\n const elementGainingFocus = isFocusIn ? event.target : event.relatedTarget;\n\n const isElementNestedInHostElement = (element: HTMLElement) => {\n if (element === hostElement) return true;\n if (element.parentElement) {\n return isElementNestedInHostElement(element.parentElement);\n }\n return false;\n };\n\n if (!(elementGainingFocus instanceof HTMLElement)) return true;\n return !isElementNestedInHostElement(elementGainingFocus);\n}\n\nexport function isRelatedTargetWithinHost(event: FocusEvent, element: HTMLElement) {\n return event.relatedTarget !== element && !element.contains(event.relatedTarget as Node);\n}\n\nexport function isEventFromElement(event: Event, element: HTMLElement): boolean {\n return event.composedPath?.()[0] === element;\n}\n\nexport function overrideFocus(hostElement: HTMLElement) {\n hostElement.focus = () => hostElement?.dispatchEvent(new FocusEvent('focus', { bubbles: false }));\n}\n\nexport function isFirefox() {\n const userAgent = navigator.userAgent.toLowerCase();\n return userAgent.includes('firefox');\n}\n\nexport function isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n}\n\nexport function isSafari() {\n const userAgent = navigator.userAgent.toLowerCase();\n return userAgent.includes('safari') && !userAgent.includes('chrome');\n}\n\n/**\n * Returns the value of a prop if it is defined and included in the `validValues`\n * array. This is used primarily to prevent Vue wrappers from setting aria props\n * to \"Symbol()\" when the prop is not set.\n */\nexport function getAriaValueFromProp(prop: string, validValues?: string[]) {\n if (prop === undefined) return prop;\n if (!validValues) return prop !== 'Symbol()' ? prop : undefined;\n return validValues.includes(prop) || prop === '' ? prop : undefined;\n}\n\nlet guid: number = 1000;\nexport function createGuid(): number {\n return guid++;\n}\n\nexport function nextPaint(fn: (value?: unknown) => void) {\n requestAnimationFrame(() => {\n requestAnimationFrame(fn);\n });\n}\n\nexport function isVisible(element: HTMLElement) {\n return element.offsetWidth > 0 || element.offsetHeight > 0 || element.getClientRects().length > 0;\n}\n\nexport function waitForNextPaint() {\n return new Promise(resolve => nextPaint(resolve));\n}\n\nexport function capitalize(value: string) {\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n\nexport function pick(props: string[]): (obj: object) => object {\n return obj => {\n return props.reduce((memo, prop) => {\n return {\n ...memo,\n [prop]: obj[prop],\n };\n }, {});\n };\n}\n\nexport function loc(key: string, subs?: IDict<any> | string[]) {\n if (!key) return '';\n if (window.Tecton?.noStrings === true) {\n return key;\n }\n return window?.TectonElements?.loc(key, subs) ?? key;\n}\n\nexport function labelDOM(target: FormFieldTypes | Q2RadioGroup | Q2CheckboxGroup) {\n const { label, hideLabel, optional, readonly } = target;\n const labelClasses: string[] = ['input-label'];\n let helpText = '';\n\n let shouldHideLabel = hideLabel;\n if (!shouldHideLabel) {\n const labelSlotElements = target.hostElement.querySelectorAll<HTMLSlotElement>('[slot=\"label\"]');\n const hasSlotContent = labelSlotElements.length > 0;\n const hasLabel = !!label;\n\n shouldHideLabel = hasLabel || hasSlotContent ? false : true;\n }\n\n if (shouldHideLabel) labelClasses.push('sr');\n if (optional) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.optional')}</span>;\n }\n if (readonly) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.readonly')}</span>;\n labelClasses.push('readonly-field');\n }\n return (\n <label\n htmlFor={target.inputId}\n class={labelClasses.join(' ')}\n >\n <slot name=\"label\">\n {label ? loc(label) : undefined}\n {helpText}\n </slot>\n </label>\n );\n}\n\nexport function hasSlotContent(target: HTMLElement, slotName: string) {\n return target.querySelector(`[slot=\"${slotName}\"]`) !== null;\n}\n\nexport function handleAriaLabel(\n target:\n | Q2Input\n | Q2Select\n | Q2Radio\n | Q2Checkbox\n | Q2EditableField\n | Q2Dropdown\n | Q2DropdownItem\n | Q2Loading\n | Q2Carousel\n | Q2Calendar\n | Q2Btn\n) {\n const { ariaLabel } = target;\n if (!ariaLabel) return;\n\n // If empty ariaLabel prop is set to primitive symbol by framework wrapper, set ariaLabel to undefined and return\n const FW_WRAPPERS_EMPTY_PROP = Symbol().toString();\n if (ariaLabel === FW_WRAPPERS_EMPTY_PROP) {\n target.ariaLabel = undefined;\n return;\n }\n\n // If ariaLabel is set, set hideLabel to true and set label to ariaLabel\n if ('hideLabel' in target) target.hideLabel = true;\n target.label = loc(ariaLabel);\n target.ariaLabel = undefined;\n}\n\n/**\n * Handles when a prop has been renamed on a component without introducing a breaking change.\n */\nexport function handleRenamedProp(target: object, oldProp: string, newProp: string, removeOldProp?: boolean) {\n if (typeof target[oldProp] === 'undefined') return;\n\n // If old prop has value, aka set in component, call handleDeprecationWarning()\n if (target[oldProp]) {\n handleDeprecationWarning(target, oldProp, 'prop');\n }\n\n target[newProp] = target[oldProp];\n\n if (removeOldProp) {\n delete target[oldProp];\n }\n}\n\nexport function handleDeprecationWarning(\n target: object,\n deprecatedItemName: string,\n deprecatedItemType: 'function' | 'prop' | 'method' | 'event'\n) {\n if (window.location.hostname === 'localhost' || window.location.host === 'stack.q2developer.com') {\n if (target[deprecatedItemName] === 'undefined') return;\n\n const componentName = target.constructor.name.toLowerCase().slice(2);\n\n switch (deprecatedItemType) {\n case 'prop':\n if (deprecatedItemName === 'size' && componentName === 'btn') {\n console.warn(\n `The property of size in q2-btn should not be typeof number, or typeof string containing a number. This functionality will be deprecated in an upcoming release. Instead, please use the value 'undefined', or typeof string with any of the following values: \"small\" / \"medium\" / \"large\" `\n );\n } else {\n console.warn(\n `The property ${deprecatedItemName} in q2-${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n }\n break;\n\n case 'function':\n console.warn(\n `The function ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n case 'method':\n console.warn(\n `The method ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n case 'event':\n console.warn(\n `The event ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n default:\n console.error(\n `handleDeprecationWarning --> No type found for desired deprecation: ${deprecatedItemName} in q2-${componentName}: deprecatedItemType = ${deprecatedItemName}`\n );\n }\n }\n}\n\nexport function messagesDOM(target: FormFieldTypes) {\n const type = target.hasError ? 'danger' : 'info';\n\n return (\n <div class=\"messages-container\">\n <q2-message\n appearance=\"minimal\"\n description\n type={type}\n test-id=\"message\"\n >\n <ul id={target.inputDescribedBy}>\n {target.messages.map(message => (\n <li test-id=\"messageListItem\">{loc(message)}</li>\n ))}\n </ul>\n </q2-message>\n </div>\n );\n}\n\nexport function setMessageHeight(target: FormFieldTypes) {\n const messageContainer = (target.hostElement.shadowRoot as ShadowRoot).querySelector<HTMLDivElement>(\n '.messages-container'\n );\n const q2Message = messageContainer.querySelector('q2-message');\n nextPaint(() => {\n const height = target.showMessages && target.hasFocus ? q2Message.getBoundingClientRect().height : 0;\n\n if (messageContainer.style.getPropertyValue('height') === `${height}px`) return;\n\n if (height === 0) {\n q2Message.classList.add('invisible');\n messageContainer.style.removeProperty('height');\n } else {\n q2Message.classList.remove('invisible');\n messageContainer.style.setProperty('height', `${height}px`);\n }\n });\n}\n\nexport const resizeIframe = () => {\n return window.TectonElements?.resizeIframe?.();\n};\n\n// Handling color attribute (deprecated)\nexport const handleColor = (target: Q2Btn) => {\n if (!target.intent && ['primary', 'secondary'].includes(target.color)) {\n target.intent = `workflow-${target.color}` as HTMLQ2BtnElement['intent'];\n target.color = undefined;\n }\n};\n"],"version":3}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"index-3c5cd75e.js","mappings":";;SAgBgB,QAAQ;IACpB,OAAO,qFAAqF,CAAC,IAAI,CAC7F,SAAS,CAAC,SAAS,CACtB,CAAC;AACN,CAAC;SAEe,iBAAiB,CAAC,KAAiB,EAAE,WAAwB;IACzE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;;IAI9C,MAAM,mBAAmB,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;IAE3E,MAAM,4BAA4B,GAAG,CAAC,OAAoB;QACtD,IAAI,OAAO,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QACzC,IAAI,OAAO,CAAC,aAAa,EAAE;YACvB,OAAO,4BAA4B,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAC9D;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;IAEF,IAAI,EAAE,mBAAmB,YAAY,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,CAAC,4BAA4B,CAAC,mBAAmB,CAAC,CAAC;AAC9D,CAAC;SAEe,yBAAyB,CAAC,KAAiB,EAAE,OAAoB;IAC7E,OAAO,KAAK,CAAC,aAAa,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAqB,CAAC,CAAC;AAC7F,CAAC;SAEe,kBAAkB,CAAC,KAAY,EAAE,OAAoB;;IACjE,OAAO,CAAA,MAAA,KAAK,CAAC,YAAY,sDAAK,CAAC,CAAC,MAAK,OAAO,CAAC;AACjD,CAAC;SAEe,aAAa,CAAC,WAAwB;IAClD,WAAW,CAAC,KAAK,GAAG,MAAM,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACtG,CAAC;SAEe,SAAS;IACrB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IACpD,OAAO,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;SAEe,aAAa;IACzB,OAAO,cAAc,IAAI,MAAM,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC;AACpE,CAAC;AAOD;;;;;SAKgB,oBAAoB,CAAC,IAAY,EAAE,WAAsB;IACrE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;IAChE,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AACxE,CAAC;AAED,IAAI,IAAI,GAAW,IAAI,CAAC;SACR,UAAU;IACtB,OAAO,IAAI,EAAE,CAAC;AAClB,CAAC;SAEe,SAAS,CAAC,EAA6B;IACnD,qBAAqB,CAAC;QAClB,qBAAqB,CAAC,EAAE,CAAC,CAAC;KAC7B,CAAC,CAAC;AACP,CAAC;SAEe,SAAS,CAAC,OAAoB;IAC1C,OAAO,OAAO,CAAC,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACtG,CAAC;SAEe,gBAAgB;IAC5B,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,CAAC;SAiBe,GAAG,CAAC,GAAW,EAAE,IAA4B;;IACzD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,SAAS,MAAK,IAAI,EAAE;QACnC,OAAO,GAAG,CAAC;KACd;IACD,OAAO,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,0CAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,mCAAI,GAAG,CAAC;AACzD,CAAC;SAEe,QAAQ,CAAC,MAAuD;IAC5E,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACxD,MAAM,YAAY,GAAa,CAAC,aAAa,CAAC,CAAC;IAC/C,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,IAAI,eAAe,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,eAAe,EAAE;QAClB,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAkB,gBAAgB,CAAC,CAAC;QACjG,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC;QAEzB,eAAe,GAAG,QAAQ,IAAI,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC;KAC/D;IAED,IAAI,eAAe;QAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,QAAQ,EAAE;QACV,QAAQ,GAAG,YAAM,KAAK,EAAC,cAAc,IAAE,GAAG,CAAC,+BAA+B,CAAC,CAAQ,CAAC;KACvF;IACD,IAAI,QAAQ,EAAE;QACV,QAAQ,GAAG,YAAM,KAAK,EAAC,cAAc,IAAE,GAAG,CAAC,+BAA+B,CAAC,CAAQ,CAAC;QACpF,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACvC;IACD,QACI,aACI,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QAE7B,YAAM,IAAI,EAAC,OAAO;YACb,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS;YAC9B,QAAQ,CACN,CACH,EACV;AACN,CAAC;SAEe,cAAc,CAAC,MAAmB,EAAE,QAAgB;IAChE,OAAO,MAAM,CAAC,aAAa,CAAC,UAAU,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC;AACjE,CAAC;SAEe,eAAe,CAC3B,MAWW;IAEX,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,SAAS;QAAE,OAAO;;IAGvB,MAAM,sBAAsB,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;IACnD,IAAI,SAAS,KAAK,sBAAsB,EAAE;QACtC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,OAAO;KACV;;IAGD,IAAI,WAAW,IAAI,MAAM;QAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;IACnD,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AACjC,CAAC;AAED;;;SAGgB,iBAAiB,CAAC,MAAc,EAAE,OAAe,EAAE,OAAe,EAAE,aAAuB;IACvG,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW;QAAE,OAAO;;IAGnD,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE;QACjB,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KACrD;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,aAAa,EAAE;QACf,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;KAC1B;AACL,CAAC;SAEe,wBAAwB,CACpC,MAAc,EACd,kBAA0B,EAC1B,kBAA4D;IAE5D,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,uBAAuB,EAAE;QAC9F,IAAI,MAAM,CAAC,kBAAkB,CAAC,KAAK,WAAW;YAAE,OAAO;QAEvD,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAErE,QAAQ,kBAAkB;YACtB,KAAK,MAAM;gBACP,IAAI,kBAAkB,KAAK,MAAM,IAAI,aAAa,KAAK,KAAK,EAAE;oBAC1D,OAAO,CAAC,IAAI,CACR,6RAA6R,CAChS,CAAC;iBACL;qBAAM;oBACH,OAAO,CAAC,IAAI,CACR,gBAAgB,kBAAkB,UAAU,aAAa,oFAAoF,CAChJ,CAAC;iBACL;gBACD,MAAM;YAEV,KAAK,UAAU;gBACX,OAAO,CAAC,IAAI,CACR,gBAAgB,kBAAkB,OAAO,aAAa,oFAAoF,CAC7I,CAAC;gBACF,MAAM;YAEV,KAAK,QAAQ;gBACT,OAAO,CAAC,IAAI,CACR,cAAc,kBAAkB,OAAO,aAAa,oFAAoF,CAC3I,CAAC;gBACF,MAAM;YAEV,KAAK,OAAO;gBACR,OAAO,CAAC,IAAI,CACR,aAAa,kBAAkB,OAAO,aAAa,oFAAoF,CAC1I,CAAC;gBACF,MAAM;YAEV;gBACI,OAAO,CAAC,KAAK,CACT,uEAAuE,kBAAkB,UAAU,aAAa,0BAA0B,kBAAkB,EAAE,CACjK,CAAC;SACT;KACJ;AACL,CAAC;SAEe,WAAW,CAAC,MAAsB;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEjD,QACI,WAAK,KAAK,EAAC,oBAAoB;QAC3B,kBACI,UAAU,EAAC,SAAS,EACpB,WAAW,QACX,IAAI,EAAE,IAAI,aACF,SAAS;YAEjB,UAAI,EAAE,EAAE,MAAM,CAAC,gBAAgB,IAC1B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,KACxB,qBAAY,iBAAiB,IAAE,GAAG,CAAC,OAAO,CAAC,CAAM,CACpD,CAAC,CACD,CACI,CACX,EACR;AACN,CAAC;SAEe,gBAAgB,CAAC,MAAsB;IACnD,MAAM,gBAAgB,GAAI,MAAM,CAAC,WAAW,CAAC,UAAyB,CAAC,aAAa,CAChF,qBAAqB,CACxB,CAAC;IACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAC/D,SAAS,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAErG,IAAI,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,IAAI;YAAE,OAAO;QAEhF,IAAI,MAAM,KAAK,CAAC,EAAE;YACd,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACrC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;SACnD;aAAM;YACH,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACxC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC;SAC/D;KACJ,CAAC,CAAC;AACP,CAAC;MAEY,YAAY,GAAG;;IACxB,OAAO,MAAA,MAAA,MAAM,CAAC,cAAc,0CAAE,YAAY,kDAAI,CAAC;AACnD,EAAE;AAEF;MACa,WAAW,GAAG,CAAC,MAAa;IACrC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACnE,MAAM,CAAC,MAAM,GAAG,YAAY,MAAM,CAAC,KAAK,EAAgC,CAAC;QACzE,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;KAC5B;AACL;;;;","names":[],"sources":["src/utils/index.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { Q2Btn } from 'src/components/q2-btn/q2-btn';\nimport { Q2Calendar } from 'src/components/q2-calendar/q2-calendar';\nimport { Q2Carousel } from 'src/components/q2-carousel/q2-carousel';\nimport { Q2Checkbox } from 'src/components/q2-checkbox/q2-checkbox';\nimport { Q2CheckboxGroup } from 'src/components/q2-checkbox-group/q2-checkbox-group';\nimport { Q2RadioGroup } from 'src/components/q2-radio-group/q2-radio-group';\nimport { Q2Dropdown } from 'src/components/q2-dropdown/q2-dropdown';\nimport { Q2DropdownItem } from 'src/components/q2-dropdown-item/q2-dropdown-item';\nimport { Q2EditableField } from 'src/components/q2-editable-field/q2-editable-field';\nimport { Q2Input } from 'src/components/q2-input/q2-input';\nimport { Q2Loading } from 'src/components/q2-loading/q2-loading';\nimport { Q2Radio } from 'src/components/q2-radio/q2-radio';\nimport { Q2Select } from 'src/components/q2-select/q2-select';\nimport { FormFieldTypes, IDict } from 'src/util';\n\nexport function isMobile(): boolean {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile|IEMobile|Windows Phone|Opera Mini/i.test(\n navigator.userAgent\n );\n}\n\nexport function isHostLosingFocus(event: FocusEvent, hostElement: HTMLElement) {\n const type = event.type;\n const focusInTypes = ['focusin', 'focus'];\n const isFocusIn = focusInTypes.includes(type);\n\n // on focusin: `target` is element losing focus, `relatedTarget` is element gaining focus\n // on focusout: `target` is element gaining focus, `relatedTarget` is element losing focus\n const elementGainingFocus = isFocusIn ? event.target : event.relatedTarget;\n\n const isElementNestedInHostElement = (element: HTMLElement) => {\n if (element === hostElement) return true;\n if (element.parentElement) {\n return isElementNestedInHostElement(element.parentElement);\n }\n return false;\n };\n\n if (!(elementGainingFocus instanceof HTMLElement)) return true;\n return !isElementNestedInHostElement(elementGainingFocus);\n}\n\nexport function isRelatedTargetWithinHost(event: FocusEvent, element: HTMLElement) {\n return event.relatedTarget !== element && !element.contains(event.relatedTarget as Node);\n}\n\nexport function isEventFromElement(event: Event, element: HTMLElement): boolean {\n return event.composedPath?.()[0] === element;\n}\n\nexport function overrideFocus(hostElement: HTMLElement) {\n hostElement.focus = () => hostElement?.dispatchEvent(new FocusEvent('focus', { bubbles: false }));\n}\n\nexport function isFirefox() {\n const userAgent = navigator.userAgent.toLowerCase();\n return userAgent.includes('firefox');\n}\n\nexport function isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n}\n\nexport function isSafari() {\n const userAgent = navigator.userAgent.toLowerCase();\n return userAgent.includes('safari') && !userAgent.includes('chrome');\n}\n\n/**\n * Returns the value of a prop if it is defined and included in the `validValues`\n * array. This is used primarily to prevent Vue wrappers from setting aria props\n * to \"Symbol()\" when the prop is not set.\n */\nexport function getAriaValueFromProp(prop: string, validValues?: string[]) {\n if (prop === undefined) return prop;\n if (!validValues) return prop !== 'Symbol()' ? prop : undefined;\n return validValues.includes(prop) || prop === '' ? prop : undefined;\n}\n\nlet guid: number = 1000;\nexport function createGuid(): number {\n return guid++;\n}\n\nexport function nextPaint(fn: (value?: unknown) => void) {\n requestAnimationFrame(() => {\n requestAnimationFrame(fn);\n });\n}\n\nexport function isVisible(element: HTMLElement) {\n return element.offsetWidth > 0 || element.offsetHeight > 0 || element.getClientRects().length > 0;\n}\n\nexport function waitForNextPaint() {\n return new Promise(resolve => nextPaint(resolve));\n}\n\nexport function capitalize(value: string) {\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n\nexport function pick(props: string[]): (obj: object) => object {\n return obj => {\n return props.reduce((memo, prop) => {\n return {\n ...memo,\n [prop]: obj[prop],\n };\n }, {});\n };\n}\n\nexport function loc(key: string, subs?: IDict<any> | string[]) {\n if (!key) return '';\n if (window.Tecton?.noStrings === true) {\n return key;\n }\n return window?.TectonElements?.loc(key, subs) ?? key;\n}\n\nexport function labelDOM(target: FormFieldTypes | Q2RadioGroup | Q2CheckboxGroup) {\n const { label, hideLabel, optional, readonly } = target;\n const labelClasses: string[] = ['input-label'];\n let helpText = '';\n\n let shouldHideLabel = hideLabel;\n if (!shouldHideLabel) {\n const labelSlotElements = target.hostElement.querySelectorAll<HTMLSlotElement>('[slot=\"label\"]');\n const hasSlotContent = labelSlotElements.length > 0;\n const hasLabel = !!label;\n\n shouldHideLabel = hasLabel || hasSlotContent ? false : true;\n }\n\n if (shouldHideLabel) labelClasses.push('sr');\n if (optional) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.optional')}</span>;\n }\n if (readonly) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.readonly')}</span>;\n labelClasses.push('readonly-field');\n }\n return (\n <label\n htmlFor={target.inputId}\n class={labelClasses.join(' ')}\n >\n <slot name=\"label\">\n {label ? loc(label) : undefined}\n {helpText}\n </slot>\n </label>\n );\n}\n\nexport function hasSlotContent(target: HTMLElement, slotName: string) {\n return target.querySelector(`[slot=\"${slotName}\"]`) !== null;\n}\n\nexport function handleAriaLabel(\n target:\n | Q2Input\n | Q2Select\n | Q2Radio\n | Q2Checkbox\n | Q2EditableField\n | Q2Dropdown\n | Q2DropdownItem\n | Q2Loading\n | Q2Carousel\n | Q2Calendar\n | Q2Btn\n) {\n const { ariaLabel } = target;\n if (!ariaLabel) return;\n\n // If empty ariaLabel prop is set to primitive symbol by framework wrapper, set ariaLabel to undefined and return\n const FW_WRAPPERS_EMPTY_PROP = Symbol().toString();\n if (ariaLabel === FW_WRAPPERS_EMPTY_PROP) {\n target.ariaLabel = undefined;\n return;\n }\n\n // If ariaLabel is set, set hideLabel to true and set label to ariaLabel\n if ('hideLabel' in target) target.hideLabel = true;\n target.label = loc(ariaLabel);\n target.ariaLabel = undefined;\n}\n\n/**\n * Handles when a prop has been renamed on a component without introducing a breaking change.\n */\nexport function handleRenamedProp(target: object, oldProp: string, newProp: string, removeOldProp?: boolean) {\n if (typeof target[oldProp] === 'undefined') return;\n\n // If old prop has value, aka set in component, call handleDeprecationWarning()\n if (target[oldProp]) {\n handleDeprecationWarning(target, oldProp, 'prop');\n }\n\n target[newProp] = target[oldProp];\n\n if (removeOldProp) {\n delete target[oldProp];\n }\n}\n\nexport function handleDeprecationWarning(\n target: object,\n deprecatedItemName: string,\n deprecatedItemType: 'function' | 'prop' | 'method' | 'event'\n) {\n if (window.location.hostname === 'localhost' || window.location.host === 'stack.q2developer.com') {\n if (target[deprecatedItemName] === 'undefined') return;\n\n const componentName = target.constructor.name.toLowerCase().slice(2);\n\n switch (deprecatedItemType) {\n case 'prop':\n if (deprecatedItemName === 'size' && componentName === 'btn') {\n console.warn(\n `The property of size in q2-btn should not be typeof number, or typeof string containing a number. This functionality will be deprecated in an upcoming release. Instead, please use the value 'undefined', or typeof string with any of the following values: \"small\" / \"medium\" / \"large\" `\n );\n } else {\n console.warn(\n `The property ${deprecatedItemName} in q2-${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n }\n break;\n\n case 'function':\n console.warn(\n `The function ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n case 'method':\n console.warn(\n `The method ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n case 'event':\n console.warn(\n `The event ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n default:\n console.error(\n `handleDeprecationWarning --> No type found for desired deprecation: ${deprecatedItemName} in q2-${componentName}: deprecatedItemType = ${deprecatedItemName}`\n );\n }\n }\n}\n\nexport function messagesDOM(target: FormFieldTypes) {\n const type = target.hasError ? 'danger' : 'info';\n\n return (\n <div class=\"messages-container\">\n <q2-message\n appearance=\"minimal\"\n description\n type={type}\n test-id=\"message\"\n >\n <ul id={target.inputDescribedBy}>\n {target.messages.map(message => (\n <li test-id=\"messageListItem\">{loc(message)}</li>\n ))}\n </ul>\n </q2-message>\n </div>\n );\n}\n\nexport function setMessageHeight(target: FormFieldTypes) {\n const messageContainer = (target.hostElement.shadowRoot as ShadowRoot).querySelector<HTMLDivElement>(\n '.messages-container'\n );\n const q2Message = messageContainer.querySelector('q2-message');\n nextPaint(() => {\n const height = target.showMessages && target.hasFocus ? q2Message.getBoundingClientRect().height : 0;\n\n if (messageContainer.style.getPropertyValue('height') === `${height}px`) return;\n\n if (height === 0) {\n q2Message.classList.add('invisible');\n messageContainer.style.removeProperty('height');\n } else {\n q2Message.classList.remove('invisible');\n messageContainer.style.setProperty('height', `${height}px`);\n }\n });\n}\n\nexport const resizeIframe = () => {\n return window.TectonElements?.resizeIframe?.();\n};\n\n// Handling color attribute (deprecated)\nexport const handleColor = (target: Q2Btn) => {\n if (!target.intent && ['primary', 'secondary'].includes(target.color)) {\n target.intent = `workflow-${target.color}` as HTMLQ2BtnElement['intent'];\n target.color = undefined;\n }\n};\n"],"version":3}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./p-a5f18e27.js";function n(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile|IEMobile|Windows Phone|Opera Mini/i.test(navigator.userAgent)}function i(e,n){const i=e.type;const o=["focusin","focus"];const t=o.includes(i);const r=t?e.target:e.relatedTarget;const a=e=>{if(e===n)return true;if(e.parentElement){return a(e.parentElement)}return false};if(!(r instanceof HTMLElement))return true;return!a(r)}function o(e,n){return e.relatedTarget!==n&&!n.contains(e.relatedTarget)}function t(e,n){var i;return((i=e.composedPath)===null||i===void 0?void 0:i.call(e)[0])===n}function r(e){e.focus=()=>e===null||e===void 0?void 0:e.dispatchEvent(new FocusEvent("focus",{bubbles:false}))}function a(){const e=navigator.userAgent.toLowerCase();return e.includes("firefox")}function s(){return"ontouchstart"in window||navigator.maxTouchPoints>0}function l(e,n){if(e===undefined)return e;if(!n)return e!=="Symbol()"?e:undefined;return n.includes(e)||e===""?e:undefined}let u=1e3;function d(){return u++}function c(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}function f(e){return e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0}function m(){return new Promise((e=>c(e)))}function p(e,n){var i,o,t;if(!e)return"";if(((i=window.Tecton)===null||i===void 0?void 0:i.noStrings)===true){return e}return(t=(o=window===null||window===void 0?void 0:window.TectonElements)===null||o===void 0?void 0:o.loc(e,n))!==null&&t!==void 0?t:e}function b(n){const{label:i,hideLabel:o,optional:t,readonly:r}=n;const a=["input-label"];let s="";let l=o;if(!l){const e=n.hostElement.querySelectorAll('[slot="label"]');const o=e.length>0;const t=!!i;l=t||o?false:true}if(l)a.push("sr");if(t){s=e("span",{class:"optional-tag"},p("tecton.element.input.optional"))}if(r){s=e("span",{class:"optional-tag"},p("tecton.element.input.readonly"));a.push("readonly-field")}return e("label",{htmlFor:n.inputId,class:a.join(" ")},e("slot",{name:"label"},i?p(i):undefined,s))}function v(e,n){return e.querySelector(`[slot="${n}"]`)!==null}function h(e){const{ariaLabel:n}=e;if(!n)return;const i=Symbol().toString();if(n===i){e.ariaLabel=undefined;return}if("hideLabel"in e)e.hideLabel=true;e.label=p(n);e.ariaLabel=undefined}function w(e,n,i,o){if(typeof e[n]==="undefined")return;if(e[n]){g(e,n,"prop")}e[i]=e[n];if(o){delete e[n]}}function g(e,n,i){if(window.location.hostname==="localhost"||window.location.host==="stack.q2developer.com"){if(e[n]==="undefined")return;const o=e.constructor.name.toLowerCase().slice(2);switch(i){case"prop":if(n==="size"&&o==="btn"){console.warn(`The property of size in q2-btn should not be typeof number, or typeof string containing a number. This functionality will be deprecated in an upcoming release. Instead, please use the value 'undefined', or typeof string with any of the following values: "small" / "medium" / "large" `)}else{console.warn(`The property ${n} in q2-${o} has been marked for deprecation and will be removed in an upcoming major release.`)}break;case"function":console.warn(`The function ${n} in ${o} has been marked for deprecation and will be removed in an upcoming major release.`);break;case"method":console.warn(`The method ${n} in ${o} has been marked for deprecation and will be removed in an upcoming major release.`);break;case"event":console.warn(`The event ${n} in ${o} has been marked for deprecation and will be removed in an upcoming major release.`);break;default:console.error(`handleDeprecationWarning --\x3e No type found for desired deprecation: ${n} in q2-${o}: deprecatedItemType = ${n}`)}}}function y(n){const i=n.hasError?"danger":"info";return e("div",{class:"messages-container"},e("q2-message",{appearance:"minimal",description:true,type:i,"test-id":"message"},e("ul",{id:n.inputDescribedBy},n.messages.map((n=>e("li",{"test-id":"messageListItem"},p(n)))))))}function $(e){const n=e.hostElement.shadowRoot.querySelector(".messages-container");const i=n.querySelector("q2-message");c((()=>{const o=e.showMessages&&e.hasFocus?i.getBoundingClientRect().height:0;if(n.style.getPropertyValue("height")===`${o}px`)return;if(o===0){i.classList.add("invisible");n.style.removeProperty("height")}else{i.classList.remove("invisible");n.style.setProperty("height",`${o}px`)}}))}const k=()=>{var e,n;return(n=(e=window.TectonElements)===null||e===void 0?void 0:e.resizeIframe)===null||n===void 0?void 0:n.call(e)};const q=e=>{if(!e.intent&&["primary","secondary"].includes(e.color)){e.intent=`workflow-${e.color}`;e.color=undefined}};export{w as a,s as b,d as c,n as d,b as e,v as f,o as g,h,t as i,i as j,a as k,p as l,y as m,c as n,r as o,l as p,f as q,k as r,$ as s,g as t,q as u,m as w};
|
|
2
|
-
//# sourceMappingURL=p-84190698.js.map
|