@dative-gpi/foundation-shared-components 0.1.120 → 1.0.0

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 (196) hide show
  1. package/assets/images/map/imagery.png +0 -0
  2. package/assets/images/map/map.png +0 -0
  3. package/components/FSAccordion.vue +2 -1
  4. package/components/FSAccordionPanel.vue +20 -1
  5. package/components/FSBadge.vue +7 -3
  6. package/components/FSBreadcrumbs.vue +4 -2
  7. package/components/FSButton.vue +15 -8
  8. package/components/FSCalendar.vue +5 -2
  9. package/components/FSCalendarTwin.vue +6 -3
  10. package/components/FSCard.vue +4 -2
  11. package/components/FSCardPlaceholder.vue +80 -0
  12. package/components/FSCheckbox.vue +10 -7
  13. package/components/FSChip.vue +4 -2
  14. package/components/FSClickable.vue +5 -3
  15. package/components/FSClock.vue +18 -4
  16. package/components/FSCol.vue +12 -5
  17. package/components/FSColor.vue +4 -2
  18. package/components/FSColorIcon.vue +5 -3
  19. package/components/FSDialog.vue +28 -87
  20. package/components/FSDialogContent.vue +133 -0
  21. package/components/FSDialogForm.vue +25 -236
  22. package/components/FSDialogFormBody.vue +273 -0
  23. package/components/FSDialogMenu.vue +5 -2
  24. package/components/FSDialogMultiForm.vue +21 -197
  25. package/components/FSDialogMultiFormBody.vue +231 -0
  26. package/components/FSDialogSubmit.vue +4 -2
  27. package/components/FSDivider.vue +6 -4
  28. package/components/FSEditImage.vue +16 -9
  29. package/components/FSErrorToast.vue +2 -1
  30. package/components/FSFadeOut.vue +1 -1
  31. package/components/FSForm.vue +7 -7
  32. package/components/FSGrid.vue +4 -2
  33. package/components/FSGridMosaic.vue +3 -2
  34. package/components/FSIcon.vue +3 -2
  35. package/components/FSIconCard.vue +10 -3
  36. package/components/FSIconCheck.vue +2 -1
  37. package/components/FSIconFlag.vue +2 -1
  38. package/components/FSImage.vue +2 -1
  39. package/components/FSImageCard.vue +72 -0
  40. package/components/FSLabel.vue +4 -2
  41. package/components/FSLink.vue +5 -3
  42. package/components/FSLoader.vue +2 -1
  43. package/components/FSOptionGroup.vue +28 -20
  44. package/components/FSOptionItem.vue +8 -18
  45. package/components/FSPagination.vue +4 -2
  46. package/components/FSRadio.vue +23 -11
  47. package/components/FSRadioGroup.vue +23 -10
  48. package/components/FSRow.vue +8 -1
  49. package/components/FSSlideGroup.vue +27 -6
  50. package/components/FSSlider.vue +4 -2
  51. package/components/FSSpan.vue +2 -1
  52. package/components/FSSwitch.vue +13 -10
  53. package/components/FSTab.vue +4 -2
  54. package/components/FSTabs.vue +5 -14
  55. package/components/FSTag.vue +11 -4
  56. package/components/FSTagGroup.vue +4 -2
  57. package/components/FSText.vue +4 -2
  58. package/components/FSToggleSet.vue +30 -17
  59. package/components/FSTooltip.vue +15 -4
  60. package/components/FSWindow.vue +2 -2
  61. package/components/FSWrapGroup.vue +2 -1
  62. package/components/autocompletes/FSAutoCompleteAddress.vue +104 -0
  63. package/components/autocompletes/FSAutocompleteLanguage.vue +18 -26
  64. package/components/autocompletes/FSAutocompleteTag.vue +138 -0
  65. package/components/autocompletes/FSAutocompleteTimeZone.vue +19 -30
  66. package/components/buttons/FSButtonAdd.vue +28 -0
  67. package/components/buttons/FSButtonAddIcon.vue +28 -0
  68. package/components/buttons/FSButtonAddLabel.vue +27 -0
  69. package/components/buttons/FSButtonAddMini.vue +27 -0
  70. package/components/buttons/FSButtonFile.vue +4 -4
  71. package/components/buttons/FSButtonFileIcon.vue +4 -4
  72. package/components/buttons/FSButtonFileLabel.vue +4 -4
  73. package/components/buttons/FSButtonFileMini.vue +4 -4
  74. package/components/deviceOrganisations/FSConnectivity.vue +3 -2
  75. package/components/deviceOrganisations/FSConnectivityCard.vue +3 -2
  76. package/components/deviceOrganisations/FSStatus.vue +3 -2
  77. package/components/deviceOrganisations/FSStatusCard.vue +3 -2
  78. package/components/deviceOrganisations/FSStatusesCarousel.vue +3 -2
  79. package/components/deviceOrganisations/FSStatusesRow.vue +3 -2
  80. package/components/deviceOrganisations/FSWorstAlert.vue +5 -4
  81. package/components/deviceOrganisations/FSWorstAlertCard.vue +4 -2
  82. package/components/fields/FSAutocompleteField.vue +210 -97
  83. package/components/fields/FSBaseField.vue +2 -1
  84. package/components/fields/FSColorField.vue +65 -94
  85. package/components/fields/FSDateField.vue +12 -25
  86. package/components/fields/FSDateRangeField.vue +15 -27
  87. package/components/fields/FSDateTimeField.vue +22 -32
  88. package/components/fields/FSDateTimeRangeField.vue +43 -51
  89. package/components/fields/FSGradientField.vue +143 -0
  90. package/components/fields/FSIconField.vue +9 -6
  91. package/components/fields/FSMagicConfigField.vue +154 -0
  92. package/components/fields/FSMagicField.vue +185 -0
  93. package/components/fields/FSNumberField.vue +3 -1
  94. package/components/fields/FSPasswordField.vue +10 -10
  95. package/components/fields/FSRichTextField.vue +136 -50
  96. package/components/fields/FSSearchField.vue +41 -62
  97. package/components/fields/FSSelectField.vue +148 -53
  98. package/components/fields/FSTagField.vue +19 -16
  99. package/components/fields/FSTermField.vue +192 -186
  100. package/components/fields/FSTextArea.vue +4 -4
  101. package/components/fields/FSTextField.vue +29 -6
  102. package/components/fields/FSTimeField.vue +55 -20
  103. package/components/fields/FSTimeSlotField.vue +6 -5
  104. package/components/fields/FSTranslateField.vue +234 -0
  105. package/components/fields/FSTranslateRichTextField.vue +185 -0
  106. package/components/fields/FSTreeViewField.vue +520 -0
  107. package/components/lists/FSDataIteratorItem.vue +18 -3
  108. package/components/lists/FSDataTableUI.vue +138 -51
  109. package/components/lists/FSFilterButton.vue +4 -2
  110. package/components/lists/FSHiddenButton.vue +4 -2
  111. package/components/map/FSMap.vue +598 -0
  112. package/components/map/FSMapEditPointAddressOverlay.vue +164 -0
  113. package/components/map/FSMapLayerButton.vue +77 -0
  114. package/components/map/FSMapOverlay.vue +150 -0
  115. package/components/selects/FSSelectAutoRefresh.vue +62 -0
  116. package/components/selects/FSSelectDashboardVariableType.vue +47 -0
  117. package/components/selects/FSSelectDateSetting.vue +39 -37
  118. package/components/selects/FSSelectDays.vue +62 -0
  119. package/components/tiles/FSDashboardOrganisationTileUI.vue +7 -5
  120. package/components/tiles/FSDashboardOrganisationTypeTileUI.vue +7 -5
  121. package/components/tiles/FSDashboardShallowTileUI.vue +7 -5
  122. package/components/tiles/FSDeviceOrganisationTileUI.vue +11 -12
  123. package/components/tiles/FSFolderTileUI.vue +8 -6
  124. package/components/tiles/FSGroupTileUI.vue +13 -15
  125. package/components/tiles/{FSSimpleIconTileUI.vue → FSSimpleTileUI.vue} +29 -15
  126. package/components/tiles/FSTile.vue +5 -11
  127. package/components/tiles/FSUserOrganisationTileUI.vue +2 -1
  128. package/components/toggleSets/FSToggleSetPosition.vue +61 -0
  129. package/composables/index.ts +5 -1
  130. package/composables/useAddress.ts +158 -0
  131. package/composables/useAutocomplete.ts +4 -3
  132. package/composables/useColors.ts +8 -25
  133. package/composables/useDebounce.ts +2 -1
  134. package/composables/useMagicFieldProvider.ts +22 -0
  135. package/composables/useRules.ts +4 -12
  136. package/composables/useSlots.ts +46 -26
  137. package/composables/useTables.ts +29 -0
  138. package/composables/useTreeView.ts +48 -0
  139. package/elements/FSFormElement.ts +2 -1
  140. package/icons/flags/France.vue +21 -5
  141. package/icons/flags/Germany.vue +16 -4
  142. package/icons/flags/GreatBritain.vue +25 -6
  143. package/icons/flags/Italy.vue +21 -5
  144. package/icons/flags/Portugal.vue +225 -51
  145. package/icons/flags/Spain.vue +2781 -543
  146. package/icons/flags/UnitedStates.vue +31 -7
  147. package/icons/widgetTemplates/DevicesWidget.vue +189 -189
  148. package/icons/widgetTemplates/ProfileWidget.vue +9 -9
  149. package/icons/widgetTemplates/TextWidget.vue +6 -6
  150. package/models/breadcrumbs.ts +1 -1
  151. package/models/deviceAlerts.ts +1 -1
  152. package/models/deviceConnectivities.ts +1 -1
  153. package/models/index.ts +2 -0
  154. package/models/magicFields.ts +9 -0
  155. package/models/map.ts +18 -0
  156. package/models/richTextVariable.ts +5 -0
  157. package/models/rules.ts +11 -2
  158. package/models/tables.ts +30 -21
  159. package/models/variableNode.ts +104 -0
  160. package/package.json +21 -18
  161. package/plugins/colorPlugin.ts +2 -2
  162. package/plugins/index.ts +2 -1
  163. package/plugins/mapsPlugin.ts +37 -0
  164. package/shims-plugin.d.ts +2 -2
  165. package/shims-window.d.ts +3 -0
  166. package/styles/components/fs_button.scss +5 -0
  167. package/styles/components/fs_card.scss +0 -1
  168. package/styles/components/fs_col.scss +1 -0
  169. package/styles/components/fs_color_field.scss +12 -2
  170. package/styles/components/fs_data_iterator_item.scss +19 -6
  171. package/styles/components/fs_dialog.scss +12 -22
  172. package/styles/components/fs_gradient_field.scss +16 -0
  173. package/styles/components/fs_image_card.scss +18 -0
  174. package/styles/components/fs_magic_config_field.scss +13 -0
  175. package/styles/components/fs_map.scss +129 -0
  176. package/styles/components/fs_map_overlay.scss +38 -0
  177. package/styles/components/fs_meta_field.scss +6 -0
  178. package/styles/components/fs_option_group.scss +1 -0
  179. package/styles/components/fs_radio.scss +1 -1
  180. package/styles/components/fs_rich_text_field.scss +17 -5
  181. package/styles/components/fs_row.scss +1 -1
  182. package/styles/components/fs_select_field.scss +9 -14
  183. package/styles/components/fs_text.scss +1 -1
  184. package/styles/components/fs_time_field.scss +0 -4
  185. package/styles/components/fs_translate_field.scss +3 -0
  186. package/styles/components/fs_tree_view_field.scss +53 -0
  187. package/styles/components/index.scss +8 -1
  188. package/styles/globals/overrides.scss +54 -8
  189. package/styles/globals/scrollbars.scss +2 -2
  190. package/themes/default.ts +1 -1
  191. package/utils/gradient.ts +1601 -0
  192. package/utils/index.ts +3 -1
  193. package/utils/leafletMarkers.ts +23 -0
  194. package/utils/lexical.ts +3 -1
  195. package/components/selects/FSSelectTimeZone.vue +0 -67
  196. package/styles/components/fs_date_field.scss +0 -8
@@ -4,21 +4,20 @@
4
4
  v-if="isExtraSmall"
5
5
  >
6
6
  <FSTextField
7
- :label="$props.label"
7
+ :validationValue="$props.modelValue"
8
8
  :description="$props.description"
9
9
  :hideHeader="$props.hideHeader"
10
- :required="$props.required"
11
10
  :clearable="$props.clearable"
12
11
  :editable="$props.editable"
13
- :readonly="true"
12
+ :required="$props.required"
13
+ :validateOn="validateOn"
14
+ :label="$props.label"
14
15
  :rules="$props.rules"
15
16
  :messages="messages"
16
- :validateOn="validateOn"
17
- :validationValue="$props.modelValue"
17
+ :readonly="true"
18
18
  :modelValue="mobileValue"
19
19
  @update:modelValue="$emit('update:modelValue', $event)"
20
20
  @click="openMobileOverlay"
21
- @blur="blurred = true"
22
21
  v-bind="$attrs"
23
22
  >
24
23
  <template
@@ -30,6 +29,15 @@
30
29
  v-bind="slotData"
31
30
  />
32
31
  </template>
32
+ <template
33
+ v-if="mobileSelectionProps"
34
+ #prepend-inner
35
+ >
36
+ <slot
37
+ name="selection-mobile"
38
+ v-bind="mobileSelectionProps"
39
+ />
40
+ </template>
33
41
  <template
34
42
  #append-inner
35
43
  >
@@ -68,17 +76,35 @@
68
76
  :editable="$props.editable"
69
77
  :modelValue="$props.modelValue?.includes(item[$props.itemValue])"
70
78
  @update:modelValue="() => onCheckboxChange(item[$props.itemValue])"
71
- />
79
+ >
80
+ <template
81
+ #label="{ font }"
82
+ >
83
+ <slot
84
+ name="item-label"
85
+ v-bind="mobileItemProps(item, font)"
86
+ />
87
+ </template>
88
+ </FSCheckbox>
72
89
  </FSRow>
73
90
  </FSCol>
74
91
  <FSRadioGroup
75
92
  v-else
76
93
  gap="12px"
77
- :values="$props.items.map((item: any) => ({ value: item[$props.itemValue], label: item[$props.itemTitle] }))"
78
- :modelValue="$props.modelValue"
94
+ :values="$props.items.map((item: any) => ({ value: item[$props.itemValue], label: item[$props.itemTitle], item: item }))"
79
95
  :editable="$props.editable"
96
+ :modelValue="$props.modelValue"
80
97
  @update:modelValue="onRadioChange"
81
- />
98
+ >
99
+ <template
100
+ #label="{ item, font }"
101
+ >
102
+ <slot
103
+ name="item-label"
104
+ v-bind="mobileItemProps(item, font)"
105
+ />
106
+ </template>
107
+ </FSRadioGroup>
82
108
  </FSFadeOut>
83
109
  </template>
84
110
  </FSDialogMenu>
@@ -87,34 +113,43 @@
87
113
  v-else
88
114
  >
89
115
  <FSBaseField
90
- :label="$props.label"
91
116
  :description="$props.description"
92
117
  :hideHeader="$props.hideHeader"
93
118
  :required="$props.required"
94
119
  :editable="$props.editable"
120
+ :label="$props.label"
95
121
  :messages="messages"
96
122
  >
97
123
  <v-select
98
124
  class="fs-select-field"
99
125
  variant="outlined"
100
- :menuIcon="null"
101
- :style="style"
102
- :listProps="listStyle"
103
- :hideDetails="true"
104
- :items="$props.items"
126
+ :clearable="$props.clearable && $props.editable && !!$props.modelValue"
105
127
  :itemTitle="$props.itemTitle"
106
128
  :itemValue="$props.itemValue"
107
129
  :readonly="!$props.editable"
108
- :clearable="$props.clearable && $props.editable && !!$props.modelValue"
109
- :returnObject="$props.returnObject"
110
- :rules="$props.rules"
111
- :validateOn="validateOn"
112
130
  :multiple="$props.multiple"
131
+ :validateOn="validateOn"
132
+ :persistentClear="true"
133
+ :listProps="listStyle"
134
+ :returnObject="false"
135
+ :items="$props.items"
136
+ :rules="$props.rules"
137
+ :hideDetails="true"
138
+ :menuIcon="null"
139
+ :style="style"
113
140
  :modelValue="$props.modelValue"
114
141
  @update:modelValue="$emit('update:modelValue', $event)"
115
- @blur="blurred = true"
116
142
  v-bind="$attrs"
117
143
  >
144
+ <template
145
+ v-for="(_, name) in $slots"
146
+ v-slot:[name]="slotData"
147
+ >
148
+ <slot
149
+ :name="name"
150
+ v-bind="slotData"
151
+ />
152
+ </template>
118
153
  <template
119
154
  #item="{ props, item }"
120
155
  >
@@ -126,24 +161,39 @@
126
161
  >
127
162
  <FSCheckbox
128
163
  v-if="$props.multiple"
129
- :modelValue="$props.modelValue?.includes(item.raw.id)"
164
+ :modelValue="$props.modelValue?.includes(item.raw[$props.itemValue])"
130
165
  @click="props.onClick"
131
- />
132
- <FSSpan>
133
- {{ item.raw.label }}
166
+ >
167
+ <template
168
+ #label="{ font }"
169
+ >
170
+ <slot
171
+ name="item-label"
172
+ v-bind="{ item, font }"
173
+ >
174
+ <FSSpan
175
+ :font="font"
176
+ >
177
+ {{ item.raw[$props.itemTitle] }}
178
+ </FSSpan>
179
+ </slot>
180
+ </template>
181
+ </FSCheckbox>
182
+ <FSSpan
183
+ v-else
184
+ >
185
+ <slot
186
+ name="item-label"
187
+ v-bind="{ item }"
188
+ >
189
+ <FSSpan>
190
+ {{ item.raw[$props.itemTitle] }}
191
+ </FSSpan>
192
+ </slot>
134
193
  </FSSpan>
135
194
  </FSRow>
136
195
  </v-list-item>
137
196
  </template>
138
- <template
139
- v-for="(_, name) in $slots"
140
- v-slot:[name]="slotData"
141
- >
142
- <slot
143
- :name="name"
144
- v-bind="slotData"
145
- />
146
- </template>
147
197
  <template
148
198
  #clear
149
199
  >
@@ -173,6 +223,17 @@
173
223
  />
174
224
  </slot>
175
225
  </template>
226
+ <template
227
+ #no-data
228
+ >
229
+ <FSRow
230
+ padding="17px"
231
+ >
232
+ <FSSpan>
233
+ {{ $tr("ui.common.no-data", "No data") }}
234
+ </FSSpan>
235
+ </FSRow>
236
+ </template>
176
237
  </v-select>
177
238
  </FSBaseField>
178
239
  </template>
@@ -180,7 +241,8 @@
180
241
  </template>
181
242
 
182
243
  <script lang="ts">
183
- import { computed, defineComponent, PropType, ref } from "vue";
244
+ import type { PropType} from "vue";
245
+ import { computed, defineComponent, ref } from "vue";
184
246
 
185
247
  import { useBreakpoints, useColors, useRules } from "@dative-gpi/foundation-shared-components/composables";
186
248
  import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
@@ -245,11 +307,6 @@ export default defineComponent({
245
307
  required: false,
246
308
  default: false
247
309
  },
248
- returnObject: {
249
- type: Boolean,
250
- required: false,
251
- default: false
252
- },
253
310
  required: {
254
311
  type: Boolean,
255
312
  required: false,
@@ -283,7 +340,7 @@ export default defineComponent({
283
340
  },
284
341
  emits: ["update:modelValue"],
285
342
  setup(props, { emit }) {
286
- const { validateOn, blurred, getMessages } = useRules();
343
+ const { validateOn, getMessages } = useRules();
287
344
  const { isExtraSmall } = useBreakpoints();
288
345
  const { getColors } = useColors();
289
346
 
@@ -313,7 +370,7 @@ export default defineComponent({
313
370
  };
314
371
  });
315
372
 
316
- const listStyle = computed((): { [key: string] : Object } => {
373
+ const listStyle = computed((): { [key: string] : object } => {
317
374
  return {
318
375
  style: style.value
319
376
  };
@@ -330,7 +387,7 @@ export default defineComponent({
330
387
  if (props.multiple) {
331
388
  if (Array.isArray(props.modelValue)) {
332
389
  return props.modelValue.map((value: any) => {
333
- const item = props.items.find((item: Object) => item[props.itemValue] === value);
390
+ const item = props.items.find((item: object) => item[props.itemValue] === value);
334
391
  if (item) {
335
392
  return item[props.itemTitle];
336
393
  }
@@ -338,7 +395,7 @@ export default defineComponent({
338
395
  }
339
396
  }
340
397
  if (props.modelValue) {
341
- const item = props.items.find((item: Object) => item[props.itemValue] === props.modelValue);
398
+ const item = props.items.find((item: object) => item[props.itemValue] === props.modelValue);
342
399
  if (item) {
343
400
  return item[props.itemTitle];
344
401
  }
@@ -346,6 +403,40 @@ export default defineComponent({
346
403
  return null;
347
404
  });
348
405
 
406
+ const mobileSelectionProps = computed((): any | null => {
407
+ const item = props.items.find((item: any) => item[props.itemValue] === props.modelValue);
408
+ if (item) {
409
+ return {
410
+ item: {
411
+ title: "",
412
+ value: item[props.itemValue],
413
+ props: {
414
+ title: item[props.itemTitle],
415
+ value: item[props.itemValue]
416
+ },
417
+ raw: { ...item }
418
+ },
419
+ font: "text-body"
420
+ };
421
+ }
422
+ return null;
423
+ });
424
+
425
+ const mobileItemProps = (item: any, font: "text-body" | "text-button" | null): any => {
426
+ return {
427
+ item: {
428
+ title: "",
429
+ value: item[props.itemValue],
430
+ props: {
431
+ title: item[props.itemTitle],
432
+ value: item[props.itemValue]
433
+ },
434
+ raw: { ...item }
435
+ },
436
+ font
437
+ }
438
+ };
439
+
349
440
  const openMobileOverlay = () => {
350
441
  if (!props.editable) {
351
442
  return;
@@ -353,43 +444,47 @@ export default defineComponent({
353
444
  dialog.value = true;
354
445
  };
355
446
 
356
- const onRadioChange = (value: any) => {
357
- emit('update:modelValue', value);
447
+ const onRadioChange = (value: string | null) => {
448
+ emit("update:modelValue", value);
358
449
  dialog.value = false;
359
450
  };
360
451
 
361
- const onCheckboxChange = (value: any) => {
452
+ const onCheckboxChange = (value: string) => {
362
453
  if (Array.isArray(props.modelValue)) {
363
454
  if (props.modelValue.includes(value)) {
364
- emit('update:modelValue', props.modelValue.filter((item: any) => item !== value));
455
+ emit("update:modelValue", props.modelValue.filter((item: any) => item !== value));
365
456
  }
366
457
  else {
367
- emit('update:modelValue', [...props.modelValue, value]);
458
+ emit("update:modelValue", [...props.modelValue, value]);
368
459
  }
369
460
  }
370
- else {
461
+ else if (props.modelValue != null) {
371
462
  if (props.modelValue === value) {
372
- emit('update:modelValue', []);
463
+ emit("update:modelValue", []);
373
464
  }
374
465
  else {
375
- emit('update:modelValue', [props.modelValue, value]);
466
+ emit("update:modelValue", [props.modelValue, value]);
376
467
  }
377
468
  }
469
+ else {
470
+ emit("update:modelValue", [value]);
471
+ }
378
472
  };
379
473
 
380
474
  return {
475
+ mobileSelectionProps,
381
476
  isExtraSmall,
382
477
  mobileValue,
383
478
  validateOn,
384
479
  ColorEnum,
385
480
  listStyle,
386
481
  messages,
387
- blurred,
388
482
  dialog,
389
483
  height,
390
484
  style,
391
485
  openMobileOverlay,
392
486
  onCheckboxChange,
487
+ mobileItemProps,
393
488
  onRadioChange
394
489
  };
395
490
  }
@@ -11,12 +11,11 @@
11
11
  :validateOn="validateOn"
12
12
  :validationValue="$props.modelValue"
13
13
  @keydown.enter="onAdd"
14
- @blur="blurred = true"
15
14
  v-model="innerValue"
16
15
  v-bind="$attrs"
17
16
  >
18
17
  <template
19
- v-for="(_, name) in $slots"
18
+ v-for="(_, name) in slots"
20
19
  v-slot:[name]="slotData"
21
20
  >
22
21
  <slot
@@ -27,17 +26,16 @@
27
26
  <template
28
27
  #append-inner
29
28
  >
29
+ <FSButton
30
+ variant="icon"
31
+ icon="mdi-tag-outline"
32
+ :editable="$props.editable"
33
+ :color="ColorEnum.Dark"
34
+ @click="onAdd"
35
+ />
30
36
  <slot
31
37
  name="append-inner"
32
- >
33
- <FSButton
34
- variant="icon"
35
- icon="mdi-tag-outline"
36
- :editable="$props.editable"
37
- :color="ColorEnum.Dark"
38
- @click="onAdd"
39
- />
40
- </slot>
38
+ />
41
39
  </template>
42
40
  </FSTextField>
43
41
  <FSTagGroup
@@ -51,10 +49,12 @@
51
49
  </template>
52
50
 
53
51
  <script lang="ts">
54
- import { computed, defineComponent, PropType, ref } from "vue";
52
+ import type { PropType} from "vue";
53
+ import { computed, defineComponent, ref } from "vue";
55
54
 
56
- import { ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
57
- import { useColors, useRules } from "@dative-gpi/foundation-shared-components/composables";
55
+ import { useColors, useRules, useSlots } from "@dative-gpi/foundation-shared-components/composables";
56
+ import type { ColorBase} from "@dative-gpi/foundation-shared-components/models";
57
+ import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
58
58
 
59
59
  import FSTextField from "./FSTextField.vue";
60
60
  import FSTagGroup from "../FSTagGroup.vue";
@@ -118,8 +118,11 @@ export default defineComponent({
118
118
  },
119
119
  emits: ["update:modelValue"],
120
120
  setup(props, { emit }) {
121
- const {validateOn, blurred, getMessages} = useRules();
121
+ const {validateOn, getMessages} = useRules();
122
122
  const { getColors } = useColors();
123
+ const { slots } = useSlots();
124
+
125
+ delete slots["append-inner"];
123
126
 
124
127
  const errors = getColors(ColorEnum.Error);
125
128
  const lights = getColors(ColorEnum.Light);
@@ -171,7 +174,7 @@ export default defineComponent({
171
174
  validateOn,
172
175
  ColorEnum,
173
176
  messages,
174
- blurred,
177
+ slots,
175
178
  style,
176
179
  onRemove,
177
180
  onAdd