vueless 0.0.613 → 0.0.615

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.
@@ -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({}, configAttr, extendsConfigAttr),
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vueless",
3
- "version": "0.0.613",
3
+ "version": "0.0.615",
4
4
  "license": "MIT",
5
5
  "description": "Vue Styleless UI Component Library, powered by Tailwind CSS.",
6
6
  "keywords": [
@@ -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("getToggleSeparated", () => props.separated);
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
- separated: {
21
+ split: {
22
22
  true: "flex flex-wrap",
23
23
  false: `
24
- flex flex-nowrap -space-x-px gap-0 rounded-dynamic transition w-fit
25
- [&>:first-child]:rounded-dynamic [&>:first-child]:rounded-r-none
26
- [&>:last-child]:rounded-dynamic [&>:last-child]:rounded-l-none
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: "variant" | "size";
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 Separated = DefaultTemplate.bind({});
125
- Separated.args = { name: "separated", separated: true };
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, separated: 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
- * Separate toggle items.
57
+ * Show items without a grouping border.
62
58
  */
63
- separated?: boolean;
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, toValue } from "vue";
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 getToggleVariant = inject<string>("getToggleVariant",
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>(defaultConfig, mutatedProps);
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
- :no-ring="!getToggleSeparated"
116
- color="grayscale"
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
- {UButton}
5
- border-gray-300 font-normal
6
- hover:text-brand-600 hover:border-brand-600 hover:relative hover:z-10
7
- focus:text-brand-600 focus:border-brand-600 focus:relative focus:z-10 focus:ring-brand-700/15
8
- focus-within:ring-brand-700/15 active:text-brand-700 active:border-brand-700 active:relative
9
- active:z-10 disabled:z-0
10
- `,
11
- variants: {
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: {
@@ -61,8 +61,8 @@ export default /*tw*/ {
61
61
  bodyCellContent: "text-ellipsis overflow-hidden",
62
62
  bodyCellCheckbox: "{>bodyCellBase} pr-2",
63
63
  bodyCellDateDivider: "",
64
- bodyCellNested: "mr-2 flex gap-0.5",
65
- bodyCellNestedExpandIconWrapper: "",
64
+ bodyCellNested: "mr-2 flex items-center gap-2",
65
+ bodyCellNestedExpandIconWrapper: "bg-brand-200 rounded-sm",
66
66
  bodyCellNestedExpandIcon: {
67
67
  base: "{UIcon}",
68
68
  wrapper: "rounded-sm",
package/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "framework": "vue",
3
3
  "name": "vueless",
4
- "version": "0.0.613",
4
+ "version": "0.0.615",
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": "separated",
11642
+ "name": "split",
11658
11643
  "required": false,
11659
- "description": "Separate toggle items.",
11644
+ "description": "Show items without a grouping border.",
11660
11645
  "value": {
11661
11646
  "kind": "expression",
11662
11647
  "type": "boolean"