@dative-gpi/foundation-shared-components 1.0.57 → 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 +23 -13
  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 +26 -7
  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 +95 -82
  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 -34
  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,92 +1,118 @@
1
1
  <template>
2
2
  <FSCol
3
- v-bind="$props"
4
3
  gap="12px"
5
4
  >
6
5
  <FSSearchField
7
6
  v-if="$props.searchable"
8
- padding="0 12px 0 0"
9
7
  :hideHeader="true"
10
8
  :modelValue="actualSearch"
11
- placeholder="Search"
12
9
  @update:modelValue="onSearch"
13
10
  />
14
11
  <FSFadeOut
15
- padding="0 4px 0 0"
12
+ v-if="$props.direction == 'column'"
16
13
  :maxHeight="$props.maxHeight"
17
14
  :maskHeight="0"
18
15
  >
19
- <component
20
- :is="$props.direction == 'row' ? FSRow : FSCol"
21
- >
16
+ <FSCol>
22
17
  <template
23
18
  v-if="$props.loading"
24
19
  >
25
20
  <FSLoader
26
21
  v-for="i in 4"
27
22
  :key="i"
28
- :width="$props.direction == 'row' ? '220px' : '100%'"
23
+ width="100%"
29
24
  height="50px"
30
25
  />
31
26
  </template>
32
27
  <template
33
28
  v-else
34
29
  >
35
- <FSTile
30
+ <FSSimpleListItem
36
31
  v-for="item in filteredItems"
37
32
  :key="item.id"
38
- v-bind="tileProps(item)"
39
- :width="$props.direction == 'row' ? 'fit-content' : '100%'"
40
- height="fit-content"
41
- :editable="false"
42
- >
43
- <slot
44
- name="item"
45
- :item="item"
46
- >
47
- <FSRow
48
- align="center-left"
49
- :wrap="false"
50
- >
51
- <FSButtonDragIcon
52
- v-if="showDraggable"
53
- />
54
- <slot
55
- name="itemContent"
56
- :item="item"
57
- >
58
- <!-- TODO : add draggable option -->
59
- <FSImage
60
- v-if="item.imageId"
61
- :imageId="item.imageId"
62
- width="24px"
63
- height="24px"
64
- />
65
- <FSIcon
66
- size="24px"
67
- v-else-if="item.icon"
68
- :icon="item.icon"
69
- />
70
- <FSSpan>{{ item[itemLabel] }}</FSSpan>
71
- </slot>
72
- <FSRow
73
- align="center-right"
74
- >
75
- <FSButtonEditIcon
76
- v-if="showEdit"
77
- @click="$emit('click:edit', item.id)"
78
- />
79
- <FSButtonRemoveIcon
80
- v-if="showRemove"
81
- @click="$emit('click:remove', item.id)"
82
- />
83
- </FSRow>
84
- </FSRow>
85
- </slot>
86
- </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
+ />
87
45
  </template>
88
- </component>
46
+ </FSCol>
89
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>
90
116
  </FSCol>
91
117
  </template>
92
118
 
@@ -100,42 +126,31 @@ import { filterItems } from "../../utils";
100
126
 
101
127
  import FSRow from "../FSRow.vue";
102
128
  import FSCol from "../FSCol.vue";
103
- import FSIcon from "../FSIcon.vue";
104
- import FSSpan from "../FSSpan.vue";
105
- import FSImage from "../FSImage.vue";
106
- import FSLoader from "../FSLoader.vue";
107
- import FSTile from "../tiles/FSTile.vue";
129
+ import FSLoader from '../FSLoader.vue';
108
130
  import FSFadeOut from "../FSFadeOut.vue";
131
+ import FSSlideGroup from "../FSSlideGroup.vue"
109
132
  import FSSearchField from "../fields/FSSearchField.vue";
110
- import FSButtonEditIcon from "../buttons/FSButtonEditIcon.vue";
111
- import FSButtonDragIcon from "../buttons/FSButtonDragIcon.vue";
112
- import FSButtonRemoveIcon from "../buttons/FSButtonRemoveIcon.vue";
133
+ import FSSimpleListItem from "./FSSimpleListItem.vue";
113
134
 
114
135
  export default defineComponent({
115
136
  name: "FSSimpleList",
116
137
  components: {
117
138
  FSRow,
118
139
  FSCol,
119
- FSTile,
120
- FSIcon,
121
- FSSpan,
122
- FSImage,
123
- FSLoader,
124
140
  FSFadeOut,
141
+ FSLoader,
142
+ FSSlideGroup,
125
143
  FSSearchField,
126
- FSButtonEditIcon,
127
- FSButtonDragIcon,
128
- FSButtonRemoveIcon,
144
+ FSSimpleListItem
129
145
  },
130
146
  props: {
131
147
  items: {
132
- 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}[]>,
133
149
  required: true
134
150
  },
135
151
  tileProps: {
136
152
  type: Function as PropType<(item: any) => Record<string, any>>,
137
- required: false,
138
- default: () => () => ({})
153
+ required: false
139
154
  },
140
155
  showEdit: {
141
156
  type: Boolean,
@@ -173,12 +188,12 @@ export default defineComponent({
173
188
  default: undefined
174
189
  },
175
190
  direction: {
176
- type: String as PropType<"row" | "column">,
191
+ type: String as PropType<"row" | "column" | "slided">,
177
192
  required: false,
178
193
  default: "column"
179
194
  },
180
195
  itemLabel: {
181
- type: String,
196
+ type: String as PropType<string>,
182
197
  required: false,
183
198
  default: "label"
184
199
  },
@@ -215,8 +230,6 @@ export default defineComponent({
215
230
  filteredItems,
216
231
  ColorEnum,
217
232
  onSearch,
218
- FSRow,
219
- FSCol,
220
233
  }
221
234
  }
222
235
  });
@@ -0,0 +1,131 @@
1
+ <template>
2
+ <FSTile
3
+ v-bind="$props.tileProps"
4
+ :width="$props.width"
5
+ height="fit-content"
6
+ >
7
+ <slot
8
+ name="item"
9
+ :item="{ label, icon, imageId, id }"
10
+ >
11
+ <FSRow
12
+ align="center-left"
13
+ height="24px"
14
+ :wrap="false"
15
+ >
16
+ <FSButtonDragIcon
17
+ v-if="showDraggable"
18
+ />
19
+ <slot
20
+ name="itemContent"
21
+ :item="{ label, icon, imageId, id }"
22
+ >
23
+ <!-- TODO : add draggable option -->
24
+ <FSImage
25
+ v-if="$props.imageId"
26
+ width="24px"
27
+ height="24px"
28
+ :imageId="$props.imageId"
29
+ :thumbnail="true"
30
+ />
31
+ <FSIcon
32
+ size="24px"
33
+ v-else-if="$props.icon"
34
+ :icon="$props.icon"
35
+ />
36
+ <FSSpan
37
+ font="text-overline"
38
+ >
39
+ {{ $props.label }}
40
+ </FSSpan>
41
+ </slot>
42
+ <FSRow
43
+ v-if="showEdit || showRemove"
44
+ align="center-right"
45
+ :wrap="false"
46
+ >
47
+ <FSButtonEditIcon
48
+ v-if="showEdit"
49
+ @click="$emit('click:edit', $props.id)"
50
+ />
51
+ <FSButtonRemoveIcon
52
+ v-if="showRemove"
53
+ @click="$emit('click:remove', $props.id)"
54
+ />
55
+ </FSRow>
56
+ </FSRow>
57
+ </slot>
58
+ </FSTile>
59
+ </template>
60
+
61
+
62
+ <script lang="ts">
63
+ import { defineComponent, type PropType } from "vue";
64
+
65
+ import FSRow from "../FSRow.vue";
66
+ import FSIcon from "../FSIcon.vue";
67
+ import FSSpan from "../FSSpan.vue";
68
+ import FSImage from "../FSImage.vue";
69
+ import FSTile from "../tiles/FSTile.vue";
70
+ import FSButtonEditIcon from "../buttons/FSButtonEditIcon.vue";
71
+ import FSButtonDragIcon from "../buttons/FSButtonDragIcon.vue";
72
+ import FSButtonRemoveIcon from "../buttons/FSButtonRemoveIcon.vue";
73
+
74
+ export default defineComponent({
75
+ name: "FSSimpleListItem",
76
+ components: {
77
+ FSRow,
78
+ FSTile,
79
+ FSIcon,
80
+ FSSpan,
81
+ FSImage,
82
+ FSButtonEditIcon,
83
+ FSButtonDragIcon,
84
+ FSButtonRemoveIcon,
85
+ },
86
+ props: {
87
+ tileProps: {
88
+ type: Object as PropType<Record<string, any>>,
89
+ required: false,
90
+ default: () => ({})
91
+ },
92
+ showEdit: {
93
+ type: Boolean,
94
+ required: false,
95
+ default: true
96
+ },
97
+ showRemove: {
98
+ type: Boolean,
99
+ required: false,
100
+ default: true
101
+ },
102
+ showDraggable: {
103
+ type: Boolean,
104
+ required: false,
105
+ default: false
106
+ },
107
+ width:{
108
+ type: [Array, String, Number] as PropType<string[] | number[] | string | number | null | undefined>,
109
+ required: false,
110
+ default: undefined
111
+ },
112
+ id: {
113
+ type: String,
114
+ required: true
115
+ },
116
+ label: {
117
+ type: String,
118
+ required: true
119
+ },
120
+ icon: {
121
+ type: String,
122
+ required: false
123
+ },
124
+ imageId: {
125
+ type: String as PropType<string | null>,
126
+ required: false
127
+ }
128
+ },
129
+ emits: ["click:edit", "click:remove"]
130
+ });
131
+ </script>