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,47 +1,47 @@
1
- import {
2
- ref,
3
- } from "vue";
4
-
5
- import {
6
- isBrowser,
7
- } from "../utils/isBrowser";
8
- import {
9
- isNumber,
10
- } from "lodash-es";
11
-
12
- export const remPx = ref(getRemPx());
13
- export const defaultRemPx = ref(16);
14
-
15
- export default function ARemPxAPI() {
16
- return {
17
- remPx,
18
- scalePxWithRem,
19
- };
20
- }
21
-
22
- function getRemPx() {
23
- if (!isBrowser()) {
24
- return 16;
25
- }
26
-
27
- const testEl = document.createElement("div");
28
- testEl.style.height = "1rem";
29
- testEl.style.position = "absolute";
30
- testEl.style.visibility = "hidden";
31
- document.body.appendChild(testEl);
32
- const value = testEl.offsetHeight;
33
- testEl.remove();
34
-
35
- return value;
36
- }
37
-
38
- export function scalePxWithRem(value, {
39
- baseRemPx = defaultRemPx.value,
40
- } = {}) {
41
- if (!isNumber(value)) {
42
- return value;
43
- }
44
-
45
- const scale = remPx.value / baseRemPx;
46
- return value * scale;
47
- }
1
+ import {
2
+ ref,
3
+ } from "vue";
4
+
5
+ import {
6
+ isBrowser,
7
+ } from "../utils/isBrowser";
8
+ import {
9
+ isNumber,
10
+ } from "lodash-es";
11
+
12
+ export const remPx = ref(getRemPx());
13
+ export const defaultRemPx = ref(16);
14
+
15
+ export default function ARemPxAPI() {
16
+ return {
17
+ remPx,
18
+ scalePxWithRem,
19
+ };
20
+ }
21
+
22
+ function getRemPx() {
23
+ if (!isBrowser()) {
24
+ return 16;
25
+ }
26
+
27
+ const testEl = document.createElement("div");
28
+ testEl.style.height = "1rem";
29
+ testEl.style.position = "absolute";
30
+ testEl.style.visibility = "hidden";
31
+ document.body.appendChild(testEl);
32
+ const value = testEl.offsetHeight;
33
+ testEl.remove();
34
+
35
+ return value;
36
+ }
37
+
38
+ export function scalePxWithRem(value, {
39
+ baseRemPx = defaultRemPx.value,
40
+ } = {}) {
41
+ if (!isNumber(value)) {
42
+ return value;
43
+ }
44
+
45
+ const scale = remPx.value / baseRemPx;
46
+ return value * scale;
47
+ }
@@ -1,67 +1,67 @@
1
- import {
2
- computed,
3
- toRef,
4
- } from "vue";
5
-
6
- import {
7
- cloneDeep,
8
- forEach,
9
- isArray,
10
- isString,
11
- } from "lodash-es";
12
-
13
- export default function FocusByDestroyAPI(props) {
14
- const selectorClose = toRef(props, "selectorClose");
15
- const selectorCloseIds = toRef(props, "selectorCloseIds");
16
-
17
- const selectorsCloseAll = computed(() => {
18
- const ALL_SELECTORS = [];
19
- if (selectorCloseIds.value) {
20
- if (isString(selectorCloseIds.value)) {
21
- ALL_SELECTORS.push(`#${ selectorCloseIds.value }`);
22
- } else if (isArray(selectorCloseIds.value)) {
23
- forEach(selectorCloseIds.value, selectorCloseId => {
24
- ALL_SELECTORS.push(`#${ selectorCloseId }`);
25
- });
26
- }
27
- }
28
- if (selectorClose.value) {
29
- if (isString(selectorClose.value)) {
30
- ALL_SELECTORS.push(selectorClose.value);
31
- } else if (isArray(selectorClose.value)) {
32
- ALL_SELECTORS.push(...selectorClose.value);
33
- }
34
- }
35
-
36
- return ALL_SELECTORS;
37
- });
38
-
39
- const setFocusByDestroyForSelector = ({ selector }) => {
40
- const ELEMENT = document.querySelector(selector);
41
- if (ELEMENT) {
42
- ELEMENT.focus();
43
- return true;
44
- }
45
- return false;
46
- };
47
-
48
- const setFocusByDestroy = () => {
49
- if (!selectorsCloseAll.value.length) {
50
- return;
51
- }
52
- const SELECTOR_CLOSE_ALL = cloneDeep(selectorsCloseAll.value);
53
-
54
- setTimeout(() => {
55
- forEach(SELECTOR_CLOSE_ALL, selector => {
56
- const STATUS_SUCCESS = setFocusByDestroyForSelector({ selector });
57
- if (STATUS_SUCCESS) {
58
- return false;
59
- }
60
- });
61
- }, 300);
62
- };
63
-
64
- return {
65
- setFocusByDestroy,
66
- };
67
- }
1
+ import {
2
+ computed,
3
+ toRef,
4
+ } from "vue";
5
+
6
+ import {
7
+ cloneDeep,
8
+ forEach,
9
+ isArray,
10
+ isString,
11
+ } from "lodash-es";
12
+
13
+ export default function FocusByDestroyAPI(props) {
14
+ const selectorClose = toRef(props, "selectorClose");
15
+ const selectorCloseIds = toRef(props, "selectorCloseIds");
16
+
17
+ const selectorsCloseAll = computed(() => {
18
+ const ALL_SELECTORS = [];
19
+ if (selectorCloseIds.value) {
20
+ if (isString(selectorCloseIds.value)) {
21
+ ALL_SELECTORS.push(`#${ selectorCloseIds.value }`);
22
+ } else if (isArray(selectorCloseIds.value)) {
23
+ forEach(selectorCloseIds.value, selectorCloseId => {
24
+ ALL_SELECTORS.push(`#${ selectorCloseId }`);
25
+ });
26
+ }
27
+ }
28
+ if (selectorClose.value) {
29
+ if (isString(selectorClose.value)) {
30
+ ALL_SELECTORS.push(selectorClose.value);
31
+ } else if (isArray(selectorClose.value)) {
32
+ ALL_SELECTORS.push(...selectorClose.value);
33
+ }
34
+ }
35
+
36
+ return ALL_SELECTORS;
37
+ });
38
+
39
+ const setFocusByDestroyForSelector = ({ selector }) => {
40
+ const ELEMENT = document.querySelector(selector);
41
+ if (ELEMENT) {
42
+ ELEMENT.focus();
43
+ return true;
44
+ }
45
+ return false;
46
+ };
47
+
48
+ const setFocusByDestroy = () => {
49
+ if (!selectorsCloseAll.value.length) {
50
+ return;
51
+ }
52
+ const SELECTOR_CLOSE_ALL = cloneDeep(selectorsCloseAll.value);
53
+
54
+ setTimeout(() => {
55
+ forEach(SELECTOR_CLOSE_ALL, selector => {
56
+ const STATUS_SUCCESS = setFocusByDestroyForSelector({ selector });
57
+ if (STATUS_SUCCESS) {
58
+ return false;
59
+ }
60
+ });
61
+ }, 300);
62
+ };
63
+
64
+ return {
65
+ setFocusByDestroy,
66
+ };
67
+ }
@@ -1,9 +1,9 @@
1
- export const AKeyChildren = "_a_children";
2
- export const AKeyHide = "_a_hide";
3
- export const AKeyId = "_a_id";
4
- export const AKeyIndex = "_a_index";
5
- export const AKeyLabel = "_a_label";
6
- export const AKeyLabelSearch = "_a_label_search";
7
- export const AKeyLink = "_a_link";
8
- export const AKeyParent = "_a_parent";
9
- export const AKeyType = "_a_type";
1
+ export const AKeyChildren = "_a_children";
2
+ export const AKeyHide = "_a_hide";
3
+ export const AKeyId = "_a_id";
4
+ export const AKeyIndex = "_a_index";
5
+ export const AKeyLabel = "_a_label";
6
+ export const AKeyLabelSearch = "_a_label_search";
7
+ export const AKeyLink = "_a_link";
8
+ export const AKeyParent = "_a_parent";
9
+ export const AKeyType = "_a_type";
File without changes
@@ -1,94 +1,94 @@
1
- import {
2
- describe,
3
- expect,
4
- it,
5
- } from "@jest/globals";
6
-
7
- import filterValueByCondition from "../filterValueByCondition";
8
-
9
- describe("Filter value by condition", () => {
10
- it("Returns the value from the first matching function condition", () => {
11
- const conditions = [
12
- {
13
- if: value => value > 3,
14
- then: value => `(${ value * 3 } Aloha)`,
15
- },
16
- {
17
- if: value => value < 2,
18
- then: "aloha",
19
- },
20
- ];
21
-
22
- expect(filterValueByCondition(4, { conditions })).toBe("(12 Aloha)");
23
- });
24
-
25
- it("Returns the value from the first matching string expression condition", () => {
26
- const conditions = [
27
- {
28
- if: "value > 3",
29
- thenTemplate: "(${ value * 3 } Aloha)",
30
- },
31
- {
32
- if: "value < 2",
33
- then: "aloha",
34
- },
35
- ];
36
-
37
- expect(filterValueByCondition(1, { conditions })).toBe("aloha");
38
- expect(filterValueByCondition(4, { conditions })).toBe("(12 Aloha)");
39
- });
40
-
41
- it("Returns defaultValue if no condition matches", () => {
42
- const conditions = [
43
- {
44
- if: "value > 3",
45
- then: "aloha",
46
- },
47
- ];
48
-
49
- expect(filterValueByCondition(2, {
50
- conditions,
51
- defaultValue: value => value / 2,
52
- })).toBe(1);
53
- });
54
-
55
- it("Returns defaultTemplate if no condition matches", () => {
56
- const conditions = [
57
- {
58
- if: "value > 3",
59
- then: "aloha",
60
- },
61
- ];
62
-
63
- expect(filterValueByCondition(2, {
64
- conditions,
65
- defaultTemplate: "${ value / 2 }",
66
- })).toBe("1");
67
- });
68
-
69
- it("Returns an empty string if no condition matches and no default value is set", () => {
70
- const conditions = [
71
- {
72
- if: "value > 3",
73
- then: "aloha",
74
- },
75
- ];
76
-
77
- expect(filterValueByCondition(2, { conditions })).toBe("");
78
- });
79
-
80
- it("Skips invalid string expressions", () => {
81
- const conditions = [
82
- {
83
- if: "value >",
84
- then: "invalid",
85
- },
86
- {
87
- if: "value < 3",
88
- then: "valid",
89
- },
90
- ];
91
-
92
- expect(filterValueByCondition(2, { conditions })).toBe("valid");
93
- });
94
- });
1
+ import {
2
+ describe,
3
+ expect,
4
+ it,
5
+ } from "@jest/globals";
6
+
7
+ import filterValueByCondition from "../filterValueByCondition";
8
+
9
+ describe("Filter value by condition", () => {
10
+ it("Returns the value from the first matching function condition", () => {
11
+ const conditions = [
12
+ {
13
+ if: value => value > 3,
14
+ then: value => `(${ value * 3 } Aloha)`,
15
+ },
16
+ {
17
+ if: value => value < 2,
18
+ then: "aloha",
19
+ },
20
+ ];
21
+
22
+ expect(filterValueByCondition(4, { conditions })).toBe("(12 Aloha)");
23
+ });
24
+
25
+ it("Returns the value from the first matching string expression condition", () => {
26
+ const conditions = [
27
+ {
28
+ if: "value > 3",
29
+ thenTemplate: "(${ value * 3 } Aloha)",
30
+ },
31
+ {
32
+ if: "value < 2",
33
+ then: "aloha",
34
+ },
35
+ ];
36
+
37
+ expect(filterValueByCondition(1, { conditions })).toBe("aloha");
38
+ expect(filterValueByCondition(4, { conditions })).toBe("(12 Aloha)");
39
+ });
40
+
41
+ it("Returns defaultValue if no condition matches", () => {
42
+ const conditions = [
43
+ {
44
+ if: "value > 3",
45
+ then: "aloha",
46
+ },
47
+ ];
48
+
49
+ expect(filterValueByCondition(2, {
50
+ conditions,
51
+ defaultValue: value => value / 2,
52
+ })).toBe(1);
53
+ });
54
+
55
+ it("Returns defaultTemplate if no condition matches", () => {
56
+ const conditions = [
57
+ {
58
+ if: "value > 3",
59
+ then: "aloha",
60
+ },
61
+ ];
62
+
63
+ expect(filterValueByCondition(2, {
64
+ conditions,
65
+ defaultTemplate: "${ value / 2 }",
66
+ })).toBe("1");
67
+ });
68
+
69
+ it("Returns an empty string if no condition matches and no default value is set", () => {
70
+ const conditions = [
71
+ {
72
+ if: "value > 3",
73
+ then: "aloha",
74
+ },
75
+ ];
76
+
77
+ expect(filterValueByCondition(2, { conditions })).toBe("");
78
+ });
79
+
80
+ it("Skips invalid string expressions", () => {
81
+ const conditions = [
82
+ {
83
+ if: "value >",
84
+ then: "invalid",
85
+ },
86
+ {
87
+ if: "value < 3",
88
+ then: "valid",
89
+ },
90
+ ];
91
+
92
+ expect(filterValueByCondition(2, { conditions })).toBe("valid");
93
+ });
94
+ });
@@ -1,87 +1,87 @@
1
- const executeExpression = ({ expression, value }) => {
2
- try {
3
- // eslint-disable-next-line no-new-func
4
- return Function("value", `"use strict"; return (${ expression });`)(value);
5
- } catch (e) {
6
- return undefined;
7
- }
8
- };
9
-
10
- const executeTemplate = ({ template, value }) => {
11
- try {
12
- // eslint-disable-next-line no-new-func
13
- return Function("value", `"use strict"; return \`${ template }\`;`)(value);
14
- } catch (e) {
15
- return "";
16
- }
17
- };
18
-
19
- const isMatched = ({ condition, value }) => {
20
- if (typeof condition === "function") {
21
- return !!condition(value);
22
- }
23
-
24
- if (typeof condition === "string") {
25
- return !!executeExpression({
26
- expression: condition,
27
- value,
28
- });
29
- }
30
-
31
- return false;
32
- };
33
-
34
- const resolveValue = ({ template, value, valueResult }) => {
35
- if (template !== undefined) {
36
- return executeTemplate({
37
- template,
38
- value,
39
- });
40
- }
41
-
42
- if (typeof valueResult === "function") {
43
- return valueResult(value);
44
- }
45
-
46
- return valueResult;
47
- };
48
-
49
- /**
50
- * Returns a value based on the first matching condition.
51
- * String conditions and templates are executed as JavaScript and must be used only with trusted configuration.
52
- *
53
- * @param {*} value - The value to be checked and used in conditions or templates.
54
- * @param {Object} [options] - Optional parameters.
55
- * @param {Array} [options.conditions=[]] - Ordered list of condition objects.
56
- * @param {Function|string} [options.conditions[].if] - Function or JavaScript expression that decides if condition matches.
57
- * @param {*} [options.conditions[].then] - Static value or function returned for the matching condition.
58
- * @param {string} [options.conditions[].thenTemplate] - Template string returned for the matching condition.
59
- * @param {*} [options.defaultValue=""] - Static value or function returned if no condition matches.
60
- * @param {string} [options.defaultTemplate] - Template string returned if no condition matches.
61
- *
62
- * @returns {*} The resolved value for the first matching condition or the default value.
63
- */
64
- export default function(value, {
65
- conditions = [],
66
- defaultValue = "",
67
- defaultTemplate,
68
- } = {}) {
69
- for (const CONDITION of conditions) {
70
- if (isMatched({
71
- condition: CONDITION.if,
72
- value,
73
- })) {
74
- return resolveValue({
75
- template: CONDITION.thenTemplate,
76
- value,
77
- valueResult: CONDITION.then,
78
- });
79
- }
80
- }
81
-
82
- return resolveValue({
83
- template: defaultTemplate,
84
- value,
85
- valueResult: defaultValue,
86
- });
87
- }
1
+ const executeExpression = ({ expression, value }) => {
2
+ try {
3
+ // eslint-disable-next-line no-new-func
4
+ return Function("value", `"use strict"; return (${ expression });`)(value);
5
+ } catch (e) {
6
+ return undefined;
7
+ }
8
+ };
9
+
10
+ const executeTemplate = ({ template, value }) => {
11
+ try {
12
+ // eslint-disable-next-line no-new-func
13
+ return Function("value", `"use strict"; return \`${ template }\`;`)(value);
14
+ } catch (e) {
15
+ return "";
16
+ }
17
+ };
18
+
19
+ const isMatched = ({ condition, value }) => {
20
+ if (typeof condition === "function") {
21
+ return !!condition(value);
22
+ }
23
+
24
+ if (typeof condition === "string") {
25
+ return !!executeExpression({
26
+ expression: condition,
27
+ value,
28
+ });
29
+ }
30
+
31
+ return false;
32
+ };
33
+
34
+ const resolveValue = ({ template, value, valueResult }) => {
35
+ if (template !== undefined) {
36
+ return executeTemplate({
37
+ template,
38
+ value,
39
+ });
40
+ }
41
+
42
+ if (typeof valueResult === "function") {
43
+ return valueResult(value);
44
+ }
45
+
46
+ return valueResult;
47
+ };
48
+
49
+ /**
50
+ * Returns a value based on the first matching condition.
51
+ * String conditions and templates are executed as JavaScript and must be used only with trusted configuration.
52
+ *
53
+ * @param {*} value - The value to be checked and used in conditions or templates.
54
+ * @param {Object} [options] - Optional parameters.
55
+ * @param {Array} [options.conditions=[]] - Ordered list of condition objects.
56
+ * @param {Function|string} [options.conditions[].if] - Function or JavaScript expression that decides if condition matches.
57
+ * @param {*} [options.conditions[].then] - Static value or function returned for the matching condition.
58
+ * @param {string} [options.conditions[].thenTemplate] - Template string returned for the matching condition.
59
+ * @param {*} [options.defaultValue=""] - Static value or function returned if no condition matches.
60
+ * @param {string} [options.defaultTemplate] - Template string returned if no condition matches.
61
+ *
62
+ * @returns {*} The resolved value for the first matching condition or the default value.
63
+ */
64
+ export default function(value, {
65
+ conditions = [],
66
+ defaultValue = "",
67
+ defaultTemplate,
68
+ } = {}) {
69
+ for (const CONDITION of conditions) {
70
+ if (isMatched({
71
+ condition: CONDITION.if,
72
+ value,
73
+ })) {
74
+ return resolveValue({
75
+ template: CONDITION.thenTemplate,
76
+ value,
77
+ valueResult: CONDITION.then,
78
+ });
79
+ }
80
+ }
81
+
82
+ return resolveValue({
83
+ template: defaultTemplate,
84
+ value,
85
+ valueResult: defaultValue,
86
+ });
87
+ }