@dative-gpi/foundation-shared-components 1.0.81 → 1.0.83

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 (39) hide show
  1. package/components/FSClickable.vue +0 -1
  2. package/components/FSClock.vue +12 -3
  3. package/components/FSLoader.vue +2 -2
  4. package/components/FSSlideGroup.vue +9 -7
  5. package/components/FSSpan.vue +4 -2
  6. package/components/FSTabs.vue +5 -2
  7. package/components/FSTag.vue +1 -1
  8. package/components/FSText.vue +4 -2
  9. package/components/fields/FSAutocompleteField.vue +18 -14
  10. package/components/fields/FSRichTextField.vue +25 -19
  11. package/components/fields/FSSelectField.vue +7 -3
  12. package/components/fields/FSTermField.vue +1 -1
  13. package/components/fields/FSTextArea.vue +10 -4
  14. package/components/fields/FSTextField.vue +8 -3
  15. package/components/lists/FSDataTableUI.vue +41 -13
  16. package/components/tiles/FSLoadTile.vue +2 -0
  17. package/components/tiles/FSTile.vue +4 -1
  18. package/components/views/desktop/FSBaseEntityDesktopView.vue +5 -3
  19. package/composables/useBreakpoints.ts +32 -5
  20. package/models/tables.ts +1 -0
  21. package/package.json +4 -4
  22. package/styles/components/fs_clickable.scss +2 -11
  23. package/styles/components/fs_clock.scss +0 -10
  24. package/styles/components/fs_data_table.scss +2 -7
  25. package/styles/components/fs_filter_button.scss +1 -1
  26. package/styles/components/fs_hidden_button.scss +2 -7
  27. package/styles/components/fs_meta_field.scss +3 -5
  28. package/styles/components/fs_radio.scss +0 -11
  29. package/styles/components/fs_rich_text_field.scss +1 -10
  30. package/styles/components/fs_span.scss +1 -1
  31. package/styles/components/fs_tabs.scss +9 -32
  32. package/styles/components/fs_tag.scss +3 -19
  33. package/styles/components/fs_text_area.scss +2 -21
  34. package/styles/components/fs_tile.scss +0 -10
  35. package/styles/globals/index.scss +1 -5
  36. package/styles/globals/overrides.scss +15 -40
  37. package/styles/globals/text_fonts.scss +18 -66
  38. package/styles/globals/breakpoints.scss +0 -20
  39. package/styles/globals/fixes.scss +0 -5
@@ -115,7 +115,6 @@
115
115
  v-if="$props.load"
116
116
  >
117
117
  <v-progress-circular
118
- :class="$props.class"
119
118
  class="fs-clickable-load"
120
119
  width="2"
121
120
  size="24"
@@ -54,9 +54,9 @@
54
54
  <script lang="ts">
55
55
  import { computed, defineComponent, type PropType, ref, type StyleValue, watch } from "vue";
56
56
 
57
+ import { useBreakpoints, useColors } from "@dative-gpi/foundation-shared-components/composables";
57
58
  import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
58
59
  import { useDateFormat } from "@dative-gpi/foundation-shared-services/composables";
59
- import { useColors } from "@dative-gpi/foundation-shared-components/composables";
60
60
 
61
61
  import FSSlider from "./FSSlider.vue";
62
62
  import FSCol from "./FSCol.vue";
@@ -99,6 +99,7 @@ export default defineComponent({
99
99
  emits: ["update:modelValue"],
100
100
  setup(props, { emit }) {
101
101
  const { epochToLongDateFormat } = useDateFormat();
102
+ const { isMobileSized } = useBreakpoints();
102
103
  const { getColors } = useColors();
103
104
 
104
105
  const colors = computed(() => getColors(props.color));
@@ -116,7 +117,11 @@ export default defineComponent({
116
117
  "--fs-clock-field-background-color" : backgrounds.base,
117
118
  "--fs-clock-field-border-color" : lights.base,
118
119
  "--fs-clock-field-color" : lights.dark,
119
- "--fs-clock-field-active-border-color": lights.base
120
+ "--fs-clock-field-active-border-color": lights.base,
121
+ "--fs-font-font-size" : isMobileSized.value ? "12px" : "14px",
122
+ "--fs-font-line-height" : isMobileSized.value ? "16px" : "20px",
123
+ "--fs-font-letter-spacing" : isMobileSized.value ? "-0.36px" : "-0.42px",
124
+ "--fs-base-field-input-height" : isMobileSized.value ? "34px" : "38px"
120
125
  };
121
126
  }
122
127
  return {
@@ -124,7 +129,11 @@ export default defineComponent({
124
129
  "--fs-clock-field-background-color" : colors.value.light,
125
130
  "--fs-clock-field-border-color" : colors.value.base,
126
131
  "--fs-clock-field-color" : darks.base,
127
- "--fs-clock-field-active-border-color": colors.value.dark
132
+ "--fs-clock-field-active-border-color": colors.value.dark,
133
+ "--fs-font-font-size" : isMobileSized.value ? "12px" : "14px",
134
+ "--fs-font-line-height" : isMobileSized.value ? "16px" : "20px",
135
+ "--fs-font-letter-spacing" : isMobileSized.value ? "-0.36px" : "-0.42px",
136
+ "--fs-base-field-input-height" : isMobileSized.value ? "34px" : "38px"
128
137
  };
129
138
  });
130
139
 
@@ -76,8 +76,8 @@ export default defineComponent({
76
76
  const getWidth = computed((): string | number => {
77
77
  switch (props.variant) {
78
78
  case "standard": return sizeToVar(props.width);
79
- case "button" : return isMobileSized ? "36px" : "40px";
80
- case "input" : return isMobileSized ? "calc(50% - 124px)" : "calc(50% - 132px)";
79
+ case "button" : return isMobileSized.value ? "36px" : "40px";
80
+ case "input" : return isMobileSized.value ? "calc(50% - 124px)" : "calc(50% - 132px)";
81
81
  case "field" : return "100%";
82
82
  case "chip" : return "8vw";
83
83
  case "text-h1" : return "calc(50% - 32px)";
@@ -42,7 +42,7 @@
42
42
  <script lang="ts">
43
43
  import { computed, defineComponent, onMounted, onUnmounted, type PropType, ref, type StyleValue } from "vue";
44
44
 
45
- import { useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
45
+ import { useBreakpoints, useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
46
46
  import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
47
47
  import { sizeToVar } from "@dative-gpi/foundation-shared-components/utils";
48
48
  import { uuidv4 } from "@dative-gpi/bones-ui/tools/uuid";
@@ -86,6 +86,7 @@ export default defineComponent({
86
86
  }
87
87
  },
88
88
  setup(props) {
89
+ const { isMobileSized } = useBreakpoints();
89
90
  const { getChildren } = useSlots();
90
91
  const { getColors } = useColors();
91
92
 
@@ -99,12 +100,13 @@ export default defineComponent({
99
100
  const elementId = `id${uuidv4()}`;
100
101
 
101
102
  const style = computed((): StyleValue => ({
102
- "--fs-group-padding" : sizeToVar(props.padding),
103
- "--fs-group-gap" : sizeToVar(props.gap),
104
- "--fs-group-color" : darks.soft,
105
- "--fs-group-hover-color" : darks.dark,
106
- "--fs-group-width" : sizeToVar(props.width),
107
- "--fs-group-height" : sizeToVar(props.height)
103
+ "--fs-group-padding" : sizeToVar(props.padding),
104
+ "--fs-group-gap" : sizeToVar(props.gap),
105
+ "--fs-group-color" : darks.soft,
106
+ "--fs-group-hover-color": darks.dark,
107
+ "--fs-group-width" : sizeToVar(props.width),
108
+ "--fs-group-height" : sizeToVar(props.height),
109
+ "--fs-group-icon-size" : isMobileSized.value ? "20px" : "24px",
108
110
  }));
109
111
 
110
112
  const nextClasses = computed((): string[] => {
@@ -13,7 +13,7 @@
13
13
  <script lang="ts">
14
14
  import { computed, defineComponent, type PropType, type StyleValue } from "vue";
15
15
 
16
- import { useSlots } from "@dative-gpi/foundation-shared-components/composables";
16
+ import { useBreakpoints, useSlots } from "@dative-gpi/foundation-shared-components/composables";
17
17
 
18
18
  export default defineComponent({
19
19
  name: "FSSpan",
@@ -45,10 +45,12 @@ export default defineComponent({
45
45
  }
46
46
  },
47
47
  setup(props) {
48
+ const { fontStyles } = useBreakpoints();
48
49
  const { slots } = useSlots();
49
50
 
50
51
  const style = computed((): StyleValue => ({
51
- "--fs-span-line-clamp": props.lineClamp.toString()
52
+ "--fs-span-line-clamp": props.lineClamp.toString(),
53
+ ...fontStyles.value
52
54
  }));
53
55
 
54
56
  const classes = computed((): string[] => {
@@ -18,8 +18,8 @@
18
18
  import { computed, defineComponent, onMounted, type PropType, type StyleValue } from "vue";
19
19
  import { useRouter } from "vue-router";
20
20
 
21
+ import { useBreakpoints, useColors } from "@dative-gpi/foundation-shared-components/composables";
21
22
  import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
22
- import { useColors } from "@dative-gpi/foundation-shared-components/composables";
23
23
 
24
24
  export default defineComponent({
25
25
  name: "FSTabs",
@@ -42,6 +42,7 @@ export default defineComponent({
42
42
  },
43
43
  emits: ["update:tab"],
44
44
  setup(props, { emit }) {
45
+ const { isMobileSized } = useBreakpoints();
45
46
  const { getColors } = useColors();
46
47
  const router = useRouter();
47
48
 
@@ -56,7 +57,9 @@ export default defineComponent({
56
57
  "--fs-tab-hover-border-color" : darks.dark,
57
58
  "--fs-tab-active-background-color": colors.value.light,
58
59
  "--fs-tab-tag-background-color" : colors.value.base,
59
- "--fs-tab-tag-color" : colors.value.baseContrast!
60
+ "--fs-tab-tag-color" : colors.value.baseContrast!,
61
+ "--fs-tab-height" : isMobileSized.value ? "40px" : "48px",
62
+ "--fs-tab-tag-size" : isMobileSized.value ? "24px" : "28px"
60
63
  }));
61
64
 
62
65
  const onUpdateTab = (tab: number): void => {
@@ -59,7 +59,7 @@ export default defineComponent({
59
59
  height: {
60
60
  type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
61
61
  required: false,
62
- default: "hug"
62
+ default: () => ["28px", "24px"]
63
63
  },
64
64
  width: {
65
65
  type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
@@ -13,8 +13,8 @@
13
13
  <script lang="ts">
14
14
  import { computed, defineComponent, type PropType, type StyleValue } from "vue";
15
15
 
16
+ import { useBreakpoints, useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
16
17
  import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
17
- import { useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
18
18
 
19
19
  export default defineComponent({
20
20
  name: "FSText",
@@ -51,6 +51,7 @@ export default defineComponent({
51
51
  }
52
52
  },
53
53
  setup(props) {
54
+ const { fontStyles } = useBreakpoints();
54
55
  const { getColors } = useColors();
55
56
  const { slots } = useSlots();
56
57
 
@@ -58,7 +59,8 @@ export default defineComponent({
58
59
 
59
60
  const style = computed((): StyleValue => ({
60
61
  "--fs-span-line-clamp": props.lineClamp.toString(),
61
- "--fs-text-color" : colors.value[props.variant]!
62
+ "--fs-text-color" : colors.value[props.variant]!,
63
+ ...fontStyles.value
62
64
  }));
63
65
 
64
66
  const classes = computed((): string[] => {
@@ -602,7 +602,7 @@ export default defineComponent({
602
602
  },
603
603
  emits: ["update:modelValue", "update:search", "add:item"],
604
604
  setup: (props, { emit }) => {
605
- const { isExtraSmall, isMobileSized } = useBreakpoints();
605
+ const { fontStyles, isExtraSmall, isMobileSized } = useBreakpoints();
606
606
  const { validateOn, getMessages } = useRules();
607
607
  const { getColors } = useColors();
608
608
  const { slots } = useSlots();
@@ -622,21 +622,25 @@ export default defineComponent({
622
622
  const style = computed((): StyleValue => {
623
623
  if (!props.editable) {
624
624
  return {
625
- "--fs-autocomplete-field-cursor": "default",
626
- "--fs-autocomplete-field-border-color": lights.base,
627
- "--fs-autocomplete-field-color": lights.dark,
628
- "--fs-autocomplete-field-active-border-color": lights.base
625
+ "--fs-autocomplete-field-cursor" : "default",
626
+ "--fs-autocomplete-field-border-color" : lights.base,
627
+ "--fs-autocomplete-field-color" : lights.dark,
628
+ "--fs-autocomplete-field-active-border-color": lights.base,
629
+ "--fs-base-field-input-height" : isMobileSized.value ? "34px" : "38px",
630
+ ...fontStyles.value
629
631
  };
630
632
  }
631
633
  return {
632
- "--fs-autocomplete-field-cursor": "text",
633
- "--fs-autocomplete-field-background-color": backgrounds.base,
634
+ "--fs-autocomplete-field-cursor" : "text",
635
+ "--fs-autocomplete-field-background-color" : backgrounds.base,
634
636
  "--fs-autocomplete-field-no-data-background-color": lights.light,
635
- "--fs-autocomplete-field-border-color": lights.dark,
636
- "--fs-autocomplete-field-color": darks.base,
637
- "--fs-autocomplete-field-active-border-color": darks.dark,
638
- "--fs-autocomplete-field-error-color": errors.base,
639
- "--fs-autocomplete-field-error-border-color": errors.base
637
+ "--fs-autocomplete-field-border-color" : lights.dark,
638
+ "--fs-autocomplete-field-color" : darks.base,
639
+ "--fs-autocomplete-field-active-border-color" : darks.dark,
640
+ "--fs-autocomplete-field-error-color" : errors.base,
641
+ "--fs-autocomplete-field-error-border-color" : errors.base,
642
+ "--fs-base-field-input-height" : isMobileSized.value ? "34px" : "38px",
643
+ ...fontStyles.value
640
644
  };
641
645
  });
642
646
 
@@ -699,8 +703,8 @@ export default defineComponent({
699
703
  });
700
704
 
701
705
  const maxHeight = computed(() => {
702
- const other = 8 + 8 // Paddings
703
- + (isMobileSized ? 36 : 40) + 8; // Header
706
+ const other = 8 + 8 // Paddings
707
+ + (isMobileSized.value ? 36 : 40) + 8; // Header
704
708
  return `calc(100vh - 40px - ${other}px)`;
705
709
  });
706
710
 
@@ -316,7 +316,7 @@ export default defineComponent({
316
316
  },
317
317
  emits: ["update:modelValue"],
318
318
  setup(props, { emit }) {
319
- const { isMobileSized } = useBreakpoints();
319
+ const { fontStyles, isMobileSized } = useBreakpoints();
320
320
  const { getColors } = useColors();
321
321
 
322
322
  const linkColors = computed(() => getColors(props.linkColor));
@@ -407,35 +407,41 @@ export default defineComponent({
407
407
  case "standard": {
408
408
  if (!props.editable) {
409
409
  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,
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,
414
414
  "--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
415
+ "--fs-rich-text-field-link-color" : linkColors.value.light,
416
+ "--fs-rich-text-field-min-height" : minHeight,
417
+ "--fs-rich-text-field-padding" : isMobileSized.value ? "6px 16px" : "10px 12px",
418
+ ...fontStyles.value
417
419
  };
418
420
  }
419
421
  else {
420
422
  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,
423
+ "--fs-rich-text-field-undo-cursor" : canUndo.value ? "pointer" : "default",
424
+ "--fs-rich-text-field-icon-cursor" : "pointer",
425
+ "--fs-rich-text-field-border-color" : lights.dark,
426
+ "--fs-rich-text-field-color" : darks.base,
427
+ "--fs-rich-text-field-active-border-color" : darks.dark,
428
+ "--fs-rich-text-field-link-color" : linkColors.value.dark,
429
+ "--fs-rich-text-field-min-height" : minHeight,
428
430
  "--fs-rich-text-field-variable-backgroundcolor": getColors(ColorEnum.Primary).light,
429
- "--fs-rich-text-field-variable-color": getColors(ColorEnum.Primary).lightContrast!
431
+ "--fs-rich-text-field-variable-color" : getColors(ColorEnum.Primary).lightContrast!,
432
+ "--fs-rich-text-field-padding" : isMobileSized.value ? "6px 16px" : "10px 12px",
433
+ ...fontStyles.value
430
434
  };
431
435
  }
432
436
  }
433
437
  case "readonly": return {
434
- "--fs-rich-text-field-border-color": "transparent",
435
- "--fs-rich-text-field-color": darks.base,
438
+ "--fs-rich-text-field-border-color" : "transparent",
439
+ "--fs-rich-text-field-color" : darks.base,
436
440
  "--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
441
+ "--fs-rich-text-field-link-color" : linkColors.value.dark,
442
+ "--fs-rich-text-field-min-height" : minHeight,
443
+ "--fs-rich-text-field-padding" : "0",
444
+ ...fontStyles.value
439
445
  }
440
446
  }
441
447
  });
@@ -560,8 +560,8 @@ export default defineComponent({
560
560
  },
561
561
  emits: ["update:modelValue"],
562
562
  setup(props, { emit }) {
563
+ const { fontStyles, isExtraSmall, isMobileSized } = useBreakpoints();
563
564
  const { validateOn, getMessages } = useRules();
564
- const { isExtraSmall } = useBreakpoints();
565
565
  const { getColors } = useColors();
566
566
  const { slots } = useSlots();
567
567
 
@@ -581,7 +581,9 @@ export default defineComponent({
581
581
  "--fs-select-field-cursor" : "default",
582
582
  "--fs-select-field-border-color" : lights.base,
583
583
  "--fs-select-field-color" : lights.dark,
584
- "--fs-select-field-active-border-color": lights.base
584
+ "--fs-select-field-active-border-color": lights.base,
585
+ "--fs-base-field-input-height" : isMobileSized.value ? "34px" : "38px",
586
+ ...fontStyles.value
585
587
  };
586
588
  }
587
589
  return {
@@ -590,7 +592,9 @@ export default defineComponent({
590
592
  "--fs-select-field-border-color" : lights.dark,
591
593
  "--fs-select-field-color" : darks.base,
592
594
  "--fs-select-field-active-border-color": darks.dark,
593
- "--fs-select-field-error-border-color" : errors.base
595
+ "--fs-select-field-error-border-color" : errors.base,
596
+ "--fs-base-field-input-height" : isMobileSized.value ? "34px" : "38px",
597
+ ...fontStyles.value
594
598
  };
595
599
  });
596
600
 
@@ -68,7 +68,7 @@
68
68
  </template>
69
69
  <FSDateTimeRangeField
70
70
  v-else-if="innerDateSetting === DateSetting.Pick"
71
- minWidth="180px"
71
+ :width="['350px', '310px']"
72
72
  :rules="[DateRules.required()]"
73
73
  :editable="$props.editable"
74
74
  :hideHeader="true"
@@ -136,8 +136,8 @@ export default defineComponent({
136
136
  },
137
137
  emits: ["update:modelValue"],
138
138
  setup(props) {
139
+ const { fontStyles, isMobileSized } = useBreakpoints();
139
140
  const { validateOn, getMessages } = useRules();
140
- const { isMobileSized } = useBreakpoints();
141
141
  const { getColors } = useColors();
142
142
  const { slots } = useSlots();
143
143
 
@@ -152,7 +152,7 @@ export default defineComponent({
152
152
  let fieldHeight: string | undefined = undefined;
153
153
  if (!props.autoGrow) {
154
154
  const base = isMobileSized.value ? 34 : 38;
155
- const row = isMobileSized.value ? 14 : 16;
155
+ const row = isMobileSized.value ? 18 : 20;
156
156
  if (props.rows > 1) {
157
157
  height = `${base + (props.rows - 1) * row}px`;
158
158
  }
@@ -168,7 +168,10 @@ export default defineComponent({
168
168
  "--fs-text-area-color" : lights.dark,
169
169
  "--fs-text-area-active-border-color": lights.base,
170
170
  "--fs-text-area-height" : height,
171
- "--fs-text-area-field-height" : fieldHeight
171
+ "--fs-text-area-field-height" : fieldHeight,
172
+ "--fs-text-area-padding" : isMobileSized.value ? "10px 16px" : "11px 16px",
173
+ "--fs-base-field-input-height" : isMobileSized.value ? "34px" : "38px",
174
+ ...fontStyles.value
172
175
  };
173
176
  }
174
177
  return {
@@ -178,7 +181,10 @@ export default defineComponent({
178
181
  "--fs-text-area-active-border-color": darks.dark,
179
182
  "--fs-text-area-error-border-color" : errors.base,
180
183
  "--fs-text-area-height" : height,
181
- "--fs-text-area-field-height" : fieldHeight
184
+ "--fs-text-area-field-height" : fieldHeight,
185
+ "--fs-text-area-padding" : isMobileSized.value ? "10px 16px" : "11px 16px",
186
+ "--fs-base-field-input-height" : isMobileSized.value ? "34px" : "38px",
187
+ ...fontStyles.value
182
188
  };
183
189
  });
184
190
 
@@ -71,7 +71,7 @@
71
71
  <script lang="ts">
72
72
  import { computed, defineComponent, type PropType, type StyleValue } from "vue";
73
73
 
74
- import { useColors, useRules, useSlots } from "@dative-gpi/foundation-shared-components/composables";
74
+ import { useBreakpoints, useColors, useRules, useSlots } from "@dative-gpi/foundation-shared-components/composables";
75
75
  import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
76
76
 
77
77
  import FSBaseField from "./FSBaseField.vue";
@@ -137,6 +137,7 @@ export default defineComponent({
137
137
  },
138
138
  emits: ["update:modelValue"],
139
139
  setup(props) {
140
+ const { fontStyles, isMobileSized } = useBreakpoints();
140
141
  const { validateOn, getMessages } = useRules();
141
142
  const { getColors } = useColors();
142
143
  const { slots } = useSlots();
@@ -154,7 +155,9 @@ export default defineComponent({
154
155
  "--fs-text-field-cursor" : "default",
155
156
  "--fs-text-field-border-color" : lights.base,
156
157
  "--fs-text-field-color" : lights.dark,
157
- "--fs-text-field-active-border-color": lights.base
158
+ "--fs-text-field-active-border-color": lights.base,
159
+ "--fs-base-field-input-height" : isMobileSized.value ? "34px" : "38px",
160
+ ...fontStyles.value
158
161
  };
159
162
  }
160
163
  return {
@@ -162,7 +165,9 @@ export default defineComponent({
162
165
  "--fs-text-field-border-color" : lights.dark,
163
166
  "--fs-text-field-color" : darks.base,
164
167
  "--fs-text-field-active-border-color": darks.dark,
165
- "--fs-text-field-error-border-color" : errors.base
168
+ "--fs-text-field-error-border-color" : errors.base,
169
+ "--fs-base-field-input-height" : isMobileSized.value ? "34px" : "38px",
170
+ ...fontStyles.value
166
171
  };
167
172
  });
168
173
 
@@ -22,8 +22,8 @@
22
22
  <FSButton
23
23
  v-if="filterableHeaders.length > 0"
24
24
  prependIcon="mdi-filter-variant"
25
- :variant="showFilters ? 'full' : 'standard'"
26
- @click="showFilters = !showFilters"
25
+ :variant="innerShowFilters ? 'full' : 'standard'"
26
+ @click="innerShowFilters = !innerShowFilters"
27
27
  />
28
28
  </template>
29
29
  <slot
@@ -33,7 +33,6 @@
33
33
  <template
34
34
  v-if="!$props.disableTable && !$props.disableIterator"
35
35
  >
36
- <v-spacer />
37
36
  <FSRow
38
37
  align="center-right"
39
38
  >
@@ -41,6 +40,7 @@
41
40
  :values="modeOptions"
42
41
  :singleColor="true"
43
42
  :required="true"
43
+ variant="slide"
44
44
  v-model="innerMode"
45
45
  />
46
46
  </FSRow>
@@ -60,7 +60,7 @@
60
60
  gap="16px"
61
61
  >
62
62
  <FSCol
63
- v-if="showFilters && hasVisibleFilters"
63
+ v-if="innerShowFilters && hasVisibleFilters"
64
64
  width="hug"
65
65
  >
66
66
  <FSRow
@@ -94,7 +94,7 @@
94
94
  gap="8px"
95
95
  >
96
96
  <FSChip
97
- v-if="showFilters && resetable"
97
+ v-if="innerShowFilters && resetable"
98
98
  variant="standard"
99
99
  :label="$tr('ui.data-table.reset-filters', 'Reset')"
100
100
  :height="['30px', '24px']"
@@ -745,6 +745,11 @@ export default defineComponent({
745
745
  type: Array as PropType<FSDataTableColumn[]>,
746
746
  required: true
747
747
  },
748
+ showFilters: {
749
+ type: Boolean,
750
+ required: false,
751
+ default: false
752
+ },
748
753
  filters: {
749
754
  type: Object as PropType<{ [key: string]: FSDataTableFilter[] }>,
750
755
  required: false,
@@ -880,7 +885,7 @@ export default defineComponent({
880
885
  default: "12px"
881
886
  },
882
887
  },
883
- emits: ["update:modelValue", "update:headers", "update:filters", "update:mode", "update:sortBy", "update:rowsPerPage", "update:page", "update:include", "update:items", "click:row"],
888
+ emits: ["update:modelValue", "update:headers", "update:showFilters", "update:filters", "update:mode", "update:sortBy", "update:rowsPerPage", "update:page", "update:include", "update:items", "click:row"],
884
889
  setup(props, { emit }) {
885
890
  const { isExtraSmall } = useBreakpoints();
886
891
  const { $tr } = useTranslationsProvider();
@@ -896,7 +901,7 @@ export default defineComponent({
896
901
  const innerSortBy = ref(props.sortBy);
897
902
  const innerMode = ref(props.disableTable ? "iterator" : props.disableIterator ? "table" : props.mode);
898
903
  const innerPage = ref(props.page);
899
- const showFilters = ref(false);
904
+ const innerShowFilters = ref(props.showFilters);
900
905
  const resetable = ref(false);
901
906
 
902
907
  const intersectionObserver = ref<IntersectionObserver | null>(null);
@@ -917,7 +922,14 @@ export default defineComponent({
917
922
  ];
918
923
 
919
924
  const showFiltersRow = computed((): boolean => {
920
- return (props.showSearch && showFilters.value && filterableHeaders.value.length > 0) || hiddenHeaders.value.length > 0;
925
+ switch (innerMode.value) {
926
+ case "iterator": {
927
+ return (props.showSearch && innerShowFilters.value && filterableHeaders.value.length > 0);
928
+ }
929
+ case "table": {
930
+ return (props.showSearch && innerShowFilters.value && filterableHeaders.value.length > 0) || hiddenHeaders.value.length > 0;
931
+ }
932
+ }
921
933
  });
922
934
 
923
935
  const hasVisibleFilters = computed((): boolean => {
@@ -925,7 +937,15 @@ export default defineComponent({
925
937
  });
926
938
 
927
939
  const showFiltersDivider = computed((): boolean => {
928
- return resetable.value || (hiddenHeaders.value.length > 0 && hasVisibleFilters.value);
940
+ switch (innerMode.value) {
941
+ case "iterator": {
942
+ return resetable.value;
943
+ }
944
+ case "table": {
945
+ return resetable.value || (hiddenHeaders.value.length > 0 && hasVisibleFilters.value);
946
+ }
947
+ }
948
+
929
949
  });
930
950
 
931
951
  const hasToolbar = computed((): boolean => {
@@ -1029,12 +1049,12 @@ export default defineComponent({
1029
1049
  if (props.selectedOnly && !props.modelValue.includes(item[props.itemValue])) {
1030
1050
  return false;
1031
1051
  }
1032
- if (innerSearchFormatted) {
1033
- return containsSearchTerm(item, innerSearchFormatted);
1034
- }
1035
1052
  if (activeFilters.some(af => af.filter.filter && af.filter.filter(af.filter.value, item[af.key], item))) {
1036
1053
  return false;
1037
1054
  }
1055
+ if (innerSearchFormatted) {
1056
+ return containsSearchTerm(item, innerSearchFormatted);
1057
+ }
1038
1058
  return true;
1039
1059
  });
1040
1060
  }
@@ -1479,10 +1499,18 @@ export default defineComponent({
1479
1499
  }
1480
1500
  });
1481
1501
 
1502
+ watch(() => props.showFilters, () => {
1503
+ innerShowFilters.value = props.showFilters;
1504
+ });
1505
+
1482
1506
  watch(innerSearch, () => {
1483
1507
  innerPage.value = 1;
1484
1508
  });
1485
1509
 
1510
+ watch(innerShowFilters, () => {
1511
+ emit("update:showFilters", innerShowFilters.value);
1512
+ });
1513
+
1486
1514
  watch(filters, () => {
1487
1515
  resetable.value = Object.keys(filters.value)
1488
1516
  .some((key) => filters.value[key].some((filter) => filter.hidden));
@@ -1531,7 +1559,7 @@ export default defineComponent({
1531
1559
  innerPage,
1532
1560
  hasToolbar,
1533
1561
  pageOptions,
1534
- showFilters,
1562
+ innerShowFilters,
1535
1563
  showFiltersRow,
1536
1564
  showFiltersDivider,
1537
1565
  hasVisibleFilters,
@@ -42,6 +42,8 @@
42
42
  <FSCard
43
43
  v-if="$props.editable"
44
44
  class="fs-tile-checkbox"
45
+ :height="['40px', '32px']"
46
+ :width="['40px', '32px']"
45
47
  :border="false"
46
48
  >
47
49
  <FSCheckbox
@@ -35,7 +35,8 @@
35
35
  v-if="$props.editable"
36
36
  class="fs-tile-checkbox"
37
37
  variant="background"
38
- :color="ColorEnum.Background"
38
+ :height="['40px', '32px']"
39
+ :width="['40px', '32px']"
39
40
  :border="false"
40
41
  v-bind="$attrs"
41
42
  >
@@ -61,6 +62,8 @@
61
62
  v-if="$props.editable"
62
63
  class="fs-tile-checkbox"
63
64
  variant="background"
65
+ :height="['40px', '32px']"
66
+ :width="['40px', '32px']"
64
67
  :border="false"
65
68
  v-bind="$attrs"
66
69
  >
@@ -53,9 +53,10 @@
53
53
  >
54
54
  <slot
55
55
  name="subtitle"
56
+ v-if="topOffset < 60"
56
57
  >
57
58
  <FSText
58
- v-if="$props.subtitle && topOffset < 60"
59
+ v-if="$props.subtitle"
59
60
  font="text-button"
60
61
  >
61
62
  {{ $props.subtitle }}
@@ -63,9 +64,10 @@
63
64
  </slot>
64
65
  <slot
65
66
  name="description"
67
+ v-if="topOffset < 20"
66
68
  >
67
69
  <FSText
68
- v-if="$props.description && topOffset < 20"
70
+ v-if="$props.description"
69
71
  font="text-body"
70
72
  >
71
73
  {{ $props.description }}
@@ -204,4 +206,4 @@ export default defineComponent({
204
206
  }
205
207
  }
206
208
  });
207
- </script>
209
+ </script>