aloha-vue 1.0.293 → 1.0.295
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/docs/src/views/PageTable/PageTable.js +10 -1
- package/docs/src/views/PageTable/PageTable.pug +3 -0
- package/package.json +1 -1
- package/src/ATable/ATable.js +22 -43
- package/src/ATable/ATableHeaderThAction/ATableHeaderThAction.js +1 -2
- package/src/ATable/ATableHeaderThAction/ATableHeaderThActionItem.js +5 -2
- package/src/ATable/compositionAPI/ColumnsIdsAPI.js +47 -0
- package/src/ATable/compositionAPI/ColumnsOrderingAPI.js +92 -0
- package/src/ATable/compositionAPI/TableColumnsAPI.js +26 -25
|
@@ -15,6 +15,10 @@ export default {
|
|
|
15
15
|
data() {
|
|
16
16
|
return {
|
|
17
17
|
modelView: undefined,
|
|
18
|
+
modelColumnsVisible: {
|
|
19
|
+
aloha: true,
|
|
20
|
+
},
|
|
21
|
+
modelColumnsOrdering: ["sdf", "ddsadsa", "aloha"],
|
|
18
22
|
columns: [
|
|
19
23
|
{
|
|
20
24
|
label: "Aloha",
|
|
@@ -408,7 +412,8 @@ export default {
|
|
|
408
412
|
this.setData();
|
|
409
413
|
},
|
|
410
414
|
methods: {
|
|
411
|
-
changeColumnsOrdering() {
|
|
415
|
+
changeColumnsOrdering({ modelColumnsOrdering }) {
|
|
416
|
+
this.modelColumnsOrdering = modelColumnsOrdering;
|
|
412
417
|
this.isLoadingOptions = true;
|
|
413
418
|
setTimeout(() => {
|
|
414
419
|
this.isLoadingOptions = false;
|
|
@@ -466,5 +471,9 @@ export default {
|
|
|
466
471
|
this.modelView = _modelView;
|
|
467
472
|
console.log("view", view);
|
|
468
473
|
},
|
|
474
|
+
|
|
475
|
+
changeModelColumnsVisible(model) {
|
|
476
|
+
this.modelColumnsVisible = model;
|
|
477
|
+
},
|
|
469
478
|
},
|
|
470
479
|
};
|
|
@@ -22,11 +22,14 @@ div
|
|
|
22
22
|
:model-view="modelView"
|
|
23
23
|
v-model:modelQuickSearch="modelQuickSearch"
|
|
24
24
|
:modelFilters="modelFilters"
|
|
25
|
+
:model-columns-ordering="modelColumnsOrdering"
|
|
26
|
+
:model-columns-visible="modelColumnsVisible"
|
|
25
27
|
@change-columns-ordering="changeColumnsOrdering"
|
|
26
28
|
:update-model-filters-local="updateModelFiltersLocal"
|
|
27
29
|
@toggle-preview="togglePreview"
|
|
28
30
|
@update-model-filters="updateModelFilters"
|
|
29
31
|
@update-view="updateView"
|
|
32
|
+
@update:model-columns-visible="changeModelColumnsVisible"
|
|
30
33
|
)
|
|
31
34
|
template(
|
|
32
35
|
v-slot:map="{ rows }"
|
package/package.json
CHANGED
package/src/ATable/ATable.js
CHANGED
|
@@ -17,6 +17,8 @@ import ATableTopPanel from "./ATableTopPanel/ATableTopPanel";
|
|
|
17
17
|
import ATableTr from "./ATableTr/ATableTr";
|
|
18
18
|
|
|
19
19
|
import AMobileAPI from "../compositionAPI/AMobileAPI";
|
|
20
|
+
import ColumnsIdsAPI from "./compositionAPI/ColumnsIdsAPI";
|
|
21
|
+
import ColumnsOrderingAPI from "./compositionAPI/ColumnsOrderingAPI";
|
|
20
22
|
import LimitOffsetAPI from "./compositionAPI/LimitOffsetAPI";
|
|
21
23
|
import MobileColumnsAPI from "./compositionAPI/MobileColumnsAPI";
|
|
22
24
|
import MultipleActionAPI from "./compositionAPI/MultipleActionAPI";
|
|
@@ -34,10 +36,6 @@ import TableFiltersAPI from "./compositionAPI/TableFiltersAPI";
|
|
|
34
36
|
import ViewsAPI from "./compositionAPI/ViewsAPI";
|
|
35
37
|
|
|
36
38
|
import {
|
|
37
|
-
getModelColumnsOrderingDefault,
|
|
38
|
-
} from "./utils/utils";
|
|
39
|
-
import {
|
|
40
|
-
cloneDeep,
|
|
41
39
|
get,
|
|
42
40
|
isArray,
|
|
43
41
|
isNil,
|
|
@@ -324,7 +322,6 @@ export default {
|
|
|
324
322
|
],
|
|
325
323
|
provide() {
|
|
326
324
|
return {
|
|
327
|
-
changeColumnsOrdering: this.changeColumnsOrdering,
|
|
328
325
|
changeModelColumnsVisible: this.changeModelColumnsVisible,
|
|
329
326
|
columns: computed(() => this.columns),
|
|
330
327
|
columnsDefaultValue: computed(() => this.columnsDefaultValue),
|
|
@@ -343,10 +340,17 @@ export default {
|
|
|
343
340
|
const tableGrandparentRef = ref(undefined);
|
|
344
341
|
const isMultipleActionsActive = ref(undefined);
|
|
345
342
|
|
|
343
|
+
const {
|
|
344
|
+
columnsKeyById,
|
|
345
|
+
columnIdsGroupByLocked,
|
|
346
|
+
} = ColumnsIdsAPI(props);
|
|
347
|
+
|
|
346
348
|
const {
|
|
347
349
|
columnsOrdered,
|
|
348
|
-
|
|
349
|
-
|
|
350
|
+
} = TableColumnsAPI(props, {
|
|
351
|
+
columnsKeyById,
|
|
352
|
+
columnIdsGroupByLocked,
|
|
353
|
+
});
|
|
350
354
|
|
|
351
355
|
const {
|
|
352
356
|
modelColumnsVisibleLocal,
|
|
@@ -387,6 +391,14 @@ export default {
|
|
|
387
391
|
modelColumnsVisibleLocal,
|
|
388
392
|
});
|
|
389
393
|
|
|
394
|
+
const {
|
|
395
|
+
changeColumnsOrdering,
|
|
396
|
+
checkColumnsOrdering,
|
|
397
|
+
} = ColumnsOrderingAPI(props, context, {
|
|
398
|
+
checkVisibleColumns,
|
|
399
|
+
columnIdsGroupByLocked,
|
|
400
|
+
});
|
|
401
|
+
|
|
390
402
|
const {
|
|
391
403
|
isRowActionsStickyLocal,
|
|
392
404
|
} = StickyAPI(props, {
|
|
@@ -520,9 +532,12 @@ export default {
|
|
|
520
532
|
provide("modelColumnsVisibleLocal", modelColumnsVisibleLocal);
|
|
521
533
|
provide("onUpdateModelFilters", onUpdateModelFilters);
|
|
522
534
|
provide("updateDataKeyByIdFromFilter", updateDataKeyByIdFromFilter);
|
|
535
|
+
provide("changeColumnsOrdering", changeColumnsOrdering);
|
|
523
536
|
|
|
524
537
|
initViewCurrent();
|
|
525
538
|
initModelSort();
|
|
539
|
+
checkColumnsOrdering();
|
|
540
|
+
initModelColumnsVisibleLocal();
|
|
526
541
|
|
|
527
542
|
return {
|
|
528
543
|
allVisibleMobileColumns,
|
|
@@ -554,7 +569,6 @@ export default {
|
|
|
554
569
|
isRowActionsStickyLocal,
|
|
555
570
|
isViewTableVisible,
|
|
556
571
|
limit,
|
|
557
|
-
modelColumnsOrderingLocal,
|
|
558
572
|
modelColumnsVisibleLocal,
|
|
559
573
|
modelFiltersLocal,
|
|
560
574
|
modelIsTableWithoutScroll,
|
|
@@ -622,42 +636,7 @@ export default {
|
|
|
622
636
|
return this.rowsFooter.length > 0;
|
|
623
637
|
},
|
|
624
638
|
},
|
|
625
|
-
created() {
|
|
626
|
-
this.initModelColumnsOrderingLocal();
|
|
627
|
-
this.initModelColumnsVisibleLocal();
|
|
628
|
-
},
|
|
629
639
|
methods: {
|
|
630
|
-
initModelColumnsOrderingLocal() {
|
|
631
|
-
if (this.modelColumnsOrdering.length) {
|
|
632
|
-
this.modelColumnsOrderingLocal = cloneDeep(this.modelColumnsOrdering);
|
|
633
|
-
} else {
|
|
634
|
-
this.changeColumnsOrdering({
|
|
635
|
-
modelColumnsOrderingLocal: getModelColumnsOrderingDefault(this.columns),
|
|
636
|
-
isFirst: true,
|
|
637
|
-
});
|
|
638
|
-
}
|
|
639
|
-
},
|
|
640
|
-
|
|
641
|
-
changeColumnsOrdering({ modelColumnsOrderingLocal, columnIndexDraggable, columnIndexOver, isFirst }) {
|
|
642
|
-
if (columnIndexDraggable === columnIndexOver && !modelColumnsOrderingLocal) {
|
|
643
|
-
return;
|
|
644
|
-
}
|
|
645
|
-
if (modelColumnsOrderingLocal) {
|
|
646
|
-
this.modelColumnsOrderingLocal = modelColumnsOrderingLocal;
|
|
647
|
-
} else {
|
|
648
|
-
const ID_DRAGGABLE = this.modelColumnsOrderingLocal[columnIndexDraggable];
|
|
649
|
-
this.modelColumnsOrderingLocal.splice(columnIndexDraggable, 1);
|
|
650
|
-
this.modelColumnsOrderingLocal.splice(columnIndexOver, 0, ID_DRAGGABLE);
|
|
651
|
-
}
|
|
652
|
-
this.$emit("changeColumnsOrdering", {
|
|
653
|
-
columnIndexDraggable,
|
|
654
|
-
columnIndexOver,
|
|
655
|
-
modelColumnsOrdering: cloneDeep(this.modelColumnsOrderingLocal),
|
|
656
|
-
isFirst,
|
|
657
|
-
});
|
|
658
|
-
this.checkVisibleColumns();
|
|
659
|
-
},
|
|
660
|
-
|
|
661
640
|
updateModelQuickSearch(model) {
|
|
662
641
|
this.$emit("update:modelQuickSearch", model);
|
|
663
642
|
},
|
|
@@ -12,7 +12,6 @@ import ColumnSearchAPI from "../compositionAPI/ColumnSearchAPI";
|
|
|
12
12
|
import DragAndDropParentAPI from "../compositionAPI/DragAndDropParentAPI";
|
|
13
13
|
|
|
14
14
|
import {
|
|
15
|
-
getModelColumnsOrderingDefault,
|
|
16
15
|
getModelColumnsVisibleDefault,
|
|
17
16
|
} from "../utils/utils";
|
|
18
17
|
import {
|
|
@@ -92,7 +91,7 @@ export default {
|
|
|
92
91
|
|
|
93
92
|
resetColumns() {
|
|
94
93
|
this.changeModelColumnsVisible(getModelColumnsVisibleDefault(this.columnsOrdered));
|
|
95
|
-
this.changeColumnsOrdering({
|
|
94
|
+
this.changeColumnsOrdering({ reset: true });
|
|
96
95
|
},
|
|
97
96
|
},
|
|
98
97
|
render() {
|
|
@@ -122,7 +122,10 @@ export default {
|
|
|
122
122
|
},
|
|
123
123
|
|
|
124
124
|
isColumnVisible() {
|
|
125
|
-
|
|
125
|
+
if (this.columnId in this.modelColumnsVisibleLocal) {
|
|
126
|
+
return !!this.modelColumnsVisibleLocal[this.columnId];
|
|
127
|
+
}
|
|
128
|
+
return !this.column.hide;
|
|
126
129
|
},
|
|
127
130
|
|
|
128
131
|
arrowButtons() {
|
|
@@ -191,7 +194,7 @@ export default {
|
|
|
191
194
|
toggleColumnVisible($event) {
|
|
192
195
|
$event.stopPropagation();
|
|
193
196
|
const MODEL_COLUMNS = cloneDeep(this.modelColumnsVisibleLocal);
|
|
194
|
-
MODEL_COLUMNS[this.columnId] = !
|
|
197
|
+
MODEL_COLUMNS[this.columnId] = !this.isColumnVisible;
|
|
195
198
|
this.changeModelColumnsVisible(MODEL_COLUMNS);
|
|
196
199
|
},
|
|
197
200
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import {
|
|
2
|
+
computed,
|
|
3
|
+
toRef,
|
|
4
|
+
} from "vue";
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
cloneDeep,
|
|
8
|
+
forEach,
|
|
9
|
+
keyBy,
|
|
10
|
+
} from "lodash-es";
|
|
11
|
+
|
|
12
|
+
export default function ColumnsIdsAPI(props) {
|
|
13
|
+
const columns = toRef(props, "columns");
|
|
14
|
+
|
|
15
|
+
const columnsKeyById = computed(() => {
|
|
16
|
+
return keyBy(columns.value, "id");
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
const columnIdsGroupByLocked = computed(() => {
|
|
20
|
+
const COLUMNS_GROUP_BY_LOCKED = {
|
|
21
|
+
true: [],
|
|
22
|
+
false: [],
|
|
23
|
+
trueObject: {},
|
|
24
|
+
falseObject: {},
|
|
25
|
+
trueColumns: [],
|
|
26
|
+
falseColumns: [],
|
|
27
|
+
};
|
|
28
|
+
forEach(cloneDeep(columns.value), column => {
|
|
29
|
+
const COLUMN_ID = column.id;
|
|
30
|
+
if (column.locked) {
|
|
31
|
+
COLUMNS_GROUP_BY_LOCKED.true.push(COLUMN_ID);
|
|
32
|
+
COLUMNS_GROUP_BY_LOCKED.trueColumns.push(column);
|
|
33
|
+
COLUMNS_GROUP_BY_LOCKED.trueObject[COLUMN_ID] = true;
|
|
34
|
+
} else {
|
|
35
|
+
COLUMNS_GROUP_BY_LOCKED.false.push(COLUMN_ID);
|
|
36
|
+
COLUMNS_GROUP_BY_LOCKED.falseColumns.push(column);
|
|
37
|
+
COLUMNS_GROUP_BY_LOCKED.falseObject[COLUMN_ID] = true;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
return COLUMNS_GROUP_BY_LOCKED;
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
return {
|
|
44
|
+
columnsKeyById,
|
|
45
|
+
columnIdsGroupByLocked,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import {
|
|
2
|
+
computed,
|
|
3
|
+
toRef,
|
|
4
|
+
watch,
|
|
5
|
+
} from "vue";
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
cloneDeep,
|
|
9
|
+
forEach,
|
|
10
|
+
} from "lodash-es";
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
export default function ColumnsOrderingAPI(props, { emit }, {
|
|
14
|
+
checkVisibleColumns = () => {},
|
|
15
|
+
columnIdsGroupByLocked = computed(() => ({
|
|
16
|
+
true: [],
|
|
17
|
+
false: [],
|
|
18
|
+
trueObject: {},
|
|
19
|
+
falseObject: {},
|
|
20
|
+
trueColumns: [],
|
|
21
|
+
falseColumns: [],
|
|
22
|
+
})),
|
|
23
|
+
}) {
|
|
24
|
+
const columns = toRef(props, "columns");
|
|
25
|
+
const modelColumnsOrdering = toRef(props, "modelColumnsOrdering");
|
|
26
|
+
|
|
27
|
+
const changeColumnsOrdering = ({ columnIndexDraggable, columnIndexOver, reset }) => {
|
|
28
|
+
if (columnIndexDraggable === columnIndexOver && !reset) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
let modelColumnsOrderingLocal = [];
|
|
32
|
+
if (reset) {
|
|
33
|
+
modelColumnsOrderingLocal = [...columnIdsGroupByLocked.value.true, ...columnIdsGroupByLocked.value.false];
|
|
34
|
+
} else {
|
|
35
|
+
modelColumnsOrderingLocal = cloneDeep(modelColumnsOrdering.value);
|
|
36
|
+
const ID_DRAGGABLE = modelColumnsOrderingLocal[columnIndexDraggable];
|
|
37
|
+
modelColumnsOrderingLocal.splice(columnIndexDraggable, 1);
|
|
38
|
+
modelColumnsOrderingLocal.splice(columnIndexOver, 0, ID_DRAGGABLE);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
emit("changeColumnsOrdering", {
|
|
42
|
+
columnIndexDraggable,
|
|
43
|
+
columnIndexOver,
|
|
44
|
+
modelColumnsOrdering: modelColumnsOrderingLocal,
|
|
45
|
+
});
|
|
46
|
+
checkVisibleColumns();
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const checkColumnsOrdering = ({ isFirst } = {}) => {
|
|
50
|
+
let modelColumnsOrderingLocal = [];
|
|
51
|
+
let shouldFixColumns = false;
|
|
52
|
+
if (!modelColumnsOrdering.value.length) {
|
|
53
|
+
modelColumnsOrderingLocal = [...columnIdsGroupByLocked.value.true, ...columnIdsGroupByLocked.value.false];
|
|
54
|
+
shouldFixColumns = true;
|
|
55
|
+
} else {
|
|
56
|
+
modelColumnsOrderingLocal = [...columnIdsGroupByLocked.value.true];
|
|
57
|
+
const COLUMNS_NOT_LOCKED_IDS = cloneDeep(columnIdsGroupByLocked.value.falseObject);
|
|
58
|
+
forEach(modelColumnsOrdering.value, columnId => {
|
|
59
|
+
if (COLUMNS_NOT_LOCKED_IDS[columnId]) {
|
|
60
|
+
modelColumnsOrderingLocal.push(columnId);
|
|
61
|
+
delete COLUMNS_NOT_LOCKED_IDS[columnId];
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
forEach(COLUMNS_NOT_LOCKED_IDS, (_, columnId) => {
|
|
66
|
+
modelColumnsOrderingLocal.push(columnId);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
if (JSON.stringify(modelColumnsOrdering.value) !== JSON.stringify(modelColumnsOrderingLocal)) {
|
|
70
|
+
shouldFixColumns = true;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (shouldFixColumns) {
|
|
74
|
+
emit("changeColumnsOrdering", {
|
|
75
|
+
modelColumnsOrdering: modelColumnsOrderingLocal,
|
|
76
|
+
isFirst,
|
|
77
|
+
shouldFixColumns,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
watch(columns, () => {
|
|
83
|
+
checkColumnsOrdering();
|
|
84
|
+
}, {
|
|
85
|
+
deep: true,
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
changeColumnsOrdering,
|
|
90
|
+
checkColumnsOrdering,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
@@ -1,44 +1,45 @@
|
|
|
1
1
|
import {
|
|
2
2
|
computed,
|
|
3
|
-
ref,
|
|
4
3
|
toRef,
|
|
5
4
|
} from "vue";
|
|
6
5
|
|
|
7
6
|
import {
|
|
8
7
|
cloneDeep,
|
|
9
8
|
forEach,
|
|
10
|
-
keyBy,
|
|
11
9
|
} from "lodash-es";
|
|
12
10
|
|
|
13
|
-
export default function TableColumnsAPI(props
|
|
14
|
-
|
|
11
|
+
export default function TableColumnsAPI(props, {
|
|
12
|
+
columnIdsGroupByLocked = computed(() => ({
|
|
13
|
+
true: [],
|
|
14
|
+
false: [],
|
|
15
|
+
trueObject: {},
|
|
16
|
+
falseObject: {},
|
|
17
|
+
trueColumns: [],
|
|
18
|
+
falseColumns: [],
|
|
19
|
+
})),
|
|
20
|
+
columnsKeyById = computed(() => ({})),
|
|
21
|
+
}) {
|
|
22
|
+
const modelColumnsOrdering = toRef(props, "modelColumnsOrdering");
|
|
15
23
|
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
false: [],
|
|
26
|
-
};
|
|
27
|
-
forEach(columns.value, column => {
|
|
28
|
-
const COLUMN_ID = column.id;
|
|
29
|
-
if (column.locked) {
|
|
30
|
-
COLUMNS_GROUP_BY_LOCKED.true.push(COLUMN_ID);
|
|
31
|
-
} else {
|
|
32
|
-
COLUMNS_GROUP_BY_LOCKED.false.push(COLUMN_ID);
|
|
24
|
+
const columnsOrdered = computed(() => {
|
|
25
|
+
if (!modelColumnsOrdering.value.length) {
|
|
26
|
+
return [...columnIdsGroupByLocked.value.trueColumns, ...columnIdsGroupByLocked.value.falseColumns];
|
|
27
|
+
}
|
|
28
|
+
const COLUMNS = [];
|
|
29
|
+
const COLUMNS_KEY_BY_ID = cloneDeep(columnsKeyById.value);
|
|
30
|
+
forEach(modelColumnsOrdering.value, columnId => {
|
|
31
|
+
if (COLUMNS_KEY_BY_ID[columnId]) {
|
|
32
|
+
COLUMNS.push(COLUMNS_KEY_BY_ID[columnId]);
|
|
33
33
|
}
|
|
34
34
|
});
|
|
35
|
-
|
|
35
|
+
|
|
36
|
+
return COLUMNS;
|
|
36
37
|
});
|
|
37
38
|
|
|
38
|
-
const
|
|
39
|
+
const columnsOrderedAlt = computed(() => {
|
|
39
40
|
const COLUMNS = [];
|
|
40
41
|
const COLUMNS_KEY_BY_ID = cloneDeep(columnsKeyById.value);
|
|
41
|
-
const MODEL_COLUMNS_ORDERING_LOCAL = cloneDeep(
|
|
42
|
+
const MODEL_COLUMNS_ORDERING_LOCAL = cloneDeep(modelColumnsOrdering.value);
|
|
42
43
|
|
|
43
44
|
forEach(columnIdsGroupByLocked.value.true, columnId => {
|
|
44
45
|
if (COLUMNS_KEY_BY_ID[columnId]) {
|
|
@@ -69,6 +70,6 @@ export default function TableColumnsAPI(props) {
|
|
|
69
70
|
return {
|
|
70
71
|
columnsKeyById,
|
|
71
72
|
columnsOrdered,
|
|
72
|
-
|
|
73
|
+
columnsOrderedAlt,
|
|
73
74
|
};
|
|
74
75
|
}
|