aloha-vue 1.0.122 → 1.0.124
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/components/TheMenu/TheMenu.js +14 -0
- package/docs/src/components/TheMenu/TheMenu.pug +1 -8
- package/docs/src/views/PageTable/PageTable.js +1 -0
- package/package.json +1 -1
- package/src/AMenu/AMenu.js +24 -10
- package/src/AMenu/AMenuBreadcrumbs.js +5 -0
- package/src/AMenu/AMenuBreadcrumbsItem.js +17 -2
- package/src/AMenu/AMenuPanelLink.js +4 -2
- package/src/ATable/ATable.js +24 -45
- package/src/ATable/ATableHeaderTh/ATableHeaderTh.js +3 -1
- package/src/ATable/ATableHeaderThAction/ATableHeaderThAction.js +7 -5
- package/src/ATable/ATableHeaderThAction/ATableHeaderThActionItem.js +5 -9
- package/src/ATable/ATableTd/ATableTd.js +3 -1
- package/src/ATable/compositionAPI/ColumnVisibleAPI.js +5 -2
- package/src/ATable/compositionAPI/ScrollControlAPI.js +14 -3
- package/src/ATable/compositionAPI/TableColumnsAPI.js +74 -0
- package/src/ATable/compositionAPI/TableColumnsVisibleAPI.js +11 -0
- package/src/ATable/compositionAPI/TableColumnsVisibleFunctionAPI.js +40 -0
- package/src/ATable/utils/utils.js +2 -4
- package/src/styles/components/AMenu.scss +10 -3
|
@@ -148,6 +148,20 @@ export default {
|
|
|
148
148
|
},
|
|
149
149
|
icon: "Duplicate",
|
|
150
150
|
},
|
|
151
|
+
{
|
|
152
|
+
id: "accordion2",
|
|
153
|
+
label: "Accordion seeeeeehr lange name",
|
|
154
|
+
icon: "Duplicate",
|
|
155
|
+
children: [
|
|
156
|
+
{
|
|
157
|
+
id: "accordion3",
|
|
158
|
+
label: "Accordion seeeeeehr lange name",
|
|
159
|
+
to: {
|
|
160
|
+
name: "PageAccordion",
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
},
|
|
151
165
|
{
|
|
152
166
|
id: "alert",
|
|
153
167
|
label: "Alert",
|
|
@@ -2,6 +2,7 @@ a-menu(
|
|
|
2
2
|
:data="menuItems"
|
|
3
3
|
button-toggle-visible="always"
|
|
4
4
|
:is-blocker-clickable="true"
|
|
5
|
+
:is-breadcrumbs-link-truncated="false"
|
|
5
6
|
key-children="children"
|
|
6
7
|
key-slot="slot"
|
|
7
8
|
)
|
|
@@ -11,11 +12,3 @@ a-menu(
|
|
|
11
12
|
span(
|
|
12
13
|
v-html="label"
|
|
13
14
|
)
|
|
14
|
-
|
|
15
|
-
//.the_menu
|
|
16
|
-
// ul.the_menu__ul
|
|
17
|
-
// the-menu-item(
|
|
18
|
-
// v-for="item in menuItems"
|
|
19
|
-
// :key="item.id"
|
|
20
|
-
// :data="item"
|
|
21
|
-
// )
|
package/package.json
CHANGED
package/src/AMenu/AMenu.js
CHANGED
|
@@ -32,17 +32,17 @@ export default {
|
|
|
32
32
|
required: false,
|
|
33
33
|
default: 991,
|
|
34
34
|
},
|
|
35
|
+
buttonToggleClass: {
|
|
36
|
+
type: [String, Object],
|
|
37
|
+
required: false,
|
|
38
|
+
default: "a_btn a_btn_secondary",
|
|
39
|
+
},
|
|
35
40
|
buttonToggleVisible: {
|
|
36
41
|
type: String,
|
|
37
42
|
required: false,
|
|
38
43
|
default: "always",
|
|
39
44
|
validator: value => ["always", "mobile", "desktop"].indexOf(value) !== -1,
|
|
40
45
|
},
|
|
41
|
-
buttonToggleClass: {
|
|
42
|
-
type: [String, Object],
|
|
43
|
-
required: false,
|
|
44
|
-
default: "a_btn a_btn_secondary",
|
|
45
|
-
},
|
|
46
46
|
data: {
|
|
47
47
|
type: Array,
|
|
48
48
|
required: false,
|
|
@@ -62,6 +62,16 @@ export default {
|
|
|
62
62
|
required: false,
|
|
63
63
|
default: true,
|
|
64
64
|
},
|
|
65
|
+
isBreadcrumbsLinkTruncated: {
|
|
66
|
+
type: Boolean,
|
|
67
|
+
required: false,
|
|
68
|
+
default: true,
|
|
69
|
+
},
|
|
70
|
+
isLinkTruncated: {
|
|
71
|
+
type: Boolean,
|
|
72
|
+
required: false,
|
|
73
|
+
default: true,
|
|
74
|
+
},
|
|
65
75
|
isOpenDefault: {
|
|
66
76
|
type: Boolean,
|
|
67
77
|
required: false,
|
|
@@ -72,6 +82,11 @@ export default {
|
|
|
72
82
|
required: false,
|
|
73
83
|
default: true,
|
|
74
84
|
},
|
|
85
|
+
keyChildren: {
|
|
86
|
+
type: String,
|
|
87
|
+
required: false,
|
|
88
|
+
default: undefined,
|
|
89
|
+
},
|
|
75
90
|
keyGroup: {
|
|
76
91
|
type: String,
|
|
77
92
|
required: false,
|
|
@@ -82,11 +97,6 @@ export default {
|
|
|
82
97
|
required: false,
|
|
83
98
|
default: "icon",
|
|
84
99
|
},
|
|
85
|
-
keyChildren: {
|
|
86
|
-
type: String,
|
|
87
|
-
required: false,
|
|
88
|
-
default: undefined,
|
|
89
|
-
},
|
|
90
100
|
keyId: {
|
|
91
101
|
type: String,
|
|
92
102
|
required: false,
|
|
@@ -114,6 +124,8 @@ export default {
|
|
|
114
124
|
},
|
|
115
125
|
},
|
|
116
126
|
setup(props) {
|
|
127
|
+
const isLinkTruncated = toRef(props, "isLinkTruncated");
|
|
128
|
+
|
|
117
129
|
const {
|
|
118
130
|
dataKeyById,
|
|
119
131
|
dataProParent,
|
|
@@ -169,6 +181,7 @@ export default {
|
|
|
169
181
|
}
|
|
170
182
|
});
|
|
171
183
|
|
|
184
|
+
provide("isLinkTruncated", computed(() => isLinkTruncated.value));
|
|
172
185
|
provide("clickMenuLink", clickMenuLink);
|
|
173
186
|
provide("togglePanel", togglePanel);
|
|
174
187
|
|
|
@@ -213,6 +226,7 @@ export default {
|
|
|
213
226
|
isBreadcrumbsAll: this.isBreadcrumbsAll,
|
|
214
227
|
panelParentsOpen: this.panelParentsOpen,
|
|
215
228
|
isSearchActive: this.isSearchActive,
|
|
229
|
+
isBreadcrumbsLinkTruncated: this.isBreadcrumbsLinkTruncated,
|
|
216
230
|
}),
|
|
217
231
|
]),
|
|
218
232
|
h("div", {
|
|
@@ -20,6 +20,10 @@ export default {
|
|
|
20
20
|
type: Boolean,
|
|
21
21
|
required: true,
|
|
22
22
|
},
|
|
23
|
+
isBreadcrumbsLinkTruncated: {
|
|
24
|
+
type: Boolean,
|
|
25
|
+
required: true,
|
|
26
|
+
},
|
|
23
27
|
isSearchActive: {
|
|
24
28
|
type: Boolean,
|
|
25
29
|
required: true,
|
|
@@ -76,6 +80,7 @@ export default {
|
|
|
76
80
|
return h(AMenuBreadcrumbsItem, {
|
|
77
81
|
label: breadcrumbsItem.label,
|
|
78
82
|
panelParentId: breadcrumbsItem.panelParentId,
|
|
83
|
+
isBreadcrumbsLinkTruncated: this.isBreadcrumbsLinkTruncated,
|
|
79
84
|
});
|
|
80
85
|
}),
|
|
81
86
|
]);
|
|
@@ -13,6 +13,10 @@ export default {
|
|
|
13
13
|
type: [String, Number],
|
|
14
14
|
required: true,
|
|
15
15
|
},
|
|
16
|
+
isBreadcrumbsLinkTruncated: {
|
|
17
|
+
type: Boolean,
|
|
18
|
+
required: true,
|
|
19
|
+
},
|
|
16
20
|
panelParentId: {
|
|
17
21
|
type: [String, Number],
|
|
18
22
|
required: true,
|
|
@@ -53,8 +57,19 @@ export default {
|
|
|
53
57
|
class: "a_mr_2",
|
|
54
58
|
}),
|
|
55
59
|
h("span", {
|
|
56
|
-
|
|
57
|
-
|
|
60
|
+
class: {
|
|
61
|
+
a_menu__link__text_truncated: this.isBreadcrumbsLinkTruncated,
|
|
62
|
+
},
|
|
63
|
+
}, [
|
|
64
|
+
h("span", {
|
|
65
|
+
ariaHidden: true,
|
|
66
|
+
}, this.label),
|
|
67
|
+
h("span", {
|
|
68
|
+
class: "a_position_absolute_all",
|
|
69
|
+
ariaHidden: true,
|
|
70
|
+
title: this.label
|
|
71
|
+
}),
|
|
72
|
+
]),
|
|
58
73
|
]);
|
|
59
74
|
},
|
|
60
75
|
};
|
|
@@ -63,6 +63,7 @@ export default {
|
|
|
63
63
|
const dataProParentChildren = toRef(props, "dataProParentChildren");
|
|
64
64
|
|
|
65
65
|
const togglePanel = inject("togglePanel");
|
|
66
|
+
const isLinkTruncated = inject("isLinkTruncated");
|
|
66
67
|
const keySlot = inject("keySlot");
|
|
67
68
|
|
|
68
69
|
const currentSlot = computed(() => {
|
|
@@ -147,6 +148,7 @@ export default {
|
|
|
147
148
|
countChildren,
|
|
148
149
|
currentSlot,
|
|
149
150
|
icon,
|
|
151
|
+
isLinkTruncated,
|
|
150
152
|
isLinkVisible,
|
|
151
153
|
label,
|
|
152
154
|
labelWithoutFilter,
|
|
@@ -192,13 +194,13 @@ export default {
|
|
|
192
194
|
}) :
|
|
193
195
|
this.item.to ?
|
|
194
196
|
h(resolveComponent("RouterLink"), {
|
|
195
|
-
class: "a_menu__link",
|
|
197
|
+
class: "a_menu__link a_menu__link__text_truncated",
|
|
196
198
|
to: this.item.to,
|
|
197
199
|
tabindex: this.isPanelOpen ? 0 : -1,
|
|
198
200
|
onClick: this.clickLink,
|
|
199
201
|
}, () => ICON_AND_TEXT) :
|
|
200
202
|
h("a", {
|
|
201
|
-
class: "a_menu__link a_menu__link_btn",
|
|
203
|
+
class: "a_menu__link a_menu__link_btn a_menu__link__text_truncated",
|
|
202
204
|
ariaLabel: "Untermenü öffnen",
|
|
203
205
|
role: "button",
|
|
204
206
|
tabindex: this.isPanelOpen ? 0 : -1,
|
package/src/ATable/ATable.js
CHANGED
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
h,
|
|
4
4
|
provide,
|
|
5
5
|
ref,
|
|
6
|
-
toRef,
|
|
7
6
|
} from "vue";
|
|
8
7
|
|
|
9
8
|
import AGet from "../AGet/AGet";
|
|
10
9
|
import ALoading from "../ALoading/ALoading";
|
|
11
10
|
import ATableCountProPage from "./ATableCountProPage/ATableCountProPage";
|
|
12
11
|
import ATableFilterCenter from "./ATableFilterCenter/ATableFilterCenter";
|
|
12
|
+
import ATableFiltersTop from "./ATableFiltersTop/ATableFiltersTop";
|
|
13
13
|
import ATableHeader from "./ATableHeader/ATableHeader";
|
|
14
14
|
import ATablePagination from "./ATablePagination/ATablePagination";
|
|
15
15
|
import ATablePreviewRight from "./ATablePreviewRight/ATablePreviewRight";
|
|
@@ -21,23 +21,22 @@ import MultipleActionAPI from "./compositionAPI/MultipleActionAPI";
|
|
|
21
21
|
import PreviewAPI from "./compositionAPI/PreviewAPI";
|
|
22
22
|
import RowsAPI from "./compositionAPI/RowsAPI";
|
|
23
23
|
import ScrollControlAPI from "./compositionAPI/ScrollControlAPI";
|
|
24
|
+
import TableColumnsAPI from "./compositionAPI/TableColumnsAPI";
|
|
25
|
+
import TableColumnsVisibleAPI from "./compositionAPI/TableColumnsVisibleAPI";
|
|
24
26
|
import TableFiltersAPI from "./compositionAPI/TableFiltersAPI";
|
|
27
|
+
import TableColumnsVisibleFunctionAPI from "./compositionAPI/TableColumnsVisibleFunctionAPI";
|
|
25
28
|
|
|
26
29
|
import {
|
|
27
30
|
getModelColumnsOrderingDefault,
|
|
28
|
-
getModelColumnsVisibleDefault,
|
|
29
31
|
} from "./utils/utils";
|
|
30
32
|
import {
|
|
31
33
|
cloneDeep,
|
|
32
|
-
forEach,
|
|
33
34
|
get,
|
|
34
35
|
isArray,
|
|
35
36
|
isNil,
|
|
36
37
|
isPlainObject,
|
|
37
|
-
keyBy,
|
|
38
38
|
uniqueId,
|
|
39
39
|
} from "lodash-es";
|
|
40
|
-
import ATableFiltersTop from "./ATableFiltersTop/ATableFiltersTop";
|
|
41
40
|
|
|
42
41
|
|
|
43
42
|
export default {
|
|
@@ -157,9 +156,9 @@ export default {
|
|
|
157
156
|
default: () => [],
|
|
158
157
|
},
|
|
159
158
|
modelColumnsVisible: {
|
|
160
|
-
type:
|
|
159
|
+
type: Object,
|
|
161
160
|
required: false,
|
|
162
|
-
default: () =>
|
|
161
|
+
default: () => ({}),
|
|
163
162
|
},
|
|
164
163
|
modelFilters: {
|
|
165
164
|
type: Object,
|
|
@@ -262,30 +261,16 @@ export default {
|
|
|
262
261
|
};
|
|
263
262
|
},
|
|
264
263
|
setup(props, context) {
|
|
265
|
-
const columns = toRef(props, "columns");
|
|
266
|
-
|
|
267
264
|
const tableGrandparentRef = ref(undefined);
|
|
268
|
-
const modelColumnsOrderingLocal = ref([]);
|
|
269
265
|
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
const COLUMNS = [];
|
|
275
|
-
forEach(modelColumnsOrderingLocal.value, columnId => {
|
|
276
|
-
COLUMNS.push(columnsKeyById.value[columnId]);
|
|
277
|
-
});
|
|
278
|
-
return COLUMNS;
|
|
279
|
-
});
|
|
266
|
+
const {
|
|
267
|
+
columnsOrdered,
|
|
268
|
+
modelColumnsOrderingLocal,
|
|
269
|
+
} = TableColumnsAPI(props);
|
|
280
270
|
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
modelColumnsVisibleLocal.value.forEach(columnId => {
|
|
285
|
-
MODEL_COLUMNS[columnId] = true;
|
|
286
|
-
});
|
|
287
|
-
return MODEL_COLUMNS;
|
|
288
|
-
});
|
|
271
|
+
const {
|
|
272
|
+
modelColumnsVisibleLocal,
|
|
273
|
+
} = TableColumnsVisibleAPI();
|
|
289
274
|
|
|
290
275
|
const {
|
|
291
276
|
hasRows,
|
|
@@ -322,7 +307,15 @@ export default {
|
|
|
322
307
|
} = ScrollControlAPI(props, context, {
|
|
323
308
|
columnsOrdered,
|
|
324
309
|
isMultipleActionsActive,
|
|
325
|
-
|
|
310
|
+
modelColumnsVisibleLocal,
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
const {
|
|
314
|
+
changeModelColumnsVisible,
|
|
315
|
+
initModelColumnsVisibleLocal,
|
|
316
|
+
} = TableColumnsVisibleFunctionAPI(props, context, {
|
|
317
|
+
modelColumnsVisibleLocal,
|
|
318
|
+
checkVisibleColumns,
|
|
326
319
|
});
|
|
327
320
|
|
|
328
321
|
const {
|
|
@@ -371,7 +364,6 @@ export default {
|
|
|
371
364
|
offset,
|
|
372
365
|
});
|
|
373
366
|
|
|
374
|
-
|
|
375
367
|
provide("changeModelIsTableWithoutScroll", changeModelIsTableWithoutScroll);
|
|
376
368
|
provide("columnsOrdered", columnsOrdered);
|
|
377
369
|
provide("columnsVisibleAdditionalSpaceForOneGrow", columnsVisibleAdditionalSpaceForOneGrow);
|
|
@@ -386,7 +378,6 @@ export default {
|
|
|
386
378
|
|
|
387
379
|
provide("rowsLocal", rowsLocal);
|
|
388
380
|
provide("modelColumnsVisibleLocal", modelColumnsVisibleLocal);
|
|
389
|
-
provide("modelColumnsVisibleMapping", modelColumnsVisibleMapping);
|
|
390
381
|
provide("onUpdateModelFilters", onUpdateModelFilters);
|
|
391
382
|
provide("updateDataKeyByIdFromFilter", updateDataKeyByIdFromFilter);
|
|
392
383
|
|
|
@@ -399,6 +390,8 @@ export default {
|
|
|
399
390
|
modelColumnsOrderingLocal,
|
|
400
391
|
modelColumnsVisibleLocal,
|
|
401
392
|
modelIsTableWithoutScroll,
|
|
393
|
+
initModelColumnsVisibleLocal,
|
|
394
|
+
changeModelColumnsVisible,
|
|
402
395
|
|
|
403
396
|
closePreview,
|
|
404
397
|
closePreviewAll,
|
|
@@ -493,14 +486,6 @@ export default {
|
|
|
493
486
|
}
|
|
494
487
|
},
|
|
495
488
|
|
|
496
|
-
initModelColumnsVisibleLocal() {
|
|
497
|
-
if (this.modelColumnsVisible.length) {
|
|
498
|
-
this.modelColumnsVisibleLocal = cloneDeep(this.modelColumnsVisible);
|
|
499
|
-
} else {
|
|
500
|
-
this.changeModelColumnsVisible(getModelColumnsVisibleDefault(this.columns));
|
|
501
|
-
}
|
|
502
|
-
},
|
|
503
|
-
|
|
504
489
|
changeModelSort({ sortId }) {
|
|
505
490
|
if (this.modelSort === sortId) {
|
|
506
491
|
this.modelSort = `-${ sortId }`;
|
|
@@ -516,12 +501,6 @@ export default {
|
|
|
516
501
|
this.closePreviewAll();
|
|
517
502
|
},
|
|
518
503
|
|
|
519
|
-
changeModelColumnsVisible(value) {
|
|
520
|
-
this.modelColumnsVisibleLocal = value;
|
|
521
|
-
this.$emit("update:modelColumnsVisible", cloneDeep(this.modelColumnsVisibleLocal));
|
|
522
|
-
this.checkVisibleColumns();
|
|
523
|
-
},
|
|
524
|
-
|
|
525
504
|
changeColumnsOrdering({ modelColumnsOrderingLocal, columnIndexDraggable, columnIndexOver }) {
|
|
526
505
|
if (columnIndexDraggable === columnIndexOver && !modelColumnsOrderingLocal) {
|
|
527
506
|
return;
|
|
@@ -39,7 +39,6 @@ export default {
|
|
|
39
39
|
"isColumnsDnd",
|
|
40
40
|
"isLoadingOptions",
|
|
41
41
|
"isLoadingTable",
|
|
42
|
-
"modelColumnsVisibleMapping",
|
|
43
42
|
],
|
|
44
43
|
setup(props, context) {
|
|
45
44
|
const {
|
|
@@ -181,6 +180,9 @@ export default {
|
|
|
181
180
|
},
|
|
182
181
|
},
|
|
183
182
|
render() {
|
|
183
|
+
if (this.column.isRender === false) {
|
|
184
|
+
return "";
|
|
185
|
+
}
|
|
184
186
|
return h("div", this.attributesForTh, [
|
|
185
187
|
h(this.componentLocal, this.attributesForButton, [
|
|
186
188
|
h(ATranslation, {
|
|
@@ -71,15 +71,17 @@ export default {
|
|
|
71
71
|
},
|
|
72
72
|
methods: {
|
|
73
73
|
selectAllColumns() {
|
|
74
|
-
|
|
74
|
+
const MODEL_COLUMNS_VISIBLE = {};
|
|
75
|
+
forEach(this.columnsOrdered, column => {
|
|
76
|
+
MODEL_COLUMNS_VISIBLE[column.id] = true;
|
|
77
|
+
});
|
|
78
|
+
this.changeModelColumnsVisible(MODEL_COLUMNS_VISIBLE);
|
|
75
79
|
},
|
|
76
80
|
|
|
77
81
|
deselectAllColumns() {
|
|
78
|
-
const MODEL_COLUMNS_VISIBLE =
|
|
82
|
+
const MODEL_COLUMNS_VISIBLE = {};
|
|
79
83
|
forEach(this.columnsOrdered, column => {
|
|
80
|
-
|
|
81
|
-
MODEL_COLUMNS_VISIBLE.push(column.id);
|
|
82
|
-
}
|
|
84
|
+
MODEL_COLUMNS_VISIBLE[column.id] = !!column.locked;
|
|
83
85
|
});
|
|
84
86
|
this.changeModelColumnsVisible(MODEL_COLUMNS_VISIBLE);
|
|
85
87
|
},
|
|
@@ -49,7 +49,6 @@ export default {
|
|
|
49
49
|
"isLoadingOptions",
|
|
50
50
|
"isLoadingTable",
|
|
51
51
|
"modelColumnsVisibleLocal",
|
|
52
|
-
"modelColumnsVisibleMapping",
|
|
53
52
|
"tableId",
|
|
54
53
|
],
|
|
55
54
|
setup(props, context) {
|
|
@@ -115,7 +114,7 @@ export default {
|
|
|
115
114
|
},
|
|
116
115
|
|
|
117
116
|
isColumnVisible() {
|
|
118
|
-
return this.
|
|
117
|
+
return this.modelColumnsVisibleLocal[this.columnId];
|
|
119
118
|
},
|
|
120
119
|
|
|
121
120
|
arrowButtons() {
|
|
@@ -184,12 +183,7 @@ export default {
|
|
|
184
183
|
toggleColumnVisible($event) {
|
|
185
184
|
$event.stopPropagation();
|
|
186
185
|
const MODEL_COLUMNS = cloneDeep(this.modelColumnsVisibleLocal);
|
|
187
|
-
|
|
188
|
-
if (INDEX !== -1) {
|
|
189
|
-
MODEL_COLUMNS.splice(INDEX, 1);
|
|
190
|
-
} else {
|
|
191
|
-
MODEL_COLUMNS.push(this.columnId);
|
|
192
|
-
}
|
|
186
|
+
MODEL_COLUMNS[this.columnId] = !MODEL_COLUMNS[this.columnId];
|
|
193
187
|
this.changeModelColumnsVisible(MODEL_COLUMNS);
|
|
194
188
|
},
|
|
195
189
|
|
|
@@ -220,7 +214,6 @@ export default {
|
|
|
220
214
|
columnIndex: columnIndexOver,
|
|
221
215
|
iconKey: "down",
|
|
222
216
|
}) }`;
|
|
223
|
-
console.log("NEW_ID", NEW_ID);
|
|
224
217
|
setFocusToElement(NEW_ID);
|
|
225
218
|
});
|
|
226
219
|
},
|
|
@@ -230,6 +223,9 @@ export default {
|
|
|
230
223
|
},
|
|
231
224
|
},
|
|
232
225
|
render() {
|
|
226
|
+
if (this.column.isRender === false) {
|
|
227
|
+
return "";
|
|
228
|
+
}
|
|
233
229
|
return h("li", this.attributesLi, [
|
|
234
230
|
h("div", {
|
|
235
231
|
class: "a_dropdown__item_text a_table__th__dropdown_item a_text_nowrap",
|
|
@@ -45,7 +45,6 @@ export default {
|
|
|
45
45
|
inject: [
|
|
46
46
|
"columnsDefaultValue",
|
|
47
47
|
"hasPreview",
|
|
48
|
-
"modelColumnsVisibleMapping",
|
|
49
48
|
"onTogglePreview",
|
|
50
49
|
"rowsLocal",
|
|
51
50
|
"valuesForColumnDefault",
|
|
@@ -165,6 +164,9 @@ export default {
|
|
|
165
164
|
},
|
|
166
165
|
},
|
|
167
166
|
render() {
|
|
167
|
+
if (this.column.isRender === false) {
|
|
168
|
+
return "";
|
|
169
|
+
}
|
|
168
170
|
return h(
|
|
169
171
|
"div",
|
|
170
172
|
this.attributesForTd,
|
|
@@ -12,12 +12,15 @@ export default function ColumnVisibleAPI(props) {
|
|
|
12
12
|
const column = toRef(props, "column");
|
|
13
13
|
const columnIndex = toRef(props, "columnIndex");
|
|
14
14
|
const indexFirstScrollInvisibleColumn = inject("indexFirstScrollInvisibleColumn", undefined);
|
|
15
|
-
const
|
|
15
|
+
const modelColumnsVisibleLocal = inject("modelColumnsVisibleLocal", {});
|
|
16
16
|
const modelIsTableWithoutScroll = inject("modelIsTableWithoutScroll");
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
const isVisibleFromModel = computed(() => {
|
|
20
|
-
|
|
20
|
+
if (column.value.id in modelColumnsVisibleLocal.value) {
|
|
21
|
+
return !!modelColumnsVisibleLocal.value[column.value.id];
|
|
22
|
+
}
|
|
23
|
+
return !column.value.hide;
|
|
21
24
|
});
|
|
22
25
|
|
|
23
26
|
const isVisibleFromScroll = computed(() => {
|
|
@@ -15,12 +15,23 @@ import {
|
|
|
15
15
|
export default function ScrollControlAPI(props, { emit }, {
|
|
16
16
|
columnsOrdered = computed(() => []),
|
|
17
17
|
isMultipleActionsActive = ref(undefined),
|
|
18
|
-
|
|
18
|
+
modelColumnsVisibleLocal = ref({}),
|
|
19
19
|
}) {
|
|
20
20
|
const columnWidthDefault = toRef(props, "columnWidthDefault");
|
|
21
21
|
const columnActionsWidth = toRef(props, "columnActionsWidth");
|
|
22
22
|
const isActionColumnVisible = toRef(props, "isActionColumnVisible");
|
|
23
23
|
|
|
24
|
+
const isColumnVisible = ({ column }) => {
|
|
25
|
+
if (column.isRender === false) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
const COLUMN_ID = column.id;
|
|
29
|
+
if (COLUMN_ID in modelColumnsVisibleLocal.value) {
|
|
30
|
+
return !!modelColumnsVisibleLocal.value[COLUMN_ID];
|
|
31
|
+
}
|
|
32
|
+
return !column.hide;
|
|
33
|
+
};
|
|
34
|
+
|
|
24
35
|
const columnActionsWidthLocal = computed(() => {
|
|
25
36
|
if (isActionColumnVisible.value) {
|
|
26
37
|
return columnActionsWidth.value;
|
|
@@ -65,7 +76,7 @@ export default function ScrollControlAPI(props, { emit }, {
|
|
|
65
76
|
const COLUMNS_SCROLL_VISIBLE = [];
|
|
66
77
|
for (let i = indexFirstScrollInvisibleColumn.value; i < columnsOrdered.value.length; i++) {
|
|
67
78
|
const COLUMN = columnsOrdered.value[i];
|
|
68
|
-
if (
|
|
79
|
+
if (isColumnVisible({ column: COLUMN })) {
|
|
69
80
|
COLUMNS_SCROLL_VISIBLE.push(cloneDeep(COLUMN));
|
|
70
81
|
}
|
|
71
82
|
}
|
|
@@ -80,7 +91,7 @@ export default function ScrollControlAPI(props, { emit }, {
|
|
|
80
91
|
let indexFirstScrollInvisibleColumnLocal = 0;
|
|
81
92
|
let sumGrows = 0;
|
|
82
93
|
forEach(columnsOrdered.value, column => {
|
|
83
|
-
if (!
|
|
94
|
+
if (!isColumnVisible({ column })) {
|
|
84
95
|
indexFirstScrollInvisibleColumnLocal++;
|
|
85
96
|
return;
|
|
86
97
|
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {
|
|
2
|
+
computed,
|
|
3
|
+
ref,
|
|
4
|
+
toRef,
|
|
5
|
+
} from "vue";
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
cloneDeep,
|
|
9
|
+
forEach,
|
|
10
|
+
keyBy,
|
|
11
|
+
} from "lodash-es";
|
|
12
|
+
|
|
13
|
+
export default function TableColumnsAPI(props) {
|
|
14
|
+
const columns = toRef(props, "columns");
|
|
15
|
+
|
|
16
|
+
const modelColumnsOrderingLocal = ref([]);
|
|
17
|
+
|
|
18
|
+
const columnsKeyById = computed(() => {
|
|
19
|
+
return keyBy(columns.value, "id");
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const columnIdsGroupByLocked = computed(() => {
|
|
23
|
+
const COLUMNS_GROUP_BY_LOCKED = {
|
|
24
|
+
true: [],
|
|
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);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return COLUMNS_GROUP_BY_LOCKED;
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const columnsOrdered = computed(() => {
|
|
39
|
+
const COLUMNS = [];
|
|
40
|
+
const COLUMNS_KEY_BY_ID = cloneDeep(columnsKeyById.value);
|
|
41
|
+
const MODEL_COLUMNS_ORDERING_LOCAL = cloneDeep(modelColumnsOrderingLocal.value);
|
|
42
|
+
|
|
43
|
+
forEach(columnIdsGroupByLocked.value.true, columnId => {
|
|
44
|
+
if (COLUMNS_KEY_BY_ID[columnId]) {
|
|
45
|
+
COLUMNS.push(COLUMNS_KEY_BY_ID[columnId]);
|
|
46
|
+
delete COLUMNS_KEY_BY_ID[columnId];
|
|
47
|
+
|
|
48
|
+
const INDEX_IN_MODEL_COLUMNS_ORDERING = MODEL_COLUMNS_ORDERING_LOCAL.indexOf(columnId);
|
|
49
|
+
if (INDEX_IN_MODEL_COLUMNS_ORDERING !== -1) {
|
|
50
|
+
MODEL_COLUMNS_ORDERING_LOCAL.splice(INDEX_IN_MODEL_COLUMNS_ORDERING, 1);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
forEach(MODEL_COLUMNS_ORDERING_LOCAL, columnId => {
|
|
56
|
+
if (COLUMNS_KEY_BY_ID[columnId]) {
|
|
57
|
+
COLUMNS.push(COLUMNS_KEY_BY_ID[columnId]);
|
|
58
|
+
delete COLUMNS_KEY_BY_ID[columnId];
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
forEach(COLUMNS_KEY_BY_ID, column => {
|
|
63
|
+
COLUMNS.push(column);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
return COLUMNS;
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
columnsKeyById,
|
|
71
|
+
columnsOrdered,
|
|
72
|
+
modelColumnsOrderingLocal,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ref,
|
|
3
|
+
toRef,
|
|
4
|
+
} from "vue";
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
getModelColumnsVisibleDefault,
|
|
8
|
+
} from "../utils/utils";
|
|
9
|
+
import {
|
|
10
|
+
cloneDeep,
|
|
11
|
+
size,
|
|
12
|
+
} from "lodash-es";
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
export default function TableColumnsVisibleFunctionAPI(props, { emit }, {
|
|
16
|
+
modelColumnsVisibleLocal = ref({}),
|
|
17
|
+
checkVisibleColumns = () => {},
|
|
18
|
+
}) {
|
|
19
|
+
const modelColumnsVisible = toRef(props, "modelColumnsVisible");
|
|
20
|
+
const columns = toRef(props, "columns");
|
|
21
|
+
|
|
22
|
+
const changeModelColumnsVisible = value => {
|
|
23
|
+
modelColumnsVisibleLocal.value = value;
|
|
24
|
+
emit("update:modelColumnsVisible", cloneDeep(modelColumnsVisibleLocal.value));
|
|
25
|
+
checkVisibleColumns();
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const initModelColumnsVisibleLocal = () => {
|
|
29
|
+
if (size(modelColumnsVisible.value)) {
|
|
30
|
+
modelColumnsVisibleLocal.value = cloneDeep(modelColumnsVisible.value);
|
|
31
|
+
} else {
|
|
32
|
+
changeModelColumnsVisible(getModelColumnsVisibleDefault(columns.value));
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
return {
|
|
37
|
+
changeModelColumnsVisible,
|
|
38
|
+
initModelColumnsVisibleLocal,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -3,11 +3,9 @@ import {
|
|
|
3
3
|
} from "lodash-es";
|
|
4
4
|
|
|
5
5
|
export function getModelColumnsVisibleDefault(columns) {
|
|
6
|
-
const MODEL_COLUMNS_VISIBLE =
|
|
6
|
+
const MODEL_COLUMNS_VISIBLE = {};
|
|
7
7
|
columns.forEach(column => {
|
|
8
|
-
|
|
9
|
-
MODEL_COLUMNS_VISIBLE.push(column.id);
|
|
10
|
-
}
|
|
8
|
+
MODEL_COLUMNS_VISIBLE[column.id] = !column.hide;
|
|
11
9
|
});
|
|
12
10
|
return MODEL_COLUMNS_VISIBLE;
|
|
13
11
|
}
|
|
@@ -175,9 +175,6 @@ $a_menu_breakpoint_mobile: 991px;
|
|
|
175
175
|
flex-basis: 10%;
|
|
176
176
|
display: block;
|
|
177
177
|
padding: var(--a_menu_link_padding_y) var(--a_menu_link_padding_x);
|
|
178
|
-
text-overflow: ellipsis;
|
|
179
|
-
white-space: nowrap;
|
|
180
|
-
overflow: hidden;
|
|
181
178
|
cursor: pointer;
|
|
182
179
|
&,
|
|
183
180
|
&:active,
|
|
@@ -196,6 +193,11 @@ $a_menu_breakpoint_mobile: 991px;
|
|
|
196
193
|
box-shadow: inset 0 0 1px 4px var(--a_menu_icon_focus_shadow_color);
|
|
197
194
|
}
|
|
198
195
|
}
|
|
196
|
+
.a_menu__link__text_truncated {
|
|
197
|
+
text-overflow: ellipsis;
|
|
198
|
+
white-space: nowrap;
|
|
199
|
+
overflow: hidden;
|
|
200
|
+
}
|
|
199
201
|
.a_menu__link_selected {
|
|
200
202
|
background-color: var(--a_menu_link_selected_bg);
|
|
201
203
|
color: var(--a_menu_link_selected_color);
|
|
@@ -354,3 +356,8 @@ $a_menu_breakpoint_mobile: 991px;
|
|
|
354
356
|
text-align: center;
|
|
355
357
|
font-size: 150%;
|
|
356
358
|
}
|
|
359
|
+
.a_menu__breadcrumbs__item {
|
|
360
|
+
position: relative;
|
|
361
|
+
display: flex;
|
|
362
|
+
align-items: center;
|
|
363
|
+
}
|