vueless 0.0.579 → 0.0.580
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/composables/useUI.ts +46 -60
- package/constants.js +3 -0
- package/package.json +1 -1
- package/types.ts +39 -48
- package/ui.button/UButton.vue +2 -3
- package/ui.button/types.ts +2 -2
- package/ui.button-link/ULink.vue +23 -24
- package/ui.button-link/storybook/stories.ts +2 -2
- package/ui.button-link/types.ts +7 -6
- package/ui.button-toggle/UToggle.vue +15 -16
- package/ui.button-toggle/storybook/stories.ts +2 -2
- package/ui.button-toggle/types.ts +6 -4
- package/ui.button-toggle-item/UToggleItem.vue +29 -20
- package/ui.button-toggle-item/storybook/stories.ts +2 -2
- package/ui.button-toggle-item/types.ts +5 -4
- package/ui.container-accordion/UAccordion.vue +22 -17
- package/ui.container-accordion/storybook/stories.ts +2 -2
- package/ui.container-accordion/types.ts +5 -4
- package/ui.container-card/UCard.vue +12 -5
- package/ui.container-card/storybook/stories.ts +2 -2
- package/ui.container-card/types.ts +4 -3
- package/ui.container-col/UCol.vue +11 -12
- package/ui.container-col/storybook/stories.ts +2 -2
- package/ui.container-col/types.ts +5 -3
- package/ui.container-divider/UDivider.vue +13 -13
- package/ui.container-divider/storybook/stories.ts +2 -2
- package/ui.container-divider/types.ts +5 -3
- package/ui.container-group/UGroup.vue +10 -8
- package/ui.container-group/storybook/stories.ts +2 -2
- package/ui.container-group/types.ts +5 -3
- package/ui.container-groups/UGroups.vue +10 -7
- package/ui.container-groups/storybook/stories.ts +2 -2
- package/ui.container-groups/types.ts +5 -3
- package/ui.container-modal/UModal.vue +43 -43
- package/ui.container-modal/storybook/stories.ts +2 -3
- package/ui.container-modal/types.ts +5 -3
- package/ui.container-modal-confirm/UModalConfirm.vue +14 -17
- package/ui.container-modal-confirm/storybook/stories.ts +8 -6
- package/ui.container-modal-confirm/types.ts +5 -3
- package/ui.container-page/UPage.vue +32 -31
- package/ui.container-page/storybook/stories.ts +2 -2
- package/ui.container-page/types.ts +4 -3
- package/ui.container-row/URow.vue +10 -13
- package/ui.container-row/storybook/stories.ts +2 -2
- package/ui.container-row/types.ts +5 -3
- package/ui.data-list/UDataList.vue +40 -51
- package/ui.data-list/storybook/stories.ts +2 -2
- package/ui.data-list/types.ts +4 -4
- package/ui.data-table/UTable.vue +61 -60
- package/ui.data-table/types.ts +4 -3
- package/ui.dropdown-badge/UDropdownBadge.vue +21 -25
- package/ui.dropdown-badge/storybook/stories.ts +3 -3
- package/ui.dropdown-badge/types.ts +4 -3
- package/ui.dropdown-button/UDropdownButton.vue +20 -23
- package/ui.dropdown-button/storybook/stories.ts +3 -3
- package/ui.dropdown-button/types.ts +4 -3
- package/ui.dropdown-link/UDropdownLink.vue +20 -23
- package/ui.dropdown-link/storybook/stories.ts +3 -3
- package/ui.dropdown-link/types.ts +4 -3
- package/ui.dropdown-list/UDropdownList.vue +28 -32
- package/ui.dropdown-list/storybook/stories.ts +4 -4
- package/ui.dropdown-list/types.ts +4 -4
- package/ui.form-calendar/UCalendar.vue +36 -34
- package/ui.form-calendar/UCalendarDayView.vue +28 -23
- package/ui.form-calendar/UCalendarMonthView.vue +24 -19
- package/ui.form-calendar/UCalendarYearView.vue +24 -19
- package/ui.form-calendar/config.ts +2 -2
- package/ui.form-calendar/storybook/stories.ts +2 -2
- package/ui.form-calendar/types.ts +8 -7
- package/ui.form-checkbox/UCheckbox.vue +23 -21
- package/ui.form-checkbox/storybook/stories.ts +2 -2
- package/ui.form-checkbox/types.ts +7 -5
- package/ui.form-checkbox-group/UCheckboxGroup.vue +17 -14
- package/ui.form-checkbox-group/storybook/stories.ts +2 -2
- package/ui.form-checkbox-group/types.ts +6 -6
- package/ui.form-checkbox-multi-state/UCheckboxMultiState.vue +33 -14
- package/ui.form-checkbox-multi-state/storybook/stories.ts +2 -2
- package/ui.form-checkbox-multi-state/types.ts +4 -4
- package/ui.form-color-picker/UColorPicker.vue +23 -21
- package/ui.form-color-picker/storybook/stories.ts +2 -2
- package/ui.form-color-picker/types.ts +5 -5
- package/ui.form-date-picker/UDatePicker.vue +42 -27
- package/ui.form-date-picker/config.ts +5 -5
- package/ui.form-date-picker/types.ts +5 -2
- package/ui.form-date-picker-range/UDatePickerRange.vue +80 -53
- package/ui.form-date-picker-range/types.ts +7 -4
- package/ui.form-input/UInput.vue +32 -28
- package/ui.form-input/storybook/stories.ts +2 -2
- package/ui.form-input/types.ts +5 -3
- package/ui.form-input-file/UInputFile.vue +37 -32
- package/ui.form-input-file/storybook/stories.ts +2 -2
- package/ui.form-input-file/types.ts +6 -4
- package/ui.form-input-money/UInputMoney.vue +13 -18
- package/ui.form-input-money/storybook/stories.ts +2 -2
- package/ui.form-input-money/types.ts +5 -3
- package/ui.form-input-number/UInputNumber.vue +23 -24
- package/ui.form-input-number/types.ts +4 -2
- package/ui.form-input-rating/UInputRating.vue +24 -19
- package/ui.form-input-rating/storybook/stories.ts +2 -2
- package/ui.form-input-rating/types.ts +5 -3
- package/ui.form-input-search/UInputSearch.vue +22 -20
- package/ui.form-input-search/storybook/stories.ts +2 -2
- package/ui.form-input-search/types.ts +5 -3
- package/ui.form-label/ULabel.vue +19 -11
- package/ui.form-label/config.ts +0 -1
- package/ui.form-label/storybook/stories.ts +2 -2
- package/ui.form-label/types.ts +10 -8
- package/ui.form-radio/URadio.vue +22 -12
- package/ui.form-radio/storybook/stories.ts +2 -2
- package/ui.form-radio/types.ts +5 -5
- package/ui.form-radio-group/URadioGroup.vue +16 -12
- package/ui.form-radio-group/storybook/stories.ts +2 -2
- package/ui.form-radio-group/types.ts +7 -7
- package/ui.form-select/USelect.vue +53 -39
- package/ui.form-switch/USwitch.vue +30 -23
- package/ui.form-switch/storybook/stories.ts +2 -2
- package/ui.form-switch/types.ts +5 -3
- package/ui.form-textarea/UTextarea.vue +19 -15
- package/ui.form-textarea/storybook/stories.ts +2 -2
- package/ui.form-textarea/types.ts +5 -3
- package/ui.image-avatar/UAvatar.vue +12 -11
- package/ui.image-avatar/types.ts +4 -2
- package/ui.image-icon/UIcon.vue +31 -18
- package/ui.image-icon/storybook/stories.ts +2 -2
- package/ui.image-icon/types.ts +12 -5
- package/ui.loader/ULoader.vue +11 -9
- package/ui.loader/storybook/stories.ts +2 -2
- package/ui.loader/types.ts +10 -3
- package/ui.loader-overlay/ULoaderOverlay.vue +11 -7
- package/ui.loader-overlay/storybook/stories.ts +2 -2
- package/ui.loader-overlay/types.ts +4 -3
- package/ui.loader-progress/ULoaderProgress.vue +14 -10
- package/ui.loader-progress/storybook/stories.ts +2 -2
- package/ui.loader-progress/types.ts +4 -3
- package/ui.navigation-pagination/UPagination.vue +34 -33
- package/ui.navigation-pagination/storybook/stories.ts +2 -2
- package/ui.navigation-pagination/types.ts +4 -3
- package/ui.navigation-progress/StepperProgress.vue +25 -12
- package/ui.navigation-progress/UProgress.vue +12 -12
- package/ui.navigation-progress/types.ts +4 -3
- package/ui.navigation-tab/UTab.vue +18 -9
- package/ui.navigation-tab/storybook/stories.ts +2 -2
- package/ui.navigation-tab/types.ts +4 -3
- package/ui.navigation-tabs/UTabs.vue +13 -8
- package/ui.navigation-tabs/storybook/stories.ts +2 -2
- package/ui.navigation-tabs/types.ts +5 -5
- package/ui.other-dot/UDot.vue +10 -8
- package/ui.other-dot/storybook/stories.ts +2 -2
- package/ui.other-dot/types.ts +4 -3
- package/ui.text-alert/UAlert.vue +24 -27
- package/ui.text-alert/storybook/stories.ts +2 -2
- package/ui.text-alert/types.ts +4 -3
- package/ui.text-badge/UBadge.vue +25 -13
- package/ui.text-badge/storybook/stories.ts +2 -2
- package/ui.text-badge/types.ts +4 -3
- package/ui.text-block/UText.vue +10 -9
- package/ui.text-block/storybook/stories.ts +2 -2
- package/ui.text-block/types.ts +4 -3
- package/ui.text-empty/UEmpty.vue +22 -19
- package/ui.text-empty/storybook/stories.ts +2 -2
- package/ui.text-empty/types.ts +4 -3
- package/ui.text-file/UFile.vue +23 -20
- package/ui.text-file/storybook/stories.ts +2 -2
- package/ui.text-file/types.ts +4 -3
- package/ui.text-files/UFiles.vue +16 -10
- package/ui.text-files/storybook/stories.ts +2 -2
- package/ui.text-files/types.ts +4 -3
- package/ui.text-header/UHeader.vue +11 -11
- package/ui.text-header/storybook/stories.ts +2 -2
- package/ui.text-header/types.ts +4 -3
- package/ui.text-money/UMoney.vue +20 -27
- package/ui.text-money/storybook/stories.ts +2 -2
- package/ui.text-money/types.ts +4 -3
- package/ui.text-notify/UNotify.vue +58 -41
- package/ui.text-notify/config.ts +3 -3
- package/ui.text-notify/constants.ts +18 -20
- package/ui.text-notify/storybook/stories.ts +2 -2
- package/ui.text-notify/types.ts +10 -5
- package/ui.text-notify/utilNotify.ts +17 -11
- package/utils/helper.ts +5 -5
- package/utils/storybook.ts +11 -1
- package/utils/ui.ts +19 -9
- package/web-types.json +521 -368
- package/ui.button-link/useAttrs.ts +0 -20
- package/ui.button-toggle/useAttrs.ts +0 -12
- package/ui.button-toggle-item/useAttrs.ts +0 -29
- package/ui.container-accordion/useAttrs.ts +0 -26
- package/ui.container-card/useAttrs.ts +0 -12
- package/ui.container-col/useAttrs.ts +0 -12
- package/ui.container-divider/useAttrs.ts +0 -17
- package/ui.container-group/useAttrs.ts +0 -12
- package/ui.container-groups/useAttrs.ts +0 -12
- package/ui.container-modal/useAttrs.ts +0 -12
- package/ui.container-modal-confirm/useAttrs.ts +0 -12
- package/ui.container-page/useAttrs.ts +0 -12
- package/ui.container-row/useAttrs.ts +0 -12
- package/ui.data-list/useAttrs.ts +0 -12
- package/ui.data-table/useAttrs.ts +0 -31
- package/ui.dropdown-badge/useAttrs.ts +0 -26
- package/ui.dropdown-button/useAttrs.ts +0 -26
- package/ui.dropdown-link/useAttrs.ts +0 -26
- package/ui.dropdown-list/useAttrs.ts +0 -12
- package/ui.form-calendar/useAttrs.ts +0 -12
- package/ui.form-checkbox/useAttrs.ts +0 -29
- package/ui.form-checkbox-group/useAttrs.ts +0 -12
- package/ui.form-checkbox-multi-state/useAttrs.ts +0 -37
- package/ui.form-color-picker/useAttrs.ts +0 -15
- package/ui.form-date-picker/useAttrs.ts +0 -43
- package/ui.form-date-picker-range/useAttrs.ts +0 -53
- package/ui.form-input/useAttrs.ts +0 -31
- package/ui.form-input-file/useAttrs.ts +0 -21
- package/ui.form-input-money/useAttrs.ts +0 -15
- package/ui.form-input-number/useAttrs.ts +0 -15
- package/ui.form-input-rating/useAttrs.ts +0 -14
- package/ui.form-input-search/useAttrs.ts +0 -15
- package/ui.form-label/useAttrs.ts +0 -20
- package/ui.form-radio/useAttrs.ts +0 -29
- package/ui.form-radio-group/useAttrs.ts +0 -12
- package/ui.form-select/useAttrs.js +0 -19
- package/ui.form-switch/useAttrs.ts +0 -28
- package/ui.form-textarea/useAttrs.ts +0 -21
- package/ui.image-avatar/useAttrs.ts +0 -12
- package/ui.image-icon/useAttrs.ts +0 -12
- package/ui.loader/useAttrs.ts +0 -12
- package/ui.loader-overlay/useAttrs.ts +0 -12
- package/ui.loader-progress/useAttrs.ts +0 -12
- package/ui.navigation-pagination/useAttrs.ts +0 -12
- package/ui.navigation-progress/useAttrs.ts +0 -17
- package/ui.navigation-tab/useAttrs.ts +0 -28
- package/ui.navigation-tabs/useAttrs.ts +0 -12
- package/ui.other-dot/useAttrs.ts +0 -12
- package/ui.text-alert/useAttrs.ts +0 -12
- package/ui.text-badge/useAttrs.ts +0 -21
- package/ui.text-block/useAttrs.ts +0 -12
- package/ui.text-empty/useAttrs.ts +0 -12
- package/ui.text-file/useAttrs.ts +0 -12
- package/ui.text-files/useAttrs.ts +0 -12
- package/ui.text-header/useAttrs.ts +0 -12
- package/ui.text-money/useAttrs.ts +0 -12
- package/ui.text-notify/useAttrs.ts +0 -12
|
@@ -1,27 +1,40 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import colors from "tailwindcss/colors.js";
|
|
3
2
|
import { computed } from "vue";
|
|
3
|
+
import colors from "tailwindcss/colors.js";
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import useUI from "../composables/useUI.ts";
|
|
6
6
|
|
|
7
|
-
import
|
|
7
|
+
import defaultConfig from "./config.ts";
|
|
8
|
+
import { GRAY_COLORS } from "../constants.js";
|
|
8
9
|
|
|
9
|
-
import type { StepperProgressProps } from "./types.ts";
|
|
10
|
+
import type { StepperProgressProps, Config } from "./types.ts";
|
|
10
11
|
|
|
11
12
|
const props = withDefaults(defineProps<StepperProgressProps>(), {
|
|
12
13
|
dataTest: "",
|
|
13
14
|
});
|
|
14
15
|
|
|
15
|
-
const { stepperCircleAttrs, stepperCountAttrs, stepperGradientAttrs, stepperSvgAttrs } =
|
|
16
|
-
useAttrs(props);
|
|
17
|
-
|
|
18
16
|
const stepperColor = computed(() => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
const isValidColor = (color: string): color is keyof typeof colors => color in colors;
|
|
18
|
+
|
|
19
|
+
const isGrayColor = (color: string): color is keyof typeof colors => GRAY_COLORS.includes(color);
|
|
20
|
+
|
|
21
|
+
if (isValidColor(props.color)) {
|
|
22
|
+
return colors[props.color][500];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (isGrayColor(props.color)) {
|
|
26
|
+
return colors[props.color][900];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return colors.zinc[900];
|
|
24
30
|
});
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Get element / nested component attributes for each config token ✨
|
|
34
|
+
* Applies: `class`, `config`, redefined default `props` and dev `vl-...` attributes.
|
|
35
|
+
*/
|
|
36
|
+
const { stepperCircleAttrs, stepperCountAttrs, stepperGradientAttrs, stepperSvgAttrs } =
|
|
37
|
+
useUI<Config>(defaultConfig);
|
|
25
38
|
</script>
|
|
26
39
|
|
|
27
40
|
<template>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed } from "vue";
|
|
3
3
|
|
|
4
|
-
import
|
|
5
|
-
import
|
|
4
|
+
import useUI from "../composables/useUI.ts";
|
|
5
|
+
import { getDefaults } from "../utils/ui.ts";
|
|
6
6
|
|
|
7
7
|
import defaultConfig from "./config.ts";
|
|
8
8
|
import { UProgress, VARIANT } from "./constants.ts";
|
|
@@ -10,22 +10,15 @@ import { UProgress, VARIANT } from "./constants.ts";
|
|
|
10
10
|
import StepperProgress from "./StepperProgress.vue";
|
|
11
11
|
import UHeader from "../ui.text-header/UHeader.vue";
|
|
12
12
|
|
|
13
|
-
import type { UProgressProps, HeaderSize } from "./types.ts";
|
|
13
|
+
import type { UProgressProps, HeaderSize, Config } from "./types.ts";
|
|
14
14
|
|
|
15
15
|
defineOptions({ inheritAttrs: false });
|
|
16
16
|
|
|
17
17
|
const props = withDefaults(defineProps<UProgressProps>(), {
|
|
18
|
-
|
|
19
|
-
max:
|
|
20
|
-
size: getDefault<UProgressProps>(defaultConfig, UProgress).size,
|
|
21
|
-
color: getDefault<UProgressProps>(defaultConfig, UProgress).color,
|
|
22
|
-
variant: getDefault<UProgressProps>(defaultConfig, UProgress).variant,
|
|
23
|
-
indicator: getDefault<UProgressProps>(defaultConfig, UProgress).indicator,
|
|
24
|
-
dataTest: "",
|
|
18
|
+
...getDefaults<UProgressProps, Config>(defaultConfig, UProgress),
|
|
19
|
+
max: 100,
|
|
25
20
|
});
|
|
26
21
|
|
|
27
|
-
const { progressAttrs, wrapperAttrs, indicatorAttrs, stepAttrs, stepperAttrs } = useAttrs(props);
|
|
28
|
-
|
|
29
22
|
const headerSize = computed(() => {
|
|
30
23
|
const sizes = {
|
|
31
24
|
"2xs": "xs",
|
|
@@ -69,6 +62,13 @@ const progressPercent = computed(() => {
|
|
|
69
62
|
function isActiveStep(index: number) {
|
|
70
63
|
return index === props.value;
|
|
71
64
|
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Get element / nested component attributes for each config token ✨
|
|
68
|
+
* Applies: `class`, `config`, redefined default `props` and dev `vl-...` attributes.
|
|
69
|
+
*/
|
|
70
|
+
const { progressAttrs, wrapperAttrs, indicatorAttrs, stepAttrs, stepperAttrs } =
|
|
71
|
+
useUI<Config>(defaultConfig);
|
|
72
72
|
</script>
|
|
73
73
|
|
|
74
74
|
<template>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import defaultConfig from "./config.ts";
|
|
2
|
+
import type { ComponentConfig } from "../types.ts";
|
|
2
3
|
|
|
3
|
-
export type Config =
|
|
4
|
+
export type Config = typeof defaultConfig;
|
|
4
5
|
|
|
5
6
|
export type HeaderSize = "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
|
|
6
7
|
|
|
@@ -59,7 +60,7 @@ export interface UProgressProps {
|
|
|
59
60
|
/**
|
|
60
61
|
* Component config object.
|
|
61
62
|
*/
|
|
62
|
-
config?: Config
|
|
63
|
+
config?: ComponentConfig<Config>;
|
|
63
64
|
|
|
64
65
|
/**
|
|
65
66
|
* Data-test attribute for automated testing.
|
|
@@ -86,7 +87,7 @@ export interface StepperProgressProps {
|
|
|
86
87
|
/**
|
|
87
88
|
* Component config object.
|
|
88
89
|
*/
|
|
89
|
-
config?: Config
|
|
90
|
+
config?: ComponentConfig<Config>;
|
|
90
91
|
|
|
91
92
|
/**
|
|
92
93
|
* Data-test attribute for automated testing.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed, inject, toValue } from "vue";
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import useUI from "../composables/useUI.ts";
|
|
5
|
+
import { getDefaults } from "../utils/ui.ts";
|
|
5
6
|
|
|
6
7
|
import { UTab } from "./constants.ts";
|
|
7
8
|
import defaultConfig from "./config.ts";
|
|
8
|
-
import useAttrs from "./useAttrs.ts";
|
|
9
9
|
|
|
10
|
-
import type {
|
|
10
|
+
import type { Props, UTabSize, Config } from "./types.ts";
|
|
11
11
|
import type { SetUTabsSelectedItem } from "../ui.navigation-tabs/types.ts";
|
|
12
12
|
|
|
13
13
|
defineOptions({ inheritAttrs: false });
|
|
@@ -16,9 +16,8 @@ const setUTabsSelectedItem = inject<SetUTabsSelectedItem | null>("setUTabsSelect
|
|
|
16
16
|
const getUTabsSelectedItem = inject("getUTabsSelectedItem", null);
|
|
17
17
|
const getUTabsSize = inject("getUTabsSize", null);
|
|
18
18
|
|
|
19
|
-
const props = withDefaults(defineProps<
|
|
20
|
-
|
|
21
|
-
dataTest: "",
|
|
19
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
20
|
+
...getDefaults<Props, Config>(defaultConfig, UTab),
|
|
22
21
|
});
|
|
23
22
|
|
|
24
23
|
const selected = computed(() => {
|
|
@@ -26,16 +25,26 @@ const selected = computed(() => {
|
|
|
26
25
|
});
|
|
27
26
|
|
|
28
27
|
const size = computed(() => {
|
|
29
|
-
return toValue(getUTabsSize) ||
|
|
28
|
+
return toValue(getUTabsSize) || getDefaults<UTabSize, Config>(defaultConfig, UTab).size;
|
|
30
29
|
});
|
|
31
30
|
|
|
32
|
-
const { tabAttrs } = useAttrs(props, { selected, size });
|
|
33
|
-
|
|
34
31
|
async function onClickSetValue() {
|
|
35
32
|
if (!props.disabled && setUTabsSelectedItem) {
|
|
36
33
|
setUTabsSelectedItem(props.value ?? "");
|
|
37
34
|
}
|
|
38
35
|
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Get element / nested component attributes for each config token ✨
|
|
39
|
+
* Applies: `class`, `config`, redefined default `props` and dev `vl-...` attributes.
|
|
40
|
+
*/
|
|
41
|
+
const mutatedProps = computed(() => ({
|
|
42
|
+
size: size.value,
|
|
43
|
+
/* component state, not a props */
|
|
44
|
+
selected: selected.value,
|
|
45
|
+
}));
|
|
46
|
+
|
|
47
|
+
const { tabAttrs } = useUI<Config>(defaultConfig, mutatedProps);
|
|
39
48
|
</script>
|
|
40
49
|
|
|
41
50
|
<template>
|
|
@@ -9,9 +9,9 @@ import UTab from "../../ui.navigation-tab/UTab.vue";
|
|
|
9
9
|
import UIcon from "../../ui.image-icon/UIcon.vue";
|
|
10
10
|
|
|
11
11
|
import type { Meta, StoryFn } from "@storybook/vue3";
|
|
12
|
-
import type {
|
|
12
|
+
import type { Props } from "../types.ts";
|
|
13
13
|
|
|
14
|
-
interface UTabArgs extends
|
|
14
|
+
interface UTabArgs extends Props {
|
|
15
15
|
slotTemplate?: string;
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import defaultConfig from "./config.ts";
|
|
2
|
+
import type { ComponentConfig } from "../types.ts";
|
|
2
3
|
|
|
3
|
-
export type Config =
|
|
4
|
+
export type Config = typeof defaultConfig;
|
|
4
5
|
|
|
5
6
|
export interface UTabSize {
|
|
6
7
|
size: string;
|
|
7
8
|
}
|
|
8
9
|
|
|
9
|
-
export interface
|
|
10
|
+
export interface Props {
|
|
10
11
|
/**
|
|
11
12
|
* Tab label.
|
|
12
13
|
*/
|
|
@@ -25,7 +26,7 @@ export interface UTabProps {
|
|
|
25
26
|
/**
|
|
26
27
|
* Component config object.
|
|
27
28
|
*/
|
|
28
|
-
config?: Config
|
|
29
|
+
config?: ComponentConfig<Config>;
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Data-test attribute for automated testing.
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed, provide } from "vue";
|
|
3
3
|
|
|
4
|
+
import useUI from "../composables/useUI.ts";
|
|
5
|
+
import { getDefaults } from "../utils/ui.ts";
|
|
6
|
+
|
|
4
7
|
import UTab from "../ui.navigation-tab/UTab.vue";
|
|
5
|
-
import { getDefault } from "../utils/ui.ts";
|
|
6
8
|
|
|
7
9
|
import { UTabs } from "./constants.ts";
|
|
8
10
|
import defaultConfig from "./config.ts";
|
|
9
|
-
import useAttrs from "./useAttrs.ts";
|
|
10
11
|
|
|
11
|
-
import type {
|
|
12
|
+
import type { Props, Config } from "./types.ts";
|
|
12
13
|
|
|
13
14
|
defineOptions({ inheritAttrs: false });
|
|
14
15
|
|
|
15
|
-
const props = withDefaults(defineProps<
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
17
|
+
...getDefaults<Props, Config>(defaultConfig, UTabs),
|
|
18
|
+
modelValue: "",
|
|
19
|
+
options: () => [],
|
|
19
20
|
});
|
|
20
21
|
|
|
21
22
|
const emit = defineEmits([
|
|
@@ -35,7 +36,11 @@ provide("setUTabsSelectedItem", (value: string) => (selectedItem.value = value))
|
|
|
35
36
|
provide("getUTabsSelectedItem", () => selectedItem.value);
|
|
36
37
|
provide("getUTabsSize", () => props.size);
|
|
37
38
|
|
|
38
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Get element / nested component attributes for each config token ✨
|
|
41
|
+
* Applies: `class`, `config`, redefined default `props` and dev `vl-...` attributes.
|
|
42
|
+
*/
|
|
43
|
+
const { tabsAttrs, itemAttrs } = useUI<Config>(defaultConfig);
|
|
39
44
|
</script>
|
|
40
45
|
|
|
41
46
|
<template>
|
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
import UTabs from "../../ui.navigation-tabs/UTabs.vue";
|
|
9
9
|
|
|
10
10
|
import type { Meta, StoryFn } from "@storybook/vue3";
|
|
11
|
-
import type {
|
|
11
|
+
import type { Props } from "../types.ts";
|
|
12
12
|
|
|
13
|
-
interface UTabsArgs extends
|
|
13
|
+
interface UTabsArgs extends Props {
|
|
14
14
|
slotTemplate?: string;
|
|
15
15
|
enum: "size";
|
|
16
16
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import defaultConfig from "./config.ts";
|
|
2
2
|
|
|
3
|
-
import type { UnknownObject, UnknownArray } from "../types.ts";
|
|
3
|
+
import type { ComponentConfig, UnknownObject, UnknownArray } from "../types.ts";
|
|
4
4
|
|
|
5
|
-
export type Config =
|
|
5
|
+
export type Config = typeof defaultConfig;
|
|
6
6
|
|
|
7
7
|
export type SetUTabsSelectedItem = (
|
|
8
8
|
value: string | number | boolean | UnknownArray | UnknownObject,
|
|
@@ -11,10 +11,10 @@ export type SetUTabsSelectedItem = (
|
|
|
11
11
|
interface UTabsOption {
|
|
12
12
|
value: string | number;
|
|
13
13
|
label: string;
|
|
14
|
-
disabled
|
|
14
|
+
disabled?: boolean;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export interface
|
|
17
|
+
export interface Props {
|
|
18
18
|
/**
|
|
19
19
|
* Selected tab value.
|
|
20
20
|
*/
|
|
@@ -38,7 +38,7 @@ export interface UTabsProps {
|
|
|
38
38
|
/**
|
|
39
39
|
* Component config object.
|
|
40
40
|
*/
|
|
41
|
-
config?: Config
|
|
41
|
+
config?: ComponentConfig<Config>;
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* Data-test attribute for automated testing.
|
package/ui.other-dot/UDot.vue
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import
|
|
2
|
+
import useUI from "../composables/useUI.ts";
|
|
3
|
+
import { getDefaults } from "../utils/ui.ts";
|
|
3
4
|
|
|
4
5
|
import { UDot } from "./constants.ts";
|
|
5
6
|
import defaultConfig from "./config.ts";
|
|
6
|
-
import useAttrs from "./useAttrs.ts";
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type { Props, Config } from "./types.ts";
|
|
9
9
|
|
|
10
10
|
defineOptions({ inheritAttrs: false });
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
size: getDefault<UDotProps>(defaultConfig, UDot).size,
|
|
15
|
-
dataTest: "",
|
|
12
|
+
withDefaults(defineProps<Props>(), {
|
|
13
|
+
...getDefaults<Props, Config>(defaultConfig, UDot),
|
|
16
14
|
});
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Get element / nested component attributes for each config token ✨
|
|
18
|
+
* Applies: `class`, `config`, redefined default `props` and dev `vl-...` attributes.
|
|
19
|
+
*/
|
|
20
|
+
const { dotAttrs } = useUI<Config>(defaultConfig);
|
|
19
21
|
</script>
|
|
20
22
|
|
|
21
23
|
<template>
|
|
@@ -11,9 +11,9 @@ import UCol from "../../ui.container-col/UCol.vue";
|
|
|
11
11
|
import UBadge from "../../ui.text-badge/UBadge.vue";
|
|
12
12
|
|
|
13
13
|
import type { Meta, StoryFn } from "@storybook/vue3";
|
|
14
|
-
import type {
|
|
14
|
+
import type { Props } from "../types.ts";
|
|
15
15
|
|
|
16
|
-
interface UDotArgs extends
|
|
16
|
+
interface UDotArgs extends Props {
|
|
17
17
|
slotTemplate?: string;
|
|
18
18
|
enum: "size" | "color";
|
|
19
19
|
}
|
package/ui.other-dot/types.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import defaultConfig from "./config.ts";
|
|
2
|
+
import type { ComponentConfig } from "../types.ts";
|
|
2
3
|
|
|
3
|
-
export type Config =
|
|
4
|
+
export type Config = typeof defaultConfig;
|
|
4
5
|
|
|
5
|
-
export interface
|
|
6
|
+
export interface Props {
|
|
6
7
|
/**
|
|
7
8
|
* Dot color.
|
|
8
9
|
*/
|
|
@@ -37,7 +38,7 @@ export interface UDotProps {
|
|
|
37
38
|
/**
|
|
38
39
|
* Component config object.
|
|
39
40
|
*/
|
|
40
|
-
config?: Config
|
|
41
|
+
config?: ComponentConfig<Config>;
|
|
41
42
|
|
|
42
43
|
/**
|
|
43
44
|
* Data-test attribute for automated testing.
|
package/ui.text-alert/UAlert.vue
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { onMounted, ref, computed } from "vue";
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import useUI from "../composables/useUI.ts";
|
|
5
|
+
import { getDefaults } from "../utils/ui.ts";
|
|
5
6
|
import { hasSlotContent } from "../utils/helper.ts";
|
|
6
7
|
|
|
7
8
|
import UIcon from "../ui.image-icon/UIcon.vue";
|
|
@@ -10,21 +11,13 @@ import UText from "../ui.text-block/UText.vue";
|
|
|
10
11
|
|
|
11
12
|
import { UAlert } from "./constants.ts";
|
|
12
13
|
import defaultConfig from "./config.ts";
|
|
13
|
-
import useAttrs from "./useAttrs.ts";
|
|
14
14
|
|
|
15
|
-
import type {
|
|
15
|
+
import type { Props, TextSize, CloseIconSize, Config } from "./types.ts";
|
|
16
16
|
|
|
17
17
|
defineOptions({ inheritAttrs: false });
|
|
18
18
|
|
|
19
|
-
const props = withDefaults(defineProps<
|
|
20
|
-
|
|
21
|
-
bordered: getDefault<UAlertProps>(defaultConfig, UAlert).bordered,
|
|
22
|
-
size: getDefault<UAlertProps>(defaultConfig, UAlert).size,
|
|
23
|
-
color: getDefault<UAlertProps>(defaultConfig, UAlert).color,
|
|
24
|
-
timeout: getDefault<UAlertProps>(defaultConfig, UAlert).timeout,
|
|
25
|
-
closable: getDefault<UAlertProps>(defaultConfig, UAlert).closable,
|
|
26
|
-
dataTest: "",
|
|
27
|
-
config: () => ({}),
|
|
19
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
20
|
+
...getDefaults<Props, Config>(defaultConfig, UAlert),
|
|
28
21
|
});
|
|
29
22
|
|
|
30
23
|
const emit = defineEmits([
|
|
@@ -36,19 +29,6 @@ const emit = defineEmits([
|
|
|
36
29
|
|
|
37
30
|
const isShownAlert = ref(true);
|
|
38
31
|
|
|
39
|
-
const {
|
|
40
|
-
config,
|
|
41
|
-
wrapperAttrs,
|
|
42
|
-
bodyAttrs,
|
|
43
|
-
contentAttrs,
|
|
44
|
-
textAttrs,
|
|
45
|
-
titleAttrs,
|
|
46
|
-
descriptionAttrs,
|
|
47
|
-
closeButtonAttrs,
|
|
48
|
-
closeIconAttrs,
|
|
49
|
-
contentWrapperAttrs,
|
|
50
|
-
} = useAttrs(props);
|
|
51
|
-
|
|
52
32
|
onMounted(() => {
|
|
53
33
|
if (props.timeout > 0) {
|
|
54
34
|
setTimeout(() => onClickClose(), props.timeout);
|
|
@@ -94,6 +74,23 @@ const iconColor = computed(() => {
|
|
|
94
74
|
|
|
95
75
|
return props.variant === "primary" ? "white" : props.color;
|
|
96
76
|
});
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Get element / nested component attributes for each config token ✨
|
|
80
|
+
* Applies: `class`, `config`, redefined default `props` and dev `vl-...` attributes.
|
|
81
|
+
*/
|
|
82
|
+
const {
|
|
83
|
+
config,
|
|
84
|
+
wrapperAttrs,
|
|
85
|
+
bodyAttrs,
|
|
86
|
+
contentAttrs,
|
|
87
|
+
textAttrs,
|
|
88
|
+
titleAttrs,
|
|
89
|
+
descriptionAttrs,
|
|
90
|
+
closeButtonAttrs,
|
|
91
|
+
closeIconAttrs,
|
|
92
|
+
contentWrapperAttrs,
|
|
93
|
+
} = useUI<Config>(defaultConfig);
|
|
97
94
|
</script>
|
|
98
95
|
|
|
99
96
|
<template>
|
|
@@ -154,7 +151,7 @@ const iconColor = computed(() => {
|
|
|
154
151
|
-->
|
|
155
152
|
<slot
|
|
156
153
|
name="close"
|
|
157
|
-
:icon-name="config
|
|
154
|
+
:icon-name="config.defaults.closeIcon"
|
|
158
155
|
:icon-size="closeIconSize"
|
|
159
156
|
:icon-color="iconColor"
|
|
160
157
|
>
|
|
@@ -162,7 +159,7 @@ const iconColor = computed(() => {
|
|
|
162
159
|
internal
|
|
163
160
|
:size="closeIconSize"
|
|
164
161
|
:color="iconColor"
|
|
165
|
-
:name="config.defaults
|
|
162
|
+
:name="config.defaults.closeIcon"
|
|
166
163
|
v-bind="closeIconAttrs"
|
|
167
164
|
:data-test="`${dataTest}-button`"
|
|
168
165
|
/>
|
|
@@ -12,9 +12,9 @@ import UIcon from "../../ui.image-icon/UIcon.vue";
|
|
|
12
12
|
import UButton from "../../ui.button/UButton.vue";
|
|
13
13
|
|
|
14
14
|
import type { Meta, StoryFn } from "@storybook/vue3";
|
|
15
|
-
import type {
|
|
15
|
+
import type { Props } from "../types.ts";
|
|
16
16
|
|
|
17
|
-
interface UAlertArgs extends
|
|
17
|
+
interface UAlertArgs extends Props {
|
|
18
18
|
slotTemplate?: string;
|
|
19
19
|
enum: "size" | "color" | "variant";
|
|
20
20
|
}
|
package/ui.text-alert/types.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import defaultConfig from "./config.ts";
|
|
2
|
+
import type { ComponentConfig } from "../types.ts";
|
|
2
3
|
|
|
3
|
-
export type Config =
|
|
4
|
+
export type Config = typeof defaultConfig;
|
|
4
5
|
|
|
5
6
|
export type TextSize = "sm" | "md" | "lg";
|
|
6
7
|
export type CloseIconSize = "3xs" | "2xs" | "xs" | "sm";
|
|
7
8
|
|
|
8
|
-
export interface
|
|
9
|
+
export interface Props {
|
|
9
10
|
/**
|
|
10
11
|
* Alert title.
|
|
11
12
|
*/
|
|
@@ -70,7 +71,7 @@ export interface UAlertProps {
|
|
|
70
71
|
/**
|
|
71
72
|
* Component config object.
|
|
72
73
|
*/
|
|
73
|
-
config?: Config
|
|
74
|
+
config?: ComponentConfig<Config>;
|
|
74
75
|
|
|
75
76
|
/**
|
|
76
77
|
* Data-test attribute for automated testing.
|
package/ui.text-badge/UBadge.vue
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { useTemplateRef, computed } from "vue";
|
|
2
|
+
import { useTemplateRef, computed, useSlots } from "vue";
|
|
3
|
+
|
|
4
|
+
import useUI from "../composables/useUI.ts";
|
|
5
|
+
import { hasSlotContent } from "../utils/helper.ts";
|
|
6
|
+
import { getDefaults } from "../utils/ui.ts";
|
|
3
7
|
|
|
4
|
-
import { getDefault } from "../utils/ui.ts";
|
|
5
8
|
import UIcon from "../ui.image-icon/UIcon.vue";
|
|
6
9
|
|
|
7
10
|
import { UBadge } from "./constants.ts";
|
|
8
|
-
import useAttrs from "./useAttrs.ts";
|
|
9
11
|
import defaultConfig from "./config.ts";
|
|
10
12
|
|
|
11
|
-
import type {
|
|
13
|
+
import type { Props, IconSize, Config } from "./types.ts";
|
|
12
14
|
|
|
13
15
|
defineOptions({ inheritAttrs: false });
|
|
14
16
|
|
|
15
|
-
const props = withDefaults(defineProps<
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
size: getDefault<UBadgeProps>(defaultConfig, UBadge).size,
|
|
19
|
-
color: getDefault<UBadgeProps>(defaultConfig, UBadge).color,
|
|
20
|
-
round: getDefault<UBadgeProps>(defaultConfig, UBadge).round,
|
|
21
|
-
tabindex: getDefault<UBadgeProps>(defaultConfig, UBadge).tabindex,
|
|
22
|
-
dataTest: "",
|
|
17
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
18
|
+
...getDefaults<Props, Config>(defaultConfig, UBadge),
|
|
19
|
+
label: "",
|
|
23
20
|
});
|
|
24
21
|
|
|
25
22
|
const emit = defineEmits([
|
|
@@ -44,7 +41,7 @@ const emit = defineEmits([
|
|
|
44
41
|
"click",
|
|
45
42
|
]);
|
|
46
43
|
|
|
47
|
-
const
|
|
44
|
+
const slots = useSlots();
|
|
48
45
|
|
|
49
46
|
const wrapperRef = useTemplateRef<HTMLElement>("wrapper");
|
|
50
47
|
|
|
@@ -85,6 +82,21 @@ defineExpose({
|
|
|
85
82
|
*/
|
|
86
83
|
wrapperRef,
|
|
87
84
|
});
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Get element / nested component attributes for each config token ✨
|
|
88
|
+
* Applies: `class`, `config`, redefined default `props` and dev `vl-...` attributes.
|
|
89
|
+
*/
|
|
90
|
+
const mutatedProps = computed(() => ({
|
|
91
|
+
tabindex: Boolean(~Number(props.tabindex)),
|
|
92
|
+
leftIcon: Boolean(props.leftIcon) || hasSlotContent(slots["left"]),
|
|
93
|
+
rightIcon: Boolean(props.rightIcon) || hasSlotContent(slots["right"]),
|
|
94
|
+
}));
|
|
95
|
+
|
|
96
|
+
const { badgeAttrs, bodyAttrs, leftIconAttrs, centerIconAttrs, rightIconAttrs } = useUI<Config>(
|
|
97
|
+
defaultConfig,
|
|
98
|
+
mutatedProps,
|
|
99
|
+
);
|
|
88
100
|
</script>
|
|
89
101
|
|
|
90
102
|
<template>
|
|
@@ -11,9 +11,9 @@ import URow from "../../ui.container-row/URow.vue";
|
|
|
11
11
|
import UCol from "../../ui.container-col/UCol.vue";
|
|
12
12
|
|
|
13
13
|
import type { Meta, StoryFn } from "@storybook/vue3";
|
|
14
|
-
import type {
|
|
14
|
+
import type { Props } from "../types.ts";
|
|
15
15
|
|
|
16
|
-
interface UBadgeArgs extends
|
|
16
|
+
interface UBadgeArgs extends Props {
|
|
17
17
|
slotTemplate?: string;
|
|
18
18
|
enum: "variant" | "size";
|
|
19
19
|
}
|
package/ui.text-badge/types.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import defaultConfig from "./config.ts";
|
|
2
|
+
import type { ComponentConfig } from "../types.ts";
|
|
2
3
|
|
|
3
|
-
export type Config =
|
|
4
|
+
export type Config = typeof defaultConfig;
|
|
4
5
|
|
|
5
6
|
export type IconSize = "3xs" | "2xs" | "xs";
|
|
6
7
|
|
|
7
|
-
export interface
|
|
8
|
+
export interface Props {
|
|
8
9
|
/**
|
|
9
10
|
* Badge label.
|
|
10
11
|
*/
|
|
@@ -79,7 +80,7 @@ export interface UBadgeProps {
|
|
|
79
80
|
/**
|
|
80
81
|
* Component config object.
|
|
81
82
|
*/
|
|
82
|
-
config?: Config
|
|
83
|
+
config?: ComponentConfig<Config>;
|
|
83
84
|
|
|
84
85
|
/**
|
|
85
86
|
* Data-test attribute for automated testing.
|
package/ui.text-block/UText.vue
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import
|
|
2
|
+
import useUI from "../composables/useUI.ts";
|
|
3
|
+
import { getDefaults } from "../utils/ui.ts";
|
|
3
4
|
import { hasSlotContent } from "../utils/helper.ts";
|
|
4
5
|
|
|
5
6
|
import { UText } from "./constants.ts";
|
|
6
7
|
import defaultConfig from "./config.ts";
|
|
7
|
-
import useAttrs from "./useAttrs.ts";
|
|
8
8
|
|
|
9
|
-
import type {
|
|
9
|
+
import type { Props, Config } from "./types.ts";
|
|
10
10
|
|
|
11
11
|
defineOptions({ inheritAttrs: false });
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
align: getDefault<UTextProps>(defaultConfig, UText).align,
|
|
16
|
-
line: getDefault<UTextProps>(defaultConfig, UText).line,
|
|
17
|
-
dataTest: "",
|
|
13
|
+
withDefaults(defineProps<Props>(), {
|
|
14
|
+
...getDefaults<Props, Config>(defaultConfig, UText),
|
|
18
15
|
});
|
|
19
16
|
|
|
20
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Get element / nested component attributes for each config token ✨
|
|
19
|
+
* Applies: `class`, `config`, redefined default `props` and dev `vl-...` attributes.
|
|
20
|
+
*/
|
|
21
|
+
const { wrapperAttrs, htmlAttrs } = useUI<Config>(defaultConfig);
|
|
21
22
|
</script>
|
|
22
23
|
|
|
23
24
|
<template>
|
|
@@ -9,9 +9,9 @@ import UText from "../../ui.text-block/UText.vue";
|
|
|
9
9
|
import URow from "../../ui.container-row/URow.vue";
|
|
10
10
|
|
|
11
11
|
import type { Meta, StoryFn } from "@storybook/vue3";
|
|
12
|
-
import type {
|
|
12
|
+
import type { Props } from "../types.ts";
|
|
13
13
|
|
|
14
|
-
interface UTextArgs extends
|
|
14
|
+
interface UTextArgs extends Props {
|
|
15
15
|
slotTemplate?: string;
|
|
16
16
|
enum: "size";
|
|
17
17
|
}
|