aloha-vue 2.74.0 → 2.75.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 (166) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +22 -21
  3. package/dist/aloha-vue.css +13594 -13594
  4. package/dist/aloha-vue.css.map +1 -1
  5. package/dist/aloha-vue.es.js +59266 -64918
  6. package/dist/aloha-vue.umd.js +338 -211
  7. package/package.json +27 -34
  8. package/scss/components/ATable.scss +2 -2
  9. package/scss/utils/button.scss +362 -362
  10. package/scss/utils/funktions.scss +162 -162
  11. package/src/AAccordion/AAccordionItem/AAccordionItem.js +235 -230
  12. package/src/ACarousel/ACarousel.js +7 -2
  13. package/src/ADropdown/ADropdown.js +4 -1
  14. package/src/AFilters/AFilterCenter/AFilterCenter.js +5 -1
  15. package/src/AFilters/AFilterCenter/AFilterCenterItem/AFilterCenterItem.js +7 -2
  16. package/src/AFilters/AFiltersHorizontal/AFiltersHorizontal.js +412 -396
  17. package/src/AFilters/AFiltersHorizontal/AFiltersHorizontalFilter/AFiltersHorizontalFilter.js +102 -99
  18. package/src/AFilters/AFiltersHorizontal/compositionAPI/FiltersSavedDeleteAPI.js +108 -108
  19. package/src/AFilters/AFiltersMain/AFiltersMain.js +114 -111
  20. package/src/AFilters/AFiltersSaveModal/compositionAPI/SaveAPI.js +65 -65
  21. package/src/ALinkCopy/ALinkCopy.js +98 -95
  22. package/src/ALinkCopy/compositionAPI/CopyAPI.js +48 -48
  23. package/src/AList/__tests__/AList.test.js +33 -33
  24. package/src/AList/compositionAPI/__tests__/TagAPI.test.js +43 -43
  25. package/src/AMenu/AMenu.js +4 -1
  26. package/src/AMenu/AMenuBreadcrumbs/AMenuBreadcrumbs.js +240 -237
  27. package/src/AMenu/AMenuPanelLink/AMenuPanelLink.js +4 -1
  28. package/src/AMenu/AMenuSearchPanelBreadcrumbs/AMenuSearchPanelBreadcrumbs.js +122 -119
  29. package/src/AModalWizard/AModalWizard.js +58 -53
  30. package/src/AModalWizard/compositionAPI/__tests__/ScrollAPI.test.js +46 -46
  31. package/src/APagination/APaginationPages/APaginationPages.js +15 -4
  32. package/src/ARate/ARate.js +254 -249
  33. package/src/ARate/ARateIcon/ADecimalIcon/ADecimalIcon.js +53 -50
  34. package/src/ARate/ARateIcon/ARateIcon.js +109 -104
  35. package/src/AResizer/AResizer.js +167 -162
  36. package/src/ATable/ATableHeaderTh/compositionAPI/SortAPI.js +172 -167
  37. package/src/ATable/ATableHeaderThAction/ATableHeaderThAction.js +14 -4
  38. package/src/ATable/ATableHeaderThAction/ATableHeaderThActionItem/ATableHeaderThActionItem.js +191 -184
  39. package/src/ATable/ATablePreviewDown/ATablePreviewDown.js +72 -69
  40. package/src/ATable/ATablePreviewRight/ATablePreviewRight.js +265 -258
  41. package/src/ATable/ATableSortingAdditional/ATableSortingAdditional.js +224 -219
  42. package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.AttributesAPI.test.js +39 -39
  43. package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.ColumnsAPI.test.js +68 -68
  44. package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.DropdownAPI.test.js +45 -45
  45. package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.FormAPI.test.js +95 -95
  46. package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.ModelAPI.test.js +1 -1
  47. package/src/ATable/ATableTd/ATableTd.js +4 -1
  48. package/src/ATable/ATableTdAction/ATableTdAction.js +19 -12
  49. package/src/ATable/ATableTopPanel/ATableTopPanel.js +11 -3
  50. package/src/ATable/ATableTr/ATableTr.js +408 -405
  51. package/src/ATable/__tests__/ATable.HeaderSlot.test.js +102 -97
  52. package/src/ATable/__tests__/ATable.RowIdsAPI.test.js +66 -66
  53. package/src/ATableForm/ATableForm.js +88 -85
  54. package/src/ATableForm/ATableFormCellAction/ATableFormCellAction.js +14 -4
  55. package/src/ATableForm/ATableFormCellDnd/ATableFormCellDnd.js +196 -187
  56. package/src/ATableForm/ATableFormRow/compositionAPI/EditAPI.js +104 -104
  57. package/src/ATableForm/__tests__/ATableForm.DragAndDropAPI.test.js +200 -212
  58. package/src/ATableForm/__tests__/ATableForm.ListView.test.js +134 -174
  59. package/src/ATableForm/compositionAPI/IconsAPI.js +24 -21
  60. package/src/AVerticalScroll/AVerticalScroll.js +182 -177
  61. package/src/AWizard/AWizard.js +26 -21
  62. package/src/AWizard/AWizardStep/AWizardStep.js +275 -270
  63. package/src/AWizard/compositionAPI/__tests__/ChangeStepAPI.test.js +32 -32
  64. package/src/AWizard/compositionAPI/__tests__/LocalAPI.test.js +55 -55
  65. package/src/PuxDatepicker/PuxDatepickerCalendarPanel/PuxDatepickerCalendarPanel.js +646 -648
  66. package/src/PuxDatepicker/panel/PanelDate/PanelDate.js +300 -301
  67. package/src/PuxDatepicker/panel/PanelMonth/PanelMonth.js +148 -149
  68. package/src/PuxDatepicker/panel/PanelTime/PanelTime.js +256 -257
  69. package/src/PuxDatepicker/panel/PanelYear/PanelYear.js +136 -137
  70. package/src/PuxDatepicker/utils/index.js +100 -100
  71. package/src/compositionAPI/AHttpAPI.js +593 -593
  72. package/src/compositionAPI/__tests__/AHttpAPI.test.js +42 -42
  73. package/src/filters/__tests__/filterBoolean.test.js +38 -38
  74. package/src/filters/__tests__/filterCapitalize.test.js +38 -38
  75. package/src/filters/__tests__/filterCurrency.test.js +21 -21
  76. package/src/filters/__tests__/filterDate.test.js +42 -42
  77. package/src/filters/__tests__/filterDefaultForEmpty.test.js +24 -24
  78. package/src/filters/__tests__/filterEmail.test.js +42 -42
  79. package/src/filters/__tests__/filterEscapeHtml.test.js +45 -45
  80. package/src/filters/__tests__/filterFileSize.test.js +45 -45
  81. package/src/filters/__tests__/filterFloat.test.js +74 -74
  82. package/src/filters/__tests__/filterJson.test.js +74 -74
  83. package/src/filters/__tests__/filterKeyValue.test.js +50 -50
  84. package/src/filters/__tests__/filterLimitTo.test.js +39 -39
  85. package/src/filters/__tests__/filterLink.test.js +41 -41
  86. package/src/filters/__tests__/filterList.test.js +149 -149
  87. package/src/filters/__tests__/filterLowerCase.test.js +38 -38
  88. package/src/filters/__tests__/filterMask.test.js +80 -80
  89. package/src/filters/__tests__/filterPropertyByValue.test.js +27 -27
  90. package/src/filters/__tests__/filterSearchHighlight.test.js +129 -129
  91. package/src/filters/__tests__/filterUpperCase.test.js +38 -38
  92. package/src/filters/__tests__/filterValueByCondition.test.js +3 -3
  93. package/src/filters/filterJson.js +39 -39
  94. package/src/filters/filterValueByCondition.js +2 -2
  95. package/src/plugins/AAlertPlugin.js +16 -5
  96. package/src/plugins/AMultiselectOrderedPlugin.js +88 -81
  97. package/src/plugins/ASelectPlugin.js +12 -10
  98. package/src/ui/ACheckbox/ACheckbox.js +82 -79
  99. package/src/ui/ADatepicker/compositionAPI/EventsAPI.js +297 -297
  100. package/src/ui/ADatepicker/utils/index.js +76 -76
  101. package/src/ui/ADatepickerAlt/ADatepicker.js +912 -912
  102. package/src/ui/ADatepickerAlt/utils/index.js +98 -98
  103. package/src/ui/AFieldset/__tests__/AFieldset.ClassColumn.test.js +113 -114
  104. package/src/ui/AFormElementBtnClear/AFormElementBtnClear.js +4 -1
  105. package/src/ui/AInputCurrency/AInputCurrency.js +20 -15
  106. package/src/ui/AInputCurrency/__tests__/AInputCurrency.ModelAPI.test.js +73 -73
  107. package/src/ui/AInputNumber/AInputNumber.js +17 -12
  108. package/src/ui/AJson/AJson.js +12 -3
  109. package/src/ui/AJson/compositionAPI/JsonAPI.js +116 -116
  110. package/src/ui/ALabel/__tests__/ALabel.IdAPI.test.js +42 -42
  111. package/src/ui/ALabel/__tests__/ALabel.LabelAPI.test.js +33 -33
  112. package/src/ui/ARadio/ARadio.js +80 -77
  113. package/src/ui/ASelect/ASelect.js +390 -383
  114. package/src/ui/ASelect/ASelectElement/ASelectElement.js +179 -176
  115. package/src/ui/ASelect/ASelectValueCloseable/ASelectValueCloseable.js +143 -141
  116. package/src/ui/ASelect/__tests__/SelectedFirstAPI.test.js +101 -101
  117. package/src/ui/ASelect/__tests__/SelectedVisibleAPI.test.js +98 -98
  118. package/src/ui/ASlider/compositionAPI/SliderAPI.js +23 -23
  119. package/src/ui/AValidatedJson/AValidatedJson.js +4 -1
  120. package/src/ui/AValidatedJson/AValidatedJsonItem/AValidatedJsonItem.js +308 -298
  121. package/src/ui/compositionApi/UiCollapseAPI.js +68 -63
  122. package/src/ui/compositionApi/UiInputAutofillAPI.js +41 -41
  123. package/src/ui/compositionApi/__tests__/UIDataGroupAPI.test.js +106 -106
  124. package/src/ui/compositionApi/__tests__/UIExcludeRenderAttributesAPI.test.js +39 -39
  125. package/src/ui/compositionApi/__tests__/UiDataWithKeyIdAndLabelAPI.test.js +128 -128
  126. package/src/ui/compositionApi/__tests__/UiSearchAPI.test.js +71 -71
  127. package/src/utils/EventBus.js +51 -8
  128. package/src/utils/__tests__/EventBus.test.js +138 -0
  129. package/src/utils/__tests__/utils.aOrderBy.test.js +1 -1
  130. package/src/utils/__tests__/utils.aSortBy.test.js +1 -1
  131. package/src/utils/__tests__/utils.getTotalNestedCount.test.js +56 -56
  132. package/src/utils/__tests__/utils.isArrayOfArrays.test.js +44 -44
  133. package/src/utils/__tests__/utils.isArrayOfStrings.test.js +36 -36
  134. package/src/utils/__tests__/utilsArray.aFirst.test.js +1 -1
  135. package/src/utils/__tests__/utilsArray.aLast.test.js +1 -1
  136. package/src/utils/__tests__/utilsLang.isArguments.test.js +1 -1
  137. package/src/utils/__tests__/utilsLang.isArray.test.js +1 -1
  138. package/src/utils/__tests__/utilsLang.isArrayBuffer.test.js +1 -1
  139. package/src/utils/__tests__/utilsLang.isBoolean.test.js +1 -1
  140. package/src/utils/__tests__/utilsLang.isBuffer.test.js +1 -1
  141. package/src/utils/__tests__/utilsLang.isDate.test.js +1 -1
  142. package/src/utils/__tests__/utilsLang.isElement.test.js +5 -3
  143. package/src/utils/__tests__/utilsLang.isError.test.js +1 -1
  144. package/src/utils/__tests__/utilsLang.isFinite.test.js +1 -1
  145. package/src/utils/__tests__/utilsLang.isFunction.test.js +1 -1
  146. package/src/utils/__tests__/utilsLang.isInteger.test.js +1 -1
  147. package/src/utils/__tests__/utilsLang.isMap.test.js +1 -1
  148. package/src/utils/__tests__/utilsLang.isNaN.test.js +1 -1
  149. package/src/utils/__tests__/utilsLang.isNil.test.js +1 -1
  150. package/src/utils/__tests__/utilsLang.isNull.test.js +1 -1
  151. package/src/utils/__tests__/utilsLang.isNumber.test.js +1 -1
  152. package/src/utils/__tests__/utilsLang.isObject.test.js +1 -1
  153. package/src/utils/__tests__/utilsLang.isObjectLike.test.js +5 -3
  154. package/src/utils/__tests__/utilsLang.isPlainObject.test.js +3 -2
  155. package/src/utils/__tests__/utilsLang.isPromise.test.js +5 -2
  156. package/src/utils/__tests__/utilsLang.isRegExp.test.js +1 -1
  157. package/src/utils/__tests__/utilsLang.isSet.test.js +1 -1
  158. package/src/utils/__tests__/utilsLang.isString.test.js +1 -1
  159. package/src/utils/__tests__/utilsLang.isSymbol.test.js +5 -3
  160. package/src/utils/__tests__/utilsLang.isUndefined.test.js +1 -1
  161. package/src/utils/__tests__/utilsLang.isWeakMap.test.js +1 -1
  162. package/src/utils/__tests__/utilsLang.isWeakSet.test.js +1 -1
  163. package/src/utils/__tests__/utilsMath.isEven.test.js +43 -43
  164. package/src/utils/__tests__/utilsMath.isOdd.test.js +43 -43
  165. package/src/utils/__tests__/utilsUi.isModelForFilterNotEmpty.test.js +65 -65
  166. package/src/utils/autosize.js +1 -1
@@ -1,101 +1,101 @@
1
- import {
2
- computed,
3
- reactive,
4
- } from "vue";
5
- import {
6
- describe,
7
- expect,
8
- it,
9
- } from "@jest/globals";
10
-
11
- import SelectedFirstAPI from "../compositionAPI/SelectedFirstAPI";
12
-
13
- import {
14
- AKeyId,
15
- } from "../../../const/AKeys";
16
-
17
- const item = (id, label, extra = {}) => ({
18
- [AKeyId]: id,
19
- _a_label: label,
20
- ...extra,
21
- });
22
-
23
- describe("ASelect SelectedFirstAPI", () => {
24
- it("keeps source order and removes selected values from all source lists", () => {
25
- const props = reactive({
26
- modelValue: [3, 1, 3, "exclusive"],
27
- showSelectedFirst: true,
28
- type: "multiselect",
29
- });
30
- const data = computed(() => [
31
- item(1, "One", { group: "A" }),
32
- item(2, "Two", { group: "A" }),
33
- item(3, "Three", { __invalidEntry__: true, group: "B" }),
34
- ]);
35
- const dataExtra = computed(() => [item(1, "Extra one"), item(4, "Four")]);
36
- const exclusiveOption = computed(() => item("exclusive", "Exclusive"));
37
-
38
- const result = SelectedFirstAPI(props, {
39
- data,
40
- dataExtra,
41
- exclusiveOption,
42
- });
43
-
44
- expect(result.dataSelected.value.map(currentItem => currentItem[AKeyId]))
45
- .toEqual(["exclusive", 1, 3]);
46
- expect(result.dataSelected.value[2]).toEqual(expect.objectContaining({
47
- __invalidEntry__: true,
48
- group: "B",
49
- }));
50
- expect(result.dataWithoutSelected.value.map(currentItem => currentItem[AKeyId]))
51
- .toEqual([2]);
52
- expect(result.dataExtraWithoutSelected.value.map(currentItem => currentItem[AKeyId]))
53
- .toEqual([4]);
54
- expect(result.exclusiveOptionWithoutSelected.value).toBeUndefined();
55
- });
56
-
57
- it("reuses the sorted data order instead of the model order", () => {
58
- const props = reactive({
59
- modelValue: [1, 3],
60
- showSelectedFirst: true,
61
- type: "multiselect",
62
- });
63
- const data = computed(() => [item(3, "Three"), item(2, "Two"), item(1, "One")]);
64
-
65
- const result = SelectedFirstAPI(props, { data });
66
-
67
- expect(result.dataSelected.value.map(currentItem => currentItem[AKeyId]))
68
- .toEqual([3, 1]);
69
- });
70
-
71
- it("supports false as a selected value in select mode", () => {
72
- const props = reactive({
73
- modelValue: false,
74
- showSelectedFirst: true,
75
- type: "select",
76
- });
77
- const data = computed(() => [item(false, "No"), item(true, "Yes")]);
78
-
79
- const result = SelectedFirstAPI(props, { data });
80
-
81
- expect(result.dataSelected.value.map(currentItem => currentItem[AKeyId]))
82
- .toEqual([false]);
83
- expect(result.dataWithoutSelected.value.map(currentItem => currentItem[AKeyId]))
84
- .toEqual([true]);
85
- });
86
-
87
- it("does not change lists when the prop is disabled", () => {
88
- const props = reactive({
89
- modelValue: [1],
90
- showSelectedFirst: false,
91
- type: "multiselect",
92
- });
93
- const sourceData = [item(1, "One"), item(2, "Two")];
94
- const data = computed(() => sourceData);
95
-
96
- const result = SelectedFirstAPI(props, { data });
97
-
98
- expect(result.dataSelected.value).toEqual([]);
99
- expect(result.dataWithoutSelected.value).toBe(sourceData);
100
- });
101
- });
1
+ import {
2
+ computed,
3
+ reactive,
4
+ } from "vue";
5
+ import {
6
+ describe,
7
+ expect,
8
+ it,
9
+ } from "vitest";
10
+
11
+ import SelectedFirstAPI from "../compositionAPI/SelectedFirstAPI";
12
+
13
+ import {
14
+ AKeyId,
15
+ } from "../../../const/AKeys";
16
+
17
+ const item = (id, label, extra = {}) => ({
18
+ [AKeyId]: id,
19
+ _a_label: label,
20
+ ...extra,
21
+ });
22
+
23
+ describe("ASelect SelectedFirstAPI", () => {
24
+ it("keeps source order and removes selected values from all source lists", () => {
25
+ const props = reactive({
26
+ modelValue: [3, 1, 3, "exclusive"],
27
+ showSelectedFirst: true,
28
+ type: "multiselect",
29
+ });
30
+ const data = computed(() => [
31
+ item(1, "One", { group: "A" }),
32
+ item(2, "Two", { group: "A" }),
33
+ item(3, "Three", { __invalidEntry__: true, group: "B" }),
34
+ ]);
35
+ const dataExtra = computed(() => [item(1, "Extra one"), item(4, "Four")]);
36
+ const exclusiveOption = computed(() => item("exclusive", "Exclusive"));
37
+
38
+ const result = SelectedFirstAPI(props, {
39
+ data,
40
+ dataExtra,
41
+ exclusiveOption,
42
+ });
43
+
44
+ expect(result.dataSelected.value.map(currentItem => currentItem[AKeyId]))
45
+ .toEqual(["exclusive", 1, 3]);
46
+ expect(result.dataSelected.value[2]).toEqual(expect.objectContaining({
47
+ __invalidEntry__: true,
48
+ group: "B",
49
+ }));
50
+ expect(result.dataWithoutSelected.value.map(currentItem => currentItem[AKeyId]))
51
+ .toEqual([2]);
52
+ expect(result.dataExtraWithoutSelected.value.map(currentItem => currentItem[AKeyId]))
53
+ .toEqual([4]);
54
+ expect(result.exclusiveOptionWithoutSelected.value).toBeUndefined();
55
+ });
56
+
57
+ it("reuses the sorted data order instead of the model order", () => {
58
+ const props = reactive({
59
+ modelValue: [1, 3],
60
+ showSelectedFirst: true,
61
+ type: "multiselect",
62
+ });
63
+ const data = computed(() => [item(3, "Three"), item(2, "Two"), item(1, "One")]);
64
+
65
+ const result = SelectedFirstAPI(props, { data });
66
+
67
+ expect(result.dataSelected.value.map(currentItem => currentItem[AKeyId]))
68
+ .toEqual([3, 1]);
69
+ });
70
+
71
+ it("supports false as a selected value in select mode", () => {
72
+ const props = reactive({
73
+ modelValue: false,
74
+ showSelectedFirst: true,
75
+ type: "select",
76
+ });
77
+ const data = computed(() => [item(false, "No"), item(true, "Yes")]);
78
+
79
+ const result = SelectedFirstAPI(props, { data });
80
+
81
+ expect(result.dataSelected.value.map(currentItem => currentItem[AKeyId]))
82
+ .toEqual([false]);
83
+ expect(result.dataWithoutSelected.value.map(currentItem => currentItem[AKeyId]))
84
+ .toEqual([true]);
85
+ });
86
+
87
+ it("does not change lists when the prop is disabled", () => {
88
+ const props = reactive({
89
+ modelValue: [1],
90
+ showSelectedFirst: false,
91
+ type: "multiselect",
92
+ });
93
+ const sourceData = [item(1, "One"), item(2, "Two")];
94
+ const data = computed(() => sourceData);
95
+
96
+ const result = SelectedFirstAPI(props, { data });
97
+
98
+ expect(result.dataSelected.value).toEqual([]);
99
+ expect(result.dataWithoutSelected.value).toBe(sourceData);
100
+ });
101
+ });
@@ -1,98 +1,98 @@
1
- import {
2
- ref,
3
- } from "vue";
4
- import {
5
- describe,
6
- expect,
7
- it,
8
- } from "@jest/globals";
9
-
10
- import SelectedVisibleAPI from "../compositionAPI/SelectedVisibleAPI";
11
-
12
- import {
13
- AKeyId,
14
- } from "../../../const/AKeys";
15
-
16
- const item = (id, label, extra = {}) => ({
17
- [AKeyId]: id,
18
- _a_label: label,
19
- ...extra,
20
- });
21
-
22
- describe("ASelect SelectedVisibleAPI", () => {
23
- it("filters selected values using matches from all data sources", () => {
24
- const dataSelected = ref([
25
- item(1, "Apple"),
26
- item(2, "Banana"),
27
- item(3, "Carrot"),
28
- ]);
29
-
30
- const {
31
- dataSelectedVisible,
32
- } = SelectedVisibleAPI({
33
- dataSelected,
34
- searching: ref(true),
35
- searchingElements: ref({ 2: true }),
36
- searchingElementsExtra: ref({ 3: true }),
37
- });
38
-
39
- expect(dataSelectedVisible.value.map(currentItem => currentItem[AKeyId]))
40
- .toEqual([2, 3]);
41
- });
42
-
43
- it("includes selected values when their nested group matches", () => {
44
- const dataSelected = ref([
45
- item(1, "Apple", { category: "Food", group: "Fruit" }),
46
- item(2, "Carrot", { category: "Food", group: "Vegetables" }),
47
- ]);
48
-
49
- const {
50
- dataSelectedVisible,
51
- searchingGroupsVisible,
52
- } = SelectedVisibleAPI({
53
- dataSelected,
54
- keyGroupArray: ref(["category", "group"]),
55
- searching: ref(true),
56
- searchingGroupsWithSearchInGroup: ref({ Food_Fruit: true }),
57
- });
58
-
59
- expect(dataSelectedVisible.value.map(currentItem => currentItem[AKeyId]))
60
- .toEqual([1]);
61
- expect(searchingGroupsVisible.value).toEqual({
62
- Food: true,
63
- Food_Fruit: true,
64
- });
65
- });
66
-
67
- it("does not expose a group matched only in another section", () => {
68
- const dataSelected = ref([
69
- item(2, "Banana", { group: "Fruit" }),
70
- ]);
71
-
72
- const {
73
- dataSelectedVisible,
74
- searchingGroupsVisible,
75
- } = SelectedVisibleAPI({
76
- dataSelected,
77
- keyGroupArray: ref(["group"]),
78
- searching: ref(true),
79
- searchingElements: ref({ 1: true }),
80
- });
81
-
82
- expect(dataSelectedVisible.value).toEqual([]);
83
- expect(searchingGroupsVisible.value).toEqual({});
84
- });
85
-
86
- it("returns all selected values when search is inactive", () => {
87
- const dataSelected = ref([item(1, "Apple"), item(2, "Banana")]);
88
-
89
- const {
90
- dataSelectedVisible,
91
- } = SelectedVisibleAPI({
92
- dataSelected,
93
- searching: ref(false),
94
- });
95
-
96
- expect(dataSelectedVisible.value).toBe(dataSelected.value);
97
- });
98
- });
1
+ import {
2
+ ref,
3
+ } from "vue";
4
+ import {
5
+ describe,
6
+ expect,
7
+ it,
8
+ } from "vitest";
9
+
10
+ import SelectedVisibleAPI from "../compositionAPI/SelectedVisibleAPI";
11
+
12
+ import {
13
+ AKeyId,
14
+ } from "../../../const/AKeys";
15
+
16
+ const item = (id, label, extra = {}) => ({
17
+ [AKeyId]: id,
18
+ _a_label: label,
19
+ ...extra,
20
+ });
21
+
22
+ describe("ASelect SelectedVisibleAPI", () => {
23
+ it("filters selected values using matches from all data sources", () => {
24
+ const dataSelected = ref([
25
+ item(1, "Apple"),
26
+ item(2, "Banana"),
27
+ item(3, "Carrot"),
28
+ ]);
29
+
30
+ const {
31
+ dataSelectedVisible,
32
+ } = SelectedVisibleAPI({
33
+ dataSelected,
34
+ searching: ref(true),
35
+ searchingElements: ref({ 2: true }),
36
+ searchingElementsExtra: ref({ 3: true }),
37
+ });
38
+
39
+ expect(dataSelectedVisible.value.map(currentItem => currentItem[AKeyId]))
40
+ .toEqual([2, 3]);
41
+ });
42
+
43
+ it("includes selected values when their nested group matches", () => {
44
+ const dataSelected = ref([
45
+ item(1, "Apple", { category: "Food", group: "Fruit" }),
46
+ item(2, "Carrot", { category: "Food", group: "Vegetables" }),
47
+ ]);
48
+
49
+ const {
50
+ dataSelectedVisible,
51
+ searchingGroupsVisible,
52
+ } = SelectedVisibleAPI({
53
+ dataSelected,
54
+ keyGroupArray: ref(["category", "group"]),
55
+ searching: ref(true),
56
+ searchingGroupsWithSearchInGroup: ref({ Food_Fruit: true }),
57
+ });
58
+
59
+ expect(dataSelectedVisible.value.map(currentItem => currentItem[AKeyId]))
60
+ .toEqual([1]);
61
+ expect(searchingGroupsVisible.value).toEqual({
62
+ Food: true,
63
+ Food_Fruit: true,
64
+ });
65
+ });
66
+
67
+ it("does not expose a group matched only in another section", () => {
68
+ const dataSelected = ref([
69
+ item(2, "Banana", { group: "Fruit" }),
70
+ ]);
71
+
72
+ const {
73
+ dataSelectedVisible,
74
+ searchingGroupsVisible,
75
+ } = SelectedVisibleAPI({
76
+ dataSelected,
77
+ keyGroupArray: ref(["group"]),
78
+ searching: ref(true),
79
+ searchingElements: ref({ 1: true }),
80
+ });
81
+
82
+ expect(dataSelectedVisible.value).toEqual([]);
83
+ expect(searchingGroupsVisible.value).toEqual({});
84
+ });
85
+
86
+ it("returns all selected values when search is inactive", () => {
87
+ const dataSelected = ref([item(1, "Apple"), item(2, "Banana")]);
88
+
89
+ const {
90
+ dataSelectedVisible,
91
+ } = SelectedVisibleAPI({
92
+ dataSelected,
93
+ searching: ref(false),
94
+ });
95
+
96
+ expect(dataSelectedVisible.value).toBe(dataSelected.value);
97
+ });
98
+ });
@@ -220,29 +220,29 @@ export default function SliderAPI(props, {
220
220
  const currentIndex = findIndex(dataLocal.value, item => item[AKeyId] === currentValue);
221
221
 
222
222
  switch (event.key) {
223
- case "ArrowLeft":
224
- case "ArrowDown":
225
- newIndex = currentIndex - 1;
226
- break;
227
- case "ArrowRight":
228
- case "ArrowUp":
229
- newIndex = currentIndex + 1;
230
- break;
231
- case "Home":
232
- newIndex = 0;
233
- break;
234
- case "End":
235
- newIndex = lastIndexDataLocal.value;
236
- break;
237
- case "PageDown":
238
- newIndex = currentIndex - 4;
239
- break;
240
- case "PageUp":
241
- newIndex = currentIndex + 4;
242
- break;
243
- default:
244
- isPreventDefault = false;
245
- break;
223
+ case "ArrowLeft":
224
+ case "ArrowDown":
225
+ newIndex = currentIndex - 1;
226
+ break;
227
+ case "ArrowRight":
228
+ case "ArrowUp":
229
+ newIndex = currentIndex + 1;
230
+ break;
231
+ case "Home":
232
+ newIndex = 0;
233
+ break;
234
+ case "End":
235
+ newIndex = lastIndexDataLocal.value;
236
+ break;
237
+ case "PageDown":
238
+ newIndex = currentIndex - 4;
239
+ break;
240
+ case "PageUp":
241
+ newIndex = currentIndex + 4;
242
+ break;
243
+ default:
244
+ isPreventDefault = false;
245
+ break;
246
246
  }
247
247
 
248
248
  if (isPreventDefault) {
@@ -25,11 +25,14 @@ import ModelAPI from "./compositionAPI/ModelAPI";
25
25
  import SingleModeAPI from "./compositionAPI/SingleModeAPI";
26
26
  import TranslateAPI from "./compositionAPI/TranslateAPI";
27
27
 
28
- import Plus from "aloha-svg/dist/js/bootstrap/Plus";
29
28
  import {
30
29
  uniqueId,
31
30
  } from "lodash-es";
32
31
 
32
+ const Plus = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16">
33
+ <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/>
34
+ </svg>`;
35
+
33
36
  export default {
34
37
  name: "AValidatedJson",
35
38
  inheritAttrs: false,