@dative-gpi/foundation-shared-components 0.0.90 → 0.0.91

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 (43) hide show
  1. package/components/FSChip.vue +34 -5
  2. package/components/FSClickable.vue +38 -16
  3. package/components/FSClock.vue +0 -3
  4. package/components/FSDialog.vue +46 -11
  5. package/components/FSDialogForm.vue +7 -28
  6. package/components/FSDialogRemove.vue +2 -1
  7. package/components/FSDialogSubmit.vue +7 -28
  8. package/components/FSDivider.vue +16 -6
  9. package/components/FSFadeOut.vue +32 -59
  10. package/components/FSSlideGroup.vue +14 -5
  11. package/components/FSSlider.vue +21 -9
  12. package/components/FSWindow.vue +13 -1
  13. package/components/FSWrapGroup.vue +2 -1
  14. package/components/deviceOrganisations/FSConnectivity.vue +4 -1
  15. package/components/deviceOrganisations/FSConnectivityCard.vue +31 -12
  16. package/components/deviceOrganisations/FSStatus.vue +4 -1
  17. package/components/deviceOrganisations/FSStatusCard.vue +48 -23
  18. package/components/deviceOrganisations/FSStatusesCarousel.vue +57 -39
  19. package/components/deviceOrganisations/FSWorstAlert.vue +4 -1
  20. package/components/deviceOrganisations/FSWorstAlertCard.vue +32 -14
  21. package/components/fields/FSAutocompleteField.vue +2 -7
  22. package/components/fields/FSSelectField.vue +1 -0
  23. package/components/lists/FSDataTableUI.vue +82 -33
  24. package/components/lists/FSFilterButton.vue +38 -24
  25. package/components/lists/FSHeaderButton.vue +21 -13
  26. package/components/lists/FSHiddenButton.vue +33 -15
  27. package/components/tiles/FSDeviceOrganisationTileUI.vue +3 -1
  28. package/components/tiles/FSFolderTileUI.vue +1 -1
  29. package/package.json +4 -4
  30. package/styles/components/fs_autocomplete_field.scss +7 -2
  31. package/styles/components/fs_chip.scss +1 -8
  32. package/styles/components/fs_dialog.scss +6 -18
  33. package/styles/components/fs_divider.scss +8 -2
  34. package/styles/components/fs_fade_out.scss +8 -23
  35. package/styles/components/fs_filter_button.scss +4 -4
  36. package/styles/components/fs_header_button.scss +4 -0
  37. package/styles/components/fs_select_field.scss +4 -3
  38. package/styles/components/fs_text_area.scss +0 -1
  39. package/styles/components/index.scss +0 -1
  40. package/styles/globals/overrides.scss +0 -4
  41. package/themes/default.ts +1 -1
  42. package/components/FSCarousel.vue +0 -72
  43. package/styles/components/fs_carousel.scss +0 -9
@@ -50,41 +50,58 @@
50
50
  </FSRow>
51
51
  <FSRow
52
52
  v-if="showFiltersRow"
53
+ gap="16px"
53
54
  >
54
- <template
55
- v-if="showFilters"
55
+ <FSCol
56
+ v-if="showFilters && hasVisibleFilters"
57
+ width="hug"
56
58
  >
57
- <FSFilterButton
58
- v-for="(header, index) in filterableHeaders"
59
- :key="index"
60
- :header="header"
61
- :filters="filters[header.value]"
62
- @update:filter="(value) => toggleFilter(header.value, value)"
59
+ <FSRow
60
+ gap="8px"
63
61
  >
64
- <template
65
- #default="{ filter }"
62
+ <FSFilterButton
63
+ v-for="(header, index) in filterableHeaders"
64
+ :key="index"
65
+ :header="header"
66
+ :filters="filters[header.value]"
67
+ @update:filter="(value) => toggleFilter(header.value, value)"
66
68
  >
67
- <slot
68
- :name="filterSlot(header)"
69
- v-bind="{ filter }"
70
- />
71
- </template>
72
- </FSFilterButton>
73
- <FSChip
74
- v-if="resetable"
75
- variant="standard"
76
- :label="$tr('ui.data-table.reset-filters', 'Reset')"
77
- :color="ColorEnum.Error"
78
- :editable="true"
79
- @click="resetFilter"
80
- />
81
- </template>
82
- <FSHiddenButton
83
- v-if="innerMode === 'table' && hiddenHeaders.length > 0"
84
- :headers="hiddenHeaders"
85
- :color="$props.color"
86
- @update:show="(value) => updateHeader(value, 'hidden', false)"
69
+ <template
70
+ #default="{ filter }"
71
+ >
72
+ <slot
73
+ :name="filterSlot(header)"
74
+ v-bind="{ filter }"
75
+ />
76
+ </template>
77
+ </FSFilterButton>
78
+ </FSRow>
79
+ </FSCol>
80
+ <FSDivider
81
+ v-if="showFiltersDivider"
82
+ :vertical="true"
87
83
  />
84
+ <FSCol>
85
+ <FSRow
86
+ gap="8px"
87
+ >
88
+ <FSChip
89
+ v-if="showFilters && resetable"
90
+ variant="standard"
91
+ :label="$tr('ui.data-table.reset-filters', 'Reset')"
92
+ :height="[30, 24]"
93
+ :color="ColorEnum.Error"
94
+ :editable="true"
95
+ @click="resetFilter"
96
+ />
97
+ <FSHiddenButton
98
+ v-if="innerMode === 'table' && hiddenHeaders.length > 0"
99
+ :headers="hiddenHeaders"
100
+ :color="$props.color"
101
+ @update:show="(value) => updateHeader(value, 'hidden', false)"
102
+ />
103
+ </FSRow>
104
+ </FSCol>
88
105
  </FSRow>
89
106
  <template
90
107
  v-if="innerMode === 'table'"
@@ -218,7 +235,7 @@
218
235
  width="hug"
219
236
  >
220
237
  <FSCheckbox
221
- v-if="showSelect"
238
+ v-if="$props.showSelect"
222
239
  :modelValue="props.item.items.every((item) => innerValue.includes(item.key))"
223
240
  :indeterminate="innerValue.some((id) => props.item.items.some((item) => item.key === id)) && !props.item.items.every((item) => innerValue.includes(item.key))"
224
241
  @update:modelValue="toggleSelectGroup(props.item)"
@@ -279,6 +296,7 @@
279
296
  variant="icon"
280
297
  :color="sortColor(header, props)"
281
298
  :icon="sortIcon(header, props)"
299
+ @click="toggleSort(header)"
282
300
  />
283
301
  </slot>
284
302
  </FSRow>
@@ -639,6 +657,7 @@ import FSOptionGroup from "../FSOptionGroup.vue";
639
657
  import FSToggleSet from "../FSToggleSet.vue";
640
658
  import FSDraggable from "./FSDraggable.vue";
641
659
  import FSCheckbox from "../FSCheckbox.vue";
660
+ import FSDivider from "../FSDivider.vue";
642
661
  import FSCard from "../FSCard.vue";
643
662
  import FSChip from "../FSChip.vue";
644
663
  import FSIcon from "../FSIcon.vue";
@@ -660,6 +679,7 @@ export default defineComponent({
660
679
  FSDraggable,
661
680
  FSToggleSet,
662
681
  FSCheckbox,
682
+ FSDivider,
663
683
  FSCard,
664
684
  FSChip,
665
685
  FSIcon,
@@ -713,7 +733,7 @@ export default defineComponent({
713
733
  default: null
714
734
  },
715
735
  sortBy: {
716
- type: Object as PropType<FSDataTableOrder>,
736
+ type: Object as PropType<FSDataTableOrder | null>,
717
737
  required: false,
718
738
  default: null
719
739
  },
@@ -837,6 +857,14 @@ export default defineComponent({
837
857
  return (props.showSearch && showFilters.value && filterableHeaders.value.length > 0) || hiddenHeaders.value.length > 0;
838
858
  });
839
859
 
860
+ const hasVisibleFilters = computed((): boolean => {
861
+ return filterableHeaders.value.some((header) => !hiddenHeaders.value.includes(header));
862
+ });
863
+
864
+ const showFiltersDivider = computed((): boolean => {
865
+ return resetable.value || (hiddenHeaders.value.length > 0 && hasVisibleFilters.value);
866
+ });
867
+
840
868
  const hasToolbar = computed((): boolean => {
841
869
  return !!useSlots().slots["toolbar"];
842
870
  });
@@ -1053,7 +1081,7 @@ export default defineComponent({
1053
1081
  const toggleFilter = (header: string, value: FSDataTableFilter[]): void => {
1054
1082
  filters.value[header] = value;
1055
1083
  emit("update:filters", filters.value);
1056
- // If a filter is hidden, the reset button will be shown
1084
+ // If a filter is hidden, the associated filter is reseted
1057
1085
  resetable.value = Object.keys(filters.value)
1058
1086
  .some((key) => filters.value[key].some((filter) => filter.hidden));
1059
1087
  };
@@ -1077,6 +1105,12 @@ export default defineComponent({
1077
1105
  switch (property) {
1078
1106
  case "hidden":
1079
1107
  innerColumn.hidden = value as boolean;
1108
+ if (value) {
1109
+ filters.value[header.value!] = filters.value[header.value!].map((filter) => ({ ...filter, hidden: false }));
1110
+ resetable.value = Object.keys(filters.value)
1111
+ .some((key) => filters.value[key].some((filter) => filter.hidden));
1112
+ emit("update:filters", filters.value);
1113
+ }
1080
1114
  break;
1081
1115
  case "index":
1082
1116
  switch (value) {
@@ -1177,6 +1211,18 @@ export default defineComponent({
1177
1211
  return "mdi-sort-variant-off";
1178
1212
  };
1179
1213
 
1214
+ const toggleSort = (header: FSDataTableColumn) => {
1215
+ if (header.value == null) {return}
1216
+
1217
+ if (innerSortBy.value?.key !== header.value) {
1218
+ innerSortBy.value = { key: header.value, order: 'asc' };
1219
+ } else if (innerSortBy.value.order === 'asc') {
1220
+ innerSortBy.value.order = 'desc' ;
1221
+ } else {
1222
+ innerSortBy.value = null;
1223
+ }
1224
+ }
1225
+
1180
1226
  const observeIntersection = (): void => {
1181
1227
  switch (innerMode.value) {
1182
1228
  case "table":
@@ -1389,6 +1435,8 @@ export default defineComponent({
1389
1435
  pageOptions,
1390
1436
  showFilters,
1391
1437
  showFiltersRow,
1438
+ showFiltersDivider,
1439
+ hasVisibleFilters,
1392
1440
  extraHeaders,
1393
1441
  innerHeaders,
1394
1442
  hiddenHeaders,
@@ -1409,6 +1457,7 @@ export default defineComponent({
1409
1457
  toggleSelectAll,
1410
1458
  toggleSelectGroup,
1411
1459
  toggleSelect,
1460
+ toggleSort,
1412
1461
  updateHeader,
1413
1462
  toggleFilter,
1414
1463
  resetFilter,
@@ -10,6 +10,7 @@
10
10
  class="fs-filter-button"
11
11
  variant="standard"
12
12
  prependIcon="mdi-filter-variant"
13
+ :height="[30, 24]"
13
14
  :color="ColorEnum.Dark"
14
15
  :editable="true"
15
16
  :label="label"
@@ -22,36 +23,47 @@
22
23
  :border="false"
23
24
  >
24
25
  <FSCol
25
- gap="16px"
26
- padding="6px 16px"
26
+ gap="12px"
27
+ padding="16px 0 24px 16px"
27
28
  >
28
- <FSSpan
29
- font="text-overline"
29
+ <FSCol
30
+ gap="12px"
31
+ padding="0 16px 0 0"
30
32
  >
31
- {{ $tr("ui.data-table.filter", "Filter") }}
32
- </FSSpan>
33
- <FSChip
34
- class="fs-filter-button-all"
35
- :editable="true"
36
- :color="$props.color"
37
- :variant="getAllVariant()"
38
- :label="$tr('ui.data-table.all-values', 'All values')"
39
- @click="onToggleAll"
40
- />
41
- <FSSearchField
42
- class="fs-filter-button-all"
43
- prependInnerIcon="mdi-magnify"
44
- v-model="search"
45
- />
46
- <v-divider />
33
+ <FSSpan
34
+ font="text-overline"
35
+ >
36
+ {{ $tr("ui.data-table.filter", "Filter") }}
37
+ </FSSpan>
38
+ <FSChip
39
+ class="fs-filter-button-chip"
40
+ :height="[30, 24]"
41
+ :editable="true"
42
+ :color="$props.color"
43
+ :variant="getAllVariant()"
44
+ :label="$tr('ui.data-table.all-values', 'All values')"
45
+ @click="onToggleAll"
46
+ />
47
+ <FSDivider
48
+ padding="0 8px 0 0"
49
+ />
50
+ <FSSearchField
51
+ class="fs-filter-button-search"
52
+ prependInnerIcon="mdi-magnify"
53
+ v-model="search"
54
+ />
55
+ </FSCol>
47
56
  <FSFadeOut
48
57
  padding="0 8px 0 0"
49
58
  height="360px"
50
59
  >
51
- <FSCol>
60
+ <FSCol
61
+ gap="6px"
62
+ >
52
63
  <FSChip
53
64
  v-for="(filter, index) in searchedFilters"
54
65
  class="fs-filter-button-chip"
66
+ :height="[30, 24]"
55
67
  :key="index"
56
68
  :editable="true"
57
69
  :label="filter.text"
@@ -82,6 +94,7 @@ import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui
82
94
 
83
95
  import FSSearchField from "../fields/FSSearchField.vue";
84
96
  import FSFadeOut from "../FSFadeOut.vue";
97
+ import FSDivider from "../FSDivider.vue";
85
98
  import FSCard from "../FSCard.vue";
86
99
  import FSChip from "../FSChip.vue";
87
100
  import FSSpan from "../FSSpan.vue";
@@ -92,6 +105,7 @@ export default defineComponent({
92
105
  components: {
93
106
  FSSearchField,
94
107
  FSFadeOut,
108
+ FSDivider,
95
109
  FSCard,
96
110
  FSChip,
97
111
  FSSpan,
@@ -141,14 +155,14 @@ export default defineComponent({
141
155
  return props.filters;
142
156
  });
143
157
 
144
- const getVariant = (filter: FSDataTableFilter): "standard" | "full" => {
158
+ const getVariant = (filter: FSDataTableFilter): "standard" | "full" | "borderless" => {
145
159
  if (singlePick.value || props.filters.filter(f => f.hidden).length > 0) {
146
160
  if (filter.hidden) {
147
- return "standard";
161
+ return "borderless";
148
162
  }
149
163
  return "full";
150
164
  }
151
- return "standard";
165
+ return "borderless";
152
166
  };
153
167
 
154
168
  const getAllVariant = (): "standard" | "full" => {
@@ -27,29 +27,35 @@
27
27
  {{ $tr("ui.data-table.column-options", "Options for this column") }}
28
28
  </FSSpan>
29
29
  <FSCol
30
- padding="16px"
30
+ padding="6px"
31
31
  >
32
- <FSButton
33
- variant="icon"
34
- icon="mdi-eye-off-outline"
32
+ <FSChip
33
+ prependIcon="mdi-eye-off-outline"
34
+ class="fs-header-button-chip"
35
+ variant="borderless"
35
36
  :label="$tr('ui.data-table.hide-column', 'Hide column')"
36
- :color="ColorEnum.Dark"
37
+ :height="[30, 24]"
38
+ :editable="true"
37
39
  @click="$emit('update:hide')"
38
40
  />
39
- <FSButton
41
+ <FSChip
40
42
  v-if="!$props.first"
41
- variant="icon"
42
- icon="mdi-chevron-left"
43
+ class="fs-header-button-chip"
44
+ variant="borderless"
45
+ prependIcon="mdi-chevron-left"
43
46
  :label="$tr('ui.data-table.move-left', 'Move to the left')"
44
- :color="ColorEnum.Dark"
47
+ :height="[30, 24]"
48
+ :editable="true"
45
49
  @click="$emit('update:left')"
46
50
  />
47
- <FSButton
51
+ <FSChip
48
52
  v-if="!$props.last"
49
- variant="icon"
50
- icon="mdi-chevron-right"
53
+ class="fs-header-button-chip"
54
+ variant="borderless"
55
+ prependIcon="mdi-chevron-right"
51
56
  :label="$tr('ui.data-table.move-right', 'Move to the right')"
52
- :color="ColorEnum.Dark"
57
+ :height="[30, 24]"
58
+ :editable="true"
53
59
  @click="$emit('update:right')"
54
60
  />
55
61
  </FSCol>
@@ -66,6 +72,7 @@ import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
66
72
  import FSButton from "../FSButton.vue";
67
73
  import FSCard from "../FSCard.vue";
68
74
  import FSSpan from "../FSSpan.vue";
75
+ import FSChip from "../FSChip.vue";
69
76
  import FSCol from "../FSCol.vue";
70
77
 
71
78
  export default defineComponent({
@@ -73,6 +80,7 @@ export default defineComponent({
73
80
  components: {
74
81
  FSButton,
75
82
  FSCard,
83
+ FSChip,
76
84
  FSSpan,
77
85
  FSCol
78
86
  },
@@ -8,6 +8,7 @@
8
8
  >
9
9
  <FSChip
10
10
  prependIcon="mdi-eye-off-outline"
11
+ :height="[30, 24]"
11
12
  :color="ColorEnum.Light"
12
13
  :editable="true"
13
14
  :label="$tr('ui.data-table.hidden-columns', '{0} hidden column(s)', $props.headers.length.toString())"
@@ -20,23 +21,40 @@
20
21
  :border="false"
21
22
  >
22
23
  <FSCol
23
- gap="16px"
24
- padding="6px 16px"
24
+ gap="12px"
25
+ padding="16px 0px 24px 16px"
25
26
  >
26
- <FSSpan
27
- font="text-overline"
27
+ <FSCol
28
+ gap="12px"
29
+ padding="0 16px 0 0"
28
30
  >
29
- {{ $tr("ui.data-table.show-columns", "Show columns") }}
30
- </FSSpan>
31
- <FSChip
32
- v-for="(header, index) in $props.headers"
33
- class="fs-hidden-button-chip"
34
- :color="$props.color"
35
- :label="header.text"
36
- :editable="true"
37
- :key="index"
38
- @click="$emit('update:show', header)"
39
- />
31
+ <FSSpan
32
+ font="text-overline"
33
+ >
34
+ {{ $tr("ui.data-table.show-columns", "Show columns") }}
35
+ </FSSpan>
36
+ </FSCol>
37
+ <FSFadeOut
38
+ padding="0 8px 0 0"
39
+ height="360px"
40
+ >
41
+ <FSCol
42
+ gap="6px"
43
+ >
44
+ <FSChip
45
+ v-for="(header, index) in $props.headers"
46
+ class="fs-hidden-button-chip"
47
+ :height="[30, 24]"
48
+ :key="index"
49
+ :editable="true"
50
+ :label="header.text"
51
+ :color="$props.color"
52
+ variant="full"
53
+ @click="$emit('update:show', header)"
54
+ >
55
+ </FSChip>
56
+ </FSCol>
57
+ </FSFadeOut>
40
58
  </FSCol>
41
59
  </FSCard>
42
60
  </v-menu>
@@ -59,7 +59,9 @@
59
59
  :width="imageSize"
60
60
  />
61
61
  </FSRow>
62
- <template v-if="carouselModelStatuses.length">
62
+ <template
63
+ v-if="carouselModelStatuses.length"
64
+ >
63
65
  <FSDivider />
64
66
  <FSStatusesCarousel
65
67
  :modelStatuses="carouselModelStatuses"
@@ -20,7 +20,7 @@ export default defineComponent({
20
20
  bottomColor: {
21
21
  type: [Array, String] as PropType<ColorBase | ColorBase[]>,
22
22
  required: false,
23
- default: [ColorEnum.Light, ColorEnum.Primary]
23
+ default: () => [ColorEnum.Light, ColorEnum.Primary]
24
24
  },
25
25
  icon: {
26
26
  type: String,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dative-gpi/foundation-shared-components",
3
3
  "sideEffects": false,
4
- "version": "0.0.90",
4
+ "version": "0.0.91",
5
5
  "description": "",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -10,8 +10,8 @@
10
10
  "author": "",
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
- "@dative-gpi/foundation-shared-domain": "0.0.90",
14
- "@dative-gpi/foundation-shared-services": "0.0.90",
13
+ "@dative-gpi/foundation-shared-domain": "0.0.91",
14
+ "@dative-gpi/foundation-shared-services": "0.0.91",
15
15
  "@fontsource/montserrat": "^5.0.16",
16
16
  "@lexical/clipboard": "^0.12.5",
17
17
  "@lexical/history": "^0.12.5",
@@ -32,5 +32,5 @@
32
32
  "sass": "^1.69.5",
33
33
  "sass-loader": "^13.3.2"
34
34
  },
35
- "gitHead": "a9e61e5e740657f46604e90282f71fc058a81acd"
35
+ "gitHead": "5470b07f299ab5d02f4240807304335501bdaf07"
36
36
  }
@@ -37,16 +37,21 @@
37
37
 
38
38
  .v-overlay-container > .v-overlay > .v-autocomplete__content {
39
39
  box-shadow: 0px 5px 8px 0px #00000029;
40
+ max-width: none !important;
40
41
  border-radius: 4px;
41
42
 
42
43
  & .v-list {
44
+ @extend .fs-hide-y-scrollbar;
45
+
43
46
  background-color: var(--fs-autocomplete-field-background-color);
47
+ padding: 2px 8px 2px 16px;
44
48
  border-radius: 4px;
45
49
  margin-top: 4px;
46
- padding: 2px;
50
+ gap: 2px;
47
51
 
48
52
  & .v-list-item {
49
- border-radius: 4px;
53
+ border-radius: 4px !important;
54
+ margin-top: 2px !important;
50
55
  }
51
56
  }
52
57
  }
@@ -3,17 +3,10 @@
3
3
  transition: all 0.28s cubic-bezier(0.4, 0, 0.2, 1);
4
4
  background-color: var(--fs-chip-background-color) !important;
5
5
  border: 1px solid var(--fs-chip-border-color) !important;
6
+ height: var(--fs-chip-height) !important;
6
7
  color: var(--fs-chip-color) !important;
7
8
  border-radius: 50px !important;
8
9
  padding: 2px 20px !important;
9
-
10
- @include web {
11
- height: 24px !important;
12
- }
13
-
14
- @include mobile {
15
- height: 20px !important;
16
- }
17
10
  }
18
11
 
19
12
  .fs-chip-editable {
@@ -6,34 +6,22 @@
6
6
  justify-content: flex-end;
7
7
  align-self: flex-end;
8
8
  margin-top: 20vh !important;
9
- max-width: 100% !important;
10
- width: 100% !important;
9
+ width: 100vw !important;
11
10
  margin: 0px !important;
12
11
  }
13
12
 
14
13
  .v-overlay__content:has(.fs-dialog) {
15
- min-width: 35vw !important;
16
- max-width: 90vw !important;
14
+ width: fit-content !important;
17
15
  max-height: 90vh !important;
18
-
19
- &.v-overlay__content:has(.fs-dialog-mobile) {
20
- max-width: 100vw !important;
21
- }
16
+ min-width: 35vw !important;
22
17
  }
23
18
 
24
19
  .fs-dialog {
25
- position: relative;
26
- min-width: 35vw !important;
27
- max-width: 90vw !important;
20
+ width: fit-content !important;
28
21
  max-height: 90vh !important;
22
+ min-width: 35vw !important;
29
23
 
30
24
  &.fs-dialog-mobile {
31
- max-width: 100vw !important;
25
+ width: 100vw !important;
32
26
  }
33
- }
34
-
35
- .fs-dialog-close-button {
36
- position: absolute;
37
- top: 6px;
38
- right: 6px;
39
27
  }
@@ -1,9 +1,15 @@
1
- .fs-divider {
2
- width: var(--fs-divider-width);
1
+ .fs-divider-horizontal {
2
+ width: var(--fs-divider-size);
3
3
  border-bottom: 1.3px solid var(--fs-divider-color);
4
4
  border-radius: 3px;
5
5
  }
6
6
 
7
+ .fs-divider-vertical {
8
+ height: var(--fs-divider-size);
9
+ border-right: 1.3px solid var(--fs-divider-color);
10
+ border-radius: 3px;
11
+ }
12
+
7
13
  .fs-divider-around {
8
14
  border-bottom: 1.3px solid var(--fs-divider-color);
9
15
  border-radius: 3px;
@@ -1,33 +1,18 @@
1
1
  .fs-fade-out {
2
2
  @extend .fs-hide-y-scrollbar;
3
3
 
4
+ transition: all 0.28s cubic-bezier(0.4, 0, 0.2, 1);
4
5
  max-height: var(--fs-fade-out-height);
5
-
6
6
  padding: var(--fs-fade-out-padding);
7
7
  width: var(--fs-fade-out-width);
8
8
  flex-direction: column;
9
9
  position: relative;
10
10
  display: flex;
11
- }
12
- // TODO
13
- .fs-fade-out-top {
14
- pointer-events: none;
15
- position: sticky;
16
- z-index: 10;
17
- min-height: var(--fs-fade-out-top-mask-height);
18
- width: 100%;
19
- top: 0;
20
- transition: all 0.14s cubic-bezier(0.4, 0, 0.2, 1);
21
- background: linear-gradient(to top, transparent 0, var(--fs-fade-out-mask-color) var(--fs-fade-out-top-mask-height));
22
- }
23
-
24
- .fs-fade-out-bottom {
25
- pointer-events: none;
26
- position: sticky;
27
- z-index: 10;
28
- min-height: var(--fs-fade-out-bottom-mask-height);
29
- width: 100%;
30
- bottom: 0;
31
- transition: all 0.14s cubic-bezier(0.4, 0, 0.2, 1);
32
- background: linear-gradient(to bottom, transparent 0, var(--fs-fade-out-mask-color) var(--fs-fade-out-bottom-mask-height));
11
+
12
+ mask:
13
+ linear-gradient(to top, transparent 0, var(--fs-fade-out-mask-color)) 0 (0 / calc(100% - 8px)) var(--fs-fade-out-top-mask-height),
14
+ linear-gradient(to bottom, transparent 0, var(--fs-fade-out-mask-color)) 0 (100% / calc(100% - 8px)) var(--fs-fade-out-bottom-mask-height),
15
+ linear-gradient(var(--fs-fade-out-mask-color) 0 0);
16
+ mask-composite:exclude;
17
+ mask-repeat: no-repeat;
33
18
  }
@@ -7,10 +7,10 @@
7
7
  }
8
8
  }
9
9
 
10
- .fs-filter-button-all {
11
- width: calc(100% - 16px) !important;
12
- }
13
-
14
10
  .fs-filter-button-chip {
15
11
  width: 100%;
12
+ }
13
+
14
+ .fs-filter-button-search > .v-input > .v-input__control > .v-field {
15
+ border-radius: 44px !important;
16
16
  }
@@ -1,4 +1,8 @@
1
1
  .fs-header-button {
2
2
  transition: opacity 0.28s cubic-bezier(0.4, 0, 0.2, 1) !important;
3
3
  opacity: 0;
4
+ }
5
+
6
+ .fs-header-button-chip {
7
+ width: 100% !important;
4
8
  }