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

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 (297) hide show
  1. package/assets/images/map/snow.png +0 -0
  2. package/components/FSAccordionPanel.vue +40 -21
  3. package/components/FSBreadcrumbs.vue +21 -12
  4. package/components/FSButton.vue +11 -9
  5. package/components/FSCalendar.vue +50 -12
  6. package/components/FSCalendarTwin.vue +95 -43
  7. package/components/FSCard.vue +61 -9
  8. package/components/FSCardPlaceholder.vue +8 -5
  9. package/components/FSCheckbox.vue +5 -4
  10. package/components/FSChip.vue +73 -45
  11. package/components/FSChipGroup.vue +69 -0
  12. package/components/FSClickable.vue +11 -9
  13. package/components/FSClock.vue +30 -12
  14. package/components/FSCol.vue +11 -5
  15. package/components/FSDialog.vue +2 -1
  16. package/components/FSDialogContent.vue +12 -11
  17. package/components/FSDialogForm.vue +22 -2
  18. package/components/FSDialogFormBody.vue +50 -31
  19. package/components/FSDialogMenu.vue +17 -8
  20. package/components/FSDialogMultiFormBody.vue +23 -13
  21. package/components/FSDialogRemove.vue +7 -8
  22. package/components/FSDialogSubmit.vue +20 -11
  23. package/components/FSEditImageUI.vue +13 -5
  24. package/components/FSFadeOut.vue +53 -21
  25. package/components/FSForm.vue +10 -8
  26. package/components/FSGrid.vue +0 -1
  27. package/components/FSIcon.vue +2 -2
  28. package/components/FSIconCard.vue +68 -12
  29. package/components/FSInformationsMenu.vue +142 -0
  30. package/components/FSInstantPicker.vue +268 -0
  31. package/components/FSLink.vue +25 -9
  32. package/components/FSLoader.vue +28 -10
  33. package/components/FSMenu.vue +47 -0
  34. package/components/FSOptionGroup.vue +8 -8
  35. package/components/FSOptionItem.vue +4 -4
  36. package/components/FSOptionsMenu.vue +165 -0
  37. package/components/FSPagination.vue +1 -1
  38. package/components/FSPlayButtons.vue +72 -0
  39. package/components/FSProgressBar.vue +94 -0
  40. package/components/FSRadio.vue +5 -4
  41. package/components/FSRadioGroup.vue +3 -3
  42. package/components/FSRangePicker.vue +275 -0
  43. package/components/FSRangeSlider.vue +84 -0
  44. package/components/FSRouterLink.vue +42 -0
  45. package/components/FSSlideGroup.vue +19 -5
  46. package/components/FSSlider.vue +44 -79
  47. package/components/FSSpan.vue +12 -7
  48. package/components/FSSwitch.vue +44 -48
  49. package/components/FSTab.vue +15 -13
  50. package/components/FSTabs.vue +32 -7
  51. package/components/FSTag.vue +3 -3
  52. package/components/FSTagGroup.vue +6 -4
  53. package/components/FSText.vue +11 -7
  54. package/components/FSToggleSet.vue +7 -7
  55. package/components/FSTreeView.vue +107 -0
  56. package/components/FSWindow.vue +122 -5
  57. package/components/FSWrapGroup.vue +13 -1
  58. package/components/agenda/FSAgenda.vue +26 -7
  59. package/components/agenda/FSAgendaDialogCalendar.vue +2 -2
  60. package/components/agenda/FSAgendaHeader.vue +35 -10
  61. package/components/agenda/FSAgendaHorizontalEvent.vue +18 -6
  62. package/components/agenda/FSAgendaHoursRow.vue +48 -8
  63. package/components/agenda/FSAgendaVerticalEvent.vue +1 -1
  64. package/components/agenda/FSDayAgenda.vue +0 -1
  65. package/components/agenda/FSMonthAgenda.vue +1 -6
  66. package/components/agenda/FSSelectAgendaMode.vue +2 -2
  67. package/components/agenda/FSWeekAgenda.vue +5 -10
  68. package/components/autocompletes/FSAutoCompleteAddress.vue +25 -20
  69. package/components/autocompletes/FSAutocompleteLanguage.vue +7 -1
  70. package/components/autocompletes/FSAutocompleteTimeZone.vue +7 -1
  71. package/components/buttons/FSButtonAdd.vue +1 -1
  72. package/components/buttons/FSButtonAddLabel.vue +1 -1
  73. package/components/buttons/FSButtonCancel.vue +1 -1
  74. package/components/buttons/FSButtonCancelLabel.vue +1 -1
  75. package/components/buttons/FSButtonCheckbox.vue +4 -4
  76. package/components/buttons/FSButtonCopy.vue +1 -1
  77. package/components/buttons/FSButtonCopyLabel.vue +1 -1
  78. package/components/buttons/FSButtonDuplicate.vue +1 -1
  79. package/components/buttons/FSButtonDuplicateLabel.vue +1 -1
  80. package/components/buttons/FSButtonEdit.vue +1 -1
  81. package/components/buttons/FSButtonEditLabel.vue +1 -1
  82. package/components/buttons/FSButtonFile.vue +1 -1
  83. package/components/buttons/FSButtonFileLabel.vue +1 -1
  84. package/components/buttons/FSButtonNext.vue +1 -1
  85. package/components/buttons/FSButtonNextLabel.vue +1 -1
  86. package/components/buttons/FSButtonPrevious.vue +1 -1
  87. package/components/buttons/FSButtonPreviousLabel.vue +1 -1
  88. package/components/buttons/FSButtonRedo.vue +1 -1
  89. package/components/buttons/FSButtonRedoLabel.vue +1 -1
  90. package/components/buttons/FSButtonRemove.vue +1 -1
  91. package/components/buttons/FSButtonRemoveLabel.vue +1 -1
  92. package/components/buttons/FSButtonSave.vue +1 -1
  93. package/components/buttons/FSButtonSaveLabel.vue +1 -1
  94. package/components/buttons/FSButtonSearch.vue +1 -1
  95. package/components/buttons/FSButtonSearchLabel.vue +1 -1
  96. package/components/buttons/FSButtonUndo.vue +1 -1
  97. package/components/buttons/FSButtonUndoLabel.vue +1 -1
  98. package/components/buttons/FSButtonUpdate.vue +1 -1
  99. package/components/buttons/FSButtonUpdateLabel.vue +1 -1
  100. package/components/buttons/FSButtonValidate.vue +1 -1
  101. package/components/buttons/FSButtonValidateLabel.vue +1 -1
  102. package/components/calendar/FSSimpleCalendar.vue +145 -0
  103. package/components/calendar/FSSimpleCalendarHeader.vue +60 -0
  104. package/components/calendar/FSSimpleMonthSelector.vue +138 -0
  105. package/components/carousels/FSCarousel.vue +23 -0
  106. package/components/carousels/FSCarouselItem.vue +14 -0
  107. package/components/deviceOrganisations/FSConnectivity.vue +5 -3
  108. package/components/deviceOrganisations/FSStatus.vue +5 -3
  109. package/components/deviceOrganisations/FSStatusCard.vue +7 -9
  110. package/components/deviceOrganisations/FSStatusRichCard.vue +171 -0
  111. package/components/deviceOrganisations/FSWorstAlert.vue +24 -36
  112. package/components/deviceOrganisations/FSWorstAlertCard.vue +8 -47
  113. package/components/fields/FSAutocompleteField.vue +85 -82
  114. package/components/fields/FSAutocompleteTag.vue +1 -1
  115. package/components/fields/FSBaseField.vue +42 -25
  116. package/components/fields/FSClosableSearchField.vue +83 -0
  117. package/components/fields/FSColorField.vue +12 -10
  118. package/components/fields/FSCommentField.vue +28 -16
  119. package/components/fields/FSDateField.vue +13 -10
  120. package/components/fields/FSDateRangeField.vue +6 -5
  121. package/components/fields/FSDateTimeField.vue +14 -11
  122. package/components/fields/FSDateTimeRangeDialog.vue +160 -0
  123. package/components/fields/FSDateTimeRangeField.vue +23 -115
  124. package/components/fields/FSEntityFieldUI.vue +19 -16
  125. package/components/fields/FSGradientField.vue +5 -5
  126. package/components/fields/FSIconField.vue +16 -9
  127. package/components/fields/FSMagicConfigField.vue +15 -7
  128. package/components/fields/FSMagicField.vue +7 -2
  129. package/components/fields/FSMapAddressField.vue +187 -0
  130. package/components/fields/FSNumberField.vue +8 -4
  131. package/components/fields/FSPasswordField.vue +7 -7
  132. package/components/fields/FSRichTextField.vue +78 -58
  133. package/components/fields/FSSearchField.vue +9 -115
  134. package/components/fields/FSSelectField.vue +69 -71
  135. package/components/fields/FSTagField.vue +9 -9
  136. package/components/fields/FSTermField.vue +69 -46
  137. package/components/fields/FSTextArea.vue +17 -11
  138. package/components/fields/FSTextField.vue +15 -10
  139. package/components/fields/FSTimeField.vue +14 -10
  140. package/components/fields/FSTimeRangeField.vue +310 -0
  141. package/components/fields/FSTimeStepField.vue +5 -5
  142. package/components/fields/FSTranslateField.vue +10 -10
  143. package/components/fields/FSTranslateRichTextField.vue +41 -20
  144. package/components/fields/FSTranslateTextArea.vue +10 -10
  145. package/components/fields/FSTreeViewField.vue +21 -19
  146. package/components/fields/periodicField/FSPeriodicDailyField.vue +7 -7
  147. package/components/fields/periodicField/FSPeriodicField.vue +15 -15
  148. package/components/fields/periodicField/FSPeriodicMonthlyField.vue +16 -16
  149. package/components/fields/periodicField/FSPeriodicWeeklyField.vue +28 -18
  150. package/components/fields/periodicField/FSPeriodicYearlyField.vue +12 -12
  151. package/components/lists/FSDataIteratorItem.vue +23 -67
  152. package/components/lists/FSDataTableUI.vue +198 -123
  153. package/components/lists/FSDraggable.vue +2 -2
  154. package/components/lists/FSFilterButton.vue +14 -16
  155. package/components/lists/FSHeaderButton.vue +11 -9
  156. package/components/lists/FSHiddenButton.vue +9 -9
  157. package/components/lists/FSLoadDataTable.vue +10 -7
  158. package/components/lists/FSSimpleList.vue +95 -88
  159. package/components/lists/FSSimpleListItem.vue +131 -0
  160. package/components/map/FSMap.vue +144 -158
  161. package/components/map/FSMapFeatureGroup.vue +7 -1
  162. package/components/map/FSMapLayerButton.vue +4 -3
  163. package/components/map/FSMapMarker.vue +103 -42
  164. package/components/map/FSMapMarkerClusterGroup.vue +32 -7
  165. package/components/map/FSMapOverlay.vue +44 -24
  166. package/components/map/FSMapPolygon.vue +16 -4
  167. package/components/map/FSMapTileLayer.vue +26 -9
  168. package/components/map/layers.ts +0 -0
  169. package/components/selects/FSSelectAutoRefresh.vue +8 -8
  170. package/components/selects/FSSelectDashboardVariableType.vue +4 -3
  171. package/components/selects/FSSelectDateSetting.vue +2 -2
  172. package/components/selects/FSSelectDays.vue +8 -8
  173. package/components/selects/FSSelectListMode.vue +2 -2
  174. package/components/selects/FSSelectMapLayer.vue +68 -0
  175. package/components/selects/FSSelectMonths.vue +13 -13
  176. package/components/selects/chartSelectors/FSAggregationSelector.vue +52 -0
  177. package/components/selects/chartSelectors/FSAxisTypeSelector.vue +49 -0
  178. package/components/selects/chartSelectors/FSDisplayAsSelector.vue +53 -0
  179. package/components/selects/chartSelectors/FSFilterTypeSelector.vue +54 -0
  180. package/components/selects/chartSelectors/FSHeatmapRuleSelector.vue +54 -0
  181. package/components/selects/chartSelectors/FSOperationOnSelector.vue +53 -0
  182. package/components/selects/chartSelectors/FSPlanningTypeSelector.vue +53 -0
  183. package/components/selects/chartSelectors/FSPlotPerSelector.vue +52 -0
  184. package/components/selects/chartSelectors/FSSelectEntityType.vue +59 -0
  185. package/components/selects/chartSelectors/FSSerieTypeSelector.vue +53 -0
  186. package/components/tiles/FSAlertTileUI.vue +90 -0
  187. package/components/tiles/FSChartTileUI.vue +61 -52
  188. package/components/tiles/FSCommentTileUI.vue +38 -13
  189. package/components/tiles/FSDashboardOrganisationTypeTileUI.vue +14 -2
  190. package/components/tiles/FSDashboardShallowTileUI.vue +14 -2
  191. package/components/tiles/FSDeviceOrganisationTileUI.vue +0 -6
  192. package/components/tiles/FSEntityCountBadge.vue +72 -0
  193. package/components/tiles/FSFolderTileUI.vue +38 -4
  194. package/components/tiles/FSGroupTileUI.vue +32 -136
  195. package/components/tiles/FSLoadTile.vue +16 -10
  196. package/components/tiles/FSLocationTileUI.vue +45 -63
  197. package/components/tiles/FSServiceAccountOrganisationTileUI.vue +0 -6
  198. package/components/tiles/FSSimpleTileUI.vue +30 -24
  199. package/components/tiles/FSTile.vue +46 -39
  200. package/components/tiles/FSUserOrganisationTileUI.vue +1 -7
  201. package/components/tiles/FSUserTileUI.vue +119 -0
  202. package/components/toggleSets/FSToggleSetPosition.vue +1 -1
  203. package/components/views/FSBaseView.vue +64 -0
  204. package/components/views/FSEntityView.vue +12 -146
  205. package/components/views/FSSimpleView.vue +29 -0
  206. package/components/views/desktop/FSBaseDefaultDesktopView.vue +135 -0
  207. package/components/views/desktop/FSBaseDesktopView.vue +53 -0
  208. package/components/views/desktop/FSBaseEntityDesktopView.vue +211 -0
  209. package/components/views/mobile/FSBaseDefaultMobileView.vue +133 -0
  210. package/components/views/mobile/FSBaseEntityMobileView.vue +206 -0
  211. package/components/views/mobile/FSBaseMobileView.vue +53 -0
  212. package/composables/index.ts +1 -0
  213. package/composables/useAddress.ts +40 -8
  214. package/composables/useBreakpoints.ts +40 -4
  215. package/composables/useColors.ts +16 -7
  216. package/composables/useMagicFieldProvider.ts +1 -0
  217. package/composables/useMapLayers.ts +69 -0
  218. package/composables/useSlots.ts +2 -1
  219. package/models/colors.ts +2 -1
  220. package/models/deviceAlerts.ts +1 -0
  221. package/models/magicFields.ts +1 -0
  222. package/models/map.ts +12 -10
  223. package/models/rules.ts +5 -2
  224. package/models/tables.ts +2 -1
  225. package/models/variableNode.ts +8 -5
  226. package/package.json +5 -5
  227. package/styles/components/fs_agenda.scss +4 -0
  228. package/styles/components/fs_agenda_event.scss +1 -1
  229. package/styles/components/fs_agenda_hours_row.scss +0 -8
  230. package/styles/components/fs_autocomplete_field.scss +0 -13
  231. package/styles/components/fs_breadcrumbs.scss +18 -36
  232. package/styles/components/fs_button.scss +7 -5
  233. package/styles/components/fs_calendar.scss +1 -0
  234. package/styles/components/fs_card.scss +9 -0
  235. package/styles/components/fs_chip.scss +13 -7
  236. package/styles/components/fs_clickable.scss +16 -23
  237. package/styles/components/fs_clock.scss +0 -10
  238. package/styles/components/fs_col.scss +1 -1
  239. package/styles/components/fs_color_field.scss +0 -4
  240. package/styles/components/fs_data_table.scss +6 -9
  241. package/styles/components/fs_dialog.scss +4 -10
  242. package/styles/components/fs_dialog_menu.scss +4 -2
  243. package/styles/components/fs_draggable.scss +0 -5
  244. package/styles/components/fs_fade_out.scss +10 -2
  245. package/styles/components/fs_filter_button.scss +1 -1
  246. package/styles/components/fs_hidden_button.scss +2 -7
  247. package/styles/components/fs_image_card.scss +6 -4
  248. package/styles/components/fs_magic_config_field.scss +1 -2
  249. package/styles/components/fs_map.scss +57 -17
  250. package/styles/components/fs_meta_field.scss +3 -5
  251. package/styles/components/fs_password_field.scss +4 -2
  252. package/styles/components/fs_progress_bar.scss +14 -0
  253. package/styles/components/fs_radio.scss +0 -11
  254. package/styles/components/fs_rich_text_field.scss +1 -10
  255. package/styles/components/fs_select_field.scss +4 -13
  256. package/styles/components/fs_slide_group.scss +7 -0
  257. package/styles/components/fs_slider.scss +0 -40
  258. package/styles/components/fs_span.scss +13 -5
  259. package/styles/components/fs_status_rich_card.scss +6 -0
  260. package/styles/components/fs_tabs.scss +18 -37
  261. package/styles/components/fs_tag.scss +8 -22
  262. package/styles/components/fs_text_area.scss +2 -21
  263. package/styles/components/fs_tile.scss +0 -19
  264. package/styles/components/fs_window.scss +3 -1
  265. package/styles/components/fs_wrap_group.scss +7 -0
  266. package/styles/components/index.scss +2 -6
  267. package/styles/globals/index.scss +1 -5
  268. package/styles/globals/overrides.scss +26 -54
  269. package/styles/globals/scrollbars.scss +8 -0
  270. package/styles/globals/text_fonts.scss +18 -66
  271. package/styles/globals/touchscreen.scss +2 -2
  272. package/tools/alertsTools.ts +94 -18
  273. package/tools/chartsTools.ts +155 -16
  274. package/tools/index.ts +3 -1
  275. package/tools/reportsTools.ts +38 -0
  276. package/tools/timeRangeTools.ts +125 -0
  277. package/utils/badge.ts +9 -5
  278. package/utils/filter.ts +4 -1
  279. package/utils/index.ts +2 -0
  280. package/utils/leafletMarkers.ts +4 -4
  281. package/utils/operations.ts +108 -0
  282. package/utils/picker.ts +40 -0
  283. package/utils/sort.ts +2 -2
  284. package/utils/time.ts +13 -13
  285. package/components/fields/FSTimeSlotField.vue +0 -250
  286. package/components/views/FSEntityHeader.vue +0 -343
  287. package/components/views/FSListHeader.vue +0 -83
  288. package/components/views/FSListView.vue +0 -83
  289. package/components/views/FSSkeletonView.vue +0 -100
  290. package/styles/components/fs_data_iterator_item.scss +0 -33
  291. package/styles/components/fs_icon_field.scss +0 -12
  292. package/styles/components/fs_search_field.scss +0 -3
  293. package/styles/components/fs_tag_field.scss +0 -8
  294. package/styles/components/fs_time_field.scss +0 -12
  295. package/styles/components/fs_timeslot_field.scss +0 -12
  296. package/styles/globals/breakpoints.scss +0 -20
  297. package/styles/globals/fixes.scss +0 -5
@@ -29,9 +29,10 @@
29
29
  </FSSpan>
30
30
  </FSRow>
31
31
  </slot>
32
- <v-spacer />
33
- <template
34
- v-if="$props.editable"
32
+ <FSRow
33
+ v-if="!$props.disabled"
34
+ align="center-right"
35
+ :wrap="false"
35
36
  >
36
37
  <FSIcon
37
38
  class="fs-rich-text-field-icon"
@@ -115,7 +116,7 @@
115
116
  >
116
117
  mdi-link
117
118
  </FSIcon>
118
- <v-menu
119
+ <FSMenu
119
120
  v-if="$props.variableReferences && $props.variableReferences.length > 0"
120
121
  :closeOnContentClick="false"
121
122
  v-model="menuVariable"
@@ -140,12 +141,12 @@
140
141
  <FSAutoCompleteField
141
142
  itemTitle="label"
142
143
  itemValue="code"
143
- :placeholder="$tr('ui.rich-text-field.variable-placeholder', 'Choose a variable...')"
144
+ :placeholder="$tr('rich-text-field.variable-placeholder', 'Choose a variable...')"
144
145
  :items="$props.variableReferences"
145
146
  @update:modelValue="insertVariable($event)"
146
147
  />
147
148
  </FSCard>
148
- </v-menu>
149
+ </FSMenu>
149
150
  <v-divider
150
151
  vertical
151
152
  />
@@ -177,7 +178,7 @@
177
178
  >
178
179
  mdi-format-align-justify
179
180
  </FSIcon>
180
- </template>
181
+ </FSRow>
181
182
  </FSRow>
182
183
  <FSText
183
184
  v-if="readonly && !$props.modelValue && $props.emptyLabel"
@@ -191,8 +192,8 @@
191
192
  >
192
193
  <div
193
194
  class="fs-rich-text-field-content"
194
- :data-variable-values="JSON.stringify($props.variableValues)"
195
- :contenteditable="!readonly && $props.editable"
195
+ :data-variable-values="variableValues"
196
+ :contenteditable="!readonly && !$props.disabled && !loading"
196
197
  :data-readonly="$props.variant === 'readonly'"
197
198
  :id="id"
198
199
  />
@@ -203,7 +204,7 @@
203
204
  </div>
204
205
 
205
206
  <FSTextField
206
- v-if="isLink && !readonly && $props.editable"
207
+ v-if="isLink && !readonly && !$props.disabled"
207
208
  :hideHeader="true"
208
209
  @keypress.enter.stop="toggleLink"
209
210
  v-model="linkUrl"
@@ -214,7 +215,8 @@
214
215
  <FSSpan
215
216
  v-if="!readonly && $props.description"
216
217
  class="fs-rich-text-field-description"
217
- font="text-underline"
218
+ font="text-overline"
219
+ :lineClamp="2"
218
220
  :style="style"
219
221
  >
220
222
  {{ $props.description }}
@@ -244,6 +246,7 @@ import FSTextField from "./FSTextField.vue";
244
246
  import FSIcon from "../FSIcon.vue";
245
247
  import FSCard from "../FSCard.vue";
246
248
  import FSText from "../FSText.vue";
249
+ import FSMenu from '../FSMenu.vue';
247
250
  import FSCol from "../FSCol.vue";
248
251
  import FSRow from "../FSRow.vue";
249
252
 
@@ -255,6 +258,7 @@ export default defineComponent({
255
258
  FSText,
256
259
  FSIcon,
257
260
  FSCard,
261
+ FSMenu,
258
262
  FSCol,
259
263
  FSRow
260
264
  },
@@ -275,7 +279,7 @@ export default defineComponent({
275
279
  default: null
276
280
  },
277
281
  modelValue: {
278
- type: String as PropType<string | null>,
282
+ type: [Object, String] as PropType<{ [key: string]: any } | string | null>,
279
283
  required: false,
280
284
  default: null
281
285
  },
@@ -308,21 +312,22 @@ export default defineComponent({
308
312
  required: false,
309
313
  default: () => ({})
310
314
  },
311
- editable: {
315
+ disabled: {
312
316
  type: Boolean,
313
317
  required: false,
314
- default: true
318
+ default: false
315
319
  }
316
320
  },
317
321
  emits: ["update:modelValue"],
318
322
  setup(props, { emit }) {
319
- const { isMobileSized } = useBreakpoints();
323
+ const { fontStyles, isMobileSized } = useBreakpoints();
320
324
  const { getColors } = useColors();
321
325
 
322
326
  const linkColors = computed(() => getColors(props.linkColor));
323
327
  const lights = getColors(ColorEnum.Light);
324
328
  const darks = getColors(ColorEnum.Dark);
325
329
 
330
+ const loading = ref(true);
326
331
  const canUndo = ref(false);
327
332
  const isLink = ref(false);
328
333
  const isBold = ref(false);
@@ -375,16 +380,8 @@ export default defineComponent({
375
380
  registerRichText(editor);
376
381
  registerHistory(editor, createEmptyHistoryState(), 250);
377
382
 
378
- if (props.modelValue != null) {
379
- editor.update((): void => {
380
- editor.setEditorState(editor.parseEditorState(props.modelValue!));
381
- });
382
- }
383
- else {
384
- editor.update((): void => {
385
- editor.setEditorState(editor.parseEditorState(emptyLexicalState));
386
- });
387
- }
383
+ updateEditorState();
384
+ loading.value = false;
388
385
  });
389
386
 
390
387
  const readonly = computed((): boolean => {
@@ -405,37 +402,43 @@ export default defineComponent({
405
402
  }
406
403
  switch (props.variant) {
407
404
  case "standard": {
408
- if (!props.editable) {
405
+ if (props.disabled) {
409
406
  return {
410
- "--fs-rich-text-field-undo-cursor": "default",
411
- "--fs-rich-text-field-icon-cursor": "default",
412
- "--fs-rich-text-field-border-color": lights.base,
413
- "--fs-rich-text-field-color": lights.dark,
407
+ "--fs-rich-text-field-undo-cursor" : "default",
408
+ "--fs-rich-text-field-icon-cursor" : "default",
409
+ "--fs-rich-text-field-border-color" : lights.base,
410
+ "--fs-rich-text-field-color" : lights.dark,
414
411
  "--fs-rich-text-field-active-border-color": lights.base,
415
- "--fs-rich-text-field-link-color": linkColors.value.light,
416
- "--fs-rich-text-field-min-height": minHeight
412
+ "--fs-rich-text-field-link-color" : linkColors.value.light,
413
+ "--fs-rich-text-field-min-height" : minHeight,
414
+ "--fs-rich-text-field-padding" : isMobileSized.value ? "6px 16px" : "10px 12px",
415
+ ...fontStyles.value
417
416
  };
418
417
  }
419
418
  else {
420
419
  return {
421
- "--fs-rich-text-field-undo-cursor": canUndo.value ? "pointer" : "default",
422
- "--fs-rich-text-field-icon-cursor": "pointer",
423
- "--fs-rich-text-field-border-color": lights.dark,
424
- "--fs-rich-text-field-color": darks.base,
425
- "--fs-rich-text-field-active-border-color": darks.dark,
426
- "--fs-rich-text-field-link-color": linkColors.value.dark,
427
- "--fs-rich-text-field-min-height": minHeight,
420
+ "--fs-rich-text-field-undo-cursor" : canUndo.value ? "pointer" : "default",
421
+ "--fs-rich-text-field-icon-cursor" : "pointer",
422
+ "--fs-rich-text-field-border-color" : lights.dark,
423
+ "--fs-rich-text-field-color" : darks.base,
424
+ "--fs-rich-text-field-active-border-color" : darks.dark,
425
+ "--fs-rich-text-field-link-color" : linkColors.value.dark,
426
+ "--fs-rich-text-field-min-height" : minHeight,
428
427
  "--fs-rich-text-field-variable-backgroundcolor": getColors(ColorEnum.Primary).light,
429
- "--fs-rich-text-field-variable-color": getColors(ColorEnum.Primary).lightContrast!
428
+ "--fs-rich-text-field-variable-color" : getColors(ColorEnum.Primary).lightContrast!,
429
+ "--fs-rich-text-field-padding" : isMobileSized.value ? "6px 16px" : "10px 12px",
430
+ ...fontStyles.value
430
431
  };
431
432
  }
432
433
  }
433
434
  case "readonly": return {
434
- "--fs-rich-text-field-border-color": "transparent",
435
- "--fs-rich-text-field-color": darks.base,
435
+ "--fs-rich-text-field-border-color" : "transparent",
436
+ "--fs-rich-text-field-color" : darks.base,
436
437
  "--fs-rich-text-field-active-border-color": "transparent",
437
- "--fs-rich-text-field-link-color": linkColors.value.dark,
438
- "--fs-rich-text-field-min-height": minHeight
438
+ "--fs-rich-text-field-link-color" : linkColors.value.dark,
439
+ "--fs-rich-text-field-min-height" : minHeight,
440
+ "--fs-rich-text-field-padding" : "0",
441
+ ...fontStyles.value
439
442
  }
440
443
  }
441
444
  });
@@ -449,7 +452,7 @@ export default defineComponent({
449
452
  });
450
453
 
451
454
  const toolbarColors = computed((): { [code: string]: string } => {
452
- if (props.editable) {
455
+ if (!props.disabled) {
453
456
  return {
454
457
  undo: canUndo.value ? darks.base : lights.base,
455
458
  bold: isBold.value ? darks.base : lights.base,
@@ -472,6 +475,10 @@ export default defineComponent({
472
475
  }
473
476
  });
474
477
 
478
+ const variableValues = computed(() => {
479
+ return JSON.stringify(props.variableValues)
480
+ });
481
+
475
482
  const updateToolbar = (): void => {
476
483
  const selection = $getSelection();
477
484
  isVariable.value = false;
@@ -492,11 +499,16 @@ export default defineComponent({
492
499
  editor.registerUpdateListener(({ editorState }) => {
493
500
  editorState.read(() => {
494
501
  updateToolbar();
495
- if (JSON.stringify(editorState.toJSON()) !== emptyLexicalState) {
496
- emit("update:modelValue", JSON.stringify(editorState.toJSON()));
502
+ if(loading.value) {
503
+ return;
497
504
  }
498
- else {
505
+ const editorModelValue = JSON.stringify(editorState.toJSON());
506
+ if(editorModelValue === emptyLexicalState && props.modelValue !== null) {
499
507
  emit("update:modelValue", null);
508
+ return;
509
+ }
510
+ if(editorModelValue !== emptyLexicalState && editorModelValue !== props.modelValue) {
511
+ emit("update:modelValue", editorModelValue);
500
512
  }
501
513
  });
502
514
  });
@@ -659,24 +671,31 @@ export default defineComponent({
659
671
  isLink.value = false;
660
672
  }
661
673
 
662
- watch(() => props.modelValue, () => {
663
- if (JSON.stringify(editor.getEditorState().toJSON()) != props.modelValue) {
664
- if (props.modelValue != null) {
665
- editor.update(() => {
666
- editor.setEditorState(editor.parseEditorState(props.modelValue!));
667
- });
674
+ const updateEditorState = () => {
675
+ if (JSON.stringify(editor.getEditorState().toJSON()) === props.modelValue) {
676
+ return;
677
+ }
678
+ if (props.modelValue != null) {
679
+ if (typeof props.modelValue === "string" && props.modelValue !== "") {
680
+ editor.setEditorState(editor.parseEditorState(props.modelValue!));
681
+ return;
668
682
  }
669
- else if (JSON.stringify(editor.getEditorState().toJSON()) !== emptyLexicalState) {
670
- editor.update(() => {
671
- editor.setEditorState(editor.parseEditorState(emptyLexicalState));
672
- });
683
+ if (typeof props.modelValue === "object") {
684
+ editor.setEditorState(editor.parseEditorState(JSON.stringify(props.modelValue)));
685
+ return;
673
686
  }
674
687
  }
688
+ editor.setEditorState(editor.parseEditorState(emptyLexicalState));
689
+ }
690
+
691
+ watch(() => props.modelValue, () => {
692
+ updateEditorState();
675
693
  });
676
694
 
677
695
  return {
678
696
  FORMAT_ELEMENT_COMMAND,
679
697
  FORMAT_TEXT_COMMAND,
698
+ variableValues,
680
699
  toolbarColors,
681
700
  menuVariable,
682
701
  UNDO_COMMAND,
@@ -684,6 +703,7 @@ export default defineComponent({
684
703
  readonly,
685
704
  linkUrl,
686
705
  classes,
706
+ loading,
687
707
  isEmpty,
688
708
  editor,
689
709
  isLink,
@@ -1,14 +1,15 @@
1
1
  <template>
2
2
  <FSTextField
3
3
  class="fs-search-field"
4
- :editable="$props.editable"
5
4
  :placeholder="placeholder"
6
- @keydown.enter="onSearch"
7
- v-model="innerValue"
5
+ :modelValue="$props.modelValue"
6
+ prependInnerIcon="mdi-magnify"
7
+ minWidth="200px"
8
+ @update:modelValue="$emit('update:modelValue', $event)"
8
9
  v-bind="$attrs"
9
10
  >
10
11
  <template
11
- v-for="(_, name) in slots"
12
+ v-for="(_, name) in $slots"
12
13
  v-slot:[name]="slotData"
13
14
  >
14
15
  <slot
@@ -16,60 +17,20 @@
16
17
  v-bind="slotData"
17
18
  />
18
19
  </template>
19
- <template
20
- v-if="$props.prependInnerIcon || $slots['prepend-inner']"
21
- #prepend-inner
22
- >
23
- <FSButton
24
- v-if="$props.prependInnerIcon"
25
- variant="icon"
26
- :icon="$props.prependInnerIcon"
27
- :editable="$props.editable"
28
- :color="ColorEnum.Dark"
29
- @click="onSearch"
30
- />
31
- <slot
32
- name="prepend-inner"
33
- />
34
- </template>
35
- <template
36
- v-if="$props.variant !== 'instant' || $slots.append"
37
- #append
38
- >
39
- <FSButton
40
- v-if="$props.variant !== 'instant'"
41
- :prependIcon="$props.buttonPrependIcon"
42
- :label="buttonLabel"
43
- :appendIcon="$props.buttonAppendIcon"
44
- :variant="$props.buttonVariant"
45
- :color="$props.buttonColor"
46
- :editable="$props.editable"
47
- @click="onSearch"
48
- />
49
- <slot
50
- name="append"
51
- />
52
- </template>
53
20
  </FSTextField>
54
21
  </template>
55
22
 
56
23
  <script lang="ts">
57
- import type { PropType} from "vue";
58
- import { computed, defineComponent, ref, watch } from "vue";
24
+ import { computed, defineComponent, type PropType } from "vue";
59
25
 
60
26
  import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
61
- import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
62
-
63
- import { useSlots } from "../../composables";
64
27
 
65
28
  import FSTextField from "./FSTextField.vue";
66
- import FSButton from "../FSButton.vue";
67
29
 
68
30
  export default defineComponent({
69
31
  name: "FSSearchField",
70
32
  components: {
71
- FSTextField,
72
- FSButton
33
+ FSTextField
73
34
  },
74
35
  props: {
75
36
  placeholder: {
@@ -77,89 +38,22 @@ export default defineComponent({
77
38
  required: false,
78
39
  default: null
79
40
  },
80
- prependInnerIcon: {
81
- type: String as PropType<string | null>,
82
- required: false,
83
- default: "mdi-magnify"
84
- },
85
- variant: {
86
- type: String as PropType<"standard" | "instant">,
87
- required: false,
88
- default: "instant"
89
- },
90
- buttonPrependIcon: {
91
- type: String as PropType<string | null>,
92
- required: false,
93
- default: null
94
- },
95
- buttonLabel: {
96
- type: String as PropType<string | null>,
97
- required: false,
98
- default: null
99
- },
100
- buttonAppendIcon: {
101
- type: String as PropType<string | null>,
102
- required: false,
103
- default: null
104
- },
105
- buttonVariant: {
106
- type: String as PropType<"standard" | "full" | "icon">,
107
- required: false,
108
- default: "standard"
109
- },
110
41
  modelValue: {
111
42
  type: String as PropType<string | null>,
112
43
  required: false,
113
44
  default: null
114
- },
115
- buttonColor: {
116
- type: String as PropType<ColorBase>,
117
- required: false,
118
- default: ColorEnum.Primary
119
- },
120
- editable: {
121
- type: Boolean,
122
- required: false,
123
- default: true
124
45
  }
125
46
  },
126
47
  emits: ["update:modelValue"],
127
- setup(props, { emit }) {
48
+ setup(props) {
128
49
  const { $tr } = useTranslationsProvider();
129
- const { slots } = useSlots();
130
-
131
- delete slots["prepend-inner"];
132
- delete slots.append;
133
-
134
- const innerValue = ref(props.modelValue);
135
50
 
136
51
  const placeholder = computed(() => {
137
- return props.placeholder ?? $tr('ui.search.placeholder', 'Search...');
138
- });
139
-
140
- const buttonLabel = computed(() => {
141
- return props.buttonLabel ?? $tr('ui.button.search', 'Search');
142
- });
143
-
144
- const onSearch = (event: Event) => {
145
- event.stopImmediatePropagation();
146
- event.preventDefault();
147
- emit('update:modelValue', innerValue.value);
148
- };
149
-
150
- watch(innerValue, () => {
151
- if (["instant"].includes(props.variant)) {
152
- emit("update:modelValue", innerValue.value);
153
- }
52
+ return props.placeholder ?? $tr('search-field.placeholder', 'Search...');
154
53
  });
155
54
 
156
55
  return {
157
56
  placeholder,
158
- buttonLabel,
159
- innerValue,
160
- ColorEnum,
161
- slots,
162
- onSearch
163
57
  };
164
58
  }
165
59
  });