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.
@@ -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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aloha-vue",
3
3
  "description": "Project aloha",
4
- "version": "1.0.293",
4
+ "version": "1.0.295",
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"
@@ -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
- modelColumnsOrderingLocal,
349
- } = TableColumnsAPI(props);
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({ modelColumnsOrderingLocal: getModelColumnsOrderingDefault(this.columns) });
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
- return this.modelColumnsVisibleLocal[this.columnId];
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] = !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
- const columns = toRef(props, "columns");
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 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);
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
- return COLUMNS_GROUP_BY_LOCKED;
35
+
36
+ return COLUMNS;
36
37
  });
37
38
 
38
- const columnsOrdered = computed(() => {
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(modelColumnsOrderingLocal.value);
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
- modelColumnsOrderingLocal,
73
+ columnsOrderedAlt,
73
74
  };
74
75
  }