vueless 0.0.613 → 0.0.614
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 +2 -2
- package/package.json +1 -1
- package/ui.button-toggle/UToggle.vue +2 -3
- package/ui.button-toggle/config.ts +11 -12
- package/ui.button-toggle/storybook/stories.ts +7 -14
- package/ui.button-toggle/types.ts +3 -7
- package/ui.button-toggle-item/UToggleItem.vue +12 -14
- package/ui.button-toggle-item/config.ts +9 -26
- package/web-types.json +3 -18
package/composables/useUI.ts
CHANGED
|
@@ -158,10 +158,10 @@ export default function useUI<T>(
|
|
|
158
158
|
vuelessAttrs.value = {
|
|
159
159
|
...commonAttrs,
|
|
160
160
|
class: cx([...extendsClasses, toValue(classes)]),
|
|
161
|
-
config: merge({},
|
|
161
|
+
config: merge({}, extendsConfigAttr, configAttr),
|
|
162
162
|
...getDefaults({
|
|
163
|
-
...(configAttr.defaults || {}),
|
|
164
163
|
...(extendsConfigAttr.defaults || {}),
|
|
164
|
+
...(configAttr.defaults || {}),
|
|
165
165
|
}),
|
|
166
166
|
};
|
|
167
167
|
}
|
package/package.json
CHANGED
|
@@ -73,9 +73,8 @@ provide("getToggleSize", () => props.size);
|
|
|
73
73
|
provide("getToggleRound", () => props.round);
|
|
74
74
|
provide("getToggleBlock", () => props.block);
|
|
75
75
|
provide("getToggleSquare", () => props.square);
|
|
76
|
-
provide("getToggleVariant", () => props.variant);
|
|
77
76
|
provide("getToggleDisabled", () => props.disabled);
|
|
78
|
-
provide("
|
|
77
|
+
provide("getToggleSplit", () => props.split);
|
|
79
78
|
|
|
80
79
|
provide("toggleSelectedValue", {
|
|
81
80
|
selectedValue: readonly(selectedValue),
|
|
@@ -109,7 +108,7 @@ const { toggleLabelAttrs, itemsAttrs, itemAttrs } = useUI<Config>(defaultConfig)
|
|
|
109
108
|
:name="name"
|
|
110
109
|
:model-value="item.value"
|
|
111
110
|
:value="item.value"
|
|
112
|
-
:disabled="disabled"
|
|
111
|
+
:disabled="disabled || item.disabled"
|
|
113
112
|
:label="item.label"
|
|
114
113
|
v-bind="itemAttrs"
|
|
115
114
|
:data-test="`${dataTest}-item-${index}`"
|
|
@@ -18,36 +18,35 @@ export default /*tw*/ {
|
|
|
18
18
|
lg: "gap-3",
|
|
19
19
|
xl: "gap-3",
|
|
20
20
|
},
|
|
21
|
-
|
|
21
|
+
split: {
|
|
22
22
|
true: "flex flex-wrap",
|
|
23
23
|
false: `
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
[&>:first-child>*>*]:rounded-dynamic [&>:first-child>*>*]:rounded-r-none
|
|
28
|
-
[&>:last-child>*>*]:rounded-dynamic [&>:last-child>*>*]:rounded-l-none
|
|
24
|
+
p-1 gap-1 flex flex-nowrap w-fit transition
|
|
25
|
+
border border-gray-300 rounded-dynamic
|
|
26
|
+
hover:border-gray-400 hover:focus-within:border-brand-500 focus-within:border-brand-500
|
|
29
27
|
focus-within:ring-dynamic focus-within:ring-offset-dynamic focus-within:ring-brand-700/15
|
|
30
28
|
`,
|
|
31
29
|
},
|
|
30
|
+
disabled: {
|
|
31
|
+
true: "pointer-events-none",
|
|
32
|
+
},
|
|
32
33
|
block: {
|
|
33
34
|
true: "w-full flex-nowrap",
|
|
34
35
|
},
|
|
36
|
+
round: {
|
|
37
|
+
true: "rounded-full",
|
|
38
|
+
},
|
|
35
39
|
},
|
|
36
|
-
compoundVariants: [
|
|
37
|
-
{ separated: false, variant: "thirdary", class: "space-x-px" },
|
|
38
|
-
{ separated: false, multiple: true, class: "space-x-px" },
|
|
39
|
-
],
|
|
40
40
|
},
|
|
41
41
|
item: "{UToggleItem}",
|
|
42
42
|
defaults: {
|
|
43
|
-
variant: "primary",
|
|
44
43
|
labelAlign: "top",
|
|
45
44
|
size: "md",
|
|
45
|
+
split: false,
|
|
46
46
|
block: false,
|
|
47
47
|
round: false,
|
|
48
48
|
square: false,
|
|
49
49
|
disabled: false,
|
|
50
50
|
multiple: false,
|
|
51
|
-
separated: false,
|
|
52
51
|
},
|
|
53
52
|
};
|
|
@@ -16,7 +16,7 @@ import type { Props } from "../types.ts";
|
|
|
16
16
|
|
|
17
17
|
interface UToggleArgs extends Props {
|
|
18
18
|
slotTemplate?: string;
|
|
19
|
-
enum: "
|
|
19
|
+
enum: "size";
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export default {
|
|
@@ -109,41 +109,34 @@ Sizes.args = {
|
|
|
109
109
|
enum: "size",
|
|
110
110
|
};
|
|
111
111
|
|
|
112
|
-
export const Variants = EnumVariantTemplate.bind({});
|
|
113
|
-
Variants.args = {
|
|
114
|
-
name: "sizeTemplate",
|
|
115
|
-
enum: "variant",
|
|
116
|
-
};
|
|
117
|
-
|
|
118
112
|
export const Multiple = DefaultTemplate.bind({});
|
|
119
113
|
Multiple.args = { name: "multipleTemplate", multiple: true };
|
|
120
114
|
|
|
121
115
|
export const Block = DefaultTemplate.bind({});
|
|
122
116
|
Block.args = { name: "block", block: true };
|
|
123
117
|
|
|
124
|
-
export const
|
|
125
|
-
|
|
118
|
+
export const Split = DefaultTemplate.bind({});
|
|
119
|
+
Split.args = { name: "split", split: true };
|
|
126
120
|
|
|
127
121
|
export const Round = DefaultTemplate.bind({});
|
|
128
|
-
Round.args = { name: "round", round: true,
|
|
122
|
+
Round.args = { name: "round", round: true, split: true };
|
|
129
123
|
|
|
130
124
|
export const Square = DefaultTemplate.bind({});
|
|
131
125
|
Square.args = {
|
|
132
126
|
name: "square",
|
|
133
|
-
variant: "secondary",
|
|
134
127
|
square: true,
|
|
135
128
|
slotTemplate: `
|
|
136
129
|
<template #default>
|
|
137
130
|
<UToggleItem value="1">
|
|
138
|
-
<UIcon name="star" />
|
|
131
|
+
<UIcon name="star" color="inherit" />
|
|
139
132
|
</UToggleItem>
|
|
140
133
|
|
|
141
134
|
<UToggleItem value="2" >
|
|
142
|
-
<UIcon name="add" />
|
|
135
|
+
<UIcon name="add" color="inherit" />
|
|
143
136
|
</UToggleItem>
|
|
144
137
|
|
|
145
138
|
<UToggleItem value="3">
|
|
146
|
-
<UIcon name="timer" />
|
|
139
|
+
<UIcon name="timer" color="inherit" />
|
|
147
140
|
</UToggleItem>
|
|
148
141
|
</template>
|
|
149
142
|
`,
|
|
@@ -9,6 +9,7 @@ export type LabelSize = "sm" | "md" | "lg";
|
|
|
9
9
|
export interface UToggleOption {
|
|
10
10
|
value: string | number;
|
|
11
11
|
label: string;
|
|
12
|
+
disabled?: boolean;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
export interface Props {
|
|
@@ -22,11 +23,6 @@ export interface Props {
|
|
|
22
23
|
*/
|
|
23
24
|
options?: UToggleOption[];
|
|
24
25
|
|
|
25
|
-
/**
|
|
26
|
-
* Toggle variant.
|
|
27
|
-
*/
|
|
28
|
-
variant?: "primary" | "secondary" | "thirdary";
|
|
29
|
-
|
|
30
26
|
/**
|
|
31
27
|
* Toggle size.
|
|
32
28
|
*/
|
|
@@ -58,9 +54,9 @@ export interface Props {
|
|
|
58
54
|
multiple?: boolean;
|
|
59
55
|
|
|
60
56
|
/**
|
|
61
|
-
*
|
|
57
|
+
* Show items without a grouping border.
|
|
62
58
|
*/
|
|
63
|
-
|
|
59
|
+
split?: boolean;
|
|
64
60
|
|
|
65
61
|
/**
|
|
66
62
|
* Make toggle disabled.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { computed, inject, onMounted, ref, useId
|
|
2
|
+
import { computed, inject, onMounted, ref, useId } from "vue";
|
|
3
3
|
|
|
4
4
|
import UButton from "../ui.button/UButton.vue";
|
|
5
5
|
|
|
@@ -48,10 +48,7 @@ const getToggleBlock = inject<() => boolean>("getToggleBlock", () =>
|
|
|
48
48
|
const getToggleSquare = inject<() => boolean>("getToggleSquare", () =>
|
|
49
49
|
getDefaults<ToggleInjectValues, Config>(defaultConfig, COMPONENT_NAME).square || false
|
|
50
50
|
);
|
|
51
|
-
const
|
|
52
|
-
getDefaults<ToggleInjectValues, Config>(defaultConfig, COMPONENT_NAME).variant || "secondary"
|
|
53
|
-
);
|
|
54
|
-
const getToggleSeparated = inject<boolean>("getToggleSeparated", true);
|
|
51
|
+
const getToggleSplit = inject<() => boolean>("getToggleSplit", () => true);
|
|
55
52
|
const getToggleDisabled = inject<() => boolean>("getToggleDisabled", () =>
|
|
56
53
|
props.disabled || getDefaults<ToggleInjectValues, Config>(defaultConfig, COMPONENT_NAME).disabled || false
|
|
57
54
|
);
|
|
@@ -99,29 +96,30 @@ function onClickSetValue() {
|
|
|
99
96
|
* Applies: `class`, `config`, redefined default `props` and dev `vl-...` attributes.
|
|
100
97
|
*/
|
|
101
98
|
const mutatedProps = computed(() => ({
|
|
102
|
-
variant: toValue(getToggleVariant),
|
|
103
|
-
separated: toValue(getToggleSeparated),
|
|
104
99
|
/* component state, not a props */
|
|
105
100
|
selected: isSelected.value,
|
|
106
101
|
}));
|
|
107
102
|
|
|
108
|
-
const { toggleButtonAttrs, toggleInputAttrs } = useUI<Config>(
|
|
103
|
+
const { toggleButtonAttrs, toggleButtonActiveAttrs, toggleInputAttrs } = useUI<Config>(
|
|
104
|
+
defaultConfig,
|
|
105
|
+
mutatedProps,
|
|
106
|
+
);
|
|
109
107
|
</script>
|
|
110
108
|
|
|
111
109
|
<template>
|
|
112
110
|
<UButton
|
|
111
|
+
:label="label"
|
|
113
112
|
tabindex="0"
|
|
113
|
+
color="brand"
|
|
114
114
|
:for="elementId"
|
|
115
|
-
:
|
|
116
|
-
|
|
117
|
-
variant="secondary"
|
|
118
|
-
:label="label"
|
|
115
|
+
:filled="getToggleSplit()"
|
|
116
|
+
:no-ring="!getToggleSplit()"
|
|
119
117
|
:size="getToggleSize()"
|
|
120
118
|
:round="getToggleRound()"
|
|
121
119
|
:block="getToggleBlock()"
|
|
122
120
|
:square="getToggleSquare()"
|
|
123
|
-
:disabled="getToggleDisabled()"
|
|
124
|
-
v-bind="toggleButtonAttrs"
|
|
121
|
+
:disabled="getToggleDisabled() || disabled"
|
|
122
|
+
v-bind="isSelected ? toggleButtonActiveAttrs : toggleButtonAttrs"
|
|
125
123
|
@click="onClickSetValue"
|
|
126
124
|
>
|
|
127
125
|
<template #left>
|
|
@@ -1,32 +1,15 @@
|
|
|
1
1
|
export default /*tw*/ {
|
|
2
2
|
toggleButton: {
|
|
3
|
-
base:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
separated: {
|
|
13
|
-
false: "rounded-none focus:ring-0",
|
|
14
|
-
},
|
|
15
|
-
selected: {
|
|
16
|
-
false: "relative disabled:z-10",
|
|
17
|
-
},
|
|
18
|
-
variant: {
|
|
19
|
-
thirdary: `
|
|
20
|
-
!text-gray-900 !border-transparent bg-brand-600/10
|
|
21
|
-
hover:bg-brand-600/15 focus:bg-brand-600/15 active:bg-brand-600/20
|
|
22
|
-
`,
|
|
23
|
-
},
|
|
3
|
+
base: "{UButton} font-normal",
|
|
4
|
+
defaults: {
|
|
5
|
+
variant: "thirdary",
|
|
6
|
+
},
|
|
7
|
+
},
|
|
8
|
+
toggleButtonActive: {
|
|
9
|
+
base: "{UButton} {>toggleButton}",
|
|
10
|
+
defaults: {
|
|
11
|
+
variant: "primary",
|
|
24
12
|
},
|
|
25
|
-
compoundVariants: [
|
|
26
|
-
{ selected: true, variant: "primary", class: "!text-white bg-brand-600 !border-brand-600" },
|
|
27
|
-
{ selected: true, variant: "secondary", class: "text-brand-600 border-brand-600 bg-brand-600/10" },
|
|
28
|
-
{ selected: true, variant: "thirdary", class: "!bg-brand-600/20" },
|
|
29
|
-
],
|
|
30
13
|
},
|
|
31
14
|
toggleInput: "p-0 m-0 size-0 invisible absolute",
|
|
32
15
|
defaults: {
|
package/web-types.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"framework": "vue",
|
|
3
3
|
"name": "vueless",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.614",
|
|
5
5
|
"contributions": {
|
|
6
6
|
"html": {
|
|
7
7
|
"description-markup": "markdown",
|
|
@@ -11566,21 +11566,6 @@
|
|
|
11566
11566
|
},
|
|
11567
11567
|
"default": "() => []"
|
|
11568
11568
|
},
|
|
11569
|
-
{
|
|
11570
|
-
"name": "variant",
|
|
11571
|
-
"required": false,
|
|
11572
|
-
"description": "Toggle variant.",
|
|
11573
|
-
"enum": [
|
|
11574
|
-
"primary",
|
|
11575
|
-
"secondary",
|
|
11576
|
-
"thirdary"
|
|
11577
|
-
],
|
|
11578
|
-
"value": {
|
|
11579
|
-
"kind": "expression",
|
|
11580
|
-
"type": "union"
|
|
11581
|
-
},
|
|
11582
|
-
"default": "primary"
|
|
11583
|
-
},
|
|
11584
11569
|
{
|
|
11585
11570
|
"name": "size",
|
|
11586
11571
|
"required": false,
|
|
@@ -11654,9 +11639,9 @@
|
|
|
11654
11639
|
"default": "false"
|
|
11655
11640
|
},
|
|
11656
11641
|
{
|
|
11657
|
-
"name": "
|
|
11642
|
+
"name": "split",
|
|
11658
11643
|
"required": false,
|
|
11659
|
-
"description": "
|
|
11644
|
+
"description": "Show items without a grouping border.",
|
|
11660
11645
|
"value": {
|
|
11661
11646
|
"kind": "expression",
|
|
11662
11647
|
"type": "boolean"
|