@destyler/checkbox 0.0.1-beta.10
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/dist/component.cjs +14 -0
- package/dist/component.d.cts +4 -0
- package/dist/component.d.mts +4 -0
- package/dist/component.d.ts +4 -0
- package/dist/component.mjs +7 -0
- package/dist/index.cjs +170 -0
- package/dist/index.d.cts +214 -0
- package/dist/index.d.mts +214 -0
- package/dist/index.d.ts +214 -0
- package/dist/index.mjs +167 -0
- package/dist/resolver.cjs +21 -0
- package/dist/resolver.d.cts +6 -0
- package/dist/resolver.d.mts +6 -0
- package/dist/resolver.d.ts +6 -0
- package/dist/resolver.mjs +18 -0
- package/package.json +46 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const index = require('./index.cjs');
|
|
4
|
+
require('vue');
|
|
5
|
+
require('@destyler/primitive');
|
|
6
|
+
require('@destyler/composition');
|
|
7
|
+
require('@destyler/shared');
|
|
8
|
+
require('@destyler/directives');
|
|
9
|
+
require('@destyler/presence');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
exports.DestylerCheckboxIndicator = index.DestylerCheckboxIndicator;
|
|
14
|
+
exports.DestylerCheckboxRoot = index.DestylerCheckboxRoot;
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const vue = require('vue');
|
|
4
|
+
const primitive = require('@destyler/primitive');
|
|
5
|
+
const composition = require('@destyler/composition');
|
|
6
|
+
const shared = require('@destyler/shared');
|
|
7
|
+
const directives = require('@destyler/directives');
|
|
8
|
+
const presence = require('@destyler/presence');
|
|
9
|
+
|
|
10
|
+
function isIndeterminate(checked) {
|
|
11
|
+
return checked === "indeterminate";
|
|
12
|
+
}
|
|
13
|
+
function getState(checked) {
|
|
14
|
+
return isIndeterminate(checked) ? "indeterminate" : checked ? "checked" : "unchecked";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const destylerCheckboxRootProps = {
|
|
18
|
+
asChild: {
|
|
19
|
+
type: Boolean,
|
|
20
|
+
required: false,
|
|
21
|
+
default: false
|
|
22
|
+
},
|
|
23
|
+
as: {
|
|
24
|
+
type: [String, Object],
|
|
25
|
+
required: false,
|
|
26
|
+
default: "button"
|
|
27
|
+
},
|
|
28
|
+
defaultChecked: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
required: false
|
|
31
|
+
},
|
|
32
|
+
checked: {
|
|
33
|
+
type: [Boolean, String],
|
|
34
|
+
required: false,
|
|
35
|
+
default: void 0
|
|
36
|
+
},
|
|
37
|
+
disabled: {
|
|
38
|
+
type: Boolean,
|
|
39
|
+
required: false,
|
|
40
|
+
default: false
|
|
41
|
+
},
|
|
42
|
+
required: {
|
|
43
|
+
type: Boolean,
|
|
44
|
+
required: false
|
|
45
|
+
},
|
|
46
|
+
name: {
|
|
47
|
+
type: String,
|
|
48
|
+
required: false
|
|
49
|
+
},
|
|
50
|
+
value: {
|
|
51
|
+
type: String,
|
|
52
|
+
required: false,
|
|
53
|
+
default: "on"
|
|
54
|
+
},
|
|
55
|
+
id: {
|
|
56
|
+
type: String,
|
|
57
|
+
required: false
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const [injectCheckboxRootContext, provideCheckboxRootContext] = shared.createContext("DestylerCheckboxRoot");
|
|
61
|
+
const DestylerCheckboxRoot = vue.defineComponent({
|
|
62
|
+
name: "DestylerCheckboxRoot",
|
|
63
|
+
props: destylerCheckboxRootProps,
|
|
64
|
+
emits: ["update:checked"],
|
|
65
|
+
setup(props, { emit }) {
|
|
66
|
+
const disabledRef = vue.toRef(props.disabled);
|
|
67
|
+
const checkedRef = composition.useVModel(props, "checked", emit, {
|
|
68
|
+
defaultValue: props.defaultChecked,
|
|
69
|
+
passive: props.checked === void 0
|
|
70
|
+
});
|
|
71
|
+
const { customElement, currentElement } = composition.useCustomElement();
|
|
72
|
+
const isFormControl = composition.useFormControl(currentElement);
|
|
73
|
+
const ariaLabel = vue.computed(() => props.id && currentElement.value ? document.querySelector(`[for="${props.id}"]`)?.textContent : void 0);
|
|
74
|
+
provideCheckboxRootContext({
|
|
75
|
+
disabled: disabledRef,
|
|
76
|
+
state: checkedRef
|
|
77
|
+
});
|
|
78
|
+
return {
|
|
79
|
+
disabled: disabledRef,
|
|
80
|
+
checked: checkedRef,
|
|
81
|
+
customElement,
|
|
82
|
+
isFormControl,
|
|
83
|
+
ariaLabel
|
|
84
|
+
};
|
|
85
|
+
},
|
|
86
|
+
render() {
|
|
87
|
+
const useVShow = this.isFormControl;
|
|
88
|
+
return [
|
|
89
|
+
vue.withDirectives(vue.h(primitive.DestylerPrimitive, vue.mergeProps(this.$attrs, {
|
|
90
|
+
"ref": "customElement",
|
|
91
|
+
"role": "checkbox",
|
|
92
|
+
"asChild": this.$props.asChild,
|
|
93
|
+
"as": this.$props.as,
|
|
94
|
+
"type": this.$props.as === "button" ? "button" : void 0,
|
|
95
|
+
"aria-checked": isIndeterminate(this.checked) ? "mixed" : this.checked,
|
|
96
|
+
"aria-required": false,
|
|
97
|
+
"aria-label": this.$attrs["aria-label"] || this.ariaLabel,
|
|
98
|
+
"data-state": getState(this.checked),
|
|
99
|
+
"data-disabled": this.disabled ? "" : void 0,
|
|
100
|
+
"disabled": this.disabled,
|
|
101
|
+
"onClick": () => {
|
|
102
|
+
this.checked = !this.checked;
|
|
103
|
+
}
|
|
104
|
+
}), this.$slots.default?.()), [
|
|
105
|
+
[directives.BindOnceDirective, { id: this.$props.id }]
|
|
106
|
+
]),
|
|
107
|
+
useVShow ? vue.h("input", {
|
|
108
|
+
"type": "checkbox",
|
|
109
|
+
"tabindex": "-1",
|
|
110
|
+
"aria-hidden": "",
|
|
111
|
+
"value": this.$props.value,
|
|
112
|
+
"checked": this.checked,
|
|
113
|
+
"name": this.$props.name,
|
|
114
|
+
"disabled": this.disabled,
|
|
115
|
+
"required": this.$props.required,
|
|
116
|
+
"style": {
|
|
117
|
+
transform: "translateX(-100%)",
|
|
118
|
+
position: "absolute",
|
|
119
|
+
pointerEvents: "none",
|
|
120
|
+
opacity: 0,
|
|
121
|
+
margin: 0
|
|
122
|
+
}
|
|
123
|
+
}) : null
|
|
124
|
+
];
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
const destylerCheckboxIndicatorProps = {
|
|
129
|
+
asChild: {
|
|
130
|
+
type: Boolean,
|
|
131
|
+
required: false,
|
|
132
|
+
default: false
|
|
133
|
+
},
|
|
134
|
+
as: {
|
|
135
|
+
type: [String, Object],
|
|
136
|
+
required: false,
|
|
137
|
+
default: "button"
|
|
138
|
+
},
|
|
139
|
+
forceMount: {
|
|
140
|
+
type: Boolean,
|
|
141
|
+
required: false,
|
|
142
|
+
default: false
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
const DestylerCheckboxIndicator = vue.defineComponent({
|
|
146
|
+
name: "DestylerCheckboxIndicator",
|
|
147
|
+
props: destylerCheckboxIndicatorProps,
|
|
148
|
+
setup() {
|
|
149
|
+
const rootContext = injectCheckboxRootContext();
|
|
150
|
+
return {
|
|
151
|
+
rootContext
|
|
152
|
+
};
|
|
153
|
+
},
|
|
154
|
+
render() {
|
|
155
|
+
return vue.h(presence.DestylerPresence, {
|
|
156
|
+
present: this.$props.forceMount || isIndeterminate(this.rootContext.state.value) || this.rootContext.state.value === true
|
|
157
|
+
}, vue.h(primitive.DestylerPrimitive, vue.mergeProps(this.$attrs, {
|
|
158
|
+
"data-state": getState(this.rootContext.state.value),
|
|
159
|
+
"data-disabled": this.rootContext.disabled.value ? "" : void 0,
|
|
160
|
+
"asChild": this.$props.asChild,
|
|
161
|
+
"as": this.$props.as,
|
|
162
|
+
"style": {
|
|
163
|
+
pointerEvents: "none"
|
|
164
|
+
}
|
|
165
|
+
}), this.$slots.default?.()));
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
exports.DestylerCheckboxIndicator = DestylerCheckboxIndicator;
|
|
170
|
+
exports.DestylerCheckboxRoot = DestylerCheckboxRoot;
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import * as vue from 'vue';
|
|
2
|
+
import { PropType, Component, Ref } from 'vue';
|
|
3
|
+
import { AsTag } from '@destyler/primitive';
|
|
4
|
+
import { ExtractPublicPropTypes } from '@destyler/shared';
|
|
5
|
+
|
|
6
|
+
type CheckedState = boolean | 'indeterminate';
|
|
7
|
+
|
|
8
|
+
declare const destylerCheckboxRootProps: {
|
|
9
|
+
readonly asChild: {
|
|
10
|
+
readonly type: PropType<boolean>;
|
|
11
|
+
readonly required: false;
|
|
12
|
+
readonly default: false;
|
|
13
|
+
};
|
|
14
|
+
readonly as: {
|
|
15
|
+
readonly type: PropType<AsTag | Component>;
|
|
16
|
+
readonly required: false;
|
|
17
|
+
readonly default: "button";
|
|
18
|
+
};
|
|
19
|
+
readonly defaultChecked: {
|
|
20
|
+
readonly type: PropType<boolean>;
|
|
21
|
+
readonly required: false;
|
|
22
|
+
};
|
|
23
|
+
readonly checked: {
|
|
24
|
+
readonly type: PropType<boolean | "indeterminate">;
|
|
25
|
+
readonly required: false;
|
|
26
|
+
readonly default: undefined;
|
|
27
|
+
};
|
|
28
|
+
readonly disabled: {
|
|
29
|
+
readonly type: PropType<boolean>;
|
|
30
|
+
readonly required: false;
|
|
31
|
+
readonly default: false;
|
|
32
|
+
};
|
|
33
|
+
readonly required: {
|
|
34
|
+
readonly type: PropType<boolean>;
|
|
35
|
+
readonly required: false;
|
|
36
|
+
};
|
|
37
|
+
readonly name: {
|
|
38
|
+
readonly type: PropType<string>;
|
|
39
|
+
readonly required: false;
|
|
40
|
+
};
|
|
41
|
+
readonly value: {
|
|
42
|
+
readonly type: PropType<string>;
|
|
43
|
+
readonly required: false;
|
|
44
|
+
readonly default: "on";
|
|
45
|
+
};
|
|
46
|
+
readonly id: {
|
|
47
|
+
readonly type: PropType<string>;
|
|
48
|
+
readonly required: false;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
type DestylerCheckboxRootProps = ExtractPublicPropTypes<typeof destylerCheckboxRootProps>;
|
|
52
|
+
interface CheckboxRootContext {
|
|
53
|
+
disabled: Ref<boolean>;
|
|
54
|
+
state: Ref<CheckedState>;
|
|
55
|
+
}
|
|
56
|
+
declare const DestylerCheckboxRoot: vue.DefineComponent<{
|
|
57
|
+
readonly asChild: {
|
|
58
|
+
readonly type: PropType<boolean>;
|
|
59
|
+
readonly required: false;
|
|
60
|
+
readonly default: false;
|
|
61
|
+
};
|
|
62
|
+
readonly as: {
|
|
63
|
+
readonly type: PropType<AsTag | Component>;
|
|
64
|
+
readonly required: false;
|
|
65
|
+
readonly default: "button";
|
|
66
|
+
};
|
|
67
|
+
readonly defaultChecked: {
|
|
68
|
+
readonly type: PropType<boolean>;
|
|
69
|
+
readonly required: false;
|
|
70
|
+
};
|
|
71
|
+
readonly checked: {
|
|
72
|
+
readonly type: PropType<boolean | "indeterminate">;
|
|
73
|
+
readonly required: false;
|
|
74
|
+
readonly default: undefined;
|
|
75
|
+
};
|
|
76
|
+
readonly disabled: {
|
|
77
|
+
readonly type: PropType<boolean>;
|
|
78
|
+
readonly required: false;
|
|
79
|
+
readonly default: false;
|
|
80
|
+
};
|
|
81
|
+
readonly required: {
|
|
82
|
+
readonly type: PropType<boolean>;
|
|
83
|
+
readonly required: false;
|
|
84
|
+
};
|
|
85
|
+
readonly name: {
|
|
86
|
+
readonly type: PropType<string>;
|
|
87
|
+
readonly required: false;
|
|
88
|
+
};
|
|
89
|
+
readonly value: {
|
|
90
|
+
readonly type: PropType<string>;
|
|
91
|
+
readonly required: false;
|
|
92
|
+
readonly default: "on";
|
|
93
|
+
};
|
|
94
|
+
readonly id: {
|
|
95
|
+
readonly type: PropType<string>;
|
|
96
|
+
readonly required: false;
|
|
97
|
+
};
|
|
98
|
+
}, {
|
|
99
|
+
disabled: Ref<false> | Ref<true>;
|
|
100
|
+
checked: Ref<CheckedState>;
|
|
101
|
+
customElement: Ref<vue.ComponentPublicInstance | undefined>;
|
|
102
|
+
isFormControl: vue.ComputedRef<boolean>;
|
|
103
|
+
ariaLabel: vue.ComputedRef<string | null | undefined>;
|
|
104
|
+
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "update:checked"[], "update:checked", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
105
|
+
readonly asChild: {
|
|
106
|
+
readonly type: PropType<boolean>;
|
|
107
|
+
readonly required: false;
|
|
108
|
+
readonly default: false;
|
|
109
|
+
};
|
|
110
|
+
readonly as: {
|
|
111
|
+
readonly type: PropType<AsTag | Component>;
|
|
112
|
+
readonly required: false;
|
|
113
|
+
readonly default: "button";
|
|
114
|
+
};
|
|
115
|
+
readonly defaultChecked: {
|
|
116
|
+
readonly type: PropType<boolean>;
|
|
117
|
+
readonly required: false;
|
|
118
|
+
};
|
|
119
|
+
readonly checked: {
|
|
120
|
+
readonly type: PropType<boolean | "indeterminate">;
|
|
121
|
+
readonly required: false;
|
|
122
|
+
readonly default: undefined;
|
|
123
|
+
};
|
|
124
|
+
readonly disabled: {
|
|
125
|
+
readonly type: PropType<boolean>;
|
|
126
|
+
readonly required: false;
|
|
127
|
+
readonly default: false;
|
|
128
|
+
};
|
|
129
|
+
readonly required: {
|
|
130
|
+
readonly type: PropType<boolean>;
|
|
131
|
+
readonly required: false;
|
|
132
|
+
};
|
|
133
|
+
readonly name: {
|
|
134
|
+
readonly type: PropType<string>;
|
|
135
|
+
readonly required: false;
|
|
136
|
+
};
|
|
137
|
+
readonly value: {
|
|
138
|
+
readonly type: PropType<string>;
|
|
139
|
+
readonly required: false;
|
|
140
|
+
readonly default: "on";
|
|
141
|
+
};
|
|
142
|
+
readonly id: {
|
|
143
|
+
readonly type: PropType<string>;
|
|
144
|
+
readonly required: false;
|
|
145
|
+
};
|
|
146
|
+
}>> & {
|
|
147
|
+
"onUpdate:checked"?: ((...args: any[]) => any) | undefined;
|
|
148
|
+
}, {
|
|
149
|
+
readonly checked: boolean | "indeterminate";
|
|
150
|
+
readonly asChild: boolean;
|
|
151
|
+
readonly as: AsTag | Component;
|
|
152
|
+
readonly disabled: boolean;
|
|
153
|
+
readonly value: string;
|
|
154
|
+
}, {}>;
|
|
155
|
+
|
|
156
|
+
declare const destylerCheckboxIndicatorProps: {
|
|
157
|
+
readonly asChild: {
|
|
158
|
+
readonly type: PropType<boolean>;
|
|
159
|
+
readonly required: false;
|
|
160
|
+
readonly default: false;
|
|
161
|
+
};
|
|
162
|
+
readonly as: {
|
|
163
|
+
readonly type: PropType<AsTag | Component>;
|
|
164
|
+
readonly required: false;
|
|
165
|
+
readonly default: "button";
|
|
166
|
+
};
|
|
167
|
+
readonly forceMount: {
|
|
168
|
+
readonly type: PropType<boolean>;
|
|
169
|
+
readonly required: false;
|
|
170
|
+
readonly default: false;
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
type DestylerCheckboxIndicatorProps = ExtractPublicPropTypes<typeof destylerCheckboxIndicatorProps>;
|
|
174
|
+
declare const DestylerCheckboxIndicator: vue.DefineComponent<{
|
|
175
|
+
readonly asChild: {
|
|
176
|
+
readonly type: PropType<boolean>;
|
|
177
|
+
readonly required: false;
|
|
178
|
+
readonly default: false;
|
|
179
|
+
};
|
|
180
|
+
readonly as: {
|
|
181
|
+
readonly type: PropType<AsTag | Component>;
|
|
182
|
+
readonly required: false;
|
|
183
|
+
readonly default: "button";
|
|
184
|
+
};
|
|
185
|
+
readonly forceMount: {
|
|
186
|
+
readonly type: PropType<boolean>;
|
|
187
|
+
readonly required: false;
|
|
188
|
+
readonly default: false;
|
|
189
|
+
};
|
|
190
|
+
}, {
|
|
191
|
+
rootContext: CheckboxRootContext;
|
|
192
|
+
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
193
|
+
readonly asChild: {
|
|
194
|
+
readonly type: PropType<boolean>;
|
|
195
|
+
readonly required: false;
|
|
196
|
+
readonly default: false;
|
|
197
|
+
};
|
|
198
|
+
readonly as: {
|
|
199
|
+
readonly type: PropType<AsTag | Component>;
|
|
200
|
+
readonly required: false;
|
|
201
|
+
readonly default: "button";
|
|
202
|
+
};
|
|
203
|
+
readonly forceMount: {
|
|
204
|
+
readonly type: PropType<boolean>;
|
|
205
|
+
readonly required: false;
|
|
206
|
+
readonly default: false;
|
|
207
|
+
};
|
|
208
|
+
}>>, {
|
|
209
|
+
readonly asChild: boolean;
|
|
210
|
+
readonly as: AsTag | Component;
|
|
211
|
+
readonly forceMount: boolean;
|
|
212
|
+
}, {}>;
|
|
213
|
+
|
|
214
|
+
export { DestylerCheckboxIndicator, type DestylerCheckboxIndicatorProps, DestylerCheckboxRoot, type DestylerCheckboxRootProps };
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import * as vue from 'vue';
|
|
2
|
+
import { PropType, Component, Ref } from 'vue';
|
|
3
|
+
import { AsTag } from '@destyler/primitive';
|
|
4
|
+
import { ExtractPublicPropTypes } from '@destyler/shared';
|
|
5
|
+
|
|
6
|
+
type CheckedState = boolean | 'indeterminate';
|
|
7
|
+
|
|
8
|
+
declare const destylerCheckboxRootProps: {
|
|
9
|
+
readonly asChild: {
|
|
10
|
+
readonly type: PropType<boolean>;
|
|
11
|
+
readonly required: false;
|
|
12
|
+
readonly default: false;
|
|
13
|
+
};
|
|
14
|
+
readonly as: {
|
|
15
|
+
readonly type: PropType<AsTag | Component>;
|
|
16
|
+
readonly required: false;
|
|
17
|
+
readonly default: "button";
|
|
18
|
+
};
|
|
19
|
+
readonly defaultChecked: {
|
|
20
|
+
readonly type: PropType<boolean>;
|
|
21
|
+
readonly required: false;
|
|
22
|
+
};
|
|
23
|
+
readonly checked: {
|
|
24
|
+
readonly type: PropType<boolean | "indeterminate">;
|
|
25
|
+
readonly required: false;
|
|
26
|
+
readonly default: undefined;
|
|
27
|
+
};
|
|
28
|
+
readonly disabled: {
|
|
29
|
+
readonly type: PropType<boolean>;
|
|
30
|
+
readonly required: false;
|
|
31
|
+
readonly default: false;
|
|
32
|
+
};
|
|
33
|
+
readonly required: {
|
|
34
|
+
readonly type: PropType<boolean>;
|
|
35
|
+
readonly required: false;
|
|
36
|
+
};
|
|
37
|
+
readonly name: {
|
|
38
|
+
readonly type: PropType<string>;
|
|
39
|
+
readonly required: false;
|
|
40
|
+
};
|
|
41
|
+
readonly value: {
|
|
42
|
+
readonly type: PropType<string>;
|
|
43
|
+
readonly required: false;
|
|
44
|
+
readonly default: "on";
|
|
45
|
+
};
|
|
46
|
+
readonly id: {
|
|
47
|
+
readonly type: PropType<string>;
|
|
48
|
+
readonly required: false;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
type DestylerCheckboxRootProps = ExtractPublicPropTypes<typeof destylerCheckboxRootProps>;
|
|
52
|
+
interface CheckboxRootContext {
|
|
53
|
+
disabled: Ref<boolean>;
|
|
54
|
+
state: Ref<CheckedState>;
|
|
55
|
+
}
|
|
56
|
+
declare const DestylerCheckboxRoot: vue.DefineComponent<{
|
|
57
|
+
readonly asChild: {
|
|
58
|
+
readonly type: PropType<boolean>;
|
|
59
|
+
readonly required: false;
|
|
60
|
+
readonly default: false;
|
|
61
|
+
};
|
|
62
|
+
readonly as: {
|
|
63
|
+
readonly type: PropType<AsTag | Component>;
|
|
64
|
+
readonly required: false;
|
|
65
|
+
readonly default: "button";
|
|
66
|
+
};
|
|
67
|
+
readonly defaultChecked: {
|
|
68
|
+
readonly type: PropType<boolean>;
|
|
69
|
+
readonly required: false;
|
|
70
|
+
};
|
|
71
|
+
readonly checked: {
|
|
72
|
+
readonly type: PropType<boolean | "indeterminate">;
|
|
73
|
+
readonly required: false;
|
|
74
|
+
readonly default: undefined;
|
|
75
|
+
};
|
|
76
|
+
readonly disabled: {
|
|
77
|
+
readonly type: PropType<boolean>;
|
|
78
|
+
readonly required: false;
|
|
79
|
+
readonly default: false;
|
|
80
|
+
};
|
|
81
|
+
readonly required: {
|
|
82
|
+
readonly type: PropType<boolean>;
|
|
83
|
+
readonly required: false;
|
|
84
|
+
};
|
|
85
|
+
readonly name: {
|
|
86
|
+
readonly type: PropType<string>;
|
|
87
|
+
readonly required: false;
|
|
88
|
+
};
|
|
89
|
+
readonly value: {
|
|
90
|
+
readonly type: PropType<string>;
|
|
91
|
+
readonly required: false;
|
|
92
|
+
readonly default: "on";
|
|
93
|
+
};
|
|
94
|
+
readonly id: {
|
|
95
|
+
readonly type: PropType<string>;
|
|
96
|
+
readonly required: false;
|
|
97
|
+
};
|
|
98
|
+
}, {
|
|
99
|
+
disabled: Ref<false> | Ref<true>;
|
|
100
|
+
checked: Ref<CheckedState>;
|
|
101
|
+
customElement: Ref<vue.ComponentPublicInstance | undefined>;
|
|
102
|
+
isFormControl: vue.ComputedRef<boolean>;
|
|
103
|
+
ariaLabel: vue.ComputedRef<string | null | undefined>;
|
|
104
|
+
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "update:checked"[], "update:checked", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
105
|
+
readonly asChild: {
|
|
106
|
+
readonly type: PropType<boolean>;
|
|
107
|
+
readonly required: false;
|
|
108
|
+
readonly default: false;
|
|
109
|
+
};
|
|
110
|
+
readonly as: {
|
|
111
|
+
readonly type: PropType<AsTag | Component>;
|
|
112
|
+
readonly required: false;
|
|
113
|
+
readonly default: "button";
|
|
114
|
+
};
|
|
115
|
+
readonly defaultChecked: {
|
|
116
|
+
readonly type: PropType<boolean>;
|
|
117
|
+
readonly required: false;
|
|
118
|
+
};
|
|
119
|
+
readonly checked: {
|
|
120
|
+
readonly type: PropType<boolean | "indeterminate">;
|
|
121
|
+
readonly required: false;
|
|
122
|
+
readonly default: undefined;
|
|
123
|
+
};
|
|
124
|
+
readonly disabled: {
|
|
125
|
+
readonly type: PropType<boolean>;
|
|
126
|
+
readonly required: false;
|
|
127
|
+
readonly default: false;
|
|
128
|
+
};
|
|
129
|
+
readonly required: {
|
|
130
|
+
readonly type: PropType<boolean>;
|
|
131
|
+
readonly required: false;
|
|
132
|
+
};
|
|
133
|
+
readonly name: {
|
|
134
|
+
readonly type: PropType<string>;
|
|
135
|
+
readonly required: false;
|
|
136
|
+
};
|
|
137
|
+
readonly value: {
|
|
138
|
+
readonly type: PropType<string>;
|
|
139
|
+
readonly required: false;
|
|
140
|
+
readonly default: "on";
|
|
141
|
+
};
|
|
142
|
+
readonly id: {
|
|
143
|
+
readonly type: PropType<string>;
|
|
144
|
+
readonly required: false;
|
|
145
|
+
};
|
|
146
|
+
}>> & {
|
|
147
|
+
"onUpdate:checked"?: ((...args: any[]) => any) | undefined;
|
|
148
|
+
}, {
|
|
149
|
+
readonly checked: boolean | "indeterminate";
|
|
150
|
+
readonly asChild: boolean;
|
|
151
|
+
readonly as: AsTag | Component;
|
|
152
|
+
readonly disabled: boolean;
|
|
153
|
+
readonly value: string;
|
|
154
|
+
}, {}>;
|
|
155
|
+
|
|
156
|
+
declare const destylerCheckboxIndicatorProps: {
|
|
157
|
+
readonly asChild: {
|
|
158
|
+
readonly type: PropType<boolean>;
|
|
159
|
+
readonly required: false;
|
|
160
|
+
readonly default: false;
|
|
161
|
+
};
|
|
162
|
+
readonly as: {
|
|
163
|
+
readonly type: PropType<AsTag | Component>;
|
|
164
|
+
readonly required: false;
|
|
165
|
+
readonly default: "button";
|
|
166
|
+
};
|
|
167
|
+
readonly forceMount: {
|
|
168
|
+
readonly type: PropType<boolean>;
|
|
169
|
+
readonly required: false;
|
|
170
|
+
readonly default: false;
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
type DestylerCheckboxIndicatorProps = ExtractPublicPropTypes<typeof destylerCheckboxIndicatorProps>;
|
|
174
|
+
declare const DestylerCheckboxIndicator: vue.DefineComponent<{
|
|
175
|
+
readonly asChild: {
|
|
176
|
+
readonly type: PropType<boolean>;
|
|
177
|
+
readonly required: false;
|
|
178
|
+
readonly default: false;
|
|
179
|
+
};
|
|
180
|
+
readonly as: {
|
|
181
|
+
readonly type: PropType<AsTag | Component>;
|
|
182
|
+
readonly required: false;
|
|
183
|
+
readonly default: "button";
|
|
184
|
+
};
|
|
185
|
+
readonly forceMount: {
|
|
186
|
+
readonly type: PropType<boolean>;
|
|
187
|
+
readonly required: false;
|
|
188
|
+
readonly default: false;
|
|
189
|
+
};
|
|
190
|
+
}, {
|
|
191
|
+
rootContext: CheckboxRootContext;
|
|
192
|
+
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
193
|
+
readonly asChild: {
|
|
194
|
+
readonly type: PropType<boolean>;
|
|
195
|
+
readonly required: false;
|
|
196
|
+
readonly default: false;
|
|
197
|
+
};
|
|
198
|
+
readonly as: {
|
|
199
|
+
readonly type: PropType<AsTag | Component>;
|
|
200
|
+
readonly required: false;
|
|
201
|
+
readonly default: "button";
|
|
202
|
+
};
|
|
203
|
+
readonly forceMount: {
|
|
204
|
+
readonly type: PropType<boolean>;
|
|
205
|
+
readonly required: false;
|
|
206
|
+
readonly default: false;
|
|
207
|
+
};
|
|
208
|
+
}>>, {
|
|
209
|
+
readonly asChild: boolean;
|
|
210
|
+
readonly as: AsTag | Component;
|
|
211
|
+
readonly forceMount: boolean;
|
|
212
|
+
}, {}>;
|
|
213
|
+
|
|
214
|
+
export { DestylerCheckboxIndicator, type DestylerCheckboxIndicatorProps, DestylerCheckboxRoot, type DestylerCheckboxRootProps };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import * as vue from 'vue';
|
|
2
|
+
import { PropType, Component, Ref } from 'vue';
|
|
3
|
+
import { AsTag } from '@destyler/primitive';
|
|
4
|
+
import { ExtractPublicPropTypes } from '@destyler/shared';
|
|
5
|
+
|
|
6
|
+
type CheckedState = boolean | 'indeterminate';
|
|
7
|
+
|
|
8
|
+
declare const destylerCheckboxRootProps: {
|
|
9
|
+
readonly asChild: {
|
|
10
|
+
readonly type: PropType<boolean>;
|
|
11
|
+
readonly required: false;
|
|
12
|
+
readonly default: false;
|
|
13
|
+
};
|
|
14
|
+
readonly as: {
|
|
15
|
+
readonly type: PropType<AsTag | Component>;
|
|
16
|
+
readonly required: false;
|
|
17
|
+
readonly default: "button";
|
|
18
|
+
};
|
|
19
|
+
readonly defaultChecked: {
|
|
20
|
+
readonly type: PropType<boolean>;
|
|
21
|
+
readonly required: false;
|
|
22
|
+
};
|
|
23
|
+
readonly checked: {
|
|
24
|
+
readonly type: PropType<boolean | "indeterminate">;
|
|
25
|
+
readonly required: false;
|
|
26
|
+
readonly default: undefined;
|
|
27
|
+
};
|
|
28
|
+
readonly disabled: {
|
|
29
|
+
readonly type: PropType<boolean>;
|
|
30
|
+
readonly required: false;
|
|
31
|
+
readonly default: false;
|
|
32
|
+
};
|
|
33
|
+
readonly required: {
|
|
34
|
+
readonly type: PropType<boolean>;
|
|
35
|
+
readonly required: false;
|
|
36
|
+
};
|
|
37
|
+
readonly name: {
|
|
38
|
+
readonly type: PropType<string>;
|
|
39
|
+
readonly required: false;
|
|
40
|
+
};
|
|
41
|
+
readonly value: {
|
|
42
|
+
readonly type: PropType<string>;
|
|
43
|
+
readonly required: false;
|
|
44
|
+
readonly default: "on";
|
|
45
|
+
};
|
|
46
|
+
readonly id: {
|
|
47
|
+
readonly type: PropType<string>;
|
|
48
|
+
readonly required: false;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
type DestylerCheckboxRootProps = ExtractPublicPropTypes<typeof destylerCheckboxRootProps>;
|
|
52
|
+
interface CheckboxRootContext {
|
|
53
|
+
disabled: Ref<boolean>;
|
|
54
|
+
state: Ref<CheckedState>;
|
|
55
|
+
}
|
|
56
|
+
declare const DestylerCheckboxRoot: vue.DefineComponent<{
|
|
57
|
+
readonly asChild: {
|
|
58
|
+
readonly type: PropType<boolean>;
|
|
59
|
+
readonly required: false;
|
|
60
|
+
readonly default: false;
|
|
61
|
+
};
|
|
62
|
+
readonly as: {
|
|
63
|
+
readonly type: PropType<AsTag | Component>;
|
|
64
|
+
readonly required: false;
|
|
65
|
+
readonly default: "button";
|
|
66
|
+
};
|
|
67
|
+
readonly defaultChecked: {
|
|
68
|
+
readonly type: PropType<boolean>;
|
|
69
|
+
readonly required: false;
|
|
70
|
+
};
|
|
71
|
+
readonly checked: {
|
|
72
|
+
readonly type: PropType<boolean | "indeterminate">;
|
|
73
|
+
readonly required: false;
|
|
74
|
+
readonly default: undefined;
|
|
75
|
+
};
|
|
76
|
+
readonly disabled: {
|
|
77
|
+
readonly type: PropType<boolean>;
|
|
78
|
+
readonly required: false;
|
|
79
|
+
readonly default: false;
|
|
80
|
+
};
|
|
81
|
+
readonly required: {
|
|
82
|
+
readonly type: PropType<boolean>;
|
|
83
|
+
readonly required: false;
|
|
84
|
+
};
|
|
85
|
+
readonly name: {
|
|
86
|
+
readonly type: PropType<string>;
|
|
87
|
+
readonly required: false;
|
|
88
|
+
};
|
|
89
|
+
readonly value: {
|
|
90
|
+
readonly type: PropType<string>;
|
|
91
|
+
readonly required: false;
|
|
92
|
+
readonly default: "on";
|
|
93
|
+
};
|
|
94
|
+
readonly id: {
|
|
95
|
+
readonly type: PropType<string>;
|
|
96
|
+
readonly required: false;
|
|
97
|
+
};
|
|
98
|
+
}, {
|
|
99
|
+
disabled: Ref<false> | Ref<true>;
|
|
100
|
+
checked: Ref<CheckedState>;
|
|
101
|
+
customElement: Ref<vue.ComponentPublicInstance | undefined>;
|
|
102
|
+
isFormControl: vue.ComputedRef<boolean>;
|
|
103
|
+
ariaLabel: vue.ComputedRef<string | null | undefined>;
|
|
104
|
+
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "update:checked"[], "update:checked", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
105
|
+
readonly asChild: {
|
|
106
|
+
readonly type: PropType<boolean>;
|
|
107
|
+
readonly required: false;
|
|
108
|
+
readonly default: false;
|
|
109
|
+
};
|
|
110
|
+
readonly as: {
|
|
111
|
+
readonly type: PropType<AsTag | Component>;
|
|
112
|
+
readonly required: false;
|
|
113
|
+
readonly default: "button";
|
|
114
|
+
};
|
|
115
|
+
readonly defaultChecked: {
|
|
116
|
+
readonly type: PropType<boolean>;
|
|
117
|
+
readonly required: false;
|
|
118
|
+
};
|
|
119
|
+
readonly checked: {
|
|
120
|
+
readonly type: PropType<boolean | "indeterminate">;
|
|
121
|
+
readonly required: false;
|
|
122
|
+
readonly default: undefined;
|
|
123
|
+
};
|
|
124
|
+
readonly disabled: {
|
|
125
|
+
readonly type: PropType<boolean>;
|
|
126
|
+
readonly required: false;
|
|
127
|
+
readonly default: false;
|
|
128
|
+
};
|
|
129
|
+
readonly required: {
|
|
130
|
+
readonly type: PropType<boolean>;
|
|
131
|
+
readonly required: false;
|
|
132
|
+
};
|
|
133
|
+
readonly name: {
|
|
134
|
+
readonly type: PropType<string>;
|
|
135
|
+
readonly required: false;
|
|
136
|
+
};
|
|
137
|
+
readonly value: {
|
|
138
|
+
readonly type: PropType<string>;
|
|
139
|
+
readonly required: false;
|
|
140
|
+
readonly default: "on";
|
|
141
|
+
};
|
|
142
|
+
readonly id: {
|
|
143
|
+
readonly type: PropType<string>;
|
|
144
|
+
readonly required: false;
|
|
145
|
+
};
|
|
146
|
+
}>> & {
|
|
147
|
+
"onUpdate:checked"?: ((...args: any[]) => any) | undefined;
|
|
148
|
+
}, {
|
|
149
|
+
readonly checked: boolean | "indeterminate";
|
|
150
|
+
readonly asChild: boolean;
|
|
151
|
+
readonly as: AsTag | Component;
|
|
152
|
+
readonly disabled: boolean;
|
|
153
|
+
readonly value: string;
|
|
154
|
+
}, {}>;
|
|
155
|
+
|
|
156
|
+
declare const destylerCheckboxIndicatorProps: {
|
|
157
|
+
readonly asChild: {
|
|
158
|
+
readonly type: PropType<boolean>;
|
|
159
|
+
readonly required: false;
|
|
160
|
+
readonly default: false;
|
|
161
|
+
};
|
|
162
|
+
readonly as: {
|
|
163
|
+
readonly type: PropType<AsTag | Component>;
|
|
164
|
+
readonly required: false;
|
|
165
|
+
readonly default: "button";
|
|
166
|
+
};
|
|
167
|
+
readonly forceMount: {
|
|
168
|
+
readonly type: PropType<boolean>;
|
|
169
|
+
readonly required: false;
|
|
170
|
+
readonly default: false;
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
type DestylerCheckboxIndicatorProps = ExtractPublicPropTypes<typeof destylerCheckboxIndicatorProps>;
|
|
174
|
+
declare const DestylerCheckboxIndicator: vue.DefineComponent<{
|
|
175
|
+
readonly asChild: {
|
|
176
|
+
readonly type: PropType<boolean>;
|
|
177
|
+
readonly required: false;
|
|
178
|
+
readonly default: false;
|
|
179
|
+
};
|
|
180
|
+
readonly as: {
|
|
181
|
+
readonly type: PropType<AsTag | Component>;
|
|
182
|
+
readonly required: false;
|
|
183
|
+
readonly default: "button";
|
|
184
|
+
};
|
|
185
|
+
readonly forceMount: {
|
|
186
|
+
readonly type: PropType<boolean>;
|
|
187
|
+
readonly required: false;
|
|
188
|
+
readonly default: false;
|
|
189
|
+
};
|
|
190
|
+
}, {
|
|
191
|
+
rootContext: CheckboxRootContext;
|
|
192
|
+
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
193
|
+
readonly asChild: {
|
|
194
|
+
readonly type: PropType<boolean>;
|
|
195
|
+
readonly required: false;
|
|
196
|
+
readonly default: false;
|
|
197
|
+
};
|
|
198
|
+
readonly as: {
|
|
199
|
+
readonly type: PropType<AsTag | Component>;
|
|
200
|
+
readonly required: false;
|
|
201
|
+
readonly default: "button";
|
|
202
|
+
};
|
|
203
|
+
readonly forceMount: {
|
|
204
|
+
readonly type: PropType<boolean>;
|
|
205
|
+
readonly required: false;
|
|
206
|
+
readonly default: false;
|
|
207
|
+
};
|
|
208
|
+
}>>, {
|
|
209
|
+
readonly asChild: boolean;
|
|
210
|
+
readonly as: AsTag | Component;
|
|
211
|
+
readonly forceMount: boolean;
|
|
212
|
+
}, {}>;
|
|
213
|
+
|
|
214
|
+
export { DestylerCheckboxIndicator, type DestylerCheckboxIndicatorProps, DestylerCheckboxRoot, type DestylerCheckboxRootProps };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { defineComponent, toRef, computed, withDirectives, h, mergeProps } from 'vue';
|
|
2
|
+
import { DestylerPrimitive } from '@destyler/primitive';
|
|
3
|
+
import { useVModel, useCustomElement, useFormControl } from '@destyler/composition';
|
|
4
|
+
import { createContext } from '@destyler/shared';
|
|
5
|
+
import { BindOnceDirective } from '@destyler/directives';
|
|
6
|
+
import { DestylerPresence } from '@destyler/presence';
|
|
7
|
+
|
|
8
|
+
function isIndeterminate(checked) {
|
|
9
|
+
return checked === "indeterminate";
|
|
10
|
+
}
|
|
11
|
+
function getState(checked) {
|
|
12
|
+
return isIndeterminate(checked) ? "indeterminate" : checked ? "checked" : "unchecked";
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const destylerCheckboxRootProps = {
|
|
16
|
+
asChild: {
|
|
17
|
+
type: Boolean,
|
|
18
|
+
required: false,
|
|
19
|
+
default: false
|
|
20
|
+
},
|
|
21
|
+
as: {
|
|
22
|
+
type: [String, Object],
|
|
23
|
+
required: false,
|
|
24
|
+
default: "button"
|
|
25
|
+
},
|
|
26
|
+
defaultChecked: {
|
|
27
|
+
type: Boolean,
|
|
28
|
+
required: false
|
|
29
|
+
},
|
|
30
|
+
checked: {
|
|
31
|
+
type: [Boolean, String],
|
|
32
|
+
required: false,
|
|
33
|
+
default: void 0
|
|
34
|
+
},
|
|
35
|
+
disabled: {
|
|
36
|
+
type: Boolean,
|
|
37
|
+
required: false,
|
|
38
|
+
default: false
|
|
39
|
+
},
|
|
40
|
+
required: {
|
|
41
|
+
type: Boolean,
|
|
42
|
+
required: false
|
|
43
|
+
},
|
|
44
|
+
name: {
|
|
45
|
+
type: String,
|
|
46
|
+
required: false
|
|
47
|
+
},
|
|
48
|
+
value: {
|
|
49
|
+
type: String,
|
|
50
|
+
required: false,
|
|
51
|
+
default: "on"
|
|
52
|
+
},
|
|
53
|
+
id: {
|
|
54
|
+
type: String,
|
|
55
|
+
required: false
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const [injectCheckboxRootContext, provideCheckboxRootContext] = createContext("DestylerCheckboxRoot");
|
|
59
|
+
const DestylerCheckboxRoot = defineComponent({
|
|
60
|
+
name: "DestylerCheckboxRoot",
|
|
61
|
+
props: destylerCheckboxRootProps,
|
|
62
|
+
emits: ["update:checked"],
|
|
63
|
+
setup(props, { emit }) {
|
|
64
|
+
const disabledRef = toRef(props.disabled);
|
|
65
|
+
const checkedRef = useVModel(props, "checked", emit, {
|
|
66
|
+
defaultValue: props.defaultChecked,
|
|
67
|
+
passive: props.checked === void 0
|
|
68
|
+
});
|
|
69
|
+
const { customElement, currentElement } = useCustomElement();
|
|
70
|
+
const isFormControl = useFormControl(currentElement);
|
|
71
|
+
const ariaLabel = computed(() => props.id && currentElement.value ? document.querySelector(`[for="${props.id}"]`)?.textContent : void 0);
|
|
72
|
+
provideCheckboxRootContext({
|
|
73
|
+
disabled: disabledRef,
|
|
74
|
+
state: checkedRef
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
disabled: disabledRef,
|
|
78
|
+
checked: checkedRef,
|
|
79
|
+
customElement,
|
|
80
|
+
isFormControl,
|
|
81
|
+
ariaLabel
|
|
82
|
+
};
|
|
83
|
+
},
|
|
84
|
+
render() {
|
|
85
|
+
const useVShow = this.isFormControl;
|
|
86
|
+
return [
|
|
87
|
+
withDirectives(h(DestylerPrimitive, mergeProps(this.$attrs, {
|
|
88
|
+
"ref": "customElement",
|
|
89
|
+
"role": "checkbox",
|
|
90
|
+
"asChild": this.$props.asChild,
|
|
91
|
+
"as": this.$props.as,
|
|
92
|
+
"type": this.$props.as === "button" ? "button" : void 0,
|
|
93
|
+
"aria-checked": isIndeterminate(this.checked) ? "mixed" : this.checked,
|
|
94
|
+
"aria-required": false,
|
|
95
|
+
"aria-label": this.$attrs["aria-label"] || this.ariaLabel,
|
|
96
|
+
"data-state": getState(this.checked),
|
|
97
|
+
"data-disabled": this.disabled ? "" : void 0,
|
|
98
|
+
"disabled": this.disabled,
|
|
99
|
+
"onClick": () => {
|
|
100
|
+
this.checked = !this.checked;
|
|
101
|
+
}
|
|
102
|
+
}), this.$slots.default?.()), [
|
|
103
|
+
[BindOnceDirective, { id: this.$props.id }]
|
|
104
|
+
]),
|
|
105
|
+
useVShow ? h("input", {
|
|
106
|
+
"type": "checkbox",
|
|
107
|
+
"tabindex": "-1",
|
|
108
|
+
"aria-hidden": "",
|
|
109
|
+
"value": this.$props.value,
|
|
110
|
+
"checked": this.checked,
|
|
111
|
+
"name": this.$props.name,
|
|
112
|
+
"disabled": this.disabled,
|
|
113
|
+
"required": this.$props.required,
|
|
114
|
+
"style": {
|
|
115
|
+
transform: "translateX(-100%)",
|
|
116
|
+
position: "absolute",
|
|
117
|
+
pointerEvents: "none",
|
|
118
|
+
opacity: 0,
|
|
119
|
+
margin: 0
|
|
120
|
+
}
|
|
121
|
+
}) : null
|
|
122
|
+
];
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
const destylerCheckboxIndicatorProps = {
|
|
127
|
+
asChild: {
|
|
128
|
+
type: Boolean,
|
|
129
|
+
required: false,
|
|
130
|
+
default: false
|
|
131
|
+
},
|
|
132
|
+
as: {
|
|
133
|
+
type: [String, Object],
|
|
134
|
+
required: false,
|
|
135
|
+
default: "button"
|
|
136
|
+
},
|
|
137
|
+
forceMount: {
|
|
138
|
+
type: Boolean,
|
|
139
|
+
required: false,
|
|
140
|
+
default: false
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
const DestylerCheckboxIndicator = defineComponent({
|
|
144
|
+
name: "DestylerCheckboxIndicator",
|
|
145
|
+
props: destylerCheckboxIndicatorProps,
|
|
146
|
+
setup() {
|
|
147
|
+
const rootContext = injectCheckboxRootContext();
|
|
148
|
+
return {
|
|
149
|
+
rootContext
|
|
150
|
+
};
|
|
151
|
+
},
|
|
152
|
+
render() {
|
|
153
|
+
return h(DestylerPresence, {
|
|
154
|
+
present: this.$props.forceMount || isIndeterminate(this.rootContext.state.value) || this.rootContext.state.value === true
|
|
155
|
+
}, h(DestylerPrimitive, mergeProps(this.$attrs, {
|
|
156
|
+
"data-state": getState(this.rootContext.state.value),
|
|
157
|
+
"data-disabled": this.rootContext.disabled.value ? "" : void 0,
|
|
158
|
+
"asChild": this.$props.asChild,
|
|
159
|
+
"as": this.$props.as,
|
|
160
|
+
"style": {
|
|
161
|
+
pointerEvents: "none"
|
|
162
|
+
}
|
|
163
|
+
}), this.$slots.default?.()));
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
export { DestylerCheckboxIndicator, DestylerCheckboxRoot };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const name = "@destyler/checkbox";
|
|
4
|
+
|
|
5
|
+
const packageName = name;
|
|
6
|
+
const checkboxComponentName = [
|
|
7
|
+
"DestylerCheckboxRoot",
|
|
8
|
+
"DestylerCheckboxIndicator"
|
|
9
|
+
];
|
|
10
|
+
function DestylerCheckboxResolver() {
|
|
11
|
+
return {
|
|
12
|
+
type: "component",
|
|
13
|
+
resolve: (name2) => {
|
|
14
|
+
if (checkboxComponentName.includes(name2))
|
|
15
|
+
return { name: name2, from: packageName };
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
exports.DestylerCheckboxResolver = DestylerCheckboxResolver;
|
|
21
|
+
exports.checkboxComponentName = checkboxComponentName;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const name = "@destyler/checkbox";
|
|
2
|
+
|
|
3
|
+
const packageName = name;
|
|
4
|
+
const checkboxComponentName = [
|
|
5
|
+
"DestylerCheckboxRoot",
|
|
6
|
+
"DestylerCheckboxIndicator"
|
|
7
|
+
];
|
|
8
|
+
function DestylerCheckboxResolver() {
|
|
9
|
+
return {
|
|
10
|
+
type: "component",
|
|
11
|
+
resolve: (name2) => {
|
|
12
|
+
if (checkboxComponentName.includes(name2))
|
|
13
|
+
return { name: name2, from: packageName };
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { DestylerCheckboxResolver, checkboxComponentName };
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@destyler/checkbox",
|
|
3
|
+
"version": "0.0.1-beta.10",
|
|
4
|
+
"description": "unstyled checkbox component for vue",
|
|
5
|
+
"author": "Elone Hoo <elonehoo@gmail.com>",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.mjs",
|
|
11
|
+
"require": "./dist/index.cjs"
|
|
12
|
+
},
|
|
13
|
+
"./resolver": {
|
|
14
|
+
"types": "./dist/resolver.d.ts",
|
|
15
|
+
"import": "./dist/resolver.mjs",
|
|
16
|
+
"require": "./dist/resolver.cjs"
|
|
17
|
+
},
|
|
18
|
+
"./component": {
|
|
19
|
+
"types": "./dist/component.d.ts",
|
|
20
|
+
"import": "./dist/component.mjs",
|
|
21
|
+
"require": "./dist/component.cjs"
|
|
22
|
+
},
|
|
23
|
+
"./*": "./*"
|
|
24
|
+
},
|
|
25
|
+
"main": "dist/index.cjs",
|
|
26
|
+
"module": "dist/index.mjs",
|
|
27
|
+
"types": "dist/index.d.ts",
|
|
28
|
+
"files": [
|
|
29
|
+
"*.d.ts",
|
|
30
|
+
"dist"
|
|
31
|
+
],
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"vue": ">=3.3.4"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@destyler/composition": "0.0.1-beta.10",
|
|
37
|
+
"@destyler/shared": "0.0.1-beta.10",
|
|
38
|
+
"@destyler/presence": "0.0.1-beta.10",
|
|
39
|
+
"@destyler/primitive": "0.0.1-beta.10",
|
|
40
|
+
"@destyler/directives": "0.0.1-beta.10"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"clear": "rimraf ./dist",
|
|
44
|
+
"build": "pnpm run clear && unbuild"
|
|
45
|
+
}
|
|
46
|
+
}
|