@dative-gpi/foundation-shared-components 0.1.120 → 1.0.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.
Files changed (196) hide show
  1. package/assets/images/map/imagery.png +0 -0
  2. package/assets/images/map/map.png +0 -0
  3. package/components/FSAccordion.vue +2 -1
  4. package/components/FSAccordionPanel.vue +20 -1
  5. package/components/FSBadge.vue +7 -3
  6. package/components/FSBreadcrumbs.vue +4 -2
  7. package/components/FSButton.vue +15 -8
  8. package/components/FSCalendar.vue +5 -2
  9. package/components/FSCalendarTwin.vue +6 -3
  10. package/components/FSCard.vue +4 -2
  11. package/components/FSCardPlaceholder.vue +80 -0
  12. package/components/FSCheckbox.vue +10 -7
  13. package/components/FSChip.vue +4 -2
  14. package/components/FSClickable.vue +5 -3
  15. package/components/FSClock.vue +18 -4
  16. package/components/FSCol.vue +12 -5
  17. package/components/FSColor.vue +4 -2
  18. package/components/FSColorIcon.vue +5 -3
  19. package/components/FSDialog.vue +28 -87
  20. package/components/FSDialogContent.vue +133 -0
  21. package/components/FSDialogForm.vue +25 -236
  22. package/components/FSDialogFormBody.vue +273 -0
  23. package/components/FSDialogMenu.vue +5 -2
  24. package/components/FSDialogMultiForm.vue +21 -197
  25. package/components/FSDialogMultiFormBody.vue +231 -0
  26. package/components/FSDialogSubmit.vue +4 -2
  27. package/components/FSDivider.vue +6 -4
  28. package/components/FSEditImage.vue +16 -9
  29. package/components/FSErrorToast.vue +2 -1
  30. package/components/FSFadeOut.vue +1 -1
  31. package/components/FSForm.vue +7 -7
  32. package/components/FSGrid.vue +4 -2
  33. package/components/FSGridMosaic.vue +3 -2
  34. package/components/FSIcon.vue +3 -2
  35. package/components/FSIconCard.vue +10 -3
  36. package/components/FSIconCheck.vue +2 -1
  37. package/components/FSIconFlag.vue +2 -1
  38. package/components/FSImage.vue +2 -1
  39. package/components/FSImageCard.vue +72 -0
  40. package/components/FSLabel.vue +4 -2
  41. package/components/FSLink.vue +5 -3
  42. package/components/FSLoader.vue +2 -1
  43. package/components/FSOptionGroup.vue +28 -20
  44. package/components/FSOptionItem.vue +8 -18
  45. package/components/FSPagination.vue +4 -2
  46. package/components/FSRadio.vue +23 -11
  47. package/components/FSRadioGroup.vue +23 -10
  48. package/components/FSRow.vue +8 -1
  49. package/components/FSSlideGroup.vue +27 -6
  50. package/components/FSSlider.vue +4 -2
  51. package/components/FSSpan.vue +2 -1
  52. package/components/FSSwitch.vue +13 -10
  53. package/components/FSTab.vue +4 -2
  54. package/components/FSTabs.vue +5 -14
  55. package/components/FSTag.vue +11 -4
  56. package/components/FSTagGroup.vue +4 -2
  57. package/components/FSText.vue +4 -2
  58. package/components/FSToggleSet.vue +30 -17
  59. package/components/FSTooltip.vue +15 -4
  60. package/components/FSWindow.vue +2 -2
  61. package/components/FSWrapGroup.vue +2 -1
  62. package/components/autocompletes/FSAutoCompleteAddress.vue +104 -0
  63. package/components/autocompletes/FSAutocompleteLanguage.vue +18 -26
  64. package/components/autocompletes/FSAutocompleteTag.vue +138 -0
  65. package/components/autocompletes/FSAutocompleteTimeZone.vue +19 -30
  66. package/components/buttons/FSButtonAdd.vue +28 -0
  67. package/components/buttons/FSButtonAddIcon.vue +28 -0
  68. package/components/buttons/FSButtonAddLabel.vue +27 -0
  69. package/components/buttons/FSButtonAddMini.vue +27 -0
  70. package/components/buttons/FSButtonFile.vue +4 -4
  71. package/components/buttons/FSButtonFileIcon.vue +4 -4
  72. package/components/buttons/FSButtonFileLabel.vue +4 -4
  73. package/components/buttons/FSButtonFileMini.vue +4 -4
  74. package/components/deviceOrganisations/FSConnectivity.vue +3 -2
  75. package/components/deviceOrganisations/FSConnectivityCard.vue +3 -2
  76. package/components/deviceOrganisations/FSStatus.vue +3 -2
  77. package/components/deviceOrganisations/FSStatusCard.vue +3 -2
  78. package/components/deviceOrganisations/FSStatusesCarousel.vue +3 -2
  79. package/components/deviceOrganisations/FSStatusesRow.vue +3 -2
  80. package/components/deviceOrganisations/FSWorstAlert.vue +5 -4
  81. package/components/deviceOrganisations/FSWorstAlertCard.vue +4 -2
  82. package/components/fields/FSAutocompleteField.vue +210 -97
  83. package/components/fields/FSBaseField.vue +2 -1
  84. package/components/fields/FSColorField.vue +65 -94
  85. package/components/fields/FSDateField.vue +12 -25
  86. package/components/fields/FSDateRangeField.vue +15 -27
  87. package/components/fields/FSDateTimeField.vue +22 -32
  88. package/components/fields/FSDateTimeRangeField.vue +43 -51
  89. package/components/fields/FSGradientField.vue +143 -0
  90. package/components/fields/FSIconField.vue +9 -6
  91. package/components/fields/FSMagicConfigField.vue +154 -0
  92. package/components/fields/FSMagicField.vue +185 -0
  93. package/components/fields/FSNumberField.vue +3 -1
  94. package/components/fields/FSPasswordField.vue +10 -10
  95. package/components/fields/FSRichTextField.vue +136 -50
  96. package/components/fields/FSSearchField.vue +41 -62
  97. package/components/fields/FSSelectField.vue +148 -53
  98. package/components/fields/FSTagField.vue +19 -16
  99. package/components/fields/FSTermField.vue +192 -186
  100. package/components/fields/FSTextArea.vue +4 -4
  101. package/components/fields/FSTextField.vue +29 -6
  102. package/components/fields/FSTimeField.vue +55 -20
  103. package/components/fields/FSTimeSlotField.vue +6 -5
  104. package/components/fields/FSTranslateField.vue +234 -0
  105. package/components/fields/FSTranslateRichTextField.vue +185 -0
  106. package/components/fields/FSTreeViewField.vue +520 -0
  107. package/components/lists/FSDataIteratorItem.vue +18 -3
  108. package/components/lists/FSDataTableUI.vue +138 -51
  109. package/components/lists/FSFilterButton.vue +4 -2
  110. package/components/lists/FSHiddenButton.vue +4 -2
  111. package/components/map/FSMap.vue +598 -0
  112. package/components/map/FSMapEditPointAddressOverlay.vue +164 -0
  113. package/components/map/FSMapLayerButton.vue +77 -0
  114. package/components/map/FSMapOverlay.vue +150 -0
  115. package/components/selects/FSSelectAutoRefresh.vue +62 -0
  116. package/components/selects/FSSelectDashboardVariableType.vue +47 -0
  117. package/components/selects/FSSelectDateSetting.vue +39 -37
  118. package/components/selects/FSSelectDays.vue +62 -0
  119. package/components/tiles/FSDashboardOrganisationTileUI.vue +7 -5
  120. package/components/tiles/FSDashboardOrganisationTypeTileUI.vue +7 -5
  121. package/components/tiles/FSDashboardShallowTileUI.vue +7 -5
  122. package/components/tiles/FSDeviceOrganisationTileUI.vue +11 -12
  123. package/components/tiles/FSFolderTileUI.vue +8 -6
  124. package/components/tiles/FSGroupTileUI.vue +13 -15
  125. package/components/tiles/{FSSimpleIconTileUI.vue → FSSimpleTileUI.vue} +29 -15
  126. package/components/tiles/FSTile.vue +5 -11
  127. package/components/tiles/FSUserOrganisationTileUI.vue +2 -1
  128. package/components/toggleSets/FSToggleSetPosition.vue +61 -0
  129. package/composables/index.ts +5 -1
  130. package/composables/useAddress.ts +158 -0
  131. package/composables/useAutocomplete.ts +4 -3
  132. package/composables/useColors.ts +8 -25
  133. package/composables/useDebounce.ts +2 -1
  134. package/composables/useMagicFieldProvider.ts +22 -0
  135. package/composables/useRules.ts +4 -12
  136. package/composables/useSlots.ts +46 -26
  137. package/composables/useTables.ts +29 -0
  138. package/composables/useTreeView.ts +48 -0
  139. package/elements/FSFormElement.ts +2 -1
  140. package/icons/flags/France.vue +21 -5
  141. package/icons/flags/Germany.vue +16 -4
  142. package/icons/flags/GreatBritain.vue +25 -6
  143. package/icons/flags/Italy.vue +21 -5
  144. package/icons/flags/Portugal.vue +225 -51
  145. package/icons/flags/Spain.vue +2781 -543
  146. package/icons/flags/UnitedStates.vue +31 -7
  147. package/icons/widgetTemplates/DevicesWidget.vue +189 -189
  148. package/icons/widgetTemplates/ProfileWidget.vue +9 -9
  149. package/icons/widgetTemplates/TextWidget.vue +6 -6
  150. package/models/breadcrumbs.ts +1 -1
  151. package/models/deviceAlerts.ts +1 -1
  152. package/models/deviceConnectivities.ts +1 -1
  153. package/models/index.ts +2 -0
  154. package/models/magicFields.ts +9 -0
  155. package/models/map.ts +18 -0
  156. package/models/richTextVariable.ts +5 -0
  157. package/models/rules.ts +11 -2
  158. package/models/tables.ts +30 -21
  159. package/models/variableNode.ts +104 -0
  160. package/package.json +21 -18
  161. package/plugins/colorPlugin.ts +2 -2
  162. package/plugins/index.ts +2 -1
  163. package/plugins/mapsPlugin.ts +37 -0
  164. package/shims-plugin.d.ts +2 -2
  165. package/shims-window.d.ts +3 -0
  166. package/styles/components/fs_button.scss +5 -0
  167. package/styles/components/fs_card.scss +0 -1
  168. package/styles/components/fs_col.scss +1 -0
  169. package/styles/components/fs_color_field.scss +12 -2
  170. package/styles/components/fs_data_iterator_item.scss +19 -6
  171. package/styles/components/fs_dialog.scss +12 -22
  172. package/styles/components/fs_gradient_field.scss +16 -0
  173. package/styles/components/fs_image_card.scss +18 -0
  174. package/styles/components/fs_magic_config_field.scss +13 -0
  175. package/styles/components/fs_map.scss +129 -0
  176. package/styles/components/fs_map_overlay.scss +38 -0
  177. package/styles/components/fs_meta_field.scss +6 -0
  178. package/styles/components/fs_option_group.scss +1 -0
  179. package/styles/components/fs_radio.scss +1 -1
  180. package/styles/components/fs_rich_text_field.scss +17 -5
  181. package/styles/components/fs_row.scss +1 -1
  182. package/styles/components/fs_select_field.scss +9 -14
  183. package/styles/components/fs_text.scss +1 -1
  184. package/styles/components/fs_time_field.scss +0 -4
  185. package/styles/components/fs_translate_field.scss +3 -0
  186. package/styles/components/fs_tree_view_field.scss +53 -0
  187. package/styles/components/index.scss +8 -1
  188. package/styles/globals/overrides.scss +54 -8
  189. package/styles/globals/scrollbars.scss +2 -2
  190. package/themes/default.ts +1 -1
  191. package/utils/gradient.ts +1601 -0
  192. package/utils/index.ts +3 -1
  193. package/utils/leafletMarkers.ts +23 -0
  194. package/utils/lexical.ts +3 -1
  195. package/components/selects/FSSelectTimeZone.vue +0 -67
  196. package/styles/components/fs_date_field.scss +0 -8
@@ -5,6 +5,7 @@
5
5
  width="100%"
6
6
  :color="$props.itemColor"
7
7
  :variant="variant"
8
+ :style="style"
8
9
  >
9
10
  <FSCol>
10
11
  <slot
@@ -66,9 +67,11 @@
66
67
  </template>
67
68
 
68
69
  <script lang="ts">
69
- import { computed, defineComponent, PropType } from "vue";
70
+ import type { PropType } from "vue";
71
+ import { computed, defineComponent } from "vue";
70
72
 
71
- import { ColorEnum, FSDataTableColumn } from "@dative-gpi/foundation-shared-components/models";
73
+ import type { FSDataTableColumn } from "@dative-gpi/foundation-shared-components/models";
74
+ import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
72
75
 
73
76
  import FSCheckbox from "../FSCheckbox.vue";
74
77
  import FSCard from "../FSCard.vue";
@@ -112,6 +115,11 @@ export default defineComponent({
112
115
  required: false,
113
116
  default: ColorEnum.Primary
114
117
  },
118
+ clickable: {
119
+ type: Boolean,
120
+ required: false,
121
+ default: false
122
+ },
115
123
  showSelect: {
116
124
  type: Boolean,
117
125
  required: false,
@@ -127,8 +135,15 @@ export default defineComponent({
127
135
  }
128
136
  });
129
137
 
138
+ const style = computed((): { [key: string]: string | null | undefined } => {
139
+ return {
140
+ "--fs-data-iterator-item-cursor": props.clickable ? "pointer" : "default"
141
+ }
142
+ });
143
+
130
144
  return {
131
- variant
145
+ variant,
146
+ style
132
147
  };
133
148
  }
134
149
  });
@@ -7,6 +7,10 @@
7
7
  :wrap="isExtraSmall ? false : true"
8
8
  width="fill"
9
9
  >
10
+ <slot
11
+ v-if="!isExtraSmall"
12
+ name="prepend-toolbar"
13
+ />
10
14
  <template
11
15
  v-if="$props.showSearch"
12
16
  >
@@ -26,18 +30,21 @@
26
30
  v-if="!isExtraSmall"
27
31
  name="toolbar"
28
32
  />
29
- <v-spacer />
30
- <FSRow
33
+ <template
31
34
  v-if="!$props.disableTable && !$props.disableIterator"
32
- align="center-right"
33
35
  >
34
- <FSOptionGroup
35
- :values="modeOptions"
36
- :singleColor="true"
37
- :required="true"
38
- v-model="innerMode"
39
- />
40
- </FSRow>
36
+ <v-spacer />
37
+ <FSRow
38
+ align="center-right"
39
+ >
40
+ <FSOptionGroup
41
+ :values="modeOptions"
42
+ :singleColor="true"
43
+ :required="true"
44
+ v-model="innerMode"
45
+ />
46
+ </FSRow>
47
+ </template>
41
48
  </FSRow>
42
49
  <FSRow
43
50
  v-if="isExtraSmall && hasToolbar"
@@ -109,24 +116,26 @@
109
116
  >
110
117
  <v-data-table
111
118
  v-if="!isExtraSmall"
119
+ loadingText=""
112
120
  :selectStrategy="$props.singleSelect ? 'single' : 'all'"
113
- :itemValue="$props.itemValue"
114
- :showSelect="$props.showSelect"
115
- :headers="extraHeaders.concat(innerHeaders)"
116
121
  :groupBy="$props.groupBy ? [$props.groupBy] : []"
122
+ :headers="extraHeaders.concat(innerHeaders)"
117
123
  :sortBy="innerSortBy ? [innerSortBy] : []"
118
- :items="innerItems"
124
+ :itemsPerPage="innerRowsPerPage"
125
+ :showSelect="$props.showSelect"
126
+ :hover="!$props.sortDraggable"
127
+ :itemValue="$props.itemValue"
128
+ :loading="$props.loading"
129
+ :rowProps="rowProps"
119
130
  :fixedHeader="true"
131
+ :items="innerItems"
120
132
  :multiSort="false"
121
- :hover="!$props.sortDraggable"
122
- :style="style"
123
- :row-props="rowProps"
124
- :class="classes"
125
133
  :page="innerPage"
126
- :itemsPerPage="innerRowsPerPage"
134
+ :class="classes"
135
+ :style="style"
127
136
  :modelValue="$props.modelValue"
128
- @auxclick:row="onClickRow"
129
- @click:row="onClickRow"
137
+ @auxclick:row="onClickLibrary.row"
138
+ @click:row="onClickLibrary.row"
130
139
  @update:sortBy="innerSortBy = $event ? $event[0] : null"
131
140
  @dragover.prevent
132
141
  @drop:row="(event, row) => onDrop(event, row, 'tr.v-data-table__tr')"
@@ -404,10 +413,28 @@
404
413
  <v-data-iterator
405
414
  v-else
406
415
  class="fs-data-table-iterator"
416
+ :itemsPerPage="innerRowsPerPage"
417
+ :loading="$props.loading"
407
418
  :items="innerItems"
408
419
  :page="innerPage"
409
- :itemsPerPage="innerRowsPerPage"
410
420
  >
421
+ <template
422
+ #loader
423
+ >
424
+ <v-progress-linear
425
+ height="2"
426
+ :indeterminate="true"
427
+ />
428
+ </template>
429
+ <template
430
+ #no-data
431
+ >
432
+ <FSText
433
+ font="text-overline"
434
+ >
435
+ {{ $tr("ui.data-table.empty", "No data") }}
436
+ </FSText>
437
+ </template>
411
438
  <template
412
439
  #default="{ items }"
413
440
  >
@@ -435,6 +462,7 @@
435
462
  v-if="item.type === 'item'"
436
463
  :itemColor="$props.rowColor ? $props.rowColor(item.raw) : ColorEnum.Background"
437
464
  :headers="innerHeaders.filter(h => !$props.sneakyHeaders.includes(h.value))"
465
+ :clickable="onClickLibrary.clickable"
438
466
  :showSelect="$props.showSelect"
439
467
  :itemTo="$props.itemTo"
440
468
  :color="$props.color"
@@ -442,6 +470,8 @@
442
470
  :key="index"
443
471
  :modelValue="$props.modelValue.includes(item.raw[$props.itemValue])"
444
472
  @update:modelValue="toggleSelect"
473
+ @auxclick="() => onClickLibrary.mobile($event, item)"
474
+ @click="() => onClickLibrary.mobile($event, item)"
445
475
  >
446
476
  <template
447
477
  #item.top="props"
@@ -554,9 +584,27 @@
554
584
  >
555
585
  <v-data-iterator
556
586
  class="fs-data-table-iterator"
557
- :items="innerItems"
587
+ :loading="$props.loading"
558
588
  :itemsPerPage="size"
589
+ :items="innerItems"
559
590
  >
591
+ <template
592
+ #loader
593
+ >
594
+ <v-progress-linear
595
+ height="2"
596
+ :indeterminate="true"
597
+ />
598
+ </template>
599
+ <template
600
+ #no-data
601
+ >
602
+ <FSText
603
+ font="text-overline"
604
+ >
605
+ {{ $tr("ui.data-table.empty", "No data") }}
606
+ </FSText>
607
+ </template>
560
608
  <template
561
609
  #default="{ items }"
562
610
  >
@@ -584,6 +632,7 @@
584
632
  <FSDataIteratorItem
585
633
  :itemColor="$props.rowColor ? $props.rowColor(item.raw) : ColorEnum.Background"
586
634
  :headers="innerHeaders.filter(h => !$props.sneakyHeaders.includes(h.value))"
635
+ :clickable="onClickLibrary.clickable"
587
636
  :showSelect="$props.showSelect"
588
637
  :itemTo="$props.itemTo"
589
638
  :color="$props.color"
@@ -591,6 +640,8 @@
591
640
  :key="index"
592
641
  :modelValue="$props.modelValue.includes(item.raw[$props.itemValue])"
593
642
  @update:modelValue="toggleSelect"
643
+ @auxclick="() => onClickLibrary.mobile($event, item)"
644
+ @click="() => onClickLibrary.mobile($event, item)"
594
645
  >
595
646
  <template
596
647
  #item.top="props"
@@ -638,10 +689,12 @@
638
689
  </template>
639
690
 
640
691
  <script lang="ts">
641
- import { computed, defineComponent, getCurrentInstance, onMounted, onUnmounted, PropType, ref, Ref, Slot, watch } from "vue";
692
+ import type { PropType, Ref, Slot} from "vue";
693
+ import { computed, defineComponent, nextTick, onMounted, onUnmounted, ref, watch } from "vue";
642
694
  import { useRouter } from "vue-router";
643
695
 
644
- import { ColorEnum, FSDataTableColumn, FSDataTableFilter, FSDataTableOrder, FSToggle } from "@dative-gpi/foundation-shared-components/models";
696
+ import type { FSDataTableColumn, FSDataTableFilter, FSDataTableOrder, FSToggle } from "@dative-gpi/foundation-shared-components/models";
697
+ import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
645
698
  import { useBreakpoints, useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
646
699
  import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
647
700
  import { uuidv4 } from "@dative-gpi/bones-ui/tools/uuid"
@@ -718,6 +771,11 @@ export default defineComponent({
718
771
  required: false,
719
772
  default: null
720
773
  },
774
+ ["onClick:row"]: {
775
+ type: Function,
776
+ required: false,
777
+ default: null
778
+ },
721
779
  rowsPerPage: {
722
780
  type: Number,
723
781
  required: false,
@@ -768,6 +826,11 @@ export default defineComponent({
768
826
  required: false,
769
827
  default: false
770
828
  },
829
+ loading: {
830
+ type: Boolean,
831
+ required: false,
832
+ default: false
833
+ },
771
834
  mode: {
772
835
  type: String as PropType<"table" | "iterator">,
773
836
  required: false,
@@ -1018,25 +1081,38 @@ export default defineComponent({
1018
1081
  }
1019
1082
  });
1020
1083
 
1021
- const onClickRow = computed(() => {
1022
- if (!!getCurrentInstance()?.vnode.props?.["onClick:row"] || props.itemTo) {
1023
- return (event: PointerEvent, row: any) => {
1024
- if (props.itemTo && router) {
1025
- if (event.metaKey || event.ctrlKey || event.button === 1) {
1026
- window.open(router.resolve(props.itemTo(row.item)).href, "_blank");
1084
+ const onClickLibrary = computed((): { [key: string]: Function | boolean } => {
1085
+ if (props["onClick:row"] || props.itemTo) {
1086
+ return {
1087
+ clickable: true,
1088
+ row: (event: PointerEvent, row: any) => {
1089
+ if (props.itemTo && router) {
1090
+ if (event.metaKey || event.ctrlKey || event.button === 1) {
1091
+ window.open(router.resolve(props.itemTo(row.item)).href, "_blank");
1092
+ }
1093
+ else {
1094
+ router.push(props.itemTo(row.item));
1095
+ }
1027
1096
  }
1028
1097
  else {
1029
- router.push(props.itemTo(row.item));
1098
+ emit("click:row", row.item);
1099
+ }
1100
+ },
1101
+ mobile: (event: any, item: any) => {
1102
+ if (props.itemTo && router) {
1103
+ router.push(props.itemTo(item));
1104
+ }
1105
+ else {
1106
+ emit("click:row", item);
1030
1107
  }
1031
1108
  }
1032
- else {
1033
- emit("click:row", row.item);
1034
- }
1035
- };
1036
- }
1037
- else {
1038
- return null;
1109
+ }
1039
1110
  }
1111
+ return {
1112
+ clickable: false,
1113
+ row: null,
1114
+ mobile: () => null
1115
+ };
1040
1116
  });
1041
1117
 
1042
1118
  const draggableDisabled = computed(() => {
@@ -1081,9 +1157,6 @@ export default defineComponent({
1081
1157
  const toggleFilter = (header: string, value: FSDataTableFilter[]): void => {
1082
1158
  filters.value[header] = value;
1083
1159
  emit("update:filters", filters.value);
1084
- // If a filter is hidden, the associated filter is reseted
1085
- resetable.value = Object.keys(filters.value)
1086
- .some((key) => filters.value[key].some((filter) => filter.hidden));
1087
1160
  };
1088
1161
 
1089
1162
  const resetFilter = (): void => {
@@ -1091,7 +1164,6 @@ export default defineComponent({
1091
1164
  filters.value[key] = filters.value[key].map((filter) => ({ ...filter, hidden: false }));
1092
1165
  }
1093
1166
  emit("update:filters", filters.value);
1094
- resetable.value = false;
1095
1167
  };
1096
1168
 
1097
1169
  const filterSlot = (header: FSDataTableColumn): string => {
@@ -1105,10 +1177,8 @@ export default defineComponent({
1105
1177
  switch (property) {
1106
1178
  case "hidden":
1107
1179
  innerColumn.hidden = value as boolean;
1108
- if (value) {
1180
+ if (value && filters.value[header.value!]) {
1109
1181
  filters.value[header.value!] = filters.value[header.value!].map((filter) => ({ ...filter, hidden: false }));
1110
- resetable.value = Object.keys(filters.value)
1111
- .some((key) => filters.value[key].some((filter) => filter.hidden));
1112
1182
  emit("update:filters", filters.value);
1113
1183
  }
1114
1184
  break;
@@ -1314,10 +1384,12 @@ export default defineComponent({
1314
1384
  target.insertAdjacentElement("beforebegin", dragged);
1315
1385
  target.classList.remove("fs-dropzone-include");
1316
1386
  }
1317
- else if (dragged?.getAttribute("data-initial-index") !== null) {
1387
+ else if (dragged!.getAttribute("data-initial-index") !== null) {
1318
1388
  target.classList.add("fs-dropzone-include");
1319
- const tbodyElement = (event.target as HTMLElement)?.closest(elementContainerSelector) as HTMLElement;
1320
- resetRowIndex(+dragged?.getAttribute('data-initial-index')!, Array.from(tbodyElement.children).indexOf(dragged), dragged, tbodyElement);
1389
+ const tbodyElement = (event.target as HTMLElement)?.closest(elementContainerSelector) as HTMLElement ?? null;
1390
+ if (tbodyElement !== null) {
1391
+ resetRowIndex(+dragged!.getAttribute('data-initial-index')!, Array.from(tbodyElement.children).indexOf(dragged), dragged, tbodyElement);
1392
+ }
1321
1393
  }
1322
1394
  }
1323
1395
  }
@@ -1403,6 +1475,11 @@ export default defineComponent({
1403
1475
  innerPage.value = 1;
1404
1476
  });
1405
1477
 
1478
+ watch(filters, () => {
1479
+ resetable.value = Object.keys(filters.value)
1480
+ .some((key) => filters.value[key].some((filter) => filter.hidden));
1481
+ }, { deep: true });
1482
+
1406
1483
  watch(innerMode, () => {
1407
1484
  emit("update:mode", innerMode.value);
1408
1485
  size.value = props.sizeIterator;
@@ -1421,10 +1498,20 @@ export default defineComponent({
1421
1498
  emit("update:rowsPerPage", innerRowsPerPage.value);
1422
1499
  });
1423
1500
 
1424
- watch([() => props.headers, () => props.items], () => {
1501
+ watch(() => props.headers, () => {
1425
1502
  computeFilters();
1426
1503
  });
1427
1504
 
1505
+ watch(() => props.items, async () => {
1506
+ computeFilters();
1507
+ if (innerPage.value !== 1) {
1508
+ const formerPage = innerPage.value;
1509
+ innerPage.value = 1;
1510
+ await nextTick();
1511
+ innerPage.value = formerPage;
1512
+ }
1513
+ });
1514
+
1428
1515
  return {
1429
1516
  ColorEnum,
1430
1517
  innerSlots,
@@ -1453,10 +1540,10 @@ export default defineComponent({
1453
1540
  classes,
1454
1541
  style,
1455
1542
  size,
1456
- onClickRow,
1457
1543
  isExtraSmall,
1458
1544
  draggableDisabled,
1459
1545
  elementId,
1546
+ onClickLibrary,
1460
1547
  toggleSelectAll,
1461
1548
  toggleSelectGroup,
1462
1549
  toggleSelect,
@@ -87,9 +87,11 @@
87
87
  </template>
88
88
 
89
89
  <script lang="ts">
90
- import { computed, defineComponent, PropType, ref } from "vue";
90
+ import type { PropType} from "vue";
91
+ import { computed, defineComponent, ref } from "vue";
91
92
 
92
- import { ColorBase, ColorEnum, FSDataTableColumn, FSDataTableFilter } from "@dative-gpi/foundation-shared-components/models";
93
+ import type { ColorBase, FSDataTableColumn, FSDataTableFilter } from "@dative-gpi/foundation-shared-components/models";
94
+ import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
93
95
  import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
94
96
 
95
97
  import FSSearchField from "../fields/FSSearchField.vue";
@@ -61,9 +61,11 @@
61
61
  </template>
62
62
 
63
63
  <script lang="ts">
64
- import { defineComponent, PropType, ref } from "vue";
64
+ import type { PropType} from "vue";
65
+ import { defineComponent, ref } from "vue";
65
66
 
66
- import { ColorBase, ColorEnum, FSDataTableColumn } from "@dative-gpi/foundation-shared-components/models";
67
+ import type { ColorBase, FSDataTableColumn } from "@dative-gpi/foundation-shared-components/models";
68
+ import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
67
69
 
68
70
  import FSCard from "../FSCard.vue";
69
71
  import FSChip from "../FSChip.vue";