@dative-gpi/foundation-shared-components 0.0.229 → 0.1.68

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 (228) hide show
  1. package/components/FSAccordionPanel.vue +8 -10
  2. package/components/FSBadge.vue +2 -4
  3. package/components/FSBreadcrumbs.vue +9 -10
  4. package/components/FSButton.vue +81 -31
  5. package/components/FSCalendar.vue +35 -33
  6. package/components/FSCalendarTwin.vue +77 -84
  7. package/components/FSCard.vue +29 -16
  8. package/components/FSCardPlaceholder.vue +1 -2
  9. package/components/FSCheckbox.vue +5 -7
  10. package/components/FSChip.vue +9 -11
  11. package/components/FSClickable.vue +67 -57
  12. package/components/FSClock.vue +4 -4
  13. package/components/FSCol.vue +2 -3
  14. package/components/FSColor.vue +13 -31
  15. package/components/FSColorIcon.vue +25 -9
  16. package/components/FSDialog.vue +1 -2
  17. package/components/FSDialogFormBody.vue +4 -4
  18. package/components/FSDialogMenu.vue +2 -4
  19. package/components/FSDialogMultiFormBody.vue +63 -50
  20. package/components/FSDialogRemove.vue +1 -0
  21. package/components/FSDialogSubmit.vue +5 -7
  22. package/components/FSDivider.vue +7 -9
  23. package/components/FSEditImage.vue +27 -274
  24. package/components/FSEditImageUI.vue +303 -0
  25. package/components/FSErrorToast.vue +3 -4
  26. package/components/FSFadeOut.vue +18 -13
  27. package/components/FSGrid.vue +6 -9
  28. package/components/FSGridMosaic.vue +1 -2
  29. package/components/FSIcon.vue +7 -8
  30. package/components/FSIconCard.vue +23 -30
  31. package/components/FSIconCheck.vue +1 -2
  32. package/components/FSImage.vue +21 -193
  33. package/components/FSImageCard.vue +2 -2
  34. package/components/FSImageUI.vue +212 -0
  35. package/components/FSLabel.vue +18 -20
  36. package/components/FSLink.vue +19 -21
  37. package/components/FSLoader.vue +10 -14
  38. package/components/FSOptionGroup.vue +58 -12
  39. package/components/FSPagination.vue +3 -5
  40. package/components/FSRadio.vue +5 -7
  41. package/components/FSRadioGroup.vue +2 -4
  42. package/components/FSRow.vue +3 -4
  43. package/components/FSSlideGroup.vue +15 -4
  44. package/components/FSSlider.vue +9 -11
  45. package/components/FSSpan.vue +11 -9
  46. package/components/FSSwitch.vue +65 -37
  47. package/components/FSTab.vue +2 -4
  48. package/components/FSTabs.vue +36 -16
  49. package/components/FSTag.vue +23 -14
  50. package/components/FSTagGroup.vue +3 -5
  51. package/components/FSText.vue +8 -12
  52. package/components/FSWindow.vue +11 -5
  53. package/components/FSWrapGroup.vue +15 -4
  54. package/components/agenda/FSAgenda.vue +204 -0
  55. package/components/agenda/FSAgendaDialogCalendar.vue +76 -0
  56. package/components/agenda/FSAgendaHeader.vue +190 -0
  57. package/components/agenda/FSAgendaHorizontalEvent.vue +162 -0
  58. package/components/agenda/FSAgendaHorizontalTimeLineMarker.vue +46 -0
  59. package/components/agenda/FSAgendaHoursCol.vue +103 -0
  60. package/components/agenda/FSAgendaHoursRow.vue +124 -0
  61. package/components/agenda/FSAgendaVerticalEvent.vue +160 -0
  62. package/components/agenda/FSAgendaVerticalTimeLineMarker.vue +46 -0
  63. package/components/agenda/FSDayAgenda.vue +200 -0
  64. package/components/agenda/FSMonthAgenda.vue +257 -0
  65. package/components/agenda/FSSelectAgendaMode.vue +54 -0
  66. package/components/agenda/FSWeekAgenda.vue +328 -0
  67. package/components/autocompletes/FSAutocompleteLanguage.vue +18 -39
  68. package/components/autocompletes/FSAutocompleteTimeZone.vue +20 -38
  69. package/components/buttons/FSButtonCancelMini.vue +1 -0
  70. package/components/buttons/FSButtonCopy.vue +28 -0
  71. package/components/buttons/FSButtonCopyIcon.vue +28 -0
  72. package/components/buttons/FSButtonCopyLabel.vue +27 -0
  73. package/components/buttons/FSButtonCopyMini.vue +28 -0
  74. package/components/buttons/FSButtonDragIcon.vue +27 -0
  75. package/components/buttons/FSButtonDuplicateMini.vue +1 -0
  76. package/components/buttons/FSButtonEditMini.vue +1 -0
  77. package/components/buttons/FSButtonFileMini.vue +1 -0
  78. package/components/buttons/FSButtonNextMini.vue +1 -0
  79. package/components/buttons/FSButtonPreviousMini.vue +1 -0
  80. package/components/buttons/FSButtonRedoMini.vue +1 -0
  81. package/components/buttons/FSButtonRemoveMini.vue +1 -0
  82. package/components/buttons/FSButtonSaveMini.vue +1 -0
  83. package/components/buttons/FSButtonSearchMini.vue +1 -0
  84. package/components/buttons/FSButtonUndoMini.vue +1 -0
  85. package/components/buttons/FSButtonUpdateMini.vue +1 -0
  86. package/components/buttons/FSButtonValidateMini.vue +1 -0
  87. package/components/deviceOrganisations/FSConnectivity.vue +11 -1
  88. package/components/deviceOrganisations/FSConnectivityCard.vue +20 -49
  89. package/components/deviceOrganisations/FSStatus.vue +11 -1
  90. package/components/deviceOrganisations/FSStatusCard.vue +40 -60
  91. package/components/deviceOrganisations/FSStatusesCarousel.vue +1 -0
  92. package/components/deviceOrganisations/FSStatusesRow.vue +10 -5
  93. package/components/deviceOrganisations/FSWorstAlert.vue +19 -13
  94. package/components/deviceOrganisations/FSWorstAlertCard.vue +36 -47
  95. package/components/fields/FSAutocompleteField.vue +501 -323
  96. package/components/fields/FSAutocompleteTag.vue +100 -0
  97. package/components/fields/FSBaseField.vue +26 -16
  98. package/components/fields/FSColorField.vue +63 -55
  99. package/components/fields/FSCommentField.vue +93 -0
  100. package/components/fields/FSDateField.vue +2 -2
  101. package/components/fields/FSDateRangeField.vue +2 -2
  102. package/components/fields/FSDateTimeField.vue +4 -3
  103. package/components/fields/FSDateTimeRangeField.vue +7 -6
  104. package/components/fields/FSEntityFieldUI.vue +271 -0
  105. package/components/fields/FSGradientField.vue +27 -33
  106. package/components/fields/FSIconField.vue +2 -3
  107. package/components/fields/FSMagicConfigField.vue +28 -19
  108. package/components/fields/FSMagicField.vue +25 -17
  109. package/components/fields/FSNumberField.vue +9 -7
  110. package/components/fields/FSPasswordField.vue +2 -3
  111. package/components/fields/FSRichTextField.vue +32 -5
  112. package/components/fields/FSSearchField.vue +2 -2
  113. package/components/fields/FSSelectField.vue +483 -251
  114. package/components/fields/FSTagField.vue +4 -6
  115. package/components/fields/FSTermField.vue +25 -13
  116. package/components/fields/FSTextArea.vue +18 -6
  117. package/components/fields/FSTextField.vue +13 -10
  118. package/components/fields/FSTimeField.vue +1 -1
  119. package/components/fields/FSTimeSlotField.vue +3 -4
  120. package/components/fields/FSTimeStepField.vue +157 -0
  121. package/components/fields/FSTranslateField.vue +3 -2
  122. package/components/fields/FSTranslateRichTextField.vue +4 -3
  123. package/components/fields/FSTranslateTextArea.vue +233 -0
  124. package/components/fields/FSTreeViewField.vue +7 -9
  125. package/components/fields/periodicField/FSPeriodicDailyField.vue +120 -0
  126. package/components/fields/periodicField/FSPeriodicField.vue +131 -0
  127. package/components/fields/periodicField/FSPeriodicMonthlyField.vue +222 -0
  128. package/components/fields/periodicField/FSPeriodicWeeklyField.vue +120 -0
  129. package/components/fields/periodicField/FSPeriodicYearlyField.vue +144 -0
  130. package/components/lists/FSDataIteratorItem.vue +8 -10
  131. package/components/lists/FSDataTableUI.vue +47 -39
  132. package/components/lists/FSFilterButton.vue +20 -22
  133. package/components/lists/FSHiddenButton.vue +10 -12
  134. package/components/lists/FSLoadDataTable.vue +4 -6
  135. package/components/lists/FSSimpleList.vue +229 -0
  136. package/components/map/FSMap.vue +256 -405
  137. package/components/map/FSMapFeatureGroup.vue +51 -0
  138. package/components/map/FSMapLayerButton.vue +6 -3
  139. package/components/map/FSMapMarker.vue +116 -0
  140. package/components/map/FSMapMarkerClusterGroup.vue +72 -0
  141. package/components/map/FSMapOverlay.vue +69 -83
  142. package/components/map/FSMapPolygon.vue +81 -0
  143. package/components/map/FSMapTileLayer.vue +50 -0
  144. package/components/map/keys.ts +4 -0
  145. package/components/selects/FSSelectAutoRefresh.vue +1 -1
  146. package/components/selects/FSSelectDashboardVariableType.vue +1 -1
  147. package/components/selects/FSSelectDateSetting.vue +3 -3
  148. package/components/selects/FSSelectDays.vue +1 -1
  149. package/components/selects/FSSelectListMode.vue +51 -0
  150. package/components/selects/FSSelectMonths.vue +67 -0
  151. package/components/tiles/FSChartTileUI.vue +116 -0
  152. package/components/tiles/FSCommentTileUI.vue +149 -0
  153. package/components/tiles/FSDashboardOrganisationTileUI.vue +6 -8
  154. package/components/tiles/FSDashboardOrganisationTypeTileUI.vue +6 -8
  155. package/components/tiles/FSDashboardShallowTileUI.vue +6 -8
  156. package/components/tiles/FSDeviceOrganisationTileUI.vue +30 -18
  157. package/components/tiles/FSFolderTileUI.vue +6 -6
  158. package/components/tiles/FSGroupTileUI.vue +31 -22
  159. package/components/tiles/FSLoadTile.vue +5 -7
  160. package/components/tiles/FSLocationTileUI.vue +157 -0
  161. package/components/tiles/FSModelTileUI.vue +18 -0
  162. package/components/tiles/FSServiceAccountOrganisationTileUI.vue +142 -0
  163. package/components/tiles/FSSimpleTileUI.vue +57 -36
  164. package/components/tiles/FSTile.vue +115 -55
  165. package/components/tiles/FSUserOrganisationTileUI.vue +25 -35
  166. package/components/toggleSets/FSToggleSetPosition.vue +1 -1
  167. package/components/views/FSEntityHeader.vue +343 -0
  168. package/components/views/FSEntityView.vue +163 -0
  169. package/components/views/FSListHeader.vue +83 -0
  170. package/components/views/FSListView.vue +83 -0
  171. package/components/views/FSSkeletonView.vue +100 -0
  172. package/composables/useAddress.ts +2 -2
  173. package/composables/useColors.ts +15 -5
  174. package/composables/useMagicFieldProvider.ts +7 -6
  175. package/composables/useSlots.ts +51 -28
  176. package/models/agenda.ts +9 -0
  177. package/models/deviceAlerts.ts +1 -1
  178. package/models/deviceConnectivities.ts +1 -1
  179. package/models/index.ts +1 -0
  180. package/models/magicFields.ts +1 -0
  181. package/models/map.ts +2 -2
  182. package/models/rules.ts +10 -5
  183. package/models/tables.ts +3 -1
  184. package/package.json +4 -4
  185. package/styles/components/fs_agenda.scss +32 -0
  186. package/styles/components/fs_agenda_event.scss +41 -0
  187. package/styles/components/fs_agenda_hours_col.scss +4 -0
  188. package/styles/components/fs_agenda_hours_row.scss +13 -0
  189. package/styles/components/fs_agenda_time_line_marker.scss +19 -0
  190. package/styles/components/fs_card.scss +0 -1
  191. package/styles/components/fs_clickable.scss +5 -3
  192. package/styles/components/fs_color_field.scss +1 -0
  193. package/styles/components/fs_data_table.scss +2 -0
  194. package/styles/components/fs_dialog.scss +11 -15
  195. package/styles/components/fs_edit_image.scss +8 -0
  196. package/styles/components/fs_fade_out.scss +2 -1
  197. package/styles/components/fs_filter_button.scss +1 -6
  198. package/styles/components/fs_gradient_field.scss +11 -11
  199. package/styles/components/fs_magic_config_field.scss +2 -2
  200. package/styles/components/fs_map.scss +36 -30
  201. package/styles/components/fs_option_group.scss +15 -5
  202. package/styles/components/fs_radio.scss +11 -0
  203. package/styles/components/fs_rich_text_field.scss +2 -1
  204. package/styles/components/fs_search_field.scss +3 -0
  205. package/styles/components/fs_select_date_settings.scss +3 -0
  206. package/styles/components/fs_slide_group.scss +5 -0
  207. package/styles/components/fs_span.scss +2 -1
  208. package/styles/components/fs_switch.scss +1 -0
  209. package/styles/components/fs_tabs.scss +9 -0
  210. package/styles/components/fs_text_area.scss +15 -1
  211. package/styles/components/fs_tile.scss +22 -6
  212. package/styles/components/fs_window.scss +5 -0
  213. package/styles/components/fs_wrap_group.scss +4 -0
  214. package/styles/components/index.scss +6 -1
  215. package/styles/globals/overrides.scss +22 -19
  216. package/styles/globals/text_fonts.scss +17 -55
  217. package/tools/alertsTools.ts +54 -0
  218. package/tools/chartsTools.ts +300 -0
  219. package/tools/index.ts +2 -0
  220. package/utils/badge.ts +9 -0
  221. package/utils/filter.ts +18 -0
  222. package/utils/index.ts +2 -0
  223. package/utils/leafletMarkers.ts +8 -2
  224. package/utils/statuses.ts +1 -1
  225. package/utils/time.ts +27 -1
  226. package/components/autocompletes/FSAutocompleteTag.vue +0 -138
  227. package/components/map/FSMapEditPointAddressOverlay.vue +0 -164
  228. package/styles/components/fs_map_overlay.scss +0 -38
@@ -0,0 +1,303 @@
1
+ <template>
2
+ <FSCol
3
+ gap="8px"
4
+ >
5
+ <slot
6
+ v-if="!$props.hideHeader"
7
+ name="label"
8
+ >
9
+ <FSRow
10
+ :wrap="false"
11
+ >
12
+ <FSSpan
13
+ v-if="$props.label"
14
+ class="fs-edit-image-label"
15
+ font="text-overline"
16
+ :style="style"
17
+ >
18
+ {{ $props.label }}
19
+ </FSSpan>
20
+ <FSSpan
21
+ v-if="$props.label && $props.required"
22
+ class="fs-edit-image-label"
23
+ style="margin-left: -8px;"
24
+ font="text-overline"
25
+ :ellipsis="false"
26
+ :style="style"
27
+ >
28
+ *
29
+ </FSSpan>
30
+ </FSRow>
31
+ </slot>
32
+ <FSCard
33
+ v-if="['standard'].includes($props.variant)"
34
+ padding="12px"
35
+ width="100%"
36
+ >
37
+ <FSRow
38
+ align="center-left"
39
+ :wrap="false"
40
+ >
41
+ <FSRow
42
+ class="fs-edit-image-standard-row"
43
+ gap="24px"
44
+ :wrap="false"
45
+ >
46
+ <FSImageUI
47
+ v-if="$props.source || $props.modelValue"
48
+ :aspectRatio="$props.aspectRatio"
49
+ :height="$props.height"
50
+ :width="$props.width"
51
+ :source="$props.source"
52
+ :imageB64="$props.modelValue"
53
+ v-bind="$attrs"
54
+ />
55
+ <FSCard
56
+ v-else
57
+ borderStyle="dashed"
58
+ :aspectRatio="$props.aspectRatio"
59
+ :height="$props.height"
60
+ :width="$props.width"
61
+ />
62
+ <FSCol
63
+ class="fs-edit-image-standard-label-wrapper"
64
+ align="center-left"
65
+ height="fill"
66
+ width="hug"
67
+ gap="10px"
68
+ >
69
+ <FSText
70
+ v-if="fileSelected && fileSelected.fileName"
71
+ font="text-body"
72
+ :lineClamp="2"
73
+ >
74
+ {{ fileSelected.fileName }}
75
+ </FSText>
76
+ <FSCol
77
+ gap="0px"
78
+ >
79
+ <FSText
80
+ class="fs-edit-image-overline"
81
+ font="text-overline"
82
+ :style="style"
83
+ >
84
+ {{ $tr('ui.edit-image.format', 'PNG or JPG format') }}
85
+ </FSText>
86
+ <FSText
87
+ class="fs-edit-image-overline"
88
+ font="text-overline"
89
+ :style="style"
90
+ >
91
+ {{ $tr('ui.edit-image.size', '10 MB Maximum') }}
92
+ </FSText>
93
+ </FSCol>
94
+ </FSCol>
95
+ </FSRow>
96
+ <FSRow
97
+ align="center-right"
98
+ :width="isExtraSmall ? '40px' : 'hug'"
99
+ >
100
+ <FSButtonFileMini
101
+ accept=".jpg,.jpeg,.png"
102
+ :readFile="false"
103
+ @update:metadata="onUpload"
104
+ />
105
+ <FSButtonRemoveMini
106
+ @click="onRemove"
107
+ />
108
+ </FSRow>
109
+ </FSRow>
110
+ </FSCard>
111
+ <FSRow
112
+ v-else-if="$props.source || $props.modelValue"
113
+ :width="$props.width"
114
+ class="fs-edit-image-full"
115
+ >
116
+ <FSImageUI
117
+ :aspectRatio="$props.aspectRatio"
118
+ :height="$props.height"
119
+ :width="$props.width"
120
+ :source="$props.source"
121
+ :imageB64="$props.modelValue"
122
+ v-bind="$attrs"
123
+ />
124
+ <FSRow
125
+ class="fs-edit-image-full-toolbar"
126
+ padding="4px"
127
+ >
128
+ <FSButtonFileMini
129
+ accept=".jpg,.jpeg,.png"
130
+ :readFile="false"
131
+ @update:metadata="onUpload"
132
+ />
133
+ <FSButtonRemoveMini
134
+ @click="onRemove"
135
+ />
136
+ </FSRow>
137
+ </FSRow>
138
+ <FSClickable
139
+ v-else
140
+ borderStyle="dashed"
141
+ variant="background"
142
+ :height="$props.height"
143
+ :width="$props.width"
144
+ @click="() => invisibleButtonRef.input.click()"
145
+ >
146
+ <FSRow
147
+ align="center-center"
148
+ :wrap="false"
149
+ >
150
+ <FSIcon>
151
+ mdi-plus-box-outline
152
+ </FSIcon>
153
+ <FSText
154
+ font="text-body"
155
+ :lineClamp="2"
156
+ >
157
+ {{ $tr('ui.edit-image.add-image', 'Add an image.') }}
158
+ </FSText>
159
+ <FSButtonFileMini
160
+ class="fs-edit-image-hidden-button"
161
+ ref="invisibleButtonRef"
162
+ accept=".jpg,.jpeg,.png"
163
+ :readFile="false"
164
+ @update:metadata="onUpload"
165
+ />
166
+ </FSRow>
167
+ </FSClickable>
168
+ </FSCol>
169
+ </template>
170
+
171
+ <script lang="ts">
172
+ import { computed, defineComponent, type PropType, ref, type StyleValue, watch } from "vue";
173
+
174
+ import { useBreakpoints, useColors } from "@dative-gpi/foundation-shared-components/composables";
175
+ import { ColorEnum, type FileImage } from "@dative-gpi/foundation-shared-components/models";
176
+ import { useFiles } from "@dative-gpi/foundation-shared-services/composables";
177
+
178
+ import FSButtonRemoveMini from "./buttons/FSButtonRemoveMini.vue";
179
+ import FSButtonFileMini from "./buttons/FSButtonFileMini.vue";
180
+ import FSClickable from "./FSClickable.vue";
181
+ import FSImageUI from "./FSImageUI.vue";
182
+ import FSCard from "./FSCard.vue";
183
+ import FSText from "./FSText.vue";
184
+ import FSCol from "./FSCol.vue";
185
+ import FSRow from "./FSRow.vue";
186
+
187
+ export default defineComponent({
188
+ name: "FSEditImageUI",
189
+ components: {
190
+ FSButtonRemoveMini,
191
+ FSButtonFileMini,
192
+ FSClickable,
193
+ FSImageUI,
194
+ FSCard,
195
+ FSText,
196
+ FSCol,
197
+ FSRow
198
+ },
199
+ props: {
200
+ height: {
201
+ type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
202
+ required: false,
203
+ default: null
204
+ },
205
+ width: {
206
+ type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
207
+ required: false,
208
+ default: null
209
+ },
210
+ label: {
211
+ type: String as PropType<string | null>,
212
+ required: false,
213
+ default: null
214
+ },
215
+ source: {
216
+ type: String as PropType<string | null>,
217
+ required: false,
218
+ default: null
219
+ },
220
+ aspectRatio: {
221
+ type: String as PropType<string | null>,
222
+ required: false,
223
+ default: null
224
+ },
225
+ modelValue: {
226
+ type: String as PropType<string | null>,
227
+ required: false,
228
+ default: null
229
+ },
230
+ variant: {
231
+ type: String as PropType<"standard" | "full">,
232
+ required: false,
233
+ default: "standard"
234
+ },
235
+ hideHeader: {
236
+ type: Boolean,
237
+ required: false,
238
+ default: false
239
+ },
240
+ required: {
241
+ type: Boolean,
242
+ required: false,
243
+ default: false
244
+ }
245
+ },
246
+ emits: ["update:modelValue", "update:source"],
247
+ setup(props, { emit }) {
248
+ const { isExtraSmall } = useBreakpoints();
249
+ const { getColors } = useColors();
250
+ const { readFile } = useFiles();
251
+
252
+ const fileSelected = ref<FileImage>({ fileName: "", fileContent: null });
253
+ const invisibleButtonRef = ref<HTMLFormElement | null>(null);
254
+
255
+ const errors = getColors(ColorEnum.Error);
256
+ const lights = getColors(ColorEnum.Light);
257
+ const darks = getColors(ColorEnum.Dark);
258
+
259
+ const style = computed((): StyleValue => ({
260
+ "--fs-edit-image-overline-text-color": lights.dark,
261
+ "--fs-edit-image-color" : darks.base,
262
+ "--fs-edit-image-error-color" : errors.base
263
+ }));
264
+
265
+ const onUpload = async (payload: File) => {
266
+ const content = (await readFile(payload)) as string;
267
+ fileSelected.value.fileName = payload.name;
268
+ fileSelected.value.fileContent = content;
269
+ emit("update:modelValue", content.substring(content.indexOf(',') + 1));
270
+ if (props.source) {
271
+ emit("update:source", null);
272
+ }
273
+ };
274
+
275
+ const onRemove = () => {
276
+ fileSelected.value.fileName = "";
277
+ fileSelected.value.fileContent = null;
278
+ if (props.modelValue) {
279
+ emit("update:modelValue", null);
280
+ }
281
+ else {
282
+ emit("update:source", null);
283
+ }
284
+ };
285
+
286
+ watch(() => props.modelValue, () => {
287
+ if (!props.modelValue) {
288
+ fileSelected.value.fileName = "";
289
+ fileSelected.value.fileContent = null;
290
+ }
291
+ });
292
+
293
+ return {
294
+ invisibleButtonRef,
295
+ fileSelected,
296
+ isExtraSmall,
297
+ style,
298
+ onUpload,
299
+ onRemove
300
+ };
301
+ }
302
+ });
303
+ </script>
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <FSCol
3
- padding="18px 32px"
4
3
  class="fs-error-toast"
5
4
  align="center-center"
5
+ padding="18px 32px"
6
6
  gap="24px"
7
7
  :style="style"
8
8
  >
@@ -28,8 +28,7 @@
28
28
  </template>
29
29
 
30
30
  <script lang="ts">
31
- import type { PropType } from "vue";
32
- import { computed, defineComponent } from "vue";
31
+ import { computed, defineComponent, type PropType, type StyleValue } from "vue";
33
32
 
34
33
  import { getError, sizeToVar } from "@dative-gpi/foundation-shared-components/utils";
35
34
  import { useColors } from "@dative-gpi/foundation-shared-components/composables";
@@ -69,7 +68,7 @@ export default defineComponent({
69
68
 
70
69
  const errors = getColors(ColorEnum.Error);
71
70
 
72
- const style = computed((): { [key: string]: string | undefined } => {
71
+ const style = computed((): StyleValue => {
73
72
  switch (props.variant) {
74
73
  case "standard": return {
75
74
  "--fs-error-toast-border-radius": sizeToVar(props.borderRadius),
@@ -11,7 +11,7 @@
11
11
  </template>
12
12
 
13
13
  <script lang="ts">
14
- import { computed, defineComponent, onMounted, onUnmounted, type PropType, ref, watch } from "vue";
14
+ import { computed, defineComponent, onMounted, onUnmounted, type PropType, ref, type StyleValue, watch } from "vue";
15
15
 
16
16
  import { useBreakpoints, useColors, useDebounce } from "@dative-gpi/foundation-shared-components/composables";
17
17
  import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
@@ -22,8 +22,14 @@ export default defineComponent({
22
22
  name: "FSFadeOut",
23
23
  props: {
24
24
  height: {
25
- type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
26
- required: true
25
+ type: [Array, String, Number] as PropType<string[] | number[] | string | number | null | undefined>,
26
+ required: false,
27
+ default: undefined
28
+ },
29
+ maxHeight: {
30
+ type: [Array, String, Number] as PropType<string[] | number[] | string | number | null | undefined>,
31
+ required: false,
32
+ default: undefined
27
33
  },
28
34
  width: {
29
35
  type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
@@ -58,16 +64,15 @@ export default defineComponent({
58
64
 
59
65
  const elementId = `id${uuidv4()}`;
60
66
 
61
- const style = computed((): { [key: string] : string | null | undefined } => {
62
- return {
63
- "--fs-fade-out-height" : sizeToVar(props.height),
64
- "--fs-fade-out-width" : sizeToVar(props.width),
65
- "--fs-fade-out-padding" : sizeToVar(props.padding),
66
- "--fs-fade-out-mask-color" : backgrounds.base,
67
- "--fs-fade-out-top-mask-height" : topMaskHeight.value,
68
- "--fs-fade-out-bottom-mask-height" : bottomMaskHeight.value,
69
- };
70
- });
67
+ const style = computed((): StyleValue => ({
68
+ "--fs-fade-out-height" : props.height ? sizeToVar(props.height) : undefined,
69
+ "--fs-fade-out-max-height" : props.maxHeight ? sizeToVar(props.maxHeight) : undefined,
70
+ "--fs-fade-out-width" : sizeToVar(props.width),
71
+ "--fs-fade-out-padding" : sizeToVar(props.padding),
72
+ "--fs-fade-out-mask-color" : backgrounds.base,
73
+ "--fs-fade-out-top-mask-height" : topMaskHeight.value,
74
+ "--fs-fade-out-bottom-mask-height": bottomMaskHeight.value
75
+ }));
71
76
 
72
77
  const handleMasks = () => {
73
78
  if (fadeOutRef.value) {
@@ -27,6 +27,7 @@
27
27
  >
28
28
  <FSText
29
29
  :font="item.hideDefault ? 'text-body' : 'text-overline'"
30
+ variant="soft"
30
31
  >
31
32
  {{ item.label }}
32
33
  </FSText>
@@ -66,12 +67,10 @@
66
67
  </template>
67
68
 
68
69
  <script lang="ts">
69
- import type { PropType } from "vue";
70
- import { computed, defineComponent } from "vue";
70
+ import { computed, defineComponent, type PropType, type StyleValue } from "vue";
71
71
 
72
+ import { ColorEnum, type FSGridItem } from "@dative-gpi/foundation-shared-components/models";
72
73
  import { useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
73
- import type { FSGridItem } from "@dative-gpi/foundation-shared-components/models";
74
- import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
75
74
 
76
75
  import FSText from "./FSText.vue";
77
76
  import FSCol from "./FSCol.vue";
@@ -97,11 +96,9 @@ export default defineComponent({
97
96
 
98
97
  const lights = getColors(ColorEnum.Light);
99
98
 
100
- const style = computed((): { [key: string] : string | null | undefined } => {
101
- return {
102
- "--fs-grid-border-color": lights.dark
103
- };
104
- });
99
+ const style = computed((): StyleValue => ({
100
+ "--fs-grid-border-color": lights.dark
101
+ }));
105
102
 
106
103
  const headerSlot = (code: string) => {
107
104
  if (slots[`header.${code}`]) {
@@ -34,8 +34,7 @@
34
34
  </template>
35
35
 
36
36
  <script lang="ts">
37
- import type { PropType } from "vue";
38
- import { computed, defineComponent } from "vue";
37
+ import { computed, defineComponent, type PropType } from "vue";
39
38
 
40
39
  import { useBreakpoints } from "@dative-gpi/foundation-shared-components/composables";
41
40
  import type { FSGridMosaic } from "@dative-gpi/foundation-shared-components/models";
@@ -10,12 +10,12 @@
10
10
  </template>
11
11
 
12
12
  <script lang="ts">
13
- import type { PropType } from "vue";
14
- import { computed, defineComponent } from "vue";
13
+ import { computed, defineComponent, type PropType, type StyleValue } from "vue";
15
14
 
16
15
  import { useBreakpoints, useColors } from "@dative-gpi/foundation-shared-components/composables";
17
- import type { ColorBase } from "@dative-gpi/foundation-shared-components/models";
18
- import { sizeToVar } from "@dative-gpi/foundation-shared-components/utils";
16
+ import { type ColorBase } from "@dative-gpi/foundation-shared-components/models";
17
+
18
+ import { sizeToVar } from "../utils";
19
19
 
20
20
  export default defineComponent({
21
21
  name: "FSIcon",
@@ -31,7 +31,7 @@ export default defineComponent({
31
31
  default: null
32
32
  },
33
33
  variant: {
34
- type: String as PropType<"base" | "baseContrast" | "light" | "lightContrast" | "dark" | "darkContrast">,
34
+ type: String as PropType<"base" | "baseContrast" | "soft" | "softContrast" | "light" | "lightContrast" | "dark" | "darkContrast">,
35
35
  required: false,
36
36
  default: "base"
37
37
  }
@@ -40,14 +40,13 @@ export default defineComponent({
40
40
  const { isMobileSized } = useBreakpoints();
41
41
  const { getColors } = useColors();
42
42
 
43
- const color = computed((): string | null => {
43
+ const color = computed((): string | undefined => {
44
44
  if (props.color) {
45
45
  return getColors(props.color)[props.variant]!;
46
46
  }
47
- return null;
48
47
  });
49
48
 
50
- const style = computed((): { [key: string] : string | null | undefined } => {
49
+ const style = computed((): StyleValue => {
51
50
  switch(props.size) {
52
51
  case "s": return {
53
52
  "--fs-icon-font-size": isMobileSized.value ? "14px" : "16px"
@@ -1,18 +1,18 @@
1
1
  <template>
2
2
  <FSCard
3
+ :variant="$props.backgroundVariant"
3
4
  :color="$props.backgroundColor"
5
+ :border="$props.border"
4
6
  :height="$props.size"
5
7
  :width="$props.size"
6
- :variant="variant"
7
- :border="border"
8
8
  >
9
9
  <FSRow
10
10
  align="center-center"
11
11
  >
12
12
  <FSIcon
13
- variant="dark"
14
- :size="$props.iconSize"
13
+ :variant="$props.iconVariant"
15
14
  :color="$props.iconColor"
15
+ :size="$props.iconSize"
16
16
  >
17
17
  {{ $props.icon }}
18
18
  </FSIcon>
@@ -21,11 +21,9 @@
21
21
  </template>
22
22
 
23
23
  <script lang="ts">
24
- import type { PropType } from "vue";
25
- import { computed, defineComponent } from "vue";
24
+ import { defineComponent, type PropType } from "vue";
26
25
 
27
- import type { ColorBase} from "@dative-gpi/foundation-shared-components/models";
28
- import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
26
+ import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
29
27
 
30
28
  import FSCard from "./FSCard.vue";
31
29
  import FSIcon from "./FSIcon.vue";
@@ -47,6 +45,11 @@ export default defineComponent({
47
45
  required: false,
48
46
  default: null
49
47
  },
48
+ backgroundVariant: {
49
+ type: String as PropType<"background" | "standard" | "full" | "gradient">,
50
+ required: false,
51
+ default: "background"
52
+ },
50
53
  icon: {
51
54
  type: String as PropType<string>,
52
55
  required: false,
@@ -55,33 +58,23 @@ export default defineComponent({
55
58
  iconColor: {
56
59
  type: String as PropType<ColorBase>,
57
60
  required: false,
58
- default: ColorEnum.Dark
61
+ default: ColorEnum.Primary
62
+ },
63
+ iconVariant: {
64
+ type: String as PropType<"base" | "baseContrast" | "soft" | "softContrast" | "light" | "lightContrast" | "dark" | "darkContrast">,
65
+ required: false,
66
+ default: "base"
59
67
  },
60
68
  iconSize: {
61
69
  type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
62
70
  required: false,
63
- default: "56px"
71
+ default: "42px"
72
+ },
73
+ border: {
74
+ type: Boolean,
75
+ required: false,
76
+ default: true
64
77
  }
65
- },
66
- setup(props) {
67
- const variant = computed((): "background" | "gradient" => {
68
- switch (props.backgroundColor) {
69
- case ColorEnum.Background: return "background";
70
- default: return "gradient";
71
- }
72
- });
73
-
74
- const border = computed((): boolean => {
75
- switch (props.backgroundColor) {
76
- case ColorEnum.Background: return true;
77
- default: return false;
78
- }
79
- });
80
-
81
- return {
82
- variant,
83
- border
84
- };
85
78
  }
86
79
  });
87
80
  </script>
@@ -9,8 +9,7 @@
9
9
  <script lang="ts">
10
10
  import { computed, defineComponent } from "vue";
11
11
 
12
- import type { ColorBase} from "@dative-gpi/foundation-shared-components/models";
13
- import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
12
+ import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
14
13
 
15
14
  import FSIcon from "./FSIcon.vue";
16
15