expo-checkbox 2.2.1 → 2.3.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
@@ -10,6 +10,16 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 2.3.0 — 2023-02-03
14
+
15
+ ### ⚠️ Notices
16
+
17
+ - Remove deprecated `isAvailableAsync()` method. ([#20961](https://github.com/expo/expo/pull/20961) by [@Simek](https://github.com/Simek))
18
+
19
+ ## 2.2.2 — 2022-11-02
20
+
21
+ _This version does not introduce any user-facing changes._
22
+
13
23
  ## 2.2.1 — 2022-10-25
14
24
 
15
25
  _This version does not introduce any user-facing changes._
@@ -26,7 +36,7 @@ _This version does not introduce any user-facing changes._
26
36
 
27
37
  ### 🛠 Breaking changes
28
38
 
29
- - Remove `isAvailableAsync()` and reimplement module in javascript. ([#13510](https://github.com/expo/expo/pull/13510) by [@ajsmth](https://github.com/ajsmth))
39
+ - Deprecate `isAvailableAsync()` and reimplement module in javascript. ([#13510](https://github.com/expo/expo/pull/13510) by [@ajsmth](https://github.com/ajsmth))
30
40
 
31
41
  ## 1.0.3 — 2021-03-10
32
42
 
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # expo-checkbox
2
2
 
3
- `expo-checkbox` provides a material design styled checkbox on Android and web.
3
+ `expo-checkbox` provides a basic `boolean` input element for Android, iOS and web.
4
4
 
5
5
  ## API documentation
6
6
 
@@ -1,3 +1,6 @@
1
- export { default } from './ExpoCheckbox';
1
+ import Checkbox from './ExpoCheckbox';
2
2
  export * from './Checkbox.types';
3
+ export { Checkbox };
4
+ /** @hidden */
5
+ export default Checkbox;
3
6
  //# sourceMappingURL=Checkbox.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../src/Checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,cAAc;AACd,eAAe,QAAQ,CAAC"}
package/build/Checkbox.js CHANGED
@@ -1,3 +1,6 @@
1
- export { default } from './ExpoCheckbox';
1
+ import Checkbox from './ExpoCheckbox';
2
2
  export * from './Checkbox.types';
3
+ export { Checkbox };
4
+ /** @hidden */
5
+ export default Checkbox;
3
6
  //# sourceMappingURL=Checkbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../src/Checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,cAAc,kBAAkB,CAAC","sourcesContent":["export { default } from './ExpoCheckbox';\nexport * from './Checkbox.types';\n"]}
1
+ {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../src/Checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,cAAc;AACd,eAAe,QAAQ,CAAC","sourcesContent":["import Checkbox from './ExpoCheckbox';\nexport * from './Checkbox.types';\n\nexport { Checkbox };\n\n/** @hidden */\nexport default Checkbox;\n"]}
@@ -1,11 +1,20 @@
1
+ import { SyntheticEvent } from 'react';
1
2
  import { ColorValue, NativeSyntheticEvent, ViewProps } from 'react-native';
2
- export declare type CheckboxEvent = NativeSyntheticEvent<{
3
- target: number;
3
+ export type CheckboxEvent = {
4
+ /**
5
+ * On native platforms, a `NodeHandle` for the element on which the event has occurred.
6
+ * On web, a DOM node on which the event has occurred.
7
+ */
8
+ target: any;
9
+ /**
10
+ * A boolean representing checkbox current value.
11
+ */
4
12
  value: boolean;
5
- }>;
6
- export declare type CheckboxProps = ViewProps & {
13
+ };
14
+ export type CheckboxProps = ViewProps & {
7
15
  /**
8
- * Value indicating if the checkbox should be rendered as checked or not. Default value is `false`.
16
+ * Value indicating if the checkbox should be rendered as checked or not.
17
+ * @default false
9
18
  */
10
19
  value?: boolean;
11
20
  /**
@@ -20,17 +29,11 @@ export declare type CheckboxProps = ViewProps & {
20
29
  * Callback that is invoked when the user presses the checkbox.
21
30
  * @param event A native event containing the checkbox change.
22
31
  */
23
- onChange?: (event: CheckboxEvent) => void;
32
+ onChange?: (event: NativeSyntheticEvent<CheckboxEvent> | SyntheticEvent<HTMLInputElement, CheckboxEvent>) => void;
24
33
  /**
25
34
  * Callback that is invoked when the user presses the checkbox.
26
35
  * @param value A boolean indicating the new checked state of the checkbox.
27
36
  */
28
37
  onValueChange?: (value: boolean) => void;
29
38
  };
30
- export declare type CheckboxComponent = React.FC<CheckboxProps> & {
31
- /**
32
- * @deprecated
33
- */
34
- isAvailableAsync: () => Promise<boolean>;
35
- };
36
39
  //# sourceMappingURL=Checkbox.types.d.ts.map
@@ -1 +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
+ {"version":3,"file":"Checkbox.types.d.ts","sourceRoot":"","sources":["../src/Checkbox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,MAAM,EAAE,GAAG,CAAC;IACZ;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAGF,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG;IACtC;;;OAGG;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,CACT,KAAK,EAAE,oBAAoB,CAAC,aAAa,CAAC,GAAG,cAAc,CAAC,gBAAgB,EAAE,aAAa,CAAC,KACzF,IAAI,CAAC;IACV;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,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\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
+ {"version":3,"file":"Checkbox.types.js","sourceRoot":"","sources":["../src/Checkbox.types.ts"],"names":[],"mappings":"","sourcesContent":["import { SyntheticEvent } from 'react';\nimport { ColorValue, NativeSyntheticEvent, ViewProps } from 'react-native';\n\nexport type CheckboxEvent = {\n /**\n * On native platforms, a `NodeHandle` for the element on which the event has occurred.\n * On web, a DOM node on which the event has occurred.\n */\n target: any;\n /**\n * A boolean representing checkbox current value.\n */\n value: boolean;\n};\n\n// @needsAudit\nexport type CheckboxProps = ViewProps & {\n /**\n * Value indicating if the checkbox should be rendered as checked or not.\n * @default 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?: (\n event: NativeSyntheticEvent<CheckboxEvent> | SyntheticEvent<HTMLInputElement, CheckboxEvent>\n ) => 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"]}
@@ -1,4 +1,7 @@
1
- import { CheckboxComponent } from './Checkbox.types';
2
- declare const ExpoCheckbox: CheckboxComponent;
3
- export default ExpoCheckbox;
1
+ import React from 'react';
2
+ import { CheckboxProps } from './Checkbox.types';
3
+ export default class ExpoCheckbox extends React.PureComponent<CheckboxProps> {
4
+ private handleChange;
5
+ render(): JSX.Element;
6
+ }
4
7
  //# sourceMappingURL=ExpoCheckbox.d.ts.map
@@ -1 +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
+ {"version":3,"file":"ExpoCheckbox.d.ts","sourceRoot":"","sources":["../src/ExpoCheckbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKjD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC;IAC1E,OAAO,CAAC,YAAY,CAElB;IAEF,MAAM;CA8BP"}
@@ -1,26 +1,26 @@
1
- import React, { useCallback } from 'react';
1
+ import React from 'react';
2
2
  import { StyleSheet, Image, Pressable, Platform } from 'react-native';
3
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;
4
+ export default class ExpoCheckbox extends React.PureComponent {
5
+ handleChange = () => {
6
+ this.props.onValueChange?.(!this.props.value);
7
+ };
8
+ render() {
9
+ const { color, disabled, onChange, onValueChange, style, value, ...other } = this.props;
10
+ return (React.createElement(Pressable, { ...other, disabled: disabled,
11
+ // Announces "checked" status and "checkbox" as the focused element
12
+ accessibilityRole: "checkbox", accessibilityState: { disabled, checked: value }, style: [
13
+ styles.root,
14
+ style,
15
+ value && styles.checked,
16
+ !!color && { backgroundColor: value ? color : undefined, borderColor: color },
17
+ disabled && styles.disabled,
18
+ value && disabled && styles.checkedAndDisabled,
19
+ ], onPress: this.handleChange }, value && (React.createElement(Image, { source: {
20
+ uri: checkmarkBase64,
21
+ }, style: StyleSheet.absoluteFill }))));
22
+ }
23
+ }
24
24
  const defaultEnabledColor = Platform.select({
25
25
  ios: '#007AFF',
26
26
  android: '#009688',
@@ -49,8 +49,4 @@ const styles = StyleSheet.create({
49
49
  borderColor: disabledCheckedGrayColor,
50
50
  },
51
51
  });
52
- ExpoCheckbox.isAvailableAsync = () => {
53
- console.warn('Checkbox.isAvailableAsync() is deprecated and will be removed in future releases');
54
- return Promise.resolve(true);
55
- };
56
52
  //# sourceMappingURL=ExpoCheckbox.js.map
@@ -1 +1 @@
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"]}
1
+ {"version":3,"file":"ExpoCheckbox.js","sourceRoot":"","sources":["../src/ExpoCheckbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAItE,MAAM,eAAe,GACnB,osJAAosJ,CAAC;AAEvsJ,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,KAAK,CAAC,aAA4B;IAClE,YAAY,GAAG,GAAG,EAAE;QAC1B,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,MAAM;QACJ,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAExF,OAAO,CACL,oBAAC,SAAS,OACJ,KAAK,EACT,QAAQ,EAAE,QAAQ;YAClB,mEAAmE;YACnE,iBAAiB,EAAC,UAAU,EAC5B,kBAAkB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAChD,KAAK,EAAE;gBACL,MAAM,CAAC,IAAI;gBACX,KAAK;gBACL,KAAK,IAAI,MAAM,CAAC,OAAO;gBACvB,CAAC,CAAC,KAAK,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE;gBAC7E,QAAQ,IAAI,MAAM,CAAC,QAAQ;gBAC3B,KAAK,IAAI,QAAQ,IAAI,MAAM,CAAC,kBAAkB;aAC/C,EACD,OAAO,EAAE,IAAI,CAAC,YAAY,IACzB,KAAK,IAAI,CACR,oBAAC,KAAK,IACJ,MAAM,EAAE;gBACN,GAAG,EAAE,eAAe;aACrB,EACD,KAAK,EAAE,UAAU,CAAC,YAAY,GAC9B,CACH,CACS,CACb,CAAC;IACJ,CAAC;CACF;AAED,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","sourcesContent":["import React from 'react';\nimport { StyleSheet, Image, Pressable, Platform } from 'react-native';\n\nimport { CheckboxProps } from './Checkbox.types';\n\nconst checkmarkBase64 =\n 'data:image/png;base64,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';\n\nexport default class ExpoCheckbox extends React.PureComponent<CheckboxProps> {\n private handleChange = () => {\n this.props.onValueChange?.(!this.props.value);\n };\n\n render() {\n const { color, disabled, onChange, onValueChange, style, value, ...other } = this.props;\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={this.handleChange}>\n {value && (\n <Image\n source={{\n uri: checkmarkBase64,\n }}\n style={StyleSheet.absoluteFill}\n />\n )}\n </Pressable>\n );\n }\n}\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"]}
@@ -7,8 +7,11 @@
7
7
  *
8
8
  * see: https://github.com/necolas/react-native-web
9
9
  */
10
- import { CheckboxComponent } from './Checkbox.types';
11
- declare const ExpoCheckbox: CheckboxComponent;
12
- export default ExpoCheckbox;
10
+ import React from 'react';
11
+ import { CheckboxProps } from './Checkbox.types';
12
+ export default class ExpoCheckbox extends React.PureComponent<CheckboxProps> {
13
+ private handleChange;
14
+ render(): JSX.Element;
15
+ }
13
16
  export declare const name = "ExpoCheckbox";
14
17
  //# sourceMappingURL=ExpoCheckbox.web.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"ExpoCheckbox.web.d.ts","sourceRoot":"","sources":["../src/ExpoCheckbox.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,aAAa,EAAiB,MAAM,kBAAkB,CAAC;AAEhE,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC;IAC1E,OAAO,CAAC,YAAY,CAKlB;IAEF,MAAM;CAkCP;AAyDD,eAAO,MAAM,IAAI,iBAAiB,CAAC"}
@@ -7,38 +7,40 @@
7
7
  *
8
8
  * see: https://github.com/necolas/react-native-web
9
9
  */
10
- import React, { useCallback } from 'react';
10
+ import React from 'react';
11
11
  // @ts-ignore
12
12
  import { StyleSheet, View, unstable_createElement as createElement } from 'react-native';
13
- const ExpoCheckbox = (props) => {
14
- const { color, disabled, onChange, onValueChange, style, value, ...other } = props;
15
- const handleChange = useCallback((event) => {
13
+ export default class ExpoCheckbox extends React.PureComponent {
14
+ handleChange = (event) => {
16
15
  const value = event.nativeEvent.target.checked;
17
16
  event.nativeEvent.value = value;
18
- onChange && onChange(event);
19
- onValueChange && onValueChange(value);
20
- }, [onChange, onValueChange]);
21
- const fakeControl = (React.createElement(View, { pointerEvents: "none", style: [
22
- styles.fakeControl,
23
- value && styles.fakeControlChecked,
24
- // custom color
25
- !!color && { backgroundColor: value ? color : undefined, borderColor: color },
26
- disabled && styles.fakeControlDisabled,
27
- value && disabled && styles.fakeControlCheckedAndDisabled,
28
- ] }));
29
- const nativeControl = createElement('input', {
30
- accessibilityState: { disabled, checked: value },
31
- checked: value,
32
- disabled,
33
- onChange: handleChange,
34
- style: [styles.nativeControl, styles.cursorInherit],
35
- type: 'checkbox',
36
- });
37
- return (React.createElement(View, { ...other, style: [styles.root, style, disabled && styles.cursorDefault] },
38
- nativeControl,
39
- fakeControl));
40
- };
41
- ExpoCheckbox.displayName = 'Checkbox';
17
+ this.props.onChange?.(event);
18
+ this.props.onValueChange?.(value);
19
+ };
20
+ render() {
21
+ const { color, disabled, onChange, onValueChange, style, value, ...other } = this.props;
22
+ const fakeControl = (React.createElement(View, { pointerEvents: "none", style: [
23
+ styles.fakeControl,
24
+ value && styles.fakeControlChecked,
25
+ // custom color
26
+ !!color && { backgroundColor: value ? color : undefined, borderColor: color },
27
+ disabled && styles.fakeControlDisabled,
28
+ value && disabled && styles.fakeControlCheckedAndDisabled,
29
+ ] }));
30
+ const nativeControl = createElement('input', {
31
+ accessibilityChecked: value,
32
+ accessibilityDisabled: disabled,
33
+ checked: value,
34
+ disabled,
35
+ onChange: this.handleChange,
36
+ style: [styles.nativeControl, styles.cursorInherit],
37
+ type: 'checkbox',
38
+ });
39
+ return (React.createElement(View, { ...other, style: [styles.root, style, disabled && styles.cursorDefault] },
40
+ nativeControl,
41
+ fakeControl));
42
+ }
43
+ }
42
44
  const styles = StyleSheet.create({
43
45
  root: {
44
46
  // @ts-ignore
@@ -91,10 +93,5 @@ const styles = StyleSheet.create({
91
93
  WebkitAppearance: 'none',
92
94
  },
93
95
  });
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
- };
99
96
  export const name = 'ExpoCheckbox';
100
97
  //# sourceMappingURL=ExpoCheckbox.web.js.map
@@ -1 +1 @@
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"]}
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 from 'react';\n// @ts-ignore\nimport { StyleSheet, View, unstable_createElement as createElement } from 'react-native';\n\nimport { CheckboxProps, CheckboxEvent } from './Checkbox.types';\n\nexport default class ExpoCheckbox extends React.PureComponent<CheckboxProps> {\n private handleChange = (event: React.SyntheticEvent<HTMLInputElement, CheckboxEvent>) => {\n const value = event.nativeEvent.target.checked;\n event.nativeEvent.value = value;\n this.props.onChange?.(event);\n this.props.onValueChange?.(value);\n };\n\n render() {\n const { color, disabled, onChange, onValueChange, style, value, ...other } = this.props;\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 accessibilityChecked: value,\n accessibilityDisabled: disabled,\n checked: value,\n disabled,\n onChange: this.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}\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 const name = 'ExpoCheckbox';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-checkbox",
3
- "version": "2.2.1",
3
+ "version": "2.3.0",
4
4
  "description": "Basic checkbox for iOS, Android, and web",
5
5
  "main": "build/Checkbox.js",
6
6
  "types": "build/Checkbox.d.ts",
@@ -30,10 +30,13 @@
30
30
  "license": "MIT",
31
31
  "homepage": "https://docs.expo.dev/versions/latest/sdk/checkbox",
32
32
  "devDependencies": {
33
+ "@testing-library/jest-dom": "^5.16.5",
34
+ "@testing-library/react": "^13.4.0",
35
+ "@testing-library/react-native": "^11.3.0",
33
36
  "expo-module-scripts": "^3.0.0"
34
37
  },
35
38
  "jest": {
36
- "preset": "expo-module-scripts/enzyme"
39
+ "preset": "expo-module-scripts"
37
40
  },
38
- "gitHead": "eab2b09c735fb0fc2bf734a3f29a6593adba3838"
41
+ "gitHead": "1815e2eaad8c753588c7b1eb74420174a28e01f4"
39
42
  }
package/src/Checkbox.ts CHANGED
@@ -1,2 +1,7 @@
1
- export { default } from './ExpoCheckbox';
1
+ import Checkbox from './ExpoCheckbox';
2
2
  export * from './Checkbox.types';
3
+
4
+ export { Checkbox };
5
+
6
+ /** @hidden */
7
+ export default Checkbox;
@@ -1,12 +1,23 @@
1
+ import { SyntheticEvent } from 'react';
1
2
  import { ColorValue, NativeSyntheticEvent, ViewProps } from 'react-native';
2
3
 
3
- // @docsMissing
4
- export type CheckboxEvent = NativeSyntheticEvent<{ target: number; value: boolean }>;
4
+ export type CheckboxEvent = {
5
+ /**
6
+ * On native platforms, a `NodeHandle` for the element on which the event has occurred.
7
+ * On web, a DOM node on which the event has occurred.
8
+ */
9
+ target: any;
10
+ /**
11
+ * A boolean representing checkbox current value.
12
+ */
13
+ value: boolean;
14
+ };
5
15
 
6
16
  // @needsAudit
7
17
  export type CheckboxProps = ViewProps & {
8
18
  /**
9
- * Value indicating if the checkbox should be rendered as checked or not. Default value is `false`.
19
+ * Value indicating if the checkbox should be rendered as checked or not.
20
+ * @default false
10
21
  */
11
22
  value?: boolean;
12
23
  /**
@@ -21,18 +32,12 @@ export type CheckboxProps = ViewProps & {
21
32
  * Callback that is invoked when the user presses the checkbox.
22
33
  * @param event A native event containing the checkbox change.
23
34
  */
24
- onChange?: (event: CheckboxEvent) => void;
35
+ onChange?: (
36
+ event: NativeSyntheticEvent<CheckboxEvent> | SyntheticEvent<HTMLInputElement, CheckboxEvent>
37
+ ) => void;
25
38
  /**
26
39
  * Callback that is invoked when the user presses the checkbox.
27
40
  * @param value A boolean indicating the new checked state of the checkbox.
28
41
  */
29
42
  onValueChange?: (value: boolean) => void;
30
43
  };
31
-
32
- // @docsMissing
33
- export type CheckboxComponent = React.FC<CheckboxProps> & {
34
- /**
35
- * @deprecated
36
- */
37
- isAvailableAsync: () => Promise<boolean>;
38
- };
@@ -1,49 +1,47 @@
1
- import React, { useCallback } from 'react';
1
+ import React from 'react';
2
2
  import { StyleSheet, Image, Pressable, Platform } from 'react-native';
3
3
 
4
- import { CheckboxComponent } from './Checkbox.types';
4
+ import { CheckboxProps } from './Checkbox.types';
5
5
 
6
6
  const checkmarkBase64 =
7
7
  'data:image/png;base64,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';
8
8
 
9
- const ExpoCheckbox: CheckboxComponent = (props) => {
10
- const { color, disabled, onChange, onValueChange, style, value, ...other } = props;
9
+ export default class ExpoCheckbox extends React.PureComponent<CheckboxProps> {
10
+ private handleChange = () => {
11
+ this.props.onValueChange?.(!this.props.value);
12
+ };
11
13
 
12
- const handleChange = useCallback(() => {
13
- onValueChange && onValueChange(!value);
14
- }, [onValueChange, value]);
14
+ render() {
15
+ const { color, disabled, onChange, onValueChange, style, value, ...other } = this.props;
15
16
 
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;
17
+ return (
18
+ <Pressable
19
+ {...other}
20
+ disabled={disabled}
21
+ // Announces "checked" status and "checkbox" as the focused element
22
+ accessibilityRole="checkbox"
23
+ accessibilityState={{ disabled, checked: value }}
24
+ style={[
25
+ styles.root,
26
+ style,
27
+ value && styles.checked,
28
+ !!color && { backgroundColor: value ? color : undefined, borderColor: color },
29
+ disabled && styles.disabled,
30
+ value && disabled && styles.checkedAndDisabled,
31
+ ]}
32
+ onPress={this.handleChange}>
33
+ {value && (
34
+ <Image
35
+ source={{
36
+ uri: checkmarkBase64,
37
+ }}
38
+ style={StyleSheet.absoluteFill}
39
+ />
40
+ )}
41
+ </Pressable>
42
+ );
43
+ }
44
+ }
47
45
 
48
46
  const defaultEnabledColor = Platform.select({
49
47
  ios: '#007AFF',
@@ -74,8 +72,3 @@ const styles = StyleSheet.create({
74
72
  borderColor: disabledCheckedGrayColor,
75
73
  },
76
74
  });
77
-
78
- ExpoCheckbox.isAvailableAsync = () => {
79
- console.warn('Checkbox.isAvailableAsync() is deprecated and will be removed in future releases');
80
- return Promise.resolve(true);
81
- };
@@ -8,57 +8,55 @@
8
8
  * see: https://github.com/necolas/react-native-web
9
9
  */
10
10
 
11
- import React, { useCallback } from 'react';
11
+ import React from 'react';
12
12
  // @ts-ignore
13
13
  import { StyleSheet, View, unstable_createElement as createElement } from 'react-native';
14
14
 
15
- import { CheckboxComponent, CheckboxEvent } from './Checkbox.types';
15
+ import { CheckboxProps, CheckboxEvent } from './Checkbox.types';
16
16
 
17
- const ExpoCheckbox: CheckboxComponent = (props) => {
18
- const { color, disabled, onChange, onValueChange, style, value, ...other } = props;
17
+ export default class ExpoCheckbox extends React.PureComponent<CheckboxProps> {
18
+ private handleChange = (event: React.SyntheticEvent<HTMLInputElement, CheckboxEvent>) => {
19
+ const value = event.nativeEvent.target.checked;
20
+ event.nativeEvent.value = value;
21
+ this.props.onChange?.(event);
22
+ this.props.onValueChange?.(value);
23
+ };
19
24
 
20
- const handleChange = useCallback(
21
- (event: CheckboxEvent) => {
22
- const value = (event.nativeEvent.target as unknown as HTMLInputElement).checked;
23
- event.nativeEvent.value = value;
24
- onChange && onChange(event);
25
- onValueChange && onValueChange(value);
26
- },
27
- [onChange, onValueChange]
28
- );
25
+ render() {
26
+ const { color, disabled, onChange, onValueChange, style, value, ...other } = this.props;
29
27
 
30
- const fakeControl = (
31
- <View
32
- pointerEvents="none"
33
- style={[
34
- styles.fakeControl,
35
- value && styles.fakeControlChecked,
36
- // custom color
37
- !!color && { backgroundColor: value ? color : undefined, borderColor: color },
38
- disabled && styles.fakeControlDisabled,
39
- value && disabled && styles.fakeControlCheckedAndDisabled,
40
- ]}
41
- />
42
- );
28
+ const fakeControl = (
29
+ <View
30
+ pointerEvents="none"
31
+ style={[
32
+ styles.fakeControl,
33
+ value && styles.fakeControlChecked,
34
+ // custom color
35
+ !!color && { backgroundColor: value ? color : undefined, borderColor: color },
36
+ disabled && styles.fakeControlDisabled,
37
+ value && disabled && styles.fakeControlCheckedAndDisabled,
38
+ ]}
39
+ />
40
+ );
43
41
 
44
- const nativeControl = createElement('input', {
45
- accessibilityState: { disabled, checked: value },
46
- checked: value,
47
- disabled,
48
- onChange: handleChange,
49
- style: [styles.nativeControl, styles.cursorInherit],
50
- type: 'checkbox',
51
- });
42
+ const nativeControl = createElement('input', {
43
+ accessibilityChecked: value,
44
+ accessibilityDisabled: disabled,
45
+ checked: value,
46
+ disabled,
47
+ onChange: this.handleChange,
48
+ style: [styles.nativeControl, styles.cursorInherit],
49
+ type: 'checkbox',
50
+ });
52
51
 
53
- return (
54
- <View {...other} style={[styles.root, style, disabled && styles.cursorDefault]}>
55
- {nativeControl}
56
- {fakeControl}
57
- </View>
58
- );
59
- };
60
-
61
- ExpoCheckbox.displayName = 'Checkbox';
52
+ return (
53
+ <View {...other} style={[styles.root, style, disabled && styles.cursorDefault]}>
54
+ {nativeControl}
55
+ {fakeControl}
56
+ </View>
57
+ );
58
+ }
59
+ }
62
60
 
63
61
  const styles = StyleSheet.create({
64
62
  root: {
@@ -115,11 +113,4 @@ const styles = StyleSheet.create({
115
113
  },
116
114
  });
117
115
 
118
- export default ExpoCheckbox;
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
-
125
116
  export const name = 'ExpoCheckbox';