@dative-gpi/foundation-shared-components 1.0.56 → 1.0.58-groupings

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 (297) hide show
  1. package/assets/images/map/snow.png +0 -0
  2. package/components/FSAccordionPanel.vue +40 -21
  3. package/components/FSBreadcrumbs.vue +21 -12
  4. package/components/FSButton.vue +16 -16
  5. package/components/FSCalendar.vue +50 -12
  6. package/components/FSCalendarTwin.vue +95 -43
  7. package/components/FSCard.vue +61 -9
  8. package/components/FSCardPlaceholder.vue +8 -5
  9. package/components/FSCheckbox.vue +5 -4
  10. package/components/FSChip.vue +73 -45
  11. package/components/FSChipGroup.vue +69 -0
  12. package/components/FSClickable.vue +11 -9
  13. package/components/FSClock.vue +30 -12
  14. package/components/FSCol.vue +11 -5
  15. package/components/FSColorIcon.vue +23 -5
  16. package/components/FSDialog.vue +2 -1
  17. package/components/FSDialogContent.vue +12 -11
  18. package/components/FSDialogForm.vue +22 -2
  19. package/components/FSDialogFormBody.vue +50 -31
  20. package/components/FSDialogMenu.vue +17 -8
  21. package/components/FSDialogMultiFormBody.vue +79 -56
  22. package/components/FSDialogRemove.vue +7 -8
  23. package/components/FSDialogSubmit.vue +20 -11
  24. package/components/FSEditImage.vue +1 -1
  25. package/components/FSEditImageUI.vue +20 -10
  26. package/components/FSFadeOut.vue +53 -21
  27. package/components/FSForm.vue +10 -8
  28. package/components/FSGrid.vue +1 -1
  29. package/components/FSIcon.vue +4 -3
  30. package/components/FSIconCard.vue +68 -12
  31. package/components/FSImage.vue +9 -2
  32. package/components/FSImageUI.vue +8 -15
  33. package/components/FSInformationsMenu.vue +142 -0
  34. package/components/FSInstantPicker.vue +269 -0
  35. package/components/FSLink.vue +25 -9
  36. package/components/FSLoader.vue +28 -10
  37. package/components/FSMenu.vue +47 -0
  38. package/components/FSOptionGroup.vue +57 -9
  39. package/components/FSOptionItem.vue +4 -4
  40. package/components/FSPagination.vue +1 -1
  41. package/components/FSPlayButtons.vue +72 -0
  42. package/components/FSProgressBar.vue +94 -0
  43. package/components/FSRadio.vue +5 -4
  44. package/components/FSRadioGroup.vue +3 -3
  45. package/components/FSRouterLink.vue +42 -0
  46. package/components/FSSlideGroup.vue +19 -5
  47. package/components/FSSlider.vue +6 -5
  48. package/components/FSSpan.vue +12 -7
  49. package/components/FSSwitch.vue +47 -21
  50. package/components/FSTab.vue +15 -13
  51. package/components/FSTabs.vue +32 -7
  52. package/components/FSTag.vue +16 -5
  53. package/components/FSTagGroup.vue +4 -4
  54. package/components/FSText.vue +11 -7
  55. package/components/FSToggleSet.vue +7 -7
  56. package/components/FSWindow.vue +122 -5
  57. package/components/FSWrapGroup.vue +13 -1
  58. package/components/agenda/FSAgenda.vue +50 -37
  59. package/components/agenda/FSAgendaDialogCalendar.vue +2 -2
  60. package/components/agenda/FSAgendaHeader.vue +35 -10
  61. package/components/agenda/FSAgendaHorizontalEvent.vue +18 -6
  62. package/components/agenda/FSAgendaHoursRow.vue +48 -8
  63. package/components/agenda/FSAgendaVerticalEvent.vue +1 -1
  64. package/components/agenda/FSDayAgenda.vue +1 -2
  65. package/components/agenda/FSMonthAgenda.vue +3 -9
  66. package/components/agenda/FSSelectAgendaMode.vue +2 -2
  67. package/components/agenda/FSWeekAgenda.vue +7 -13
  68. package/components/autocompletes/FSAutoCompleteAddress.vue +25 -20
  69. package/components/autocompletes/FSAutocompleteLanguage.vue +7 -1
  70. package/components/autocompletes/FSAutocompleteTimeZone.vue +7 -1
  71. package/components/buttons/FSButtonAdd.vue +1 -1
  72. package/components/buttons/FSButtonAddLabel.vue +1 -1
  73. package/components/buttons/FSButtonCancel.vue +1 -1
  74. package/components/buttons/FSButtonCancelLabel.vue +1 -1
  75. package/components/buttons/FSButtonCheckbox.vue +4 -4
  76. package/components/buttons/FSButtonCopy.vue +1 -1
  77. package/components/buttons/FSButtonCopyLabel.vue +1 -1
  78. package/components/buttons/FSButtonDuplicate.vue +1 -1
  79. package/components/buttons/FSButtonDuplicateLabel.vue +1 -1
  80. package/components/buttons/FSButtonEdit.vue +1 -1
  81. package/components/buttons/FSButtonEditLabel.vue +1 -1
  82. package/components/buttons/FSButtonFile.vue +1 -1
  83. package/components/buttons/FSButtonFileLabel.vue +1 -1
  84. package/components/buttons/FSButtonNext.vue +1 -1
  85. package/components/buttons/FSButtonNextLabel.vue +1 -1
  86. package/components/buttons/FSButtonPrevious.vue +1 -1
  87. package/components/buttons/FSButtonPreviousLabel.vue +1 -1
  88. package/components/buttons/FSButtonRedo.vue +1 -1
  89. package/components/buttons/FSButtonRedoLabel.vue +1 -1
  90. package/components/buttons/FSButtonRemove.vue +1 -1
  91. package/components/buttons/FSButtonRemoveLabel.vue +1 -1
  92. package/components/buttons/FSButtonSave.vue +1 -1
  93. package/components/buttons/FSButtonSaveLabel.vue +1 -1
  94. package/components/buttons/FSButtonSearch.vue +1 -1
  95. package/components/buttons/FSButtonSearchLabel.vue +1 -1
  96. package/components/buttons/FSButtonUndo.vue +1 -1
  97. package/components/buttons/FSButtonUndoLabel.vue +1 -1
  98. package/components/buttons/FSButtonUpdate.vue +1 -1
  99. package/components/buttons/FSButtonUpdateLabel.vue +1 -1
  100. package/components/buttons/FSButtonValidate.vue +1 -1
  101. package/components/buttons/FSButtonValidateLabel.vue +1 -1
  102. package/components/calendar/FSSimpleCalendar.vue +145 -0
  103. package/components/calendar/FSSimpleCalendarHeader.vue +60 -0
  104. package/components/calendar/FSSimpleMonthSelector.vue +138 -0
  105. package/components/deviceOrganisations/FSConnectivity.vue +16 -4
  106. package/components/deviceOrganisations/FSConnectivityCard.vue +17 -45
  107. package/components/deviceOrganisations/FSStatus.vue +16 -4
  108. package/components/deviceOrganisations/FSStatusCard.vue +33 -59
  109. package/components/deviceOrganisations/FSStatusRichCard.vue +171 -0
  110. package/components/deviceOrganisations/FSStatusesCarousel.vue +1 -0
  111. package/components/deviceOrganisations/FSStatusesRow.vue +8 -2
  112. package/components/deviceOrganisations/FSWorstAlert.vue +37 -42
  113. package/components/deviceOrganisations/FSWorstAlertCard.vue +35 -84
  114. package/components/fields/FSAutocompleteField.vue +85 -82
  115. package/components/fields/FSAutocompleteTag.vue +1 -1
  116. package/components/fields/FSBaseField.vue +54 -30
  117. package/components/fields/FSClosableSearchField.vue +83 -0
  118. package/components/fields/FSColorField.vue +48 -44
  119. package/components/fields/FSCommentField.vue +28 -16
  120. package/components/fields/FSDateField.vue +13 -10
  121. package/components/fields/FSDateRangeField.vue +6 -5
  122. package/components/fields/FSDateTimeField.vue +14 -11
  123. package/components/fields/FSDateTimeRangeDialog.vue +160 -0
  124. package/components/fields/FSDateTimeRangeField.vue +23 -115
  125. package/components/fields/FSEntityFieldUI.vue +36 -19
  126. package/components/fields/FSGradientField.vue +5 -5
  127. package/components/fields/FSIconField.vue +16 -9
  128. package/components/fields/FSMagicConfigField.vue +15 -7
  129. package/components/fields/FSMagicField.vue +7 -2
  130. package/components/fields/FSNumberField.vue +9 -4
  131. package/components/fields/FSPasswordField.vue +7 -7
  132. package/components/fields/FSRichTextField.vue +78 -58
  133. package/components/fields/FSSearchField.vue +9 -115
  134. package/components/fields/FSSelectField.vue +69 -71
  135. package/components/fields/FSTagField.vue +10 -10
  136. package/components/fields/FSTermField.vue +72 -47
  137. package/components/fields/FSTextArea.vue +17 -11
  138. package/components/fields/FSTextField.vue +15 -10
  139. package/components/fields/FSTimeField.vue +14 -10
  140. package/components/fields/FSTimeRangeField.vue +310 -0
  141. package/components/fields/FSTimeStepField.vue +5 -5
  142. package/components/fields/FSTranslateField.vue +10 -10
  143. package/components/fields/FSTranslateRichTextField.vue +41 -20
  144. package/components/fields/FSTranslateTextArea.vue +10 -10
  145. package/components/fields/FSTreeViewField.vue +15 -13
  146. package/components/fields/periodicField/FSPeriodicDailyField.vue +7 -7
  147. package/components/fields/periodicField/FSPeriodicField.vue +15 -15
  148. package/components/fields/periodicField/FSPeriodicMonthlyField.vue +16 -16
  149. package/components/fields/periodicField/FSPeriodicWeeklyField.vue +28 -18
  150. package/components/fields/periodicField/FSPeriodicYearlyField.vue +12 -12
  151. package/components/lists/FSDataIteratorItem.vue +23 -67
  152. package/components/lists/FSDataTableUI.vue +220 -137
  153. package/components/lists/FSDraggable.vue +2 -2
  154. package/components/lists/FSFilterButton.vue +14 -16
  155. package/components/lists/FSHeaderButton.vue +11 -9
  156. package/components/lists/FSHiddenButton.vue +9 -9
  157. package/components/lists/FSLoadDataTable.vue +10 -7
  158. package/components/lists/FSSimpleList.vue +96 -102
  159. package/components/lists/FSSimpleListItem.vue +131 -0
  160. package/components/map/FSMap.vue +146 -158
  161. package/components/map/FSMapFeatureGroup.vue +7 -1
  162. package/components/map/FSMapLayerButton.vue +4 -3
  163. package/components/map/FSMapMarker.vue +70 -48
  164. package/components/map/FSMapMarkerClusterGroup.vue +32 -7
  165. package/components/map/FSMapOverlay.vue +44 -24
  166. package/components/map/FSMapPolygon.vue +16 -4
  167. package/components/map/FSMapTileLayer.vue +26 -9
  168. package/components/map/layers.ts +0 -0
  169. package/components/selects/FSSelectAutoRefresh.vue +8 -8
  170. package/components/selects/FSSelectDashboardVariableType.vue +4 -3
  171. package/components/selects/FSSelectDateSetting.vue +2 -2
  172. package/components/selects/FSSelectDays.vue +8 -8
  173. package/components/selects/FSSelectListMode.vue +2 -2
  174. package/components/selects/FSSelectMapLayer.vue +68 -0
  175. package/components/selects/FSSelectMonths.vue +13 -13
  176. package/components/selects/chartSelectors/FSAggregationSelector.vue +52 -0
  177. package/components/selects/chartSelectors/FSAxisTypeSelector.vue +49 -0
  178. package/components/selects/chartSelectors/FSDisplayAsSelector.vue +53 -0
  179. package/components/selects/chartSelectors/FSFilterTypeSelector.vue +54 -0
  180. package/components/selects/chartSelectors/FSHeatmapRuleSelector.vue +54 -0
  181. package/components/selects/chartSelectors/FSOperationOnSelector.vue +53 -0
  182. package/components/selects/chartSelectors/FSPlanningTypeSelector.vue +53 -0
  183. package/components/selects/chartSelectors/FSPlotPerSelector.vue +52 -0
  184. package/components/selects/chartSelectors/FSSelectEntityType.vue +59 -0
  185. package/components/selects/chartSelectors/FSSerieTypeSelector.vue +53 -0
  186. package/components/tiles/FSAlertTileUI.vue +90 -0
  187. package/components/tiles/FSChartTileUI.vue +61 -52
  188. package/components/tiles/FSCommentTileUI.vue +38 -13
  189. package/components/tiles/FSDashboardOrganisationTypeTileUI.vue +14 -2
  190. package/components/tiles/FSDashboardShallowTileUI.vue +14 -2
  191. package/components/tiles/FSDeviceOrganisationTileUI.vue +6 -6
  192. package/components/tiles/FSGroupTileUI.vue +58 -110
  193. package/components/tiles/FSGroupingTileUI.vue +115 -0
  194. package/components/tiles/FSLoadTile.vue +16 -10
  195. package/components/tiles/FSLocationTileUI.vue +63 -55
  196. package/components/tiles/FSModelTileUI.vue +5 -46
  197. package/components/tiles/FSServiceAccountOrganisationTileUI.vue +0 -6
  198. package/components/tiles/FSSimpleTileUI.vue +34 -29
  199. package/components/tiles/FSTile.vue +46 -39
  200. package/components/tiles/FSUserOrganisationTileUI.vue +1 -7
  201. package/components/toggleSets/FSToggleSetPosition.vue +1 -1
  202. package/components/views/FSBaseView.vue +64 -0
  203. package/components/views/FSEntityView.vue +12 -140
  204. package/components/views/FSSimpleView.vue +29 -0
  205. package/components/views/desktop/FSBaseDefaultDesktopView.vue +135 -0
  206. package/components/views/desktop/FSBaseDesktopView.vue +53 -0
  207. package/components/views/desktop/FSBaseEntityDesktopView.vue +211 -0
  208. package/components/views/mobile/FSBaseDefaultMobileView.vue +133 -0
  209. package/components/views/mobile/FSBaseEntityMobileView.vue +206 -0
  210. package/components/views/mobile/FSBaseMobileView.vue +53 -0
  211. package/composables/index.ts +1 -0
  212. package/composables/useAddress.ts +40 -8
  213. package/composables/useBreakpoints.ts +40 -4
  214. package/composables/useColors.ts +16 -7
  215. package/composables/useMagicFieldProvider.ts +1 -0
  216. package/composables/useMapLayers.ts +62 -0
  217. package/composables/useSlots.ts +2 -1
  218. package/models/colors.ts +2 -1
  219. package/models/deviceAlerts.ts +1 -0
  220. package/models/magicFields.ts +1 -0
  221. package/models/map.ts +12 -10
  222. package/models/rules.ts +6 -3
  223. package/models/tables.ts +5 -2
  224. package/models/variableNode.ts +8 -5
  225. package/package.json +5 -5
  226. package/styles/components/fs_agenda.scss +4 -0
  227. package/styles/components/fs_agenda_event.scss +1 -1
  228. package/styles/components/fs_agenda_hours_row.scss +0 -8
  229. package/styles/components/fs_autocomplete_field.scss +0 -13
  230. package/styles/components/fs_breadcrumbs.scss +18 -36
  231. package/styles/components/fs_button.scss +7 -5
  232. package/styles/components/fs_calendar.scss +1 -0
  233. package/styles/components/fs_card.scss +9 -0
  234. package/styles/components/fs_chip.scss +13 -7
  235. package/styles/components/fs_clickable.scss +16 -23
  236. package/styles/components/fs_clock.scss +0 -10
  237. package/styles/components/fs_col.scss +1 -1
  238. package/styles/components/fs_color_field.scss +1 -4
  239. package/styles/components/fs_data_table.scss +6 -9
  240. package/styles/components/fs_dialog.scss +4 -10
  241. package/styles/components/fs_dialog_menu.scss +4 -2
  242. package/styles/components/fs_draggable.scss +0 -5
  243. package/styles/components/fs_edit_image.scss +8 -0
  244. package/styles/components/fs_fade_out.scss +10 -2
  245. package/styles/components/fs_filter_button.scss +1 -6
  246. package/styles/components/fs_hidden_button.scss +2 -7
  247. package/styles/components/fs_image_card.scss +6 -4
  248. package/styles/components/fs_magic_config_field.scss +1 -2
  249. package/styles/components/fs_map.scss +57 -17
  250. package/styles/components/fs_meta_field.scss +3 -5
  251. package/styles/components/fs_option_group.scss +15 -5
  252. package/styles/components/fs_password_field.scss +4 -2
  253. package/styles/components/fs_progress_bar.scss +14 -0
  254. package/styles/components/fs_radio.scss +0 -11
  255. package/styles/components/fs_rich_text_field.scss +1 -10
  256. package/styles/components/fs_select_field.scss +4 -13
  257. package/styles/components/fs_slide_group.scss +7 -0
  258. package/styles/components/fs_span.scss +13 -5
  259. package/styles/components/fs_status_rich_card.scss +6 -0
  260. package/styles/components/fs_switch.scss +1 -0
  261. package/styles/components/fs_tabs.scss +19 -33
  262. package/styles/components/fs_tag.scss +8 -22
  263. package/styles/components/fs_text_area.scss +2 -21
  264. package/styles/components/fs_tile.scss +0 -19
  265. package/styles/components/fs_window.scss +3 -1
  266. package/styles/components/fs_wrap_group.scss +7 -0
  267. package/styles/components/index.scss +2 -6
  268. package/styles/globals/index.scss +1 -5
  269. package/styles/globals/overrides.scss +28 -61
  270. package/styles/globals/scrollbars.scss +8 -0
  271. package/styles/globals/text_fonts.scss +18 -66
  272. package/styles/globals/touchscreen.scss +2 -2
  273. package/tools/alertsTools.ts +87 -12
  274. package/tools/chartsTools.ts +143 -16
  275. package/tools/index.ts +3 -1
  276. package/tools/reportsTools.ts +38 -0
  277. package/tools/timeRangeTools.ts +125 -0
  278. package/utils/badge.ts +9 -5
  279. package/utils/filter.ts +7 -4
  280. package/utils/index.ts +1 -0
  281. package/utils/leafletMarkers.ts +4 -4
  282. package/utils/operations.ts +108 -0
  283. package/utils/sort.ts +2 -2
  284. package/utils/time.ts +16 -16
  285. package/components/fields/FSTimeSlotField.vue +0 -250
  286. package/components/views/FSEntityHeader.vue +0 -350
  287. package/components/views/FSListHeader.vue +0 -83
  288. package/components/views/FSListView.vue +0 -83
  289. package/components/views/FSSkeletonView.vue +0 -100
  290. package/styles/components/fs_data_iterator_item.scss +0 -33
  291. package/styles/components/fs_icon_field.scss +0 -12
  292. package/styles/components/fs_search_field.scss +0 -3
  293. package/styles/components/fs_tag_field.scss +0 -8
  294. package/styles/components/fs_time_field.scss +0 -12
  295. package/styles/components/fs_timeslot_field.scss +0 -12
  296. package/styles/globals/breakpoints.scss +0 -20
  297. package/styles/globals/fixes.scss +0 -5
@@ -74,7 +74,7 @@ export default defineComponent({
74
74
  const dragged = (event.target as HTMLElement)?.closest(props.elementSelector) as HTMLElement;
75
75
  dragged.classList.add("fs-draggable-dragging");
76
76
  dragged.classList.add("fs-draggable-dragging-grabbegin");
77
- dragged.dataset.initialIndex = props.item?.index ?? props.item?.value;
77
+ dragged.dataset.initialIndex = props.item.index;
78
78
  event.preventDefault();
79
79
  }
80
80
  }, mobileGrabThreshold);
@@ -171,7 +171,7 @@ export default defineComponent({
171
171
  return;
172
172
  }
173
173
  const dragged = (event.target as HTMLElement)?.closest(props.elementSelector) as HTMLElement;
174
- dragged.dataset.initialIndex = props.item?.index ?? props.item?.value;
174
+ dragged.dataset.initialIndex = props.item.index;
175
175
  event.dataTransfer?.setDragImage(dragged, 25, 25);
176
176
 
177
177
  if (event.dataTransfer) {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-menu
2
+ <FSMenu
3
3
  :closeOnContentClick="false"
4
4
  v-model="expanded"
5
5
  >
@@ -12,7 +12,7 @@
12
12
  variant="standard"
13
13
  :height="['30px', '24px']"
14
14
  :color="ColorEnum.Dark"
15
- :editable="true"
15
+ :clickable="true"
16
16
  :label="label"
17
17
  v-bind="props"
18
18
  />
@@ -23,38 +23,34 @@
23
23
  :border="false"
24
24
  >
25
25
  <FSCol
26
- padding="16px 0 24px 16px"
26
+ padding="20px"
27
27
  gap="12px"
28
28
  >
29
29
  <FSCol
30
- padding="0 16px 0 0"
31
30
  gap="12px"
32
31
  >
33
32
  <FSSpan
34
33
  font="text-overline"
35
34
  >
36
- {{ $tr("ui.data-table.filter", "Filter") }}
35
+ {{ $tr("ui.common.filter", "Filter") }}
37
36
  </FSSpan>
38
37
  <FSChip
39
38
  class="fs-filter-button-chip"
40
- :label="$tr('ui.data-table.all-values', 'All values')"
39
+ :label="$tr('ui.common.all-values', 'All values')"
41
40
  :height="['30px', '24px']"
42
41
  :variant="getAllVariant()"
43
42
  :color="$props.color"
44
- :editable="true"
43
+ :clickable="true"
45
44
  @click="onToggleAll"
46
45
  />
47
- <FSDivider
48
- padding="0 8px 0 0"
49
- />
46
+ <FSDivider />
50
47
  <FSSearchField
48
+ :hideHeader="true"
51
49
  class="fs-filter-button-search"
52
- prependInnerIcon="mdi-magnify"
53
50
  v-model="search"
54
51
  />
55
52
  </FSCol>
56
53
  <FSFadeOut
57
- padding="0 8px 0 0"
58
54
  maxHeight="360px"
59
55
  >
60
56
  <FSCol
@@ -67,7 +63,7 @@
67
63
  :height="['30px', '24px']"
68
64
  :color="$props.color"
69
65
  :label="filter.text"
70
- :editable="true"
66
+ :clickable="true"
71
67
  :key="index"
72
68
  @click="() => onToggle(filter)"
73
69
  >
@@ -83,7 +79,7 @@
83
79
  </FSFadeOut>
84
80
  </FSCol>
85
81
  </FSCard>
86
- </v-menu>
82
+ </FSMenu>
87
83
  </template>
88
84
 
89
85
  <script lang="ts">
@@ -98,6 +94,7 @@ import FSDivider from "../FSDivider.vue";
98
94
  import FSCard from "../FSCard.vue";
99
95
  import FSChip from "../FSChip.vue";
100
96
  import FSSpan from "../FSSpan.vue";
97
+ import FSMenu from '../FSMenu.vue';
101
98
  import FSCol from "../FSCol.vue";
102
99
 
103
100
  export default defineComponent({
@@ -109,6 +106,7 @@ export default defineComponent({
109
106
  FSCard,
110
107
  FSChip,
111
108
  FSSpan,
109
+ FSMenu,
112
110
  FSCol
113
111
  },
114
112
  props: {
@@ -140,10 +138,10 @@ export default defineComponent({
140
138
  if (props.filters) {
141
139
  const hidden = props.filters.filter(f => f.hidden).length;
142
140
  if (hidden > 0) {
143
- return $tr("ui.data-table.some-filters-visible", "{0}: {1} visible", props.header.text, (props.filters.length - hidden).toString());
141
+ return $tr("filter-button.some-filters-visible", "{0}: {1} visible", props.header.text, (props.filters.length - hidden).toString());
144
142
  }
145
143
  }
146
- return $tr("ui.data-table.all-filters-visible", "{0}: All visible", props.header.text);
144
+ return $tr("filter-button.all-filters-visible", "{0}: All visible", props.header.text);
147
145
  }
148
146
  return null;
149
147
  });
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-menu
2
+ <FSMenu
3
3
  v-model="expanded"
4
4
  >
5
5
  <template
@@ -24,7 +24,7 @@
24
24
  <FSSpan
25
25
  font="text-overline"
26
26
  >
27
- {{ $tr("ui.data-table.column-options", "Options for this column") }}
27
+ {{ $tr("data-table.column-options", "Options for this column") }}
28
28
  </FSSpan>
29
29
  <FSCol
30
30
  padding="6px"
@@ -33,9 +33,9 @@
33
33
  prependIcon="mdi-eye-off-outline"
34
34
  class="fs-header-button-chip"
35
35
  variant="borderless"
36
- :label="$tr('ui.data-table.hide-column', 'Hide column')"
36
+ :label="$tr('data-table.hide-column', 'Hide column')"
37
37
  :height="[30, 24]"
38
- :editable="true"
38
+ :clickable="true"
39
39
  @click="$emit('update:hide')"
40
40
  />
41
41
  <FSChip
@@ -43,9 +43,9 @@
43
43
  class="fs-header-button-chip"
44
44
  variant="borderless"
45
45
  prependIcon="mdi-chevron-left"
46
- :label="$tr('ui.data-table.move-left', 'Move to the left')"
46
+ :label="$tr('data-table.move-left', 'Move to the left')"
47
47
  :height="[30, 24]"
48
- :editable="true"
48
+ :clickable="true"
49
49
  @click="$emit('update:left')"
50
50
  />
51
51
  <FSChip
@@ -53,15 +53,15 @@
53
53
  class="fs-header-button-chip"
54
54
  variant="borderless"
55
55
  prependIcon="mdi-chevron-right"
56
- :label="$tr('ui.data-table.move-right', 'Move to the right')"
56
+ :label="$tr('data-table.move-right', 'Move to the right')"
57
57
  :height="[30, 24]"
58
- :editable="true"
58
+ :clickable="true"
59
59
  @click="$emit('update:right')"
60
60
  />
61
61
  </FSCol>
62
62
  </FSCol>
63
63
  </FSCard>
64
- </v-menu>
64
+ </FSMenu>
65
65
  </template>
66
66
 
67
67
  <script lang="ts">
@@ -73,6 +73,7 @@ import FSButton from "../FSButton.vue";
73
73
  import FSCard from "../FSCard.vue";
74
74
  import FSSpan from "../FSSpan.vue";
75
75
  import FSChip from "../FSChip.vue";
76
+ import FSMenu from '../FSMenu.vue';
76
77
  import FSCol from "../FSCol.vue";
77
78
 
78
79
  export default defineComponent({
@@ -82,6 +83,7 @@ export default defineComponent({
82
83
  FSCard,
83
84
  FSChip,
84
85
  FSSpan,
86
+ FSMenu,
85
87
  FSCol
86
88
  },
87
89
  props: {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-menu
2
+ <FSMenu
3
3
  :closeOnContentClick="false"
4
4
  v-model="expanded"
5
5
  >
@@ -10,8 +10,8 @@
10
10
  prependIcon="mdi-eye-off-outline"
11
11
  :height="[30, 24]"
12
12
  :color="ColorEnum.Light"
13
- :editable="true"
14
- :label="$tr('ui.data-table.hidden-columns', '{0} hidden column(s)', $props.headers.length.toString())"
13
+ :clickable="true"
14
+ :label="$tr('data-table.hidden-columns', '{0} hidden column(s)', $props.headers.length.toString())"
15
15
  v-bind="props"
16
16
  />
17
17
  </template>
@@ -21,21 +21,19 @@
21
21
  :border="false"
22
22
  >
23
23
  <FSCol
24
- padding="16px 0px 24px 16px"
24
+ padding="24px"
25
25
  gap="12px"
26
26
  >
27
27
  <FSCol
28
- padding="0 16px 0 0"
29
28
  gap="12px"
30
29
  >
31
30
  <FSSpan
32
31
  font="text-overline"
33
32
  >
34
- {{ $tr("ui.data-table.show-columns", "Show columns") }}
33
+ {{ $tr("data-table.show-columns", "Show columns") }}
35
34
  </FSSpan>
36
35
  </FSCol>
37
36
  <FSFadeOut
38
- padding="0 8px 0 0"
39
37
  maxHeight="360px"
40
38
  >
41
39
  <FSCol
@@ -48,7 +46,7 @@
48
46
  :height="['30px', '24px']"
49
47
  :color="$props.color"
50
48
  :label="header.text"
51
- :editable="true"
49
+ :clickable="true"
52
50
  :key="index"
53
51
  @click="$emit('update:show', header)"
54
52
  >
@@ -57,7 +55,7 @@
57
55
  </FSFadeOut>
58
56
  </FSCol>
59
57
  </FSCard>
60
- </v-menu>
58
+ </FSMenu>
61
59
  </template>
62
60
 
63
61
  <script lang="ts">
@@ -68,6 +66,7 @@ import { type ColorBase, ColorEnum, type FSDataTableColumn } from "@dative-gpi/f
68
66
  import FSCard from "../FSCard.vue";
69
67
  import FSChip from "../FSChip.vue";
70
68
  import FSSpan from "../FSSpan.vue";
69
+ import FSMenu from '../FSMenu.vue';
71
70
  import FSCol from "../FSCol.vue";
72
71
 
73
72
  export default defineComponent({
@@ -76,6 +75,7 @@ export default defineComponent({
76
75
  FSCard,
77
76
  FSChip,
78
77
  FSSpan,
78
+ FSMenu,
79
79
  FSCol
80
80
  },
81
81
  props: {
@@ -13,13 +13,16 @@
13
13
  <FSLoader
14
14
  variant="button"
15
15
  />
16
- <v-spacer />
17
- <FSLoader
18
- variant="button"
19
- />
20
- <FSLoader
21
- variant="button"
22
- />
16
+ <FSRow
17
+ align="center-right"
18
+ >
19
+ <FSLoader
20
+ variant="button"
21
+ />
22
+ <FSLoader
23
+ variant="button"
24
+ />
25
+ </FSRow>
23
26
  </FSRow>
24
27
  <FSRow>
25
28
  <FSLoader
@@ -1,100 +1,118 @@
1
1
  <template>
2
2
  <FSCol
3
- v-bind="$props"
4
3
  gap="12px"
5
4
  >
6
- <FSText
7
- v-if="$props.label"
8
- font="text-button"
9
- >
10
- {{ $props.label }}
11
- </FSText>
12
5
  <FSSearchField
13
6
  v-if="$props.searchable"
14
- padding="0 12px 0 0"
15
7
  :hideHeader="true"
16
8
  :modelValue="actualSearch"
17
- placeholder="Search"
18
9
  @update:modelValue="onSearch"
19
10
  />
20
11
  <FSFadeOut
21
- padding="0 4px 0 0"
12
+ v-if="$props.direction == 'column'"
22
13
  :maxHeight="$props.maxHeight"
23
14
  :maskHeight="0"
24
15
  >
25
- <component
26
- :is="$props.direction == 'row' ? FSRow : FSCol"
27
- >
16
+ <FSCol>
28
17
  <template
29
18
  v-if="$props.loading"
30
19
  >
31
20
  <FSLoader
32
21
  v-for="i in 4"
33
22
  :key="i"
34
- :width="$props.direction == 'row' ? '220px' : '100%'"
23
+ width="100%"
35
24
  height="50px"
36
25
  />
37
26
  </template>
38
27
  <template
39
28
  v-else
40
29
  >
41
- <FSTile
30
+ <FSSimpleListItem
42
31
  v-for="item in filteredItems"
43
32
  :key="item.id"
44
- v-bind="tileProps(item)"
45
- :width="$props.direction == 'row' ? 'fit-content' : '100%'"
46
- height="fit-content"
47
- :editable="false"
48
- :singleSelect="$props.clickable"
49
- @update:modelValue="$emit('click:item', item.id)"
50
- >
51
- <slot
52
- name="item"
53
- :item="item"
54
- >
55
- <FSRow
56
- align="center-left"
57
- :wrap="false"
58
- >
59
- <FSButtonDragIcon
60
- v-if="showDraggable"
61
- />
62
- <slot
63
- name="itemContent"
64
- :item="item"
65
- >
66
- <!-- TODO : add draggable option -->
67
- <FSImage
68
- v-if="item.imageId"
69
- :imageId="item.imageId"
70
- width="24px"
71
- height="24px"
72
- />
73
- <FSIcon
74
- size="24px"
75
- v-else-if="item.icon"
76
- :icon="item.icon"
77
- />
78
- <FSSpan>{{ item[itemLabel] }}</FSSpan>
79
- </slot>
80
- <FSRow
81
- align="center-right"
82
- >
83
- <FSButtonEditIcon
84
- v-if="showEdit"
85
- @click="$emit('click:edit', item.id)"
86
- />
87
- <FSButtonRemoveIcon
88
- v-if="showRemove"
89
- @click="$emit('click:remove', item.id)"
90
- />
91
- </FSRow>
92
- </FSRow>
93
- </slot>
94
- </FSTile>
33
+ :id="item.id"
34
+ :label="item[$props.itemLabel ?? 'label']"
35
+ :icon="item.icon"
36
+ :imageId="item.imageId"
37
+ :showEdit="$props.showEdit"
38
+ :showRemove="$props.showRemove"
39
+ :showDraggable="$props.showDraggable"
40
+ :tileProps="$props.tileProps ? $props.tileProps(item) : undefined"
41
+ width="100%"
42
+ @click:edit="$emit('click:edit', $event)"
43
+ @click:remove="$emit('click:remove', $event)"
44
+ />
95
45
  </template>
96
- </component>
46
+ </FSCol>
97
47
  </FSFadeOut>
48
+ <template
49
+ v-else-if="$props.direction == 'row'"
50
+ >
51
+ <FSRow
52
+ v-if="$props.loading"
53
+ :wrap="false"
54
+ >
55
+ <FSLoader
56
+ v-for="i in 4"
57
+ :key="i"
58
+ width="100px"
59
+ height="50px"
60
+ />
61
+ </FSRow>
62
+ <FSRow
63
+ v-else
64
+ :wrap="false"
65
+ >
66
+ <FSSimpleListItem
67
+ v-for="item in filteredItems"
68
+ :key="item.id"
69
+ :id="item.id"
70
+ :label="item[$props.itemLabel ?? 'label']"
71
+ :icon="item.icon"
72
+ :imageId="item.imageId"
73
+ :showEdit="$props.showEdit"
74
+ :showRemove="$props.showRemove"
75
+ :showDraggable="$props.showDraggable"
76
+ :tileProps="$props.tileProps ? $props.tileProps(item) : undefined"
77
+ width="fit-content"
78
+ @click:edit="$emit('click:edit', $event)"
79
+ @click:remove="$emit('click:remove', $event)"
80
+ />
81
+ </FSRow>
82
+ </template>
83
+ <FSSlideGroup
84
+ v-else
85
+ >
86
+ <template
87
+ v-if="$props.loading"
88
+ >
89
+ <FSLoader
90
+ v-for="i in 4"
91
+ :key="i"
92
+ width="100%"
93
+ height="50px"
94
+ />
95
+ </template>
96
+ <template
97
+ v-else
98
+ >
99
+ <FSSimpleListItem
100
+ v-for="item in filteredItems"
101
+ :key="item.id"
102
+ :id="item.id"
103
+ :label="item[$props.itemLabel ?? 'label']"
104
+ :icon="item.icon"
105
+ :imageId="item.imageId"
106
+ :showEdit="$props.showEdit"
107
+ :showRemove="$props.showRemove"
108
+ :showDraggable="$props.showDraggable"
109
+ :tileProps="$props.tileProps ? $props.tileProps(item) : undefined"
110
+ width="fit-content"
111
+ @click:edit="$emit('click:edit', $event)"
112
+ @click:remove="$emit('click:remove', $event)"
113
+ />
114
+ </template>
115
+ </FSSlideGroup>
98
116
  </FSCol>
99
117
  </template>
100
118
 
@@ -108,48 +126,31 @@ import { filterItems } from "../../utils";
108
126
 
109
127
  import FSRow from "../FSRow.vue";
110
128
  import FSCol from "../FSCol.vue";
111
- import FSText from "../FSText.vue";
112
- import FSIcon from "../FSIcon.vue";
113
- import FSSpan from "../FSSpan.vue";
114
- import FSImage from "../FSImage.vue";
115
- import FSLoader from "../FSLoader.vue";
116
- import FSTile from "../tiles/FSTile.vue";
129
+ import FSLoader from '../FSLoader.vue';
117
130
  import FSFadeOut from "../FSFadeOut.vue";
131
+ import FSSlideGroup from "../FSSlideGroup.vue"
118
132
  import FSSearchField from "../fields/FSSearchField.vue";
119
- import FSButtonEditIcon from "../buttons/FSButtonEditIcon.vue";
120
- import FSButtonDragIcon from "../buttons/FSButtonDragIcon.vue";
121
- import FSButtonRemoveIcon from "../buttons/FSButtonRemoveIcon.vue";
133
+ import FSSimpleListItem from "./FSSimpleListItem.vue";
122
134
 
123
135
  export default defineComponent({
124
136
  name: "FSSimpleList",
125
137
  components: {
126
138
  FSRow,
127
139
  FSCol,
128
- FSText,
129
- FSTile,
130
- FSIcon,
131
- FSSpan,
132
- FSImage,
133
- FSLoader,
134
140
  FSFadeOut,
141
+ FSLoader,
142
+ FSSlideGroup,
135
143
  FSSearchField,
136
- FSButtonEditIcon,
137
- FSButtonDragIcon,
138
- FSButtonRemoveIcon,
144
+ FSSimpleListItem
139
145
  },
140
146
  props: {
141
- label: {
142
- type: String,
143
- required: false
144
- },
145
147
  items: {
146
- type: Array as PropType<{id: string, label?: string, icon?: string, imageId?: string, [index: string]: any}[]>,
148
+ type: Array as PropType<{id: string, label?: string, icon?: string, imageId?: string | null, [index: string]: any}[]>,
147
149
  required: true
148
150
  },
149
151
  tileProps: {
150
152
  type: Function as PropType<(item: any) => Record<string, any>>,
151
- required: false,
152
- default: () => () => ({})
153
+ required: false
153
154
  },
154
155
  showEdit: {
155
156
  type: Boolean,
@@ -166,11 +167,6 @@ export default defineComponent({
166
167
  required: false,
167
168
  default: false
168
169
  },
169
- clickable: {
170
- type: Boolean,
171
- required: false,
172
- default: false
173
- },
174
170
  searchable: {
175
171
  type: Boolean,
176
172
  required: false,
@@ -192,12 +188,12 @@ export default defineComponent({
192
188
  default: undefined
193
189
  },
194
190
  direction: {
195
- type: String as PropType<"row" | "column">,
191
+ type: String as PropType<"row" | "column" | "slided">,
196
192
  required: false,
197
193
  default: "column"
198
194
  },
199
195
  itemLabel: {
200
- type: String,
196
+ type: String as PropType<string>,
201
197
  required: false,
202
198
  default: "label"
203
199
  },
@@ -207,7 +203,7 @@ export default defineComponent({
207
203
  default: false
208
204
  }
209
205
  },
210
- emits: ["click:edit", "click:remove", "click:item", "update:search"],
206
+ emits: ["click:edit", "click:remove", "update:search"],
211
207
  setup(props, { emit }) {
212
208
  const actualSearch = ref<string | null>(props.search);
213
209
  const filteredItems = computed(() => {
@@ -234,8 +230,6 @@ export default defineComponent({
234
230
  filteredItems,
235
231
  ColorEnum,
236
232
  onSearch,
237
- FSRow,
238
- FSCol,
239
233
  }
240
234
  }
241
235
  });