@spectrum-web-components/overlay 0.35.1-rc.43 → 0.37.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 (65) hide show
  1. package/README.md +41 -11
  2. package/custom-elements.json +2340 -0
  3. package/package.json +7 -7
  4. package/src/AbstractOverlay.d.ts +2 -0
  5. package/src/AbstractOverlay.dev.js +9 -0
  6. package/src/AbstractOverlay.dev.js.map +2 -2
  7. package/src/AbstractOverlay.js +1 -1
  8. package/src/AbstractOverlay.js.map +2 -2
  9. package/src/Overlay.d.ts +17 -1
  10. package/src/Overlay.dev.js +57 -42
  11. package/src/Overlay.dev.js.map +3 -3
  12. package/src/Overlay.js +8 -8
  13. package/src/Overlay.js.map +3 -3
  14. package/src/OverlayDialog.dev.js.map +2 -2
  15. package/src/OverlayDialog.js.map +2 -2
  16. package/src/OverlayNoPopover.dev.js +2 -3
  17. package/src/OverlayNoPopover.dev.js.map +2 -2
  18. package/src/OverlayNoPopover.js +1 -1
  19. package/src/OverlayNoPopover.js.map +3 -3
  20. package/src/OverlayTrigger.d.ts +9 -8
  21. package/src/OverlayTrigger.dev.js +100 -62
  22. package/src/OverlayTrigger.dev.js.map +2 -2
  23. package/src/OverlayTrigger.js +48 -54
  24. package/src/OverlayTrigger.js.map +3 -3
  25. package/src/overlay-trigger.css.dev.js +1 -1
  26. package/src/overlay-trigger.css.dev.js.map +1 -1
  27. package/src/overlay-trigger.css.js +3 -3
  28. package/src/overlay-trigger.css.js.map +1 -1
  29. package/src/overlay.css.dev.js +1 -1
  30. package/src/overlay.css.dev.js.map +1 -1
  31. package/src/overlay.css.js +1 -1
  32. package/src/overlay.css.js.map +1 -1
  33. package/src/topLayerOverTransforms.dev.js +4 -4
  34. package/src/topLayerOverTransforms.dev.js.map +2 -2
  35. package/src/topLayerOverTransforms.js +1 -1
  36. package/src/topLayerOverTransforms.js.map +3 -3
  37. package/stories/overlay-element.stories.js +19 -6
  38. package/stories/overlay-element.stories.js.map +2 -2
  39. package/stories/overlay.stories.js +25 -9
  40. package/stories/overlay.stories.js.map +2 -2
  41. package/sync/overlay-trigger.d.ts +1 -0
  42. package/sync/overlay-trigger.dev.js +1 -0
  43. package/sync/overlay-trigger.dev.js.map +2 -2
  44. package/sync/overlay-trigger.js +1 -1
  45. package/sync/overlay-trigger.js.map +2 -2
  46. package/test/benchmark/basic-test.js +1 -1
  47. package/test/benchmark/basic-test.js.map +1 -1
  48. package/test/index.js +6 -0
  49. package/test/index.js.map +2 -2
  50. package/test/overlay-element.test.js +2 -1
  51. package/test/overlay-element.test.js.map +2 -2
  52. package/test/overlay-lifecycle.test.js +2 -0
  53. package/test/overlay-lifecycle.test.js.map +2 -2
  54. package/test/overlay-trigger-extended.test.js +4 -0
  55. package/test/overlay-trigger-extended.test.js.map +2 -2
  56. package/test/overlay-trigger-hover-click.test.js +11 -1
  57. package/test/overlay-trigger-hover-click.test.js.map +2 -2
  58. package/test/overlay-trigger-longpress.test.js +18 -14
  59. package/test/overlay-trigger-longpress.test.js.map +2 -2
  60. package/test/overlay-update.test.js +2 -2
  61. package/test/overlay-update.test.js.map +2 -2
  62. package/test/overlay-v1.test.js +2 -106
  63. package/test/overlay-v1.test.js.map +2 -2
  64. package/test/overlay.test.js +5 -7
  65. package/test/overlay.test.js.map +2 -2
package/README.md CHANGED
@@ -68,7 +68,7 @@ By leveraging the `trigger` attribute to pass an ID reference to another element
68
68
  <sp-icon-rect-select slot="icon"></sp-icon-rect-select>
69
69
  </sp-action-button>
70
70
  </sp-action-group>
71
- <sp-overlay trigger="trigger-1@hover">
71
+ <sp-overlay trigger="trigger-1@hover" type="hint">
72
72
  <sp-tooltip>Hover</sp-tooltip>
73
73
  </sp-overlay>
74
74
  <sp-overlay
@@ -92,7 +92,7 @@ By leveraging the `trigger` attribute to pass an ID reference to another element
92
92
  </sp-action-group>
93
93
  </sp-popover>
94
94
  </sp-overlay>
95
- <sp-overlay trigger="trigger-2@hover">
95
+ <sp-overlay trigger="trigger-2@hover" type="hint">
96
96
  <sp-tooltip>Hover</sp-tooltip>
97
97
  </sp-overlay>
98
98
  <sp-overlay
@@ -116,7 +116,7 @@ By leveraging the `trigger` attribute to pass an ID reference to another element
116
116
  </sp-action-group>
117
117
  </sp-popover>
118
118
  </sp-overlay>
119
- <sp-overlay trigger="trigger-3@hover">
119
+ <sp-overlay trigger="trigger-3@hover" type="hint">
120
120
  <sp-tooltip>Hover</sp-tooltip>
121
121
  </sp-overlay>
122
122
  <sp-overlay
@@ -159,19 +159,33 @@ By leveraging the `trigger` attribute to pass an ID reference to another element
159
159
  ></sp-overlay>
160
160
  ```
161
161
 
162
- # Events
162
+ ### API value interactions
163
163
 
164
- When fully open the `<sp-overlay>` element will dispatch the `sp-opened` event, and when fully closed the `sp-closed` event will be dispatched. "Fully" in this context means that all CSS transitions that have dispatched `transitionrun` events on the direct children of the `<sp-overlay>` element have successfully dispatched their `transitionend` event. Keep in mind the following:
164
+ When a `triggerElement` is present, either through an ID reference established via the `trigger` attribute or by directly setting the `triggerElement` property, a chain on configuration begins:
165
+
166
+ - **if a `triggerInteraction` is available**, either through the `id@interaction` IDL on the `trigger` attribute or directly setting the `triggerInteraction` property, the `<sp-overlay>` will be bound to the resolved `triggerElement` via the `triggerInteraction` provided
167
+ - **if a `placement` is available** when the `<sp-overlay>` is `open` and displaying its contents, those contents will be positioned relative to the `triggerElement` as per that `placement`
168
+ - **if an `offset` is also available** the `<sp-overlay>` will distance itself from the `triggerElement` in accordance with the value of the `offset`
169
+ - **if you have a `placement` but not a `triggerElement`** the `<sp-overlay>` will not be positioned due to their being nothing for the `plaement` to reference when so doing
170
+ - **if no `placement` is available** the content will not be placed with the expectation that the content itself or the consuming application will handle placement of the overlaid content. This is commonly what will happen for `type="modal"` and `type="page"` overlays as they are likely meant to cover the entire screen, whether visibly (via an `<sp-underlay>`, an element that includes one, or similar) or figuratively (as when modal content is not delivered with a backdrop or scrim).
171
+
172
+ ### Events
173
+
174
+ When fully open the `<sp-overlay>` element will dispatch the `sp-opened` event, and when fully closed the `sp-closed` event will be dispatched. "Fully" in this context means that all CSS transitions that have dispatched `transitionrun` events on the direct children of the `<sp-overlay>` element have successfully dispatched their `transitionend` or `transitioncancel` event. Keep in mind the following:
165
175
 
166
176
  - `transition*` events bubble; this means that while transition events on light DOM content of those direct children will be heard, those events will not be taken into account
167
177
  - `transition*` events are not composed; this means that transition events on shadow DOM content of the direct children will not propagate to a level in the DOM where they can be heard
168
178
 
169
- This means that in both cases, if the transition is meant to be a part of the opening or closing of the overlay in question you will need to redispatch the `transitionrun` and `transitionend` events from that transition from the closest direct child of the `<sp-overlay>`.
179
+ This means that in both cases, if the transition is meant to be a part of the opening or closing of the overlay in question you will need to redispatch the `transitionrun`, `transitionend`, and `transitioncancel` events from that transition from the closest direct child of the `<sp-overlay>`.
170
180
 
171
181
  ## Styling
172
182
 
173
183
  `<sp-overlay>` element will use the `<dialog>` element or `popover` attribute to project your content onto the top-layer of the browser, without being moved in the DOM tree. That means that you can style your overlay content with whatever techniques you are already leveraging to style the content that doesn't get overlaid. This means standard CSS selectors, CSS Custom Properties, and CSS Parts applied in your parent context will always apply to your overlaid content.
174
184
 
185
+ ## Top Layer over Complex CSS
186
+
187
+ There are some complex CSS values that have not yet been covered by the positioning API that the `<sp-overlay>` element leverages to associate overlaid content with their trigger elements. In specific, properties like `filter`, when applied to a trigger element within which lives the related content to be overlaid, are not currently supported by the relationship created herein. If support for this is something that you and the work you are addressing would require, we'd love to hear from you in [an issue](https://github.com/adobe/spectrum-web-components/issues). We'd be particularly interested in speaking with you if you were interested in contributing support/testing to ensure this capability for all consumers of the library.
188
+
175
189
  ## Fallback support
176
190
 
177
191
  While the [`<dialog>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog) is widely supported by browsers, the [`popover` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/popover) is still quite new. When leveraged in browsers that do not yet support the `popover` attribute, there may be additional intervention required to ensure your content is delivered to your visitors as expected.
@@ -184,7 +198,11 @@ When an overlay is placed within a page with complex layering, the content there
184
198
  <div class="complex-layered-demo">
185
199
  <div class="complex-layered-holder">
186
200
  <sp-action-button id="complex-layered">Trigger</sp-action-button>
187
- <sp-overlay trigger="complex-layered@hover" placement="bottom-start">
201
+ <sp-overlay
202
+ trigger="complex-layered@hover"
203
+ type="hint"
204
+ placement="bottom-start"
205
+ >
188
206
  <sp-tooltip>
189
207
  I can be partially blocked when [popover] is not available
190
208
  </sp-tooltip>
@@ -219,7 +237,7 @@ Properly managed `z-index` values will support working around this issue while b
219
237
  ```html
220
238
  <div class="contained-demo">
221
239
  <sp-action-button id="contained">Trigger</sp-action-button>
222
- <sp-overlay trigger="contained@hover" placement="bottom-start">
240
+ <sp-overlay trigger="contained@hover" type="hint" placement="bottom-start">
223
241
  <sp-tooltip>
224
242
  I can be blocked when [popover] is not available
225
243
  </sp-tooltip>
@@ -238,7 +256,11 @@ You could just _remove_ the `contain` rule. But, if you are not OK with simply r
238
256
  <div class="contained-demo">
239
257
  <sp-action-button id="contained-working">Trigger</sp-action-button>
240
258
  </div>
241
- <sp-overlay trigger="contained-working@hover" placement="bottom-start">
259
+ <sp-overlay
260
+ trigger="contained-working@hover"
261
+ type="hint"
262
+ placement="bottom-start"
263
+ >
242
264
  <sp-tooltip>I can be blocked when [popover] is not available</sp-tooltip>
243
265
  </sp-overlay>
244
266
  <style>
@@ -257,7 +279,11 @@ You could just _remove_ the `contain` rule. But, if you are not OK with simply r
257
279
  ```html
258
280
  <div class="clip-pathed-demo">
259
281
  <sp-action-button id="clip-pathed">Trigger</sp-action-button>
260
- <sp-overlay trigger="clip-pathed@hover" placement="bottom-start">
282
+ <sp-overlay
283
+ trigger="clip-pathed@hover"
284
+ type="hint"
285
+ placement="bottom-start"
286
+ >
261
287
  <sp-tooltip>
262
288
  I can be blocked when [popover] is not available
263
289
  </sp-tooltip>
@@ -276,7 +302,11 @@ Here, again, working with your content needs (whether or not you want to leverag
276
302
  <div class="clip-pathed-demo">
277
303
  <sp-action-button id="clip-pathed-working">Trigger</sp-action-button>
278
304
  </div>
279
- <sp-overlay trigger="clip-pathed-working@hover" placement="bottom-start">
305
+ <sp-overlay
306
+ trigger="clip-pathed-working@hover"
307
+ type="hint"
308
+ placement="bottom-start"
309
+ >
280
310
  <sp-tooltip>I can be blocked when [popover] is not available</sp-tooltip>
281
311
  </sp-overlay>
282
312
  <style>