@tamagui/checkbox 1.61.2 → 1.62.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.
@@ -0,0 +1,227 @@
1
+ import {
2
+ composeEventHandlers,
3
+ createStyledContext,
4
+ getVariableValue,
5
+ isWeb,
6
+ styled,
7
+ useComposedRefs,
8
+ useProps,
9
+ useTheme,
10
+ withStaticProperties
11
+ } from "@tamagui/core";
12
+ import { createContextScope } from "@tamagui/create-context";
13
+ import { registerFocusable } from "@tamagui/focusable";
14
+ import { getFontSize } from "@tamagui/font-size";
15
+ import { getSize } from "@tamagui/get-token";
16
+ import { useGetThemedIcon } from "@tamagui/helpers-tamagui";
17
+ import { useLabelContext } from "@tamagui/label";
18
+ import { ThemeableStack } from "@tamagui/stacks";
19
+ import { useControllableState } from "@tamagui/use-controllable-state";
20
+ import { usePrevious } from "@tamagui/use-previous";
21
+ import * as React from "react";
22
+ const CheckboxStyledContext = createStyledContext({
23
+ size: "$true",
24
+ scaleIcon: 1
25
+ });
26
+ function isIndeterminate(checked) {
27
+ return checked === "indeterminate";
28
+ }
29
+ function getState(checked) {
30
+ return isIndeterminate(checked) ? "indeterminate" : checked ? "checked" : "unchecked";
31
+ }
32
+ const BubbleInput = (props) => {
33
+ const { checked, bubbles = !0, control, isHidden, ...inputProps } = props, ref = React.useRef(null), prevChecked = usePrevious(checked);
34
+ return React.useEffect(() => {
35
+ const input = ref.current, inputProto = window.HTMLInputElement.prototype, setChecked = Object.getOwnPropertyDescriptor(
36
+ inputProto,
37
+ "checked"
38
+ ).set;
39
+ if (prevChecked !== checked && setChecked) {
40
+ const event = new Event("click", { bubbles });
41
+ input.indeterminate = isIndeterminate(checked), setChecked.call(input, isIndeterminate(checked) ? !1 : checked), input.dispatchEvent(event);
42
+ }
43
+ }, [prevChecked, checked, bubbles]), <input
44
+ type="checkbox"
45
+ defaultChecked={isIndeterminate(checked) ? !1 : checked}
46
+ {...inputProps}
47
+ tabIndex={-1}
48
+ ref={ref}
49
+ aria-hidden={isHidden}
50
+ style={{
51
+ ...isHidden ? {
52
+ // ...controlSize,
53
+ position: "absolute",
54
+ pointerEvents: "none",
55
+ opacity: 0,
56
+ margin: 0
57
+ } : {
58
+ appearance: "auto",
59
+ accentColor: "var(--color6)"
60
+ },
61
+ ...props.style
62
+ }}
63
+ />;
64
+ }, INDICATOR_NAME = "CheckboxIndicator", CheckboxIndicatorFrame = styled(ThemeableStack, {
65
+ // use Checkbox for easier themes
66
+ name: INDICATOR_NAME,
67
+ context: CheckboxStyledContext
68
+ }), CheckboxIndicator = CheckboxIndicatorFrame.extractable(
69
+ React.forwardRef(
70
+ (props, forwardedRef) => {
71
+ const {
72
+ __scopeCheckbox,
73
+ children: childrenProp,
74
+ forceMount,
75
+ disablePassStyles,
76
+ ...indicatorProps
77
+ } = props;
78
+ process.env.NODE_ENV === "development" && !childrenProp && console.warn(
79
+ "Warning: You created a Checkbox.Indicator without passing an child prop for it to use as an icon."
80
+ );
81
+ const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox), styledContext = React.useContext(CheckboxStyledContext), iconSize = (typeof styledContext.size == "number" ? styledContext.size * 0.65 : getFontSize(styledContext.size)) * styledContext.scaleIcon, theme = useTheme(), getThemedIcon = useGetThemedIcon({ size: iconSize, color: theme.color }), children = React.Children.toArray(childrenProp).map((child) => disablePassStyles || !React.isValidElement(child) ? child : getThemedIcon(child));
82
+ return forceMount || isIndeterminate(context.state) || context.state === !0 ? <CheckboxIndicatorFrame
83
+ data-state={getState(context.state)}
84
+ data-disabled={context.disabled ? "" : void 0}
85
+ pointerEvents="none"
86
+ {...indicatorProps}
87
+ ref={forwardedRef}
88
+ >{children}</CheckboxIndicatorFrame> : null;
89
+ }
90
+ )
91
+ );
92
+ CheckboxIndicator.displayName = INDICATOR_NAME;
93
+ const CHECKBOX_NAME = "Checkbox", CheckboxFrame = styled(ThemeableStack, {
94
+ name: CHECKBOX_NAME,
95
+ tag: "button",
96
+ context: CheckboxStyledContext,
97
+ variants: {
98
+ unstyled: {
99
+ false: {
100
+ size: "$true",
101
+ backgroundColor: "$background",
102
+ alignItems: "center",
103
+ justifyContent: "center",
104
+ pressTheme: !0,
105
+ focusable: !0,
106
+ borderWidth: 1,
107
+ borderColor: "$borderColor",
108
+ hoverStyle: {
109
+ borderColor: "$borderColorHover"
110
+ },
111
+ focusStyle: {
112
+ borderColor: "$borderColorFocus"
113
+ }
114
+ }
115
+ },
116
+ size: {
117
+ "...size": (val, { tokens }) => ({
118
+ borderRadius: getVariableValue(getSize(val)) / 8
119
+ })
120
+ }
121
+ },
122
+ defaultVariants: {
123
+ unstyled: !1
124
+ }
125
+ }), [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME), [CheckboxProvider, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME), CheckboxComponent = CheckboxFrame.extractable(
126
+ React.forwardRef(function(props, forwardedRef) {
127
+ const {
128
+ __scopeCheckbox,
129
+ labelledBy: ariaLabelledby,
130
+ name,
131
+ checked: checkedProp,
132
+ defaultChecked,
133
+ required,
134
+ scaleSize = 0.45,
135
+ sizeAdjust = 0,
136
+ disabled,
137
+ value = "on",
138
+ onCheckedChange,
139
+ native,
140
+ scaleIcon,
141
+ ...checkboxProps
142
+ } = props, [button, setButton] = React.useState(null), composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node)), hasConsumerStoppedPropagationRef = React.useRef(!1), propsActive = useProps(props), isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1, [checked = !1, setChecked] = useControllableState({
143
+ prop: checkedProp,
144
+ defaultProp: defaultChecked,
145
+ onChange: onCheckedChange
146
+ }), styledContext = React.useContext(CheckboxStyledContext), adjustedSize = getVariableValue(
147
+ getSize(propsActive.size ?? styledContext?.size ?? "$true", {
148
+ shift: sizeAdjust
149
+ })
150
+ ), size = scaleSize ? Math.round(adjustedSize * scaleSize) : adjustedSize, labelId = useLabelContext(button), labelledBy = ariaLabelledby || labelId;
151
+ return React.useEffect(() => {
152
+ if (props.id)
153
+ return registerFocusable(props.id, {
154
+ focusAndSelect: () => {
155
+ setChecked((x) => !x);
156
+ },
157
+ focus: () => {
158
+ }
159
+ });
160
+ }, [props.id, setChecked]), <CheckboxProvider scope={__scopeCheckbox} state={checked} disabled={disabled}>{isWeb && native ? <BubbleInput
161
+ control={button}
162
+ bubbles={!hasConsumerStoppedPropagationRef.current}
163
+ name={name}
164
+ value={value}
165
+ checked={checked}
166
+ required={required}
167
+ disabled={disabled}
168
+ id={props.id}
169
+ /> : <>
170
+ <CheckboxFrame
171
+ width={size}
172
+ height={size}
173
+ tag="button"
174
+ role="checkbox"
175
+ aria-labelledby={labelledBy}
176
+ aria-checked={isIndeterminate(checked) ? "mixed" : checked}
177
+ aria-required={required}
178
+ data-state={getState(checked)}
179
+ data-disabled={disabled ? "" : void 0}
180
+ disabled={disabled}
181
+ {...checkboxProps}
182
+ ref={composedRefs}
183
+ {...isWeb && {
184
+ type: "button",
185
+ value,
186
+ onKeyDown: composeEventHandlers(
187
+ props.onKeyDown,
188
+ (event) => {
189
+ event.key === "Enter" && event.preventDefault();
190
+ }
191
+ )
192
+ }}
193
+ onPress={composeEventHandlers(props.onPress, (event) => {
194
+ setChecked(
195
+ (prevChecked) => isIndeterminate(prevChecked) ? !0 : !prevChecked
196
+ ), isFormControl && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
197
+ })}
198
+ ><CheckboxStyledContext.Provider
199
+ size={propsActive.size ?? styledContext?.size ?? "$true"}
200
+ scaleIcon={scaleIcon ?? styledContext?.scaleIcon ?? 1}
201
+ >{propsActive.children}</CheckboxStyledContext.Provider></CheckboxFrame>
202
+ {isWeb && isFormControl ? <BubbleInput
203
+ isHidden
204
+ control={button}
205
+ bubbles={!hasConsumerStoppedPropagationRef.current}
206
+ name={name}
207
+ value={value}
208
+ checked={checked}
209
+ required={required}
210
+ disabled={disabled}
211
+ /> : null}
212
+ </>}</CheckboxProvider>;
213
+ })
214
+ ), Checkbox2 = withStaticProperties(CheckboxComponent, {
215
+ Indicator: CheckboxIndicator,
216
+ Props: CheckboxStyledContext.Provider
217
+ });
218
+ export {
219
+ BubbleInput,
220
+ Checkbox2 as Checkbox,
221
+ CheckboxFrame,
222
+ CheckboxStyledContext,
223
+ createCheckboxScope,
224
+ getState,
225
+ isIndeterminate
226
+ };
227
+ //# sourceMappingURL=Checkbox.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Checkbox.tsx"],
4
+ "mappings": "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",
5
+ "names": ["Checkbox"]
6
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./Checkbox";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "mappings": "AAAA,cAAc;",
5
+ "names": []
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/checkbox",
3
- "version": "1.61.2",
3
+ "version": "1.62.0",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -19,16 +19,16 @@
19
19
  "watch": "tamagui-build --watch"
20
20
  },
21
21
  "dependencies": {
22
- "@tamagui/core": "1.61.2",
23
- "@tamagui/create-context": "1.61.2",
24
- "@tamagui/focusable": "1.61.2",
25
- "@tamagui/font-size": "1.61.2",
26
- "@tamagui/get-token": "1.61.2",
27
- "@tamagui/helpers-tamagui": "1.61.2",
28
- "@tamagui/label": "1.61.2",
29
- "@tamagui/stacks": "1.61.2",
30
- "@tamagui/use-controllable-state": "1.61.2",
31
- "@tamagui/use-previous": "1.61.2"
22
+ "@tamagui/core": "1.62.0",
23
+ "@tamagui/create-context": "1.62.0",
24
+ "@tamagui/focusable": "1.62.0",
25
+ "@tamagui/font-size": "1.62.0",
26
+ "@tamagui/get-token": "1.62.0",
27
+ "@tamagui/helpers-tamagui": "1.62.0",
28
+ "@tamagui/label": "1.62.0",
29
+ "@tamagui/stacks": "1.62.0",
30
+ "@tamagui/use-controllable-state": "1.62.0",
31
+ "@tamagui/use-previous": "1.62.0"
32
32
  },
33
33
  "exports": {
34
34
  "./package.json": "./package.json",
@@ -42,7 +42,7 @@
42
42
  "react": "*"
43
43
  },
44
44
  "devDependencies": {
45
- "@tamagui/build": "1.61.2",
45
+ "@tamagui/build": "1.62.0",
46
46
  "react": "^18.2.0"
47
47
  },
48
48
  "publishConfig": {