aloha-vue 2.66.0 → 2.66.2

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 (432) hide show
  1. package/CHANGELOG.md +1098 -1090
  2. package/dist/aloha-vue.es.js +15671 -15507
  3. package/dist/aloha-vue.umd.js +68 -68
  4. package/package.json +99 -99
  5. package/scss/_base.scss +62 -62
  6. package/scss/aloha-vue.scss +68 -68
  7. package/scss/components/AFilters.scss +304 -304
  8. package/scss/components/AFormElement/AValidatedJson.scss +6 -6
  9. package/scss/components/AMenu.scss +627 -627
  10. package/scss/components/AModal.scss +44 -44
  11. package/scss/components/APagination.scss +167 -167
  12. package/scss/components/ARate.scss +78 -78
  13. package/scss/components/AResizer.scss +63 -63
  14. package/scss/components/ATable.scss +819 -819
  15. package/scss/components/ATableForm.scss +307 -307
  16. package/scss/components/AVerticalScroll.scss +47 -47
  17. package/scss/components/AWizard.scss +669 -669
  18. package/scss/components/ui/ADatepicker.scss +342 -342
  19. package/scss/components/ui/ADatepickerRange.scss +45 -45
  20. package/scss/components/ui/AFieldset.scss +78 -78
  21. package/scss/components/ui/AInputNumber.scss +62 -62
  22. package/scss/components/ui/AInputNumberRange.scss +30 -30
  23. package/scss/components/ui/ASelect.scss +236 -236
  24. package/scss/components/ui/ASlider.scss +186 -186
  25. package/scss/components/ui/ASwitch.scss +148 -148
  26. package/scss/components/ui/ui.scss +254 -254
  27. package/scss/text/text_alignment.scss +39 -39
  28. package/scss/text/text_transform.scss +51 -51
  29. package/scss/text/text_wrapping.scss +40 -40
  30. package/scss/utils/badge.scss +45 -45
  31. package/scss/utils/checkbox_radio.scss +134 -134
  32. package/scss/utils/color.scss +46 -46
  33. package/scss/utils/dropdown.scss +185 -185
  34. package/scss/utils/list.scss +75 -75
  35. package/scss/utils/modal.scss +173 -173
  36. package/scss/utils/sizing.scss +137 -137
  37. package/scss/utils/spacing.scss +63 -63
  38. package/scss/utils/tooltip.scss +63 -63
  39. package/src/AAccordion/AAccordion.js +206 -206
  40. package/src/AAccordion/compositionAPI/IndexesForOpenAPI.js +63 -63
  41. package/src/AAccordion/compositionAPI/ToggleAPI.js +85 -85
  42. package/src/AAlert/AAlert.js +216 -216
  43. package/src/AAlert/compositionAPI/ClassAPI.js +21 -21
  44. package/src/AAlert/i18n/AAlertI18n.js +19 -19
  45. package/src/AAlert/i18n/ar.json +2 -2
  46. package/src/AAlert/i18n/de.json +2 -2
  47. package/src/AAlert/i18n/en.json +2 -2
  48. package/src/AAlert/i18n/es.json +2 -2
  49. package/src/AAlert/i18n/fr.json +2 -2
  50. package/src/AAlert/i18n/hr.json +2 -2
  51. package/src/AAlert/i18n/it.json +2 -2
  52. package/src/AAlert/i18n/ru.json +2 -2
  53. package/src/AButton/AButton.js +275 -275
  54. package/src/ACarousel/ACarousel.js +361 -361
  55. package/src/ACarousel/ACarouselBtn/ACarouselBtn.js +75 -75
  56. package/src/ACarousel/ACarouselBtn/compositionAPI/ClassAPI.js +16 -16
  57. package/src/ACarousel/ACarouselBtn/compositionAPI/TextAPI.js +25 -25
  58. package/src/ACarousel/ACarouselControls/ACarouselControls.js +114 -114
  59. package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/ACarouselControlsIndicator.js +146 -146
  60. package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/compositionAPI/ActiveAPI.js +33 -33
  61. package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/compositionAPI/AttributesAPI.js +40 -40
  62. package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/compositionAPI/EventsAPI.js +25 -25
  63. package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/compositionAPI/IconAPI.js +20 -20
  64. package/src/ACarousel/ACarouselControls/compositionAPI/AriaLabelAPI.js +20 -20
  65. package/src/ACarousel/ACarouselItem/ACarouselItem.js +83 -83
  66. package/src/ACarousel/ACarouselItem/compositionAPI/AttributesAPI.js +39 -39
  67. package/src/ACarousel/ACarouselItem/compositionAPI/IsActiveAPI.js +21 -21
  68. package/src/ACarousel/compositionAPI/ActiveAPI.js +111 -111
  69. package/src/ACarousel/compositionAPI/AriaLabelAPI.js +25 -25
  70. package/src/ACarousel/compositionAPI/ArrowsAPI.js +17 -17
  71. package/src/ACarousel/compositionAPI/ClassAPI.js +44 -44
  72. package/src/ACarousel/compositionAPI/DataAPI.js +41 -41
  73. package/src/ACarousel/compositionAPI/IndicatorsAPI.js +148 -148
  74. package/src/ACarousel/compositionAPI/TextsAPI.js +25 -25
  75. package/src/ACarousel/i18n/ACarouselI18n.js +19 -19
  76. package/src/ACarousel/i18n/ar.json +8 -8
  77. package/src/ACarousel/i18n/de.json +8 -8
  78. package/src/ACarousel/i18n/en.json +8 -8
  79. package/src/ACarousel/i18n/es.json +8 -8
  80. package/src/ACarousel/i18n/fr.json +8 -8
  81. package/src/ACarousel/i18n/hr.json +8 -8
  82. package/src/ACarousel/i18n/it.json +8 -8
  83. package/src/ACarousel/i18n/ru.json +8 -8
  84. package/src/ACollapse/ACollapse.js +103 -103
  85. package/src/ADropdown/ADropdown.js +544 -544
  86. package/src/ADropdown/ADropdownGroup.js +85 -85
  87. package/src/ADropdown/compositionAPI/ActionsAPI.js +147 -147
  88. package/src/ADropdown/compositionAPI/AttributesAPI.js +100 -100
  89. package/src/AElement/AElement.js +518 -518
  90. package/src/AElement/compositionAPI/AttributesAPI.js +51 -51
  91. package/src/AElement/compositionAPI/ClickAPI.js +30 -30
  92. package/src/AElement/compositionAPI/ComponentLocalAPI.js +23 -23
  93. package/src/AElement/compositionAPI/DisabledAPI.js +22 -22
  94. package/src/AElement/compositionAPI/HtmlTitleAPI.js +33 -33
  95. package/src/AElement/compositionAPI/KeydownAPI.js +35 -35
  96. package/src/AElement/compositionAPI/LoadingAPI.js +22 -22
  97. package/src/AElement/compositionAPI/RouterLinkAPI.js +20 -20
  98. package/src/AElement/compositionAPI/SwitchAPI.js +33 -33
  99. package/src/AElement/compositionAPI/TagAPI.js +34 -34
  100. package/src/AElement/compositionAPI/TextAPI.js +78 -78
  101. package/src/AElement/compositionAPI/TitleAPI.js +29 -29
  102. package/src/AFilters/AFilterCenter/AFilterCenter.js +154 -154
  103. package/src/AFilters/AFilterCenter/AFilterCenterItem/AFilterCenterItem.js +207 -207
  104. package/src/AFilters/AFilters/AFilters.js +282 -282
  105. package/src/AFilters/i18n/ar.json +30 -30
  106. package/src/AFilters/i18n/en.json +30 -30
  107. package/src/AFilters/i18n/es.json +30 -30
  108. package/src/AFilters/i18n/fr.json +30 -30
  109. package/src/AFilters/i18n/hr.json +30 -30
  110. package/src/AFilters/i18n/it.json +30 -30
  111. package/src/AFilters/i18n/ru.json +30 -30
  112. package/src/AGroupButtonDropdown/compositionAPI/ActionsAPI.js +143 -143
  113. package/src/ALink/ALink.js +253 -253
  114. package/src/AMenu/AMenu.js +578 -578
  115. package/src/AMenu/AMenuBreadcrumbs/compositionAPI/RenderTruncatedAPI.js +74 -74
  116. package/src/AMenu/AMenuButtonToggle/AMenuButtonToggle.js +94 -94
  117. package/src/AMenu/AMenuButtonToggle/compositionAPI/ToggleAPI.js +95 -95
  118. package/src/AMenu/AMenuPanelLink/AMenuPanelLink.js +250 -250
  119. package/src/AMenu/compositionAPI/BackdropAPI.js +42 -42
  120. package/src/AMenu/compositionAPI/KeydownAPI.js +197 -197
  121. package/src/AMenu/compositionAPI/LinkClickAPI.js +48 -48
  122. package/src/AMenu/compositionAPI/MenuAttributesAPI.js +51 -51
  123. package/src/AMenu/compositionAPI/PanelsAPI.js +78 -78
  124. package/src/AMenu/compositionAPI/ResizeAPI.js +74 -74
  125. package/src/AModal/AModal.js +530 -530
  126. package/src/AModalForm/AModalForm.js +383 -383
  127. package/src/AModalWizard/AModalWizard.js +563 -563
  128. package/src/ANotification/ANotification.js +60 -60
  129. package/src/APagination/APagination.js +111 -111
  130. package/src/APagination/APaginationCountPerPage/APaginationCountPerPage.js +209 -209
  131. package/src/APagination/APaginationCountPerPage/compositionAPI/MainAPI.js +40 -40
  132. package/src/APagination/APaginationCountPerPage/compositionAPI/TextsAPI.js +54 -54
  133. package/src/APagination/APaginationPages/APaginationPages.js +282 -282
  134. package/src/APagination/APaginationPages/compositionAPI/PaginationItemsAPI.js +102 -102
  135. package/src/APagination/APaginationPages/compositionAPI/TextsAPI.js +74 -74
  136. package/src/APagination/compositionAPI/ComponentsAPI.js +79 -79
  137. package/src/APagination/i18n/ar.json +12 -12
  138. package/src/APagination/i18n/es.json +12 -12
  139. package/src/APagination/i18n/fr.json +12 -12
  140. package/src/APagination/i18n/hr.json +12 -12
  141. package/src/APagination/i18n/it.json +12 -12
  142. package/src/APagination/i18n/ru.json +12 -12
  143. package/src/APopup/APopup.js +115 -115
  144. package/src/ATable/ATable.js +1159 -1157
  145. package/src/ATable/ATableHeaderThAction/ATableHeaderThAction.js +241 -241
  146. package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.ModelAPI.test.js +200 -200
  147. package/src/ATable/ATableSortingAdditional/compositionAPI/ModelAPI.js +152 -152
  148. package/src/ATable/ATableTd/ATableTd.js +145 -145
  149. package/src/ATable/ATableTdAction/ATableTdAction.js +223 -218
  150. package/src/ATable/ATableTopPanel/ATableTopPanel.js +433 -433
  151. package/src/ATable/ATableTr/ATableTr.js +8 -0
  152. package/src/ATable/ATableTr/compositionAPI/AttributesAPI.js +3 -1
  153. package/src/ATable/__tests__/ATable.RowIdsAPI.test.js +66 -0
  154. package/src/ATable/compositionAPI/ColumnActionAPI.js +105 -105
  155. package/src/ATable/compositionAPI/ColumnStylesAPI.js +50 -50
  156. package/src/ATable/compositionAPI/ColumnsGroupedAPI.js +187 -187
  157. package/src/ATable/compositionAPI/PaginationModesAPI.js +44 -44
  158. package/src/ATable/compositionAPI/PreviewAPI.js +201 -201
  159. package/src/ATable/compositionAPI/PreviewRightResizeAPI.js +135 -135
  160. package/src/ATable/compositionAPI/RowActionsAPI.js +3 -1
  161. package/src/ATable/compositionAPI/ScrollControlAPI.js +249 -249
  162. package/src/ATable/compositionAPI/SortAPI.js +86 -86
  163. package/src/ATable/compositionAPI/WidthAPI.js +73 -73
  164. package/src/ATableForm/ATableForm.js +595 -595
  165. package/src/ATableForm/ATableFormCell/ATableFormCell.js +204 -204
  166. package/src/ATableForm/ATableFormCell/compositionAPI/DisabledAPI.js +23 -23
  167. package/src/ATableForm/ATableFormCell/compositionAPI/ReadonlyAPI.js +31 -31
  168. package/src/ATableForm/ATableFormCellAction/ATableFormCellAction.js +282 -282
  169. package/src/ATableForm/ATableFormCellAction/compositionAPI/DeleteAPI.js +80 -80
  170. package/src/ATableForm/ATableFormCellAction/compositionAPI/DisabledAPI.js +60 -60
  171. package/src/ATableForm/ATableFormCellAction/compositionAPI/HiddenAPI.js +46 -46
  172. package/src/ATableForm/ATableFormCellAction/compositionAPI/IdsAPI.js +31 -31
  173. package/src/ATableForm/ATableFormCellAction/compositionAPI/StylesAPI.js +27 -27
  174. package/src/ATableForm/ATableFormCellAction/compositionAPI/TitleAPI.js +47 -47
  175. package/src/ATableForm/ATableFormCellDnd/compositionAPI/IdAPI.js +21 -21
  176. package/src/ATableForm/ATableFormCellList/ATableFormCellList.js +127 -127
  177. package/src/ATableForm/ATableFormCellList/compositionAPI/DataAPI.js +77 -77
  178. package/src/ATableForm/ATableFormRow/ATableFormRow.js +592 -592
  179. package/src/ATableForm/ATableFormRow/compositionAPI/ErrorsAPI.js +40 -40
  180. package/src/ATableForm/ATableFormRow/compositionAPI/FocusAPI.js +55 -55
  181. package/src/ATableForm/ATableFormRow/compositionAPI/IdAPI.js +19 -19
  182. package/src/ATableForm/__tests__/ATableForm.ListView.test.js +864 -864
  183. package/src/ATableForm/compositionAPI/ClassesAPI.js +23 -23
  184. package/src/ATableForm/compositionAPI/ColumnsGrowAPI.js +180 -180
  185. package/src/ATableForm/compositionAPI/DeleteAPI.js +9 -9
  186. package/src/ATableForm/compositionAPI/EditAPI.js +125 -125
  187. package/src/ATableForm/compositionAPI/RowsAPI.js +42 -42
  188. package/src/ATableForm/compositionAPI/StylesAPI.js +62 -62
  189. package/src/ATableForm/compositionAPI/WidthsAPI.js +20 -20
  190. package/src/ATableForm/i18n/ATableFormI18n.js +19 -19
  191. package/src/ATableForm/utils/getFormElement.js +32 -32
  192. package/src/ATabs/ATabsContent/ATabsContent.js +102 -102
  193. package/src/ATabs/ATabsTab/ATabsTab.js +185 -185
  194. package/src/ATooltip/ATooltip.js +221 -221
  195. package/src/ATranslation/compositionAPI/UtilsAPI.js +187 -187
  196. package/src/AVerticalScroll/compositionAPI/ScrollAPI.js +55 -55
  197. package/src/AWizard/AWizard.js +467 -467
  198. package/src/compositionAPI/AEventOutsideAPI.js +46 -46
  199. package/src/compositionAPI/AFiltersAPI.js +178 -178
  200. package/src/compositionAPI/AMobileAPI.js +32 -32
  201. package/src/compositionAPI/APageTabTitleAPI.js +84 -84
  202. package/src/compositionAPI/ARemPxAPI.js +47 -47
  203. package/src/compositionAPI/FocusByDestroyAPI.js +67 -67
  204. package/src/const/AKeys.js +9 -9
  205. package/src/directives/AOnHooks.js +0 -0
  206. package/src/filters/__tests__/filterValueByCondition.test.js +94 -94
  207. package/src/filters/filterValueByCondition.js +87 -87
  208. package/src/i18n/allLanguages.js +377 -377
  209. package/src/i18n/ar.json +4 -4
  210. package/src/i18n/de.json +4 -4
  211. package/src/i18n/en.json +4 -4
  212. package/src/i18n/es.json +4 -4
  213. package/src/i18n/fr.json +4 -4
  214. package/src/i18n/hr.json +4 -4
  215. package/src/i18n/it.json +4 -4
  216. package/src/i18n/ru.json +4 -4
  217. package/src/index.js +403 -403
  218. package/src/plugins/AAlertPlugin.js +53 -53
  219. package/src/plugins/ACarouselPlugin.js +34 -34
  220. package/src/plugins/ADatepickerPlugin.js +57 -57
  221. package/src/plugins/AFiltersPlugin.js +102 -102
  222. package/src/plugins/AInputCurrencyPlugin.js +31 -31
  223. package/src/plugins/AMobilePlugin.js +32 -32
  224. package/src/plugins/ARemPxPlugin.js +37 -37
  225. package/src/plugins/ASelectPlugin.js +51 -51
  226. package/src/plugins/ASelectStylesPlugin.js +2376 -2376
  227. package/src/temp/px_to_rem_mapping_1_to_800.md +802 -802
  228. package/src/ui/ACheckbox/ACheckbox.js +929 -929
  229. package/src/ui/ACheckbox/ACheckboxItem/ACheckboxItem.js +0 -0
  230. package/src/ui/ACheckboxRadioGroups/ACheckboxRadioGroups.js +0 -0
  231. package/src/ui/ADatepicker/ADatepicker.js +804 -803
  232. package/src/ui/ADatepicker/ADatepickerCalendarPanel/ADatepickerCalendarPanel.js +796 -796
  233. package/src/ui/ADatepicker/ADatepickerCalendarPanel/compositionAPI/CalendarAPI.js +51 -51
  234. package/src/ui/ADatepicker/compositionAPI/LanguagesAPI.js +92 -92
  235. package/src/ui/ADatepicker/compositionAPI/PlaceholderAPI.js +55 -55
  236. package/src/ui/ADatepicker/i18n/ADatepickerI18n.js +19 -19
  237. package/src/ui/ADatepicker/i18n/ar.json +47 -47
  238. package/src/ui/ADatepicker/i18n/de.json +48 -48
  239. package/src/ui/ADatepicker/i18n/en.json +48 -48
  240. package/src/ui/ADatepicker/i18n/es.json +47 -47
  241. package/src/ui/ADatepicker/i18n/fr.json +47 -47
  242. package/src/ui/ADatepicker/i18n/hr.json +47 -47
  243. package/src/ui/ADatepicker/i18n/it.json +47 -47
  244. package/src/ui/ADatepicker/i18n/ru.json +48 -48
  245. package/src/ui/ADatepicker/panel/APanelDate/APanelDate.js +196 -196
  246. package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/DatesAPI.js +66 -66
  247. package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/FocusAPI.js +96 -96
  248. package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/FocusActiveAPI.js +27 -27
  249. package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/SelectAPI.js +21 -21
  250. package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/TableAPI.js +128 -128
  251. package/src/ui/ADatepicker/panel/APanelMonth/APanelMonth.js +129 -129
  252. package/src/ui/ADatepicker/panel/APanelMonth/compositionAPI/FocusAPI.js +94 -94
  253. package/src/ui/ADatepicker/panel/APanelMonth/compositionAPI/FocusActiveAPI.js +21 -21
  254. package/src/ui/ADatepicker/panel/APanelMonth/compositionAPI/MonthsAPI.js +51 -51
  255. package/src/ui/ADatepicker/panel/APanelMonth/compositionAPI/SelectAPI.js +29 -29
  256. package/src/ui/ADatepicker/panel/APanelYearItem/APanelYearItem.js +75 -75
  257. package/src/ui/ADatepicker/panel/APanelYearItem/compositionAPI/AttributesAPI.js +35 -35
  258. package/src/ui/ADatepicker/panel/APanelYearItem/compositionAPI/SelectAPI.js +35 -35
  259. package/src/ui/ADatepickerAlt/ADatepicker.js +1 -0
  260. package/src/ui/ADatepickerRange/ADatepickerRange.js +528 -525
  261. package/src/ui/AErrors/AErrors.js +149 -149
  262. package/src/ui/AErrors/AErrorsElement/AErrorsElement.js +0 -0
  263. package/src/ui/AErrors/i18n/AErrorsI18n.js +19 -19
  264. package/src/ui/AErrors/i18n/ar.json +3 -3
  265. package/src/ui/AErrors/i18n/de.json +2 -2
  266. package/src/ui/AErrors/i18n/en.json +3 -3
  267. package/src/ui/AErrors/i18n/es.json +3 -3
  268. package/src/ui/AErrors/i18n/fr.json +3 -3
  269. package/src/ui/AErrors/i18n/hr.json +3 -3
  270. package/src/ui/AErrors/i18n/it.json +3 -3
  271. package/src/ui/AErrors/i18n/ru.json +3 -3
  272. package/src/ui/AErrorsText/AErrorsText.js +62 -62
  273. package/src/ui/AFieldset/AFieldset.js +535 -535
  274. package/src/ui/AFieldset/compositionAPI/ModelAPI.js +54 -54
  275. package/src/ui/AForm/AForm.js +252 -252
  276. package/src/ui/AFormElement/AFormElement.js +160 -160
  277. package/src/ui/AFormElementBtnClear/AFormElementBtnClear.js +86 -86
  278. package/src/ui/AFormElementBtnClear/i18n/AFormElementBtnClearI18n.js +19 -19
  279. package/src/ui/AFormElementBtnClear/i18n/ar.json +2 -2
  280. package/src/ui/AFormElementBtnClear/i18n/de.json +2 -2
  281. package/src/ui/AFormElementBtnClear/i18n/en.json +2 -2
  282. package/src/ui/AFormElementBtnClear/i18n/es.json +2 -2
  283. package/src/ui/AFormElementBtnClear/i18n/fr.json +2 -2
  284. package/src/ui/AFormElementBtnClear/i18n/hr.json +2 -2
  285. package/src/ui/AFormElementBtnClear/i18n/it.json +2 -2
  286. package/src/ui/AFormElementBtnClear/i18n/ru.json +2 -2
  287. package/src/ui/AFormHelpText/AFormHelpText.js +37 -37
  288. package/src/ui/AFormLabelDescription/AFormLabelDescription.js +43 -43
  289. package/src/ui/AFormReadonly/AFormReadonly.js +193 -193
  290. package/src/ui/AGroup/AGroup.js +427 -427
  291. package/src/ui/AInput/AInput.js +516 -516
  292. package/src/ui/AInput/compositionAPI/ClassAPI.js +43 -43
  293. package/src/ui/AInputCurrency/AInputCurrency.js +620 -619
  294. package/src/ui/AInputCurrency/compositionAPI/IncreaseDecreaseAPI.js +76 -76
  295. package/src/ui/AInputCurrency/compositionAPI/InputEventsAPI.js +752 -752
  296. package/src/ui/AInputCurrency/compositionAPI/ModelAPI.js +88 -88
  297. package/src/ui/AInputCurrency/compositionAPI/UtilsAPI.js +67 -67
  298. package/src/ui/AInputFile/AInputFile.js +244 -243
  299. package/src/ui/AInputNumber/AInputNumber.js +491 -489
  300. package/src/ui/AInputNumber/compositionAPI/InputEventsAPI.js +196 -196
  301. package/src/ui/AInputNumber/compositionAPI/ModelAPI.js +72 -72
  302. package/src/ui/AInputNumberRange/AInputNumberRange.js +508 -505
  303. package/src/ui/AJson/AJson.js +434 -434
  304. package/src/ui/ALabel/ALabel.js +0 -0
  305. package/src/ui/AMultiselectOrdered/AMultiselectOrdered.js +935 -935
  306. package/src/ui/AOneCheckbox/AOneCheckbox.js +366 -366
  307. package/src/ui/ARadio/ARadio.js +924 -924
  308. package/src/ui/ARadio/ARadioItem/ARadioItem.js +0 -0
  309. package/src/ui/ARequired/ARequired.js +0 -0
  310. package/src/ui/ARouterLinkConfig/ARouterLinkConfig.js +391 -391
  311. package/src/ui/ARouterLinkConfig/compositionAPI/DataFormAPI.js +102 -102
  312. package/src/ui/ARouterLinkConfig/compositionAPI/ModelLocalAPI.js +96 -96
  313. package/src/ui/ARouterLinkConfig/compositionAPI/RouteAPI.js +51 -51
  314. package/src/ui/ASelect/ASelect.js +1210 -1209
  315. package/src/ui/ASelect/ASelectElement/ASelectElement.js +0 -0
  316. package/src/ui/ASelect/ASelectValueCloseable/compositionAPI/CloseAPI.js +28 -28
  317. package/src/ui/ASelect/compositionAPI/ToggleAPI.js +255 -255
  318. package/src/ui/ASelect/i18n/ar.json +6 -6
  319. package/src/ui/ASelect/i18n/de.json +7 -7
  320. package/src/ui/ASelect/i18n/en.json +6 -6
  321. package/src/ui/ASelect/i18n/es.json +6 -6
  322. package/src/ui/ASelect/i18n/fr.json +6 -6
  323. package/src/ui/ASelect/i18n/hr.json +6 -6
  324. package/src/ui/ASelect/i18n/it.json +6 -6
  325. package/src/ui/ASelect/i18n/ru.json +6 -6
  326. package/src/ui/ASelectIcon/ASelectIcon.js +386 -386
  327. package/src/ui/ASelectStyle/ASelectStyle.js +391 -391
  328. package/src/ui/ASelectStyle/compositionAPI/DataAPI.js +68 -68
  329. package/src/ui/ASelectStyle/compositionAPI/EventsAPI.js +24 -24
  330. package/src/ui/ASelectStyle/compositionAPI/KeyLabelCallbackAPI.js +15 -15
  331. package/src/ui/ASelectStyle/compositionAPI/TypeAPI.js +24 -24
  332. package/src/ui/ASelectStyle/i18n/ASelectStyleI18n.js +19 -19
  333. package/src/ui/ASelectStyle/i18n/ar.json +277 -277
  334. package/src/ui/ASelectStyle/i18n/de.json +277 -277
  335. package/src/ui/ASelectStyle/i18n/en.json +277 -277
  336. package/src/ui/ASelectStyle/i18n/es.json +277 -277
  337. package/src/ui/ASelectStyle/i18n/fr.json +277 -277
  338. package/src/ui/ASelectStyle/i18n/hr.json +277 -277
  339. package/src/ui/ASelectStyle/i18n/it.json +277 -277
  340. package/src/ui/ASelectStyle/i18n/ru.json +277 -277
  341. package/src/ui/ASlider/ASlider.js +672 -672
  342. package/src/ui/ASlider/compositionAPI/AriaAttributesAPI.js +121 -121
  343. package/src/ui/ASlider/compositionAPI/AttributesAPI.js +15 -15
  344. package/src/ui/ASlider/compositionAPI/DataAPI.js +115 -115
  345. package/src/ui/ASlider/compositionAPI/DragAndDropAPI.js +198 -198
  346. package/src/ui/ASlider/compositionAPI/LabelAPI.js +13 -13
  347. package/src/ui/ASlider/compositionAPI/MarksAPI.js +32 -32
  348. package/src/ui/ASlider/compositionAPI/SliderAPI.js +289 -289
  349. package/src/ui/ASlider/compositionAPI/StopsAPI.js +47 -47
  350. package/src/ui/ASlider/compositionAPI/StylesAPI.js +79 -79
  351. package/src/ui/ASlider/compositionAPI/TitleAPI.js +42 -42
  352. package/src/ui/ASlider/i18n/ASliderI18n.js +19 -19
  353. package/src/ui/ASlider/i18n/en.json +4 -4
  354. package/src/ui/ASwitch/ASwitch.js +439 -438
  355. package/src/ui/ATemplate/ATemplate.js +0 -0
  356. package/src/ui/ATextarea/ATextarea.js +437 -437
  357. package/src/ui/AUiComponents.js +59 -59
  358. package/src/ui/AUiContainerComponents.js +12 -12
  359. package/src/ui/AValidatedJson/AValidatedJson.js +594 -594
  360. package/src/ui/AValidatedJson/AValidatedJsonItem/compositionAPI/DeleteAPI.js +63 -63
  361. package/src/ui/AValidatedJson/AValidatedJsonItem/compositionAPI/DetailsAPI.js +59 -59
  362. package/src/ui/AValidatedJson/AValidatedJsonItem/compositionAPI/MoveAPI.js +50 -50
  363. package/src/ui/AValidatedJson/AValidatedJsonItem/compositionAPI/UpdateAPI.js +48 -48
  364. package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/DataFormAPI.js +69 -69
  365. package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/DisabledAPI.js +35 -35
  366. package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/ModelAPI.js +31 -31
  367. package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/SaveAPI.js +115 -115
  368. package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/TextAPI.js +25 -25
  369. package/src/ui/AValidatedJson/compositionAPI/AValidatedJsonErrorLabelsAPI.js +18 -18
  370. package/src/ui/AValidatedJson/compositionAPI/AttributesAPI.js +15 -15
  371. package/src/ui/AValidatedJson/compositionAPI/ChildrenAPI.js +70 -70
  372. package/src/ui/AValidatedJson/compositionAPI/EventsAPI.js +19 -19
  373. package/src/ui/AValidatedJson/compositionAPI/JsonModeAPI.js +119 -119
  374. package/src/ui/AValidatedJson/compositionAPI/ListModeAPI.js +144 -144
  375. package/src/ui/AValidatedJson/compositionAPI/ModelAPI.js +38 -38
  376. package/src/ui/AValidatedJson/compositionAPI/SingleModeAPI.js +112 -112
  377. package/src/ui/AValidatedJson/compositionAPI/TranslateAPI.js +22 -22
  378. package/src/ui/AValidatedJson/i18n/AValidatedJsonI18n.js +19 -19
  379. package/src/ui/AValidatedJson/i18n/ar.json +3 -3
  380. package/src/ui/AValidatedJson/i18n/de.json +22 -22
  381. package/src/ui/AValidatedJson/i18n/en.json +3 -3
  382. package/src/ui/AValidatedJson/i18n/es.json +3 -3
  383. package/src/ui/AValidatedJson/i18n/fr.json +3 -3
  384. package/src/ui/AValidatedJson/i18n/hr.json +3 -3
  385. package/src/ui/AValidatedJson/i18n/it.json +3 -3
  386. package/src/ui/AValidatedJson/i18n/ru.json +6 -6
  387. package/src/ui/compositionApi/UIDataGroupAPI.js +94 -94
  388. package/src/ui/compositionApi/UiAPI.js +185 -185
  389. package/src/ui/compositionApi/UiClearButtonAPI.js +19 -19
  390. package/src/ui/compositionApi/UiDataSortAPI.js +29 -29
  391. package/src/ui/compositionApi/UiDataWithKeyIdAndLabelAPI.js +155 -155
  392. package/src/ui/const/AUiTypes.js +69 -69
  393. package/src/ui/mixins/UiMixinProps.js +129 -129
  394. package/src/ui/utils/utils.js +79 -79
  395. package/src/utils/__tests__/utils.aOrderBy.test.js +237 -237
  396. package/src/utils/__tests__/utils.aSortBy.test.js +331 -331
  397. package/src/utils/__tests__/utilsArray.aFirst.test.js +54 -54
  398. package/src/utils/__tests__/utilsArray.aLast.test.js +54 -54
  399. package/src/utils/__tests__/utilsLang.isArguments.test.js +52 -52
  400. package/src/utils/__tests__/utilsLang.isArray.test.js +50 -50
  401. package/src/utils/__tests__/utilsLang.isArrayBuffer.test.js +48 -48
  402. package/src/utils/__tests__/utilsLang.isBoolean.test.js +56 -56
  403. package/src/utils/__tests__/utilsLang.isBuffer.test.js +47 -47
  404. package/src/utils/__tests__/utilsLang.isDate.test.js +54 -54
  405. package/src/utils/__tests__/utilsLang.isElement.test.js +53 -53
  406. package/src/utils/__tests__/utilsLang.isError.test.js +52 -52
  407. package/src/utils/__tests__/utilsLang.isFinite.test.js +57 -57
  408. package/src/utils/__tests__/utilsLang.isFunction.test.js +46 -46
  409. package/src/utils/__tests__/utilsLang.isInteger.test.js +58 -58
  410. package/src/utils/__tests__/utilsLang.isMap.test.js +50 -50
  411. package/src/utils/__tests__/utilsLang.isNaN.test.js +55 -55
  412. package/src/utils/__tests__/utilsLang.isNil.test.js +57 -57
  413. package/src/utils/__tests__/utilsLang.isNull.test.js +53 -53
  414. package/src/utils/__tests__/utilsLang.isNumber.test.js +54 -54
  415. package/src/utils/__tests__/utilsLang.isObject.test.js +49 -49
  416. package/src/utils/__tests__/utilsLang.isObjectLike.test.js +45 -45
  417. package/src/utils/__tests__/utilsLang.isPlainObject.test.js +60 -60
  418. package/src/utils/__tests__/utilsLang.isPromise.test.js +93 -93
  419. package/src/utils/__tests__/utilsLang.isRegExp.test.js +46 -46
  420. package/src/utils/__tests__/utilsLang.isSet.test.js +50 -50
  421. package/src/utils/__tests__/utilsLang.isString.test.js +50 -50
  422. package/src/utils/__tests__/utilsLang.isSymbol.test.js +45 -45
  423. package/src/utils/__tests__/utilsLang.isUndefined.test.js +57 -57
  424. package/src/utils/__tests__/utilsLang.isWeakMap.test.js +49 -49
  425. package/src/utils/__tests__/utilsLang.isWeakSet.test.js +49 -49
  426. package/src/utils/actions.js +67 -67
  427. package/src/utils/autosize.js +277 -277
  428. package/src/utils/isBrowser.js +12 -12
  429. package/src/utils/utils.js +253 -253
  430. package/src/utils/utilsArray.js +29 -29
  431. package/src/utils/utilsDOM.js +188 -188
  432. package/src/utils/utilsLang.js +346 -346
@@ -1,578 +1,578 @@
1
- import {
2
- computed,
3
- h,
4
- onBeforeUnmount,
5
- onMounted,
6
- provide,
7
- ref,
8
- Teleport,
9
- toRef,
10
- watch,
11
- } from "vue";
12
-
13
- import AButton from "../AButton/AButton";
14
- import AInput from "../ui/AInput/AInput";
15
- import AMenuButtonToggle from "./AMenuButtonToggle/AMenuButtonToggle";
16
- import AMenuPanel from "./AMenuPanel/AMenuPanel";
17
- import AMenuSearchPanel from "./AMenuSearchPanel/AMenuSearchPanel";
18
- import ATranslation from "../ATranslation/ATranslation";
19
- import AVerticalScroll from "../AVerticalScroll/AVerticalScroll";
20
-
21
- import AMenuBlockerClickAPI from "./compositionAPI/AMenuBlockerClickAPI";
22
- import BackdropAPI from "./compositionAPI/BackdropAPI";
23
- import CheckRoutesAPI from "./compositionAPI/CheckRoutesAPI";
24
- import DataAPI from "./compositionAPI/DataAPI";
25
- import KeydownAPI from "./compositionAPI/KeydownAPI";
26
- import LinkClickAPI from "./compositionAPI/LinkClickAPI";
27
- import MenuAttributesAPI from "./compositionAPI/MenuAttributesAPI";
28
- import PanelMainAPI from "./compositionAPI/PanelMainAPI";
29
- import PanelsAPI from "./compositionAPI/PanelsAPI";
30
- import PopoverAPI from "./compositionAPI/PopoverAPI";
31
- import ResizeAPI from "./compositionAPI/ResizeAPI";
32
- import SearchAPI from "./compositionAPI/SearchAPI";
33
- import SearchBtnAPI from "./compositionAPI/SearchBtnAPI";
34
- import ToggleAPI from "./AMenuButtonToggle/compositionAPI/ToggleAPI";
35
-
36
- import Search from "aloha-svg/dist/js/bootstrap/Search";
37
- import {
38
- uniqueId,
39
- } from "lodash-es";
40
-
41
- const DROPDOWN_BUTTON_WIDTH = 34;
42
- const BREADCRUMBS_PADDINGS = 20;
43
-
44
- export default {
45
- name: "AMenu",
46
- provide() {
47
- return {
48
- keySlot: computed(() => this.keySlot),
49
- };
50
- },
51
- props: {
52
- breadcrumbsLinkClass: {
53
- type: [String, Object],
54
- required: false,
55
- default: "a_btn a_btn_link",
56
- },
57
- breadcrumbsTruncatedDropdownProps: {
58
- type: Object,
59
- required: false,
60
- default: () => ({}),
61
- },
62
- breadcrumbsTruncatedOffset: {
63
- type: Number,
64
- required: false,
65
- default: () => DROPDOWN_BUTTON_WIDTH + BREADCRUMBS_PADDINGS,
66
- },
67
- buttonToggleClass: {
68
- type: [String, Object],
69
- required: false,
70
- default: "a_btn a_btn_transparent_secondary a_btn_small",
71
- },
72
- buttonToggleProps: {
73
- type: Object,
74
- required: false,
75
- default: () => ({}),
76
- },
77
- canChangeBodyClass: {
78
- type: Boolean,
79
- required: false,
80
- default: true,
81
- },
82
- compareUrlCallback: {
83
- type: Function,
84
- required: false,
85
- default: undefined,
86
- },
87
- data: {
88
- type: Array,
89
- required: false,
90
- default: () => [],
91
- },
92
- hasSearch: {
93
- type: Boolean,
94
- required: false,
95
- default: true,
96
- },
97
- isBackdropMobileClickable: {
98
- type: Boolean,
99
- required: false,
100
- default: true,
101
- },
102
- isBlockerClickable: {
103
- type: Boolean,
104
- required: false,
105
- },
106
- isBodyFocusAfterClick: {
107
- type: Boolean,
108
- required: false,
109
- default: true,
110
- },
111
- isBreadcrumbsTruncated: {
112
- type: Boolean,
113
- required: false,
114
- default: false,
115
- },
116
- isLinkTruncated: {
117
- type: Boolean,
118
- required: false,
119
- default: true,
120
- },
121
- isMenuOpenInitial: {
122
- type: Boolean,
123
- required: false,
124
- default: true,
125
- },
126
- isSearchBreadcrumbsTruncated: {
127
- type: Boolean,
128
- required: false,
129
- default: true,
130
- },
131
- isTranslated: {
132
- type: Boolean,
133
- required: false,
134
- },
135
- keyChildren: {
136
- type: String,
137
- required: false,
138
- default: undefined,
139
- },
140
- keyGroup: {
141
- type: String,
142
- required: false,
143
- default: "group",
144
- },
145
- keyIcon: {
146
- type: String,
147
- required: false,
148
- default: "icon",
149
- },
150
- keyId: {
151
- type: String,
152
- required: false,
153
- default: "id",
154
- },
155
- keyLabel: {
156
- type: String,
157
- required: false,
158
- default: "label",
159
- },
160
- keyLabelCallback: {
161
- type: Function,
162
- required: false,
163
- default: undefined,
164
- },
165
- keyParent: {
166
- type: String,
167
- required: false,
168
- default: "parent",
169
- },
170
- keySlot: {
171
- type: String,
172
- required: false,
173
- default: undefined,
174
- },
175
- menuId: {
176
- type: String,
177
- required: false,
178
- default: () => uniqueId("a_menu_"),
179
- },
180
- onlyMobile: {
181
- type: Boolean,
182
- required: false,
183
- default: false,
184
- },
185
- selectorClose: {
186
- type: [String, Array],
187
- required: false,
188
- default: undefined,
189
- },
190
- selectorCloseIds: {
191
- type: [String, Array],
192
- required: false,
193
- default: undefined,
194
- },
195
- showCountChildren: {
196
- type: Boolean,
197
- required: false,
198
- default: true,
199
- },
200
- useBackdropMobile: {
201
- type: Boolean,
202
- required: false,
203
- default: true,
204
- },
205
- useEscapeForMobile: {
206
- type: Boolean,
207
- required: false,
208
- default: true,
209
- },
210
- },
211
- setup(props) {
212
- const isLinkTruncated = toRef(props, "isLinkTruncated");
213
- const showCountChildren = toRef(props, "showCountChildren");
214
- const breadcrumbsTruncatedOffset = toRef(props, "breadcrumbsTruncatedOffset");
215
-
216
- const isMounted = ref(false);
217
-
218
- const {
219
- dataKeyById,
220
- dataProParent,
221
- } = DataAPI(props);
222
-
223
- const {
224
- isSearchActive,
225
- itemsWithSearch,
226
- modelSearch,
227
- resetSearch,
228
- searchInputId,
229
- styleSearchPanelMain,
230
- updateModelSearch,
231
- } = SearchAPI(props, {
232
- dataKeyById,
233
- });
234
-
235
- const {
236
- closeAllPanels,
237
- isSubMenuOpen,
238
- panelParentsOpen,
239
- setDefaultMenu,
240
- togglePanel,
241
- } = PanelsAPI(props, {
242
- dataKeyById,
243
- resetSearch,
244
- });
245
-
246
- const {
247
- closeMenu,
248
- isMenuOpen,
249
- removeBodyClasses,
250
- toggleMenu,
251
- } = ToggleAPI(props);
252
-
253
- const {
254
- isDesktopSubMenuVisibleWhenMenuClosed,
255
- menuRef,
256
- removeListenerForKeydownDesktop,
257
- removeListenerForKeydownMobile,
258
- setListenerForKeydownDesktop,
259
- setListenerForKeydownMobile,
260
- } = KeydownAPI(props, {
261
- closeMenu,
262
- isMenuOpen,
263
- isSubMenuOpen,
264
- panelParentsOpen,
265
- togglePanel,
266
- });
267
-
268
- const {
269
- clickOnSearchBtn,
270
- keydownOnSearchBtn,
271
- } = SearchBtnAPI({
272
- searchInputId,
273
- toggleMenu,
274
- });
275
-
276
- const {
277
- attributesMenuClick,
278
- attributesMobile,
279
- headerId,
280
- } = MenuAttributesAPI(props, {
281
- isMenuOpen,
282
- toggleMenu,
283
- });
284
-
285
- const {
286
- destroyEventBusUpdateViewOnResize,
287
- initEventBusUpdateViewOnResize,
288
- initMenuOpenOrClose,
289
- isMenuInitialized,
290
- isMobileWidth,
291
- } = ResizeAPI(props, {
292
- removeListenerForKeydownMobile,
293
- toggleMenu,
294
- });
295
-
296
- const {
297
- clickMenuLink,
298
- isMenuLinkClicked,
299
- } = LinkClickAPI(props, {
300
- closeAllPanels,
301
- isMenuOpen,
302
- isMobileWidth,
303
- resetSearch,
304
- toggleMenu,
305
- });
306
-
307
- const {
308
- attributesBlockerClick,
309
- } = AMenuBlockerClickAPI(props, {
310
- closeAllPanels,
311
- });
312
-
313
- const {
314
- activeRoutesIds,
315
- checkAllRoutes,
316
- currentRoute,
317
- } = CheckRoutesAPI(props, {
318
- dataKeyById,
319
- dataProParent,
320
- isMenuLinkClicked,
321
- isMenuOpen,
322
- panelParentsOpen,
323
- });
324
-
325
- const {
326
- destroyPopover,
327
- startPopper,
328
- } = PopoverAPI(props, {
329
- menuRef,
330
- isMenuOpen,
331
- panelParentsOpen,
332
- });
333
-
334
- const {
335
- isLeastOnePanelOpenAndMenuClosed,
336
- } = PanelMainAPI({
337
- isMenuOpen,
338
- panelParentsOpen,
339
- });
340
-
341
- const {
342
- clickAttributesBackdrop,
343
- isBackdropVisible,
344
- } = BackdropAPI(props, {
345
- isMenuOpen,
346
- isMobileWidth,
347
- toggleMenu,
348
- });
349
-
350
- watch(currentRoute, () => {
351
- checkAllRoutes();
352
- }, {
353
- immediate: true,
354
- deep: true,
355
- });
356
-
357
- watch(isMenuOpen, newValue => {
358
- if (!isMenuInitialized.value) {
359
- return;
360
- }
361
- resetSearch();
362
- closeAllPanels();
363
- if (newValue) {
364
- destroyPopover();
365
- setListenerForKeydownMobile();
366
- } else {
367
- removeListenerForKeydownMobile();
368
- }
369
- });
370
-
371
- watch(panelParentsOpen, () => {
372
- startPopper();
373
- }, {
374
- deep: true,
375
- });
376
-
377
- watch(isDesktopSubMenuVisibleWhenMenuClosed, newValue => {
378
- if (newValue) {
379
- setListenerForKeydownDesktop();
380
- } else {
381
- removeListenerForKeydownDesktop();
382
- }
383
- });
384
-
385
- provide("activeRoutesIds", computed(() => activeRoutesIds.value));
386
- provide("clickMenuLink", clickMenuLink);
387
- provide("isLinkTruncated", computed(() => isLinkTruncated.value));
388
- provide("isMenuOpen", computed(() => isMenuOpen.value));
389
- provide("panelParentsOpen", panelParentsOpen);
390
- provide("showCountChildren", computed(() => showCountChildren.value));
391
- provide("togglePanel", togglePanel);
392
- provide("breadcrumbsTruncatedOffset", computed(() => breadcrumbsTruncatedOffset.value));
393
-
394
- onMounted(() => {
395
- isMounted.value = true;
396
- initMenuOpenOrClose();
397
- initEventBusUpdateViewOnResize();
398
- });
399
-
400
- onBeforeUnmount(() => {
401
- removeBodyClasses();
402
- destroyEventBusUpdateViewOnResize();
403
- destroyPopover();
404
- removeListenerForKeydownDesktop();
405
- removeListenerForKeydownMobile();
406
- });
407
-
408
- return {
409
- activeRoutesIds,
410
- attributesBlockerClick,
411
- attributesMenuClick,
412
- attributesMobile,
413
- checkAllRoutes,
414
- clickAttributesBackdrop,
415
- clickOnSearchBtn,
416
- dataKeyById,
417
- dataProParent,
418
- headerId,
419
- isBackdropVisible,
420
- isLeastOnePanelOpenAndMenuClosed,
421
- isMenuOpen,
422
- isMobileWidth,
423
- isMounted,
424
- isSearchActive,
425
- isSubMenuOpen,
426
- itemsWithSearch,
427
- keydownOnSearchBtn,
428
- menuRef,
429
- modelSearch,
430
- panelParentsOpen,
431
- removeBodyClasses,
432
- searchInputId,
433
- setDefaultMenu,
434
- styleSearchPanelMain,
435
- toggleMenu,
436
- togglePanel,
437
- updateModelSearch,
438
- };
439
- },
440
- render() {
441
- if (!this.isMounted) {
442
- return null;
443
- }
444
-
445
- return h("nav", {
446
- ref: "menuRef",
447
- id: this.menuId,
448
- "aria-labelledby": this.headerId,
449
- class: [
450
- "a_menu",
451
- {
452
- a_menu_sub_open: this.isSubMenuOpen,
453
- a_menu_open: this.isMenuOpen,
454
- a_menu_close: !this.isMenuOpen,
455
- a_menu_only_mobile: this.onlyMobile,
456
- a_menu_mobile: this.isMobileWidth || this.onlyMobile,
457
- },
458
- ],
459
- ...this.attributesMobile,
460
- ...this.attributesMenuClick,
461
- }, [
462
- h("div", {
463
- class: "a_menu__navbar_top",
464
- }, [
465
- h(AMenuButtonToggle, {
466
- buttonToggleProps: this.buttonToggleProps,
467
- canChangeBodyClass: this.canChangeBodyClass,
468
- class: this.buttonToggleClass,
469
- insideMenu: true,
470
- menuId: this.menuId,
471
- selectorClose: this.selectorClose,
472
- selectorCloseIds: this.selectorCloseIds,
473
- }),
474
- this.$slots.menuSearch && this.$slots.menuSearch(),
475
- this.hasSearch && h(AInput, {
476
- id: this.searchInputId,
477
- class: "a_menu__navbar_top__search",
478
- modelValue: this.modelSearch,
479
- label: "_A_MENU_2_SEARCH_",
480
- "onUpdate:modelValue": this.updateModelSearch,
481
- }),
482
- ]),
483
- h("div", {
484
- class: "a_menu__panels__main",
485
- style: this.styleSearchPanelMain,
486
- }, [
487
- h("div", {
488
- class: "a_menu__navbar_top_sub",
489
- }, [
490
- h(ATranslation, {
491
- id: this.headerId,
492
- class: "a_menu__navbar_top_sub__text",
493
- tag: "strong",
494
- text: "_A_MENU_2_MAIN_MENU_",
495
- }),
496
- this.hasSearch && h(AButton, {
497
- role: "button",
498
- tabindex: 0,
499
- tag: "a",
500
- class: "a_menu__navbar_top_sub__search a_menu__link a_menu__link_btn",
501
- iconLeft: Search,
502
- iconClass: "a_menu__link__icon",
503
- title: "_A_MENU_2_OPEN_SEARCH_",
504
- textScreenReader: "_A_MENU_2_OPEN_SEARCH_",
505
- onClick: this.clickOnSearchBtn,
506
- onKeydown: this.keydownOnSearchBtn,
507
- }),
508
- ]),
509
- h(AVerticalScroll, {
510
- class: {
511
- a_menu__vertical_scroll_hidden: this.isLeastOnePanelOpenAndMenuClosed,
512
- },
513
- disabled: this.isMenuOpen || this.isLeastOnePanelOpenAndMenuClosed,
514
- }, () => [
515
- h(AMenuPanel, {
516
- attributesBlockerClick: this.attributesBlockerClick,
517
- dataKeyById: this.dataKeyById,
518
- dataProParentChildren: this.dataProParent.children,
519
- isBreadcrumbsTruncated: this.isBreadcrumbsTruncated,
520
- isPanelMain: true,
521
- isSearchActive: this.isSearchActive,
522
- keyGroup: this.keyGroup,
523
- keyIcon: this.keyIcon,
524
- menuId: this.menuId,
525
- paneIndex: "00",
526
- panelItems: this.dataProParent.main,
527
- panelParentsOpen: this.panelParentsOpen,
528
- }, this.$slots),
529
- ]),
530
- h("div", {
531
- class: "a_menu__panels",
532
- }, [
533
- Object.keys(this.dataProParent.children).map((key, paneIndex) => {
534
- return h(AMenuPanel, {
535
- key,
536
- attributesBlockerClick: {},
537
- breadcrumbsLinkClass: this.breadcrumbsLinkClass,
538
- breadcrumbsTruncatedDropdownProps: this.breadcrumbsTruncatedDropdownProps,
539
- dataKeyById: this.dataKeyById,
540
- dataProParentChildren: this.dataProParent.children,
541
- isBreadcrumbsTruncated: this.isBreadcrumbsTruncated,
542
- isSearchActive: this.isSearchActive,
543
- keyGroup: this.keyGroup,
544
- keyIcon: this.keyIcon,
545
- menuId: this.menuId,
546
- paneIndex,
547
- panelItems: this.dataProParent.children[key],
548
- panelParentsOpen: this.panelParentsOpen,
549
- parentId: key,
550
- }, this.$slots);
551
- }),
552
- ]),
553
- ]),
554
- h(AMenuSearchPanel, {
555
- breadcrumbsLinkClass: this.breadcrumbsLinkClass,
556
- breadcrumbsTruncatedDropdownProps: this.breadcrumbsTruncatedDropdownProps,
557
- dataProParentChildren: this.dataProParent.children,
558
- isSearchActive: this.isSearchActive,
559
- isSearchBreadcrumbsTruncated: this.isSearchBreadcrumbsTruncated,
560
- itemsWithSearch: this.itemsWithSearch,
561
- menuId: this.menuId,
562
- modelSearch: this.modelSearch,
563
- }, this.$slots),
564
-
565
- this.isBackdropVisible
566
- ? h(Teleport, {
567
- to: "body",
568
- }, [
569
- h("div", {
570
- class: "a_menu__backdrop a_backdrop a_backdrop_fade",
571
- "aria-hidden": true,
572
- ...this.clickAttributesBackdrop,
573
- }),
574
- ])
575
- : "",
576
- ]);
577
- },
578
- };
1
+ import {
2
+ computed,
3
+ h,
4
+ onBeforeUnmount,
5
+ onMounted,
6
+ provide,
7
+ ref,
8
+ Teleport,
9
+ toRef,
10
+ watch,
11
+ } from "vue";
12
+
13
+ import AButton from "../AButton/AButton";
14
+ import AInput from "../ui/AInput/AInput";
15
+ import AMenuButtonToggle from "./AMenuButtonToggle/AMenuButtonToggle";
16
+ import AMenuPanel from "./AMenuPanel/AMenuPanel";
17
+ import AMenuSearchPanel from "./AMenuSearchPanel/AMenuSearchPanel";
18
+ import ATranslation from "../ATranslation/ATranslation";
19
+ import AVerticalScroll from "../AVerticalScroll/AVerticalScroll";
20
+
21
+ import AMenuBlockerClickAPI from "./compositionAPI/AMenuBlockerClickAPI";
22
+ import BackdropAPI from "./compositionAPI/BackdropAPI";
23
+ import CheckRoutesAPI from "./compositionAPI/CheckRoutesAPI";
24
+ import DataAPI from "./compositionAPI/DataAPI";
25
+ import KeydownAPI from "./compositionAPI/KeydownAPI";
26
+ import LinkClickAPI from "./compositionAPI/LinkClickAPI";
27
+ import MenuAttributesAPI from "./compositionAPI/MenuAttributesAPI";
28
+ import PanelMainAPI from "./compositionAPI/PanelMainAPI";
29
+ import PanelsAPI from "./compositionAPI/PanelsAPI";
30
+ import PopoverAPI from "./compositionAPI/PopoverAPI";
31
+ import ResizeAPI from "./compositionAPI/ResizeAPI";
32
+ import SearchAPI from "./compositionAPI/SearchAPI";
33
+ import SearchBtnAPI from "./compositionAPI/SearchBtnAPI";
34
+ import ToggleAPI from "./AMenuButtonToggle/compositionAPI/ToggleAPI";
35
+
36
+ import Search from "aloha-svg/dist/js/bootstrap/Search";
37
+ import {
38
+ uniqueId,
39
+ } from "lodash-es";
40
+
41
+ const DROPDOWN_BUTTON_WIDTH = 34;
42
+ const BREADCRUMBS_PADDINGS = 20;
43
+
44
+ export default {
45
+ name: "AMenu",
46
+ provide() {
47
+ return {
48
+ keySlot: computed(() => this.keySlot),
49
+ };
50
+ },
51
+ props: {
52
+ breadcrumbsLinkClass: {
53
+ type: [String, Object],
54
+ required: false,
55
+ default: "a_btn a_btn_link",
56
+ },
57
+ breadcrumbsTruncatedDropdownProps: {
58
+ type: Object,
59
+ required: false,
60
+ default: () => ({}),
61
+ },
62
+ breadcrumbsTruncatedOffset: {
63
+ type: Number,
64
+ required: false,
65
+ default: () => DROPDOWN_BUTTON_WIDTH + BREADCRUMBS_PADDINGS,
66
+ },
67
+ buttonToggleClass: {
68
+ type: [String, Object],
69
+ required: false,
70
+ default: "a_btn a_btn_transparent_secondary a_btn_small",
71
+ },
72
+ buttonToggleProps: {
73
+ type: Object,
74
+ required: false,
75
+ default: () => ({}),
76
+ },
77
+ canChangeBodyClass: {
78
+ type: Boolean,
79
+ required: false,
80
+ default: true,
81
+ },
82
+ compareUrlCallback: {
83
+ type: Function,
84
+ required: false,
85
+ default: undefined,
86
+ },
87
+ data: {
88
+ type: Array,
89
+ required: false,
90
+ default: () => [],
91
+ },
92
+ hasSearch: {
93
+ type: Boolean,
94
+ required: false,
95
+ default: true,
96
+ },
97
+ isBackdropMobileClickable: {
98
+ type: Boolean,
99
+ required: false,
100
+ default: true,
101
+ },
102
+ isBlockerClickable: {
103
+ type: Boolean,
104
+ required: false,
105
+ },
106
+ isBodyFocusAfterClick: {
107
+ type: Boolean,
108
+ required: false,
109
+ default: true,
110
+ },
111
+ isBreadcrumbsTruncated: {
112
+ type: Boolean,
113
+ required: false,
114
+ default: false,
115
+ },
116
+ isLinkTruncated: {
117
+ type: Boolean,
118
+ required: false,
119
+ default: true,
120
+ },
121
+ isMenuOpenInitial: {
122
+ type: Boolean,
123
+ required: false,
124
+ default: true,
125
+ },
126
+ isSearchBreadcrumbsTruncated: {
127
+ type: Boolean,
128
+ required: false,
129
+ default: true,
130
+ },
131
+ isTranslated: {
132
+ type: Boolean,
133
+ required: false,
134
+ },
135
+ keyChildren: {
136
+ type: String,
137
+ required: false,
138
+ default: undefined,
139
+ },
140
+ keyGroup: {
141
+ type: String,
142
+ required: false,
143
+ default: "group",
144
+ },
145
+ keyIcon: {
146
+ type: String,
147
+ required: false,
148
+ default: "icon",
149
+ },
150
+ keyId: {
151
+ type: String,
152
+ required: false,
153
+ default: "id",
154
+ },
155
+ keyLabel: {
156
+ type: String,
157
+ required: false,
158
+ default: "label",
159
+ },
160
+ keyLabelCallback: {
161
+ type: Function,
162
+ required: false,
163
+ default: undefined,
164
+ },
165
+ keyParent: {
166
+ type: String,
167
+ required: false,
168
+ default: "parent",
169
+ },
170
+ keySlot: {
171
+ type: String,
172
+ required: false,
173
+ default: undefined,
174
+ },
175
+ menuId: {
176
+ type: String,
177
+ required: false,
178
+ default: () => uniqueId("a_menu_"),
179
+ },
180
+ onlyMobile: {
181
+ type: Boolean,
182
+ required: false,
183
+ default: false,
184
+ },
185
+ selectorClose: {
186
+ type: [String, Array],
187
+ required: false,
188
+ default: undefined,
189
+ },
190
+ selectorCloseIds: {
191
+ type: [String, Array],
192
+ required: false,
193
+ default: undefined,
194
+ },
195
+ showCountChildren: {
196
+ type: Boolean,
197
+ required: false,
198
+ default: true,
199
+ },
200
+ useBackdropMobile: {
201
+ type: Boolean,
202
+ required: false,
203
+ default: true,
204
+ },
205
+ useEscapeForMobile: {
206
+ type: Boolean,
207
+ required: false,
208
+ default: true,
209
+ },
210
+ },
211
+ setup(props) {
212
+ const isLinkTruncated = toRef(props, "isLinkTruncated");
213
+ const showCountChildren = toRef(props, "showCountChildren");
214
+ const breadcrumbsTruncatedOffset = toRef(props, "breadcrumbsTruncatedOffset");
215
+
216
+ const isMounted = ref(false);
217
+
218
+ const {
219
+ dataKeyById,
220
+ dataProParent,
221
+ } = DataAPI(props);
222
+
223
+ const {
224
+ isSearchActive,
225
+ itemsWithSearch,
226
+ modelSearch,
227
+ resetSearch,
228
+ searchInputId,
229
+ styleSearchPanelMain,
230
+ updateModelSearch,
231
+ } = SearchAPI(props, {
232
+ dataKeyById,
233
+ });
234
+
235
+ const {
236
+ closeAllPanels,
237
+ isSubMenuOpen,
238
+ panelParentsOpen,
239
+ setDefaultMenu,
240
+ togglePanel,
241
+ } = PanelsAPI(props, {
242
+ dataKeyById,
243
+ resetSearch,
244
+ });
245
+
246
+ const {
247
+ closeMenu,
248
+ isMenuOpen,
249
+ removeBodyClasses,
250
+ toggleMenu,
251
+ } = ToggleAPI(props);
252
+
253
+ const {
254
+ isDesktopSubMenuVisibleWhenMenuClosed,
255
+ menuRef,
256
+ removeListenerForKeydownDesktop,
257
+ removeListenerForKeydownMobile,
258
+ setListenerForKeydownDesktop,
259
+ setListenerForKeydownMobile,
260
+ } = KeydownAPI(props, {
261
+ closeMenu,
262
+ isMenuOpen,
263
+ isSubMenuOpen,
264
+ panelParentsOpen,
265
+ togglePanel,
266
+ });
267
+
268
+ const {
269
+ clickOnSearchBtn,
270
+ keydownOnSearchBtn,
271
+ } = SearchBtnAPI({
272
+ searchInputId,
273
+ toggleMenu,
274
+ });
275
+
276
+ const {
277
+ attributesMenuClick,
278
+ attributesMobile,
279
+ headerId,
280
+ } = MenuAttributesAPI(props, {
281
+ isMenuOpen,
282
+ toggleMenu,
283
+ });
284
+
285
+ const {
286
+ destroyEventBusUpdateViewOnResize,
287
+ initEventBusUpdateViewOnResize,
288
+ initMenuOpenOrClose,
289
+ isMenuInitialized,
290
+ isMobileWidth,
291
+ } = ResizeAPI(props, {
292
+ removeListenerForKeydownMobile,
293
+ toggleMenu,
294
+ });
295
+
296
+ const {
297
+ clickMenuLink,
298
+ isMenuLinkClicked,
299
+ } = LinkClickAPI(props, {
300
+ closeAllPanels,
301
+ isMenuOpen,
302
+ isMobileWidth,
303
+ resetSearch,
304
+ toggleMenu,
305
+ });
306
+
307
+ const {
308
+ attributesBlockerClick,
309
+ } = AMenuBlockerClickAPI(props, {
310
+ closeAllPanels,
311
+ });
312
+
313
+ const {
314
+ activeRoutesIds,
315
+ checkAllRoutes,
316
+ currentRoute,
317
+ } = CheckRoutesAPI(props, {
318
+ dataKeyById,
319
+ dataProParent,
320
+ isMenuLinkClicked,
321
+ isMenuOpen,
322
+ panelParentsOpen,
323
+ });
324
+
325
+ const {
326
+ destroyPopover,
327
+ startPopper,
328
+ } = PopoverAPI(props, {
329
+ menuRef,
330
+ isMenuOpen,
331
+ panelParentsOpen,
332
+ });
333
+
334
+ const {
335
+ isLeastOnePanelOpenAndMenuClosed,
336
+ } = PanelMainAPI({
337
+ isMenuOpen,
338
+ panelParentsOpen,
339
+ });
340
+
341
+ const {
342
+ clickAttributesBackdrop,
343
+ isBackdropVisible,
344
+ } = BackdropAPI(props, {
345
+ isMenuOpen,
346
+ isMobileWidth,
347
+ toggleMenu,
348
+ });
349
+
350
+ watch(currentRoute, () => {
351
+ checkAllRoutes();
352
+ }, {
353
+ immediate: true,
354
+ deep: true,
355
+ });
356
+
357
+ watch(isMenuOpen, newValue => {
358
+ if (!isMenuInitialized.value) {
359
+ return;
360
+ }
361
+ resetSearch();
362
+ closeAllPanels();
363
+ if (newValue) {
364
+ destroyPopover();
365
+ setListenerForKeydownMobile();
366
+ } else {
367
+ removeListenerForKeydownMobile();
368
+ }
369
+ });
370
+
371
+ watch(panelParentsOpen, () => {
372
+ startPopper();
373
+ }, {
374
+ deep: true,
375
+ });
376
+
377
+ watch(isDesktopSubMenuVisibleWhenMenuClosed, newValue => {
378
+ if (newValue) {
379
+ setListenerForKeydownDesktop();
380
+ } else {
381
+ removeListenerForKeydownDesktop();
382
+ }
383
+ });
384
+
385
+ provide("activeRoutesIds", computed(() => activeRoutesIds.value));
386
+ provide("clickMenuLink", clickMenuLink);
387
+ provide("isLinkTruncated", computed(() => isLinkTruncated.value));
388
+ provide("isMenuOpen", computed(() => isMenuOpen.value));
389
+ provide("panelParentsOpen", panelParentsOpen);
390
+ provide("showCountChildren", computed(() => showCountChildren.value));
391
+ provide("togglePanel", togglePanel);
392
+ provide("breadcrumbsTruncatedOffset", computed(() => breadcrumbsTruncatedOffset.value));
393
+
394
+ onMounted(() => {
395
+ isMounted.value = true;
396
+ initMenuOpenOrClose();
397
+ initEventBusUpdateViewOnResize();
398
+ });
399
+
400
+ onBeforeUnmount(() => {
401
+ removeBodyClasses();
402
+ destroyEventBusUpdateViewOnResize();
403
+ destroyPopover();
404
+ removeListenerForKeydownDesktop();
405
+ removeListenerForKeydownMobile();
406
+ });
407
+
408
+ return {
409
+ activeRoutesIds,
410
+ attributesBlockerClick,
411
+ attributesMenuClick,
412
+ attributesMobile,
413
+ checkAllRoutes,
414
+ clickAttributesBackdrop,
415
+ clickOnSearchBtn,
416
+ dataKeyById,
417
+ dataProParent,
418
+ headerId,
419
+ isBackdropVisible,
420
+ isLeastOnePanelOpenAndMenuClosed,
421
+ isMenuOpen,
422
+ isMobileWidth,
423
+ isMounted,
424
+ isSearchActive,
425
+ isSubMenuOpen,
426
+ itemsWithSearch,
427
+ keydownOnSearchBtn,
428
+ menuRef,
429
+ modelSearch,
430
+ panelParentsOpen,
431
+ removeBodyClasses,
432
+ searchInputId,
433
+ setDefaultMenu,
434
+ styleSearchPanelMain,
435
+ toggleMenu,
436
+ togglePanel,
437
+ updateModelSearch,
438
+ };
439
+ },
440
+ render() {
441
+ if (!this.isMounted) {
442
+ return null;
443
+ }
444
+
445
+ return h("nav", {
446
+ ref: "menuRef",
447
+ id: this.menuId,
448
+ "aria-labelledby": this.headerId,
449
+ class: [
450
+ "a_menu",
451
+ {
452
+ a_menu_sub_open: this.isSubMenuOpen,
453
+ a_menu_open: this.isMenuOpen,
454
+ a_menu_close: !this.isMenuOpen,
455
+ a_menu_only_mobile: this.onlyMobile,
456
+ a_menu_mobile: this.isMobileWidth || this.onlyMobile,
457
+ },
458
+ ],
459
+ ...this.attributesMobile,
460
+ ...this.attributesMenuClick,
461
+ }, [
462
+ h("div", {
463
+ class: "a_menu__navbar_top",
464
+ }, [
465
+ h(AMenuButtonToggle, {
466
+ buttonToggleProps: this.buttonToggleProps,
467
+ canChangeBodyClass: this.canChangeBodyClass,
468
+ class: this.buttonToggleClass,
469
+ insideMenu: true,
470
+ menuId: this.menuId,
471
+ selectorClose: this.selectorClose,
472
+ selectorCloseIds: this.selectorCloseIds,
473
+ }),
474
+ this.$slots.menuSearch && this.$slots.menuSearch(),
475
+ this.hasSearch && h(AInput, {
476
+ id: this.searchInputId,
477
+ class: "a_menu__navbar_top__search",
478
+ modelValue: this.modelSearch,
479
+ label: "_A_MENU_2_SEARCH_",
480
+ "onUpdate:modelValue": this.updateModelSearch,
481
+ }),
482
+ ]),
483
+ h("div", {
484
+ class: "a_menu__panels__main",
485
+ style: this.styleSearchPanelMain,
486
+ }, [
487
+ h("div", {
488
+ class: "a_menu__navbar_top_sub",
489
+ }, [
490
+ h(ATranslation, {
491
+ id: this.headerId,
492
+ class: "a_menu__navbar_top_sub__text",
493
+ tag: "strong",
494
+ text: "_A_MENU_2_MAIN_MENU_",
495
+ }),
496
+ this.hasSearch && h(AButton, {
497
+ role: "button",
498
+ tabindex: 0,
499
+ tag: "a",
500
+ class: "a_menu__navbar_top_sub__search a_menu__link a_menu__link_btn",
501
+ iconLeft: Search,
502
+ iconClass: "a_menu__link__icon",
503
+ title: "_A_MENU_2_OPEN_SEARCH_",
504
+ textScreenReader: "_A_MENU_2_OPEN_SEARCH_",
505
+ onClick: this.clickOnSearchBtn,
506
+ onKeydown: this.keydownOnSearchBtn,
507
+ }),
508
+ ]),
509
+ h(AVerticalScroll, {
510
+ class: {
511
+ a_menu__vertical_scroll_hidden: this.isLeastOnePanelOpenAndMenuClosed,
512
+ },
513
+ disabled: this.isMenuOpen || this.isLeastOnePanelOpenAndMenuClosed,
514
+ }, () => [
515
+ h(AMenuPanel, {
516
+ attributesBlockerClick: this.attributesBlockerClick,
517
+ dataKeyById: this.dataKeyById,
518
+ dataProParentChildren: this.dataProParent.children,
519
+ isBreadcrumbsTruncated: this.isBreadcrumbsTruncated,
520
+ isPanelMain: true,
521
+ isSearchActive: this.isSearchActive,
522
+ keyGroup: this.keyGroup,
523
+ keyIcon: this.keyIcon,
524
+ menuId: this.menuId,
525
+ paneIndex: "00",
526
+ panelItems: this.dataProParent.main,
527
+ panelParentsOpen: this.panelParentsOpen,
528
+ }, this.$slots),
529
+ ]),
530
+ h("div", {
531
+ class: "a_menu__panels",
532
+ }, [
533
+ Object.keys(this.dataProParent.children).map((key, paneIndex) => {
534
+ return h(AMenuPanel, {
535
+ key,
536
+ attributesBlockerClick: {},
537
+ breadcrumbsLinkClass: this.breadcrumbsLinkClass,
538
+ breadcrumbsTruncatedDropdownProps: this.breadcrumbsTruncatedDropdownProps,
539
+ dataKeyById: this.dataKeyById,
540
+ dataProParentChildren: this.dataProParent.children,
541
+ isBreadcrumbsTruncated: this.isBreadcrumbsTruncated,
542
+ isSearchActive: this.isSearchActive,
543
+ keyGroup: this.keyGroup,
544
+ keyIcon: this.keyIcon,
545
+ menuId: this.menuId,
546
+ paneIndex,
547
+ panelItems: this.dataProParent.children[key],
548
+ panelParentsOpen: this.panelParentsOpen,
549
+ parentId: key,
550
+ }, this.$slots);
551
+ }),
552
+ ]),
553
+ ]),
554
+ h(AMenuSearchPanel, {
555
+ breadcrumbsLinkClass: this.breadcrumbsLinkClass,
556
+ breadcrumbsTruncatedDropdownProps: this.breadcrumbsTruncatedDropdownProps,
557
+ dataProParentChildren: this.dataProParent.children,
558
+ isSearchActive: this.isSearchActive,
559
+ isSearchBreadcrumbsTruncated: this.isSearchBreadcrumbsTruncated,
560
+ itemsWithSearch: this.itemsWithSearch,
561
+ menuId: this.menuId,
562
+ modelSearch: this.modelSearch,
563
+ }, this.$slots),
564
+
565
+ this.isBackdropVisible
566
+ ? h(Teleport, {
567
+ to: "body",
568
+ }, [
569
+ h("div", {
570
+ class: "a_menu__backdrop a_backdrop a_backdrop_fade",
571
+ "aria-hidden": true,
572
+ ...this.clickAttributesBackdrop,
573
+ }),
574
+ ])
575
+ : "",
576
+ ]);
577
+ },
578
+ };