q2-tecton-elements 1.45.1 → 1.45.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 +36 -4
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +2 -1
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +2 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +5 -3
- package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +4 -3
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js +23 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +23 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-icon/q2-icon.js +6 -4
- package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
- package/dist/collection/components/q2-message/q2-message.css +3 -3
- package/dist/collection/components/q2-popover/q2-popover.css +3 -0
- package/dist/collection/components/q2-popover/q2-popover.js +53 -3
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-select/q2-select.js +25 -3
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/components/q2-stepper/q2-stepper.css +4 -2
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +5 -16
- package/dist/components/q2-calendar.js +3 -1
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-dropdown.js +3 -1
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-icon2.js +6 -4
- package/dist/components/q2-icon2.js.map +1 -1
- package/dist/components/q2-message2.js +1 -1
- package/dist/components/q2-message2.js.map +1 -1
- package/dist/components/q2-popover2.js +37 -4
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-select.js +5 -3
- package/dist/components/q2-select.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +1 -1
- package/dist/components/q2-stepper-vertical.js.map +1 -1
- package/dist/components/q2-stepper.js +1 -1
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/esm/click-elsewhere_2.entry.js +36 -4
- package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-calendar.entry.js +2 -1
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +2 -1
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +6 -4
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-message.entry.js +1 -1
- package/dist/esm/q2-message.entry.js.map +1 -1
- package/dist/esm/q2-select.entry.js +4 -3
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/esm/q2-stepper.entry.js +1 -1
- package/dist/esm/q2-stepper.entry.js.map +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/q2-tecton-elements/p-445990a8.entry.js +2 -0
- package/dist/q2-tecton-elements/p-445990a8.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-68556733.entry.js +2 -0
- package/dist/q2-tecton-elements/p-68556733.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-a977e723.entry.js +2 -0
- package/dist/q2-tecton-elements/p-a977e723.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-bfe9d688.entry.js +2 -0
- package/dist/q2-tecton-elements/p-bfe9d688.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-f1281e3f.entry.js → p-bffda54d.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-bffda54d.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-c016bd18.entry.js +2 -0
- package/dist/q2-tecton-elements/p-c016bd18.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-cadceb00.entry.js +2 -0
- package/dist/q2-tecton-elements/p-cadceb00.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-f0813fb4.entry.js +2 -0
- package/dist/q2-tecton-elements/p-f0813fb4.entry.js.map +1 -0
- package/dist/q2-tecton-elements/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-action-sheet-test.e2e.js +5 -1
- package/dist/test/elements/q2-action-sheet-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-avatar-test.e2e.js +2 -3
- package/dist/test/elements/q2-avatar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-badge-test.e2e.js +5 -1
- package/dist/test/elements/q2-badge-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-btn-test.e2e.js +5 -1
- package/dist/test/elements/q2-btn-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-calendar-test.e2e.js +25 -1
- package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-card-test.e2e.js +5 -1
- package/dist/test/elements/q2-card-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-chart-area-test.e2e.js +5 -1
- package/dist/test/elements/q2-chart-area-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-chart-bar-test.e2e.js +5 -1
- package/dist/test/elements/q2-chart-bar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-chart-donut-test.e2e.js +5 -1
- package/dist/test/elements/q2-chart-donut-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-checkbox-group-test.e2e.js +5 -1
- package/dist/test/elements/q2-checkbox-group-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-checkbox-test.e2e.js +5 -1
- package/dist/test/elements/q2-checkbox-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-currency-test.e2e.js +5 -1
- package/dist/test/elements/q2-currency-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-data-table-test.e2e.js +5 -1
- package/dist/test/elements/q2-data-table-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-dropdown-item-test.e2e.js +5 -1
- package/dist/test/elements/q2-dropdown-item-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-dropdown-test.e2e.js +35 -1
- package/dist/test/elements/q2-dropdown-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-editable-field-test.e2e.js +5 -1
- package/dist/test/elements/q2-editable-field-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-icon-test.e2e.js +22 -1
- package/dist/test/elements/q2-icon-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-input-test.e2e.js +5 -1
- package/dist/test/elements/q2-input-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-loading-test.e2e.js +5 -1
- package/dist/test/elements/q2-loading-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-loc-test.e2e.js +5 -1
- package/dist/test/elements/q2-loc-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-message-test.e2e.js +5 -1
- package/dist/test/elements/q2-message-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-optgroup-test.e2e.js +5 -1
- package/dist/test/elements/q2-optgroup-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-option-list-test.e2e.js +5 -1
- package/dist/test/elements/q2-option-list-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-option-test.e2e.js +5 -1
- package/dist/test/elements/q2-option-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-pagination-test.e2e.js +5 -1
- package/dist/test/elements/q2-pagination-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-pill-test.e2e.js +2 -3
- package/dist/test/elements/q2-pill-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-popover-test.e2e.js +6 -2
- package/dist/test/elements/q2-popover-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-popover-test.spec.js +99 -13
- package/dist/test/elements/q2-popover-test.spec.js.map +1 -1
- package/dist/test/elements/q2-radio-group-test.e2e.js +5 -1
- package/dist/test/elements/q2-radio-group-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-radio-test.e2e.js +5 -1
- package/dist/test/elements/q2-radio-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-relative-time-test.e2e.js +8 -4
- package/dist/test/elements/q2-relative-time-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-section-test.e2e.js +5 -1
- package/dist/test/elements/q2-section-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-select-test.e2e.js +29 -1
- package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-stepper-pane-test.e2e.js +5 -1
- package/dist/test/elements/q2-stepper-pane-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-stepper-test.e2e.js +5 -1
- package/dist/test/elements/q2-stepper-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-stepper-vertical-test.e2e.js +5 -1
- package/dist/test/elements/q2-stepper-vertical-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tab-container-test.e2e.js +5 -1
- package/dist/test/elements/q2-tab-container-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tab-pane-test.e2e.js +5 -1
- package/dist/test/elements/q2-tab-pane-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tag-test.e2e.js +2 -3
- package/dist/test/elements/q2-tag-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-textarea-test.e2e.js +5 -1
- package/dist/test/elements/q2-textarea-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tooltip-test.e2e.js +5 -1
- package/dist/test/elements/q2-tooltip-test.e2e.js.map +1 -1
- package/dist/test/elements/tecton-tab-pane-test.e2e.js +5 -1
- package/dist/test/elements/tecton-tab-pane-test.e2e.js.map +1 -1
- package/dist/test/helpers.js +1 -1
- package/dist/test/helpers.js.map +1 -1
- package/dist/types/components/q2-icon/q2-icon.d.ts +1 -0
- package/dist/types/components/q2-popover/q2-popover.d.ts +3 -1
- package/dist/types/components.d.ts +32 -0
- package/dist/types/workspace/workspace/tecton-production_release_1.45.x/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +1 -1
- package/package.json +3 -3
- package/dist/q2-tecton-elements/p-4a332c2a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-4a332c2a.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-4f7e2c8a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-4f7e2c8a.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-7f663376.entry.js +0 -2
- package/dist/q2-tecton-elements/p-7f663376.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-bf125cdf.entry.js +0 -2
- package/dist/q2-tecton-elements/p-bf125cdf.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-c4c458b7.entry.js +0 -2
- package/dist/q2-tecton-elements/p-c4c458b7.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-f1281e3f.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-f162c670.entry.js +0 -2
- package/dist/q2-tecton-elements/p-f162c670.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-f418967b.entry.js +0 -2
- package/dist/q2-tecton-elements/p-f418967b.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-popover-test.spec.js","sourceRoot":"","sources":["../../../test/elements/q2-popover-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { Q2Popover } from '../../src/components/q2-popover/q2-popover';\n\ndescribe('popover', () => {\n let specPopover: Q2Popover;\n\n const samplePlatformDimensions = {\n scrollY: 0,\n innerHeight: 800,\n innerWidth: 600,\n outletOffset: 20,\n };\n\n const sampleTectonWindow = {\n inMobileApp: false,\n noStrings: false,\n platformUrl: '',\n platformDimensions: samplePlatformDimensions,\n };\n\n describe('Methods', () => {\n beforeEach(() => {\n specPopover = new Q2Popover();\n });\n\n describe('toggle', () => {\n it('sets open to true when open is false', async () => {\n specPopover.open = false;\n await specPopover.toggle();\n expect(specPopover.open).toBe(true);\n });\n\n it('sets open to false when open is true', async () => {\n specPopover.open = true;\n await specPopover.toggle();\n expect(specPopover.open).toBe(false);\n });\n });\n\n describe('scrollContainerTo', () => {\n it('scrolls the container to the given position', async () => {\n const containerElement = document.createElement('div');\n containerElement.scrollTo = jest.fn();\n specPopover.containerElement = containerElement;\n await specPopover.scrollContainerTo({ top: 100, left: 50 });\n expect(containerElement.scrollTo).toHaveBeenCalledWith({ top: 100, left: 50 });\n });\n });\n\n describe('openChanged', () => {\n beforeEach(() => {\n specPopover.addViewportListeners = jest.fn();\n specPopover.determinePopDirection = jest.fn();\n specPopover.removeViewportListeners = jest.fn();\n specPopover.clearCSSProperties = jest.fn();\n });\n\n it('sets open to true when open is false', async () => {\n specPopover.currentDirection = 'down';\n specPopover.show = true;\n await specPopover.openChanged(true);\n expect(specPopover.currentDirection).toBe('down');\n expect(specPopover.show).toBeTruthy();\n expect(specPopover.addViewportListeners).toHaveBeenCalled();\n expect(specPopover.determinePopDirection).toHaveBeenCalled();\n expect(specPopover.removeViewportListeners).not.toHaveBeenCalled();\n expect(specPopover.clearCSSProperties).not.toHaveBeenCalled();\n });\n\n it('sets open to false when open is true', async () => {\n specPopover.currentDirection = 'down';\n specPopover.show = true;\n await specPopover.openChanged(false);\n expect(specPopover.currentDirection).toBeUndefined();\n expect(specPopover.show).toBeFalsy();\n expect(specPopover.addViewportListeners).not.toHaveBeenCalled();\n expect(specPopover.determinePopDirection).not.toHaveBeenCalled();\n expect(specPopover.clearCSSProperties).toHaveBeenCalled();\n expect(specPopover.clearCSSProperties).toHaveBeenCalled();\n });\n });\n });\n\n describe('Getters', () => {\n beforeEach(() => {\n specPopover = new Q2Popover();\n });\n\n describe('actualDirection', () => {\n it('returns direction when \"up\"', async () => {\n specPopover.direction = 'up';\n expect(specPopover.actualDirection).toBe('up');\n });\n\n it('returns direction when \"down\"', async () => {\n specPopover.direction = 'down';\n expect(specPopover.actualDirection).toBe('down');\n });\n\n it('returns undefined when not \"up\" or \"down\"', async () => {\n (specPopover.direction as any) = 'bottom';\n expect(specPopover.actualDirection).toBeUndefined();\n });\n });\n\n describe('isModule', () => {\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(specPopover.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(specPopover.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(specPopover.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(specPopover.isModule).toBe(true);\n windowSpy.mockRestore();\n });\n });\n });\n\n describe('when in a module', () => {\n let specPopover: Q2Popover;\n let windowSpy: jest.SpyInstance;\n let controlElement: HTMLDivElement;\n let containerElement: HTMLDivElement;\n\n beforeEach(async () => {\n specPopover = new Q2Popover();\n windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n window.Tecton = sampleTectonWindow;\n expect(specPopover.isModule).toBe(true);\n\n controlElement = document.createElement('div');\n specPopover.controlElement = controlElement;\n\n containerElement = document.createElement('div');\n specPopover.containerElement = containerElement;\n });\n\n afterEach(() => {\n windowSpy.mockRestore();\n });\n\n describe(\"when the module is taller than the window's viewport\", () => {\n beforeEach(() => {\n specPopover.open = true;\n window.visualViewport = { height: 1200 } as any;\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 20,\n bottom: 70,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('700px');\n expect(specPopover.currentDirection).toBe('down');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 600,\n bottom: 650,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('590px');\n expect(specPopover.currentDirection).toBe('up');\n\n controlSpy.mockRestore();\n });\n\n describe('when the outletOffset is less than 0', () => {\n beforeEach(() => {\n window.Tecton = {\n ...sampleTectonWindow,\n platformDimensions: { ...samplePlatformDimensions, outletOffset: -50 },\n };\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 20,\n bottom: 70,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('770px');\n expect(specPopover.currentDirection).toBe('down');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 600,\n bottom: 650,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('540px');\n expect(specPopover.currentDirection).toBe('up');\n\n controlSpy.mockRestore();\n });\n });\n });\n\n describe(\"when the module is shorter than the window's viewport\", () => {\n beforeEach(() => {\n specPopover.open = true;\n window.visualViewport = { height: 600 } as any;\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 20,\n bottom: 70,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('520px');\n expect(specPopover.currentDirection).toBe('down');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 500,\n bottom: 550,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('490px');\n expect(specPopover.currentDirection).toBe('up');\n\n controlSpy.mockRestore();\n });\n });\n });\n\n describe('viewPortChanged', () => {\n let specPopover: Q2Popover;\n let windowSpy: jest.SpyInstance;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n window.Tecton = sampleTectonWindow;\n expect(specPopover.isModule).toBe(true);\n specPopover.determinePopDirection = jest.fn();\n });\n\n afterEach(() => {\n windowSpy.mockRestore();\n });\n\n it('calls determinePopDirection when open is true', async () => {\n specPopover.open = true;\n await specPopover.viewPortChanged();\n expect(specPopover.determinePopDirection).toHaveBeenCalled();\n });\n\n it('does nothing when open is false', async () => {\n specPopover.open = false;\n await specPopover.viewPortChanged();\n expect(specPopover.determinePopDirection).not.toHaveBeenCalled();\n });\n });\n\n describe('viewPortOrientationChanged', () => {\n let specPopover: Q2Popover;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n specPopover.viewPortChanged = jest.fn();\n });\n\n it('sets orientationChanged to true and calls viewportChanged', async () => {\n await specPopover.viewPortOrientationChanged();\n expect(specPopover.orientationChanged).toBe(true);\n expect(specPopover.viewPortChanged).toHaveBeenCalled();\n });\n });\n\n describe('setCSSProperties', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n specPopover.containerElement = containerElement;\n\n const controlElement = document.createElement('div');\n controlElement.getBoundingClientRect = jest.fn().mockReturnValue({\n top: 20,\n bottom: 70,\n left: 30,\n right: 80,\n } as DOMRect);\n specPopover.controlElement = controlElement;\n window.visualViewport = { width: 800, height: 600 } as VisualViewport;\n });\n\n it('sets the necessary CSS properties', async () => {\n await specPopover.setCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBe('30px');\n expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBe('720px');\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-opacity')).toBe('1');\n });\n\n it('sets --comp-pop-bottom when direction is up', async () => {\n specPopover.currentDirection = 'up';\n await specPopover.setCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBe('580px');\n });\n\n it('sets --comp-pop-top when direction is down', async () => {\n specPopover.currentDirection = 'down';\n await specPopover.setCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBe('70px');\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n });\n\n it('sets --comp-pop-width when block is true', async () => {\n specPopover.block = true;\n await specPopover.setCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBe('0px');\n });\n });\n\n describe('clearCSSProperties', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n containerElement.style.setProperty('--comp-pop-max-height', '100px');\n containerElement.style.setProperty('--comp-pop-top', '20px');\n containerElement.style.setProperty('--comp-pop-bottom', '25px');\n containerElement.style.setProperty('--comp-pop-left', '30px');\n containerElement.style.setProperty('--comp-pop-right', '35px');\n containerElement.style.setProperty('--comp-pop-width', '200px');\n containerElement.style.setProperty('--comp-pop-opacity', '1');\n specPopover.containerElement = containerElement;\n });\n\n it('clears the necessary CSS properties', async () => {\n await specPopover.clearCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-opacity')).toBeFalsy();\n });\n });\n\n describe('setDirectionAndShow', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n specPopover.containerElement = containerElement;\n specPopover.setCSSProperties = jest.fn();\n specPopover.scrollContainerTo = jest.fn();\n });\n\n it('does nothing when open is false', async () => {\n specPopover.open = false;\n await specPopover.setDirectionAndShow('up');\n expect(specPopover.currentDirection).toBeUndefined();\n expect(specPopover.show).toBe(false);\n expect(specPopover.setCSSProperties).not.toHaveBeenCalled();\n });\n\n it('sets the direction and shows the popover', async () => {\n specPopover.open = true;\n await specPopover.setDirectionAndShow('up');\n expect(specPopover.currentDirection).toBe('up');\n expect(specPopover.show).toBe(true);\n expect(specPopover.setCSSProperties).toHaveBeenCalled();\n });\n });\n\n describe('determinePopDirection', () => {\n let specPopover: Q2Popover;\n let controlElement: HTMLDivElement;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n controlElement = document.createElement('div');\n containerElement = document.createElement('div');\n specPopover.controlElement = controlElement;\n specPopover.containerElement = containerElement;\n window.visualViewport = { width: 800, height: 600 } as VisualViewport;\n specPopover.setDirectionAndShow = jest.fn();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 500,\n bottom: 550,\n } as DOMRect);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('490px');\n expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('up');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 100,\n bottom: 150,\n } as DOMRect);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('440px');\n expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('down');\n\n controlSpy.mockRestore();\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-popover-test.spec.js","sourceRoot":"","sources":["../../../test/elements/q2-popover-test.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAEvE,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACrB,IAAI,WAAsB,CAAC;IAE3B,MAAM,wBAAwB,GAAG;QAC7B,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,GAAG;QAChB,UAAU,EAAE,GAAG;QACf,YAAY,EAAE,EAAE;KACnB,CAAC;IAEF,MAAM,kBAAkB,GAAG;QACvB,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,EAAE;QACf,kBAAkB,EAAE,wBAAwB;KAC/C,CAAC;IAEF,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;YAClB,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;gBACtE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;oBAC3B,UAAU,EAAE,CAAC,SAAS,CAAC;oBACvB,IAAI,EAAE,2BAA2B;iBACpC,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC5F,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;gBAC1E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;oBAC3B,UAAU,EAAE,CAAC,SAAS,CAAC;oBACvB,IAAI,EAAE,yCAAyC;iBAClD,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC7F,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACrB,UAAU,CAAC,GAAG,EAAE;YACZ,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBAClD,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC;gBACzB,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBAClD,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;gBACxB,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC/B,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;gBACzD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACvD,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBACtC,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;gBAChD,MAAM,WAAW,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YACzB,UAAU,CAAC,GAAG,EAAE;gBACZ,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC7C,WAAW,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC9C,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAChD,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBAClD,WAAW,CAAC,gBAAgB,GAAG,MAAM,CAAC;gBACtC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;gBACxB,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;gBACtC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC5D,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC7D,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACnE,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAClE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBAClD,WAAW,CAAC,gBAAgB,GAAG,MAAM,CAAC;gBACtC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;gBACxB,MAAM,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACrC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;gBACrD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBACrC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBAChE,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACjE,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC1D,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC9D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACrB,UAAU,CAAC,GAAG,EAAE;YACZ,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC7B,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;gBACzC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC7B,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;gBAC3C,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC;gBAC/B,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBACtD,WAAW,CAAC,SAAiB,GAAG,QAAQ,CAAC;gBAC1C,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE,CAAC;YACxD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;gBAChG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;gBACtC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2FAA2F,EAAE,KAAK,IAAI,EAAE;gBACvG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,EAAS,CAAC,CAAC;gBAC9E,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;gBACtC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzC,SAAS,CAAC,WAAW,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;gBAC5F,MAAM,CAAC,MAAM,GAAG,kBAAkB,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,UAAU,EAAE,CAAC;gBACtD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;gBAClG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,EAAS,CAAC,CAAC;gBAC9E,MAAM,CAAC,MAAM,GAAG,kBAAkB,CAAC;gBACnC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxC,SAAS,CAAC,WAAW,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC9B,IAAI,WAAsB,CAAC;QAC3B,IAAI,SAA2B,CAAC;QAChC,IAAI,cAA8B,CAAC;QACnC,IAAI,gBAAgC,CAAC;QAErC,UAAU,CAAC,KAAK,IAAI,EAAE;YAClB,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,EAAS,CAAC,CAAC;YACxE,MAAM,CAAC,MAAM,GAAG,kBAAkB,CAAC;YACnC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAExC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC;YAE5C,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACjD,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACX,SAAS,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAClE,UAAU,CAAC,GAAG,EAAE;gBACZ,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;gBACxB,MAAM,CAAC,cAAc,GAAG,EAAE,MAAM,EAAE,IAAI,EAAS,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;gBACrF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,eAAe,CAAC;oBACnF,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,EAAE;iBACN,CAAC,CAAC;gBACV,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;gBAE1C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvF,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAElD,UAAU,CAAC,WAAW,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;gBACnF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,eAAe,CAAC;oBACnF,GAAG,EAAE,GAAG;oBACR,MAAM,EAAE,GAAG;iBACP,CAAC,CAAC;gBACV,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;gBAE1C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvF,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEhD,UAAU,CAAC,WAAW,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;gBAClD,UAAU,CAAC,GAAG,EAAE;oBACZ,MAAM,CAAC,MAAM,mCACN,kBAAkB,KACrB,kBAAkB,kCAAO,wBAAwB,KAAE,YAAY,EAAE,CAAC,EAAE,MACvE,CAAC;gBACN,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;oBACrF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,eAAe,CAAC;wBACnF,GAAG,EAAE,EAAE;wBACP,MAAM,EAAE,EAAE;qBACN,CAAC,CAAC;oBACV,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;oBAE1C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvF,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAElD,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC7B,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;oBACnF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,eAAe,CAAC;wBACnF,GAAG,EAAE,GAAG;wBACR,MAAM,EAAE,GAAG;qBACP,CAAC,CAAC;oBACV,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;oBAE1C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvF,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAEhD,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC7B,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,uDAAuD,EAAE,GAAG,EAAE;YACnE,UAAU,CAAC,GAAG,EAAE;gBACZ,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;gBACxB,MAAM,CAAC,cAAc,GAAG,EAAE,MAAM,EAAE,GAAG,EAAS,CAAC;YACnD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;gBACrF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,eAAe,CAAC;oBACnF,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,EAAE;iBACN,CAAC,CAAC;gBACV,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;gBAE1C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvF,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAElD,UAAU,CAAC,WAAW,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;gBACnF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,eAAe,CAAC;oBACnF,GAAG,EAAE,GAAG;oBACR,MAAM,EAAE,GAAG;iBACP,CAAC,CAAC;gBACV,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;gBAE1C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvF,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEhD,UAAU,CAAC,WAAW,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC7B,IAAI,WAAsB,CAAC;QAC3B,IAAI,SAA2B,CAAC;QAEhC,UAAU,CAAC,GAAG,EAAE;YACZ,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,EAAS,CAAC,CAAC;YACxE,MAAM,CAAC,MAAM,GAAG,kBAAkB,CAAC;YACnC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,WAAW,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACX,SAAS,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC3D,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;YACxB,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC7C,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC;YACzB,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACrE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACxC,IAAI,WAAsB,CAAC;QAE3B,UAAU,CAAC,GAAG,EAAE;YACZ,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,WAAW,CAAC,0BAA0B,EAAE,CAAC;YAC/C,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC3D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACnC,IAAI,WAAsB,CAAC;QAC3B,IAAI,gBAAgC,CAAC;QAErC,UAAU,CAAC,GAAG,EAAE;YACZ,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACjD,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YAEhD,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACrD,cAAc,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;gBAC7D,GAAG,EAAE,EAAE;gBACP,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,EAAE;gBACR,KAAK,EAAE,EAAE;aACD,CAAC,CAAC;YACd,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC;YAC5C,MAAM,CAAC,cAAc,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAoB,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;YAC1C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACrF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC9E,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACjF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAChF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YACzD,WAAW,CAAC,gBAAgB,GAAG,IAAI,CAAC;YACpC,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;YAC1C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC9E,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YACxD,WAAW,CAAC,gBAAgB,GAAG,MAAM,CAAC;YACtC,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;YAC1C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/E,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACtD,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;YACzB,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;YAC1C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACtC,IAAI,WAAsB,CAAC;QAC3B,IAAI,gBAAgC,CAAC;QAErC,UAAU,CAAC,GAAG,EAAE;YACZ,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACjD,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC5B,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YAEhD,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACrD,cAAc,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;gBAC7D,GAAG,EAAE,EAAE;gBACP,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,EAAE;gBACR,KAAK,EAAE,EAAE;aACD,CAAC,CAAC;YACd,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC;YAC5C,MAAM,CAAC,cAAc,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAoB,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,WAAW,CAAC,wBAAwB,EAAE,CAAC;YAC7C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACrF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC9E,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACjF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7E,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACnE,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC;YAC5B,MAAM,WAAW,CAAC,wBAAwB,EAAE,CAAC;YAC7C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YACzD,WAAW,CAAC,gBAAgB,GAAG,IAAI,CAAC;YACpC,MAAM,WAAW,CAAC,wBAAwB,EAAE,CAAC;YAC7C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC9E,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAChE,WAAW,CAAC,gBAAgB,GAAG,MAAM,CAAC;YACtC,MAAM,WAAW,CAAC,wBAAwB,EAAE,CAAC;YAC7C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3E,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACtD,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;YACzB,MAAM,WAAW,CAAC,wBAAwB,EAAE,CAAC;YAC7C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAChC,IAAI,WAAsB,CAAC;QAC3B,IAAI,gBAAgC,CAAC;QAErC,UAAU,CAAC,GAAG,EAAE;YACZ,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACjD,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;YACrE,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAC7D,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;YAChE,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC9D,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YAC/D,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;YAChE,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;YAC9D,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACvC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACrF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC9E,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACjF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC/E,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAChF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAChF,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACtF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACjC,IAAI,WAAsB,CAAC;QAC3B,IAAI,gBAAgC,CAAC;QAErC,UAAU,CAAC,GAAG,EAAE;YACZ,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACjD,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YAChD,WAAW,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAC9C,WAAW,CAAC,wBAAwB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YACjD,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC7C,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC;YACzB,MAAM,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;YACrD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACjE,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC/B,UAAU,CAAC,GAAG,EAAE;gBACZ,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;gBACvF,MAAM,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC7D,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oGAAoG,EAAE,KAAK,IAAI,EAAE;gBAChH,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC;gBAC5B,MAAM,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACjE,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACpE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACnC,IAAI,WAAsB,CAAC;QAC3B,IAAI,cAA8B,CAAC;QACnC,IAAI,gBAAgC,CAAC;QAErC,UAAU,CAAC,GAAG,EAAE;YACZ,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACjD,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC;YAC5C,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YAChD,MAAM,CAAC,cAAc,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAoB,CAAC;YACtE,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,eAAe,CAAC;gBACnF,GAAG,EAAE,GAAG;gBACR,MAAM,EAAE,GAAG;aACH,CAAC,CAAC;YACd,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;YAE1C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvF,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAEnE,UAAU,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;YACrF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,eAAe,CAAC;gBACnF,GAAG,EAAE,GAAG;gBACR,MAAM,EAAE,GAAG;aACH,CAAC,CAAC;YACd,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;YAE1C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvF,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAErE,UAAU,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { Q2Popover } from '../../src/components/q2-popover/q2-popover';\n\ndescribe('popover', () => {\n let specPopover: Q2Popover;\n\n const samplePlatformDimensions = {\n scrollY: 0,\n innerHeight: 800,\n innerWidth: 600,\n outletOffset: 20,\n };\n\n const sampleTectonWindow = {\n inMobileApp: false,\n noStrings: false,\n platformUrl: '',\n platformDimensions: samplePlatformDimensions,\n };\n\n describe('Props', () => {\n describe('mode', () => {\n it('does not add the legacy class on the container (default)', async () => {\n const page = await newSpecPage({\n components: [Q2Popover],\n html: `<q2-popover></q2-popover>`,\n });\n expect(page.root.shadowRoot.firstElementChild.classList.contains('legacy')).toBeFalsy();\n });\n\n it('adds the legacy class on the container when mode is \"legacy\"', async () => {\n const page = await newSpecPage({\n components: [Q2Popover],\n html: `<q2-popover mode=\"legacy\"></q2-popover>`,\n });\n expect(page.root.shadowRoot.firstElementChild.classList.contains('legacy')).toBeTruthy();\n });\n });\n });\n\n describe('Methods', () => {\n beforeEach(() => {\n specPopover = new Q2Popover();\n });\n\n describe('toggle', () => {\n it('sets open to true when open is false', async () => {\n specPopover.open = false;\n await specPopover.toggle();\n expect(specPopover.open).toBe(true);\n });\n\n it('sets open to false when open is true', async () => {\n specPopover.open = true;\n await specPopover.toggle();\n expect(specPopover.open).toBe(false);\n });\n });\n\n describe('scrollContainerTo', () => {\n it('scrolls the container to the given position', async () => {\n const containerElement = document.createElement('div');\n containerElement.scrollTo = jest.fn();\n specPopover.containerElement = containerElement;\n await specPopover.scrollContainerTo({ top: 100, left: 50 });\n expect(containerElement.scrollTo).toHaveBeenCalledWith({ top: 100, left: 50 });\n });\n });\n\n describe('openChanged', () => {\n beforeEach(() => {\n specPopover.addViewportListeners = jest.fn();\n specPopover.determinePopDirection = jest.fn();\n specPopover.removeViewportListeners = jest.fn();\n specPopover.clearCSSProperties = jest.fn();\n });\n\n it('sets open to true when open is false', async () => {\n specPopover.currentDirection = 'down';\n specPopover.show = true;\n await specPopover.openChanged(true);\n expect(specPopover.currentDirection).toBe('down');\n expect(specPopover.show).toBeTruthy();\n expect(specPopover.addViewportListeners).toHaveBeenCalled();\n expect(specPopover.determinePopDirection).toHaveBeenCalled();\n expect(specPopover.removeViewportListeners).not.toHaveBeenCalled();\n expect(specPopover.clearCSSProperties).not.toHaveBeenCalled();\n });\n\n it('sets open to false when open is true', async () => {\n specPopover.currentDirection = 'down';\n specPopover.show = true;\n await specPopover.openChanged(false);\n expect(specPopover.currentDirection).toBeUndefined();\n expect(specPopover.show).toBeFalsy();\n expect(specPopover.addViewportListeners).not.toHaveBeenCalled();\n expect(specPopover.determinePopDirection).not.toHaveBeenCalled();\n expect(specPopover.clearCSSProperties).toHaveBeenCalled();\n expect(specPopover.clearCSSProperties).toHaveBeenCalled();\n });\n });\n });\n\n describe('Getters', () => {\n beforeEach(() => {\n specPopover = new Q2Popover();\n });\n\n describe('actualDirection', () => {\n it('returns direction when \"up\"', async () => {\n specPopover.direction = 'up';\n expect(specPopover.actualDirection).toBe('up');\n });\n\n it('returns direction when \"down\"', async () => {\n specPopover.direction = 'down';\n expect(specPopover.actualDirection).toBe('down');\n });\n\n it('returns undefined when not \"up\" or \"down\"', async () => {\n (specPopover.direction as any) = 'bottom';\n expect(specPopover.actualDirection).toBeUndefined();\n });\n });\n\n describe('isModule', () => {\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(specPopover.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(specPopover.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(specPopover.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(specPopover.isModule).toBe(true);\n windowSpy.mockRestore();\n });\n });\n });\n\n describe('when in a module', () => {\n let specPopover: Q2Popover;\n let windowSpy: jest.SpyInstance;\n let controlElement: HTMLDivElement;\n let containerElement: HTMLDivElement;\n\n beforeEach(async () => {\n specPopover = new Q2Popover();\n windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n window.Tecton = sampleTectonWindow;\n expect(specPopover.isModule).toBe(true);\n\n controlElement = document.createElement('div');\n specPopover.controlElement = controlElement;\n\n containerElement = document.createElement('div');\n specPopover.containerElement = containerElement;\n });\n\n afterEach(() => {\n windowSpy.mockRestore();\n });\n\n describe(\"when the module is taller than the window's viewport\", () => {\n beforeEach(() => {\n specPopover.open = true;\n window.visualViewport = { height: 1200 } as any;\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 20,\n bottom: 70,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('700px');\n expect(specPopover.currentDirection).toBe('down');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 600,\n bottom: 650,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('590px');\n expect(specPopover.currentDirection).toBe('up');\n\n controlSpy.mockRestore();\n });\n\n describe('when the outletOffset is less than 0', () => {\n beforeEach(() => {\n window.Tecton = {\n ...sampleTectonWindow,\n platformDimensions: { ...samplePlatformDimensions, outletOffset: -50 },\n };\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 20,\n bottom: 70,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('770px');\n expect(specPopover.currentDirection).toBe('down');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 600,\n bottom: 650,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('540px');\n expect(specPopover.currentDirection).toBe('up');\n\n controlSpy.mockRestore();\n });\n });\n });\n\n describe(\"when the module is shorter than the window's viewport\", () => {\n beforeEach(() => {\n specPopover.open = true;\n window.visualViewport = { height: 600 } as any;\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 20,\n bottom: 70,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('520px');\n expect(specPopover.currentDirection).toBe('down');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 500,\n bottom: 550,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('490px');\n expect(specPopover.currentDirection).toBe('up');\n\n controlSpy.mockRestore();\n });\n });\n });\n\n describe('viewPortChanged', () => {\n let specPopover: Q2Popover;\n let windowSpy: jest.SpyInstance;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n window.Tecton = sampleTectonWindow;\n expect(specPopover.isModule).toBe(true);\n specPopover.determinePopDirection = jest.fn();\n });\n\n afterEach(() => {\n windowSpy.mockRestore();\n });\n\n it('calls determinePopDirection when open is true', async () => {\n specPopover.open = true;\n await specPopover.viewPortChanged();\n expect(specPopover.determinePopDirection).toHaveBeenCalled();\n });\n\n it('does nothing when open is false', async () => {\n specPopover.open = false;\n await specPopover.viewPortChanged();\n expect(specPopover.determinePopDirection).not.toHaveBeenCalled();\n });\n });\n\n describe('viewPortOrientationChanged', () => {\n let specPopover: Q2Popover;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n specPopover.viewPortChanged = jest.fn();\n });\n\n it('sets orientationChanged to true and calls viewportChanged', async () => {\n await specPopover.viewPortOrientationChanged();\n expect(specPopover.orientationChanged).toBe(true);\n expect(specPopover.viewPortChanged).toHaveBeenCalled();\n });\n });\n\n describe('setFixedCSSProperties', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n specPopover.containerElement = containerElement;\n\n const controlElement = document.createElement('div');\n controlElement.getBoundingClientRect = jest.fn().mockReturnValue({\n top: 20,\n bottom: 70,\n left: 30,\n right: 80,\n } as DOMRect);\n specPopover.controlElement = controlElement;\n window.visualViewport = { width: 800, height: 600 } as VisualViewport;\n });\n\n it('sets the necessary CSS properties', async () => {\n await specPopover.setFixedCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBe('30px');\n expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBe('720px');\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-opacity')).toBe('1');\n });\n\n it('sets --comp-pop-bottom when direction is up', async () => {\n specPopover.currentDirection = 'up';\n await specPopover.setFixedCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBe('580px');\n });\n\n it('sets --comp-pop-top when direction is down', async () => {\n specPopover.currentDirection = 'down';\n await specPopover.setFixedCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBe('70px');\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n });\n\n it('sets --comp-pop-width when block is true', async () => {\n specPopover.block = true;\n await specPopover.setFixedCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBe('0px');\n });\n });\n\n describe('setAbsoluteCSSProperties', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n specPopover.mode = 'legacy';\n specPopover.containerElement = containerElement;\n\n const controlElement = document.createElement('div');\n controlElement.getBoundingClientRect = jest.fn().mockReturnValue({\n top: 20,\n bottom: 70,\n left: 30,\n right: 80,\n } as DOMRect);\n specPopover.controlElement = controlElement;\n window.visualViewport = { width: 800, height: 600 } as VisualViewport;\n });\n\n it('sets the necessary CSS properties', async () => {\n await specPopover.setAbsoluteCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBe('0');\n expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBe('unset');\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBe('');\n expect(containerElement.style.getPropertyValue('--comp-pop-opacity')).toBe('1');\n });\n\n it('sets the necessary CSS properties when align is right', async () => {\n specPopover.align = 'right';\n await specPopover.setAbsoluteCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBe('unset');\n expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBe('0');\n });\n\n it('sets --comp-pop-bottom when direction is up', async () => {\n specPopover.currentDirection = 'up';\n await specPopover.setAbsoluteCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBe('0px');\n });\n\n it('does not set --comp-pop-top when direction is down', async () => {\n specPopover.currentDirection = 'down';\n await specPopover.setAbsoluteCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBe('');\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBe('');\n });\n\n it('sets --comp-pop-width when block is true', async () => {\n specPopover.block = true;\n await specPopover.setAbsoluteCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBe('100%');\n });\n });\n\n describe('clearCSSProperties', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n containerElement.style.setProperty('--comp-pop-max-height', '100px');\n containerElement.style.setProperty('--comp-pop-top', '20px');\n containerElement.style.setProperty('--comp-pop-bottom', '25px');\n containerElement.style.setProperty('--comp-pop-left', '30px');\n containerElement.style.setProperty('--comp-pop-right', '35px');\n containerElement.style.setProperty('--comp-pop-width', '200px');\n containerElement.style.setProperty('--comp-pop-opacity', '1');\n specPopover.containerElement = containerElement;\n });\n\n it('clears the necessary CSS properties', async () => {\n await specPopover.clearCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-opacity')).toBeFalsy();\n });\n });\n\n describe('setDirectionAndShow', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n specPopover.containerElement = containerElement;\n specPopover.setFixedCSSProperties = jest.fn();\n specPopover.setAbsoluteCSSProperties = jest.fn();\n specPopover.scrollContainerTo = jest.fn();\n });\n\n it('does nothing when open is false', async () => {\n specPopover.open = false;\n await specPopover.setDirectionAndShow('up');\n expect(specPopover.currentDirection).toBeUndefined();\n expect(specPopover.show).toBe(false);\n expect(specPopover.setFixedCSSProperties).not.toHaveBeenCalled();\n expect(specPopover.setAbsoluteCSSProperties).not.toHaveBeenCalled();\n });\n\n describe('when open is true', () => {\n beforeEach(() => {\n specPopover.open = true;\n });\n\n it('sets the direction, shows the popover, and sets fixed position properties', async () => {\n await specPopover.setDirectionAndShow('up');\n expect(specPopover.currentDirection).toBe('up');\n expect(specPopover.show).toBe(true);\n expect(specPopover.setFixedCSSProperties).toHaveBeenCalled();\n expect(specPopover.setAbsoluteCSSProperties).not.toHaveBeenCalled();\n });\n\n it('sets the direction, shows the popover, and sets absolute position properties when mode is \"legacy\"', async () => {\n specPopover.mode = 'legacy';\n await specPopover.setDirectionAndShow('up');\n expect(specPopover.currentDirection).toBe('up');\n expect(specPopover.show).toBe(true);\n expect(specPopover.setFixedCSSProperties).not.toHaveBeenCalled();\n expect(specPopover.setAbsoluteCSSProperties).toHaveBeenCalled();\n });\n });\n });\n\n describe('determinePopDirection', () => {\n let specPopover: Q2Popover;\n let controlElement: HTMLDivElement;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n controlElement = document.createElement('div');\n containerElement = document.createElement('div');\n specPopover.controlElement = controlElement;\n specPopover.containerElement = containerElement;\n window.visualViewport = { width: 800, height: 600 } as VisualViewport;\n specPopover.setDirectionAndShow = jest.fn();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 500,\n bottom: 550,\n } as DOMRect);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('490px');\n expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('up');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 100,\n bottom: 150,\n } as DOMRect);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('440px');\n expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('down');\n\n controlSpy.mockRestore();\n });\n });\n});\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { setup, dispatchEvent, getActiveElementTestId } from "../helpers";
|
|
1
|
+
import { setup, dispatchEvent, getActiveElementTestId, getListOfStyleCompilationIssues } from "../helpers";
|
|
2
2
|
describe('q2-radio-group', () => {
|
|
3
3
|
let page;
|
|
4
4
|
let radioGroup;
|
|
@@ -15,6 +15,10 @@ describe('q2-radio-group', () => {
|
|
|
15
15
|
await page.waitForChanges();
|
|
16
16
|
return page;
|
|
17
17
|
};
|
|
18
|
+
it('properly compiles CSS vars and functions', async () => {
|
|
19
|
+
const page = await setup({ html: '<q2-radio-group></q2-radio-group>' });
|
|
20
|
+
expect(await getListOfStyleCompilationIssues(page, 'q2-radio-group')).toHaveLength(0);
|
|
21
|
+
});
|
|
18
22
|
it('renders with label', async function () {
|
|
19
23
|
page = await setupPage('label="My Radio Group"', 0);
|
|
20
24
|
const label = await page.find('q2-radio-group >>> legend');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-radio-group-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-radio-group-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage } from '@stencil/core/testing';\nimport { setup, dispatchEvent, getActiveElementTestId } from '../helpers';\n\ndescribe('q2-radio-group', () => {\n let page: E2EPage;\n let radioGroup: E2EElement;\n\n const setupPage = async (props: string = '', numberOfRadios: number = 3, checkedRadios: number[] = []) => {\n props = props ? ` ${props}` : '';\n const radios = Array.from(\n { length: numberOfRadios },\n (_, i) =>\n `<q2-radio value=\"${i + 1}\" label=\"${i + 1}label\"${\n checkedRadios.includes(i + 1) ? ' checked=\"true\"' : ''\n }></q2-radio>`\n ).join('');\n const page = await setup({\n html: `\n <q2-radio-group \"${props}>\n ${radios}\n </q2-radio-group>\n `,\n });\n await page.waitForChanges();\n\n return page;\n };\n\n it('renders with label', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\"', 0);\n const label = await page.find('q2-radio-group >>> legend');\n\n expect(label).not.toBeNull();\n expect(label.innerText).toEqual('My Radio Group');\n });\n\n it('assigns name to all radios and updates if name changes', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\"', 2);\n let firstRadio = await page.find('q2-radio:nth-child(1)');\n let secondRadio = await page.find('q2-radio:nth-child(2)');\n\n expect(firstRadio.getAttribute('name')).toEqual('testname');\n expect(secondRadio.getAttribute('name')).toEqual('testname');\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('name', 'newname');\n\n await page.waitForChanges();\n\n firstRadio = await page.find('q2-radio:nth-child(1)');\n secondRadio = await page.find('q2-radio:nth-child(2)');\n\n expect(firstRadio.getAttribute('name')).toEqual('newname');\n expect(secondRadio.getAttribute('name')).toEqual('newname');\n });\n\n it('assigns checked value on init and whenever value changes', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"2\"', 2);\n let firstRadio = await page.find('q2-radio:nth-child(1)');\n let secondRadio = await page.find('q2-radio:nth-child(2)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual('');\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('value', '1');\n\n await page.waitForChanges();\n\n firstRadio = await page.find('q2-radio:nth-child(1)');\n secondRadio = await page.find('q2-radio:nth-child(2)');\n\n expect(firstRadio.getAttribute('checked')).toEqual('');\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n });\n\n it('assigns checked value on init for individual radio(s) that have checked atttribute === true, and no value is set for radio-group', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\"', 3, [2]);\n let firstRadio = await page.find('q2-radio:nth-child(1)');\n let secondRadio = await page.find('q2-radio:nth-child(2)');\n let thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual('');\n expect(thirdRadio.getAttribute('checked')).toEqual(null);\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('value', '3');\n\n await page.waitForChanges();\n\n firstRadio = await page.find('q2-radio:nth-child(1)');\n secondRadio = await page.find('q2-radio:nth-child(2)');\n thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n expect(thirdRadio.getAttribute('checked')).toEqual('');\n });\n\n it('assigns checked value on init for when radio-group value is set, and ignores / removes checked value individual radio preset checked={true}', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"2\"', 3, [1, 3]);\n let firstRadio = await page.find('q2-radio:nth-child(1)');\n let secondRadio = await page.find('q2-radio:nth-child(2)');\n let thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual('');\n expect(thirdRadio.getAttribute('checked')).toEqual(null);\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('value', '3');\n\n await page.waitForChanges();\n\n firstRadio = await page.find('q2-radio:nth-child(1)');\n secondRadio = await page.find('q2-radio:nth-child(2)');\n thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n expect(thirdRadio.getAttribute('checked')).toEqual('');\n });\n\n it('does not assign \"checked\" value on init for when radio-group value is not set, or any q2-radio preset checked={true}', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\"');\n let firstRadio = await page.find('q2-radio:nth-child(1)');\n let secondRadio = await page.find('q2-radio:nth-child(2)');\n let thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n expect(thirdRadio.getAttribute('checked')).toEqual(null);\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('value', '3');\n\n await page.waitForChanges();\n\n firstRadio = await page.find('q2-radio:nth-child(1)');\n secondRadio = await page.find('q2-radio:nth-child(2)');\n thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n expect(thirdRadio.getAttribute('checked')).toEqual('');\n });\n\n it('will update name, checked and disabled on new radio if added dynamically (mutation observer)', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" disabled name=\"testname\" value=\"3\"');\n await page.$eval('q2-radio-group', radioGroup => {\n const newRadio = document.createElement('q2-radio');\n newRadio.label = '3label';\n newRadio.value = '3';\n radioGroup.appendChild(newRadio);\n });\n await page.waitForChanges();\n const thirdRadio = await page.find('q2-radio:nth-child(3');\n\n expect(thirdRadio.getAttribute('name')).toEqual('testname');\n expect(thirdRadio.getAttribute('checked')).toEqual('');\n expect(await thirdRadio.getProperty('groupDisabled')).toEqual(true);\n });\n\n it('assigns tabIndex value of 0 to first radio in group, and then -1 for all following radios on init, and assigns -1 to all that are not selected there after', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\"');\n const firstRadio = await page.find('q2-radio:nth-child(1)');\n const secondRadio = await page.find('q2-radio:nth-child(2)');\n const thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(await firstRadio.getProperty('tabIndex')).toEqual(0);\n expect(await secondRadio.getProperty('tabIndex')).toEqual(-1);\n expect(await thirdRadio.getProperty('tabIndex')).toEqual(-1);\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('value', '2');\n await page.waitForChanges();\n\n expect(await firstRadio.getProperty('tabIndex')).toEqual(-1);\n expect(await secondRadio.getProperty('tabIndex')).toEqual(0);\n expect(await thirdRadio.getProperty('tabIndex')).toEqual(-1);\n\n radioGroup.setProperty('value', '3');\n await page.waitForChanges();\n\n expect(await firstRadio.getProperty('tabIndex')).toEqual(-1);\n expect(await secondRadio.getProperty('tabIndex')).toEqual(-1);\n expect(await thirdRadio.getProperty('tabIndex')).toEqual(0);\n });\n\n it('disables all radios via groupDisable when radio group is disabled', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"2\"', 2);\n let firstRadioInnerInput = await page.find('q2-radio:nth-child(1) >>> input ');\n let secondRadioInnerInput = await page.find('q2-radio:nth-child(2) >>> input');\n\n expect(firstRadioInnerInput.getAttribute('disabled')).toEqual(null);\n expect(secondRadioInnerInput.getAttribute('disabled')).toEqual(null);\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('disabled', true);\n await page.waitForChanges();\n firstRadioInnerInput = await page.find('q2-radio:nth-child(1) >>> input');\n secondRadioInnerInput = await page.find('q2-radio:nth-child(2) >>> input ');\n\n expect(firstRadioInnerInput.getAttribute('disabled')).toEqual('');\n expect(secondRadioInnerInput.getAttribute('disabled')).toEqual('');\n });\n\n describe('Props', () => {\n const getActiveElementValue = async (page: E2EPage) => {\n return page.$eval('body', () => document.activeElement.getAttribute('value'));\n };\n\n describe('tilelayout', () => {\n it('converts to tileLayout=true when provided', async () => {\n page = await setupPage('label=\"My Radio Group\" tilelayout');\n radioGroup = await page.find('q2-radio-group');\n\n expect(radioGroup).toHaveAttribute('tile-layout');\n expect(await radioGroup.getProperty('tilelayout')).toBeUndefined();\n });\n\n it('converts to tileLayout=false when provided as \"false\"', async () => {\n page = await setupPage('label=\"My Radio Group\" tilelayout=\"false\"');\n radioGroup = await page.find('q2-radio-group');\n\n expect(radioGroup).not.toHaveAttribute('tile-layout');\n expect(await radioGroup.getProperty('tilelayout')).toBeUndefined();\n });\n });\n\n describe('readonly', () => {\n describe('set to true', () => {\n it('on load child q2-radio components are groupReadonly', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" readonly');\n const radios = await page.findAll('q2-radio');\n\n expect(radios.every(async radio => (await radio.getProperty('groupReadonly')) === true)).toBe(true);\n });\n it('after load child q2-radio components are groupReadonly', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\"');\n const radioGroup = await page.find('q2-radio-group');\n const radios = await page.findAll('q2-radio');\n\n expect(radios.every(async radio => (await radio.getProperty('groupReadonly')) === false)).toBe(\n true\n );\n\n radioGroup.setAttribute('readonly', 'true');\n await page.waitForChanges();\n\n expect(radios.every(async radio => (await radio.getProperty('groupReadonly')) === true)).toBe(true);\n });\n it('allows movement between radio buttons without selecting them', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" value=\"2\" readonly');\n const radioGroup = await page.find('q2-radio-group');\n await radioGroup.focus();\n\n expect(await getActiveElementValue(page)).toEqual('2');\n\n await dispatchEvent(page, 'q2-radio[value=\"2\"]', 'keydown', {\n key: 'ArrowDown',\n bubbles: true,\n });\n await page.waitForChanges();\n\n expect(await getActiveElementValue(page)).toEqual('3');\n expect(await radioGroup.getProperty('value')).toEqual('2');\n\n await dispatchEvent(page, 'q2-radio[value=\"3\"]', 'keydown', {\n key: 'ArrowUp',\n bubbles: true,\n });\n await page.waitForChanges();\n\n expect(await getActiveElementValue(page)).toEqual('2');\n expect(await radioGroup.getProperty('value')).toEqual('2');\n\n await dispatchEvent(page, 'q2-radio[value=\"2\"]', 'keydown', {\n key: 'ArrowUp',\n bubbles: true,\n });\n await page.waitForChanges();\n\n expect(await getActiveElementValue(page)).toEqual('1');\n expect(await radioGroup.getProperty('value')).toEqual('2');\n });\n\n it('allows clicking radio buttons without selecting them', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" value=\"2\" readonly');\n const radioGroup = await page.find('q2-radio-group');\n const radios = await page.findAll('q2-radio');\n await radios[0].click();\n\n expect(await getActiveElementValue(page)).toEqual('1');\n expect(await radioGroup.getProperty('value')).toEqual('2');\n });\n });\n describe('set to false', () => {\n it('on load child q2-radio components are NOT groupReadonly', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\"');\n const radios = await page.findAll('q2-radio');\n\n expect(radios.every(async radio => (await radio.getProperty('groupReadonly')) === false)).toBe(\n true\n );\n });\n it('after load child q2-radio components are NOT groupReadonly', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" readonly');\n const radioGroup = await page.find('q2-radio-group');\n const radios = await page.findAll('q2-radio');\n\n expect(radios.every(async radio => (await radio.getProperty('groupReadonly')) === true)).toBe(true);\n\n radioGroup.setAttribute('groupReadonly', 'false');\n await page.waitForChanges();\n\n expect(radios.every(async radio => (await radio.getProperty('groupReadonly')) === false)).toBe(\n true\n );\n });\n });\n });\n });\n\n it('when a radio is selected radio group emits change event', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"2\"', 2);\n const radioGroup = await page.find('q2-radio-group');\n const changeSpy = await radioGroup.spyOnEvent('change');\n await dispatchEvent(page, ['q2-radio:nth-child(1)', 'label'], 'click');\n\n // change event is fired with appropriate value\n expect(changeSpy).toHaveReceivedEventDetail({ value: '1' });\n\n const value = await radioGroup.getProperty('value');\n\n // value automatically updated by default change handler\n expect(value).toEqual('1');\n });\n\n it('can override default on change', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"2\"', 2);\n const radioGroup = await page.find('q2-radio-group');\n const changeSpy = await radioGroup.spyOnEvent('change');\n await page.$eval('q2-radio-group', radioGroup => {\n (radioGroup as HTMLQ2RadioGroupElement).onchange = function (event) {\n event.stopPropagation();\n // do nothing\n };\n });\n await dispatchEvent(page, ['q2-radio:nth-child(1)', 'label'], 'click');\n\n // change event is fired with appropriate value\n expect(changeSpy).toHaveReceivedEventDetail({ value: '1' });\n\n const value = await radioGroup.getProperty('value');\n\n expect(value).toEqual('2');\n });\n\n it('allows spacebar to select first option when focused and no options are selected', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\"', 2);\n const firstRadio = await page.find('q2-radio');\n const firstRadioInput = await page.find('q2-radio >>> input');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n\n await firstRadioInput.press(' ');\n await page.waitForChanges();\n\n expect(await firstRadio.getProperty('checked')).toEqual(true);\n });\n it('should render a localized optional string when the optional attribute is passed', async function (): Promise<void> {\n page = await setupPage('label=\"foo\" name=\"testname\" optional', 2);\n const label = await page.find('q2-radio-group >>> legend');\n\n // a localized optional is shown in the label\n expect(label.innerText.trim()).toEqual('footecton.element.input.optional');\n });\n it('should show a tile format when tile option is passed', async (): Promise<void> => {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\"', 2);\n let svgCheckbox = await page.findAll('q2-radio >>> svg');\n let firstRadio = await page.find('q2-radio >>> div');\n\n expect(svgCheckbox.length).toEqual(2);\n expect(firstRadio.classList.contains('radio-container')).toBeTruthy();\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setAttribute('tilelayout', 'true');\n await page.waitForChanges();\n svgCheckbox = await page.findAll('q2-radio >>> svg');\n firstRadio = await page.find('q2-radio >>> div');\n\n expect(svgCheckbox.length).toEqual(0);\n expect(firstRadio.classList.contains('radio-tile')).toBeTruthy();\n });\n\n it('handles keyboard navigation', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"1\"', 2);\n let firstRadio = await page.find('q2-radio:nth-child(1)');\n let secondRadio = await page.find('q2-radio:nth-child(2)');\n await page.waitForChanges();\n\n expect(firstRadio.getAttribute('checked')).toEqual('');\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n\n await dispatchEvent(page, ['q2-radio-group'], 'keydown', {\n key: 'ArrowDown',\n });\n firstRadio = await page.find('q2-radio:nth-child(1)');\n secondRadio = await page.find('q2-radio:nth-child(2)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual('');\n });\n\n it('should work with changing checked attribute programmatically', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"1\"', 2);\n const group = await page.find('q2-radio-group');\n const firstRadio = await page.find('q2-radio:nth-child(1)');\n const secondRadio = await page.find('q2-radio:nth-child(2)');\n await page.waitForChanges();\n\n expect(firstRadio.getAttribute('checked')).toEqual('');\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n expect(await group.getProperty('value')).toEqual('1');\n\n // change to 2\n secondRadio.setAttribute('checked', '');\n await page.waitForChanges();\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual('');\n expect(await group.getProperty('value')).toEqual('2');\n\n // change back to 1\n firstRadio.setAttribute('checked', '');\n await page.waitForChanges();\n\n expect(firstRadio.getAttribute('checked')).toEqual('');\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n expect(await group.getProperty('value')).toEqual('1');\n });\n\n describe('focus', () => {\n let page: E2EPage;\n let radioGroup: E2EElement;\n beforeEach(async () => {\n page = await setupPage('label=\"My Radio Group\"', 2);\n radioGroup = await page.find('q2-radio-group');\n\n expect(await activeValue(page)).toBeUndefined();\n });\n\n const activeValue = async (page: E2EPage) => {\n return page.evaluate(() => document.activeElement.closest('q2-radio')?.value);\n };\n\n it('focuses inner button when focus event is dispatched', async function (): Promise<void> {\n await radioGroup.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await activeValue(page)).toEqual('1');\n });\n\n it('focuses inner button when element.focus() is called', async function (): Promise<void> {\n await radioGroup.focus();\n await page.waitForChanges();\n\n expect(await activeValue(page)).toEqual('1');\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-1689', () => {\n let page: E2EPage;\n beforeEach(async () => {\n page = await setup({\n html: `\n <script>\n function changeHandler() {\n window.changeEventCalled = true;\n }\n </script>\n <q2-radio-group value=\"2\" onChange=\"changeHandler()\">\n <q2-radio value=\"1\" label=\"1\"></q2-radio>\n <q2-radio value=\"2\" label=\"2\"></q2-radio>\n </q2-radio-group>\n `,\n });\n });\n\n it('does not emit a change event on initial render if value is set', async () => {\n expect(await page.$eval('body', () => (window as any).changeEventCalled)).toBeUndefined();\n });\n\n it('does emit a change event when an option is selected', async () => {\n const secondRadio = await page.find('q2-radio[value=\"1\"]');\n await secondRadio.setProperty('checked', true);\n await page.waitForChanges();\n\n expect(await page.$eval('body', () => (window as any).changeEventCalled)).toBe(true);\n });\n });\n });\n\n describe('Methods', () => {\n describe('setValue', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-radio-group label=\"My Radio Group\">\n <q2-radio value=\"value-1\" label=\"Radio 1\"></q2-radio>\n <q2-radio value=\"value-2\" label=\"Radio 2\"></q2-radio>\n <q2-radio value=\"value-3\" label=\"Radio 3\"></q2-radio>\n <q2-radio value=\"value-4\" label=\"Radio 3\"></q2-radio>\n <q2-radio value=\"value-5\" label=\"Radio 3\"></q2-radio>\n </q2-radio-group>\n `,\n });\n await page.waitForChanges();\n });\n\n it('selects the radio for the provided value', async () => {\n const radioGroup = await page.find('q2-radio-group');\n const radioGroupChangeSpy = await radioGroup.spyOnEvent('change');\n\n expect(radioGroupChangeSpy).toHaveReceivedEventTimes(0);\n expect(await getActiveElementTestId(page)).toBeNull();\n\n await radioGroup.callMethod('setValue', 'value-3');\n await page.waitForChanges();\n\n expect(radioGroupChangeSpy).toHaveReceivedEventTimes(1);\n expect(radioGroupChangeSpy).toHaveReceivedEventDetail({\n value: 'value-3',\n });\n\n const allRadios = await page.findAll('q2-radio');\n expect(allRadios[0]).not.toHaveAttribute('checked');\n expect(allRadios[1]).not.toHaveAttribute('checked');\n expect(allRadios[2]).toHaveAttribute('checked');\n expect(allRadios[3]).not.toHaveAttribute('checked');\n expect(allRadios[4]).not.toHaveAttribute('checked');\n\n expect(await getActiveElementTestId(page)).toEqual('q2RadioInnerRadioBox');\n });\n\n it('does not select any radio when the provided value is not found', async () => {\n const radioGroup = await page.find('q2-radio-group');\n const radioGroupChangeSpy = await radioGroup.spyOnEvent('change');\n\n expect(radioGroupChangeSpy).toHaveReceivedEventTimes(0);\n expect(await getActiveElementTestId(page)).toBeNull();\n\n await radioGroup.callMethod('setValue', 'value-10');\n await page.waitForChanges();\n\n expect(radioGroupChangeSpy).toHaveReceivedEventTimes(0);\n\n const allRadios = await page.findAll('q2-radio');\n expect(allRadios[0]).not.toHaveAttribute('checked');\n expect(allRadios[1]).not.toHaveAttribute('checked');\n expect(allRadios[2]).not.toHaveAttribute('checked');\n expect(allRadios[3]).not.toHaveAttribute('checked');\n expect(allRadios[4]).not.toHaveAttribute('checked');\n\n expect(await getActiveElementTestId(page)).toBeNull();\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-radio-group-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-radio-group-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage } from '@stencil/core/testing';\nimport { setup, dispatchEvent, getActiveElementTestId, getListOfStyleCompilationIssues } from '../helpers';\n\ndescribe('q2-radio-group', () => {\n let page: E2EPage;\n let radioGroup: E2EElement;\n\n const setupPage = async (props: string = '', numberOfRadios: number = 3, checkedRadios: number[] = []) => {\n props = props ? ` ${props}` : '';\n const radios = Array.from(\n { length: numberOfRadios },\n (_, i) =>\n `<q2-radio value=\"${i + 1}\" label=\"${i + 1}label\"${\n checkedRadios.includes(i + 1) ? ' checked=\"true\"' : ''\n }></q2-radio>`\n ).join('');\n const page = await setup({\n html: `\n <q2-radio-group \"${props}>\n ${radios}\n </q2-radio-group>\n `,\n });\n await page.waitForChanges();\n\n return page;\n };\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-radio-group></q2-radio-group>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-radio-group')).toHaveLength(0);\n });\n\n it('renders with label', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\"', 0);\n const label = await page.find('q2-radio-group >>> legend');\n\n expect(label).not.toBeNull();\n expect(label.innerText).toEqual('My Radio Group');\n });\n\n it('assigns name to all radios and updates if name changes', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\"', 2);\n let firstRadio = await page.find('q2-radio:nth-child(1)');\n let secondRadio = await page.find('q2-radio:nth-child(2)');\n\n expect(firstRadio.getAttribute('name')).toEqual('testname');\n expect(secondRadio.getAttribute('name')).toEqual('testname');\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('name', 'newname');\n\n await page.waitForChanges();\n\n firstRadio = await page.find('q2-radio:nth-child(1)');\n secondRadio = await page.find('q2-radio:nth-child(2)');\n\n expect(firstRadio.getAttribute('name')).toEqual('newname');\n expect(secondRadio.getAttribute('name')).toEqual('newname');\n });\n\n it('assigns checked value on init and whenever value changes', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"2\"', 2);\n let firstRadio = await page.find('q2-radio:nth-child(1)');\n let secondRadio = await page.find('q2-radio:nth-child(2)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual('');\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('value', '1');\n\n await page.waitForChanges();\n\n firstRadio = await page.find('q2-radio:nth-child(1)');\n secondRadio = await page.find('q2-radio:nth-child(2)');\n\n expect(firstRadio.getAttribute('checked')).toEqual('');\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n });\n\n it('assigns checked value on init for individual radio(s) that have checked atttribute === true, and no value is set for radio-group', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\"', 3, [2]);\n let firstRadio = await page.find('q2-radio:nth-child(1)');\n let secondRadio = await page.find('q2-radio:nth-child(2)');\n let thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual('');\n expect(thirdRadio.getAttribute('checked')).toEqual(null);\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('value', '3');\n\n await page.waitForChanges();\n\n firstRadio = await page.find('q2-radio:nth-child(1)');\n secondRadio = await page.find('q2-radio:nth-child(2)');\n thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n expect(thirdRadio.getAttribute('checked')).toEqual('');\n });\n\n it('assigns checked value on init for when radio-group value is set, and ignores / removes checked value individual radio preset checked={true}', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"2\"', 3, [1, 3]);\n let firstRadio = await page.find('q2-radio:nth-child(1)');\n let secondRadio = await page.find('q2-radio:nth-child(2)');\n let thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual('');\n expect(thirdRadio.getAttribute('checked')).toEqual(null);\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('value', '3');\n\n await page.waitForChanges();\n\n firstRadio = await page.find('q2-radio:nth-child(1)');\n secondRadio = await page.find('q2-radio:nth-child(2)');\n thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n expect(thirdRadio.getAttribute('checked')).toEqual('');\n });\n\n it('does not assign \"checked\" value on init for when radio-group value is not set, or any q2-radio preset checked={true}', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\"');\n let firstRadio = await page.find('q2-radio:nth-child(1)');\n let secondRadio = await page.find('q2-radio:nth-child(2)');\n let thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n expect(thirdRadio.getAttribute('checked')).toEqual(null);\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('value', '3');\n\n await page.waitForChanges();\n\n firstRadio = await page.find('q2-radio:nth-child(1)');\n secondRadio = await page.find('q2-radio:nth-child(2)');\n thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n expect(thirdRadio.getAttribute('checked')).toEqual('');\n });\n\n it('will update name, checked and disabled on new radio if added dynamically (mutation observer)', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" disabled name=\"testname\" value=\"3\"');\n await page.$eval('q2-radio-group', radioGroup => {\n const newRadio = document.createElement('q2-radio');\n newRadio.label = '3label';\n newRadio.value = '3';\n radioGroup.appendChild(newRadio);\n });\n await page.waitForChanges();\n const thirdRadio = await page.find('q2-radio:nth-child(3');\n\n expect(thirdRadio.getAttribute('name')).toEqual('testname');\n expect(thirdRadio.getAttribute('checked')).toEqual('');\n expect(await thirdRadio.getProperty('groupDisabled')).toEqual(true);\n });\n\n it('assigns tabIndex value of 0 to first radio in group, and then -1 for all following radios on init, and assigns -1 to all that are not selected there after', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\"');\n const firstRadio = await page.find('q2-radio:nth-child(1)');\n const secondRadio = await page.find('q2-radio:nth-child(2)');\n const thirdRadio = await page.find('q2-radio:nth-child(3)');\n\n expect(await firstRadio.getProperty('tabIndex')).toEqual(0);\n expect(await secondRadio.getProperty('tabIndex')).toEqual(-1);\n expect(await thirdRadio.getProperty('tabIndex')).toEqual(-1);\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('value', '2');\n await page.waitForChanges();\n\n expect(await firstRadio.getProperty('tabIndex')).toEqual(-1);\n expect(await secondRadio.getProperty('tabIndex')).toEqual(0);\n expect(await thirdRadio.getProperty('tabIndex')).toEqual(-1);\n\n radioGroup.setProperty('value', '3');\n await page.waitForChanges();\n\n expect(await firstRadio.getProperty('tabIndex')).toEqual(-1);\n expect(await secondRadio.getProperty('tabIndex')).toEqual(-1);\n expect(await thirdRadio.getProperty('tabIndex')).toEqual(0);\n });\n\n it('disables all radios via groupDisable when radio group is disabled', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"2\"', 2);\n let firstRadioInnerInput = await page.find('q2-radio:nth-child(1) >>> input ');\n let secondRadioInnerInput = await page.find('q2-radio:nth-child(2) >>> input');\n\n expect(firstRadioInnerInput.getAttribute('disabled')).toEqual(null);\n expect(secondRadioInnerInput.getAttribute('disabled')).toEqual(null);\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setProperty('disabled', true);\n await page.waitForChanges();\n firstRadioInnerInput = await page.find('q2-radio:nth-child(1) >>> input');\n secondRadioInnerInput = await page.find('q2-radio:nth-child(2) >>> input ');\n\n expect(firstRadioInnerInput.getAttribute('disabled')).toEqual('');\n expect(secondRadioInnerInput.getAttribute('disabled')).toEqual('');\n });\n\n describe('Props', () => {\n const getActiveElementValue = async (page: E2EPage) => {\n return page.$eval('body', () => document.activeElement.getAttribute('value'));\n };\n\n describe('tilelayout', () => {\n it('converts to tileLayout=true when provided', async () => {\n page = await setupPage('label=\"My Radio Group\" tilelayout');\n radioGroup = await page.find('q2-radio-group');\n\n expect(radioGroup).toHaveAttribute('tile-layout');\n expect(await radioGroup.getProperty('tilelayout')).toBeUndefined();\n });\n\n it('converts to tileLayout=false when provided as \"false\"', async () => {\n page = await setupPage('label=\"My Radio Group\" tilelayout=\"false\"');\n radioGroup = await page.find('q2-radio-group');\n\n expect(radioGroup).not.toHaveAttribute('tile-layout');\n expect(await radioGroup.getProperty('tilelayout')).toBeUndefined();\n });\n });\n\n describe('readonly', () => {\n describe('set to true', () => {\n it('on load child q2-radio components are groupReadonly', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" readonly');\n const radios = await page.findAll('q2-radio');\n\n expect(radios.every(async radio => (await radio.getProperty('groupReadonly')) === true)).toBe(true);\n });\n it('after load child q2-radio components are groupReadonly', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\"');\n const radioGroup = await page.find('q2-radio-group');\n const radios = await page.findAll('q2-radio');\n\n expect(radios.every(async radio => (await radio.getProperty('groupReadonly')) === false)).toBe(\n true\n );\n\n radioGroup.setAttribute('readonly', 'true');\n await page.waitForChanges();\n\n expect(radios.every(async radio => (await radio.getProperty('groupReadonly')) === true)).toBe(true);\n });\n it('allows movement between radio buttons without selecting them', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" value=\"2\" readonly');\n const radioGroup = await page.find('q2-radio-group');\n await radioGroup.focus();\n\n expect(await getActiveElementValue(page)).toEqual('2');\n\n await dispatchEvent(page, 'q2-radio[value=\"2\"]', 'keydown', {\n key: 'ArrowDown',\n bubbles: true,\n });\n await page.waitForChanges();\n\n expect(await getActiveElementValue(page)).toEqual('3');\n expect(await radioGroup.getProperty('value')).toEqual('2');\n\n await dispatchEvent(page, 'q2-radio[value=\"3\"]', 'keydown', {\n key: 'ArrowUp',\n bubbles: true,\n });\n await page.waitForChanges();\n\n expect(await getActiveElementValue(page)).toEqual('2');\n expect(await radioGroup.getProperty('value')).toEqual('2');\n\n await dispatchEvent(page, 'q2-radio[value=\"2\"]', 'keydown', {\n key: 'ArrowUp',\n bubbles: true,\n });\n await page.waitForChanges();\n\n expect(await getActiveElementValue(page)).toEqual('1');\n expect(await radioGroup.getProperty('value')).toEqual('2');\n });\n\n it('allows clicking radio buttons without selecting them', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" value=\"2\" readonly');\n const radioGroup = await page.find('q2-radio-group');\n const radios = await page.findAll('q2-radio');\n await radios[0].click();\n\n expect(await getActiveElementValue(page)).toEqual('1');\n expect(await radioGroup.getProperty('value')).toEqual('2');\n });\n });\n describe('set to false', () => {\n it('on load child q2-radio components are NOT groupReadonly', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\"');\n const radios = await page.findAll('q2-radio');\n\n expect(radios.every(async radio => (await radio.getProperty('groupReadonly')) === false)).toBe(\n true\n );\n });\n it('after load child q2-radio components are NOT groupReadonly', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" readonly');\n const radioGroup = await page.find('q2-radio-group');\n const radios = await page.findAll('q2-radio');\n\n expect(radios.every(async radio => (await radio.getProperty('groupReadonly')) === true)).toBe(true);\n\n radioGroup.setAttribute('groupReadonly', 'false');\n await page.waitForChanges();\n\n expect(radios.every(async radio => (await radio.getProperty('groupReadonly')) === false)).toBe(\n true\n );\n });\n });\n });\n });\n\n it('when a radio is selected radio group emits change event', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"2\"', 2);\n const radioGroup = await page.find('q2-radio-group');\n const changeSpy = await radioGroup.spyOnEvent('change');\n await dispatchEvent(page, ['q2-radio:nth-child(1)', 'label'], 'click');\n\n // change event is fired with appropriate value\n expect(changeSpy).toHaveReceivedEventDetail({ value: '1' });\n\n const value = await radioGroup.getProperty('value');\n\n // value automatically updated by default change handler\n expect(value).toEqual('1');\n });\n\n it('can override default on change', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"2\"', 2);\n const radioGroup = await page.find('q2-radio-group');\n const changeSpy = await radioGroup.spyOnEvent('change');\n await page.$eval('q2-radio-group', radioGroup => {\n (radioGroup as HTMLQ2RadioGroupElement).onchange = function (event) {\n event.stopPropagation();\n // do nothing\n };\n });\n await dispatchEvent(page, ['q2-radio:nth-child(1)', 'label'], 'click');\n\n // change event is fired with appropriate value\n expect(changeSpy).toHaveReceivedEventDetail({ value: '1' });\n\n const value = await radioGroup.getProperty('value');\n\n expect(value).toEqual('2');\n });\n\n it('allows spacebar to select first option when focused and no options are selected', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\"', 2);\n const firstRadio = await page.find('q2-radio');\n const firstRadioInput = await page.find('q2-radio >>> input');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n\n await firstRadioInput.press(' ');\n await page.waitForChanges();\n\n expect(await firstRadio.getProperty('checked')).toEqual(true);\n });\n it('should render a localized optional string when the optional attribute is passed', async function (): Promise<void> {\n page = await setupPage('label=\"foo\" name=\"testname\" optional', 2);\n const label = await page.find('q2-radio-group >>> legend');\n\n // a localized optional is shown in the label\n expect(label.innerText.trim()).toEqual('footecton.element.input.optional');\n });\n it('should show a tile format when tile option is passed', async (): Promise<void> => {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\"', 2);\n let svgCheckbox = await page.findAll('q2-radio >>> svg');\n let firstRadio = await page.find('q2-radio >>> div');\n\n expect(svgCheckbox.length).toEqual(2);\n expect(firstRadio.classList.contains('radio-container')).toBeTruthy();\n\n const radioGroup = await page.find('q2-radio-group');\n radioGroup.setAttribute('tilelayout', 'true');\n await page.waitForChanges();\n svgCheckbox = await page.findAll('q2-radio >>> svg');\n firstRadio = await page.find('q2-radio >>> div');\n\n expect(svgCheckbox.length).toEqual(0);\n expect(firstRadio.classList.contains('radio-tile')).toBeTruthy();\n });\n\n it('handles keyboard navigation', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"1\"', 2);\n let firstRadio = await page.find('q2-radio:nth-child(1)');\n let secondRadio = await page.find('q2-radio:nth-child(2)');\n await page.waitForChanges();\n\n expect(firstRadio.getAttribute('checked')).toEqual('');\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n\n await dispatchEvent(page, ['q2-radio-group'], 'keydown', {\n key: 'ArrowDown',\n });\n firstRadio = await page.find('q2-radio:nth-child(1)');\n secondRadio = await page.find('q2-radio:nth-child(2)');\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual('');\n });\n\n it('should work with changing checked attribute programmatically', async function (): Promise<void> {\n page = await setupPage('label=\"My Radio Group\" name=\"testname\" value=\"1\"', 2);\n const group = await page.find('q2-radio-group');\n const firstRadio = await page.find('q2-radio:nth-child(1)');\n const secondRadio = await page.find('q2-radio:nth-child(2)');\n await page.waitForChanges();\n\n expect(firstRadio.getAttribute('checked')).toEqual('');\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n expect(await group.getProperty('value')).toEqual('1');\n\n // change to 2\n secondRadio.setAttribute('checked', '');\n await page.waitForChanges();\n\n expect(firstRadio.getAttribute('checked')).toEqual(null);\n expect(secondRadio.getAttribute('checked')).toEqual('');\n expect(await group.getProperty('value')).toEqual('2');\n\n // change back to 1\n firstRadio.setAttribute('checked', '');\n await page.waitForChanges();\n\n expect(firstRadio.getAttribute('checked')).toEqual('');\n expect(secondRadio.getAttribute('checked')).toEqual(null);\n expect(await group.getProperty('value')).toEqual('1');\n });\n\n describe('focus', () => {\n let page: E2EPage;\n let radioGroup: E2EElement;\n beforeEach(async () => {\n page = await setupPage('label=\"My Radio Group\"', 2);\n radioGroup = await page.find('q2-radio-group');\n\n expect(await activeValue(page)).toBeUndefined();\n });\n\n const activeValue = async (page: E2EPage) => {\n return page.evaluate(() => document.activeElement.closest('q2-radio')?.value);\n };\n\n it('focuses inner button when focus event is dispatched', async function (): Promise<void> {\n await radioGroup.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await activeValue(page)).toEqual('1');\n });\n\n it('focuses inner button when element.focus() is called', async function (): Promise<void> {\n await radioGroup.focus();\n await page.waitForChanges();\n\n expect(await activeValue(page)).toEqual('1');\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-1689', () => {\n let page: E2EPage;\n beforeEach(async () => {\n page = await setup({\n html: `\n <script>\n function changeHandler() {\n window.changeEventCalled = true;\n }\n </script>\n <q2-radio-group value=\"2\" onChange=\"changeHandler()\">\n <q2-radio value=\"1\" label=\"1\"></q2-radio>\n <q2-radio value=\"2\" label=\"2\"></q2-radio>\n </q2-radio-group>\n `,\n });\n });\n\n it('does not emit a change event on initial render if value is set', async () => {\n expect(await page.$eval('body', () => (window as any).changeEventCalled)).toBeUndefined();\n });\n\n it('does emit a change event when an option is selected', async () => {\n const secondRadio = await page.find('q2-radio[value=\"1\"]');\n await secondRadio.setProperty('checked', true);\n await page.waitForChanges();\n\n expect(await page.$eval('body', () => (window as any).changeEventCalled)).toBe(true);\n });\n });\n });\n\n describe('Methods', () => {\n describe('setValue', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-radio-group label=\"My Radio Group\">\n <q2-radio value=\"value-1\" label=\"Radio 1\"></q2-radio>\n <q2-radio value=\"value-2\" label=\"Radio 2\"></q2-radio>\n <q2-radio value=\"value-3\" label=\"Radio 3\"></q2-radio>\n <q2-radio value=\"value-4\" label=\"Radio 3\"></q2-radio>\n <q2-radio value=\"value-5\" label=\"Radio 3\"></q2-radio>\n </q2-radio-group>\n `,\n });\n await page.waitForChanges();\n });\n\n it('selects the radio for the provided value', async () => {\n const radioGroup = await page.find('q2-radio-group');\n const radioGroupChangeSpy = await radioGroup.spyOnEvent('change');\n\n expect(radioGroupChangeSpy).toHaveReceivedEventTimes(0);\n expect(await getActiveElementTestId(page)).toBeNull();\n\n await radioGroup.callMethod('setValue', 'value-3');\n await page.waitForChanges();\n\n expect(radioGroupChangeSpy).toHaveReceivedEventTimes(1);\n expect(radioGroupChangeSpy).toHaveReceivedEventDetail({\n value: 'value-3',\n });\n\n const allRadios = await page.findAll('q2-radio');\n expect(allRadios[0]).not.toHaveAttribute('checked');\n expect(allRadios[1]).not.toHaveAttribute('checked');\n expect(allRadios[2]).toHaveAttribute('checked');\n expect(allRadios[3]).not.toHaveAttribute('checked');\n expect(allRadios[4]).not.toHaveAttribute('checked');\n\n expect(await getActiveElementTestId(page)).toEqual('q2RadioInnerRadioBox');\n });\n\n it('does not select any radio when the provided value is not found', async () => {\n const radioGroup = await page.find('q2-radio-group');\n const radioGroupChangeSpy = await radioGroup.spyOnEvent('change');\n\n expect(radioGroupChangeSpy).toHaveReceivedEventTimes(0);\n expect(await getActiveElementTestId(page)).toBeNull();\n\n await radioGroup.callMethod('setValue', 'value-10');\n await page.waitForChanges();\n\n expect(radioGroupChangeSpy).toHaveReceivedEventTimes(0);\n\n const allRadios = await page.findAll('q2-radio');\n expect(allRadios[0]).not.toHaveAttribute('checked');\n expect(allRadios[1]).not.toHaveAttribute('checked');\n expect(allRadios[2]).not.toHaveAttribute('checked');\n expect(allRadios[3]).not.toHaveAttribute('checked');\n expect(allRadios[4]).not.toHaveAttribute('checked');\n\n expect(await getActiveElementTestId(page)).toBeNull();\n });\n });\n });\n});\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getActiveElementTestId, setup, testDeprecatedAriaLabel } from "../helpers";
|
|
1
|
+
import { getActiveElementTestId, getListOfStyleCompilationIssues, setup, testDeprecatedAriaLabel } from "../helpers";
|
|
2
2
|
describe('q2-radio', () => {
|
|
3
3
|
let page;
|
|
4
4
|
const setupPage = async (props = '', label = 'My Radio') => {
|
|
@@ -18,6 +18,10 @@ describe('q2-radio', () => {
|
|
|
18
18
|
await page.$eval('q2-radio', (el) => el.click());
|
|
19
19
|
await page.waitForChanges();
|
|
20
20
|
};
|
|
21
|
+
it('properly compiles CSS vars and functions', async () => {
|
|
22
|
+
const page = await setup({ html: '<q2-radio></q2-radio>' });
|
|
23
|
+
expect(await getListOfStyleCompilationIssues(page, 'q2-radio')).toHaveLength(0);
|
|
24
|
+
});
|
|
21
25
|
it('renders with properties passed to inner input', async function () {
|
|
22
26
|
page = await setupPage('value="1" disabled checked name="testName"');
|
|
23
27
|
const radio = await page.find('q2-radio');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-radio-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-radio-test.e2e.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEpF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACtB,IAAI,IAAa,CAAC;IAElB,MAAM,SAAS,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE,QAAgB,UAAU,EAAE,EAAE;QACvE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;+BACa,KAAK,IAAI,KAAK;SACpC;SACA,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,eAAC,OAAA,MAAA,MAAA,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,0CAAE,OAAO,mCAAI,KAAK,CAAA,EAAA,CAAC,CAAC;IAChG,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;QACvC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,EAAsB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC,CAAC;IAEF,EAAE,CAAC,+CAA+C,EAAE,KAAK;QACrD,IAAI,GAAG,MAAM,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEzD,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC7D,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE9D,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAE5D,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC7D,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAClE,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QACnE,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QAE9B,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACtC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAE5D,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACrD,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAEnD,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACrB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;gBAC3C,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAE7C,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;gBAEvB,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;gBACrD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;oBACrB,IAAI,EAAE,8CAA8C;iBACvD,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAEzD,MAAM,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAEtD,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAElD,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAClD,MAAM,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;gBACrD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;oBACrB,IAAI,EAAE,8CAA8C;iBACvD,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAEzD,MAAM,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAEtD,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAElD,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAClD,MAAM,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;YAC3B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;gBACzB,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;oBAC3D,IAAI,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,CAAC;oBACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAE1C,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAE7C,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;oBAEvB,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;oBAC9D,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAE1C,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAE7C,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;oBACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;oBAEvB,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;gBAC1B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;oBACnD,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAE1C,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAE7C,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;oBAEvB,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzC,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;oBACtD,IAAI,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,CAAC;oBACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAE1C,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAE7C,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;oBAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;oBAEvB,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzC,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,kDAAkD,EAAE,KAAK;YACxD,MAAM,UAAU,GACZ,8MAA8M,CAAC;YACnN,IAAI,GAAG,MAAM,SAAS,CAAC,4CAA4C,EAAE,UAAU,CAAC,CAAC;YACjF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAE/C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,KAAK,GAAG,UAAU,CAAC;YACzB,IAAI,GAAG,MAAM,SAAS,CAAC,eAAe,KAAK,GAAG,CAAC,CAAC;YAChD,MAAM,uBAAuB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;YAElE,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { E2EPage } from '@stencil/core/testing';\nimport { getActiveElementTestId, setup, testDeprecatedAriaLabel } from '../helpers';\n\ndescribe('q2-radio', () => {\n let page: E2EPage;\n\n const setupPage = async (props: string = '', label: string = 'My Radio') => {\n props = props ? ` ${props}` : '';\n page = await setup({\n html: `\n <q2-radio label=\"${label}\"${props}></q2-radio>\n `,\n });\n await page.waitForChanges();\n\n return page;\n };\n\n const isChecked = async (page: E2EPage) => {\n return page.$eval('q2-radio', el => el.shadowRoot.querySelector('input')?.checked ?? false);\n };\n\n const clickRadio = async (page: E2EPage) => {\n await page.$eval('q2-radio', (el: HTMLQ2RadioElement) => el.click());\n await page.waitForChanges();\n };\n\n it('renders with properties passed to inner input', async function (): Promise<void> {\n page = await setupPage('value=\"1\" disabled checked name=\"testName\"');\n const radio = await page.find('q2-radio');\n let radioLabel = await page.find('q2-radio >>> .label-content');\n const radioInput = await page.find('q2-radio >>> input');\n\n expect(radioLabel).toEqualText('My Radio');\n expect(radioInput).toEqualAttribute('name', 'testName');\n expect(radioInput).toHaveAttribute('disabled');\n expect(await radio.getProperty('hideLabel')).toBeUndefined();\n expect(await radio.getProperty('checked')).toEqual(true);\n expect(await radioInput.getProperty('checked')).toEqual(true);\n\n radio.setProperty('ariaLabel', 'My Aria Label');\n await page.waitForChanges();\n radioLabel = await page.find('q2-radio >>> .label-content');\n\n expect(await radio.getProperty('ariaLabel')).toBeUndefined();\n expect(await radio.getProperty('hideLabel')).toEqual(true);\n expect(await radio.getProperty('label')).toEqual('My Aria Label');\n expect(radioInput).toEqualAttribute('aria-label', 'My Aria Label');\n expect(radioLabel).toBeNull();\n\n radio.setProperty('hideLabel', false);\n radio.setProperty('disabled', false);\n await page.waitForChanges();\n radioLabel = await page.find('q2-radio >>> .label-content');\n\n expect(radioLabel).toEqualText('My Aria Label');\n expect(radioInput).not.toHaveAttribute('aria-label');\n expect(radioInput).not.toHaveAttribute('disabled');\n\n radio.setProperty('groupDisabled', true);\n await page.waitForChanges();\n\n expect(radioInput).toHaveAttribute('disabled');\n });\n\n describe('Methods', () => {\n describe('click', () => {\n it('selects the radio when called', async () => {\n page = await setupPage();\n const radio = await page.find('q2-radio');\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n\n await clickRadio(page);\n\n expect(await isChecked(page)).toBe(true);\n expect(radio).toHaveAttribute('checked');\n });\n\n it('does not select the radio when readonly', async () => {\n const page = await setup({\n html: `<q2-radio label=\"Label\" readonly></q2-radio>`,\n });\n const radio = await page.find('q2-radio');\n const innerRadio = await page.find('q2-radio >>> input');\n\n expect(await getActiveElementTestId(page)).toBeNull();\n\n expect(radio).not.toHaveAttribute('checked');\n expect(innerRadio).not.toHaveAttribute('checked');\n\n await page.$eval('q2-radio', el => el.click());\n await page.waitForChanges();\n\n expect(radio).not.toHaveAttribute('checked');\n expect(innerRadio).not.toHaveAttribute('checked');\n expect(await getActiveElementTestId(page)).toEqual('q2RadioInnerRadioBox');\n });\n\n it('does not select the radio when disabled', async () => {\n const page = await setup({\n html: `<q2-radio label=\"Label\" disabled></q2-radio>`,\n });\n const radio = await page.find('q2-radio');\n const innerRadio = await page.find('q2-radio >>> input');\n\n expect(await getActiveElementTestId(page)).toBeNull();\n\n expect(radio).not.toHaveAttribute('checked');\n expect(innerRadio).not.toHaveAttribute('checked');\n\n await page.$eval('q2-radio', el => el.click());\n await page.waitForChanges();\n\n expect(radio).not.toHaveAttribute('checked');\n expect(innerRadio).not.toHaveAttribute('checked');\n expect(await getActiveElementTestId(page)).toBeNull();\n });\n });\n });\n\n describe('Props', () => {\n describe('groupReadonly', () => {\n describe('set to true', () => {\n it('on load does not check the radio when clicked', async () => {\n page = await setupPage('group-readonly');\n const radio = await page.find('q2-radio');\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n\n await clickRadio(page);\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n });\n it('after load does not check the radio when clicked', async () => {\n page = await setupPage();\n const radio = await page.find('q2-radio');\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n\n radio.setProperty('groupReadonly', true);\n await page.waitForChanges();\n await clickRadio(page);\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n });\n });\n describe('set to false', () => {\n it('on load checks the radio when clicked', async () => {\n page = await setupPage();\n const radio = await page.find('q2-radio');\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n\n await clickRadio(page);\n\n expect(await isChecked(page)).toBe(true);\n expect(radio).toHaveAttribute('checked');\n });\n it('after load checks the radio when clicked', async () => {\n page = await setupPage('group-readonly');\n const radio = await page.find('q2-radio');\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n\n radio.setProperty('groupReadonly', false);\n await page.waitForChanges();\n await clickRadio(page);\n\n expect(await isChecked(page)).toBe(true);\n expect(radio).toHaveAttribute('checked');\n });\n });\n });\n });\n\n describe('Regressions', () => {\n it('keeps the svg at 18px wide even with long labels', async function (): Promise<void> {\n const lotsOfText =\n 'Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent sed ipsum iaculis, dignissim orci quis, mollis nibh. Pellentesque eget dolor tristique, placerat nibh sollicitudin, vehicula sapien. ';\n page = await setupPage('value=\"1\" disabled checked name=\"testName\"', lotsOfText);\n const svg = await page.find('q2-radio >>> svg');\n const svgStyles = await svg.getComputedStyle();\n\n expect(svgStyles.width).toEqual('18px');\n });\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n page = await setupPage(`aria-label=\"${label}\"`);\n await testDeprecatedAriaLabel(await page.find('q2-radio'), label);\n\n expect(await page.find('q2-radio >>> input')).toEqualAttribute('aria-label', label);\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-radio-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-radio-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage } from '@stencil/core/testing';\nimport { getActiveElementTestId, getListOfStyleCompilationIssues, setup, testDeprecatedAriaLabel } from '../helpers';\n\ndescribe('q2-radio', () => {\n let page: E2EPage;\n\n const setupPage = async (props: string = '', label: string = 'My Radio') => {\n props = props ? ` ${props}` : '';\n page = await setup({\n html: `\n <q2-radio label=\"${label}\"${props}></q2-radio>\n `,\n });\n await page.waitForChanges();\n\n return page;\n };\n\n const isChecked = async (page: E2EPage) => {\n return page.$eval('q2-radio', el => el.shadowRoot.querySelector('input')?.checked ?? false);\n };\n\n const clickRadio = async (page: E2EPage) => {\n await page.$eval('q2-radio', (el: HTMLQ2RadioElement) => el.click());\n await page.waitForChanges();\n };\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-radio></q2-radio>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-radio')).toHaveLength(0);\n });\n\n it('renders with properties passed to inner input', async function (): Promise<void> {\n page = await setupPage('value=\"1\" disabled checked name=\"testName\"');\n const radio = await page.find('q2-radio');\n let radioLabel = await page.find('q2-radio >>> .label-content');\n const radioInput = await page.find('q2-radio >>> input');\n\n expect(radioLabel).toEqualText('My Radio');\n expect(radioInput).toEqualAttribute('name', 'testName');\n expect(radioInput).toHaveAttribute('disabled');\n expect(await radio.getProperty('hideLabel')).toBeUndefined();\n expect(await radio.getProperty('checked')).toEqual(true);\n expect(await radioInput.getProperty('checked')).toEqual(true);\n\n radio.setProperty('ariaLabel', 'My Aria Label');\n await page.waitForChanges();\n radioLabel = await page.find('q2-radio >>> .label-content');\n\n expect(await radio.getProperty('ariaLabel')).toBeUndefined();\n expect(await radio.getProperty('hideLabel')).toEqual(true);\n expect(await radio.getProperty('label')).toEqual('My Aria Label');\n expect(radioInput).toEqualAttribute('aria-label', 'My Aria Label');\n expect(radioLabel).toBeNull();\n\n radio.setProperty('hideLabel', false);\n radio.setProperty('disabled', false);\n await page.waitForChanges();\n radioLabel = await page.find('q2-radio >>> .label-content');\n\n expect(radioLabel).toEqualText('My Aria Label');\n expect(radioInput).not.toHaveAttribute('aria-label');\n expect(radioInput).not.toHaveAttribute('disabled');\n\n radio.setProperty('groupDisabled', true);\n await page.waitForChanges();\n\n expect(radioInput).toHaveAttribute('disabled');\n });\n\n describe('Methods', () => {\n describe('click', () => {\n it('selects the radio when called', async () => {\n page = await setupPage();\n const radio = await page.find('q2-radio');\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n\n await clickRadio(page);\n\n expect(await isChecked(page)).toBe(true);\n expect(radio).toHaveAttribute('checked');\n });\n\n it('does not select the radio when readonly', async () => {\n const page = await setup({\n html: `<q2-radio label=\"Label\" readonly></q2-radio>`,\n });\n const radio = await page.find('q2-radio');\n const innerRadio = await page.find('q2-radio >>> input');\n\n expect(await getActiveElementTestId(page)).toBeNull();\n\n expect(radio).not.toHaveAttribute('checked');\n expect(innerRadio).not.toHaveAttribute('checked');\n\n await page.$eval('q2-radio', el => el.click());\n await page.waitForChanges();\n\n expect(radio).not.toHaveAttribute('checked');\n expect(innerRadio).not.toHaveAttribute('checked');\n expect(await getActiveElementTestId(page)).toEqual('q2RadioInnerRadioBox');\n });\n\n it('does not select the radio when disabled', async () => {\n const page = await setup({\n html: `<q2-radio label=\"Label\" disabled></q2-radio>`,\n });\n const radio = await page.find('q2-radio');\n const innerRadio = await page.find('q2-radio >>> input');\n\n expect(await getActiveElementTestId(page)).toBeNull();\n\n expect(radio).not.toHaveAttribute('checked');\n expect(innerRadio).not.toHaveAttribute('checked');\n\n await page.$eval('q2-radio', el => el.click());\n await page.waitForChanges();\n\n expect(radio).not.toHaveAttribute('checked');\n expect(innerRadio).not.toHaveAttribute('checked');\n expect(await getActiveElementTestId(page)).toBeNull();\n });\n });\n });\n\n describe('Props', () => {\n describe('groupReadonly', () => {\n describe('set to true', () => {\n it('on load does not check the radio when clicked', async () => {\n page = await setupPage('group-readonly');\n const radio = await page.find('q2-radio');\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n\n await clickRadio(page);\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n });\n it('after load does not check the radio when clicked', async () => {\n page = await setupPage();\n const radio = await page.find('q2-radio');\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n\n radio.setProperty('groupReadonly', true);\n await page.waitForChanges();\n await clickRadio(page);\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n });\n });\n describe('set to false', () => {\n it('on load checks the radio when clicked', async () => {\n page = await setupPage();\n const radio = await page.find('q2-radio');\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n\n await clickRadio(page);\n\n expect(await isChecked(page)).toBe(true);\n expect(radio).toHaveAttribute('checked');\n });\n it('after load checks the radio when clicked', async () => {\n page = await setupPage('group-readonly');\n const radio = await page.find('q2-radio');\n\n expect(await isChecked(page)).toBe(false);\n expect(radio).not.toHaveAttribute('checked');\n\n radio.setProperty('groupReadonly', false);\n await page.waitForChanges();\n await clickRadio(page);\n\n expect(await isChecked(page)).toBe(true);\n expect(radio).toHaveAttribute('checked');\n });\n });\n });\n });\n\n describe('Regressions', () => {\n it('keeps the svg at 18px wide even with long labels', async function (): Promise<void> {\n const lotsOfText =\n 'Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent sed ipsum iaculis, dignissim orci quis, mollis nibh. Pellentesque eget dolor tristique, placerat nibh sollicitudin, vehicula sapien. ';\n page = await setupPage('value=\"1\" disabled checked name=\"testName\"', lotsOfText);\n const svg = await page.find('q2-radio >>> svg');\n const svgStyles = await svg.getComputedStyle();\n\n expect(svgStyles.width).toEqual('18px');\n });\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n page = await setupPage(`aria-label=\"${label}\"`);\n await testDeprecatedAriaLabel(await page.find('q2-radio'), label);\n\n expect(await page.find('q2-radio >>> input')).toEqualAttribute('aria-label', label);\n });\n });\n});\n"]}
|