@lion/ui 0.17.0 → 0.18.0-menu-system.1

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 (218) hide show
  1. package/collapsible.js +1 -0
  2. package/components/button/src/LionButton.js +4 -0
  3. package/components/button/test-suites/LionButton.suite.js +1 -0
  4. package/components/calendar/src/LionCalendar.js +2 -0
  5. package/components/collapsible/src/DisclosureMixin.js +313 -0
  6. package/components/collapsible/types/DisclosureMixinTypes.ts +48 -0
  7. package/components/combobox/test/lion-combobox.test.js +1 -0
  8. package/components/form-core/src/form-group/FormGroupMixin.js +7 -0
  9. package/components/form-core/src/registration/FormRegistrarMixin.js +11 -0
  10. package/components/form-core/test/FormControlMixin.test.js +1 -0
  11. package/components/form-core/test/validate/Validator.test.js +2 -0
  12. package/components/form-core/test-suites/ValidateMixin.suite.js +2 -0
  13. package/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.js +1 -0
  14. package/components/input-datepicker/src/localizeNamespaceLoader.js +1 -0
  15. package/components/input-datepicker/test/lion-input-datepicker.test.js +5 -6
  16. package/components/localize/test/date/formatDate.test.js +1 -0
  17. package/components/menu/CHANGELOG.md +37 -0
  18. package/components/menu/README.md +335 -0
  19. package/components/menu/index.js +2 -0
  20. package/components/menu/lion-menu-overlay.js +3 -0
  21. package/components/menu/lion-menu.js +3 -0
  22. package/components/menu/lion-spinbutton.js +3 -0
  23. package/components/menu/lion-toolbar.js +3 -0
  24. package/components/menu/lion-tree.js +3 -0
  25. package/components/menu/package.json +46 -0
  26. package/components/menu/requirements.temp.md +12 -0
  27. package/components/menu/src/InteractiveListMixin.js +805 -0
  28. package/components/menu/src/LionMenu.js +250 -0
  29. package/components/menu/src/LionMenuHybrid.js +46 -0
  30. package/components/menu/src/LionMenuOverlay.js +155 -0
  31. package/components/menu/src/LionSpinbutton.js +213 -0
  32. package/components/menu/src/LionToolbar.js +94 -0
  33. package/components/menu/src/LionTree.js +52 -0
  34. package/components/menu/src/MoreButtonMenuMixin.js +297 -0
  35. package/components/menu/src/MultiLevelListMixin.js +274 -0
  36. package/components/menu/src/utils/isInView.js +26 -0
  37. package/components/menu/src/utils/listItemInteractions.js +104 -0
  38. package/components/menu/src/utils/uuid.js +3 -0
  39. package/components/menu/test/lion-menu.test.js +3 -0
  40. package/components/menu/test-suites/InteractiveListMixin.suite.js +142 -0
  41. package/components/menu/types/InteractiveListMixinTypes.d.ts +82 -0
  42. package/components/navigation-bar/README.md +1 -0
  43. package/components/navigation-bar/src/LionNavigationBar.js +439 -0
  44. package/components/navigation-bar/src/types.js +41 -0
  45. package/components/overlays/NEXT.md +49 -0
  46. package/components/overlays/src/OverlayController.js +244 -111
  47. package/components/overlays/src/OverlayMixin.js +58 -11
  48. package/components/overlays/src/OverlaysManager.js +2 -2
  49. package/components/overlays/src/utils/adopt-styles.js +3 -2
  50. package/components/overlays/src/utils/get-focusable-elements.js +4 -0
  51. package/components/overlays/src/utils/is-equal-config.js +10 -6
  52. package/components/overlays/test/OverlayController.test.js +5 -3
  53. package/components/overlays/test/utils-tests/is-equal-config.test.js +1 -1
  54. package/components/overlays/test-suites/OverlayMixin.suite.js +8 -8
  55. package/components/overlays/types/OverlayConfig.ts +16 -5
  56. package/components/select-rich/test/lion-select-rich.test.js +3 -0
  57. package/custom-elements.json +32144 -19531
  58. package/dist-types/components/button/src/LionButton.d.ts +1 -0
  59. package/dist-types/components/button/src/LionButton.d.ts.map +1 -1
  60. package/dist-types/components/button/test-suites/LionButton.suite.d.ts.map +1 -1
  61. package/dist-types/components/calendar/src/LionCalendar.d.ts.map +1 -1
  62. package/dist-types/components/collapsible/src/DisclosureMixin.d.ts +3 -0
  63. package/dist-types/components/collapsible/src/DisclosureMixin.d.ts.map +1 -0
  64. package/dist-types/components/collapsible/types/DisclosureMixinTypes.d.ts +24 -0
  65. package/dist-types/components/collapsible/types/DisclosureMixinTypes.d.ts.map +1 -0
  66. package/dist-types/components/dialog/src/LionDialog.d.ts +3 -1
  67. package/dist-types/components/dialog/src/LionDialog.d.ts.map +1 -1
  68. package/dist-types/components/form-core/src/form-group/FormGroupMixin.d.ts.map +1 -1
  69. package/dist-types/components/form-core/src/registration/FormRegistrarMixin.d.ts.map +1 -1
  70. package/dist-types/components/form-core/test-suites/ValidateMixin.suite.d.ts.map +1 -1
  71. package/dist-types/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.d.ts.map +1 -1
  72. package/dist-types/components/input-datepicker/src/localizeNamespaceLoader.d.ts.map +1 -1
  73. package/dist-types/components/menu/index.d.ts +3 -0
  74. package/dist-types/components/menu/index.d.ts.map +1 -0
  75. package/dist-types/components/menu/lion-menu-overlay.d.ts +2 -0
  76. package/dist-types/components/menu/lion-menu-overlay.d.ts.map +1 -0
  77. package/dist-types/components/menu/lion-menu.d.ts +2 -0
  78. package/dist-types/components/menu/lion-menu.d.ts.map +1 -0
  79. package/dist-types/components/menu/lion-spinbutton.d.ts +2 -0
  80. package/dist-types/components/menu/lion-spinbutton.d.ts.map +1 -0
  81. package/dist-types/components/menu/lion-toolbar.d.ts +2 -0
  82. package/dist-types/components/menu/lion-toolbar.d.ts.map +1 -0
  83. package/dist-types/components/menu/lion-tree.d.ts +2 -0
  84. package/dist-types/components/menu/lion-tree.d.ts.map +1 -0
  85. package/dist-types/components/menu/src/InteractiveListMixin.d.ts +611 -0
  86. package/dist-types/components/menu/src/InteractiveListMixin.d.ts.map +1 -0
  87. package/dist-types/components/menu/src/LionMenu.d.ts +563 -0
  88. package/dist-types/components/menu/src/LionMenu.d.ts.map +1 -0
  89. package/dist-types/components/menu/src/LionMenuHybrid.d.ts +19 -0
  90. package/dist-types/components/menu/src/LionMenuHybrid.d.ts.map +1 -0
  91. package/dist-types/components/menu/src/LionMenuOverlay.d.ts +1007 -0
  92. package/dist-types/components/menu/src/LionMenuOverlay.d.ts.map +1 -0
  93. package/dist-types/components/menu/src/LionSpinbutton.d.ts +58 -0
  94. package/dist-types/components/menu/src/LionSpinbutton.d.ts.map +1 -0
  95. package/dist-types/components/menu/src/LionToolbar.d.ts +8 -0
  96. package/dist-types/components/menu/src/LionToolbar.d.ts.map +1 -0
  97. package/dist-types/components/menu/src/LionTree.d.ts +445 -0
  98. package/dist-types/components/menu/src/LionTree.d.ts.map +1 -0
  99. package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts +31 -0
  100. package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts.map +1 -0
  101. package/dist-types/components/menu/src/MultiLevelListMixin.d.ts +493 -0
  102. package/dist-types/components/menu/src/MultiLevelListMixin.d.ts.map +1 -0
  103. package/dist-types/components/menu/src/utils/isInView.d.ts +9 -0
  104. package/dist-types/components/menu/src/utils/isInView.d.ts.map +1 -0
  105. package/dist-types/components/menu/src/utils/listItemInteractions.d.ts +42 -0
  106. package/dist-types/components/menu/src/utils/listItemInteractions.d.ts.map +1 -0
  107. package/dist-types/components/menu/src/utils/uuid.d.ts +2 -0
  108. package/dist-types/components/menu/src/utils/uuid.d.ts.map +1 -0
  109. package/dist-types/components/menu/test/lion-menu.test.d.ts +2 -0
  110. package/dist-types/components/menu/test/lion-menu.test.d.ts.map +1 -0
  111. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts +13 -0
  112. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts.map +1 -0
  113. package/dist-types/components/navigation-bar/src/LionNavigationBar.d.ts +238 -0
  114. package/dist-types/components/navigation-bar/src/LionNavigationBar.d.ts.map +1 -0
  115. package/dist-types/components/navigation-bar/src/types.d.ts +85 -0
  116. package/dist-types/components/navigation-bar/src/types.d.ts.map +1 -0
  117. package/dist-types/components/overlays/src/OverlayController.d.ts +9 -13
  118. package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
  119. package/dist-types/components/overlays/src/OverlayMixin.d.ts.map +1 -1
  120. package/dist-types/components/overlays/src/utils/get-focusable-elements.d.ts.map +1 -1
  121. package/dist-types/components/overlays/src/utils/is-equal-config.d.ts.map +1 -1
  122. package/dist-types/components/overlays/types/OverlayConfig.d.ts +10 -2
  123. package/dist-types/components/overlays/types/OverlayConfig.d.ts.map +1 -1
  124. package/dist-types/components/select-rich/src/LionSelectRich.d.ts +8 -2
  125. package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
  126. package/dist-types/exports/define/lion-item.d.ts +2 -0
  127. package/dist-types/exports/define/lion-item.d.ts.map +1 -0
  128. package/dist-types/exports/define/lion-menu-overlay.d.ts +2 -0
  129. package/dist-types/exports/define/lion-menu-overlay.d.ts.map +1 -0
  130. package/dist-types/exports/define/lion-menu.d.ts +2 -0
  131. package/dist-types/exports/define/lion-menu.d.ts.map +1 -0
  132. package/dist-types/exports/define/lion-navigation-bar.d.ts +2 -0
  133. package/dist-types/exports/define/lion-navigation-bar.d.ts.map +1 -0
  134. package/dist-types/exports/define/lion-toolbar.d.ts +2 -0
  135. package/dist-types/exports/define/lion-toolbar.d.ts.map +1 -0
  136. package/dist-types/exports/define/lion-tree.d.ts +2 -0
  137. package/dist-types/exports/define/lion-tree.d.ts.map +1 -0
  138. package/dist-types/exports/menu.d.ts +7 -0
  139. package/dist-types/exports/menu.d.ts.map +1 -0
  140. package/dist-types/exports/navigation-bar.d.ts +2 -0
  141. package/dist-types/exports/navigation-bar.d.ts.map +1 -0
  142. package/dist-types/exports/overlays.d.ts +3 -0
  143. package/dist-types/exports/overlays.d.ts.map +1 -1
  144. package/dist-types/tsconfig.tsbuildinfo +1 -1
  145. package/docs/components/checkbox-group/overview.md +2 -2
  146. package/docs/components/collapsible/overview.md +1 -1
  147. package/docs/components/combobox/api-table.md +21 -8
  148. package/docs/components/combobox/overview.md +1 -1
  149. package/docs/components/combobox/use-cases.md +1 -1
  150. package/docs/components/dialog/api-table.md +31 -6
  151. package/docs/components/dialog/overview.md +1 -1
  152. package/docs/components/fieldset/overview.md +5 -5
  153. package/docs/components/form/overview.md +3 -3
  154. package/docs/components/form/use-cases.md +2 -2
  155. package/docs/components/icon/use-cases.md +1 -1
  156. package/docs/components/input/overview.md +1 -1
  157. package/docs/components/input-amount/overview.md +3 -3
  158. package/docs/components/input-date/overview.md +3 -3
  159. package/docs/components/input-datepicker/api-table.md +21 -4
  160. package/docs/components/input-datepicker/overview.md +5 -5
  161. package/docs/components/input-email/overview.md +2 -2
  162. package/docs/components/input-file/overview.md +1 -1
  163. package/docs/components/input-iban/overview.md +2 -2
  164. package/docs/components/input-range/overview.md +2 -2
  165. package/docs/components/input-stepper/overview.md +1 -1
  166. package/docs/components/input-tel/overview.md +1 -1
  167. package/docs/components/input-tel/use-cases.md +6 -6
  168. package/docs/components/input-tel-dropdown/overview.md +1 -1
  169. package/docs/components/listbox/use-cases.md +1 -1
  170. package/docs/components/menu/api-table.md +450 -0
  171. package/docs/components/menu/applyMenuDemoStyles.js +173 -0
  172. package/docs/components/menu/extensions.md +235 -0
  173. package/docs/components/menu/index.md +13 -0
  174. package/docs/components/menu/overview.md +422 -0
  175. package/docs/components/radio-group/overview.md +3 -3
  176. package/docs/components/select/use-cases.md +1 -1
  177. package/docs/components/select-rich/api-table.md +21 -5
  178. package/docs/components/select-rich/use-cases.md +2 -2
  179. package/docs/components/tabs/examples.md +1 -1
  180. package/docs/components/tooltip/api-table.md +36 -11
  181. package/docs/fundamentals/index.md +4 -4
  182. package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
  183. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
  184. package/docs/fundamentals/rationales/accessibility.md +1 -1
  185. package/docs/fundamentals/systems/core/SlotMixin.md +1 -1
  186. package/docs/fundamentals/systems/core/overview.md +1 -1
  187. package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
  188. package/docs/fundamentals/systems/form/model-value.md +1 -1
  189. package/docs/fundamentals/systems/form/overview.md +28 -28
  190. package/docs/fundamentals/systems/form/validate.md +2 -2
  191. package/docs/fundamentals/systems/localize/overview.md +4 -4
  192. package/docs/fundamentals/systems/overlays/api-table.md +34 -34
  193. package/docs/fundamentals/systems/overlays/configuration.md +2 -2
  194. package/docs/fundamentals/systems/overlays/overview.md +5 -5
  195. package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
  196. package/docs/fundamentals/tools/helpers/overview.md +1 -1
  197. package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
  198. package/docs/guides/how-to/create-a-custom-field.md +5 -5
  199. package/docs/guides/how-to/create-a-form.md +4 -4
  200. package/docs/guides/how-to/extend-a-native-input.md +2 -2
  201. package/docs/guides/how-to/index.md +1 -1
  202. package/docs/guides/index.md +8 -8
  203. package/docs/guides/principles/index.md +5 -5
  204. package/docs/guides/principles/styling.md +1 -1
  205. package/exports/collapsible.js +1 -0
  206. package/exports/define/lion-item.js +3 -0
  207. package/exports/define/lion-menu-overlay.js +3 -0
  208. package/exports/define/lion-menu.js +3 -0
  209. package/exports/define/lion-navigation-bar.js +3 -0
  210. package/exports/define/lion-toolbar.js +3 -0
  211. package/exports/define/lion-tree.js +3 -0
  212. package/exports/menu.js +7 -0
  213. package/exports/navigation-bar.js +1 -0
  214. package/exports/overlays.js +6 -0
  215. package/menu.js +7 -0
  216. package/navigation-bar.js +1 -0
  217. package/overlays.js +6 -0
  218. package/package.json +1 -1
@@ -66,6 +66,7 @@ eleventyNavigation:
66
66
  | `activeIndex` | public | | | | LionListbox |
67
67
  | `autofocus` | public | `boolean` | `false` | | LionListbox |
68
68
  | `checkedIndex` | public | `number \| number[]` | | | LionListbox |
69
+ | `config` | public | `Partial<OverlayConfig>` | `{}` | Configure the many options of the \`OverlayController\` | OverlayMixin |
69
70
  | `defaultValidators` | public | `Validator[]` | `[]` | Used by Subclassers to add default Validators to a particular FormControl.&#xA;A date input for instance, always needs the isDate validator. | LionListbox |
70
71
  | `dirty` | public | `boolean` | `false` | True when user has changed the value of the field. | LionListbox |
71
72
  | `disabled` | public | `boolean` | `false` | | LionListbox |
@@ -87,6 +88,7 @@ eleventyNavigation:
87
88
  | `modelValue` | public | | | | LionListbox |
88
89
  | `multipleChoice` | public | `boolean` | `false` | When false (default), modelValue and serializedValue will reflect the&#xA;currently selected choice (usually a string). When true, modelValue will and&#xA;serializedValue will be an array of strings. | LionListbox |
89
90
  | `navigateWithinInvoker` | public | `Boolean` | `false` | When invoker has focus, up and down arrow keys changes active state of listbox,&#xA;without opening overlay. | |
91
+ | `opened` | public | `boolean` | `false` | If you add the opened attribute a dialog will be opened on page load. The invoker can be left out&#xA;in case the user does not need to be able to reopen the dialog. | OverlayMixin |
90
92
  | `operationMode` | public | `OperationMode` | | Types of input interaction of the FormControl (for instance 'enter'\|'select'\|'upload') | LionListbox |
91
93
  | `orientation` | public | `string` | `'vertical'` | Informs screen reader and affects keyboard navigation.&#xA;By default 'vertical' | LionListbox |
92
94
  | `prefilled` | public | `boolean` | `false` | True when user has left non-empty field or input is prefilled.&#xA;The name must be seen from the point of view of the input field:&#xA;once the user enters the input field, the value is non-empty. | LionListbox |
@@ -125,8 +127,11 @@ eleventyNavigation:
125
127
  | `_listboxSlot` | protected | `HTMLElement` | | | LionListbox |
126
128
  | `_noTypeAhead` | public | `boolean` | `false` | When false, a user can type on which the focus will jump to the matching option | LionListbox |
127
129
  | `_oldModelValue` | protected | `string \| string[] \| undefined` | `undefined` | | LionListbox |
128
- | `_overlayContentNode` | protected | | | | |
129
- | `_overlayInvokerNode` | protected | | | | |
130
+ | `_overlayBackdropNode` | protected | | | | OverlayMixin |
131
+ | `_overlayContentNode` | protected | | | | OverlayMixin |
132
+ | `_overlayContentWrapperNode` | protected | | | | OverlayMixin |
133
+ | `_overlayInvokerNode` | protected | | | | OverlayMixin |
134
+ | `_overlayReferenceNode` | protected | | | | OverlayMixin |
130
135
  | `_repropagationRole` | public | `'child'\|'choice-group'\|'fieldset'` | `'choice-group'` | Based on the role, details of handling model-value-changed repropagation differ. | LionListbox |
131
136
  | `_requestedToBeDisabled` | protected | `boolean` | `false` | | LionListbox |
132
137
  | `_scrollTargetNode` | protected | `HTMLElement` | | | LionListbox |
@@ -145,6 +150,7 @@ eleventyNavigation:
145
150
  | `blur` | public | Calls \`blur()\` on focusable element within | | | LionListbox |
146
151
  | `clear` | public | | | | LionListbox |
147
152
  | `click` | public | | | | LionListbox |
153
+ | `close` | public | Hides the overlay | | | OverlayMixin |
148
154
  | `createScopedElement` | public | | `tagName` | | LionListbox |
149
155
  | `defineScopedElement` | public | Defines a scoped element. | `tagName: string, classToBeRegistered: typeof HTMLElement` | | LionListbox |
150
156
  | `feedbackCondition` | public | Allows the Application Developer to specify when a feedback message should be shown | `type: string, meta: object, currentCondition: ((type: string, meta: object) => boolean)` | `boolean` | LionListbox |
@@ -152,20 +158,24 @@ eleventyNavigation:
152
158
  | `initInteractionState` | public | Evaluations performed on connectedCallback.&#xA;This method is public, so it can be called at a later moment (when we need to wait for&#xA;registering children for instance) as well.&#xA;Since this method will be called twice in last mentioned scenario, it must stay idempotent. | | | LionListbox |
153
159
  | `isRegisteredFormElement` | public | | `el: ElementWithParentFormGroup` | | LionListbox |
154
160
  | `makeRequestToBeDisabled` | public | | | | LionListbox |
161
+ | `open` | public | Shows the overlay | | | OverlayMixin |
155
162
  | `removeFormElement` | public | | `child: FormRegisteringHost` | | LionListbox |
156
163
  | `removeFromAriaDescribedBy` | public | Allows to remove element references from aria-describedby attribute. | `element: HTMLElement` | | LionListbox |
157
164
  | `removeFromAriaLabelledBy` | public | Allows to remove element references from aria-labelledby attribute. | `element: HTMLElement` | | LionListbox |
165
+ | `repositionOverlay` | public | Sometimes it's needed to recompute Popper position of an overlay, for instance when we have&#xA;an opened combobox and the surrounding context changes (the space consumed by the textbox&#xA;increases vertically) | | | OverlayMixin |
158
166
  | `reset` | public | | | | LionListbox |
159
167
  | `resetInteractionState` | public | Resets touched and dirty, and recomputes prefilled | | | LionListbox |
160
168
  | `retractRequestToBeDisabled` | public | | | | LionListbox |
161
169
  | `setCheckedIndex` | public | If an array is passed for multiple-choice, it will check the indexes in array, and uncheck the rest&#xA;If a number is passed, the item with the passed index is checked without unchecking others&#xA;For single choice, \_\_onChildCheckedChanged we ensure that we uncheck siblings | `index: number\|number[]` | | LionListbox |
170
+ | `toggle` | public | Toggles the overlay | | | OverlayMixin |
162
171
  | `updateSync` | public | An abstraction that has the exact same api as \`requestUpdate\`, but taking&#xA;into account:&#xA;- \[member order independence]\(https\://github.com/webcomponents/gold-standard/wiki/Member-Order-Independence)&#xA;- property effects start when all (light) dom has initialized (on firstUpdated)&#xA;- property effects don't interrupt the first meaningful paint&#xA;- compatible with propertyAccessor.\`hasChanged\`: no manual checks needed or accidentally&#xA;run property effects / events when no change happened&#xA;effects when values didn't change&#xA;All code previously present in requestUpdate can be placed in this method. | `name: string, oldValue: ?` | | LionListbox |
163
172
  | `validate` | public | Triggered by:&#xA; \- modelValue change&#xA; \- change in the 'validators' array&#xA; \- change in the config of an individual Validator&#xA;&#xA;Three situations are handled:&#xA;- a1) the FormControl is empty: further execution is halted. When the Required Validator&#xA;(being mutually exclusive to the other Validators) is applied, it will end up in the&#xA;validation result (as the only Validator, since further execution was halted).&#xA;- a2) there are synchronous Validators: this is the most common flow. When modelValue hasn't&#xA;changed since last async results were generated, 'sync results' are merged with the&#xA;'async results'.&#xA;- a3) there are asynchronous Validators: for instance when server side evaluation is needed.&#xA;Executions are scheduled and awaited and the 'async results' are merged with the&#xA;'sync results'.&#xA;&#xA;- b) there are MetaValidators. After steps a1, a2, or a3 are finished, the holistic&#xA;MetaValidators (evaluating the total result of the 'regular' (a1, a2 and a3) validators)&#xA;will be run...&#xA;&#xA;Situations a2 and a3 are not mutually exclusive and can be triggered within one \`validate()\`&#xA;call. Situation b will occur after every call. | `{ clearCurrentResult = false }, opts: { clearCurrentResult?: boolean }` | | LionListbox |
164
173
  | `_alignInvokerWidth` | protected | Align invoker width with content width&#xA;Make sure display is not set to "none" while calculating the content width | | | |
165
174
  | `_checkSingleChoiceElements` | protected | | `ev: CustomEvent & {target:FormControl}` | | LionListbox |
166
175
  | `_completeRegistration` | protected | Resolves the registrationComplete promise. Subclassers can delay if needed | | | LionListbox |
167
176
  | `_connectSlotMixin` | protected | | | | LionListbox |
168
- | `_defineOverlayConfig` | protected | | | | |
177
+ | `_defineOverlay` | protected | | `{ contentNode, invokerNode, referenceNode, backdropNode, contentWrapperNode }, config: DefineOverlayConfig` | `OverlayController` | OverlayMixin |
178
+ | `_defineOverlayConfig` | protected | | | `OverlayConfig` | OverlayMixin |
169
179
  | `_dispatchInitialModelValueChangedEvent` | protected | | | | LionListbox |
170
180
  | `_enhanceLightDomA11y` | protected | | | | LionListbox |
171
181
  | `_enhanceLightDomA11yForAdditionalSlots` | protected | Enhances additional slots(prefix, suffix, before, after) defined by developer.&#xA;&#xA;When boolean attribute data-label or data-description is found,&#xA;the slot element will be connected to the input via aria-labelledby or aria-describedby | `additionalSlots: string[]` | | LionListbox |
@@ -189,6 +199,7 @@ eleventyNavigation:
189
199
  | `_inputGroupSuffixTemplate` | protected | | | `TemplateResult \| nothing` | LionListbox |
190
200
  | `_inputGroupTemplate` | protected | | | `TemplateResult` | LionListbox |
191
201
  | `_isEmpty` | protected | Used for Required validation and computation of interaction states | `modelValue: any` | `boolean` | LionListbox |
202
+ | `_isPermanentlyDisconnected` | protected | When we're moving around in dom, disconnectedCallback gets called.&#xA;Before we decide to teardown, let's wait to see if we were not just moving nodes around. | | `Promise<boolean>` | OverlayMixin |
192
203
  | `_isPrivateSlot` | protected | | `slotName: string` | `boolean` | LionListbox |
193
204
  | `_iStateOnLeave` | protected | Sets touched value to true and reevaluates prefilled state.&#xA;When false, on next interaction, user will start with a clean state. | | | LionListbox |
194
205
  | `_iStateOnValueChange` | protected | Sets dirty value and validates when already touched or invalid | | | LionListbox |
@@ -212,11 +223,14 @@ eleventyNavigation:
212
223
  | `_repropagationCondition` | protected | Based on provided target, this condition determines whether received model-value-changed&#xA;event should be repropagated | `target: FormControlHost` | | LionListbox |
213
224
  | `_scrollIntoView` | protected | | `el: HTMLElement, scrollTargetEl: HTMLElement` | | LionListbox |
214
225
  | `_setCheckedElements` | protected | | `value: string \| any[], check: Function` | | LionListbox |
226
+ | `_setOpenedWithoutPropertyEffects` | protected | When the opened state is changed by an Application Developer,cthe OverlayController is&#xA;requested to show/hide. It might happen that this request is not honoured&#xA;(intercepted in before-hide for instance), so that we need to sync the controller state&#xA;to this webcomponent again, preventing eternal loops. | `newOpened: boolean` | | OverlayMixin |
215
227
  | `_setupListboxNode` | protected | | | | LionListbox |
216
- | `_setupOverlayCtrl` | protected | | | | |
228
+ | `_setupOpenCloseListeners` | protected | | | | OverlayMixin |
229
+ | `_setupOverlayCtrl` | protected | | | | OverlayMixin |
217
230
  | `_showFeedbackConditionFor` | protected | Default feedbackCondition condition, used by Subclassers, that will be used when&#xA;\`feedbackCondition()\` is not overridden by Application Developer.&#xA;Show the validity feedback when returning true, don't show when false | `type: string, meta: InteractionStates` | | LionListbox |
218
231
  | `_teardownListboxNode` | protected | | | | LionListbox |
219
- | `_teardownOverlayCtrl` | protected | | | | |
232
+ | `_teardownOpenCloseListeners` | protected | | | | OverlayMixin |
233
+ | `_teardownOverlayCtrl` | protected | | | | OverlayMixin |
220
234
  | `_throwWhenInvalidChildModelValue` | protected | | `child: FormControl` | | LionListbox |
221
235
  | `_triggerInitialModelValueChangedEvent` | protected | | | | LionListbox |
222
236
  | `_uncheckChildren` | protected | | `exclude: LionOption\|LionOption[]` | | LionListbox |
@@ -228,6 +242,7 @@ eleventyNavigation:
228
242
  | Name | Type | Description | Inherited From |
229
243
  | ------------------------------ | ------------- | -------------------------------------------------------- | -------------- |
230
244
  | `blur` | `Event` | | LionListbox |
245
+ | `opened-changed` | `CustomEvent` | | OverlayMixin |
231
246
  | `model-value-changed` | `CustomEvent` | | LionListbox |
232
247
  | `form-element-name-changed` | `CustomEvent` | | LionListbox |
233
248
  | `focus` | `Event` | | LionListbox |
@@ -247,6 +262,7 @@ eleventyNavigation:
247
262
  | `navigate-within-invoker` | navigateWithinInvoker | |
248
263
  | `interaction-mode` | interactionMode | |
249
264
  | `single-option` | singleOption | |
265
+ | `opened` | opened | OverlayMixin |
250
266
  | `orientation` | orientation | LionListbox |
251
267
  | `selection-follows-focus` | selectionFollowsFocus | LionListbox |
252
268
  | `rotate-keyboard-navigation` | rotateKeyboardNavigation | LionListbox |
@@ -29,7 +29,7 @@ You can set the full `modelValue` for each option, which includes the checked pr
29
29
  ```
30
30
 
31
31
  Note, when rendering with the help of the `cache` function imported from `lit/directives/cache.js`, setting model by
32
- the `modelValue` property is not fully supported. Consider setting the model by the `choiceValue` property instead. See [Setting model by `choiceValue` property](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/components/select-rich/#setting-model-by-the-choicevalue-property) for more details.
32
+ the `modelValue` property is not fully supported. Consider setting the model by the `choiceValue` property instead. See [Setting model by `choiceValue` property](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/components/select-rich/#setting-model-by-the-choicevalue-property) for more details.
33
33
 
34
34
  ### Setting model by the `choiceValue` property
35
35
 
@@ -328,7 +328,7 @@ LionSelectRich will give it acces to:
328
328
  - LionSelectRich itself, via `.hostElement`
329
329
 
330
330
  Code of an advanced custom invoker is shown below (this is the code for the
331
- invoker used in [IntlSelectRich](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/components/select-rich/examples.md)).
331
+ invoker used in [IntlSelectRich](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/components/select-rich/examples.md)).
332
332
  The invoker is usually added in the invoker slot of the LionSelectRich subclass.
333
333
  However, it would also be possible for an application developer to provide the invoker
334
334
  by putting it in light dom:
@@ -21,7 +21,7 @@ import './src/lea-tab-panel.js';
21
21
 
22
22
  ## Lea Tabs
23
23
 
24
- Learn how to create the `lea tabs` in our ["introducing lion" blogpost](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/blog/ing-open-sources-lion.md).
24
+ Learn how to create the `lea tabs` in our ["introducing lion" blogpost](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/blog/ing-open-sources-lion.md).
25
25
 
26
26
  ```js preview-story
27
27
  export const main = () => html`
@@ -16,20 +16,44 @@ eleventyNavigation:
16
16
 
17
17
  ### Fields
18
18
 
19
- | Name | Privacy | Type | Default | Description | Inherited From |
20
- | ----------------- | --------- | ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
21
- | `hasArrow` | public | `boolean` | `false` | Whether an arrow should be displayed | ArrowMixin |
22
- | `invokerRelation` | public | `'label'\|'description'` | `'description'` | Decides whether the tooltip invoker text should be considered a description&#xA;(sets aria-describedby) or a label (sets aria-labelledby). | |
23
- | `_arrowNode` | protected | | | | ArrowMixin |
19
+ | Name | Privacy | Type | Default | Description | Inherited From |
20
+ | ---------------------------- | --------- | ------------------------ | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
21
+ | `config` | public | `Partial<OverlayConfig>` | `{}` | Configure the many options of the \`OverlayController\` | OverlayMixin |
22
+ | `hasArrow` | public | `boolean` | `false` | Whether an arrow should be displayed | ArrowMixin |
23
+ | `invokerRelation` | public | `'label'\|'description'` | `'description'` | Decides whether the tooltip invoker text should be considered a description&#xA;(sets aria-describedby) or a label (sets aria-labelledby). | |
24
+ | `opened` | public | `boolean` | `false` | If you add the opened attribute a dialog will be opened on page load. The invoker can be left out&#xA;in case the user does not need to be able to reopen the dialog. | OverlayMixin |
25
+ | `_arrowNode` | protected | | | | ArrowMixin |
26
+ | `_overlayBackdropNode` | protected | | | | OverlayMixin |
27
+ | `_overlayContentNode` | protected | | | | OverlayMixin |
28
+ | `_overlayContentWrapperNode` | protected | | | | OverlayMixin |
29
+ | `_overlayInvokerNode` | protected | | | | OverlayMixin |
30
+ | `_overlayReferenceNode` | protected | | | | OverlayMixin |
24
31
 
25
32
  ### Methods
26
33
 
27
- | Name | Privacy | Description | Parameters | Return | Inherited From |
28
- | ----------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | ------------------------ | -------------- |
29
- | `_arrowNodeTemplate` | protected | | | | ArrowMixin |
30
- | `_arrowTemplate` | protected | | | | ArrowMixin |
31
- | `_defineOverlayConfig` | protected | Overrides arrow and keepTogether modifier to be enabled,&#xA;and adds onCreate and onUpdate hooks to sync from popper state | | `OverlayConfig` | ArrowMixin |
32
- | `_getPopperArrowConfig` | protected | | `popperConfigToExtendFrom: Partial<PopperOptions>` | `Partial<PopperOptions>` | ArrowMixin |
34
+ | Name | Privacy | Description | Parameters | Return | Inherited From |
35
+ | ---------------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------ | -------------- |
36
+ | `close` | public | Hides the overlay | | | OverlayMixin |
37
+ | `open` | public | Shows the overlay | | | OverlayMixin |
38
+ | `repositionOverlay` | public | Sometimes it's needed to recompute Popper position of an overlay, for instance when we have&#xA;an opened combobox and the surrounding context changes (the space consumed by the textbox&#xA;increases vertically) | | | OverlayMixin |
39
+ | `toggle` | public | Toggles the overlay | | | OverlayMixin |
40
+ | `_arrowNodeTemplate` | protected | | | | ArrowMixin |
41
+ | `_arrowTemplate` | protected | | | | ArrowMixin |
42
+ | `_defineOverlay` | protected | | `{ contentNode, invokerNode, referenceNode, backdropNode, contentWrapperNode }, config: DefineOverlayConfig` | `OverlayController` | OverlayMixin |
43
+ | `_defineOverlayConfig` | protected | Overrides arrow and keepTogether modifier to be enabled,&#xA;and adds onCreate and onUpdate hooks to sync from popper state | | `OverlayConfig` | OverlayMixin |
44
+ | `_getPopperArrowConfig` | protected | | `popperConfigToExtendFrom: Partial<PopperOptions>` | `Partial<PopperOptions>` | ArrowMixin |
45
+ | `_isPermanentlyDisconnected` | protected | When we're moving around in dom, disconnectedCallback gets called.&#xA;Before we decide to teardown, let's wait to see if we were not just moving nodes around. | | `Promise<boolean>` | OverlayMixin |
46
+ | `_setOpenedWithoutPropertyEffects` | protected | When the opened state is changed by an Application Developer,cthe OverlayController is&#xA;requested to show/hide. It might happen that this request is not honoured&#xA;(intercepted in before-hide for instance), so that we need to sync the controller state&#xA;to this webcomponent again, preventing eternal loops. | `newOpened: boolean` | | OverlayMixin |
47
+ | `_setupOpenCloseListeners` | protected | | | | OverlayMixin |
48
+ | `_setupOverlayCtrl` | protected | | | | OverlayMixin |
49
+ | `_teardownOpenCloseListeners` | protected | | | | OverlayMixin |
50
+ | `_teardownOverlayCtrl` | protected | | | | OverlayMixin |
51
+
52
+ ### Events
53
+
54
+ | Name | Type | Description | Inherited From |
55
+ | ---------------- | ------------- | ----------- | -------------- |
56
+ | `opened-changed` | `CustomEvent` | | OverlayMixin |
33
57
 
34
58
  ### Attributes
35
59
 
@@ -37,5 +61,6 @@ eleventyNavigation:
37
61
  | ------------------ | --------------- | -------------- |
38
62
  | `invoker-relation` | invokerRelation | |
39
63
  | `has-arrow` | hasArrow | ArrowMixin |
64
+ | `opened` | opened | OverlayMixin |
40
65
 
41
66
  <hr/>
@@ -9,11 +9,11 @@ Here you find more details about what we offer.
9
9
 
10
10
  Let's see what each section describes.
11
11
 
12
- 1. [Systems](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/systems/core/overview.md) <br>
12
+ 1. [Systems](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/systems/core/overview.md) <br>
13
13
  These are the fundamental systems that power all of our components.
14
- 2. [Tools](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/tools/helpers/overview.md) <br>
14
+ 2. [Tools](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/tools/helpers/overview.md) <br>
15
15
  Frontend Tools useful for web development but are not visual and therefore are not components.
16
- 3. [Node Tools](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/node-tools/babel-plugin-extend-docs/overview.md) <br>
16
+ 3. [Node Tools](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/node-tools/babel-plugin-extend-docs/overview.md) <br>
17
17
  Node tools to analyse the code and for extending the documentation.
18
- 4. [Rationales](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/rationales/side-effects.md) <br>
18
+ 4. [Rationales](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/rationales/side-effects.md) <br>
19
19
  The reasoning behind some of our decisions.
@@ -44,7 +44,7 @@ For a Mono Repository
44
44
  ```md
45
45
  # My Pkg
46
46
 
47
- [=> See Source <=](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/docs/deep/dir/overview.md)
47
+ [=> See Source <=](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/docs/deep/dir/overview.md)
48
48
  ```
49
49
 
50
50
  ## CLI flags
@@ -74,7 +74,7 @@ Bring the `overview.md` in a docs folder along.
74
74
  👉 `packages/[my-package]/docs/overview.md`
75
75
 
76
76
  ```md
77
- [=> See Source <=](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/docs/deep/dir/overview.md)
77
+ [=> See Source <=](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/docs/deep/dir/overview.md)
78
78
  ```
79
79
 
80
80
  Add a `use-cases.md`
@@ -82,7 +82,7 @@ Add a `use-cases.md`
82
82
  👉 `packages/[my-package]/docs/use-cases.md`
83
83
 
84
84
  ```md
85
- [=> See Source <=](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/docs/deep/dir/use-cases.md)
85
+ [=> See Source <=](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/docs/deep/dir/use-cases.md)
86
86
  ```
87
87
 
88
88
  So you will end up with something like this in your package.
@@ -20,7 +20,7 @@ To do this automatically you can use this preset for [rocket](https://rocket.mod
20
20
 
21
21
  ## Features
22
22
 
23
- - Import lion documentation and adjust it using [remark-extend](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/node-tools/remark-extend/overview.md)
23
+ - Import lion documentation and adjust it using [remark-extend](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/node-tools/remark-extend/overview.md)
24
24
  - Renames named imports and all it's usage
25
25
  - Adjusts import paths
26
26
  - Replace tags in template literals
@@ -51,7 +51,7 @@ export default {
51
51
 
52
52
  ## Reusing documentation
53
53
 
54
- To take an existing documentation you can "import" it using [remark-extend](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/node-tools/remark-extend/overview.md).
54
+ To take an existing documentation you can "import" it using [remark-extend](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/node-tools/remark-extend/overview.md).
55
55
 
56
56
  As an example you can create `docs/components/tabs/overview.md`.
57
57
 
@@ -37,4 +37,4 @@ Internally, we delegate all intricacies involved in managing light dom to SlotMi
37
37
  SlotMixin automatically mediates between light dom provided by the user ('public slots') and light dom provided by the component author ('private slots').
38
38
  Also, SlotMixin allows to hook into the reactive update loop of LitElement (automatically rerendering on property changes) and it automatically respects
39
39
  the scoped registry belonging to the shadow root.
40
- More details about SlotMixin can be found in the [SlotMixin documentation](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/systems/core/SlotMixin.md)
40
+ More details about SlotMixin can be found in the [SlotMixin documentation](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/systems/core/SlotMixin.md)
@@ -165,4 +165,4 @@ This will make sure that the slot provided by the user always takes precedence a
165
165
 
166
166
  ### Default slot
167
167
 
168
- As can be seen in the example of [SlotFunctionResults](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/systems/core/#slotfunctionresults), '' can be used to add content to the default slot
168
+ As can be seen in the example of [SlotFunctionResults](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/systems/core/#slotfunctionresults), '' can be used to add content to the default slot
@@ -28,7 +28,7 @@ import { LitElement, html, render } from 'lit-element';
28
28
 
29
29
  ## Features
30
30
 
31
- - [function to deduplicate mixins (dedupeMixin)](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/systems/core/#deduping-of-mixins)
31
+ - [function to deduplicate mixins (dedupeMixin)](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/systems/core/#deduping-of-mixins)
32
32
  - Mixin to handle disabled (DisabledMixin)
33
33
  - Mixin to handle disabled AND tabIndex (DisabledWithTabIndexMixin)
34
34
  - Mixin to manage auto-generated needed slot elements in light dom (SlotMixin)
@@ -36,7 +36,7 @@ Our fields can automatically format/parse/serialize user input or an input set i
36
36
 
37
37
  Below are some concrete examples of implementations of formatters and parsers mimicking a (basic) amount input.
38
38
 
39
- > For an actual amount input, check out [lion-input-amount](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/components/input-amount/overview.md).
39
+ > For an actual amount input, check out [lion-input-amount](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/components/input-amount/overview.md).
40
40
  > This comes with its own formatter, parser, serializer.
41
41
 
42
42
  ### Parsers & modelValue
@@ -243,16 +243,16 @@ Below we show three flow diagrams to show the flow of formatting, serializing an
243
243
 
244
244
  Where a user changes the input with their keyboard:
245
245
 
246
- ![Standard flow](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/systems/form/assets/FormatMixinDiagram-1.svg 'Standard flow')
246
+ ![Standard flow](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/systems/form/assets/FormatMixinDiagram-1.svg 'Standard flow')
247
247
 
248
248
  ### Unparseable flow
249
249
 
250
250
  Where a user sets the input to something that is not parseable by the parser:
251
251
 
252
- ![Unparseable flow](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/systems/form/assets/FormatMixinDiagram-2.svg 'Unparseable flow')
252
+ ![Unparseable flow](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/systems/form/assets/FormatMixinDiagram-2.svg 'Unparseable flow')
253
253
 
254
254
  ### Imperative / programmatic flow
255
255
 
256
256
  Where the developer sets the modelValue of the input programmatically:
257
257
 
258
- ![Imperative flow](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/systems/form/assets/FormatMixinDiagram-3.svg 'Imperative flow')
258
+ ![Imperative flow](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/systems/form/assets/FormatMixinDiagram-3.svg 'Imperative flow')
@@ -34,7 +34,7 @@ level, via:
34
34
  > Internal/private concepts like viewValue, formattedValue, serializedValue are therefore not
35
35
  > recommended as a means of interaction.
36
36
 
37
- For more information about parsing and the Unparseable type, see [Formatting and Parsing](https://github.com/ing-bank/lion/blob/a44e5d9c71451f40414390901a1baaa883d896e7/docs/fundamentals/systems/form/formatting-and-parsing.md)
37
+ For more information about parsing and the Unparseable type, see [Formatting and Parsing](https://github.com/ing-bank/lion/blob/027d3fd8518e6c6bc37b9414685ad7e12c67db7d/docs/fundamentals/systems/form/formatting-and-parsing.md)
38
38
 
39
39
  ### Event meta
40
40