@dative-gpi/foundation-shared-components 0.0.71 → 0.0.72
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.
- package/components/FSClickable.vue +36 -4
- package/components/FSIcon.vue +2 -2
- package/components/FSIconCard.vue +23 -3
- package/components/FSText.vue +5 -15
- package/components/lists/FSDataIteratorItem.vue +23 -1
- package/components/lists/FSDataTableUI.vue +177 -57
- package/components/tiles/FSDashboardOrganisationTileUI.vue +18 -0
- package/components/tiles/FSDashboardOrganisationTypeTileUI.vue +18 -0
- package/components/tiles/FSDashboardShallowTileUI.vue +18 -0
- package/components/tiles/FSFolderTileUI.vue +19 -0
- package/components/tiles/FSSimpleIconTileUI.vue +8 -3
- package/components/tiles/FSTile.vue +13 -11
- package/package.json +4 -4
- package/styles/components/fs_data_table.scss +28 -2
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
v-if="$props.href"
|
|
4
4
|
:href="$props.href"
|
|
5
5
|
:style="style"
|
|
6
|
+
@mouseover="hover = true"
|
|
7
|
+
@mouseleave="hover = false"
|
|
8
|
+
@mousedown="active = true"
|
|
9
|
+
@mouseup="active = false"
|
|
6
10
|
>
|
|
7
11
|
<FSCard
|
|
8
12
|
:height="$props.height"
|
|
@@ -12,7 +16,7 @@
|
|
|
12
16
|
v-bind="$attrs"
|
|
13
17
|
>
|
|
14
18
|
<template v-for="(_, name) in $slots" v-slot:[name]="slotData">
|
|
15
|
-
<slot :name="name" v-bind="slotData" />
|
|
19
|
+
<slot :name="name" v-bind="{ ...slotData, contentVariant }" />
|
|
16
20
|
</template>
|
|
17
21
|
</FSCard>
|
|
18
22
|
<template v-if="$props.load">
|
|
@@ -29,6 +33,10 @@
|
|
|
29
33
|
v-else-if="$props.to"
|
|
30
34
|
:style="style"
|
|
31
35
|
:to="$props.to"
|
|
36
|
+
@mouseover="hover = true"
|
|
37
|
+
@mouseleave="hover = false"
|
|
38
|
+
@mousedown="active = true"
|
|
39
|
+
@mouseup="active = false"
|
|
32
40
|
>
|
|
33
41
|
<FSCard
|
|
34
42
|
:height="$props.height"
|
|
@@ -38,7 +46,7 @@
|
|
|
38
46
|
v-bind="$attrs"
|
|
39
47
|
>
|
|
40
48
|
<template v-for="(_, name) in $slots" v-slot:[name]="slotData">
|
|
41
|
-
<slot :name="name" v-bind="slotData" />
|
|
49
|
+
<slot :name="name" v-bind="{ ...slotData, contentVariant }" />
|
|
42
50
|
</template>
|
|
43
51
|
</FSCard>
|
|
44
52
|
<template v-if="$props.load">
|
|
@@ -56,6 +64,10 @@
|
|
|
56
64
|
:type="$props.type"
|
|
57
65
|
:style="style"
|
|
58
66
|
@click.stop="onClick"
|
|
67
|
+
@mouseover="hover = true"
|
|
68
|
+
@mouseleave="hover = false"
|
|
69
|
+
@mousedown="active = true"
|
|
70
|
+
@mouseup="active = false"
|
|
59
71
|
>
|
|
60
72
|
<FSCard
|
|
61
73
|
:height="$props.height"
|
|
@@ -65,7 +77,7 @@
|
|
|
65
77
|
v-bind="$attrs"
|
|
66
78
|
>
|
|
67
79
|
<template v-for="(_, name) in $slots" v-slot:[name]="slotData">
|
|
68
|
-
<slot :name="name" v-bind="slotData" />
|
|
80
|
+
<slot :name="name" v-bind="{ ...slotData, contentVariant }" />
|
|
69
81
|
</template>
|
|
70
82
|
</FSCard>
|
|
71
83
|
<template v-if="$props.load">
|
|
@@ -81,7 +93,7 @@
|
|
|
81
93
|
</template>
|
|
82
94
|
|
|
83
95
|
<script lang="ts">
|
|
84
|
-
import { computed, defineComponent, PropType } from "vue";
|
|
96
|
+
import { computed, defineComponent, PropType, ref } from "vue";
|
|
85
97
|
import { RouteLocation } from "vue-router";
|
|
86
98
|
|
|
87
99
|
import { ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
@@ -161,6 +173,9 @@ export default defineComponent({
|
|
|
161
173
|
const lights = getColors(ColorEnum.Light);
|
|
162
174
|
const darks = getColors(ColorEnum.Dark);
|
|
163
175
|
|
|
176
|
+
const hover = ref(false);
|
|
177
|
+
const active = ref(false);
|
|
178
|
+
|
|
164
179
|
const style = computed((): { [key: string] : string | undefined } => {
|
|
165
180
|
if (!props.editable) {
|
|
166
181
|
return {
|
|
@@ -222,6 +237,20 @@ export default defineComponent({
|
|
|
222
237
|
}
|
|
223
238
|
});
|
|
224
239
|
|
|
240
|
+
const contentVariant = computed((): "base" | "baseContrast" | "light" | "lightContrast" | "dark" | "darkContrast" => {
|
|
241
|
+
if (active.value) {
|
|
242
|
+
return "darkContrast";
|
|
243
|
+
}
|
|
244
|
+
if (hover.value) {
|
|
245
|
+
return "baseContrast";
|
|
246
|
+
}
|
|
247
|
+
switch (props.variant) {
|
|
248
|
+
case "standard" : return "lightContrast";
|
|
249
|
+
case "background": return "base";
|
|
250
|
+
case "full" : return "baseContrast";
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
|
|
225
254
|
const classes = computed((): string[] => {
|
|
226
255
|
const classNames: string[] = ["fs-clickable"];
|
|
227
256
|
if (!props.editable) {
|
|
@@ -247,8 +276,11 @@ export default defineComponent({
|
|
|
247
276
|
};
|
|
248
277
|
|
|
249
278
|
return {
|
|
279
|
+
contentVariant,
|
|
250
280
|
loadColor,
|
|
251
281
|
classes,
|
|
282
|
+
active,
|
|
283
|
+
hover,
|
|
252
284
|
style,
|
|
253
285
|
onClick
|
|
254
286
|
};
|
package/components/FSIcon.vue
CHANGED
|
@@ -30,7 +30,7 @@ export default defineComponent({
|
|
|
30
30
|
default: null
|
|
31
31
|
},
|
|
32
32
|
variant: {
|
|
33
|
-
type: String as PropType<"base" | "light" | "dark">,
|
|
33
|
+
type: String as PropType<"base" | "baseContrast" | "light" | "lightContrast" | "dark" | "darkContrast">,
|
|
34
34
|
required: false,
|
|
35
35
|
default: "base"
|
|
36
36
|
}
|
|
@@ -41,7 +41,7 @@ export default defineComponent({
|
|
|
41
41
|
|
|
42
42
|
const color = computed((): string | null => {
|
|
43
43
|
if (props.color) {
|
|
44
|
-
return getColors(props.color)[props.variant]
|
|
44
|
+
return getColors(props.color)[props.variant]!;
|
|
45
45
|
}
|
|
46
46
|
return null;
|
|
47
47
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<FSCard
|
|
3
|
-
:variant="$props.backgroundColor == null ? 'background' : 'gradient'"
|
|
4
|
-
:border="$props.backgroundColor == null"
|
|
5
3
|
:color="$props.backgroundColor"
|
|
6
4
|
:height="$props.size"
|
|
7
5
|
:width="$props.size"
|
|
6
|
+
:variant="variant"
|
|
7
|
+
:border="border"
|
|
8
8
|
>
|
|
9
9
|
<FSRow
|
|
10
10
|
align="center-center"
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
</template>
|
|
22
22
|
|
|
23
23
|
<script lang="ts">
|
|
24
|
-
import { defineComponent, PropType } from "vue";
|
|
24
|
+
import { computed, defineComponent, PropType } from "vue";
|
|
25
25
|
|
|
26
26
|
import { ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
27
27
|
|
|
@@ -55,6 +55,26 @@ export default defineComponent({
|
|
|
55
55
|
required: false,
|
|
56
56
|
default: ColorEnum.Dark
|
|
57
57
|
}
|
|
58
|
+
},
|
|
59
|
+
setup(props) {
|
|
60
|
+
const variant = computed((): "background" | "gradient" => {
|
|
61
|
+
switch (props.backgroundColor) {
|
|
62
|
+
case ColorEnum.Background: return "background";
|
|
63
|
+
default: return "gradient";
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const border = computed((): boolean => {
|
|
68
|
+
switch (props.backgroundColor) {
|
|
69
|
+
case ColorEnum.Background: return true;
|
|
70
|
+
default: return false;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
variant,
|
|
76
|
+
border
|
|
77
|
+
};
|
|
58
78
|
}
|
|
59
79
|
});
|
|
60
80
|
</script>
|
package/components/FSText.vue
CHANGED
|
@@ -45,7 +45,7 @@ export default defineComponent({
|
|
|
45
45
|
default: ColorEnum.Dark
|
|
46
46
|
},
|
|
47
47
|
variant: {
|
|
48
|
-
type: String as PropType<"base" | "light" | "dark">,
|
|
48
|
+
type: String as PropType<"base" | "baseContrast" | "light" | "lightContrast" | "dark" | "darkContrast">,
|
|
49
49
|
required: false,
|
|
50
50
|
default: "base"
|
|
51
51
|
}
|
|
@@ -71,20 +71,10 @@ export default defineComponent({
|
|
|
71
71
|
});
|
|
72
72
|
|
|
73
73
|
const style = computed((): { [key: string] : string | undefined } => {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
};
|
|
79
|
-
case "light": return {
|
|
80
|
-
"--fs-span-line-clamp": props.lineClamp.toString(),
|
|
81
|
-
"--fs-text-color" : colors.value.light
|
|
82
|
-
};
|
|
83
|
-
case "dark": return {
|
|
84
|
-
"--fs-span-line-clamp": props.lineClamp.toString(),
|
|
85
|
-
"--fs-text-color" : colors.value.dark
|
|
86
|
-
};
|
|
87
|
-
}
|
|
74
|
+
return {
|
|
75
|
+
"--fs-span-line-clamp": props.lineClamp.toString(),
|
|
76
|
+
"--fs-text-color" : colors.value[props.variant]
|
|
77
|
+
};
|
|
88
78
|
});
|
|
89
79
|
|
|
90
80
|
return {
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
class="fs-data-iterator-item"
|
|
4
4
|
padding="12px"
|
|
5
5
|
width="100%"
|
|
6
|
+
:color="$props.itemColor"
|
|
7
|
+
:variant="variant"
|
|
6
8
|
>
|
|
7
9
|
<FSCol>
|
|
8
10
|
<slot name="item.top" v-bind="{ item: $props.item }" />
|
|
@@ -38,6 +40,8 @@
|
|
|
38
40
|
<FSCard
|
|
39
41
|
v-if="$props.showSelect"
|
|
40
42
|
class="fs-data-iterator-item-checkbox"
|
|
43
|
+
:color="$props.itemColor"
|
|
44
|
+
:variant="variant"
|
|
41
45
|
:border="false"
|
|
42
46
|
>
|
|
43
47
|
<FSCheckbox
|
|
@@ -50,7 +54,7 @@
|
|
|
50
54
|
</template>
|
|
51
55
|
|
|
52
56
|
<script lang="ts">
|
|
53
|
-
import { defineComponent, PropType } from "vue";
|
|
57
|
+
import { computed, defineComponent, PropType } from "vue";
|
|
54
58
|
|
|
55
59
|
import { ColorEnum, FSDataTableColumn } from "@dative-gpi/foundation-shared-components/models";
|
|
56
60
|
|
|
@@ -86,6 +90,11 @@ export default defineComponent({
|
|
|
86
90
|
required: false,
|
|
87
91
|
default: false
|
|
88
92
|
},
|
|
93
|
+
itemColor: {
|
|
94
|
+
type: String as PropType<ColorEnum>,
|
|
95
|
+
required: false,
|
|
96
|
+
default: ColorEnum.Background
|
|
97
|
+
},
|
|
89
98
|
color: {
|
|
90
99
|
type: String as PropType<ColorEnum>,
|
|
91
100
|
required: false,
|
|
@@ -96,6 +105,19 @@ export default defineComponent({
|
|
|
96
105
|
required: false,
|
|
97
106
|
default: true
|
|
98
107
|
}
|
|
108
|
+
},
|
|
109
|
+
setup(props) {
|
|
110
|
+
const variant = computed((): "standard" | "background" => {
|
|
111
|
+
switch (props.itemColor) {
|
|
112
|
+
case ColorEnum.Background:
|
|
113
|
+
case null: return "background";
|
|
114
|
+
default: return "standard";
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
return {
|
|
119
|
+
variant
|
|
120
|
+
};
|
|
99
121
|
}
|
|
100
122
|
});
|
|
101
123
|
</script>
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
<FSRow
|
|
6
6
|
align="bottom-center"
|
|
7
7
|
>
|
|
8
|
-
<template
|
|
8
|
+
<template
|
|
9
|
+
v-if="$props.showSearch"
|
|
10
|
+
>
|
|
9
11
|
<FSSearchField
|
|
10
12
|
prependInnerIcon="mdi-magnify"
|
|
11
13
|
:hideHeader="true"
|
|
@@ -17,7 +19,9 @@
|
|
|
17
19
|
@click="showFilters = !showFilters"
|
|
18
20
|
/>
|
|
19
21
|
</template>
|
|
20
|
-
<slot
|
|
22
|
+
<slot
|
|
23
|
+
name="toolbar"
|
|
24
|
+
/>
|
|
21
25
|
<v-spacer />
|
|
22
26
|
<FSOptionGroup
|
|
23
27
|
v-if="!$props.disableTable && !$props.disableIterator"
|
|
@@ -29,7 +33,9 @@
|
|
|
29
33
|
<FSRow
|
|
30
34
|
v-if="showFiltersRow"
|
|
31
35
|
>
|
|
32
|
-
<template
|
|
36
|
+
<template
|
|
37
|
+
v-if="showFilters"
|
|
38
|
+
>
|
|
33
39
|
<FSFilterButton
|
|
34
40
|
v-for="(header, index) in filterableHeaders"
|
|
35
41
|
:key="index"
|
|
@@ -37,7 +43,9 @@
|
|
|
37
43
|
:filters="filters[header.value]"
|
|
38
44
|
@update:filter="(value) => toggleFilter(header.value, value)"
|
|
39
45
|
>
|
|
40
|
-
<template
|
|
46
|
+
<template
|
|
47
|
+
#default="{ filter }"
|
|
48
|
+
>
|
|
41
49
|
<slot
|
|
42
50
|
:name="filterSlot(header)"
|
|
43
51
|
v-bind="{ filter }"
|
|
@@ -60,7 +68,9 @@
|
|
|
60
68
|
@update:show="(value) => updateHeader(value, 'hidden', false)"
|
|
61
69
|
/>
|
|
62
70
|
</FSRow>
|
|
63
|
-
<template
|
|
71
|
+
<template
|
|
72
|
+
v-if="innerMode === 'table'"
|
|
73
|
+
>
|
|
64
74
|
<v-data-table
|
|
65
75
|
v-if="!isExtraSmall"
|
|
66
76
|
selectStrategy="all"
|
|
@@ -75,6 +85,7 @@
|
|
|
75
85
|
:multiSort="false"
|
|
76
86
|
:hover="!$props.sortDraggable"
|
|
77
87
|
:style="style"
|
|
88
|
+
:row-props="rowProps"
|
|
78
89
|
:class="classes"
|
|
79
90
|
:page="innerPage"
|
|
80
91
|
:itemsPerPage="innerRowsPerPage"
|
|
@@ -87,14 +98,18 @@
|
|
|
87
98
|
@dragover="onDragOver($event, 'tr.v-data-table__tr', 'tbody')"
|
|
88
99
|
@dragleave="onDragLeave"
|
|
89
100
|
>
|
|
90
|
-
<template
|
|
101
|
+
<template
|
|
102
|
+
#no-data
|
|
103
|
+
>
|
|
91
104
|
<FSText
|
|
92
105
|
font="text-overline"
|
|
93
106
|
>
|
|
94
107
|
{{ $tr("ui.data-table.empty", "No data") }}
|
|
95
108
|
</FSText>
|
|
96
109
|
</template>
|
|
97
|
-
<template
|
|
110
|
+
<template
|
|
111
|
+
#header.data-table-select="props"
|
|
112
|
+
>
|
|
98
113
|
<FSRow
|
|
99
114
|
v-if="!$props.singleSelect"
|
|
100
115
|
class="fs-data-table-select"
|
|
@@ -102,13 +117,15 @@
|
|
|
102
117
|
width="hug"
|
|
103
118
|
>
|
|
104
119
|
<FSCheckbox
|
|
105
|
-
:modelValue="props.allSelected"
|
|
106
120
|
:indeterminate="props.someSelected && !props.allSelected"
|
|
121
|
+
:modelValue="props.allSelected"
|
|
107
122
|
@update:modelValue="toggleSelectAll(props.allSelected)"
|
|
108
123
|
/>
|
|
109
124
|
</FSRow>
|
|
110
125
|
</template>
|
|
111
|
-
<template
|
|
126
|
+
<template
|
|
127
|
+
#item.data-table-select="props"
|
|
128
|
+
>
|
|
112
129
|
<FSRow
|
|
113
130
|
class="fs-data-table-select"
|
|
114
131
|
align="bottom-center"
|
|
@@ -120,7 +137,9 @@
|
|
|
120
137
|
/>
|
|
121
138
|
</FSRow>
|
|
122
139
|
</template>
|
|
123
|
-
<template
|
|
140
|
+
<template
|
|
141
|
+
#item.data-table-draggable="props"
|
|
142
|
+
>
|
|
124
143
|
<FSDraggable
|
|
125
144
|
elementSelector="tr.v-data-table__tr"
|
|
126
145
|
:disabled="draggableDisabled"
|
|
@@ -140,21 +159,31 @@
|
|
|
140
159
|
</FSRow>
|
|
141
160
|
</FSDraggable>
|
|
142
161
|
</template>
|
|
143
|
-
<template
|
|
162
|
+
<template
|
|
163
|
+
#header.data-table-group="props"
|
|
164
|
+
>
|
|
144
165
|
<slot
|
|
145
166
|
name="header.data-table-group"
|
|
146
167
|
v-bind="props"
|
|
147
168
|
/>
|
|
148
169
|
</template>
|
|
149
|
-
<template
|
|
170
|
+
<template
|
|
171
|
+
#item.data-table-group="props"
|
|
172
|
+
>
|
|
150
173
|
<slot
|
|
151
174
|
name="item.data-table-group"
|
|
152
175
|
v-bind="props"
|
|
153
176
|
/>
|
|
154
177
|
</template>
|
|
155
|
-
<template
|
|
156
|
-
|
|
157
|
-
|
|
178
|
+
<template
|
|
179
|
+
#group-header="props"
|
|
180
|
+
>
|
|
181
|
+
<template
|
|
182
|
+
:ref="() => { if (!props.isGroupOpen(props.item)) { props.toggleGroup(props.item) } }"
|
|
183
|
+
/>
|
|
184
|
+
<tr
|
|
185
|
+
class="fs-data-table-group-header"
|
|
186
|
+
>
|
|
158
187
|
<td />
|
|
159
188
|
<td
|
|
160
189
|
class="fs-data-table-group-header"
|
|
@@ -198,15 +227,23 @@
|
|
|
198
227
|
:wrap="false"
|
|
199
228
|
:key="index"
|
|
200
229
|
>
|
|
201
|
-
<slot
|
|
202
|
-
|
|
230
|
+
<slot
|
|
231
|
+
:name="`${header.slotName}-prepend`"
|
|
232
|
+
/>
|
|
233
|
+
<slot
|
|
234
|
+
:name="`${header.slotName}-title`"
|
|
235
|
+
>
|
|
203
236
|
<FSText>
|
|
204
237
|
{{ header.text }}
|
|
205
238
|
</FSText>
|
|
206
239
|
</slot>
|
|
207
|
-
<slot
|
|
240
|
+
<slot
|
|
241
|
+
:name="`${header.slotName}-append`"
|
|
242
|
+
/>
|
|
208
243
|
<v-spacer />
|
|
209
|
-
<slot
|
|
244
|
+
<slot
|
|
245
|
+
:name="`${header.slotName}-configuration`"
|
|
246
|
+
>
|
|
210
247
|
<FSHeaderButton
|
|
211
248
|
:first="index === 0"
|
|
212
249
|
:last="index === headersSlots.length - 1"
|
|
@@ -228,31 +265,41 @@
|
|
|
228
265
|
v-for="(item, index) in itemsSlots"
|
|
229
266
|
#[item.slotName]="props"
|
|
230
267
|
>
|
|
231
|
-
<
|
|
232
|
-
|
|
233
|
-
v-bind="props"
|
|
268
|
+
<div
|
|
269
|
+
class="fs-td-color"
|
|
234
270
|
>
|
|
235
|
-
<
|
|
236
|
-
|
|
237
|
-
|
|
271
|
+
<slot
|
|
272
|
+
:name="item.slotName"
|
|
273
|
+
v-bind="props"
|
|
238
274
|
>
|
|
239
|
-
<
|
|
240
|
-
|
|
275
|
+
<FSRow
|
|
276
|
+
align="center-left"
|
|
277
|
+
:key="index"
|
|
241
278
|
>
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
279
|
+
<FSSpan
|
|
280
|
+
font="text-overline"
|
|
281
|
+
>
|
|
282
|
+
{{ props.item[item.value] }}
|
|
283
|
+
</FSSpan>
|
|
284
|
+
</FSRow>
|
|
285
|
+
</slot>
|
|
286
|
+
</div>
|
|
246
287
|
</template>
|
|
247
|
-
<template
|
|
288
|
+
<template
|
|
289
|
+
#bottom
|
|
290
|
+
>
|
|
248
291
|
<FSRow
|
|
249
292
|
class="fs-data-table-footer"
|
|
250
293
|
align="center-right"
|
|
251
294
|
padding="16px"
|
|
252
295
|
gap="24px"
|
|
253
296
|
>
|
|
254
|
-
<template
|
|
255
|
-
|
|
297
|
+
<template
|
|
298
|
+
v-if="$props.modelValue.length"
|
|
299
|
+
>
|
|
300
|
+
<template
|
|
301
|
+
v-if="$props.modelValue.length >= innerItems.length"
|
|
302
|
+
>
|
|
256
303
|
<FSRow
|
|
257
304
|
gap="2px"
|
|
258
305
|
>
|
|
@@ -266,7 +313,9 @@
|
|
|
266
313
|
</FSText>
|
|
267
314
|
</FSRow>
|
|
268
315
|
</template>
|
|
269
|
-
<template
|
|
316
|
+
<template
|
|
317
|
+
v-else
|
|
318
|
+
>
|
|
270
319
|
<FSText>
|
|
271
320
|
{{ $tr("ui.data-table.some-selected", "{0} element(s) selected", $props.modelValue.length.toString()) }}
|
|
272
321
|
</FSText>
|
|
@@ -319,7 +368,9 @@
|
|
|
319
368
|
:page="innerPage"
|
|
320
369
|
:itemsPerPage="innerRowsPerPage"
|
|
321
370
|
>
|
|
322
|
-
<template
|
|
371
|
+
<template
|
|
372
|
+
#default="{ items }"
|
|
373
|
+
>
|
|
323
374
|
<FSCol
|
|
324
375
|
class="fs-data-iterator-container"
|
|
325
376
|
width="fill"
|
|
@@ -331,7 +382,7 @@
|
|
|
331
382
|
:item="item"
|
|
332
383
|
:key="index"
|
|
333
384
|
@update:dragend="(event, dragged) => onDragEnd(event, dragged, '.fs-data-iterator-container')"
|
|
334
|
-
@dragover="onDragOver(
|
|
385
|
+
@dragover="(event) => onDragOver(event, '.fs-draggable-item', '.fs-data-iterator-container')"
|
|
335
386
|
@drop="(event) => onDrop(event, item, '.fs-draggable-item')"
|
|
336
387
|
@dragleave="onDragLeave"
|
|
337
388
|
@dragover.prevent
|
|
@@ -342,16 +393,19 @@
|
|
|
342
393
|
>
|
|
343
394
|
<FSDataIteratorItem
|
|
344
395
|
v-if="item.type === 'item'"
|
|
396
|
+
:itemColor="$props.rowColor ? $props.rowColor(item.raw) : ColorEnum.Background"
|
|
345
397
|
:headers="innerHeaders.filter(h => !$props.sneakyHeaders.includes(h.value))"
|
|
346
|
-
:modelValue="innerValue.includes(item.raw[$props.itemValue])"
|
|
347
398
|
:showSelect="$props.showSelect"
|
|
348
399
|
:itemTo="$props.itemTo"
|
|
349
400
|
:color="$props.color"
|
|
350
401
|
:item="item.raw"
|
|
351
402
|
:key="index"
|
|
403
|
+
:modelValue="innerValue.includes(item.raw[$props.itemValue])"
|
|
352
404
|
@update:modelValue="toggleSelect"
|
|
353
405
|
>
|
|
354
|
-
<template
|
|
406
|
+
<template
|
|
407
|
+
#item.top="props"
|
|
408
|
+
>
|
|
355
409
|
<slot
|
|
356
410
|
name="item.top"
|
|
357
411
|
v-bind="props"
|
|
@@ -365,14 +419,16 @@
|
|
|
365
419
|
:name="item.slotName"
|
|
366
420
|
v-bind="props"
|
|
367
421
|
>
|
|
368
|
-
<
|
|
422
|
+
<FSSpan
|
|
369
423
|
:key="index"
|
|
370
424
|
>
|
|
371
425
|
{{ props.item[item.value] }}
|
|
372
|
-
</
|
|
426
|
+
</FSSpan>
|
|
373
427
|
</slot>
|
|
374
428
|
</template>
|
|
375
|
-
<template
|
|
429
|
+
<template
|
|
430
|
+
#item.bottom="props"
|
|
431
|
+
>
|
|
376
432
|
<slot
|
|
377
433
|
name="item.bottom"
|
|
378
434
|
v-bind="props"
|
|
@@ -383,29 +439,37 @@
|
|
|
383
439
|
</FSDraggable>
|
|
384
440
|
</FSCol>
|
|
385
441
|
</template>
|
|
386
|
-
<template
|
|
442
|
+
<template
|
|
443
|
+
#footer
|
|
444
|
+
>
|
|
387
445
|
<FSRow
|
|
388
446
|
class="fs-data-table-footer"
|
|
389
447
|
align="center-right"
|
|
390
448
|
padding="16px"
|
|
391
449
|
gap="24px"
|
|
392
450
|
>
|
|
393
|
-
<template
|
|
394
|
-
|
|
451
|
+
<template
|
|
452
|
+
v-if="$props.modelValue.length"
|
|
453
|
+
>
|
|
454
|
+
<template
|
|
455
|
+
v-if="$props.modelValue.length >= innerItems.length"
|
|
456
|
+
>
|
|
395
457
|
<FSRow
|
|
396
458
|
gap="2px"
|
|
397
459
|
>
|
|
398
460
|
<FSText
|
|
399
461
|
font="text-button"
|
|
400
462
|
>
|
|
401
|
-
{{ $tr("ui.data-table.all-selected-bold", "
|
|
463
|
+
{{ $tr("ui.data-table.all-selected-bold", "Warning:") }}
|
|
402
464
|
</FSText>
|
|
403
465
|
<FSText>
|
|
404
466
|
{{ $tr("ui.data-table.all-selected-regular", "All elements selected") }}
|
|
405
467
|
</FSText>
|
|
406
468
|
</FSRow>
|
|
407
469
|
</template>
|
|
408
|
-
<template
|
|
470
|
+
<template
|
|
471
|
+
v-else
|
|
472
|
+
>
|
|
409
473
|
<FSText>
|
|
410
474
|
{{ $tr("ui.data-table.some-selected", "{0} element(s) selected", $props.modelValue.length.toString()) }}
|
|
411
475
|
</FSText>
|
|
@@ -446,16 +510,21 @@
|
|
|
446
510
|
</template>
|
|
447
511
|
</v-data-iterator>
|
|
448
512
|
</template>
|
|
449
|
-
<template
|
|
513
|
+
<template
|
|
514
|
+
v-else
|
|
515
|
+
>
|
|
450
516
|
<v-data-iterator
|
|
451
517
|
class="fs-data-table-iterator"
|
|
452
518
|
:items="innerItems"
|
|
453
519
|
:itemsPerPage="size"
|
|
454
520
|
>
|
|
455
|
-
<template
|
|
521
|
+
<template
|
|
522
|
+
#default="{ items }"
|
|
523
|
+
>
|
|
456
524
|
<FSRow
|
|
457
525
|
width="hug"
|
|
458
526
|
class="fs-data-iterator-container"
|
|
527
|
+
:gap="$props.tileGap"
|
|
459
528
|
>
|
|
460
529
|
<FSDraggable
|
|
461
530
|
v-for="(item, index) in items.filter((item) => item.type === 'item')"
|
|
@@ -464,7 +533,7 @@
|
|
|
464
533
|
:item="item"
|
|
465
534
|
:key="index"
|
|
466
535
|
@update:dragend="(event, dragged) => onDragEnd(event, dragged, '.fs-data-iterator-container')"
|
|
467
|
-
@dragover="onDragOver(
|
|
536
|
+
@dragover="(event) => onDragOver(event, '.fs-draggable-item', '.fs-data-iterator-container')"
|
|
468
537
|
@drop="(event) => onDrop(event, item, '.fs-draggable-item')"
|
|
469
538
|
@dragleave="onDragLeave"
|
|
470
539
|
@dragover.prevent
|
|
@@ -474,16 +543,19 @@
|
|
|
474
543
|
v-bind="{ index, item: item.raw, toggleSelect }"
|
|
475
544
|
>
|
|
476
545
|
<FSDataIteratorItem
|
|
546
|
+
:itemColor="$props.rowColor ? $props.rowColor(item.raw) : ColorEnum.Background"
|
|
477
547
|
:headers="innerHeaders.filter(h => !$props.sneakyHeaders.includes(h.value))"
|
|
478
|
-
:modelValue="innerValue.includes(item.raw[$props.itemValue])"
|
|
479
548
|
:showSelect="$props.showSelect"
|
|
480
549
|
:itemTo="$props.itemTo"
|
|
481
550
|
:color="$props.color"
|
|
482
551
|
:item="item.raw"
|
|
483
552
|
:key="index"
|
|
553
|
+
:modelValue="innerValue.includes(item.raw[$props.itemValue])"
|
|
484
554
|
@update:modelValue="toggleSelect"
|
|
485
555
|
>
|
|
486
|
-
<template
|
|
556
|
+
<template
|
|
557
|
+
#item.top="props"
|
|
558
|
+
>
|
|
487
559
|
<slot
|
|
488
560
|
name="item.top"
|
|
489
561
|
v-bind="props"
|
|
@@ -504,7 +576,9 @@
|
|
|
504
576
|
</FSText>
|
|
505
577
|
</slot>
|
|
506
578
|
</template>
|
|
507
|
-
<template
|
|
579
|
+
<template
|
|
580
|
+
#item.bottom="props"
|
|
581
|
+
>
|
|
508
582
|
<slot
|
|
509
583
|
name="item.bottom"
|
|
510
584
|
v-bind="props"
|
|
@@ -517,7 +591,9 @@
|
|
|
517
591
|
</template>
|
|
518
592
|
</v-data-iterator>
|
|
519
593
|
</template>
|
|
520
|
-
<div
|
|
594
|
+
<div
|
|
595
|
+
class="fs-data-table-intersection"
|
|
596
|
+
/>
|
|
521
597
|
</FSCol>
|
|
522
598
|
</template>
|
|
523
599
|
|
|
@@ -528,6 +604,7 @@ import { useRouter } from "vue-router";
|
|
|
528
604
|
import { ColorEnum, FSDataTableColumn, FSDataTableFilter, FSDataTableOrder, FSToggle } from "@dative-gpi/foundation-shared-components/models";
|
|
529
605
|
import { useBreakpoints, useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
|
|
530
606
|
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
607
|
+
import { sizeToVar } from "../../utils";
|
|
531
608
|
|
|
532
609
|
import FSDataIteratorItem from "./FSDataIteratorItem.vue";
|
|
533
610
|
import FSSearchField from "../fields/FSSearchField.vue";
|
|
@@ -542,6 +619,7 @@ import FSCheckbox from "../FSCheckbox.vue";
|
|
|
542
619
|
import FSCard from "../FSCard.vue";
|
|
543
620
|
import FSChip from "../FSChip.vue";
|
|
544
621
|
import FSIcon from "../FSIcon.vue";
|
|
622
|
+
import FSSpan from "../FSSpan.vue";
|
|
545
623
|
import FSText from "../FSText.vue";
|
|
546
624
|
import FSRow from "../FSRow.vue";
|
|
547
625
|
import FSCol from "../FSCol.vue";
|
|
@@ -562,6 +640,7 @@ export default defineComponent({
|
|
|
562
640
|
FSCard,
|
|
563
641
|
FSChip,
|
|
564
642
|
FSIcon,
|
|
643
|
+
FSSpan,
|
|
565
644
|
FSText,
|
|
566
645
|
FSRow,
|
|
567
646
|
FSCol
|
|
@@ -674,7 +753,27 @@ export default defineComponent({
|
|
|
674
753
|
type: Boolean,
|
|
675
754
|
required: false,
|
|
676
755
|
default: false
|
|
677
|
-
}
|
|
756
|
+
},
|
|
757
|
+
rowColor: {
|
|
758
|
+
type: Function,
|
|
759
|
+
required: false,
|
|
760
|
+
default: null
|
|
761
|
+
},
|
|
762
|
+
rowGap: {
|
|
763
|
+
type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
|
|
764
|
+
required: false,
|
|
765
|
+
default: "0"
|
|
766
|
+
},
|
|
767
|
+
rowBorderRadius: {
|
|
768
|
+
type: [String, Number],
|
|
769
|
+
required: false,
|
|
770
|
+
default: "4px"
|
|
771
|
+
},
|
|
772
|
+
tileGap: {
|
|
773
|
+
type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
|
|
774
|
+
required: false,
|
|
775
|
+
default: "8px"
|
|
776
|
+
},
|
|
678
777
|
},
|
|
679
778
|
emits: ["update:modelValue", "update:headers", "update:filters", "update:mode", "update:sortBy", "update:rowsPerPage", "update:page", "update:include", "update:items", "click:row"],
|
|
680
779
|
setup(props, { emit }) {
|
|
@@ -744,10 +843,11 @@ export default defineComponent({
|
|
|
744
843
|
return slots;
|
|
745
844
|
});
|
|
746
845
|
|
|
747
|
-
const style = computed((): { [key: string]
|
|
846
|
+
const style = computed((): { [key: string]: string | undefined } => {
|
|
748
847
|
return {
|
|
749
848
|
"--fs-data-table-background-color": backgrounds.base,
|
|
750
|
-
"--fs-data-table-border-color": lights.base
|
|
849
|
+
"--fs-data-table-border-color": lights.base,
|
|
850
|
+
"--fs-data-table-row-gap": sizeToVar(props.rowGap)
|
|
751
851
|
};
|
|
752
852
|
});
|
|
753
853
|
|
|
@@ -1061,6 +1161,25 @@ export default defineComponent({
|
|
|
1061
1161
|
}
|
|
1062
1162
|
}
|
|
1063
1163
|
|
|
1164
|
+
const rowProps = (row: any): Record<string, any> => {
|
|
1165
|
+
if (props.rowColor && row.item) {
|
|
1166
|
+
const rowColors = getColors(props.rowColor(row.item));
|
|
1167
|
+
return {
|
|
1168
|
+
class: "fs-data-table-custom-row",
|
|
1169
|
+
style: {
|
|
1170
|
+
"--fs-data-table-row-border-size" : "1px",
|
|
1171
|
+
"--fs-data-table-row-border-radius" : sizeToVar(props.rowBorderRadius),
|
|
1172
|
+
"--fs-data-table-row-background-color": rowColors.light,
|
|
1173
|
+
"--fs-data-table-row-border-color" : rowColors.lightContrast,
|
|
1174
|
+
"--fs-data-table-row-color" : rowColors.lightContrast
|
|
1175
|
+
}
|
|
1176
|
+
};
|
|
1177
|
+
}
|
|
1178
|
+
else {
|
|
1179
|
+
return {};
|
|
1180
|
+
}
|
|
1181
|
+
};
|
|
1182
|
+
|
|
1064
1183
|
const changeIndex = (oldIndex: number, newIndex: number) => {
|
|
1065
1184
|
if (oldIndex === newIndex) {
|
|
1066
1185
|
return;
|
|
@@ -1251,6 +1370,7 @@ export default defineComponent({
|
|
|
1251
1370
|
filterSlot,
|
|
1252
1371
|
sortColor,
|
|
1253
1372
|
sortIcon,
|
|
1373
|
+
rowProps,
|
|
1254
1374
|
onDrop,
|
|
1255
1375
|
onDragOver,
|
|
1256
1376
|
onDragLeave,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSSimpleIconTileUI
|
|
3
|
+
v-bind="$attrs"
|
|
4
|
+
/>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script lang="ts">
|
|
8
|
+
import { defineComponent } from "vue";
|
|
9
|
+
|
|
10
|
+
import FSSimpleIconTileUI from "./FSSimpleIconTileUI.vue";
|
|
11
|
+
|
|
12
|
+
export default defineComponent({
|
|
13
|
+
name: "FSDashboardOrganisationTileUI",
|
|
14
|
+
components: {
|
|
15
|
+
FSSimpleIconTileUI
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
</script>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSSimpleIconTileUI
|
|
3
|
+
v-bind="$attrs"
|
|
4
|
+
/>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script lang="ts">
|
|
8
|
+
import { defineComponent } from "vue";
|
|
9
|
+
|
|
10
|
+
import FSSimpleIconTileUI from "./FSSimpleIconTileUI.vue";
|
|
11
|
+
|
|
12
|
+
export default defineComponent({
|
|
13
|
+
name: "FSDashboardOrganisationTypeTileUI",
|
|
14
|
+
components: {
|
|
15
|
+
FSSimpleIconTileUI
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
</script>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSSimpleIconTileUI
|
|
3
|
+
v-bind="$attrs"
|
|
4
|
+
/>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script lang="ts">
|
|
8
|
+
import { defineComponent } from "vue";
|
|
9
|
+
|
|
10
|
+
import FSSimpleIconTileUI from "./FSSimpleIconTileUI.vue";
|
|
11
|
+
|
|
12
|
+
export default defineComponent({
|
|
13
|
+
name: "FSDashboardShallowTileUI",
|
|
14
|
+
components: {
|
|
15
|
+
FSSimpleIconTileUI
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
</script>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSSimpleIconTileUI
|
|
3
|
+
:iconBackgroundColor="true"
|
|
4
|
+
v-bind="$attrs"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script lang="ts">
|
|
9
|
+
import { defineComponent } from "vue";
|
|
10
|
+
|
|
11
|
+
import FSSimpleIconTileUI from "./FSSimpleIconTileUI.vue";
|
|
12
|
+
|
|
13
|
+
export default defineComponent({
|
|
14
|
+
name: "FSFolderTileUI",
|
|
15
|
+
components: {
|
|
16
|
+
FSSimpleIconTileUI
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
</script>
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
</FSText>
|
|
33
33
|
</FSCol>
|
|
34
34
|
<FSIconCard
|
|
35
|
-
:backgroundColor="
|
|
35
|
+
:backgroundColor="iconBackgroundColor"
|
|
36
36
|
:icon="$props.icon"
|
|
37
37
|
:size="imageSize"
|
|
38
38
|
/>
|
|
@@ -84,9 +84,9 @@ export default defineComponent({
|
|
|
84
84
|
default: ColorEnum.Light
|
|
85
85
|
},
|
|
86
86
|
iconBackgroundColor: {
|
|
87
|
-
type:
|
|
87
|
+
type: Boolean,
|
|
88
88
|
required: false,
|
|
89
|
-
default:
|
|
89
|
+
default: false
|
|
90
90
|
},
|
|
91
91
|
icon: {
|
|
92
92
|
type: String as PropType<string>,
|
|
@@ -102,6 +102,10 @@ export default defineComponent({
|
|
|
102
102
|
setup(props) {
|
|
103
103
|
const { isMobileSized } = useBreakpoints();
|
|
104
104
|
|
|
105
|
+
const iconBackgroundColor = computed((): ColorBase | ColorBase[] => {
|
|
106
|
+
return props.iconBackgroundColor ? props.bottomColor : ColorEnum.Background;
|
|
107
|
+
});
|
|
108
|
+
|
|
105
109
|
const imageSize = computed((): number => {
|
|
106
110
|
return isMobileSized.value ? 90 : 100;
|
|
107
111
|
});
|
|
@@ -115,6 +119,7 @@ export default defineComponent({
|
|
|
115
119
|
});
|
|
116
120
|
|
|
117
121
|
return {
|
|
122
|
+
iconBackgroundColor,
|
|
118
123
|
ColorEnum,
|
|
119
124
|
imageSize,
|
|
120
125
|
infoWidth
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
v-if="$props.editable"
|
|
16
16
|
class="fs-tile-checkbox"
|
|
17
17
|
:border="false"
|
|
18
|
+
v-bind="$attrs"
|
|
18
19
|
>
|
|
19
20
|
<FSCheckbox
|
|
20
|
-
:color="ColorEnum.Dark"
|
|
21
21
|
:modelValue="$props.modelValue"
|
|
22
22
|
@update:modelValue="() => $emit('update:modelValue', !$props.modelValue)"
|
|
23
23
|
/>
|
|
@@ -34,15 +34,16 @@
|
|
|
34
34
|
:style="style"
|
|
35
35
|
:width="width"
|
|
36
36
|
:height="height"
|
|
37
|
+
v-bind="$attrs"
|
|
37
38
|
>
|
|
38
39
|
<slot />
|
|
39
40
|
<FSCard
|
|
40
41
|
v-if="$props.editable"
|
|
41
42
|
class="fs-tile-checkbox"
|
|
42
43
|
:border="false"
|
|
44
|
+
v-bind="$attrs"
|
|
43
45
|
>
|
|
44
46
|
<FSCheckbox
|
|
45
|
-
:color="ColorEnum.Dark"
|
|
46
47
|
:modelValue="$props.modelValue"
|
|
47
48
|
@update:modelValue="() => $emit('update:modelValue', !$props.modelValue)"
|
|
48
49
|
/>
|
|
@@ -60,7 +61,7 @@ import { computed, defineComponent, PropType } from "vue";
|
|
|
60
61
|
import { RouteLocation } from "vue-router";
|
|
61
62
|
|
|
62
63
|
import { useBreakpoints, useColors } from "@dative-gpi/foundation-shared-components/composables";
|
|
63
|
-
import { ColorBase
|
|
64
|
+
import { ColorBase } from "@dative-gpi/foundation-shared-components/models";
|
|
64
65
|
|
|
65
66
|
import FSClickable from "../FSClickable.vue";
|
|
66
67
|
import FSCheckbox from "../FSCheckbox.vue";
|
|
@@ -105,12 +106,14 @@ export default defineComponent({
|
|
|
105
106
|
const { isMobileSized } = useBreakpoints();
|
|
106
107
|
const { getGradients } = useColors();
|
|
107
108
|
|
|
108
|
-
const bottomColors = computed(() => getGradients(props.bottomColor));
|
|
109
|
-
|
|
110
109
|
const style = computed((): { [key: string] : string | undefined } => {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
if (props.bottomColor) {
|
|
111
|
+
const bottomColors = getGradients(props.bottomColor);
|
|
112
|
+
return {
|
|
113
|
+
"--fs-tile-border-color": bottomColors.base
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
return {};
|
|
114
117
|
});
|
|
115
118
|
|
|
116
119
|
const width = computed(() => {
|
|
@@ -122,10 +125,9 @@ export default defineComponent({
|
|
|
122
125
|
});
|
|
123
126
|
|
|
124
127
|
return {
|
|
125
|
-
|
|
126
|
-
style,
|
|
128
|
+
height,
|
|
127
129
|
width,
|
|
128
|
-
|
|
130
|
+
style
|
|
129
131
|
};
|
|
130
132
|
}
|
|
131
133
|
});
|
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.
|
|
4
|
+
"version": "0.0.72",
|
|
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.
|
|
14
|
-
"@dative-gpi/foundation-shared-services": "0.0.
|
|
13
|
+
"@dative-gpi/foundation-shared-domain": "0.0.72",
|
|
14
|
+
"@dative-gpi/foundation-shared-services": "0.0.72",
|
|
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": "
|
|
35
|
+
"gitHead": "dbc4787e4b28439c3d9284f6e430daab222cd671"
|
|
36
36
|
}
|
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
.fs-data-table {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
table {
|
|
3
|
+
margin-top: calc(var(--fs-data-table-row-gap) * -1);
|
|
4
|
+
border-spacing: 0 var(--fs-data-table-row-gap) !important;
|
|
5
|
+
background-color: var(--fs-data-table-background-color) !important;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.fs-data-table-custom-row > td {
|
|
9
|
+
border-bottom: var(--fs-data-table-row-border-size) solid var(--fs-data-table-row-border-color) !important;
|
|
10
|
+
border-top: var(--fs-data-table-row-border-size) solid var(--fs-data-table-row-border-color) !important;
|
|
11
|
+
background-color: var(--fs-data-table-row-background-color) !important;
|
|
12
|
+
color: var(--fs-data-table-row-color);
|
|
4
13
|
position: relative;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.fs-data-table-custom-row > td:first-child{
|
|
17
|
+
border-top-left-radius: var(--fs-data-table-row-border-radius) !important;
|
|
18
|
+
border-bottom-left-radius: var(--fs-data-table-row-border-radius) !important;
|
|
19
|
+
border-left: var(--fs-data-table-row-border-size) solid var(--fs-data-table-row-border-color);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.fs-data-table-custom-row > td:last-child{
|
|
23
|
+
border-top-right-radius: var(--fs-data-table-row-border-radius) !important;
|
|
24
|
+
border-bottom-right-radius: var(--fs-data-table-row-border-radius) !important;
|
|
25
|
+
border-right: var(--fs-data-table-row-border-size) solid var(--fs-data-table-row-border-color);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
th,
|
|
29
|
+
:not(.fs-data-table-custom-row) > td {
|
|
5
30
|
background-color: var(--fs-data-table-background-color) !important;
|
|
31
|
+
position: relative;
|
|
6
32
|
}
|
|
7
33
|
|
|
8
34
|
th {
|