vueless 0.0.206 → 0.0.208
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/composable.ui/index.js +1 -0
- package/package.json +1 -1
- package/service.storybook/index.js +9 -0
- package/ui.button/index.stories.js +6 -18
- package/ui.button/index.vue +6 -1
- package/ui.container-accordion/composables/attrs.composable.js +10 -11
- package/ui.container-accordion/index.vue +8 -2
- package/ui.container-card/composable/attrs.composable.js +36 -43
- package/ui.container-card/configs/default.config.js +2 -2
- package/ui.container-card/index.vue +1 -1
- package/ui.container-divider/composables/attrs.composable.js +22 -49
- package/ui.container-divider/index.vue +1 -1
- package/ui.container-group/composables/attrs.composable.js +23 -39
- package/ui.container-group/configs/default.config.js +3 -3
- package/ui.container-group/index.vue +4 -4
- package/ui.container-groups/composables/attrs.composable.js +20 -16
- package/ui.container-groups/index.vue +1 -1
- package/ui.container-modal/composables/attrs.composable.js +43 -66
- package/ui.container-modal/configs/default.config.js +6 -6
- package/ui.container-modal/index.vue +13 -2
- package/ui.container-modal-confirm/composable/attrs.composable.js +21 -40
- package/ui.container-modal-confirm/configs/default.config.js +3 -3
- package/ui.container-modal-confirm/index.vue +18 -2
- package/ui.container-page/composables/attrs.composable.js +48 -83
- package/ui.container-page/configs/default.config.js +3 -3
- package/ui.container-page/index.vue +1 -1
- package/ui.container-row/composables/attrs.composable.js +20 -17
- package/ui.container-row/index.vue +1 -1
- package/ui.data-table/components/TableRow.vue +1 -1
- package/ui.data-table/composables/attrs.composable.js +2 -0
- package/ui.data-table/configs/default.config.js +3 -2
- package/ui.data-table/index.vue +2 -0
- package/ui.form-date-picker-range/configs/default.config.js +2 -6
- package/ui.form-date-picker-range/index.vue +29 -12
- package/ui.form-input/index.stories.js +2 -5
- package/ui.image-avatar/composables/attrs.composable.js +28 -24
- package/ui.image-avatar/configs/default.config.js +1 -1
- package/ui.image-avatar/index.vue +7 -2
- package/ui.image-icon/composables/attrs.composable.js +24 -49
- package/ui.image-icon/index.vue +17 -2
- package/ui.loader/index.stories.js +32 -2
- package/ui.navigation-progress/index.stories.js +48 -106
- package/ui.navigation-progress/index.vue +9 -1
- package/web-types.json +58 -15
|
@@ -6,82 +6,59 @@ import { computed } from "vue";
|
|
|
6
6
|
|
|
7
7
|
import useBreakpoint from "../../composable.breakpoint";
|
|
8
8
|
|
|
9
|
-
export function useAttrs(props) {
|
|
10
|
-
const { config, getAttrs, hasSlotContent } = useUI(
|
|
11
|
-
|
|
9
|
+
export default function useAttrs(props) {
|
|
10
|
+
const { config, getAttrs, hasSlotContent, isSystemKey } = useUI(
|
|
11
|
+
defaultConfig,
|
|
12
|
+
() => props.config,
|
|
13
|
+
);
|
|
12
14
|
const { isMobileBreakpoint } = useBreakpoint();
|
|
15
|
+
const attrs = {};
|
|
13
16
|
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
variants: modal.variants,
|
|
17
|
-
compoundVariants: modal.compoundVariants,
|
|
18
|
-
});
|
|
17
|
+
for (const key in defaultConfig) {
|
|
18
|
+
if (isSystemKey(key)) continue;
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
const classes = computed(() => {
|
|
21
|
+
const value = config.value[key];
|
|
22
|
+
|
|
23
|
+
if (value.variants || value.compoundVariants) {
|
|
24
|
+
return cva(value)({
|
|
25
|
+
...props,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return "";
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
attrs[`${key}Attrs`] = getAttrs(key, { classes });
|
|
26
33
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const innerWrapperAttrs = getAttrs("innerWrapper");
|
|
30
|
-
const headerAttrsRaw = getAttrs("header");
|
|
31
|
-
const headerLeftAttrs = getAttrs("headerLeft");
|
|
32
|
-
const headerLeftFallbackAttrs = getAttrs("headerLeftFallback");
|
|
33
|
-
const backLinkAttrs = getAttrs("backLink", { isComponent: true });
|
|
34
|
-
const backLinkIconAttrs = getAttrs("backLinkIcon", { isComponent: true });
|
|
35
|
-
const titleAttrs = getAttrs("title", { isComponent: true });
|
|
36
|
-
const descriptionAttrs = getAttrs("description");
|
|
37
|
-
const headerRightAttrs = getAttrs("headerRight");
|
|
38
|
-
const closeIconAttrs = getAttrs("closeIcon", { isComponent: true });
|
|
39
|
-
const bodyAttrs = getAttrs("body");
|
|
40
|
-
const dividerAttrs = getAttrs("divider", { isComponent: true });
|
|
41
|
-
const dividerSpacingAttrs = getAttrs("dividerSpacing", { isComponent: true });
|
|
42
|
-
const footerAttrsRaw = getAttrs("footer");
|
|
34
|
+
if (key === "header") {
|
|
35
|
+
const headerAttrs = attrs[`${key}Attrs`];
|
|
43
36
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
37
|
+
attrs[`${key}Attrs`] = computed(() => ({
|
|
38
|
+
...headerAttrs.value,
|
|
39
|
+
class: cx([
|
|
40
|
+
headerAttrs.value.class,
|
|
41
|
+
props.mobileFooterReverse && isMobileBreakpoint.value && config.value.footerMobileReverse,
|
|
42
|
+
]),
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
51
45
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
class: cx([
|
|
55
|
-
footerAttrsRaw.value.class,
|
|
56
|
-
props.mobileFooterReverse && isMobileBreakpoint.value && config.value.footerMobileReverse,
|
|
57
|
-
]),
|
|
58
|
-
}));
|
|
46
|
+
if (key === "footer") {
|
|
47
|
+
const footerAttrs = attrs[`${key}Attrs`];
|
|
59
48
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
49
|
+
attrs[`${key}Attrs`] = computed(() => ({
|
|
50
|
+
...footerAttrs.value,
|
|
51
|
+
class: cx([
|
|
52
|
+
footerAttrs.value.class,
|
|
53
|
+
props.mobileFooterReverse && isMobileBreakpoint.value && config.value.footerMobileReverse,
|
|
54
|
+
]),
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
63
58
|
|
|
64
59
|
return {
|
|
60
|
+
...attrs,
|
|
65
61
|
config,
|
|
66
|
-
modalAttrs,
|
|
67
|
-
titleAttrs,
|
|
68
|
-
backLinkAttrs,
|
|
69
|
-
backLinkIconAttrs,
|
|
70
|
-
closeIconAttrs,
|
|
71
|
-
dividerAttrs,
|
|
72
|
-
dividerSpacingAttrs,
|
|
73
|
-
overlayAttrs,
|
|
74
|
-
wrapperAttrs,
|
|
75
|
-
innerWrapperAttrs,
|
|
76
|
-
headerAttrs,
|
|
77
|
-
headerLeftAttrs,
|
|
78
|
-
headerLeftFallbackAttrs,
|
|
79
|
-
descriptionAttrs,
|
|
80
|
-
headerRightAttrs,
|
|
81
|
-
bodyAttrs,
|
|
82
|
-
footerLeftAttrs,
|
|
83
|
-
footerAttrs,
|
|
84
|
-
footerRightAttrs,
|
|
85
62
|
hasSlotContent,
|
|
86
63
|
};
|
|
87
64
|
}
|
|
@@ -21,17 +21,17 @@ export default /*tw*/ {
|
|
|
21
21
|
header: "flex items-center justify-between px-4 md:px-8 pb-6 pt-8",
|
|
22
22
|
headerLeft: "flex items-center space-x-4",
|
|
23
23
|
headerLeftFallback: "flex flex-col",
|
|
24
|
-
backLink: "flex items-center gap-0.5",
|
|
25
|
-
backLinkIcon: "",
|
|
24
|
+
backLink: "{ULink} flex items-center gap-0.5",
|
|
25
|
+
backLinkIcon: "{UIcon}",
|
|
26
26
|
backLinkIconName: "arrow_back",
|
|
27
|
-
title: "",
|
|
27
|
+
title: "{UHeader}",
|
|
28
28
|
description: "mt-1.5 text-base font-normal text-gray-500",
|
|
29
29
|
headerRight: "",
|
|
30
|
-
closeIcon: "",
|
|
30
|
+
closeIcon: "{UIcon}",
|
|
31
31
|
closeIconName: "close",
|
|
32
32
|
body: "space-y-4 px-4 md:px-8",
|
|
33
|
-
divider: "",
|
|
34
|
-
dividerSpacing: "",
|
|
33
|
+
divider: "{UDivider}",
|
|
34
|
+
dividerSpacing: "{UDivider}",
|
|
35
35
|
footer: "flex justify-between px-4 md:px-8 py-8 max-md:flex-col max-md:gap-4",
|
|
36
36
|
footerLeft: "flex flex-col md:flex-row space-y-4 md:space-x-4 md:space-y-0 w-full",
|
|
37
37
|
footerRight: "flex flex-col md:flex-row space-y-4 md:space-x-4 md:space-y-0 w-full justify-end",
|
|
@@ -112,7 +112,7 @@ import UDivider from "../ui.container-divider";
|
|
|
112
112
|
|
|
113
113
|
import defaultConfig from "./configs/default.config";
|
|
114
114
|
import { UModal } from "./constants/index";
|
|
115
|
-
import
|
|
115
|
+
import useAttrs from "./composables/attrs.composable";
|
|
116
116
|
|
|
117
117
|
/* Should be a string for correct web-types gen */
|
|
118
118
|
defineOptions({ name: "UModal", inheritAttrs: false });
|
|
@@ -253,7 +253,18 @@ const props = defineProps({
|
|
|
253
253
|
},
|
|
254
254
|
});
|
|
255
255
|
|
|
256
|
-
const emit = defineEmits([
|
|
256
|
+
const emit = defineEmits([
|
|
257
|
+
/**
|
|
258
|
+
* Triggers when the modal is toggled.
|
|
259
|
+
* @property {Boolean} value
|
|
260
|
+
*/
|
|
261
|
+
"update:modelValue",
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Triggers when back link in modal is clicked.
|
|
265
|
+
*/
|
|
266
|
+
"back",
|
|
267
|
+
]);
|
|
257
268
|
|
|
258
269
|
const {
|
|
259
270
|
config,
|
|
@@ -3,57 +3,38 @@ import defaultConfig from "../configs/default.config";
|
|
|
3
3
|
import { cva } from "../../service.ui/index.js";
|
|
4
4
|
import { computed } from "vue";
|
|
5
5
|
|
|
6
|
-
export function useAttrs(props) {
|
|
7
|
-
const { config, getAttrs, hasSlotContent, getColor, setColor } = useUI(
|
|
6
|
+
export default function useAttrs(props) {
|
|
7
|
+
const { config, getAttrs, hasSlotContent, getColor, setColor, isSystemKey } = useUI(
|
|
8
8
|
defaultConfig,
|
|
9
9
|
() => props.config,
|
|
10
10
|
);
|
|
11
|
-
const
|
|
11
|
+
const attrs = {};
|
|
12
12
|
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
variants: modal.variants,
|
|
16
|
-
compoundVariants: modal.compoundVariants,
|
|
17
|
-
});
|
|
13
|
+
for (const key in defaultConfig) {
|
|
14
|
+
if (isSystemKey(key)) continue;
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
variants: footerLeftFallback.variants,
|
|
22
|
-
compoundVariants: footerLeftFallback.compoundVariants,
|
|
23
|
-
});
|
|
16
|
+
const classes = computed(() => {
|
|
17
|
+
const value = config.value[key];
|
|
24
18
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const footerLeftFallbackClasses = computed(() =>
|
|
35
|
-
setColor(cvaFooterLeftFallback({ color: getColor(props.color) }), props.color),
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
const footerLeftFallbackAttrs = getAttrs("footerLeftFallback", {
|
|
39
|
-
classes: footerLeftFallbackClasses,
|
|
40
|
-
});
|
|
19
|
+
if (value.variants || value.compoundVariants) {
|
|
20
|
+
return setColor(
|
|
21
|
+
cva(value)({
|
|
22
|
+
...props,
|
|
23
|
+
color: getColor(props.color),
|
|
24
|
+
}),
|
|
25
|
+
props.color,
|
|
26
|
+
);
|
|
27
|
+
}
|
|
41
28
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const modalAttrsRaw = getAttrs("modal", { isComponent: true, classes: modalClasses });
|
|
29
|
+
return "";
|
|
30
|
+
});
|
|
45
31
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
class: setColor(modalAttrsRaw.value.class, props.color),
|
|
49
|
-
}));
|
|
32
|
+
attrs[`${key}Attrs`] = getAttrs(key, { classes });
|
|
33
|
+
}
|
|
50
34
|
|
|
51
35
|
return {
|
|
36
|
+
...attrs,
|
|
52
37
|
config,
|
|
53
|
-
footerLeftFallbackAttrs,
|
|
54
|
-
modalAttrs,
|
|
55
|
-
confirmButtonAttrs,
|
|
56
|
-
cancelButtonAttrs,
|
|
57
38
|
hasSlotContent,
|
|
58
39
|
};
|
|
59
40
|
}
|
|
@@ -70,7 +70,7 @@ import UModal from "../ui.container-modal";
|
|
|
70
70
|
|
|
71
71
|
import defaultConfig from "./configs/default.config";
|
|
72
72
|
import { UModalConfirm } from "./constants/index";
|
|
73
|
-
import
|
|
73
|
+
import useAttrs from "./composable/attrs.composable";
|
|
74
74
|
import { useLocale } from "../composable.locale";
|
|
75
75
|
|
|
76
76
|
/* Should be a string for correct web-types gen */
|
|
@@ -152,7 +152,23 @@ const props = defineProps({
|
|
|
152
152
|
},
|
|
153
153
|
});
|
|
154
154
|
|
|
155
|
-
const emit = defineEmits([
|
|
155
|
+
const emit = defineEmits([
|
|
156
|
+
/**
|
|
157
|
+
* Triggers when the modal is toggled.
|
|
158
|
+
* @property {Boolean} value
|
|
159
|
+
*/
|
|
160
|
+
"update:modelValue",
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Triggers when the action is confirmed.
|
|
164
|
+
*/
|
|
165
|
+
"confirm",
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Triggers when the action is declined or modal is closed.
|
|
169
|
+
*/
|
|
170
|
+
"close",
|
|
171
|
+
]);
|
|
156
172
|
|
|
157
173
|
const { tm } = useLocale();
|
|
158
174
|
|
|
@@ -4,93 +4,58 @@ import { cva, cx, isMobileApp } from "../../service.ui";
|
|
|
4
4
|
import defaultConfig from "../configs/default.config";
|
|
5
5
|
import { computed } from "vue";
|
|
6
6
|
|
|
7
|
-
export function useAttrs(props, { isMobileBreakpoint }) {
|
|
8
|
-
const { config, getAttrs, hasSlotContent } = useUI(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const cvaWrapper = cva({
|
|
12
|
-
base: wrapper.base,
|
|
13
|
-
variants: wrapper.variants,
|
|
14
|
-
compoundVariants: wrapper.compoundVariants,
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
const cvaPage = cva({
|
|
18
|
-
base: page.base,
|
|
19
|
-
variants: page.variants,
|
|
20
|
-
compoundVariants: page.compoundVariants,
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
const cvaRightRounding = cva({
|
|
24
|
-
base: rightRounding.base,
|
|
25
|
-
variants: rightRounding.variants,
|
|
26
|
-
compoundVariants: rightRounding.compoundVariants,
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
const wrapperClasses = computed(() =>
|
|
30
|
-
cvaWrapper({
|
|
31
|
-
width: props.width,
|
|
32
|
-
fixedRounding: props.fixedRounding,
|
|
33
|
-
}),
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
const pageClasses = computed(() =>
|
|
37
|
-
cvaPage({
|
|
38
|
-
fixedRounding: props.fixedRounding,
|
|
39
|
-
gray: props.gray,
|
|
40
|
-
}),
|
|
7
|
+
export default function useAttrs(props, { isMobileBreakpoint }) {
|
|
8
|
+
const { config, getAttrs, hasSlotContent, isSystemKey } = useUI(
|
|
9
|
+
defaultConfig,
|
|
10
|
+
() => props.config,
|
|
41
11
|
);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
12
|
+
const attrs = {};
|
|
13
|
+
|
|
14
|
+
for (const key in defaultConfig) {
|
|
15
|
+
if (isSystemKey(key)) continue;
|
|
16
|
+
|
|
17
|
+
const classes = computed(() => {
|
|
18
|
+
const value = config.value[key];
|
|
19
|
+
|
|
20
|
+
if (value.variants || value.compoundVariants) {
|
|
21
|
+
return cva(value)({
|
|
22
|
+
...props,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return "";
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
attrs[`${key}Attrs`] = getAttrs(key, { classes });
|
|
30
|
+
|
|
31
|
+
if (key === "wrapper") {
|
|
32
|
+
const wrapperAttrs = attrs[`${key}Attrs`];
|
|
33
|
+
|
|
34
|
+
attrs[`${key}Attrs`] = computed(() => ({
|
|
35
|
+
...wrapperAttrs.value,
|
|
36
|
+
class: cx([
|
|
37
|
+
wrapperAttrs.value.class,
|
|
38
|
+
isMobileBreakpoint.value && !isMobileApp && config.value.wrapperMobile,
|
|
39
|
+
]),
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (key === "footer") {
|
|
44
|
+
const footerAttrs = attrs[`${key}Attrs`];
|
|
45
|
+
|
|
46
|
+
attrs[`${key}Attrs`] = computed(() => ({
|
|
47
|
+
...footerAttrs.value,
|
|
48
|
+
class: cx([
|
|
49
|
+
footerAttrs.value.class,
|
|
50
|
+
props.mobileFooterReverse && isMobileBreakpoint.value && config.value.footerMobileReverse,
|
|
51
|
+
]),
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
76
55
|
|
|
77
56
|
return {
|
|
57
|
+
...attrs,
|
|
78
58
|
config,
|
|
79
|
-
wrapperAttrs,
|
|
80
|
-
pageAttrs,
|
|
81
|
-
rightRoundingWrapperAttrs,
|
|
82
|
-
rightRoundingAttrs,
|
|
83
|
-
headerAttrs,
|
|
84
|
-
headerRightAttrs,
|
|
85
|
-
headerLeftAttrs,
|
|
86
|
-
headerLeftFallbackAttrs,
|
|
87
|
-
titleAttrs,
|
|
88
|
-
backLinkAttrs,
|
|
89
|
-
backLinkIconAttrs,
|
|
90
|
-
descriptionAttrs,
|
|
91
|
-
footerAttrs,
|
|
92
|
-
footerLeftAttrs,
|
|
93
|
-
footerRightAttrs,
|
|
94
59
|
hasSlotContent,
|
|
95
60
|
};
|
|
96
61
|
}
|
|
@@ -38,10 +38,10 @@ export default /*tw*/ {
|
|
|
38
38
|
header: "flex items-start justify-between mb-4 md:mb-6",
|
|
39
39
|
headerLeft: "flex items-center space-x-4",
|
|
40
40
|
headerLeftFallback: "flex flex-col",
|
|
41
|
-
backLink: "flex items-center gap-0.5",
|
|
42
|
-
backLinkIcon: "",
|
|
41
|
+
backLink: "{ULink} flex items-center gap-0.5",
|
|
42
|
+
backLinkIcon: "{UIcon}",
|
|
43
43
|
backLinkIconName: "arrow_back",
|
|
44
|
-
title: "",
|
|
44
|
+
title: "{UHeader}",
|
|
45
45
|
description: "mt-1.5 text-base font-normal text-gray-600",
|
|
46
46
|
headerRight: "",
|
|
47
47
|
footer: `mb-0 mt-14 justify-between pt-8 md:flex md:items-baseline space-y-4 md:space-y-0 border-t border-gray-200`,
|
|
@@ -90,7 +90,7 @@ import UIService from "../service.ui";
|
|
|
90
90
|
|
|
91
91
|
import defaultConfig from "./configs/default.config";
|
|
92
92
|
import { UPage } from "./constants";
|
|
93
|
-
import
|
|
93
|
+
import useAttrs from "./composables/attrs.composable";
|
|
94
94
|
|
|
95
95
|
const slots = useSlots();
|
|
96
96
|
|
|
@@ -3,27 +3,30 @@ import defaultConfig from "../configs/default.config";
|
|
|
3
3
|
import { cva } from "../../service.ui";
|
|
4
4
|
import { computed } from "vue";
|
|
5
5
|
|
|
6
|
-
export function useAttrs(props) {
|
|
7
|
-
const { config, getAttrs } = useUI(defaultConfig, () => props.config);
|
|
8
|
-
const
|
|
6
|
+
export default function useAttrs(props) {
|
|
7
|
+
const { config, getAttrs, isSystemKey } = useUI(defaultConfig, () => props.config);
|
|
8
|
+
const attrs = {};
|
|
9
9
|
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
variants: wrapper.variants,
|
|
13
|
-
compoundVariants: wrapper.compoundVariants,
|
|
14
|
-
});
|
|
10
|
+
for (const key in defaultConfig) {
|
|
11
|
+
if (isSystemKey(key)) continue;
|
|
15
12
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
gap: props.gap,
|
|
19
|
-
align: props.align,
|
|
20
|
-
noMobile: props.noMobile,
|
|
21
|
-
}),
|
|
22
|
-
);
|
|
13
|
+
const classes = computed(() => {
|
|
14
|
+
const value = config.value[key];
|
|
23
15
|
|
|
24
|
-
|
|
16
|
+
if (value.variants || value.compoundVariants) {
|
|
17
|
+
return cva(value)({
|
|
18
|
+
...props,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return "";
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
attrs[`${key}Attrs`] = getAttrs(key, { classes });
|
|
26
|
+
}
|
|
25
27
|
|
|
26
28
|
return {
|
|
27
|
-
|
|
29
|
+
...attrs,
|
|
30
|
+
config,
|
|
28
31
|
};
|
|
29
32
|
}
|
|
@@ -10,7 +10,7 @@ import UIService from "../service.ui";
|
|
|
10
10
|
|
|
11
11
|
import { URow } from "./constants";
|
|
12
12
|
import defaultConfig from "./configs/default.config";
|
|
13
|
-
import
|
|
13
|
+
import useAttrs from "./composables/attrs.composable";
|
|
14
14
|
|
|
15
15
|
/* Should be a string for correct web-types gen */
|
|
16
16
|
defineOptions({ name: "URow", inheritAttrs: false });
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
|
|
44
44
|
<div v-if="value?.hasOwnProperty('secondary')">
|
|
45
45
|
<slot :name="`cell-${key}`" :value="value" :row="row">
|
|
46
|
-
<div :data-cy="`${dataCy}-${key}-cell`">
|
|
46
|
+
<div :data-cy="`${dataCy}-${key}-cell`" v-bind="attrs.bodyCellPrimaryAttrs">
|
|
47
47
|
{{ value.primary || HYPHEN_SYMBOL }}
|
|
48
48
|
</div>
|
|
49
49
|
|
|
@@ -114,6 +114,7 @@ export function useAttrs(
|
|
|
114
114
|
const bodyRowBeforeCellAttrsRaw = getAttrs("bodyRowBeforeCell");
|
|
115
115
|
const bodyRowAfterAttrs = getAttrs("bodyRowAfter");
|
|
116
116
|
const bodyRowAfterCellAttrsRaw = getAttrs("bodyRowAfterCell");
|
|
117
|
+
const bodyCellPrimaryAttrs = getAttrs("bodyCellPrimary");
|
|
117
118
|
|
|
118
119
|
const bodyRowAttrsRaw = getAttrs("bodyRow");
|
|
119
120
|
|
|
@@ -259,5 +260,6 @@ export function useAttrs(
|
|
|
259
260
|
stickyFooterRowAttrs,
|
|
260
261
|
hasSlotContent,
|
|
261
262
|
headerAttrs,
|
|
263
|
+
bodyCellPrimaryAttrs,
|
|
262
264
|
};
|
|
263
265
|
}
|
|
@@ -26,7 +26,7 @@ export default /*tw*/ {
|
|
|
26
26
|
stickyHeaderActionsCheckbox: "",
|
|
27
27
|
stickyHeaderActionsCounter: "-ml-2",
|
|
28
28
|
tableWrapper: "border border-gray-200 rounded-lg bg-white",
|
|
29
|
-
table: "min-w-full border-none text-sm w-full",
|
|
29
|
+
table: "min-w-full border-none text-sm w-full table-fixed",
|
|
30
30
|
header: "border-b border-gray-200",
|
|
31
31
|
headerRow: "",
|
|
32
32
|
headerCell: "",
|
|
@@ -57,7 +57,8 @@ export default /*tw*/ {
|
|
|
57
57
|
},
|
|
58
58
|
},
|
|
59
59
|
},
|
|
60
|
-
|
|
60
|
+
bodyCellPrimary: "text-ellipsis overflow-hidden",
|
|
61
|
+
bodyCellSecondary: "mt-1 text-xs text-gray-500 overflow-hidden text-ellipsis",
|
|
61
62
|
bodyCellSecondaryEmpty: "inline-block",
|
|
62
63
|
bodyCellCheckbox: "first:px-4", // try to remove first
|
|
63
64
|
bodyCellDateSeparator: "",
|
package/ui.data-table/index.vue
CHANGED
|
@@ -169,6 +169,7 @@
|
|
|
169
169
|
bodyCellNestedCollapseIconAttrs,
|
|
170
170
|
bodyCellNestedExpandIconAttrs,
|
|
171
171
|
bodyCellNestedAttrs,
|
|
172
|
+
bodyCellPrimaryAttrs,
|
|
172
173
|
}"
|
|
173
174
|
@click="onClickRow"
|
|
174
175
|
@toggle-row-visibility="onToggleRowVisibility"
|
|
@@ -469,6 +470,7 @@ const {
|
|
|
469
470
|
stickyFooterRowAttrs,
|
|
470
471
|
hasSlotContent,
|
|
471
472
|
headerAttrs,
|
|
473
|
+
bodyCellPrimaryAttrs,
|
|
472
474
|
} = useAttrs(props, {
|
|
473
475
|
tableRows,
|
|
474
476
|
isShownActionsHeader,
|
|
@@ -34,8 +34,7 @@ export default /*tw*/ {
|
|
|
34
34
|
},
|
|
35
35
|
periodsRow: "mb-1 flex min-w-64 gap-1",
|
|
36
36
|
periodButton: `
|
|
37
|
-
|
|
38
|
-
px-1.5 py-2.5 text-center text-xs font-medium text-brand-900 hover:bg-brand-200
|
|
37
|
+
h-[3.125rem] w-full flex flex-col items-center justify-center
|
|
39
38
|
[&_span]:block [&_span]:font-normal [&_span]:text-brand-500
|
|
40
39
|
`,
|
|
41
40
|
periodButtonIcon: "",
|
|
@@ -52,10 +51,7 @@ export default /*tw*/ {
|
|
|
52
51
|
periodDateWeekList: "",
|
|
53
52
|
periodDateYearList: "grid grid-cols-3 grid-rows-1 gap-0.5",
|
|
54
53
|
periodDateQuarterList: "",
|
|
55
|
-
periodDate:
|
|
56
|
-
cursor-pointer block w-full rounded-lg py-3 text-center text-sm font-medium text-gray-900 hover:rounded-lg hover:bg-brand-50
|
|
57
|
-
disabled:opacity-50 disabled:cursor-not-allowed
|
|
58
|
-
`,
|
|
54
|
+
periodDate: "w-full",
|
|
59
55
|
periodDateActive: "bg-gray-100",
|
|
60
56
|
rangeInputWrapper: "flex mt-4",
|
|
61
57
|
rangeInput: {
|