@dative-gpi/foundation-shared-components 0.0.87 → 0.0.89

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 (55) hide show
  1. package/components/FSButton.vue +23 -7
  2. package/components/FSCalendar.vue +3 -1
  3. package/components/FSCalendarTwin.vue +16 -6
  4. package/components/FSCard.vue +9 -3
  5. package/components/FSCheckbox.vue +6 -2
  6. package/components/FSClickable.vue +33 -9
  7. package/components/FSDialog.vue +9 -5
  8. package/components/FSDialogMenu.vue +80 -0
  9. package/components/FSDialogSubmit.vue +0 -1
  10. package/components/FSEditImage.vue +196 -34
  11. package/components/FSImage.vue +21 -7
  12. package/components/FSLink.vue +4 -2
  13. package/components/FSOptionGroup.vue +61 -72
  14. package/components/FSOptionItem.vue +22 -7
  15. package/components/FSRadioGroup.vue +11 -3
  16. package/components/FSToggleSet.vue +22 -60
  17. package/components/FSWindow.vue +2 -0
  18. package/components/autocompletes/FSAutocompleteLanguage.vue +28 -22
  19. package/components/autocompletes/FSAutocompleteTimeZone.vue +117 -17
  20. package/components/buttons/FSButtonFileMini.vue +6 -1
  21. package/components/fields/FSAutocompleteField.vue +139 -72
  22. package/components/fields/FSBaseField.vue +134 -0
  23. package/components/fields/FSColorField.vue +1 -1
  24. package/components/fields/FSDateField.vue +124 -35
  25. package/components/fields/FSDateTimeField.vue +171 -63
  26. package/components/fields/FSIconField.vue +4 -2
  27. package/components/fields/FSNumberField.vue +9 -3
  28. package/components/fields/FSPasswordField.vue +15 -5
  29. package/components/fields/FSRichTextField.vue +34 -18
  30. package/components/fields/FSSearchField.vue +24 -8
  31. package/components/fields/FSSelectField.vue +254 -93
  32. package/components/fields/FSTagField.vue +15 -9
  33. package/components/fields/FSTextArea.vue +31 -59
  34. package/components/fields/FSTextField.vue +22 -70
  35. package/components/fields/FSTimeField.vue +20 -55
  36. package/components/fields/FSTimeSlotField.vue +13 -59
  37. package/components/lists/FSDataIteratorItem.vue +16 -4
  38. package/components/lists/FSDataTableUI.vue +433 -181
  39. package/components/lists/FSDraggable.vue +26 -13
  40. package/components/lists/FSFilterButton.vue +10 -4
  41. package/components/lists/FSHeaderButton.vue +3 -1
  42. package/components/lists/FSHiddenButton.vue +3 -1
  43. package/composables/useAutocomplete.ts +6 -7
  44. package/composables/useSlots.ts +6 -18
  45. package/package.json +4 -4
  46. package/styles/components/fs_base_field.scss +12 -0
  47. package/styles/components/fs_dialog.scss +10 -2
  48. package/styles/components/fs_dialog_menu.scss +11 -0
  49. package/styles/components/fs_draggable.scss +12 -0
  50. package/styles/components/fs_edit_image.scss +29 -2
  51. package/styles/components/fs_text_area.scss +0 -13
  52. package/styles/components/fs_text_field.scss +1 -14
  53. package/styles/components/index.scss +2 -0
  54. package/styles/globals/overrides.scss +4 -0
  55. package/components/autocompletes/FSAutocompleteOrganisation.vue +0 -77
@@ -1,43 +1,12 @@
1
1
  <template>
2
- <FSCol>
3
- <slot
4
- v-if="!$props.hideHeader"
5
- name="label"
6
- >
7
- <FSRow
8
- :wrap="false"
9
- >
10
- <FSSpan
11
- v-if="$props.label"
12
- class="fs-text-field-label"
13
- font="text-overline"
14
- :style="style"
15
- >
16
- {{ $props.label }}
17
- </FSSpan>
18
- <FSSpan
19
- v-if="$props.label && $props.required"
20
- class="fs-text-field-label"
21
- style="margin-left: -8px;"
22
- font="text-overline"
23
- :ellipsis="false"
24
- :style="style"
25
- >
26
- *
27
- </FSSpan>
28
- <v-spacer
29
- style="min-width: 40px;"
30
- />
31
- <FSSpan
32
- v-if="messages.length > 0"
33
- class="fs-text-field-messages"
34
- font="text-overline"
35
- :style="style"
36
- >
37
- {{ messages.join(", ") }}
38
- </FSSpan>
39
- </FSRow>
40
- </slot>
2
+ <FSBaseField
3
+ :label="$props.label"
4
+ :description="$props.description"
5
+ :hideHeader="$props.hideHeader"
6
+ :required="$props.required"
7
+ :editable="$props.editable"
8
+ :messages="messages"
9
+ >
41
10
  <v-text-field
42
11
  class="fs-text-field"
43
12
  variant="outlined"
@@ -45,16 +14,16 @@
45
14
  :type="$props.type"
46
15
  :hideDetails="true"
47
16
  :readonly="!$props.editable"
48
- :clearable="$props.editable && !!$props.modelValue"
17
+ :clearable="$props.clearable && $props.editable && !!$props.modelValue"
49
18
  :rules="$props.rules"
50
19
  :validateOn="validateOn"
51
20
  :modelValue="$props.modelValue"
52
- @update:modelValue="(value) => $emit('update:modelValue', value)"
21
+ @update:modelValue="$emit('update:modelValue', $event)"
53
22
  @blur="blurred = true"
54
23
  v-bind="$attrs"
55
24
  >
56
25
  <template
57
- v-for="(_, name) in slots"
26
+ v-for="(_, name) in $slots"
58
27
  v-slot:[name]="slotData"
59
28
  >
60
29
  <slot
@@ -66,7 +35,7 @@
66
35
  #clear
67
36
  >
68
37
  <FSButton
69
- v-if="$props.editable && $props.modelValue"
38
+ v-if="$props.clearable && $props.editable && !!$props.modelValue"
70
39
  icon="mdi-close"
71
40
  variant="icon"
72
41
  :color="ColorEnum.Dark"
@@ -74,39 +43,23 @@
74
43
  />
75
44
  </template>
76
45
  </v-text-field>
77
- <slot
78
- name="description"
79
- >
80
- <FSSpan
81
- v-if="$props.description"
82
- class="fs-text-field-description"
83
- font="text-underline"
84
- :style="style"
85
- >
86
- {{ $props.description }}
87
- </FSSpan>
88
- </slot>
89
- </FSCol>
46
+ </FSBaseField>
90
47
  </template>
91
48
 
92
49
  <script lang="ts">
93
50
  import { computed, defineComponent, PropType } from "vue";
94
51
 
95
- import { useColors, useRules, useSlots } from "@dative-gpi/foundation-shared-components/composables";
52
+ import { useColors, useRules } from "@dative-gpi/foundation-shared-components/composables";
96
53
  import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
97
54
 
55
+ import FSBaseField from "./FSBaseField.vue";
98
56
  import FSButton from "../FSButton.vue";
99
- import FSSpan from "../FSSpan.vue";
100
- import FSCol from "../FSCol.vue";
101
- import FSRow from "../FSRow.vue";
102
57
 
103
58
  export default defineComponent({
104
59
  name: "FSTextField",
105
60
  components: {
106
- FSButton,
107
- FSSpan,
108
- FSCol,
109
- FSRow
61
+ FSBaseField,
62
+ FSButton
110
63
  },
111
64
  props: {
112
65
  label: {
@@ -149,6 +102,11 @@ export default defineComponent({
149
102
  required: false,
150
103
  default: null
151
104
  },
105
+ clearable: {
106
+ type: Boolean,
107
+ required: false,
108
+ default: true
109
+ },
152
110
  editable: {
153
111
  type: Boolean,
154
112
  required: false,
@@ -159,10 +117,6 @@ export default defineComponent({
159
117
  setup(props) {
160
118
  const { validateOn, blurred, getMessages } = useRules();
161
119
  const { getColors } = useColors();
162
- const { slots } = useSlots();
163
-
164
- delete slots.label;
165
- delete slots.description;
166
120
 
167
121
  const errors = getColors(ColorEnum.Error);
168
122
  const lights = getColors(ColorEnum.Light);
@@ -182,7 +136,6 @@ export default defineComponent({
182
136
  "--fs-text-field-border-color" : lights.dark,
183
137
  "--fs-text-field-color" : darks.base,
184
138
  "--fs-text-field-active-border-color": darks.dark,
185
- "--fs-text-field-error-color" : errors.base,
186
139
  "--fs-text-field-error-border-color" : errors.base
187
140
  };
188
141
  });
@@ -194,7 +147,6 @@ export default defineComponent({
194
147
  ColorEnum,
195
148
  messages,
196
149
  blurred,
197
- slots,
198
150
  style
199
151
  };
200
152
  }
@@ -1,36 +1,12 @@
1
1
  <template>
2
- <FSCol>
3
- <slot v-if="!$props.hideHeader" name="label">
4
- <FSRow :wrap="false">
5
- <FSSpan
6
- v-if="$props.label"
7
- class="fs-time-field-label"
8
- font="text-overline"
9
- :style="style"
10
- >
11
- {{ $props.label }}
12
- </FSSpan>
13
- <FSSpan
14
- v-if="$props.label && $props.required"
15
- class="fs-time-field-label"
16
- style="margin-left: -8px;"
17
- font="text-overline"
18
- :ellipsis="false"
19
- :style="style"
20
- >
21
- *
22
- </FSSpan>
23
- <v-spacer style="min-width: 40px;" />
24
- <FSSpan
25
- v-if="messages.length > 0"
26
- class="fs-time-field-messages"
27
- font="text-overline"
28
- :style="style"
29
- >
30
- {{ messages.join(", ") }}
31
- </FSSpan>
32
- </FSRow>
33
- </slot>
2
+ <FSBaseField
3
+ :label="$props.label"
4
+ :description="$props.description"
5
+ :hideHeader="$props.hideHeader"
6
+ :required="$props.required"
7
+ :editable="$props.editable"
8
+ :messages="messages"
9
+ >
34
10
  <FSRow>
35
11
  <FSNumberField
36
12
  :editable="$props.editable"
@@ -42,9 +18,15 @@
42
18
  :modelValue="innerTime"
43
19
  @update:modelValue="onSubmitValue"
44
20
  v-bind="$attrs"
21
+ >
22
+ <template
23
+ v-for="(_, name) in $slots"
24
+ v-slot:[name]="slotData"
45
25
  >
46
- <template v-for="(_, name) in slots" v-slot:[name]="slotData">
47
- <slot :name="name" v-bind="slotData" />
26
+ <slot
27
+ :name="name"
28
+ v-bind="slotData"
29
+ />
48
30
  </template>
49
31
  </FSNumberField>
50
32
  <FSSelectField
@@ -57,30 +39,19 @@
57
39
  @update:modelValue="onSubmitTimeScale"
58
40
  />
59
41
  </FSRow>
60
- <slot name="description">
61
- <FSSpan
62
- v-if="$props.description"
63
- class="fs-time-field-description"
64
- font="text-underline"
65
- :style="style"
66
- >
67
- {{ $props.description }}
68
- </FSSpan>
69
- </slot>
70
- </FSCol>
42
+ </FSBaseField>
71
43
  </template>
72
44
 
73
45
  <script lang="ts">
74
46
  import { computed, defineComponent, PropType, ref } from "vue";
75
47
 
76
48
  import { getTimeScaleIndex, timeScale } from "@dative-gpi/foundation-shared-components/utils";
77
- import { useColors, useRules, useSlots } from "@dative-gpi/foundation-shared-components/composables";
49
+ import { useColors, useRules } from "@dative-gpi/foundation-shared-components/composables";
78
50
  import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
79
51
 
80
52
  import FSNumberField from "./FSNumberField.vue";
81
53
  import FSSelectField from "./FSSelectField.vue";
82
- import FSSpan from "../FSSpan.vue";
83
- import FSCol from "../FSCol.vue";
54
+ import FSBaseField from "./FSBaseField.vue";
84
55
  import FSRow from "../FSRow.vue";
85
56
 
86
57
  export default defineComponent({
@@ -88,8 +59,7 @@ export default defineComponent({
88
59
  components: {
89
60
  FSNumberField,
90
61
  FSSelectField,
91
- FSSpan,
92
- FSCol,
62
+ FSBaseField,
93
63
  FSRow
94
64
  },
95
65
  props: {
@@ -138,10 +108,6 @@ export default defineComponent({
138
108
  setup(props, { emit }) {
139
109
  const { validateOn, blurred, getMessages } = useRules();
140
110
  const { getColors } = useColors();
141
- const { slots } = useSlots();
142
-
143
- delete slots.label;
144
- delete slots.description;
145
111
 
146
112
  const errors = getColors(ColorEnum.Error);
147
113
  const lights = getColors(ColorEnum.Light);
@@ -198,7 +164,6 @@ export default defineComponent({
198
164
  timeScale,
199
165
  messages,
200
166
  blurred,
201
- slots,
202
167
  style,
203
168
  onSubmitTimeScale,
204
169
  onSubmitValue
@@ -1,36 +1,12 @@
1
1
  <template>
2
- <FSCol>
3
- <slot v-if="!$props.hideHeader" name="label">
4
- <FSRow :wrap="false">
5
- <FSSpan
6
- v-if="$props.label"
7
- class="fs-time-slot-field-label"
8
- font="text-overline"
9
- :style="style"
10
- >
11
- {{ $props.label }}
12
- </FSSpan>
13
- <FSSpan
14
- v-if="$props.label && $props.required"
15
- class="fs-time-slot-field-label"
16
- style="margin-left: -8px;"
17
- font="text-overline"
18
- :ellipsis="false"
19
- :style="style"
20
- >
21
- *
22
- </FSSpan>
23
- <v-spacer style="min-width: 40px;" />
24
- <FSSpan
25
- v-if="messages.length > 0"
26
- class="fs-time-slot-field-messages"
27
- font="text-overline"
28
- :style="style"
29
- >
30
- {{ messages.join(", ") }}
31
- </FSSpan>
32
- </FSRow>
33
- </slot>
2
+ <FSBaseField
3
+ :label="$props.label"
4
+ :description="$props.description"
5
+ :hideHeader="$props.hideHeader"
6
+ :required="$props.required"
7
+ :editable="$props.editable"
8
+ :messages="messages"
9
+ >
34
10
  <FSRow>
35
11
  <FSRow
36
12
  :wrap="false"
@@ -42,16 +18,11 @@
42
18
  :clearable="false"
43
19
  :style="style"
44
20
  :rules="$props.rules"
45
- :messages="messages"
46
21
  :validateOn="validateOn"
47
22
  :validationValue="$props.modelValue"
48
23
  :modelValue="dayStart"
49
24
  @update:modelValue="onChangeDayStart"
50
- >
51
- <template v-for="(_, name) in slots" v-slot:[name]="slotData">
52
- <slot :name="name" v-bind="slotData" />
53
- </template>
54
- </FSSelectField>
25
+ />
55
26
  <FSClock
56
27
  class="fs-time-slot-field-number"
57
28
  :editable="$props.editable"
@@ -86,39 +57,27 @@
86
57
  />
87
58
  </FSRow>
88
59
  </FSRow>
89
- <slot name="description">
90
- <FSSpan
91
- v-if="$props.description"
92
- class="fs-time-slot-field-description"
93
- font="text-underline"
94
- :style="style"
95
- >
96
- {{ $props.description }}
97
- </FSSpan>
98
- </slot>
99
- </FSCol>
60
+ </FSBaseField>
100
61
  </template>
101
62
 
102
63
  <script lang="ts">
103
64
  import { computed, defineComponent, PropType } from "vue";
104
65
 
105
- import { useColors, useRules, useSlots } from "@dative-gpi/foundation-shared-components/composables";
66
+ import { useColors, useRules } from "@dative-gpi/foundation-shared-components/composables";
106
67
  import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
107
68
  import { Days } from "@dative-gpi/foundation-shared-domain/models";
108
69
 
109
70
  import FSSelectField from "./FSSelectField.vue";
71
+ import FSBaseField from "./FSBaseField.vue";
110
72
  import FSClock from "../FSClock.vue";
111
- import FSSpan from "../FSSpan.vue";
112
- import FSCol from "../FSCol.vue";
113
73
  import FSRow from "../FSRow.vue";
114
74
 
115
75
  export default defineComponent({
116
76
  name: "FSTimeSlotField",
117
77
  components: {
118
78
  FSSelectField,
79
+ FSBaseField,
119
80
  FSClock,
120
- FSSpan,
121
- FSCol,
122
81
  FSRow
123
82
  },
124
83
  props: {
@@ -167,10 +126,6 @@ export default defineComponent({
167
126
  setup(props, { emit }) {
168
127
  const { validateOn, blurred, getMessages } = useRules();
169
128
  const { getColors } = useColors();
170
- const { slots } = useSlots();
171
-
172
- delete slots.label;
173
- delete slots.description;
174
129
 
175
130
  const errors = getColors(ColorEnum.Error);
176
131
  const lights = getColors(ColorEnum.Light);
@@ -285,7 +240,6 @@ export default defineComponent({
285
240
  messages,
286
241
  blurred,
287
242
  dayEnd,
288
- slots,
289
243
  style,
290
244
  onChangeHourStart,
291
245
  onChangeDayStart,
@@ -7,14 +7,20 @@
7
7
  :variant="variant"
8
8
  >
9
9
  <FSCol>
10
- <slot name="item.top" v-bind="{ item: $props.item }" />
10
+ <slot
11
+ name="item.top"
12
+ v-bind="{ item: $props.item }"
13
+ />
11
14
  <FSRow
12
15
  v-for="(header, index) in $props.headers"
13
16
  align="center-left"
14
17
  :wrap="false"
15
18
  :key="index"
16
19
  >
17
- <slot :name="`header.${header.value}`" v-bind="{ header }">
20
+ <slot
21
+ :name="`header.${header.value}`"
22
+ v-bind="{ header }"
23
+ >
18
24
  <FSRow
19
25
  align="center-left"
20
26
  >
@@ -25,7 +31,10 @@
25
31
  </FSText>
26
32
  </FSRow>
27
33
  </slot>
28
- <slot :name="`item.${header.value}`" v-bind="{ item: $props.item }">
34
+ <slot
35
+ :name="`item.${header.value}`"
36
+ v-bind="{ item: $props.item }"
37
+ >
29
38
  <FSRow
30
39
  align="center-left"
31
40
  >
@@ -35,7 +44,10 @@
35
44
  </FSRow>
36
45
  </slot>
37
46
  </FSRow>
38
- <slot name="item.bottom" v-bind="{ item: $props.item }" />
47
+ <slot
48
+ name="item.bottom"
49
+ v-bind="{ item: $props.item }"
50
+ />
39
51
  </FSCol>
40
52
  <FSCard
41
53
  v-if="$props.showSelect"