@tamagui/checkbox 1.74.8 → 1.74.9

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