q2-tecton-elements 1.48.1 → 1.48.2
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 +17 -54
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
- package/dist/cjs/{index-a93362ed.js → index-3f1498f7.js} +33 -1
- package/dist/cjs/index-3f1498f7.js.map +1 -0
- package/dist/cjs/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-relative-time.cjs.entry.js +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +48 -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-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 +17 -54
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-select/q2-select.js +47 -3
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/utils/index.js +31 -0
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/components/index2.js +32 -1
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-dropdown.js +3 -1
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-popover2.js +17 -54
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-select2.js +48 -4
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/esm/click-elsewhere_2.entry.js +17 -54
- package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
- package/dist/esm/{index-3c5cd75e.js → index-58266aeb.js} +33 -2
- package/dist/esm/index-58266aeb.js.map +1 -0
- package/dist/esm/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-relative-time.entry.js +1 -1
- package/dist/esm/q2-section.entry.js +1 -1
- package/dist/esm/q2-select.entry.js +48 -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-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-3fe532bc.entry.js → p-05f5d0ab.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-1a628982.entry.js → p-0f9d4d30.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-139926a3.entry.js +2 -0
- package/dist/q2-tecton-elements/p-139926a3.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-77e6704d.entry.js → p-2cbb1756.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-46085a34.entry.js → p-3468d85d.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-0a211fb4.entry.js → p-3876d25b.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-6be0e333.entry.js → p-3d6e350e.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-414c5d4e.entry.js +2 -0
- package/dist/q2-tecton-elements/p-414c5d4e.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-132005d2.entry.js → p-48ecbcc9.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-de2f3111.entry.js → p-4ce69e38.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-e786ba03.entry.js → p-4e58e187.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-a2caa101.entry.js → p-50476216.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-6af21a10.entry.js → p-5234ced7.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-11982614.entry.js → p-5538d1df.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-fe1f1ff4.entry.js → p-5d339d72.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-8734e1cb.entry.js → p-63f9a5e5.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-1d824cdf.entry.js → p-646214e2.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-cfabf5d1.entry.js → p-65e7dab0.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-85a7b1ab.entry.js → p-7c5ee4aa.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-7ea95f38.js +2 -0
- package/dist/q2-tecton-elements/p-7ea95f38.js.map +1 -0
- package/dist/q2-tecton-elements/{p-7deda459.entry.js → p-7fe8e174.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-84fc61f5.entry.js → p-803a5897.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-432532fe.entry.js → p-871bad24.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-5214296a.entry.js → p-8764a131.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-d6c8d94d.entry.js → p-8a2b4f10.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-68276771.entry.js → p-97774780.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-81bb9436.entry.js → p-9c129294.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-def9be7b.entry.js → p-a99e1dc6.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-abf27f97.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-fe2fd83b.entry.js.map → p-abf27f97.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-28b0de1c.entry.js → p-af3a383f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-07f40176.entry.js → p-b85b6bc1.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-0d73466a.entry.js → p-b998e684.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-63038a54.entry.js → p-c30c53dc.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-76be9cad.entry.js → p-c37fff1e.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-572805fc.entry.js → p-c782a1d6.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-ca17f7ca.entry.js → p-cd225920.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-044b8914.entry.js → p-cdfe6e9d.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-75bb43b2.entry.js → p-d238dc6b.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-644d5b2e.entry.js → p-e08c6b8f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-d5c182d8.entry.js → p-e41f47bc.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-4740e969.entry.js → p-e4241b1a.entry.js} +2 -2
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/test/elements/q2-pagination-test.e2e.js +3 -2
- package/dist/test/elements/q2-pagination-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-popover-test.spec.js +230 -154
- 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-popover/q2-popover.d.ts +0 -2
- package/dist/types/components/q2-select/q2-select.d.ts +4 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/package.json +3 -3
- package/dist/cjs/index-a93362ed.js.map +0 -1
- package/dist/esm/index-3c5cd75e.js.map +0 -1
- package/dist/q2-tecton-elements/p-25a0f807.entry.js +0 -2
- package/dist/q2-tecton-elements/p-25a0f807.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-eb45704f.entry.js +0 -2
- package/dist/q2-tecton-elements/p-eb45704f.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-fe2fd83b.entry.js +0 -2
- /package/dist/q2-tecton-elements/{p-3fe532bc.entry.js.map → p-05f5d0ab.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-1a628982.entry.js.map → p-0f9d4d30.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-77e6704d.entry.js.map → p-2cbb1756.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-46085a34.entry.js.map → p-3468d85d.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-0a211fb4.entry.js.map → p-3876d25b.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-6be0e333.entry.js.map → p-3d6e350e.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-132005d2.entry.js.map → p-48ecbcc9.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-de2f3111.entry.js.map → p-4ce69e38.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-e786ba03.entry.js.map → p-4e58e187.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-a2caa101.entry.js.map → p-50476216.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-6af21a10.entry.js.map → p-5234ced7.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-11982614.entry.js.map → p-5538d1df.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-fe1f1ff4.entry.js.map → p-5d339d72.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-8734e1cb.entry.js.map → p-63f9a5e5.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-1d824cdf.entry.js.map → p-646214e2.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-cfabf5d1.entry.js.map → p-65e7dab0.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-85a7b1ab.entry.js.map → p-7c5ee4aa.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-7deda459.entry.js.map → p-7fe8e174.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-84fc61f5.entry.js.map → p-803a5897.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-432532fe.entry.js.map → p-871bad24.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-5214296a.entry.js.map → p-8764a131.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-d6c8d94d.entry.js.map → p-8a2b4f10.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-68276771.entry.js.map → p-97774780.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-81bb9436.entry.js.map → p-9c129294.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-def9be7b.entry.js.map → p-a99e1dc6.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-28b0de1c.entry.js.map → p-af3a383f.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-07f40176.entry.js.map → p-b85b6bc1.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-0d73466a.entry.js.map → p-b998e684.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-63038a54.entry.js.map → p-c30c53dc.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-76be9cad.entry.js.map → p-c37fff1e.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-572805fc.entry.js.map → p-c782a1d6.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-ca17f7ca.entry.js.map → p-cd225920.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-044b8914.entry.js.map → p-cdfe6e9d.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-75bb43b2.entry.js.map → p-d238dc6b.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-644d5b2e.entry.js.map → p-e08c6b8f.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-d5c182d8.entry.js.map → p-e41f47bc.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-4740e969.entry.js.map → p-e4241b1a.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,
|
|
@@ -16,10 +21,7 @@ describe('popover', () => {
|
|
|
16
21
|
platformDimensions: samplePlatformDimensions,
|
|
17
22
|
};
|
|
18
23
|
const enablePopoverAPI = () => {
|
|
19
|
-
Object.defineProperty(HTMLElement.prototype, 'popover', {
|
|
20
|
-
value: true,
|
|
21
|
-
configurable: true,
|
|
22
|
-
});
|
|
24
|
+
Object.defineProperty(HTMLElement.prototype, 'popover', { value: true, configurable: true });
|
|
23
25
|
};
|
|
24
26
|
describe('Props', () => {
|
|
25
27
|
describe('align', () => {
|
|
@@ -426,7 +428,6 @@ describe('popover', () => {
|
|
|
426
428
|
let visualViewportAddEventListenerSpy;
|
|
427
429
|
let screenOrientationAddEventListenerSpy;
|
|
428
430
|
beforeEach(() => {
|
|
429
|
-
specPopover = new Q2Popover();
|
|
430
431
|
windowAddEventListenerSpy = jest.spyOn(window, 'addEventListener');
|
|
431
432
|
// Mock visualViewport
|
|
432
433
|
const mockVisualViewport = {
|
|
@@ -453,6 +454,7 @@ describe('popover', () => {
|
|
|
453
454
|
});
|
|
454
455
|
global.screen = mockScreen;
|
|
455
456
|
screenOrientationAddEventListenerSpy = jest.spyOn(mockScreenOrientation, 'addEventListener');
|
|
457
|
+
specPopover = new Q2Popover();
|
|
456
458
|
});
|
|
457
459
|
afterEach(() => {
|
|
458
460
|
windowAddEventListenerSpy.mockRestore();
|
|
@@ -463,30 +465,56 @@ describe('popover', () => {
|
|
|
463
465
|
delete window.visualViewport;
|
|
464
466
|
delete window.screen;
|
|
465
467
|
});
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
it('adds scroll listener to window with viewPortChanged handler and proper options', () => {
|
|
475
|
-
specPopover.addViewportListeners();
|
|
476
|
-
expect(windowAddEventListenerSpy).toHaveBeenCalledWith('scroll', specPopover.viewPortChanged, {
|
|
477
|
-
passive: true,
|
|
478
|
-
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);
|
|
479
476
|
});
|
|
480
477
|
});
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
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
|
+
});
|
|
484
506
|
});
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
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
|
+
});
|
|
488
516
|
});
|
|
489
|
-
it('adds all expected listeners when called', () => {
|
|
517
|
+
it('adds all expected listeners when called', async () => {
|
|
490
518
|
specPopover.addViewportListeners();
|
|
491
519
|
expect(windowAddEventListenerSpy).toHaveBeenCalled();
|
|
492
520
|
expect(visualViewportAddEventListenerSpy).toHaveBeenCalled();
|
|
@@ -523,48 +551,192 @@ describe('popover', () => {
|
|
|
523
551
|
let specPopover;
|
|
524
552
|
let controlElement;
|
|
525
553
|
let containerElement;
|
|
526
|
-
beforeEach(() => {
|
|
554
|
+
beforeEach(async () => {
|
|
527
555
|
specPopover = new Q2Popover();
|
|
556
|
+
specPopover.setDirectionAndShow = jest.fn();
|
|
528
557
|
controlElement = document.createElement('div');
|
|
529
|
-
containerElement = document.createElement('div');
|
|
530
558
|
specPopover.controlElement = controlElement;
|
|
559
|
+
containerElement = document.createElement('div');
|
|
531
560
|
specPopover.containerElement = containerElement;
|
|
532
|
-
window.visualViewport = { width: 800, height: 600 };
|
|
533
|
-
specPopover.setDirectionAndShow = jest.fn();
|
|
534
561
|
});
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
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);
|
|
573
|
+
});
|
|
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
|
+
});
|
|
539
655
|
});
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
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
|
+
});
|
|
549
678
|
});
|
|
550
|
-
await specPopover.determinePopDirection();
|
|
551
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('440px');
|
|
552
|
-
expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('down');
|
|
553
|
-
controlSpy.mockRestore();
|
|
554
679
|
});
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
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
|
+
});
|
|
558
705
|
});
|
|
559
706
|
});
|
|
560
707
|
describe('handleMinHeight', () => {
|
|
561
708
|
it('calls handleDeprecationWarning for minHeight', async () => {
|
|
562
709
|
specPopover = new Q2Popover();
|
|
563
|
-
const
|
|
564
|
-
|
|
710
|
+
const mockHandleDeprecation = jest
|
|
711
|
+
.spyOn(utils, 'handleDeprecationWarning')
|
|
712
|
+
.mockImplementation(() => { });
|
|
565
713
|
specPopover.minHeight = 100;
|
|
566
714
|
specPopover.handleMinHeight();
|
|
567
|
-
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
|
+
});
|
|
568
740
|
});
|
|
569
741
|
});
|
|
570
742
|
describe('removeViewportListeners', () => {
|
|
@@ -606,23 +778,23 @@ describe('popover', () => {
|
|
|
606
778
|
delete window.visualViewport;
|
|
607
779
|
delete window.screen;
|
|
608
780
|
});
|
|
609
|
-
it('removes resize listener from window with viewPortOrientationChanged handler', () => {
|
|
781
|
+
it('removes resize listener from window with viewPortOrientationChanged handler', async () => {
|
|
610
782
|
specPopover.removeViewportListeners();
|
|
611
783
|
expect(windowRemoveEventListenerSpy).toHaveBeenCalledWith('resize', specPopover.viewPortOrientationChanged);
|
|
612
784
|
});
|
|
613
|
-
it('removes resize listener from visualViewport with viewPortChanged handler', () => {
|
|
785
|
+
it('removes resize listener from visualViewport with viewPortChanged handler', async () => {
|
|
614
786
|
specPopover.removeViewportListeners();
|
|
615
787
|
expect(visualViewportRemoveEventListenerSpy).toHaveBeenCalledWith('resize', specPopover.viewPortChanged);
|
|
616
788
|
});
|
|
617
|
-
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 () => {
|
|
618
790
|
specPopover.removeViewportListeners();
|
|
619
791
|
expect(windowRemoveEventListenerSpy).toHaveBeenNthCalledWith(2, 'scroll', specPopover.viewPortChanged, { capture: true });
|
|
620
792
|
});
|
|
621
|
-
it('removes orientationchange listener from screen.orientation with viewPortOrientationChanged handler', () => {
|
|
793
|
+
it('removes orientationchange listener from screen.orientation with viewPortOrientationChanged handler', async () => {
|
|
622
794
|
specPopover.removeViewportListeners();
|
|
623
795
|
expect(screenOrientationRemoveEventListenerSpy).toHaveBeenCalledWith('orientationchange', specPopover.viewPortOrientationChanged);
|
|
624
796
|
});
|
|
625
|
-
it('removes orientationchange listener from window with viewPortOrientationChanged handler', () => {
|
|
797
|
+
it('removes orientationchange listener from window with viewPortOrientationChanged handler', async () => {
|
|
626
798
|
specPopover.removeViewportListeners();
|
|
627
799
|
expect(windowRemoveEventListenerSpy).toHaveBeenCalledWith('orientationchange', specPopover.viewPortOrientationChanged);
|
|
628
800
|
});
|
|
@@ -812,101 +984,5 @@ describe('popover', () => {
|
|
|
812
984
|
});
|
|
813
985
|
});
|
|
814
986
|
});
|
|
815
|
-
describe('when in a module', () => {
|
|
816
|
-
let specPopover;
|
|
817
|
-
let windowSpy;
|
|
818
|
-
let controlElement;
|
|
819
|
-
let containerElement;
|
|
820
|
-
beforeEach(async () => {
|
|
821
|
-
specPopover = new Q2Popover();
|
|
822
|
-
windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({});
|
|
823
|
-
window.Tecton = sampleTectonWindow;
|
|
824
|
-
expect(specPopover.isModule).toBe(true);
|
|
825
|
-
controlElement = document.createElement('div');
|
|
826
|
-
specPopover.controlElement = controlElement;
|
|
827
|
-
containerElement = document.createElement('div');
|
|
828
|
-
specPopover.containerElement = containerElement;
|
|
829
|
-
});
|
|
830
|
-
afterEach(() => {
|
|
831
|
-
windowSpy.mockRestore();
|
|
832
|
-
});
|
|
833
|
-
describe("when the module is taller than the window's viewport", () => {
|
|
834
|
-
beforeEach(() => {
|
|
835
|
-
specPopover.open = true;
|
|
836
|
-
window.visualViewport = { height: 1200 };
|
|
837
|
-
});
|
|
838
|
-
it('sets the direction to down when control element has more space below it', async () => {
|
|
839
|
-
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
840
|
-
top: 20,
|
|
841
|
-
bottom: 70,
|
|
842
|
-
});
|
|
843
|
-
await specPopover.determinePopDirection();
|
|
844
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('700px');
|
|
845
|
-
expect(specPopover.currentDirection).toBe('down');
|
|
846
|
-
controlSpy.mockRestore();
|
|
847
|
-
});
|
|
848
|
-
it('sets the direction to up when control element has more space above it', async () => {
|
|
849
|
-
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
850
|
-
top: 600,
|
|
851
|
-
bottom: 650,
|
|
852
|
-
});
|
|
853
|
-
await specPopover.determinePopDirection();
|
|
854
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('590px');
|
|
855
|
-
expect(specPopover.currentDirection).toBe('up');
|
|
856
|
-
controlSpy.mockRestore();
|
|
857
|
-
});
|
|
858
|
-
describe('when the outletOffset is less than 0', () => {
|
|
859
|
-
beforeEach(() => {
|
|
860
|
-
window.Tecton = Object.assign(Object.assign({}, sampleTectonWindow), { platformDimensions: Object.assign(Object.assign({}, samplePlatformDimensions), { outletOffset: -50 }) });
|
|
861
|
-
});
|
|
862
|
-
it('sets the direction to down when control element has more space below it', async () => {
|
|
863
|
-
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
864
|
-
top: 20,
|
|
865
|
-
bottom: 70,
|
|
866
|
-
});
|
|
867
|
-
await specPopover.determinePopDirection();
|
|
868
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('770px');
|
|
869
|
-
expect(specPopover.currentDirection).toBe('down');
|
|
870
|
-
controlSpy.mockRestore();
|
|
871
|
-
});
|
|
872
|
-
it('sets the direction to up when control element has more space above it', async () => {
|
|
873
|
-
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
874
|
-
top: 600,
|
|
875
|
-
bottom: 650,
|
|
876
|
-
});
|
|
877
|
-
await specPopover.determinePopDirection();
|
|
878
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('540px');
|
|
879
|
-
expect(specPopover.currentDirection).toBe('up');
|
|
880
|
-
controlSpy.mockRestore();
|
|
881
|
-
});
|
|
882
|
-
});
|
|
883
|
-
});
|
|
884
|
-
describe("when the module is shorter than the window's viewport", () => {
|
|
885
|
-
beforeEach(() => {
|
|
886
|
-
specPopover.open = true;
|
|
887
|
-
window.visualViewport = { height: 600 };
|
|
888
|
-
});
|
|
889
|
-
it('sets the direction to down when control element has more space below it', async () => {
|
|
890
|
-
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
891
|
-
top: 20,
|
|
892
|
-
bottom: 70,
|
|
893
|
-
});
|
|
894
|
-
await specPopover.determinePopDirection();
|
|
895
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('520px');
|
|
896
|
-
expect(specPopover.currentDirection).toBe('down');
|
|
897
|
-
controlSpy.mockRestore();
|
|
898
|
-
});
|
|
899
|
-
it('sets the direction to up when control element has more space above it', async () => {
|
|
900
|
-
const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({
|
|
901
|
-
top: 500,
|
|
902
|
-
bottom: 550,
|
|
903
|
-
});
|
|
904
|
-
await specPopover.determinePopDirection();
|
|
905
|
-
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('490px');
|
|
906
|
-
expect(specPopover.currentDirection).toBe('up');
|
|
907
|
-
controlSpy.mockRestore();
|
|
908
|
-
});
|
|
909
|
-
});
|
|
910
|
-
});
|
|
911
987
|
});
|
|
912
988
|
//# sourceMappingURL=q2-popover-test.spec.js.map
|