@modeltables/fontawesome-vuetify 4.1.0 → 4.2.1

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/README.md CHANGED
@@ -54,6 +54,10 @@ The table shows your data and lets you manage it easily. It has built-in `load`
54
54
 
55
55
  Loading spinner appears while items and pagination changes.
56
56
 
57
+ Data items are organized in selections with two main events `itemSelection` and `multiSelection` to easy control your items.
58
+
59
+ Using `showFilters` are essential with `rowClick` event when paginationModel mode is on for quick data changes.
60
+
57
61
  CRUD features like add, edit, or delete are ready to use.
58
62
 
59
63
  License
@@ -1,4 +1,5 @@
1
1
  import { selectedRow, unSelectedRow } from "../helpers/resources";
2
+ import { isEqual } from "../helpers/instances";
2
3
 
3
4
  export class DataSetItems{
4
5
  id: number = 0;
@@ -26,14 +27,27 @@ export const changeMultipleSets = (method: any, item: DataSetItems, dataItems: D
26
27
  }
27
28
  }
28
29
 
29
- export const changeSet = (dataSetItems: DataSetItems[], multiSelected: boolean) => {
30
+ export const changeSet = (dataSetItems: DataSetItems[], multiSelected: boolean, multiSelectedItems: Object[] = []) => {
31
+ let next, before;
30
32
  for(const value of dataSetItems){
31
- if(!multiSelected){
32
- value.properties.selected = true;
33
- value.properties.rowClass = selectedRow;
34
- }else{
35
- value.properties.selected = false;
36
- value.properties.rowClass = unSelectedRow;
37
- }
33
+ if(!multiSelected){
34
+ value.properties.selected = false;
35
+ value.properties.rowClass = unSelectedRow;
36
+ if(multiSelectedItems.some(element => isEqual(element, value.dataItem))){
37
+ multiSelectedItems = multiSelectedItems.filter(element => !isEqual(element, value.dataItem));
38
+ before = value.dataItem;
39
+ next = multiSelected;
40
+ }
41
+ }else{
42
+ value.properties.selected = true;
43
+ value.properties.rowClass = selectedRow;
44
+ if(!multiSelectedItems.some(element => isEqual(element, value.dataItem))){
45
+ multiSelectedItems = [...multiSelectedItems, value.dataItem];
46
+ next = value.dataItem;
47
+ before = multiSelected;
48
+ }
49
+ }
38
50
  }
51
+
52
+ return { selectedItems: multiSelectedItems, beforeItem: before, afterItem: next };
39
53
  }
@@ -164,6 +164,7 @@ export default {
164
164
  showFilters: this.showFilters,
165
165
  modelValue: ref([]),
166
166
  firstChange: true,
167
+ lastSelectedItem: Object as any,
167
168
  multiSelected: false,
168
169
  perPage: this.pagination!.PerPage,
169
170
  page: this.pagination!.CurrentPage,
@@ -202,11 +203,15 @@ export default {
202
203
 
203
204
  dataSet.changeMultipleSet = [(item: DataSetItems) => {
204
205
  if(this.multiSelectedItems.some(element => isEqual(element, item.dataItem))){
205
- item.properties.rowClass = unSelectedRow;
206
- item.properties.selected = false;
206
+ setTimeout(() => {
207
+ item.properties.rowClass = selectedRow;
208
+ item.properties.selected = true;
209
+ }, 100)
207
210
  }else{
208
- item.properties.rowClass = selectedRow;
209
- item.properties.selected = true;
211
+ setTimeout(() => {
212
+ item.properties.rowClass = unSelectedRow;
213
+ item.properties.selected = false;
214
+ }, 100)
210
215
  }
211
216
  }];
212
217
 
@@ -215,6 +220,8 @@ export default {
215
220
  dataSet.properties.rowClass = unSelectedRow;
216
221
  }
217
222
 
223
+ this.multiSelectedItems = [];
224
+ this.multiSelectedItems = [item.dataItem];
218
225
  changeActiveSets(dataSet.changeMultipleSet, item);
219
226
  }]
220
227
 
@@ -227,7 +234,9 @@ export default {
227
234
 
228
235
  this.dataSetItems = dataSetItems;
229
236
  this.dataItems = dataItems;
230
-
237
+ if(this.multiSelect){
238
+ this.changePageActiveSet(event);
239
+ }
231
240
  },
232
241
  initHeaders() {
233
242
  let dataSetHeaders = [] as DataSetHeader[];
@@ -271,13 +280,12 @@ export default {
271
280
  for(let dataSet of this.dataSetItems){
272
281
  dataSet.properties.rowClass = unSelectedRow;
273
282
  }
274
-
275
283
  changeMultipleSets(item.changeItemSet, item, this.dataSetItems);
276
- this.$emit(itemSelection, item.dataItem);
284
+ this.$emit(itemSelection, {item: item.dataItem, lastItem: this.lastSelectedItem});
285
+ this.lastSelectedItem = item.dataItem;
277
286
  }
278
287
 
279
288
  if(this.multiSelect){
280
-
281
289
  if(!this.multiSelectedItems.length){
282
290
  this.multiSelectedItems = [item.dataItem];
283
291
  }else if(this.multiSelectedItems.some(element => isEqual(element, item.dataItem))){
@@ -287,7 +295,7 @@ export default {
287
295
  }
288
296
 
289
297
  changeActiveSets(item.changeMultipleSet, item);
290
- this.$emit(multiSelection, this.multiSelectedItems);
298
+ this.$emit(multiSelection, { selectedItems: this.multiSelectedItems, beforeItem: item.dataItem, afterItem: item.dataItem });
291
299
  }
292
300
  },
293
301
  filterValue(event: any, dataItem: any){
@@ -342,7 +350,6 @@ export default {
342
350
  this.search();
343
351
  },
344
352
  pageSize(event: any){
345
- console.log(event);
346
353
  this.perPage = event;
347
354
  this.filters.PerPage = this.perPage;
348
355
  this.search();
@@ -353,12 +360,34 @@ export default {
353
360
  this.filters.SortDirection = window.Number(prop.sort);
354
361
  this.search();
355
362
  },
363
+ changePageActiveSet(event: any){
364
+ if(this.dataSetItems.length && this.multiSelectedItems.length){
365
+ for(let multiSelectItem of this.multiSelectedItems){
366
+ let dataSetItem = this.dataSetItems.find((dataSet) => isEqual(dataSet.dataItem, multiSelectItem));
367
+ if(dataSetItem != undefined){
368
+ changeActiveSets(dataSetItem.changeMultipleSet, dataSetItem);
369
+ }
370
+ }
371
+ this.changeCheckActiveSet(event);
372
+ }
373
+ },
374
+ changeCheckActiveSet(event: any){
375
+ for(let dataSetItem of this.dataSetItems){
376
+ if(this.multiSelectedItems.some(element => isEqual(element, dataSetItem.dataItem))){
377
+ this.multiSelected = true;
378
+ }else{
379
+ this.multiSelected = false;
380
+ }
381
+ }
382
+ },
356
383
  selectItem(event){
357
384
  console.log(event);
358
385
  },
359
386
  multiSelectItems(event){
360
- changeSet(this.dataSetItems, this.multiSelected);
361
387
  this.multiSelected = !this.multiSelected;
388
+ let result = changeSet(this.dataSetItems, this.multiSelected, this.multiSelectedItems);
389
+ this.multiSelectedItems = result.selectedItems;
390
+ this.$emit(multiSelection, result);
362
391
  }
363
392
  }
364
393
  }