@dative-gpi/foundation-shared-components 1.0.69 → 1.0.71-groupings-2

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 (296) 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 +9 -7
  46. package/components/FSSlider.vue +44 -79
  47. package/components/FSSpan.vue +22 -8
  48. package/components/FSSwitch.vue +44 -48
  49. package/components/FSTab.vue +15 -13
  50. package/components/FSTabs.vue +5 -2
  51. package/components/FSTag.vue +3 -3
  52. package/components/FSTagGroup.vue +6 -4
  53. package/components/FSText.vue +21 -8
  54. package/components/FSToggleSet.vue +7 -7
  55. package/components/FSTreeView.vue +107 -0
  56. package/components/FSWindow.vue +122 -5
  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/carousels/FSCarousel.vue +23 -0
  105. package/components/carousels/FSCarouselItem.vue +14 -0
  106. package/components/deviceOrganisations/FSConnectivity.vue +5 -3
  107. package/components/deviceOrganisations/FSStatus.vue +5 -3
  108. package/components/deviceOrganisations/FSStatusCard.vue +7 -9
  109. package/components/deviceOrganisations/FSStatusRichCard.vue +171 -0
  110. package/components/deviceOrganisations/FSWorstAlert.vue +24 -36
  111. package/components/deviceOrganisations/FSWorstAlertCard.vue +8 -47
  112. package/components/fields/FSAutocompleteField.vue +85 -82
  113. package/components/fields/FSAutocompleteTag.vue +1 -1
  114. package/components/fields/FSBaseField.vue +42 -25
  115. package/components/fields/FSClosableSearchField.vue +83 -0
  116. package/components/fields/FSColorField.vue +12 -10
  117. package/components/fields/FSCommentField.vue +28 -16
  118. package/components/fields/FSDateField.vue +13 -10
  119. package/components/fields/FSDateRangeField.vue +6 -5
  120. package/components/fields/FSDateTimeField.vue +14 -11
  121. package/components/fields/FSDateTimeRangeDialog.vue +160 -0
  122. package/components/fields/FSDateTimeRangeField.vue +23 -115
  123. package/components/fields/FSEntityFieldUI.vue +19 -16
  124. package/components/fields/FSGradientField.vue +5 -5
  125. package/components/fields/FSIconField.vue +16 -9
  126. package/components/fields/FSMapAddressField.vue +187 -0
  127. package/components/fields/FSNumberField.vue +8 -4
  128. package/components/fields/FSPasswordField.vue +7 -7
  129. package/components/fields/FSPoliciesValidationField.vue +101 -0
  130. package/components/fields/FSRichTextField.vue +78 -58
  131. package/components/fields/FSSearchField.vue +9 -115
  132. package/components/fields/FSSelectField.vue +69 -71
  133. package/components/fields/FSTagField.vue +9 -9
  134. package/components/fields/FSTermField.vue +69 -46
  135. package/components/fields/FSTextArea.vue +17 -11
  136. package/components/fields/FSTextField.vue +15 -10
  137. package/components/fields/FSTimeField.vue +14 -10
  138. package/components/fields/FSTimeRangeField.vue +117 -187
  139. package/components/fields/FSTimeStepField.vue +5 -5
  140. package/components/fields/FSTranslateField.vue +10 -10
  141. package/components/fields/FSTranslateRichTextField.vue +41 -20
  142. package/components/fields/FSTranslateTextArea.vue +10 -10
  143. package/components/fields/FSTreeViewField.vue +21 -19
  144. package/components/fields/periodicField/FSPeriodicDailyField.vue +7 -7
  145. package/components/fields/periodicField/FSPeriodicField.vue +15 -15
  146. package/components/fields/periodicField/FSPeriodicMonthlyField.vue +16 -16
  147. package/components/fields/periodicField/FSPeriodicWeeklyField.vue +28 -18
  148. package/components/fields/periodicField/FSPeriodicYearlyField.vue +12 -12
  149. package/components/lists/FSDataIteratorItem.vue +23 -67
  150. package/components/lists/FSDataTableUI.vue +194 -119
  151. package/components/lists/FSFilterButton.vue +14 -16
  152. package/components/lists/FSHeaderButton.vue +11 -9
  153. package/components/lists/FSHiddenButton.vue +9 -9
  154. package/components/lists/FSLoadDataTable.vue +10 -7
  155. package/components/lists/FSSimpleList.vue +95 -88
  156. package/components/lists/FSSimpleListItem.vue +131 -0
  157. package/components/map/FSMap.vue +144 -158
  158. package/components/map/FSMapFeatureGroup.vue +7 -1
  159. package/components/map/FSMapLayerButton.vue +3 -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/FSSelectEntityType.vue +59 -0
  181. package/components/selects/chartSelectors/FSSerieTypeSelector.vue +53 -0
  182. package/components/tiles/FSAlertTileUI.vue +90 -0
  183. package/components/tiles/FSChartTileUI.vue +61 -52
  184. package/components/tiles/FSCommentTileUI.vue +38 -13
  185. package/components/tiles/FSDashboardOrganisationTypeTileUI.vue +14 -2
  186. package/components/tiles/FSDashboardShallowTileUI.vue +14 -2
  187. package/components/tiles/FSDeviceOrganisationTileUI.vue +0 -6
  188. package/components/tiles/FSEntityCountBadge.vue +83 -0
  189. package/components/tiles/FSFolderTileUI.vue +38 -4
  190. package/components/tiles/FSGroupTileUI.vue +32 -136
  191. package/components/tiles/FSGroupingTileUI.vue +52 -0
  192. package/components/tiles/FSLoadTile.vue +16 -10
  193. package/components/tiles/FSLocationTileUI.vue +50 -80
  194. package/components/tiles/FSServiceAccountOrganisationTileUI.vue +0 -6
  195. package/components/tiles/FSSimpleTileUI.vue +32 -27
  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 -1
  210. package/composables/useAddress.ts +40 -8
  211. package/composables/useBreakpoints.ts +40 -4
  212. package/composables/useColors.ts +16 -7
  213. package/composables/useMapLayers.ts +69 -0
  214. package/composables/useSlots.ts +2 -1
  215. package/models/colors.ts +2 -1
  216. package/models/deviceAlerts.ts +1 -0
  217. package/models/index.ts +0 -1
  218. package/models/map.ts +12 -10
  219. package/models/rules.ts +5 -2
  220. package/models/tables.ts +2 -1
  221. package/models/variableNode.ts +8 -5
  222. package/package.json +5 -5
  223. package/styles/components/fs_agenda.scss +4 -0
  224. package/styles/components/fs_agenda_event.scss +1 -1
  225. package/styles/components/fs_agenda_hours_row.scss +0 -8
  226. package/styles/components/fs_autocomplete_field.scss +0 -13
  227. package/styles/components/fs_breadcrumbs.scss +18 -36
  228. package/styles/components/fs_button.scss +7 -5
  229. package/styles/components/fs_calendar.scss +1 -0
  230. package/styles/components/fs_card.scss +9 -0
  231. package/styles/components/fs_chip.scss +13 -7
  232. package/styles/components/fs_clickable.scss +16 -23
  233. package/styles/components/fs_clock.scss +0 -10
  234. package/styles/components/fs_col.scss +1 -1
  235. package/styles/components/fs_color_field.scss +0 -4
  236. package/styles/components/fs_data_table.scss +6 -9
  237. package/styles/components/fs_dialog.scss +4 -10
  238. package/styles/components/fs_dialog_menu.scss +4 -2
  239. package/styles/components/fs_draggable.scss +0 -5
  240. package/styles/components/fs_fade_out.scss +10 -2
  241. package/styles/components/fs_filter_button.scss +1 -1
  242. package/styles/components/fs_hidden_button.scss +2 -7
  243. package/styles/components/fs_image_card.scss +6 -4
  244. package/styles/components/fs_magic_config_field.scss +1 -2
  245. package/styles/components/fs_map.scss +57 -17
  246. package/styles/components/fs_meta_field.scss +3 -5
  247. package/styles/components/fs_password_field.scss +4 -2
  248. package/styles/components/fs_progress_bar.scss +14 -0
  249. package/styles/components/fs_radio.scss +0 -11
  250. package/styles/components/fs_rich_text_field.scss +1 -10
  251. package/styles/components/fs_select_field.scss +4 -13
  252. package/styles/components/fs_slide_group.scss +3 -1
  253. package/styles/components/fs_slider.scss +0 -40
  254. package/styles/components/fs_span.scss +17 -5
  255. package/styles/components/fs_status_rich_card.scss +6 -0
  256. package/styles/components/fs_tabs.scss +18 -37
  257. package/styles/components/fs_tag.scss +8 -22
  258. package/styles/components/fs_text_area.scss +2 -21
  259. package/styles/components/fs_tile.scss +0 -19
  260. package/styles/components/fs_window.scss +3 -1
  261. package/styles/components/fs_wrap_group.scss +3 -0
  262. package/styles/components/index.scss +2 -6
  263. package/styles/globals/index.scss +1 -5
  264. package/styles/globals/overrides.scss +26 -44
  265. package/styles/globals/scrollbars.scss +8 -0
  266. package/styles/globals/text_fonts.scss +18 -66
  267. package/styles/globals/touchscreen.scss +2 -2
  268. package/tools/alertsTools.ts +94 -18
  269. package/tools/chartsTools.ts +156 -16
  270. package/tools/index.ts +1 -0
  271. package/tools/reportsTools.ts +38 -0
  272. package/tools/timeRangeTools.ts +99 -40
  273. package/utils/badge.ts +9 -5
  274. package/utils/index.ts +2 -0
  275. package/utils/leafletMarkers.ts +4 -4
  276. package/utils/operations.ts +108 -0
  277. package/utils/picker.ts +40 -0
  278. package/utils/sort.ts +2 -2
  279. package/utils/time.ts +13 -13
  280. package/components/fields/FSMagicConfigField.vue +0 -163
  281. package/components/fields/FSMagicField.vue +0 -193
  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/composables/useMagicFieldProvider.ts +0 -23
  288. package/models/magicFields.ts +0 -10
  289. package/styles/components/fs_data_iterator_item.scss +0 -33
  290. package/styles/components/fs_icon_field.scss +0 -12
  291. package/styles/components/fs_search_field.scss +0 -3
  292. package/styles/components/fs_tag_field.scss +0 -8
  293. package/styles/components/fs_time_field.scss +0 -12
  294. package/styles/components/fs_timeslot_field.scss +0 -12
  295. package/styles/globals/breakpoints.scss +0 -20
  296. package/styles/globals/fixes.scss +0 -5
@@ -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
  });
@@ -0,0 +1,52 @@
1
+ <template>
2
+ <FSSimpleTileUI
3
+ :bottomColor="$props.bottomColor"
4
+ v-bind="$attrs"
5
+ >
6
+ <template
7
+ #append-info
8
+ >
9
+ <FSEntityCountBadge
10
+ :label="$tr('ui.common.subgroupings', 'Categories')"
11
+ :count="$props.subgroupingCount ?? 0"
12
+ :color="ColorEnum.Primary"
13
+ />
14
+ </template>
15
+ </FSSimpleTileUI>
16
+ </template>
17
+
18
+ <script lang="ts">
19
+ import { defineComponent, type PropType } from "vue";
20
+
21
+
22
+ import { ColorEnum, type ColorBase } from "@dative-gpi/foundation-shared-components/models";
23
+
24
+ import FSEntityCountBadge from "./FSEntityCountBadge.vue";
25
+ import FSSimpleTileUI from './FSSimpleTileUI.vue';
26
+
27
+ export default defineComponent({
28
+ name: "FSGroupingTileUI",
29
+ components: {
30
+ FSSimpleTileUI,
31
+ FSEntityCountBadge
32
+ },
33
+ props: {
34
+ subgroupingCount: {
35
+ type: Number,
36
+ required: false,
37
+ default: null
38
+ },
39
+ bottomColor: {
40
+ type: [Array, String] as PropType<ColorBase | ColorBase[] | null>,
41
+ required: false,
42
+ default: null
43
+ },
44
+
45
+ },
46
+ setup() {
47
+ return {
48
+ ColorEnum,
49
+ };
50
+ }
51
+ });
52
+ </script>
@@ -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
- <FSCol
10
- align="center-center"
11
- width="fill"
12
+ <template
13
+ #append-info
12
14
  >
13
- <FSRow
14
- align="center-left"
15
- gap="24px"
16
- :height="imageSize"
17
- :wrap="false"
15
+ <FSCol
16
+ gap="8px"
18
17
  >
19
- <FSCol
20
- gap="12px"
21
- :width="infoWidth"
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
+ />
24
+ <FSRow
25
+ v-if="$props.address"
26
+ :wrap="false"
27
+ align="center-left"
22
28
  >
23
- <FSCol
24
- gap="6px"
29
+ <FSColor
30
+ height="24px"
31
+ :color="ColorEnum.Primary"
32
+ :border="false"
25
33
  >
26
- <FSSpan
27
- font="text-button"
28
- :lineClamp="1"
29
- >
30
- {{ $props.label }}
31
- </FSSpan>
32
- <FSSpan
33
- v-if="$props.code"
34
- font="text-overline"
35
- variant="soft"
34
+ <FSRow
35
+ align="center-center"
36
+ width="24px"
36
37
  >
37
- {{ $props.code }}
38
- </FSSpan>
39
- </FSCol>
40
- <FSRow
41
- :wrap="false"
42
- align="center-left"
38
+ <FSIcon
39
+ icon="mdi-map-marker-radius-outline"
40
+ size="16px"
41
+ />
42
+ </FSRow>
43
+ </FSColor>
44
+ <FSSpan
45
+ font="text-overline"
43
46
  >
44
- <FSColor
45
- padding="0 8px"
46
- height="24px"
47
- :color="ColorEnum.Light"
48
- :border="false"
49
- >
50
- <FSRow
51
- align="center-center"
52
- >
53
- <FSSpan
54
- font="text-overline"
55
- >
56
- {{ $props.deviceCount }}
57
- </FSSpan>
58
- </FSRow>
59
- </FSColor>
60
- <FSSpan
61
- font="text-overline"
62
- >
63
- {{ $tr("entity.location.devices", "Devices") }}
64
- </FSSpan>
65
- </FSRow>
66
- </FSCol>
67
- <FSIconCard
68
- backgroundVariant="standard"
69
- :backgroundColor="ColorEnum.Background"
70
- :iconColor="$props.color"
71
- :icon="$props.icon"
72
- :size="imageSize"
73
- />
74
- </FSRow>
75
- </FSCol>
76
- </FSTile>
47
+ {{ $props.address }}
48
+ </FSSpan>
49
+ </FSRow>
50
+ </FSCol>
51
+ </template>
52
+ </FSSimpleTileUI>
77
53
  </template>
78
54
 
79
55
  <script lang="ts">
80
- import { computed, defineComponent, type PropType } from "vue";
56
+ import { defineComponent, type PropType } from "vue";
81
57
 
58
+ import { capNumberToString } from '@dative-gpi/foundation-shared-components/utils';
82
59
  import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
83
- import { useBreakpoints } from "@dative-gpi/foundation-shared-components/composables";
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
  },
@@ -115,6 +91,10 @@ export default defineComponent({
115
91
  required: false,
116
92
  default: "mdi-map-marker"
117
93
  },
94
+ address: {
95
+ type: String,
96
+ required: false
97
+ },
118
98
  deviceCount: {
119
99
  type: Number,
120
100
  required: false,
@@ -137,20 +117,10 @@ export default defineComponent({
137
117
  }
138
118
  },
139
119
  setup() {
140
- const { isMobileSized } = useBreakpoints();
141
-
142
- const imageSize = computed((): number => {
143
- return isMobileSized.value ? 90 : 100;
144
- });
145
-
146
- const infoWidth = computed((): string => {
147
- return `calc(100% - ${imageSize.value}px - 24px)`;
148
- });
149
120
 
150
121
  return {
151
122
  ColorEnum,
152
- imageSize,
153
- infoWidth
123
+ capNumberToString
154
124
  };
155
125
  }
156
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,7 +51,7 @@
44
51
  v-else-if="$props.icon"
45
52
  :backgroundVariant="$props.iconBackgroundVariant"
46
53
  :backgroundColor="$props.iconBackgroundColor"
47
- :iconColor="$props.activeColor"
54
+ :iconColor="$props.iconColor"
48
55
  :border="$props.iconBorder"
49
56
  :icon="$props.icon"
50
57
  :size="imageSize"
@@ -79,7 +86,7 @@ export default defineComponent({
79
86
  },
80
87
  props: {
81
88
  imageId: {
82
- type: String as PropType<string>,
89
+ type: String as PropType<string | null>,
83
90
  required: false,
84
91
  default: null
85
92
  },
@@ -94,31 +101,34 @@ export default defineComponent({
94
101
  default: null
95
102
  },
96
103
  icon: {
97
- type: String as PropType<string>,
104
+ type: String as PropType<string | null>,
98
105
  required: false,
106
+ default: null
99
107
  },
100
108
  iconBackgroundVariant: {
101
109
  type: String as PropType<"background" | "standard" | "full" | "gradient">,
102
- required: false,
103
- default: "standard"
110
+ required: false
104
111
  },
105
112
  iconBackgroundColor: {
106
113
  type: [Array, String] as PropType<ColorBase | ColorBase[]>,
107
- required: false,
108
- default: ColorEnum.Background
114
+ required: false
109
115
  },
110
116
  iconBorder: {
111
117
  type: Boolean as PropType<boolean>,
112
118
  required: false,
113
119
  default: true
114
120
  },
121
+ iconColor: {
122
+ type: String as PropType<ColorBase>,
123
+ required: false
124
+ },
115
125
  activeColor: {
116
126
  type: String as PropType<ColorBase>,
117
127
  required: false,
118
128
  default: ColorEnum.Primary
119
129
  },
120
130
  bottomColor: {
121
- type: [Array, String] as PropType<ColorBase | ColorBase[]>,
131
+ type: [Array, String] as PropType<ColorBase | ColorBase[] | null>,
122
132
  required: false,
123
133
  default: ColorEnum.Light
124
134
  },
@@ -131,18 +141,13 @@ export default defineComponent({
131
141
  type: Boolean,
132
142
  required: false,
133
143
  default: false
134
- },
135
- editable: {
136
- type: Boolean,
137
- required: false,
138
- default: true
139
144
  }
140
145
  },
141
146
  setup(props) {
142
147
  const { isMobileSized } = useBreakpoints();
143
148
 
144
149
  const iconBackgroundColor = computed((): ColorBase | ColorBase[] => {
145
- return props.iconBackgroundColor ? props.bottomColor : ColorEnum.Background;
150
+ return props.iconBackgroundColor ?? ColorEnum.Background;
146
151
  });
147
152
 
148
153
  const imageSize = computed((): number => {