@lion/ui 0.7.5 → 0.7.7

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 (142) hide show
  1. package/README.md +1 -2
  2. package/components/button/test-suites/LionButton.suite.js +3 -1
  3. package/components/combobox/src/LionCombobox.js +33 -9
  4. package/components/combobox/test/lion-combobox.test.js +134 -7
  5. package/components/dialog/test/lion-dialog.test.js +59 -1
  6. package/components/input-datepicker/test/lion-input-datepicker.test.js +3 -3
  7. package/components/input-file/src/FileHandle.js +1 -1
  8. package/components/input-file/src/LionInputFile.js +1 -3
  9. package/components/input-file/test/lion-input-file.test.js +11 -14
  10. package/components/input-stepper/src/LionInputStepper.js +6 -5
  11. package/components/input-stepper/test/lion-input-stepper-integrations.test.js +20 -0
  12. package/components/input-stepper/test/lion-input-stepper.test.js +48 -3
  13. package/components/overlays/src/OverlayController.js +29 -7
  14. package/components/overlays/src/OverlayMixin.js +5 -1
  15. package/components/overlays/src/utils/deep-contains.js +134 -3
  16. package/components/overlays/test/OverlayController.test.js +57 -0
  17. package/components/overlays/test/utils-tests/deep-contains.test.js +98 -0
  18. package/components/select-rich/src/LionSelectRich.js +12 -0
  19. package/components/select-rich/test/lion-select-rich.test.js +26 -0
  20. package/custom-elements.json +140 -115
  21. package/dist-types/components/button/test-suites/LionButton.suite.d.ts.map +1 -1
  22. package/dist-types/components/combobox/src/LionCombobox.d.ts +9 -0
  23. package/dist-types/components/combobox/src/LionCombobox.d.ts.map +1 -1
  24. package/dist-types/components/input-file/src/LionInputFile.d.ts.map +1 -1
  25. package/dist-types/components/input-stepper/src/LionInputStepper.d.ts +4 -1
  26. package/dist-types/components/input-stepper/src/LionInputStepper.d.ts.map +1 -1
  27. package/dist-types/components/input-stepper/test/lion-input-stepper-integrations.test.d.ts +2 -0
  28. package/dist-types/components/input-stepper/test/lion-input-stepper-integrations.test.d.ts.map +1 -0
  29. package/dist-types/components/input-stepper/test/lion-input-stepper.test.d.ts.map +1 -1
  30. package/dist-types/components/overlays/src/OverlayController.d.ts +7 -0
  31. package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
  32. package/dist-types/components/overlays/src/OverlayMixin.d.ts.map +1 -1
  33. package/dist-types/components/overlays/src/utils/deep-contains.d.ts +15 -1
  34. package/dist-types/components/overlays/src/utils/deep-contains.d.ts.map +1 -1
  35. package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
  36. package/dist-types/tsconfig.tsbuildinfo +1 -1
  37. package/docs/components/button/use-cases.md +2 -2
  38. package/docs/components/calendar/use-cases.md +4 -4
  39. package/docs/components/checkbox-group/api-table.md +49 -55
  40. package/docs/components/checkbox-group/overview.md +5 -5
  41. package/docs/components/checkbox-group/use-cases.md +33 -33
  42. package/docs/components/collapsible/overview.md +1 -1
  43. package/docs/components/collapsible/use-cases.md +3 -3
  44. package/docs/components/combobox/api-table.md +84 -89
  45. package/docs/components/combobox/extensions.md +20 -20
  46. package/docs/components/combobox/overview.md +1 -1
  47. package/docs/components/combobox/use-cases.md +6 -6
  48. package/docs/components/dialog/api-table.md +3 -3
  49. package/docs/components/dialog/overview.md +2 -2
  50. package/docs/components/dialog/src/external-dialog.js +32 -0
  51. package/docs/components/dialog/src/slots-dialog-content.js +1 -1
  52. package/docs/components/dialog/src/styled-dialog-content.js +1 -1
  53. package/docs/components/dialog/use-cases.md +49 -3
  54. package/docs/components/drawer/use-cases.md +3 -3
  55. package/docs/components/fieldset/api-table.md +45 -51
  56. package/docs/components/fieldset/overview.md +7 -7
  57. package/docs/components/fieldset/use-cases.md +15 -15
  58. package/docs/components/form/overview.md +7 -7
  59. package/docs/components/form/use-cases.md +4 -4
  60. package/docs/components/icon/use-cases.md +1 -1
  61. package/docs/components/input/overview.md +1 -1
  62. package/docs/components/input/use-cases.md +3 -3
  63. package/docs/components/input-amount/overview.md +3 -3
  64. package/docs/components/input-amount/use-cases.md +8 -8
  65. package/docs/components/input-date/overview.md +3 -3
  66. package/docs/components/input-date/use-cases.md +8 -8
  67. package/docs/components/input-datepicker/api-table.md +1 -1
  68. package/docs/components/input-datepicker/overview.md +5 -5
  69. package/docs/components/input-datepicker/use-cases.md +5 -5
  70. package/docs/components/input-email/overview.md +2 -2
  71. package/docs/components/input-email/use-cases.md +3 -3
  72. package/docs/components/input-file/overview.md +1 -1
  73. package/docs/components/input-iban/overview.md +2 -2
  74. package/docs/components/input-iban/use-cases.md +8 -8
  75. package/docs/components/input-range/overview.md +2 -2
  76. package/docs/components/input-stepper/api-table.md +65 -69
  77. package/docs/components/input-stepper/overview.md +1 -1
  78. package/docs/components/input-stepper/use-cases.md +21 -0
  79. package/docs/components/input-tel/overview.md +1 -1
  80. package/docs/components/input-tel/use-cases.md +9 -9
  81. package/docs/components/input-tel-dropdown/api-table.md +70 -73
  82. package/docs/components/input-tel-dropdown/extensions.md +1 -1
  83. package/docs/components/input-tel-dropdown/overview.md +1 -1
  84. package/docs/components/input-tel-dropdown/use-cases.md +5 -5
  85. package/docs/components/listbox/api-table.md +64 -70
  86. package/docs/components/listbox/overview.md +5 -5
  87. package/docs/components/listbox/use-cases.md +61 -61
  88. package/docs/components/pagination/use-cases.md +5 -5
  89. package/docs/components/radio-group/api-table.md +49 -55
  90. package/docs/components/radio-group/overview.md +6 -6
  91. package/docs/components/radio-group/use-cases.md +18 -18
  92. package/docs/components/select/use-cases.md +2 -2
  93. package/docs/components/select-rich/api-table.md +79 -85
  94. package/docs/components/select-rich/overview.md +3 -3
  95. package/docs/components/select-rich/use-cases.md +33 -33
  96. package/docs/components/steps/overview.md +4 -4
  97. package/docs/components/steps/use-cases.md +7 -7
  98. package/docs/components/tabs/examples.md +1 -1
  99. package/docs/components/tabs/use-cases.md +1 -1
  100. package/docs/components/textarea/use-cases.md +3 -3
  101. package/docs/components/tooltip/api-table.md +3 -3
  102. package/docs/components/tooltip/use-cases.md +6 -6
  103. package/docs/fundamentals/index.md +4 -4
  104. package/docs/fundamentals/node-tools/providence-analytics/LocalConfiguration.md +1 -1
  105. package/docs/fundamentals/node-tools/providence-analytics/QueryResult.md +1 -1
  106. package/docs/fundamentals/node-tools/providence-analytics/analyzer.md +1 -1
  107. package/docs/fundamentals/node-tools/providence-analytics/dashboard.md +1 -1
  108. package/docs/fundamentals/node-tools/providence-analytics/overview.md +3 -3
  109. package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
  110. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
  111. package/docs/fundamentals/rationales/accessibility.md +1 -1
  112. package/docs/fundamentals/systems/core/SlotMixin.md +1 -1
  113. package/docs/fundamentals/systems/core/overview.md +1 -1
  114. package/docs/fundamentals/systems/form/formatting-and-parsing.md +8 -8
  115. package/docs/fundamentals/systems/form/model-value.md +1 -1
  116. package/docs/fundamentals/systems/form/overview.md +28 -28
  117. package/docs/fundamentals/systems/form/use-cases.md +19 -19
  118. package/docs/fundamentals/systems/form/validate.md +50 -50
  119. package/docs/fundamentals/systems/localize/api-table.md +10 -17
  120. package/docs/fundamentals/systems/localize/overview.md +4 -4
  121. package/docs/fundamentals/systems/localize/use-cases.md +4 -4
  122. package/docs/fundamentals/systems/overlays/_configuration-positioning.md +4 -4
  123. package/docs/fundamentals/systems/overlays/api-table.md +34 -90
  124. package/docs/fundamentals/systems/overlays/assets/umbrella-form.js +9 -9
  125. package/docs/fundamentals/systems/overlays/configuration.md +55 -29
  126. package/docs/fundamentals/systems/overlays/overview.md +6 -6
  127. package/docs/fundamentals/systems/overlays/use-cases.md +30 -30
  128. package/docs/fundamentals/tools/ajax/use-cases.md +20 -20
  129. package/docs/fundamentals/tools/helpers/action-logger.md +3 -3
  130. package/docs/fundamentals/tools/helpers/overview.md +1 -1
  131. package/docs/fundamentals/tools/singleton-manager/example-complex/demo-app.js +2 -2
  132. package/docs/fundamentals/tools/singleton-manager/example-fail/demo-app.js +2 -2
  133. package/docs/fundamentals/tools/singleton-manager/example-success/demo-app.js +2 -2
  134. package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
  135. package/docs/guides/how-to/create-a-custom-field.md +7 -7
  136. package/docs/guides/how-to/create-a-form.md +4 -4
  137. package/docs/guides/how-to/extend-a-native-input.md +2 -2
  138. package/docs/guides/index.md +8 -8
  139. package/docs/guides/principles/index.md +5 -5
  140. package/docs/guides/principles/scoped-elements.md +1 -1
  141. package/docs/guides/principles/styling.md +1 -1
  142. package/package.json +1 -1
@@ -4,7 +4,7 @@
4
4
  import { html } from '@mdjs/mdjs-preview';
5
5
  import './assets/demo-el-using-overlaymixin.mjs';
6
6
  import './assets/applyDemoOverlayStyles.mjs';
7
- import { withDropdownConfig, withTooltipConfig } from '@lion/ui/overlays.js';
7
+ import { withDropdownConfig, withModalDialogConfig, withTooltipConfig } from '@lion/ui/overlays.js';
8
8
  ```
9
9
 
10
10
  The `OverlayController` has many configuration options.
@@ -29,13 +29,13 @@ export const placementLocal = () => {
29
29
  border: 1px solid black;
30
30
  }
31
31
  </style>
32
- <demo-el-using-overlaymixin .config=${placementModeLocalConfig}>
32
+ <demo-el-using-overlaymixin .config="${placementModeLocalConfig}">
33
33
  <button slot="invoker">Click me to open the local overlay!</button>
34
34
  <div slot="content" class="demo-overlay">
35
35
  Hello! You can close this notification here:
36
36
  <button
37
37
  class="close-button"
38
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
38
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
39
39
  >
40
40
  ⨯
41
41
  </button>
@@ -51,13 +51,13 @@ export const placementLocal = () => {
51
51
  export const placementGlobal = () => {
52
52
  const placementModeGlobalConfig = { placementMode: 'global' };
53
53
  return html`
54
- <demo-el-using-overlaymixin .config=${placementModeGlobalConfig}>
54
+ <demo-el-using-overlaymixin .config="${placementModeGlobalConfig}">
55
55
  <button slot="invoker">Click me to open the global overlay!</button>
56
56
  <div slot="content" class="demo-overlay">
57
57
  Hello! You can close this notification here:
58
58
  <button
59
59
  class="close-button"
60
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
60
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
61
61
  >
62
62
  ⨯
63
63
  </button>
@@ -69,7 +69,7 @@ export const placementGlobal = () => {
69
69
 
70
70
  ## isTooltip (placementMode: 'local')
71
71
 
72
- As specified in the [overlay rationale](https://github.com/ing-bank/lion/blob/b15d2aae1a8d40d3551822279e1a650633dba428/docs/fundamentals/systems/overlays/rationale.md) there are only two official types of overlays: dialogs and tooltips. And their main differences are:
72
+ As specified in the [overlay rationale](https://github.com/ing-bank/lion/blob/a59d362cc1228fc855b426440f4bed3bd21d594b/docs/fundamentals/systems/overlays/rationale.md) there are only two official types of overlays: dialogs and tooltips. And their main differences are:
73
73
 
74
74
  - Dialogs have a modal option, tooltips don’t
75
75
  - Dialogs have interactive content, tooltips don’t
@@ -82,7 +82,7 @@ export const usingTooltipConfig = () => {
82
82
  const tooltipConfig = { ...withTooltipConfig() };
83
83
 
84
84
  return html`
85
- <demo-el-using-overlaymixin id="tooltip" .config=${tooltipConfig}>
85
+ <demo-el-using-overlaymixin id="tooltip" .config="${tooltipConfig}">
86
86
  <button slot="invoker">Hover me to open the tooltip!</button>
87
87
  <div slot="content" class="demo-overlay">Hello!</div>
88
88
  </demo-el-using-overlaymixin>
@@ -103,7 +103,7 @@ You use the feature on any type of overlay.
103
103
  export const trapsKeyboardFocus = () => {
104
104
  const trapsKeyboardFocusConfig = { ...withDropdownConfig(), trapsKeyboardFocus: true };
105
105
  return html`
106
- <demo-el-using-overlaymixin .config=${trapsKeyboardFocusConfig}>
106
+ <demo-el-using-overlaymixin .config="${trapsKeyboardFocusConfig}">
107
107
  <button slot="invoker">Click me to open the overlay!</button>
108
108
  <div slot="content" class="demo-overlay">
109
109
  <div><a href="#">A focusable anchor</a></div>
@@ -111,7 +111,7 @@ export const trapsKeyboardFocus = () => {
111
111
  Hello! You can close this notification here:
112
112
  <button
113
113
  class="close-button"
114
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
114
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
115
115
  >
116
116
  ⨯
117
117
  </button>
@@ -129,13 +129,39 @@ Boolean property. Will allow closing the overlay on ESC key when enabled.
129
129
  export const hidesOnEsc = () => {
130
130
  const hidesOnEscConfig = { ...withDropdownConfig(), hidesOnEsc: true };
131
131
  return html`
132
- <demo-el-using-overlaymixin .config=${hidesOnEscConfig}>
132
+ <demo-el-using-overlaymixin .config="${hidesOnEscConfig}">
133
133
  <button slot="invoker">Click me to open the overlay!</button>
134
134
  <div slot="content" class="demo-overlay">
135
135
  Hello! You can close this notification here:
136
136
  <button
137
137
  class="close-button"
138
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
138
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
139
+ >
140
+ ⨯
141
+ </button>
142
+ </div>
143
+ </demo-el-using-overlaymixin>
144
+ `;
145
+ };
146
+ ```
147
+
148
+ And how it works if `hidesOnEsc` is disabled. In most cases `hidesOnOutsideEsc` needs also to be set to `false`.
149
+
150
+ ```js preview-story
151
+ export const hidesOnEscFalse = () => {
152
+ const hidesOnEscConfig = {
153
+ ...withModalDialogConfig(),
154
+ hidesOnEsc: false,
155
+ hidesOnOutsideEsc: false,
156
+ };
157
+ return html`
158
+ <demo-el-using-overlaymixin .config="${hidesOnEscConfig}">
159
+ <button slot="invoker">Click me to open the overlay!</button>
160
+ <div slot="content" class="demo-overlay">
161
+ Hello! You can close this notification here:
162
+ <button
163
+ class="close-button"
164
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
139
165
  >
140
166
  ⨯
141
167
  </button>
@@ -153,13 +179,13 @@ Boolean property. When enabled allows closing the overlay on ESC key, even when
153
179
  export const hidesOnOutsideEsc = () => {
154
180
  const hidesOnEscConfig = { ...withDropdownConfig(), hidesOnOutsideEsc: true };
155
181
  return html`
156
- <demo-el-using-overlaymixin .config=${hidesOnEscConfig}>
182
+ <demo-el-using-overlaymixin .config="${hidesOnEscConfig}">
157
183
  <button slot="invoker">Click me to open the overlay!</button>
158
184
  <div slot="content" class="demo-overlay">
159
185
  Hello! You can close this notification here:
160
186
  <button
161
187
  class="close-button"
162
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
188
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
163
189
  >
164
190
  ⨯
165
191
  </button>
@@ -177,14 +203,14 @@ Boolean property. Will allow closing the overlay by clicking outside the `conten
177
203
  export const hidesOnOutsideClick = () => {
178
204
  const hidesOnOutsideClickConfig = { ...withDropdownConfig(), hidesOnOutsideClick: true };
179
205
  return html`
180
- <demo-el-using-overlaymixin .config=${hidesOnOutsideClickConfig}>
206
+ <demo-el-using-overlaymixin .config="${hidesOnOutsideClickConfig}">
181
207
  <button slot="invoker">Click me to open the overlay!</button>
182
208
  <div slot="content" class="demo-overlay">
183
209
  <label for="myInput">Clicking this label should not trigger close</label>
184
210
  <input id="myInput" />
185
211
  <button
186
212
  class="close-button"
187
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
213
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
188
214
  >
189
215
  ⨯
190
216
  </button>
@@ -207,13 +233,13 @@ export const elementToFocusAfterHide = () => {
207
233
 
208
234
  const elementToFocusAfterHideConfig = { ...withDropdownConfig(), elementToFocusAfterHide: btn };
209
235
  return html`
210
- <demo-el-using-overlaymixin .config=${elementToFocusAfterHideConfig}>
236
+ <demo-el-using-overlaymixin .config="${elementToFocusAfterHideConfig}">
211
237
  <button slot="invoker">Click me to open the overlay!</button>
212
238
  <div slot="content" class="demo-overlay">
213
239
  Hello! You can close this notification here:
214
240
  <button
215
241
  class="close-button"
216
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
242
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
217
243
  >
218
244
  ⨯
219
245
  </button>
@@ -243,13 +269,13 @@ This currently only supports CSS Animations, because it relies on the `animation
243
269
  export const hasBackdrop = () => {
244
270
  const hasBackdropConfig = { ...withDropdownConfig(), hasBackdrop: true };
245
271
  return html`
246
- <demo-el-using-overlaymixin .config=${hasBackdropConfig}>
272
+ <demo-el-using-overlaymixin .config="${hasBackdropConfig}">
247
273
  <button slot="invoker">Click me to open the overlay!</button>
248
274
  <div slot="content" class="demo-overlay">
249
275
  Hello! You can close this notification here:
250
276
  <button
251
277
  class="close-button"
252
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
278
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
253
279
  >
254
280
  ⨯
255
281
  </button>
@@ -273,19 +299,19 @@ export const isBlocking = () => {
273
299
  This overlay gets closed when overlay B gets opened
274
300
  <button
275
301
  class="close-button"
276
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
302
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
277
303
  >
278
304
  ⨯
279
305
  </button>
280
306
  </div>
281
307
  </demo-el-using-overlaymixin>
282
- <demo-el-using-overlaymixin .config=${isBlockingConfig}>
308
+ <demo-el-using-overlaymixin .config="${isBlockingConfig}">
283
309
  <button slot="invoker">Overlay B: open second</button>
284
310
  <div slot="content" class="demo-overlay demo-overlay--blocking">
285
311
  Overlay A is hidden... now close me and see overlay A again.
286
312
  <button
287
313
  class="close-button"
288
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
314
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
289
315
  >
290
316
  ⨯
291
317
  </button>
@@ -306,13 +332,13 @@ Boolean property. When true, prevents scrolling content that is outside of the `
306
332
  export const preventsScroll = () => {
307
333
  const preventsScrollConfig = { preventsScroll: true };
308
334
  return html`
309
- <demo-el-using-overlaymixin .config=${preventsScrollConfig}>
335
+ <demo-el-using-overlaymixin .config="${preventsScrollConfig}">
310
336
  <button slot="invoker">Click me to open the overlay!</button>
311
337
  <div slot="content" class="demo-overlay">
312
338
  Hello! You can close this notification here:
313
339
  <button
314
340
  class="close-button"
315
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
341
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
316
342
  >
317
343
  ⨯
318
344
  </button>
@@ -345,13 +371,13 @@ export const viewportConfig = () => {
345
371
  viewportConfig: { placement: 'bottom-left' },
346
372
  };
347
373
  return html`
348
- <demo-el-using-overlaymixin .config=${viewportConfig}>
374
+ <demo-el-using-overlaymixin .config="${viewportConfig}">
349
375
  <button slot="invoker">Click me to open the overlay in the bottom left corner!</button>
350
376
  <div slot="content" class="demo-overlay">
351
377
  Hello! You can close this notification here:
352
378
  <button
353
379
  class="close-button"
354
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
380
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
355
381
  >
356
382
  ⨯
357
383
  </button>
@@ -374,7 +400,7 @@ Features:
374
400
 
375
401
  > Popper strictly is scoped on positioning. **It does not change the dimensions of the content node nor the invoker node**.
376
402
  > This also means that if you use the arrow feature, you are in charge of styling it properly, use the data-popper-placement attribute for this.
377
- > An example implementation can be found in [lion-tooltip](https://github.com/ing-bank/lion/blob/b15d2aae1a8d40d3551822279e1a650633dba428/docs/components/tooltip/overview.md), where an arrow is set by default.
403
+ > An example implementation can be found in [lion-tooltip](https://github.com/ing-bank/lion/blob/a59d362cc1228fc855b426440f4bed3bd21d594b/docs/components/tooltip/overview.md), where an arrow is set by default.
378
404
 
379
405
  To override the default options we set for local mode, you add a `popperConfig` object to the config passed to the OverlayController.
380
406
  Here's a succinct overview of some often used popper properties:
@@ -425,13 +451,13 @@ export const popperConfig = () => {
425
451
  border: 1px solid black;
426
452
  }
427
453
  </style>
428
- <demo-el-using-overlaymixin .config=${popperConfig}>
454
+ <demo-el-using-overlaymixin .config="${popperConfig}">
429
455
  <button slot="invoker">Click me to open the overlay!</button>
430
456
  <div slot="content" class="demo-overlay">
431
457
  Hello! You can close this notification here:
432
458
  <button
433
459
  class="close-button"
434
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
460
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
435
461
  >
436
462
  ⨯
437
463
  </button>
@@ -6,7 +6,7 @@ Manages their position on the screen relative to other elements, including other
6
6
 
7
7
  Its purpose is to make it easy to use our Overlay System declaratively. It can be easily extended where needed, to override event listeners and more.
8
8
 
9
- See [lion-dialog](../../../components/dialog/overview.md) and [lion-tooltip](https://github.com/ing-bank/lion/blob/b15d2aae1a8d40d3551822279e1a650633dba428/docs/components/tooltip/overview.md) for example Web Component implementations using the Overlay System.
9
+ See [lion-dialog](../../../components/dialog/overview.md) and [lion-tooltip](https://github.com/ing-bank/lion/blob/a59d362cc1228fc855b426440f4bed3bd21d594b/docs/components/tooltip/overview.md) for example Web Component implementations using the Overlay System.
10
10
 
11
11
  ## Features
12
12
 
@@ -18,9 +18,9 @@ See [lion-dialog](../../../components/dialog/overview.md) and [lion-tooltip](htt
18
18
  - lion-overlay web component:
19
19
  - Show content when clicking the invoker
20
20
  - Have a `.config` object to set or update the OverlayController's configuration
21
- - [**OverlaysManager**](https://github.com/ing-bank/lion/blob/b15d2aae1a8d40d3551822279e1a650633dba428/docs/fundamentals/systems/overlays/use-cases.md#overlaysmanager), a global repository keeping track of all different types of overlays
22
- - [**OverlayController**](https://github.com/ing-bank/lion/blob/b15d2aae1a8d40d3551822279e1a650633dba428/docs/fundamentals/systems/overlays/use-cases.md#overlaycontroller), a single controller class for handling overlays
23
- - [**OverlayMixin**](https://github.com/ing-bank/lion/blob/b15d2aae1a8d40d3551822279e1a650633dba428/docs/fundamentals/systems/overlays/use-cases.md#overlaymixin), a mixin that can be used to create webcomponents that use the OverlayController under the hood
21
+ - [**OverlaysManager**](https://github.com/ing-bank/lion/blob/a59d362cc1228fc855b426440f4bed3bd21d594b/docs/fundamentals/systems/overlays/use-cases.md#overlaysmanager), a global repository keeping track of all different types of overlays
22
+ - [**OverlayController**](https://github.com/ing-bank/lion/blob/a59d362cc1228fc855b426440f4bed3bd21d594b/docs/fundamentals/systems/overlays/use-cases.md#overlaycontroller), a single controller class for handling overlays
23
+ - [**OverlayMixin**](https://github.com/ing-bank/lion/blob/a59d362cc1228fc855b426440f4bed3bd21d594b/docs/fundamentals/systems/overlays/use-cases.md#overlaymixin), a mixin that can be used to create webcomponents that use the OverlayController under the hood
24
24
 
25
25
  Usually you will use `lion-dialog` (or `lion-tooltip` if this makes more sense).
26
26
 
@@ -43,7 +43,7 @@ html`
43
43
  <div slot="content">
44
44
  This is an overlay
45
45
  <button
46
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
46
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
47
47
  >x</button>
48
48
  <div>
49
49
  <button slot="invoker">
@@ -110,4 +110,4 @@ class MyOverlayComponent extends OverlayMixin(LitElement) {
110
110
 
111
111
  ## Rationales
112
112
 
113
- Please check the [system rationals](https://github.com/ing-bank/lion/blob/b15d2aae1a8d40d3551822279e1a650633dba428/docs/fundamentals/systems/overlays/rationale.md) folder, where we go more in-depth.
113
+ Please check the [system rationals](https://github.com/ing-bank/lion/blob/a59d362cc1228fc855b426440f4bed3bd21d594b/docs/fundamentals/systems/overlays/rationale.md) folder, where we go more in-depth.
@@ -21,7 +21,7 @@ The overlay system allows to create different types of overlays like dialogs, to
21
21
  It's designed to be highly flexible, while still delivering sensible defaults.
22
22
  On top of this, the system was built having accessibility in mind.
23
23
 
24
- For a detailed rationale, please consult [Rationale](https://github.com/ing-bank/lion/blob/b15d2aae1a8d40d3551822279e1a650633dba428/docs/fundamentals/systems/overlays/rationale.md).
24
+ For a detailed rationale, please consult [Rationale](https://github.com/ing-bank/lion/blob/a59d362cc1228fc855b426440f4bed3bd21d594b/docs/fundamentals/systems/overlays/rationale.md).
25
25
 
26
26
  ```js preview-story
27
27
  export const main = () => html`
@@ -29,7 +29,7 @@ export const main = () => html`
29
29
  <button slot="invoker">Click me to open the overlay!</button>
30
30
  <div slot="content" class="demo-overlay">
31
31
  Hello! You can close this notification here:
32
- <button @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}>
32
+ <button @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}">
33
33
  ⨯
34
34
  </button>
35
35
  </div>
@@ -67,7 +67,7 @@ Global refers to overlays where the content is positioned in a global root node
67
67
 
68
68
  Overlays can be configured in many ways to suit your needs. We go in-depth into each option in the Overlay System - Configuration chapter.
69
69
 
70
- We also export a few [preset configuration objects](https://github.com/ing-bank/lion/blob/b15d2aae1a8d40d3551822279e1a650633dba428/docs/fundamentals/systems/overlays/configuration.md).
70
+ We also export a few [preset configuration objects](https://github.com/ing-bank/lion/blob/a59d362cc1228fc855b426440f4bed3bd21d594b/docs/fundamentals/systems/overlays/configuration.md).
71
71
 
72
72
  - withModalDialogConfig
73
73
  - withDropdownConfig
@@ -152,13 +152,13 @@ The easiest way is declarative. This can be achieved by adding a `<slot name="ba
152
152
  export const backdrop = () => {
153
153
  const responsiveModalDialogConfig = { ...withModalDialogConfig() };
154
154
  return html`
155
- <demo-el-using-overlaymixin .config=${responsiveModalDialogConfig}>
155
+ <demo-el-using-overlaymixin .config="${responsiveModalDialogConfig}">
156
156
  <demo-overlay-backdrop slot="backdrop"></demo-overlay-backdrop>
157
157
  <button slot="invoker">Click me to open the overlay!</button>
158
158
  <div slot="content" class="demo-overlay">
159
159
  Hello! You can close this notification here:
160
160
  <button
161
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
161
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
162
162
  >
163
163
  ⨯
164
164
  </button>
@@ -176,12 +176,12 @@ export const backdropImperative = () => {
176
176
  const backdropNode = document.createElement('demo-overlay-backdrop');
177
177
  const responsiveModalDialogConfig = { ...withModalDialogConfig(), backdropNode };
178
178
  return html`
179
- <demo-el-using-overlaymixin .config=${responsiveModalDialogConfig}>
179
+ <demo-el-using-overlaymixin .config="${responsiveModalDialogConfig}">
180
180
  <button slot="invoker">Click me to open the overlay!</button>
181
181
  <div slot="content" class="demo-overlay">
182
182
  Hello! You can close this notification here:
183
183
  <button
184
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
184
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
185
185
  >
186
186
  ⨯
187
187
  </button>
@@ -231,13 +231,13 @@ Under the hood, the OverlayController listens to `animationend` event, only then
231
231
  export const backdropAnimation = () => {
232
232
  const responsiveModalDialogConfig = { ...withModalDialogConfig() };
233
233
  return html`
234
- <demo-el-using-overlaymixin .config=${responsiveModalDialogConfig}>
234
+ <demo-el-using-overlaymixin .config="${responsiveModalDialogConfig}">
235
235
  <button slot="invoker">Click me to open the overlay!</button>
236
236
  <demo-overlay-backdrop slot="backdrop"></demo-overlay-backdrop>
237
237
  <div slot="content" class="demo-overlay">
238
238
  Hello! You can close this notification here:
239
239
  <button
240
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
240
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
241
241
  >
242
242
  ⨯
243
243
  </button>
@@ -262,7 +262,7 @@ export const responsiveSwitching = () => {
262
262
  const responsiveBottomSheetConfig = { ...withBottomSheetConfig() };
263
263
  return html`
264
264
  <demo-el-using-overlaymixin
265
- .config=${responsiveBottomSheetConfig}
265
+ .config="${responsiveBottomSheetConfig}"
266
266
  @before-opened=${e => {
267
267
  if (window.innerWidth >= 600) {
268
268
  e.target.config = { ...withModalDialogConfig() };
@@ -275,7 +275,7 @@ export const responsiveSwitching = () => {
275
275
  <div slot="content" class="demo-overlay">
276
276
  Hello! You can close this notification here:
277
277
  <button
278
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
278
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
279
279
  >
280
280
  ⨯
281
281
  </button>
@@ -362,12 +362,12 @@ export const responsiveSwitching2 = () => {
362
362
  </select>
363
363
 
364
364
  <br />
365
- <demo-el-using-overlaymixin ${ref(overlayRef)} .config=${getConfig(selectRef.value?.value)}>
365
+ <demo-el-using-overlaymixin ${ref(overlayRef)} .config="${getConfig(selectRef.value?.value)}">
366
366
  <button slot="invoker">Click me to open the overlay!</button>
367
367
  <div slot="content" class="demo-overlay">
368
368
  Hello! You can close this notification here:
369
369
  <button
370
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
370
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
371
371
  >
372
372
  ⨯
373
373
  </button>
@@ -401,13 +401,13 @@ export const openedState = () => {
401
401
  <demo-el-using-overlaymixin
402
402
  ${ref(myRefs.overlay)}
403
403
  .opened="${appState.opened}"
404
- @opened-changed=${onOpenClosed}
404
+ @opened-changed="${onOpenClosed}"
405
405
  >
406
406
  <button slot="invoker">Overlay</button>
407
407
  <div slot="content" class="demo-overlay">
408
408
  Hello! You can close this notification here:
409
409
  <button
410
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
410
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
411
411
  >
412
412
  ⨯
413
413
  </button>
@@ -448,8 +448,8 @@ export const interceptingOpenClose = () => {
448
448
  </button>
449
449
  <demo-el-using-overlaymixin
450
450
  ${ref(myRefs.overlay)}
451
- @before-closed=${intercept}
452
- @before-opened=${intercept}
451
+ @before-closed="${intercept}"
452
+ @before-opened="${intercept}"
453
453
  >
454
454
  <button
455
455
  slot="invoker"
@@ -460,7 +460,7 @@ export const interceptingOpenClose = () => {
460
460
  </button>
461
461
  <div slot="content" class="demo-overlay">
462
462
  Hello! You can close this notification here:
463
- <button @click=${() => (myRefs.overlay.value.opened = false)}>⨯</button>
463
+ <button @click="${() => (myRefs.overlay.value.opened = false)}">⨯</button>
464
464
  </div>
465
465
  </demo-el-using-overlaymixin>
466
466
  `;
@@ -538,29 +538,29 @@ Below an example is shown with the `isBlocking` option, which makes use of the O
538
538
  export const overlayManager = () => {
539
539
  const hasBackdropConfig = { ...withModalDialogConfig(), hasBackdrop: true };
540
540
  return html`
541
- <demo-el-using-overlaymixin .config=${hasBackdropConfig}>
541
+ <demo-el-using-overlaymixin .config="${hasBackdropConfig}">
542
542
  <button slot="invoker">Click me to open the overlay!</button>
543
543
  <div slot="content" class="demo-overlay">
544
544
  Hello! You can close this notification here:
545
545
  <button
546
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
546
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
547
547
  >
548
548
  ⨯
549
549
  </button>
550
550
  <br />
551
- <button @click=${e => (document.querySelector('#secondOverlay').opened = true)}>
551
+ <button @click="${e => (document.querySelector('#secondOverlay').opened = true)}">
552
552
  Click me to open another overlay which is blocking
553
553
  </button>
554
554
  </div>
555
555
  </demo-el-using-overlaymixin>
556
556
  <demo-el-using-overlaymixin
557
557
  id="secondOverlay"
558
- .config=${{ ...withModalDialogConfig(), hasBackdrop: true, isBlocking: true }}
558
+ .config="${{ ...withModalDialogConfig(), hasBackdrop: true, isBlocking: true }}"
559
559
  >
560
560
  <div slot="content" class="demo-overlay demo-overlay--second">
561
561
  Hello! You can close this notification here:
562
562
  <button
563
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
563
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
564
564
  >
565
565
  ⨯
566
566
  </button>
@@ -580,13 +580,13 @@ Here is the example below
580
580
  export const localBackdrop = () => {
581
581
  const localBackdropConfig = { ...withDropdownConfig() };
582
582
  return html`
583
- <demo-el-using-overlaymixin .config=${localBackdropConfig}>
583
+ <demo-el-using-overlaymixin .config="${localBackdropConfig}">
584
584
  <demo-overlay-backdrop slot="backdrop"></demo-overlay-backdrop>
585
585
  <button slot="invoker">Click me to open the overlay!</button>
586
586
  <div slot="content" class="demo-overlay">
587
587
  Hello! You can close this notification here:
588
588
  <button
589
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
589
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
590
590
  >
591
591
  ⨯
592
592
  </button>
@@ -611,7 +611,7 @@ export const nestedOverlays = () => {
611
611
  <div slot="content" id="nestedContent" class="demo-overlay">
612
612
  Nested content
613
613
  <button
614
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
614
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
615
615
  >
616
616
  ⨯
617
617
  </button>
@@ -619,7 +619,7 @@ export const nestedOverlays = () => {
619
619
  <button slot="invoker" id="nestedInvoker">nested invoker button</button>
620
620
  </demo-el-using-overlaymixin>
621
621
  <button
622
- @click=${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}
622
+ @click="${e => e.target.dispatchEvent(new Event('close-overlay', { bubbles: true }))}"
623
623
  >
624
624
  ⨯
625
625
  </button>
@@ -684,15 +684,15 @@ export const LocalWithArrow = () => {
684
684
  <button slot="invoker">Top</button>
685
685
  <div slot="content">This is a tooltip with an arrow</div>
686
686
  </arrow-example>
687
- <arrow-example .config=${placementRightConfig}>
687
+ <arrow-example .config="${placementRightConfig}">
688
688
  <button slot="invoker">Right</button>
689
689
  <div slot="content">This is a tooltip with an arrow</div>
690
690
  </arrow-example>
691
- <arrow-example .config=${placementBottomConfig}>
691
+ <arrow-example .config="${placementBottomConfig}">
692
692
  <button slot="invoker">Bottom</button>
693
693
  <div slot="content">This is a tooltip with an arrow</div>
694
694
  </arrow-example>
695
- <arrow-example .config=${placementLeftConfig}>
695
+ <arrow-example .config="${placementLeftConfig}">
696
696
  <button slot="invoker">Left</button>
697
697
  <div slot="content">This is a tooltip with an arrow</div>
698
698
  </arrow-example>
@@ -52,8 +52,8 @@ export const getRequest = () => {
52
52
  --sb-action-logger-max-height: 300px;
53
53
  }
54
54
  </style>
55
- <button @click=${() => fetchHandler('pabu')}>Fetch Pabu</button>
56
- <button @click=${() => fetchHandler('naga')}>Fetch Naga</button>
55
+ <button @click="${() => fetchHandler('pabu')}">Fetch Pabu</button>
56
+ <button @click="${() => fetchHandler('naga')}">Fetch Naga</button>
57
57
  ${actionLogger}
58
58
  `;
59
59
  };
@@ -101,8 +101,8 @@ export const getJsonRequest = () => {
101
101
  --sb-action-logger-max-height: 300px;
102
102
  }
103
103
  </style>
104
- <button @click=${() => fetchHandler('pabu')}>Fetch Pabu</button>
105
- <button @click=${() => fetchHandler('naga')}>Fetch Naga</button>
104
+ <button @click="${() => fetchHandler('pabu')}">Fetch Pabu</button>
105
+ <button @click="${() => fetchHandler('naga')}">Fetch Naga</button>
106
106
  ${actionLogger}
107
107
  `;
108
108
  };
@@ -151,7 +151,7 @@ export const errorHandling = () => {
151
151
  --sb-action-logger-max-height: 300px;
152
152
  }
153
153
  </style>
154
- <button @click=${fetchHandler}>Fetch</button>
154
+ <button @click="${fetchHandler}">Fetch</button>
155
155
  ${actionLogger}
156
156
  `;
157
157
  };
@@ -239,8 +239,8 @@ export const cache = () => {
239
239
  --sb-action-logger-max-height: 300px;
240
240
  }
241
241
  </style>
242
- <button @click=${() => fetchHandler('pabu')}>Fetch Pabu</button>
243
- <button @click=${() => fetchHandler('naga')}>Fetch Naga</button>
242
+ <button @click="${() => fetchHandler('pabu')}">Fetch Pabu</button>
243
+ <button @click="${() => fetchHandler('naga')}">Fetch Naga</button>
244
244
  ${actionLogger}
245
245
  `;
246
246
  };
@@ -274,8 +274,8 @@ export const cacheActionOptions = () => {
274
274
  --sb-action-logger-max-height: 300px;
275
275
  }
276
276
  </style>
277
- <button @click=${() => fetchHandler('pabu')}>Fetch Pabu</button>
278
- <button @click=${() => fetchHandler('naga')}>Fetch Naga</button>
277
+ <button @click="${() => fetchHandler('pabu')}">Fetch Pabu</button>
278
+ <button @click="${() => fetchHandler('naga')}">Fetch Naga</button>
279
279
  ${actionLogger}
280
280
  `;
281
281
  };
@@ -321,7 +321,7 @@ export const cacheMaxAge = () => {
321
321
  --sb-action-logger-max-height: 300px;
322
322
  }
323
323
  </style>
324
- <button @click=${fetchHandler}>Fetch Pabu</button>
324
+ <button @click="${fetchHandler}">Fetch Pabu</button>
325
325
  ${actionLogger}
326
326
  `;
327
327
  };
@@ -355,8 +355,8 @@ export const changeCacheIdentifier = () => {
355
355
  --sb-action-logger-max-height: 300px;
356
356
  }
357
357
  </style>
358
- <button @click=${fetchHandler}>Fetch Pabu</button>
359
- <button @click=${changeUserHandler}>Change user</button>
358
+ <button @click="${fetchHandler}">Fetch Pabu</button>
359
+ <button @click="${changeUserHandler}">Change user</button>
360
360
  ${actionLogger}
361
361
  `;
362
362
  };
@@ -392,10 +392,10 @@ export const nonGETRequest = () => {
392
392
  --sb-action-logger-max-height: 300px;
393
393
  }
394
394
  </style>
395
- <button @click=${() => fetchHandler('pabu', 'GET')}>GET Pabu</button>
396
- <button @click=${() => fetchHandler('pabu', 'PATCH')}>PATCH Pabu</button>
397
- <button @click=${() => fetchHandler('naga', 'GET')}>GET Naga</button>
398
- <button @click=${() => fetchHandler('naga', 'PATCH')}>PATCH Naga</button>
395
+ <button @click="${() => fetchHandler('pabu', 'GET')}">GET Pabu</button>
396
+ <button @click="${() => fetchHandler('pabu', 'PATCH')}">PATCH Pabu</button>
397
+ <button @click="${() => fetchHandler('naga', 'GET')}">GET Naga</button>
398
+ <button @click="${() => fetchHandler('naga', 'PATCH')}">PATCH Naga</button>
399
399
  ${actionLogger}
400
400
  `;
401
401
  };
@@ -446,10 +446,10 @@ export const invalidateRules = () => {
446
446
  --sb-action-logger-max-height: 300px;
447
447
  }
448
448
  </style>
449
- <button @click=${() => fetchHandler('pabu', 'GET')}>GET Pabu</button>
450
- <button @click=${() => fetchHandler('pabu', 'PATCH')}>PATCH Pabu</button>
451
- <button @click=${() => fetchHandler('naga', 'GET')}>GET Naga</button>
452
- <button @click=${() => fetchHandler('naga', 'PATCH')}>PATCH Naga</button>
449
+ <button @click="${() => fetchHandler('pabu', 'GET')}">GET Pabu</button>
450
+ <button @click="${() => fetchHandler('pabu', 'PATCH')}">PATCH Pabu</button>
451
+ <button @click="${() => fetchHandler('naga', 'GET')}">GET Naga</button>
452
+ <button @click="${() => fetchHandler('naga', 'PATCH')}">PATCH Naga</button>
453
453
  ${actionLogger}
454
454
  `;
455
455
  };
@@ -112,17 +112,17 @@ export const customTitle = () => {
112
112
  const uid = Math.random().toString(36).substr(2, 10);
113
113
  return html`
114
114
  <button
115
- @click=${e => e.target.parentElement.querySelector(`#logger-${uid}`).log('Hello, World!')}
115
+ @click="${e => e.target.parentElement.querySelector(`#logger-${uid}`).log('Hello, World!')}"
116
116
  >
117
117
  Log
118
118
  </button>
119
- <sb-action-logger id="logger-${uid}" .title=${'Hello World'}></sb-action-logger>
119
+ <sb-action-logger id="logger-${uid}" .title="${'Hello World'}"></sb-action-logger>
120
120
  `;
121
121
  };
122
122
  ```
123
123
 
124
124
  ```html
125
- <sb-action-logger .title=${'Hello World'}></sb-action-logger>
125
+ <sb-action-logger .title="${'Hello World'}"></sb-action-logger>
126
126
  ```
127
127
 
128
128
  ## Rationale