@spectrum-web-components/overlay 0.34.1-rc.0 → 0.35.1-rc.15
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/README.md +17 -8
- package/custom-elements.json +492 -305
- package/package.json +14 -13
- package/src/AbstractOverlay.d.ts +54 -0
- package/src/AbstractOverlay.dev.js +192 -0
- package/src/AbstractOverlay.dev.js.map +7 -0
- package/src/AbstractOverlay.js +2 -0
- package/src/AbstractOverlay.js.map +7 -0
- package/src/Overlay.d.ts +135 -19
- package/src/Overlay.dev.js +714 -69
- package/src/Overlay.dev.js.map +3 -3
- package/src/Overlay.js +30 -1
- package/src/Overlay.js.map +3 -3
- package/src/OverlayDialog.d.ts +3 -7
- package/src/OverlayDialog.dev.js +6 -34
- package/src/OverlayDialog.dev.js.map +2 -2
- package/src/OverlayDialog.js +1 -1
- package/src/OverlayDialog.js.map +3 -3
- package/src/OverlayNoPopover.d.ts +3 -7
- package/src/OverlayNoPopover.dev.js +7 -46
- package/src/OverlayNoPopover.dev.js.map +2 -2
- package/src/OverlayNoPopover.js +1 -1
- package/src/OverlayNoPopover.js.map +3 -3
- package/src/OverlayPopover.d.ts +3 -7
- package/src/OverlayPopover.dev.js +18 -49
- package/src/OverlayPopover.dev.js.map +2 -2
- package/src/OverlayPopover.js +1 -1
- package/src/OverlayPopover.js.map +3 -3
- package/src/OverlayStack.d.ts +9 -2
- package/src/OverlayStack.dev.js +16 -3
- package/src/OverlayStack.dev.js.map +2 -2
- package/src/OverlayStack.js +1 -1
- package/src/OverlayStack.js.map +3 -3
- package/src/OverlayTrigger.d.ts +6 -14
- package/src/OverlayTrigger.dev.js +0 -47
- package/src/OverlayTrigger.dev.js.map +2 -2
- package/src/OverlayTrigger.js +2 -2
- package/src/OverlayTrigger.js.map +3 -3
- package/src/PlacementController.d.ts +3 -1
- package/src/PlacementController.dev.js +10 -2
- package/src/PlacementController.dev.js.map +2 -2
- package/src/PlacementController.js +1 -1
- package/src/PlacementController.js.map +2 -2
- package/src/VirtualTrigger.dev.js +3 -0
- package/src/VirtualTrigger.dev.js.map +2 -2
- package/src/VirtualTrigger.js +1 -1
- package/src/VirtualTrigger.js.map +3 -3
- package/src/fullSizePlugin.dev.js.map +2 -2
- package/src/fullSizePlugin.js.map +2 -2
- package/src/loader.d.ts +1 -2
- package/src/overlay-timer.dev.js.map +2 -2
- package/src/overlay-timer.js.map +2 -2
- package/src/overlay-types.d.ts +18 -27
- package/src/overlay-types.dev.js.map +2 -2
- package/src/overlay-types.js.map +2 -2
- package/src/overlay.css.dev.js +9 -0
- package/src/overlay.css.dev.js.map +7 -0
- package/src/overlay.css.js +6 -0
- package/src/overlay.css.js.map +7 -0
- package/src/topLayerOverTransforms.d.ts +2 -23
- package/src/topLayerOverTransforms.dev.js +7 -91
- 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 +2 -6
- package/stories/overlay-element.stories.js.map +2 -2
- package/stories/overlay.stories.js +46 -15
- package/stories/overlay.stories.js.map +2 -2
- package/test/index.js +1 -1
- package/test/index.js.map +1 -1
- package/test/overlay-element.test.js +1 -2
- package/test/overlay-element.test.js.map +2 -2
- package/test/overlay-trigger-hover-click.test.js +1 -1
- package/test/overlay-trigger-hover-click.test.js.map +2 -2
- package/test/overlay-trigger-hover.test.js +1 -1
- package/test/overlay-trigger-hover.test.js.map +2 -2
- package/test/overlay-v1.test.js +2 -11
- package/test/overlay-v1.test.js.map +2 -2
- package/test/{overlay-v2.test.js → overlay.test.js} +42 -8
- package/test/overlay.test.js.map +7 -0
- package/src/OverlayBase.d.ts +0 -124
- package/src/OverlayBase.dev.js +0 -744
- package/src/OverlayBase.dev.js.map +0 -7
- package/src/OverlayBase.js +0 -31
- package/src/OverlayBase.js.map +0 -7
- package/src/overlay-base.css.dev.js +0 -9
- package/src/overlay-base.css.dev.js.map +0 -7
- package/src/overlay-base.css.js +0 -6
- package/src/overlay-base.css.js.map +0 -7
- package/test/overlay-v2.test.js.map +0 -7
- /package/src/{overlay-base.css.d.ts → overlay.css.d.ts} +0 -0
|
@@ -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 { OverlayBase } from '@spectrum-web-components/overlay/src/OverlayBase.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';\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<OverlayBase>(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<OverlayBase>(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 OverlayBase;\n this.page = this.fixture.querySelector(\n '[type=\"page\"]'\n ) as OverlayBase;\n this.hint = this.fixture.querySelector(\n '[type=\"hint\"]'\n ) as OverlayBase;\n this.auto = this.fixture.querySelector(\n '[type=\"auto\"]'\n ) as OverlayBase;\n this.manual = this.fixture.querySelector(\n '[type=\"manual\"]'\n ) as OverlayBase;\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<OverlayBase>(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 OverlayBase;\n this.page = this.fixture.querySelector(\n '[type=\"page\"]'\n ) as OverlayBase;\n this.hint = this.fixture.querySelector(\n '[type=\"hint\"]'\n ) as OverlayBase;\n this.auto = this.fixture.querySelector(\n '[type=\"auto\"]'\n ) as OverlayBase;\n this.manual = this.fixture.querySelector(\n '[type=\"manual\"]'\n ) as OverlayBase;\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<OverlayBase>(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<OverlayBase>(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 OverlayBase;\n const hint2 = test.querySelector('.hint-2') as OverlayBase;\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 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 OverlayBase;\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 // 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 nextFrame();\n await nextFrame();\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 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', 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 });\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<OverlayBase>(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 OverlayBase;\n this.page = this.fixture.querySelector(\n '[type=\"page\"]'\n ) as OverlayBase;\n this.hint = this.fixture.querySelector(\n '[type=\"hint\"]'\n ) as OverlayBase;\n this.auto = this.fixture.querySelector(\n '[type=\"auto\"]'\n ) as OverlayBase;\n this.manual = this.fixture.querySelector(\n '[type=\"manual\"]'\n ) as OverlayBase;\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 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';\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 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 // 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', 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 });\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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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -154,7 +154,7 @@ describe("Overlay Trigger - Hover and Click", () => {
|
|
|
154
154
|
expect(overlayTrigger1.open).to.be.undefined;
|
|
155
155
|
expect(overlayTrigger2.open).to.equal("hover");
|
|
156
156
|
});
|
|
157
|
-
it
|
|
157
|
+
it('does not close ancestor "click" overlays on `click`', async () => {
|
|
158
158
|
const test = await fixture(html`
|
|
159
159
|
<div>${deep()}</div>
|
|
160
160
|
`);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["overlay-trigger-hover-click.test.ts"],
|
|
4
|
-
"sourcesContent": ["/*\nCopyright 2021 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 oneEvent,\n} from '@open-wc/testing';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/action-button/sp-action-button.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-magnify.js';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport { OverlayTrigger } from '@spectrum-web-components/overlay/src/OverlayTrigger';\nimport { TriggerInteractions } from '@spectrum-web-components/overlay/src/overlay-types';\nimport '@spectrum-web-components/overlay/overlay-trigger.js';\nimport { ActionButton } from '@spectrum-web-components/action-button';\nimport { sendMouse } from '../../../test/plugins/browser.js';\nimport { clickAndHoverTargets, deep } from '../stories/overlay.stories.js';\nimport { ignoreResizeObserverLoopError } from '../../../test/testing-helpers.js';\nimport { Tooltip } from '@spectrum-web-components/tooltip/src/Tooltip.js';\n\nignoreResizeObserverLoopError(before, after);\n\ndescribe('Overlay Trigger - Hover and Click', () => {\n it('toggles open and closed on click', async () => {\n const el = await fixture<OverlayTrigger>(html`\n <overlay-trigger>\n <sp-button slot=\"trigger\">Click and hover</sp-button>\n <sp-popover slot=\"click-content\" dialog tip>\n Popover content\n </sp-popover>\n <sp-tooltip slot=\"hover-content\" delayed>\n Tooltip content\n </sp-tooltip>\n </overlay-trigger>\n `);\n const trigger = el.querySelector(\n '[slot=trigger]'\n ) as unknown as ActionButton;\n let interaction: TriggerInteractions;\n\n // repeatedly click to toggle the popover\n for (let i = 0; i < 3; i++) {\n const openedEvent = oneEvent(el, 'sp-opened');\n trigger.click();\n interaction = (await openedEvent).detail.interaction;\n\n expect(interaction).equals('auto');\n\n const closedEvent = oneEvent(el, 'sp-closed');\n trigger.click();\n interaction = (await closedEvent).detail.interaction;\n\n expect(interaction).equals('auto');\n }\n });\n it('toggles on click after hover', async () => {\n const el = await fixture<OverlayTrigger>(html`\n <overlay-trigger>\n <sp-button slot=\"trigger\">Click and hover</sp-button>\n <sp-popover slot=\"click-content\" dialog tip>\n Popover content\n </sp-popover>\n <sp-tooltip slot=\"hover-content\" delayed>\n Tooltip content\n </sp-tooltip>\n </overlay-trigger>\n `);\n const trigger = el.querySelector(\n '[slot=trigger]'\n ) as unknown as ActionButton;\n const bounds = el.getBoundingClientRect();\n let interaction: TriggerInteractions;\n\n // hover over the button to trigger the tooltip\n const hoveredEvent = oneEvent(el, 'sp-opened');\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [bounds.left - 1, bounds.top - 1],\n },\n {\n type: 'move',\n position: [bounds.left, bounds.top],\n },\n {\n type: 'move',\n position: [bounds.left + 1, bounds.top + 1],\n },\n ],\n });\n interaction = (await hoveredEvent).detail.interaction;\n\n expect(interaction).equals('hint');\n\n // repeatedly click to toggle the popover\n for (let i = 0; i < 3; i++) {\n const openedEvent = oneEvent(el, 'sp-opened');\n trigger.click();\n interaction = (await openedEvent).detail.interaction;\n\n expect(interaction).equals('auto');\n\n const closedEvent = oneEvent(el, 'sp-closed');\n trigger.click();\n interaction = (await closedEvent).detail.interaction;\n\n expect(interaction).equals('auto');\n }\n });\n it('persists a hover overlay when clicking its trigger and closes the next highest overlay on the stack', async () => {\n const root = document.createElement('div');\n root.style.width = '100vw';\n root.style.height = '100vh';\n root.style.display = 'grid';\n root.style.placeContent = 'center';\n const test = await fixture(clickAndHoverTargets(), {\n parentNode: root,\n });\n\n const overlayTrigger1 = test.querySelector(\n 'overlay-trigger[placement=\"right\"]'\n ) as OverlayTrigger;\n const overlayTrigger2 = test.querySelector(\n 'overlay-trigger[placement=\"left\"]'\n ) as OverlayTrigger;\n\n await elementUpdated(overlayTrigger1);\n await elementUpdated(overlayTrigger2);\n\n const trigger1 = overlayTrigger1.querySelector(\n '.friendly-target'\n ) as HTMLButtonElement;\n const trigger2 = overlayTrigger2.querySelector(\n '.friendly-target'\n ) as HTMLButtonElement;\n const rect1 = trigger1.getBoundingClientRect();\n const rect2 = trigger2.getBoundingClientRect();\n let opened = oneEvent(trigger1, 'sp-opened');\n sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n rect1.left + rect1.width / 2,\n rect1.top + rect1.height / 2,\n ],\n },\n ],\n });\n await opened;\n\n expect(overlayTrigger1.open).to.equal('click');\n expect(overlayTrigger2.open).to.undefined;\n\n opened = oneEvent(trigger2, 'sp-opened');\n trigger2.focus();\n await opened;\n\n expect(overlayTrigger1.open).to.equal('click');\n expect(overlayTrigger2.open).to.equal('hover');\n\n const closed = oneEvent(trigger1, 'sp-closed');\n sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n rect2.left + rect2.width / 2,\n rect2.top + rect2.height / 2,\n ],\n },\n ],\n });\n await closed;\n\n expect(overlayTrigger1.open).to.be.undefined;\n expect(overlayTrigger2.open).to.equal('hover');\n });\n it
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2021 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 oneEvent,\n} from '@open-wc/testing';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/action-button/sp-action-button.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-magnify.js';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport { OverlayTrigger } from '@spectrum-web-components/overlay/src/OverlayTrigger';\nimport { TriggerInteractions } from '@spectrum-web-components/overlay/src/overlay-types';\nimport '@spectrum-web-components/overlay/overlay-trigger.js';\nimport { ActionButton } from '@spectrum-web-components/action-button';\nimport { sendMouse } from '../../../test/plugins/browser.js';\nimport { clickAndHoverTargets, deep } from '../stories/overlay.stories.js';\nimport { ignoreResizeObserverLoopError } from '../../../test/testing-helpers.js';\nimport { Tooltip } from '@spectrum-web-components/tooltip/src/Tooltip.js';\n\nignoreResizeObserverLoopError(before, after);\n\ndescribe('Overlay Trigger - Hover and Click', () => {\n it('toggles open and closed on click', async () => {\n const el = await fixture<OverlayTrigger>(html`\n <overlay-trigger>\n <sp-button slot=\"trigger\">Click and hover</sp-button>\n <sp-popover slot=\"click-content\" dialog tip>\n Popover content\n </sp-popover>\n <sp-tooltip slot=\"hover-content\" delayed>\n Tooltip content\n </sp-tooltip>\n </overlay-trigger>\n `);\n const trigger = el.querySelector(\n '[slot=trigger]'\n ) as unknown as ActionButton;\n let interaction: TriggerInteractions;\n\n // repeatedly click to toggle the popover\n for (let i = 0; i < 3; i++) {\n const openedEvent = oneEvent(el, 'sp-opened');\n trigger.click();\n interaction = (await openedEvent).detail.interaction;\n\n expect(interaction).equals('auto');\n\n const closedEvent = oneEvent(el, 'sp-closed');\n trigger.click();\n interaction = (await closedEvent).detail.interaction;\n\n expect(interaction).equals('auto');\n }\n });\n it('toggles on click after hover', async () => {\n const el = await fixture<OverlayTrigger>(html`\n <overlay-trigger>\n <sp-button slot=\"trigger\">Click and hover</sp-button>\n <sp-popover slot=\"click-content\" dialog tip>\n Popover content\n </sp-popover>\n <sp-tooltip slot=\"hover-content\" delayed>\n Tooltip content\n </sp-tooltip>\n </overlay-trigger>\n `);\n const trigger = el.querySelector(\n '[slot=trigger]'\n ) as unknown as ActionButton;\n const bounds = el.getBoundingClientRect();\n let interaction: TriggerInteractions;\n\n // hover over the button to trigger the tooltip\n const hoveredEvent = oneEvent(el, 'sp-opened');\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [bounds.left - 1, bounds.top - 1],\n },\n {\n type: 'move',\n position: [bounds.left, bounds.top],\n },\n {\n type: 'move',\n position: [bounds.left + 1, bounds.top + 1],\n },\n ],\n });\n interaction = (await hoveredEvent).detail.interaction;\n\n expect(interaction).equals('hint');\n\n // repeatedly click to toggle the popover\n for (let i = 0; i < 3; i++) {\n const openedEvent = oneEvent(el, 'sp-opened');\n trigger.click();\n interaction = (await openedEvent).detail.interaction;\n\n expect(interaction).equals('auto');\n\n const closedEvent = oneEvent(el, 'sp-closed');\n trigger.click();\n interaction = (await closedEvent).detail.interaction;\n\n expect(interaction).equals('auto');\n }\n });\n it('persists a hover overlay when clicking its trigger and closes the next highest overlay on the stack', async () => {\n const root = document.createElement('div');\n root.style.width = '100vw';\n root.style.height = '100vh';\n root.style.display = 'grid';\n root.style.placeContent = 'center';\n const test = await fixture(clickAndHoverTargets(), {\n parentNode: root,\n });\n\n const overlayTrigger1 = test.querySelector(\n 'overlay-trigger[placement=\"right\"]'\n ) as OverlayTrigger;\n const overlayTrigger2 = test.querySelector(\n 'overlay-trigger[placement=\"left\"]'\n ) as OverlayTrigger;\n\n await elementUpdated(overlayTrigger1);\n await elementUpdated(overlayTrigger2);\n\n const trigger1 = overlayTrigger1.querySelector(\n '.friendly-target'\n ) as HTMLButtonElement;\n const trigger2 = overlayTrigger2.querySelector(\n '.friendly-target'\n ) as HTMLButtonElement;\n const rect1 = trigger1.getBoundingClientRect();\n const rect2 = trigger2.getBoundingClientRect();\n let opened = oneEvent(trigger1, 'sp-opened');\n sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n rect1.left + rect1.width / 2,\n rect1.top + rect1.height / 2,\n ],\n },\n ],\n });\n await opened;\n\n expect(overlayTrigger1.open).to.equal('click');\n expect(overlayTrigger2.open).to.undefined;\n\n opened = oneEvent(trigger2, 'sp-opened');\n trigger2.focus();\n await opened;\n\n expect(overlayTrigger1.open).to.equal('click');\n expect(overlayTrigger2.open).to.equal('hover');\n\n const closed = oneEvent(trigger1, 'sp-closed');\n sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n rect2.left + rect2.width / 2,\n rect2.top + rect2.height / 2,\n ],\n },\n ],\n });\n await closed;\n\n expect(overlayTrigger1.open).to.be.undefined;\n expect(overlayTrigger2.open).to.equal('hover');\n });\n it('does not close ancestor \"click\" overlays on `click`', async () => {\n const test = await fixture<HTMLDivElement>(html`\n <div>${deep()}</div>\n `);\n const el = test.querySelector('overlay-trigger') as OverlayTrigger;\n const button = el.querySelector('sp-action-button') as ActionButton;\n const button2 = el.querySelector(\n 'sp-action-button:nth-of-type(2)'\n ) as ActionButton;\n const tooltip = button.querySelector('sp-tooltip') as Tooltip;\n\n expect(el.open).to.be.undefined;\n expect(tooltip.open).to.be.false;\n\n const opened = oneEvent(el, 'sp-opened');\n const tooltipOpen = oneEvent(button, 'sp-opened');\n el.open = 'click';\n await opened;\n await tooltipOpen;\n\n expect(el.open).to.equal('click');\n expect(tooltip.open).to.be.true;\n\n button.click();\n\n await aTimeout(200);\n\n expect(el.open).to.equal('click');\n expect(tooltip.open).to.be.true;\n\n let closed = oneEvent(button, 'sp-closed');\n button2.focus();\n await closed;\n\n expect(el.open).to.equal('click');\n expect(tooltip.open).to.be.false;\n\n closed = oneEvent(el, 'sp-closed');\n sendMouse({\n steps: [\n {\n type: 'click',\n position: [1, 1],\n },\n ],\n });\n await closed;\n\n expect(el.open, '\"click\" overlay no longer open').to.be.undefined;\n expect(tooltip.open).to.be.false;\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -238,7 +238,7 @@ describe("Overlay Trigger - Hover", () => {
|
|
|
238
238
|
});
|
|
239
239
|
it('will not return focus to a "modal" parent', async () => {
|
|
240
240
|
const el = await styledFixture(html`
|
|
241
|
-
<overlay-trigger type="modal"
|
|
241
|
+
<overlay-trigger type="modal">
|
|
242
242
|
<sp-button slot="trigger">Toggle Dialog</sp-button>
|
|
243
243
|
<sp-dialog-wrapper
|
|
244
244
|
slot="click-content"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["overlay-trigger-hover.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 '@spectrum-web-components/overlay/overlay-trigger.js';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport '@spectrum-web-components/dialog/sp-dialog-wrapper.js';\nimport '@spectrum-web-components/action-button/sp-action-button.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-magnify.js';\nimport { OverlayTrigger } from '@spectrum-web-components/overlay';\nimport { spy } from 'sinon';\nimport { ActionButton } from '@spectrum-web-components/action-button';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { Button } from '@spectrum-web-components/button';\nimport '@spectrum-web-components/theme/sp-theme.js';\nimport '@spectrum-web-components/theme/src/themes.js';\nimport { TemplateResult } from '@spectrum-web-components/base';\nimport { Theme } from '@spectrum-web-components/theme';\nimport { Tooltip } from '@spectrum-web-components/tooltip';\nimport {\n fixture,\n ignoreResizeObserverLoopError,\n} from '../../../test/testing-helpers.js';\n\nignoreResizeObserverLoopError(before, after);\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('Overlay Trigger - Hover', () => {\n it('displays `hover` 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=\"hover\"\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=\"hover-content\" tip></sp-popover>\n </overlay-trigger>\n `)()\n );\n await elementUpdated(el);\n\n await waitUntil(\n () => openedSpy.calledOnce,\n 'hover content projected to overlay',\n { timeout: 2000 }\n );\n\n el.removeAttribute('open');\n await elementUpdated(el);\n\n await waitUntil(() => closedSpy.calledOnce, 'hover content returned', {\n timeout: 2000,\n });\n });\n describe('\"tooltip\" mouse interactions', () => {\n let el: OverlayTrigger;\n let button: ActionButton;\n let tooltip: Tooltip;\n beforeEach(async () => {\n el = await fixture<OverlayTrigger>(\n (() => html`\n <overlay-trigger placement=\"right-start\">\n <sp-action-button slot=\"trigger\">\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-tooltip slot=\"hover-content\" tip>\n Magnify\n </sp-tooltip>\n </overlay-trigger>\n `)()\n );\n await elementUpdated(el);\n button = el.querySelector('sp-action-button') as ActionButton;\n tooltip = el.querySelector('sp-tooltip') as Tooltip;\n });\n it('allows pointer to enter the \"tooltip\" without closing the \"tooltip\"', async () => {\n const opened = oneEvent(button, 'sp-opened');\n button.dispatchEvent(\n new MouseEvent('pointerenter', {\n bubbles: true,\n composed: true,\n })\n );\n await nextFrame();\n await nextFrame();\n await nextFrame();\n await nextFrame();\n expect(tooltip.open).to.be.true;\n button.dispatchEvent(\n new MouseEvent('pointerleave', {\n relatedTarget: tooltip,\n bubbles: true,\n composed: true,\n })\n );\n await nextFrame();\n tooltip.dispatchEvent(\n new MouseEvent('pointerleave', {\n relatedTarget: button,\n bubbles: true,\n composed: true,\n })\n );\n await opened;\n\n expect(el.open).to.equal('hover');\n\n const closed = oneEvent(button, 'sp-closed');\n button.dispatchEvent(\n new MouseEvent('pointerleave', {\n relatedTarget: null,\n bubbles: true,\n composed: true,\n })\n );\n await closed;\n\n expect(el.open).to.be.undefined;\n });\n it('closes the \"tooltip\" when leaving the \"tooltip\"', async () => {\n const opened = oneEvent(button, 'sp-opened');\n button.dispatchEvent(\n new MouseEvent('pointerenter', {\n bubbles: true,\n composed: true,\n })\n );\n await nextFrame();\n button.dispatchEvent(\n new MouseEvent('pointerleave', {\n relatedTarget: tooltip,\n bubbles: true,\n composed: true,\n })\n );\n await opened;\n\n expect(el.open).to.equal('hover');\n\n const closed = oneEvent(button, 'sp-closed');\n tooltip.dispatchEvent(\n new MouseEvent('pointerleave', {\n relatedTarget: null,\n bubbles: true,\n composed: true,\n })\n );\n await closed;\n\n expect(el.open).to.be.undefined;\n });\n });\n it('persists hover content', async () => {\n const el = await fixture<OverlayTrigger>(\n (() => html`\n <overlay-trigger placement=\"right-start\">\n <sp-action-button slot=\"trigger\">\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-popover slot=\"hover-content\" tip></sp-popover>\n </overlay-trigger>\n `)()\n );\n await elementUpdated(el);\n\n expect(el.open).to.be.undefined;\n\n const trigger = el.querySelector('[slot=\"trigger\"]') as ActionButton;\n const opened = oneEvent(trigger, 'sp-opened');\n trigger.dispatchEvent(\n new Event('pointerenter', {\n bubbles: true,\n composed: true,\n })\n );\n await opened;\n\n expect(el.open).to.equal('hover');\n\n trigger.click();\n\n await elementUpdated(el);\n\n expect(el.open).to.equal('hover');\n });\n it('closes persistent hover content on `longpress`', async () => {\n const el = await fixture<OverlayTrigger>(\n (() => html`\n <overlay-trigger placement=\"right-start\">\n <sp-action-button slot=\"trigger\">\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-popover slot=\"hover-content\" tip></sp-popover>\n <sp-popover slot=\"longpress-content\" tip></sp-popover>\n </overlay-trigger>\n `)()\n );\n await elementUpdated(el);\n\n expect(el.open).to.be.undefined;\n\n const trigger = el.querySelector('[slot=\"trigger\"]') as ActionButton;\n let opened = oneEvent(trigger, 'sp-opened');\n trigger.dispatchEvent(\n new Event('pointerenter', {\n bubbles: true,\n })\n );\n await opened;\n\n expect(el.open).to.equal('hover');\n\n opened = oneEvent(trigger, 'sp-opened');\n trigger.dispatchEvent(\n new Event('longpress', {\n bubbles: true,\n })\n );\n await opened;\n\n expect(el.open).to.equal('longpress');\n });\n it('closes `hover` overlay when [type=\"modal\"]', async () => {\n const el = await fixture<OverlayTrigger>(\n (() => html`\n <overlay-trigger placement=\"right-start\" type=\"modal\">\n <sp-action-button slot=\"trigger\">\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-popover slot=\"hover-content\" tip></sp-popover>\n </overlay-trigger>\n `)()\n );\n await elementUpdated(el);\n\n expect(el.open).to.be.undefined;\n\n const trigger = el.querySelector('[slot=\"trigger\"]') as ActionButton;\n const opened = oneEvent(el, 'sp-opened');\n trigger.focus();\n await opened;\n\n expect(el.open).to.equal('hover');\n\n const closed = oneEvent(el, 'sp-closed');\n trigger.blur();\n await closed;\n\n expect(el.open).to.be.undefined;\n });\n it('will not return focus to a \"modal\" parent', async () => {\n // // There is an `sp-dialog-base` recyling issue in Firefox\n // if (isFirefox()) {\n // return;\n // }\n const el = await styledFixture<OverlayTrigger>(html`\n <overlay-trigger type=\"modal\" placement=\"none\">\n <sp-button slot=\"trigger\">Toggle Dialog</sp-button>\n <sp-dialog-wrapper\n slot=\"click-content\"\n headline=\"Dialog title\"\n size=\"s\"\n >\n ${[1, 2, 3, 4].map(\n (index) => html`\n <overlay-trigger>\n <sp-button slot=\"trigger\" id=\"button-${index}\">\n Button with Tooltip ${index}\n </sp-button>\n <sp-tooltip slot=\"hover-content\">\n Tooltip ${index}\n </sp-tooltip>\n </overlay-trigger>\n `\n )}\n </sp-dialog-wrapper>\n </overlay-trigger>\n `);\n await elementUpdated(el);\n\n const button = el.querySelector('sp-button') as Button;\n const dialog = el.querySelector('sp-dialog-wrapper') as HTMLElement;\n const button1 = dialog.querySelector('#button-1') as Button;\n const button2 = dialog.querySelector('#button-2') as Button;\n const button3 = dialog.querySelector('#button-3') as Button;\n await elementUpdated(button);\n await elementUpdated(dialog);\n\n let opened = oneEvent(button, 'sp-opened');\n const openedHint = oneEvent(button1, 'sp-opened');\n button.dispatchEvent(new Event('click', { bubbles: true }));\n await opened;\n await openedHint;\n\n expect(button1 === document.activeElement).to.be.true;\n\n opened = oneEvent(button2, 'sp-opened');\n sendKeys({\n press: 'Tab',\n });\n await opened;\n\n expect(button2 === document.activeElement).to.be.true;\n\n opened = oneEvent(button3, 'sp-opened');\n sendKeys({\n press: 'Tab',\n });\n await opened;\n\n expect(button3 === document.activeElement).to.be.true;\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 elementUpdated,\n expect,\n html,\n nextFrame,\n oneEvent,\n waitUntil,\n} from '@open-wc/testing';\nimport '@spectrum-web-components/overlay/overlay-trigger.js';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport '@spectrum-web-components/dialog/sp-dialog-wrapper.js';\nimport '@spectrum-web-components/action-button/sp-action-button.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-magnify.js';\nimport { OverlayTrigger } from '@spectrum-web-components/overlay';\nimport { spy } from 'sinon';\nimport { ActionButton } from '@spectrum-web-components/action-button';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { Button } from '@spectrum-web-components/button';\nimport '@spectrum-web-components/theme/sp-theme.js';\nimport '@spectrum-web-components/theme/src/themes.js';\nimport { TemplateResult } from '@spectrum-web-components/base';\nimport { Theme } from '@spectrum-web-components/theme';\nimport { Tooltip } from '@spectrum-web-components/tooltip';\nimport {\n fixture,\n ignoreResizeObserverLoopError,\n} from '../../../test/testing-helpers.js';\n\nignoreResizeObserverLoopError(before, after);\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('Overlay Trigger - Hover', () => {\n it('displays `hover` 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=\"hover\"\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=\"hover-content\" tip></sp-popover>\n </overlay-trigger>\n `)()\n );\n await elementUpdated(el);\n\n await waitUntil(\n () => openedSpy.calledOnce,\n 'hover content projected to overlay',\n { timeout: 2000 }\n );\n\n el.removeAttribute('open');\n await elementUpdated(el);\n\n await waitUntil(() => closedSpy.calledOnce, 'hover content returned', {\n timeout: 2000,\n });\n });\n describe('\"tooltip\" mouse interactions', () => {\n let el: OverlayTrigger;\n let button: ActionButton;\n let tooltip: Tooltip;\n beforeEach(async () => {\n el = await fixture<OverlayTrigger>(\n (() => html`\n <overlay-trigger placement=\"right-start\">\n <sp-action-button slot=\"trigger\">\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-tooltip slot=\"hover-content\" tip>\n Magnify\n </sp-tooltip>\n </overlay-trigger>\n `)()\n );\n await elementUpdated(el);\n button = el.querySelector('sp-action-button') as ActionButton;\n tooltip = el.querySelector('sp-tooltip') as Tooltip;\n });\n it('allows pointer to enter the \"tooltip\" without closing the \"tooltip\"', async () => {\n const opened = oneEvent(button, 'sp-opened');\n button.dispatchEvent(\n new MouseEvent('pointerenter', {\n bubbles: true,\n composed: true,\n })\n );\n await nextFrame();\n await nextFrame();\n await nextFrame();\n await nextFrame();\n expect(tooltip.open).to.be.true;\n button.dispatchEvent(\n new MouseEvent('pointerleave', {\n relatedTarget: tooltip,\n bubbles: true,\n composed: true,\n })\n );\n await nextFrame();\n tooltip.dispatchEvent(\n new MouseEvent('pointerleave', {\n relatedTarget: button,\n bubbles: true,\n composed: true,\n })\n );\n await opened;\n\n expect(el.open).to.equal('hover');\n\n const closed = oneEvent(button, 'sp-closed');\n button.dispatchEvent(\n new MouseEvent('pointerleave', {\n relatedTarget: null,\n bubbles: true,\n composed: true,\n })\n );\n await closed;\n\n expect(el.open).to.be.undefined;\n });\n it('closes the \"tooltip\" when leaving the \"tooltip\"', async () => {\n const opened = oneEvent(button, 'sp-opened');\n button.dispatchEvent(\n new MouseEvent('pointerenter', {\n bubbles: true,\n composed: true,\n })\n );\n await nextFrame();\n button.dispatchEvent(\n new MouseEvent('pointerleave', {\n relatedTarget: tooltip,\n bubbles: true,\n composed: true,\n })\n );\n await opened;\n\n expect(el.open).to.equal('hover');\n\n const closed = oneEvent(button, 'sp-closed');\n tooltip.dispatchEvent(\n new MouseEvent('pointerleave', {\n relatedTarget: null,\n bubbles: true,\n composed: true,\n })\n );\n await closed;\n\n expect(el.open).to.be.undefined;\n });\n });\n it('persists hover content', async () => {\n const el = await fixture<OverlayTrigger>(\n (() => html`\n <overlay-trigger placement=\"right-start\">\n <sp-action-button slot=\"trigger\">\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-popover slot=\"hover-content\" tip></sp-popover>\n </overlay-trigger>\n `)()\n );\n await elementUpdated(el);\n\n expect(el.open).to.be.undefined;\n\n const trigger = el.querySelector('[slot=\"trigger\"]') as ActionButton;\n const opened = oneEvent(trigger, 'sp-opened');\n trigger.dispatchEvent(\n new Event('pointerenter', {\n bubbles: true,\n composed: true,\n })\n );\n await opened;\n\n expect(el.open).to.equal('hover');\n\n trigger.click();\n\n await elementUpdated(el);\n\n expect(el.open).to.equal('hover');\n });\n it('closes persistent hover content on `longpress`', async () => {\n const el = await fixture<OverlayTrigger>(\n (() => html`\n <overlay-trigger placement=\"right-start\">\n <sp-action-button slot=\"trigger\">\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-popover slot=\"hover-content\" tip></sp-popover>\n <sp-popover slot=\"longpress-content\" tip></sp-popover>\n </overlay-trigger>\n `)()\n );\n await elementUpdated(el);\n\n expect(el.open).to.be.undefined;\n\n const trigger = el.querySelector('[slot=\"trigger\"]') as ActionButton;\n let opened = oneEvent(trigger, 'sp-opened');\n trigger.dispatchEvent(\n new Event('pointerenter', {\n bubbles: true,\n })\n );\n await opened;\n\n expect(el.open).to.equal('hover');\n\n opened = oneEvent(trigger, 'sp-opened');\n trigger.dispatchEvent(\n new Event('longpress', {\n bubbles: true,\n })\n );\n await opened;\n\n expect(el.open).to.equal('longpress');\n });\n it('closes `hover` overlay when [type=\"modal\"]', async () => {\n const el = await fixture<OverlayTrigger>(\n (() => html`\n <overlay-trigger placement=\"right-start\" type=\"modal\">\n <sp-action-button slot=\"trigger\">\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-popover slot=\"hover-content\" tip></sp-popover>\n </overlay-trigger>\n `)()\n );\n await elementUpdated(el);\n\n expect(el.open).to.be.undefined;\n\n const trigger = el.querySelector('[slot=\"trigger\"]') as ActionButton;\n const opened = oneEvent(el, 'sp-opened');\n trigger.focus();\n await opened;\n\n expect(el.open).to.equal('hover');\n\n const closed = oneEvent(el, 'sp-closed');\n trigger.blur();\n await closed;\n\n expect(el.open).to.be.undefined;\n });\n it('will not return focus to a \"modal\" parent', async () => {\n const el = await styledFixture<OverlayTrigger>(html`\n <overlay-trigger type=\"modal\">\n <sp-button slot=\"trigger\">Toggle Dialog</sp-button>\n <sp-dialog-wrapper\n slot=\"click-content\"\n headline=\"Dialog title\"\n size=\"s\"\n >\n ${[1, 2, 3, 4].map(\n (index) => html`\n <overlay-trigger>\n <sp-button slot=\"trigger\" id=\"button-${index}\">\n Button with Tooltip ${index}\n </sp-button>\n <sp-tooltip slot=\"hover-content\">\n Tooltip ${index}\n </sp-tooltip>\n </overlay-trigger>\n `\n )}\n </sp-dialog-wrapper>\n </overlay-trigger>\n `);\n await elementUpdated(el);\n\n const button = el.querySelector('sp-button') as Button;\n const dialog = el.querySelector('sp-dialog-wrapper') as HTMLElement;\n const button1 = dialog.querySelector('#button-1') as Button;\n const button2 = dialog.querySelector('#button-2') as Button;\n const button3 = dialog.querySelector('#button-3') as Button;\n await elementUpdated(button);\n await elementUpdated(dialog);\n\n let opened = oneEvent(button, 'sp-opened');\n const openedHint = oneEvent(button1, 'sp-opened');\n button.dispatchEvent(new Event('click', { bubbles: true }));\n await opened;\n await openedHint;\n\n expect(button1 === document.activeElement).to.be.true;\n\n opened = oneEvent(button2, 'sp-opened');\n sendKeys({\n press: 'Tab',\n });\n await opened;\n\n expect(button2 === document.activeElement).to.be.true;\n\n opened = oneEvent(button3, 'sp-opened');\n sendKeys({\n press: 'Tab',\n });\n await opened;\n\n expect(button3 === document.activeElement).to.be.true;\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/test/overlay-v1.test.js
CHANGED
|
@@ -22,7 +22,6 @@ import {
|
|
|
22
22
|
virtualElementV1
|
|
23
23
|
} from "../stories/overlay.stories";
|
|
24
24
|
import { sendMouse } from "../../../test/plugins/browser.js";
|
|
25
|
-
import { spy } from "sinon";
|
|
26
25
|
import "@spectrum-web-components/theme/sp-theme.js";
|
|
27
26
|
import "@spectrum-web-components/theme/src/themes.js";
|
|
28
27
|
import { render } from "@spectrum-web-components/base";
|
|
@@ -114,16 +113,12 @@ describe("Overlays, v1", () => {
|
|
|
114
113
|
].map((direction) => {
|
|
115
114
|
const placement = direction;
|
|
116
115
|
it(`opens a popover - ${placement}`, async () => {
|
|
117
|
-
const clickSpy = spy();
|
|
118
116
|
const button = testDiv.querySelector(
|
|
119
117
|
"#first-button"
|
|
120
118
|
);
|
|
121
119
|
const outerPopover = testDiv.querySelector(
|
|
122
120
|
"#outer-popover"
|
|
123
121
|
);
|
|
124
|
-
outerPopover.addEventListener("click", () => {
|
|
125
|
-
clickSpy();
|
|
126
|
-
});
|
|
127
122
|
expect(await isInteractive(outerPopover)).to.be.false;
|
|
128
123
|
expect(button).to.exist;
|
|
129
124
|
const opened = oneEvent(outerPopover, "sp-opened");
|
|
@@ -323,20 +318,16 @@ describe("Overlays, v1", () => {
|
|
|
323
318
|
await opened;
|
|
324
319
|
expect(await isInteractive(content)).to.be.true;
|
|
325
320
|
expect(document.activeElement).to.equal(input);
|
|
321
|
+
const closed = oneEvent(content, "sp-closed");
|
|
326
322
|
await sendKeys({
|
|
327
323
|
press: "Shift+Tab"
|
|
328
324
|
});
|
|
325
|
+
await closed;
|
|
329
326
|
expect(document.activeElement).to.equal(trigger);
|
|
330
327
|
await sendKeys({
|
|
331
328
|
press: "Tab"
|
|
332
329
|
});
|
|
333
|
-
expect(document.activeElement).to.equal(input);
|
|
334
|
-
const closed = oneEvent(content, "sp-closed");
|
|
335
|
-
await sendKeys({
|
|
336
|
-
press: "Tab"
|
|
337
|
-
});
|
|
338
330
|
expect(document.activeElement).to.equal(after2);
|
|
339
|
-
await closed;
|
|
340
331
|
expect(await isInteractive(content)).to.be.false;
|
|
341
332
|
});
|
|
342
333
|
it("closes an inline overlay when tabbing before the trigger", async () => {
|