q2-tecton-elements 1.47.2 → 1.47.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/cjs/click-elsewhere_2.cjs.entry.js +16 -11
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
- package/dist/cjs/{index-a93362ed.js → index-f70484ba.js} +68 -1
- package/dist/cjs/index-f70484ba.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +4 -2
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-list.cjs.entry.js +1 -1
- package/dist/cjs/q2-loc.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
- package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +56 -4
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +1 -1
- package/dist/cjs/q2-tag.cjs.entry.js +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +3 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-popover/q2-popover.js +16 -11
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-select/q2-select.js +62 -4
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/utils/index.js +65 -0
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/components/index2.js +66 -1
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-dropdown.js +3 -1
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-popover2.js +16 -11
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-select2.js +57 -5
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/esm/click-elsewhere_2.entry.js +16 -11
- package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
- package/dist/esm/{index-3c5cd75e.js → index-c14ec4b5.js} +67 -2
- package/dist/esm/index-c14ec4b5.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-sheet.entry.js +1 -1
- package/dist/esm/q2-btn_2.entry.js +1 -1
- package/dist/esm/q2-calendar.entry.js +1 -1
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +1 -1
- package/dist/esm/q2-carousel.entry.js +1 -1
- package/dist/esm/q2-chart-area.entry.js +1 -1
- package/dist/esm/q2-chart-bar.entry.js +1 -1
- package/dist/esm/q2-chart-donut.entry.js +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +1 -1
- package/dist/esm/q2-checkbox.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +1 -1
- package/dist/esm/q2-detail.entry.js +1 -1
- package/dist/esm/q2-dropdown-item.entry.js +1 -1
- package/dist/esm/q2-dropdown.entry.js +4 -2
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +1 -1
- package/dist/esm/q2-icon.entry.js +1 -1
- package/dist/esm/q2-input.entry.js +1 -1
- package/dist/esm/q2-item.entry.js +1 -1
- package/dist/esm/q2-list.entry.js +1 -1
- package/dist/esm/q2-loc.entry.js +1 -1
- package/dist/esm/q2-message.entry.js +1 -1
- package/dist/esm/q2-month-picker.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +1 -1
- package/dist/esm/q2-option-list.entry.js +1 -1
- package/dist/esm/q2-pagination.entry.js +1 -1
- package/dist/esm/q2-pill.entry.js +1 -1
- package/dist/esm/q2-radio-group.entry.js +1 -1
- package/dist/esm/q2-radio.entry.js +1 -1
- package/dist/esm/q2-section.entry.js +1 -1
- package/dist/esm/q2-select.entry.js +56 -4
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +1 -1
- package/dist/esm/q2-stepper.entry.js +1 -1
- package/dist/esm/q2-tab-container.entry.js +1 -1
- package/dist/esm/q2-tag.entry.js +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +1 -1
- package/dist/esm/q2-tooltip.entry.js +1 -1
- package/dist/jest.setup.js +11 -0
- package/dist/jest.setup.js.map +1 -1
- package/dist/q2-tecton-elements/{p-59551fa4.entry.js → p-0097a699.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-0d8de2f9.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-e9e66809.entry.js.map → p-0d8de2f9.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-fce6bc58.entry.js → p-108f6df7.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-c5ae8890.entry.js → p-131d9d76.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-2de3e7b1.entry.js → p-15569220.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-3030d55f.entry.js → p-1a9c313d.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-ca17f7ca.entry.js → p-2d10b3c4.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-0a211fb4.entry.js → p-2fa050ba.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-34eff2c8.js +2 -0
- package/dist/q2-tecton-elements/p-34eff2c8.js.map +1 -0
- package/dist/q2-tecton-elements/{p-6be0e333.entry.js → p-3530e050.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-81bb9436.entry.js → p-39c66aa0.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-fe1f1ff4.entry.js → p-3c22599b.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-07f40176.entry.js → p-4bb841ca.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-044b8914.entry.js → p-4f04df58.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-d6c8d94d.entry.js → p-546a1b35.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-cb8e7ebb.entry.js → p-62215dd6.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-def9be7b.entry.js → p-69a18ec3.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-85a7b1ab.entry.js → p-6a66ff01.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-ccbc168f.entry.js → p-6c7f0232.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-5214296a.entry.js → p-6d80a94c.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-f450db0b.entry.js → p-7907d63b.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-84fc61f5.entry.js → p-7c701caa.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-132005d2.entry.js → p-82bfca30.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-644d5b2e.entry.js → p-83ccd9e7.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-4ef5222b.entry.js → p-845c8abb.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-4740e969.entry.js → p-8b5639df.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-a2caa101.entry.js → p-8cd46d16.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-1d824cdf.entry.js → p-917a8c98.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-572805fc.entry.js → p-a57750a2.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-68276771.entry.js → p-aa7e150c.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-432532fe.entry.js → p-ab844234.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-08d5de5c.entry.js → p-ad858047.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-e1c642fa.entry.js → p-b236e9da.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-46085a34.entry.js → p-bcd6b43b.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-aa768c36.entry.js → p-caba8948.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-d7a3301b.entry.js +2 -0
- package/dist/q2-tecton-elements/p-d7a3301b.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-e786ba03.entry.js → p-df2ed4f8.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-63038a54.entry.js → p-e3b49661.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-eef9966c.entry.js +2 -0
- package/dist/q2-tecton-elements/p-eef9966c.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-28b0de1c.entry.js → p-fa43dced.entry.js} +2 -2
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
- package/dist/test/elements/q2-pagination-test.e2e.js +2 -1
- package/dist/test/elements/q2-pagination-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-popover-test.spec.js +229 -150
- package/dist/test/elements/q2-popover-test.spec.js.map +1 -1
- package/dist/test/elements/q2-select-test.spec.js +146 -6
- package/dist/test/elements/q2-select-test.spec.js.map +1 -1
- package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +9 -0
- package/dist/types/components/q2-select/q2-select.d.ts +5 -0
- package/dist/types/utils/index.d.ts +5 -0
- package/package.json +5 -5
- package/dist/cjs/index-a93362ed.js.map +0 -1
- package/dist/esm/index-3c5cd75e.js.map +0 -1
- package/dist/q2-tecton-elements/p-0499abaa.entry.js +0 -2
- package/dist/q2-tecton-elements/p-0499abaa.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-84190698.js +0 -2
- package/dist/q2-tecton-elements/p-84190698.js.map +0 -1
- package/dist/q2-tecton-elements/p-c9866d11.entry.js +0 -2
- package/dist/q2-tecton-elements/p-c9866d11.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-e9e66809.entry.js +0 -2
- /package/dist/q2-tecton-elements/{p-59551fa4.entry.js.map → p-0097a699.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-fce6bc58.entry.js.map → p-108f6df7.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-c5ae8890.entry.js.map → p-131d9d76.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-2de3e7b1.entry.js.map → p-15569220.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-3030d55f.entry.js.map → p-1a9c313d.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-ca17f7ca.entry.js.map → p-2d10b3c4.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-0a211fb4.entry.js.map → p-2fa050ba.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-6be0e333.entry.js.map → p-3530e050.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-81bb9436.entry.js.map → p-39c66aa0.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-fe1f1ff4.entry.js.map → p-3c22599b.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-07f40176.entry.js.map → p-4bb841ca.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-044b8914.entry.js.map → p-4f04df58.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-d6c8d94d.entry.js.map → p-546a1b35.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-cb8e7ebb.entry.js.map → p-62215dd6.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-def9be7b.entry.js.map → p-69a18ec3.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-85a7b1ab.entry.js.map → p-6a66ff01.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-ccbc168f.entry.js.map → p-6c7f0232.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-5214296a.entry.js.map → p-6d80a94c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-f450db0b.entry.js.map → p-7907d63b.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-84fc61f5.entry.js.map → p-7c701caa.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-132005d2.entry.js.map → p-82bfca30.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-644d5b2e.entry.js.map → p-83ccd9e7.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-4ef5222b.entry.js.map → p-845c8abb.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-4740e969.entry.js.map → p-8b5639df.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-a2caa101.entry.js.map → p-8cd46d16.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-1d824cdf.entry.js.map → p-917a8c98.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-572805fc.entry.js.map → p-a57750a2.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-68276771.entry.js.map → p-aa7e150c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-432532fe.entry.js.map → p-ab844234.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-08d5de5c.entry.js.map → p-ad858047.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-e1c642fa.entry.js.map → p-b236e9da.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-46085a34.entry.js.map → p-bcd6b43b.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-aa768c36.entry.js.map → p-caba8948.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-e786ba03.entry.js.map → p-df2ed4f8.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-63038a54.entry.js.map → p-e3b49661.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-28b0de1c.entry.js.map → p-fa43dced.entry.js.map} +0 -0
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { newSpecPage } from "@stencil/core/testing";
|
|
2
2
|
import { Q2Popover } from "../../src/components/q2-popover/q2-popover";
|
|
3
|
-
import
|
|
3
|
+
import * as utils from "../../collection/utils/index";
|
|
4
4
|
describe('popover', () => {
|
|
5
5
|
let specPopover;
|
|
6
|
+
afterEach(() => {
|
|
7
|
+
jest.restoreAllMocks();
|
|
8
|
+
});
|
|
6
9
|
const samplePlatformDimensions = {
|
|
7
10
|
scrollY: 0,
|
|
8
11
|
innerHeight: 800,
|
|
9
12
|
innerWidth: 600,
|
|
10
13
|
outletOffset: 20,
|
|
14
|
+
top: 0,
|
|
15
|
+
bottom: 0,
|
|
11
16
|
};
|
|
12
17
|
const sampleTectonWindow = {
|
|
13
18
|
inMobileApp: false,
|
|
@@ -423,7 +428,6 @@ describe('popover', () => {
|
|
|
423
428
|
let visualViewportAddEventListenerSpy;
|
|
424
429
|
let screenOrientationAddEventListenerSpy;
|
|
425
430
|
beforeEach(() => {
|
|
426
|
-
specPopover = new Q2Popover();
|
|
427
431
|
windowAddEventListenerSpy = jest.spyOn(window, 'addEventListener');
|
|
428
432
|
// Mock visualViewport
|
|
429
433
|
const mockVisualViewport = {
|
|
@@ -450,6 +454,7 @@ describe('popover', () => {
|
|
|
450
454
|
});
|
|
451
455
|
global.screen = mockScreen;
|
|
452
456
|
screenOrientationAddEventListenerSpy = jest.spyOn(mockScreenOrientation, 'addEventListener');
|
|
457
|
+
specPopover = new Q2Popover();
|
|
453
458
|
});
|
|
454
459
|
afterEach(() => {
|
|
455
460
|
windowAddEventListenerSpy.mockRestore();
|
|
@@ -460,30 +465,56 @@ describe('popover', () => {
|
|
|
460
465
|
delete window.visualViewport;
|
|
461
466
|
delete window.screen;
|
|
462
467
|
});
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
it('adds scroll listener to window with viewPortChanged handler and proper options', () => {
|
|
472
|
-
specPopover.addViewportListeners();
|
|
473
|
-
expect(windowAddEventListenerSpy).toHaveBeenCalledWith('scroll', specPopover.viewPortChanged, {
|
|
474
|
-
passive: true,
|
|
475
|
-
capture: true,
|
|
468
|
+
describe('resize', () => {
|
|
469
|
+
it('adds resize listener to window with viewPortOrientationChanged handler', async () => {
|
|
470
|
+
specPopover.addViewportListeners();
|
|
471
|
+
expect(windowAddEventListenerSpy).toHaveBeenCalledWith('resize', specPopover.viewPortOrientationChanged);
|
|
472
|
+
});
|
|
473
|
+
it('adds resize listener to visualViewport with viewPortChanged handler', async () => {
|
|
474
|
+
specPopover.addViewportListeners();
|
|
475
|
+
expect(visualViewportAddEventListenerSpy).toHaveBeenCalledWith('resize', specPopover.viewPortChanged);
|
|
476
476
|
});
|
|
477
477
|
});
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
478
|
+
describe('scroll', () => {
|
|
479
|
+
it('adds scroll listener to window when in scrollable container on desktop only', async () => {
|
|
480
|
+
jest.spyOn(utils, 'isInScrollableContainer').mockReturnValue(true);
|
|
481
|
+
jest.spyOn(utils, 'isMobile').mockReturnValue(false);
|
|
482
|
+
specPopover.addViewportListeners();
|
|
483
|
+
expect(windowAddEventListenerSpy).toHaveBeenCalledWith('scroll', specPopover.viewPortChanged, {
|
|
484
|
+
passive: true,
|
|
485
|
+
capture: true,
|
|
486
|
+
});
|
|
487
|
+
});
|
|
488
|
+
it('does not add scroll listener on mobile', async () => {
|
|
489
|
+
jest.spyOn(utils, 'isInScrollableContainer').mockReturnValue(true);
|
|
490
|
+
jest.spyOn(utils, 'isMobile').mockReturnValue(true);
|
|
491
|
+
specPopover.addViewportListeners();
|
|
492
|
+
expect(windowAddEventListenerSpy).not.toHaveBeenCalledWith('scroll', specPopover.viewPortChanged, {
|
|
493
|
+
passive: true,
|
|
494
|
+
capture: true,
|
|
495
|
+
});
|
|
496
|
+
});
|
|
497
|
+
it('does not add scroll listener in non-scrollable container', async () => {
|
|
498
|
+
jest.spyOn(utils, 'isInScrollableContainer').mockReturnValue(false);
|
|
499
|
+
jest.spyOn(utils, 'isMobile').mockReturnValue(false);
|
|
500
|
+
specPopover.addViewportListeners();
|
|
501
|
+
expect(windowAddEventListenerSpy).not.toHaveBeenCalledWith('scroll', specPopover.viewPortChanged, {
|
|
502
|
+
passive: true,
|
|
503
|
+
capture: true,
|
|
504
|
+
});
|
|
505
|
+
});
|
|
481
506
|
});
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
507
|
+
describe('orientationchange', () => {
|
|
508
|
+
it('adds orientationchange listener to screen.orientation with viewPortOrientationChanged handler', async () => {
|
|
509
|
+
specPopover.addViewportListeners();
|
|
510
|
+
expect(screenOrientationAddEventListenerSpy).toHaveBeenCalledWith('orientationchange', specPopover.viewPortOrientationChanged);
|
|
511
|
+
});
|
|
512
|
+
it('adds orientationchange listener to window with viewPortOrientationChanged handler', async () => {
|
|
513
|
+
specPopover.addViewportListeners();
|
|
514
|
+
expect(windowAddEventListenerSpy).toHaveBeenCalledWith('orientationchange', specPopover.viewPortOrientationChanged);
|
|
515
|
+
});
|
|
485
516
|
});
|
|
486
|
-
it('adds all expected listeners when called', () => {
|
|
517
|
+
it('adds all expected listeners when called', async () => {
|
|
487
518
|
specPopover.addViewportListeners();
|
|
488
519
|
expect(windowAddEventListenerSpy).toHaveBeenCalled();
|
|
489
520
|
expect(visualViewportAddEventListenerSpy).toHaveBeenCalled();
|
|
@@ -520,48 +551,192 @@ describe('popover', () => {
|
|
|
520
551
|
let specPopover;
|
|
521
552
|
let controlElement;
|
|
522
553
|
let containerElement;
|
|
523
|
-
beforeEach(() => {
|
|
554
|
+
beforeEach(async () => {
|
|
524
555
|
specPopover = new Q2Popover();
|
|
556
|
+
specPopover.setDirectionAndShow = jest.fn();
|
|
525
557
|
controlElement = document.createElement('div');
|
|
526
|
-
containerElement = document.createElement('div');
|
|
527
558
|
specPopover.controlElement = controlElement;
|
|
559
|
+
containerElement = document.createElement('div');
|
|
528
560
|
specPopover.containerElement = containerElement;
|
|
529
|
-
window.visualViewport = { width: 800, height: 600 };
|
|
530
|
-
specPopover.setDirectionAndShow = jest.fn();
|
|
531
561
|
});
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
562
|
+
afterEach(() => {
|
|
563
|
+
delete window.visualViewport;
|
|
564
|
+
delete window.Tecton;
|
|
565
|
+
delete window.innerHeight;
|
|
566
|
+
});
|
|
567
|
+
describe('when in a module', () => {
|
|
568
|
+
beforeEach(async () => {
|
|
569
|
+
window.Tecton = sampleTectonWindow;
|
|
570
|
+
jest.spyOn(window, 'top', 'get').mockReturnValue({});
|
|
571
|
+
specPopover.open = true;
|
|
572
|
+
expect(specPopover.isModule).toBe(true);
|
|
536
573
|
});
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
574
|
+
describe("when the module is taller than the window's viewport", () => {
|
|
575
|
+
beforeEach(() => {
|
|
576
|
+
window.innerHeight = 1200;
|
|
577
|
+
});
|
|
578
|
+
it('sets the direction to down when control element has more space below it', async () => {
|
|
579
|
+
jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
580
|
+
top: 20,
|
|
581
|
+
bottom: 70,
|
|
582
|
+
});
|
|
583
|
+
await specPopover.determinePopDirection();
|
|
584
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('700px');
|
|
585
|
+
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('down');
|
|
586
|
+
});
|
|
587
|
+
it('sets the direction to up when control element has more space above it', async () => {
|
|
588
|
+
jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
589
|
+
top: 600,
|
|
590
|
+
bottom: 650,
|
|
591
|
+
});
|
|
592
|
+
await specPopover.determinePopDirection();
|
|
593
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('590px');
|
|
594
|
+
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('up');
|
|
595
|
+
});
|
|
596
|
+
describe('when the outletOffset is 0 or less', () => {
|
|
597
|
+
beforeEach(() => {
|
|
598
|
+
window.Tecton = Object.assign(Object.assign({}, sampleTectonWindow), { platformDimensions: Object.assign(Object.assign({}, samplePlatformDimensions), { outletOffset: -50 }) });
|
|
599
|
+
});
|
|
600
|
+
it('sets the direction to down when control element has more space below it', async () => {
|
|
601
|
+
jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
602
|
+
top: 20,
|
|
603
|
+
bottom: 70,
|
|
604
|
+
});
|
|
605
|
+
await specPopover.determinePopDirection();
|
|
606
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('770px');
|
|
607
|
+
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('down');
|
|
608
|
+
});
|
|
609
|
+
it('sets the direction to up when control element has more space above it', async () => {
|
|
610
|
+
jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
611
|
+
top: 600,
|
|
612
|
+
bottom: 650,
|
|
613
|
+
});
|
|
614
|
+
await specPopover.determinePopDirection();
|
|
615
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('540px');
|
|
616
|
+
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('up');
|
|
617
|
+
});
|
|
618
|
+
});
|
|
619
|
+
describe('when the "top" platformDimension has a value', () => {
|
|
620
|
+
beforeEach(() => {
|
|
621
|
+
window.Tecton = Object.assign(Object.assign({}, sampleTectonWindow), { platformDimensions: Object.assign(Object.assign({}, samplePlatformDimensions), { outletOffset: 0, top: 50 }) });
|
|
622
|
+
});
|
|
623
|
+
it('takes the "top" into account when opening up', async () => {
|
|
624
|
+
jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
625
|
+
top: 600,
|
|
626
|
+
bottom: 650,
|
|
627
|
+
});
|
|
628
|
+
await specPopover.determinePopDirection();
|
|
629
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('540px');
|
|
630
|
+
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('up');
|
|
631
|
+
});
|
|
632
|
+
it('ignores "top" when outletOffset is positive', async () => {
|
|
633
|
+
window.Tecton = Object.assign(Object.assign({}, sampleTectonWindow), { platformDimensions: Object.assign(Object.assign({}, samplePlatformDimensions), { outletOffset: 20 }) });
|
|
634
|
+
jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
635
|
+
top: 600,
|
|
636
|
+
bottom: 650,
|
|
637
|
+
});
|
|
638
|
+
await specPopover.determinePopDirection();
|
|
639
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('590px');
|
|
640
|
+
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('up');
|
|
641
|
+
});
|
|
642
|
+
});
|
|
643
|
+
describe('when the "bottom" platformDimension has a value', () => {
|
|
644
|
+
it('takes "bottom" into account when calculating space below', async () => {
|
|
645
|
+
window.Tecton = Object.assign(Object.assign({}, sampleTectonWindow), { platformDimensions: Object.assign(Object.assign({}, samplePlatformDimensions), { bottom: 50 }) });
|
|
646
|
+
jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
647
|
+
top: 20,
|
|
648
|
+
bottom: 70,
|
|
649
|
+
});
|
|
650
|
+
await specPopover.determinePopDirection();
|
|
651
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('650px');
|
|
652
|
+
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('down');
|
|
653
|
+
});
|
|
654
|
+
});
|
|
655
|
+
});
|
|
656
|
+
describe("when the module is shorter than the window's viewport", () => {
|
|
657
|
+
beforeEach(() => {
|
|
658
|
+
window.innerHeight = 600;
|
|
659
|
+
});
|
|
660
|
+
it('sets the direction to down when control element has more space below it', async () => {
|
|
661
|
+
jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
662
|
+
top: 20,
|
|
663
|
+
bottom: 70,
|
|
664
|
+
});
|
|
665
|
+
await specPopover.determinePopDirection();
|
|
666
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('520px');
|
|
667
|
+
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('down');
|
|
668
|
+
});
|
|
669
|
+
it('sets the direction to up when control element has more space above it', async () => {
|
|
670
|
+
jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
671
|
+
top: 500,
|
|
672
|
+
bottom: 550,
|
|
673
|
+
});
|
|
674
|
+
await specPopover.determinePopDirection();
|
|
675
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('490px');
|
|
676
|
+
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('up');
|
|
677
|
+
});
|
|
546
678
|
});
|
|
547
|
-
await specPopover.determinePopDirection();
|
|
548
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('440px');
|
|
549
|
-
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('down');
|
|
550
|
-
controlSpy.mockRestore();
|
|
551
679
|
});
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
680
|
+
describe('when at the platform level', () => {
|
|
681
|
+
beforeEach(async () => {
|
|
682
|
+
window.innerHeight = 600;
|
|
683
|
+
expect(specPopover.isModule).toBe(false);
|
|
684
|
+
});
|
|
685
|
+
it('sets the direction to up when control element has more space above it', async () => {
|
|
686
|
+
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
687
|
+
top: 500,
|
|
688
|
+
bottom: 550,
|
|
689
|
+
});
|
|
690
|
+
await specPopover.determinePopDirection();
|
|
691
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('490px');
|
|
692
|
+
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('up');
|
|
693
|
+
controlSpy.mockRestore();
|
|
694
|
+
});
|
|
695
|
+
it('sets the direction to down when control element has more space below it', async () => {
|
|
696
|
+
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
697
|
+
top: 100,
|
|
698
|
+
bottom: 150,
|
|
699
|
+
});
|
|
700
|
+
await specPopover.determinePopDirection();
|
|
701
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('440px');
|
|
702
|
+
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('down');
|
|
703
|
+
controlSpy.mockRestore();
|
|
704
|
+
});
|
|
555
705
|
});
|
|
556
706
|
});
|
|
557
707
|
describe('handleMinHeight', () => {
|
|
558
708
|
it('calls handleDeprecationWarning for minHeight', async () => {
|
|
559
709
|
specPopover = new Q2Popover();
|
|
560
|
-
const
|
|
561
|
-
|
|
710
|
+
const mockHandleDeprecation = jest
|
|
711
|
+
.spyOn(utils, 'handleDeprecationWarning')
|
|
712
|
+
.mockImplementation(() => { });
|
|
562
713
|
specPopover.minHeight = 100;
|
|
563
714
|
specPopover.handleMinHeight();
|
|
564
|
-
expect(
|
|
715
|
+
expect(mockHandleDeprecation).toHaveBeenCalled();
|
|
716
|
+
});
|
|
717
|
+
});
|
|
718
|
+
describe('handlePopoverToggleEvent', () => {
|
|
719
|
+
it('emits the popoverStateChanged event', async () => {
|
|
720
|
+
specPopover = new Q2Popover();
|
|
721
|
+
const mockEmit = jest.spyOn(specPopover.popoverStateChanged, 'emit');
|
|
722
|
+
specPopover.handlePopoverToggleEvent({});
|
|
723
|
+
expect(mockEmit).toHaveBeenCalled();
|
|
724
|
+
});
|
|
725
|
+
describe('when the newState from the ToggleEvent is "open"', () => {
|
|
726
|
+
it('emits the popoverStateChanged event open as true', async () => {
|
|
727
|
+
specPopover = new Q2Popover();
|
|
728
|
+
const mockEmit = jest.spyOn(specPopover.popoverStateChanged, 'emit');
|
|
729
|
+
specPopover.handlePopoverToggleEvent({ newState: 'open' });
|
|
730
|
+
expect(mockEmit).toHaveBeenCalledWith({ open: true });
|
|
731
|
+
});
|
|
732
|
+
});
|
|
733
|
+
describe('when the newState from the ToggleEvent is "closed"', () => {
|
|
734
|
+
it('emits the popoverStateChanged event open as false', async () => {
|
|
735
|
+
specPopover = new Q2Popover();
|
|
736
|
+
const mockEmit = jest.spyOn(specPopover.popoverStateChanged, 'emit');
|
|
737
|
+
specPopover.handlePopoverToggleEvent({ newState: 'closed' });
|
|
738
|
+
expect(mockEmit).toHaveBeenCalledWith({ open: false });
|
|
739
|
+
});
|
|
565
740
|
});
|
|
566
741
|
});
|
|
567
742
|
describe('removeViewportListeners', () => {
|
|
@@ -603,23 +778,23 @@ describe('popover', () => {
|
|
|
603
778
|
delete window.visualViewport;
|
|
604
779
|
delete window.screen;
|
|
605
780
|
});
|
|
606
|
-
it('removes resize listener from window with viewPortOrientationChanged handler', () => {
|
|
781
|
+
it('removes resize listener from window with viewPortOrientationChanged handler', async () => {
|
|
607
782
|
specPopover.removeViewportListeners();
|
|
608
783
|
expect(windowRemoveEventListenerSpy).toHaveBeenCalledWith('resize', specPopover.viewPortOrientationChanged);
|
|
609
784
|
});
|
|
610
|
-
it('removes resize listener from visualViewport with viewPortChanged handler', () => {
|
|
785
|
+
it('removes resize listener from visualViewport with viewPortChanged handler', async () => {
|
|
611
786
|
specPopover.removeViewportListeners();
|
|
612
787
|
expect(visualViewportRemoveEventListenerSpy).toHaveBeenCalledWith('resize', specPopover.viewPortChanged);
|
|
613
788
|
});
|
|
614
|
-
it('removes scroll listener from window with viewPortChanged handler and proper options', () => {
|
|
789
|
+
it('removes scroll listener from window with viewPortChanged handler and proper options', async () => {
|
|
615
790
|
specPopover.removeViewportListeners();
|
|
616
791
|
expect(windowRemoveEventListenerSpy).toHaveBeenNthCalledWith(2, 'scroll', specPopover.viewPortChanged, { capture: true });
|
|
617
792
|
});
|
|
618
|
-
it('removes orientationchange listener from screen.orientation with viewPortOrientationChanged handler', () => {
|
|
793
|
+
it('removes orientationchange listener from screen.orientation with viewPortOrientationChanged handler', async () => {
|
|
619
794
|
specPopover.removeViewportListeners();
|
|
620
795
|
expect(screenOrientationRemoveEventListenerSpy).toHaveBeenCalledWith('orientationchange', specPopover.viewPortOrientationChanged);
|
|
621
796
|
});
|
|
622
|
-
it('removes orientationchange listener from window with viewPortOrientationChanged handler', () => {
|
|
797
|
+
it('removes orientationchange listener from window with viewPortOrientationChanged handler', async () => {
|
|
623
798
|
specPopover.removeViewportListeners();
|
|
624
799
|
expect(windowRemoveEventListenerSpy).toHaveBeenCalledWith('orientationchange', specPopover.viewPortOrientationChanged);
|
|
625
800
|
});
|
|
@@ -809,101 +984,5 @@ describe('popover', () => {
|
|
|
809
984
|
});
|
|
810
985
|
});
|
|
811
986
|
});
|
|
812
|
-
describe('when in a module', () => {
|
|
813
|
-
let specPopover;
|
|
814
|
-
let windowSpy;
|
|
815
|
-
let controlElement;
|
|
816
|
-
let containerElement;
|
|
817
|
-
beforeEach(async () => {
|
|
818
|
-
specPopover = new Q2Popover();
|
|
819
|
-
windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({});
|
|
820
|
-
window.Tecton = sampleTectonWindow;
|
|
821
|
-
expect(specPopover.isModule).toBe(true);
|
|
822
|
-
controlElement = document.createElement('div');
|
|
823
|
-
specPopover.controlElement = controlElement;
|
|
824
|
-
containerElement = document.createElement('div');
|
|
825
|
-
specPopover.containerElement = containerElement;
|
|
826
|
-
});
|
|
827
|
-
afterEach(() => {
|
|
828
|
-
windowSpy.mockRestore();
|
|
829
|
-
});
|
|
830
|
-
describe("when the module is taller than the window's viewport", () => {
|
|
831
|
-
beforeEach(() => {
|
|
832
|
-
specPopover.open = true;
|
|
833
|
-
window.visualViewport = { height: 1200 };
|
|
834
|
-
});
|
|
835
|
-
it('sets the direction to down when control element has more space below it', async () => {
|
|
836
|
-
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
837
|
-
top: 20,
|
|
838
|
-
bottom: 70,
|
|
839
|
-
});
|
|
840
|
-
await specPopover.determinePopDirection();
|
|
841
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('700px');
|
|
842
|
-
expect(specPopover.currentDirection).toBe('down');
|
|
843
|
-
controlSpy.mockRestore();
|
|
844
|
-
});
|
|
845
|
-
it('sets the direction to up when control element has more space above it', async () => {
|
|
846
|
-
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
847
|
-
top: 600,
|
|
848
|
-
bottom: 650,
|
|
849
|
-
});
|
|
850
|
-
await specPopover.determinePopDirection();
|
|
851
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('590px');
|
|
852
|
-
expect(specPopover.currentDirection).toBe('up');
|
|
853
|
-
controlSpy.mockRestore();
|
|
854
|
-
});
|
|
855
|
-
describe('when the outletOffset is less than 0', () => {
|
|
856
|
-
beforeEach(() => {
|
|
857
|
-
window.Tecton = Object.assign(Object.assign({}, sampleTectonWindow), { platformDimensions: Object.assign(Object.assign({}, samplePlatformDimensions), { outletOffset: -50 }) });
|
|
858
|
-
});
|
|
859
|
-
it('sets the direction to down when control element has more space below it', async () => {
|
|
860
|
-
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
861
|
-
top: 20,
|
|
862
|
-
bottom: 70,
|
|
863
|
-
});
|
|
864
|
-
await specPopover.determinePopDirection();
|
|
865
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('770px');
|
|
866
|
-
expect(specPopover.currentDirection).toBe('down');
|
|
867
|
-
controlSpy.mockRestore();
|
|
868
|
-
});
|
|
869
|
-
it('sets the direction to up when control element has more space above it', async () => {
|
|
870
|
-
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
871
|
-
top: 600,
|
|
872
|
-
bottom: 650,
|
|
873
|
-
});
|
|
874
|
-
await specPopover.determinePopDirection();
|
|
875
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('540px');
|
|
876
|
-
expect(specPopover.currentDirection).toBe('up');
|
|
877
|
-
controlSpy.mockRestore();
|
|
878
|
-
});
|
|
879
|
-
});
|
|
880
|
-
});
|
|
881
|
-
describe("when the module is shorter than the window's viewport", () => {
|
|
882
|
-
beforeEach(() => {
|
|
883
|
-
specPopover.open = true;
|
|
884
|
-
window.visualViewport = { height: 600 };
|
|
885
|
-
});
|
|
886
|
-
it('sets the direction to down when control element has more space below it', async () => {
|
|
887
|
-
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
888
|
-
top: 20,
|
|
889
|
-
bottom: 70,
|
|
890
|
-
});
|
|
891
|
-
await specPopover.determinePopDirection();
|
|
892
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('520px');
|
|
893
|
-
expect(specPopover.currentDirection).toBe('down');
|
|
894
|
-
controlSpy.mockRestore();
|
|
895
|
-
});
|
|
896
|
-
it('sets the direction to up when control element has more space above it', async () => {
|
|
897
|
-
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
898
|
-
top: 500,
|
|
899
|
-
bottom: 550,
|
|
900
|
-
});
|
|
901
|
-
await specPopover.determinePopDirection();
|
|
902
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('490px');
|
|
903
|
-
expect(specPopover.currentDirection).toBe('up');
|
|
904
|
-
controlSpy.mockRestore();
|
|
905
|
-
});
|
|
906
|
-
});
|
|
907
|
-
});
|
|
908
987
|
});
|
|
909
988
|
//# sourceMappingURL=q2-popover-test.spec.js.map
|