aloha-vue 1.2.138 → 1.2.139
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/package.json +1 -1
- package/src/ATable/ATable.js +9 -7
- package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.DropdownAPI.test.js +40 -0
- package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.FormAPI.test.js +90 -0
- package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.ModelAPI.test.js +145 -0
- package/src/ATable/compositionAPI/ColumnsGroupedAPI.js +4 -2
package/package.json
CHANGED
package/src/ATable/ATable.js
CHANGED
|
@@ -464,10 +464,18 @@ export default {
|
|
|
464
464
|
closePreviewAll,
|
|
465
465
|
});
|
|
466
466
|
|
|
467
|
+
const {
|
|
468
|
+
dataSorted,
|
|
469
|
+
initModelSort,
|
|
470
|
+
modelSortLocal,
|
|
471
|
+
} = SortAPI(props);
|
|
472
|
+
|
|
467
473
|
const {
|
|
468
474
|
columnsOrderedFromSimpleTable,
|
|
469
475
|
renderedGroupedColumns,
|
|
470
|
-
} = ColumnsGroupedAPI(props
|
|
476
|
+
} = ColumnsGroupedAPI(props, {
|
|
477
|
+
modelSort: modelSortLocal,
|
|
478
|
+
});
|
|
471
479
|
|
|
472
480
|
const {
|
|
473
481
|
columnIdsGroupByLocked,
|
|
@@ -483,12 +491,6 @@ export default {
|
|
|
483
491
|
columnsOrderedFromSimpleTable,
|
|
484
492
|
});
|
|
485
493
|
|
|
486
|
-
const {
|
|
487
|
-
dataSorted,
|
|
488
|
-
initModelSort,
|
|
489
|
-
modelSortLocal,
|
|
490
|
-
} = SortAPI(props);
|
|
491
|
-
|
|
492
494
|
const {
|
|
493
495
|
changeLimit,
|
|
494
496
|
changeOffset,
|
package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.DropdownAPI.test.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
computed,
|
|
3
|
+
} from "vue";
|
|
4
|
+
|
|
5
|
+
import DropdownAPI from "../compositionAPI/DropdownAPI";
|
|
6
|
+
|
|
7
|
+
describe("ATableSortingAdditional DropdownAPI", () => {
|
|
8
|
+
it("hides the dropdown when there are no columns available", () => {
|
|
9
|
+
const columnsAll = computed(() => {
|
|
10
|
+
return [];
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
const {
|
|
14
|
+
isDropdownVisible,
|
|
15
|
+
} = DropdownAPI({}, {
|
|
16
|
+
columnsAll,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
expect(isDropdownVisible.value).toBe(false);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it("shows the dropdown when there are available columns", () => {
|
|
23
|
+
const columnsAll = computed(() => {
|
|
24
|
+
return [
|
|
25
|
+
{ label: "Column 1", sortId: "1" },
|
|
26
|
+
{ label: "Column 2", sortId: "2" },
|
|
27
|
+
{ label: "Column 3", sortId: "3" },
|
|
28
|
+
{ label: "Column 4", sortId: "4" },
|
|
29
|
+
];
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
const {
|
|
33
|
+
isDropdownVisible,
|
|
34
|
+
} = DropdownAPI({}, {
|
|
35
|
+
columnsAll,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
expect(isDropdownVisible.value).toBe(true);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import {
|
|
2
|
+
computed,
|
|
3
|
+
ref,
|
|
4
|
+
} from "vue";
|
|
5
|
+
|
|
6
|
+
import FormAPI from "../compositionAPI/FormAPI";
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
keyBy,
|
|
10
|
+
} from "lodash-es";
|
|
11
|
+
|
|
12
|
+
describe("ATableSortingAdditional FormAPI", () => {
|
|
13
|
+
it("initDataForForm correctly initializes dataForForm", () => {
|
|
14
|
+
const unappliedModelSort = ref([{ sortId: "1", sortMode: "asc" }]);
|
|
15
|
+
const columnsAll = computed(() => {
|
|
16
|
+
return [
|
|
17
|
+
{ label: "Column 1", sortId: "1" },
|
|
18
|
+
];
|
|
19
|
+
});
|
|
20
|
+
const columnsAllKeyBySortId = computed(() => {
|
|
21
|
+
return {
|
|
22
|
+
1: { label: "Column 1", sortId: "1" },
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const {
|
|
27
|
+
dataForForm,
|
|
28
|
+
initDataForForm,
|
|
29
|
+
} = FormAPI({}, {
|
|
30
|
+
columnsAll,
|
|
31
|
+
columnsAllKeyBySortId,
|
|
32
|
+
unappliedModelSort,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
initDataForForm();
|
|
36
|
+
|
|
37
|
+
expect(dataForForm.value).toHaveLength(1);
|
|
38
|
+
expect(dataForForm.value[0].children).toHaveLength(2); // Check that there are two elements: for sortId and sortMode
|
|
39
|
+
expect(dataForForm.value[0].children[0].data[0].label).toBe("Column 1"); // Checking that the first data element contains the correct label
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("initializes dataForForm with correct fieldset and column data", () => {
|
|
43
|
+
const unappliedModelSort = ref([
|
|
44
|
+
{ sortId: "1", sortMode: "asc" },
|
|
45
|
+
{ sortId: "2", sortMode: "asc" },
|
|
46
|
+
{ sortId: undefined, sortMode: "asc" },
|
|
47
|
+
]);
|
|
48
|
+
const columnsAll = computed(() => {
|
|
49
|
+
return [
|
|
50
|
+
{ label: "Column 1", sortId: "1" },
|
|
51
|
+
{ label: "Column 2", sortId: "2" },
|
|
52
|
+
{ label: "Column 3", sortId: "3" },
|
|
53
|
+
{ label: "Column 4", sortId: "4" },
|
|
54
|
+
];
|
|
55
|
+
});
|
|
56
|
+
const columnsAllKeyBySortId = computed(() => {
|
|
57
|
+
return keyBy(columnsAll.value, "sortId");
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
const {
|
|
61
|
+
dataForForm,
|
|
62
|
+
initDataForForm,
|
|
63
|
+
} = FormAPI({}, {
|
|
64
|
+
columnsAll,
|
|
65
|
+
columnsAllKeyBySortId,
|
|
66
|
+
unappliedModelSort,
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
initDataForForm();
|
|
70
|
+
|
|
71
|
+
expect(dataForForm.value).toHaveLength(3); // 3 fieldset
|
|
72
|
+
expect(dataForForm.value[0].label).toBe("_A_TABLE_SORT_ADDITIONAL_SORT_BY_");
|
|
73
|
+
expect(dataForForm.value[1].label).toBe("_A_TABLE_SORT_ADDITIONAL_THEN_BY_");
|
|
74
|
+
expect(dataForForm.value[2].label).toBe("_A_TABLE_SORT_ADDITIONAL_THEN_BY_");
|
|
75
|
+
expect(dataForForm.value[0].children[0].data).toStrictEqual([
|
|
76
|
+
{ label: "Column 1", sortId: "1" },
|
|
77
|
+
{ label: "Column 3", sortId: "3" },
|
|
78
|
+
{ label: "Column 4", sortId: "4" }
|
|
79
|
+
]);
|
|
80
|
+
expect(dataForForm.value[1].children[0].data).toStrictEqual([
|
|
81
|
+
{ label: "Column 2", sortId: "2" },
|
|
82
|
+
{ label: "Column 3", sortId: "3" },
|
|
83
|
+
{ label: "Column 4", sortId: "4" }
|
|
84
|
+
]);
|
|
85
|
+
expect(dataForForm.value[2].children[0].data).toStrictEqual([
|
|
86
|
+
{ label: "Column 3", sortId: "3" },
|
|
87
|
+
{ label: "Column 4", sortId: "4" }
|
|
88
|
+
]);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import {
|
|
2
|
+
computed,
|
|
3
|
+
ref,
|
|
4
|
+
} from "vue";
|
|
5
|
+
|
|
6
|
+
import ModelAPI from "../compositionAPI/ModelAPI";
|
|
7
|
+
|
|
8
|
+
describe("ATableSortingAdditional ModelAPI", () => {
|
|
9
|
+
it("initializes unapplied model sort correctly when no model is provided and opens dropdown", () => {
|
|
10
|
+
const countColumnsAll = computed(() => 3);
|
|
11
|
+
const unappliedModelSort = ref([]);
|
|
12
|
+
const {
|
|
13
|
+
initUnappliedModelSort,
|
|
14
|
+
} = ModelAPI({
|
|
15
|
+
modelSort: ref([]) }, {
|
|
16
|
+
countColumnsAll,
|
|
17
|
+
unappliedModelSort,
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
initUnappliedModelSort();
|
|
21
|
+
|
|
22
|
+
expect(unappliedModelSort.value).toHaveLength(1);
|
|
23
|
+
expect(unappliedModelSort.value[0].sortId).toBeUndefined();
|
|
24
|
+
expect(unappliedModelSort.value[0].sortMode).toBe("asc");
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it("updates unapplied model sort by adding undefined if the model has defined sort values", () => {
|
|
28
|
+
const modelSortProvided = ref([
|
|
29
|
+
{ sortId: "1", sortMode: "desc" },
|
|
30
|
+
]);
|
|
31
|
+
const unappliedModelSort = ref([]);
|
|
32
|
+
const countColumnsAll = computed(() => 2);
|
|
33
|
+
|
|
34
|
+
const {
|
|
35
|
+
updateUnappliedModelSort
|
|
36
|
+
} = ModelAPI({ modelSort: modelSortProvided }, {
|
|
37
|
+
countColumnsAll,
|
|
38
|
+
unappliedModelSort,
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
updateUnappliedModelSort({ model: modelSortProvided.value });
|
|
42
|
+
|
|
43
|
+
expect(unappliedModelSort.value).toHaveLength(2);
|
|
44
|
+
expect(unappliedModelSort.value[0]).toEqual({ sortId: "1", sortMode: "desc" });
|
|
45
|
+
expect(unappliedModelSort.value[1]).toEqual({ sortId: undefined, sortMode: "asc" });
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("correctly removes elements from unappliedModelSort", () => {
|
|
49
|
+
const countColumnsAll = computed(() => 3);
|
|
50
|
+
const unappliedModelSort = ref([
|
|
51
|
+
{ sortId: "1", sortMode: "desc" },
|
|
52
|
+
{ sortId: "2", sortMode: "desc" },
|
|
53
|
+
{ sortId: "3", sortMode: "asc" },
|
|
54
|
+
]);
|
|
55
|
+
const {
|
|
56
|
+
removeUnappliedModelSort,
|
|
57
|
+
} = ModelAPI({
|
|
58
|
+
modelSort: ref([]) }, {
|
|
59
|
+
countColumnsAll,
|
|
60
|
+
unappliedModelSort,
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
removeUnappliedModelSort({
|
|
64
|
+
item: { additionalProps: { index: 2 } },
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
expect(unappliedModelSort.value).toHaveLength(3);
|
|
68
|
+
expect(unappliedModelSort.value[2].sortId).toBeUndefined();
|
|
69
|
+
expect(unappliedModelSort.value[2].sortMode).toBe("asc");
|
|
70
|
+
|
|
71
|
+
removeUnappliedModelSort({
|
|
72
|
+
item: { additionalProps: { index: 1 } },
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
expect(unappliedModelSort.value).toHaveLength(2);
|
|
76
|
+
expect(unappliedModelSort.value[1].sortId).toBeUndefined();
|
|
77
|
+
expect(unappliedModelSort.value[1].sortMode).toBe("asc");
|
|
78
|
+
|
|
79
|
+
removeUnappliedModelSort({
|
|
80
|
+
item: { additionalProps: { index: 0 } },
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
expect(unappliedModelSort.value).toHaveLength(1);
|
|
84
|
+
expect(unappliedModelSort.value[0].sortId).toBeUndefined();
|
|
85
|
+
expect(unappliedModelSort.value[0].sortMode).toBe("asc");
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it("correctly change model", () => {
|
|
89
|
+
const countColumnsAll = computed(() => 3);
|
|
90
|
+
const unappliedModelSort = ref([
|
|
91
|
+
{ sortId: undefined, sortMode: "asc" },
|
|
92
|
+
]);
|
|
93
|
+
const {
|
|
94
|
+
updateUnappliedModelSort,
|
|
95
|
+
} = ModelAPI({
|
|
96
|
+
modelSort: ref([]) }, {
|
|
97
|
+
countColumnsAll,
|
|
98
|
+
unappliedModelSort,
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
let model = [
|
|
102
|
+
{ sortId: "1", sortMode: "asc" },
|
|
103
|
+
];
|
|
104
|
+
updateUnappliedModelSort({ model });
|
|
105
|
+
|
|
106
|
+
expect(unappliedModelSort.value).toHaveLength(2);
|
|
107
|
+
expect(unappliedModelSort.value).toStrictEqual([
|
|
108
|
+
{ sortId: "1", sortMode: "asc" },
|
|
109
|
+
{ sortId: undefined, sortMode: "asc" },
|
|
110
|
+
]);
|
|
111
|
+
|
|
112
|
+
model[1].sortMode = "desc";
|
|
113
|
+
updateUnappliedModelSort({ model });
|
|
114
|
+
|
|
115
|
+
expect(unappliedModelSort.value).toHaveLength(2);
|
|
116
|
+
expect(unappliedModelSort.value).toStrictEqual([
|
|
117
|
+
{ sortId: "1", sortMode: "asc" },
|
|
118
|
+
{ sortId: undefined, sortMode: "desc" },
|
|
119
|
+
]);
|
|
120
|
+
|
|
121
|
+
model[1].sortId = "2";
|
|
122
|
+
updateUnappliedModelSort({ model });
|
|
123
|
+
|
|
124
|
+
expect(unappliedModelSort.value).toHaveLength(3);
|
|
125
|
+
expect(unappliedModelSort.value).toStrictEqual([
|
|
126
|
+
{ sortId: "1", sortMode: "asc" },
|
|
127
|
+
{ sortId: "2", sortMode: "desc" },
|
|
128
|
+
{ sortId: undefined, sortMode: "asc" },
|
|
129
|
+
]);
|
|
130
|
+
|
|
131
|
+
model = [
|
|
132
|
+
{ sortId: "1", sortMode: "asc" },
|
|
133
|
+
{ sortId: "2", sortMode: "desc" },
|
|
134
|
+
{ sortId: "3", sortMode: "asc" },
|
|
135
|
+
];
|
|
136
|
+
updateUnappliedModelSort({ model });
|
|
137
|
+
|
|
138
|
+
expect(unappliedModelSort.value).toHaveLength(3);
|
|
139
|
+
expect(unappliedModelSort.value).toStrictEqual([
|
|
140
|
+
{ sortId: "1", sortMode: "asc" },
|
|
141
|
+
{ sortId: "2", sortMode: "desc" },
|
|
142
|
+
{ sortId: "3", sortMode: "asc" },
|
|
143
|
+
]);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
computed,
|
|
3
3
|
h,
|
|
4
|
+
ref,
|
|
4
5
|
toRef,
|
|
5
6
|
} from "vue";
|
|
6
7
|
|
|
@@ -18,9 +19,10 @@ import {
|
|
|
18
19
|
uniqBy,
|
|
19
20
|
} from "lodash-es";
|
|
20
21
|
|
|
21
|
-
export default function ColumnsGroupedAPI(props
|
|
22
|
+
export default function ColumnsGroupedAPI(props, {
|
|
23
|
+
modelSort = ref([]),
|
|
24
|
+
}) {
|
|
22
25
|
const columns = toRef(props, "columns");
|
|
23
|
-
const modelSort = toRef(props, "modelSort");
|
|
24
26
|
const showFirstSortingSequenceNumber = toRef(props, "showFirstSortingSequenceNumber");
|
|
25
27
|
const sortingSequenceNumberClass = toRef(props, "sortingSequenceNumberClass");
|
|
26
28
|
|