vueless 0.0.252 → 0.0.254

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vueless",
3
- "version": "0.0.252",
3
+ "version": "0.0.254",
4
4
  "license": "MIT",
5
5
  "description": "Vue Styleless Component Framework.",
6
6
  "homepage": "https://vueless.com",
@@ -10,12 +10,12 @@ export default /*tw*/ {
10
10
  `,
11
11
  variants: {
12
12
  size: {
13
- "2xs": "px-2 py-1 text-xs leading-tight gap-0.5",
14
- xs: "px-3 py-1.5 text-xs leading-tight gap-0.5",
15
- sm: "px-4 py-2 text-sm leading-tight gap-1",
16
- md: "px-5 py-3 text-sm leading-tight gap-1",
17
- lg: "px-6 py-3.5 text-base leading-tight gap-1.5",
18
- xl: "px-7 py-4 text-base leading-tight gap-1.5",
13
+ "2xs": "px-2 py-1 text-xs gap-0.5",
14
+ xs: "px-3 py-1.5 text-xs gap-1",
15
+ sm: "px-4 py-2 text-sm gap-1.5",
16
+ md: "px-5 py-3 text-sm gap-1.5",
17
+ lg: "px-6 py-3.5 text-base gap-1.5",
18
+ xl: "px-7 py-4 text-base gap-2",
19
19
  },
20
20
  variant: {
21
21
  primary: `
@@ -134,11 +134,11 @@ export default /*tw*/ {
134
134
  },
135
135
  { filled: true, variant: "thirdary", color: "white", class: "bg-gray-50" },
136
136
  { iconLeft: true, size: "2xs", class: "pl-1" },
137
- { iconLeft: true, size: "xs", class: "pl-1.5" },
138
- { iconLeft: true, size: "sm", class: "pl-2" },
137
+ { iconLeft: true, size: "xs", class: "pl-2" },
138
+ { iconLeft: true, size: "sm", class: "pl-3" },
139
139
  { iconLeft: true, size: "md", class: "pl-4" },
140
- { iconLeft: true, size: "lg", class: "pl-3.5" },
141
- { iconLeft: true, size: "xl", class: "pl-4" },
140
+ { iconLeft: true, size: "lg", class: "pl-5" },
141
+ { iconLeft: true, size: "xl", class: "pl-6" },
142
142
  { iconRight: true, size: "2xs", class: "pr-1" },
143
143
  { iconRight: true, size: "xs", class: "pr-2" },
144
144
  { iconRight: true, size: "sm", class: "pr-3" },
@@ -154,6 +154,8 @@ export default /*tw*/ {
154
154
  ],
155
155
  },
156
156
  text: "whitespace-nowrap focus-visible:outline-none",
157
+ iconLeft: "{UIcon}",
158
+ iconRight: "{UIcon}",
157
159
  defaultVariants: {
158
160
  color: "brand",
159
161
  variant: "primary",
@@ -33,6 +33,7 @@
33
33
  :size="iconSize"
34
34
  :color="componentColor"
35
35
  internal
36
+ v-bind="iconLeftAttrs"
36
37
  />
37
38
  </slot>
38
39
  </div>
@@ -71,6 +72,7 @@
71
72
  :size="iconSize"
72
73
  :color="componentColor"
73
74
  internal
75
+ v-bind="iconRightAttrs"
74
76
  />
75
77
  </slot>
76
78
  </div>
@@ -234,7 +236,8 @@ const props = defineProps({
234
236
  },
235
237
  });
236
238
 
237
- const { buttonAttrs, loaderAttrs, textAttrs, hasSlotContent } = useAttrs(props);
239
+ const { buttonAttrs, loaderAttrs, textAttrs, iconLeftAttrs, iconRightAttrs, hasSlotContent } =
240
+ useAttrs(props);
238
241
 
239
242
  const buttonRef = ref(null);
240
243
 
@@ -255,12 +258,12 @@ const loaderSize = computed(() => {
255
258
 
256
259
  const iconSize = computed(() => {
257
260
  const sizes = {
258
- "2xs": "3xs",
259
- xs: "2xs",
260
- sm: "xs",
261
+ "2xs": "xs",
262
+ xs: "xs",
263
+ sm: "sm",
261
264
  md: "sm",
262
265
  lg: "md",
263
- xl: "lg",
266
+ xl: "md",
264
267
  };
265
268
 
266
269
  return sizes[props.size];
@@ -1,4 +1,4 @@
1
- import { getArgTypes, getSlotNames, allSlotsFragment } from "../service.storybook";
1
+ import { getArgTypes, getSlotNames, getSlotsFragment } from "../service.storybook";
2
2
 
3
3
  import UCalendar from "../ui.form-calendar";
4
4
 
@@ -36,7 +36,7 @@ const DefaultTemplate = (args) => ({
36
36
  },
37
37
  template: `
38
38
  <UCalendar v-bind="args" v-model="value">
39
- ${allSlotsFragment}
39
+ ${args.slotTemplate || getSlotsFragment()}
40
40
  </UCalendar>
41
41
 
42
42
  <div class="mt-4">
@@ -52,8 +52,8 @@ export const Range = DefaultTemplate.bind({});
52
52
  Range.args = {
53
53
  range: true,
54
54
  value: {
55
- from: new Date(2022, 2),
56
- to: new Date(2024, 2, 14, 12, 24, 14),
55
+ from: new Date(new Date().setDate(new Date().getDate() - new Date().getDay())),
56
+ to: new Date(new Date().setDate(new Date().getDate() + (6 - new Date().getDay()))),
57
57
  },
58
58
  };
59
59
 
@@ -1,4 +1,4 @@
1
- import { getArgTypes } from "../service.storybook";
1
+ import { getArgTypes, getSlotNames, getSlotsFragment } from "../service.storybook";
2
2
  import UColorPicker from "../ui.form-color-picker";
3
3
  import UCol from "../ui.container-col";
4
4
 
@@ -21,30 +21,34 @@ export default {
21
21
  const DefaultTemplate = (args) => ({
22
22
  components: { UColorPicker },
23
23
  setup() {
24
- return { args };
24
+ const slots = getSlotNames(UColorPicker.name);
25
+
26
+ return { args, slots };
25
27
  },
26
28
  template: `
27
- <UColorPicker v-bind="args" v-model="args.value"/>
29
+ <UColorPicker v-bind="args" v-model="args.value">
30
+ ${args.slotTemplate || getSlotsFragment()}
31
+ </UColorPicker>
28
32
  `,
29
33
  });
30
34
 
31
- const SizesTemplate = (args, { argTypes } = {}) => ({
35
+ const EnumVariantTemplate = (args, { argTypes } = {}) => ({
32
36
  components: { UCol, UColorPicker },
33
37
  setup() {
34
38
  return {
35
39
  args,
36
- sizes: argTypes.size.options,
40
+ options: argTypes[args.enum].options,
37
41
  };
38
42
  },
39
43
  template: `
40
44
  <UCol>
41
45
  <UColorPicker
42
- v-for="(size, index) in sizes"
43
- v-bind="args"
44
- :size="size"
46
+ v-for="(option, index) in options"
45
47
  :key="index"
46
- :name="size"
48
+ v-bind="args"
47
49
  v-model="args.value"
50
+ :[args.enum]="option"
51
+ :name="option"
48
52
  />
49
53
  </UCol>
50
54
  `,
@@ -53,8 +57,8 @@ const SizesTemplate = (args, { argTypes } = {}) => ({
53
57
  export const Default = DefaultTemplate.bind({});
54
58
  Default.args = {};
55
59
 
56
- export const Sizes = SizesTemplate.bind({});
57
- Sizes.args = {};
60
+ export const Sizes = EnumVariantTemplate.bind({});
61
+ Sizes.args = { enum: "size" };
58
62
 
59
63
  export const Description = DefaultTemplate.bind({});
60
64
  Description.args = { description: "Description" };
@@ -15,6 +15,7 @@ export default /*tw*/ {
15
15
  },
16
16
  openDirectionY: {
17
17
  top: "bottom-full mt-0",
18
+ bottom: "top-full mb-0",
18
19
  },
19
20
  },
20
21
  },
@@ -1,4 +1,4 @@
1
- import { getArgTypes, getSlotNames, allSlotsFragment } from "../service.storybook";
1
+ import { getArgTypes, getSlotNames, getSlotsFragment } from "../service.storybook";
2
2
 
3
3
  import UDatePicker from "../ui.form-date-picker";
4
4
  import UIcon from "../ui.image-icon";
@@ -27,7 +27,7 @@ export default {
27
27
  };
28
28
 
29
29
  const DefaultTemplate = (args) => ({
30
- components: { UDatePicker },
30
+ components: { UDatePicker, UIcon },
31
31
  setup() {
32
32
  const slots = getSlotNames(UDatePicker.name);
33
33
 
@@ -40,7 +40,7 @@ const DefaultTemplate = (args) => ({
40
40
  },
41
41
  template: `
42
42
  <UDatePicker v-bind="args" v-model="value">
43
- ${allSlotsFragment}
43
+ ${args.slotTemplate || getSlotsFragment()}
44
44
  </UDatePicker>
45
45
 
46
46
  <div class="mt-4">
@@ -49,24 +49,23 @@ const DefaultTemplate = (args) => ({
49
49
  `,
50
50
  });
51
51
 
52
- const SizesTemplate = (args, { argTypes } = {}) => ({
52
+ const EnumVariantTemplate = (args, { argTypes } = {}) => ({
53
53
  components: { UDatePicker, URow },
54
54
  setup() {
55
55
  return {
56
56
  args,
57
- sizes: argTypes.size.options,
57
+ options: argTypes[args.enum].options,
58
58
  };
59
59
  },
60
60
  template: `
61
61
  <URow>
62
62
  <UDatePicker
63
- v-for="(size, index) in sizes"
64
- :size="size"
65
- :label="size"
66
- v-bind="args"
63
+ v-for="(option, index) in options"
67
64
  :key="index"
68
- >
69
- </UDatePicker>
65
+ v-bind="args"
66
+ :[args.enum]="option"
67
+ :label="option"
68
+ />
70
69
  </URow>
71
70
  `,
72
71
  });
@@ -83,50 +82,44 @@ const OpenDirectionTemplate = (args) => ({
83
82
  <UDatePicker
84
83
  class="w-full"
85
84
  open-direction-y="top"
85
+ open-direction-x="left"
86
86
  v-bind="args"
87
87
  v-model="args.value"
88
+ label="Top Left"
88
89
  />
89
90
  <UDatePicker
90
91
  class="w-full"
91
- open-direction-y="bottom"
92
+ open-direction-y="top"
92
93
  open-direction-x="right"
93
94
  v-bind="args"
94
95
  v-model="args.value"
96
+ label="Top Right"
95
97
  />
96
98
  <UDatePicker
97
99
  class="w-full"
98
100
  open-direction-y="bottom"
101
+ open-direction-x="left"
99
102
  v-bind="args"
100
103
  v-model="args.value"
104
+ label="Bottom Left"
101
105
  />
102
106
  <UDatePicker
103
107
  class="w-full"
104
108
  open-direction-y="bottom"
105
- open-direction-x="left"
109
+ open-direction-x="right"
106
110
  v-bind="args"
107
111
  v-model="args.value"
112
+ label="Bottom Right"
108
113
  />
109
114
  </URow>
110
115
  `,
111
116
  });
112
117
 
113
- const SlotTemplate = (args) => ({
114
- components: { UDatePicker, UIcon },
115
- setup() {
116
- return { args };
117
- },
118
- template: `
119
- <UDatePicker v-bind="args">
120
- ${args.slotTemplate}
121
- </UDatePicker>
122
- `,
123
- });
124
-
125
118
  export const Default = DefaultTemplate.bind({});
126
119
  Default.args = { value: new Date() };
127
120
 
128
- export const sizes = SizesTemplate.bind({});
129
- sizes.args = { label: "" };
121
+ export const sizes = EnumVariantTemplate.bind({});
122
+ sizes.args = { enum: "size", label: "" };
130
123
 
131
124
  export const openDirection = OpenDirectionTemplate.bind({});
132
125
  openDirection.args = {};
@@ -156,32 +149,29 @@ MinMax.args = {
156
149
  value: new Date(2022, 2, 24),
157
150
  };
158
151
 
159
- export const slotIcon = SlotTemplate.bind({});
152
+ export const slotIcon = DefaultTemplate.bind({});
160
153
  slotIcon.args = {
161
154
  slotTemplate: `
162
155
  <template #right-icon>
163
- <UIcon
164
- name="star"
165
- color="black"
166
- />
156
+ <UIcon name="star" color="black" />
167
157
  </template>
168
158
  `,
169
159
  };
170
160
 
171
- export const slotRight = SlotTemplate.bind({});
161
+ export const slotRight = DefaultTemplate.bind({});
172
162
  slotRight.args = {
173
163
  slotTemplate: `
174
164
  <template #right>
175
- 🤘🤘🤘
165
+ 🤘🤘🤘
176
166
  </template>
177
167
  `,
178
168
  };
179
169
 
180
- export const slotLeft = SlotTemplate.bind({});
170
+ export const slotLeft = DefaultTemplate.bind({});
181
171
  slotRight.args = {
182
172
  slotTemplate: `
183
173
  <template #left>
184
- 🤘🤘🤘
174
+ 🤘🤘🤘
185
175
  </template>
186
176
  `,
187
177
  };
@@ -1,4 +1,4 @@
1
- import { getArgTypes, getSlotNames, allSlotsFragment } from "../service.storybook";
1
+ import { getArgTypes, getSlotNames, getSlotsFragment } from "../service.storybook";
2
2
 
3
3
  import UDatePickerRange from "../ui.form-date-picker-range";
4
4
  import URow from "../ui.container-row";
@@ -44,7 +44,7 @@ const DefaultTemplate = (args) => ({
44
44
  },
45
45
  template: `
46
46
  <UDatePickerRange v-bind="args" v-model="value">
47
- ${allSlotsFragment}
47
+ ${args.slotTemplate || getSlotsFragment()}
48
48
  </UDatePickerRange>
49
49
 
50
50
  <div class="mt-4">
@@ -53,74 +53,65 @@ const DefaultTemplate = (args) => ({
53
53
  `,
54
54
  });
55
55
 
56
- const SlotTemplate = (args) => ({
57
- components: { UDatePickerRange },
58
- setup() {
59
- return { args };
60
- },
61
- template: `
62
- <UDatePickerRange v-bind="args" v-model="args.value">
63
- ${args.slotTemplate}
64
- </UDatePickerRange>
65
- `,
66
- });
67
-
68
- const VariantsTemplate = (args, { argTypes } = {}) => ({
56
+ const EnumVariantTemplate = (args, { argTypes } = {}) => ({
69
57
  components: { UDatePickerRange, URow },
70
58
  setup() {
71
59
  return {
72
60
  args,
73
- variants: argTypes.variant.options,
61
+ options: argTypes[args.enum].options,
74
62
  };
75
63
  },
76
64
  template: `
77
65
  <URow>
78
66
  <UDatePickerRange
79
- v-for="(variant, index) in variants"
80
- :variant="variant"
67
+ v-for="(option, index) in options"
68
+ :key="index"
81
69
  v-bind="args"
82
70
  v-model="args.value"
83
- :key="index"
71
+ :[args.enum]="option"
84
72
  />
85
73
  </URow>
86
74
  `,
87
75
  });
88
76
 
89
- const OpenDirectionTemplate = (args, { argTypes } = {}) => ({
77
+ const OpenDirectionTemplate = (args) => ({
90
78
  components: { UDatePickerRange, URow },
91
79
  setup() {
92
- return {
93
- args,
94
- directions: argTypes.openDirection.options,
95
- };
80
+ return { args };
96
81
  },
97
82
  template: `
98
83
  <URow class="!flex-col">
99
84
  <UDatePickerRange
100
85
  class="w-full"
101
86
  open-direction-y="top"
87
+ open-direction-x="left"
102
88
  v-bind="args"
103
89
  v-model="args.value"
90
+ label="Top Left"
104
91
  />
105
92
  <UDatePickerRange
106
93
  class="w-full"
107
- open-direction-y="bottom"
94
+ open-direction-y="top"
108
95
  open-direction-x="right"
109
96
  v-bind="args"
110
97
  v-model="args.value"
98
+ label="Top Right"
111
99
  />
112
100
  <UDatePickerRange
113
101
  class="w-full"
114
102
  open-direction-y="bottom"
103
+ open-direction-x="left"
115
104
  v-bind="args"
116
105
  v-model="args.value"
106
+ label="Bottom Left"
117
107
  />
118
108
  <UDatePickerRange
119
109
  class="w-full"
120
110
  open-direction-y="bottom"
121
- open-direction-x="left"
111
+ open-direction-x="right"
122
112
  v-bind="args"
123
113
  v-model="args.value"
114
+ label="Bottom Right"
124
115
  />
125
116
  </URow>
126
117
  `,
@@ -129,14 +120,14 @@ const OpenDirectionTemplate = (args, { argTypes } = {}) => ({
129
120
  export const Default = DefaultTemplate.bind({});
130
121
  Default.args = {};
131
122
 
132
- export const variants = VariantsTemplate.bind({});
133
- variants.args = {};
123
+ export const variants = EnumVariantTemplate.bind({});
124
+ variants.args = { enum: "variant" };
134
125
 
135
126
  export const openDirection = OpenDirectionTemplate.bind({});
136
127
  openDirection.args = {};
137
128
 
138
- export const disabled = VariantsTemplate.bind({});
139
- disabled.args = { disabled: true };
129
+ export const disabled = EnumVariantTemplate.bind({});
130
+ disabled.args = { enum: "variant", disabled: true };
140
131
 
141
132
  export const label = DefaultTemplate.bind({});
142
133
  label.args = { variant: "input", label: "some label" };
@@ -174,7 +165,7 @@ customRangeButton.args = {
174
165
  value: { from: null, to: null },
175
166
  };
176
167
 
177
- export const slotLeft = SlotTemplate.bind({});
168
+ export const slotLeft = DefaultTemplate.bind({});
178
169
  slotLeft.args = {
179
170
  variant: "input",
180
171
  slotTemplate: `
@@ -184,7 +175,7 @@ slotLeft.args = {
184
175
  `,
185
176
  };
186
177
 
187
- export const slotRight = SlotTemplate.bind({});
178
+ export const slotRight = DefaultTemplate.bind({});
188
179
  slotRight.args = {
189
180
  variant: "input",
190
181
  slotTemplate: `
@@ -3,6 +3,8 @@ export default /*tw*/ {
3
3
  inputWrapper: "flex relative w-full",
4
4
  rightIconSlot: "flex items-center justify-end whitespace-nowrap pr-2 gap-1 rounded-dynamic rounded-l-none",
5
5
  leftIconSlot: "flex items-center justify-end whitespace-nowrap pl-2 gap-1 rounded-dynamic rounded-r-none",
6
+ iconLeft: "{UIcon}",
7
+ iconRight: "{UIcon}",
6
8
  passwordIcon: "",
7
9
  passwordVisibleIconName: "visibility-fill",
8
10
  passwordHiddenIconName: "visibility_off-fill",
@@ -1,4 +1,4 @@
1
- import { getArgTypes, getSlotNames, allSlotsFragment } from "../service.storybook";
1
+ import { getArgTypes, getSlotNames, getSlotsFragment } from "../service.storybook";
2
2
 
3
3
  import URadio from "../ui.form-radio";
4
4
  import UBadge from "../ui.text-badge";
@@ -22,7 +22,7 @@ export default {
22
22
  };
23
23
 
24
24
  const DefaultTemplate = (args) => ({
25
- components: { URadio },
25
+ components: { URadio, UBadge },
26
26
  setup() {
27
27
  const slots = getSlotNames(URadio.name);
28
28
 
@@ -30,19 +30,7 @@ const DefaultTemplate = (args) => ({
30
30
  },
31
31
  template: `
32
32
  <URadio v-bind="args">
33
- ${allSlotsFragment}
34
- </URadio>
35
- `,
36
- });
37
-
38
- const SlotTemplate = (args) => ({
39
- components: { URadio, UBadge },
40
- setup() {
41
- return { args };
42
- },
43
- template: `
44
- <URadio v-bind="args">
45
- ${args.slotTemplate}
33
+ ${args.slotTemplate || getSlotsFragment()}
46
34
  </URadio>
47
35
  `,
48
36
  });
@@ -59,14 +47,14 @@ description.args = { name: "radio3", description: "description" };
59
47
  export const checked = DefaultTemplate.bind({});
60
48
  checked.args = { checked: true, name: "radio4" };
61
49
 
62
- export const slotFooter = SlotTemplate.bind({});
50
+ export const slotFooter = DefaultTemplate.bind({});
63
51
  slotFooter.args = {
64
52
  name: "radio5",
65
53
  label: "radio",
66
54
  value: "radio",
67
55
  slotTemplate: `
68
56
  <template #footer>
69
- <UBadge label="favourite" color="green" size="sm" />
57
+ <UBadge label="favourite" color="green" size="sm" />
70
58
  </template>
71
59
  `,
72
60
  };
@@ -1,4 +1,4 @@
1
- import { getArgTypes } from "../service.storybook";
1
+ import { getArgTypes, getSlotNames, getSlotsFragment } from "../service.storybook";
2
2
 
3
3
  import URadioGroup from "../ui.form-radio-group";
4
4
  import URadio from "../ui.form-radio";
@@ -13,24 +13,28 @@ export default {
13
13
  id: "3160",
14
14
  title: "Form Inputs & Controls / Radio Group",
15
15
  component: URadioGroup,
16
- args: {
17
- label: "Label",
18
- value: "One",
19
- radios: [
20
- { name: "radio", label: "Radio 1", value: "1" },
21
- { name: "radio", label: "Radio 2", value: "2" },
22
- { name: "radio", label: "Radio 3", value: "3" },
23
- ],
24
- },
16
+ args: {},
25
17
  argTypes: {
26
18
  ...getArgTypes(URadioGroup.name),
27
19
  },
28
20
  };
29
21
 
22
+ const defaultRadios = [
23
+ { name: "slotValues", label: "Boolean", value: false },
24
+ { name: "slotValues", label: "String", value: "One" },
25
+ { name: "slotValues", label: "Number", value: 3 },
26
+ { name: "slotValues", label: "Object", value: { key: "value" } },
27
+ { name: "slotValues", label: "Array", value: ["Array", 1] },
28
+ ];
29
+
30
30
  const DefaultTemplate = (args) => ({
31
31
  components: { URadioGroup, URadio, UAlert, URow, UCol },
32
32
  setup() {
33
- return { args };
33
+ const slots = getSlotNames(URadioGroup.name);
34
+
35
+ const radios = args.radios ? args.radios : defaultRadios;
36
+
37
+ return { args, slots, radios };
34
38
  },
35
39
  data() {
36
40
  return {
@@ -40,7 +44,13 @@ const DefaultTemplate = (args) => ({
40
44
  template: `
41
45
  <UCol gap="2xl">
42
46
  <URadioGroup v-bind="args" v-model="value">
43
- <URadio v-for="(radio, index) in args.radios" :key="index" v-bind="radio" />
47
+ <URadio
48
+ v-for="(radio, index) in radios"
49
+ :key="index"
50
+ v-bind="radio"
51
+ >
52
+ ${args.slotTemplate || getSlotsFragment()}
53
+ </URadio>
44
54
  </URadioGroup>
45
55
  <UAlert color="gray" size="xs">
46
56
  <code>Selected value: <b>{{ value }}</b></code>
@@ -49,78 +59,33 @@ const DefaultTemplate = (args) => ({
49
59
  `,
50
60
  });
51
61
 
52
- const OptionsTemplate = (args) => ({
53
- components: { URadioGroup, URadio, UAlert, URow },
54
- setup() {
55
- return { args };
56
- },
57
- data() {
58
- return {
59
- value: args.value,
60
- };
61
- },
62
- template: `
63
- <URow class="!flex-col">
64
- <URadioGroup v-bind="args" v-model="value" :options="args.radios" />
65
-
66
- <URow>
67
- <UAlert color="blue">
68
- <p>Selected value: {{ value }}</p>
69
- </UAlert>
70
- </URow>
71
- </URow>
72
- `,
73
- });
74
-
75
- const ColorsTemplate = (args, { argTypes } = {}) => ({
62
+ const EnumVariantTemplate = (args, { argTypes } = {}) => ({
76
63
  components: { URadioGroup, URow },
77
64
  setup() {
78
- return { args };
79
- },
80
- data() {
65
+ const radios = defaultRadios;
66
+
81
67
  return {
82
- value: args.value,
83
- colors: argTypes.color.options,
68
+ args,
69
+ options: argTypes[args.enum].options,
70
+ radios,
84
71
  };
85
72
  },
86
- template: `
87
- <URow class="!flex-col">
88
- <URadioGroup
89
- v-bind="args"
90
- v-for="color in colors"
91
- :key="color"
92
- :label="color"
93
- :color="color"
94
- :options="args.radios"
95
- :name="color"
96
- v-model="value"
97
- />
98
- </URow>
99
- `,
100
- });
101
-
102
- const SizesTemplate = (args, { argTypes } = {}) => ({
103
- components: { URadioGroup, URow },
104
- setup() {
105
- return { args };
106
- },
107
73
  data() {
108
74
  return {
109
75
  value: args.value,
110
- sizes: argTypes.size.options,
111
76
  };
112
77
  },
113
78
  template: `
114
79
  <URow class="!flex-col">
115
80
  <URadioGroup
81
+ v-for="(option, index) in options"
82
+ :key="index"
116
83
  v-bind="args"
117
- v-for="size in sizes"
118
- :key="size"
119
- :label="size"
120
- :size="size"
121
- :options="args.radios"
122
- :name="size"
123
84
  v-model="value"
85
+ :[args.enum]="option"
86
+ :label="option"
87
+ :options="radios"
88
+ :name="option"
124
89
  />
125
90
  </URow>
126
91
  `,
@@ -129,30 +94,22 @@ const SizesTemplate = (args, { argTypes } = {}) => ({
129
94
  export const Default = DefaultTemplate.bind({});
130
95
  Default.args = {
131
96
  name: "Default",
132
- isDefaultStory: true,
133
- radios: [
134
- { name: "slotValues", label: "Boolean", value: false },
135
- { name: "slotValues", label: "String", value: "One" },
136
- { name: "slotValues", label: "Number", value: 3 },
137
- { name: "slotValues", label: "Object", value: { key: "value" } },
138
- { name: "slotValues", label: "Array", value: ["Array", 1] },
139
- ],
140
97
  };
141
98
 
142
- export const Options = OptionsTemplate.bind({});
99
+ export const Options = DefaultTemplate.bind({});
143
100
  Options.args = {
144
101
  name: "Options",
145
102
  radios: [
146
103
  { name: "radioValues", label: "Boolean", value: false },
147
- { name: "radioValues", label: "String", value: "One" },
148
- { name: "radioValues", label: "Number", value: 3 },
149
- { name: "radioValues", label: "Object", value: { key: "value" } },
150
- { name: "radioValues", label: "Array", value: ["Array", 1] },
104
+ { name: "radioValues", label: "String", value: "Custom string value" },
105
+ { name: "radioValues", label: "Number", value: 4 },
106
+ { name: "radioValues", label: "Object", value: { key: "Custom object value" } },
107
+ { name: "radioValues", label: "Array", value: ["Custom array value", 2] },
151
108
  ],
152
109
  };
153
110
 
154
- export const Colors = ColorsTemplate.bind({});
155
- Colors.args = { name: "Colors" };
111
+ export const Colors = EnumVariantTemplate.bind({});
112
+ Colors.args = { enum: "color", name: "Colors" };
156
113
 
157
- export const Sizes = SizesTemplate.bind({});
158
- Sizes.args = { name: "Sizes" };
114
+ export const Sizes = EnumVariantTemplate.bind({});
115
+ Sizes.args = { enum: "size", name: "Sizes" };
@@ -64,8 +64,10 @@ export default /*tw*/ {
64
64
  { size: "lg", multiple: true, class: "text-base" },
65
65
  ],
66
66
  },
67
- leftIcon: "pr-3 flex items-center",
68
- rightIcon: "pl-3 flex items-center",
67
+ leftIconWrapper: "pr-3 flex items-center",
68
+ rightIconWrapper: "pl-3 flex items-center",
69
+ iconLeft: "{UIcon}",
70
+ iconRight: "{UIcon}",
69
71
  beforeCaret: "",
70
72
  afterCaret: "mr-3",
71
73
  caret: {
@@ -78,7 +78,7 @@
78
78
  <span
79
79
  v-if="hasSlotContent($slots['icon-left']) || iconLeft"
80
80
  ref="leftSlotWrapperRef"
81
- v-bind="leftIconAttrs"
81
+ v-bind="leftIconWrapperAttrs"
82
82
  >
83
83
  <!--
84
84
  @slot Use it to add icon before option.
@@ -86,7 +86,13 @@
86
86
  @binding {string} icon-size
87
87
  -->
88
88
  <slot name="icon-left" :icon-name="iconLeft" :icon-size="iconSize">
89
- <UIcon v-if="iconLeft" :name="iconLeft" :size="iconSize" internal />
89
+ <UIcon
90
+ v-if="iconLeft"
91
+ :name="iconLeft"
92
+ :size="iconSize"
93
+ internal
94
+ v-bind="iconLeftAttrs"
95
+ />
90
96
  </slot>
91
97
  </span>
92
98
 
@@ -190,14 +196,23 @@
190
196
  <!-- @slot Use it to add something after input. -->
191
197
  <slot name="right" />
192
198
 
193
- <span v-if="hasSlotContent($slots['icon-right']) || iconRight" v-bind="rightIconAttrs">
199
+ <span
200
+ v-if="hasSlotContent($slots['icon-right']) || iconRight"
201
+ v-bind="rightIconWrapperAttrs"
202
+ >
194
203
  <!--
195
204
  @slot Use it to add icon after option.
196
205
  @binding {string} icon-name
197
206
  @binding {string} icon-size
198
207
  -->
199
208
  <slot name="icon-right" :icon-name="iconRight" :icon-size="iconSize">
200
- <UIcon v-if="iconRight" :name="iconRight" :size="iconSize" internal />
209
+ <UIcon
210
+ v-if="iconRight"
211
+ :name="iconRight"
212
+ :size="iconSize"
213
+ internal
214
+ v-bind="iconRightAttrs"
215
+ />
201
216
  </slot>
202
217
  </span>
203
218
  </div>
@@ -565,8 +580,10 @@ const {
565
580
  labelAttrs,
566
581
  wrapperAttrs,
567
582
  innerWrapperAttrs,
568
- leftIconAttrs,
569
- rightIconAttrs,
583
+ leftIconWrapperAttrs,
584
+ rightIconWrapperAttrs,
585
+ iconLeftAttrs,
586
+ iconRightAttrs,
570
587
  beforeCaretAttrs,
571
588
  afterCaretAttrs,
572
589
  toggleAttrs,
package/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "framework": "vue",
3
3
  "name": "vueless",
4
- "version": "0.0.252",
4
+ "version": "0.0.254",
5
5
  "contributions": {
6
6
  "html": {
7
7
  "description-markup": "markdown",