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.
- package/CHANGELOG.md +1098 -1090
- package/dist/aloha-vue.es.js +15671 -15507
- package/dist/aloha-vue.umd.js +68 -68
- package/package.json +99 -99
- package/scss/_base.scss +62 -62
- package/scss/aloha-vue.scss +68 -68
- package/scss/components/AFilters.scss +304 -304
- package/scss/components/AFormElement/AValidatedJson.scss +6 -6
- package/scss/components/AMenu.scss +627 -627
- package/scss/components/AModal.scss +44 -44
- package/scss/components/APagination.scss +167 -167
- package/scss/components/ARate.scss +78 -78
- package/scss/components/AResizer.scss +63 -63
- package/scss/components/ATable.scss +819 -819
- package/scss/components/ATableForm.scss +307 -307
- package/scss/components/AVerticalScroll.scss +47 -47
- package/scss/components/AWizard.scss +669 -669
- package/scss/components/ui/ADatepicker.scss +342 -342
- package/scss/components/ui/ADatepickerRange.scss +45 -45
- package/scss/components/ui/AFieldset.scss +78 -78
- package/scss/components/ui/AInputNumber.scss +62 -62
- package/scss/components/ui/AInputNumberRange.scss +30 -30
- package/scss/components/ui/ASelect.scss +236 -236
- package/scss/components/ui/ASlider.scss +186 -186
- package/scss/components/ui/ASwitch.scss +148 -148
- package/scss/components/ui/ui.scss +254 -254
- package/scss/text/text_alignment.scss +39 -39
- package/scss/text/text_transform.scss +51 -51
- package/scss/text/text_wrapping.scss +40 -40
- package/scss/utils/badge.scss +45 -45
- package/scss/utils/checkbox_radio.scss +134 -134
- package/scss/utils/color.scss +46 -46
- package/scss/utils/dropdown.scss +185 -185
- package/scss/utils/list.scss +75 -75
- package/scss/utils/modal.scss +173 -173
- package/scss/utils/sizing.scss +137 -137
- package/scss/utils/spacing.scss +63 -63
- package/scss/utils/tooltip.scss +63 -63
- package/src/AAccordion/AAccordion.js +206 -206
- package/src/AAccordion/compositionAPI/IndexesForOpenAPI.js +63 -63
- package/src/AAccordion/compositionAPI/ToggleAPI.js +85 -85
- package/src/AAlert/AAlert.js +216 -216
- package/src/AAlert/compositionAPI/ClassAPI.js +21 -21
- package/src/AAlert/i18n/AAlertI18n.js +19 -19
- package/src/AAlert/i18n/ar.json +2 -2
- package/src/AAlert/i18n/de.json +2 -2
- package/src/AAlert/i18n/en.json +2 -2
- package/src/AAlert/i18n/es.json +2 -2
- package/src/AAlert/i18n/fr.json +2 -2
- package/src/AAlert/i18n/hr.json +2 -2
- package/src/AAlert/i18n/it.json +2 -2
- package/src/AAlert/i18n/ru.json +2 -2
- package/src/AButton/AButton.js +275 -275
- package/src/ACarousel/ACarousel.js +361 -361
- package/src/ACarousel/ACarouselBtn/ACarouselBtn.js +75 -75
- package/src/ACarousel/ACarouselBtn/compositionAPI/ClassAPI.js +16 -16
- package/src/ACarousel/ACarouselBtn/compositionAPI/TextAPI.js +25 -25
- package/src/ACarousel/ACarouselControls/ACarouselControls.js +114 -114
- package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/ACarouselControlsIndicator.js +146 -146
- package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/compositionAPI/ActiveAPI.js +33 -33
- package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/compositionAPI/AttributesAPI.js +40 -40
- package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/compositionAPI/EventsAPI.js +25 -25
- package/src/ACarousel/ACarouselControls/ACarouselControlsIndicator/compositionAPI/IconAPI.js +20 -20
- package/src/ACarousel/ACarouselControls/compositionAPI/AriaLabelAPI.js +20 -20
- package/src/ACarousel/ACarouselItem/ACarouselItem.js +83 -83
- package/src/ACarousel/ACarouselItem/compositionAPI/AttributesAPI.js +39 -39
- package/src/ACarousel/ACarouselItem/compositionAPI/IsActiveAPI.js +21 -21
- package/src/ACarousel/compositionAPI/ActiveAPI.js +111 -111
- package/src/ACarousel/compositionAPI/AriaLabelAPI.js +25 -25
- package/src/ACarousel/compositionAPI/ArrowsAPI.js +17 -17
- package/src/ACarousel/compositionAPI/ClassAPI.js +44 -44
- package/src/ACarousel/compositionAPI/DataAPI.js +41 -41
- package/src/ACarousel/compositionAPI/IndicatorsAPI.js +148 -148
- package/src/ACarousel/compositionAPI/TextsAPI.js +25 -25
- package/src/ACarousel/i18n/ACarouselI18n.js +19 -19
- package/src/ACarousel/i18n/ar.json +8 -8
- package/src/ACarousel/i18n/de.json +8 -8
- package/src/ACarousel/i18n/en.json +8 -8
- package/src/ACarousel/i18n/es.json +8 -8
- package/src/ACarousel/i18n/fr.json +8 -8
- package/src/ACarousel/i18n/hr.json +8 -8
- package/src/ACarousel/i18n/it.json +8 -8
- package/src/ACarousel/i18n/ru.json +8 -8
- package/src/ACollapse/ACollapse.js +103 -103
- package/src/ADropdown/ADropdown.js +544 -544
- package/src/ADropdown/ADropdownGroup.js +85 -85
- package/src/ADropdown/compositionAPI/ActionsAPI.js +147 -147
- package/src/ADropdown/compositionAPI/AttributesAPI.js +100 -100
- package/src/AElement/AElement.js +518 -518
- package/src/AElement/compositionAPI/AttributesAPI.js +51 -51
- package/src/AElement/compositionAPI/ClickAPI.js +30 -30
- package/src/AElement/compositionAPI/ComponentLocalAPI.js +23 -23
- package/src/AElement/compositionAPI/DisabledAPI.js +22 -22
- package/src/AElement/compositionAPI/HtmlTitleAPI.js +33 -33
- package/src/AElement/compositionAPI/KeydownAPI.js +35 -35
- package/src/AElement/compositionAPI/LoadingAPI.js +22 -22
- package/src/AElement/compositionAPI/RouterLinkAPI.js +20 -20
- package/src/AElement/compositionAPI/SwitchAPI.js +33 -33
- package/src/AElement/compositionAPI/TagAPI.js +34 -34
- package/src/AElement/compositionAPI/TextAPI.js +78 -78
- package/src/AElement/compositionAPI/TitleAPI.js +29 -29
- package/src/AFilters/AFilterCenter/AFilterCenter.js +154 -154
- package/src/AFilters/AFilterCenter/AFilterCenterItem/AFilterCenterItem.js +207 -207
- package/src/AFilters/AFilters/AFilters.js +282 -282
- package/src/AFilters/i18n/ar.json +30 -30
- package/src/AFilters/i18n/en.json +30 -30
- package/src/AFilters/i18n/es.json +30 -30
- package/src/AFilters/i18n/fr.json +30 -30
- package/src/AFilters/i18n/hr.json +30 -30
- package/src/AFilters/i18n/it.json +30 -30
- package/src/AFilters/i18n/ru.json +30 -30
- package/src/AGroupButtonDropdown/compositionAPI/ActionsAPI.js +143 -143
- package/src/ALink/ALink.js +253 -253
- package/src/AMenu/AMenu.js +578 -578
- package/src/AMenu/AMenuBreadcrumbs/compositionAPI/RenderTruncatedAPI.js +74 -74
- package/src/AMenu/AMenuButtonToggle/AMenuButtonToggle.js +94 -94
- package/src/AMenu/AMenuButtonToggle/compositionAPI/ToggleAPI.js +95 -95
- package/src/AMenu/AMenuPanelLink/AMenuPanelLink.js +250 -250
- package/src/AMenu/compositionAPI/BackdropAPI.js +42 -42
- package/src/AMenu/compositionAPI/KeydownAPI.js +197 -197
- package/src/AMenu/compositionAPI/LinkClickAPI.js +48 -48
- package/src/AMenu/compositionAPI/MenuAttributesAPI.js +51 -51
- package/src/AMenu/compositionAPI/PanelsAPI.js +78 -78
- package/src/AMenu/compositionAPI/ResizeAPI.js +74 -74
- package/src/AModal/AModal.js +530 -530
- package/src/AModalForm/AModalForm.js +383 -383
- package/src/AModalWizard/AModalWizard.js +563 -563
- package/src/ANotification/ANotification.js +60 -60
- package/src/APagination/APagination.js +111 -111
- package/src/APagination/APaginationCountPerPage/APaginationCountPerPage.js +209 -209
- package/src/APagination/APaginationCountPerPage/compositionAPI/MainAPI.js +40 -40
- package/src/APagination/APaginationCountPerPage/compositionAPI/TextsAPI.js +54 -54
- package/src/APagination/APaginationPages/APaginationPages.js +282 -282
- package/src/APagination/APaginationPages/compositionAPI/PaginationItemsAPI.js +102 -102
- package/src/APagination/APaginationPages/compositionAPI/TextsAPI.js +74 -74
- package/src/APagination/compositionAPI/ComponentsAPI.js +79 -79
- package/src/APagination/i18n/ar.json +12 -12
- package/src/APagination/i18n/es.json +12 -12
- package/src/APagination/i18n/fr.json +12 -12
- package/src/APagination/i18n/hr.json +12 -12
- package/src/APagination/i18n/it.json +12 -12
- package/src/APagination/i18n/ru.json +12 -12
- package/src/APopup/APopup.js +115 -115
- package/src/ATable/ATable.js +1159 -1157
- package/src/ATable/ATableHeaderThAction/ATableHeaderThAction.js +241 -241
- package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.ModelAPI.test.js +200 -200
- package/src/ATable/ATableSortingAdditional/compositionAPI/ModelAPI.js +152 -152
- package/src/ATable/ATableTd/ATableTd.js +145 -145
- package/src/ATable/ATableTdAction/ATableTdAction.js +223 -218
- package/src/ATable/ATableTopPanel/ATableTopPanel.js +433 -433
- package/src/ATable/ATableTr/ATableTr.js +8 -0
- package/src/ATable/ATableTr/compositionAPI/AttributesAPI.js +3 -1
- package/src/ATable/__tests__/ATable.RowIdsAPI.test.js +66 -0
- package/src/ATable/compositionAPI/ColumnActionAPI.js +105 -105
- package/src/ATable/compositionAPI/ColumnStylesAPI.js +50 -50
- package/src/ATable/compositionAPI/ColumnsGroupedAPI.js +187 -187
- package/src/ATable/compositionAPI/PaginationModesAPI.js +44 -44
- package/src/ATable/compositionAPI/PreviewAPI.js +201 -201
- package/src/ATable/compositionAPI/PreviewRightResizeAPI.js +135 -135
- package/src/ATable/compositionAPI/RowActionsAPI.js +3 -1
- package/src/ATable/compositionAPI/ScrollControlAPI.js +249 -249
- package/src/ATable/compositionAPI/SortAPI.js +86 -86
- package/src/ATable/compositionAPI/WidthAPI.js +73 -73
- package/src/ATableForm/ATableForm.js +595 -595
- package/src/ATableForm/ATableFormCell/ATableFormCell.js +204 -204
- package/src/ATableForm/ATableFormCell/compositionAPI/DisabledAPI.js +23 -23
- package/src/ATableForm/ATableFormCell/compositionAPI/ReadonlyAPI.js +31 -31
- package/src/ATableForm/ATableFormCellAction/ATableFormCellAction.js +282 -282
- package/src/ATableForm/ATableFormCellAction/compositionAPI/DeleteAPI.js +80 -80
- package/src/ATableForm/ATableFormCellAction/compositionAPI/DisabledAPI.js +60 -60
- package/src/ATableForm/ATableFormCellAction/compositionAPI/HiddenAPI.js +46 -46
- package/src/ATableForm/ATableFormCellAction/compositionAPI/IdsAPI.js +31 -31
- package/src/ATableForm/ATableFormCellAction/compositionAPI/StylesAPI.js +27 -27
- package/src/ATableForm/ATableFormCellAction/compositionAPI/TitleAPI.js +47 -47
- package/src/ATableForm/ATableFormCellDnd/compositionAPI/IdAPI.js +21 -21
- package/src/ATableForm/ATableFormCellList/ATableFormCellList.js +127 -127
- package/src/ATableForm/ATableFormCellList/compositionAPI/DataAPI.js +77 -77
- package/src/ATableForm/ATableFormRow/ATableFormRow.js +592 -592
- package/src/ATableForm/ATableFormRow/compositionAPI/ErrorsAPI.js +40 -40
- package/src/ATableForm/ATableFormRow/compositionAPI/FocusAPI.js +55 -55
- package/src/ATableForm/ATableFormRow/compositionAPI/IdAPI.js +19 -19
- package/src/ATableForm/__tests__/ATableForm.ListView.test.js +864 -864
- package/src/ATableForm/compositionAPI/ClassesAPI.js +23 -23
- package/src/ATableForm/compositionAPI/ColumnsGrowAPI.js +180 -180
- package/src/ATableForm/compositionAPI/DeleteAPI.js +9 -9
- package/src/ATableForm/compositionAPI/EditAPI.js +125 -125
- package/src/ATableForm/compositionAPI/RowsAPI.js +42 -42
- package/src/ATableForm/compositionAPI/StylesAPI.js +62 -62
- package/src/ATableForm/compositionAPI/WidthsAPI.js +20 -20
- package/src/ATableForm/i18n/ATableFormI18n.js +19 -19
- package/src/ATableForm/utils/getFormElement.js +32 -32
- package/src/ATabs/ATabsContent/ATabsContent.js +102 -102
- package/src/ATabs/ATabsTab/ATabsTab.js +185 -185
- package/src/ATooltip/ATooltip.js +221 -221
- package/src/ATranslation/compositionAPI/UtilsAPI.js +187 -187
- package/src/AVerticalScroll/compositionAPI/ScrollAPI.js +55 -55
- package/src/AWizard/AWizard.js +467 -467
- package/src/compositionAPI/AEventOutsideAPI.js +46 -46
- package/src/compositionAPI/AFiltersAPI.js +178 -178
- package/src/compositionAPI/AMobileAPI.js +32 -32
- package/src/compositionAPI/APageTabTitleAPI.js +84 -84
- package/src/compositionAPI/ARemPxAPI.js +47 -47
- package/src/compositionAPI/FocusByDestroyAPI.js +67 -67
- package/src/const/AKeys.js +9 -9
- package/src/directives/AOnHooks.js +0 -0
- package/src/filters/__tests__/filterValueByCondition.test.js +94 -94
- package/src/filters/filterValueByCondition.js +87 -87
- package/src/i18n/allLanguages.js +377 -377
- package/src/i18n/ar.json +4 -4
- package/src/i18n/de.json +4 -4
- package/src/i18n/en.json +4 -4
- package/src/i18n/es.json +4 -4
- package/src/i18n/fr.json +4 -4
- package/src/i18n/hr.json +4 -4
- package/src/i18n/it.json +4 -4
- package/src/i18n/ru.json +4 -4
- package/src/index.js +403 -403
- package/src/plugins/AAlertPlugin.js +53 -53
- package/src/plugins/ACarouselPlugin.js +34 -34
- package/src/plugins/ADatepickerPlugin.js +57 -57
- package/src/plugins/AFiltersPlugin.js +102 -102
- package/src/plugins/AInputCurrencyPlugin.js +31 -31
- package/src/plugins/AMobilePlugin.js +32 -32
- package/src/plugins/ARemPxPlugin.js +37 -37
- package/src/plugins/ASelectPlugin.js +51 -51
- package/src/plugins/ASelectStylesPlugin.js +2376 -2376
- package/src/temp/px_to_rem_mapping_1_to_800.md +802 -802
- package/src/ui/ACheckbox/ACheckbox.js +929 -929
- package/src/ui/ACheckbox/ACheckboxItem/ACheckboxItem.js +0 -0
- package/src/ui/ACheckboxRadioGroups/ACheckboxRadioGroups.js +0 -0
- package/src/ui/ADatepicker/ADatepicker.js +804 -803
- package/src/ui/ADatepicker/ADatepickerCalendarPanel/ADatepickerCalendarPanel.js +796 -796
- package/src/ui/ADatepicker/ADatepickerCalendarPanel/compositionAPI/CalendarAPI.js +51 -51
- package/src/ui/ADatepicker/compositionAPI/LanguagesAPI.js +92 -92
- package/src/ui/ADatepicker/compositionAPI/PlaceholderAPI.js +55 -55
- package/src/ui/ADatepicker/i18n/ADatepickerI18n.js +19 -19
- package/src/ui/ADatepicker/i18n/ar.json +47 -47
- package/src/ui/ADatepicker/i18n/de.json +48 -48
- package/src/ui/ADatepicker/i18n/en.json +48 -48
- package/src/ui/ADatepicker/i18n/es.json +47 -47
- package/src/ui/ADatepicker/i18n/fr.json +47 -47
- package/src/ui/ADatepicker/i18n/hr.json +47 -47
- package/src/ui/ADatepicker/i18n/it.json +47 -47
- package/src/ui/ADatepicker/i18n/ru.json +48 -48
- package/src/ui/ADatepicker/panel/APanelDate/APanelDate.js +196 -196
- package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/DatesAPI.js +66 -66
- package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/FocusAPI.js +96 -96
- package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/FocusActiveAPI.js +27 -27
- package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/SelectAPI.js +21 -21
- package/src/ui/ADatepicker/panel/APanelDate/compositionAPI/TableAPI.js +128 -128
- package/src/ui/ADatepicker/panel/APanelMonth/APanelMonth.js +129 -129
- package/src/ui/ADatepicker/panel/APanelMonth/compositionAPI/FocusAPI.js +94 -94
- package/src/ui/ADatepicker/panel/APanelMonth/compositionAPI/FocusActiveAPI.js +21 -21
- package/src/ui/ADatepicker/panel/APanelMonth/compositionAPI/MonthsAPI.js +51 -51
- package/src/ui/ADatepicker/panel/APanelMonth/compositionAPI/SelectAPI.js +29 -29
- package/src/ui/ADatepicker/panel/APanelYearItem/APanelYearItem.js +75 -75
- package/src/ui/ADatepicker/panel/APanelYearItem/compositionAPI/AttributesAPI.js +35 -35
- package/src/ui/ADatepicker/panel/APanelYearItem/compositionAPI/SelectAPI.js +35 -35
- package/src/ui/ADatepickerAlt/ADatepicker.js +1 -0
- package/src/ui/ADatepickerRange/ADatepickerRange.js +528 -525
- package/src/ui/AErrors/AErrors.js +149 -149
- package/src/ui/AErrors/AErrorsElement/AErrorsElement.js +0 -0
- package/src/ui/AErrors/i18n/AErrorsI18n.js +19 -19
- package/src/ui/AErrors/i18n/ar.json +3 -3
- package/src/ui/AErrors/i18n/de.json +2 -2
- package/src/ui/AErrors/i18n/en.json +3 -3
- package/src/ui/AErrors/i18n/es.json +3 -3
- package/src/ui/AErrors/i18n/fr.json +3 -3
- package/src/ui/AErrors/i18n/hr.json +3 -3
- package/src/ui/AErrors/i18n/it.json +3 -3
- package/src/ui/AErrors/i18n/ru.json +3 -3
- package/src/ui/AErrorsText/AErrorsText.js +62 -62
- package/src/ui/AFieldset/AFieldset.js +535 -535
- package/src/ui/AFieldset/compositionAPI/ModelAPI.js +54 -54
- package/src/ui/AForm/AForm.js +252 -252
- package/src/ui/AFormElement/AFormElement.js +160 -160
- package/src/ui/AFormElementBtnClear/AFormElementBtnClear.js +86 -86
- package/src/ui/AFormElementBtnClear/i18n/AFormElementBtnClearI18n.js +19 -19
- package/src/ui/AFormElementBtnClear/i18n/ar.json +2 -2
- package/src/ui/AFormElementBtnClear/i18n/de.json +2 -2
- package/src/ui/AFormElementBtnClear/i18n/en.json +2 -2
- package/src/ui/AFormElementBtnClear/i18n/es.json +2 -2
- package/src/ui/AFormElementBtnClear/i18n/fr.json +2 -2
- package/src/ui/AFormElementBtnClear/i18n/hr.json +2 -2
- package/src/ui/AFormElementBtnClear/i18n/it.json +2 -2
- package/src/ui/AFormElementBtnClear/i18n/ru.json +2 -2
- package/src/ui/AFormHelpText/AFormHelpText.js +37 -37
- package/src/ui/AFormLabelDescription/AFormLabelDescription.js +43 -43
- package/src/ui/AFormReadonly/AFormReadonly.js +193 -193
- package/src/ui/AGroup/AGroup.js +427 -427
- package/src/ui/AInput/AInput.js +516 -516
- package/src/ui/AInput/compositionAPI/ClassAPI.js +43 -43
- package/src/ui/AInputCurrency/AInputCurrency.js +620 -619
- package/src/ui/AInputCurrency/compositionAPI/IncreaseDecreaseAPI.js +76 -76
- package/src/ui/AInputCurrency/compositionAPI/InputEventsAPI.js +752 -752
- package/src/ui/AInputCurrency/compositionAPI/ModelAPI.js +88 -88
- package/src/ui/AInputCurrency/compositionAPI/UtilsAPI.js +67 -67
- package/src/ui/AInputFile/AInputFile.js +244 -243
- package/src/ui/AInputNumber/AInputNumber.js +491 -489
- package/src/ui/AInputNumber/compositionAPI/InputEventsAPI.js +196 -196
- package/src/ui/AInputNumber/compositionAPI/ModelAPI.js +72 -72
- package/src/ui/AInputNumberRange/AInputNumberRange.js +508 -505
- package/src/ui/AJson/AJson.js +434 -434
- package/src/ui/ALabel/ALabel.js +0 -0
- package/src/ui/AMultiselectOrdered/AMultiselectOrdered.js +935 -935
- package/src/ui/AOneCheckbox/AOneCheckbox.js +366 -366
- package/src/ui/ARadio/ARadio.js +924 -924
- package/src/ui/ARadio/ARadioItem/ARadioItem.js +0 -0
- package/src/ui/ARequired/ARequired.js +0 -0
- package/src/ui/ARouterLinkConfig/ARouterLinkConfig.js +391 -391
- package/src/ui/ARouterLinkConfig/compositionAPI/DataFormAPI.js +102 -102
- package/src/ui/ARouterLinkConfig/compositionAPI/ModelLocalAPI.js +96 -96
- package/src/ui/ARouterLinkConfig/compositionAPI/RouteAPI.js +51 -51
- package/src/ui/ASelect/ASelect.js +1210 -1209
- package/src/ui/ASelect/ASelectElement/ASelectElement.js +0 -0
- package/src/ui/ASelect/ASelectValueCloseable/compositionAPI/CloseAPI.js +28 -28
- package/src/ui/ASelect/compositionAPI/ToggleAPI.js +255 -255
- package/src/ui/ASelect/i18n/ar.json +6 -6
- package/src/ui/ASelect/i18n/de.json +7 -7
- package/src/ui/ASelect/i18n/en.json +6 -6
- package/src/ui/ASelect/i18n/es.json +6 -6
- package/src/ui/ASelect/i18n/fr.json +6 -6
- package/src/ui/ASelect/i18n/hr.json +6 -6
- package/src/ui/ASelect/i18n/it.json +6 -6
- package/src/ui/ASelect/i18n/ru.json +6 -6
- package/src/ui/ASelectIcon/ASelectIcon.js +386 -386
- package/src/ui/ASelectStyle/ASelectStyle.js +391 -391
- package/src/ui/ASelectStyle/compositionAPI/DataAPI.js +68 -68
- package/src/ui/ASelectStyle/compositionAPI/EventsAPI.js +24 -24
- package/src/ui/ASelectStyle/compositionAPI/KeyLabelCallbackAPI.js +15 -15
- package/src/ui/ASelectStyle/compositionAPI/TypeAPI.js +24 -24
- package/src/ui/ASelectStyle/i18n/ASelectStyleI18n.js +19 -19
- package/src/ui/ASelectStyle/i18n/ar.json +277 -277
- package/src/ui/ASelectStyle/i18n/de.json +277 -277
- package/src/ui/ASelectStyle/i18n/en.json +277 -277
- package/src/ui/ASelectStyle/i18n/es.json +277 -277
- package/src/ui/ASelectStyle/i18n/fr.json +277 -277
- package/src/ui/ASelectStyle/i18n/hr.json +277 -277
- package/src/ui/ASelectStyle/i18n/it.json +277 -277
- package/src/ui/ASelectStyle/i18n/ru.json +277 -277
- package/src/ui/ASlider/ASlider.js +672 -672
- package/src/ui/ASlider/compositionAPI/AriaAttributesAPI.js +121 -121
- package/src/ui/ASlider/compositionAPI/AttributesAPI.js +15 -15
- package/src/ui/ASlider/compositionAPI/DataAPI.js +115 -115
- package/src/ui/ASlider/compositionAPI/DragAndDropAPI.js +198 -198
- package/src/ui/ASlider/compositionAPI/LabelAPI.js +13 -13
- package/src/ui/ASlider/compositionAPI/MarksAPI.js +32 -32
- package/src/ui/ASlider/compositionAPI/SliderAPI.js +289 -289
- package/src/ui/ASlider/compositionAPI/StopsAPI.js +47 -47
- package/src/ui/ASlider/compositionAPI/StylesAPI.js +79 -79
- package/src/ui/ASlider/compositionAPI/TitleAPI.js +42 -42
- package/src/ui/ASlider/i18n/ASliderI18n.js +19 -19
- package/src/ui/ASlider/i18n/en.json +4 -4
- package/src/ui/ASwitch/ASwitch.js +439 -438
- package/src/ui/ATemplate/ATemplate.js +0 -0
- package/src/ui/ATextarea/ATextarea.js +437 -437
- package/src/ui/AUiComponents.js +59 -59
- package/src/ui/AUiContainerComponents.js +12 -12
- package/src/ui/AValidatedJson/AValidatedJson.js +594 -594
- package/src/ui/AValidatedJson/AValidatedJsonItem/compositionAPI/DeleteAPI.js +63 -63
- package/src/ui/AValidatedJson/AValidatedJsonItem/compositionAPI/DetailsAPI.js +59 -59
- package/src/ui/AValidatedJson/AValidatedJsonItem/compositionAPI/MoveAPI.js +50 -50
- package/src/ui/AValidatedJson/AValidatedJsonItem/compositionAPI/UpdateAPI.js +48 -48
- package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/DataFormAPI.js +69 -69
- package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/DisabledAPI.js +35 -35
- package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/ModelAPI.js +31 -31
- package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/SaveAPI.js +115 -115
- package/src/ui/AValidatedJson/AValidatedJsonModalCreateOrUpdate/composiitionAPI/TextAPI.js +25 -25
- package/src/ui/AValidatedJson/compositionAPI/AValidatedJsonErrorLabelsAPI.js +18 -18
- package/src/ui/AValidatedJson/compositionAPI/AttributesAPI.js +15 -15
- package/src/ui/AValidatedJson/compositionAPI/ChildrenAPI.js +70 -70
- package/src/ui/AValidatedJson/compositionAPI/EventsAPI.js +19 -19
- package/src/ui/AValidatedJson/compositionAPI/JsonModeAPI.js +119 -119
- package/src/ui/AValidatedJson/compositionAPI/ListModeAPI.js +144 -144
- package/src/ui/AValidatedJson/compositionAPI/ModelAPI.js +38 -38
- package/src/ui/AValidatedJson/compositionAPI/SingleModeAPI.js +112 -112
- package/src/ui/AValidatedJson/compositionAPI/TranslateAPI.js +22 -22
- package/src/ui/AValidatedJson/i18n/AValidatedJsonI18n.js +19 -19
- package/src/ui/AValidatedJson/i18n/ar.json +3 -3
- package/src/ui/AValidatedJson/i18n/de.json +22 -22
- package/src/ui/AValidatedJson/i18n/en.json +3 -3
- package/src/ui/AValidatedJson/i18n/es.json +3 -3
- package/src/ui/AValidatedJson/i18n/fr.json +3 -3
- package/src/ui/AValidatedJson/i18n/hr.json +3 -3
- package/src/ui/AValidatedJson/i18n/it.json +3 -3
- package/src/ui/AValidatedJson/i18n/ru.json +6 -6
- package/src/ui/compositionApi/UIDataGroupAPI.js +94 -94
- package/src/ui/compositionApi/UiAPI.js +185 -185
- package/src/ui/compositionApi/UiClearButtonAPI.js +19 -19
- package/src/ui/compositionApi/UiDataSortAPI.js +29 -29
- package/src/ui/compositionApi/UiDataWithKeyIdAndLabelAPI.js +155 -155
- package/src/ui/const/AUiTypes.js +69 -69
- package/src/ui/mixins/UiMixinProps.js +129 -129
- package/src/ui/utils/utils.js +79 -79
- package/src/utils/__tests__/utils.aOrderBy.test.js +237 -237
- package/src/utils/__tests__/utils.aSortBy.test.js +331 -331
- package/src/utils/__tests__/utilsArray.aFirst.test.js +54 -54
- package/src/utils/__tests__/utilsArray.aLast.test.js +54 -54
- package/src/utils/__tests__/utilsLang.isArguments.test.js +52 -52
- package/src/utils/__tests__/utilsLang.isArray.test.js +50 -50
- package/src/utils/__tests__/utilsLang.isArrayBuffer.test.js +48 -48
- package/src/utils/__tests__/utilsLang.isBoolean.test.js +56 -56
- package/src/utils/__tests__/utilsLang.isBuffer.test.js +47 -47
- package/src/utils/__tests__/utilsLang.isDate.test.js +54 -54
- package/src/utils/__tests__/utilsLang.isElement.test.js +53 -53
- package/src/utils/__tests__/utilsLang.isError.test.js +52 -52
- package/src/utils/__tests__/utilsLang.isFinite.test.js +57 -57
- package/src/utils/__tests__/utilsLang.isFunction.test.js +46 -46
- package/src/utils/__tests__/utilsLang.isInteger.test.js +58 -58
- package/src/utils/__tests__/utilsLang.isMap.test.js +50 -50
- package/src/utils/__tests__/utilsLang.isNaN.test.js +55 -55
- package/src/utils/__tests__/utilsLang.isNil.test.js +57 -57
- package/src/utils/__tests__/utilsLang.isNull.test.js +53 -53
- package/src/utils/__tests__/utilsLang.isNumber.test.js +54 -54
- package/src/utils/__tests__/utilsLang.isObject.test.js +49 -49
- package/src/utils/__tests__/utilsLang.isObjectLike.test.js +45 -45
- package/src/utils/__tests__/utilsLang.isPlainObject.test.js +60 -60
- package/src/utils/__tests__/utilsLang.isPromise.test.js +93 -93
- package/src/utils/__tests__/utilsLang.isRegExp.test.js +46 -46
- package/src/utils/__tests__/utilsLang.isSet.test.js +50 -50
- package/src/utils/__tests__/utilsLang.isString.test.js +50 -50
- package/src/utils/__tests__/utilsLang.isSymbol.test.js +45 -45
- package/src/utils/__tests__/utilsLang.isUndefined.test.js +57 -57
- package/src/utils/__tests__/utilsLang.isWeakMap.test.js +49 -49
- package/src/utils/__tests__/utilsLang.isWeakSet.test.js +49 -49
- package/src/utils/actions.js +67 -67
- package/src/utils/autosize.js +277 -277
- package/src/utils/isBrowser.js +12 -12
- package/src/utils/utils.js +253 -253
- package/src/utils/utilsArray.js +29 -29
- package/src/utils/utilsDOM.js +188 -188
- 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
|
+
}
|
package/src/const/AKeys.js
CHANGED
|
@@ -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
|
+
}
|