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 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.io/versions/latest/sdk/checkbox/).
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
 
@@ -1,2 +1,3 @@
1
1
  export { default } from './ExpoCheckbox';
2
2
  export * from './Checkbox.types';
3
+ //# sourceMappingURL=Checkbox.d.ts.map
@@ -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 interface CheckboxProps extends ViewProps {
7
- /** The value of the checkbox. If true the checkbox will be turned on. Default value is false. */
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
- /** If true the user won't be able to toggle the checkbox. Default value is false. */
11
+ /**
12
+ * If the checkbox is disabled, it becomes opaque and uncheckable.
13
+ */
10
14
  disabled?: boolean;
11
- /** Sets the tint color of the checkbox */
15
+ /**
16
+ * The tint or color of the checkbox. This overrides the disabled opaque style.
17
+ */
12
18
  color?: ColorValue;
13
- /** Used in case the props change removes the component. */
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
- /** Invoked with the new value when the value changes. */
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 interface CheckboxProps extends ViewProps {\n /** The value of the checkbox. If true the checkbox will be turned on. Default value is false. */\n value?: boolean;\n /** If true the user won't be able to toggle the checkbox. Default value is false. */\n disabled?: boolean;\n /** Sets the tint color of the checkbox */\n color?: ColorValue;\n /** Used in case the props change removes the component. */\n onChange?: (event: CheckboxEvent) => void;\n /** Invoked with the new value when the value changes. */\n onValueChange?: (value: boolean) => void;\n}\n\nexport type CheckboxComponent = React.FC<CheckboxProps> & {\n isAvailableAsync: () => Promise<boolean>;\n};\n"]}
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"]}
@@ -1 +1,4 @@
1
- export { default } from './CheckboxUnavailable';
1
+ import { CheckboxComponent } from './Checkbox.types';
2
+ declare const ExpoCheckbox: CheckboxComponent;
3
+ export default ExpoCheckbox;
4
+ //# sourceMappingURL=ExpoCheckbox.d.ts.map
@@ -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"}
@@ -1,2 +1,56 @@
1
- export { default } from './CheckboxUnavailable';
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,uBAAuB,CAAC","sourcesContent":["export { default } from './CheckboxUnavailable';\n"]}
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,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';\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"]}
@@ -11,3 +11,4 @@ import { CheckboxComponent } from './Checkbox.types';
11
11
  declare const ExpoCheckbox: CheckboxComponent;
12
12
  export default ExpoCheckbox;
13
13
  export declare const name = "ExpoCheckbox";
14
+ //# sourceMappingURL=ExpoCheckbox.web.d.ts.map
@@ -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, Object.assign({}, other, { style: [styles.root, style, disabled && styles.cursorDefault] }),
37
- fakeControl,
38
- nativeControl));
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,CAAC,EAAE;IAC9C,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,CAC9B,CAAC,KAAoB,EAAE,EAAE;QACvB,MAAM,KAAK,GAAK,KAAK,CAAC,WAAW,CAAC,MAAuC,CAAC,OAAO,CAAC;QAClF,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;QAChC,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,aAAa,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,EACD,CAAC,QAAQ,EAAE,aAAa,CAAC,CAC1B,CAAC;IAEF,MAAM,WAAW,GAAG,CAClB,oBAAC,IAAI,IACH,KAAK,EAAE;YACL,MAAM,CAAC,WAAW;YAClB,KAAK,IAAI,MAAM,CAAC,kBAAkB;YAClC,eAAe;YACf,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,mBAAmB;YACtC,KAAK,IAAI,QAAQ,IAAI,MAAM,CAAC,6BAA6B;SAC1D,GACD,CACH,CAAC;IAEF,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,EAAE;QAC3C,OAAO,EAAE,KAAK;QACd,QAAQ;QACR,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC;QACnD,IAAI,EAAE,UAAU;KACjB,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,IAAI,oBAAK,KAAK,IAAE,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC;QAC3E,WAAW;QACX,aAAa,CACT,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,YAAY,CAAC,WAAW,GAAG,UAAU,CAAC;AACtC,YAAY,CAAC,gBAAgB,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC;AAEjD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE;QACJ,aAAa;QACb,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,EAAE;KACV;IACD,aAAa,EAAE;QACb,aAAa;QACb,MAAM,EAAE,SAAS;KAClB;IACD,aAAa,EAAE;QACb,aAAa;QACb,MAAM,EAAE,SAAS;KAClB;IACD,WAAW,EAAE;QACX,UAAU,EAAE,QAAQ;QACpB,eAAe,EAAE,MAAM;QACvB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,MAAM;QACd,cAAc,EAAE,QAAQ;QACxB,KAAK,EAAE,MAAM;KACd;IACD,kBAAkB,EAAE;QAClB,eAAe,EAAE,SAAS;QAC1B,aAAa;QACb,eAAe,EACb,m4BAAm4B;QACr4B,gBAAgB,EAAE,WAAW;QAC7B,WAAW,EAAE,SAAS;KACvB;IACD,mBAAmB,EAAE;QACnB,WAAW,EAAE,SAAS;KACvB;IACD,6BAA6B,EAAE;QAC7B,eAAe,EAAE,SAAS;QAC1B,WAAW,EAAE,SAAS;KACvB;IACD,aAAa,EAAE;QACb,GAAG,UAAU,CAAC,kBAAkB;QAChC,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,MAAM;KACd;CACF,CAAC,CAAC;AAEH,eAAe,YAAY,CAAC;AAE5B,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAC","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 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 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 {fakeControl}\n {nativeControl}\n </View>\n );\n};\n\nExpoCheckbox.displayName = 'Checkbox';\nExpoCheckbox.isAvailableAsync = async () => true;\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 cursorInherit: {\n // @ts-ignore\n cursor: 'inherit',\n },\n fakeControl: {\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 opacity: 0,\n padding: 0,\n width: '100%',\n },\n});\n\nexport default ExpoCheckbox;\n\nexport const name = 'ExpoCheckbox';\n"]}
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.2",
4
- "description": "Checkbox for Android and web",
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.io/versions/latest/sdk/checkbox",
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": "^1.2.0"
33
+ "expo-module-scripts": "^2.0.0"
38
34
  },
39
35
  "jest": {
40
36
  "preset": "expo-module-scripts/enzyme"
41
37
  },
42
- "gitHead": "e362887ddc6ba4e3518efd623d64b3cbd301a6a9"
38
+ "gitHead": "89a27c0ca0ca8becd7546697298e874a15e94faf"
43
39
  }
@@ -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
- export interface CheckboxProps extends ViewProps {
6
- /** The value of the checkbox. If true the checkbox will be turned on. Default value is false. */
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
- /** If true the user won't be able to toggle the checkbox. Default value is false. */
12
+ /**
13
+ * If the checkbox is disabled, it becomes opaque and uncheckable.
14
+ */
9
15
  disabled?: boolean;
10
- /** Sets the tint color of the checkbox */
16
+ /**
17
+ * The tint or color of the checkbox. This overrides the disabled opaque style.
18
+ */
11
19
  color?: ColorValue;
12
- /** Used in case the props change removes the component. */
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
- /** Invoked with the new value when the value changes. */
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
  };
@@ -1 +1,81 @@
1
- export { default } from './CheckboxUnavailable';
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
+ };
@@ -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 = ((event.nativeEvent.target as unknown) as HTMLInputElement).checked;
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,3 +0,0 @@
1
- import { CheckboxComponent } from './Checkbox.types';
2
- declare const CheckboxUnavailable: CheckboxComponent;
3
- export default CheckboxUnavailable;
@@ -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,3 +0,0 @@
1
- import { CheckboxComponent } from './Checkbox.types';
2
- declare const ExpoCheckbox: CheckboxComponent;
3
- export default ExpoCheckbox;
@@ -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;