@dative-gpi/foundation-shared-components 1.0.65 → 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
@@ -6,7 +6,26 @@
6
6
  :iconBorder="false"
7
7
  :icon="$props.icon"
8
8
  v-bind="$attrs"
9
- />
9
+ >
10
+ <template
11
+ #append-info
12
+ >
13
+ <FSCol
14
+ gap="6px"
15
+ >
16
+ <FSEntityCountBadge
17
+ :label="$tr('ui.common.folders', 'Folder(s)')"
18
+ :count="recursiveFoldersIds.length"
19
+ :color="ColorEnum.Primary"
20
+ />
21
+ <FSEntityCountBadge
22
+ :label="$tr('ui.common.dashboards', 'Dashboard(s)')"
23
+ :count="recursiveDashboardsIds.length"
24
+ :color="ColorEnum.Success"
25
+ />
26
+ </FSCol>
27
+ </template>
28
+ </FSSimpleTileUI>
10
29
  </template>
11
30
 
12
31
  <script lang="ts">
@@ -14,7 +33,9 @@ import { computed, defineComponent, type PropType } from "vue";
14
33
 
15
34
  import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
16
35
 
36
+ import FSEntityCountBadge from './FSEntityCountBadge.vue';
17
37
  import FSSimpleTileUI from "./FSSimpleTileUI.vue";
38
+ import FSCol from "../FSCol.vue";
18
39
 
19
40
  export default defineComponent({
20
41
  name: "FSFolderTileUI",
@@ -28,10 +49,22 @@ export default defineComponent({
28
49
  type: String,
29
50
  required: false,
30
51
  default: "mdi-folder-outline"
31
- }
52
+ },
53
+ recursiveFoldersIds: {
54
+ type: Array as PropType<string[]>,
55
+ required: false,
56
+ default: () => []
57
+ },
58
+ recursiveDashboardsIds: {
59
+ type: Array as PropType<string[]>,
60
+ required: false,
61
+ default: () => []
62
+ },
32
63
  },
33
64
  components: {
34
- FSSimpleTileUI
65
+ FSEntityCountBadge,
66
+ FSSimpleTileUI,
67
+ FSCol
35
68
  },
36
69
  setup(props){
37
70
  const color = computed(() => {
@@ -42,7 +75,8 @@ export default defineComponent({
42
75
  });
43
76
 
44
77
  return {
45
- color
78
+ color,
79
+ ColorEnum
46
80
  };
47
81
  }
48
82
  });
@@ -1,129 +1,51 @@
1
1
  <template>
2
- <FSTile
2
+ <FSSimpleTileUI
3
3
  :activeColor="ColorEnum.Primary"
4
4
  :bottomColor="ColorEnum.Error"
5
- :editable="$props.editable"
6
5
  :width="$props.width"
7
6
  :modelValue="$props.modelValue"
7
+ :label="$props.label"
8
+ :code="$props.code"
9
+ :imageId="$props.imageId"
10
+ :icon="$props.icon"
8
11
  v-bind="$attrs"
9
12
  >
10
- <FSCol
11
- align="center-center"
12
- width="fill"
13
+ <template
14
+ #append-info
13
15
  >
14
- <FSRow
15
- align="center-center"
16
- gap="24px"
17
- :height="imageSize"
18
- :wrap="false"
16
+ <FSCol
17
+ gap="6px"
19
18
  >
20
- <FSCol
21
- gap="12px"
22
- :width="infoWidth"
23
- >
24
- <FSCol
25
- gap="6px"
26
- >
27
- <FSSpan
28
- font="text-button"
29
- :lineClamp="1"
30
- >
31
- {{ $props.label }}
32
- </FSSpan>
33
- <FSSpan
34
- font="text-overline"
35
- variant="soft"
36
- >
37
- {{ $props.code }}
38
- </FSSpan>
39
- </FSCol>
40
- <FSCol
41
- gap="6px"
42
- >
43
- <FSRow
44
- align="center-left"
45
- >
46
- <FSColor
47
- padding="0 8px"
48
- height="24px"
49
- :color="ColorEnum.Primary"
50
- :border="false"
51
- >
52
- <FSRow
53
- align="center-center"
54
- >
55
- <FSSpan
56
- font="text-overline"
57
- >
58
- {{ groupsLabel }}
59
- </FSSpan>
60
- </FSRow>
61
- </FSColor>
62
- <FSSpan
63
- font="text-overline"
64
- >
65
- {{ $tr("ui.group-tile.group(s)", "Group(s)") }}
66
- </FSSpan>
67
- </FSRow>
68
- <FSRow
69
- align="center-left"
70
- >
71
- <FSColor
72
- padding="0 8px"
73
- height="24px"
74
- :color="ColorEnum.Success"
75
- :border="false"
76
- >
77
- <FSRow
78
- align="center-center"
79
- >
80
- <FSSpan
81
- font="text-overline"
82
- >
83
- {{ deviceOrganisationsLabel }}
84
- </FSSpan>
85
- </FSRow>
86
- </FSColor>
87
- <FSSpan
88
- font="text-overline"
89
- >
90
- {{ $tr("ui.group-tile.device(s)", "Device(s)") }}
91
- </FSSpan>
92
- </FSRow>
93
- </FSCol>
94
- </FSCol>
95
- <FSImage
96
- v-if="$props.imageId"
97
- :imageId="$props.imageId"
98
- :width="imageSize"
19
+ <FSEntityCountBadge
20
+ :label="$tr('ui.common.groups', 'Group(s)')"
21
+ :count="recursiveGroupsIds.length"
22
+ :color="ColorEnum.Primary"
99
23
  />
100
- </FSRow>
101
- </FSCol>
102
- </FSTile>
24
+ <FSEntityCountBadge
25
+ :label="$tr('ui.common.devices', 'Device(s)')"
26
+ :count="recursiveDeviceOrganisationsIds.length"
27
+ :color="ColorEnum.Success"
28
+ />
29
+ </FSCol>
30
+ </template>
31
+ </FSSimpleTileUI>
103
32
  </template>
104
33
 
105
34
  <script lang="ts">
106
- import { computed, defineComponent, type PropType } from "vue";
35
+ import { defineComponent, type PropType } from "vue";
107
36
 
108
- import { useBreakpoints } from "@dative-gpi/foundation-shared-components/composables";
109
37
  import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
110
38
 
111
- import FSImage from "../FSImage.vue";
112
- import FSColor from "../FSColor.vue";
113
- import FSSpan from "../FSSpan.vue";
114
- import FSTile from "./FSTile.vue";
39
+ import FSEntityCountBadge from './FSEntityCountBadge.vue';
40
+ import FSSimpleTileUI from './FSSimpleTileUI.vue';
115
41
  import FSCol from "../FSCol.vue";
116
- import FSRow from "../FSRow.vue";
117
42
 
118
43
  export default defineComponent({
119
44
  name: "FSGroupTileUI",
120
45
  components: {
121
- FSImage,
122
- FSColor,
123
- FSSpan,
124
- FSTile,
125
- FSCol,
126
- FSRow
46
+ FSEntityCountBadge,
47
+ FSSimpleTileUI,
48
+ FSCol
127
49
  },
128
50
  props: {
129
51
  imageId: {
@@ -131,6 +53,10 @@ export default defineComponent({
131
53
  required: false,
132
54
  default: null
133
55
  },
56
+ icon: {
57
+ type: String,
58
+ required: false
59
+ },
134
60
  label: {
135
61
  type: String as PropType<string | null>,
136
62
  required: false,
@@ -156,45 +82,15 @@ export default defineComponent({
156
82
  required: false,
157
83
  default: false
158
84
  },
159
- editable: {
160
- type: Boolean,
161
- required: false,
162
- default: true
163
- },
164
85
  width: {
165
86
  type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
166
87
  required: false,
167
88
  default: () => [352, 336]
168
89
  },
169
90
  },
170
- setup(props) {
171
- const { isMobileSized } = useBreakpoints();
172
-
173
- const groupsLabel = computed((): string => {
174
- return props.recursiveGroupsIds.length > 99 ? "99+" : props.recursiveGroupsIds.length.toString();
175
- });
176
-
177
- const deviceOrganisationsLabel = computed((): string => {
178
- return props.recursiveDeviceOrganisationsIds.length > 99 ? "99+" : props.recursiveDeviceOrganisationsIds.length.toString();
179
- });
180
-
181
- const imageSize = computed((): number => {
182
- return isMobileSized.value ? 90 : 100;
183
- });
184
-
185
- const infoWidth = computed((): string => {
186
- if (!props.imageId) {
187
- return "100%";
188
- }
189
- return `calc(100% - ${imageSize.value}px - 24px)`;
190
- });
191
-
91
+ setup() {
192
92
  return {
193
- deviceOrganisationsLabel,
194
- groupsLabel,
195
93
  ColorEnum,
196
- imageSize,
197
- infoWidth
198
94
  };
199
95
  }
200
96
  });
@@ -2,6 +2,7 @@
2
2
  <FSCard
3
3
  class="fs-load-tile"
4
4
  padding="11px"
5
+ topRightPadding="1px"
5
6
  :height="heights.card"
6
7
  :width="widths.card"
7
8
  :style="style"
@@ -39,16 +40,21 @@
39
40
  :width="widths.image"
40
41
  />
41
42
  </FSRow>
42
- <FSCard
43
- v-if="$props.editable"
44
- class="fs-tile-checkbox"
45
- :border="false"
43
+ <template
44
+ v-if="$props.selectable"
45
+ #top-right
46
46
  >
47
- <FSCheckbox
48
- :modelValue="$props.modelValue"
49
- @update:modelValue="() => $emit('update:modelValue', !$props.modelValue)"
50
- />
51
- </FSCard>
47
+ <FSCard
48
+ padding="8px"
49
+ :border="false"
50
+ >
51
+ <FSCheckbox
52
+ :modelValue="$props.modelValue"
53
+ :disabled="true"
54
+ @update:modelValue="() => $emit('update:modelValue', !$props.modelValue)"
55
+ />
56
+ </FSCard>
57
+ </template>
52
58
  </FSCard>
53
59
  </template>
54
60
 
@@ -79,7 +85,7 @@ export default defineComponent({
79
85
  required: false,
80
86
  default: false
81
87
  },
82
- editable: {
88
+ selectable: {
83
89
  type: Boolean,
84
90
  required: false,
85
91
  default: false
@@ -1,101 +1,77 @@
1
1
  <template>
2
- <FSTile
2
+ <FSSimpleTileUI
3
3
  :activeColor="$props.color"
4
4
  :bottomColor="$props.color"
5
5
  :modelValue="$props.modelValue"
6
6
  :width="$props.width"
7
+ :label="$props.label"
8
+ :icon="$props.icon"
9
+ :code="$props.code"
7
10
  v-bind="$attrs"
8
11
  >
9
- <FSRow
10
- align="center-center"
11
- width="100%"
12
- gap="24px"
13
- :wrap="false"
12
+ <template
13
+ #append-info
14
14
  >
15
- <FSCol
16
- gap="12px"
17
- width="100%"
18
- class="fs-location-tile-text-container"
15
+ <FSCol
16
+ gap="8px"
19
17
  >
20
- <FSCol
21
- gap="6px"
22
- >
23
- <FSSpan
24
- font="text-button"
25
- :lineClamp="1"
26
- >
27
- {{ $props.label }}
28
- </FSSpan>
29
- <FSSpan
30
- v-if="$props.code"
31
- font="text-overline"
32
- variant="soft"
33
- >
34
- {{ $props.code }}
35
- </FSSpan>
36
- </FSCol>
18
+ <FSEntityCountBadge
19
+ v-if="$props.deviceCount !== undefined"
20
+ :label="$tr('ui.common.devices', 'Device(s)')"
21
+ :count="$props.deviceCount"
22
+ :color="ColorEnum.Primary"
23
+ />
37
24
  <FSRow
25
+ v-if="$props.address"
38
26
  :wrap="false"
39
27
  align="center-left"
40
28
  >
41
29
  <FSColor
42
- padding="0 8px"
43
30
  height="24px"
44
- :color="ColorEnum.Light"
31
+ :color="ColorEnum.Primary"
45
32
  :border="false"
46
33
  >
47
34
  <FSRow
48
35
  align="center-center"
36
+ width="24px"
49
37
  >
50
- <FSSpan
51
- font="text-overline"
52
- >
53
- {{ $props.deviceCount }}
54
- </FSSpan>
38
+ <FSIcon
39
+ icon="mdi-map-marker-radius-outline"
40
+ size="16px"
41
+ />
55
42
  </FSRow>
56
43
  </FSColor>
57
44
  <FSSpan
58
45
  font="text-overline"
59
46
  >
60
- {{ $tr("ui.common.devices", "Devices") }}
47
+ {{ $props.address }}
61
48
  </FSSpan>
62
49
  </FSRow>
63
50
  </FSCol>
64
- <FSCol
65
- width="hug"
66
- >
67
- <FSIconCard
68
- :icon="$props.icon"
69
- :iconColor="$props.color"
70
- size="100px"
71
- iconSize="38px"
72
- variant="background"
73
- :border="true"
74
- />
75
- </FSCol>
76
- </FSRow>
77
- </FSTile>
51
+ </template>
52
+ </FSSimpleTileUI>
78
53
  </template>
79
54
 
80
55
  <script lang="ts">
81
56
  import { defineComponent, type PropType } from "vue";
82
57
 
83
- import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
58
+ import { capNumberToString } from '@dative-gpi/foundation-shared-components/utils';
59
+ import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
84
60
 
85
- import FSIconCard from "../FSIconCard.vue";
61
+ import FSEntityCountBadge from './FSEntityCountBadge.vue';
62
+ import FSSimpleTileUI from './FSSimpleTileUI.vue';
86
63
  import FSColor from "../FSColor.vue";
87
64
  import FSSpan from "../FSSpan.vue";
88
- import FSTile from "./FSTile.vue";
89
65
  import FSCol from "../FSCol.vue";
90
66
  import FSRow from "../FSRow.vue";
91
67
 
92
68
  export default defineComponent({
93
69
  name: "FSLocationTileUI",
94
70
  components: {
95
- FSIconCard,
71
+ FSEntityCountBadge,
72
+ FSSimpleTileUI,
96
73
  FSColor,
97
74
  FSSpan,
98
- FSTile,
99
75
  FSCol,
100
76
  FSRow
101
77
  },
@@ -110,35 +86,41 @@ export default defineComponent({
110
86
  required: false,
111
87
  default: null
112
88
  },
113
- color: {
114
- type: String,
115
- required: false,
116
- default: () => ColorEnum.Primary
117
- },
118
89
  icon: {
119
90
  type: String,
120
91
  required: false,
121
92
  default: "mdi-map-marker"
122
93
  },
94
+ address: {
95
+ type: String,
96
+ required: false
97
+ },
123
98
  deviceCount: {
124
99
  type: Number,
125
100
  required: false,
126
101
  default: 0
127
102
  },
128
- modelValue: {
129
- type: Boolean,
103
+ color: {
104
+ type: String as PropType<ColorBase>,
130
105
  required: false,
131
- default: false
106
+ default: ColorEnum.Primary
132
107
  },
133
108
  width: {
134
109
  type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
135
110
  required: false,
136
111
  default: () => [352, 336]
137
112
  },
113
+ modelValue: {
114
+ type: Boolean,
115
+ required: false,
116
+ default: false
117
+ }
138
118
  },
139
119
  setup() {
120
+
140
121
  return {
141
- ColorEnum
122
+ ColorEnum,
123
+ capNumberToString
142
124
  };
143
125
  }
144
126
  });
@@ -1,7 +1,6 @@
1
1
  <template>
2
2
  <FSTile
3
3
  :activeColor="ColorEnum.Primary"
4
- :editable="$props.editable"
5
4
  :width="$props.width"
6
5
  :modelValue="$props.modelValue"
7
6
  v-bind="$attrs"
@@ -108,11 +107,6 @@ export default defineComponent({
108
107
  type: Boolean,
109
108
  required: false,
110
109
  default: false
111
- },
112
- editable: {
113
- type: Boolean,
114
- required: false,
115
- default: true
116
110
  }
117
111
  },
118
112
  setup(props) {
@@ -2,7 +2,6 @@
2
2
  <FSTile
3
3
  :activeColor="$props.activeColor"
4
4
  :bottomColor="$props.bottomColor"
5
- :editable="$props.editable"
6
5
  :width="$props.width"
7
6
  :modelValue="$props.modelValue"
8
7
  v-bind="$attrs"
@@ -18,21 +17,29 @@
18
17
  :wrap="false"
19
18
  >
20
19
  <FSCol
21
- gap="6px"
20
+ gap="12px"
22
21
  :width="infoWidth"
23
22
  >
24
- <FSSpan
25
- font="text-button"
26
- :lineClamp="2"
23
+ <FSCol
24
+ gap="4px"
27
25
  >
28
- {{ $props.label }}
29
- </FSSpan>
30
- <FSSpan
31
- font="text-overline"
32
- variant="soft"
33
- >
34
- {{ $props.code }}
35
- </FSSpan>
26
+ <FSSpan
27
+ font="text-button"
28
+ :lineClamp="2"
29
+ >
30
+ {{ $props.label }}
31
+ </FSSpan>
32
+ <FSSpan
33
+ font="text-overline"
34
+ variant="soft"
35
+ >
36
+ {{ $props.code }}
37
+ </FSSpan>
38
+ </FSCol>
39
+ <slot
40
+ name="append-info"
41
+ v-bind="$attrs"
42
+ />
36
43
  </FSCol>
37
44
  <FSImage
38
45
  v-if="$props.imageId"
@@ -44,6 +51,7 @@
44
51
  v-else-if="$props.icon"
45
52
  :backgroundVariant="$props.iconBackgroundVariant"
46
53
  :backgroundColor="$props.iconBackgroundColor"
54
+ :iconColor="$props.iconColor"
47
55
  :border="$props.iconBorder"
48
56
  :icon="$props.icon"
49
57
  :size="imageSize"
@@ -78,7 +86,7 @@ export default defineComponent({
78
86
  },
79
87
  props: {
80
88
  imageId: {
81
- type: String as PropType<string>,
89
+ type: String as PropType<string | null>,
82
90
  required: false,
83
91
  default: null
84
92
  },
@@ -93,24 +101,27 @@ export default defineComponent({
93
101
  default: null
94
102
  },
95
103
  icon: {
96
- type: String as PropType<string>,
104
+ type: String as PropType<string | null>,
97
105
  required: false,
106
+ default: null
98
107
  },
99
108
  iconBackgroundVariant: {
100
109
  type: String as PropType<"background" | "standard" | "full" | "gradient">,
101
- required: false,
102
- default: "background"
110
+ required: false
103
111
  },
104
112
  iconBackgroundColor: {
105
113
  type: [Array, String] as PropType<ColorBase | ColorBase[]>,
106
- required: false,
107
- default: ColorEnum.Background
114
+ required: false
108
115
  },
109
116
  iconBorder: {
110
117
  type: Boolean as PropType<boolean>,
111
118
  required: false,
112
119
  default: true
113
120
  },
121
+ iconColor: {
122
+ type: String as PropType<ColorBase>,
123
+ required: false
124
+ },
114
125
  activeColor: {
115
126
  type: String as PropType<ColorBase>,
116
127
  required: false,
@@ -130,11 +141,6 @@ export default defineComponent({
130
141
  type: Boolean,
131
142
  required: false,
132
143
  default: false
133
- },
134
- editable: {
135
- type: Boolean,
136
- required: false,
137
- default: true
138
144
  }
139
145
  },
140
146
  setup(props) {