@spectrum-web-components/overlay 0.41.2 → 0.42.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.
Files changed (45) hide show
  1. package/package.json +11 -7
  2. package/src/HoverController.dev.js +8 -1
  3. package/src/HoverController.dev.js.map +2 -2
  4. package/src/HoverController.js +1 -1
  5. package/src/HoverController.js.map +3 -3
  6. package/src/OverlayStack.d.ts +1 -1
  7. package/src/OverlayStack.dev.js +8 -1
  8. package/src/OverlayStack.dev.js.map +2 -2
  9. package/src/OverlayStack.js +1 -1
  10. package/src/OverlayStack.js.map +3 -3
  11. package/src/overlay-trigger-directive.d.ts +3 -8
  12. package/src/overlay-trigger-directive.dev.js +7 -33
  13. package/src/overlay-trigger-directive.dev.js.map +2 -2
  14. package/src/overlay-trigger-directive.js +1 -1
  15. package/src/overlay-trigger-directive.js.map +3 -3
  16. package/src/slottable-request-directive.d.ts +17 -0
  17. package/src/slottable-request-directive.dev.js +63 -0
  18. package/src/slottable-request-directive.dev.js.map +7 -0
  19. package/src/slottable-request-directive.js +2 -0
  20. package/src/slottable-request-directive.js.map +7 -0
  21. package/src/slottable-request-event.d.ts +5 -0
  22. package/src/slottable-request-event.dev.js.map +1 -1
  23. package/src/slottable-request-event.js.map +1 -1
  24. package/stories/overlay-directive.stories.js +36 -7
  25. package/stories/overlay-directive.stories.js.map +3 -3
  26. package/stories/overlay-element.stories.js +2 -2
  27. package/stories/overlay-element.stories.js.map +1 -1
  28. package/stories/overlay-story-components.js +1 -1
  29. package/stories/overlay-story-components.js.map +1 -1
  30. package/stories/overlay.stories.js +12 -24
  31. package/stories/overlay.stories.js.map +2 -2
  32. package/test/benchmark/directive-test.js +29 -28
  33. package/test/benchmark/directive-test.js.map +2 -2
  34. package/test/benchmark/lazy-test.js +6 -7
  35. package/test/benchmark/lazy-test.js.map +2 -2
  36. package/test/overlay-directive.test.js +17 -5
  37. package/test/overlay-directive.test.js.map +2 -2
  38. package/test/overlay-element.test.js +0 -3
  39. package/test/overlay-element.test.js.map +2 -2
  40. package/test/overlay-lifecycle.test.js +11 -4
  41. package/test/overlay-lifecycle.test.js.map +2 -2
  42. package/test/overlay-trigger-hover-click.test.js +17 -4
  43. package/test/overlay-trigger-hover-click.test.js.map +2 -2
  44. package/test/overlay-trigger-longpress.test.js +6 -1
  45. package/test/overlay-trigger-longpress.test.js.map +2 -2
@@ -132,11 +132,7 @@ const template = ({
132
132
  type=${ifDefined(type)}
133
133
  >
134
134
  <sp-button variant="primary" slot="trigger">Show Popover</sp-button>
135
- <sp-popover
136
- slot="click-content"
137
- placement="${placement}"
138
- tip
139
- >
135
+ <sp-popover slot="click-content" placement="${placement}" tip>
140
136
  <sp-dialog no-divider>
141
137
  <sp-slider
142
138
  value="5"
@@ -151,21 +147,13 @@ const template = ({
151
147
  </div>
152
148
  <overlay-trigger id="inner-trigger" placement="bottom">
153
149
  <sp-button slot="trigger">Press Me</sp-button>
154
- <sp-popover
155
- slot="click-content"
156
- placement="bottom"
157
- tip
158
- >
150
+ <sp-popover slot="click-content" placement="bottom" tip>
159
151
  <sp-dialog size="s" no-divider>
160
152
  Another Popover
161
153
  </sp-dialog>
162
154
  </sp-popover>
163
155
 
164
- <sp-tooltip
165
- slot="hover-content"
166
- delayed
167
- tip="bottom"
168
- >
156
+ <sp-tooltip slot="hover-content" delayed tip="bottom">
169
157
  Click to open another popover.
170
158
  </sp-tooltip>
171
159
  </overlay-trigger>
@@ -485,11 +473,11 @@ export const complexModal = () => {
485
473
  complexModal.decorators = [complexModalDecorator];
486
474
  export const customizedClickContent = (args) => html`
487
475
  <style>
488
- overlay-trigger {
476
+ sp-popover {
489
477
  --styled-div-background-color: var(
490
- --spectrum-semantic-cta-background-color-default
478
+ --spectrum-accent-background-color-default
491
479
  );
492
- --spectrum-button-m-accent-fill-texticon-background-color: rebeccapurple;
480
+ --mod-button-background-color-default: rebeccapurple;
493
481
  }
494
482
  </style>
495
483
  ${template({
@@ -585,9 +573,9 @@ export const deepNesting = () => {
585
573
  <recursive-popover
586
574
  tabindex=""
587
575
  style="
588
- background-color: var(--spectrum-global-color-gray-100);
589
- color: var(--spectrum-global-color-gray-800);
590
- padding: var(--spectrum-global-dimension-size-225);
576
+ background-color: var(--spectrum-gray-100);
577
+ color: var(--spectrum-gray-800);
578
+ padding: calc(var(--swc-scale-factor) * 22px);
591
579
  "
592
580
  ></recursive-popover>
593
581
  </sp-theme>
@@ -701,8 +689,8 @@ export const detachedElement = () => {
701
689
  div.setAttribute(
702
690
  "style",
703
691
  `
704
- background-color: var(--spectrum-global-color-gray-50);
705
- color: var(--spectrum-global-color-gray-800);
692
+ background-color: var(--spectrum-gray-50);
693
+ color: var(--spectrum-gray-800);
706
694
  border: 1px solid;
707
695
  padding: 2em;
708
696
  `
@@ -840,7 +828,7 @@ export const longpress = () => {
840
828
  )}
841
829
  selects="single"
842
830
  vertical
843
- style="margin: calc(var(--spectrum-actiongroup-button-gap-y,var(--spectrum-global-dimension-size-100)) / 2);"
831
+ style="margin: calc(var(--spectrum-actiongroup-button-gap-y,calc(var(--swc-scale-factor) * 10px)) / 2);"
844
832
  >
845
833
  <sp-action-button>
846
834
  <sp-icon-magnify slot="icon"></sp-icon-magnify>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["overlay.stories.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\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 { html, TemplateResult } from '@spectrum-web-components/base';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport {\n openOverlay,\n Overlay,\n OverlayContentTypes,\n OverlayTrigger,\n Placement,\n TriggerInteractions,\n VirtualTrigger,\n} from '@spectrum-web-components/overlay';\nimport '@spectrum-web-components/action-button/sp-action-button.js';\nimport '@spectrum-web-components/action-group/sp-action-group.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/dialog/sp-dialog.js';\nimport '@spectrum-web-components/dialog/sp-dialog-wrapper.js';\nimport { DialogWrapper } from '@spectrum-web-components/dialog';\nimport '@spectrum-web-components/field-label/sp-field-label.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-magnify.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-open-in.js';\nimport '@spectrum-web-components/overlay/overlay-trigger.js';\n\nimport { Picker } from '@spectrum-web-components/picker';\nimport '@spectrum-web-components/picker/sp-picker.js';\nimport '@spectrum-web-components/overlay/sp-overlay.js';\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/menu/sp-menu-group.js';\nimport '@spectrum-web-components/menu/sp-menu-divider.js';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/slider/sp-slider.js';\nimport '@spectrum-web-components/radio/sp-radio.js';\nimport '@spectrum-web-components/radio/sp-radio-group.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport '@spectrum-web-components/theme/sp-theme.js';\nimport '@spectrum-web-components/theme/src/themes.js';\nimport '@spectrum-web-components/accordion/sp-accordion.js';\nimport '@spectrum-web-components/accordion/sp-accordion-item.js';\nimport '../../../projects/story-decorator/src/types.js';\n\nimport './overlay-story-components.js';\nimport { render } from 'lit-html';\nimport { Popover } from '@spectrum-web-components/popover';\nimport { Button } from '@spectrum-web-components/button';\nimport { PopoverContent } from './overlay-story-components.js';\n\nconst storyStyles = html`\n <style>\n html,\n body,\n #root,\n #root-inner,\n sp-story-decorator {\n height: 100%;\n margin: 0;\n }\n\n sp-story-decorator::part(container) {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n\n overlay-trigger {\n flex: none;\n }\n\n #styled-div {\n background-color: var(--styled-div-background-color, blue);\n color: white;\n padding: 4px 10px;\n margin-bottom: 10px;\n }\n\n #inner-trigger {\n display: inline-block;\n }\n </style>\n`;\n\nexport default {\n title: 'Overlay',\n argTypes: {\n offset: { control: 'number' },\n placement: {\n control: {\n type: 'inline-radio',\n options: [\n 'top',\n 'top-start',\n 'top-end',\n 'bottom',\n 'bottom-start',\n 'bottom-end',\n 'left',\n 'left-start',\n 'left-end',\n 'right',\n 'right-start',\n 'right-end',\n 'auto',\n 'auto-start',\n 'auto-end',\n 'none',\n ],\n },\n },\n type: {\n control: {\n type: 'inline-radio',\n options: ['modal', 'replace', 'inline'],\n },\n },\n colorStop: {\n control: {\n type: 'inline-radio',\n options: ['light', 'dark'],\n },\n },\n },\n args: {\n placement: 'bottom',\n offset: 0,\n colorStop: 'light',\n },\n};\n\ninterface Properties {\n placement: Placement;\n offset: number;\n open?: OverlayContentTypes;\n type?: Extract<TriggerInteractions, 'inline' | 'modal' | 'replace'>;\n}\n\nconst template = ({\n placement,\n offset,\n open,\n type,\n}: Properties): TemplateResult => {\n return html`\n ${storyStyles}\n <overlay-trigger\n content=\"click hover\"\n id=\"trigger\"\n placement=\"${placement}\"\n offset=\"${offset}\"\n open=${ifDefined(open)}\n type=${ifDefined(type)}\n >\n <sp-button variant=\"primary\" slot=\"trigger\">Show Popover</sp-button>\n <sp-popover\n slot=\"click-content\"\n placement=\"${placement}\"\n tip\n >\n <sp-dialog no-divider>\n <sp-slider\n value=\"5\"\n step=\"0.5\"\n min=\"0\"\n max=\"20\"\n label=\"Awesomeness\"\n default-value=\"10\"\n ></sp-slider>\n <div id=\"styled-div\">\n The background of this div should be blue\n </div>\n <overlay-trigger id=\"inner-trigger\" placement=\"bottom\">\n <sp-button slot=\"trigger\">Press Me</sp-button>\n <sp-popover\n slot=\"click-content\"\n placement=\"bottom\"\n tip\n >\n <sp-dialog size=\"s\" no-divider>\n Another Popover\n </sp-dialog>\n </sp-popover>\n\n <sp-tooltip\n slot=\"hover-content\"\n delayed\n tip=\"bottom\"\n >\n Click to open another popover.\n </sp-tooltip>\n </overlay-trigger>\n </sp-dialog>\n </sp-popover>\n <sp-tooltip\n slot=\"hover-content\"\n ?delayed=${open !== 'hover'}\n tip=\"bottom\"\n >\n Click to open a popover.\n </sp-tooltip>\n </overlay-trigger>\n `;\n};\n\nconst extraText = html`\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n`;\n\nfunction nextFrame(): Promise<void> {\n return new Promise((res) => requestAnimationFrame(() => res()));\n}\n\nexport const Default = (args: Properties): TemplateResult => template(args);\n\nexport const accordion = (): TemplateResult => {\n return html`\n <overlay-trigger type=\"modal\" placement=\"top-start\">\n <style>\n sp-button {\n margin-top: 70vh;\n }\n </style>\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open overlay w/ accordion\n </sp-button>\n <sp-popover\n slot=\"click-content\"\n style=\"overflow-y: scroll;position: static;\"\n >\n <sp-dialog size=\"s\" no-divider>\n <sp-accordion allow-multiple>\n <sp-accordion-item label=\"Some things\">\n <p>\n Thing\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n more things\n </p>\n </sp-accordion-item>\n <sp-accordion-item label=\"Other things\">\n <p>\n Thing\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n more things\n </p>\n </sp-accordion-item>\n <sp-accordion-item label=\"More things\">\n <p>\n Thing\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n more things\n </p>\n </sp-accordion-item>\n <sp-accordion-item label=\"Additional things\">\n <p>\n Thing\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n more things\n </p>\n </sp-accordion-item>\n </sp-accordion>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n `;\n};\n\naccordion.swc_vrt = {\n skip: true,\n};\n\nexport const clickAndHoverTargets = (): TemplateResult => {\n return html`\n <div>\n ${storyStyles}\n <style>\n .friendly-target {\n padding: 4px;\n margin: 6px;\n border: 2px solid black;\n border-radius: 6px;\n cursor: default;\n }\n </style>\n <overlay-trigger placement=\"right\">\n <div class=\"friendly-target\" slot=\"trigger\" tabindex=\"0\">\n Click me\n </div>\n <sp-tooltip slot=\"click-content\" tip=\"right\">\n Ok, now hover the other trigger\n </sp-tooltip>\n </overlay-trigger>\n <overlay-trigger placement=\"left\">\n <div class=\"friendly-target\" slot=\"trigger\" tabindex=\"0\">\n Then hover me\n </div>\n <sp-tooltip slot=\"hover-content\" tip=\"right\">\n Now click my trigger -- I should stay open, but the other\n overlay should close\n </sp-tooltip>\n </overlay-trigger>\n </div>\n `;\n};\nclickAndHoverTargets.swc_vrt = {\n skip: true,\n};\n\nclass ScrollForcer extends HTMLElement {\n ready!: (value: boolean | PromiseLike<boolean>) => void;\n\n constructor() {\n super();\n this.readyPromise = new Promise((res) => {\n this.ready = res;\n });\n this.setup();\n }\n\n async setup(): Promise<void> {\n await nextFrame();\n await nextFrame();\n\n this.previousElementSibling?.addEventListener(\n 'sp-opened',\n this.doScroll\n );\n await nextFrame();\n await nextFrame();\n (this.previousElementSibling?.lastElementChild as OverlayTrigger).open =\n 'click';\n }\n\n doScroll = async (): Promise<void> => {\n this.previousElementSibling?.addEventListener(\n 'sp-opened',\n this.doScroll\n );\n await nextFrame();\n await nextFrame();\n await nextFrame();\n await nextFrame();\n\n if (document.scrollingElement) {\n document.scrollingElement.scrollTop = 100;\n }\n\n await nextFrame();\n await nextFrame();\n this.ready(true);\n };\n\n private readyPromise: Promise<boolean> = Promise.resolve(false);\n\n get updateComplete(): Promise<boolean> {\n return this.readyPromise;\n }\n}\n\ncustomElements.define('scroll-forcer', ScrollForcer);\n\nexport const clickContentClosedOnScroll = (\n args: Properties\n): TemplateResult => html`\n <div style=\"margin: 50vh 0 100vh;\">\n ${template({\n ...args,\n })}\n </div>\n`;\nclickContentClosedOnScroll.decorators = [\n (story: () => TemplateResult): TemplateResult => html`\n <style>\n html,\n body,\n #root,\n #root-inner,\n sp-story-decorator {\n height: auto !important;\n }\n </style>\n ${story()}\n <scroll-forcer></scroll-forcer>\n `,\n];\n\nclass ComplexModalReady extends HTMLElement {\n ready!: (value: boolean | PromiseLike<boolean>) => void;\n\n constructor() {\n super();\n this.readyPromise = new Promise((res) => {\n this.ready = res;\n this.setup();\n });\n }\n\n async setup(): Promise<void> {\n await nextFrame();\n\n const overlay = document.querySelector(\n `overlay-trigger`\n ) as OverlayTrigger;\n overlay.addEventListener('sp-opened', this.handleTriggerOpened);\n }\n\n handleTriggerOpened = async (): Promise<void> => {\n await nextFrame();\n\n const picker = document.querySelector('#test-picker') as Picker;\n picker.addEventListener('sp-opened', this.handlePickerOpen);\n picker.open = true;\n };\n\n handlePickerOpen = async (): Promise<void> => {\n const picker = document.querySelector('#test-picker') as Picker;\n const actions = [nextFrame, picker.updateComplete];\n\n await Promise.all(actions);\n\n this.ready(true);\n };\n\n private readyPromise: Promise<boolean> = Promise.resolve(false);\n\n get updateComplete(): Promise<boolean> {\n return this.readyPromise;\n }\n}\n\ncustomElements.define('complex-modal-ready', ComplexModalReady);\n\nconst complexModalDecorator = (story: () => TemplateResult): TemplateResult => {\n return html`\n ${story()}\n <complex-modal-ready></complex-modal-ready>\n `;\n};\n\nexport const complexModal = (): TemplateResult => {\n return html`\n <style>\n body {\n --swc-margin-test: 10px;\n margin: var(--swc-margin-test);\n }\n sp-story-decorator::part(container) {\n min-height: calc(100vh - (2 * var(--swc-margin-test)));\n padding: 0;\n display: grid;\n place-content: center;\n }\n active-overlay > * {\n --spectrum-global-animation-duration-100: 0ms;\n --spectrum-global-animation-duration-200: 0ms;\n --spectrum-global-animation-duration-300: 0ms;\n --spectrum-global-animation-duration-400: 0ms;\n --spectrum-global-animation-duration-500: 0ms;\n --spectrum-global-animation-duration-600: 0ms;\n --spectrum-global-animation-duration-700: 0ms;\n --spectrum-global-animation-duration-800: 0ms;\n --spectrum-global-animation-duration-900: 0ms;\n --spectrum-global-animation-duration-1000: 0ms;\n --spectrum-global-animation-duration-2000: 0ms;\n --spectrum-global-animation-duration-4000: 0ms;\n --spectrum-animation-duration-0: 0ms;\n --spectrum-animation-duration-100: 0ms;\n --spectrum-animation-duration-200: 0ms;\n --spectrum-animation-duration-300: 0ms;\n --spectrum-animation-duration-400: 0ms;\n --spectrum-animation-duration-500: 0ms;\n --spectrum-animation-duration-600: 0ms;\n --spectrum-animation-duration-700: 0ms;\n --spectrum-animation-duration-800: 0ms;\n --spectrum-animation-duration-900: 0ms;\n --spectrum-animation-duration-1000: 0ms;\n --spectrum-animation-duration-2000: 0ms;\n --spectrum-animation-duration-4000: 0ms;\n --spectrum-coachmark-animation-indicator-ring-duration: 0ms;\n --swc-test-duration: 1ms;\n }\n </style>\n <overlay-trigger type=\"modal\" open=\"click\">\n <sp-dialog-wrapper\n slot=\"click-content\"\n headline=\"Dialog title\"\n dismissable\n underlay\n footer=\"Content for footer\"\n >\n <sp-field-label for=\"test-picker\">\n Selection type:\n </sp-field-label>\n <sp-picker id=\"test-picker\">\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and mask...</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item>Save selection</sp-menu-item>\n <sp-menu-item disabled>Make work path</sp-menu-item>\n </sp-picker>\n </sp-dialog-wrapper>\n <sp-button slot=\"trigger\" variant=\"primary\">\n Toggle Dialog\n </sp-button>\n </overlay-trigger>\n `;\n};\n\ncomplexModal.decorators = [complexModalDecorator];\n\nexport const customizedClickContent = (\n args: Properties\n): TemplateResult => html`\n <style>\n overlay-trigger {\n --styled-div-background-color: var(\n --spectrum-semantic-cta-background-color-default\n );\n --spectrum-button-m-accent-fill-texticon-background-color: rebeccapurple;\n }\n </style>\n ${template({\n ...args,\n open: 'click',\n })}\n`;\n\nexport const deep = (): TemplateResult => html`\n <overlay-trigger>\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open popover 1 with buttons + selfmanaged Tooltips\n </sp-button>\n <sp-popover slot=\"click-content\" direction=\"bottom\" tip>\n <sp-dialog size=\"s\" no-divider>\n <sp-action-button>\n <sp-tooltip self-managed placement=\"bottom\">\n My Tooltip 1\n </sp-tooltip>\n A\n </sp-action-button>\n <sp-action-button>\n <sp-tooltip self-managed placement=\"bottom\">\n My Tooltip 1\n </sp-tooltip>\n B\n </sp-action-button>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n\n <overlay-trigger>\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open popover 2 with buttons without ToolTips\n </sp-button>\n <sp-popover slot=\"click-content\" direction=\"bottom\" tip>\n <sp-dialog size=\"s\" no-divider>\n <sp-action-button>X</sp-action-button>\n <sp-action-button>Y</sp-action-button>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n`;\ndeep.swc_vrt = {\n skip: true,\n};\n\nexport const deepChildTooltip = (): TemplateResult => html`\n <overlay-trigger>\n <sp-button variant=\"primary\" slot=\"trigger\">Open popover</sp-button>\n <sp-popover slot=\"click-content\" direction=\"bottom\" tip>\n <sp-dialog no-divider>\n <p>Let us open another overlay here</p>\n <overlay-trigger>\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open sub popover\n </sp-button>\n <sp-popover slot=\"click-content\" direction=\"bottom\" tip>\n <sp-dialog no-divider>\n <p>\n Render an action button with tooltips. Clicking\n the action button shouldn't close everything\n </p>\n <sp-action-button>\n Button with self-managed tooltip\n <sp-tooltip self-managed placement=\"top\">\n Deep Child ToolTip\n </sp-tooltip>\n </sp-action-button>\n <sp-action-button>Just a button</sp-action-button>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n`;\n\nexport const deepNesting = (): TemplateResult => {\n const color = window.__swc_hack_knobs__.defaultColor;\n const outter = color === 'light' ? 'dark' : 'light';\n return html`\n ${storyStyles}\n <sp-theme\n color=${outter}\n theme=${window.__swc_hack_knobs__.defaultThemeVariant}\n scale=${window.__swc_hack_knobs__.defaultScale}\n dir=${window.__swc_hack_knobs__.defaultDirection}\n >\n <sp-theme\n color=${color}\n theme=${window.__swc_hack_knobs__.defaultThemeVariant}\n scale=${window.__swc_hack_knobs__.defaultScale}\n dir=${window.__swc_hack_knobs__.defaultDirection}\n >\n <recursive-popover\n tabindex=\"\"\n style=\"\n background-color: var(--spectrum-global-color-gray-100);\n color: var(--spectrum-global-color-gray-800);\n padding: var(--spectrum-global-dimension-size-225);\n \"\n ></recursive-popover>\n </sp-theme>\n </sp-theme>\n `;\n};\n\nclass DefinedOverlayReady extends HTMLElement {\n ready!: (value: boolean | PromiseLike<boolean>) => void;\n\n connectedCallback(): void {\n if (!!this.ready) return;\n\n this.readyPromise = new Promise((res) => {\n this.ready = res;\n this.setup();\n });\n }\n\n overlayElement!: OverlayTrigger;\n popoverElement!: PopoverContent;\n\n async setup(): Promise<void> {\n await nextFrame();\n await nextFrame();\n\n this.overlayElement = document.querySelector(\n `overlay-trigger`\n ) as OverlayTrigger;\n const button = document.querySelector(\n `[slot=\"trigger\"]`\n ) as HTMLButtonElement;\n this.overlayElement.addEventListener(\n 'sp-opened',\n this.handleTriggerOpened\n );\n await nextFrame();\n await nextFrame();\n button.click();\n }\n\n handleTriggerOpened = async (): Promise<void> => {\n this.overlayElement.removeEventListener(\n 'sp-opened',\n this.handleTriggerOpened\n );\n await nextFrame();\n await nextFrame();\n await nextFrame();\n await nextFrame();\n\n this.popoverElement = document.querySelector(\n 'popover-content'\n ) as PopoverContent;\n if (!this.popoverElement) {\n return;\n }\n this.popoverElement.addEventListener(\n 'sp-opened',\n this.handlePopoverOpen\n );\n await nextFrame();\n await nextFrame();\n this.popoverElement.button.click();\n };\n\n handlePopoverOpen = async (): Promise<void> => {\n await nextFrame();\n\n this.ready(true);\n };\n\n disconnectedCallback(): void {\n this.overlayElement.removeEventListener(\n 'sp-opened',\n this.handleTriggerOpened\n );\n this.popoverElement.removeEventListener(\n 'sp-opened',\n this.handlePopoverOpen\n );\n }\n\n private readyPromise: Promise<boolean> = Promise.resolve(false);\n\n get updateComplete(): Promise<boolean> {\n return this.readyPromise;\n }\n}\n\ncustomElements.define('defined-overlay-ready', DefinedOverlayReady);\n\nconst definedOverlayDecorator = (\n story: () => TemplateResult\n): TemplateResult => {\n return html`\n ${story()}\n <defined-overlay-ready></defined-overlay-ready>\n `;\n};\n\nexport const definedOverlayElement = (): TemplateResult => {\n return html`\n <overlay-trigger placement=\"bottom\" type=\"modal\">\n <sp-button variant=\"primary\" slot=\"trigger\">Open popover</sp-button>\n <sp-popover slot=\"click-content\" direction=\"bottom\">\n <sp-dialog no-divider>\n <popover-content></popover-content>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n `;\n};\n\ndefinedOverlayElement.decorators = [definedOverlayDecorator];\n\nexport const detachedElement = (): TemplateResult => {\n let overlay: Overlay | undefined;\n const openDetachedOverlayContent = async ({\n target,\n }: {\n target: HTMLElement;\n }): Promise<void> => {\n if (overlay) {\n overlay.open = false;\n overlay = undefined;\n return;\n }\n const div = document.createElement('div');\n (div as HTMLDivElement & { open: boolean }).open = false;\n div.textContent = 'This div is overlaid';\n div.setAttribute(\n 'style',\n `\n background-color: var(--spectrum-global-color-gray-50);\n color: var(--spectrum-global-color-gray-800);\n border: 1px solid;\n padding: 2em;\n `\n );\n overlay = await Overlay.open(div, {\n type: 'auto',\n trigger: target,\n receivesFocus: 'auto',\n placement: 'bottom',\n offset: 0,\n });\n overlay.addEventListener('sp-closed', () => {\n overlay = undefined;\n });\n target.insertAdjacentElement('afterend', overlay);\n };\n requestAnimationFrame(() => {\n openDetachedOverlayContent({\n target: document.querySelector(\n '#detached-content-trigger'\n ) as HTMLElement,\n });\n });\n return html`\n <style>\n sp-overlay div:not([placement]) {\n visibility: hidden;\n }\n </style>\n <sp-action-button\n id=\"detached-content-trigger\"\n @click=${openDetachedOverlayContent}\n >\n <sp-icon-open-in\n slot=\"icon\"\n label=\"Open in overlay\"\n ></sp-icon-open-in>\n </sp-action-button>\n `;\n};\n\nexport const edges = (): TemplateResult => {\n return html`\n <style>\n .demo {\n position: absolute;\n }\n .top-left {\n top: 0;\n left: 0;\n }\n .top-right {\n top: 0;\n right: 0;\n }\n .bottom-right {\n bottom: 0;\n right: 0;\n }\n .bottom-left {\n bottom: 0;\n left: 0;\n }\n </style>\n <overlay-trigger class=\"demo top-left\" placement=\"bottom\">\n <sp-button slot=\"trigger\">\n Top/\n <br />\n Left\n </sp-button>\n <sp-tooltip slot=\"hover-content\" delayed tip=\"bottom\">\n Triskaidekaphobia and More\n </sp-tooltip>\n </overlay-trigger>\n <overlay-trigger class=\"demo top-right\" placement=\"bottom\">\n <sp-button slot=\"trigger\">\n Top/\n <br />\n Right\n </sp-button>\n <sp-tooltip slot=\"hover-content\" delayed tip=\"bottom\">\n Triskaidekaphobia and More\n </sp-tooltip>\n </overlay-trigger>\n <overlay-trigger class=\"demo bottom-left\" placement=\"top\">\n <sp-button slot=\"trigger\">\n Bottom/\n <br />\n Left\n </sp-button>\n <sp-tooltip slot=\"hover-content\" delayed tip=\"top\">\n Triskaidekaphobia and More\n </sp-tooltip>\n </overlay-trigger>\n <overlay-trigger placement=\"top\" class=\"demo bottom-right\">\n <sp-button slot=\"trigger\">\n Bottom/\n <br />\n Right\n </sp-button>\n <sp-tooltip slot=\"hover-content\" delayed tip=\"top\">\n Triskaidekaphobia and More\n </sp-tooltip>\n </overlay-trigger>\n `;\n};\n\nexport const inline = (): TemplateResult => {\n const closeEvent = new Event('close', { bubbles: true, composed: true });\n return html`\n <overlay-trigger type=\"inline\">\n <sp-button slot=\"trigger\">Open</sp-button>\n <sp-popover slot=\"click-content\">\n <sp-button\n @click=${(event: Event & { target: HTMLElement }): void => {\n event.target.dispatchEvent(closeEvent);\n }}\n >\n Close\n </sp-button>\n </sp-popover>\n </overlay-trigger>\n ${extraText}\n `;\n};\n\nexport const longpress = (): TemplateResult => {\n return html`\n <overlay-trigger placement=\"right-start\">\n <sp-action-button slot=\"trigger\" hold-affordance>\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-tooltip slot=\"hover-content\">Search real hard...</sp-tooltip>\n <sp-popover slot=\"longpress-content\" tip>\n <sp-action-group\n @change=${(event: Event & { target: HTMLElement }) =>\n event.target.dispatchEvent(\n new Event('close', { bubbles: true })\n )}\n selects=\"single\"\n vertical\n style=\"margin: calc(var(--spectrum-actiongroup-button-gap-y,var(--spectrum-global-dimension-size-100)) / 2);\"\n >\n <sp-action-button>\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-action-button>\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-action-button>\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n </sp-action-group>\n </sp-popover>\n </overlay-trigger>\n `;\n};\n\nexport const modalLoose = (): TemplateResult => {\n const closeEvent = new Event('close', { bubbles: true, composed: true });\n return html`\n <overlay-trigger type=\"modal\">\n <sp-button slot=\"trigger\">Open</sp-button>\n <sp-dialog\n size=\"s\"\n dismissable\n slot=\"click-content\"\n @closed=${(event: Event & { target: DialogWrapper }) =>\n event.target.dispatchEvent(closeEvent)}\n >\n <h2 slot=\"heading\">Loose Dialog</h2>\n <p>\n The\n <code>sp-dialog</code>\n element is not \"meant\" to be a modal alone. In that way it\n does not manage its own\n <code>open</code>\n attribute or outline when it should have\n <code>pointer-events: auto</code>\n . It's a part of this test suite to prove that content in\n this way can be used in an\n <code>overlay-trigger</code>\n element.\n </p>\n </sp-dialog>\n </overlay-trigger>\n ${extraText}\n `;\n};\n\nexport const modalManaged = (): TemplateResult => {\n const closeEvent = new Event('close', { bubbles: true, composed: true });\n return html`\n <overlay-trigger type=\"modal\">\n <sp-button slot=\"trigger\">Open</sp-button>\n <sp-dialog-wrapper\n underlay\n slot=\"click-content\"\n headline=\"Wrapped Dialog w/ Hero Image\"\n confirm-label=\"Keep Both\"\n secondary-label=\"Replace\"\n cancel-label=\"Cancel\"\n footer=\"Content for footer\"\n @confirm=${(event: Event & { target: DialogWrapper }): void => {\n event.target.dispatchEvent(closeEvent);\n }}\n @secondary=${(\n event: Event & { target: DialogWrapper }\n ): void => {\n event.target.dispatchEvent(closeEvent);\n }}\n @cancel=${(event: Event & { target: DialogWrapper }): void => {\n event.target.dispatchEvent(closeEvent);\n }}\n >\n <p>\n The\n <code>sp-dialog-wrapper</code>\n element has been prepared for use in an\n <code>overlay-trigger</code>\n element by it's combination of modal, underlay, etc. styles\n and features.\n </p>\n </sp-dialog-wrapper>\n </overlay-trigger>\n ${extraText}\n `;\n};\n\nexport const modalWithinNonModal = (): TemplateResult => {\n return html`\n <overlay-trigger type=\"inline\">\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open inline overlay\n </sp-button>\n <sp-popover slot=\"click-content\">\n <sp-dialog size=\"s\" no-divider>\n <overlay-trigger type=\"modal\">\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open modal overlay\n </sp-button>\n <sp-popover slot=\"click-content\">\n <sp-dialog size=\"s\" no-divider>\n Modal overlay\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n `;\n};\n\nexport const noCloseOnResize = (args: Properties): TemplateResult => html`\n <style>\n sp-button:hover {\n border: 10px solid;\n width: 100px;\n }\n </style>\n ${template({\n ...args,\n open: 'click',\n })}\n`;\nnoCloseOnResize.swc_vrt = {\n skip: true,\n};\n\nexport const openClickContent = (args: Properties): TemplateResult =>\n template({\n ...args,\n open: 'click',\n });\n\nexport const openHoverContent = (args: Properties): TemplateResult =>\n template({\n ...args,\n open: 'hover',\n });\n\nexport const replace = (): TemplateResult => {\n const closeEvent = new Event('close', { bubbles: true, composed: true });\n return html`\n <overlay-trigger type=\"replace\">\n <sp-button slot=\"trigger\">Open</sp-button>\n <sp-popover slot=\"click-content\">\n <sp-button\n @click=${(event: Event & { target: HTMLElement }): void => {\n event.target.dispatchEvent(closeEvent);\n }}\n >\n Close\n </sp-button>\n </sp-popover>\n </overlay-trigger>\n ${extraText}\n `;\n};\n\nexport const sideHoverDraggable = (): TemplateResult => {\n return html`\n ${storyStyles}\n <style>\n sp-tooltip {\n transition: none;\n }\n </style>\n <overlay-drag>\n <overlay-trigger placement=\"right\">\n <overlay-target-icon slot=\"trigger\"></overlay-target-icon>\n <sp-tooltip slot=\"hover-content\" delayed tip=\"right\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n Vivamus egestas sed enim sed condimentum. Nunc facilisis\n scelerisque massa sed luctus. Orci varius natoque penatibus\n et magnis dis parturient montes, nascetur ridiculus mus.\n Suspendisse sagittis sodales purus vitae ultricies. Integer\n at dui sem. Sed quam tortor, ornare in nisi et, rhoncus\n lacinia mauris. Sed vel rutrum mauris, ac pellentesque nibh.\n Sed feugiat semper libero, sit amet vehicula orci fermentum\n id. Vivamus imperdiet egestas luctus. Mauris tincidunt\n malesuada ante, faucibus viverra nunc blandit a. Fusce et\n nisl nisi. Aenean dictum quam id mollis faucibus. Nulla a\n ultricies dui. In hac habitasse platea dictumst. Curabitur\n gravida lobortis vestibulum.\n </sp-tooltip>\n </overlay-trigger>\n </overlay-drag>\n `;\n};\n\nexport const superComplexModal = (): TemplateResult => {\n return html`\n <overlay-trigger type=\"modal\">\n <sp-button slot=\"trigger\" variant=\"accent\">Toggle Dialog</sp-button>\n <sp-popover slot=\"click-content\">\n <sp-dialog size=\"s\">\n <overlay-trigger>\n <sp-button slot=\"trigger\" variant=\"primary\">\n Toggle Dialog\n </sp-button>\n <sp-popover slot=\"click-content\">\n <sp-dialog size=\"s\" no-divider>\n <overlay-trigger type=\"modal\">\n <sp-button\n slot=\"trigger\"\n variant=\"secondary\"\n >\n Toggle Dialog\n </sp-button>\n <sp-popover slot=\"click-content\">\n <sp-dialog size=\"s\" no-divider>\n <p>\n When you get this deep, this\n ActiveOverlay should be the only\n one in [slot=\"open\"].\n </p>\n <p>\n All of the rest of the\n ActiveOverlay elements should\n have had their [slot] attribute\n removed.\n </p>\n <p>\n Closing this ActiveOverlay\n should replace them...\n </p>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n `;\n};\n\nexport const updated = (): TemplateResult => {\n return html`\n ${storyStyles}\n <style>\n sp-tooltip {\n transition: none;\n }\n </style>\n <overlay-drag>\n <overlay-trigger class=\"demo top-left\" placement=\"bottom\">\n <overlay-target-icon\n slot=\"trigger\"\n style=\"translate(400px, 300px)\"\n ></overlay-target-icon>\n <sp-tooltip slot=\"hover-content\" delayed tip=\"bottom\">\n Click to open popover\n </sp-tooltip>\n <sp-popover slot=\"click-content\" position=\"bottom\" tip>\n <sp-dialog size=\"s\" no-divider>\n <sp-slider\n value=\"5\"\n step=\"0.5\"\n min=\"0\"\n max=\"20\"\n label=\"Awesomeness\"\n ></sp-slider>\n <div id=\"styled-div\">\n The background of this div should be blue\n </div>\n <overlay-trigger id=\"inner-trigger\" placement=\"bottom\">\n <sp-button slot=\"trigger\">Press Me</sp-button>\n <sp-popover\n slot=\"click-content\"\n placement=\"bottom\"\n tip\n >\n <sp-dialog size=\"s\" no-divider>\n Another Popover\n </sp-dialog>\n </sp-popover>\n\n <sp-tooltip\n slot=\"hover-content\"\n delayed\n tip=\"bottom\"\n >\n Click to open another popover.\n </sp-tooltip>\n </overlay-trigger>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n </overlay-drag>\n `;\n};\n\nexport const updating = (): TemplateResult => {\n const update = (): void => {\n const button = document.querySelector('[slot=\"trigger\"]') as Button;\n button.style.left = `${Math.floor(Math.random() * 200)}px`;\n button.style.top = `${Math.floor(Math.random() * 200)}px`;\n button.style.position = 'fixed';\n };\n return html`\n <overlay-trigger type=\"click\">\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open inline overlay\n </sp-button>\n <sp-popover slot=\"click-content\">\n <sp-dialog size=\"s\" no-divider>\n <sp-button variant=\"primary\" @click=${update}>\n Update trigger location.\n </sp-button>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n `;\n};\n\nupdating.swc_vrt = {\n skip: true,\n};\n\nclass StartEndContextmenu extends HTMLElement {\n override shadowRoot!: ShadowRoot;\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n this.shadowRoot.innerHTML = `\n <style>\n :host {\n display: flex;\n align-items: stretch;\n }\n div {\n width: 50%;\n height: 100%;\n }\n </style>\n <div id=\"start\"></div>\n <div id=\"end\"></div>\n `;\n }\n}\n\ncustomElements.define('start-end-contextmenu', StartEndContextmenu);\n\nexport const virtualElementV1 = (args: Properties): TemplateResult => {\n const contextMenuTemplate = (kind = ''): TemplateResult => html`\n <sp-popover\n style=\"width:300px;\"\n @click=${(event: PointerEvent) => {\n if (\n (event.target as HTMLElement).localName === 'sp-menu-item'\n ) {\n event.target?.dispatchEvent(\n new Event('close', { bubbles: true })\n );\n }\n }}\n >\n <sp-menu>\n <sp-menu-group>\n <span slot=\"header\">Menu source: ${kind}</span>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and mask...</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item>Save selection</sp-menu-item>\n <sp-menu-item disabled>Make work path</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n </sp-popover>\n `;\n const handleContextmenu = async (event: PointerEvent): Promise<void> => {\n event.preventDefault();\n event.stopPropagation();\n\n const source = event.composedPath()[0] as HTMLDivElement;\n const { id } = source;\n const trigger = event.target as HTMLElement;\n const virtualTrigger = new VirtualTrigger(event.clientX, event.clientY);\n const fragment = document.createDocumentFragment();\n render(contextMenuTemplate(id), fragment);\n const popover = fragment.querySelector('sp-popover') as Popover;\n\n openOverlay(trigger, 'click', popover, {\n placement: args.placement,\n receivesFocus: 'auto',\n virtualTrigger,\n offset: 0,\n notImmediatelyClosable: true,\n });\n };\n return html`\n <style>\n .app-root {\n position: absolute;\n inset: 0;\n }\n </style>\n <start-end-contextmenu\n class=\"app-root\"\n @contextmenu=${{\n capture: true,\n handleEvent: handleContextmenu,\n }}\n ></start-end-contextmenu>\n `;\n};\n\nvirtualElementV1.args = {\n placement: 'right-start' as Placement,\n};\n\nexport const virtualElement = (args: Properties): TemplateResult => {\n const contextMenuTemplate = (kind = ''): TemplateResult => html`\n <sp-popover\n style=\"width:300px;\"\n @click=${(event: PointerEvent) => {\n if (\n (event.target as HTMLElement).localName === 'sp-menu-item'\n ) {\n event.target?.dispatchEvent(\n new Event('close', { bubbles: true })\n );\n }\n }}\n >\n <sp-menu>\n <sp-menu-group>\n <span slot=\"header\">Menu source: ${kind}</span>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and mask...</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item>Save selection</sp-menu-item>\n <sp-menu-item disabled>Make work path</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n </sp-popover>\n `;\n const handleContextmenu = async (event: PointerEvent): Promise<void> => {\n event.preventDefault();\n event.stopPropagation();\n\n const source = event.composedPath()[0] as HTMLDivElement;\n const { id } = source;\n const trigger = event.target as HTMLElement;\n const virtualTrigger = new VirtualTrigger(event.clientX, event.clientY);\n const fragment = document.createDocumentFragment();\n render(contextMenuTemplate(id), fragment);\n const popover = fragment.querySelector('sp-popover') as Popover;\n\n const overlay = await openOverlay(popover, {\n trigger: virtualTrigger,\n placement: args.placement,\n offset: 0,\n notImmediatelyClosable: true,\n type: 'auto',\n });\n trigger.insertAdjacentElement('afterend', overlay);\n };\n return html`\n <style>\n .app-root {\n position: absolute;\n inset: 0;\n }\n </style>\n <start-end-contextmenu\n class=\"app-root\"\n @contextmenu=${{\n capture: true,\n handleEvent: handleContextmenu,\n }}\n ></start-end-contextmenu>\n `;\n};\n\nvirtualElement.args = {\n placement: 'right-start' as Placement,\n};\n\nexport const virtualElementDeclaratively = (\n args: Properties\n): TemplateResult => {\n const handleContextmenu = async (event: PointerEvent): Promise<void> => {\n event.preventDefault();\n event.stopPropagation();\n\n const overlay = document.querySelector(\n 'sp-overlay:not([open])'\n ) as Overlay;\n\n if (overlay.triggerElement instanceof VirtualTrigger) {\n overlay.triggerElement.updateBoundingClientRect(\n event.clientX,\n event.clientY\n );\n }\n overlay.willPreventClose = true;\n overlay.open = true;\n };\n const overlay = (): TemplateResult => html`\n <sp-overlay\n offset=\"0\"\n type=\"auto\"\n placement=${args.placement}\n .triggerElement=${new VirtualTrigger(0, 0)}\n >\n <sp-popover\n style=\"width:300px;\"\n @change=${(event: PointerEvent) => {\n event.target?.dispatchEvent(\n new Event('close', { bubbles: true })\n );\n }}\n >\n <sp-menu>\n <sp-menu-group>\n <span slot=\"header\">Menu</span>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and mask...</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item>Save selection</sp-menu-item>\n <sp-menu-item disabled>Make work path</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n </sp-popover>\n </sp-overlay>\n `;\n\n return html`\n <style>\n .app-root {\n position: absolute;\n inset: 0;\n }\n </style>\n <div\n class=\"app-root\"\n @contextmenu=${{\n capture: true,\n handleEvent: handleContextmenu,\n }}\n >\n ${overlay()} ${overlay()}\n </div>\n `;\n};\n\nvirtualElementDeclaratively.args = {\n placement: 'right-start' as Placement,\n};\n\nvirtualElementDeclaratively.swc_vrt = {\n skip: true,\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\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 { html, TemplateResult } from '@spectrum-web-components/base';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport {\n openOverlay,\n Overlay,\n OverlayContentTypes,\n OverlayTrigger,\n Placement,\n TriggerInteractions,\n VirtualTrigger,\n} from '@spectrum-web-components/overlay';\nimport '@spectrum-web-components/action-button/sp-action-button.js';\nimport '@spectrum-web-components/action-group/sp-action-group.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/dialog/sp-dialog.js';\nimport '@spectrum-web-components/dialog/sp-dialog-wrapper.js';\nimport { DialogWrapper } from '@spectrum-web-components/dialog';\nimport '@spectrum-web-components/field-label/sp-field-label.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-magnify.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-open-in.js';\nimport '@spectrum-web-components/overlay/overlay-trigger.js';\n\nimport { Picker } from '@spectrum-web-components/picker';\nimport '@spectrum-web-components/picker/sp-picker.js';\nimport '@spectrum-web-components/overlay/sp-overlay.js';\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/menu/sp-menu-group.js';\nimport '@spectrum-web-components/menu/sp-menu-divider.js';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/slider/sp-slider.js';\nimport '@spectrum-web-components/radio/sp-radio.js';\nimport '@spectrum-web-components/radio/sp-radio-group.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport '@spectrum-web-components/theme/sp-theme.js';\nimport '@spectrum-web-components/theme/src/themes.js';\nimport '@spectrum-web-components/accordion/sp-accordion.js';\nimport '@spectrum-web-components/accordion/sp-accordion-item.js';\nimport '../../../projects/story-decorator/src/types.js';\n\nimport './overlay-story-components.js';\nimport { render } from 'lit-html';\nimport { Popover } from '@spectrum-web-components/popover';\nimport { Button } from '@spectrum-web-components/button';\nimport { PopoverContent } from './overlay-story-components.js';\n\nconst storyStyles = html`\n <style>\n html,\n body,\n #root,\n #root-inner,\n sp-story-decorator {\n height: 100%;\n margin: 0;\n }\n\n sp-story-decorator::part(container) {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n\n overlay-trigger {\n flex: none;\n }\n\n #styled-div {\n background-color: var(--styled-div-background-color, blue);\n color: white;\n padding: 4px 10px;\n margin-bottom: 10px;\n }\n\n #inner-trigger {\n display: inline-block;\n }\n </style>\n`;\n\nexport default {\n title: 'Overlay',\n argTypes: {\n offset: { control: 'number' },\n placement: {\n control: {\n type: 'inline-radio',\n options: [\n 'top',\n 'top-start',\n 'top-end',\n 'bottom',\n 'bottom-start',\n 'bottom-end',\n 'left',\n 'left-start',\n 'left-end',\n 'right',\n 'right-start',\n 'right-end',\n 'auto',\n 'auto-start',\n 'auto-end',\n 'none',\n ],\n },\n },\n type: {\n control: {\n type: 'inline-radio',\n options: ['modal', 'replace', 'inline'],\n },\n },\n colorStop: {\n control: {\n type: 'inline-radio',\n options: ['light', 'dark'],\n },\n },\n },\n args: {\n placement: 'bottom',\n offset: 0,\n colorStop: 'light',\n },\n};\n\ninterface Properties {\n placement: Placement;\n offset: number;\n open?: OverlayContentTypes;\n type?: Extract<TriggerInteractions, 'inline' | 'modal' | 'replace'>;\n}\n\nconst template = ({\n placement,\n offset,\n open,\n type,\n}: Properties): TemplateResult => {\n return html`\n ${storyStyles}\n <overlay-trigger\n content=\"click hover\"\n id=\"trigger\"\n placement=\"${placement}\"\n offset=\"${offset}\"\n open=${ifDefined(open)}\n type=${ifDefined(type)}\n >\n <sp-button variant=\"primary\" slot=\"trigger\">Show Popover</sp-button>\n <sp-popover slot=\"click-content\" placement=\"${placement}\" tip>\n <sp-dialog no-divider>\n <sp-slider\n value=\"5\"\n step=\"0.5\"\n min=\"0\"\n max=\"20\"\n label=\"Awesomeness\"\n default-value=\"10\"\n ></sp-slider>\n <div id=\"styled-div\">\n The background of this div should be blue\n </div>\n <overlay-trigger id=\"inner-trigger\" placement=\"bottom\">\n <sp-button slot=\"trigger\">Press Me</sp-button>\n <sp-popover slot=\"click-content\" placement=\"bottom\" tip>\n <sp-dialog size=\"s\" no-divider>\n Another Popover\n </sp-dialog>\n </sp-popover>\n\n <sp-tooltip slot=\"hover-content\" delayed tip=\"bottom\">\n Click to open another popover.\n </sp-tooltip>\n </overlay-trigger>\n </sp-dialog>\n </sp-popover>\n <sp-tooltip\n slot=\"hover-content\"\n ?delayed=${open !== 'hover'}\n tip=\"bottom\"\n >\n Click to open a popover.\n </sp-tooltip>\n </overlay-trigger>\n `;\n};\n\nconst extraText = html`\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n`;\n\nfunction nextFrame(): Promise<void> {\n return new Promise((res) => requestAnimationFrame(() => res()));\n}\n\nexport const Default = (args: Properties): TemplateResult => template(args);\n\nexport const accordion = (): TemplateResult => {\n return html`\n <overlay-trigger type=\"modal\" placement=\"top-start\">\n <style>\n sp-button {\n margin-top: 70vh;\n }\n </style>\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open overlay w/ accordion\n </sp-button>\n <sp-popover\n slot=\"click-content\"\n style=\"overflow-y: scroll;position: static;\"\n >\n <sp-dialog size=\"s\" no-divider>\n <sp-accordion allow-multiple>\n <sp-accordion-item label=\"Some things\">\n <p>\n Thing\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n more things\n </p>\n </sp-accordion-item>\n <sp-accordion-item label=\"Other things\">\n <p>\n Thing\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n more things\n </p>\n </sp-accordion-item>\n <sp-accordion-item label=\"More things\">\n <p>\n Thing\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n more things\n </p>\n </sp-accordion-item>\n <sp-accordion-item label=\"Additional things\">\n <p>\n Thing\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n <br />\n more things\n </p>\n </sp-accordion-item>\n </sp-accordion>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n `;\n};\n\naccordion.swc_vrt = {\n skip: true,\n};\n\nexport const clickAndHoverTargets = (): TemplateResult => {\n return html`\n <div>\n ${storyStyles}\n <style>\n .friendly-target {\n padding: 4px;\n margin: 6px;\n border: 2px solid black;\n border-radius: 6px;\n cursor: default;\n }\n </style>\n <overlay-trigger placement=\"right\">\n <div class=\"friendly-target\" slot=\"trigger\" tabindex=\"0\">\n Click me\n </div>\n <sp-tooltip slot=\"click-content\" tip=\"right\">\n Ok, now hover the other trigger\n </sp-tooltip>\n </overlay-trigger>\n <overlay-trigger placement=\"left\">\n <div class=\"friendly-target\" slot=\"trigger\" tabindex=\"0\">\n Then hover me\n </div>\n <sp-tooltip slot=\"hover-content\" tip=\"right\">\n Now click my trigger -- I should stay open, but the other\n overlay should close\n </sp-tooltip>\n </overlay-trigger>\n </div>\n `;\n};\nclickAndHoverTargets.swc_vrt = {\n skip: true,\n};\n\nclass ScrollForcer extends HTMLElement {\n ready!: (value: boolean | PromiseLike<boolean>) => void;\n\n constructor() {\n super();\n this.readyPromise = new Promise((res) => {\n this.ready = res;\n });\n this.setup();\n }\n\n async setup(): Promise<void> {\n await nextFrame();\n await nextFrame();\n\n this.previousElementSibling?.addEventListener(\n 'sp-opened',\n this.doScroll\n );\n await nextFrame();\n await nextFrame();\n (this.previousElementSibling?.lastElementChild as OverlayTrigger).open =\n 'click';\n }\n\n doScroll = async (): Promise<void> => {\n this.previousElementSibling?.addEventListener(\n 'sp-opened',\n this.doScroll\n );\n await nextFrame();\n await nextFrame();\n await nextFrame();\n await nextFrame();\n\n if (document.scrollingElement) {\n document.scrollingElement.scrollTop = 100;\n }\n\n await nextFrame();\n await nextFrame();\n this.ready(true);\n };\n\n private readyPromise: Promise<boolean> = Promise.resolve(false);\n\n get updateComplete(): Promise<boolean> {\n return this.readyPromise;\n }\n}\n\ncustomElements.define('scroll-forcer', ScrollForcer);\n\nexport const clickContentClosedOnScroll = (\n args: Properties\n): TemplateResult => html`\n <div style=\"margin: 50vh 0 100vh;\">\n ${template({\n ...args,\n })}\n </div>\n`;\nclickContentClosedOnScroll.decorators = [\n (story: () => TemplateResult): TemplateResult => html`\n <style>\n html,\n body,\n #root,\n #root-inner,\n sp-story-decorator {\n height: auto !important;\n }\n </style>\n ${story()}\n <scroll-forcer></scroll-forcer>\n `,\n];\n\nclass ComplexModalReady extends HTMLElement {\n ready!: (value: boolean | PromiseLike<boolean>) => void;\n\n constructor() {\n super();\n this.readyPromise = new Promise((res) => {\n this.ready = res;\n this.setup();\n });\n }\n\n async setup(): Promise<void> {\n await nextFrame();\n\n const overlay = document.querySelector(\n `overlay-trigger`\n ) as OverlayTrigger;\n overlay.addEventListener('sp-opened', this.handleTriggerOpened);\n }\n\n handleTriggerOpened = async (): Promise<void> => {\n await nextFrame();\n\n const picker = document.querySelector('#test-picker') as Picker;\n picker.addEventListener('sp-opened', this.handlePickerOpen);\n picker.open = true;\n };\n\n handlePickerOpen = async (): Promise<void> => {\n const picker = document.querySelector('#test-picker') as Picker;\n const actions = [nextFrame, picker.updateComplete];\n\n await Promise.all(actions);\n\n this.ready(true);\n };\n\n private readyPromise: Promise<boolean> = Promise.resolve(false);\n\n get updateComplete(): Promise<boolean> {\n return this.readyPromise;\n }\n}\n\ncustomElements.define('complex-modal-ready', ComplexModalReady);\n\nconst complexModalDecorator = (story: () => TemplateResult): TemplateResult => {\n return html`\n ${story()}\n <complex-modal-ready></complex-modal-ready>\n `;\n};\n\nexport const complexModal = (): TemplateResult => {\n return html`\n <style>\n body {\n --swc-margin-test: 10px;\n margin: var(--swc-margin-test);\n }\n sp-story-decorator::part(container) {\n min-height: calc(100vh - (2 * var(--swc-margin-test)));\n padding: 0;\n display: grid;\n place-content: center;\n }\n active-overlay > * {\n --spectrum-global-animation-duration-100: 0ms;\n --spectrum-global-animation-duration-200: 0ms;\n --spectrum-global-animation-duration-300: 0ms;\n --spectrum-global-animation-duration-400: 0ms;\n --spectrum-global-animation-duration-500: 0ms;\n --spectrum-global-animation-duration-600: 0ms;\n --spectrum-global-animation-duration-700: 0ms;\n --spectrum-global-animation-duration-800: 0ms;\n --spectrum-global-animation-duration-900: 0ms;\n --spectrum-global-animation-duration-1000: 0ms;\n --spectrum-global-animation-duration-2000: 0ms;\n --spectrum-global-animation-duration-4000: 0ms;\n --spectrum-animation-duration-0: 0ms;\n --spectrum-animation-duration-100: 0ms;\n --spectrum-animation-duration-200: 0ms;\n --spectrum-animation-duration-300: 0ms;\n --spectrum-animation-duration-400: 0ms;\n --spectrum-animation-duration-500: 0ms;\n --spectrum-animation-duration-600: 0ms;\n --spectrum-animation-duration-700: 0ms;\n --spectrum-animation-duration-800: 0ms;\n --spectrum-animation-duration-900: 0ms;\n --spectrum-animation-duration-1000: 0ms;\n --spectrum-animation-duration-2000: 0ms;\n --spectrum-animation-duration-4000: 0ms;\n --spectrum-coachmark-animation-indicator-ring-duration: 0ms;\n --swc-test-duration: 1ms;\n }\n </style>\n <overlay-trigger type=\"modal\" open=\"click\">\n <sp-dialog-wrapper\n slot=\"click-content\"\n headline=\"Dialog title\"\n dismissable\n underlay\n footer=\"Content for footer\"\n >\n <sp-field-label for=\"test-picker\">\n Selection type:\n </sp-field-label>\n <sp-picker id=\"test-picker\">\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and mask...</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item>Save selection</sp-menu-item>\n <sp-menu-item disabled>Make work path</sp-menu-item>\n </sp-picker>\n </sp-dialog-wrapper>\n <sp-button slot=\"trigger\" variant=\"primary\">\n Toggle Dialog\n </sp-button>\n </overlay-trigger>\n `;\n};\n\ncomplexModal.decorators = [complexModalDecorator];\n\nexport const customizedClickContent = (\n args: Properties\n): TemplateResult => html`\n <style>\n sp-popover {\n --styled-div-background-color: var(\n --spectrum-accent-background-color-default\n );\n --mod-button-background-color-default: rebeccapurple;\n }\n </style>\n ${template({\n ...args,\n open: 'click',\n })}\n`;\n\nexport const deep = (): TemplateResult => html`\n <overlay-trigger>\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open popover 1 with buttons + selfmanaged Tooltips\n </sp-button>\n <sp-popover slot=\"click-content\" direction=\"bottom\" tip>\n <sp-dialog size=\"s\" no-divider>\n <sp-action-button>\n <sp-tooltip self-managed placement=\"bottom\">\n My Tooltip 1\n </sp-tooltip>\n A\n </sp-action-button>\n <sp-action-button>\n <sp-tooltip self-managed placement=\"bottom\">\n My Tooltip 1\n </sp-tooltip>\n B\n </sp-action-button>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n\n <overlay-trigger>\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open popover 2 with buttons without ToolTips\n </sp-button>\n <sp-popover slot=\"click-content\" direction=\"bottom\" tip>\n <sp-dialog size=\"s\" no-divider>\n <sp-action-button>X</sp-action-button>\n <sp-action-button>Y</sp-action-button>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n`;\ndeep.swc_vrt = {\n skip: true,\n};\n\nexport const deepChildTooltip = (): TemplateResult => html`\n <overlay-trigger>\n <sp-button variant=\"primary\" slot=\"trigger\">Open popover</sp-button>\n <sp-popover slot=\"click-content\" direction=\"bottom\" tip>\n <sp-dialog no-divider>\n <p>Let us open another overlay here</p>\n <overlay-trigger>\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open sub popover\n </sp-button>\n <sp-popover slot=\"click-content\" direction=\"bottom\" tip>\n <sp-dialog no-divider>\n <p>\n Render an action button with tooltips. Clicking\n the action button shouldn't close everything\n </p>\n <sp-action-button>\n Button with self-managed tooltip\n <sp-tooltip self-managed placement=\"top\">\n Deep Child ToolTip\n </sp-tooltip>\n </sp-action-button>\n <sp-action-button>Just a button</sp-action-button>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n`;\n\nexport const deepNesting = (): TemplateResult => {\n const color = window.__swc_hack_knobs__.defaultColor;\n const outter = color === 'light' ? 'dark' : 'light';\n return html`\n ${storyStyles}\n <sp-theme\n color=${outter}\n theme=${window.__swc_hack_knobs__.defaultThemeVariant}\n scale=${window.__swc_hack_knobs__.defaultScale}\n dir=${window.__swc_hack_knobs__.defaultDirection}\n >\n <sp-theme\n color=${color}\n theme=${window.__swc_hack_knobs__.defaultThemeVariant}\n scale=${window.__swc_hack_knobs__.defaultScale}\n dir=${window.__swc_hack_knobs__.defaultDirection}\n >\n <recursive-popover\n tabindex=\"\"\n style=\"\n background-color: var(--spectrum-gray-100);\n color: var(--spectrum-gray-800);\n padding: calc(var(--swc-scale-factor) * 22px);\n \"\n ></recursive-popover>\n </sp-theme>\n </sp-theme>\n `;\n};\n\nclass DefinedOverlayReady extends HTMLElement {\n ready!: (value: boolean | PromiseLike<boolean>) => void;\n\n connectedCallback(): void {\n if (!!this.ready) return;\n\n this.readyPromise = new Promise((res) => {\n this.ready = res;\n this.setup();\n });\n }\n\n overlayElement!: OverlayTrigger;\n popoverElement!: PopoverContent;\n\n async setup(): Promise<void> {\n await nextFrame();\n await nextFrame();\n\n this.overlayElement = document.querySelector(\n `overlay-trigger`\n ) as OverlayTrigger;\n const button = document.querySelector(\n `[slot=\"trigger\"]`\n ) as HTMLButtonElement;\n this.overlayElement.addEventListener(\n 'sp-opened',\n this.handleTriggerOpened\n );\n await nextFrame();\n await nextFrame();\n button.click();\n }\n\n handleTriggerOpened = async (): Promise<void> => {\n this.overlayElement.removeEventListener(\n 'sp-opened',\n this.handleTriggerOpened\n );\n await nextFrame();\n await nextFrame();\n await nextFrame();\n await nextFrame();\n\n this.popoverElement = document.querySelector(\n 'popover-content'\n ) as PopoverContent;\n if (!this.popoverElement) {\n return;\n }\n this.popoverElement.addEventListener(\n 'sp-opened',\n this.handlePopoverOpen\n );\n await nextFrame();\n await nextFrame();\n this.popoverElement.button.click();\n };\n\n handlePopoverOpen = async (): Promise<void> => {\n await nextFrame();\n\n this.ready(true);\n };\n\n disconnectedCallback(): void {\n this.overlayElement.removeEventListener(\n 'sp-opened',\n this.handleTriggerOpened\n );\n this.popoverElement.removeEventListener(\n 'sp-opened',\n this.handlePopoverOpen\n );\n }\n\n private readyPromise: Promise<boolean> = Promise.resolve(false);\n\n get updateComplete(): Promise<boolean> {\n return this.readyPromise;\n }\n}\n\ncustomElements.define('defined-overlay-ready', DefinedOverlayReady);\n\nconst definedOverlayDecorator = (\n story: () => TemplateResult\n): TemplateResult => {\n return html`\n ${story()}\n <defined-overlay-ready></defined-overlay-ready>\n `;\n};\n\nexport const definedOverlayElement = (): TemplateResult => {\n return html`\n <overlay-trigger placement=\"bottom\" type=\"modal\">\n <sp-button variant=\"primary\" slot=\"trigger\">Open popover</sp-button>\n <sp-popover slot=\"click-content\" direction=\"bottom\">\n <sp-dialog no-divider>\n <popover-content></popover-content>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n `;\n};\n\ndefinedOverlayElement.decorators = [definedOverlayDecorator];\n\nexport const detachedElement = (): TemplateResult => {\n let overlay: Overlay | undefined;\n const openDetachedOverlayContent = async ({\n target,\n }: {\n target: HTMLElement;\n }): Promise<void> => {\n if (overlay) {\n overlay.open = false;\n overlay = undefined;\n return;\n }\n const div = document.createElement('div');\n (div as HTMLDivElement & { open: boolean }).open = false;\n div.textContent = 'This div is overlaid';\n div.setAttribute(\n 'style',\n `\n background-color: var(--spectrum-gray-50);\n color: var(--spectrum-gray-800);\n border: 1px solid;\n padding: 2em;\n `\n );\n overlay = await Overlay.open(div, {\n type: 'auto',\n trigger: target,\n receivesFocus: 'auto',\n placement: 'bottom',\n offset: 0,\n });\n overlay.addEventListener('sp-closed', () => {\n overlay = undefined;\n });\n target.insertAdjacentElement('afterend', overlay);\n };\n requestAnimationFrame(() => {\n openDetachedOverlayContent({\n target: document.querySelector(\n '#detached-content-trigger'\n ) as HTMLElement,\n });\n });\n return html`\n <style>\n sp-overlay div:not([placement]) {\n visibility: hidden;\n }\n </style>\n <sp-action-button\n id=\"detached-content-trigger\"\n @click=${openDetachedOverlayContent}\n >\n <sp-icon-open-in\n slot=\"icon\"\n label=\"Open in overlay\"\n ></sp-icon-open-in>\n </sp-action-button>\n `;\n};\n\nexport const edges = (): TemplateResult => {\n return html`\n <style>\n .demo {\n position: absolute;\n }\n .top-left {\n top: 0;\n left: 0;\n }\n .top-right {\n top: 0;\n right: 0;\n }\n .bottom-right {\n bottom: 0;\n right: 0;\n }\n .bottom-left {\n bottom: 0;\n left: 0;\n }\n </style>\n <overlay-trigger class=\"demo top-left\" placement=\"bottom\">\n <sp-button slot=\"trigger\">\n Top/\n <br />\n Left\n </sp-button>\n <sp-tooltip slot=\"hover-content\" delayed tip=\"bottom\">\n Triskaidekaphobia and More\n </sp-tooltip>\n </overlay-trigger>\n <overlay-trigger class=\"demo top-right\" placement=\"bottom\">\n <sp-button slot=\"trigger\">\n Top/\n <br />\n Right\n </sp-button>\n <sp-tooltip slot=\"hover-content\" delayed tip=\"bottom\">\n Triskaidekaphobia and More\n </sp-tooltip>\n </overlay-trigger>\n <overlay-trigger class=\"demo bottom-left\" placement=\"top\">\n <sp-button slot=\"trigger\">\n Bottom/\n <br />\n Left\n </sp-button>\n <sp-tooltip slot=\"hover-content\" delayed tip=\"top\">\n Triskaidekaphobia and More\n </sp-tooltip>\n </overlay-trigger>\n <overlay-trigger placement=\"top\" class=\"demo bottom-right\">\n <sp-button slot=\"trigger\">\n Bottom/\n <br />\n Right\n </sp-button>\n <sp-tooltip slot=\"hover-content\" delayed tip=\"top\">\n Triskaidekaphobia and More\n </sp-tooltip>\n </overlay-trigger>\n `;\n};\n\nexport const inline = (): TemplateResult => {\n const closeEvent = new Event('close', { bubbles: true, composed: true });\n return html`\n <overlay-trigger type=\"inline\">\n <sp-button slot=\"trigger\">Open</sp-button>\n <sp-popover slot=\"click-content\">\n <sp-button\n @click=${(event: Event & { target: HTMLElement }): void => {\n event.target.dispatchEvent(closeEvent);\n }}\n >\n Close\n </sp-button>\n </sp-popover>\n </overlay-trigger>\n ${extraText}\n `;\n};\n\nexport const longpress = (): TemplateResult => {\n return html`\n <overlay-trigger placement=\"right-start\">\n <sp-action-button slot=\"trigger\" hold-affordance>\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-tooltip slot=\"hover-content\">Search real hard...</sp-tooltip>\n <sp-popover slot=\"longpress-content\" tip>\n <sp-action-group\n @change=${(event: Event & { target: HTMLElement }) =>\n event.target.dispatchEvent(\n new Event('close', { bubbles: true })\n )}\n selects=\"single\"\n vertical\n style=\"margin: calc(var(--spectrum-actiongroup-button-gap-y,calc(var(--swc-scale-factor) * 10px)) / 2);\"\n >\n <sp-action-button>\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-action-button>\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n <sp-action-button>\n <sp-icon-magnify slot=\"icon\"></sp-icon-magnify>\n </sp-action-button>\n </sp-action-group>\n </sp-popover>\n </overlay-trigger>\n `;\n};\n\nexport const modalLoose = (): TemplateResult => {\n const closeEvent = new Event('close', { bubbles: true, composed: true });\n return html`\n <overlay-trigger type=\"modal\">\n <sp-button slot=\"trigger\">Open</sp-button>\n <sp-dialog\n size=\"s\"\n dismissable\n slot=\"click-content\"\n @closed=${(event: Event & { target: DialogWrapper }) =>\n event.target.dispatchEvent(closeEvent)}\n >\n <h2 slot=\"heading\">Loose Dialog</h2>\n <p>\n The\n <code>sp-dialog</code>\n element is not \"meant\" to be a modal alone. In that way it\n does not manage its own\n <code>open</code>\n attribute or outline when it should have\n <code>pointer-events: auto</code>\n . It's a part of this test suite to prove that content in\n this way can be used in an\n <code>overlay-trigger</code>\n element.\n </p>\n </sp-dialog>\n </overlay-trigger>\n ${extraText}\n `;\n};\n\nexport const modalManaged = (): TemplateResult => {\n const closeEvent = new Event('close', { bubbles: true, composed: true });\n return html`\n <overlay-trigger type=\"modal\">\n <sp-button slot=\"trigger\">Open</sp-button>\n <sp-dialog-wrapper\n underlay\n slot=\"click-content\"\n headline=\"Wrapped Dialog w/ Hero Image\"\n confirm-label=\"Keep Both\"\n secondary-label=\"Replace\"\n cancel-label=\"Cancel\"\n footer=\"Content for footer\"\n @confirm=${(event: Event & { target: DialogWrapper }): void => {\n event.target.dispatchEvent(closeEvent);\n }}\n @secondary=${(\n event: Event & { target: DialogWrapper }\n ): void => {\n event.target.dispatchEvent(closeEvent);\n }}\n @cancel=${(event: Event & { target: DialogWrapper }): void => {\n event.target.dispatchEvent(closeEvent);\n }}\n >\n <p>\n The\n <code>sp-dialog-wrapper</code>\n element has been prepared for use in an\n <code>overlay-trigger</code>\n element by it's combination of modal, underlay, etc. styles\n and features.\n </p>\n </sp-dialog-wrapper>\n </overlay-trigger>\n ${extraText}\n `;\n};\n\nexport const modalWithinNonModal = (): TemplateResult => {\n return html`\n <overlay-trigger type=\"inline\">\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open inline overlay\n </sp-button>\n <sp-popover slot=\"click-content\">\n <sp-dialog size=\"s\" no-divider>\n <overlay-trigger type=\"modal\">\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open modal overlay\n </sp-button>\n <sp-popover slot=\"click-content\">\n <sp-dialog size=\"s\" no-divider>\n Modal overlay\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n `;\n};\n\nexport const noCloseOnResize = (args: Properties): TemplateResult => html`\n <style>\n sp-button:hover {\n border: 10px solid;\n width: 100px;\n }\n </style>\n ${template({\n ...args,\n open: 'click',\n })}\n`;\nnoCloseOnResize.swc_vrt = {\n skip: true,\n};\n\nexport const openClickContent = (args: Properties): TemplateResult =>\n template({\n ...args,\n open: 'click',\n });\n\nexport const openHoverContent = (args: Properties): TemplateResult =>\n template({\n ...args,\n open: 'hover',\n });\n\nexport const replace = (): TemplateResult => {\n const closeEvent = new Event('close', { bubbles: true, composed: true });\n return html`\n <overlay-trigger type=\"replace\">\n <sp-button slot=\"trigger\">Open</sp-button>\n <sp-popover slot=\"click-content\">\n <sp-button\n @click=${(event: Event & { target: HTMLElement }): void => {\n event.target.dispatchEvent(closeEvent);\n }}\n >\n Close\n </sp-button>\n </sp-popover>\n </overlay-trigger>\n ${extraText}\n `;\n};\n\nexport const sideHoverDraggable = (): TemplateResult => {\n return html`\n ${storyStyles}\n <style>\n sp-tooltip {\n transition: none;\n }\n </style>\n <overlay-drag>\n <overlay-trigger placement=\"right\">\n <overlay-target-icon slot=\"trigger\"></overlay-target-icon>\n <sp-tooltip slot=\"hover-content\" delayed tip=\"right\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n Vivamus egestas sed enim sed condimentum. Nunc facilisis\n scelerisque massa sed luctus. Orci varius natoque penatibus\n et magnis dis parturient montes, nascetur ridiculus mus.\n Suspendisse sagittis sodales purus vitae ultricies. Integer\n at dui sem. Sed quam tortor, ornare in nisi et, rhoncus\n lacinia mauris. Sed vel rutrum mauris, ac pellentesque nibh.\n Sed feugiat semper libero, sit amet vehicula orci fermentum\n id. Vivamus imperdiet egestas luctus. Mauris tincidunt\n malesuada ante, faucibus viverra nunc blandit a. Fusce et\n nisl nisi. Aenean dictum quam id mollis faucibus. Nulla a\n ultricies dui. In hac habitasse platea dictumst. Curabitur\n gravida lobortis vestibulum.\n </sp-tooltip>\n </overlay-trigger>\n </overlay-drag>\n `;\n};\n\nexport const superComplexModal = (): TemplateResult => {\n return html`\n <overlay-trigger type=\"modal\">\n <sp-button slot=\"trigger\" variant=\"accent\">Toggle Dialog</sp-button>\n <sp-popover slot=\"click-content\">\n <sp-dialog size=\"s\">\n <overlay-trigger>\n <sp-button slot=\"trigger\" variant=\"primary\">\n Toggle Dialog\n </sp-button>\n <sp-popover slot=\"click-content\">\n <sp-dialog size=\"s\" no-divider>\n <overlay-trigger type=\"modal\">\n <sp-button\n slot=\"trigger\"\n variant=\"secondary\"\n >\n Toggle Dialog\n </sp-button>\n <sp-popover slot=\"click-content\">\n <sp-dialog size=\"s\" no-divider>\n <p>\n When you get this deep, this\n ActiveOverlay should be the only\n one in [slot=\"open\"].\n </p>\n <p>\n All of the rest of the\n ActiveOverlay elements should\n have had their [slot] attribute\n removed.\n </p>\n <p>\n Closing this ActiveOverlay\n should replace them...\n </p>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n `;\n};\n\nexport const updated = (): TemplateResult => {\n return html`\n ${storyStyles}\n <style>\n sp-tooltip {\n transition: none;\n }\n </style>\n <overlay-drag>\n <overlay-trigger class=\"demo top-left\" placement=\"bottom\">\n <overlay-target-icon\n slot=\"trigger\"\n style=\"translate(400px, 300px)\"\n ></overlay-target-icon>\n <sp-tooltip slot=\"hover-content\" delayed tip=\"bottom\">\n Click to open popover\n </sp-tooltip>\n <sp-popover slot=\"click-content\" position=\"bottom\" tip>\n <sp-dialog size=\"s\" no-divider>\n <sp-slider\n value=\"5\"\n step=\"0.5\"\n min=\"0\"\n max=\"20\"\n label=\"Awesomeness\"\n ></sp-slider>\n <div id=\"styled-div\">\n The background of this div should be blue\n </div>\n <overlay-trigger id=\"inner-trigger\" placement=\"bottom\">\n <sp-button slot=\"trigger\">Press Me</sp-button>\n <sp-popover\n slot=\"click-content\"\n placement=\"bottom\"\n tip\n >\n <sp-dialog size=\"s\" no-divider>\n Another Popover\n </sp-dialog>\n </sp-popover>\n\n <sp-tooltip\n slot=\"hover-content\"\n delayed\n tip=\"bottom\"\n >\n Click to open another popover.\n </sp-tooltip>\n </overlay-trigger>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n </overlay-drag>\n `;\n};\n\nexport const updating = (): TemplateResult => {\n const update = (): void => {\n const button = document.querySelector('[slot=\"trigger\"]') as Button;\n button.style.left = `${Math.floor(Math.random() * 200)}px`;\n button.style.top = `${Math.floor(Math.random() * 200)}px`;\n button.style.position = 'fixed';\n };\n return html`\n <overlay-trigger type=\"click\">\n <sp-button variant=\"primary\" slot=\"trigger\">\n Open inline overlay\n </sp-button>\n <sp-popover slot=\"click-content\">\n <sp-dialog size=\"s\" no-divider>\n <sp-button variant=\"primary\" @click=${update}>\n Update trigger location.\n </sp-button>\n </sp-dialog>\n </sp-popover>\n </overlay-trigger>\n `;\n};\n\nupdating.swc_vrt = {\n skip: true,\n};\n\nclass StartEndContextmenu extends HTMLElement {\n override shadowRoot!: ShadowRoot;\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n this.shadowRoot.innerHTML = `\n <style>\n :host {\n display: flex;\n align-items: stretch;\n }\n div {\n width: 50%;\n height: 100%;\n }\n </style>\n <div id=\"start\"></div>\n <div id=\"end\"></div>\n `;\n }\n}\n\ncustomElements.define('start-end-contextmenu', StartEndContextmenu);\n\nexport const virtualElementV1 = (args: Properties): TemplateResult => {\n const contextMenuTemplate = (kind = ''): TemplateResult => html`\n <sp-popover\n style=\"width:300px;\"\n @click=${(event: PointerEvent) => {\n if (\n (event.target as HTMLElement).localName === 'sp-menu-item'\n ) {\n event.target?.dispatchEvent(\n new Event('close', { bubbles: true })\n );\n }\n }}\n >\n <sp-menu>\n <sp-menu-group>\n <span slot=\"header\">Menu source: ${kind}</span>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and mask...</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item>Save selection</sp-menu-item>\n <sp-menu-item disabled>Make work path</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n </sp-popover>\n `;\n const handleContextmenu = async (event: PointerEvent): Promise<void> => {\n event.preventDefault();\n event.stopPropagation();\n\n const source = event.composedPath()[0] as HTMLDivElement;\n const { id } = source;\n const trigger = event.target as HTMLElement;\n const virtualTrigger = new VirtualTrigger(event.clientX, event.clientY);\n const fragment = document.createDocumentFragment();\n render(contextMenuTemplate(id), fragment);\n const popover = fragment.querySelector('sp-popover') as Popover;\n\n openOverlay(trigger, 'click', popover, {\n placement: args.placement,\n receivesFocus: 'auto',\n virtualTrigger,\n offset: 0,\n notImmediatelyClosable: true,\n });\n };\n return html`\n <style>\n .app-root {\n position: absolute;\n inset: 0;\n }\n </style>\n <start-end-contextmenu\n class=\"app-root\"\n @contextmenu=${{\n capture: true,\n handleEvent: handleContextmenu,\n }}\n ></start-end-contextmenu>\n `;\n};\n\nvirtualElementV1.args = {\n placement: 'right-start' as Placement,\n};\n\nexport const virtualElement = (args: Properties): TemplateResult => {\n const contextMenuTemplate = (kind = ''): TemplateResult => html`\n <sp-popover\n style=\"width:300px;\"\n @click=${(event: PointerEvent) => {\n if (\n (event.target as HTMLElement).localName === 'sp-menu-item'\n ) {\n event.target?.dispatchEvent(\n new Event('close', { bubbles: true })\n );\n }\n }}\n >\n <sp-menu>\n <sp-menu-group>\n <span slot=\"header\">Menu source: ${kind}</span>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and mask...</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item>Save selection</sp-menu-item>\n <sp-menu-item disabled>Make work path</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n </sp-popover>\n `;\n const handleContextmenu = async (event: PointerEvent): Promise<void> => {\n event.preventDefault();\n event.stopPropagation();\n\n const source = event.composedPath()[0] as HTMLDivElement;\n const { id } = source;\n const trigger = event.target as HTMLElement;\n const virtualTrigger = new VirtualTrigger(event.clientX, event.clientY);\n const fragment = document.createDocumentFragment();\n render(contextMenuTemplate(id), fragment);\n const popover = fragment.querySelector('sp-popover') as Popover;\n\n const overlay = await openOverlay(popover, {\n trigger: virtualTrigger,\n placement: args.placement,\n offset: 0,\n notImmediatelyClosable: true,\n type: 'auto',\n });\n trigger.insertAdjacentElement('afterend', overlay);\n };\n return html`\n <style>\n .app-root {\n position: absolute;\n inset: 0;\n }\n </style>\n <start-end-contextmenu\n class=\"app-root\"\n @contextmenu=${{\n capture: true,\n handleEvent: handleContextmenu,\n }}\n ></start-end-contextmenu>\n `;\n};\n\nvirtualElement.args = {\n placement: 'right-start' as Placement,\n};\n\nexport const virtualElementDeclaratively = (\n args: Properties\n): TemplateResult => {\n const handleContextmenu = async (event: PointerEvent): Promise<void> => {\n event.preventDefault();\n event.stopPropagation();\n\n const overlay = document.querySelector(\n 'sp-overlay:not([open])'\n ) as Overlay;\n\n if (overlay.triggerElement instanceof VirtualTrigger) {\n overlay.triggerElement.updateBoundingClientRect(\n event.clientX,\n event.clientY\n );\n }\n overlay.willPreventClose = true;\n overlay.open = true;\n };\n const overlay = (): TemplateResult => html`\n <sp-overlay\n offset=\"0\"\n type=\"auto\"\n placement=${args.placement}\n .triggerElement=${new VirtualTrigger(0, 0)}\n >\n <sp-popover\n style=\"width:300px;\"\n @change=${(event: PointerEvent) => {\n event.target?.dispatchEvent(\n new Event('close', { bubbles: true })\n );\n }}\n >\n <sp-menu>\n <sp-menu-group>\n <span slot=\"header\">Menu</span>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and mask...</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item>Save selection</sp-menu-item>\n <sp-menu-item disabled>Make work path</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n </sp-popover>\n </sp-overlay>\n `;\n\n return html`\n <style>\n .app-root {\n position: absolute;\n inset: 0;\n }\n </style>\n <div\n class=\"app-root\"\n @contextmenu=${{\n capture: true,\n handleEvent: handleContextmenu,\n }}\n >\n ${overlay()} ${overlay()}\n </div>\n `;\n};\n\nvirtualElementDeclaratively.args = {\n placement: 'right-start' as Placement,\n};\n\nvirtualElementDeclaratively.swc_vrt = {\n skip: true,\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["overlay"]
7
7
  }
@@ -7,36 +7,37 @@ import "@spectrum-web-components/slider/sp-slider.js";
7
7
  import "@spectrum-web-components/tooltip/sp-tooltip.js";
8
8
  import { html } from "lit";
9
9
  import { measureFixtureCreation } from "../../../../test/benchmark/helpers.js";
10
- const popover = () => html`
11
- <sp-popover>
12
- <sp-dialog no-divider>
13
- <sp-slider
14
- value="5"
15
- step="0.5"
16
- min="0"
17
- max="20"
18
- label="Awesomeness"
19
- ></sp-slider>
20
- <div id="styled-div">
21
- The background of this div should be blue
22
- </div>
23
- <sp-button>
24
- Press Me
25
- <sp-tooltip
26
- self-managed
27
- delayed
28
- >
29
- Click to open another popover.
30
- </sp-tooltip>
31
- </sp-button>
32
- </sp-dialog>
33
- </sp-popover>
34
- `;
10
+ const renderPopover = () => {
11
+ import("@spectrum-web-components/popover/sp-popover.js");
12
+ import("@spectrum-web-components/dialog/sp-dialog.js");
13
+ import("@spectrum-web-components/slider/sp-slider.js");
14
+ import("@spectrum-web-components/tooltip/sp-tooltip.js");
15
+ return html`
16
+ <sp-popover>
17
+ <sp-dialog no-divider>
18
+ <sp-slider
19
+ value="5"
20
+ step="0.5"
21
+ min="0"
22
+ max="20"
23
+ label="Awesomeness"
24
+ ></sp-slider>
25
+ <div id="styled-div">
26
+ The background of this div should be blue
27
+ </div>
28
+ <sp-button>
29
+ Press Me
30
+ <sp-tooltip self-managed delayed>
31
+ Click to open another popover.
32
+ </sp-tooltip>
33
+ </sp-button>
34
+ </sp-dialog>
35
+ </sp-popover>
36
+ `;
37
+ };
35
38
  measureFixtureCreation(
36
39
  html`
37
- <sp-button ${trigger(popover)}>
38
- Trigger
39
- </sp-button>
40
+ <sp-button ${trigger(renderPopover)}>Trigger</sp-button>
40
41
  `
41
42
  );
42
43
  //# sourceMappingURL=directive-test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["directive-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*/\n\nimport { trigger } from '@spectrum-web-components/overlay';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/dialog/sp-dialog.js';\nimport '@spectrum-web-components/slider/sp-slider.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport { html, TemplateResult } from 'lit';\nimport { measureFixtureCreation } from '../../../../test/benchmark/helpers.js';\n\nconst popover = (): TemplateResult => html`\n <sp-popover>\n <sp-dialog no-divider>\n <sp-slider\n value=\"5\"\n step=\"0.5\"\n min=\"0\"\n max=\"20\"\n label=\"Awesomeness\"\n ></sp-slider>\n <div id=\"styled-div\">\n The background of this div should be blue\n </div>\n <sp-button>\n Press Me\n <sp-tooltip\n self-managed\n delayed\n >\n Click to open another popover.\n </sp-tooltip>\n </sp-button>\n </sp-dialog>\n </sp-popover>\n`;\n\nmeasureFixtureCreation(\n html`\n <sp-button ${trigger(popover)}>\n Trigger\n </sp-button>\n `\n);\n"],
5
- "mappings": ";AAYA,SAAS,eAAe;AACxB,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,SAAS,YAA4B;AACrC,SAAS,8BAA8B;AAEvC,MAAM,UAAU,MAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BtC;AAAA,EACI;AAAA,qBACiB,QAAQ,OAAO,CAAC;AAAA;AAAA;AAAA;AAIrC;",
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*/\n\nimport { trigger } from '@spectrum-web-components/overlay';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/dialog/sp-dialog.js';\nimport '@spectrum-web-components/slider/sp-slider.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport { html, TemplateResult } from 'lit';\nimport { measureFixtureCreation } from '../../../../test/benchmark/helpers.js';\n\nconst renderPopover = (): TemplateResult => {\n import('@spectrum-web-components/popover/sp-popover.js');\n import('@spectrum-web-components/dialog/sp-dialog.js');\n import('@spectrum-web-components/slider/sp-slider.js');\n import('@spectrum-web-components/tooltip/sp-tooltip.js');\n return html`\n <sp-popover>\n <sp-dialog no-divider>\n <sp-slider\n value=\"5\"\n step=\"0.5\"\n min=\"0\"\n max=\"20\"\n label=\"Awesomeness\"\n ></sp-slider>\n <div id=\"styled-div\">\n The background of this div should be blue\n </div>\n <sp-button>\n Press Me\n <sp-tooltip self-managed delayed>\n Click to open another popover.\n </sp-tooltip>\n </sp-button>\n </sp-dialog>\n </sp-popover>\n `;\n};\n\nmeasureFixtureCreation(\n html`\n <sp-button ${trigger(renderPopover)}>Trigger</sp-button>\n `\n);\n"],
5
+ "mappings": ";AAYA,SAAS,eAAe;AACxB,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,SAAS,YAA4B;AACrC,SAAS,8BAA8B;AAEvC,MAAM,gBAAgB,MAAsB;AACxC,SAAO,gDAAgD;AACvD,SAAO,8CAA8C;AACrD,SAAO,8CAA8C;AACrD,SAAO,gDAAgD;AACvD,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBX;AAEA;AAAA,EACI;AAAA,qBACiB,QAAQ,aAAa,CAAC;AAAA;AAE3C;",
6
6
  "names": []
7
7
  }
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
  import "@spectrum-web-components/overlay/sp-overlay.js";
3
3
  import "@spectrum-web-components/button/sp-button.js";
4
- import "@spectrum-web-components/popover/sp-popover.js";
5
- import "@spectrum-web-components/dialog/sp-dialog.js";
6
- import "@spectrum-web-components/slider/sp-slider.js";
7
- import "@spectrum-web-components/tooltip/sp-tooltip.js";
8
4
  import {
9
5
  removeSlottableRequest
10
6
  } from "@spectrum-web-components/overlay/src/slottable-request-event.js";
11
- import { html, render } from "lit";
7
+ import { html, render } from "@spectrum-web-components/base";
12
8
  import { measureFixtureCreation } from "../../../../test/benchmark/helpers.js";
13
9
  const handleSlottableRequest = (event) => {
10
+ import("@spectrum-web-components/popover/sp-popover.js");
11
+ import("@spectrum-web-components/dialog/sp-dialog.js");
12
+ import("@spectrum-web-components/slider/sp-slider.js");
13
+ import("@spectrum-web-components/tooltip/sp-tooltip.js");
14
14
  const template = event.data === removeSlottableRequest ? void 0 : html`
15
15
  <sp-popover>
16
16
  <sp-dialog no-divider>
@@ -39,8 +39,7 @@ measureFixtureCreation(
39
39
  html`
40
40
  <sp-button id="button">Trigger</sp-button>
41
41
  <sp-overlay
42
- trigger="button"
43
- .triggerInteraction=${"click"}
42
+ trigger="button@click"
44
43
  @slottable-request=${handleSlottableRequest}
45
44
  ></sp-overlay>
46
45
  `
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["lazy-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*/\n\nimport '@spectrum-web-components/overlay/sp-overlay.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/dialog/sp-dialog.js';\nimport '@spectrum-web-components/slider/sp-slider.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport {\n removeSlottableRequest,\n type SlottableRequestEvent,\n} from '@spectrum-web-components/overlay/src/slottable-request-event.js';\nimport { html, render } from 'lit';\nimport { measureFixtureCreation } from '../../../../test/benchmark/helpers.js';\n\nconst handleSlottableRequest = (event: SlottableRequestEvent): void => {\n const template =\n event.data === removeSlottableRequest\n ? undefined\n : html`\n <sp-popover>\n <sp-dialog no-divider>\n <sp-slider\n value=\"5\"\n step=\"0.5\"\n min=\"0\"\n max=\"20\"\n label=\"Awesomeness\"\n ></sp-slider>\n <div id=\"styled-div\">\n The background of this div should be blue\n </div>\n <sp-button>\n Press Me\n <sp-tooltip self-managed delayed>\n Click to open another popover.\n </sp-tooltip>\n </sp-button>\n </sp-dialog>\n </sp-popover>\n `;\n render(template, event.target as HTMLElement);\n};\n\nmeasureFixtureCreation(\n html`\n <sp-button id=\"button\">Trigger</sp-button>\n <sp-overlay\n trigger=\"button\"\n .triggerInteraction=${'click'}\n @slottable-request=${handleSlottableRequest}\n ></sp-overlay>\n `\n);\n"],
5
- "mappings": ";AAYA,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP;AAAA,EACI;AAAA,OAEG;AACP,SAAS,MAAM,cAAc;AAC7B,SAAS,8BAA8B;AAEvC,MAAM,yBAAyB,CAAC,UAAuC;AACnE,QAAM,WACF,MAAM,SAAS,yBACT,SACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBV,SAAO,UAAU,MAAM,MAAqB;AAChD;AAEA;AAAA,EACI;AAAA;AAAA;AAAA;AAAA,kCAI8B,OAAO;AAAA,iCACR,sBAAsB;AAAA;AAAA;AAGvD;",
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*/\n\nimport '@spectrum-web-components/overlay/sp-overlay.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport {\n removeSlottableRequest,\n type SlottableRequestEvent,\n} from '@spectrum-web-components/overlay/src/slottable-request-event.js';\nimport { html, render } from '@spectrum-web-components/base';\nimport { measureFixtureCreation } from '../../../../test/benchmark/helpers.js';\n\nconst handleSlottableRequest = (event: SlottableRequestEvent): void => {\n import('@spectrum-web-components/popover/sp-popover.js');\n import('@spectrum-web-components/dialog/sp-dialog.js');\n import('@spectrum-web-components/slider/sp-slider.js');\n import('@spectrum-web-components/tooltip/sp-tooltip.js');\n const template =\n event.data === removeSlottableRequest\n ? undefined\n : html`\n <sp-popover>\n <sp-dialog no-divider>\n <sp-slider\n value=\"5\"\n step=\"0.5\"\n min=\"0\"\n max=\"20\"\n label=\"Awesomeness\"\n ></sp-slider>\n <div id=\"styled-div\">\n The background of this div should be blue\n </div>\n <sp-button>\n Press Me\n <sp-tooltip self-managed delayed>\n Click to open another popover.\n </sp-tooltip>\n </sp-button>\n </sp-dialog>\n </sp-popover>\n `;\n render(template, event.target as HTMLElement);\n};\n\nmeasureFixtureCreation(\n html`\n <sp-button id=\"button\">Trigger</sp-button>\n <sp-overlay\n trigger=\"button@click\"\n @slottable-request=${handleSlottableRequest}\n ></sp-overlay>\n `\n);\n"],
5
+ "mappings": ";AAYA,OAAO;AACP,OAAO;AACP;AAAA,EACI;AAAA,OAEG;AACP,SAAS,MAAM,cAAc;AAC7B,SAAS,8BAA8B;AAEvC,MAAM,yBAAyB,CAAC,UAAuC;AACnE,SAAO,gDAAgD;AACvD,SAAO,8CAA8C;AACrD,SAAO,8CAA8C;AACrD,SAAO,gDAAgD;AACvD,QAAM,WACF,MAAM,SAAS,yBACT,SACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBV,SAAO,UAAU,MAAM,MAAqB;AAChD;AAEA;AAAA,EACI;AAAA;AAAA;AAAA;AAAA,iCAI6B,sBAAsB;AAAA;AAAA;AAGvD;",
6
6
  "names": []
7
7
  }