vueless 0.0.287 → 0.0.288
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 +3 -2
- package/constants/index.js +2 -1
- package/directive.tooltip/index.js +1 -2
- package/package.json +3 -3
- package/service.ui/index.js +3 -6
- package/ui.button/configs/default.config.js +1 -1
- package/ui.button/index.vue +1 -1
- package/ui.button-link/composables/attrs.composable.js +18 -28
- package/ui.button-link/configs/default.config.js +8 -6
- package/ui.button-link/index.stories.js +20 -1
- package/ui.button-link/index.vue +19 -24
- package/ui.button-toggle/configs/default.config.js +1 -1
- package/ui.button-toggle-item/configs/default.config.js +1 -1
- package/ui.container-accordion/configs/default.config.js +1 -1
- package/ui.container-card/configs/default.config.js +1 -1
- package/ui.container-card/index.stories.js +2 -2
- package/ui.container-col/configs/default.config.js +1 -1
- package/ui.container-divider/configs/default.config.js +1 -1
- package/ui.container-group/configs/default.config.js +1 -1
- package/ui.container-modal/configs/default.config.js +1 -1
- package/ui.container-modal/index.vue +1 -1
- package/ui.container-modal-confirm/configs/default.config.js +1 -1
- package/ui.container-page/configs/default.config.js +2 -2
- package/ui.container-page/index.stories.js +2 -2
- package/ui.container-page/index.vue +22 -11
- package/ui.container-row/configs/default.config.js +1 -1
- package/ui.data-list/configs/default.config.js +1 -1
- package/ui.data-table/configs/default.config.js +1 -1
- package/ui.data-table/index.stories.js +1 -1
- package/ui.dropdown-badge/configs/default.config.js +1 -1
- package/ui.dropdown-button/configs/default.config.js +1 -1
- package/ui.dropdown-link/configs/default.config.js +1 -1
- package/ui.dropdown-list/configs/default.config.js +1 -1
- package/ui.form-calendar/configs/default.config.js +1 -1
- package/ui.form-checkbox/configs/default.config.js +1 -1
- package/ui.form-checkbox-group/configs/default.config.js +1 -1
- package/ui.form-checkbox-multi-state/configs/default.config.js +1 -1
- package/ui.form-color-picker/configs/default.config.js +1 -1
- package/ui.form-date-picker/configs/default.config.js +1 -1
- package/ui.form-date-picker-range/configs/default.config.js +1 -1
- package/ui.form-input/configs/default.config.js +1 -1
- package/ui.form-input-file/configs/default.config.js +2 -2
- package/ui.form-input-file/index.vue +14 -13
- package/ui.form-input-money/configs/default.config.js +1 -1
- package/ui.form-input-number/configs/default.config.js +1 -1
- package/ui.form-input-rating/configs/default.config.js +1 -1
- package/ui.form-input-search/configs/default.config.js +1 -1
- package/ui.form-label/configs/default.config.js +1 -1
- package/ui.form-radio/configs/default.config.js +1 -1
- package/ui.form-radio-group/configs/default.config.js +1 -1
- package/ui.form-select/configs/default.config.js +1 -1
- package/ui.form-switch/configs/default.config.js +1 -1
- package/ui.form-textarea/configs/default.config.js +1 -1
- package/ui.image-avatar/configs/default.config.js +1 -1
- package/ui.image-icon/configs/default.config.js +4 -48
- package/ui.image-icon/index.stories.js +0 -3
- package/ui.image-icon/index.vue +13 -42
- package/ui.loader/configs/default.config.js +1 -1
- package/ui.loader-rendering/configs/default.config.js +1 -1
- package/ui.loader-top/configs/default.config.js +1 -1
- package/ui.navigation-pagination/configs/default.config.js +1 -1
- package/ui.navigation-progress/configs/default.config.js +1 -1
- package/ui.navigation-tab/configs/default.config.js +1 -1
- package/ui.navigation-tabs/configs/default.config.js +1 -1
- package/ui.other-dot/configs/default.config.js +1 -1
- package/ui.text-alert/configs/default.config.js +1 -1
- package/ui.text-badge/configs/default.config.js +1 -1
- package/ui.text-block/configs/default.config.js +1 -1
- package/ui.text-empty/configs/default.config.js +14 -4
- package/ui.text-empty/index.stories.js +0 -1
- package/ui.text-empty/index.vue +19 -10
- package/ui.text-file/configs/default.config.js +2 -2
- package/ui.text-file/index.vue +1 -1
- package/ui.text-files/configs/default.config.js +1 -1
- package/ui.text-header/configs/default.config.js +1 -1
- package/ui.text-money/configs/default.config.js +1 -1
- package/ui.text-notify/configs/default.config.js +1 -1
- package/ui.text-notify/index.vue +2 -2
- package/web-types.json +16 -24
package/composable.ui/index.js
CHANGED
|
@@ -83,7 +83,7 @@ export default function useUI(defaultConfig = {}, propsConfigGetter = null, topL
|
|
|
83
83
|
|
|
84
84
|
const configAttrs = {
|
|
85
85
|
config: configKeyValue,
|
|
86
|
-
...configKeyValue?.
|
|
86
|
+
...configKeyValue?.defaults,
|
|
87
87
|
};
|
|
88
88
|
|
|
89
89
|
const isTopLevelClassKey = configKey === (topLevelClassKey || firstClassKey);
|
|
@@ -192,6 +192,7 @@ function mergeConfigs({
|
|
|
192
192
|
|
|
193
193
|
const {
|
|
194
194
|
i18n,
|
|
195
|
+
defaults,
|
|
195
196
|
strategy,
|
|
196
197
|
safelist,
|
|
197
198
|
component,
|
|
@@ -217,7 +218,7 @@ function mergeConfigs({
|
|
|
217
218
|
}
|
|
218
219
|
} else if (key === strategy) {
|
|
219
220
|
config[key] = propsConfig[key] || globalConfig[key] || defaultConfig[key];
|
|
220
|
-
} else if (key === defaultVariants) {
|
|
221
|
+
} else if (key === defaults || key === defaultVariants) {
|
|
221
222
|
config[key] = { ...defaultConfig[key], ...globalConfig[key], ...propsConfig[key] };
|
|
222
223
|
} else if (key === compoundVariants) {
|
|
223
224
|
config[key] = mergeCompoundVariants({
|
package/constants/index.js
CHANGED
|
@@ -56,11 +56,12 @@ export const CVA_CONFIG_KEY = {
|
|
|
56
56
|
/* Vueless default config keys */
|
|
57
57
|
export const SYSTEM_CONFIG_KEY = {
|
|
58
58
|
i18n: "i18n",
|
|
59
|
+
defaults: "defaults",
|
|
59
60
|
strategy: "strategy",
|
|
60
61
|
safelist: "safelist",
|
|
61
62
|
component: "component",
|
|
62
|
-
safelistColors: "safelistColors",
|
|
63
63
|
transition: "transition",
|
|
64
|
+
safelistColors: "safelistColors",
|
|
64
65
|
iconName: "iconName",
|
|
65
66
|
...CVA_CONFIG_KEY,
|
|
66
67
|
};
|
|
@@ -16,14 +16,13 @@ const defaultSettings = {
|
|
|
16
16
|
theme: "light",
|
|
17
17
|
animation: "shift-away",
|
|
18
18
|
};
|
|
19
|
+
|
|
19
20
|
const mergedSettings = merge(defaultSettings, globalSettings);
|
|
20
21
|
|
|
21
22
|
tippy.setDefaultProps(mergedSettings);
|
|
22
23
|
|
|
23
24
|
export default {
|
|
24
25
|
mounted(el, bindings) {
|
|
25
|
-
if (!bindings.value.content) return;
|
|
26
|
-
|
|
27
26
|
tippy(el, merge(mergedSettings, bindings.value || {}));
|
|
28
27
|
},
|
|
29
28
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vueless",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.288",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Vue Styleless Component Framework.",
|
|
6
6
|
"homepage": "https://vueless.com",
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
"@release-it/bumper": "^6.0.1",
|
|
38
38
|
"@vitejs/plugin-vue": "^5.0.5",
|
|
39
39
|
"@vue/eslint-config-prettier": "^9.0.0",
|
|
40
|
-
"@vueless/plugin-vite": "^0.0.
|
|
40
|
+
"@vueless/plugin-vite": "^0.0.54",
|
|
41
41
|
"@vueless/storybook": "^0.0.34",
|
|
42
|
-
"@vueless/web-types": "^0.0.
|
|
42
|
+
"@vueless/web-types": "^0.0.14",
|
|
43
43
|
"autoprefixer": "^10.4.19",
|
|
44
44
|
"cssnano": "^6.1.2",
|
|
45
45
|
"eslint": "^8.55.0",
|
package/service.ui/index.js
CHANGED
|
@@ -132,14 +132,11 @@ function setFavicon(faviconPath) {
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
function getDefault(defaultConfig, name) {
|
|
135
|
-
const
|
|
136
|
-
cloneDeep(defaultConfig.defaultVariants),
|
|
137
|
-
globalComponentConfig[name]?.defaultVariants,
|
|
138
|
-
);
|
|
135
|
+
const defaults = merge(cloneDeep(defaultConfig.defaults), globalComponentConfig[name]?.defaults);
|
|
139
136
|
|
|
140
|
-
|
|
137
|
+
defaults.color = getColor(defaults.color);
|
|
141
138
|
|
|
142
|
-
return
|
|
139
|
+
return defaults;
|
|
143
140
|
}
|
|
144
141
|
|
|
145
142
|
function getColor(color) {
|
package/ui.button/index.vue
CHANGED
|
@@ -33,39 +33,29 @@ export default function useAttrs(props, { isActive, isExactActive }) {
|
|
|
33
33
|
if (key === "wrapper") {
|
|
34
34
|
const wrapperAttrs = attrs[`${key}Attrs`];
|
|
35
35
|
|
|
36
|
-
attrs[`${key}Attrs`] = computed(() => {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
(hasDefaultSlot || hasLeftSlot || hasRightSlot) && config.value.withSlots,
|
|
46
|
-
isActive.value && props.wrapperActiveClass,
|
|
47
|
-
isExactActive.value && props.wrapperExactActiveClass,
|
|
48
|
-
]),
|
|
49
|
-
};
|
|
50
|
-
});
|
|
36
|
+
attrs[`${key}Attrs`] = computed(() => ({
|
|
37
|
+
...wrapperAttrs.value,
|
|
38
|
+
class: cx([
|
|
39
|
+
wrapperAttrs.value.class,
|
|
40
|
+
hasSlotContent(slots["default"]) && config.value.withChild,
|
|
41
|
+
isActive.value && props.wrapperActiveClass,
|
|
42
|
+
isExactActive.value && props.wrapperExactActiveClass,
|
|
43
|
+
]),
|
|
44
|
+
}));
|
|
51
45
|
}
|
|
52
46
|
|
|
53
47
|
if (key === "link") {
|
|
54
48
|
const linkAttrs = attrs[`${key}Attrs`];
|
|
55
49
|
|
|
56
|
-
attrs[`${key}Attrs`] = computed(() => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
isExactActive.value && props.exactActiveClass,
|
|
66
|
-
]),
|
|
67
|
-
};
|
|
68
|
-
});
|
|
50
|
+
attrs[`${key}Attrs`] = computed(() => ({
|
|
51
|
+
...linkAttrs.value,
|
|
52
|
+
class: cx([
|
|
53
|
+
linkAttrs.value.class,
|
|
54
|
+
hasSlotContent(slots["default"]) && config.value.withChild,
|
|
55
|
+
isActive.value && props.activeClass,
|
|
56
|
+
isExactActive.value && props.exactActiveClass,
|
|
57
|
+
]),
|
|
58
|
+
}));
|
|
69
59
|
}
|
|
70
60
|
}
|
|
71
61
|
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
export default /*tw*/ {
|
|
2
2
|
wrapper: {
|
|
3
3
|
base: `
|
|
4
|
-
w-fit inline-flex rounded transition focus-visible:outline-none
|
|
4
|
+
w-fit inline-flex items-center rounded transition focus-visible:outline-none
|
|
5
5
|
focus-within:ring-dynamic focus-within:ring-offset-4 focus-within:ring-{color}-700/15
|
|
6
6
|
`,
|
|
7
7
|
variants: {
|
|
8
|
+
size: {
|
|
9
|
+
sm: "gap-1",
|
|
10
|
+
md: "gap-1.5",
|
|
11
|
+
lg: "gap-1.5",
|
|
12
|
+
},
|
|
8
13
|
color: {
|
|
9
14
|
grayscale: "focus-within:ring-gray-700/15",
|
|
10
15
|
white: "focus-within:ring-white/15",
|
|
@@ -56,11 +61,8 @@ export default /*tw*/ {
|
|
|
56
61
|
},
|
|
57
62
|
},
|
|
58
63
|
},
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
leftSlot: "mr-1",
|
|
62
|
-
rightSlot: "ml-1",
|
|
63
|
-
defaultVariants: {
|
|
64
|
+
withChild: "flex items-center no-underline hover:no-underline focus-within:ring-0 focus-within:ring-offset-0",
|
|
65
|
+
defaults: {
|
|
64
66
|
color: "brand",
|
|
65
67
|
type: "link",
|
|
66
68
|
size: "md",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getArgTypes, getSlotNames, getSlotsFragment } from "../service.storybook";
|
|
2
2
|
|
|
3
3
|
import ULink from "../ui.button-link";
|
|
4
|
+
import UIcon from "../ui.image-icon";
|
|
4
5
|
import UButton from "../ui.button";
|
|
5
6
|
import URow from "../ui.container-row";
|
|
6
7
|
|
|
@@ -21,7 +22,7 @@ export default {
|
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
const DefaultTemplate = (args) => ({
|
|
24
|
-
components: { ULink, UButton },
|
|
25
|
+
components: { ULink, UButton, UIcon },
|
|
25
26
|
setup() {
|
|
26
27
|
const slots = getSlotNames(ULink.name);
|
|
27
28
|
|
|
@@ -106,3 +107,21 @@ slotDefault.args = {
|
|
|
106
107
|
</template>
|
|
107
108
|
`,
|
|
108
109
|
};
|
|
110
|
+
|
|
111
|
+
export const slotLeft = DefaultTemplate.bind({});
|
|
112
|
+
slotLeft.args = {
|
|
113
|
+
slotTemplate: `
|
|
114
|
+
<template #left>
|
|
115
|
+
<UIcon name="star" size="xs" />
|
|
116
|
+
</template>
|
|
117
|
+
`,
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
export const slotRight = DefaultTemplate.bind({});
|
|
121
|
+
slotRight.args = {
|
|
122
|
+
slotTemplate: `
|
|
123
|
+
<template #right>
|
|
124
|
+
<UIcon name="star" size="xs" />
|
|
125
|
+
</template>
|
|
126
|
+
`,
|
|
127
|
+
};
|
package/ui.button-link/index.vue
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div v-bind="wrapperAttrs" ref="wrapperRef" tabindex="-1">
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<slot name="left" />
|
|
6
|
-
</div>
|
|
3
|
+
<!-- @slot Use it to add something before the text. -->
|
|
4
|
+
<slot name="left" />
|
|
7
5
|
|
|
8
6
|
<router-link
|
|
9
7
|
v-if="isPresentRoute"
|
|
10
8
|
:to="route"
|
|
11
9
|
:target="targetValue"
|
|
12
|
-
:data-test="dataTest"
|
|
13
10
|
v-bind="linkAttrs"
|
|
11
|
+
:data-test="dataTest"
|
|
14
12
|
tabindex="0"
|
|
15
13
|
@blur="onBlur"
|
|
16
14
|
@focus="onFocus"
|
|
@@ -20,16 +18,16 @@
|
|
|
20
18
|
>
|
|
21
19
|
<!-- @slot Use it replace the text. -->
|
|
22
20
|
<slot>
|
|
23
|
-
|
|
21
|
+
{{ label }}
|
|
24
22
|
</slot>
|
|
25
23
|
</router-link>
|
|
26
24
|
|
|
27
25
|
<a
|
|
28
26
|
v-else
|
|
29
|
-
:href="
|
|
27
|
+
:href="prefixedHref"
|
|
30
28
|
:target="targetValue"
|
|
31
|
-
:data-test="dataTest"
|
|
32
29
|
v-bind="linkAttrs"
|
|
30
|
+
:data-test="dataTest"
|
|
33
31
|
tabindex="0"
|
|
34
32
|
@blur="onBlur"
|
|
35
33
|
@focus="onFocus"
|
|
@@ -39,14 +37,12 @@
|
|
|
39
37
|
>
|
|
40
38
|
<!-- @slot Use it replace the text. -->
|
|
41
39
|
<slot>
|
|
42
|
-
|
|
40
|
+
{{ label }}
|
|
43
41
|
</slot>
|
|
44
42
|
</a>
|
|
45
43
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
<slot name="right" />
|
|
49
|
-
</div>
|
|
44
|
+
<!-- @slot Use it to add something after the text. -->
|
|
45
|
+
<slot name="right" />
|
|
50
46
|
</div>
|
|
51
47
|
</template>
|
|
52
48
|
|
|
@@ -99,17 +95,17 @@ const props = defineProps({
|
|
|
99
95
|
},
|
|
100
96
|
|
|
101
97
|
/**
|
|
102
|
-
* Link url.
|
|
98
|
+
* Link href url.
|
|
103
99
|
*/
|
|
104
|
-
|
|
100
|
+
href: {
|
|
105
101
|
type: String,
|
|
106
102
|
default: "",
|
|
107
103
|
},
|
|
108
104
|
|
|
109
105
|
/**
|
|
110
|
-
* Vue route object.
|
|
106
|
+
* Vue-router route object.
|
|
111
107
|
*/
|
|
112
|
-
|
|
108
|
+
to: {
|
|
113
109
|
type: Object,
|
|
114
110
|
default: () => ({}),
|
|
115
111
|
},
|
|
@@ -142,7 +138,7 @@ const props = defineProps({
|
|
|
142
138
|
},
|
|
143
139
|
|
|
144
140
|
/**
|
|
145
|
-
* Open link in new
|
|
141
|
+
* Open link in the new tab.
|
|
146
142
|
*/
|
|
147
143
|
targetBlank: {
|
|
148
144
|
type: Boolean,
|
|
@@ -263,7 +259,7 @@ const props = defineProps({
|
|
|
263
259
|
});
|
|
264
260
|
|
|
265
261
|
const isPresentRoute = computed(() => {
|
|
266
|
-
for (let key in props.
|
|
262
|
+
for (let key in props.to) return true;
|
|
267
263
|
|
|
268
264
|
return false;
|
|
269
265
|
});
|
|
@@ -274,28 +270,27 @@ const { route, isActive, isExactActive } = useLink({
|
|
|
274
270
|
exactActiveClass: props.exactActiveClass,
|
|
275
271
|
custom: props.custom,
|
|
276
272
|
replace: props.replace,
|
|
277
|
-
to: isPresentRoute.value ? props.
|
|
273
|
+
to: isPresentRoute.value ? props.to : "/",
|
|
278
274
|
});
|
|
279
275
|
|
|
280
276
|
const wrapperRef = ref(null);
|
|
281
277
|
|
|
282
278
|
defineExpose({ wrapperRef });
|
|
283
279
|
|
|
284
|
-
const { wrapperAttrs, linkAttrs
|
|
285
|
-
useAttrs(props, { isActive, isExactActive });
|
|
280
|
+
const { wrapperAttrs, linkAttrs } = useAttrs(props, { isActive, isExactActive });
|
|
286
281
|
|
|
287
282
|
const targetValue = computed(() => {
|
|
288
283
|
return props.targetBlank ? "_blank" : "_self";
|
|
289
284
|
});
|
|
290
285
|
|
|
291
|
-
const
|
|
286
|
+
const prefixedHref = computed(() => {
|
|
292
287
|
const types = {
|
|
293
288
|
phone: "tel:",
|
|
294
289
|
email: "mailto:",
|
|
295
290
|
link: "",
|
|
296
291
|
};
|
|
297
292
|
|
|
298
|
-
return props.
|
|
293
|
+
return props.href ? `${types[props.type]}${props.href}` : null;
|
|
299
294
|
});
|
|
300
295
|
|
|
301
296
|
function onClick(event) {
|
|
@@ -84,7 +84,7 @@ export const slotHeaderLeftBefore = DefaultTemplate.bind({});
|
|
|
84
84
|
slotHeaderLeftBefore.args = {
|
|
85
85
|
slotTemplate: `
|
|
86
86
|
<template #header-left-before>
|
|
87
|
-
<UIcon name="star" size="sm"
|
|
87
|
+
<UIcon name="star" size="sm" />
|
|
88
88
|
</template>
|
|
89
89
|
${defaultTemplate}
|
|
90
90
|
`,
|
|
@@ -104,7 +104,7 @@ export const slotHeaderLeftAfter = DefaultTemplate.bind({});
|
|
|
104
104
|
slotHeaderLeftAfter.args = {
|
|
105
105
|
slotTemplate: `
|
|
106
106
|
<template #header-left-after>
|
|
107
|
-
<UIcon name="star" size="sm"
|
|
107
|
+
<UIcon name="star" size="sm" />
|
|
108
108
|
</template>
|
|
109
109
|
${defaultTemplate}
|
|
110
110
|
`,
|
|
@@ -38,7 +38,7 @@ 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: "{ULink}
|
|
41
|
+
backLink: "{ULink}",
|
|
42
42
|
backLinkIcon: "{UIcon}",
|
|
43
43
|
backLinkIconName: "arrow_back",
|
|
44
44
|
title: "{UHeader}",
|
|
@@ -61,7 +61,7 @@ export default /*tw*/ {
|
|
|
61
61
|
},
|
|
62
62
|
},
|
|
63
63
|
},
|
|
64
|
-
|
|
64
|
+
defaults: {
|
|
65
65
|
titleSize: "lg",
|
|
66
66
|
width: "wide",
|
|
67
67
|
gray: false,
|
|
@@ -14,19 +14,22 @@
|
|
|
14
14
|
<div v-bind="headerLeftFallbackAttrs">
|
|
15
15
|
<ULink
|
|
16
16
|
v-if="isShownArrowButton"
|
|
17
|
-
|
|
17
|
+
no-ring
|
|
18
|
+
size="sm"
|
|
18
19
|
color="gray"
|
|
19
|
-
:
|
|
20
|
+
:to="backRoute"
|
|
21
|
+
:label="backLabel"
|
|
20
22
|
v-bind="backLinkAttrs"
|
|
21
23
|
>
|
|
22
|
-
<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
<template #left>
|
|
25
|
+
<UIcon
|
|
26
|
+
internal
|
|
27
|
+
size="xs"
|
|
28
|
+
color="gray"
|
|
29
|
+
:name="config.backLinkIconName"
|
|
30
|
+
v-bind="backLinkIconAttrs"
|
|
31
|
+
/>
|
|
32
|
+
</template>
|
|
30
33
|
</ULink>
|
|
31
34
|
|
|
32
35
|
<UHeader :label="title" :size="titleSize" v-bind="titleAttrs" />
|
|
@@ -133,13 +136,21 @@ const props = defineProps({
|
|
|
133
136
|
},
|
|
134
137
|
|
|
135
138
|
/**
|
|
136
|
-
*
|
|
139
|
+
* Back link vue-router route object.
|
|
137
140
|
*/
|
|
138
141
|
backRoute: {
|
|
139
142
|
type: Object,
|
|
140
143
|
default: () => ({}),
|
|
141
144
|
},
|
|
142
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Back link label.
|
|
148
|
+
*/
|
|
149
|
+
backLabel: {
|
|
150
|
+
type: String,
|
|
151
|
+
default: "",
|
|
152
|
+
},
|
|
153
|
+
|
|
143
154
|
/**
|
|
144
155
|
* Set gray background color.
|
|
145
156
|
*/
|
|
@@ -366,7 +366,7 @@ cellSlots.args = {
|
|
|
366
366
|
</template>
|
|
367
367
|
|
|
368
368
|
<template #cell-email="{ value }">
|
|
369
|
-
<ULink :label="value" :url="value" type="email"
|
|
369
|
+
<ULink :label="value" :url="value" type="email" />
|
|
370
370
|
</template>
|
|
371
371
|
|
|
372
372
|
<template #cell-tags="{ value }">
|