aloha-vue 2.62.0 → 2.63.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 (429) hide show
  1. package/CHANGELOG.md +1070 -1061
  2. package/dist/aloha-vue.css +14 -6
  3. package/dist/aloha-vue.css.map +1 -1
  4. package/dist/aloha-vue.es.js +17124 -16970
  5. package/dist/aloha-vue.umd.js +69 -69
  6. package/package.json +99 -99
  7. package/scss/_base.scss +62 -62
  8. package/scss/aloha-vue.scss +68 -68
  9. package/scss/components/AFilters.scss +304 -304
  10. package/scss/components/AFormElement/AValidatedJson.scss +6 -6
  11. package/scss/components/AMenu.scss +627 -627
  12. package/scss/components/AModal.scss +44 -44
  13. package/scss/components/APagination.scss +167 -167
  14. package/scss/components/ARate.scss +78 -78
  15. package/scss/components/AResizer.scss +63 -63
  16. package/scss/components/ATable.scss +819 -819
  17. package/scss/components/ATableForm.scss +309 -288
  18. package/scss/components/AVerticalScroll.scss +47 -47
  19. package/scss/components/AWizard.scss +669 -669
  20. package/scss/components/ui/ADatepicker.scss +342 -342
  21. package/scss/components/ui/ADatepickerRange.scss +45 -45
  22. package/scss/components/ui/AFieldset.scss +78 -78
  23. package/scss/components/ui/AInputNumber.scss +62 -62
  24. package/scss/components/ui/AInputNumberRange.scss +30 -30
  25. package/scss/components/ui/ASelect.scss +236 -236
  26. package/scss/components/ui/ASlider.scss +186 -186
  27. package/scss/components/ui/ASwitch.scss +148 -148
  28. package/scss/components/ui/ui.scss +254 -254
  29. package/scss/text/text_alignment.scss +39 -39
  30. package/scss/text/text_transform.scss +51 -51
  31. package/scss/text/text_wrapping.scss +40 -40
  32. package/scss/utils/badge.scss +45 -45
  33. package/scss/utils/checkbox_radio.scss +134 -134
  34. package/scss/utils/color.scss +46 -46
  35. package/scss/utils/dropdown.scss +185 -185
  36. package/scss/utils/list.scss +75 -75
  37. package/scss/utils/modal.scss +173 -173
  38. package/scss/utils/sizing.scss +137 -137
  39. package/scss/utils/spacing.scss +63 -63
  40. package/scss/utils/tooltip.scss +63 -63
  41. package/src/AAccordion/AAccordion.js +206 -206
  42. package/src/AAccordion/compositionAPI/IndexesForOpenAPI.js +63 -63
  43. package/src/AAccordion/compositionAPI/ToggleAPI.js +85 -85
  44. package/src/AAlert/AAlert.js +216 -216
  45. package/src/AAlert/compositionAPI/ClassAPI.js +21 -21
  46. package/src/AAlert/i18n/AAlertI18n.js +19 -19
  47. package/src/AAlert/i18n/ar.json +2 -2
  48. package/src/AAlert/i18n/de.json +2 -2
  49. package/src/AAlert/i18n/en.json +2 -2
  50. package/src/AAlert/i18n/es.json +2 -2
  51. package/src/AAlert/i18n/fr.json +2 -2
  52. package/src/AAlert/i18n/hr.json +2 -2
  53. package/src/AAlert/i18n/it.json +2 -2
  54. package/src/AAlert/i18n/ru.json +2 -2
  55. package/src/AButton/AButton.js +275 -275
  56. package/src/ACarousel/ACarousel.js +361 -361
  57. package/src/ACarousel/ACarouselBtn/ACarouselBtn.js +75 -75
  58. package/src/ACarousel/ACarouselBtn/compositionAPI/ClassAPI.js +16 -16
  59. package/src/ACarousel/ACarouselBtn/compositionAPI/TextAPI.js +25 -25
  60. package/src/ACarousel/ACarouselControls/ACarouselControls.js +114 -114
  61. package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/ACarouselControlsIndicator.js +146 -146
  62. package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/compositionAPI/ActiveAPI.js +33 -33
  63. package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/compositionAPI/AttributesAPI.js +40 -40
  64. package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/compositionAPI/EventsAPI.js +25 -25
  65. package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/compositionAPI/IconAPI.js +20 -20
  66. package/src/ACarousel/ACarouselControls/compositionAPI/AriaLabelAPI.js +20 -20
  67. package/src/ACarousel/ACarouselItem/ACarouselItem.js +83 -83
  68. package/src/ACarousel/ACarouselItem/compositionAPI/AttributesAPI.js +39 -39
  69. package/src/ACarousel/ACarouselItem/compositionAPI/IsActiveAPI.js +21 -21
  70. package/src/ACarousel/compositionAPI/ActiveAPI.js +111 -111
  71. package/src/ACarousel/compositionAPI/AriaLabelAPI.js +25 -25
  72. package/src/ACarousel/compositionAPI/ArrowsAPI.js +17 -17
  73. package/src/ACarousel/compositionAPI/ClassAPI.js +44 -44
  74. package/src/ACarousel/compositionAPI/DataAPI.js +41 -41
  75. package/src/ACarousel/compositionAPI/IndicatorsAPI.js +148 -148
  76. package/src/ACarousel/compositionAPI/TextsAPI.js +25 -25
  77. package/src/ACarousel/i18n/ACarouselI18n.js +19 -19
  78. package/src/ACarousel/i18n/ar.json +8 -8
  79. package/src/ACarousel/i18n/de.json +8 -8
  80. package/src/ACarousel/i18n/en.json +8 -8
  81. package/src/ACarousel/i18n/es.json +8 -8
  82. package/src/ACarousel/i18n/fr.json +8 -8
  83. package/src/ACarousel/i18n/hr.json +8 -8
  84. package/src/ACarousel/i18n/it.json +8 -8
  85. package/src/ACarousel/i18n/ru.json +8 -8
  86. package/src/ACollapse/ACollapse.js +103 -103
  87. package/src/ADropdown/ADropdown.js +544 -544
  88. package/src/ADropdown/ADropdownGroup.js +85 -85
  89. package/src/ADropdown/compositionAPI/ActionsAPI.js +147 -147
  90. package/src/ADropdown/compositionAPI/AttributesAPI.js +100 -100
  91. package/src/AElement/AElement.js +518 -518
  92. package/src/AElement/compositionAPI/AttributesAPI.js +51 -51
  93. package/src/AElement/compositionAPI/ClickAPI.js +30 -30
  94. package/src/AElement/compositionAPI/ComponentLocalAPI.js +23 -23
  95. package/src/AElement/compositionAPI/DisabledAPI.js +22 -22
  96. package/src/AElement/compositionAPI/HtmlTitleAPI.js +33 -33
  97. package/src/AElement/compositionAPI/KeydownAPI.js +35 -35
  98. package/src/AElement/compositionAPI/LoadingAPI.js +22 -22
  99. package/src/AElement/compositionAPI/RouterLinkAPI.js +20 -20
  100. package/src/AElement/compositionAPI/SwitchAPI.js +33 -33
  101. package/src/AElement/compositionAPI/TagAPI.js +34 -34
  102. package/src/AElement/compositionAPI/TextAPI.js +78 -78
  103. package/src/AElement/compositionAPI/TitleAPI.js +29 -29
  104. package/src/AFilters/AFilterCenter/AFilterCenter.js +154 -154
  105. package/src/AFilters/AFilterCenter/AFilterCenterItem/AFilterCenterItem.js +207 -207
  106. package/src/AFilters/AFilters/AFilters.js +282 -282
  107. package/src/AFilters/i18n/ar.json +30 -30
  108. package/src/AFilters/i18n/en.json +30 -30
  109. package/src/AFilters/i18n/es.json +30 -30
  110. package/src/AFilters/i18n/fr.json +30 -30
  111. package/src/AFilters/i18n/hr.json +30 -30
  112. package/src/AFilters/i18n/it.json +30 -30
  113. package/src/AFilters/i18n/ru.json +30 -30
  114. package/src/AGroupButtonDropdown/compositionAPI/ActionsAPI.js +143 -143
  115. package/src/ALink/ALink.js +253 -253
  116. package/src/AMenu/AMenu.js +578 -578
  117. package/src/AMenu/AMenuBreadcrumbs/compositionAPI/RenderTruncatedAPI.js +74 -74
  118. package/src/AMenu/AMenuButtonToggle/AMenuButtonToggle.js +94 -94
  119. package/src/AMenu/AMenuButtonToggle/compositionAPI/ToggleAPI.js +95 -95
  120. package/src/AMenu/AMenuPanelLink/AMenuPanelLink.js +250 -250
  121. package/src/AMenu/compositionAPI/BackdropAPI.js +42 -42
  122. package/src/AMenu/compositionAPI/KeydownAPI.js +197 -197
  123. package/src/AMenu/compositionAPI/LinkClickAPI.js +48 -48
  124. package/src/AMenu/compositionAPI/MenuAttributesAPI.js +51 -51
  125. package/src/AMenu/compositionAPI/PanelsAPI.js +78 -78
  126. package/src/AMenu/compositionAPI/ResizeAPI.js +74 -74
  127. package/src/AModal/AModal.js +530 -530
  128. package/src/AModalForm/AModalForm.js +383 -383
  129. package/src/AModalWizard/AModalWizard.js +563 -563
  130. package/src/ANotification/ANotification.js +60 -60
  131. package/src/APagination/APagination.js +111 -111
  132. package/src/APagination/APaginationCountPerPage/APaginationCountPerPage.js +209 -209
  133. package/src/APagination/APaginationCountPerPage/compositionAPI/MainAPI.js +40 -40
  134. package/src/APagination/APaginationCountPerPage/compositionAPI/TextsAPI.js +54 -54
  135. package/src/APagination/APaginationPages/APaginationPages.js +282 -282
  136. package/src/APagination/APaginationPages/compositionAPI/PaginationItemsAPI.js +102 -102
  137. package/src/APagination/APaginationPages/compositionAPI/TextsAPI.js +74 -74
  138. package/src/APagination/compositionAPI/ComponentsAPI.js +79 -79
  139. package/src/APagination/i18n/ar.json +12 -12
  140. package/src/APagination/i18n/es.json +12 -12
  141. package/src/APagination/i18n/fr.json +12 -12
  142. package/src/APagination/i18n/hr.json +12 -12
  143. package/src/APagination/i18n/it.json +12 -12
  144. package/src/APagination/i18n/ru.json +12 -12
  145. package/src/APopup/APopup.js +115 -115
  146. package/src/ATable/ATable.js +1163 -1163
  147. package/src/ATable/ATableHeaderThAction/ATableHeaderThAction.js +241 -241
  148. package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.ModelAPI.test.js +200 -200
  149. package/src/ATable/ATableSortingAdditional/compositionAPI/ModelAPI.js +152 -152
  150. package/src/ATable/ATableTd/ATableTd.js +145 -145
  151. package/src/ATable/ATableTdAction/ATableTdAction.js +223 -223
  152. package/src/ATable/ATableTopPanel/ATableTopPanel.js +433 -433
  153. package/src/ATable/compositionAPI/ColumnActionAPI.js +105 -105
  154. package/src/ATable/compositionAPI/ColumnStylesAPI.js +50 -50
  155. package/src/ATable/compositionAPI/ColumnsGroupedAPI.js +187 -187
  156. package/src/ATable/compositionAPI/PaginationModesAPI.js +44 -44
  157. package/src/ATable/compositionAPI/PreviewAPI.js +201 -201
  158. package/src/ATable/compositionAPI/PreviewRightResizeAPI.js +135 -135
  159. package/src/ATable/compositionAPI/ScrollControlAPI.js +249 -249
  160. package/src/ATable/compositionAPI/SortAPI.js +86 -86
  161. package/src/ATable/compositionAPI/WidthAPI.js +73 -73
  162. package/src/ATableForm/ATableForm.js +610 -602
  163. package/src/ATableForm/ATableFormCell/ATableFormCell.js +183 -183
  164. package/src/ATableForm/ATableFormCell/compositionAPI/DisabledAPI.js +20 -20
  165. package/src/ATableForm/ATableFormCell/compositionAPI/ReadonlyAPI.js +28 -28
  166. package/src/ATableForm/ATableFormCellAction/ATableFormCellAction.js +282 -282
  167. package/src/ATableForm/ATableFormCellAction/compositionAPI/DeleteAPI.js +80 -80
  168. package/src/ATableForm/ATableFormCellAction/compositionAPI/DisabledAPI.js +60 -60
  169. package/src/ATableForm/ATableFormCellAction/compositionAPI/HiddenAPI.js +46 -46
  170. package/src/ATableForm/ATableFormCellAction/compositionAPI/IdsAPI.js +31 -31
  171. package/src/ATableForm/ATableFormCellAction/compositionAPI/StylesAPI.js +29 -28
  172. package/src/ATableForm/ATableFormCellAction/compositionAPI/TitleAPI.js +47 -47
  173. package/src/ATableForm/ATableFormCellDnd/ATableFormCellDnd.js +6 -1
  174. package/src/ATableForm/ATableFormCellDnd/compositionAPI/IdAPI.js +21 -21
  175. package/src/ATableForm/ATableFormCellList/compositionAPI/DataAPI.js +61 -61
  176. package/src/ATableForm/ATableFormRow/ATableFormRow.js +580 -574
  177. package/src/ATableForm/ATableFormRow/compositionAPI/ErrorsAPI.js +40 -40
  178. package/src/ATableForm/ATableFormRow/compositionAPI/FocusAPI.js +55 -55
  179. package/src/ATableForm/ATableFormRow/compositionAPI/IdAPI.js +19 -19
  180. package/src/ATableForm/__tests__/ATableForm.DragAndDropAPI.test.js +48 -0
  181. package/src/ATableForm/__tests__/ATableForm.ListView.test.js +672 -460
  182. package/src/ATableForm/compositionAPI/ClassesAPI.js +23 -23
  183. package/src/ATableForm/compositionAPI/ColumnsAPI.js +4 -2
  184. package/src/ATableForm/compositionAPI/ColumnsGrowAPI.js +191 -190
  185. package/src/ATableForm/compositionAPI/DeleteAPI.js +9 -9
  186. package/src/ATableForm/compositionAPI/DragAndDropAPI.js +6 -5
  187. package/src/ATableForm/compositionAPI/EditAPI.js +127 -128
  188. package/src/ATableForm/compositionAPI/RowsAPI.js +42 -42
  189. package/src/ATableForm/compositionAPI/StylesAPI.js +62 -62
  190. package/src/ATableForm/compositionAPI/WidthsAPI.js +21 -21
  191. package/src/ATableForm/i18n/ATableFormI18n.js +19 -19
  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/AMobileAPI.js +32 -32
  200. package/src/compositionAPI/APageTabTitleAPI.js +84 -84
  201. package/src/compositionAPI/ARemPxAPI.js +47 -47
  202. package/src/compositionAPI/FocusByDestroyAPI.js +67 -67
  203. package/src/const/AKeys.js +9 -9
  204. package/src/directives/AOnHooks.js +0 -0
  205. package/src/i18n/allLanguages.js +377 -377
  206. package/src/i18n/ar.json +4 -4
  207. package/src/i18n/de.json +4 -4
  208. package/src/i18n/en.json +4 -4
  209. package/src/i18n/es.json +4 -4
  210. package/src/i18n/fr.json +4 -4
  211. package/src/i18n/hr.json +4 -4
  212. package/src/i18n/it.json +4 -4
  213. package/src/i18n/ru.json +4 -4
  214. package/src/index.js +402 -402
  215. package/src/plugins/AAlertPlugin.js +53 -53
  216. package/src/plugins/ACarouselPlugin.js +34 -34
  217. package/src/plugins/ADatepickerPlugin.js +57 -57
  218. package/src/plugins/AFiltersPlugin.js +102 -102
  219. package/src/plugins/AInputCurrencyPlugin.js +31 -31
  220. package/src/plugins/AMobilePlugin.js +32 -32
  221. package/src/plugins/ARemPxPlugin.js +37 -37
  222. package/src/plugins/ASelectPlugin.js +54 -54
  223. package/src/plugins/ASelectStylesPlugin.js +2376 -2376
  224. package/src/temp/px_to_rem_mapping_1_to_800.md +802 -802
  225. package/src/ui/ACheckbox/ACheckbox.js +929 -929
  226. package/src/ui/ACheckbox/ACheckboxItem/ACheckboxItem.js +0 -0
  227. package/src/ui/ACheckboxRadioGroups/ACheckboxRadioGroups.js +0 -0
  228. package/src/ui/ADatepicker/ADatepicker.js +807 -807
  229. package/src/ui/ADatepicker/ADatepickerCalendarPanel/ADatepickerCalendarPanel.js +796 -796
  230. package/src/ui/ADatepicker/ADatepickerCalendarPanel/compositionAPI/CalendarAPI.js +51 -51
  231. package/src/ui/ADatepicker/compositionAPI/LanguagesAPI.js +92 -92
  232. package/src/ui/ADatepicker/compositionAPI/PlaceholderAPI.js +55 -55
  233. package/src/ui/ADatepicker/i18n/ADatepickerI18n.js +19 -19
  234. package/src/ui/ADatepicker/i18n/ar.json +47 -47
  235. package/src/ui/ADatepicker/i18n/de.json +48 -48
  236. package/src/ui/ADatepicker/i18n/en.json +48 -48
  237. package/src/ui/ADatepicker/i18n/es.json +47 -47
  238. package/src/ui/ADatepicker/i18n/fr.json +47 -47
  239. package/src/ui/ADatepicker/i18n/hr.json +47 -47
  240. package/src/ui/ADatepicker/i18n/it.json +47 -47
  241. package/src/ui/ADatepicker/i18n/ru.json +48 -48
  242. package/src/ui/ADatepicker/panel/APanelDate/APanelDate.js +196 -196
  243. package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/DatesAPI.js +66 -66
  244. package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/FocusAPI.js +96 -96
  245. package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/FocusActiveAPI.js +27 -27
  246. package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/SelectAPI.js +21 -21
  247. package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/TableAPI.js +128 -128
  248. package/src/ui/ADatepicker/panel/APanelMonth/APanelMonth.js +129 -129
  249. package/src/ui/ADatepicker/panel/APanelMonth/compositionAPI/FocusAPI.js +94 -94
  250. package/src/ui/ADatepicker/panel/APanelMonth/compositionAPI/FocusActiveAPI.js +21 -21
  251. package/src/ui/ADatepicker/panel/APanelMonth/compositionAPI/MonthsAPI.js +51 -51
  252. package/src/ui/ADatepicker/panel/APanelMonth/compositionAPI/SelectAPI.js +29 -29
  253. package/src/ui/ADatepicker/panel/APanelYearItem/APanelYearItem.js +75 -75
  254. package/src/ui/ADatepicker/panel/APanelYearItem/compositionAPI/AttributesAPI.js +35 -35
  255. package/src/ui/ADatepicker/panel/APanelYearItem/compositionAPI/SelectAPI.js +35 -35
  256. package/src/ui/ADatepickerRange/ADatepickerRange.js +537 -537
  257. package/src/ui/AErrors/AErrors.js +149 -149
  258. package/src/ui/AErrors/AErrorsElement/AErrorsElement.js +0 -0
  259. package/src/ui/AErrors/i18n/AErrorsI18n.js +19 -19
  260. package/src/ui/AErrors/i18n/ar.json +3 -3
  261. package/src/ui/AErrors/i18n/de.json +2 -2
  262. package/src/ui/AErrors/i18n/en.json +3 -3
  263. package/src/ui/AErrors/i18n/es.json +3 -3
  264. package/src/ui/AErrors/i18n/fr.json +3 -3
  265. package/src/ui/AErrors/i18n/hr.json +3 -3
  266. package/src/ui/AErrors/i18n/it.json +3 -3
  267. package/src/ui/AErrors/i18n/ru.json +3 -3
  268. package/src/ui/AErrorsText/AErrorsText.js +62 -62
  269. package/src/ui/AFieldset/AFieldset.js +535 -535
  270. package/src/ui/AFieldset/compositionAPI/ModelAPI.js +54 -54
  271. package/src/ui/AForm/AForm.js +252 -252
  272. package/src/ui/AFormElement/AFormElement.js +160 -160
  273. package/src/ui/AFormElementBtnClear/AFormElementBtnClear.js +86 -86
  274. package/src/ui/AFormElementBtnClear/i18n/AFormElementBtnClearI18n.js +19 -19
  275. package/src/ui/AFormElementBtnClear/i18n/ar.json +2 -2
  276. package/src/ui/AFormElementBtnClear/i18n/de.json +2 -2
  277. package/src/ui/AFormElementBtnClear/i18n/en.json +2 -2
  278. package/src/ui/AFormElementBtnClear/i18n/es.json +2 -2
  279. package/src/ui/AFormElementBtnClear/i18n/fr.json +2 -2
  280. package/src/ui/AFormElementBtnClear/i18n/hr.json +2 -2
  281. package/src/ui/AFormElementBtnClear/i18n/it.json +2 -2
  282. package/src/ui/AFormElementBtnClear/i18n/ru.json +2 -2
  283. package/src/ui/AFormHelpText/AFormHelpText.js +37 -37
  284. package/src/ui/AFormLabelDescription/AFormLabelDescription.js +43 -43
  285. package/src/ui/AFormReadonly/AFormReadonly.js +193 -193
  286. package/src/ui/AGroup/AGroup.js +427 -427
  287. package/src/ui/AInput/AInput.js +516 -516
  288. package/src/ui/AInput/compositionAPI/ClassAPI.js +43 -43
  289. package/src/ui/AInputCurrency/AInputCurrency.js +620 -620
  290. package/src/ui/AInputCurrency/compositionAPI/IncreaseDecreaseAPI.js +76 -76
  291. package/src/ui/AInputCurrency/compositionAPI/InputEventsAPI.js +751 -751
  292. package/src/ui/AInputCurrency/compositionAPI/ModelAPI.js +88 -88
  293. package/src/ui/AInputCurrency/compositionAPI/UtilsAPI.js +54 -54
  294. package/src/ui/AInputFile/AInputFile.js +247 -247
  295. package/src/ui/AInputNumber/AInputNumber.js +497 -497
  296. package/src/ui/AInputNumber/compositionAPI/InputEventsAPI.js +196 -196
  297. package/src/ui/AInputNumber/compositionAPI/ModelAPI.js +72 -72
  298. package/src/ui/AInputNumberRange/AInputNumberRange.js +517 -517
  299. package/src/ui/AJson/AJson.js +434 -434
  300. package/src/ui/ALabel/ALabel.js +0 -0
  301. package/src/ui/AMultiselectOrdered/AMultiselectOrdered.js +935 -935
  302. package/src/ui/AOneCheckbox/AOneCheckbox.js +366 -366
  303. package/src/ui/ARadio/ARadio.js +924 -924
  304. package/src/ui/ARadio/ARadioItem/ARadioItem.js +0 -0
  305. package/src/ui/ARequired/ARequired.js +0 -0
  306. package/src/ui/ARouterLinkConfig/ARouterLinkConfig.js +391 -391
  307. package/src/ui/ARouterLinkConfig/compositionAPI/DataFormAPI.js +102 -102
  308. package/src/ui/ARouterLinkConfig/compositionAPI/ModelLocalAPI.js +96 -96
  309. package/src/ui/ARouterLinkConfig/compositionAPI/RouteAPI.js +51 -51
  310. package/src/ui/ASelect/ASelect.js +1339 -1339
  311. package/src/ui/ASelect/ASelectElement/ASelectElement.js +0 -0
  312. package/src/ui/ASelect/ASelectValueCloseable/ASelectValueCloseable.js +1 -1
  313. package/src/ui/ASelect/ASelectValueCloseable/compositionAPI/CloseAPI.js +28 -28
  314. package/src/ui/ASelect/compositionAPI/ToggleAPI.js +255 -255
  315. package/src/ui/ASelect/i18n/ar.json +6 -6
  316. package/src/ui/ASelect/i18n/de.json +7 -7
  317. package/src/ui/ASelect/i18n/en.json +6 -6
  318. package/src/ui/ASelect/i18n/es.json +6 -6
  319. package/src/ui/ASelect/i18n/fr.json +6 -6
  320. package/src/ui/ASelect/i18n/hr.json +6 -6
  321. package/src/ui/ASelect/i18n/it.json +6 -6
  322. package/src/ui/ASelect/i18n/ru.json +6 -6
  323. package/src/ui/ASelectIcon/ASelectIcon.js +386 -386
  324. package/src/ui/ASelectStyle/ASelectStyle.js +391 -391
  325. package/src/ui/ASelectStyle/compositionAPI/DataAPI.js +68 -68
  326. package/src/ui/ASelectStyle/compositionAPI/EventsAPI.js +24 -24
  327. package/src/ui/ASelectStyle/compositionAPI/KeyLabelCallbackAPI.js +15 -15
  328. package/src/ui/ASelectStyle/compositionAPI/TypeAPI.js +24 -24
  329. package/src/ui/ASelectStyle/i18n/ASelectStyleI18n.js +19 -19
  330. package/src/ui/ASelectStyle/i18n/ar.json +277 -277
  331. package/src/ui/ASelectStyle/i18n/de.json +277 -277
  332. package/src/ui/ASelectStyle/i18n/en.json +277 -277
  333. package/src/ui/ASelectStyle/i18n/es.json +277 -277
  334. package/src/ui/ASelectStyle/i18n/fr.json +277 -277
  335. package/src/ui/ASelectStyle/i18n/hr.json +277 -277
  336. package/src/ui/ASelectStyle/i18n/it.json +277 -277
  337. package/src/ui/ASelectStyle/i18n/ru.json +277 -277
  338. package/src/ui/ASlider/ASlider.js +672 -672
  339. package/src/ui/ASlider/compositionAPI/AriaAttributesAPI.js +121 -121
  340. package/src/ui/ASlider/compositionAPI/AttributesAPI.js +15 -15
  341. package/src/ui/ASlider/compositionAPI/DataAPI.js +115 -115
  342. package/src/ui/ASlider/compositionAPI/DragAndDropAPI.js +198 -198
  343. package/src/ui/ASlider/compositionAPI/LabelAPI.js +13 -13
  344. package/src/ui/ASlider/compositionAPI/MarksAPI.js +32 -32
  345. package/src/ui/ASlider/compositionAPI/SliderAPI.js +289 -289
  346. package/src/ui/ASlider/compositionAPI/StopsAPI.js +47 -47
  347. package/src/ui/ASlider/compositionAPI/StylesAPI.js +79 -79
  348. package/src/ui/ASlider/compositionAPI/TitleAPI.js +42 -42
  349. package/src/ui/ASlider/i18n/ASliderI18n.js +19 -19
  350. package/src/ui/ASlider/i18n/en.json +4 -4
  351. package/src/ui/ASwitch/ASwitch.js +442 -442
  352. package/src/ui/ATemplate/ATemplate.js +0 -0
  353. package/src/ui/ATextarea/ATextarea.js +437 -437
  354. package/src/ui/AUiComponents.js +59 -59
  355. package/src/ui/AUiContainerComponents.js +12 -12
  356. package/src/ui/AValidatedJson/AValidatedJson.js +594 -594
  357. package/src/ui/AValidatedJson/AValidatedJsonItem/compositionAPI/DeleteAPI.js +63 -63
  358. package/src/ui/AValidatedJson/AValidatedJsonItem/compositionAPI/DetailsAPI.js +59 -59
  359. package/src/ui/AValidatedJson/AValidatedJsonItem/compositionAPI/MoveAPI.js +50 -50
  360. package/src/ui/AValidatedJson/AValidatedJsonItem/compositionAPI/UpdateAPI.js +48 -48
  361. package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/DataFormAPI.js +69 -69
  362. package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/DisabledAPI.js +35 -35
  363. package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/ModelAPI.js +31 -31
  364. package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/SaveAPI.js +115 -115
  365. package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/TextAPI.js +25 -25
  366. package/src/ui/AValidatedJson/compositionAPI/AValidatedJsonErrorLabelsAPI.js +18 -18
  367. package/src/ui/AValidatedJson/compositionAPI/AttributesAPI.js +15 -15
  368. package/src/ui/AValidatedJson/compositionAPI/ChildrenAPI.js +70 -70
  369. package/src/ui/AValidatedJson/compositionAPI/EventsAPI.js +19 -19
  370. package/src/ui/AValidatedJson/compositionAPI/JsonModeAPI.js +119 -119
  371. package/src/ui/AValidatedJson/compositionAPI/ListModeAPI.js +144 -144
  372. package/src/ui/AValidatedJson/compositionAPI/ModelAPI.js +38 -38
  373. package/src/ui/AValidatedJson/compositionAPI/SingleModeAPI.js +112 -112
  374. package/src/ui/AValidatedJson/compositionAPI/TranslateAPI.js +22 -22
  375. package/src/ui/AValidatedJson/i18n/AValidatedJsonI18n.js +19 -19
  376. package/src/ui/AValidatedJson/i18n/ar.json +3 -3
  377. package/src/ui/AValidatedJson/i18n/de.json +22 -22
  378. package/src/ui/AValidatedJson/i18n/en.json +3 -3
  379. package/src/ui/AValidatedJson/i18n/es.json +3 -3
  380. package/src/ui/AValidatedJson/i18n/fr.json +3 -3
  381. package/src/ui/AValidatedJson/i18n/hr.json +3 -3
  382. package/src/ui/AValidatedJson/i18n/it.json +3 -3
  383. package/src/ui/AValidatedJson/i18n/ru.json +6 -6
  384. package/src/ui/compositionApi/UIDataGroupAPI.js +94 -94
  385. package/src/ui/compositionApi/UiAPI.js +185 -185
  386. package/src/ui/compositionApi/UiClearButtonAPI.js +19 -19
  387. package/src/ui/compositionApi/UiDataSortAPI.js +29 -29
  388. package/src/ui/compositionApi/UiDataWithKeyIdAndLabelAPI.js +155 -155
  389. package/src/ui/const/AUiTypes.js +69 -69
  390. package/src/ui/mixins/UiMixinProps.js +129 -129
  391. package/src/ui/utils/utils.js +79 -79
  392. package/src/utils/__tests__/utils.aOrderBy.test.js +237 -237
  393. package/src/utils/__tests__/utils.aSortBy.test.js +331 -331
  394. package/src/utils/__tests__/utilsArray.aFirst.test.js +54 -54
  395. package/src/utils/__tests__/utilsArray.aLast.test.js +54 -54
  396. package/src/utils/__tests__/utilsLang.isArguments.test.js +52 -52
  397. package/src/utils/__tests__/utilsLang.isArray.test.js +50 -50
  398. package/src/utils/__tests__/utilsLang.isArrayBuffer.test.js +48 -48
  399. package/src/utils/__tests__/utilsLang.isBoolean.test.js +56 -56
  400. package/src/utils/__tests__/utilsLang.isBuffer.test.js +47 -47
  401. package/src/utils/__tests__/utilsLang.isDate.test.js +54 -54
  402. package/src/utils/__tests__/utilsLang.isElement.test.js +53 -53
  403. package/src/utils/__tests__/utilsLang.isError.test.js +52 -52
  404. package/src/utils/__tests__/utilsLang.isFinite.test.js +57 -57
  405. package/src/utils/__tests__/utilsLang.isFunction.test.js +46 -46
  406. package/src/utils/__tests__/utilsLang.isInteger.test.js +58 -58
  407. package/src/utils/__tests__/utilsLang.isMap.test.js +50 -50
  408. package/src/utils/__tests__/utilsLang.isNaN.test.js +55 -55
  409. package/src/utils/__tests__/utilsLang.isNil.test.js +57 -57
  410. package/src/utils/__tests__/utilsLang.isNull.test.js +53 -53
  411. package/src/utils/__tests__/utilsLang.isNumber.test.js +54 -54
  412. package/src/utils/__tests__/utilsLang.isObject.test.js +49 -49
  413. package/src/utils/__tests__/utilsLang.isObjectLike.test.js +45 -45
  414. package/src/utils/__tests__/utilsLang.isPlainObject.test.js +60 -60
  415. package/src/utils/__tests__/utilsLang.isPromise.test.js +93 -93
  416. package/src/utils/__tests__/utilsLang.isRegExp.test.js +46 -46
  417. package/src/utils/__tests__/utilsLang.isSet.test.js +50 -50
  418. package/src/utils/__tests__/utilsLang.isString.test.js +50 -50
  419. package/src/utils/__tests__/utilsLang.isSymbol.test.js +45 -45
  420. package/src/utils/__tests__/utilsLang.isUndefined.test.js +57 -57
  421. package/src/utils/__tests__/utilsLang.isWeakMap.test.js +49 -49
  422. package/src/utils/__tests__/utilsLang.isWeakSet.test.js +49 -49
  423. package/src/utils/actions.js +67 -67
  424. package/src/utils/autosize.js +277 -277
  425. package/src/utils/isBrowser.js +12 -12
  426. package/src/utils/utils.js +253 -253
  427. package/src/utils/utilsArray.js +29 -29
  428. package/src/utils/utilsDOM.js +188 -188
  429. package/src/utils/utilsLang.js +346 -346
@@ -1,544 +1,544 @@
1
- import {
2
- h,
3
- onBeforeUnmount,
4
- onMounted,
5
- ref,
6
- Teleport,
7
- toRef,
8
- withDirectives,
9
- } from "vue";
10
- import {
11
- AElement,
12
- AIcon,
13
- AOnHooks,
14
- APlacements,
15
- focusableSelector,
16
- } from "../index";
17
-
18
- import APopupAPI from "../compositionAPI/APopupAPI";
19
- import ActionsAPI from "./compositionAPI/ActionsAPI";
20
- import AttributesAPI from "./compositionAPI/AttributesAPI";
21
- import ClassAPI from "./compositionAPI/ClassAPI";
22
- import EventsAPI from "./compositionAPI/EventsAPI";
23
- import FocusAPI from "./compositionAPI/FocusAPI";
24
- import PopoverAPI from "./compositionAPI/PopoverAPI";
25
- import PopperContainerAPI from "../ATooltip/compositionAPI/PopperContainerAPI";
26
- import RefsAPI from "./compositionAPI/RefsAPI";
27
- import ToggleAPI from "./compositionAPI/ToggleAPI";
28
-
29
- import ADropdownGroup from "./ADropdownGroup";
30
- import ChevronDown from "aloha-svg/dist/js/bootstrap/ChevronDown";
31
- import {
32
- difference,
33
- uniqueId,
34
- } from "lodash-es";
35
-
36
- export default {
37
- name: "ADropdown",
38
- inheritAttrs: false,
39
- props: {
40
- actions: {
41
- type: Array,
42
- required: false,
43
- default: () => [],
44
- },
45
- alwaysTranslate: {
46
- type: Boolean,
47
- required: false,
48
- },
49
- buttonAttributes: {
50
- type: Object,
51
- required: false,
52
- default: () => ({}),
53
- },
54
- buttonClass: {
55
- type: [String, Object],
56
- required: false,
57
- default: "a_btn a_btn_secondary",
58
- },
59
- buttonIconAttributes: {
60
- type: Object,
61
- required: false,
62
- default: () => ({}),
63
- },
64
- buttonIconClass: {
65
- type: String,
66
- required: false,
67
- default: undefined,
68
- },
69
- buttonIconLeft: {
70
- type: [String, Object],
71
- required: false,
72
- default: undefined,
73
- },
74
- buttonIconRight: {
75
- type: [String, Object],
76
- required: false,
77
- default: undefined,
78
- },
79
- buttonIconTag: {
80
- type: String,
81
- required: false,
82
- default: undefined,
83
- },
84
- buttonIsTitleHtml: {
85
- type: Boolean,
86
- required: false,
87
- },
88
- buttonLoading: {
89
- type: Boolean,
90
- required: false,
91
- default: false,
92
- },
93
- buttonLoadingAlign: {
94
- type: String,
95
- required: false,
96
- default: "right",
97
- validator: value => ["right", "left"].indexOf(value) !== -1,
98
- },
99
- buttonLoadingClass: {
100
- type: [String, Object],
101
- required: false,
102
- default: "a_spinner_small",
103
- },
104
- buttonPrevent: {
105
- type: Boolean,
106
- required: false,
107
- },
108
- buttonStop: {
109
- type: Boolean,
110
- required: false,
111
- },
112
- buttonTag: {
113
- type: String,
114
- required: false,
115
- default: "button",
116
- },
117
- buttonText: {
118
- type: [String, Number, Object, Array],
119
- required: false,
120
- default: undefined,
121
- },
122
- buttonTextAriaHidden: {
123
- type: Boolean,
124
- required: false,
125
- default: false,
126
- },
127
- buttonTextClass: {
128
- type: String,
129
- required: false,
130
- default: undefined,
131
- },
132
- buttonTextScreenReader: {
133
- type: [String, Number, Object, Array],
134
- required: false,
135
- default: undefined,
136
- },
137
- buttonTitle: {
138
- type: [String, Number, Object, Array],
139
- required: false,
140
- default: undefined,
141
- },
142
- buttonTitlePlacement: {
143
- type: String,
144
- required: false,
145
- default: "top",
146
- validator: value => ["top", "left", "bottom", "right"].indexOf(value) !== -1,
147
- },
148
- caretIcon: {
149
- type: String,
150
- required: false,
151
- default: ChevronDown,
152
- },
153
- class: {
154
- type: [String, Object],
155
- required: false,
156
- default: undefined,
157
- },
158
- disabled: {
159
- type: Boolean,
160
- required: false,
161
- },
162
- dropdownAttributes: {
163
- type: Object,
164
- required: false,
165
- default: () => ({}),
166
- },
167
- dropdownClass: {
168
- type: String,
169
- required: false,
170
- default: undefined,
171
- },
172
- dropdownRenderDefault: {
173
- type: Boolean,
174
- required: false,
175
- },
176
- dropdownTag: {
177
- type: String,
178
- required: false,
179
- default: "ul",
180
- },
181
- elementsForArrows: {
182
- type: String,
183
- required: false,
184
- default: focusableSelector,
185
- },
186
- extra: {
187
- type: Object,
188
- required: false,
189
- default: undefined,
190
- },
191
- keyGroup: {
192
- type: [String, Number, Array],
193
- required: false,
194
- default: undefined,
195
- },
196
- keyGroupLabelCallback: {
197
- type: Function,
198
- required: false,
199
- default: undefined,
200
- },
201
- floatingFlip: {
202
- type: Object,
203
- required: false,
204
-
205
- /*
206
- * mainAxis?: boolean;
207
- * crossAxis?: boolean;
208
- * fallbackAxisSideDirection?: 'none' | 'start' | 'end';
209
- * flipAlignment?: boolean;
210
- * fallbackPlacements?: Array<Placement>;
211
- * fallbackStrategy?: 'bestFit' | 'initialPlacement';
212
- */
213
- default: () => ({}),
214
- },
215
- floatingShift: {
216
- type: Object,
217
- required: false,
218
- default: () => ({
219
- use: true,
220
- crossAxis: true,
221
- padding: 20,
222
- }),
223
- },
224
- hasCaret: {
225
- type: Boolean,
226
- required: false,
227
- default: true,
228
- },
229
- id: {
230
- type: String,
231
- required: false,
232
- default: () => uniqueId("a_dropdown_"),
233
- },
234
- inBody: {
235
- type: Boolean,
236
- required: false,
237
- default: false,
238
- },
239
- isCloseByClickInside: {
240
- type: Boolean,
241
- required: false,
242
- default: true,
243
- },
244
- isCloseByClickOutside: {
245
- type: Boolean,
246
- required: false,
247
- default: true,
248
- },
249
- isCloseByButtonInvisibleInViewport: {
250
- type: Boolean,
251
- required: false,
252
- default: true,
253
- },
254
- isHideWithoutActionAndSlot: {
255
- type: Boolean,
256
- required: false,
257
- default: true,
258
- },
259
- isListWidthSameWithButton: {
260
- type: Boolean,
261
- required: false,
262
- },
263
- lockArrowsNavigation: {
264
- type: Boolean,
265
- required: false,
266
- default: true,
267
- },
268
- lockTabNavigation: {
269
- type: Boolean,
270
- required: false,
271
- default: true,
272
- },
273
- menuWidth: {
274
- type: Number,
275
- required: false,
276
- default: undefined,
277
- },
278
- persist: {
279
- type: Boolean,
280
- required: false,
281
- default: true,
282
- },
283
- placement: {
284
- type: String,
285
- required: false,
286
- default: "bottom-start",
287
- validator: placement => APlacements.indexOf(placement) !== -1,
288
- },
289
- popperContainerId: {
290
- type: String,
291
- required: false,
292
- default: "a_tooltip_container",
293
- },
294
- readonly: {
295
- type: Boolean,
296
- required: false,
297
- default: false,
298
- },
299
- sortOrderGroup: {
300
- type: String,
301
- required: false,
302
- default: undefined,
303
- validator: value => ["asc", "desc"].indexOf(value) !== -1,
304
- },
305
- triggers: {
306
- type: Array,
307
- required: false,
308
- default: () => ["click"],
309
- validator: value => difference(value, ["click", "hover", "focus"]).length === 0,
310
- },
311
- useEscape: {
312
- type: Boolean,
313
- required: false,
314
- default: true,
315
- },
316
- useRem: {
317
- type: Boolean,
318
- required: false,
319
- default: true,
320
- },
321
- },
322
- emits: [
323
- "open",
324
- "close",
325
- ],
326
- setup(props, context) {
327
- const id = toRef(props, "id");
328
-
329
- const isMounted = ref(false);
330
-
331
- const {
332
- closePopup,
333
- openPopup,
334
- } = APopupAPI();
335
-
336
- const {
337
- dropdownButtonRef,
338
- dropdownRef,
339
- } = RefsAPI();
340
-
341
- const {
342
- setFocusToFirstElement,
343
- } = FocusAPI(props, {
344
- dropdownRef,
345
- });
346
-
347
- const {
348
- destroyPopover,
349
- startPopper,
350
- } = PopoverAPI(props, {
351
- dropdownButtonRef,
352
- dropdownRef,
353
- onReferenceHidden,
354
- });
355
-
356
- const {
357
- buttonWidth,
358
- destroyEventCloseClick,
359
- destroyEventPressArrows,
360
- initWasOpened,
361
- onClose,
362
- onKeydown,
363
- onOpen,
364
- onToggle,
365
- statusExpanded,
366
- timerCloseHover,
367
- triggerOpen,
368
- wasOpened,
369
- } = ToggleAPI(props, context, {
370
- closePopup,
371
- destroyPopover,
372
- dropdownButtonRef,
373
- dropdownRef,
374
- openPopup,
375
- setFocusToFirstElement,
376
- startPopper,
377
- });
378
-
379
- const {
380
- eventsLocal,
381
- eventsMenu,
382
- } = EventsAPI(props, {
383
- onToggle,
384
- onKeydown,
385
- onOpen,
386
- onClose,
387
- timerCloseHover,
388
- triggerOpen,
389
- });
390
-
391
- const {
392
- idLocal,
393
- buttonAttributesDisabled,
394
- buttonAttributesLocal,
395
- buttonTagLocal,
396
- dropdownAttributesLocal,
397
- isMenuRendered,
398
- } = AttributesAPI(props, {
399
- eventsMenu,
400
- statusExpanded,
401
- wasOpened,
402
- });
403
-
404
- const {
405
- actionsFiltered,
406
- hasActions,
407
- } = ActionsAPI(props);
408
-
409
- const {
410
- addPopperContainerInBody,
411
- popperContainerIdSelector,
412
- } = PopperContainerAPI(props);
413
-
414
- const {
415
- buttonClassLocal,
416
- } = ClassAPI(props);
417
-
418
- function onReferenceHidden() {
419
- onClose({
420
- isFocusButton: false,
421
- trigger: "referenceHidden",
422
- });
423
- }
424
-
425
- initWasOpened();
426
-
427
- onMounted(() => {
428
- isMounted.value = true;
429
- addPopperContainerInBody();
430
- });
431
-
432
- onBeforeUnmount(() => {
433
- destroyEventCloseClick();
434
- destroyEventPressArrows();
435
- destroyPopover();
436
- closePopup({
437
- id: id.value,
438
- });
439
- });
440
-
441
- return {
442
- actionsFiltered,
443
- buttonAttributesDisabled,
444
- buttonAttributesLocal,
445
- buttonClassLocal,
446
- buttonTagLocal,
447
- buttonWidth,
448
- dropdownAttributesLocal,
449
- dropdownButtonRef,
450
- dropdownRef,
451
- eventsLocal,
452
- hasActions,
453
- idLocal,
454
- isMenuRendered,
455
- isMounted,
456
- onClose,
457
- onOpen,
458
- popperContainerIdSelector,
459
- startPopper,
460
- statusExpanded,
461
- };
462
- },
463
- render() {
464
- if (!this.isMounted) {
465
- return null;
466
- }
467
-
468
- if (this.isHideWithoutActionAndSlot &&
469
- !this.hasActions &&
470
- !this.$slots.dropdown) {
471
- return null;
472
- }
473
- return [
474
- h(AElement, {
475
- ref: "dropdownButtonRef",
476
- ...this.$attrs,
477
- id: this.idLocal,
478
- alwaysTranslate: this.alwaysTranslate,
479
- tag: this.buttonTagLocal,
480
- class: this.buttonClassLocal,
481
- text: this.buttonText,
482
- textScreenReader: this.buttonTextScreenReader,
483
- textAriaHidden: this.buttonTextAriaHidden,
484
- textClass: this.buttonTextClass,
485
- title: this.buttonTitle,
486
- isTitleHtml: this.buttonIsTitleHtml,
487
- titlePlacement: this.buttonTitlePlacement,
488
- loading: this.buttonLoading,
489
- loadingClass: this.buttonLoadingClass,
490
- loadingAlign: this.buttonLoadingAlign,
491
- iconLeft: this.buttonIconLeft,
492
- iconRight: this.buttonIconRight,
493
- iconClass: this.buttonIconClass,
494
- iconAttributes: this.buttonIconAttributes,
495
- iconTag: this.buttonIconTag,
496
- prevent: this.buttonPrevent,
497
- stop: this.buttonStop,
498
- extra: this.extra,
499
- type: "button",
500
- attributes: this.buttonAttributesLocal,
501
- ...this.buttonAttributesDisabled,
502
- ...this.eventsLocal,
503
- }, {
504
- default: () => {
505
- return this.$slots.button && this.$slots.button();
506
- },
507
- buttonAppend: () => {
508
- return this.hasCaret && !this.readonly && h(AIcon, {
509
- class: "a_dropdown__caret",
510
- icon: this.caretIcon,
511
- });
512
- },
513
- }),
514
- h(Teleport, {
515
- to: this.popperContainerIdSelector,
516
- disabled: !this.inBody,
517
- }, [
518
- this.isMenuRendered && withDirectives(h(
519
- "div",
520
- {
521
- ref: "dropdownRef",
522
- "aria-labelledby": this.idLocal,
523
- ariaHidden: !this.statusExpanded,
524
- ...this.dropdownAttributesLocal,
525
- },
526
- [
527
- h(this.dropdownTag, {}, [
528
- this.$slots.dropdown && this.$slots.dropdown(),
529
- this.hasActions && h(ADropdownGroup, {
530
- actions: this.actionsFiltered,
531
- alwaysTranslate: this.alwaysTranslate,
532
- dropdownId: this.idLocal,
533
- }, this.$slots),
534
- ]),
535
- ],
536
- ), [
537
- [AOnHooks, {
538
- mounted: this.startPopper,
539
- }],
540
- ]),
541
- ]),
542
- ];
543
- },
544
- };
1
+ import {
2
+ h,
3
+ onBeforeUnmount,
4
+ onMounted,
5
+ ref,
6
+ Teleport,
7
+ toRef,
8
+ withDirectives,
9
+ } from "vue";
10
+ import {
11
+ AElement,
12
+ AIcon,
13
+ AOnHooks,
14
+ APlacements,
15
+ focusableSelector,
16
+ } from "../index";
17
+
18
+ import APopupAPI from "../compositionAPI/APopupAPI";
19
+ import ActionsAPI from "./compositionAPI/ActionsAPI";
20
+ import AttributesAPI from "./compositionAPI/AttributesAPI";
21
+ import ClassAPI from "./compositionAPI/ClassAPI";
22
+ import EventsAPI from "./compositionAPI/EventsAPI";
23
+ import FocusAPI from "./compositionAPI/FocusAPI";
24
+ import PopoverAPI from "./compositionAPI/PopoverAPI";
25
+ import PopperContainerAPI from "../ATooltip/compositionAPI/PopperContainerAPI";
26
+ import RefsAPI from "./compositionAPI/RefsAPI";
27
+ import ToggleAPI from "./compositionAPI/ToggleAPI";
28
+
29
+ import ADropdownGroup from "./ADropdownGroup";
30
+ import ChevronDown from "aloha-svg/dist/js/bootstrap/ChevronDown";
31
+ import {
32
+ difference,
33
+ uniqueId,
34
+ } from "lodash-es";
35
+
36
+ export default {
37
+ name: "ADropdown",
38
+ inheritAttrs: false,
39
+ props: {
40
+ actions: {
41
+ type: Array,
42
+ required: false,
43
+ default: () => [],
44
+ },
45
+ alwaysTranslate: {
46
+ type: Boolean,
47
+ required: false,
48
+ },
49
+ buttonAttributes: {
50
+ type: Object,
51
+ required: false,
52
+ default: () => ({}),
53
+ },
54
+ buttonClass: {
55
+ type: [String, Object],
56
+ required: false,
57
+ default: "a_btn a_btn_secondary",
58
+ },
59
+ buttonIconAttributes: {
60
+ type: Object,
61
+ required: false,
62
+ default: () => ({}),
63
+ },
64
+ buttonIconClass: {
65
+ type: String,
66
+ required: false,
67
+ default: undefined,
68
+ },
69
+ buttonIconLeft: {
70
+ type: [String, Object],
71
+ required: false,
72
+ default: undefined,
73
+ },
74
+ buttonIconRight: {
75
+ type: [String, Object],
76
+ required: false,
77
+ default: undefined,
78
+ },
79
+ buttonIconTag: {
80
+ type: String,
81
+ required: false,
82
+ default: undefined,
83
+ },
84
+ buttonIsTitleHtml: {
85
+ type: Boolean,
86
+ required: false,
87
+ },
88
+ buttonLoading: {
89
+ type: Boolean,
90
+ required: false,
91
+ default: false,
92
+ },
93
+ buttonLoadingAlign: {
94
+ type: String,
95
+ required: false,
96
+ default: "right",
97
+ validator: value => ["right", "left"].indexOf(value) !== -1,
98
+ },
99
+ buttonLoadingClass: {
100
+ type: [String, Object],
101
+ required: false,
102
+ default: "a_spinner_small",
103
+ },
104
+ buttonPrevent: {
105
+ type: Boolean,
106
+ required: false,
107
+ },
108
+ buttonStop: {
109
+ type: Boolean,
110
+ required: false,
111
+ },
112
+ buttonTag: {
113
+ type: String,
114
+ required: false,
115
+ default: "button",
116
+ },
117
+ buttonText: {
118
+ type: [String, Number, Object, Array],
119
+ required: false,
120
+ default: undefined,
121
+ },
122
+ buttonTextAriaHidden: {
123
+ type: Boolean,
124
+ required: false,
125
+ default: false,
126
+ },
127
+ buttonTextClass: {
128
+ type: String,
129
+ required: false,
130
+ default: undefined,
131
+ },
132
+ buttonTextScreenReader: {
133
+ type: [String, Number, Object, Array],
134
+ required: false,
135
+ default: undefined,
136
+ },
137
+ buttonTitle: {
138
+ type: [String, Number, Object, Array],
139
+ required: false,
140
+ default: undefined,
141
+ },
142
+ buttonTitlePlacement: {
143
+ type: String,
144
+ required: false,
145
+ default: "top",
146
+ validator: value => ["top", "left", "bottom", "right"].indexOf(value) !== -1,
147
+ },
148
+ caretIcon: {
149
+ type: String,
150
+ required: false,
151
+ default: ChevronDown,
152
+ },
153
+ class: {
154
+ type: [String, Object],
155
+ required: false,
156
+ default: undefined,
157
+ },
158
+ disabled: {
159
+ type: Boolean,
160
+ required: false,
161
+ },
162
+ dropdownAttributes: {
163
+ type: Object,
164
+ required: false,
165
+ default: () => ({}),
166
+ },
167
+ dropdownClass: {
168
+ type: String,
169
+ required: false,
170
+ default: undefined,
171
+ },
172
+ dropdownRenderDefault: {
173
+ type: Boolean,
174
+ required: false,
175
+ },
176
+ dropdownTag: {
177
+ type: String,
178
+ required: false,
179
+ default: "ul",
180
+ },
181
+ elementsForArrows: {
182
+ type: String,
183
+ required: false,
184
+ default: focusableSelector,
185
+ },
186
+ extra: {
187
+ type: Object,
188
+ required: false,
189
+ default: undefined,
190
+ },
191
+ keyGroup: {
192
+ type: [String, Number, Array],
193
+ required: false,
194
+ default: undefined,
195
+ },
196
+ keyGroupLabelCallback: {
197
+ type: Function,
198
+ required: false,
199
+ default: undefined,
200
+ },
201
+ floatingFlip: {
202
+ type: Object,
203
+ required: false,
204
+
205
+ /*
206
+ * mainAxis?: boolean;
207
+ * crossAxis?: boolean;
208
+ * fallbackAxisSideDirection?: 'none' | 'start' | 'end';
209
+ * flipAlignment?: boolean;
210
+ * fallbackPlacements?: Array<Placement>;
211
+ * fallbackStrategy?: 'bestFit' | 'initialPlacement';
212
+ */
213
+ default: () => ({}),
214
+ },
215
+ floatingShift: {
216
+ type: Object,
217
+ required: false,
218
+ default: () => ({
219
+ use: true,
220
+ crossAxis: true,
221
+ padding: 20,
222
+ }),
223
+ },
224
+ hasCaret: {
225
+ type: Boolean,
226
+ required: false,
227
+ default: true,
228
+ },
229
+ id: {
230
+ type: String,
231
+ required: false,
232
+ default: () => uniqueId("a_dropdown_"),
233
+ },
234
+ inBody: {
235
+ type: Boolean,
236
+ required: false,
237
+ default: false,
238
+ },
239
+ isCloseByClickInside: {
240
+ type: Boolean,
241
+ required: false,
242
+ default: true,
243
+ },
244
+ isCloseByClickOutside: {
245
+ type: Boolean,
246
+ required: false,
247
+ default: true,
248
+ },
249
+ isCloseByButtonInvisibleInViewport: {
250
+ type: Boolean,
251
+ required: false,
252
+ default: true,
253
+ },
254
+ isHideWithoutActionAndSlot: {
255
+ type: Boolean,
256
+ required: false,
257
+ default: true,
258
+ },
259
+ isListWidthSameWithButton: {
260
+ type: Boolean,
261
+ required: false,
262
+ },
263
+ lockArrowsNavigation: {
264
+ type: Boolean,
265
+ required: false,
266
+ default: true,
267
+ },
268
+ lockTabNavigation: {
269
+ type: Boolean,
270
+ required: false,
271
+ default: true,
272
+ },
273
+ menuWidth: {
274
+ type: Number,
275
+ required: false,
276
+ default: undefined,
277
+ },
278
+ persist: {
279
+ type: Boolean,
280
+ required: false,
281
+ default: true,
282
+ },
283
+ placement: {
284
+ type: String,
285
+ required: false,
286
+ default: "bottom-start",
287
+ validator: placement => APlacements.indexOf(placement) !== -1,
288
+ },
289
+ popperContainerId: {
290
+ type: String,
291
+ required: false,
292
+ default: "a_tooltip_container",
293
+ },
294
+ readonly: {
295
+ type: Boolean,
296
+ required: false,
297
+ default: false,
298
+ },
299
+ sortOrderGroup: {
300
+ type: String,
301
+ required: false,
302
+ default: undefined,
303
+ validator: value => ["asc", "desc"].indexOf(value) !== -1,
304
+ },
305
+ triggers: {
306
+ type: Array,
307
+ required: false,
308
+ default: () => ["click"],
309
+ validator: value => difference(value, ["click", "hover", "focus"]).length === 0,
310
+ },
311
+ useEscape: {
312
+ type: Boolean,
313
+ required: false,
314
+ default: true,
315
+ },
316
+ useRem: {
317
+ type: Boolean,
318
+ required: false,
319
+ default: true,
320
+ },
321
+ },
322
+ emits: [
323
+ "open",
324
+ "close",
325
+ ],
326
+ setup(props, context) {
327
+ const id = toRef(props, "id");
328
+
329
+ const isMounted = ref(false);
330
+
331
+ const {
332
+ closePopup,
333
+ openPopup,
334
+ } = APopupAPI();
335
+
336
+ const {
337
+ dropdownButtonRef,
338
+ dropdownRef,
339
+ } = RefsAPI();
340
+
341
+ const {
342
+ setFocusToFirstElement,
343
+ } = FocusAPI(props, {
344
+ dropdownRef,
345
+ });
346
+
347
+ const {
348
+ destroyPopover,
349
+ startPopper,
350
+ } = PopoverAPI(props, {
351
+ dropdownButtonRef,
352
+ dropdownRef,
353
+ onReferenceHidden,
354
+ });
355
+
356
+ const {
357
+ buttonWidth,
358
+ destroyEventCloseClick,
359
+ destroyEventPressArrows,
360
+ initWasOpened,
361
+ onClose,
362
+ onKeydown,
363
+ onOpen,
364
+ onToggle,
365
+ statusExpanded,
366
+ timerCloseHover,
367
+ triggerOpen,
368
+ wasOpened,
369
+ } = ToggleAPI(props, context, {
370
+ closePopup,
371
+ destroyPopover,
372
+ dropdownButtonRef,
373
+ dropdownRef,
374
+ openPopup,
375
+ setFocusToFirstElement,
376
+ startPopper,
377
+ });
378
+
379
+ const {
380
+ eventsLocal,
381
+ eventsMenu,
382
+ } = EventsAPI(props, {
383
+ onToggle,
384
+ onKeydown,
385
+ onOpen,
386
+ onClose,
387
+ timerCloseHover,
388
+ triggerOpen,
389
+ });
390
+
391
+ const {
392
+ idLocal,
393
+ buttonAttributesDisabled,
394
+ buttonAttributesLocal,
395
+ buttonTagLocal,
396
+ dropdownAttributesLocal,
397
+ isMenuRendered,
398
+ } = AttributesAPI(props, {
399
+ eventsMenu,
400
+ statusExpanded,
401
+ wasOpened,
402
+ });
403
+
404
+ const {
405
+ actionsFiltered,
406
+ hasActions,
407
+ } = ActionsAPI(props);
408
+
409
+ const {
410
+ addPopperContainerInBody,
411
+ popperContainerIdSelector,
412
+ } = PopperContainerAPI(props);
413
+
414
+ const {
415
+ buttonClassLocal,
416
+ } = ClassAPI(props);
417
+
418
+ function onReferenceHidden() {
419
+ onClose({
420
+ isFocusButton: false,
421
+ trigger: "referenceHidden",
422
+ });
423
+ }
424
+
425
+ initWasOpened();
426
+
427
+ onMounted(() => {
428
+ isMounted.value = true;
429
+ addPopperContainerInBody();
430
+ });
431
+
432
+ onBeforeUnmount(() => {
433
+ destroyEventCloseClick();
434
+ destroyEventPressArrows();
435
+ destroyPopover();
436
+ closePopup({
437
+ id: id.value,
438
+ });
439
+ });
440
+
441
+ return {
442
+ actionsFiltered,
443
+ buttonAttributesDisabled,
444
+ buttonAttributesLocal,
445
+ buttonClassLocal,
446
+ buttonTagLocal,
447
+ buttonWidth,
448
+ dropdownAttributesLocal,
449
+ dropdownButtonRef,
450
+ dropdownRef,
451
+ eventsLocal,
452
+ hasActions,
453
+ idLocal,
454
+ isMenuRendered,
455
+ isMounted,
456
+ onClose,
457
+ onOpen,
458
+ popperContainerIdSelector,
459
+ startPopper,
460
+ statusExpanded,
461
+ };
462
+ },
463
+ render() {
464
+ if (!this.isMounted) {
465
+ return null;
466
+ }
467
+
468
+ if (this.isHideWithoutActionAndSlot &&
469
+ !this.hasActions &&
470
+ !this.$slots.dropdown) {
471
+ return null;
472
+ }
473
+ return [
474
+ h(AElement, {
475
+ ref: "dropdownButtonRef",
476
+ ...this.$attrs,
477
+ id: this.idLocal,
478
+ alwaysTranslate: this.alwaysTranslate,
479
+ tag: this.buttonTagLocal,
480
+ class: this.buttonClassLocal,
481
+ text: this.buttonText,
482
+ textScreenReader: this.buttonTextScreenReader,
483
+ textAriaHidden: this.buttonTextAriaHidden,
484
+ textClass: this.buttonTextClass,
485
+ title: this.buttonTitle,
486
+ isTitleHtml: this.buttonIsTitleHtml,
487
+ titlePlacement: this.buttonTitlePlacement,
488
+ loading: this.buttonLoading,
489
+ loadingClass: this.buttonLoadingClass,
490
+ loadingAlign: this.buttonLoadingAlign,
491
+ iconLeft: this.buttonIconLeft,
492
+ iconRight: this.buttonIconRight,
493
+ iconClass: this.buttonIconClass,
494
+ iconAttributes: this.buttonIconAttributes,
495
+ iconTag: this.buttonIconTag,
496
+ prevent: this.buttonPrevent,
497
+ stop: this.buttonStop,
498
+ extra: this.extra,
499
+ type: "button",
500
+ attributes: this.buttonAttributesLocal,
501
+ ...this.buttonAttributesDisabled,
502
+ ...this.eventsLocal,
503
+ }, {
504
+ default: () => {
505
+ return this.$slots.button && this.$slots.button();
506
+ },
507
+ buttonAppend: () => {
508
+ return this.hasCaret && !this.readonly && h(AIcon, {
509
+ class: "a_dropdown__caret",
510
+ icon: this.caretIcon,
511
+ });
512
+ },
513
+ }),
514
+ h(Teleport, {
515
+ to: this.popperContainerIdSelector,
516
+ disabled: !this.inBody,
517
+ }, [
518
+ this.isMenuRendered && withDirectives(h(
519
+ "div",
520
+ {
521
+ ref: "dropdownRef",
522
+ "aria-labelledby": this.idLocal,
523
+ ariaHidden: !this.statusExpanded,
524
+ ...this.dropdownAttributesLocal,
525
+ },
526
+ [
527
+ h(this.dropdownTag, {}, [
528
+ this.$slots.dropdown && this.$slots.dropdown(),
529
+ this.hasActions && h(ADropdownGroup, {
530
+ actions: this.actionsFiltered,
531
+ alwaysTranslate: this.alwaysTranslate,
532
+ dropdownId: this.idLocal,
533
+ }, this.$slots),
534
+ ]),
535
+ ],
536
+ ), [
537
+ [AOnHooks, {
538
+ mounted: this.startPopper,
539
+ }],
540
+ ]),
541
+ ]),
542
+ ];
543
+ },
544
+ };