@lion/ui 0.16.0 → 0.17.0-menu-system.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 (248) hide show
  1. package/collapsible.js +1 -0
  2. package/components/button/src/LionButton.js +5 -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/src/utils/makeMatchingTextBold.js +3 -1
  8. package/components/combobox/test/lion-combobox.test.js +105 -0
  9. package/components/form-core/src/form-group/FormGroupMixin.js +7 -0
  10. package/components/form-core/src/registration/FormRegistrarMixin.js +11 -0
  11. package/components/form-core/test/FormControlMixin.test.js +1 -0
  12. package/components/form-core/test/validate/Validator.test.js +2 -0
  13. package/components/form-core/test-suites/ValidateMixin.suite.js +2 -0
  14. package/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.js +1 -0
  15. package/components/input-datepicker/src/LionInputDatepicker.js +6 -2
  16. package/components/input-datepicker/src/localizeNamespaceLoader.js +1 -0
  17. package/components/input-datepicker/test/lion-input-datepicker.test.js +17 -2
  18. package/components/input-datepicker/translations/bg.js +1 -1
  19. package/components/input-datepicker/translations/cs.js +1 -1
  20. package/components/input-datepicker/translations/de.js +1 -1
  21. package/components/input-datepicker/translations/en.js +1 -1
  22. package/components/input-datepicker/translations/es.js +1 -1
  23. package/components/input-datepicker/translations/fr.js +1 -1
  24. package/components/input-datepicker/translations/hu.js +1 -1
  25. package/components/input-datepicker/translations/it.js +1 -1
  26. package/components/input-datepicker/translations/nl.js +1 -1
  27. package/components/input-datepicker/translations/pl.js +1 -1
  28. package/components/input-datepicker/translations/ro.js +1 -1
  29. package/components/input-datepicker/translations/ru.js +1 -1
  30. package/components/input-datepicker/translations/sk.js +1 -1
  31. package/components/input-datepicker/translations/tr.js +1 -1
  32. package/components/input-datepicker/translations/uk.js +1 -1
  33. package/components/input-datepicker/translations/zh.js +1 -1
  34. package/components/input-stepper/src/LionInputStepper.js +15 -7
  35. package/components/input-stepper/test-suites/lion-input-stepper.suite.js +28 -4
  36. package/components/localize/test/date/formatDate.test.js +1 -0
  37. package/components/menu/CHANGELOG.md +37 -0
  38. package/components/menu/README.md +335 -0
  39. package/components/menu/index.js +2 -0
  40. package/components/menu/lion-menu-overlay.js +3 -0
  41. package/components/menu/lion-menu.js +3 -0
  42. package/components/menu/lion-spinbutton.js +3 -0
  43. package/components/menu/lion-toolbar.js +3 -0
  44. package/components/menu/lion-tree.js +3 -0
  45. package/components/menu/package.json +46 -0
  46. package/components/menu/requirements.temp.md +12 -0
  47. package/components/menu/src/InteractiveListMixin.js +796 -0
  48. package/components/menu/src/LionMenu.js +250 -0
  49. package/components/menu/src/LionMenuHybrid.js +46 -0
  50. package/components/menu/src/LionMenuOverlay.js +155 -0
  51. package/components/menu/src/LionSpinbutton.js +213 -0
  52. package/components/menu/src/LionToolbar.js +94 -0
  53. package/components/menu/src/LionTree.js +52 -0
  54. package/components/menu/src/MultiLevelListMixin.js +275 -0
  55. package/components/menu/src/utils/isInView.js +26 -0
  56. package/components/menu/src/utils/listItemInteractions.js +104 -0
  57. package/components/menu/src/utils/uuid.js +3 -0
  58. package/components/menu/test/lion-menu.test.js +3 -0
  59. package/components/menu/test-suites/InteractiveListMixin.suite.js +142 -0
  60. package/components/menu/types/InteractiveListMixinTypes.d.ts +82 -0
  61. package/components/navigation-bar/README.md +1 -0
  62. package/components/navigation-bar/src/LionNavigationBar.js +449 -0
  63. package/components/navigation-bar/src/types.js +41 -0
  64. package/components/overlays/NEXT.md +49 -0
  65. package/components/overlays/src/OverlayController.js +165 -115
  66. package/components/overlays/src/OverlayMixin.js +75 -12
  67. package/components/overlays/src/OverlaysManager.js +102 -4
  68. package/components/overlays/src/overlayShadowDomStyle.js +2 -2
  69. package/components/overlays/src/utils/adopt-styles.js +2 -1
  70. package/components/overlays/src/utils/get-focusable-elements.js +4 -0
  71. package/components/overlays/src/utils/is-equal-config.js +4 -1
  72. package/components/overlays/test/OverlayController.test.js +117 -6
  73. package/components/overlays/test/OverlaysManager.test.js +1 -1
  74. package/components/overlays/types/OverlayConfig.ts +19 -4
  75. package/components/select-rich/test/lion-select-rich.test.js +3 -0
  76. package/custom-elements.json +12958 -2510
  77. package/dist-types/components/button/src/LionButton.d.ts +1 -0
  78. package/dist-types/components/button/src/LionButton.d.ts.map +1 -1
  79. package/dist-types/components/button/test-suites/LionButton.suite.d.ts.map +1 -1
  80. package/dist-types/components/calendar/src/LionCalendar.d.ts.map +1 -1
  81. package/dist-types/components/collapsible/src/DisclosureMixin.d.ts +3 -0
  82. package/dist-types/components/collapsible/src/DisclosureMixin.d.ts.map +1 -0
  83. package/dist-types/components/collapsible/types/DisclosureMixinTypes.d.ts +24 -0
  84. package/dist-types/components/collapsible/types/DisclosureMixinTypes.d.ts.map +1 -0
  85. package/dist-types/components/combobox/src/utils/makeMatchingTextBold.d.ts.map +1 -1
  86. package/dist-types/components/dialog/src/LionDialog.d.ts +2 -1
  87. package/dist-types/components/dialog/src/LionDialog.d.ts.map +1 -1
  88. package/dist-types/components/form-core/src/form-group/FormGroupMixin.d.ts.map +1 -1
  89. package/dist-types/components/form-core/src/registration/FormRegistrarMixin.d.ts.map +1 -1
  90. package/dist-types/components/form-core/test-suites/ValidateMixin.suite.d.ts.map +1 -1
  91. package/dist-types/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.d.ts.map +1 -1
  92. package/dist-types/components/input-datepicker/src/LionInputDatepicker.d.ts.map +1 -1
  93. package/dist-types/components/input-datepicker/src/localizeNamespaceLoader.d.ts.map +1 -1
  94. package/dist-types/components/input-stepper/src/LionInputStepper.d.ts +4 -2
  95. package/dist-types/components/input-stepper/src/LionInputStepper.d.ts.map +1 -1
  96. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.suite.d.ts.map +1 -1
  97. package/dist-types/components/menu/index.d.ts +3 -0
  98. package/dist-types/components/menu/index.d.ts.map +1 -0
  99. package/dist-types/components/menu/lion-menu-overlay.d.ts +2 -0
  100. package/dist-types/components/menu/lion-menu-overlay.d.ts.map +1 -0
  101. package/dist-types/components/menu/lion-menu.d.ts +2 -0
  102. package/dist-types/components/menu/lion-menu.d.ts.map +1 -0
  103. package/dist-types/components/menu/lion-spinbutton.d.ts +2 -0
  104. package/dist-types/components/menu/lion-spinbutton.d.ts.map +1 -0
  105. package/dist-types/components/menu/lion-toolbar.d.ts +2 -0
  106. package/dist-types/components/menu/lion-toolbar.d.ts.map +1 -0
  107. package/dist-types/components/menu/lion-tree.d.ts +2 -0
  108. package/dist-types/components/menu/lion-tree.d.ts.map +1 -0
  109. package/dist-types/components/menu/src/InteractiveListMixin.d.ts +611 -0
  110. package/dist-types/components/menu/src/InteractiveListMixin.d.ts.map +1 -0
  111. package/dist-types/components/menu/src/LionMenu.d.ts +563 -0
  112. package/dist-types/components/menu/src/LionMenu.d.ts.map +1 -0
  113. package/dist-types/components/menu/src/LionMenuHybrid.d.ts +19 -0
  114. package/dist-types/components/menu/src/LionMenuHybrid.d.ts.map +1 -0
  115. package/dist-types/components/menu/src/LionMenuOverlay.d.ts +1006 -0
  116. package/dist-types/components/menu/src/LionMenuOverlay.d.ts.map +1 -0
  117. package/dist-types/components/menu/src/LionSpinbutton.d.ts +58 -0
  118. package/dist-types/components/menu/src/LionSpinbutton.d.ts.map +1 -0
  119. package/dist-types/components/menu/src/LionToolbar.d.ts +8 -0
  120. package/dist-types/components/menu/src/LionToolbar.d.ts.map +1 -0
  121. package/dist-types/components/menu/src/LionTree.d.ts +445 -0
  122. package/dist-types/components/menu/src/LionTree.d.ts.map +1 -0
  123. package/dist-types/components/menu/src/MultiLevelListMixin.d.ts +493 -0
  124. package/dist-types/components/menu/src/MultiLevelListMixin.d.ts.map +1 -0
  125. package/dist-types/components/menu/src/utils/isInView.d.ts +9 -0
  126. package/dist-types/components/menu/src/utils/isInView.d.ts.map +1 -0
  127. package/dist-types/components/menu/src/utils/listItemInteractions.d.ts +42 -0
  128. package/dist-types/components/menu/src/utils/listItemInteractions.d.ts.map +1 -0
  129. package/dist-types/components/menu/src/utils/uuid.d.ts +2 -0
  130. package/dist-types/components/menu/src/utils/uuid.d.ts.map +1 -0
  131. package/dist-types/components/menu/test/lion-menu.test.d.ts +2 -0
  132. package/dist-types/components/menu/test/lion-menu.test.d.ts.map +1 -0
  133. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts +13 -0
  134. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts.map +1 -0
  135. package/dist-types/components/navigation-bar/src/LionNavigationBar.d.ts +226 -0
  136. package/dist-types/components/navigation-bar/src/LionNavigationBar.d.ts.map +1 -0
  137. package/dist-types/components/navigation-bar/src/types.d.ts +85 -0
  138. package/dist-types/components/navigation-bar/src/types.d.ts.map +1 -0
  139. package/dist-types/components/overlays/src/OverlayController.d.ts +7 -13
  140. package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
  141. package/dist-types/components/overlays/src/OverlayMixin.d.ts +3 -0
  142. package/dist-types/components/overlays/src/OverlayMixin.d.ts.map +1 -1
  143. package/dist-types/components/overlays/src/OverlaysManager.d.ts +33 -2
  144. package/dist-types/components/overlays/src/OverlaysManager.d.ts.map +1 -1
  145. package/dist-types/components/overlays/src/utils/get-focusable-elements.d.ts.map +1 -1
  146. package/dist-types/components/overlays/src/utils/is-equal-config.d.ts.map +1 -1
  147. package/dist-types/components/overlays/types/OverlayConfig.d.ts +6 -2
  148. package/dist-types/components/overlays/types/OverlayConfig.d.ts.map +1 -1
  149. package/dist-types/components/select-rich/src/LionSelectRich.d.ts +11 -2
  150. package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
  151. package/dist-types/exports/define/lion-item.d.ts +2 -0
  152. package/dist-types/exports/define/lion-item.d.ts.map +1 -0
  153. package/dist-types/exports/define/lion-menu-overlay.d.ts +2 -0
  154. package/dist-types/exports/define/lion-menu-overlay.d.ts.map +1 -0
  155. package/dist-types/exports/define/lion-menu.d.ts +2 -0
  156. package/dist-types/exports/define/lion-menu.d.ts.map +1 -0
  157. package/dist-types/exports/define/lion-navigation-bar.d.ts +2 -0
  158. package/dist-types/exports/define/lion-navigation-bar.d.ts.map +1 -0
  159. package/dist-types/exports/define/lion-toolbar.d.ts +2 -0
  160. package/dist-types/exports/define/lion-toolbar.d.ts.map +1 -0
  161. package/dist-types/exports/define/lion-tree.d.ts +2 -0
  162. package/dist-types/exports/define/lion-tree.d.ts.map +1 -0
  163. package/dist-types/exports/menu.d.ts +7 -0
  164. package/dist-types/exports/menu.d.ts.map +1 -0
  165. package/dist-types/exports/navigation-bar.d.ts +2 -0
  166. package/dist-types/exports/navigation-bar.d.ts.map +1 -0
  167. package/dist-types/exports/overlays.d.ts +2 -0
  168. package/dist-types/exports/types/overlays.d.ts +1 -0
  169. package/dist-types/exports/types/overlays.d.ts.map +1 -1
  170. package/dist-types/tsconfig.tsbuildinfo +1 -1
  171. package/docs/components/checkbox-group/overview.md +2 -2
  172. package/docs/components/collapsible/overview.md +1 -1
  173. package/docs/components/combobox/overview.md +1 -1
  174. package/docs/components/combobox/use-cases.md +1 -1
  175. package/docs/components/dialog/overview.md +1 -1
  176. package/docs/components/fieldset/overview.md +5 -5
  177. package/docs/components/form/overview.md +3 -3
  178. package/docs/components/form/use-cases.md +2 -2
  179. package/docs/components/icon/use-cases.md +1 -1
  180. package/docs/components/index.md +1 -1
  181. package/docs/components/input/overview.md +1 -1
  182. package/docs/components/input-amount/overview.md +3 -3
  183. package/docs/components/input-date/overview.md +3 -3
  184. package/docs/components/input-datepicker/overview.md +5 -5
  185. package/docs/components/input-datepicker/use-cases.md +16 -1
  186. package/docs/components/input-email/overview.md +2 -2
  187. package/docs/components/input-file/overview.md +1 -1
  188. package/docs/components/input-iban/overview.md +2 -2
  189. package/docs/components/input-range/api-table.md +1 -1
  190. package/docs/components/input-range/overview.md +2 -2
  191. package/docs/components/input-stepper/api-table.md +2 -2
  192. package/docs/components/input-stepper/overview.md +1 -1
  193. package/docs/components/input-stepper/use-cases.md +26 -0
  194. package/docs/components/input-tel/overview.md +1 -1
  195. package/docs/components/input-tel/use-cases.md +6 -6
  196. package/docs/components/input-tel-dropdown/overview.md +1 -1
  197. package/docs/components/listbox/use-cases.md +1 -1
  198. package/docs/components/menu/api-table.md +450 -0
  199. package/docs/components/menu/applyMenuDemoStyles.js +173 -0
  200. package/docs/components/menu/extensions.md +216 -0
  201. package/docs/components/menu/index.md +13 -0
  202. package/docs/components/menu/overview.md +422 -0
  203. package/docs/components/radio-group/overview.md +3 -3
  204. package/docs/components/select/use-cases.md +1 -1
  205. package/docs/components/select-rich/api-table.md +1 -1
  206. package/docs/components/select-rich/use-cases.md +2 -2
  207. package/docs/components/tabs/examples.md +1 -1
  208. package/docs/fundamentals/index.md +4 -4
  209. package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
  210. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
  211. package/docs/fundamentals/rationales/accessibility.md +1 -1
  212. package/docs/fundamentals/systems/core/SlotMixin.md +18 -18
  213. package/docs/fundamentals/systems/core/overview.md +1 -1
  214. package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
  215. package/docs/fundamentals/systems/form/interaction-states.md +0 -1
  216. package/docs/fundamentals/systems/form/model-value.md +1 -1
  217. package/docs/fundamentals/systems/form/overview.md +28 -28
  218. package/docs/fundamentals/systems/form/validate.md +2 -2
  219. package/docs/fundamentals/systems/localize/overview.md +4 -4
  220. package/docs/fundamentals/systems/localize/text.md +1 -1
  221. package/docs/fundamentals/systems/overlays/api-table.md +98 -50
  222. package/docs/fundamentals/systems/overlays/configuration.md +2 -2
  223. package/docs/fundamentals/systems/overlays/overview.md +5 -5
  224. package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
  225. package/docs/fundamentals/tools/helpers/overview.md +1 -1
  226. package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
  227. package/docs/guides/how-to/create-a-custom-field.md +5 -5
  228. package/docs/guides/how-to/create-a-form.md +4 -4
  229. package/docs/guides/how-to/extend-a-native-input.md +2 -2
  230. package/docs/guides/how-to/index.md +14 -0
  231. package/docs/guides/index.md +8 -8
  232. package/docs/guides/principles/index.md +5 -5
  233. package/docs/guides/principles/styling.md +1 -2
  234. package/exports/collapsible.js +1 -0
  235. package/exports/define/lion-item.js +3 -0
  236. package/exports/define/lion-menu-overlay.js +3 -0
  237. package/exports/define/lion-menu.js +3 -0
  238. package/exports/define/lion-navigation-bar.js +3 -0
  239. package/exports/define/lion-toolbar.js +3 -0
  240. package/exports/define/lion-tree.js +3 -0
  241. package/exports/menu.js +6 -0
  242. package/exports/navigation-bar.js +1 -0
  243. package/exports/overlays.js +2 -0
  244. package/exports/types/overlays.ts +1 -0
  245. package/menu.js +6 -0
  246. package/navigation-bar.js +1 -0
  247. package/overlays.js +2 -0
  248. package/package.json +1 -1
@@ -17,40 +17,40 @@ eleventyNavigation:
17
17
 
18
18
  ### Fields
19
19
 
20
- | Name | Privacy | Type | Default | Description | Inherited From |
21
- | --------------------------- | --------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
22
- | `backdropNode` | public | `HTMLElement` | | The element that is placed behind the contentNode. When not provided and \`hasBackdrop\` is true,
a backdropNode will be automatically created | |
23
- | `config` | public | `OverlayConfig` | `{}` | | |
24
- | `content` | public | `HTMLDialogElement \| HTMLDivElement` | | The contentWrapperNode | |
25
- | `contentNode` | public | `HTMLElement` | | The most important element: the overlay itself | |
26
- | `contentWrapperNode` | public | `HTMLElement` | | The wrapper element of contentNode, used to supply inline positioning styles. When a Popper
arrow is needed, it acts as parent of the arrow node. Will be automatically created for global
and non projected contentNodes. Required when used in shadow dom mode or when Popper arrow is
supplied. Essential for allowing webcomponents to style their projected contentNodes | |
27
- | `elementToFocusAfterHide` | public | `HTMLElement` | | The element that should be called \`.focus()\` on after dialog closes | |
28
- | `elevation` | public | `number` | | | |
29
- | `handlesAccessibility` | public | `boolean` | | For non \`isTooltip\`:
 \- sets aria-expanded="true/false" and aria-haspopup="true" on invokerNode
 \- sets aria-controls on invokerNode
 \- returns focus to invokerNode on hide
 \- sets focus to overlay content(?)

For \`isTooltip\`:
 \- sets role="tooltip" and aria-labelledby/aria-describedby on the content | |
30
- | `hasActiveBackdrop` | public | | | | |
31
- | `hasBackdrop` | public | `boolean` | | Whether it should have a backdrop (currently exclusive to globalOverlayController) | |
32
- | `hidesOnEsc` | public | `boolean` | | Hides the overlay when pressing \[ esc ] | |
33
- | `hidesOnOutsideClick` | public | `boolean` | | Hides the overlay when clicking next to it, exluding invoker | |
34
- | `hidesOnOutsideEsc` | public | `boolean` | | Hides the overlay when pressing esc, even when contentNode has no focus | |
35
- | `inheritsReferenceWidth` | public | `'max' \| 'full' \| 'min' \| 'none' \| undefined` | | Will align contentNode with referenceNode (invokerNode by default) for local overlays.
Usually needed for dropdowns. 'max' will prevent contentNode from exceeding width of
referenceNode, 'min' guarantees that contentNode will be at least as wide as referenceNode.
'full' will make sure that the invoker width always is the same. | |
36
- | `invoker` | public | `HTMLElement \| undefined` | | The invokerNode | |
37
- | `invokerNode` | public | `HTMLElement \| undefined` | | The interactive element (usually a button) invoking the dialog or tooltip | |
38
- | `invokerRelation` | public | `'label' \| 'description'\| undefined` | | By default, the tooltip content is a 'description' for the invoker (uses aria-describedby).
Setting this property to 'label' makes the content function as a label (via aria-labelledby) | |
39
- | `isAlertDialog` | public | | | The alertdialog role is to be used on modal alert dialogs that interrupt a user's workflow
to communicate an important message and require a response. | |
40
- | `isBlocking` | public | `boolean` | | Hides other overlays when mutiple are opened (currently exclusive to globalOverlayController) | |
41
- | `isShown` | public | | | | |
42
- | `isTooltip` | public | `boolean` | | Has a totally different interaction- and accessibility pattern from all other overlays.
Will behave as role="tooltip" element instead of a role="dialog" element | |
43
- | `manager` | public | | `manager` | | |
44
- | `placementMode` | public | `'global' \| 'local' \| undefined` | | Determines the connection point in DOM (body vs next to invoker). | |
45
- | `popperConfig` | public | `PopperOptions` | | Popper configuration. Will be used when placementMode is 'local' | |
46
- | `preventsScroll` | public | `boolean` | | Hides other overlays when mutiple are opened (currently exclusive to globalOverlayController) | |
47
- | `referenceNode` | public | `HTMLElement` | | The element that is used to position the overlay content relative to. Usually,
this is the same element as invokerNode. Should only be provided when invokerNode should not
be positioned against. | |
48
- | `trapsKeyboardFocus` | public | `boolean` | | Rotates tab, implicitly set when 'isModal' | |
49
- | `viewportConfig` | public | `ViewportConfig` | | Viewport configuration. Will be used when placementMode is 'global' | |
50
- | `visibilityTriggerFunction` | public | | | | |
51
- | `_contentId` | protected | | `` `overlay-content--${Math.random().toString(36).slice(2, 10)}` `` | | |
52
- | `_defaultConfig` | protected | `OverlayConfig` | `{ placementMode: undefined, contentNode: config.contentNode, contentWrapperNode: config.contentWrapperNode, invokerNode: config.invokerNode, backdropNode: config.backdropNode, referenceNode: undefined, elementToFocusAfterHide: config.invokerNode, inheritsReferenceWidth: 'none', hasBackdrop: false, isBlocking: false, preventsScroll: false, trapsKeyboardFocus: false, hidesOnEsc: false, hidesOnOutsideEsc: false, hidesOnOutsideClick: false, isTooltip: false, isAlertDialog: false, invokerRelation: 'description', visibilityTriggerFunction: undefined, handlesAccessibility: false, popperConfig: { placement: 'top', strategy: 'fixed', modifiers: [ { name: 'preventOverflow', enabled: true, options: { boundariesElement: 'viewport', padding: 8, // viewport-margin for shifting/sliding }, }, { name: 'flip', options: { boundariesElement: 'viewport', padding: 16, // viewport-margin for flipping }, }, { name: 'offset', enabled: true, options: { offset: [0, 8], // horizontal and vertical margin (distance between popper and referenceElement) }, }, { name: 'arrow', enabled: false, }, ], }, viewportConfig: { placement: 'center', }, zIndex: 9999, }` | | |
53
- | `_referenceNode` | protected | `HTMLElement \| undefined` | | | |
20
+ | Name | Privacy | Type | Default | Description | Inherited From |
21
+ | --------------------------- | --------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
22
+ | `backdropNode` | public | `HTMLElement` | | The element that is placed behind the contentNode. When not provided and \`hasBackdrop\` is true,
a backdropNode will be automatically created | |
23
+ | `config` | public | `OverlayConfig` | `{}` | | |
24
+ | `content` | public | `HTMLDialogElement \| HTMLDivElement` | | The contentWrapperNode | |
25
+ | `contentNode` | public | `HTMLElement` | | The most important element: the overlay itself | |
26
+ | `contentWrapperNode` | public | `HTMLElement` | | The wrapper element of contentNode, used to supply inline positioning styles. When a Popper
arrow is needed, it acts as parent of the arrow node. Will be automatically created for global
and non projected contentNodes. Required when used in shadow dom mode or when Popper arrow is
supplied. Essential for allowing webcomponents to style their projected contentNodes | |
27
+ | `elementToFocusAfterHide` | public | `HTMLElement` | | The element that should be called \`.focus()\` on after dialog closes | |
28
+ | `elevation` | public | `number` | | | |
29
+ | `handlesAccessibility` | public | `boolean` | | For non \`isTooltip\`:
 \- sets aria-expanded="true/false" and aria-haspopup="true" on invokerNode
 \- sets aria-controls on invokerNode
 \- returns focus to invokerNode on hide
 \- sets focus to overlay content(?)

For \`isTooltip\`:
 \- sets role="tooltip" and aria-labelledby/aria-describedby on the content | |
30
+ | `hasActiveBackdrop` | public | | | | |
31
+ | `hasBackdrop` | public | `boolean` | | Whether it should have a backdrop (currently exclusive to globalOverlayController) | |
32
+ | `hidesOnEsc` | public | `boolean` | | Hides the overlay when pressing \[ esc ] | |
33
+ | `hidesOnOutsideClick` | public | `boolean` | | Hides the overlay when clicking next to it, exluding invoker | |
34
+ | `hidesOnOutsideEsc` | public | `boolean` | | Hides the overlay when pressing esc, even when contentNode has no focus | |
35
+ | `inheritsReferenceWidth` | public | `'max' \| 'full' \| 'min' \| 'none' \| undefined` | | Will align contentNode with referenceNode (invokerNode by default) for local overlays.
Usually needed for dropdowns. 'max' will prevent contentNode from exceeding width of
referenceNode, 'min' guarantees that contentNode will be at least as wide as referenceNode.
'full' will make sure that the invoker width always is the same. | |
36
+ | `invoker` | public | `HTMLElement \| undefined` | | The invokerNode | |
37
+ | `invokerNode` | public | `HTMLElement \| undefined` | | The interactive element (usually a button) invoking the dialog or tooltip | |
38
+ | `invokerRelation` | public | `'label' \| 'description'\| undefined` | | By default, the tooltip content is a 'description' for the invoker (uses aria-describedby).
Setting this property to 'label' makes the content function as a label (via aria-labelledby) | |
39
+ | `isAlertDialog` | public | | | The alertdialog role is to be used on modal alert dialogs that interrupt a user's workflow
to communicate an important message and require a response. | |
40
+ | `isBlocking` | public | `boolean` | | Hides other overlays when mutiple are opened (currently exclusive to globalOverlayController) | |
41
+ | `isShown` | public | | | | |
42
+ | `isTooltip` | public | `boolean` | | Has a totally different interaction- and accessibility pattern from all other overlays.
Will behave as role="tooltip" element instead of a role="dialog" element | |
43
+ | `manager` | public | | `manager` | | |
44
+ | `placementMode` | public | `'global' \| 'local' \| 'custom' \| undefined` | | Determines the connection point in DOM (body vs next to invoker). | |
45
+ | `popperConfig` | public | `PopperOptions` | | Popper configuration. Will be used when placementMode is 'local' | |
46
+ | `preventsScroll` | public | `boolean` | | Hides other overlays when mutiple are opened (currently exclusive to globalOverlayController) | |
47
+ | `referenceNode` | public | `HTMLElement` | | The element that is used to position the overlay content relative to. Usually,
this is the same element as invokerNode. Should only be provided when invokerNode should not
be positioned against. | |
48
+ | `trapsKeyboardFocus` | public | `boolean` | | Rotates tab, implicitly set when 'isModal' | |
49
+ | `viewportConfig` | public | `ViewportConfig` | | Viewport configuration. Will be used when placementMode is 'global' | |
50
+ | `visibilityTriggerFunction` | public | | | | |
51
+ | `_contentId` | protected | | `` `overlay-content--${Math.random().toString(36).slice(2, 10)}` `` | | |
52
+ | `_defaultConfig` | protected | `OverlayConfig` | `{ placementMode: undefined, contentNode: config.contentNode, contentWrapperNode: config.contentWrapperNode, invokerNode: config.invokerNode, backdropNode: config.backdropNode, referenceNode: undefined, elementToFocusAfterHide: config.invokerNode, inheritsReferenceWidth: 'none', hasBackdrop: false, isBlocking: false, preventsScroll: false, trapsKeyboardFocus: false, hidesOnEsc: false, hidesOnOutsideEsc: false, hidesOnOutsideClick: false, isTooltip: false, isAlertDialog: false, invokerRelation: 'description', visibilityTriggerFunction: undefined, handlesAccessibility: false, popperConfig: { placement: 'top', strategy: 'fixed', modifiers: [ { name: 'preventOverflow', enabled: true, options: { boundariesElement: 'viewport', padding: 8, // viewport-margin for shifting/sliding }, }, { name: 'flip', options: { boundariesElement: 'viewport', padding: 16, // viewport-margin for flipping }, }, { name: 'offset', enabled: true, options: { offset: [0, 8], // horizontal and vertical margin (distance between popper and referenceElement) }, }, { name: 'arrow', enabled: false, }, ], }, viewportConfig: { placement: 'center', }, zIndex: 9999, isOpenable: true, focusContentOnOpen: false, // This means that content will have visually-hidden / sr-only styles. This is handy for: // - hidden menus that should be "indexable" by screen readers (like the Links list in VO: https://support.apple.com/en-gb/guide/voiceover/mchlp2719/mac) // - "more" menus that put content in a dropdown that do not fit in the current row // - menus that should generally open on tab. // @ts-ignore - hideVisually is an extension property hideVisually: false, }` | | |
53
+ | `_referenceNode` | protected | `HTMLElement \| undefined` | | | |
54
54
 
55
55
  ### Methods
56
56
 
@@ -96,28 +96,76 @@ eleventyNavigation:
96
96
  <hr/>
97
97
 
98
98
 
99
+ ## class: `OverlayMixin`
100
+
101
+ ### Fields
102
+
103
+ | Name | Privacy | Type | Default | Description | Inherited From |
104
+ | ---------------------------- | --------- | ------------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
105
+ | `config` | public | `Partial<OverlayConfig>` | `{}` | Configure the many options of the \`OverlayController\` | |
106
+ | `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. | |
107
+ | `_overlayBackdropNode` | protected | | | | |
108
+ | `_overlayContentNode` | protected | | | | |
109
+ | `_overlayContentWrapperNode` | protected | | | | |
110
+ | `_overlayInvokerNode` | protected | | | | |
111
+ | `_overlayReferenceNode` | protected | | | | |
112
+
113
+ ### Methods
114
+
115
+ | Name | Privacy | Description | Parameters | Return | Inherited From |
116
+ | ---------------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------- | -------------- |
117
+ | `close` | public | Hides the overlay | | | |
118
+ | `open` | public | Shows the overlay | | | |
119
+ | `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) | | | |
120
+ | `toggle` | public | Toggles the overlay | | | |
121
+ | `_defineOverlay` | protected | | `{ contentNode, invokerNode, referenceNode, backdropNode, contentWrapperNode }, config: DefineOverlayConfig` | `OverlayController` | |
122
+ | `_defineOverlayConfig` | protected | | | `OverlayConfig` | |
123
+ | `_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>` | |
124
+ | `_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` | | |
125
+ | `_setupOpenCloseListeners` | protected | | | | |
126
+ | `_setupOverlayCtrl` | protected | | | | |
127
+ | `_teardownOpenCloseListeners` | protected | | | | |
128
+ | `_teardownOverlayCtrl` | protected | | | | |
129
+
130
+ ### Events
131
+
132
+ | Name | Type | Description | Inherited From |
133
+ | ---------------- | ------------- | ----------- | -------------- |
134
+ | `opened-changed` | `CustomEvent` | | |
135
+
136
+ ### Attributes
137
+
138
+ | Name | Field | Inherited From |
139
+ | -------- | ------ | -------------- |
140
+ | `opened` | opened | |
141
+
142
+ <hr/>
143
+
144
+
99
145
  ## class: `OverlaysManager`
100
146
 
101
147
  ### Fields
102
148
 
103
- | Name | Privacy | Type | Default | Description | Inherited From |
104
- | --------------- | ------- | ---- | ------- | ---------------------------------------------------------------------------------------------------------------------- | -------------- |
105
- | `list` | public | | | no setter as .list is intended to be read-only&#xA;You can use .add or .remove to modify it | |
106
- | `shownList` | public | | | no setter as .shownList is intended to be read-only&#xA;You can use .show or .hide on individual controllers to modify | |
107
- | `siblingsInert` | public | | | Features right now only for Global Overlay Manager | |
149
+ | Name | Privacy | Type | Default | Description | Inherited From |
150
+ | ---------------- | --------- | --------- | ------- | ---------------------------------------------------------------------------------------------------------------------- | -------------- |
151
+ | `list` | public | | | no setter as .list is intended to be read-only&#xA;You can use .add or .remove to modify it | |
152
+ | `shownList` | public | | | no setter as .shownList is intended to be read-only&#xA;You can use .show or .hide on individual controllers to modify | |
153
+ | `siblingsInert` | public | | | Features right now only for Global Overlay Manager | |
154
+ | `_siblingsInert` | protected | `boolean` | `false` | | |
108
155
 
109
156
  ### Methods
110
157
 
111
- | Name | Privacy | Description | Parameters | Return | Inherited From |
112
- | -------------------------- | ------- | -------------------------------- | -------------------------------------- | ------------------- | -------------- |
113
- | `add` | public | Registers an overlay controller. | `ctrlToAdd: OverlayController` | `OverlayController` | |
114
- | `hide` | public | | `ctrlToHide: any` | | |
115
- | `remove` | public | | `ctrlToRemove: OverlayController` | | |
116
- | `requestToEnableScroll` | public | | `currentController: OverlayController` | | |
117
- | `requestToPreventScroll` | public | PreventsScroll | | | |
118
- | `requestToShowOnly` | public | Blocking | `blockingCtrl: OverlayController` | | |
119
- | `retractRequestToShowOnly` | public | | `blockingCtrl: OverlayController` | | |
120
- | `show` | public | | `ctrlToShow: OverlayController` | | |
121
- | `teardown` | public | | | | |
158
+ | Name | Privacy | Description | Parameters | Return | Inherited From |
159
+ | -------------------------- | ------- | -------------------------------- | -------------------------------------------- | ------------------- | -------------- |
160
+ | `add` | public | Registers an overlay controller. | `ctrlToAdd: OverlayController` | `OverlayController` | |
161
+ | `hide` | public | | `ctrlToHide: any` | | |
162
+ | `remove` | public | | `ctrlToRemove: OverlayController` | | |
163
+ | `requestToEnableScroll` | public | | `currentController: OverlayController` | | |
164
+ | `requestToKeepBodySize` | public | PreventsScroll | `{ phase }, config: { phase: OverlayPhase }` | | |
165
+ | `requestToPreventScroll` | public | | | | |
166
+ | `requestToShowOnly` | public | Blocking | `blockingCtrl: OverlayController` | | |
167
+ | `retractRequestToShowOnly` | public | | `blockingCtrl: OverlayController` | | |
168
+ | `show` | public | | `ctrlToShow: OverlayController` | | |
169
+ | `teardown` | public | | | | |
122
170
 
123
171
  <hr/>
@@ -112,7 +112,7 @@ export const alertDialog = () => {
112
112
 
113
113
  ## isTooltip (placementMode: 'local')
114
114
 
115
- As specified in the [overlay rationale](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/fundamentals/systems/overlays/rationale.md) there are only two official types of overlays: dialogs and tooltips. And their main differences are:
115
+ As specified in the [overlay rationale](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/fundamentals/systems/overlays/rationale.md) there are only two official types of overlays: dialogs and tooltips. And their main differences are:
116
116
 
117
117
  - Dialogs have a modal option, tooltips don’t
118
118
  - Dialogs have interactive content, tooltips don’t
@@ -446,7 +446,7 @@ Features:
446
446
 
447
447
  > Popper strictly is scoped on positioning. **It does not change the dimensions of the content node nor the invoker node**.
448
448
  > 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.
449
- > An example implementation can be found in [lion-tooltip](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/components/tooltip/overview.md), where an arrow is set by default.
449
+ > An example implementation can be found in [lion-tooltip](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/components/tooltip/overview.md), where an arrow is set by default.
450
450
 
451
451
  To override the default options we set for local mode, you add a `popperConfig` object to the config passed to the OverlayController.
452
452
  Here's a succinct overview of some often used popper properties:
@@ -19,7 +19,7 @@ Manages their position on the screen relative to other elements, including other
19
19
 
20
20
  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.
21
21
 
22
- See [lion-dialog](../../../components/dialog/overview.md) and [lion-tooltip](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/components/tooltip/overview.md) for example Web Component implementations using the Overlay System.
22
+ See [lion-dialog](../../../components/dialog/overview.md) and [lion-tooltip](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/components/tooltip/overview.md) for example Web Component implementations using the Overlay System.
23
23
 
24
24
  ## Features
25
25
 
@@ -31,9 +31,9 @@ See [lion-dialog](../../../components/dialog/overview.md) and [lion-tooltip](htt
31
31
  - lion-overlay web component:
32
32
  - Show content when clicking the invoker
33
33
  - Have a `.config` object to set or update the OverlayController's configuration
34
- - [**OverlaysManager**](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/fundamentals/systems/overlays/use-cases.md#overlaysmanager), a global repository keeping track of all different types of overlays
35
- - [**OverlayController**](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/fundamentals/systems/overlays/use-cases.md#overlaycontroller), a single controller class for handling overlays
36
- - [**OverlayMixin**](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/fundamentals/systems/overlays/use-cases.md#overlaymixin), a mixin that can be used to create webcomponents that use the OverlayController under the hood
34
+ - [**OverlaysManager**](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/fundamentals/systems/overlays/use-cases.md#overlaysmanager), a global repository keeping track of all different types of overlays
35
+ - [**OverlayController**](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/fundamentals/systems/overlays/use-cases.md#overlaycontroller), a single controller class for handling overlays
36
+ - [**OverlayMixin**](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/fundamentals/systems/overlays/use-cases.md#overlaymixin), a mixin that can be used to create webcomponents that use the OverlayController under the hood
37
37
 
38
38
  Usually you will use `lion-dialog` (or `lion-tooltip` if this makes more sense).
39
39
 
@@ -123,4 +123,4 @@ class MyOverlayComponent extends OverlayMixin(LitElement) {
123
123
 
124
124
  ## Rationales
125
125
 
126
- Please check the [system rationals](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/fundamentals/systems/overlays/rationale.md) folder, where we go more in-depth.
126
+ Please check the [system rationals](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/fundamentals/systems/overlays/rationale.md) folder, where we go more in-depth.
@@ -34,7 +34,7 @@ The overlay system allows to create different types of overlays like dialogs, to
34
34
  It's designed to be highly flexible, while still delivering sensible defaults.
35
35
  On top of this, the system was built having accessibility in mind.
36
36
 
37
- For a detailed rationale, please consult [Rationale](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/fundamentals/systems/overlays/rationale.md).
37
+ For a detailed rationale, please consult [Rationale](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/fundamentals/systems/overlays/rationale.md).
38
38
 
39
39
  ```js preview-story
40
40
  export const main = () => html`
@@ -82,7 +82,7 @@ Global refers to overlays where the content is positioned in a global root node
82
82
 
83
83
  Overlays can be configured in many ways to suit your needs. We go in-depth into each option in the Overlay System - Configuration chapter.
84
84
 
85
- We also export a few [preset configuration objects](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/fundamentals/systems/overlays/configuration.md).
85
+ We also export a few [preset configuration objects](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/fundamentals/systems/overlays/configuration.md).
86
86
 
87
87
  - withModalDialogConfig
88
88
  - withDropdownConfig
@@ -22,7 +22,7 @@ Therefore, they may not have the same quality standards as our other packages.
22
22
 
23
23
  | Package | Description |
24
24
  | -------------------------------------- | ----------------------- |
25
- | [sb-action-logger](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/fundamentals/tools/helpers/action-logger.md) | Storybook action logger |
25
+ | [sb-action-logger](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/fundamentals/tools/helpers/action-logger.md) | Storybook action logger |
26
26
 
27
27
  ## Installation
28
28
 
@@ -22,7 +22,7 @@ Primarily useful if two major version of a package with a singleton is used.
22
22
  npm i --save singleton-manager
23
23
  ```
24
24
 
25
- ⚠️ You need to make SURE that only ONE version of `singleton-manager` is installed. For how see [Non Goals](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/fundamentals/tools/singleton-manager/#non-goals).
25
+ ⚠️ You need to make SURE that only ONE version of `singleton-manager` is installed. For how see [Non Goals](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/fundamentals/tools/singleton-manager/#non-goals).
26
26
 
27
27
  ### Example Singleton Users
28
28
 
@@ -172,7 +172,7 @@ Steps to reproduce:
172
172
  1. Page A click on block
173
173
  2. Page B => "Blocked: false" (even when hitting the refresh button)
174
174
 
175
- ➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/fundamentals/tools/singleton-manager/example-fail/index.md). <br>
175
+ ➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/fundamentals/tools/singleton-manager/example-fail/index.md). <br>
176
176
  ➡️ See [the code](https://github.com/ing-bank/lion/tree/master/docs/fundamentals/tools/singleton-manager/example-fail/demo-app.js).
177
177
 
178
178
  ---
@@ -215,7 +215,7 @@ See it in action
215
215
  npm run start:singleton
216
216
  ```
217
217
 
218
- ➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/fundamentals/tools/singleton-manager/example-success/index.md). <br>
218
+ ➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/fundamentals/tools/singleton-manager/example-success/index.md). <br>
219
219
  ➡️ See [the code](https://github.com/ing-bank/lion/tree/master/docs/fundamentals/tools/singleton-manager/example-success/demo-app.js).
220
220
 
221
221
  ---
@@ -256,7 +256,7 @@ See it in action
256
256
  npm run start:singleton-complex
257
257
  ```
258
258
 
259
- ➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/07b67ecb65d6c48ea4dd152f451ce5070a553056/docs/fundamentals/tools/singleton-manager/example-complex/index.md). <br>
259
+ ➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/0b7e90a96113c0d006ea2c744446a64a29c31306/docs/fundamentals/tools/singleton-manager/example-complex/index.md). <br>
260
260
  ➡️ See [the code](https://github.com/ing-bank/lion/tree/master/docs/fundamentals/tools/singleton-manager/example-complex/demo-app.js).
261
261
 
262
262
  ---