@dative-gpi/foundation-shared-components 1.0.66 → 1.0.67-map-edit

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