@tamagui/switch 1.46.2 → 1.47.0

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