q2-tecton-elements 1.45.2 → 1.45.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/click-elsewhere_2.cjs.entry.js +36 -4
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +2 -1
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +2 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +5 -3
- package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +4 -3
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js +23 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +23 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-icon/q2-icon.js +6 -4
- package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
- package/dist/collection/components/q2-popover/q2-popover.css +3 -0
- package/dist/collection/components/q2-popover/q2-popover.js +53 -3
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-select/q2-select.js +25 -3
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/components/q2-calendar.js +3 -1
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-dropdown.js +3 -1
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-icon2.js +6 -4
- package/dist/components/q2-icon2.js.map +1 -1
- package/dist/components/q2-popover2.js +37 -4
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-select.js +5 -3
- package/dist/components/q2-select.js.map +1 -1
- package/dist/esm/click-elsewhere_2.entry.js +36 -4
- package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-calendar.entry.js +2 -1
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +2 -1
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +6 -4
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-select.entry.js +4 -3
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/q2-tecton-elements/p-68556733.entry.js +2 -0
- package/dist/q2-tecton-elements/p-68556733.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-bfe9d688.entry.js +2 -0
- package/dist/q2-tecton-elements/p-bfe9d688.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-f1281e3f.entry.js → p-bffda54d.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-bffda54d.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-cadceb00.entry.js +2 -0
- package/dist/q2-tecton-elements/p-cadceb00.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-f0813fb4.entry.js +2 -0
- package/dist/q2-tecton-elements/p-f0813fb4.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
- package/dist/test/elements/q2-calendar-test.e2e.js +20 -0
- package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-dropdown-test.e2e.js +30 -0
- package/dist/test/elements/q2-dropdown-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-icon-test.e2e.js +17 -0
- package/dist/test/elements/q2-icon-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-popover-test.spec.js +99 -13
- package/dist/test/elements/q2-popover-test.spec.js.map +1 -1
- package/dist/test/elements/q2-select-test.e2e.js +24 -0
- package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
- package/dist/types/components/q2-icon/q2-icon.d.ts +1 -0
- package/dist/types/components/q2-popover/q2-popover.d.ts +3 -1
- package/dist/types/components.d.ts +32 -0
- package/package.json +3 -3
- package/dist/q2-tecton-elements/p-4a332c2a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-4a332c2a.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-7f663376.entry.js +0 -2
- package/dist/q2-tecton-elements/p-7f663376.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-c4c458b7.entry.js +0 -2
- package/dist/q2-tecton-elements/p-c4c458b7.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-f1281e3f.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-f162c670.entry.js +0 -2
- package/dist/q2-tecton-elements/p-f162c670.entry.js.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { newSpecPage } from "@stencil/core/testing";
|
|
1
2
|
import { Q2Popover } from "../../src/components/q2-popover/q2-popover";
|
|
2
3
|
describe('popover', () => {
|
|
3
4
|
let specPopover;
|
|
@@ -13,6 +14,24 @@ describe('popover', () => {
|
|
|
13
14
|
platformUrl: '',
|
|
14
15
|
platformDimensions: samplePlatformDimensions,
|
|
15
16
|
};
|
|
17
|
+
describe('Props', () => {
|
|
18
|
+
describe('mode', () => {
|
|
19
|
+
it('does not add the legacy class on the container (default)', async () => {
|
|
20
|
+
const page = await newSpecPage({
|
|
21
|
+
components: [Q2Popover],
|
|
22
|
+
html: `<q2-popover></q2-popover>`,
|
|
23
|
+
});
|
|
24
|
+
expect(page.root.shadowRoot.firstElementChild.classList.contains('legacy')).toBeFalsy();
|
|
25
|
+
});
|
|
26
|
+
it('adds the legacy class on the container when mode is "legacy"', async () => {
|
|
27
|
+
const page = await newSpecPage({
|
|
28
|
+
components: [Q2Popover],
|
|
29
|
+
html: `<q2-popover mode="legacy"></q2-popover>`,
|
|
30
|
+
});
|
|
31
|
+
expect(page.root.shadowRoot.firstElementChild.classList.contains('legacy')).toBeTruthy();
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
16
35
|
describe('Methods', () => {
|
|
17
36
|
beforeEach(() => {
|
|
18
37
|
specPopover = new Q2Popover();
|
|
@@ -246,7 +265,7 @@ describe('popover', () => {
|
|
|
246
265
|
expect(specPopover.viewPortChanged).toHaveBeenCalled();
|
|
247
266
|
});
|
|
248
267
|
});
|
|
249
|
-
describe('
|
|
268
|
+
describe('setFixedCSSProperties', () => {
|
|
250
269
|
let specPopover;
|
|
251
270
|
let containerElement;
|
|
252
271
|
beforeEach(() => {
|
|
@@ -264,7 +283,7 @@ describe('popover', () => {
|
|
|
264
283
|
window.visualViewport = { width: 800, height: 600 };
|
|
265
284
|
});
|
|
266
285
|
it('sets the necessary CSS properties', async () => {
|
|
267
|
-
await specPopover.
|
|
286
|
+
await specPopover.setFixedCSSProperties();
|
|
268
287
|
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBeFalsy();
|
|
269
288
|
expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();
|
|
270
289
|
expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();
|
|
@@ -275,22 +294,74 @@ describe('popover', () => {
|
|
|
275
294
|
});
|
|
276
295
|
it('sets --comp-pop-bottom when direction is up', async () => {
|
|
277
296
|
specPopover.currentDirection = 'up';
|
|
278
|
-
await specPopover.
|
|
297
|
+
await specPopover.setFixedCSSProperties();
|
|
279
298
|
expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();
|
|
280
299
|
expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBe('580px');
|
|
281
300
|
});
|
|
282
301
|
it('sets --comp-pop-top when direction is down', async () => {
|
|
283
302
|
specPopover.currentDirection = 'down';
|
|
284
|
-
await specPopover.
|
|
303
|
+
await specPopover.setFixedCSSProperties();
|
|
285
304
|
expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBe('70px');
|
|
286
305
|
expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();
|
|
287
306
|
});
|
|
288
307
|
it('sets --comp-pop-width when block is true', async () => {
|
|
289
308
|
specPopover.block = true;
|
|
290
|
-
await specPopover.
|
|
309
|
+
await specPopover.setFixedCSSProperties();
|
|
291
310
|
expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBe('0px');
|
|
292
311
|
});
|
|
293
312
|
});
|
|
313
|
+
describe('setAbsoluteCSSProperties', () => {
|
|
314
|
+
let specPopover;
|
|
315
|
+
let containerElement;
|
|
316
|
+
beforeEach(() => {
|
|
317
|
+
specPopover = new Q2Popover();
|
|
318
|
+
containerElement = document.createElement('div');
|
|
319
|
+
specPopover.mode = 'legacy';
|
|
320
|
+
specPopover.containerElement = containerElement;
|
|
321
|
+
const controlElement = document.createElement('div');
|
|
322
|
+
controlElement.getBoundingClientRect = jest.fn().mockReturnValue({
|
|
323
|
+
top: 20,
|
|
324
|
+
bottom: 70,
|
|
325
|
+
left: 30,
|
|
326
|
+
right: 80,
|
|
327
|
+
});
|
|
328
|
+
specPopover.controlElement = controlElement;
|
|
329
|
+
window.visualViewport = { width: 800, height: 600 };
|
|
330
|
+
});
|
|
331
|
+
it('sets the necessary CSS properties', async () => {
|
|
332
|
+
await specPopover.setAbsoluteCSSProperties();
|
|
333
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBeFalsy();
|
|
334
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();
|
|
335
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();
|
|
336
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBe('0');
|
|
337
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBe('unset');
|
|
338
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBe('');
|
|
339
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-opacity')).toBe('1');
|
|
340
|
+
});
|
|
341
|
+
it('sets the necessary CSS properties when align is right', async () => {
|
|
342
|
+
specPopover.align = 'right';
|
|
343
|
+
await specPopover.setAbsoluteCSSProperties();
|
|
344
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBe('unset');
|
|
345
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBe('0');
|
|
346
|
+
});
|
|
347
|
+
it('sets --comp-pop-bottom when direction is up', async () => {
|
|
348
|
+
specPopover.currentDirection = 'up';
|
|
349
|
+
await specPopover.setAbsoluteCSSProperties();
|
|
350
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();
|
|
351
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBe('0px');
|
|
352
|
+
});
|
|
353
|
+
it('does not set --comp-pop-top when direction is down', async () => {
|
|
354
|
+
specPopover.currentDirection = 'down';
|
|
355
|
+
await specPopover.setAbsoluteCSSProperties();
|
|
356
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBe('');
|
|
357
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBe('');
|
|
358
|
+
});
|
|
359
|
+
it('sets --comp-pop-width when block is true', async () => {
|
|
360
|
+
specPopover.block = true;
|
|
361
|
+
await specPopover.setAbsoluteCSSProperties();
|
|
362
|
+
expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBe('100%');
|
|
363
|
+
});
|
|
364
|
+
});
|
|
294
365
|
describe('clearCSSProperties', () => {
|
|
295
366
|
let specPopover;
|
|
296
367
|
let containerElement;
|
|
@@ -324,7 +395,8 @@ describe('popover', () => {
|
|
|
324
395
|
specPopover = new Q2Popover();
|
|
325
396
|
containerElement = document.createElement('div');
|
|
326
397
|
specPopover.containerElement = containerElement;
|
|
327
|
-
specPopover.
|
|
398
|
+
specPopover.setFixedCSSProperties = jest.fn();
|
|
399
|
+
specPopover.setAbsoluteCSSProperties = jest.fn();
|
|
328
400
|
specPopover.scrollContainerTo = jest.fn();
|
|
329
401
|
});
|
|
330
402
|
it('does nothing when open is false', async () => {
|
|
@@ -332,14 +404,28 @@ describe('popover', () => {
|
|
|
332
404
|
await specPopover.setDirectionAndShow('up');
|
|
333
405
|
expect(specPopover.currentDirection).toBeUndefined();
|
|
334
406
|
expect(specPopover.show).toBe(false);
|
|
335
|
-
expect(specPopover.
|
|
407
|
+
expect(specPopover.setFixedCSSProperties).not.toHaveBeenCalled();
|
|
408
|
+
expect(specPopover.setAbsoluteCSSProperties).not.toHaveBeenCalled();
|
|
336
409
|
});
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
410
|
+
describe('when open is true', () => {
|
|
411
|
+
beforeEach(() => {
|
|
412
|
+
specPopover.open = true;
|
|
413
|
+
});
|
|
414
|
+
it('sets the direction, shows the popover, and sets fixed position properties', async () => {
|
|
415
|
+
await specPopover.setDirectionAndShow('up');
|
|
416
|
+
expect(specPopover.currentDirection).toBe('up');
|
|
417
|
+
expect(specPopover.show).toBe(true);
|
|
418
|
+
expect(specPopover.setFixedCSSProperties).toHaveBeenCalled();
|
|
419
|
+
expect(specPopover.setAbsoluteCSSProperties).not.toHaveBeenCalled();
|
|
420
|
+
});
|
|
421
|
+
it('sets the direction, shows the popover, and sets absolute position properties when mode is "legacy"', async () => {
|
|
422
|
+
specPopover.mode = 'legacy';
|
|
423
|
+
await specPopover.setDirectionAndShow('up');
|
|
424
|
+
expect(specPopover.currentDirection).toBe('up');
|
|
425
|
+
expect(specPopover.show).toBe(true);
|
|
426
|
+
expect(specPopover.setFixedCSSProperties).not.toHaveBeenCalled();
|
|
427
|
+
expect(specPopover.setAbsoluteCSSProperties).toHaveBeenCalled();
|
|
428
|
+
});
|
|
343
429
|
});
|
|
344
430
|
});
|
|
345
431
|
describe('determinePopDirection', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-popover-test.spec.js","sourceRoot":"","sources":["../../../test/elements/q2-popover-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { Q2Popover } from '../../src/components/q2-popover/q2-popover';\n\ndescribe('popover', () => {\n let specPopover: Q2Popover;\n\n const samplePlatformDimensions = {\n scrollY: 0,\n innerHeight: 800,\n innerWidth: 600,\n outletOffset: 20,\n };\n\n const sampleTectonWindow = {\n inMobileApp: false,\n noStrings: false,\n platformUrl: '',\n platformDimensions: samplePlatformDimensions,\n };\n\n describe('Methods', () => {\n beforeEach(() => {\n specPopover = new Q2Popover();\n });\n\n describe('toggle', () => {\n it('sets open to true when open is false', async () => {\n specPopover.open = false;\n await specPopover.toggle();\n expect(specPopover.open).toBe(true);\n });\n\n it('sets open to false when open is true', async () => {\n specPopover.open = true;\n await specPopover.toggle();\n expect(specPopover.open).toBe(false);\n });\n });\n\n describe('scrollContainerTo', () => {\n it('scrolls the container to the given position', async () => {\n const containerElement = document.createElement('div');\n containerElement.scrollTo = jest.fn();\n specPopover.containerElement = containerElement;\n await specPopover.scrollContainerTo({ top: 100, left: 50 });\n expect(containerElement.scrollTo).toHaveBeenCalledWith({ top: 100, left: 50 });\n });\n });\n\n describe('openChanged', () => {\n beforeEach(() => {\n specPopover.addViewportListeners = jest.fn();\n specPopover.determinePopDirection = jest.fn();\n specPopover.removeViewportListeners = jest.fn();\n specPopover.clearCSSProperties = jest.fn();\n });\n\n it('sets open to true when open is false', async () => {\n specPopover.currentDirection = 'down';\n specPopover.show = true;\n await specPopover.openChanged(true);\n expect(specPopover.currentDirection).toBe('down');\n expect(specPopover.show).toBeTruthy();\n expect(specPopover.addViewportListeners).toHaveBeenCalled();\n expect(specPopover.determinePopDirection).toHaveBeenCalled();\n expect(specPopover.removeViewportListeners).not.toHaveBeenCalled();\n expect(specPopover.clearCSSProperties).not.toHaveBeenCalled();\n });\n\n it('sets open to false when open is true', async () => {\n specPopover.currentDirection = 'down';\n specPopover.show = true;\n await specPopover.openChanged(false);\n expect(specPopover.currentDirection).toBeUndefined();\n expect(specPopover.show).toBeFalsy();\n expect(specPopover.addViewportListeners).not.toHaveBeenCalled();\n expect(specPopover.determinePopDirection).not.toHaveBeenCalled();\n expect(specPopover.clearCSSProperties).toHaveBeenCalled();\n expect(specPopover.clearCSSProperties).toHaveBeenCalled();\n });\n });\n });\n\n describe('Getters', () => {\n beforeEach(() => {\n specPopover = new Q2Popover();\n });\n\n describe('actualDirection', () => {\n it('returns direction when \"up\"', async () => {\n specPopover.direction = 'up';\n expect(specPopover.actualDirection).toBe('up');\n });\n\n it('returns direction when \"down\"', async () => {\n specPopover.direction = 'down';\n expect(specPopover.actualDirection).toBe('down');\n });\n\n it('returns undefined when not \"up\" or \"down\"', async () => {\n (specPopover.direction as any) = 'bottom';\n expect(specPopover.actualDirection).toBeUndefined();\n });\n });\n\n describe('isModule', () => {\n it('returns false when window top matches window and platformDimensions is not defined', async () => {\n expect(window.top).toBe(window);\n expect(window.Tecton).toBeUndefined();\n expect(specPopover.isModule).toBe(false);\n });\n\n it('returns false when window top does not match window and platformDimensions is not defined', async () => {\n const windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n expect(window.top).not.toEqual(window);\n expect(window.Tecton).toBeUndefined();\n expect(specPopover.isModule).toBe(false);\n windowSpy.mockRestore();\n });\n\n it('returns false when window top matches window and platformDimensions is defined', async () => {\n window.Tecton = sampleTectonWindow;\n expect(window.top).toBe(window);\n expect(window.Tecton.platformDimensions).toBeTruthy();\n expect(specPopover.isModule).toBe(false);\n });\n\n it('returns true when window top does not match window and platformDimensions is defined', async () => {\n const windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n window.Tecton = sampleTectonWindow;\n expect(specPopover.isModule).toBe(true);\n windowSpy.mockRestore();\n });\n });\n });\n\n describe('when in a module', () => {\n let specPopover: Q2Popover;\n let windowSpy: jest.SpyInstance;\n let controlElement: HTMLDivElement;\n let containerElement: HTMLDivElement;\n\n beforeEach(async () => {\n specPopover = new Q2Popover();\n windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n window.Tecton = sampleTectonWindow;\n expect(specPopover.isModule).toBe(true);\n\n controlElement = document.createElement('div');\n specPopover.controlElement = controlElement;\n\n containerElement = document.createElement('div');\n specPopover.containerElement = containerElement;\n });\n\n afterEach(() => {\n windowSpy.mockRestore();\n });\n\n describe(\"when the module is taller than the window's viewport\", () => {\n beforeEach(() => {\n specPopover.open = true;\n window.visualViewport = { height: 1200 } as any;\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 20,\n bottom: 70,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('700px');\n expect(specPopover.currentDirection).toBe('down');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 600,\n bottom: 650,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('590px');\n expect(specPopover.currentDirection).toBe('up');\n\n controlSpy.mockRestore();\n });\n\n describe('when the outletOffset is less than 0', () => {\n beforeEach(() => {\n window.Tecton = {\n ...sampleTectonWindow,\n platformDimensions: { ...samplePlatformDimensions, outletOffset: -50 },\n };\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 20,\n bottom: 70,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('770px');\n expect(specPopover.currentDirection).toBe('down');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 600,\n bottom: 650,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('540px');\n expect(specPopover.currentDirection).toBe('up');\n\n controlSpy.mockRestore();\n });\n });\n });\n\n describe(\"when the module is shorter than the window's viewport\", () => {\n beforeEach(() => {\n specPopover.open = true;\n window.visualViewport = { height: 600 } as any;\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 20,\n bottom: 70,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('520px');\n expect(specPopover.currentDirection).toBe('down');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 500,\n bottom: 550,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('490px');\n expect(specPopover.currentDirection).toBe('up');\n\n controlSpy.mockRestore();\n });\n });\n });\n\n describe('viewPortChanged', () => {\n let specPopover: Q2Popover;\n let windowSpy: jest.SpyInstance;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n window.Tecton = sampleTectonWindow;\n expect(specPopover.isModule).toBe(true);\n specPopover.determinePopDirection = jest.fn();\n });\n\n afterEach(() => {\n windowSpy.mockRestore();\n });\n\n it('calls determinePopDirection when open is true', async () => {\n specPopover.open = true;\n await specPopover.viewPortChanged();\n expect(specPopover.determinePopDirection).toHaveBeenCalled();\n });\n\n it('does nothing when open is false', async () => {\n specPopover.open = false;\n await specPopover.viewPortChanged();\n expect(specPopover.determinePopDirection).not.toHaveBeenCalled();\n });\n });\n\n describe('viewPortOrientationChanged', () => {\n let specPopover: Q2Popover;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n specPopover.viewPortChanged = jest.fn();\n });\n\n it('sets orientationChanged to true and calls viewportChanged', async () => {\n await specPopover.viewPortOrientationChanged();\n expect(specPopover.orientationChanged).toBe(true);\n expect(specPopover.viewPortChanged).toHaveBeenCalled();\n });\n });\n\n describe('setCSSProperties', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n specPopover.containerElement = containerElement;\n\n const controlElement = document.createElement('div');\n controlElement.getBoundingClientRect = jest.fn().mockReturnValue({\n top: 20,\n bottom: 70,\n left: 30,\n right: 80,\n } as DOMRect);\n specPopover.controlElement = controlElement;\n window.visualViewport = { width: 800, height: 600 } as VisualViewport;\n });\n\n it('sets the necessary CSS properties', async () => {\n await specPopover.setCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBe('30px');\n expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBe('720px');\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-opacity')).toBe('1');\n });\n\n it('sets --comp-pop-bottom when direction is up', async () => {\n specPopover.currentDirection = 'up';\n await specPopover.setCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBe('580px');\n });\n\n it('sets --comp-pop-top when direction is down', async () => {\n specPopover.currentDirection = 'down';\n await specPopover.setCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBe('70px');\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n });\n\n it('sets --comp-pop-width when block is true', async () => {\n specPopover.block = true;\n await specPopover.setCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBe('0px');\n });\n });\n\n describe('clearCSSProperties', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n containerElement.style.setProperty('--comp-pop-max-height', '100px');\n containerElement.style.setProperty('--comp-pop-top', '20px');\n containerElement.style.setProperty('--comp-pop-bottom', '25px');\n containerElement.style.setProperty('--comp-pop-left', '30px');\n containerElement.style.setProperty('--comp-pop-right', '35px');\n containerElement.style.setProperty('--comp-pop-width', '200px');\n containerElement.style.setProperty('--comp-pop-opacity', '1');\n specPopover.containerElement = containerElement;\n });\n\n it('clears the necessary CSS properties', async () => {\n await specPopover.clearCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-opacity')).toBeFalsy();\n });\n });\n\n describe('setDirectionAndShow', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n specPopover.containerElement = containerElement;\n specPopover.setCSSProperties = jest.fn();\n specPopover.scrollContainerTo = jest.fn();\n });\n\n it('does nothing when open is false', async () => {\n specPopover.open = false;\n await specPopover.setDirectionAndShow('up');\n expect(specPopover.currentDirection).toBeUndefined();\n expect(specPopover.show).toBe(false);\n expect(specPopover.setCSSProperties).not.toHaveBeenCalled();\n });\n\n it('sets the direction and shows the popover', async () => {\n specPopover.open = true;\n await specPopover.setDirectionAndShow('up');\n expect(specPopover.currentDirection).toBe('up');\n expect(specPopover.show).toBe(true);\n expect(specPopover.setCSSProperties).toHaveBeenCalled();\n });\n });\n\n describe('determinePopDirection', () => {\n let specPopover: Q2Popover;\n let controlElement: HTMLDivElement;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n controlElement = document.createElement('div');\n containerElement = document.createElement('div');\n specPopover.controlElement = controlElement;\n specPopover.containerElement = containerElement;\n window.visualViewport = { width: 800, height: 600 } as VisualViewport;\n specPopover.setDirectionAndShow = jest.fn();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 500,\n bottom: 550,\n } as DOMRect);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('490px');\n expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('up');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 100,\n bottom: 150,\n } as DOMRect);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('440px');\n expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('down');\n\n controlSpy.mockRestore();\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-popover-test.spec.js","sourceRoot":"","sources":["../../../test/elements/q2-popover-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { Q2Popover } from '../../src/components/q2-popover/q2-popover';\n\ndescribe('popover', () => {\n let specPopover: Q2Popover;\n\n const samplePlatformDimensions = {\n scrollY: 0,\n innerHeight: 800,\n innerWidth: 600,\n outletOffset: 20,\n };\n\n const sampleTectonWindow = {\n inMobileApp: false,\n noStrings: false,\n platformUrl: '',\n platformDimensions: samplePlatformDimensions,\n };\n\n describe('Props', () => {\n describe('mode', () => {\n it('does not add the legacy class on the container (default)', async () => {\n const page = await newSpecPage({\n components: [Q2Popover],\n html: `<q2-popover></q2-popover>`,\n });\n expect(page.root.shadowRoot.firstElementChild.classList.contains('legacy')).toBeFalsy();\n });\n\n it('adds the legacy class on the container when mode is \"legacy\"', async () => {\n const page = await newSpecPage({\n components: [Q2Popover],\n html: `<q2-popover mode=\"legacy\"></q2-popover>`,\n });\n expect(page.root.shadowRoot.firstElementChild.classList.contains('legacy')).toBeTruthy();\n });\n });\n });\n\n describe('Methods', () => {\n beforeEach(() => {\n specPopover = new Q2Popover();\n });\n\n describe('toggle', () => {\n it('sets open to true when open is false', async () => {\n specPopover.open = false;\n await specPopover.toggle();\n expect(specPopover.open).toBe(true);\n });\n\n it('sets open to false when open is true', async () => {\n specPopover.open = true;\n await specPopover.toggle();\n expect(specPopover.open).toBe(false);\n });\n });\n\n describe('scrollContainerTo', () => {\n it('scrolls the container to the given position', async () => {\n const containerElement = document.createElement('div');\n containerElement.scrollTo = jest.fn();\n specPopover.containerElement = containerElement;\n await specPopover.scrollContainerTo({ top: 100, left: 50 });\n expect(containerElement.scrollTo).toHaveBeenCalledWith({ top: 100, left: 50 });\n });\n });\n\n describe('openChanged', () => {\n beforeEach(() => {\n specPopover.addViewportListeners = jest.fn();\n specPopover.determinePopDirection = jest.fn();\n specPopover.removeViewportListeners = jest.fn();\n specPopover.clearCSSProperties = jest.fn();\n });\n\n it('sets open to true when open is false', async () => {\n specPopover.currentDirection = 'down';\n specPopover.show = true;\n await specPopover.openChanged(true);\n expect(specPopover.currentDirection).toBe('down');\n expect(specPopover.show).toBeTruthy();\n expect(specPopover.addViewportListeners).toHaveBeenCalled();\n expect(specPopover.determinePopDirection).toHaveBeenCalled();\n expect(specPopover.removeViewportListeners).not.toHaveBeenCalled();\n expect(specPopover.clearCSSProperties).not.toHaveBeenCalled();\n });\n\n it('sets open to false when open is true', async () => {\n specPopover.currentDirection = 'down';\n specPopover.show = true;\n await specPopover.openChanged(false);\n expect(specPopover.currentDirection).toBeUndefined();\n expect(specPopover.show).toBeFalsy();\n expect(specPopover.addViewportListeners).not.toHaveBeenCalled();\n expect(specPopover.determinePopDirection).not.toHaveBeenCalled();\n expect(specPopover.clearCSSProperties).toHaveBeenCalled();\n expect(specPopover.clearCSSProperties).toHaveBeenCalled();\n });\n });\n });\n\n describe('Getters', () => {\n beforeEach(() => {\n specPopover = new Q2Popover();\n });\n\n describe('actualDirection', () => {\n it('returns direction when \"up\"', async () => {\n specPopover.direction = 'up';\n expect(specPopover.actualDirection).toBe('up');\n });\n\n it('returns direction when \"down\"', async () => {\n specPopover.direction = 'down';\n expect(specPopover.actualDirection).toBe('down');\n });\n\n it('returns undefined when not \"up\" or \"down\"', async () => {\n (specPopover.direction as any) = 'bottom';\n expect(specPopover.actualDirection).toBeUndefined();\n });\n });\n\n describe('isModule', () => {\n it('returns false when window top matches window and platformDimensions is not defined', async () => {\n expect(window.top).toBe(window);\n expect(window.Tecton).toBeUndefined();\n expect(specPopover.isModule).toBe(false);\n });\n\n it('returns false when window top does not match window and platformDimensions is not defined', async () => {\n const windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n expect(window.top).not.toEqual(window);\n expect(window.Tecton).toBeUndefined();\n expect(specPopover.isModule).toBe(false);\n windowSpy.mockRestore();\n });\n\n it('returns false when window top matches window and platformDimensions is defined', async () => {\n window.Tecton = sampleTectonWindow;\n expect(window.top).toBe(window);\n expect(window.Tecton.platformDimensions).toBeTruthy();\n expect(specPopover.isModule).toBe(false);\n });\n\n it('returns true when window top does not match window and platformDimensions is defined', async () => {\n const windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n window.Tecton = sampleTectonWindow;\n expect(specPopover.isModule).toBe(true);\n windowSpy.mockRestore();\n });\n });\n });\n\n describe('when in a module', () => {\n let specPopover: Q2Popover;\n let windowSpy: jest.SpyInstance;\n let controlElement: HTMLDivElement;\n let containerElement: HTMLDivElement;\n\n beforeEach(async () => {\n specPopover = new Q2Popover();\n windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n window.Tecton = sampleTectonWindow;\n expect(specPopover.isModule).toBe(true);\n\n controlElement = document.createElement('div');\n specPopover.controlElement = controlElement;\n\n containerElement = document.createElement('div');\n specPopover.containerElement = containerElement;\n });\n\n afterEach(() => {\n windowSpy.mockRestore();\n });\n\n describe(\"when the module is taller than the window's viewport\", () => {\n beforeEach(() => {\n specPopover.open = true;\n window.visualViewport = { height: 1200 } as any;\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 20,\n bottom: 70,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('700px');\n expect(specPopover.currentDirection).toBe('down');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 600,\n bottom: 650,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('590px');\n expect(specPopover.currentDirection).toBe('up');\n\n controlSpy.mockRestore();\n });\n\n describe('when the outletOffset is less than 0', () => {\n beforeEach(() => {\n window.Tecton = {\n ...sampleTectonWindow,\n platformDimensions: { ...samplePlatformDimensions, outletOffset: -50 },\n };\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 20,\n bottom: 70,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('770px');\n expect(specPopover.currentDirection).toBe('down');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 600,\n bottom: 650,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('540px');\n expect(specPopover.currentDirection).toBe('up');\n\n controlSpy.mockRestore();\n });\n });\n });\n\n describe(\"when the module is shorter than the window's viewport\", () => {\n beforeEach(() => {\n specPopover.open = true;\n window.visualViewport = { height: 600 } as any;\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 20,\n bottom: 70,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('520px');\n expect(specPopover.currentDirection).toBe('down');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 500,\n bottom: 550,\n } as any);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('490px');\n expect(specPopover.currentDirection).toBe('up');\n\n controlSpy.mockRestore();\n });\n });\n });\n\n describe('viewPortChanged', () => {\n let specPopover: Q2Popover;\n let windowSpy: jest.SpyInstance;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n window.Tecton = sampleTectonWindow;\n expect(specPopover.isModule).toBe(true);\n specPopover.determinePopDirection = jest.fn();\n });\n\n afterEach(() => {\n windowSpy.mockRestore();\n });\n\n it('calls determinePopDirection when open is true', async () => {\n specPopover.open = true;\n await specPopover.viewPortChanged();\n expect(specPopover.determinePopDirection).toHaveBeenCalled();\n });\n\n it('does nothing when open is false', async () => {\n specPopover.open = false;\n await specPopover.viewPortChanged();\n expect(specPopover.determinePopDirection).not.toHaveBeenCalled();\n });\n });\n\n describe('viewPortOrientationChanged', () => {\n let specPopover: Q2Popover;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n specPopover.viewPortChanged = jest.fn();\n });\n\n it('sets orientationChanged to true and calls viewportChanged', async () => {\n await specPopover.viewPortOrientationChanged();\n expect(specPopover.orientationChanged).toBe(true);\n expect(specPopover.viewPortChanged).toHaveBeenCalled();\n });\n });\n\n describe('setFixedCSSProperties', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n specPopover.containerElement = containerElement;\n\n const controlElement = document.createElement('div');\n controlElement.getBoundingClientRect = jest.fn().mockReturnValue({\n top: 20,\n bottom: 70,\n left: 30,\n right: 80,\n } as DOMRect);\n specPopover.controlElement = controlElement;\n window.visualViewport = { width: 800, height: 600 } as VisualViewport;\n });\n\n it('sets the necessary CSS properties', async () => {\n await specPopover.setFixedCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBe('30px');\n expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBe('720px');\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-opacity')).toBe('1');\n });\n\n it('sets --comp-pop-bottom when direction is up', async () => {\n specPopover.currentDirection = 'up';\n await specPopover.setFixedCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBe('580px');\n });\n\n it('sets --comp-pop-top when direction is down', async () => {\n specPopover.currentDirection = 'down';\n await specPopover.setFixedCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBe('70px');\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n });\n\n it('sets --comp-pop-width when block is true', async () => {\n specPopover.block = true;\n await specPopover.setFixedCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBe('0px');\n });\n });\n\n describe('setAbsoluteCSSProperties', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n specPopover.mode = 'legacy';\n specPopover.containerElement = containerElement;\n\n const controlElement = document.createElement('div');\n controlElement.getBoundingClientRect = jest.fn().mockReturnValue({\n top: 20,\n bottom: 70,\n left: 30,\n right: 80,\n } as DOMRect);\n specPopover.controlElement = controlElement;\n window.visualViewport = { width: 800, height: 600 } as VisualViewport;\n });\n\n it('sets the necessary CSS properties', async () => {\n await specPopover.setAbsoluteCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBe('0');\n expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBe('unset');\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBe('');\n expect(containerElement.style.getPropertyValue('--comp-pop-opacity')).toBe('1');\n });\n\n it('sets the necessary CSS properties when align is right', async () => {\n specPopover.align = 'right';\n await specPopover.setAbsoluteCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBe('unset');\n expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBe('0');\n });\n\n it('sets --comp-pop-bottom when direction is up', async () => {\n specPopover.currentDirection = 'up';\n await specPopover.setAbsoluteCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBe('0px');\n });\n\n it('does not set --comp-pop-top when direction is down', async () => {\n specPopover.currentDirection = 'down';\n await specPopover.setAbsoluteCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBe('');\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBe('');\n });\n\n it('sets --comp-pop-width when block is true', async () => {\n specPopover.block = true;\n await specPopover.setAbsoluteCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBe('100%');\n });\n });\n\n describe('clearCSSProperties', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n containerElement.style.setProperty('--comp-pop-max-height', '100px');\n containerElement.style.setProperty('--comp-pop-top', '20px');\n containerElement.style.setProperty('--comp-pop-bottom', '25px');\n containerElement.style.setProperty('--comp-pop-left', '30px');\n containerElement.style.setProperty('--comp-pop-right', '35px');\n containerElement.style.setProperty('--comp-pop-width', '200px');\n containerElement.style.setProperty('--comp-pop-opacity', '1');\n specPopover.containerElement = containerElement;\n });\n\n it('clears the necessary CSS properties', async () => {\n await specPopover.clearCSSProperties();\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-top')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-bottom')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-left')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-right')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-width')).toBeFalsy();\n expect(containerElement.style.getPropertyValue('--comp-pop-opacity')).toBeFalsy();\n });\n });\n\n describe('setDirectionAndShow', () => {\n let specPopover: Q2Popover;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n containerElement = document.createElement('div');\n specPopover.containerElement = containerElement;\n specPopover.setFixedCSSProperties = jest.fn();\n specPopover.setAbsoluteCSSProperties = jest.fn();\n specPopover.scrollContainerTo = jest.fn();\n });\n\n it('does nothing when open is false', async () => {\n specPopover.open = false;\n await specPopover.setDirectionAndShow('up');\n expect(specPopover.currentDirection).toBeUndefined();\n expect(specPopover.show).toBe(false);\n expect(specPopover.setFixedCSSProperties).not.toHaveBeenCalled();\n expect(specPopover.setAbsoluteCSSProperties).not.toHaveBeenCalled();\n });\n\n describe('when open is true', () => {\n beforeEach(() => {\n specPopover.open = true;\n });\n\n it('sets the direction, shows the popover, and sets fixed position properties', async () => {\n await specPopover.setDirectionAndShow('up');\n expect(specPopover.currentDirection).toBe('up');\n expect(specPopover.show).toBe(true);\n expect(specPopover.setFixedCSSProperties).toHaveBeenCalled();\n expect(specPopover.setAbsoluteCSSProperties).not.toHaveBeenCalled();\n });\n\n it('sets the direction, shows the popover, and sets absolute position properties when mode is \"legacy\"', async () => {\n specPopover.mode = 'legacy';\n await specPopover.setDirectionAndShow('up');\n expect(specPopover.currentDirection).toBe('up');\n expect(specPopover.show).toBe(true);\n expect(specPopover.setFixedCSSProperties).not.toHaveBeenCalled();\n expect(specPopover.setAbsoluteCSSProperties).toHaveBeenCalled();\n });\n });\n });\n\n describe('determinePopDirection', () => {\n let specPopover: Q2Popover;\n let controlElement: HTMLDivElement;\n let containerElement: HTMLDivElement;\n\n beforeEach(() => {\n specPopover = new Q2Popover();\n controlElement = document.createElement('div');\n containerElement = document.createElement('div');\n specPopover.controlElement = controlElement;\n specPopover.containerElement = containerElement;\n window.visualViewport = { width: 800, height: 600 } as VisualViewport;\n specPopover.setDirectionAndShow = jest.fn();\n });\n\n it('sets the direction to up when control element has more space above it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 500,\n bottom: 550,\n } as DOMRect);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('490px');\n expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('up');\n\n controlSpy.mockRestore();\n });\n\n it('sets the direction to down when control element has more space below it', async () => {\n const controlSpy = jest.spyOn(controlElement, 'getBoundingClientRect').mockReturnValue({\n top: 100,\n bottom: 150,\n } as DOMRect);\n await specPopover.determinePopDirection();\n\n expect(containerElement.style.getPropertyValue('--comp-pop-max-height')).toBe('440px');\n expect(specPopover.setDirectionAndShow).toHaveBeenCalledWith('down');\n\n controlSpy.mockRestore();\n });\n });\n});\n"]}
|
|
@@ -1510,6 +1510,30 @@ describe('q2-select', () => {
|
|
|
1510
1510
|
});
|
|
1511
1511
|
});
|
|
1512
1512
|
});
|
|
1513
|
+
describe('popoverMode', () => {
|
|
1514
|
+
it('does not set any mode on the popover (default)', async () => {
|
|
1515
|
+
const page = await setup({
|
|
1516
|
+
html: `
|
|
1517
|
+
<q2-select>
|
|
1518
|
+
<q2-option value="1" display="One">One</q2-option>
|
|
1519
|
+
</q2-select>
|
|
1520
|
+
`,
|
|
1521
|
+
});
|
|
1522
|
+
popover = await page.find('q2-select >>> q2-popover');
|
|
1523
|
+
expect(await popover.getProperty('mode')).toBeNull();
|
|
1524
|
+
});
|
|
1525
|
+
it('sets the value of popoverMode as the mode on the popover', async () => {
|
|
1526
|
+
const page = await setup({
|
|
1527
|
+
html: `
|
|
1528
|
+
<q2-select popover-mode="legacy">
|
|
1529
|
+
<q2-option value="1" display="One">One</q2-option>
|
|
1530
|
+
</q2-select>
|
|
1531
|
+
`,
|
|
1532
|
+
});
|
|
1533
|
+
popover = await page.find('q2-select >>> q2-popover');
|
|
1534
|
+
expect(await popover.getProperty('mode')).toEqual('legacy');
|
|
1535
|
+
});
|
|
1536
|
+
});
|
|
1513
1537
|
});
|
|
1514
1538
|
describe('robust content', () => {
|
|
1515
1539
|
beforeEach(async () => {
|