@dative-gpi/foundation-shared-components 1.0.26 → 1.0.28-remove-deprecated2

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 (265) hide show
  1. package/components/FSBreadcrumbs.vue +1 -0
  2. package/components/FSButton.vue +10 -10
  3. package/components/FSCalendar.vue +52 -14
  4. package/components/FSCalendarTwin.vue +96 -40
  5. package/components/FSCard.vue +28 -7
  6. package/components/FSCardPlaceholder.vue +8 -5
  7. package/components/FSChip.vue +12 -2
  8. package/components/FSClickable.vue +20 -12
  9. package/components/FSClock.vue +16 -7
  10. package/components/FSColorIcon.vue +23 -5
  11. package/components/FSDialog.vue +2 -1
  12. package/components/FSDialogContent.vue +12 -11
  13. package/components/FSDialogForm.vue +22 -2
  14. package/components/FSDialogFormBody.vue +51 -32
  15. package/components/FSDialogMultiFormBody.vue +79 -56
  16. package/components/FSDialogRemove.vue +7 -7
  17. package/components/FSDialogSubmit.vue +20 -11
  18. package/components/FSEditImage.vue +1 -1
  19. package/components/FSEditImageUI.vue +20 -10
  20. package/components/FSFadeOut.vue +44 -18
  21. package/components/FSForm.vue +10 -8
  22. package/components/FSGrid.vue +1 -1
  23. package/components/FSIcon.vue +2 -1
  24. package/components/FSIconCard.vue +21 -4
  25. package/components/FSImage.vue +12 -4
  26. package/components/FSImageUI.vue +8 -15
  27. package/components/FSLink.vue +25 -9
  28. package/components/FSLoader.vue +28 -11
  29. package/components/FSOptionGroup.vue +51 -3
  30. package/components/FSRouterLink.vue +42 -0
  31. package/components/FSSlideGroup.vue +19 -5
  32. package/components/FSSpan.vue +9 -2
  33. package/components/FSSwitch.vue +57 -27
  34. package/components/FSTab.vue +15 -13
  35. package/components/FSTabs.vue +32 -7
  36. package/components/FSTag.vue +14 -3
  37. package/components/FSTagGroup.vue +1 -1
  38. package/components/FSText.vue +4 -2
  39. package/components/FSWindow.vue +128 -4
  40. package/components/FSWrapGroup.vue +13 -1
  41. package/components/agenda/FSAgenda.vue +223 -0
  42. package/components/agenda/FSAgendaDialogCalendar.vue +76 -0
  43. package/components/agenda/FSAgendaHeader.vue +215 -0
  44. package/components/agenda/FSAgendaHorizontalEvent.vue +174 -0
  45. package/components/agenda/FSAgendaHorizontalTimeLineMarker.vue +46 -0
  46. package/components/agenda/FSAgendaHoursCol.vue +103 -0
  47. package/components/agenda/FSAgendaHoursRow.vue +164 -0
  48. package/components/agenda/FSAgendaVerticalEvent.vue +160 -0
  49. package/components/agenda/FSAgendaVerticalTimeLineMarker.vue +46 -0
  50. package/components/agenda/FSDayAgenda.vue +199 -0
  51. package/components/agenda/FSMonthAgenda.vue +252 -0
  52. package/components/agenda/FSSelectAgendaMode.vue +54 -0
  53. package/components/agenda/FSWeekAgenda.vue +323 -0
  54. package/components/autocompletes/FSAutoCompleteAddress.vue +22 -20
  55. package/components/autocompletes/FSAutocompleteLanguage.vue +24 -39
  56. package/components/autocompletes/FSAutocompleteTimeZone.vue +26 -38
  57. package/components/buttons/FSButtonAdd.vue +1 -1
  58. package/components/buttons/FSButtonAddLabel.vue +1 -1
  59. package/components/buttons/FSButtonCancel.vue +1 -1
  60. package/components/buttons/FSButtonCancelLabel.vue +1 -1
  61. package/components/buttons/FSButtonCopy.vue +28 -0
  62. package/components/buttons/FSButtonCopyIcon.vue +28 -0
  63. package/components/buttons/FSButtonCopyLabel.vue +27 -0
  64. package/components/buttons/FSButtonCopyMini.vue +28 -0
  65. package/components/buttons/FSButtonDragIcon.vue +27 -0
  66. package/components/buttons/FSButtonDuplicate.vue +1 -1
  67. package/components/buttons/FSButtonDuplicateLabel.vue +1 -1
  68. package/components/buttons/FSButtonEdit.vue +1 -1
  69. package/components/buttons/FSButtonEditLabel.vue +1 -1
  70. package/components/buttons/FSButtonFile.vue +1 -1
  71. package/components/buttons/FSButtonFileLabel.vue +1 -1
  72. package/components/buttons/FSButtonNext.vue +1 -1
  73. package/components/buttons/FSButtonNextLabel.vue +1 -1
  74. package/components/buttons/FSButtonPrevious.vue +1 -1
  75. package/components/buttons/FSButtonPreviousLabel.vue +1 -1
  76. package/components/buttons/FSButtonRedo.vue +1 -1
  77. package/components/buttons/FSButtonRedoLabel.vue +1 -1
  78. package/components/buttons/FSButtonRemove.vue +1 -1
  79. package/components/buttons/FSButtonRemoveLabel.vue +1 -1
  80. package/components/buttons/FSButtonSave.vue +1 -1
  81. package/components/buttons/FSButtonSaveLabel.vue +1 -1
  82. package/components/buttons/FSButtonSearch.vue +1 -1
  83. package/components/buttons/FSButtonSearchLabel.vue +1 -1
  84. package/components/buttons/FSButtonUndo.vue +1 -1
  85. package/components/buttons/FSButtonUndoLabel.vue +1 -1
  86. package/components/buttons/FSButtonUpdate.vue +1 -1
  87. package/components/buttons/FSButtonUpdateLabel.vue +1 -1
  88. package/components/buttons/FSButtonValidate.vue +1 -1
  89. package/components/buttons/FSButtonValidateLabel.vue +1 -1
  90. package/components/calendar/FSSimpleCalendar.vue +145 -0
  91. package/components/calendar/FSSimpleCalendarHeader.vue +60 -0
  92. package/components/calendar/FSSimpleMonthSelector.vue +138 -0
  93. package/components/deviceOrganisations/FSConnectivity.vue +11 -1
  94. package/components/deviceOrganisations/FSConnectivityCard.vue +19 -47
  95. package/components/deviceOrganisations/FSStatus.vue +11 -1
  96. package/components/deviceOrganisations/FSStatusCard.vue +35 -61
  97. package/components/deviceOrganisations/FSStatusesCarousel.vue +1 -0
  98. package/components/deviceOrganisations/FSStatusesRow.vue +9 -3
  99. package/components/deviceOrganisations/FSWorstAlert.vue +30 -37
  100. package/components/deviceOrganisations/FSWorstAlertCard.vue +36 -85
  101. package/components/fields/FSAutocompleteField.vue +516 -341
  102. package/components/fields/FSAutocompleteTag.vue +100 -0
  103. package/components/fields/FSBaseField.vue +44 -27
  104. package/components/fields/FSColorField.vue +42 -39
  105. package/components/fields/FSCommentField.vue +105 -0
  106. package/components/fields/FSDateField.vue +2 -2
  107. package/components/fields/FSDateRangeField.vue +3 -2
  108. package/components/fields/FSDateTimeField.vue +4 -3
  109. package/components/fields/FSDateTimeRangeField.vue +8 -6
  110. package/components/fields/FSEntityFieldUI.vue +271 -0
  111. package/components/fields/FSGradientField.vue +27 -33
  112. package/components/fields/FSIconField.vue +0 -1
  113. package/components/fields/FSMagicConfigField.vue +34 -19
  114. package/components/fields/FSMagicField.vue +9 -4
  115. package/components/fields/FSNumberField.vue +13 -6
  116. package/components/fields/FSRichTextField.vue +102 -52
  117. package/components/fields/FSSearchField.vue +9 -115
  118. package/components/fields/FSSelectField.vue +489 -252
  119. package/components/fields/FSTagField.vue +1 -1
  120. package/components/fields/FSTermField.vue +33 -11
  121. package/components/fields/FSTextArea.vue +26 -7
  122. package/components/fields/FSTextField.vue +19 -10
  123. package/components/fields/FSTimeRangeField.vue +304 -0
  124. package/components/fields/FSTimeStepField.vue +3 -3
  125. package/components/fields/FSTranslateField.vue +4 -3
  126. package/components/fields/FSTranslateRichTextField.vue +15 -10
  127. package/components/fields/FSTranslateTextArea.vue +233 -0
  128. package/components/fields/FSTreeViewField.vue +3 -3
  129. package/components/fields/periodicField/FSPeriodicDailyField.vue +120 -0
  130. package/components/fields/periodicField/FSPeriodicField.vue +131 -0
  131. package/components/fields/periodicField/FSPeriodicMonthlyField.vue +222 -0
  132. package/components/fields/periodicField/FSPeriodicWeeklyField.vue +120 -0
  133. package/components/fields/periodicField/FSPeriodicYearlyField.vue +144 -0
  134. package/components/lists/FSDataTableUI.vue +148 -89
  135. package/components/lists/FSDraggable.vue +2 -2
  136. package/components/lists/FSFilterButton.vue +23 -28
  137. package/components/lists/FSHeaderButton.vue +4 -4
  138. package/components/lists/FSHiddenButton.vue +11 -15
  139. package/components/lists/FSLoadDataTable.vue +10 -7
  140. package/components/lists/FSSimpleList.vue +234 -0
  141. package/components/lists/FSSimpleListItem.vue +132 -0
  142. package/components/map/FSMap.vue +280 -399
  143. package/components/map/FSMapFeatureGroup.vue +51 -0
  144. package/components/map/FSMapLayerButton.vue +5 -5
  145. package/components/map/FSMapMarker.vue +120 -0
  146. package/components/map/FSMapMarkerClusterGroup.vue +72 -0
  147. package/components/map/FSMapOverlay.vue +70 -82
  148. package/components/map/FSMapPolygon.vue +81 -0
  149. package/components/map/FSMapTileLayer.vue +50 -0
  150. package/components/map/keys.ts +4 -0
  151. package/components/selects/FSSelectAutoRefresh.vue +9 -9
  152. package/components/selects/FSSelectDashboardVariableType.vue +5 -4
  153. package/components/selects/FSSelectDateSetting.vue +3 -2
  154. package/components/selects/FSSelectDays.vue +9 -9
  155. package/components/selects/FSSelectListMode.vue +51 -0
  156. package/components/selects/FSSelectMonths.vue +67 -0
  157. package/components/selects/chartSelectors/FSAggregationSelector.vue +52 -0
  158. package/components/selects/chartSelectors/FSAxisTypeSelector.vue +49 -0
  159. package/components/selects/chartSelectors/FSDisplayAsSelector.vue +53 -0
  160. package/components/selects/chartSelectors/FSFilterTypeSelector.vue +54 -0
  161. package/components/selects/chartSelectors/FSHeatmapRuleSelector.vue +54 -0
  162. package/components/selects/chartSelectors/FSOperationOnSelector.vue +53 -0
  163. package/components/selects/chartSelectors/FSPlanningTypeSelector.vue +53 -0
  164. package/components/selects/chartSelectors/FSPlotPerSelector.vue +52 -0
  165. package/components/selects/chartSelectors/FSSelectEntityType.vue +59 -0
  166. package/components/selects/chartSelectors/FSSerieTypeSelector.vue +53 -0
  167. package/components/tiles/FSAlertTileUI.vue +90 -0
  168. package/components/tiles/FSChartTile.vue +73 -0
  169. package/components/tiles/FSChartTileUI.vue +111 -0
  170. package/components/tiles/FSCommentTileUI.vue +174 -0
  171. package/components/tiles/FSDeviceOrganisationTileUI.vue +6 -0
  172. package/components/tiles/FSGroupTileUI.vue +2 -2
  173. package/components/tiles/FSLoadTile.vue +2 -0
  174. package/components/tiles/FSLocationTileUI.vue +192 -0
  175. package/components/tiles/FSModelTileUI.vue +18 -0
  176. package/components/tiles/FSSimpleTileUI.vue +9 -4
  177. package/components/tiles/FSTile.vue +93 -74
  178. package/components/tiles/FSUserOrganisationTileUI.vue +1 -1
  179. package/components/toggleSets/FSToggleSetPosition.vue +2 -2
  180. package/components/views/FSBaseView.vue +64 -0
  181. package/components/views/FSEntityView.vue +12 -140
  182. package/components/views/FSSimpleView.vue +29 -0
  183. package/components/views/desktop/FSBaseDefaultDesktopView.vue +134 -0
  184. package/components/views/desktop/FSBaseDesktopView.vue +53 -0
  185. package/components/views/desktop/FSBaseEntityDesktopView.vue +208 -0
  186. package/components/views/mobile/FSBaseDefaultMobileView.vue +132 -0
  187. package/components/views/mobile/FSBaseEntityMobileView.vue +198 -0
  188. package/components/views/mobile/FSBaseMobileView.vue +53 -0
  189. package/composables/useAddress.ts +2 -2
  190. package/composables/useBreakpoints.ts +39 -3
  191. package/composables/useColors.ts +3 -2
  192. package/composables/useMagicFieldProvider.ts +1 -0
  193. package/models/agenda.ts +9 -0
  194. package/models/deviceAlerts.ts +1 -1
  195. package/models/deviceConnectivities.ts +1 -1
  196. package/models/index.ts +1 -0
  197. package/models/magicFields.ts +1 -0
  198. package/models/map.ts +2 -2
  199. package/models/rules.ts +5 -5
  200. package/models/tables.ts +5 -2
  201. package/models/variableNode.ts +8 -5
  202. package/package.json +5 -5
  203. package/styles/components/fs_agenda.scss +36 -0
  204. package/styles/components/fs_agenda_event.scss +41 -0
  205. package/styles/components/fs_agenda_hours_col.scss +4 -0
  206. package/styles/components/fs_agenda_hours_row.scss +5 -0
  207. package/styles/components/fs_agenda_time_line_marker.scss +19 -0
  208. package/styles/components/fs_autocomplete_field.scss +0 -13
  209. package/styles/components/fs_breadcrumbs.scss +6 -12
  210. package/styles/components/fs_card.scss +0 -1
  211. package/styles/components/fs_clickable.scss +7 -14
  212. package/styles/components/fs_clock.scss +0 -10
  213. package/styles/components/fs_color_field.scss +1 -4
  214. package/styles/components/fs_data_table.scss +6 -9
  215. package/styles/components/fs_dialog.scss +7 -17
  216. package/styles/components/fs_edit_image.scss +8 -0
  217. package/styles/components/fs_fade_out.scss +11 -2
  218. package/styles/components/fs_filter_button.scss +1 -6
  219. package/styles/components/fs_gradient_field.scss +11 -11
  220. package/styles/components/fs_hidden_button.scss +2 -7
  221. package/styles/components/fs_image_card.scss +1 -1
  222. package/styles/components/fs_magic_config_field.scss +1 -2
  223. package/styles/components/fs_map.scss +36 -30
  224. package/styles/components/fs_meta_field.scss +3 -5
  225. package/styles/components/fs_option_group.scss +15 -5
  226. package/styles/components/fs_rich_text_field.scss +1 -9
  227. package/styles/components/fs_select_date_settings.scss +3 -0
  228. package/styles/components/fs_select_field.scss +0 -13
  229. package/styles/components/fs_slide_group.scss +7 -0
  230. package/styles/components/fs_span.scss +2 -1
  231. package/styles/components/fs_switch.scss +1 -0
  232. package/styles/components/fs_tabs.scss +10 -24
  233. package/styles/components/fs_tag.scss +3 -19
  234. package/styles/components/fs_text_area.scss +13 -17
  235. package/styles/components/fs_tile.scss +21 -15
  236. package/styles/components/fs_window.scss +7 -0
  237. package/styles/components/fs_wrap_group.scss +7 -0
  238. package/styles/components/index.scss +5 -5
  239. package/styles/globals/index.scss +1 -5
  240. package/styles/globals/overrides.scss +17 -57
  241. package/styles/globals/text_fonts.scss +18 -66
  242. package/tools/alertsTools.ts +69 -0
  243. package/tools/chartsTools.ts +427 -0
  244. package/tools/index.ts +3 -0
  245. package/tools/timeRangeTools.ts +125 -0
  246. package/utils/filter.ts +18 -0
  247. package/utils/index.ts +1 -0
  248. package/utils/leafletMarkers.ts +9 -3
  249. package/utils/sort.ts +2 -2
  250. package/utils/statuses.ts +1 -1
  251. package/utils/time.ts +17 -17
  252. package/components/autocompletes/FSAutocompleteTag.vue +0 -138
  253. package/components/fields/FSTimeSlotField.vue +0 -250
  254. package/components/map/FSMapEditPointAddressOverlay.vue +0 -164
  255. package/components/views/FSEntityHeader.vue +0 -350
  256. package/components/views/FSListHeader.vue +0 -83
  257. package/components/views/FSListView.vue +0 -83
  258. package/components/views/FSSkeletonView.vue +0 -100
  259. package/styles/components/fs_icon_field.scss +0 -12
  260. package/styles/components/fs_map_overlay.scss +0 -38
  261. package/styles/components/fs_tag_field.scss +0 -8
  262. package/styles/components/fs_time_field.scss +0 -12
  263. package/styles/components/fs_timeslot_field.scss +0 -12
  264. package/styles/globals/breakpoints.scss +0 -20
  265. package/styles/globals/fixes.scss +0 -5
@@ -1,60 +1,68 @@
1
1
  <template>
2
- <FSWindow
3
- width="100%"
4
- :modelValue="currentStep - 1"
2
+ <FSCol
3
+ gap="24px"
5
4
  >
6
- <FSForm
7
- v-for="(step, index) in $props.steps"
8
- :variant="$props.variant"
9
- :key="index"
10
- @submit="onSubmit"
11
- v-model="valid"
5
+ <FSPagination
6
+ width="calc(100% - 16px)"
7
+ :pages="$props.steps"
8
+ :modelValue="currentStep - 1"
9
+ />
10
+ <FSWindow
11
+ width="100%"
12
+ :modelValue="currentStep - 1"
12
13
  >
13
- <FSCol
14
- gap="24px"
14
+ <FSForm
15
+ v-for="(step, index) in $props.steps"
16
+ :variant="$props.variant"
17
+ :key="index"
18
+ @submit="onSubmit"
19
+ v-model="valid"
15
20
  >
16
- <FSFadeOut
17
- :height="height"
18
- padding="0 8px 0 0"
21
+ <FSCol
22
+ gap="24px"
19
23
  >
20
- <slot
21
- :name="`step-${step}`"
22
- />
23
- </FSFadeOut>
24
- <FSRow
25
- padding="0 16px 0 0"
26
- >
27
- <slot
28
- name="left-footer"
29
- />
30
- <FSRow
31
- class="fs-dialog-actions"
32
- align="top-right"
33
- :wrap="false"
24
+ <FSFadeOut
25
+ :maxHeight="maxHeight"
34
26
  >
35
- <FSButton
36
- :prependIcon="$props.cancelButtonPrependIcon"
37
- :appendIcon="$props.cancelButtonAppendIcon"
38
- :variant="$props.cancelButtonVariant"
39
- :color="$props.cancelButtonColor"
40
- :label="previousButtonLabel"
41
- @click="onPrevious()"
27
+ <slot
28
+ :name="`step-${step}`"
42
29
  />
43
- <FSButton
44
- type="submit"
45
- :prependIcon="$props.submitButtonPrependIcon"
46
- :appendIcon="$props.submitButtonAppendIcon"
47
- :color="$props.submitButtonColor"
48
- :variant="nextButtonVariant"
49
- :editable="$props.editable"
50
- :label="nextButtonLabel"
51
- :load="$props.load"
30
+ </FSFadeOut>
31
+ <FSRow>
32
+ <slot
33
+ name="left-footer"
52
34
  />
35
+ <FSRow
36
+ class="fs-dialog-actions"
37
+ align="top-right"
38
+ :wrap="false"
39
+ >
40
+ <FSButton
41
+ v-if="$props.showCancelButton || currentStep > 1"
42
+ :prependIcon="$props.cancelButtonPrependIcon"
43
+ :appendIcon="$props.cancelButtonAppendIcon"
44
+ :variant="$props.cancelButtonVariant"
45
+ :color="$props.cancelButtonColor"
46
+ :label="previousButtonLabel"
47
+ @click="onPrevious()"
48
+ />
49
+ <FSButton
50
+ v-if="$props.showSubmitButton || currentStep < $props.steps"
51
+ type="submit"
52
+ :prependIcon="$props.submitButtonPrependIcon"
53
+ :appendIcon="$props.submitButtonAppendIcon"
54
+ :color="$props.submitButtonColor"
55
+ :variant="nextButtonVariant"
56
+ :editable="$props.editable"
57
+ :label="nextButtonLabel"
58
+ :load="$props.load"
59
+ />
60
+ </FSRow>
53
61
  </FSRow>
54
- </FSRow>
55
- </FSCol>
56
- </FSForm>
57
- </FSWindow>
62
+ </FSCol>
63
+ </FSForm>
64
+ </FSWindow>
65
+ </FSCol>
58
66
  </template>
59
67
 
60
68
  <script lang="ts">
@@ -64,17 +72,21 @@ import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui
64
72
  import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
65
73
  import { useBreakpoints } from "@dative-gpi/foundation-shared-components/composables";
66
74
 
75
+ import FSPagination from "./FSPagination.vue";
67
76
  import FSFadeOut from "./FSFadeOut.vue";
68
77
  import FSButton from "./FSButton.vue";
69
78
  import FSForm from "./FSForm.vue";
79
+ import FSCol from "./FSCol.vue";
70
80
  import FSRow from "./FSRow.vue";
71
81
 
72
82
  export default defineComponent({
73
83
  name: "FSDialogMultiFormBody",
74
84
  components: {
85
+ FSPagination,
75
86
  FSFadeOut,
76
87
  FSButton,
77
88
  FSForm,
89
+ FSCol,
78
90
  FSRow
79
91
  },
80
92
  props: {
@@ -97,6 +109,11 @@ export default defineComponent({
97
109
  type: Number,
98
110
  required: true
99
111
  },
112
+ showCancelButton: {
113
+ type: Boolean,
114
+ required: false,
115
+ default: true
116
+ },
100
117
  cancelButtonPrependIcon: {
101
118
  type: String as PropType<string | null>,
102
119
  required: false,
@@ -122,6 +139,11 @@ export default defineComponent({
122
139
  required: false,
123
140
  default: ColorEnum.Light
124
141
  },
142
+ showSubmitButton: {
143
+ type: Boolean,
144
+ required: false,
145
+ default: true
146
+ },
125
147
  submitButtonPrependIcon: {
126
148
  type: String as PropType<string | null>,
127
149
  required: false,
@@ -167,24 +189,25 @@ export default defineComponent({
167
189
  const valid = ref(false);
168
190
  const valids = ref(Array.from({ length: props.steps }, () => false));
169
191
 
170
- const height = computed(() => {
192
+ const maxHeight = computed(() => {
171
193
  const other = 24 + 24 // Paddings
172
194
  + (isMobileSized.value ? 24 : 32) + 24 // Title
173
- + (props.subtitle ? (isMobileSized.value ? 14 : 16) + 8 : 0) // Subtitle
195
+ + (props.subtitle ? (isMobileSized.value ? 16 : 20) + 8 : 0) // Subtitle
196
+ + (props.steps > 1 ? 24 + 4 : 0) // Pagination
174
197
  + (isMobileSized.value ? 36 : 40) + 24; // Footer
175
- return `calc(100vh - 40px - ${other}px)`;
198
+ return `calc(100vh - 42px - ${other}px)`;
176
199
  });
177
200
 
178
201
  const previousButtonLabel = computed(() => {
179
202
  return currentStep.value == 1
180
- ? props.cancelButtonLabel ?? $tr("ui.button.cancel", "Cancel")
181
- : $tr("ui.button.back", "Back");
203
+ ? props.cancelButtonLabel ?? $tr("ui.common.cancel", "Cancel")
204
+ : $tr("ui.common.back", "Back");
182
205
  });
183
206
 
184
207
  const nextButtonLabel = computed(() => {
185
208
  return currentStep.value == props.steps
186
- ? props.submitButtonLabel ?? $tr("ui.button.validate", "Validate")
187
- : $tr("ui.button.next", "Next");
209
+ ? props.submitButtonLabel ?? $tr("ui.common.validate", "Validate")
210
+ : $tr("ui.common.next", "Next");
188
211
  });
189
212
 
190
213
  const nextButtonVariant = computed(() => {
@@ -220,7 +243,7 @@ export default defineComponent({
220
243
  nextButtonLabel,
221
244
  currentStep,
222
245
  ColorEnum,
223
- height,
246
+ maxHeight,
224
247
  valids,
225
248
  valid,
226
249
  onPrevious,
@@ -1,7 +1,8 @@
1
1
  <template>
2
2
  <FSDialogSubmit
3
+ width="460px"
3
4
  :title="title"
4
- :submitButtonLabel="$tr('ui.button.remove', 'Remove')"
5
+ :submitButtonLabel="$tr('ui.common.remove', 'Remove')"
5
6
  :submitButtonColor="ColorEnum.Error"
6
7
  :modelValue="$props.modelValue"
7
8
  @update:modelValue="$emit('update:modelValue', $event)"
@@ -23,17 +24,17 @@
23
24
  gap="2px"
24
25
  >
25
26
  <FSSpan>
26
- {{ $tr("ui.remove-dialog.body-regular", "This action is") }}
27
+ {{ $tr("dialog-remove.body-regular", "This action is") }}
27
28
  </FSSpan>
28
29
  <FSSpan
29
30
  font="text-button"
30
31
  >
31
- {{ $tr("ui.remove-dialog.body-bold", "definitive") }}
32
+ {{ $tr("dialog-remove.body-bold", "definitive") }}
32
33
  </FSSpan>
33
34
  </FSRow>
34
35
  </FSRow>
35
36
  <FSSpan>
36
- {{ $tr("ui.remove-dialog.final-warning", "Once removed, entities won't be retrievable") }}
37
+ {{ $tr("dialog-remove.final-warning", "Once removed, entities won't be retrievable") }}
37
38
  </FSSpan>
38
39
  </FSCol>
39
40
  </template>
@@ -42,7 +43,6 @@
42
43
  v-if="$props.removing"
43
44
  >
44
45
  <FSRow
45
- padding="0 16px 0 0"
46
46
  align="center-right"
47
47
  :height="footerHeight"
48
48
  >
@@ -108,10 +108,10 @@ export default defineComponent({
108
108
 
109
109
  const title = computed((): string => {
110
110
  if (props.removeTotal > 1) {
111
- return $tr("ui.dialog-remove.remove-plural", "Remove {0} entities", props.removeTotal.toString());
111
+ return $tr("dialog-remove.remove-plural", "Remove {0} entities", props.removeTotal.toString());
112
112
  }
113
113
  else {
114
- return $tr("ui.dialog-remove.remove-singular", "Remove an entity");
114
+ return $tr("dialog-remove.remove-singular", "Remove an entity");
115
115
  }
116
116
  });
117
117
 
@@ -11,8 +11,7 @@
11
11
  #body
12
12
  >
13
13
  <FSFadeOut
14
- :height="height"
15
- padding="0 8px 0 0"
14
+ :maxHeight="maxHeight"
16
15
  >
17
16
  <slot
18
17
  name="body"
@@ -25,9 +24,7 @@
25
24
  <slot
26
25
  name="footer"
27
26
  >
28
- <FSRow
29
- padding="0 16px 0 0"
30
- >
27
+ <FSRow>
31
28
  <slot
32
29
  name="left-footer"
33
30
  />
@@ -36,6 +33,7 @@
36
33
  :wrap="false"
37
34
  >
38
35
  <FSButton
36
+ v-if="$props.showCancelButton"
39
37
  :prependIcon="$props.cancelButtonPrependIcon"
40
38
  :appendIcon="$props.cancelButtonAppendIcon"
41
39
  :variant="$props.cancelButtonVariant"
@@ -44,6 +42,7 @@
44
42
  @click="$emit('update:modelValue', false)"
45
43
  />
46
44
  <FSButton
45
+ v-if="$props.showSubmitButton"
47
46
  :prependIcon="$props.submitButtonPrependIcon"
48
47
  :appendIcon="$props.submitButtonAppendIcon"
49
48
  :variant="$props.submitButtonVariant"
@@ -101,6 +100,11 @@ export default defineComponent({
101
100
  required: false,
102
101
  default: false
103
102
  },
103
+ showCancelButton: {
104
+ type: Boolean,
105
+ required: false,
106
+ default: true
107
+ },
104
108
  cancelButtonPrependIcon: {
105
109
  type: String as PropType<string | null>,
106
110
  required: false,
@@ -126,6 +130,11 @@ export default defineComponent({
126
130
  required: false,
127
131
  default: ColorEnum.Light
128
132
  },
133
+ showSubmitButton: {
134
+ type: Boolean,
135
+ required: false,
136
+ default: true
137
+ },
129
138
  submitButtonPrependIcon: {
130
139
  type: String as PropType<string | null>,
131
140
  required: false,
@@ -167,27 +176,27 @@ export default defineComponent({
167
176
  const { isMobileSized } = useBreakpoints();
168
177
  const { $tr } = useTranslationsProvider();
169
178
 
170
- const height = computed(() => {
179
+ const maxHeight = computed(() => {
171
180
  const other = 24 + 24 // Paddings
172
181
  + (isMobileSized.value ? 24 : 32) + 24 // Title
173
- + (props.subtitle ? (isMobileSized.value ? 14 : 16) + 8 : 0) // Subtitle
182
+ + (props.subtitle ? (isMobileSized.value ? 16 : 20) + 8 : 0) // Subtitle
174
183
  + (isMobileSized.value ? 36 : 40) + 24; // Footer
175
- return `calc(100vh - 40px - ${other}px)`;
184
+ return `calc(100vh - 42px - ${other}px)`;
176
185
  });
177
186
 
178
187
  const cancelLabel = computed(() => {
179
- return props.cancelButtonLabel ?? $tr("ui.button.cancel", "Cancel");
188
+ return props.cancelButtonLabel ?? $tr("ui.common.cancel", "Cancel");
180
189
  });
181
190
 
182
191
  const submitLabel = computed(() => {
183
- return props.submitButtonLabel ?? $tr("ui.button.validate", "Validate");
192
+ return props.submitButtonLabel ?? $tr("ui.common.validate", "Validate");
184
193
  });
185
194
 
186
195
  return {
187
196
  cancelLabel,
188
197
  submitLabel,
189
198
  ColorEnum,
190
- height
199
+ maxHeight
191
200
  };
192
201
  }
193
202
  });
@@ -39,7 +39,7 @@ export default defineComponent({
39
39
 
40
40
  const onError = (): void => {
41
41
  if (props.imageId) {
42
- console.log("onError");
42
+ console.error("Error loading image", props.imageId);
43
43
  getImage(props.imageId);
44
44
  }
45
45
  };
@@ -39,6 +39,7 @@
39
39
  :wrap="false"
40
40
  >
41
41
  <FSRow
42
+ class="fs-edit-image-standard-row"
42
43
  gap="24px"
43
44
  :wrap="false"
44
45
  >
@@ -59,6 +60,7 @@
59
60
  :width="$props.width"
60
61
  />
61
62
  <FSCol
63
+ class="fs-edit-image-standard-label-wrapper"
62
64
  align="center-left"
63
65
  height="fill"
64
66
  width="hug"
@@ -79,24 +81,24 @@
79
81
  font="text-overline"
80
82
  :style="style"
81
83
  >
82
- {{ $tr('ui.edit-image.format', 'PNG or JPG format') }}
84
+ {{ $tr('edit-image.format', 'PNG or JPG format') }}
83
85
  </FSText>
84
86
  <FSText
85
87
  class="fs-edit-image-overline"
86
88
  font="text-overline"
87
89
  :style="style"
88
90
  >
89
- {{ $tr('ui.edit-image.size', '10 MB Maximum') }}
91
+ {{ $tr('edit-image.max-size', '10 MB Maximum') }}
90
92
  </FSText>
91
93
  </FSCol>
92
94
  </FSCol>
93
95
  </FSRow>
94
- <v-spacer />
95
96
  <FSRow
96
- width="hug"
97
+ align="center-right"
98
+ :width="isExtraSmall ? '40px' : 'hug'"
97
99
  >
98
100
  <FSButtonFileMini
99
- accept="image/*"
101
+ accept=".jpg,.jpeg,.png"
100
102
  :readFile="false"
101
103
  @update:metadata="onUpload"
102
104
  />
@@ -124,7 +126,7 @@
124
126
  padding="4px"
125
127
  >
126
128
  <FSButtonFileMini
127
- accept="image/*"
129
+ accept=".jpg,.jpeg,.png"
128
130
  :readFile="false"
129
131
  @update:metadata="onUpload"
130
132
  />
@@ -152,12 +154,12 @@
152
154
  font="text-body"
153
155
  :lineClamp="2"
154
156
  >
155
- {{ $tr('ui.edit-image.add-image', 'Add an image.') }}
157
+ {{ $tr('edit-image.add-image', 'Add an image.') }}
156
158
  </FSText>
157
159
  <FSButtonFileMini
158
160
  class="fs-edit-image-hidden-button"
159
161
  ref="invisibleButtonRef"
160
- accept="image/*"
162
+ accept=".jpg,.jpeg,.png"
161
163
  :readFile="false"
162
164
  @update:metadata="onUpload"
163
165
  />
@@ -241,7 +243,7 @@ export default defineComponent({
241
243
  default: false
242
244
  }
243
245
  },
244
- emits: ["update:modelValue", "update:source"],
246
+ emits: ["update", "update:modelValue", "update:source"],
245
247
  setup(props, { emit }) {
246
248
  const { isExtraSmall } = useBreakpoints();
247
249
  const { getColors } = useColors();
@@ -264,9 +266,15 @@ export default defineComponent({
264
266
  const content = (await readFile(payload)) as string;
265
267
  fileSelected.value.fileName = payload.name;
266
268
  fileSelected.value.fileContent = content;
267
- emit("update:modelValue", content.substring(content.indexOf(',') + 1));
269
+ const newModelValue = content.substring(content.indexOf(',') + 1);
268
270
  if (props.source) {
271
+ emit("update:modelValue", newModelValue);
269
272
  emit("update:source", null);
273
+ emit("update", { source: null, modelValue: newModelValue });
274
+ }
275
+ else {
276
+ emit("update:modelValue", newModelValue);
277
+ emit("update", { source: props.source, modelValue: newModelValue });
270
278
  }
271
279
  };
272
280
 
@@ -275,9 +283,11 @@ export default defineComponent({
275
283
  fileSelected.value.fileContent = null;
276
284
  if (props.modelValue) {
277
285
  emit("update:modelValue", null);
286
+ emit("update", { source: props.source, modelValue: null });
278
287
  }
279
288
  else {
280
289
  emit("update:source", null);
290
+ emit("update", { source: null, modelValue: props.modelValue });
281
291
  }
282
292
  };
283
293
 
@@ -4,7 +4,7 @@
4
4
  ref="fadeOutRef"
5
5
  :id="elementId"
6
6
  :style="style"
7
- @scroll="debounceMasks"
7
+ @scroll="$emit('scroll', $event); debounceMasks()"
8
8
  >
9
9
  <slot />
10
10
  </div>
@@ -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>,
@@ -39,11 +45,31 @@ export default defineComponent({
39
45
  type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
40
46
  required: false,
41
47
  default: "64px"
48
+ },
49
+ scrollOutside: {
50
+ type: Boolean,
51
+ required: false,
52
+ default: true
53
+ },
54
+ hideHorizontalOverflow: {
55
+ type: Boolean,
56
+ required: false,
57
+ default: true
58
+ },
59
+ disableTopMask: {
60
+ type: Boolean,
61
+ required: false,
62
+ default: false
63
+ },
64
+ disableBottomMask: {
65
+ type: Boolean,
66
+ required: false,
67
+ default: false
42
68
  }
43
69
  },
44
70
  emits: ["scroll"],
45
- setup(props, { emit }) {
46
- const { windowHeight, windowWidth } = useBreakpoints();
71
+ setup(props) {
72
+ const { windowHeight, windowWidth, isTouchScreenEnabled } = useBreakpoints();
47
73
  const { debounce } = useDebounce();
48
74
  const { getColors } = useColors();
49
75
 
@@ -58,13 +84,20 @@ export default defineComponent({
58
84
 
59
85
  const elementId = `id${uuidv4()}`;
60
86
 
87
+ const showOutsideScrollbar = computed(() => props.scrollOutside && !isTouchScreenEnabled);
88
+
61
89
  const style = computed((): StyleValue => ({
62
- "--fs-fade-out-height" : sizeToVar(props.height),
90
+ "--fs-fade-out-height" : props.height ? sizeToVar(props.height) : "initial",
91
+ "--fs-fade-out-max-height" : props.maxHeight ? sizeToVar(props.maxHeight) : "initial",
63
92
  "--fs-fade-out-width" : sizeToVar(props.width),
64
93
  "--fs-fade-out-padding" : sizeToVar(props.padding),
94
+ "--fs-fade-out-width-offset" : showOutsideScrollbar.value ? '12px' : '0px',
95
+ "--fs-fade-out-padding-offset" : showOutsideScrollbar.value ? '4px' : '0px',
96
+ "--fs-fade-out-margin-right" : showOutsideScrollbar.value ? '-12px' : '0px',
65
97
  "--fs-fade-out-mask-color" : backgrounds.base,
66
- "--fs-fade-out-top-mask-height" : topMaskHeight.value,
67
- "--fs-fade-out-bottom-mask-height": bottomMaskHeight.value
98
+ "--fs-fade-out-top-mask-height" : props.disableTopMask ? '0px' : topMaskHeight.value,
99
+ "--fs-fade-out-bottom-mask-height": props.disableBottomMask ? '0px' : bottomMaskHeight.value,
100
+ "--fs-fade-out-x-overflow" : props.hideHorizontalOverflow ? 'hidden' : 'auto'
68
101
  }));
69
102
 
70
103
  const handleMasks = () => {
@@ -86,20 +119,13 @@ export default defineComponent({
86
119
  else {
87
120
  topMaskHeight.value = sizeToVar(props.maskHeight);
88
121
  }
89
-
90
- const event = {
91
- target: fadeOutRef.value,
92
- onTop: topMaskHeight.value === "0px",
93
- onBottom: bottomMaskHeight.value === "0px",
94
- goingUp: (fadeOutRef.value as any).scrollTop < lastScroll.value,
95
- };
96
-
97
- emit("scroll", event);
122
+
98
123
  lastScroll.value = (fadeOutRef.value as any).scrollTop;
99
124
  }
100
125
  };
101
126
 
102
- const debounceMasks = (): void => debounce(handleMasks, 50);
127
+ // Delay to wait for animations to end before computing masks
128
+ const debounceMasks = (): void => debounce(handleMasks, 280);
103
129
 
104
130
  onMounted((): void => {
105
131
  debounceMasks();
@@ -12,6 +12,9 @@
12
12
 
13
13
  <script lang="ts">
14
14
  import type { PropType} from "vue";
15
+
16
+ import type VForm from "vuetify/lib/components/VForm";
17
+
15
18
  import { computed, defineComponent, provide, ref } from "vue";
16
19
 
17
20
  export default defineComponent({
@@ -30,7 +33,7 @@ export default defineComponent({
30
33
  },
31
34
  emits: ["update:modelValue", "submit"],
32
35
  setup(props, { emit }) {
33
- const formRef = ref<HTMLFormElement | null>(null);
36
+ const formRef = ref<typeof VForm | null>(null);
34
37
  const submitted = ref(false);
35
38
 
36
39
  const validateOn = computed((): "submit" | "input" => {
@@ -44,25 +47,24 @@ export default defineComponent({
44
47
  event.stopImmediatePropagation();
45
48
  event.preventDefault();
46
49
  submitted.value = true;
47
- await (formRef.value as any).validate();
48
- emit("update:modelValue", !!((formRef.value as any).isValid ?? true));
49
- emit("submit", !!((formRef.value as any).isValid ?? true));
50
+ await formRef.value.validate();
51
+ emit("update:modelValue", !!(formRef.value.isValid ?? true));
52
+ emit("submit", !!(formRef.value.isValid ?? true));
50
53
  };
51
54
 
52
55
  const validate = async () => {
53
56
  submitted.value = true;
54
- await (formRef.value as any).validate();
55
- emit("update:modelValue", !!((formRef.value as any).isValid ?? true));
57
+ return await formRef.value.validate();
56
58
  };
57
59
 
58
60
  const reset = () => {
59
61
  submitted.value = false;
60
- (formRef.value as any).reset();
62
+ formRef.value.reset();
61
63
  };
62
64
 
63
65
  const resetValidation = () => {
64
66
  submitted.value = false;
65
- (formRef.value as any).resetValidation();
67
+ formRef.value.resetValidation();
66
68
  };
67
69
 
68
70
  provide("validateOn", validateOn);
@@ -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>
@@ -51,7 +52,6 @@
51
52
  </template>
52
53
  </template>
53
54
  </FSCol>
54
- <v-spacer />
55
55
  <FSRow
56
56
  v-if="itemEndSlot(item.code)"
57
57
  align="center-right"
@@ -14,7 +14,8 @@ import { computed, defineComponent, type PropType, type StyleValue } from "vue";
14
14
 
15
15
  import { useBreakpoints, useColors } from "@dative-gpi/foundation-shared-components/composables";
16
16
  import { type ColorBase } from "@dative-gpi/foundation-shared-components/models";
17
- import { sizeToVar } from "@dative-gpi/foundation-shared-components/utils";
17
+
18
+ import { sizeToVar } from "../utils";
18
19
 
19
20
  export default defineComponent({
20
21
  name: "FSIcon",