@destyler/toggle 0.0.1-beta.13

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.
@@ -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/roving-focus');
9
+
10
+
11
+
12
+ exports.DestylerToggle = index.DestylerToggle;
13
+ exports.DestylerToggleGroupItem = index.DestylerToggleGroupItem;
14
+ exports.DestylerToggleGroupRoot = index.DestylerToggleGroupRoot;
@@ -0,0 +1,4 @@
1
+ export { DestylerToggle, DestylerToggleGroupItem, DestylerToggleGroupItemProps, DestylerToggleGroupRoot, DestylerToggleGroupRootProps, DestylerToggleProps } from './index.cjs';
2
+ import 'vue';
3
+ import '@destyler/primitive';
4
+ import '@destyler/shared';
@@ -0,0 +1,4 @@
1
+ export { DestylerToggle, DestylerToggleGroupItem, DestylerToggleGroupItemProps, DestylerToggleGroupRoot, DestylerToggleGroupRootProps, DestylerToggleProps } from './index.mjs';
2
+ import 'vue';
3
+ import '@destyler/primitive';
4
+ import '@destyler/shared';
@@ -0,0 +1,4 @@
1
+ export { DestylerToggle, DestylerToggleGroupItem, DestylerToggleGroupItemProps, DestylerToggleGroupRoot, DestylerToggleGroupRootProps, DestylerToggleProps } from './index.js';
2
+ import 'vue';
3
+ import '@destyler/primitive';
4
+ import '@destyler/shared';
@@ -0,0 +1,6 @@
1
+ export { DestylerToggle, DestylerToggleGroupItem, DestylerToggleGroupRoot } from './index.mjs';
2
+ import 'vue';
3
+ import '@destyler/primitive';
4
+ import '@destyler/composition';
5
+ import '@destyler/shared';
6
+ import '@destyler/roving-focus';
package/dist/index.cjs ADDED
@@ -0,0 +1,217 @@
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 rovingFocus = require('@destyler/roving-focus');
8
+
9
+ const destylerToggleProps = {
10
+ as: {
11
+ type: [String, Object],
12
+ required: false,
13
+ default: "button"
14
+ },
15
+ asChild: {
16
+ type: Boolean,
17
+ required: false,
18
+ default: false
19
+ },
20
+ defaultValue: {
21
+ type: Boolean,
22
+ required: false
23
+ },
24
+ pressed: {
25
+ type: Boolean,
26
+ required: false,
27
+ default: void 0
28
+ },
29
+ disabled: {
30
+ type: Boolean,
31
+ required: false,
32
+ default: false
33
+ }
34
+ };
35
+ const DestylerToggle = vue.defineComponent({
36
+ name: "DestylerToggle",
37
+ props: destylerToggleProps,
38
+ emits: ["update:pressed"],
39
+ setup(props, { emit }) {
40
+ composition.useForwardExpose();
41
+ const pressed = composition.useVModel(props, "pressed", emit, {
42
+ defaultValue: props.defaultValue,
43
+ passive: props.pressed === void 0
44
+ });
45
+ function togglePressed() {
46
+ pressed.value = !pressed.value;
47
+ }
48
+ const dataState = vue.computed(() => {
49
+ return pressed.value ? "on" : "off";
50
+ });
51
+ return {
52
+ pressed,
53
+ togglePressed,
54
+ dataState
55
+ };
56
+ },
57
+ render() {
58
+ return vue.h(primitive.DestylerPrimitive, {
59
+ "as": this.$props.as,
60
+ "asChild": this.$props.asChild,
61
+ "type": this.$props.as === "button" ? "button" : void 0,
62
+ "aria-pressed": this.pressed,
63
+ "data-state": this.dataState,
64
+ "data-disabled": this.$props.disabled ? "" : void 0,
65
+ "disabled": this.$props.disabled,
66
+ "onClick": () => {
67
+ this.togglePressed();
68
+ }
69
+ }, {
70
+ default: () => this.$slots.default?.()
71
+ });
72
+ }
73
+ });
74
+
75
+ const destylerToggleGroupRootProps = {
76
+ as: {
77
+ type: [String, Object],
78
+ required: false,
79
+ default: "div"
80
+ },
81
+ asChild: {
82
+ type: Boolean,
83
+ required: false,
84
+ default: false
85
+ },
86
+ type: {
87
+ type: String,
88
+ required: false,
89
+ default: "single"
90
+ },
91
+ defaultValue: {
92
+ type: [String, Array],
93
+ required: false
94
+ },
95
+ modelValue: {
96
+ type: [String, Array],
97
+ required: false
98
+ },
99
+ rovingFocus: {
100
+ type: Boolean,
101
+ required: false,
102
+ default: true
103
+ },
104
+ disabled: {
105
+ type: Boolean,
106
+ required: false,
107
+ default: false
108
+ },
109
+ orientation: {
110
+ type: String,
111
+ required: false
112
+ },
113
+ dir: {
114
+ type: String,
115
+ required: false
116
+ },
117
+ loop: {
118
+ type: Boolean,
119
+ required: false,
120
+ default: true
121
+ }
122
+ };
123
+ const [injectToggleGroupRootContext, provideToggleGroupRootContext] = shared.createContext("DestylerToggleGroupRoot");
124
+ const DestylerToggleGroupRoot = vue.defineComponent({
125
+ name: "DestylerToggleGroupRoot",
126
+ props: destylerToggleGroupRootProps,
127
+ emits: ["update:modelValue"],
128
+ setup(props, { emit }) {
129
+ const { loop, rovingFocus, disabled, dir: propDir } = vue.toRefs(props);
130
+ const dir = composition.useDirection(propDir);
131
+ const { forwardRef } = composition.useForwardExpose();
132
+ const { modelValue, changeModelValue } = composition.useSingleOrMultipleValue(props, emit);
133
+ provideToggleGroupRootContext({
134
+ type: props.type,
135
+ modelValue,
136
+ changeModelValue,
137
+ dir,
138
+ orientation: props.orientation,
139
+ loop,
140
+ rovingFocus,
141
+ disabled
142
+ });
143
+ return {
144
+ rovingFocus,
145
+ dir,
146
+ loop,
147
+ forwardRef
148
+ };
149
+ },
150
+ render() {
151
+ return vue.h(this.rovingFocus ? rovingFocus.DestylerRovingFocusGroup : primitive.DestylerPrimitive, {
152
+ asChild: true,
153
+ orientation: this.rovingFocus ? this.$props.orientation : void 0,
154
+ dir: this.dir,
155
+ loop: this.rovingFocus ? this.loop : void 0
156
+ }, {
157
+ default: () => {
158
+ return vue.h(primitive.DestylerPrimitive, {
159
+ ref: "forwardRef",
160
+ role: "group",
161
+ as: this.$props.as,
162
+ asChild: this.$props.asChild
163
+ }, {
164
+ default: () => this.$slots.default?.()
165
+ });
166
+ }
167
+ });
168
+ }
169
+ });
170
+
171
+ const destylerToggleGroupItemProps = {
172
+ ...destylerToggleProps,
173
+ value: {
174
+ type: String,
175
+ required: true
176
+ }
177
+ };
178
+ const DestylerToggleGroupItem = vue.defineComponent({
179
+ name: "DestylerToggleGroupItem",
180
+ props: destylerToggleGroupItemProps,
181
+ setup(props) {
182
+ const rootContext = injectToggleGroupRootContext();
183
+ const disabled = vue.computed(() => rootContext.disabled?.value || props.disabled);
184
+ const pressed = vue.computed(() => rootContext.modelValue.value?.includes(props.value));
185
+ const { forwardRef } = composition.useForwardExpose();
186
+ return {
187
+ rootContext,
188
+ disabled,
189
+ pressed,
190
+ forwardRef
191
+ };
192
+ },
193
+ render() {
194
+ return vue.h(this.rootContext.rovingFocus.value ? rovingFocus.DestylerRovingFocusItem : primitive.DestylerPrimitive, {
195
+ asChild: true,
196
+ focusable: !this.disabled,
197
+ active: this.pressed
198
+ }, {
199
+ default: () => {
200
+ return vue.h(DestylerToggle, vue.mergeProps(this.$props, {
201
+ "ref": "forwardRef",
202
+ "disabled": this.disabled,
203
+ "pressed": this.rootContext.type === "single" ? this.rootContext.modelValue.value === this.$props.value : this.rootContext.modelValue.value?.includes(this.$props.value),
204
+ "onUpdate:pressed": () => {
205
+ this.rootContext.changeModelValue(this.$props.value);
206
+ }
207
+ }), {
208
+ default: () => this.$slots.default?.()
209
+ });
210
+ }
211
+ });
212
+ }
213
+ });
214
+
215
+ exports.DestylerToggle = DestylerToggle;
216
+ exports.DestylerToggleGroupItem = DestylerToggleGroupItem;
217
+ exports.DestylerToggleGroupRoot = DestylerToggleGroupRoot;
@@ -0,0 +1,369 @@
1
+ import * as vue from 'vue';
2
+ import { PropType, Component, Ref } from 'vue';
3
+ import * as _destyler_primitive from '@destyler/primitive';
4
+ import { AsTag } from '@destyler/primitive';
5
+ import { ExtractPublicPropTypes, DataOrientation, Direction } from '@destyler/shared';
6
+
7
+ declare const destylerToggleProps: {
8
+ readonly as: {
9
+ readonly type: PropType<AsTag | Component>;
10
+ readonly required: false;
11
+ readonly default: "button";
12
+ };
13
+ readonly asChild: {
14
+ readonly type: PropType<boolean>;
15
+ readonly required: false;
16
+ readonly default: false;
17
+ };
18
+ readonly defaultValue: {
19
+ readonly type: PropType<boolean>;
20
+ readonly required: false;
21
+ };
22
+ readonly pressed: {
23
+ readonly type: PropType<boolean>;
24
+ readonly required: false;
25
+ readonly default: undefined;
26
+ };
27
+ readonly disabled: {
28
+ readonly type: PropType<boolean>;
29
+ readonly required: false;
30
+ readonly default: false;
31
+ };
32
+ };
33
+ type DestylerToggleProps = ExtractPublicPropTypes<typeof destylerToggleProps>;
34
+ type DataState = 'on' | 'off';
35
+ declare const DestylerToggle: vue.DefineComponent<{
36
+ readonly as: {
37
+ readonly type: PropType<AsTag | Component>;
38
+ readonly required: false;
39
+ readonly default: "button";
40
+ };
41
+ readonly asChild: {
42
+ readonly type: PropType<boolean>;
43
+ readonly required: false;
44
+ readonly default: false;
45
+ };
46
+ readonly defaultValue: {
47
+ readonly type: PropType<boolean>;
48
+ readonly required: false;
49
+ };
50
+ readonly pressed: {
51
+ readonly type: PropType<boolean>;
52
+ readonly required: false;
53
+ readonly default: undefined;
54
+ };
55
+ readonly disabled: {
56
+ readonly type: PropType<boolean>;
57
+ readonly required: false;
58
+ readonly default: false;
59
+ };
60
+ }, {
61
+ pressed: vue.WritableComputedRef<boolean | undefined>;
62
+ togglePressed: () => void;
63
+ dataState: vue.ComputedRef<DataState>;
64
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "update:pressed"[], "update:pressed", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
65
+ readonly as: {
66
+ readonly type: PropType<AsTag | Component>;
67
+ readonly required: false;
68
+ readonly default: "button";
69
+ };
70
+ readonly asChild: {
71
+ readonly type: PropType<boolean>;
72
+ readonly required: false;
73
+ readonly default: false;
74
+ };
75
+ readonly defaultValue: {
76
+ readonly type: PropType<boolean>;
77
+ readonly required: false;
78
+ };
79
+ readonly pressed: {
80
+ readonly type: PropType<boolean>;
81
+ readonly required: false;
82
+ readonly default: undefined;
83
+ };
84
+ readonly disabled: {
85
+ readonly type: PropType<boolean>;
86
+ readonly required: false;
87
+ readonly default: false;
88
+ };
89
+ }>> & {
90
+ "onUpdate:pressed"?: ((...args: any[]) => any) | undefined;
91
+ }, {
92
+ readonly as: AsTag | Component;
93
+ readonly asChild: boolean;
94
+ readonly pressed: boolean;
95
+ readonly disabled: boolean;
96
+ }, {}>;
97
+
98
+ type TypeEnum = 'single' | 'multiple';
99
+ declare const destylerToggleGroupRootProps: {
100
+ readonly as: {
101
+ readonly type: PropType<AsTag | Component>;
102
+ readonly required: false;
103
+ readonly default: "div";
104
+ };
105
+ readonly asChild: {
106
+ readonly type: PropType<boolean>;
107
+ readonly required: false;
108
+ readonly default: false;
109
+ };
110
+ readonly type: {
111
+ readonly type: PropType<TypeEnum>;
112
+ readonly required: false;
113
+ readonly default: "single";
114
+ };
115
+ readonly defaultValue: {
116
+ readonly type: PropType<string | string[]>;
117
+ readonly required: false;
118
+ };
119
+ readonly modelValue: {
120
+ readonly type: PropType<string | string[]>;
121
+ readonly required: false;
122
+ };
123
+ readonly rovingFocus: {
124
+ readonly type: PropType<boolean>;
125
+ readonly required: false;
126
+ readonly default: true;
127
+ };
128
+ readonly disabled: {
129
+ readonly type: PropType<boolean>;
130
+ readonly required: false;
131
+ readonly default: false;
132
+ };
133
+ readonly orientation: {
134
+ readonly type: PropType<DataOrientation>;
135
+ readonly required: false;
136
+ };
137
+ readonly dir: {
138
+ readonly type: PropType<Direction>;
139
+ readonly required: false;
140
+ };
141
+ readonly loop: {
142
+ readonly type: PropType<boolean>;
143
+ readonly required: false;
144
+ readonly default: true;
145
+ };
146
+ };
147
+ type DestylerToggleGroupRootProps = ExtractPublicPropTypes<typeof destylerToggleGroupRootProps>;
148
+ interface ToggleGroupRootContext {
149
+ type: TypeEnum;
150
+ modelValue: Ref<string | string[] | undefined>;
151
+ changeModelValue: (value: string) => void;
152
+ dir?: Ref<Direction>;
153
+ orientation?: DataOrientation;
154
+ loop: Ref<boolean>;
155
+ rovingFocus: Ref<boolean>;
156
+ disabled?: Ref<boolean>;
157
+ }
158
+ declare const DestylerToggleGroupRoot: vue.DefineComponent<{
159
+ readonly as: {
160
+ readonly type: PropType<AsTag | Component>;
161
+ readonly required: false;
162
+ readonly default: "div";
163
+ };
164
+ readonly asChild: {
165
+ readonly type: PropType<boolean>;
166
+ readonly required: false;
167
+ readonly default: false;
168
+ };
169
+ readonly type: {
170
+ readonly type: PropType<TypeEnum>;
171
+ readonly required: false;
172
+ readonly default: "single";
173
+ };
174
+ readonly defaultValue: {
175
+ readonly type: PropType<string | string[]>;
176
+ readonly required: false;
177
+ };
178
+ readonly modelValue: {
179
+ readonly type: PropType<string | string[]>;
180
+ readonly required: false;
181
+ };
182
+ readonly rovingFocus: {
183
+ readonly type: PropType<boolean>;
184
+ readonly required: false;
185
+ readonly default: true;
186
+ };
187
+ readonly disabled: {
188
+ readonly type: PropType<boolean>;
189
+ readonly required: false;
190
+ readonly default: false;
191
+ };
192
+ readonly orientation: {
193
+ readonly type: PropType<DataOrientation>;
194
+ readonly required: false;
195
+ };
196
+ readonly dir: {
197
+ readonly type: PropType<Direction>;
198
+ readonly required: false;
199
+ };
200
+ readonly loop: {
201
+ readonly type: PropType<boolean>;
202
+ readonly required: false;
203
+ readonly default: true;
204
+ };
205
+ }, {
206
+ rovingFocus: Ref<boolean>;
207
+ dir: vue.ComputedRef<Direction>;
208
+ loop: Ref<boolean>;
209
+ forwardRef: (ref: Element | vue.ComponentPublicInstance | null) => void;
210
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
211
+ readonly as: {
212
+ readonly type: PropType<AsTag | Component>;
213
+ readonly required: false;
214
+ readonly default: "div";
215
+ };
216
+ readonly asChild: {
217
+ readonly type: PropType<boolean>;
218
+ readonly required: false;
219
+ readonly default: false;
220
+ };
221
+ readonly type: {
222
+ readonly type: PropType<TypeEnum>;
223
+ readonly required: false;
224
+ readonly default: "single";
225
+ };
226
+ readonly defaultValue: {
227
+ readonly type: PropType<string | string[]>;
228
+ readonly required: false;
229
+ };
230
+ readonly modelValue: {
231
+ readonly type: PropType<string | string[]>;
232
+ readonly required: false;
233
+ };
234
+ readonly rovingFocus: {
235
+ readonly type: PropType<boolean>;
236
+ readonly required: false;
237
+ readonly default: true;
238
+ };
239
+ readonly disabled: {
240
+ readonly type: PropType<boolean>;
241
+ readonly required: false;
242
+ readonly default: false;
243
+ };
244
+ readonly orientation: {
245
+ readonly type: PropType<DataOrientation>;
246
+ readonly required: false;
247
+ };
248
+ readonly dir: {
249
+ readonly type: PropType<Direction>;
250
+ readonly required: false;
251
+ };
252
+ readonly loop: {
253
+ readonly type: PropType<boolean>;
254
+ readonly required: false;
255
+ readonly default: true;
256
+ };
257
+ }>> & {
258
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
259
+ }, {
260
+ readonly as: AsTag | Component;
261
+ readonly asChild: boolean;
262
+ readonly disabled: boolean;
263
+ readonly type: TypeEnum;
264
+ readonly rovingFocus: boolean;
265
+ readonly loop: boolean;
266
+ }, {}>;
267
+
268
+ declare const destylerToggleGroupItemProps: {
269
+ readonly value: {
270
+ readonly type: PropType<string>;
271
+ readonly required: true;
272
+ };
273
+ readonly as: {
274
+ readonly type: PropType<_destyler_primitive.AsTag | vue.Component>;
275
+ readonly required: false;
276
+ readonly default: "button";
277
+ };
278
+ readonly asChild: {
279
+ readonly type: PropType<boolean>;
280
+ readonly required: false;
281
+ readonly default: false;
282
+ };
283
+ readonly defaultValue: {
284
+ readonly type: PropType<boolean>;
285
+ readonly required: false;
286
+ };
287
+ readonly pressed: {
288
+ readonly type: PropType<boolean>;
289
+ readonly required: false;
290
+ readonly default: undefined;
291
+ };
292
+ readonly disabled: {
293
+ readonly type: PropType<boolean>;
294
+ readonly required: false;
295
+ readonly default: false;
296
+ };
297
+ };
298
+ type DestylerToggleGroupItemProps = ExtractPublicPropTypes<typeof destylerToggleGroupItemProps>;
299
+ declare const DestylerToggleGroupItem: vue.DefineComponent<{
300
+ readonly value: {
301
+ readonly type: PropType<string>;
302
+ readonly required: true;
303
+ };
304
+ readonly as: {
305
+ readonly type: PropType<_destyler_primitive.AsTag | vue.Component>;
306
+ readonly required: false;
307
+ readonly default: "button";
308
+ };
309
+ readonly asChild: {
310
+ readonly type: PropType<boolean>;
311
+ readonly required: false;
312
+ readonly default: false;
313
+ };
314
+ readonly defaultValue: {
315
+ readonly type: PropType<boolean>;
316
+ readonly required: false;
317
+ };
318
+ readonly pressed: {
319
+ readonly type: PropType<boolean>;
320
+ readonly required: false;
321
+ readonly default: undefined;
322
+ };
323
+ readonly disabled: {
324
+ readonly type: PropType<boolean>;
325
+ readonly required: false;
326
+ readonly default: false;
327
+ };
328
+ }, {
329
+ rootContext: ToggleGroupRootContext;
330
+ disabled: vue.ComputedRef<boolean>;
331
+ pressed: vue.ComputedRef<boolean | undefined>;
332
+ forwardRef: (ref: Element | vue.ComponentPublicInstance | null) => void;
333
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
334
+ readonly value: {
335
+ readonly type: PropType<string>;
336
+ readonly required: true;
337
+ };
338
+ readonly as: {
339
+ readonly type: PropType<_destyler_primitive.AsTag | vue.Component>;
340
+ readonly required: false;
341
+ readonly default: "button";
342
+ };
343
+ readonly asChild: {
344
+ readonly type: PropType<boolean>;
345
+ readonly required: false;
346
+ readonly default: false;
347
+ };
348
+ readonly defaultValue: {
349
+ readonly type: PropType<boolean>;
350
+ readonly required: false;
351
+ };
352
+ readonly pressed: {
353
+ readonly type: PropType<boolean>;
354
+ readonly required: false;
355
+ readonly default: undefined;
356
+ };
357
+ readonly disabled: {
358
+ readonly type: PropType<boolean>;
359
+ readonly required: false;
360
+ readonly default: false;
361
+ };
362
+ }>>, {
363
+ readonly as: _destyler_primitive.AsTag | vue.Component;
364
+ readonly asChild: boolean;
365
+ readonly pressed: boolean;
366
+ readonly disabled: boolean;
367
+ }, {}>;
368
+
369
+ export { DestylerToggle, DestylerToggleGroupItem, type DestylerToggleGroupItemProps, DestylerToggleGroupRoot, type DestylerToggleGroupRootProps, type DestylerToggleProps };