@spectrum-web-components/overlay 0.39.3 → 0.40.0
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/custom-elements.json +9 -2
- package/package.json +9 -9
- package/src/AbstractOverlay.d.ts +2 -1
- package/src/AbstractOverlay.dev.js +6 -0
- package/src/AbstractOverlay.dev.js.map +2 -2
- package/src/AbstractOverlay.js +1 -1
- package/src/AbstractOverlay.js.map +3 -3
- package/src/Overlay.d.ts +3 -1
- package/src/Overlay.dev.js +17 -3
- package/src/Overlay.dev.js.map +2 -2
- package/src/Overlay.js +3 -3
- package/src/Overlay.js.map +3 -3
- package/src/OverlayStack.dev.js +1 -1
- package/src/OverlayStack.dev.js.map +2 -2
- package/src/OverlayStack.js +1 -1
- package/src/OverlayStack.js.map +2 -2
- package/src/topLayerOverTransforms.dev.js +17 -5
- package/src/topLayerOverTransforms.dev.js.map +2 -2
- package/src/topLayerOverTransforms.js +1 -1
- package/src/topLayerOverTransforms.js.map +3 -3
- package/stories/overlay-element.stories.js +32 -24
- package/stories/overlay-element.stories.js.map +2 -2
- package/test/index.js +7 -0
- package/test/index.js.map +2 -2
- package/test/overlay-element.test.js +37 -1
- package/test/overlay-element.test.js.map +2 -2
- package/test/overlay-trigger-click.test.js +40 -8
- package/test/overlay-trigger-click.test.js.map +2 -2
- package/test/overlay-trigger-longpress.test.js +29 -11
- package/test/overlay-trigger-longpress.test.js.map +2 -2
- package/test/overlay-v1.test.js +235 -206
- package/test/overlay-v1.test.js.map +2 -2
- package/test/overlay.test.js +271 -242
- package/test/overlay.test.js.map +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["overlay-element.test.ts"],
|
|
4
|
-
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n nextFrame,\n oneEvent,\n} from '@open-wc/testing';\nimport type { Overlay } from '@spectrum-web-components/overlay/src/Overlay.js';\nimport '@spectrum-web-components/overlay/sp-overlay.js';\nimport { Tooltip } from '@spectrum-web-components/tooltip';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport { Theme } from '@spectrum-web-components/theme';\nimport { TemplateResult } from '@spectrum-web-components/base';\nimport '@spectrum-web-components/theme/sp-theme.js';\nimport '@spectrum-web-components/theme/src/themes.js';\nimport '@spectrum-web-components/button/sp-button.js';\n\nimport { sendMouse } from '../../../test/plugins/browser.js';\nimport { Button } from '@spectrum-web-components/button';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { receivesFocus } from '../stories/overlay-element.stories.js';\n\nconst OVERLAY_TYPES = ['modal', 'page', 'hint', 'auto', 'manual'] as const;\ntype OverlayTypes = typeof OVERLAY_TYPES[number];\n\nasync function styledFixture<T extends Element>(\n story: TemplateResult\n): Promise<T> {\n const test = await fixture<Theme>(html`\n <sp-theme theme=\"spectrum\" scale=\"medium\" color=\"light\">\n ${story}\n </sp-theme>\n `);\n return test.children[0] as T;\n}\n\ndescribe('sp-overlay', () => {\n function opensDeclaratively(overlayType: OverlayTypes): void {\n it(`as [type=\"'${overlayType}'\"]`, async () => {\n const el = await styledFixture<Overlay>(html`\n <sp-overlay open type=${overlayType}>\n <sp-tooltip>Content</sp-tooltip>\n </sp-overlay>\n `);\n const content = el.children[0] as Tooltip;\n let opened = oneEvent(el, 'sp-opened');\n await opened;\n\n expect(content.open).to.be.true;\n const closed = oneEvent(el, 'sp-closed');\n el.open = false;\n await closed;\n\n expect(content.open).to.be.false;\n opened = oneEvent(el, 'sp-opened');\n el.open = true;\n await opened;\n\n expect(content.open).to.be.true;\n });\n }\n\n describe('[type=\"modal\"]', () => {\n opensDeclaratively('modal');\n describe('interaction with other non-ancestor overlays', function () {\n beforeEach(async function () {\n this.fixture = await styledFixture<Overlay>(html`\n <div>\n ${OVERLAY_TYPES.map(\n (type) => html`\n <sp-overlay type=${type}>\n <sp-tooltip>${type} Content</sp-tooltip>\n </sp-overlay>\n `\n )}\n </div>\n `);\n\n this.modal = this.fixture.querySelector(\n '[type=\"modal\"]'\n ) as Overlay;\n this.page = this.fixture.querySelector(\n '[type=\"page\"]'\n ) as Overlay;\n this.hint = this.fixture.querySelector(\n '[type=\"hint\"]'\n ) as Overlay;\n this.auto = this.fixture.querySelector(\n '[type=\"auto\"]'\n ) as Overlay;\n this.manual = this.fixture.querySelector(\n '[type=\"manual\"]'\n ) as Overlay;\n\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n afterEach(async function () {\n const closed = oneEvent(this.modal, 'sp-closed');\n this.modal.open = false;\n await closed;\n });\n it('closes \"page\" overlays when opening', async function () {\n let opened = oneEvent(this.page, 'sp-opened');\n this.page.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.modal, 'sp-opened');\n const closed = oneEvent(this.page, 'sp-closed');\n this.modal.open = true;\n await opened;\n await closed;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n it('closes \"hint\" overlays when opening', async function () {\n let opened = oneEvent(this.hint, 'sp-opened');\n this.hint.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.true;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.modal, 'sp-opened');\n const closed = oneEvent(this.hint, 'sp-closed');\n this.modal.open = true;\n await opened;\n await closed;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n it('closes \"auto\" overlays when opening', async function () {\n let opened = oneEvent(this.auto, 'sp-opened');\n this.auto.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.true;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.modal, 'sp-opened');\n const closed = oneEvent(this.auto, 'sp-closed');\n this.modal.open = true;\n await opened;\n await closed;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n it('does not close \"manual\" overlays when opening', async function () {\n let opened = oneEvent(this.manual, 'sp-opened');\n this.manual.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n\n opened = oneEvent(this.modal, 'sp-opened');\n this.modal.open = true;\n await opened;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n });\n });\n });\n describe('[type=\"page\"]', () => {\n opensDeclaratively('page');\n describe('interaction with other non-ancestor overlays', function () {\n beforeEach(async function () {\n this.fixture = await styledFixture<Overlay>(html`\n <div>\n ${OVERLAY_TYPES.map(\n (type) => html`\n <sp-overlay type=${type}>\n <sp-tooltip>${type} Content</sp-tooltip>\n </sp-overlay>\n `\n )}\n </div>\n `);\n\n this.modal = this.fixture.querySelector(\n '[type=\"modal\"]'\n ) as Overlay;\n this.page = this.fixture.querySelector(\n '[type=\"page\"]'\n ) as Overlay;\n this.hint = this.fixture.querySelector(\n '[type=\"hint\"]'\n ) as Overlay;\n this.auto = this.fixture.querySelector(\n '[type=\"auto\"]'\n ) as Overlay;\n this.manual = this.fixture.querySelector(\n '[type=\"manual\"]'\n ) as Overlay;\n\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n afterEach(async function () {\n const closed = oneEvent(this.page, 'sp-closed');\n this.page.open = false;\n await closed;\n });\n it('closes \"page\" overlays when opening', async function () {\n let opened = oneEvent(this.modal, 'sp-opened');\n this.modal.open = true;\n await opened;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.page, 'sp-opened');\n const closed = oneEvent(this.modal, 'sp-closed');\n this.page.open = true;\n await opened;\n await closed;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n it('closes \"hint\" overlays when opening', async function () {\n let opened = oneEvent(this.hint, 'sp-opened');\n this.hint.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.true;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.page, 'sp-opened');\n const closed = oneEvent(this.hint, 'sp-closed');\n this.page.open = true;\n await opened;\n await closed;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n it('closes \"auto\" overlays when opening', async function () {\n let opened = oneEvent(this.auto, 'sp-opened');\n this.auto.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.true;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.page, 'sp-opened');\n const closed = oneEvent(this.auto, 'sp-closed');\n this.page.open = true;\n await opened;\n await closed;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n it('does not close \"manual\" overlays when opening', async function () {\n let opened = oneEvent(this.manual, 'sp-opened');\n this.manual.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n\n opened = oneEvent(this.page, 'sp-opened');\n this.page.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n });\n });\n it('ignores Escape key interactions', async () => {\n const el = await styledFixture<Overlay>(html`\n <sp-overlay type=\"page\">\n <sp-popover>This is a \"page\" Overlay</sp-popover>\n </sp-overlay>\n `);\n const opened = oneEvent(el, 'sp-opened');\n el.open = true;\n await opened;\n\n expect(el.open).to.be.true;\n\n await sendKeys({\n press: 'Escape',\n });\n\n await elementUpdated(el);\n\n expect(el.open).to.be.true;\n });\n });\n\n describe('[type=\"hint\"]', () => {\n opensDeclaratively('hint');\n\n it('closes other `[type=hint]` overlays when opening', async () => {\n const test = await styledFixture<Overlay>(html`\n <div>\n ${[1, 2].map(\n (overlay) => html`\n <sp-overlay type=\"hint\" class=\"hint-${overlay}\">\n <sp-tooltip>Hint ${overlay} Content</sp-tooltip>\n </sp-overlay>\n `\n )}\n </div>\n `);\n const hint1 = test.querySelector('.hint-1') as Overlay;\n const hint2 = test.querySelector('.hint-2') as Overlay;\n\n expect(hint1.open).to.be.false;\n expect(hint2.open).to.be.false;\n\n let opened = oneEvent(hint1, 'sp-opened');\n hint1.open = true;\n await opened;\n\n expect(hint1.open).to.be.true;\n expect(hint2.open).to.be.false;\n\n opened = oneEvent(hint2, 'sp-opened');\n let closed = oneEvent(hint1, 'sp-closed');\n hint2.open = true;\n await opened;\n await closed;\n\n expect(hint1.open).to.be.false;\n expect(hint2.open).to.be.true;\n\n opened = oneEvent(hint1, 'sp-opened');\n closed = oneEvent(hint2, 'sp-closed');\n hint1.open = true;\n await opened;\n await closed;\n\n expect(hint1.open).to.be.true;\n expect(hint2.open).to.be.false;\n });\n it('stays open when pointer enters overlay from trigger element', async () => {\n const test = await styledFixture(\n html`\n <div>\n <sp-button id=\"test-button\">\n This is a button.\n </sp-button>\n <sp-overlay\n trigger=\"test-button@hover\"\n type=\"hint\"\n placement=\"bottom\"\n offset=\"-10\"\n >\n <sp-tooltip>Help text.</sp-tooltip>\n </sp-overlay>\n </div>\n `\n );\n\n const button = test.querySelector('sp-button') as Button;\n const overlay = test.querySelector(\n 'sp-overlay'\n ) as unknown as Overlay;\n const el = test.querySelector('sp-tooltip') as Tooltip;\n const buttonRect = button.getBoundingClientRect();\n const buttonPoint = [\n buttonRect.x + buttonRect.width / 2,\n buttonRect.y + buttonRect.height - 2,\n ] as [number, number];\n\n await elementUpdated(overlay);\n\n // This test is possibly weird in its over simplicity for this contexts...\n await expect(button).to.be.accessible();\n // Pointer enter the button to trigger the tooltip\n let opened = oneEvent(button, 'sp-opened');\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: buttonPoint,\n },\n ],\n });\n await elementUpdated(overlay);\n // Allow the overlay process time to get started (we're not waiting for it to finish),\n // so that the next step can happen _while_ it opens.\n await nextFrame();\n await nextFrame();\n expect(overlay.open).to.be.true;\n // Pointer leave the button to close the tooltip, but...\n // Pointer enter the tooltip to keep the tooltip open\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width / 2,\n buttonRect.y + buttonRect.height - 1,\n ],\n },\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width / 2,\n buttonRect.y + buttonRect.height,\n ],\n },\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width / 2,\n buttonRect.y + buttonRect.height + 1,\n ],\n },\n ],\n });\n // Give the Overlay some time to process what just happened.\n await nextFrame();\n await nextFrame();\n expect(overlay.open).to.be.true;\n await opened;\n\n expect(el.open).to.be.true;\n await expect(button).to.be.accessible();\n\n let closed = oneEvent(button, 'sp-closed');\n // point enter the button to trigger the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: buttonPoint,\n },\n ],\n });\n // pointer leave the button to close the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width * 2,\n buttonRect.y + buttonRect.height * 2,\n ] as [number, number],\n },\n ],\n });\n await closed;\n\n expect(el.open).to.be.false;\n\n opened = oneEvent(button, 'sp-opened');\n // pointer enter the button to trigger the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: buttonPoint,\n },\n ],\n });\n await opened;\n await elementUpdated(el);\n closed = oneEvent(button, 'sp-closed');\n // pointer leave the button to close the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width * 2,\n buttonRect.y + buttonRect.height * 2,\n ] as [number, number],\n },\n ],\n });\n await closed;\n });\n it('stays open when pointer enters overlay from trigger element: self managed', async () => {\n const button = await styledFixture(\n html`\n <sp-button>\n This is a button.\n <sp-tooltip self-managed placement=\"bottom\">\n Help text.\n </sp-tooltip>\n </sp-button>\n `\n );\n\n const el = button.querySelector('sp-tooltip') as Tooltip;\n const buttonRect = button.getBoundingClientRect();\n const buttonPoint = [\n buttonRect.x + buttonRect.width / 2,\n buttonRect.y + buttonRect.height / 2,\n ] as [number, number];\n\n await elementUpdated(el);\n // This test is possibly weird in its over simplicity for this contexts...\n await expect(button).to.be.accessible();\n // Pointer enter the button to trigger the tooltip\n let opened = oneEvent(button, 'sp-opened');\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: buttonPoint,\n },\n ],\n });\n // It takes this many frame for the overlay content to actual be queryable.\n // We're trying to do work _before_ `sp-opened` so it's a little tricky.\n // Is it possible to do this work _after_ `sp-opened` for more stability?\n // Try futzing with the `offset` values of the `sp-overlay`?\n await nextFrame();\n await nextFrame();\n await nextFrame();\n await nextFrame();\n const tooltipRect = (\n el.shadowRoot.querySelector('#tooltip') as HTMLDivElement\n ).getBoundingClientRect();\n const tooltipPoint = [\n tooltipRect.x + tooltipRect.width / 2,\n tooltipRect.y + tooltipRect.height / 2,\n ] as [number, number];\n // Pointer leave the button to close the tooltip, but...\n // Pointer enter the tooltip to keep the tooltip open\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: tooltipPoint,\n },\n ],\n });\n await opened;\n\n expect(el.open).to.be.true;\n await expect(button).to.be.accessible();\n\n let closed = oneEvent(button, 'sp-closed');\n // point enter the button to trigger the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: buttonPoint,\n },\n ],\n });\n // pointer leave the button to close the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width * 2,\n buttonRect.y + buttonRect.height * 2,\n ] as [number, number],\n },\n ],\n });\n await closed;\n\n expect(el.open).to.be.false;\n\n opened = oneEvent(button, 'sp-opened');\n // pointer enter the button to trigger the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: buttonPoint,\n },\n ],\n });\n await opened;\n expect(el.open).to.be.true;\n\n closed = oneEvent(button, 'sp-closed');\n // pointer leave the button to close the tooltip\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width * 2,\n buttonRect.y + buttonRect.height * 2,\n ] as [number, number],\n },\n ],\n });\n await closed;\n expect(el.open).to.be.false;\n });\n });\n describe('[type=\"auto\"]', () => {\n opensDeclaratively('auto');\n it('receives focus', async () => {\n const test = await fixture(html`\n <div>${receivesFocus(receivesFocus.args)}</div>\n `);\n const trigger = test.querySelector('#trigger') as Button;\n const overlay = test.querySelector('a');\n\n expect(document.activeElement === overlay).to.be.false;\n\n const opened = oneEvent(trigger, 'sp-opened');\n trigger.click();\n await opened;\n\n expect(document.activeElement === overlay).to.be.true;\n });\n });\n describe('[type=\"manual\"]', () => {\n opensDeclaratively('manual');\n describe('interaction with other non-ancestor overlays', function () {\n beforeEach(async function () {\n this.fixture = await styledFixture<Overlay>(html`\n <div>\n ${OVERLAY_TYPES.map(\n (type) => html`\n <sp-overlay type=${type}>\n <sp-tooltip>${type} Content</sp-tooltip>\n </sp-overlay>\n `\n )}\n </div>\n `);\n\n this.modal = this.fixture.querySelector(\n '[type=\"modal\"]'\n ) as Overlay;\n this.page = this.fixture.querySelector(\n '[type=\"page\"]'\n ) as Overlay;\n this.hint = this.fixture.querySelector(\n '[type=\"hint\"]'\n ) as Overlay;\n this.auto = this.fixture.querySelector(\n '[type=\"auto\"]'\n ) as Overlay;\n this.manual = this.fixture.querySelector(\n '[type=\"manual\"]'\n ) as Overlay;\n\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n afterEach(async function () {\n const closed = oneEvent(this.manual, 'sp-closed');\n this.manual.open = false;\n await closed;\n });\n it('does not close \"modal\" overlays when opening', async function () {\n let opened = oneEvent(this.modal, 'sp-opened');\n this.modal.open = true;\n await opened;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.manual, 'sp-opened');\n this.manual.open = true;\n await opened;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n });\n it('does not close \"modal\" overlays when opening', async function () {\n let opened = oneEvent(this.page, 'sp-opened');\n this.page.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.manual, 'sp-opened');\n this.manual.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n });\n it('does not close \"hint\" overlays when opening', async function () {\n let opened = oneEvent(this.hint, 'sp-opened');\n this.hint.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.true;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.manual, 'sp-opened');\n this.manual.open = true;\n await opened;\n\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.true;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n });\n it('does not close \"auto\" overlays when opening', async function () {\n let opened = oneEvent(this.auto, 'sp-opened');\n this.auto.open = true;\n await opened;\n\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.true;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.manual, 'sp-opened');\n this.manual.open = true;\n await opened;\n\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.true;\n expect(this.manual.open).to.be.true;\n });\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport {\n aTimeout,\n elementUpdated,\n expect,\n fixture,\n html,\n nextFrame,\n oneEvent,\n} from '@open-wc/testing';\nimport type { Overlay } from '@spectrum-web-components/overlay/src/Overlay.js';\nimport '@spectrum-web-components/overlay/sp-overlay.js';\nimport { Tooltip } from '@spectrum-web-components/tooltip';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport { Theme } from '@spectrum-web-components/theme';\nimport { TemplateResult } from '@spectrum-web-components/base';\nimport '@spectrum-web-components/theme/sp-theme.js';\nimport '@spectrum-web-components/theme/src/themes.js';\nimport '@spectrum-web-components/button/sp-button.js';\n\nimport { sendMouse } from '../../../test/plugins/browser.js';\nimport { Button } from '@spectrum-web-components/button';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { click, receivesFocus } from '../stories/overlay-element.stories.js';\n\nconst OVERLAY_TYPES = ['modal', 'page', 'hint', 'auto', 'manual'] as const;\ntype OverlayTypes = typeof OVERLAY_TYPES[number];\n\nasync function styledFixture<T extends Element>(\n story: TemplateResult\n): Promise<T> {\n const test = await fixture<Theme>(html`\n <sp-theme theme=\"spectrum\" scale=\"medium\" color=\"light\">\n ${story}\n </sp-theme>\n `);\n return test.children[0] as T;\n}\n\ndescribe('sp-overlay', () => {\n function opensDeclaratively(overlayType: OverlayTypes): void {\n it(`as [type=\"'${overlayType}'\"]`, async () => {\n const el = await styledFixture<Overlay>(html`\n <sp-overlay open type=${overlayType}>\n <sp-tooltip>Content</sp-tooltip>\n </sp-overlay>\n `);\n const content = el.children[0] as Tooltip;\n let opened = oneEvent(el, 'sp-opened');\n await opened;\n\n expect(content.open).to.be.true;\n const closed = oneEvent(el, 'sp-closed');\n el.open = false;\n await closed;\n\n expect(content.open).to.be.false;\n opened = oneEvent(el, 'sp-opened');\n el.open = true;\n await opened;\n\n expect(content.open).to.be.true;\n });\n }\n\n describe('[type=\"modal\"]', () => {\n opensDeclaratively('modal');\n describe('interaction with other non-ancestor overlays', function () {\n beforeEach(async function () {\n this.fixture = await styledFixture<Overlay>(html`\n <div>\n ${OVERLAY_TYPES.map(\n (type) => html`\n <sp-overlay type=${type}>\n <sp-tooltip>${type} Content</sp-tooltip>\n </sp-overlay>\n `\n )}\n </div>\n `);\n\n this.modal = this.fixture.querySelector(\n '[type=\"modal\"]'\n ) as Overlay;\n this.page = this.fixture.querySelector(\n '[type=\"page\"]'\n ) as Overlay;\n this.hint = this.fixture.querySelector(\n '[type=\"hint\"]'\n ) as Overlay;\n this.auto = this.fixture.querySelector(\n '[type=\"auto\"]'\n ) as Overlay;\n this.manual = this.fixture.querySelector(\n '[type=\"manual\"]'\n ) as Overlay;\n\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n afterEach(async function () {\n const closed = oneEvent(this.modal, 'sp-closed');\n this.modal.open = false;\n await closed;\n });\n it('closes \"page\" overlays when opening', async function () {\n let opened = oneEvent(this.page, 'sp-opened');\n this.page.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.modal, 'sp-opened');\n const closed = oneEvent(this.page, 'sp-closed');\n this.modal.open = true;\n await opened;\n await closed;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n it('closes \"hint\" overlays when opening', async function () {\n let opened = oneEvent(this.hint, 'sp-opened');\n this.hint.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.true;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.modal, 'sp-opened');\n const closed = oneEvent(this.hint, 'sp-closed');\n this.modal.open = true;\n await opened;\n await closed;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n it('closes \"auto\" overlays when opening', async function () {\n let opened = oneEvent(this.auto, 'sp-opened');\n this.auto.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.true;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.modal, 'sp-opened');\n const closed = oneEvent(this.auto, 'sp-closed');\n this.modal.open = true;\n await opened;\n await closed;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n it('does not close \"manual\" overlays when opening', async function () {\n let opened = oneEvent(this.manual, 'sp-opened');\n this.manual.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n\n opened = oneEvent(this.modal, 'sp-opened');\n this.modal.open = true;\n await opened;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n });\n });\n });\n describe('[type=\"page\"]', () => {\n opensDeclaratively('page');\n describe('interaction with other non-ancestor overlays', function () {\n beforeEach(async function () {\n this.fixture = await styledFixture<Overlay>(html`\n <div>\n ${OVERLAY_TYPES.map(\n (type) => html`\n <sp-overlay type=${type}>\n <sp-tooltip>${type} Content</sp-tooltip>\n </sp-overlay>\n `\n )}\n </div>\n `);\n\n this.modal = this.fixture.querySelector(\n '[type=\"modal\"]'\n ) as Overlay;\n this.page = this.fixture.querySelector(\n '[type=\"page\"]'\n ) as Overlay;\n this.hint = this.fixture.querySelector(\n '[type=\"hint\"]'\n ) as Overlay;\n this.auto = this.fixture.querySelector(\n '[type=\"auto\"]'\n ) as Overlay;\n this.manual = this.fixture.querySelector(\n '[type=\"manual\"]'\n ) as Overlay;\n\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n afterEach(async function () {\n const closed = oneEvent(this.page, 'sp-closed');\n this.page.open = false;\n await closed;\n });\n it('closes \"page\" overlays when opening', async function () {\n let opened = oneEvent(this.modal, 'sp-opened');\n this.modal.open = true;\n await opened;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.page, 'sp-opened');\n const closed = oneEvent(this.modal, 'sp-closed');\n this.page.open = true;\n await opened;\n await closed;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n it('closes \"hint\" overlays when opening', async function () {\n let opened = oneEvent(this.hint, 'sp-opened');\n this.hint.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.true;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.page, 'sp-opened');\n const closed = oneEvent(this.hint, 'sp-closed');\n this.page.open = true;\n await opened;\n await closed;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n it('closes \"auto\" overlays when opening', async function () {\n let opened = oneEvent(this.auto, 'sp-opened');\n this.auto.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.true;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.page, 'sp-opened');\n const closed = oneEvent(this.auto, 'sp-closed');\n this.page.open = true;\n await opened;\n await closed;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n it('does not close \"manual\" overlays when opening', async function () {\n let opened = oneEvent(this.manual, 'sp-opened');\n this.manual.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n\n opened = oneEvent(this.page, 'sp-opened');\n this.page.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n });\n });\n it('ignores Escape key interactions', async () => {\n const el = await styledFixture<Overlay>(html`\n <sp-overlay type=\"page\">\n <sp-popover>This is a \"page\" Overlay</sp-popover>\n </sp-overlay>\n `);\n const opened = oneEvent(el, 'sp-opened');\n el.open = true;\n await opened;\n\n expect(el.open).to.be.true;\n\n await sendKeys({\n press: 'Escape',\n });\n\n await elementUpdated(el);\n\n expect(el.open).to.be.true;\n });\n });\n\n describe('[type=\"hint\"]', () => {\n opensDeclaratively('hint');\n\n it('closes other `[type=hint]` overlays when opening', async () => {\n const test = await styledFixture<Overlay>(html`\n <div>\n ${[1, 2].map(\n (overlay) => html`\n <sp-overlay type=\"hint\" class=\"hint-${overlay}\">\n <sp-tooltip>Hint ${overlay} Content</sp-tooltip>\n </sp-overlay>\n `\n )}\n </div>\n `);\n const hint1 = test.querySelector('.hint-1') as Overlay;\n const hint2 = test.querySelector('.hint-2') as Overlay;\n\n expect(hint1.open).to.be.false;\n expect(hint2.open).to.be.false;\n\n let opened = oneEvent(hint1, 'sp-opened');\n hint1.open = true;\n await opened;\n\n expect(hint1.open).to.be.true;\n expect(hint2.open).to.be.false;\n\n opened = oneEvent(hint2, 'sp-opened');\n let closed = oneEvent(hint1, 'sp-closed');\n hint2.open = true;\n await opened;\n await closed;\n\n expect(hint1.open).to.be.false;\n expect(hint2.open).to.be.true;\n\n opened = oneEvent(hint1, 'sp-opened');\n closed = oneEvent(hint2, 'sp-closed');\n hint1.open = true;\n await opened;\n await closed;\n\n expect(hint1.open).to.be.true;\n expect(hint2.open).to.be.false;\n });\n it('stays open when pointer enters overlay from trigger element', async () => {\n const test = await styledFixture(\n html`\n <div>\n <sp-button id=\"test-button\">\n This is a button.\n </sp-button>\n <sp-overlay\n trigger=\"test-button@hover\"\n type=\"hint\"\n placement=\"bottom\"\n offset=\"-10\"\n >\n <sp-tooltip>Help text.</sp-tooltip>\n </sp-overlay>\n </div>\n `\n );\n\n const button = test.querySelector('sp-button') as Button;\n const overlay = test.querySelector(\n 'sp-overlay'\n ) as unknown as Overlay;\n const el = test.querySelector('sp-tooltip') as Tooltip;\n const buttonRect = button.getBoundingClientRect();\n const buttonPoint = [\n buttonRect.x + buttonRect.width / 2,\n buttonRect.y + buttonRect.height - 2,\n ] as [number, number];\n\n await elementUpdated(overlay);\n\n // This test is possibly weird in its over simplicity for this contexts...\n await expect(button).to.be.accessible();\n // Pointer enter the button to trigger the tooltip\n let opened = oneEvent(button, 'sp-opened');\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: buttonPoint,\n },\n ],\n });\n await elementUpdated(overlay);\n // Allow the overlay process time to get started (we're not waiting for it to finish),\n // so that the next step can happen _while_ it opens.\n await nextFrame();\n await nextFrame();\n expect(overlay.open).to.be.true;\n // Pointer leave the button to close the tooltip, but...\n // Pointer enter the tooltip to keep the tooltip open\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width / 2,\n buttonRect.y + buttonRect.height - 1,\n ],\n },\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width / 2,\n buttonRect.y + buttonRect.height,\n ],\n },\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width / 2,\n buttonRect.y + buttonRect.height + 1,\n ],\n },\n ],\n });\n // Give the Overlay some time to process what just happened.\n await nextFrame();\n await nextFrame();\n expect(overlay.open).to.be.true;\n await opened;\n\n expect(el.open).to.be.true;\n await expect(button).to.be.accessible();\n\n let closed = oneEvent(button, 'sp-closed');\n // point enter the button to trigger the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: buttonPoint,\n },\n ],\n });\n // pointer leave the button to close the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width * 2,\n buttonRect.y + buttonRect.height * 2,\n ] as [number, number],\n },\n ],\n });\n await closed;\n\n expect(el.open).to.be.false;\n\n opened = oneEvent(button, 'sp-opened');\n // pointer enter the button to trigger the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: buttonPoint,\n },\n ],\n });\n await opened;\n await elementUpdated(el);\n closed = oneEvent(button, 'sp-closed');\n // pointer leave the button to close the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width * 2,\n buttonRect.y + buttonRect.height * 2,\n ] as [number, number],\n },\n ],\n });\n await closed;\n });\n it('stays open when pointer enters overlay from trigger element: self managed', async () => {\n const button = await styledFixture(\n html`\n <sp-button>\n This is a button.\n <sp-tooltip self-managed placement=\"bottom\">\n Help text.\n </sp-tooltip>\n </sp-button>\n `\n );\n\n const el = button.querySelector('sp-tooltip') as Tooltip;\n const buttonRect = button.getBoundingClientRect();\n const buttonPoint = [\n buttonRect.x + buttonRect.width / 2,\n buttonRect.y + buttonRect.height / 2,\n ] as [number, number];\n\n await elementUpdated(el);\n // This test is possibly weird in its over simplicity for this contexts...\n await expect(button).to.be.accessible();\n // Pointer enter the button to trigger the tooltip\n let opened = oneEvent(button, 'sp-opened');\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: buttonPoint,\n },\n ],\n });\n // It takes this many frame for the overlay content to actual be queryable.\n // We're trying to do work _before_ `sp-opened` so it's a little tricky.\n // Is it possible to do this work _after_ `sp-opened` for more stability?\n // Try futzing with the `offset` values of the `sp-overlay`?\n await nextFrame();\n await nextFrame();\n await nextFrame();\n await nextFrame();\n const tooltipRect = (\n el.shadowRoot.querySelector('#tooltip') as HTMLDivElement\n ).getBoundingClientRect();\n const tooltipPoint = [\n tooltipRect.x + tooltipRect.width / 2,\n tooltipRect.y + tooltipRect.height / 2,\n ] as [number, number];\n // Pointer leave the button to close the tooltip, but...\n // Pointer enter the tooltip to keep the tooltip open\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: tooltipPoint,\n },\n ],\n });\n await opened;\n\n expect(el.open).to.be.true;\n await expect(button).to.be.accessible();\n\n let closed = oneEvent(button, 'sp-closed');\n // point enter the button to trigger the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: buttonPoint,\n },\n ],\n });\n // pointer leave the button to close the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width * 2,\n buttonRect.y + buttonRect.height * 2,\n ] as [number, number],\n },\n ],\n });\n await closed;\n\n expect(el.open).to.be.false;\n\n opened = oneEvent(button, 'sp-opened');\n // pointer enter the button to trigger the tooltip\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: buttonPoint,\n },\n ],\n });\n await opened;\n expect(el.open).to.be.true;\n\n closed = oneEvent(button, 'sp-closed');\n // pointer leave the button to close the tooltip\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n buttonRect.x + buttonRect.width * 2,\n buttonRect.y + buttonRect.height * 2,\n ] as [number, number],\n },\n ],\n });\n await closed;\n expect(el.open).to.be.false;\n });\n });\n describe('[type=\"auto\"]', () => {\n opensDeclaratively('auto');\n it('receives focus', async () => {\n const test = await fixture(html`\n <div>${receivesFocus(receivesFocus.args)}</div>\n `);\n const trigger = test.querySelector('#trigger') as Button;\n const overlay = test.querySelector('a');\n\n expect(document.activeElement === overlay).to.be.false;\n\n const opened = oneEvent(trigger, 'sp-opened');\n trigger.click();\n await opened;\n\n expect(document.activeElement === overlay).to.be.true;\n });\n });\n describe('[type=\"manual\"]', () => {\n opensDeclaratively('manual');\n describe('interaction with other non-ancestor overlays', function () {\n beforeEach(async function () {\n this.fixture = await styledFixture<Overlay>(html`\n <div>\n ${OVERLAY_TYPES.map(\n (type) => html`\n <sp-overlay type=${type}>\n <sp-tooltip>${type} Content</sp-tooltip>\n </sp-overlay>\n `\n )}\n </div>\n `);\n\n this.modal = this.fixture.querySelector(\n '[type=\"modal\"]'\n ) as Overlay;\n this.page = this.fixture.querySelector(\n '[type=\"page\"]'\n ) as Overlay;\n this.hint = this.fixture.querySelector(\n '[type=\"hint\"]'\n ) as Overlay;\n this.auto = this.fixture.querySelector(\n '[type=\"auto\"]'\n ) as Overlay;\n this.manual = this.fixture.querySelector(\n '[type=\"manual\"]'\n ) as Overlay;\n\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n });\n afterEach(async function () {\n const closed = oneEvent(this.manual, 'sp-closed');\n this.manual.open = false;\n await closed;\n });\n it('does not close \"modal\" overlays when opening', async function () {\n let opened = oneEvent(this.modal, 'sp-opened');\n this.modal.open = true;\n await opened;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.manual, 'sp-opened');\n this.manual.open = true;\n await opened;\n expect(this.modal.open).to.be.true;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n });\n it('does not close \"modal\" overlays when opening', async function () {\n let opened = oneEvent(this.page, 'sp-opened');\n this.page.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.manual, 'sp-opened');\n this.manual.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.true;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n });\n it('does not close \"hint\" overlays when opening', async function () {\n let opened = oneEvent(this.hint, 'sp-opened');\n this.hint.open = true;\n await opened;\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.true;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.manual, 'sp-opened');\n this.manual.open = true;\n await opened;\n\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.true;\n expect(this.auto.open).to.be.false;\n expect(this.manual.open).to.be.true;\n });\n it('does not close \"auto\" overlays when opening', async function () {\n let opened = oneEvent(this.auto, 'sp-opened');\n this.auto.open = true;\n await opened;\n\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.true;\n expect(this.manual.open).to.be.false;\n\n opened = oneEvent(this.manual, 'sp-opened');\n this.manual.open = true;\n await opened;\n\n expect(this.modal.open).to.be.false;\n expect(this.page.open).to.be.false;\n expect(this.hint.open).to.be.false;\n expect(this.auto.open).to.be.true;\n expect(this.manual.open).to.be.true;\n });\n });\n describe('only close when mnually closed', function () {\n it('does not close when clicking away', async () => {\n const test = await fixture(html`\n <div>\n ${click({\n ...click.args,\n interaction: 'click',\n placement: 'bottom',\n type: 'manual',\n delayed: false,\n receivesFocus: 'auto',\n })}\n </div>\n `);\n const el = test.querySelector('sp-overlay') as Overlay;\n\n expect(el.open).to.be.false;\n\n const opened = oneEvent(el, 'sp-opened');\n el.open = true;\n await opened;\n\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [50, 400],\n },\n ],\n });\n\n await aTimeout(200);\n\n expect(el.open).to.be.true;\n\n const closed = oneEvent(el, 'sp-closed');\n el.open = false;\n await closed;\n\n expect(el.open).to.be.false;\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -8,11 +8,13 @@ import {
|
|
|
8
8
|
waitUntil
|
|
9
9
|
} from "@open-wc/testing";
|
|
10
10
|
import "@spectrum-web-components/popover/sp-popover.js";
|
|
11
|
+
import "@spectrum-web-components/tooltip/sp-tooltip.js";
|
|
12
|
+
import "@spectrum-web-components/button/sp-button.js";
|
|
11
13
|
import "@spectrum-web-components/action-button/sp-action-button.js";
|
|
12
14
|
import "@spectrum-web-components/icons-workflow/icons/sp-icon-magnify.js";
|
|
13
15
|
import "@spectrum-web-components/overlay/overlay-trigger.js";
|
|
14
16
|
import { spy } from "sinon";
|
|
15
|
-
import { fixture,
|
|
17
|
+
import { fixture, isOnTopLayer } from "../../../test/testing-helpers.js";
|
|
16
18
|
describe("Overlay Trigger - Click", () => {
|
|
17
19
|
it("displays `click` declaratively", async () => {
|
|
18
20
|
const openedSpy = spy();
|
|
@@ -47,18 +49,25 @@ describe("Overlay Trigger - Click", () => {
|
|
|
47
49
|
});
|
|
48
50
|
});
|
|
49
51
|
describe("closes on scroll", () => {
|
|
50
|
-
afterEach(() => {
|
|
52
|
+
afterEach(async () => {
|
|
51
53
|
if (document.scrollingElement) {
|
|
52
54
|
document.scrollingElement.scrollTop = 0;
|
|
53
55
|
}
|
|
56
|
+
await waitUntil(() => {
|
|
57
|
+
if (document.scrollingElement) {
|
|
58
|
+
return document.scrollingElement.scrollTop === 0;
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
});
|
|
54
62
|
});
|
|
55
63
|
["click", "replace", "inline"].map(
|
|
56
64
|
(interaction) => {
|
|
57
|
-
it(`closes "${interaction}" overlay on scroll`, async ()
|
|
65
|
+
it(`closes "${interaction}" overlay on scroll`, async function() {
|
|
58
66
|
const el = await fixture(html`
|
|
59
67
|
<overlay-trigger
|
|
60
|
-
placement="right
|
|
68
|
+
placement="right"
|
|
61
69
|
type=${interaction}
|
|
70
|
+
content="click"
|
|
62
71
|
>
|
|
63
72
|
<sp-action-button
|
|
64
73
|
slot="trigger"
|
|
@@ -66,7 +75,9 @@ describe("Overlay Trigger - Click", () => {
|
|
|
66
75
|
>
|
|
67
76
|
<sp-icon-magnify slot="icon"></sp-icon-magnify>
|
|
68
77
|
</sp-action-button>
|
|
69
|
-
<sp-popover slot="click-content" tip
|
|
78
|
+
<sp-popover slot="click-content" tip>
|
|
79
|
+
Content
|
|
80
|
+
</sp-popover>
|
|
70
81
|
</overlay-trigger>
|
|
71
82
|
`);
|
|
72
83
|
await nextFrame();
|
|
@@ -74,17 +85,20 @@ describe("Overlay Trigger - Click", () => {
|
|
|
74
85
|
expect(el.open).to.be.undefined;
|
|
75
86
|
await elementUpdated(el);
|
|
76
87
|
const opened = oneEvent(el, "sp-opened");
|
|
77
|
-
|
|
88
|
+
const trigger = el.querySelector(
|
|
89
|
+
"sp-action-button"
|
|
90
|
+
);
|
|
91
|
+
trigger.click();
|
|
78
92
|
await opened;
|
|
79
93
|
expect(el.open).to.equal("click");
|
|
80
|
-
expect(await
|
|
94
|
+
expect(await isOnTopLayer(popover)).to.be.true;
|
|
81
95
|
const closed = oneEvent(el, "sp-closed");
|
|
82
96
|
if (document.scrollingElement) {
|
|
83
97
|
document.scrollingElement.scrollTop = 100;
|
|
84
98
|
}
|
|
85
99
|
await closed;
|
|
86
100
|
expect(el.open).to.be.undefined;
|
|
87
|
-
expect(await
|
|
101
|
+
expect(await isOnTopLayer(popover)).to.be.false;
|
|
88
102
|
});
|
|
89
103
|
}
|
|
90
104
|
);
|
|
@@ -128,5 +142,23 @@ describe("Overlay Trigger - Click", () => {
|
|
|
128
142
|
);
|
|
129
143
|
expect(el.open).to.equal("click");
|
|
130
144
|
});
|
|
145
|
+
it("opens with a delay on click", async () => {
|
|
146
|
+
const el = await fixture(html`
|
|
147
|
+
<overlay-trigger placement="right-start">
|
|
148
|
+
<sp-button slot="trigger" variant="primary"></sp-button>
|
|
149
|
+
<sp-tooltip
|
|
150
|
+
slot="click-content"
|
|
151
|
+
id="content"
|
|
152
|
+
delayed
|
|
153
|
+
></sp-tooltip>
|
|
154
|
+
</overlay-trigger>
|
|
155
|
+
`);
|
|
156
|
+
const start = performance.now();
|
|
157
|
+
const opened = oneEvent(el, "sp-opened");
|
|
158
|
+
el.setAttribute("open", "click");
|
|
159
|
+
await opened;
|
|
160
|
+
const end = performance.now();
|
|
161
|
+
expect(end - start).to.be.greaterThan(1e3);
|
|
162
|
+
});
|
|
131
163
|
});
|
|
132
164
|
//# sourceMappingURL=overlay-trigger-click.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["overlay-trigger-click.test.ts"],
|
|
4
|
-
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport {\n elementUpdated,\n expect,\n html,\n nextFrame,\n oneEvent,\n waitUntil,\n} from '@open-wc/testing';\nimport type { Popover } from '@spectrum-web-components/popover';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/action-button/sp-action-button.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-magnify.js';\nimport {\n OverlayTrigger,\n TriggerInteractionsV1,\n} from '@spectrum-web-components/overlay';\nimport '@spectrum-web-components/overlay/overlay-trigger.js';\nimport { spy } from 'sinon';\nimport { ActionButton } from '@spectrum-web-components/action-button';\nimport { fixture,
|
|
5
|
-
"mappings": ";AAWA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,OAAO;AACP,OAAO;AACP,OAAO;AAKP,OAAO;AACP,SAAS,WAAW;AAEpB,SAAS,SAAS,
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport {\n elementUpdated,\n expect,\n html,\n nextFrame,\n oneEvent,\n waitUntil,\n} from '@open-wc/testing';\nimport type { Popover } from '@spectrum-web-components/popover';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\n\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/action-button/sp-action-button.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-magnify.js';\nimport {\n OverlayTrigger,\n TriggerInteractionsV1,\n} from '@spectrum-web-components/overlay';\nimport '@spectrum-web-components/overlay/overlay-trigger.js';\nimport { spy } from 'sinon';\nimport { ActionButton } from '@spectrum-web-components/action-button';\nimport { fixture, isOnTopLayer } from '../../../test/testing-helpers.js';\n\ndescribe('Overlay Trigger - Click', () => {\n it('displays `click` declaratively', async () => {\n const openedSpy = spy();\n const closedSpy = spy();\n const el = await fixture<OverlayTrigger>(\n (() => html`\n <overlay-trigger\n placement=\"right-start\"\n open=\"click\"\n @sp-opened=${() => openedSpy()}\n @sp-closed=${() => closedSpy()}\n >\n <sp-action-button slot=\"trigger\">\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-popover slot=\"click-content\" tip></sp-popover>\n </overlay-trigger>\n `)()\n );\n\n await waitUntil(\n () => {\n return openedSpy.calledOnce;\n },\n 'click content projected to overlay',\n { timeout: 2000 }\n );\n\n await nextFrame();\n\n el.removeAttribute('open');\n await elementUpdated(el);\n\n await waitUntil(() => closedSpy.calledOnce, 'click content returned', {\n timeout: 2000,\n });\n });\n describe('closes on scroll', () => {\n afterEach(async () => {\n if (document.scrollingElement) {\n document.scrollingElement.scrollTop = 0;\n }\n await waitUntil(() => {\n if (document.scrollingElement) {\n return document.scrollingElement.scrollTop === 0;\n }\n return true;\n });\n });\n (['click', 'replace', 'inline'] as TriggerInteractionsV1[]).map(\n (interaction) => {\n it(`closes \"${interaction}\" overlay on scroll`, async function () {\n const el = await fixture<OverlayTrigger>(html`\n <overlay-trigger\n placement=\"right\"\n type=${interaction}\n content=\"click\"\n >\n <sp-action-button\n slot=\"trigger\"\n style=\"margin: 50vh 0 100vh;\"\n >\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-popover slot=\"click-content\" tip>\n Content\n </sp-popover>\n </overlay-trigger>\n `);\n await nextFrame();\n const popover = el.querySelector('sp-popover') as Popover;\n expect(el.open).to.be.undefined;\n\n await elementUpdated(el);\n const opened = oneEvent(el, 'sp-opened');\n const trigger = el.querySelector(\n 'sp-action-button'\n ) as HTMLElement;\n trigger.click();\n\n await opened;\n\n expect(el.open).to.equal('click');\n\n expect(await isOnTopLayer(popover)).to.be.true;\n\n const closed = oneEvent(el, 'sp-closed');\n if (document.scrollingElement) {\n document.scrollingElement.scrollTop = 100;\n }\n\n await closed;\n\n expect(el.open).to.be.undefined;\n\n expect(await isOnTopLayer(popover)).to.be.false;\n });\n }\n );\n });\n it('opens a second time', async () => {\n const openedSpy = spy();\n const closedSpy = spy();\n const el = await fixture<OverlayTrigger>(html`\n <overlay-trigger\n placement=\"right-start\"\n type=\"modal\"\n open=\"click\"\n @sp-opened=${() => openedSpy()}\n @sp-closed=${() => closedSpy()}\n >\n <sp-action-button slot=\"trigger\">\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-popover slot=\"click-content\" tip></sp-popover>\n </overlay-trigger>\n `);\n await elementUpdated(el);\n const trigger = el.querySelector('[slot=trigger]') as ActionButton;\n\n await waitUntil(\n () => openedSpy.calledOnce,\n 'click content projected to overlay',\n { timeout: 2000 }\n );\n expect(el.open).to.equal('click');\n\n el.removeAttribute('open');\n await elementUpdated(el);\n\n await waitUntil(() => closedSpy.calledOnce, 'click content returned', {\n timeout: 2000,\n });\n\n expect(el.open).to.be.null;\n\n trigger.click();\n await waitUntil(\n () => openedSpy.callCount === 2,\n 'click content projected to overlay, again',\n { timeout: 2000 }\n );\n expect(el.open).to.equal('click');\n });\n\n it('opens with a delay on click', async () => {\n const el = await fixture<OverlayTrigger>(html`\n <overlay-trigger placement=\"right-start\">\n <sp-button slot=\"trigger\" variant=\"primary\"></sp-button>\n <sp-tooltip\n slot=\"click-content\"\n id=\"content\"\n delayed\n ></sp-tooltip>\n </overlay-trigger>\n `);\n const start = performance.now();\n const opened = oneEvent(el, 'sp-opened');\n\n el.setAttribute('open', 'click');\n await opened;\n\n const end = performance.now();\n expect(end - start).to.be.greaterThan(1000);\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -29,6 +29,9 @@ describe("Overlay Trigger - Longpress", () => {
|
|
|
29
29
|
this.trigger = this.el.querySelector(
|
|
30
30
|
"sp-action-button"
|
|
31
31
|
);
|
|
32
|
+
this.tooltip = this.el.querySelector(
|
|
33
|
+
'[slot="hover-content"]'
|
|
34
|
+
);
|
|
32
35
|
this.content = this.el.querySelector(
|
|
33
36
|
'[slot="longpress-content"]'
|
|
34
37
|
);
|
|
@@ -161,13 +164,14 @@ describe("Overlay Trigger - Longpress", () => {
|
|
|
161
164
|
expect(this.content.open, "closes for `pointerdown`").to.be.false;
|
|
162
165
|
});
|
|
163
166
|
it("opens/closes for `longpress` with Button", async function() {
|
|
167
|
+
this.tooltip.placement = "bottom-start";
|
|
168
|
+
await elementUpdated(this.tooltip);
|
|
164
169
|
const button = document.createElement("sp-button");
|
|
165
170
|
button.slot = "trigger";
|
|
166
171
|
this.trigger.remove();
|
|
172
|
+
await elementUpdated(this.el);
|
|
167
173
|
this.el.append(button);
|
|
168
174
|
await elementUpdated(this.el);
|
|
169
|
-
await nextFrame();
|
|
170
|
-
await nextFrame();
|
|
171
175
|
let open = oneEvent(this.el, "sp-opened");
|
|
172
176
|
const rect = button.getBoundingClientRect();
|
|
173
177
|
await sendMouse({
|
|
@@ -178,16 +182,18 @@ describe("Overlay Trigger - Longpress", () => {
|
|
|
178
182
|
rect.left + rect.width / 2,
|
|
179
183
|
rect.top + rect.height / 2
|
|
180
184
|
]
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
type: "down"
|
|
184
185
|
}
|
|
185
186
|
]
|
|
186
187
|
});
|
|
187
188
|
await open;
|
|
188
|
-
await nextFrame();
|
|
189
|
-
await nextFrame();
|
|
190
189
|
open = oneEvent(this.el, "sp-opened");
|
|
190
|
+
await sendMouse({
|
|
191
|
+
steps: [
|
|
192
|
+
{
|
|
193
|
+
type: "down"
|
|
194
|
+
}
|
|
195
|
+
]
|
|
196
|
+
});
|
|
191
197
|
await open;
|
|
192
198
|
await nextFrame();
|
|
193
199
|
await nextFrame();
|
|
@@ -281,7 +287,10 @@ describe("Overlay Trigger - Longpress", () => {
|
|
|
281
287
|
await elementUpdated(el);
|
|
282
288
|
expect(trigger.hasAttribute("aria-describedby")).to.be.true;
|
|
283
289
|
expect(el.open).to.be.undefined;
|
|
284
|
-
|
|
290
|
+
let longpressHelper = el.querySelector(
|
|
291
|
+
'[slot="longpress-describedby-descriptor"]'
|
|
292
|
+
);
|
|
293
|
+
expect(longpressHelper).to.not.be.null;
|
|
285
294
|
await findDescribedNode(
|
|
286
295
|
"Trigger with hold affordance",
|
|
287
296
|
LONGPRESS_INSTRUCTIONS.keyboard
|
|
@@ -292,7 +301,10 @@ describe("Overlay Trigger - Longpress", () => {
|
|
|
292
301
|
);
|
|
293
302
|
await opened;
|
|
294
303
|
expect(el.open).to.equal("longpress");
|
|
295
|
-
|
|
304
|
+
longpressHelper = el.querySelector(
|
|
305
|
+
'[slot="longpress-describedby-descriptor"]'
|
|
306
|
+
);
|
|
307
|
+
expect(longpressHelper).to.not.be.null;
|
|
296
308
|
await findDescribedNode(
|
|
297
309
|
"Trigger with hold affordance",
|
|
298
310
|
LONGPRESS_INSTRUCTIONS.keyboard
|
|
@@ -304,7 +316,10 @@ describe("Overlay Trigger - Longpress", () => {
|
|
|
304
316
|
await closed;
|
|
305
317
|
expect(el.open).to.be.undefined;
|
|
306
318
|
expect(trigger.hasAttribute("aria-describedby")).to.be.true;
|
|
307
|
-
|
|
319
|
+
longpressHelper = el.querySelector(
|
|
320
|
+
'[slot="longpress-describedby-descriptor"]'
|
|
321
|
+
);
|
|
322
|
+
expect(longpressHelper).to.not.be.null;
|
|
308
323
|
await findDescribedNode(
|
|
309
324
|
"Trigger with hold affordance",
|
|
310
325
|
LONGPRESS_INSTRUCTIONS.keyboard
|
|
@@ -346,7 +361,10 @@ describe("Overlay Trigger - Longpress", () => {
|
|
|
346
361
|
trigger.hasAttribute("aria-describedby"),
|
|
347
362
|
"applies described by content"
|
|
348
363
|
).to.be.true;
|
|
349
|
-
|
|
364
|
+
const longpressHelper = el.querySelector(
|
|
365
|
+
'[slot="longpress-describedby-descriptor"]'
|
|
366
|
+
);
|
|
367
|
+
expect(longpressHelper).to.not.be.null;
|
|
350
368
|
el.removeAttribute("hold-affordance");
|
|
351
369
|
content.remove();
|
|
352
370
|
await elementUpdated(el);
|