@tamagui/checkbox 1.15.19 → 1.15.21

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.
@@ -144,60 +144,105 @@ const [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX
144
144
  const [CheckboxProvider, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);
145
145
  const Checkbox = withStaticProperties(
146
146
  CheckboxFrame.extractable(
147
- React.forwardRef(
148
- (props, forwardedRef) => {
149
- const {
150
- __scopeCheckbox,
151
- labelledBy: ariaLabelledby,
152
- name,
153
- checked: checkedProp,
154
- defaultChecked,
155
- required,
156
- scaleIcon = 1,
157
- scaleSize = 0.45,
158
- sizeAdjust = 0,
159
- disabled,
160
- value = "on",
161
- onCheckedChange,
162
- native,
163
- ...checkboxProps
164
- } = props;
165
- const [button, setButton] = React.useState(null);
166
- const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));
167
- const hasConsumerStoppedPropagationRef = React.useRef(false);
168
- const propsActive = useMediaPropsActive(props);
169
- const isFormControl = isWeb ? button ? Boolean(button.closest("form")) : true : false;
170
- const [checked = false, setChecked] = useControllableState({
171
- prop: checkedProp,
172
- defaultProp: defaultChecked,
173
- onChange: onCheckedChange
174
- });
175
- const adjustedSize = getVariableValue(
176
- stepTokenUpOrDown("size", propsActive.size, sizeAdjust)
177
- );
178
- const size = scaleSize ? Math.round(adjustedSize * scaleSize) : adjustedSize;
179
- const labelId = useLabelContext(button);
180
- const labelledBy = ariaLabelledby || labelId;
181
- if (process.env.TAMAGUI_TARGET === "native") {
182
- React.useEffect(() => {
183
- if (!props.id)
184
- return;
185
- return registerFocusable(props.id, {
186
- focusAndSelect: () => {
187
- setChecked((x) => !x);
188
- },
189
- focus: () => {
190
- }
191
- });
192
- }, [props.id, setChecked]);
193
- }
194
- return <CheckboxProvider
195
- scope={__scopeCheckbox}
196
- state={checked}
147
+ React.forwardRef(function Checkbox2(props, forwardedRef) {
148
+ const {
149
+ __scopeCheckbox,
150
+ labelledBy: ariaLabelledby,
151
+ name,
152
+ checked: checkedProp,
153
+ defaultChecked,
154
+ required,
155
+ scaleIcon = 1,
156
+ scaleSize = 0.45,
157
+ sizeAdjust = 0,
158
+ disabled,
159
+ value = "on",
160
+ onCheckedChange,
161
+ native,
162
+ ...checkboxProps
163
+ } = props;
164
+ const [button, setButton] = React.useState(null);
165
+ const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));
166
+ const hasConsumerStoppedPropagationRef = React.useRef(false);
167
+ const propsActive = useMediaPropsActive(props);
168
+ const isFormControl = isWeb ? button ? Boolean(button.closest("form")) : true : false;
169
+ const [checked = false, setChecked] = useControllableState({
170
+ prop: checkedProp,
171
+ defaultProp: defaultChecked,
172
+ onChange: onCheckedChange
173
+ });
174
+ const adjustedSize = getVariableValue(
175
+ stepTokenUpOrDown("size", propsActive.size, sizeAdjust)
176
+ );
177
+ const size = scaleSize ? Math.round(adjustedSize * scaleSize) : adjustedSize;
178
+ const labelId = useLabelContext(button);
179
+ const labelledBy = ariaLabelledby || labelId;
180
+ if (process.env.TAMAGUI_TARGET === "native") {
181
+ React.useEffect(() => {
182
+ if (!props.id)
183
+ return;
184
+ return registerFocusable(props.id, {
185
+ focusAndSelect: () => {
186
+ setChecked((x) => !x);
187
+ },
188
+ focus: () => {
189
+ }
190
+ });
191
+ }, [props.id, setChecked]);
192
+ }
193
+ return <CheckboxProvider
194
+ scope={__scopeCheckbox}
195
+ state={checked}
196
+ disabled={disabled}
197
+ size={size}
198
+ scaleIcon={scaleIcon}
199
+ >{isWeb && native ? <BubbleInput
200
+ control={button}
201
+ bubbles={!hasConsumerStoppedPropagationRef.current}
202
+ name={name}
203
+ value={value}
204
+ checked={checked}
205
+ required={required}
206
+ disabled={disabled}
207
+ id={props.id}
208
+ /> : <>
209
+ <CheckboxFrame
210
+ width={size}
211
+ height={size}
212
+ tag="button"
213
+ role="checkbox"
214
+ aria-labelledby={labelledBy}
215
+ aria-checked={isIndeterminate(checked) ? "mixed" : checked}
216
+ aria-required={required}
217
+ data-state={getState(checked)}
218
+ data-disabled={disabled ? "" : void 0}
197
219
  disabled={disabled}
198
- size={size}
199
- scaleIcon={scaleIcon}
200
- >{isWeb && native ? <BubbleInput
220
+ {...checkboxProps}
221
+ ref={composedRefs}
222
+ {...isWeb && {
223
+ type: "button",
224
+ value,
225
+ onKeyDown: composeEventHandlers(
226
+ props.onKeyDown,
227
+ (event) => {
228
+ if (event.key === "Enter")
229
+ event.preventDefault();
230
+ }
231
+ )
232
+ }}
233
+ onPress={composeEventHandlers(props.onPress, (event) => {
234
+ setChecked(
235
+ (prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked
236
+ );
237
+ if (isFormControl) {
238
+ hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();
239
+ if (!hasConsumerStoppedPropagationRef.current)
240
+ event.stopPropagation();
241
+ }
242
+ })}
243
+ />
244
+ {isWeb && isFormControl ? <BubbleInput
245
+ isHidden
201
246
  control={button}
202
247
  bubbles={!hasConsumerStoppedPropagationRef.current}
203
248
  name={name}
@@ -205,62 +250,14 @@ const Checkbox = withStaticProperties(
205
250
  checked={checked}
206
251
  required={required}
207
252
  disabled={disabled}
208
- id={props.id}
209
- /> : <>
210
- <CheckboxFrame
211
- width={size}
212
- height={size}
213
- tag="button"
214
- role="checkbox"
215
- aria-labelledby={labelledBy}
216
- aria-checked={isIndeterminate(checked) ? "mixed" : checked}
217
- aria-required={required}
218
- data-state={getState(checked)}
219
- data-disabled={disabled ? "" : void 0}
220
- disabled={disabled}
221
- {...checkboxProps}
222
- ref={composedRefs}
223
- {...isWeb && {
224
- type: "button",
225
- value,
226
- onKeyDown: composeEventHandlers(
227
- props.onKeyDown,
228
- (event) => {
229
- if (event.key === "Enter")
230
- event.preventDefault();
231
- }
232
- )
233
- }}
234
- onPress={composeEventHandlers(props.onPress, (event) => {
235
- setChecked(
236
- (prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked
237
- );
238
- if (isFormControl) {
239
- hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();
240
- if (!hasConsumerStoppedPropagationRef.current)
241
- event.stopPropagation();
242
- }
243
- })}
244
- />
245
- {isWeb && isFormControl ? <BubbleInput
246
- isHidden
247
- control={button}
248
- bubbles={!hasConsumerStoppedPropagationRef.current}
249
- name={name}
250
- value={value}
251
- checked={checked}
252
- required={required}
253
- disabled={disabled}
254
- /> : null}
255
- </>}</CheckboxProvider>;
256
- }
257
- )
253
+ /> : null}
254
+ </>}</CheckboxProvider>;
255
+ })
258
256
  ),
259
257
  {
260
258
  Indicator: CheckboxIndicator
261
259
  }
262
260
  );
263
- Checkbox.displayName = CHECKBOX_NAME;
264
261
  export {
265
262
  BubbleInput,
266
263
  Checkbox,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/Checkbox.tsx"],
4
- "mappings": "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",
5
- "names": []
4
+ "mappings": "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",
5
+ "names": ["Checkbox"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/checkbox",
3
- "version": "1.15.19",
3
+ "version": "1.15.21",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -20,15 +20,15 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@radix-ui/react-use-previous": "^0.1.1",
23
- "@tamagui/core": "1.15.19",
24
- "@tamagui/create-context": "1.15.19",
25
- "@tamagui/focusable": "1.15.19",
26
- "@tamagui/font-size": "1.15.19",
27
- "@tamagui/get-size": "1.15.19",
28
- "@tamagui/helpers-tamagui": "1.15.19",
29
- "@tamagui/label": "1.15.19",
30
- "@tamagui/stacks": "1.15.19",
31
- "@tamagui/use-controllable-state": "1.15.19"
23
+ "@tamagui/core": "1.15.21",
24
+ "@tamagui/create-context": "1.15.21",
25
+ "@tamagui/focusable": "1.15.21",
26
+ "@tamagui/font-size": "1.15.21",
27
+ "@tamagui/get-size": "1.15.21",
28
+ "@tamagui/helpers-tamagui": "1.15.21",
29
+ "@tamagui/label": "1.15.21",
30
+ "@tamagui/stacks": "1.15.21",
31
+ "@tamagui/use-controllable-state": "1.15.21"
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.15.19",
45
+ "@tamagui/build": "1.15.21",
46
46
  "react": "^18.2.0"
47
47
  },
48
48
  "publishConfig": {
package/src/Checkbox.tsx CHANGED
@@ -246,146 +246,144 @@ export interface CheckboxProps
246
246
 
247
247
  export const Checkbox = withStaticProperties(
248
248
  CheckboxFrame.extractable(
249
- React.forwardRef<HTMLButtonElement, CheckboxProps>(
250
- (props: ScopedProps<CheckboxProps>, forwardedRef) => {
251
- const {
252
- __scopeCheckbox,
253
- labelledBy: ariaLabelledby,
254
- name,
255
- checked: checkedProp,
256
- defaultChecked,
257
- required,
258
- scaleIcon = 1,
259
- scaleSize = 0.45,
260
- sizeAdjust = 0,
261
- disabled,
262
- value = 'on',
263
- onCheckedChange,
264
- native,
265
- ...checkboxProps
266
- } = props
267
- const [button, setButton] = React.useState<HTMLButtonElement | null>(null)
268
- const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node))
269
- const hasConsumerStoppedPropagationRef = React.useRef(false)
270
- const propsActive = useMediaPropsActive(props)
271
- // We set this to true by default so that events bubble to forms without JS (SSR)
272
- const isFormControl = isWeb
273
- ? button
274
- ? Boolean(button.closest('form'))
275
- : true
276
- : false
277
- const [checked = false, setChecked] = useControllableState({
278
- prop: checkedProp,
279
- defaultProp: defaultChecked!,
280
- onChange: onCheckedChange,
281
- })
282
-
283
- const adjustedSize = getVariableValue(
284
- stepTokenUpOrDown('size', propsActive.size, sizeAdjust)
285
- )
286
- const size = scaleSize ? Math.round(adjustedSize * scaleSize) : adjustedSize
287
-
288
- const labelId = useLabelContext(button)
289
- const labelledBy = ariaLabelledby || labelId
290
-
291
- if (process.env.TAMAGUI_TARGET === 'native') {
292
- // eslint-disable-next-line react-hooks/rules-of-hooks
293
- React.useEffect(() => {
294
- if (!props.id) return
295
- return registerFocusable(props.id, {
296
- focusAndSelect: () => {
297
- setChecked((x) => !x)
298
- },
299
- focus: () => {},
300
- })
301
- }, [props.id, setChecked])
302
- }
249
+ React.forwardRef<HTMLButtonElement, CheckboxProps>(function Checkbox(
250
+ props: ScopedProps<CheckboxProps>,
251
+ forwardedRef
252
+ ) {
253
+ const {
254
+ __scopeCheckbox,
255
+ labelledBy: ariaLabelledby,
256
+ name,
257
+ checked: checkedProp,
258
+ defaultChecked,
259
+ required,
260
+ scaleIcon = 1,
261
+ scaleSize = 0.45,
262
+ sizeAdjust = 0,
263
+ disabled,
264
+ value = 'on',
265
+ onCheckedChange,
266
+ native,
267
+ ...checkboxProps
268
+ } = props
269
+ const [button, setButton] = React.useState<HTMLButtonElement | null>(null)
270
+ const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node))
271
+ const hasConsumerStoppedPropagationRef = React.useRef(false)
272
+ const propsActive = useMediaPropsActive(props)
273
+ // We set this to true by default so that events bubble to forms without JS (SSR)
274
+ const isFormControl = isWeb
275
+ ? button
276
+ ? Boolean(button.closest('form'))
277
+ : true
278
+ : false
279
+ const [checked = false, setChecked] = useControllableState({
280
+ prop: checkedProp,
281
+ defaultProp: defaultChecked!,
282
+ onChange: onCheckedChange,
283
+ })
303
284
 
304
- return (
305
- <CheckboxProvider
306
- scope={__scopeCheckbox}
307
- state={checked}
308
- disabled={disabled}
309
- size={size}
310
- scaleIcon={scaleIcon}
311
- >
312
- {isWeb && native ? (
313
- <BubbleInput
314
- control={button}
315
- bubbles={!hasConsumerStoppedPropagationRef.current}
316
- name={name}
317
- value={value}
318
- checked={checked}
319
- required={required}
285
+ const adjustedSize = getVariableValue(
286
+ stepTokenUpOrDown('size', propsActive.size, sizeAdjust)
287
+ )
288
+ const size = scaleSize ? Math.round(adjustedSize * scaleSize) : adjustedSize
289
+
290
+ const labelId = useLabelContext(button)
291
+ const labelledBy = ariaLabelledby || labelId
292
+
293
+ if (process.env.TAMAGUI_TARGET === 'native') {
294
+ // eslint-disable-next-line react-hooks/rules-of-hooks
295
+ React.useEffect(() => {
296
+ if (!props.id) return
297
+ return registerFocusable(props.id, {
298
+ focusAndSelect: () => {
299
+ setChecked((x) => !x)
300
+ },
301
+ focus: () => {},
302
+ })
303
+ }, [props.id, setChecked])
304
+ }
305
+
306
+ return (
307
+ <CheckboxProvider
308
+ scope={__scopeCheckbox}
309
+ state={checked}
310
+ disabled={disabled}
311
+ size={size}
312
+ scaleIcon={scaleIcon}
313
+ >
314
+ {isWeb && native ? (
315
+ <BubbleInput
316
+ control={button}
317
+ bubbles={!hasConsumerStoppedPropagationRef.current}
318
+ name={name}
319
+ value={value}
320
+ checked={checked}
321
+ required={required}
322
+ disabled={disabled}
323
+ id={props.id}
324
+ />
325
+ ) : (
326
+ <>
327
+ <CheckboxFrame
328
+ width={size}
329
+ height={size}
330
+ tag="button"
331
+ role="checkbox"
332
+ aria-labelledby={labelledBy}
333
+ aria-checked={isIndeterminate(checked) ? 'mixed' : checked}
334
+ aria-required={required}
335
+ data-state={getState(checked)}
336
+ data-disabled={disabled ? '' : undefined}
320
337
  disabled={disabled}
321
- id={props.id}
338
+ {...checkboxProps}
339
+ ref={composedRefs}
340
+ {...(isWeb && {
341
+ type: 'button',
342
+ value,
343
+ onKeyDown: composeEventHandlers(
344
+ (props as React.HTMLProps<HTMLButtonElement>).onKeyDown,
345
+ (event) => {
346
+ // According to WAI ARIA, Checkboxes don't activate on enter keypress
347
+ if (event.key === 'Enter') event.preventDefault()
348
+ }
349
+ ),
350
+ })}
351
+ onPress={composeEventHandlers(props.onPress as any, (event) => {
352
+ setChecked((prevChecked) =>
353
+ isIndeterminate(prevChecked) ? true : !prevChecked
354
+ )
355
+ if (isFormControl) {
356
+ hasConsumerStoppedPropagationRef.current =
357
+ event.isPropagationStopped()
358
+ // if checkbox is in a form, stop propagation from the button so that we only propagate
359
+ // one click event (from the input). We propagate changes from an input so that native
360
+ // form validation works and form events reflect checkbox updates.
361
+ if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation()
362
+ }
363
+ })}
322
364
  />
323
- ) : (
324
- <>
325
- <CheckboxFrame
326
- width={size}
327
- height={size}
328
- tag="button"
329
- role="checkbox"
330
- aria-labelledby={labelledBy}
331
- aria-checked={isIndeterminate(checked) ? 'mixed' : checked}
332
- aria-required={required}
333
- data-state={getState(checked)}
334
- data-disabled={disabled ? '' : undefined}
365
+
366
+ {isWeb && isFormControl ? (
367
+ <BubbleInput
368
+ isHidden
369
+ control={button}
370
+ bubbles={!hasConsumerStoppedPropagationRef.current}
371
+ name={name}
372
+ value={value}
373
+ checked={checked}
374
+ required={required}
335
375
  disabled={disabled}
336
- {...checkboxProps}
337
- ref={composedRefs}
338
- {...(isWeb && {
339
- type: 'button',
340
- value,
341
- onKeyDown: composeEventHandlers(
342
- (props as React.HTMLProps<HTMLButtonElement>).onKeyDown,
343
- (event) => {
344
- // According to WAI ARIA, Checkboxes don't activate on enter keypress
345
- if (event.key === 'Enter') event.preventDefault()
346
- }
347
- ),
348
- })}
349
- onPress={composeEventHandlers(props.onPress as any, (event) => {
350
- setChecked((prevChecked) =>
351
- isIndeterminate(prevChecked) ? true : !prevChecked
352
- )
353
- if (isFormControl) {
354
- hasConsumerStoppedPropagationRef.current =
355
- event.isPropagationStopped()
356
- // if checkbox is in a form, stop propagation from the button so that we only propagate
357
- // one click event (from the input). We propagate changes from an input so that native
358
- // form validation works and form events reflect checkbox updates.
359
- if (!hasConsumerStoppedPropagationRef.current)
360
- event.stopPropagation()
361
- }
362
- })}
363
376
  />
364
-
365
- {isWeb && isFormControl ? (
366
- <BubbleInput
367
- isHidden
368
- control={button}
369
- bubbles={!hasConsumerStoppedPropagationRef.current}
370
- name={name}
371
- value={value}
372
- checked={checked}
373
- required={required}
374
- disabled={disabled}
375
- />
376
- ) : null}
377
- </>
378
- )}
379
- </CheckboxProvider>
380
- )
381
- }
382
- )
377
+ ) : null}
378
+ </>
379
+ )}
380
+ </CheckboxProvider>
381
+ )
382
+ })
383
383
  ),
384
384
  {
385
385
  Indicator: CheckboxIndicator,
386
386
  }
387
387
  )
388
388
 
389
- Checkbox.displayName = CHECKBOX_NAME
390
-
391
389
  export { createCheckboxScope }