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.
@@ -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
- // )
@@ -23,6 +23,7 @@ export default {
23
23
  grow: 2,
24
24
  footerSlot: "footerAloha",
25
25
  class: "a_justify_content_end",
26
+ isRender: true,
26
27
  },
27
28
  {
28
29
  label: "Aloha frei dsfdsfdsf sdfdsfdsfdsfsd",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aloha-vue",
3
3
  "description": "Project aloha",
4
- "version": "1.0.122",
4
+ "version": "1.0.124",
5
5
  "author": "Ilia Brykin",
6
6
  "scripts": {
7
7
  "build-icons": "node scriptsNode/iconsSvgToJs.js bootstrap3 && node scriptsNode/iconsSvgToJs.js bootstrap-1-9-1"
@@ -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
- ariaHidden: true,
57
- }, this.label),
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,
@@ -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: Array,
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 columnsKeyById = computed(() => {
271
- return keyBy(columns.value, "id");
272
- });
273
- const columnsOrdered = computed(() => {
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 modelColumnsVisibleLocal = ref([]);
282
- const modelColumnsVisibleMapping = computed(() => {
283
- const MODEL_COLUMNS = {};
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
- modelColumnsVisibleMapping,
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
- this.changeModelColumnsVisible(this.columnsOrdered.map(column => column.id));
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
- if (column.locked) {
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.modelColumnsVisibleMapping[this.columnId];
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
- const INDEX = MODEL_COLUMNS.indexOf(this.columnId);
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 modelColumnsVisibleMapping = inject("modelColumnsVisibleMapping", {});
15
+ const modelColumnsVisibleLocal = inject("modelColumnsVisibleLocal", {});
16
16
  const modelIsTableWithoutScroll = inject("modelIsTableWithoutScroll");
17
17
 
18
18
 
19
19
  const isVisibleFromModel = computed(() => {
20
- return !!modelColumnsVisibleMapping.value[column.value.id];
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
- modelColumnsVisibleMapping = computed(() => ({})),
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 (modelColumnsVisibleMapping.value[COLUMN.id]) {
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 (!modelColumnsVisibleMapping.value[column.id]) {
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,11 @@
1
+ import {
2
+ ref,
3
+ } from "vue";
4
+
5
+ export default function TableColumnsVisibleAPI() {
6
+ const modelColumnsVisibleLocal = ref({});
7
+
8
+ return {
9
+ modelColumnsVisibleLocal,
10
+ };
11
+ }
@@ -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
- if (!column.hide) {
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
+ }