q2-tecton-elements 1.56.2 → 1.56.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle-report.json +303 -245
- package/dist/cjs/{index-99667782.js → index-905f4c87.js} +1 -5
- package/dist/cjs/index-905f4c87.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-group.cjs.entry.js +2 -2
- package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
- package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
- package/dist/cjs/q2-badge_7.cjs.entry.js +12 -4
- package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
- package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
- package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
- package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/q2-currency.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +2 -2
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +33 -32
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +7 -8
- package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-example.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-form.cjs.entry.js +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
- package/dist/cjs/q2-item_3.cjs.entry.js +3 -3
- package/dist/cjs/q2-legend.cjs.entry.js +1 -1
- package/dist/cjs/q2-loc.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +2 -2
- package/dist/cjs/q2-modal.cjs.entry.js +2 -2
- package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
- package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
- package/dist/cjs/q2-option-list_2.cjs.entry.js +54 -63
- package/dist/cjs/q2-option-list_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-option.cjs.entry.js +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
- package/dist/cjs/q2-pill.cjs.entry.js +2 -2
- package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +1 -1
- package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
- package/dist/cjs/q2-resize-observer.cjs.entry.js +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +3 -3
- package/dist/cjs/q2-select.cjs.entry.js +81 -11
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
- package/dist/cjs/q2-tag.cjs.entry.js +2 -2
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +3 -2
- package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
- package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
- package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
- package/dist/collection/components/q2-btn/q2-btn.js +4 -0
- package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +2 -2
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
- package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
- package/dist/collection/components/q2-currency/q2-currency.js +1 -1
- package/dist/collection/components/q2-detail/q2-detail.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +33 -31
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +34 -32
- package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-editable-field/q2-editable-field.js +12 -7
- package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
- package/dist/collection/components/q2-example/q2-example.js +1 -1
- package/dist/collection/components/q2-form/q2-form.js +1 -1
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
- package/dist/collection/components/q2-icon/q2-icon.js +4 -0
- package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input.js +1 -1
- package/dist/collection/components/q2-item/q2-item.js +1 -1
- package/dist/collection/components/q2-legend/q2-legend.js +1 -1
- package/dist/collection/components/q2-list/q2-list.js +1 -1
- package/dist/collection/components/q2-message/q2-message.js +1 -1
- package/dist/collection/components/q2-modal/q2-modal.js +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
- package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
- package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js +1 -0
- package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-pill/q2-pill.js +1 -1
- package/dist/collection/components/q2-popover/q2-popover.css +18 -10
- package/dist/collection/components/q2-popover/q2-popover.js +55 -63
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js +1 -34
- package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js +743 -435
- package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-select/q2-select.js +96 -14
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/components/q2-select/test/q2-select-test.spec.js +327 -0
- package/dist/collection/components/q2-select/test/q2-select-test.spec.js.map +1 -1
- package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +5 -0
- package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-textarea/q2-textarea.js +2 -1
- package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/components/index2.js +1 -4
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-action-group2.js +1 -1
- package/dist/components/q2-action-sheet.js +1 -1
- package/dist/components/q2-avatar2.js +1 -1
- package/dist/components/q2-btn2.js +4 -0
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-carousel-pane.js +2 -2
- package/dist/components/q2-chart-area.js +1 -1
- package/dist/components/q2-chart-bar.js +1 -1
- package/dist/components/q2-chart-donut.js +1 -1
- package/dist/components/q2-currency.js +1 -1
- package/dist/components/q2-detail.js +1 -1
- package/dist/components/q2-dropdown.js +32 -31
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-editable-field.js +7 -8
- package/dist/components/q2-editable-field.js.map +1 -1
- package/dist/components/q2-example.js +1 -1
- package/dist/components/q2-form.js +1 -1
- package/dist/components/q2-formatted-text.js +1 -1
- package/dist/components/q2-icon2.js +4 -0
- package/dist/components/q2-icon2.js.map +1 -1
- package/dist/components/q2-input2.js +1 -1
- package/dist/components/q2-item2.js +1 -1
- package/dist/components/q2-legend2.js +1 -1
- package/dist/components/q2-list2.js +1 -1
- package/dist/components/q2-message2.js +1 -1
- package/dist/components/q2-modal.js +1 -1
- package/dist/components/q2-month-picker.js +2 -2
- package/dist/components/q2-optgroup2.js +1 -1
- package/dist/components/q2-pagination.js +3 -3
- package/dist/components/q2-pill.js +1 -1
- package/dist/components/q2-popover2.js +54 -63
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-relative-time.js +1 -1
- package/dist/components/q2-resize-observer2.js +1 -1
- package/dist/components/q2-section.js +2 -2
- package/dist/components/q2-select2.js +84 -14
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +1 -1
- package/dist/components/q2-stepper.js +1 -1
- package/dist/components/q2-tab-container.js +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tag.js +1 -1
- package/dist/components/q2-textarea.js +2 -1
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/{index-c215e8ef.js → index-f2a66217.js} +2 -5
- package/dist/esm/index-f2a66217.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-group.entry.js +2 -2
- package/dist/esm/q2-action-sheet.entry.js +2 -2
- package/dist/esm/q2-avatar.entry.js +1 -1
- package/dist/esm/q2-badge_7.entry.js +12 -4
- package/dist/esm/q2-badge_7.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +1 -1
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +3 -3
- package/dist/esm/q2-carousel.entry.js +1 -1
- package/dist/esm/q2-chart-area.entry.js +2 -2
- package/dist/esm/q2-chart-bar.entry.js +2 -2
- package/dist/esm/q2-chart-donut.entry.js +2 -2
- package/dist/esm/q2-checkbox-group.entry.js +1 -1
- package/dist/esm/q2-checkbox.entry.js +1 -1
- package/dist/esm/q2-currency.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +1 -1
- package/dist/esm/q2-detail.entry.js +2 -2
- package/dist/esm/q2-dropdown-item.entry.js +1 -1
- package/dist/esm/q2-dropdown.entry.js +33 -32
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +7 -8
- package/dist/esm/q2-editable-field.entry.js.map +1 -1
- package/dist/esm/q2-example.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js +1 -1
- package/dist/esm/q2-form.entry.js +1 -1
- package/dist/esm/q2-formatted-text.entry.js +1 -1
- package/dist/esm/q2-item_3.entry.js +3 -3
- package/dist/esm/q2-legend.entry.js +1 -1
- package/dist/esm/q2-loc.entry.js +1 -1
- package/dist/esm/q2-message.entry.js +2 -2
- package/dist/esm/q2-modal.entry.js +2 -2
- package/dist/esm/q2-month-picker.entry.js +3 -3
- package/dist/esm/q2-optgroup.entry.js +2 -2
- package/dist/esm/q2-option-list_2.entry.js +54 -63
- package/dist/esm/q2-option-list_2.entry.js.map +1 -1
- package/dist/esm/q2-option.entry.js +1 -1
- package/dist/esm/q2-pagination.entry.js +4 -4
- package/dist/esm/q2-pill.entry.js +2 -2
- package/dist/esm/q2-radio-group.entry.js +1 -1
- package/dist/esm/q2-radio.entry.js +1 -1
- package/dist/esm/q2-relative-time.entry.js +2 -2
- package/dist/esm/q2-resize-observer.entry.js +1 -1
- package/dist/esm/q2-section.entry.js +3 -3
- package/dist/esm/q2-select.entry.js +82 -12
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +2 -2
- package/dist/esm/q2-stepper.entry.js +2 -2
- package/dist/esm/q2-tag.entry.js +2 -2
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +3 -2
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/q2-tooltip.entry.js +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/q2-tecton-elements/{index-c215e8ef.js → index-f2a66217.js} +2 -6
- package/dist/q2-tecton-elements/index-f2a66217.js.map +1 -0
- package/dist/q2-tecton-elements/q2-action-group.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-avatar.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-badge_7.entry.js +50 -42
- package/dist/q2-tecton-elements/q2-badge_7.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +21 -21
- package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +80 -80
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-checkbox.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-currency.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.js +39 -39
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +81 -79
- package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +32 -23
- package/dist/q2-tecton-elements/q2-editable-field.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-form.entry.js +10 -10
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-item_3.entry.js +19 -19
- package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-modal.entry.js +24 -24
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +67 -67
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-option-list_2.entry.js +155 -154
- package/dist/q2-tecton-elements/q2-option-list_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.js +42 -42
- package/dist/q2-tecton-elements/q2-pill.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.js +13 -13
- package/dist/q2-tecton-elements/q2-relative-time.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-resize-observer.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-section.entry.js +23 -23
- package/dist/q2-tecton-elements/q2-select.entry.js +146 -88
- package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-stepper.entry.js +21 -21
- package/dist/q2-tecton-elements/q2-tag.entry.js +6 -6
- 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/q2-tecton-elements/q2-textarea.entry.js +4 -3
- package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
- package/dist/types/components/q2-btn/q2-btn.d.ts +1 -0
- package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +7 -8
- package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +2 -1
- package/dist/types/components/q2-icon/q2-icon.d.ts +1 -0
- package/dist/types/components/q2-popover/q2-popover.d.ts +4 -4
- package/dist/types/components/q2-select/q2-select.d.ts +18 -0
- package/package.json +3 -3
- package/dist/cjs/index-99667782.js.map +0 -1
- package/dist/esm/index-c215e8ef.js.map +0 -1
- package/dist/q2-tecton-elements/index-c215e8ef.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-popover-test.e2e.js","sourceRoot":"","sources":["../../../../../src/components/q2-popover/test/q2-popover-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage } from '@stencil/core/testing';\nimport { evaluateA11y, getListOfStyleCompilationIssues, getNestedElementProperty, setup } from '@/utils/helpers';\nimport { Q2Popover } from '../q2-popover';\n\ndescribe('q2-popover', () => {\n let page: E2EPage;\n let popover: E2EElement;\n let popoverContainer: E2EElement;\n\n const dispatchPopoverState = async (state: { open: boolean }) => {\n await page.$eval(\n 'q2-popover',\n (el, { open }) => el.dispatchEvent(new CustomEvent('popoverState', { detail: { open } })),\n state\n );\n };\n\n const getPopProperty = async (propertyName: string) => {\n return page.$eval(\n 'q2-popover',\n (el, propName) =>\n el.shadowRoot.querySelector<HTMLDivElement>('.container').style.getPropertyValue(propName),\n propertyName\n );\n };\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-popover></q2-popover>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-popover')).toHaveLength(0);\n });\n\n describe('Props', () => {\n describe('open', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-popover>\n <div style=\"height: 400px; width: 200px\"></div>\n </q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n await page.$eval('q2-popover', (el: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n el.controlElement = controlElement;\n });\n });\n\n it('opens the popover when the open property is changed to true', async () => {\n const stateSpy = await popover.spyOnEvent('popoverStateChanged');\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n expect(popover).not.toHaveAttribute('open');\n\n popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(stateSpy).toHaveReceivedEventDetail({ open: true });\n });\n\n it('closes the popover when the open property is changed to false', async () => {\n const stateSpy = await popover.spyOnEvent('popoverStateChanged');\n popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(popover).toHaveAttribute('open');\n\n popover.setProperty('open', false);\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n expect(popover).not.toHaveAttribute('open');\n expect(stateSpy).toHaveReceivedEventDetail({ open: false });\n });\n\n it('adds and removes the currentDirection and --comp-pop-max-height property', async () => {\n const stateSpy = await popover.spyOnEvent('popoverStateChanged');\n\n popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(popover).toHaveAttribute('open');\n expect(await getPopProperty('--comp-pop-max-height')).toBe('390px');\n\n popover.setProperty('open', false);\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n expect(stateSpy).toHaveReceivedEventDetail({ open: false });\n expect(popoverContainer).not.toHaveClass('down');\n expect(await getPopProperty('--comp-pop-max-height')).toBe('');\n });\n });\n\n describe('direction', () => {\n describe('when provided a valid value', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-popover direction=\"up\" id=\"control\">\n <div style=\"height: 400px; width: 200px\"></div>\n </q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n });\n it('sets currentDirection to provided value', async () => {\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).toHaveClass('up');\n });\n });\n\n describe('when provided an invalid value', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-popover direction=\"gibberish\" id=\"control\">\n <div style=\"height: 400px; width: 200px\"></div>\n </q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n });\n it('ignores the direction and uses automated behavior', async () => {\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).toHaveClass('down');\n });\n });\n });\n\n describe('maxHeight', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-popover>\n <div style=\"height: 400px; width: 200px\"></div>\n </q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n });\n\n describe('when provided value is smaller than the available space', () => {\n it('implements the provided value', async () => {\n popover.setProperty('maxHeight', '200px');\n await page.waitForChanges();\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(popover).toHaveAttribute('open');\n expect(await getPopProperty('--comp-pop-max-height')).toBe('200px');\n });\n });\n describe('when provided value is larger than the available space', () => {\n it('implements the available space', async () => {\n popover.setProperty('maxHeight', '500px');\n await page.waitForChanges();\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(popover).toHaveAttribute('open');\n expect(await getPopProperty('--comp-pop-max-height')).toBe('390px');\n });\n });\n describe('when value is not provided', () => {\n it('implements the available space', async () => {\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(popover).toHaveAttribute('open');\n expect(await getPopProperty('--comp-pop-max-height')).toBe('390px');\n });\n });\n });\n\n describe('Events', () => {\n describe('popoverState', () => {\n it('opens the popover when open is passed as true', async () => {\n page = await setup({\n html: `<q2-popover></q2-popover>`,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n const stateSpy = await popover.spyOnEvent('popoverStateChanged');\n\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(stateSpy).toHaveReceivedEventDetail({ open: true });\n });\n\n it('closes the popover when open is passed as false', async () => {\n page = await setup({\n html: `<q2-popover open></q2-popover>`,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n const stateSpy = await popover.spyOnEvent('popoverStateChanged');\n\n expect(popover).toHaveAttribute('open');\n\n await dispatchPopoverState({ open: false });\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n expect(stateSpy).toHaveReceivedEventDetail({ open: false });\n });\n });\n });\n\n describe('Methods', () => {\n describe('toggle', () => {\n it('toggles the value of open', async () => {\n const popover = new Q2Popover();\n expect(popover.open).toBeUndefined();\n popover.toggle();\n expect(popover.open).toBe(true);\n popover.toggle();\n expect(popover.open).toBe(false);\n });\n });\n\n describe('scrollContainerTo', () => {\n it('scrolls the container to the given position', async () => {\n page = await setup({\n html: `\n <q2-popover>\n <div style=\"height: 2000px\"></div>\n </q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n\n popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n\n await popover.callMethod('scrollContainerTo', { top: 1000 });\n await page.waitForChanges();\n\n expect(await getNestedElementProperty(page, ['q2-popover', '.container'], 'scrollTop')).toBe(1000);\n\n await popover.callMethod('scrollContainerTo', { top: 0 });\n await page.waitForChanges();\n\n expect(await getNestedElementProperty(page, ['q2-popover', '.container'], 'scrollTop')).toBe(0);\n });\n });\n });\n\n describe('determinePopDirection', () => {\n describe('when control element has more space below it', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <div style=\"height: 44px; width: 400px; background: black; position: fixed; top: 10px;\" id=\"control\"></div>\n <q2-popover>\n <div style=\"height: 500px\"></div>\n </q2-popover>\n `,\n });\n // await setBodyHeight();\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n await page.$eval('q2-popover', (el: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n el.controlElement = controlElement;\n });\n });\n it('auto-determines the direction to be down', async () => {\n expect(popover).not.toHaveAttribute('direction');\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).not.toHaveClass('up');\n expect(popoverContainer).toHaveClass('down');\n });\n it('sets currentDirection state variable to down', async () => {\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).not.toHaveClass('up');\n expect(popoverContainer).toHaveClass('down');\n });\n it('displays popover content within viewport', async () => {\n expect(popover).not.toHaveAttribute('direction');\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n const containerStyle = await popoverContainer.getComputedStyle();\n const maxHeight = parseInt(await getPopProperty('--comp-pop-max-height'));\n expect(parseInt(containerStyle.height)).toBeLessThan(400);\n expect(maxHeight).toBeLessThan(400);\n });\n });\n\n describe('when control element has more space above it', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <div style=\"height: 44px; width: 400px; background: black; position: fixed; top: 350px\" id=\"control\"></div>\n <q2-popover>\n <div style=\"height: 500px\"></div>\n </q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n await page.$eval('q2-popover', (el: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n el.controlElement = controlElement;\n });\n });\n it('auto-determines the direction to be up', async () => {\n expect(popover).not.toHaveAttribute('direction');\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).not.toHaveClass('down');\n expect(popoverContainer).toHaveClass('up');\n });\n it('sets currentDirection state variable to up', async () => {\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).not.toHaveClass('down');\n expect(popoverContainer).toHaveClass('up');\n });\n it('displays popover content within viewport', async () => {\n expect(popover).not.toHaveAttribute('direction');\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n const containerStyle = await popoverContainer.getComputedStyle();\n const maxHeight = parseInt(await getPopProperty('--comp-pop-max-height'));\n expect(parseInt(containerStyle.height)).toBeLessThan(400);\n expect(maxHeight).toBeLessThan(400);\n });\n });\n\n describe('when page is resized', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <div style=\"height: 50px; \" id=\"control\"></div>\n <q2-popover block>\n <div style=\"height: 800px\"></div>\n <q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 800 });\n await page.waitForChanges();\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n await page.$eval('q2-popover', (el: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n el.controlElement = controlElement;\n });\n });\n\n it('recalculates the width when block is true', async () => {\n expect(popover).not.toHaveAttribute('open');\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n expect(popover).toHaveAttribute('open');\n\n let width = await getPopProperty('--comp-pop-width');\n expect(parseInt(width)).toBeLessThan(800);\n\n await page.setViewport({ width: 200, height: 600 });\n await page.waitForChanges();\n\n width = await getPopProperty('--comp-pop-width');\n expect(parseInt(width)).toBeLessThan(200);\n });\n\n it('recalculates the max-height when page orientation changes', async () => {\n expect(popover).not.toHaveAttribute('open');\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n expect(popover).toHaveAttribute('open');\n\n let maxHeight = await getPopProperty('--comp-pop-max-height');\n expect(parseInt(maxHeight)).toBeLessThan(800);\n\n await page.setViewport({ width: 800, height: 600, isLandscape: true });\n await page.waitForChanges();\n\n maxHeight = await getPopProperty('--comp-pop-max-height');\n expect(parseInt(maxHeight)).toBeLessThan(600);\n });\n\n it('recalculates the max-height when the viewport is resized', async () => {\n expect(popover).not.toHaveAttribute('open');\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n expect(popover).toHaveAttribute('open');\n\n let maxHeight = await getPopProperty('--comp-pop-max-height');\n expect(parseInt(maxHeight)).toBeLessThan(800);\n\n await page.setViewport({ width: 800, height: 600 });\n await page.waitForChanges();\n\n maxHeight = await getPopProperty('--comp-pop-max-height');\n expect(parseInt(maxHeight)).toBeLessThan(600);\n });\n });\n\n describe('when page is scrolled', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <div style=\"height: 300px\"></div>\n <div style=\"height: 50px; width: 200px; background: black;\" id=\"control\"></div>\n <q2-popover>\n <div style=\"height: 800px\"></div>\n </q2-popover>\n <div> style=\"height: 500px\"</div>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n await page.$eval('q2-popover', (el: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n el.controlElement = controlElement;\n });\n });\n\n it('maintains its current direction until closed', async () => {\n expect(popover).not.toHaveAttribute('open');\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).toHaveClass('up');\n // Scroll down 300px\n await page.$eval('#control', () => {\n window.scrollBy(0, 300);\n window.visualViewport.dispatchEvent(new Event('scroll'));\n });\n await page.waitForChanges();\n expect(popoverContainer).toHaveClass('up');\n });\n });\n });\n });\n\n describe('Deprecations', () => {\n describe('calls console.warn for deprecated `minHeight` prop', () => {\n it('by using handleDeprecationWarning if set on popover element', async () => {\n const warnMock = jest.spyOn(console, 'warn');\n page = await setup({ html: `<q2-popover min-height=\"100\"></q2-popover>` });\n await page.waitForChanges();\n expect(warnMock).toHaveBeenCalledTimes(1);\n warnMock.mockReset();\n });\n it('by using handleDeprecationWarning if set after componentDidLoad', async () => {\n const warnMock = jest.spyOn(console, 'warn');\n page = await setup({ html: `<q2-popover></q2-popover>` });\n popover = await page.find('q2-popover');\n expect(warnMock).toHaveBeenCalledTimes(0);\n popover.setAttribute('min-height', '100');\n await page.waitForChanges();\n expect(warnMock).toHaveBeenCalledTimes(1);\n warnMock.mockReset();\n });\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-2699', () => {\n it('calls viewportChanged when document is scrolled', async () => {\n page = await setup({\n html: `\n <div style=\"height: 3000px\">\n <div style=\"height: 50px;\" id=\"control\"></div>\n <q2-popover>\n <q2-option-list>\n <q2-option value=\"1\">Account 1</q2-option>\n <q2-option value=\"2\">Account 2</q2-option>\n <q2-option value=\"3\">Account 3</q2-option>\n </q2-option-list>\n <q2-popover>\n </div>\n `,\n });\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n\n await page.$eval('q2-popover', (element: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n element.controlElement = controlElement;\n });\n await page.waitForChanges();\n\n await popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-top')).toEqual('58px');\n\n await page.$eval('body', () => window.scrollTo(0, 300));\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-top')).toEqual('-242px');\n });\n\n it('calls viewportChanged when another element is scrolled', async () => {\n page = await setup({\n html: `\n <div style=\"height: 300px; overflow-y: auto;\" id=\"scroll\">\n <div style=\"height: 3000px;\">\n <div style=\"height: 50px;\" id=\"control\"></div>\n <q2-popover>\n <q2-option-list>\n <q2-option value=\"1\">Account 1</q2-option>\n <q2-option value=\"2\">Account 2</q2-option>\n <q2-option value=\"3\">Account 3</q2-option>\n </q2-option-list>\n <q2-popover>\n </div>\n </div>\n `,\n });\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n\n await page.$eval('q2-popover', (element: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n element.controlElement = controlElement;\n });\n await page.waitForChanges();\n\n await popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-top')).toEqual('58px');\n\n await page.$eval('#scroll', element => element.scrollTo(0, 500));\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-top')).toEqual('-442px');\n });\n\n it('correctly sets the left direction on horizontal scroll', async () => {\n page = await setup({\n html: `\n <div style=\"width: 300px; overflow-x: auto;\" id=\"scroll\">\n <div style=\"width: 3000px;\">\n <div style=\"height: 50px;\" id=\"control\"></div>\n <q2-popover align=\"left\" style=\"width=\"200px\">\n <q2-option-list>\n <q2-option value=\"1\">Account 1</q2-option>\n <q2-option value=\"2\">Account 2</q2-option>\n <q2-option value=\"3\">Account 3</q2-option>\n </q2-option-list>\n <q2-popover>\n </div>\n </div>\n `,\n });\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n\n await page.$eval('q2-popover', (element: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n element.controlElement = controlElement;\n });\n await page.waitForChanges();\n\n await popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-left')).toEqual('8px');\n\n await page.$eval('#scroll', element => element.scrollTo(500, 0));\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-left')).toEqual('-492px');\n });\n\n it('correctly sets the right direction on horizontal scroll', async () => {\n page = await setup({\n html: `\n <div style=\"width: 300px; overflow-x: auto;\" id=\"scroll\">\n <div style=\"width: 3000px;\">\n <div style=\"height: 50px;\" id=\"control\"></div>\n <q2-popover align=\"right\" style=\"width=\"200px\">\n <q2-option-list>\n <q2-option value=\"1\">Account 1</q2-option>\n <q2-option value=\"2\">Account 2</q2-option>\n <q2-option value=\"3\">Account 3</q2-option>\n </q2-option-list>\n <q2-popover>\n </div>\n </div>\n `,\n });\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n\n await page.$eval('q2-popover', (element: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n element.controlElement = controlElement;\n });\n await page.waitForChanges();\n\n await popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-right')).toEqual('-2208px');\n\n await page.$eval('#scroll', element => element.scrollTo(500, 0));\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-right')).toEqual('-1708px');\n });\n\n it(\"doesn't update the popover direction on scroll\", async () => {\n page = await setup({\n html: `\n <div style=\"height: 3000px\">\n <div style=\"height: 50px; margin-top: 400px\" id=\"control\"></div>\n <q2-popover>\n <q2-option-list>\n <q2-option value=\"1\">Account 1</q2-option>\n <q2-option value=\"2\">Account 2</q2-option>\n <q2-option value=\"3\">Account 3</q2-option>\n </q2-option-list>\n <q2-popover>\n </div>\n `,\n });\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n\n await page.$eval('q2-popover', (element: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n element.controlElement = controlElement;\n });\n await page.waitForChanges();\n\n await popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('up');\n expect(await getPopProperty('--comp-pop-bottom')).toEqual('200px');\n\n await page.$eval('body', () => window.scrollTo(0, 300));\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('up');\n expect(await getPopProperty('--comp-pop-bottom')).toEqual('500px');\n });\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: `\n <q2-popover>\n <div style=\"height: 400px; width: 200px\"></div>\n </q2-popover>\n `,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {\n it('properly hides and shows options to the accessibility tree (TCT-2080)', async () => {\n page = await setup({\n html: `\n <q2-popover>\n <q2-option-list>\n <q2-option value=\"1\">Account 1</q2-option>\n <q2-option value=\"2\">Account 2</q2-option>\n <q2-option value=\"3\">Account 3</q2-option>\n </q2-option-list>\n <q2-popover>\n `,\n });\n\n let snapshot = await page.accessibility.snapshot({\n root: await page.$('q2-option'),\n });\n\n expect(snapshot).toBeNull();\n\n const popover = await page.find('q2-popover');\n await popover.setProperty('open', true);\n await page.waitForChanges();\n\n snapshot = await page.accessibility.snapshot({\n root: await page.$('q2-option'),\n });\n\n expect(snapshot.name).toEqual('Account 1');\n });\n });\n describe('Keyboard Controls', () => {});\n describe('Other', () => {});\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-popover-test.e2e.js","sourceRoot":"","sources":["../../../../../src/components/q2-popover/test/q2-popover-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage } from '@stencil/core/testing';\nimport { evaluateA11y, getListOfStyleCompilationIssues, getNestedElementProperty, setup } from '@/utils/helpers';\nimport { Q2Popover } from '../q2-popover';\n\ndescribe('q2-popover', () => {\n let page: E2EPage;\n let popover: E2EElement;\n let popoverContainer: E2EElement;\n\n const dispatchPopoverState = async (state: { open: boolean }) => {\n await page.$eval(\n 'q2-popover',\n (el, { open }) => el.dispatchEvent(new CustomEvent('popoverState', { detail: { open } })),\n state\n );\n };\n\n const getPopProperty = async (propertyName: string) => {\n return page.$eval(\n 'q2-popover',\n (el, propName) =>\n el.shadowRoot.querySelector<HTMLDivElement>('.container').style.getPropertyValue(propName),\n propertyName\n );\n };\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-popover></q2-popover>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-popover')).toHaveLength(0);\n });\n\n describe('Props', () => {\n describe('open', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-popover>\n <div style=\"height: 400px; width: 200px\"></div>\n </q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n await page.$eval('q2-popover', (el: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n el.controlElement = controlElement;\n });\n });\n\n it('opens the popover when the open property is changed to true', async () => {\n const stateSpy = await popover.spyOnEvent('popoverStateChanged');\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n expect(popover).not.toHaveAttribute('open');\n\n popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(stateSpy).toHaveReceivedEventDetail({ open: true });\n });\n\n it('closes the popover when the open property is changed to false', async () => {\n const stateSpy = await popover.spyOnEvent('popoverStateChanged');\n popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(popover).toHaveAttribute('open');\n\n popover.setProperty('open', false);\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n expect(popover).not.toHaveAttribute('open');\n expect(stateSpy).toHaveReceivedEventDetail({ open: false });\n });\n\n it('adds and removes the currentDirection and --comp-pop-max-height property', async () => {\n const stateSpy = await popover.spyOnEvent('popoverStateChanged');\n\n popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(popover).toHaveAttribute('open');\n expect(await getPopProperty('--comp-pop-max-height')).toBe('390px');\n\n popover.setProperty('open', false);\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n expect(stateSpy).toHaveReceivedEventDetail({ open: false });\n expect(popoverContainer).not.toHaveClass('down');\n expect(await getPopProperty('--comp-pop-max-height')).toBe('');\n });\n });\n\n describe('direction', () => {\n describe('when provided a valid value', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-popover direction=\"up\" id=\"control\">\n <div style=\"height: 400px; width: 200px\"></div>\n </q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n });\n it('sets currentDirection to provided value', async () => {\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).toHaveClass('up');\n });\n });\n\n describe('when provided an invalid value', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-popover direction=\"gibberish\" id=\"control\">\n <div style=\"height: 400px; width: 200px\"></div>\n </q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n });\n it('ignores the direction and uses automated behavior', async () => {\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).toHaveClass('down');\n });\n });\n });\n\n describe('maxHeight', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-popover>\n <div style=\"height: 400px; width: 200px\"></div>\n </q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n });\n\n describe('when provided value is smaller than the available space', () => {\n it('implements the provided value', async () => {\n popover.setProperty('maxHeight', '200px');\n await page.waitForChanges();\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(popover).toHaveAttribute('open');\n expect(await getPopProperty('--comp-pop-max-height')).toBe('200px');\n });\n });\n describe('when provided value is larger than the available space', () => {\n it('implements the available space', async () => {\n popover.setProperty('maxHeight', '500px');\n await page.waitForChanges();\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(popover).toHaveAttribute('open');\n expect(await getPopProperty('--comp-pop-max-height')).toBe('390px');\n });\n });\n describe('when value is not provided', () => {\n it('implements the available space', async () => {\n expect((await popoverContainer.getComputedStyle()).display).toEqual('none');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect((await popoverContainer.getComputedStyle()).display).toEqual('block');\n expect(popover).toHaveAttribute('open');\n expect(await getPopProperty('--comp-pop-max-height')).toBe('390px');\n });\n });\n });\n\n describe('Events', () => {\n describe('popoverState', () => {\n it('opens the popover when open is passed as true', async () => {\n page = await setup({\n html: `<q2-popover></q2-popover>`,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n const stateSpy = await popover.spyOnEvent('popoverStateChanged');\n\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(stateSpy).toHaveReceivedEventDetail({ open: true });\n });\n\n it('closes the popover when open is passed as false', async () => {\n page = await setup({\n html: `<q2-popover open></q2-popover>`,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n const stateSpy = await popover.spyOnEvent('popoverStateChanged');\n\n expect(popover).toHaveAttribute('open');\n\n await dispatchPopoverState({ open: false });\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n expect(stateSpy).toHaveReceivedEventDetail({ open: false });\n });\n });\n });\n\n describe('Methods', () => {\n describe('toggle', () => {\n it('toggles the value of open', async () => {\n const popover = new Q2Popover();\n expect(popover.open).toBeUndefined();\n popover.toggle();\n expect(popover.open).toBe(true);\n popover.toggle();\n expect(popover.open).toBe(false);\n });\n });\n\n describe('scrollContainerTo', () => {\n it('scrolls the container to the given position', async () => {\n page = await setup({\n html: `\n <q2-popover>\n <div style=\"height: 2000px\"></div>\n </q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n\n popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n\n await popover.callMethod('scrollContainerTo', { top: 1000 });\n await page.waitForChanges();\n\n expect(await getNestedElementProperty(page, ['q2-popover', '.container'], 'scrollTop')).toBe(1000);\n\n await popover.callMethod('scrollContainerTo', { top: 0 });\n await page.waitForChanges();\n\n expect(await getNestedElementProperty(page, ['q2-popover', '.container'], 'scrollTop')).toBe(0);\n });\n });\n });\n\n describe('determinePopDirection', () => {\n describe('when control element has more space below it', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <div style=\"height: 44px; width: 400px; background: black; position: fixed; top: 10px;\" id=\"control\"></div>\n <q2-popover>\n <div style=\"height: 500px\"></div>\n </q2-popover>\n `,\n });\n // await setBodyHeight();\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n await page.$eval('q2-popover', (el: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n el.controlElement = controlElement;\n });\n });\n it('auto-determines the direction to be down', async () => {\n expect(popover).not.toHaveAttribute('direction');\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).not.toHaveClass('up');\n expect(popoverContainer).toHaveClass('down');\n });\n it('sets currentDirection state variable to down', async () => {\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).not.toHaveClass('up');\n expect(popoverContainer).toHaveClass('down');\n });\n it('displays popover content within viewport', async () => {\n expect(popover).not.toHaveAttribute('direction');\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n const containerStyle = await popoverContainer.getComputedStyle();\n const maxHeight = parseInt(await getPopProperty('--comp-pop-max-height'));\n expect(parseInt(containerStyle.height)).toBeLessThan(400);\n expect(maxHeight).toBeLessThan(400);\n });\n });\n\n describe('when control element has more space above it', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <div style=\"height: 44px; width: 400px; background: black; position: fixed; top: 350px\" id=\"control\"></div>\n <q2-popover>\n <div style=\"height: 500px\"></div>\n </q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n await page.$eval('q2-popover', (el: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n el.controlElement = controlElement;\n });\n });\n it('auto-determines the direction to be up', async () => {\n expect(popover).not.toHaveAttribute('direction');\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).not.toHaveClass('down');\n expect(popoverContainer).toHaveClass('up');\n });\n it('sets currentDirection state variable to up', async () => {\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).not.toHaveClass('down');\n expect(popoverContainer).toHaveClass('up');\n });\n it('displays popover content within viewport', async () => {\n expect(popover).not.toHaveAttribute('direction');\n expect(popover).not.toHaveAttribute('open');\n\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n\n const containerStyle = await popoverContainer.getComputedStyle();\n const maxHeight = parseInt(await getPopProperty('--comp-pop-max-height'));\n expect(parseInt(containerStyle.height)).toBeLessThan(400);\n expect(maxHeight).toBeLessThan(400);\n });\n });\n\n describe('when page is resized', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <div style=\"height: 50px; \" id=\"control\"></div>\n <q2-popover block>\n <div style=\"height: 800px\"></div>\n <q2-popover>\n `,\n });\n await page.setViewport({ width: 800, height: 800 });\n await page.waitForChanges();\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n await page.$eval('q2-popover', (el: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n el.controlElement = controlElement;\n });\n });\n\n it('recalculates the width when block is true', async () => {\n expect(popover).not.toHaveAttribute('open');\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n expect(popover).toHaveAttribute('open');\n\n let width = await getPopProperty('--comp-pop-width');\n expect(parseInt(width)).toBeLessThan(800);\n\n await page.setViewport({ width: 200, height: 600 });\n await page.waitForChanges();\n\n width = await getPopProperty('--comp-pop-width');\n expect(parseInt(width)).toBeLessThan(200);\n });\n\n it('recalculates the max-height when page orientation changes', async () => {\n expect(popover).not.toHaveAttribute('open');\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n expect(popover).toHaveAttribute('open');\n\n let maxHeight = await getPopProperty('--comp-pop-max-height');\n expect(parseInt(maxHeight)).toBeLessThan(800);\n\n await page.setViewport({ width: 800, height: 600, isLandscape: true });\n await page.waitForChanges();\n\n maxHeight = await getPopProperty('--comp-pop-max-height');\n expect(parseInt(maxHeight)).toBeLessThan(600);\n });\n\n it('recalculates the max-height when the viewport is resized', async () => {\n expect(popover).not.toHaveAttribute('open');\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n expect(popover).toHaveAttribute('open');\n\n let maxHeight = await getPopProperty('--comp-pop-max-height');\n expect(parseInt(maxHeight)).toBeLessThan(800);\n\n await page.setViewport({ width: 800, height: 600 });\n await page.waitForChanges();\n\n maxHeight = await getPopProperty('--comp-pop-max-height');\n expect(parseInt(maxHeight)).toBeLessThan(600);\n });\n });\n\n describe('when page is scrolled', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <div style=\"height: 300px\"></div>\n <div style=\"height: 50px; width: 200px; background: black;\" id=\"control\"></div>\n <q2-popover>\n <div style=\"height: 800px\"></div>\n </q2-popover>\n <div> style=\"height: 500px\"</div>\n `,\n });\n await page.setViewport({ width: 800, height: 400 });\n await page.waitForChanges();\n\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n await page.$eval('q2-popover', (el: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n el.controlElement = controlElement;\n });\n });\n\n it('maintains its current direction until closed', async () => {\n expect(popover).not.toHaveAttribute('open');\n await dispatchPopoverState({ open: true });\n await page.waitForChanges();\n expect(popover).toHaveAttribute('open');\n expect(popoverContainer).toHaveClass('up');\n // Scroll down 300px\n await page.$eval('#control', () => {\n window.scrollBy(0, 300);\n window.visualViewport.dispatchEvent(new Event('scroll'));\n });\n await page.waitForChanges();\n expect(popoverContainer).toHaveClass('up');\n });\n });\n });\n });\n\n describe('Deprecations', () => {\n describe('calls console.warn for deprecated `minHeight` prop', () => {\n it('by using handleDeprecationWarning if set on popover element', async () => {\n const warnMock = jest.spyOn(console, 'warn');\n page = await setup({ html: `<q2-popover min-height=\"100\"></q2-popover>` });\n await page.waitForChanges();\n expect(warnMock).toHaveBeenCalledTimes(1);\n warnMock.mockReset();\n });\n it('by using handleDeprecationWarning if set after componentDidLoad', async () => {\n const warnMock = jest.spyOn(console, 'warn');\n page = await setup({ html: `<q2-popover></q2-popover>` });\n popover = await page.find('q2-popover');\n expect(warnMock).toHaveBeenCalledTimes(0);\n popover.setAttribute('min-height', '100');\n await page.waitForChanges();\n expect(warnMock).toHaveBeenCalledTimes(1);\n warnMock.mockReset();\n });\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-2699', () => {\n it('calls viewportChanged when another element is scrolled', async () => {\n page = await setup({\n html: `\n <div style=\"height: 300px; overflow-y: auto;\" id=\"scroll\">\n <div style=\"height: 3000px;\">\n <div style=\"height: 50px;\" id=\"control\"></div>\n <q2-popover>\n <q2-option-list>\n <q2-option value=\"1\">Account 1</q2-option>\n <q2-option value=\"2\">Account 2</q2-option>\n <q2-option value=\"3\">Account 3</q2-option>\n </q2-option-list>\n <q2-popover>\n </div>\n </div>\n `,\n });\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n\n await page.$eval('q2-popover', (element: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n element.controlElement = controlElement;\n });\n await page.waitForChanges();\n\n await popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-top')).toEqual('58px');\n\n await page.$eval('#scroll', element => element.scrollTo(0, 500));\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-top')).toEqual('-442px');\n });\n\n it('correctly sets the left direction on horizontal scroll', async () => {\n page = await setup({\n html: `\n <div style=\"width: 300px; overflow-x: auto;\" id=\"scroll\">\n <div style=\"width: 3000px;\">\n <div style=\"height: 50px;\" id=\"control\"></div>\n <q2-popover align=\"left\" style=\"width=\"200px\">\n <q2-option-list>\n <q2-option value=\"1\">Account 1</q2-option>\n <q2-option value=\"2\">Account 2</q2-option>\n <q2-option value=\"3\">Account 3</q2-option>\n </q2-option-list>\n <q2-popover>\n </div>\n </div>\n `,\n });\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n\n await page.$eval('q2-popover', (element: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n element.controlElement = controlElement;\n });\n await page.waitForChanges();\n\n await popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-left')).toEqual('8px');\n\n await page.$eval('#scroll', element => element.scrollTo(500, 0));\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-left')).toEqual('-492px');\n });\n\n it('correctly sets the right direction on horizontal scroll', async () => {\n page = await setup({\n html: `\n <div style=\"width: 300px; overflow-x: auto;\" id=\"scroll\">\n <div style=\"width: 3000px;\">\n <div style=\"height: 50px;\" id=\"control\"></div>\n <q2-popover align=\"right\" style=\"width=\"200px\">\n <q2-option-list>\n <q2-option value=\"1\">Account 1</q2-option>\n <q2-option value=\"2\">Account 2</q2-option>\n <q2-option value=\"3\">Account 3</q2-option>\n </q2-option-list>\n <q2-popover>\n </div>\n </div>\n `,\n });\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n\n await page.$eval('q2-popover', (element: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n element.controlElement = controlElement;\n });\n await page.waitForChanges();\n\n await popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-right')).toEqual('-2208px');\n\n await page.$eval('#scroll', element => element.scrollTo(500, 0));\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('down');\n expect(await getPopProperty('--comp-pop-right')).toEqual('-1708px');\n });\n\n it(\"doesn't update the popover direction on scroll\", async () => {\n page = await setup({\n html: `\n <div style=\"height: 3000px\">\n <div style=\"height: 50px; margin-top: 400px\" id=\"control\"></div>\n <q2-popover>\n <q2-option-list>\n <q2-option value=\"1\">Account 1</q2-option>\n <q2-option value=\"2\">Account 2</q2-option>\n <q2-option value=\"3\">Account 3</q2-option>\n </q2-option-list>\n <q2-popover>\n </div>\n `,\n });\n popover = await page.find('q2-popover');\n popoverContainer = await page.find('q2-popover >>> .container');\n\n await page.$eval('q2-popover', (element: HTMLQ2PopoverElement) => {\n const controlElement = document.querySelector<HTMLElement>('#control');\n element.controlElement = controlElement;\n });\n await page.waitForChanges();\n\n popover.setProperty('open', true);\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('up');\n\n await page.$eval('body', () => window.scrollTo(0, 300));\n await page.waitForChanges();\n\n expect(popoverContainer).toHaveClass('up');\n });\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: `\n <q2-popover>\n <div style=\"height: 400px; width: 200px\"></div>\n </q2-popover>\n `,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {\n it('properly hides and shows options to the accessibility tree (TCT-2080)', async () => {\n page = await setup({\n html: `\n <q2-popover>\n <q2-option-list>\n <q2-option value=\"1\">Account 1</q2-option>\n <q2-option value=\"2\">Account 2</q2-option>\n <q2-option value=\"3\">Account 3</q2-option>\n </q2-option-list>\n <q2-popover>\n `,\n });\n\n let snapshot = await page.accessibility.snapshot({\n root: await page.$('q2-option'),\n });\n\n expect(snapshot).toBeNull();\n\n const popover = await page.find('q2-popover');\n await popover.setProperty('open', true);\n await page.waitForChanges();\n\n snapshot = await page.accessibility.snapshot({\n root: await page.$('q2-option'),\n });\n\n expect(snapshot.name).toEqual('Account 1');\n });\n });\n describe('Keyboard Controls', () => {});\n describe('Other', () => {});\n });\n});\n"]}
|