@modeltables/fontawesome-vuetify 4.0.0 → 4.2.0

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
@@ -48,9 +48,14 @@ export class ExampleModel {
48
48
  ```
49
49
  Documentation
50
50
 
51
- Options data input key are required with optional data.
51
+ Options data input key are required with optional attributes.
52
+
52
53
  The table shows your data and lets you manage it easily. It has built-in `load` and `search` events for quick requests and updates.
54
+
53
55
  Loading spinner appears while items and pagination changes.
56
+
57
+ Data items are organized in selections with two main events `itemSelection` and `multiSelection` to easy control your items.
58
+
54
59
  CRUD features like add, edit, or delete are ready to use.
55
60
 
56
61
  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
 
@@ -227,7 +232,9 @@ export default {
227
232
 
228
233
  this.dataSetItems = dataSetItems;
229
234
  this.dataItems = dataItems;
230
-
235
+ if(this.multiSelect){
236
+ this.changePageActiveSet(event);
237
+ }
231
238
  },
232
239
  initHeaders() {
233
240
  let dataSetHeaders = [] as DataSetHeader[];
@@ -273,11 +280,11 @@ export default {
273
280
  }
274
281
 
275
282
  changeMultipleSets(item.changeItemSet, item, this.dataSetItems);
276
- this.$emit(itemSelection, item.dataItem);
283
+ this.$emit(itemSelection, {item: item.dataItem, lastItem: this.lastSelectedItem});
284
+ this.lastSelectedItem = item.dataItem;
277
285
  }
278
286
 
279
287
  if(this.multiSelect){
280
-
281
288
  if(!this.multiSelectedItems.length){
282
289
  this.multiSelectedItems = [item.dataItem];
283
290
  }else if(this.multiSelectedItems.some(element => isEqual(element, item.dataItem))){
@@ -287,7 +294,7 @@ export default {
287
294
  }
288
295
 
289
296
  changeActiveSets(item.changeMultipleSet, item);
290
- this.$emit(multiSelection, this.multiSelectedItems);
297
+ this.$emit(multiSelection, { selectedItems: this.multiSelectedItems, beforeItem: item.dataItem, afterItem: item.dataItem });
291
298
  }
292
299
  },
293
300
  filterValue(event: any, dataItem: any){
@@ -342,7 +349,6 @@ export default {
342
349
  this.search();
343
350
  },
344
351
  pageSize(event: any){
345
- console.log(event);
346
352
  this.perPage = event;
347
353
  this.filters.PerPage = this.perPage;
348
354
  this.search();
@@ -353,12 +359,34 @@ export default {
353
359
  this.filters.SortDirection = window.Number(prop.sort);
354
360
  this.search();
355
361
  },
362
+ changePageActiveSet(event: any){
363
+ if(this.dataSetItems.length && this.multiSelectedItems.length){
364
+ for(let multiSelectItem of this.multiSelectedItems){
365
+ let dataSetItem = this.dataSetItems.find((dataSet) => isEqual(dataSet.dataItem, multiSelectItem));
366
+ if(dataSetItem != undefined){
367
+ changeActiveSets(dataSetItem.changeMultipleSet, dataSetItem);
368
+ }
369
+ }
370
+ this.changeCheckActiveSet(event);
371
+ }
372
+ },
373
+ changeCheckActiveSet(event: any){
374
+ for(let dataSetItem of this.dataSetItems){
375
+ if(this.multiSelectedItems.some(element => isEqual(element, dataSetItem.dataItem))){
376
+ this.multiSelected = true;
377
+ }else{
378
+ this.multiSelected = false;
379
+ }
380
+ }
381
+ },
356
382
  selectItem(event){
357
383
  console.log(event);
358
384
  },
359
385
  multiSelectItems(event){
360
- changeSet(this.dataSetItems, this.multiSelected);
361
386
  this.multiSelected = !this.multiSelected;
387
+ let result = changeSet(this.dataSetItems, this.multiSelected, this.multiSelectedItems);
388
+ this.multiSelectedItems = result.selectedItems;
389
+ this.$emit(multiSelection, result);
362
390
  }
363
391
  }
364
392
  }