expo-checkbox 1.0.2 → 2.1.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/CHANGELOG.md +18 -0
- package/README.md +1 -1
- package/build/Checkbox.d.ts +1 -0
- package/build/Checkbox.d.ts.map +1 -0
- package/build/Checkbox.types.d.ts +23 -7
- package/build/Checkbox.types.d.ts.map +1 -0
- package/build/Checkbox.types.js.map +1 -1
- package/build/ExpoCheckbox.d.ts +4 -1
- package/build/ExpoCheckbox.d.ts.map +1 -0
- package/build/ExpoCheckbox.js +55 -1
- package/build/ExpoCheckbox.js.map +1 -1
- package/build/ExpoCheckbox.web.d.ts +1 -0
- package/build/ExpoCheckbox.web.d.ts.map +1 -0
- package/build/ExpoCheckbox.web.js +13 -7
- package/build/ExpoCheckbox.web.js.map +1 -1
- package/package.json +5 -9
- package/src/Checkbox.types.ts +25 -7
- package/src/ExpoCheckbox.tsx +81 -1
- package/src/ExpoCheckbox.web.tsx +14 -5
- package/build/CheckboxUnavailable.d.ts +0 -3
- package/build/CheckboxUnavailable.js +0 -7
- package/build/CheckboxUnavailable.js.map +0 -1
- package/build/ExpoCheckbox.android.d.ts +0 -3
- package/build/ExpoCheckbox.android.js +0 -30
- package/build/ExpoCheckbox.android.js.map +0 -1
- package/src/CheckboxUnavailable.tsx +0 -11
- package/src/ExpoCheckbox.android.tsx +0 -36
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,24 @@
|
|
|
8
8
|
|
|
9
9
|
### 🐛 Bug fixes
|
|
10
10
|
|
|
11
|
+
### 💡 Others
|
|
12
|
+
|
|
13
|
+
## 2.1.0 — 2022-04-18
|
|
14
|
+
|
|
15
|
+
_This version does not introduce any user-facing changes._
|
|
16
|
+
|
|
17
|
+
## 2.0.0 — 2021-09-28
|
|
18
|
+
|
|
19
|
+
### 🛠 Breaking changes
|
|
20
|
+
|
|
21
|
+
- Remove `isAvailableAsync()` and reimplement module in javascript. ([#13510](https://github.com/expo/expo/pull/13510) by [@ajsmth](https://github.com/ajsmth))
|
|
22
|
+
|
|
23
|
+
## 1.0.3 — 2021-03-10
|
|
24
|
+
|
|
25
|
+
### 🐛 Bug fixes
|
|
26
|
+
|
|
27
|
+
- Remove peerDependencies and unimodulePeerDependencies from Expo modules. ([#11980](https://github.com/expo/expo/pull/11980) by [@brentvatne](https://github.com/brentvatne))
|
|
28
|
+
|
|
11
29
|
## 1.0.2 — 2021-01-15
|
|
12
30
|
|
|
13
31
|
_This version does not introduce any user-facing changes._
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## API documentation
|
|
6
6
|
|
|
7
|
-
Please refer to the [API documentation for the latest stable release](https://docs.expo.
|
|
7
|
+
Please refer to the [API documentation for the latest stable release](https://docs.expo.dev/versions/latest/sdk/checkbox/).
|
|
8
8
|
|
|
9
9
|
## Installation in managed Expo projects
|
|
10
10
|
|
package/build/Checkbox.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../src/Checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,cAAc,kBAAkB,CAAC"}
|
|
@@ -3,18 +3,34 @@ export declare type CheckboxEvent = NativeSyntheticEvent<{
|
|
|
3
3
|
target: number;
|
|
4
4
|
value: boolean;
|
|
5
5
|
}>;
|
|
6
|
-
export
|
|
7
|
-
/**
|
|
6
|
+
export declare type CheckboxProps = ViewProps & {
|
|
7
|
+
/**
|
|
8
|
+
* Value indicating if the checkbox should be rendered as checked or not. Default value is `false`.
|
|
9
|
+
*/
|
|
8
10
|
value?: boolean;
|
|
9
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* If the checkbox is disabled, it becomes opaque and uncheckable.
|
|
13
|
+
*/
|
|
10
14
|
disabled?: boolean;
|
|
11
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* The tint or color of the checkbox. This overrides the disabled opaque style.
|
|
17
|
+
*/
|
|
12
18
|
color?: ColorValue;
|
|
13
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Callback that is invoked when the user presses the checkbox.
|
|
21
|
+
* @param event A native event containing the checkbox change.
|
|
22
|
+
*/
|
|
14
23
|
onChange?: (event: CheckboxEvent) => void;
|
|
15
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Callback that is invoked when the user presses the checkbox.
|
|
26
|
+
* @param value A boolean indicating the new checked state of the checkbox.
|
|
27
|
+
*/
|
|
16
28
|
onValueChange?: (value: boolean) => void;
|
|
17
|
-
}
|
|
29
|
+
};
|
|
18
30
|
export declare type CheckboxComponent = React.FC<CheckboxProps> & {
|
|
31
|
+
/**
|
|
32
|
+
* @deprecated
|
|
33
|
+
*/
|
|
19
34
|
isAvailableAsync: () => Promise<boolean>;
|
|
20
35
|
};
|
|
36
|
+
//# sourceMappingURL=Checkbox.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.types.d.ts","sourceRoot":"","sources":["../src/Checkbox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG3E,oBAAY,aAAa,GAAG,oBAAoB,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAGrF,oBAAY,aAAa,GAAG,SAAS,GAAG;IACtC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C,CAAC;AAGF,oBAAY,iBAAiB,GAAG,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG;IACxD;;OAEG;IACH,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.types.js","sourceRoot":"","sources":["../src/Checkbox.types.ts"],"names":[],"mappings":"","sourcesContent":["import { ColorValue, NativeSyntheticEvent, ViewProps } from 'react-native';\n\nexport type CheckboxEvent = NativeSyntheticEvent<{ target: number; value: boolean }>;\n\nexport
|
|
1
|
+
{"version":3,"file":"Checkbox.types.js","sourceRoot":"","sources":["../src/Checkbox.types.ts"],"names":[],"mappings":"","sourcesContent":["import { ColorValue, NativeSyntheticEvent, ViewProps } from 'react-native';\n\n// @docsMissing\nexport type CheckboxEvent = NativeSyntheticEvent<{ target: number; value: boolean }>;\n\n// @needsAudit\nexport type CheckboxProps = ViewProps & {\n /**\n * Value indicating if the checkbox should be rendered as checked or not. Default value is `false`.\n */\n value?: boolean;\n /**\n * If the checkbox is disabled, it becomes opaque and uncheckable.\n */\n disabled?: boolean;\n /**\n * The tint or color of the checkbox. This overrides the disabled opaque style.\n */\n color?: ColorValue;\n /**\n * Callback that is invoked when the user presses the checkbox.\n * @param event A native event containing the checkbox change.\n */\n onChange?: (event: CheckboxEvent) => void;\n /**\n * Callback that is invoked when the user presses the checkbox.\n * @param value A boolean indicating the new checked state of the checkbox.\n */\n onValueChange?: (value: boolean) => void;\n};\n\n// @docsMissing\nexport type CheckboxComponent = React.FC<CheckboxProps> & {\n /**\n * @deprecated\n */\n isAvailableAsync: () => Promise<boolean>;\n};\n"]}
|
package/build/ExpoCheckbox.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpoCheckbox.d.ts","sourceRoot":"","sources":["../src/ExpoCheckbox.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAKrD,QAAA,MAAM,YAAY,EAAE,iBAiCnB,CAAC;AAIF,eAAe,YAAY,CAAC"}
|
package/build/ExpoCheckbox.js
CHANGED
|
@@ -1,2 +1,56 @@
|
|
|
1
|
-
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
|
+
import { StyleSheet, Image, Pressable, Platform } from 'react-native';
|
|
3
|
+
const checkmarkBase64 = 'data:image/png;base64,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';
|
|
4
|
+
const ExpoCheckbox = (props) => {
|
|
5
|
+
const { color, disabled, onChange, onValueChange, style, value, ...other } = props;
|
|
6
|
+
const handleChange = useCallback(() => {
|
|
7
|
+
onValueChange && onValueChange(!value);
|
|
8
|
+
}, [onValueChange, value]);
|
|
9
|
+
return (React.createElement(Pressable, { ...other, disabled: disabled,
|
|
10
|
+
// Announces "checked" status and "checkbox" as the focused element
|
|
11
|
+
accessibilityRole: "checkbox", accessibilityState: { disabled, checked: value }, style: [
|
|
12
|
+
styles.root,
|
|
13
|
+
style,
|
|
14
|
+
value && styles.checked,
|
|
15
|
+
!!color && { backgroundColor: value ? color : undefined, borderColor: color },
|
|
16
|
+
disabled && styles.disabled,
|
|
17
|
+
value && disabled && styles.checkedAndDisabled,
|
|
18
|
+
], onPress: handleChange }, value && (React.createElement(Image, { source: {
|
|
19
|
+
uri: checkmarkBase64,
|
|
20
|
+
}, style: StyleSheet.absoluteFill }))));
|
|
21
|
+
};
|
|
22
|
+
ExpoCheckbox.displayName = 'Checkbox';
|
|
23
|
+
export default ExpoCheckbox;
|
|
24
|
+
const defaultEnabledColor = Platform.select({
|
|
25
|
+
ios: '#007AFF',
|
|
26
|
+
android: '#009688',
|
|
27
|
+
});
|
|
28
|
+
const defaultGrayColor = '#657786';
|
|
29
|
+
const disabledGrayColor = '#CCD6DD';
|
|
30
|
+
const disabledCheckedGrayColor = '#AAB8C2';
|
|
31
|
+
const styles = StyleSheet.create({
|
|
32
|
+
root: {
|
|
33
|
+
height: 20,
|
|
34
|
+
width: 20,
|
|
35
|
+
borderRadius: 2,
|
|
36
|
+
borderWidth: 2,
|
|
37
|
+
borderColor: defaultGrayColor,
|
|
38
|
+
},
|
|
39
|
+
checked: {
|
|
40
|
+
backgroundColor: defaultEnabledColor,
|
|
41
|
+
borderColor: defaultEnabledColor,
|
|
42
|
+
},
|
|
43
|
+
disabled: {
|
|
44
|
+
borderColor: disabledGrayColor,
|
|
45
|
+
backgroundColor: 'transparent',
|
|
46
|
+
},
|
|
47
|
+
checkedAndDisabled: {
|
|
48
|
+
backgroundColor: disabledCheckedGrayColor,
|
|
49
|
+
borderColor: disabledCheckedGrayColor,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
ExpoCheckbox.isAvailableAsync = () => {
|
|
53
|
+
console.warn('Checkbox.isAvailableAsync() is deprecated and will be removed in future releases');
|
|
54
|
+
return Promise.resolve(true);
|
|
55
|
+
};
|
|
2
56
|
//# sourceMappingURL=ExpoCheckbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoCheckbox.js","sourceRoot":"","sources":["../src/ExpoCheckbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ExpoCheckbox.js","sourceRoot":"","sources":["../src/ExpoCheckbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAItE,MAAM,eAAe,GACnB,osJAAosJ,CAAC;AAEvsJ,MAAM,YAAY,GAAsB,CAAC,KAAK,EAAE,EAAE;IAChD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IAEnF,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,aAAa,IAAI,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAE3B,OAAO,CACL,oBAAC,SAAS,OACJ,KAAK,EACT,QAAQ,EAAE,QAAQ;QAClB,mEAAmE;QACnE,iBAAiB,EAAC,UAAU,EAC5B,kBAAkB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAChD,KAAK,EAAE;YACL,MAAM,CAAC,IAAI;YACX,KAAK;YACL,KAAK,IAAI,MAAM,CAAC,OAAO;YACvB,CAAC,CAAC,KAAK,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE;YAC7E,QAAQ,IAAI,MAAM,CAAC,QAAQ;YAC3B,KAAK,IAAI,QAAQ,IAAI,MAAM,CAAC,kBAAkB;SAC/C,EACD,OAAO,EAAE,YAAY,IACpB,KAAK,IAAI,CACR,oBAAC,KAAK,IACJ,MAAM,EAAE;YACN,GAAG,EAAE,eAAe;SACrB,EACD,KAAK,EAAE,UAAU,CAAC,YAAY,GAC9B,CACH,CACS,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,YAAY,CAAC,WAAW,GAAG,UAAU,CAAC;AAEtC,eAAe,YAAY,CAAC;AAE5B,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC1C,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,SAAS;CACnB,CAAC,CAAC;AACH,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACnC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AACpC,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAE3C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE;QACJ,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,gBAAgB;KAC9B;IACD,OAAO,EAAE;QACP,eAAe,EAAE,mBAAmB;QACpC,WAAW,EAAE,mBAAmB;KACjC;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,iBAAiB;QAC9B,eAAe,EAAE,aAAa;KAC/B;IACD,kBAAkB,EAAE;QAClB,eAAe,EAAE,wBAAwB;QACzC,WAAW,EAAE,wBAAwB;KACtC;CACF,CAAC,CAAC;AAEH,YAAY,CAAC,gBAAgB,GAAG,GAAG,EAAE;IACnC,OAAO,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IACjG,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC","sourcesContent":["import React, { useCallback } from 'react';\nimport { StyleSheet, Image, Pressable, Platform } from 'react-native';\n\nimport { CheckboxComponent } from './Checkbox.types';\n\nconst checkmarkBase64 =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAYAAACAvzbMAAAACXBIWXMAFxGDABcRgwEFErJzAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAADY1JREFUeJzt3TuOrOtZhuGnFyKxnSMYgGWJKeBgyxFj2EhIZgxMAuQpIO0IOwXJ2hEQMAUSJEIExJDin4D12+vUq+vwvf93uq6wg9KjDvrWW9VVlQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAso7j+P3eGwCYzHEcPz2O49+O4/jj3lsAmMT7ePz38f/+U0QAeNMn8ThEBIA3vRIPEQHgdW/EQ0QA+NyN8RARAH7nzniICAAPx0NEAHb2ZDxEBGBHjeIhIgA7aRwPEQHYQVE8RARgZcXxEBGAFV0UDxEBWMnF8RARgBV0ioeIAMysczxEBGBGg8TjNEVEXnoPAOjtOI6fJvl1kh/13vKB/0rys5eXl3/pPeQ1AgJsbdB4nIaOiIAA2xo8HqdhIyIgwJYmicdpyIgICLCdyeJxGi4iAgJsZdJ4nIaKiIAA25g8HqdhIiIgwBYWicdpiIgICLC8xeJx6h4RAQGWtmg8Tl0jIiDAshaPx6lbRAQEWNIm8Th1iYiAAMvZLB6nyyMiIMBSNo3H6dKICAiwjM3jcbosIgICLEE8PnJJRAQEmJ54fFF5RAQEmJp4fFVpRAQEmJZ43KQsIgICTEk87lISEQEBpiMeD2keEQEBpiIeT2kaEQEBpiEeTTSLiIAAUxCPpppE5F2jMQBljuP4Jsn3EY9W/iDJz599EBcIMDSXR4lfJvmzl5eX/33mQQQEGJZ4lGgSj0RAgEGJR4lm8UgEBBiQeJRoGo9EQIDBiEeJ5vFIBAQYiHiUKIlHIiDAIMSjRFk8EgEBBiAeJUrjkQgI0Jl4lCiPRyIgQEfiUeKSeCQCAnQiHiUui0ciIEAH4lHi0ngkAgJcTDxKXB6PRECAC4lHiS7xSAQEuIh4lOgWj0RAgAuIR4mu8UgEBCgmHiW6xyMREKCQeJQYIh6JgABFxKPEMPFIBAQoIB4lhopHIiBAY+JRYrh4JAICNCQeJYaMRyIgQCPiUWLYeCQCAjQgHiWGjkciIMCTxKPE8PFIBAR4gniUmCIeiYAADxKPEtPEIxEQ4AHiUWKqeCQCAtxJPEpMF49EQIA7iEeJKeORCAhwI/EoMW08EgEBbiAeJaaORyIgwBvEo8T08UgEBPgK8SixRDwSAQFeIR4llolHIiDAF4hHiaXikQgI8AnxKLFcPBIBAT4gHiWWjEciIMB74lFi2XgkAgJEPIosHY9EQGB74lFi+XgkAgJbE48SW8QjERDYlniU2CYeiYDAlsSjxFbxSAQEtiMeJbaLRyIgsBXxKLFlPBIBgW2IR4lt45EICGxBPEpsHY9EQGB54lFi+3gkAgJLE48S4vGegMCixKOEeHxAQGBB4lFCPD4hILAY8SghHl8gILAQ8SghHq8QEFiEeJQQj68QEFiAeJQQjzcICExOPEqIxw0EBCYmHiXE40YCApMSjxLicQcBgQmJRwnxuJOAwGTEo4R4PEBAYCLiUUI8HiQgMAnxKCEeTxAQmIB4lBCPJwkIDE48SohHAwICAxOPEuLRiIDAoMSjhHg0JCAwIPEoIR6NCQgMRjxKiEcBAYGBiEcJ8SgiIDAI8SghHoUEBAYgHiXEo5iAQGfiUUI8LiAg0JF4lBCPiwgIdCIeJcTjQgICHYhHCfG4mIDAxcSjhHh0ICBwIfEoIR6dCAhcRDxKiEdHAgIXEI8S4tGZgEAx8SghHgMQECgkHiXEYxACAkXEo4R4DERAoIB4lBCPwQgINCYeJcRjQAICDYlHCfEYlIBAI+JRQjwGJiDQgHiUEI/BCQg8STxKiMcEBASeIB4lxGMSAgIPEo8S4jERAYEHiEcJ8ZiMgMCdxKOEeExIQOAO4lFCPCYlIHAj8SghHhMTELiBeJQQj8kJCLxBPEqIxwIEBL5CPEqIxyLe9R5wheM43h3H8ZfHcfyw9xbmcRzHN0m+j3i09F2Sb8VjDcsH5DiOd0n+JslfJfn+OA5/DHjT+8vj75L8oPeWhfwyyV+8vLz8pvcQ2lj6KawP4vHnH/z4n5P86cvLy//0WcXoPG1VwtNWC1o2IK/E4yQifJF4lBCPRS0ZkDficRIRPiIeJcRjYcsF5MZ4nESEJOJRRDwWt1RA7ozHSUQ2Jx4lxGMDywTkwXicRGRT4lFCPDaxRECejMdJRDYjHiXEYyPTB6RRPE4isgnxKCEem5k6II3jcRKRxYlHCfHY0LQBKYrHSUQWJR4lxGNTUwakOB4nEVmMeJQQj41NF5CL4nESkUWIRwnx2NxUAbk4HicRmZx4lBAP5glIp3icRGRS4lFCPEgySUA6x+MkIpMRjxLiwW8NH5BB4nESkUmIRwnx4CNDB2SweJxEZHDiUUI8+MywARk0HicRGZR4lBAPvmjIgAwej5OIDEY8SogHrxouIJPE4yQigxCPEuLBVw0VkMnicRKRzsSjhHjwpmECMmk8TiLSiXiUEA9uMkRAJo/HSUQuJh4lxIObdQ/IIvE4ichFxKOEeHCXrgFZLB4nESkmHiXEg7t1C8ii8TiJSBHxKCEePKRLQBaPx0lEGhOPEuLBwy4PyCbxOIlII+JRQjx4yqUB2SweJxF5kniUEA+edllANo3HSUQeJB4lxIMmLgnI5vE4icidxKOEeNBMeUDE4yMiciPxKCEeNFUaEPH4IhF5g3iUEA+aKwuIeHyViLxCPEqIByVKAiIeNxGRT4hHCfGgTPOAiMddROQ98SghHpRqGhDxeMj2ERGPEuJBuWYBEY+nbBsR8SghHlyiSUDEo4ntIiIeJcSDyzwdEPFoapuIiEcJ8eBS7xo8xl9HPFr5kyR/fxzHD3sPqXQcxzdJvo94tPRdkm/Fgyu1uEB+nOQfk/zR83N4b9lLxOVRwuVBF61eAxGR9paLiHiUEA+6aflfWCLS3jIREY8S4kFXrd8HIiLtTR8R8SghHnRX8U50EWlv2oiIRwnxYAhVn4UlIu1NFxHxKCEeDKPy03hFpL1pIiIeJcSDoVR/H4iItDd8RMSjhHgwnCu+kVBE2hs2IuJRQjwY0lXfiS4i7Q0XEfEoIR4M65KAJCJSZJiIiEcJ8WBolwUkEZEi3SMiHiXEg+FdGpBERIp0i4h4lBAPpnB5QBIRKXJ5RMSjhHgwjS4BSUSkyGUREY8S4sFUugUkEZEi5RERjxLiwXS6BiQRkSJlERGPEuLBlLoHJBGRIs0jIh4lxINpDRGQRESKNIuIeJQQD6Y2TEASESnydETEo4R4ML2hApKISJGHIyIeJcSDJQwXkEREitwdEfEoIR4sY8iAJCJS5OaIiEcJ8WApwwYkEZEib0ZEPEqIB8sZOiCJiBR5NSLiUUI8WNLwAUlEpMhnERGPEuLBsqYISCIiRX4bEfEoIR4sbZqAJMlxHD9J8g9J/rD3loX8U5JfJPlVkh/0nbKU75L8/OXl5Te9h0CVqQKSuESYgsuDLUwXkEREGJp4sI0pA5KICEMSD7YybUASEWEo4sF2pg5IIiIMQTzY0vQBSUSErsSDbS0RkERE6EI82NoyAUlEhEuJB9tbKiCJiHAJ8YAsGJBERCglHvDekgFJRIQS4gEfWDYgiYjQlHjAJ5YOSCIiNCEe8AXLByQREZ4iHvCKLQKSiAgPEQ/4im0CkogIdxEPeMNWAUlEhJuIB9xgu4AkIsJXiQfcaMuAJCLCF4kH3GHbgCQiwkfEA+60dUASESGJeMBDtg9IIiKbEw94kIC8JyJbEg94goB8QES2Ih7wJAH5hIhsQTygAQH5AhFZmnhAIwLyChFZknhAQwLyFSKyFPGAxgTkDSKyBPGAAgJyAxGZmnhAEQG5kYhMSTygkIDcQUSmIh5QTEDuJCJTEA+4gIA8QESGJh5wEQF5kIgMSTzgQgLyBBEZinjAxQTkSSIyBPGADgSkARHpSjygEwFpRES6EA/oSEAaEpFLiQd0JiCNicglxAMGICAFRKSUeMAg3vUesKKXl5d/TfKzJP/Re8tivkvyrXjAGFwghVwiTbk8YDACUkxEmhAPGJCAXEBEniIeMCgBuYiIPEQ8YGACciERuYt4wOAE5GIichPxgAkISAci8lXiAZMQkE5E5IvEAyYiIB2JyEfEAyYjIJ2JSBLxgCkJyAA2j4h4wKQEZBCbRkQ8YGICMpDNIiIeMDkBGcwmEREPWICADGjxiIgHLEJABrVoRMQDFiIgA1ssIuIBixGQwS0SEfGABQnIBCaPiHjAogRkEpNGRDxgYQIykckiIh6wOAGZzCQREQ+AER3H8ePjOP79GNPfHsfxe71/RwC84hgzIuIBMINjrIiIB8BMjjEiIh4AM+ocEfEAmFmniIgHwAoujoh4AKzkooiIB8CKiiMiHgArK4qIeADsoHFExANgJ40iIh4AO3oyIuIBsLMHIyIeANwdEfEA4HdujIh4APC5NyIiHgC87pWIiAcAb/skIuIBwO2O4/jJcRy/OI7jXe8tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA5/4PiZTk2kr08uAAAAAASUVORK5CYII=';\n\nconst ExpoCheckbox: CheckboxComponent = (props) => {\n const { color, disabled, onChange, onValueChange, style, value, ...other } = props;\n\n const handleChange = useCallback(() => {\n onValueChange && onValueChange(!value);\n }, [onValueChange, value]);\n\n return (\n <Pressable\n {...other}\n disabled={disabled}\n // Announces \"checked\" status and \"checkbox\" as the focused element\n accessibilityRole=\"checkbox\"\n accessibilityState={{ disabled, checked: value }}\n style={[\n styles.root,\n style,\n value && styles.checked,\n !!color && { backgroundColor: value ? color : undefined, borderColor: color },\n disabled && styles.disabled,\n value && disabled && styles.checkedAndDisabled,\n ]}\n onPress={handleChange}>\n {value && (\n <Image\n source={{\n uri: checkmarkBase64,\n }}\n style={StyleSheet.absoluteFill}\n />\n )}\n </Pressable>\n );\n};\n\nExpoCheckbox.displayName = 'Checkbox';\n\nexport default ExpoCheckbox;\n\nconst defaultEnabledColor = Platform.select({\n ios: '#007AFF',\n android: '#009688',\n});\nconst defaultGrayColor = '#657786';\nconst disabledGrayColor = '#CCD6DD';\nconst disabledCheckedGrayColor = '#AAB8C2';\n\nconst styles = StyleSheet.create({\n root: {\n height: 20,\n width: 20,\n borderRadius: 2,\n borderWidth: 2,\n borderColor: defaultGrayColor,\n },\n checked: {\n backgroundColor: defaultEnabledColor,\n borderColor: defaultEnabledColor,\n },\n disabled: {\n borderColor: disabledGrayColor,\n backgroundColor: 'transparent',\n },\n checkedAndDisabled: {\n backgroundColor: disabledCheckedGrayColor,\n borderColor: disabledCheckedGrayColor,\n },\n});\n\nExpoCheckbox.isAvailableAsync = () => {\n console.warn('Checkbox.isAvailableAsync() is deprecated and will be removed in future releases');\n return Promise.resolve(true);\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpoCheckbox.web.d.ts","sourceRoot":"","sources":["../src/ExpoCheckbox.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,iBAAiB,EAAiB,MAAM,kBAAkB,CAAC;AAEpE,QAAA,MAAM,YAAY,EAAE,iBA0CnB,CAAC;AA2DF,eAAe,YAAY,CAAC;AAO5B,eAAO,MAAM,IAAI,iBAAiB,CAAC"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import React, { useCallback } from 'react';
|
|
11
11
|
// @ts-ignore
|
|
12
12
|
import { StyleSheet, View, unstable_createElement as createElement } from 'react-native';
|
|
13
|
-
const ExpoCheckbox = props => {
|
|
13
|
+
const ExpoCheckbox = (props) => {
|
|
14
14
|
const { color, disabled, onChange, onValueChange, style, value, ...other } = props;
|
|
15
15
|
const handleChange = useCallback((event) => {
|
|
16
16
|
const value = event.nativeEvent.target.checked;
|
|
@@ -18,7 +18,7 @@ const ExpoCheckbox = props => {
|
|
|
18
18
|
onChange && onChange(event);
|
|
19
19
|
onValueChange && onValueChange(value);
|
|
20
20
|
}, [onChange, onValueChange]);
|
|
21
|
-
const fakeControl = (React.createElement(View, { style: [
|
|
21
|
+
const fakeControl = (React.createElement(View, { pointerEvents: "none", style: [
|
|
22
22
|
styles.fakeControl,
|
|
23
23
|
value && styles.fakeControlChecked,
|
|
24
24
|
// custom color
|
|
@@ -27,18 +27,18 @@ const ExpoCheckbox = props => {
|
|
|
27
27
|
value && disabled && styles.fakeControlCheckedAndDisabled,
|
|
28
28
|
] }));
|
|
29
29
|
const nativeControl = createElement('input', {
|
|
30
|
+
accessibilityState: { disabled, checked: value },
|
|
30
31
|
checked: value,
|
|
31
32
|
disabled,
|
|
32
33
|
onChange: handleChange,
|
|
33
34
|
style: [styles.nativeControl, styles.cursorInherit],
|
|
34
35
|
type: 'checkbox',
|
|
35
36
|
});
|
|
36
|
-
return (React.createElement(View,
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
return (React.createElement(View, { ...other, style: [styles.root, style, disabled && styles.cursorDefault] },
|
|
38
|
+
nativeControl,
|
|
39
|
+
fakeControl));
|
|
39
40
|
};
|
|
40
41
|
ExpoCheckbox.displayName = 'Checkbox';
|
|
41
|
-
ExpoCheckbox.isAvailableAsync = async () => true;
|
|
42
42
|
const styles = StyleSheet.create({
|
|
43
43
|
root: {
|
|
44
44
|
// @ts-ignore
|
|
@@ -56,6 +56,7 @@ const styles = StyleSheet.create({
|
|
|
56
56
|
cursor: 'inherit',
|
|
57
57
|
},
|
|
58
58
|
fakeControl: {
|
|
59
|
+
...StyleSheet.absoluteFillObject,
|
|
59
60
|
alignItems: 'center',
|
|
60
61
|
backgroundColor: '#fff',
|
|
61
62
|
borderColor: '#657786',
|
|
@@ -84,11 +85,16 @@ const styles = StyleSheet.create({
|
|
|
84
85
|
...StyleSheet.absoluteFillObject,
|
|
85
86
|
height: '100%',
|
|
86
87
|
margin: 0,
|
|
87
|
-
opacity: 0,
|
|
88
88
|
padding: 0,
|
|
89
89
|
width: '100%',
|
|
90
|
+
// @ts-ignore
|
|
91
|
+
WebkitAppearance: 'none',
|
|
90
92
|
},
|
|
91
93
|
});
|
|
92
94
|
export default ExpoCheckbox;
|
|
95
|
+
ExpoCheckbox.isAvailableAsync = () => {
|
|
96
|
+
console.warn('Checkbox.isAvailableAsync() is deprecated and will be removed in future releases');
|
|
97
|
+
return Promise.resolve(true);
|
|
98
|
+
};
|
|
93
99
|
export const name = 'ExpoCheckbox';
|
|
94
100
|
//# sourceMappingURL=ExpoCheckbox.web.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoCheckbox.web.js","sourceRoot":"","sources":["../src/ExpoCheckbox.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,IAAI,aAAa,EAAE,MAAM,cAAc,CAAC;AAIzF,MAAM,YAAY,GAAsB,KAAK,
|
|
1
|
+
{"version":3,"file":"ExpoCheckbox.web.js","sourceRoot":"","sources":["../src/ExpoCheckbox.web.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * see: https://github.com/necolas/react-native-web\n */\n\nimport React, { useCallback } from 'react';\n// @ts-ignore\nimport { StyleSheet, View, unstable_createElement as createElement } from 'react-native';\n\nimport { CheckboxComponent, CheckboxEvent } from './Checkbox.types';\n\nconst ExpoCheckbox: CheckboxComponent = (props) => {\n const { color, disabled, onChange, onValueChange, style, value, ...other } = props;\n\n const handleChange = useCallback(\n (event: CheckboxEvent) => {\n const value = (event.nativeEvent.target as unknown as HTMLInputElement).checked;\n event.nativeEvent.value = value;\n onChange && onChange(event);\n onValueChange && onValueChange(value);\n },\n [onChange, onValueChange]\n );\n\n const fakeControl = (\n <View\n pointerEvents=\"none\"\n style={[\n styles.fakeControl,\n value && styles.fakeControlChecked,\n // custom color\n !!color && { backgroundColor: value ? color : undefined, borderColor: color },\n disabled && styles.fakeControlDisabled,\n value && disabled && styles.fakeControlCheckedAndDisabled,\n ]}\n />\n );\n\n const nativeControl = createElement('input', {\n accessibilityState: { disabled, checked: value },\n checked: value,\n disabled,\n onChange: handleChange,\n style: [styles.nativeControl, styles.cursorInherit],\n type: 'checkbox',\n });\n\n return (\n <View {...other} style={[styles.root, style, disabled && styles.cursorDefault]}>\n {nativeControl}\n {fakeControl}\n </View>\n );\n};\n\nExpoCheckbox.displayName = 'Checkbox';\n\nconst styles = StyleSheet.create({\n root: {\n // @ts-ignore\n cursor: 'pointer',\n height: 16,\n userSelect: 'none',\n width: 16,\n },\n cursorDefault: {\n // @ts-ignore\n cursor: 'default',\n },\n\n cursorInherit: {\n // @ts-ignore\n cursor: 'inherit',\n },\n fakeControl: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n backgroundColor: '#fff',\n borderColor: '#657786',\n borderRadius: 2,\n borderStyle: 'solid',\n borderWidth: 2,\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n fakeControlChecked: {\n backgroundColor: '#009688',\n // @ts-ignore\n backgroundImage:\n 'url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K\")',\n backgroundRepeat: 'no-repeat',\n borderColor: '#009688',\n },\n fakeControlDisabled: {\n borderColor: '#CCD6DD',\n },\n fakeControlCheckedAndDisabled: {\n backgroundColor: '#AAB8C2',\n borderColor: '#AAB8C2',\n },\n nativeControl: {\n ...StyleSheet.absoluteFillObject,\n height: '100%',\n margin: 0,\n padding: 0,\n width: '100%',\n // @ts-ignore\n WebkitAppearance: 'none',\n },\n});\n\nexport default ExpoCheckbox;\n\nExpoCheckbox.isAvailableAsync = () => {\n console.warn('Checkbox.isAvailableAsync() is deprecated and will be removed in future releases');\n return Promise.resolve(true);\n};\n\nexport const name = 'ExpoCheckbox';\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-checkbox",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "Basic checkbox for iOS, Android, and web",
|
|
5
5
|
"main": "build/Checkbox.js",
|
|
6
6
|
"types": "build/Checkbox.d.ts",
|
|
7
7
|
"scripts": {
|
|
@@ -28,16 +28,12 @@
|
|
|
28
28
|
},
|
|
29
29
|
"author": "650 Industries, Inc.",
|
|
30
30
|
"license": "MIT",
|
|
31
|
-
"homepage": "https://docs.expo.
|
|
32
|
-
"peerDependencies": {
|
|
33
|
-
"react": "*",
|
|
34
|
-
"react-native": "*"
|
|
35
|
-
},
|
|
31
|
+
"homepage": "https://docs.expo.dev/versions/latest/sdk/checkbox",
|
|
36
32
|
"devDependencies": {
|
|
37
|
-
"expo-module-scripts": "^
|
|
33
|
+
"expo-module-scripts": "^2.0.0"
|
|
38
34
|
},
|
|
39
35
|
"jest": {
|
|
40
36
|
"preset": "expo-module-scripts/enzyme"
|
|
41
37
|
},
|
|
42
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "89a27c0ca0ca8becd7546697298e874a15e94faf"
|
|
43
39
|
}
|
package/src/Checkbox.types.ts
CHANGED
|
@@ -1,20 +1,38 @@
|
|
|
1
1
|
import { ColorValue, NativeSyntheticEvent, ViewProps } from 'react-native';
|
|
2
2
|
|
|
3
|
+
// @docsMissing
|
|
3
4
|
export type CheckboxEvent = NativeSyntheticEvent<{ target: number; value: boolean }>;
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
// @needsAudit
|
|
7
|
+
export type CheckboxProps = ViewProps & {
|
|
8
|
+
/**
|
|
9
|
+
* Value indicating if the checkbox should be rendered as checked or not. Default value is `false`.
|
|
10
|
+
*/
|
|
7
11
|
value?: boolean;
|
|
8
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* If the checkbox is disabled, it becomes opaque and uncheckable.
|
|
14
|
+
*/
|
|
9
15
|
disabled?: boolean;
|
|
10
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* The tint or color of the checkbox. This overrides the disabled opaque style.
|
|
18
|
+
*/
|
|
11
19
|
color?: ColorValue;
|
|
12
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Callback that is invoked when the user presses the checkbox.
|
|
22
|
+
* @param event A native event containing the checkbox change.
|
|
23
|
+
*/
|
|
13
24
|
onChange?: (event: CheckboxEvent) => void;
|
|
14
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Callback that is invoked when the user presses the checkbox.
|
|
27
|
+
* @param value A boolean indicating the new checked state of the checkbox.
|
|
28
|
+
*/
|
|
15
29
|
onValueChange?: (value: boolean) => void;
|
|
16
|
-
}
|
|
30
|
+
};
|
|
17
31
|
|
|
32
|
+
// @docsMissing
|
|
18
33
|
export type CheckboxComponent = React.FC<CheckboxProps> & {
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated
|
|
36
|
+
*/
|
|
19
37
|
isAvailableAsync: () => Promise<boolean>;
|
|
20
38
|
};
|
package/src/ExpoCheckbox.tsx
CHANGED
|
@@ -1 +1,81 @@
|
|
|
1
|
-
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
|
+
import { StyleSheet, Image, Pressable, Platform } from 'react-native';
|
|
3
|
+
|
|
4
|
+
import { CheckboxComponent } from './Checkbox.types';
|
|
5
|
+
|
|
6
|
+
const checkmarkBase64 =
|
|
7
|
+
'data:image/png;base64,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';
|
|
8
|
+
|
|
9
|
+
const ExpoCheckbox: CheckboxComponent = (props) => {
|
|
10
|
+
const { color, disabled, onChange, onValueChange, style, value, ...other } = props;
|
|
11
|
+
|
|
12
|
+
const handleChange = useCallback(() => {
|
|
13
|
+
onValueChange && onValueChange(!value);
|
|
14
|
+
}, [onValueChange, value]);
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<Pressable
|
|
18
|
+
{...other}
|
|
19
|
+
disabled={disabled}
|
|
20
|
+
// Announces "checked" status and "checkbox" as the focused element
|
|
21
|
+
accessibilityRole="checkbox"
|
|
22
|
+
accessibilityState={{ disabled, checked: value }}
|
|
23
|
+
style={[
|
|
24
|
+
styles.root,
|
|
25
|
+
style,
|
|
26
|
+
value && styles.checked,
|
|
27
|
+
!!color && { backgroundColor: value ? color : undefined, borderColor: color },
|
|
28
|
+
disabled && styles.disabled,
|
|
29
|
+
value && disabled && styles.checkedAndDisabled,
|
|
30
|
+
]}
|
|
31
|
+
onPress={handleChange}>
|
|
32
|
+
{value && (
|
|
33
|
+
<Image
|
|
34
|
+
source={{
|
|
35
|
+
uri: checkmarkBase64,
|
|
36
|
+
}}
|
|
37
|
+
style={StyleSheet.absoluteFill}
|
|
38
|
+
/>
|
|
39
|
+
)}
|
|
40
|
+
</Pressable>
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
ExpoCheckbox.displayName = 'Checkbox';
|
|
45
|
+
|
|
46
|
+
export default ExpoCheckbox;
|
|
47
|
+
|
|
48
|
+
const defaultEnabledColor = Platform.select({
|
|
49
|
+
ios: '#007AFF',
|
|
50
|
+
android: '#009688',
|
|
51
|
+
});
|
|
52
|
+
const defaultGrayColor = '#657786';
|
|
53
|
+
const disabledGrayColor = '#CCD6DD';
|
|
54
|
+
const disabledCheckedGrayColor = '#AAB8C2';
|
|
55
|
+
|
|
56
|
+
const styles = StyleSheet.create({
|
|
57
|
+
root: {
|
|
58
|
+
height: 20,
|
|
59
|
+
width: 20,
|
|
60
|
+
borderRadius: 2,
|
|
61
|
+
borderWidth: 2,
|
|
62
|
+
borderColor: defaultGrayColor,
|
|
63
|
+
},
|
|
64
|
+
checked: {
|
|
65
|
+
backgroundColor: defaultEnabledColor,
|
|
66
|
+
borderColor: defaultEnabledColor,
|
|
67
|
+
},
|
|
68
|
+
disabled: {
|
|
69
|
+
borderColor: disabledGrayColor,
|
|
70
|
+
backgroundColor: 'transparent',
|
|
71
|
+
},
|
|
72
|
+
checkedAndDisabled: {
|
|
73
|
+
backgroundColor: disabledCheckedGrayColor,
|
|
74
|
+
borderColor: disabledCheckedGrayColor,
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
ExpoCheckbox.isAvailableAsync = () => {
|
|
79
|
+
console.warn('Checkbox.isAvailableAsync() is deprecated and will be removed in future releases');
|
|
80
|
+
return Promise.resolve(true);
|
|
81
|
+
};
|
package/src/ExpoCheckbox.web.tsx
CHANGED
|
@@ -14,12 +14,12 @@ import { StyleSheet, View, unstable_createElement as createElement } from 'react
|
|
|
14
14
|
|
|
15
15
|
import { CheckboxComponent, CheckboxEvent } from './Checkbox.types';
|
|
16
16
|
|
|
17
|
-
const ExpoCheckbox: CheckboxComponent = props => {
|
|
17
|
+
const ExpoCheckbox: CheckboxComponent = (props) => {
|
|
18
18
|
const { color, disabled, onChange, onValueChange, style, value, ...other } = props;
|
|
19
19
|
|
|
20
20
|
const handleChange = useCallback(
|
|
21
21
|
(event: CheckboxEvent) => {
|
|
22
|
-
const value = (
|
|
22
|
+
const value = (event.nativeEvent.target as unknown as HTMLInputElement).checked;
|
|
23
23
|
event.nativeEvent.value = value;
|
|
24
24
|
onChange && onChange(event);
|
|
25
25
|
onValueChange && onValueChange(value);
|
|
@@ -29,6 +29,7 @@ const ExpoCheckbox: CheckboxComponent = props => {
|
|
|
29
29
|
|
|
30
30
|
const fakeControl = (
|
|
31
31
|
<View
|
|
32
|
+
pointerEvents="none"
|
|
32
33
|
style={[
|
|
33
34
|
styles.fakeControl,
|
|
34
35
|
value && styles.fakeControlChecked,
|
|
@@ -41,6 +42,7 @@ const ExpoCheckbox: CheckboxComponent = props => {
|
|
|
41
42
|
);
|
|
42
43
|
|
|
43
44
|
const nativeControl = createElement('input', {
|
|
45
|
+
accessibilityState: { disabled, checked: value },
|
|
44
46
|
checked: value,
|
|
45
47
|
disabled,
|
|
46
48
|
onChange: handleChange,
|
|
@@ -50,14 +52,13 @@ const ExpoCheckbox: CheckboxComponent = props => {
|
|
|
50
52
|
|
|
51
53
|
return (
|
|
52
54
|
<View {...other} style={[styles.root, style, disabled && styles.cursorDefault]}>
|
|
53
|
-
{fakeControl}
|
|
54
55
|
{nativeControl}
|
|
56
|
+
{fakeControl}
|
|
55
57
|
</View>
|
|
56
58
|
);
|
|
57
59
|
};
|
|
58
60
|
|
|
59
61
|
ExpoCheckbox.displayName = 'Checkbox';
|
|
60
|
-
ExpoCheckbox.isAvailableAsync = async () => true;
|
|
61
62
|
|
|
62
63
|
const styles = StyleSheet.create({
|
|
63
64
|
root: {
|
|
@@ -71,11 +72,13 @@ const styles = StyleSheet.create({
|
|
|
71
72
|
// @ts-ignore
|
|
72
73
|
cursor: 'default',
|
|
73
74
|
},
|
|
75
|
+
|
|
74
76
|
cursorInherit: {
|
|
75
77
|
// @ts-ignore
|
|
76
78
|
cursor: 'inherit',
|
|
77
79
|
},
|
|
78
80
|
fakeControl: {
|
|
81
|
+
...StyleSheet.absoluteFillObject,
|
|
79
82
|
alignItems: 'center',
|
|
80
83
|
backgroundColor: '#fff',
|
|
81
84
|
borderColor: '#657786',
|
|
@@ -105,12 +108,18 @@ const styles = StyleSheet.create({
|
|
|
105
108
|
...StyleSheet.absoluteFillObject,
|
|
106
109
|
height: '100%',
|
|
107
110
|
margin: 0,
|
|
108
|
-
opacity: 0,
|
|
109
111
|
padding: 0,
|
|
110
112
|
width: '100%',
|
|
113
|
+
// @ts-ignore
|
|
114
|
+
WebkitAppearance: 'none',
|
|
111
115
|
},
|
|
112
116
|
});
|
|
113
117
|
|
|
114
118
|
export default ExpoCheckbox;
|
|
115
119
|
|
|
120
|
+
ExpoCheckbox.isAvailableAsync = () => {
|
|
121
|
+
console.warn('Checkbox.isAvailableAsync() is deprecated and will be removed in future releases');
|
|
122
|
+
return Promise.resolve(true);
|
|
123
|
+
};
|
|
124
|
+
|
|
116
125
|
export const name = 'ExpoCheckbox';
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { UnavailabilityError } from '@unimodules/core';
|
|
2
|
-
const CheckboxUnavailable = () => {
|
|
3
|
-
throw new UnavailabilityError('expo-checkbox', 'Checkbox');
|
|
4
|
-
};
|
|
5
|
-
CheckboxUnavailable.isAvailableAsync = async () => false;
|
|
6
|
-
export default CheckboxUnavailable;
|
|
7
|
-
//# sourceMappingURL=CheckboxUnavailable.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxUnavailable.js","sourceRoot":"","sources":["../src/CheckboxUnavailable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIvD,MAAM,mBAAmB,GAAsB,GAAG,EAAE;IAClD,MAAM,IAAI,mBAAmB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,mBAAmB,CAAC,gBAAgB,GAAG,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC;AAEzD,eAAe,mBAAmB,CAAC","sourcesContent":["import { UnavailabilityError } from '@unimodules/core';\n\nimport { CheckboxComponent } from './Checkbox.types';\n\nconst CheckboxUnavailable: CheckboxComponent = () => {\n throw new UnavailabilityError('expo-checkbox', 'Checkbox');\n};\n\nCheckboxUnavailable.isAvailableAsync = async () => false;\n\nexport default CheckboxUnavailable;\n"]}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import CheckboxUnavailable from './CheckboxUnavailable';
|
|
3
|
-
function maybeRequireNativeCheckbox() {
|
|
4
|
-
try {
|
|
5
|
-
// Temporary for SDK 40 until we make our own native implementation
|
|
6
|
-
return require('react-native/Libraries/Components/CheckBox/CheckBox');
|
|
7
|
-
}
|
|
8
|
-
catch (error) {
|
|
9
|
-
return null;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Because of a bug, the `tintColors` property is only using `tintColors.true`.
|
|
14
|
-
* This API is a bit buggy, so let's remove that and only use `colors` which is passed as `tintColors.true`.
|
|
15
|
-
*
|
|
16
|
-
* @see https://github.com/facebook/react-native/blob/v0.63.4/Libraries/Components/Checkbox/Checkbox.android.js#L163
|
|
17
|
-
*/
|
|
18
|
-
function resolveTintColors(color) {
|
|
19
|
-
return color ? { true: color } : undefined;
|
|
20
|
-
}
|
|
21
|
-
// React Native 0.64+ doesn't have the Checkbox component
|
|
22
|
-
const NativeCheckbox = maybeRequireNativeCheckbox();
|
|
23
|
-
const ExpoCheckbox = props => {
|
|
24
|
-
const { color, ...other } = props;
|
|
25
|
-
const Checkbox = NativeCheckbox || CheckboxUnavailable;
|
|
26
|
-
return React.createElement(Checkbox, Object.assign({}, other, { tintColors: resolveTintColors(color) }));
|
|
27
|
-
};
|
|
28
|
-
ExpoCheckbox.isAvailableAsync = async () => !!NativeCheckbox;
|
|
29
|
-
export default ExpoCheckbox;
|
|
30
|
-
//# sourceMappingURL=ExpoCheckbox.android.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoCheckbox.android.js","sourceRoot":"","sources":["../src/ExpoCheckbox.android.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAExD,SAAS,0BAA0B;IACjC,IAAI;QACF,mEAAmE;QACnE,OAAO,OAAO,CAAC,qDAAqD,CAAC,CAAC;KACvE;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,KAA6B;IACtD,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC;AAED,yDAAyD;AACzD,MAAM,cAAc,GAAG,0BAA0B,EAAE,CAAC;AAEpD,MAAM,YAAY,GAAsB,KAAK,CAAC,EAAE;IAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,QAAQ,GAAG,cAAc,IAAI,mBAAmB,CAAC;IACvD,OAAO,oBAAC,QAAQ,oBAAK,KAAK,IAAE,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;AACvE,CAAC,CAAC;AAEF,YAAY,CAAC,gBAAgB,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;AAE7D,eAAe,YAAY,CAAC","sourcesContent":["import React from 'react';\n\nimport { CheckboxComponent, CheckboxProps } from './Checkbox.types';\nimport CheckboxUnavailable from './CheckboxUnavailable';\n\nfunction maybeRequireNativeCheckbox() {\n try {\n // Temporary for SDK 40 until we make our own native implementation\n return require('react-native/Libraries/Components/CheckBox/CheckBox');\n } catch (error) {\n return null;\n }\n}\n\n/**\n * Because of a bug, the `tintColors` property is only using `tintColors.true`.\n * This API is a bit buggy, so let's remove that and only use `colors` which is passed as `tintColors.true`.\n *\n * @see https://github.com/facebook/react-native/blob/v0.63.4/Libraries/Components/Checkbox/Checkbox.android.js#L163\n */\nfunction resolveTintColors(color: CheckboxProps['color']) {\n return color ? { true: color } : undefined;\n}\n\n// React Native 0.64+ doesn't have the Checkbox component\nconst NativeCheckbox = maybeRequireNativeCheckbox();\n\nconst ExpoCheckbox: CheckboxComponent = props => {\n const { color, ...other } = props;\n const Checkbox = NativeCheckbox || CheckboxUnavailable;\n return <Checkbox {...other} tintColors={resolveTintColors(color)} />;\n};\n\nExpoCheckbox.isAvailableAsync = async () => !!NativeCheckbox;\n\nexport default ExpoCheckbox;\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { UnavailabilityError } from '@unimodules/core';
|
|
2
|
-
|
|
3
|
-
import { CheckboxComponent } from './Checkbox.types';
|
|
4
|
-
|
|
5
|
-
const CheckboxUnavailable: CheckboxComponent = () => {
|
|
6
|
-
throw new UnavailabilityError('expo-checkbox', 'Checkbox');
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
CheckboxUnavailable.isAvailableAsync = async () => false;
|
|
10
|
-
|
|
11
|
-
export default CheckboxUnavailable;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
import { CheckboxComponent, CheckboxProps } from './Checkbox.types';
|
|
4
|
-
import CheckboxUnavailable from './CheckboxUnavailable';
|
|
5
|
-
|
|
6
|
-
function maybeRequireNativeCheckbox() {
|
|
7
|
-
try {
|
|
8
|
-
// Temporary for SDK 40 until we make our own native implementation
|
|
9
|
-
return require('react-native/Libraries/Components/CheckBox/CheckBox');
|
|
10
|
-
} catch (error) {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Because of a bug, the `tintColors` property is only using `tintColors.true`.
|
|
17
|
-
* This API is a bit buggy, so let's remove that and only use `colors` which is passed as `tintColors.true`.
|
|
18
|
-
*
|
|
19
|
-
* @see https://github.com/facebook/react-native/blob/v0.63.4/Libraries/Components/Checkbox/Checkbox.android.js#L163
|
|
20
|
-
*/
|
|
21
|
-
function resolveTintColors(color: CheckboxProps['color']) {
|
|
22
|
-
return color ? { true: color } : undefined;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// React Native 0.64+ doesn't have the Checkbox component
|
|
26
|
-
const NativeCheckbox = maybeRequireNativeCheckbox();
|
|
27
|
-
|
|
28
|
-
const ExpoCheckbox: CheckboxComponent = props => {
|
|
29
|
-
const { color, ...other } = props;
|
|
30
|
-
const Checkbox = NativeCheckbox || CheckboxUnavailable;
|
|
31
|
-
return <Checkbox {...other} tintColors={resolveTintColors(color)} />;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
ExpoCheckbox.isAvailableAsync = async () => !!NativeCheckbox;
|
|
35
|
-
|
|
36
|
-
export default ExpoCheckbox;
|