expo-checkbox
Advanced tools
Comparing version 0.0.1-canary-20240305-e60019e to 0.0.1-canary-20240308-6715875
@@ -1,3 +0,3 @@ | ||
import { SyntheticEvent } from 'react'; | ||
import { ColorValue, NativeSyntheticEvent, ViewProps } from 'react-native'; | ||
import type { SyntheticEvent } from 'react'; | ||
import type { ColorValue, NativeSyntheticEvent, ViewProps } from 'react-native'; | ||
export type CheckboxEvent = { | ||
@@ -4,0 +4,0 @@ /** |
@@ -1,7 +0,3 @@ | ||
import React from 'react'; | ||
import { CheckboxProps } from './Checkbox.types'; | ||
export default class ExpoCheckbox extends React.PureComponent<CheckboxProps> { | ||
private handleChange; | ||
render(): JSX.Element; | ||
} | ||
import type { CheckboxProps } from './Checkbox.types'; | ||
export default function ExpoCheckbox({ color, disabled, onChange, onValueChange, style, value, ...other }: CheckboxProps): JSX.Element; | ||
//# sourceMappingURL=ExpoCheckbox.d.ts.map |
// Copyright © 2024 650 Industries. | ||
'use client'; | ||
import React from 'react'; | ||
import { StyleSheet, Image, Pressable, Platform } from 'react-native'; | ||
const checkmarkBase64 = 'data:image/png;base64,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'; | ||
// TODO: Class components are not supported with React Server Components. | ||
export default class ExpoCheckbox extends React.PureComponent { | ||
handleChange = () => { | ||
this.props.onValueChange?.(!this.props.value); | ||
export default function ExpoCheckbox({ color, disabled, onChange, onValueChange, style, value, ...other }) { | ||
const handleChange = () => { | ||
onValueChange?.(!value); | ||
}; | ||
render() { | ||
const { color, disabled, onChange, onValueChange, style, value, ...other } = this.props; | ||
return (<Pressable {...other} disabled={disabled} | ||
// Announces "checked" status and "checkbox" as the focused element | ||
accessibilityRole="checkbox" accessibilityState={{ disabled, checked: value }} style={[ | ||
styles.root, | ||
style, | ||
value && styles.checked, | ||
!!color && { backgroundColor: value ? color : undefined, borderColor: color }, | ||
disabled && styles.disabled, | ||
value && disabled && styles.checkedAndDisabled, | ||
]} onPress={this.handleChange}> | ||
{value && (<Image source={{ | ||
uri: checkmarkBase64, | ||
}} style={StyleSheet.absoluteFill}/>)} | ||
</Pressable>); | ||
} | ||
return (<Pressable {...other} disabled={disabled} | ||
// Announces "checked" status and "checkbox" as the focused element | ||
accessibilityRole="checkbox" accessibilityState={{ disabled, checked: value }} style={[ | ||
styles.root, | ||
style, | ||
value && styles.checked, | ||
!!color && { backgroundColor: value ? color : undefined, borderColor: color }, | ||
disabled && styles.disabled, | ||
value && disabled && styles.checkedAndDisabled, | ||
]} onPress={handleChange}> | ||
{value && (<Image source={{ | ||
uri: checkmarkBase64, | ||
}} style={StyleSheet.absoluteFill}/>)} | ||
</Pressable>); | ||
} | ||
@@ -29,0 +24,0 @@ const defaultEnabledColor = Platform.select({ |
@@ -12,8 +12,12 @@ /** | ||
import React from 'react'; | ||
import { CheckboxProps } from './Checkbox.types'; | ||
export default class ExpoCheckbox extends React.PureComponent<CheckboxProps> { | ||
private handleChange; | ||
render(): JSX.Element; | ||
} | ||
import type { CheckboxEvent } from './Checkbox.types'; | ||
declare const ExpoCheckbox: React.ForwardRefExoticComponent<import("react-native").ViewProps & { | ||
value?: boolean | undefined; | ||
disabled?: boolean | undefined; | ||
color?: import("react-native").ColorValue | undefined; | ||
onChange?: ((event: import("react-native").NativeSyntheticEvent<CheckboxEvent> | React.SyntheticEvent<HTMLInputElement, CheckboxEvent>) => void) | undefined; | ||
onValueChange?: ((value: boolean) => void) | undefined; | ||
} & React.RefAttributes<unknown>>; | ||
export default ExpoCheckbox; | ||
export declare const name = "ExpoCheckbox"; | ||
//# sourceMappingURL=ExpoCheckbox.web.d.ts.map |
@@ -11,39 +11,34 @@ /** | ||
*/ | ||
'use client'; | ||
import React from 'react'; | ||
// @ts-ignore | ||
import { StyleSheet, View, unstable_createElement as createElement } from 'react-native'; | ||
// TODO: Class components are not supported with React Server Components. | ||
export default class ExpoCheckbox extends React.PureComponent { | ||
handleChange = (event) => { | ||
import { StyleSheet, View, unstable_createElement as createElement } from 'react-native-web'; | ||
const ExpoCheckbox = React.forwardRef(({ color, disabled, onChange, onValueChange, style, value, ...other }, ref) => { | ||
const handleChange = (event) => { | ||
const value = event.nativeEvent.target.checked; | ||
event.nativeEvent.value = value; | ||
this.props.onChange?.(event); | ||
this.props.onValueChange?.(value); | ||
onChange?.(event); | ||
onValueChange?.(value); | ||
}; | ||
render() { | ||
const { color, disabled, onChange, onValueChange, style, value, ...other } = this.props; | ||
const fakeControl = (<View style={[ | ||
styles.fakeControl, | ||
value && styles.fakeControlChecked, | ||
// custom color | ||
!!color && { backgroundColor: value ? color : undefined, borderColor: color }, | ||
disabled && styles.fakeControlDisabled, | ||
value && disabled && styles.fakeControlCheckedAndDisabled, | ||
]}/>); | ||
const nativeControl = createElement('input', { | ||
accessibilityChecked: value, | ||
accessibilityDisabled: disabled, | ||
checked: value, | ||
disabled, | ||
onChange: this.handleChange, | ||
style: [styles.nativeControl, styles.cursorInherit], | ||
type: 'checkbox', | ||
}); | ||
return (<View {...other} style={[styles.root, style, disabled && styles.cursorDefault]}> | ||
const fakeControl = (<View style={[ | ||
styles.fakeControl, | ||
value && styles.fakeControlChecked, | ||
// custom color | ||
!!color && { backgroundColor: value ? color : undefined, borderColor: color }, | ||
disabled && styles.fakeControlDisabled, | ||
value && disabled && styles.fakeControlCheckedAndDisabled, | ||
]}/>); | ||
const nativeControl = createElement('input', { | ||
'aria-checked': value, | ||
'aria-disabled': disabled, | ||
checked: value, | ||
disabled, | ||
onChange: handleChange, | ||
style: [styles.nativeControl, styles.cursorInherit], | ||
type: 'checkbox', | ||
}); | ||
return (<View ref={ref} {...other} style={[styles.root, style, disabled && styles.cursorDefault]}> | ||
{nativeControl} | ||
{fakeControl} | ||
</View>); | ||
} | ||
} | ||
}); | ||
export default ExpoCheckbox; | ||
const styles = StyleSheet.create({ | ||
@@ -50,0 +45,0 @@ root: { |
@@ -15,2 +15,4 @@ # Changelog | ||
- Convert to function components and remove "use client" directives. ([#27438](https://github.com/expo/expo/pull/27438) by [@EvanBacon](https://github.com/EvanBacon)) | ||
## 2.7.0 — 2023-11-14 | ||
@@ -17,0 +19,0 @@ |
{ | ||
"name": "expo-checkbox", | ||
"version": "0.0.1-canary-20240305-e60019e", | ||
"version": "0.0.1-canary-20240308-6715875", | ||
"description": "Basic checkbox for iOS, Android, and web", | ||
@@ -36,3 +36,3 @@ "main": "build/Checkbox.js", | ||
"@testing-library/react-native": "^11.3.0", | ||
"expo-module-scripts": "0.0.1-canary-20240305-e60019e" | ||
"expo-module-scripts": "0.0.1-canary-20240308-6715875" | ||
}, | ||
@@ -42,3 +42,3 @@ "jest": { | ||
}, | ||
"gitHead": "e60019e11a6d46e330b57b18c64468a58d589875" | ||
"gitHead": "67158757cf78be8094fe6b7461e8523157f1f615" | ||
} |
@@ -1,3 +0,3 @@ | ||
import { SyntheticEvent } from 'react'; | ||
import { ColorValue, NativeSyntheticEvent, ViewProps } from 'react-native'; | ||
import type { SyntheticEvent } from 'react'; | ||
import type { ColorValue, NativeSyntheticEvent, ViewProps } from 'react-native'; | ||
@@ -4,0 +4,0 @@ export type CheckboxEvent = { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Native code
Supply chain riskContains native code (e.g., compiled binaries or shared libraries). Including native code can obscure malicious behavior.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Native code
Supply chain riskContains native code (e.g., compiled binaries or shared libraries). Including native code can obscure malicious behavior.
Found 1 instance in 1 package
59741
497