@tamagui/switch 1.26.0 → 1.26.1

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": "@tamagui/switch",
3
- "version": "1.26.0",
3
+ "version": "1.26.1",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -32,21 +32,21 @@
32
32
  },
33
33
  "dependencies": {
34
34
  "@radix-ui/react-use-previous": "^0.1.1",
35
- "@tamagui/compose-refs": "1.26.0",
36
- "@tamagui/core": "1.26.0",
37
- "@tamagui/create-context": "1.26.0",
38
- "@tamagui/focusable": "1.26.0",
39
- "@tamagui/get-size": "1.26.0",
40
- "@tamagui/label": "1.26.0",
41
- "@tamagui/stacks": "1.26.0",
42
- "@tamagui/use-controllable-state": "1.26.0"
35
+ "@tamagui/compose-refs": "1.26.1",
36
+ "@tamagui/core": "1.26.1",
37
+ "@tamagui/create-context": "1.26.1",
38
+ "@tamagui/focusable": "1.26.1",
39
+ "@tamagui/get-size": "1.26.1",
40
+ "@tamagui/label": "1.26.1",
41
+ "@tamagui/stacks": "1.26.1",
42
+ "@tamagui/use-controllable-state": "1.26.1"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "react": "*",
46
46
  "react-native": "*"
47
47
  },
48
48
  "devDependencies": {
49
- "@tamagui/build": "1.26.0",
49
+ "@tamagui/build": "1.26.1",
50
50
  "react": "^18.2.0",
51
51
  "react-native": "^0.71.7"
52
52
  },
@@ -1,265 +0,0 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import { usePrevious } from "@radix-ui/react-use-previous";
3
- import { useComposedRefs } from "@tamagui/compose-refs";
4
- import {
5
- getVariableValue,
6
- isWeb,
7
- styled,
8
- withStaticProperties
9
- } from "@tamagui/core";
10
- import { createContextScope } from "@tamagui/create-context";
11
- import { registerFocusable } from "@tamagui/focusable";
12
- import { getSize } from "@tamagui/get-size";
13
- import { useLabelContext } from "@tamagui/label";
14
- import { ThemeableStack, XStack } from "@tamagui/stacks";
15
- import { useControllableState } from "@tamagui/use-controllable-state";
16
- import * as React from "react";
17
- const SWITCH_NAME = "Switch";
18
- const getSwitchHeight = (val) => Math.round(getVariableValue(getSize(val)) * 0.65);
19
- const getSwitchWidth = (val) => getSwitchHeight(val) * 2;
20
- const scopeContexts = createContextScope(SWITCH_NAME);
21
- const [createSwitchContext] = scopeContexts;
22
- const createSwitchScope = scopeContexts[1];
23
- const [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);
24
- const THUMB_NAME = "SwitchThumb";
25
- const SwitchThumbFrame = styled(ThemeableStack, {
26
- name: "SwitchThumb",
27
- variants: {
28
- unstyled: {
29
- false: {
30
- size: "$true",
31
- backgroundColor: "$background",
32
- borderRadius: 1e3
33
- }
34
- },
35
- size: {
36
- "...size": (val) => {
37
- const size = getSwitchHeight(val);
38
- return {
39
- height: size,
40
- width: size
41
- };
42
- }
43
- }
44
- },
45
- defaultVariants: {
46
- unstyled: false
47
- }
48
- });
49
- const SwitchThumb = SwitchThumbFrame.extractable(
50
- React.forwardRef(
51
- (props, forwardedRef) => {
52
- const { __scopeSwitch, size: sizeProp, ...thumbProps } = props;
53
- const {
54
- size: sizeContext,
55
- disabled,
56
- checked,
57
- unstyled
58
- } = useSwitchContext(THUMB_NAME, __scopeSwitch);
59
- const size = sizeProp ?? sizeContext;
60
- return /* @__PURE__ */ jsx(
61
- SwitchThumbFrame,
62
- {
63
- unstyled,
64
- theme: checked ? "active" : null,
65
- size,
66
- "data-state": getState(checked),
67
- "data-disabled": disabled ? "" : void 0,
68
- ...thumbProps,
69
- x: checked ? getVariableValue(getSwitchWidth(size)) - getVariableValue(getSwitchHeight(size)) : 0,
70
- ref: forwardedRef
71
- }
72
- );
73
- }
74
- )
75
- );
76
- SwitchThumb.displayName = THUMB_NAME;
77
- const SwitchFrame = styled(XStack, {
78
- name: SWITCH_NAME,
79
- tag: "button",
80
- variants: {
81
- unstyled: {
82
- false: {
83
- size: "$true",
84
- borderRadius: 1e3,
85
- borderWidth: 2,
86
- borderColor: "transparent",
87
- backgroundColor: "$background",
88
- focusStyle: {
89
- borderColor: "$borderColorFocus",
90
- outlineColor: "$borderColorFocus",
91
- outlineStyle: "solid",
92
- outlineWidth: 1
93
- }
94
- }
95
- },
96
- size: {
97
- "...size": (val) => {
98
- const height = getSwitchHeight(val) + 4;
99
- const width = getSwitchWidth(val) + 4;
100
- return {
101
- height,
102
- minHeight: height,
103
- width
104
- };
105
- }
106
- }
107
- },
108
- defaultVariants: {
109
- unstyled: false
110
- }
111
- });
112
- const Switch = withStaticProperties(
113
- SwitchFrame.extractable(
114
- React.forwardRef(
115
- (props, forwardedRef) => {
116
- const {
117
- __scopeSwitch,
118
- labeledBy: ariaLabelledby,
119
- name,
120
- checked: checkedProp,
121
- defaultChecked,
122
- required,
123
- disabled,
124
- value = "on",
125
- onCheckedChange,
126
- size = "$true",
127
- unstyled = false,
128
- ...switchProps
129
- } = props;
130
- const [button, setButton] = React.useState(null);
131
- const composedRefs = useComposedRefs(
132
- forwardedRef,
133
- (node) => setButton(node)
134
- );
135
- const labelId = useLabelContext(button);
136
- const labelledBy = ariaLabelledby || labelId;
137
- const hasConsumerStoppedPropagationRef = React.useRef(false);
138
- const isFormControl = isWeb ? button ? Boolean(button.closest("form")) : true : false;
139
- const [checked = false, setChecked] = useControllableState({
140
- prop: checkedProp,
141
- defaultProp: defaultChecked || false,
142
- onChange: onCheckedChange,
143
- transition: true
144
- });
145
- if (!isWeb) {
146
- React.useEffect(() => {
147
- if (!props.id)
148
- return;
149
- return registerFocusable(props.id, {
150
- focus: () => {
151
- setChecked((x) => !x);
152
- }
153
- });
154
- }, [props.id, setChecked]);
155
- }
156
- return /* @__PURE__ */ jsxs(
157
- SwitchProvider,
158
- {
159
- scope: __scopeSwitch,
160
- checked,
161
- disabled,
162
- size,
163
- unstyled,
164
- children: [
165
- /* @__PURE__ */ jsx(
166
- SwitchFrame,
167
- {
168
- unstyled,
169
- size,
170
- theme: checked ? "active" : null,
171
- role: "switch",
172
- "aria-checked": checked,
173
- "aria-labelledby": labelledBy,
174
- "aria-required": required,
175
- "data-state": getState(checked),
176
- "data-disabled": disabled ? "" : void 0,
177
- disabled,
178
- tabIndex: disabled ? void 0 : 0,
179
- value,
180
- ...switchProps,
181
- ref: composedRefs,
182
- onPress: (event) => {
183
- var _a;
184
- (_a = props.onPress) == null ? void 0 : _a.call(props, event);
185
- setChecked((prevChecked) => !prevChecked);
186
- if (isWeb && isFormControl) {
187
- hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();
188
- if (!hasConsumerStoppedPropagationRef.current)
189
- event.stopPropagation();
190
- }
191
- }
192
- }
193
- ),
194
- isWeb && isFormControl && /* @__PURE__ */ jsx(
195
- BubbleInput,
196
- {
197
- control: button,
198
- bubbles: !hasConsumerStoppedPropagationRef.current,
199
- name,
200
- value,
201
- checked,
202
- required,
203
- disabled,
204
- style: { transform: "translateX(-100%)" }
205
- }
206
- )
207
- ]
208
- }
209
- );
210
- }
211
- )
212
- ),
213
- {
214
- Thumb: SwitchThumb
215
- }
216
- );
217
- const BubbleInput = (props) => {
218
- const { control, checked, bubbles = true, ...inputProps } = props;
219
- const ref = React.useRef(null);
220
- const prevChecked = usePrevious(checked);
221
- React.useEffect(() => {
222
- const input = ref.current;
223
- const inputProto = window.HTMLInputElement.prototype;
224
- const descriptor = Object.getOwnPropertyDescriptor(
225
- inputProto,
226
- "checked"
227
- );
228
- const setChecked = descriptor.set;
229
- if (prevChecked !== checked && setChecked) {
230
- const event = new Event("click", { bubbles });
231
- setChecked.call(input, checked);
232
- input.dispatchEvent(event);
233
- }
234
- }, [prevChecked, checked, bubbles]);
235
- return /* @__PURE__ */ jsx(
236
- "input",
237
- {
238
- type: "checkbox",
239
- "aria-hidden": true,
240
- defaultChecked: checked,
241
- ...inputProps,
242
- tabIndex: -1,
243
- ref,
244
- style: {
245
- ...props.style,
246
- // ...controlSize,
247
- position: "absolute",
248
- pointerEvents: "none",
249
- opacity: 0,
250
- margin: 0
251
- }
252
- }
253
- );
254
- };
255
- function getState(checked) {
256
- return checked ? "checked" : "unchecked";
257
- }
258
- export {
259
- Switch,
260
- SwitchFrame,
261
- SwitchThumb,
262
- SwitchThumbFrame,
263
- createSwitchScope
264
- };
265
- //# sourceMappingURL=Switch.mjs.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/Switch.tsx"],
4
- "mappings": "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",
5
- "names": []
6
- }
@@ -1,2 +0,0 @@
1
- export * from "./Switch";
2
- //# sourceMappingURL=index.mjs.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/index.ts"],
4
- "mappings": "AAAA,cAAc;",
5
- "names": []
6
- }