ferns-ui 1.8.0 → 1.9.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.
Files changed (47) hide show
  1. package/dist/BooleanField.d.ts +2 -2
  2. package/dist/BooleanField.js.map +1 -1
  3. package/dist/Box.js +1 -1
  4. package/dist/Box.js.map +1 -1
  5. package/dist/Common.d.ts +5 -0
  6. package/dist/CustomSelectField.d.ts +2 -2
  7. package/dist/CustomSelectField.js.map +1 -1
  8. package/dist/DataTable.d.ts +2 -2
  9. package/dist/DataTable.js.map +1 -1
  10. package/dist/DateTimeField.d.ts +2 -2
  11. package/dist/DateTimeField.js +20 -7
  12. package/dist/DateTimeField.js.map +1 -1
  13. package/dist/DateTimeField.test.js +5 -5
  14. package/dist/DateTimeField.test.js.map +1 -1
  15. package/dist/FernsProvider.d.ts +3 -3
  16. package/dist/FernsProvider.js.map +1 -1
  17. package/dist/Icon.d.ts +2 -2
  18. package/dist/Icon.js.map +1 -1
  19. package/dist/Pagination.d.ts +2 -2
  20. package/dist/Pagination.js.map +1 -1
  21. package/dist/SegmentedControl.d.ts +2 -2
  22. package/dist/SegmentedControl.js.map +1 -1
  23. package/dist/Signature.native.d.ts +2 -2
  24. package/dist/Signature.native.js.map +1 -1
  25. package/dist/Spinner.d.ts +2 -2
  26. package/dist/Spinner.js.map +1 -1
  27. package/dist/TapToEdit.d.ts +2 -2
  28. package/dist/TapToEdit.js +11 -1
  29. package/dist/TapToEdit.js.map +1 -1
  30. package/dist/TimezonePicker.d.ts +2 -2
  31. package/dist/TimezonePicker.js.map +1 -1
  32. package/package.json +12 -1
  33. package/src/BooleanField.tsx +3 -3
  34. package/src/Box.tsx +1 -1
  35. package/src/Common.ts +6 -0
  36. package/src/CustomSelectField.tsx +3 -3
  37. package/src/DataTable.tsx +10 -10
  38. package/src/DateTimeField.test.tsx +5 -5
  39. package/src/DateTimeField.tsx +24 -9
  40. package/src/FernsProvider.tsx +6 -6
  41. package/src/Icon.tsx +3 -3
  42. package/src/Pagination.tsx +15 -15
  43. package/src/SegmentedControl.tsx +2 -2
  44. package/src/Signature.native.tsx +2 -2
  45. package/src/Spinner.tsx +2 -2
  46. package/src/TapToEdit.tsx +26 -9
  47. package/src/TimezonePicker.tsx +2 -2
@@ -1,8 +1,8 @@
1
- import React from "react";
1
+ import { FC } from "react";
2
2
  interface Props {
3
3
  onChange: (signature: string) => void;
4
4
  onStart?: () => void;
5
5
  onEnd?: () => void;
6
6
  }
7
- export declare const Signature: React.FC<Props>;
7
+ export declare const Signature: FC<Props>;
8
8
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"Signature.native.js","sourceRoot":"","sources":["../src/Signature.native.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,MAAM,EAAC,MAAM,OAAO,CAAC;AACpC,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,eAAmC,MAAM,+BAA+B,CAAC;AAEhF,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAQjC,MAAM,KAAK,GAAG,wDAAwD,CAAC;AAEvE,MAAM,CAAC,MAAM,SAAS,GAAoB,CAAC,EAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAQ,EAAE,EAAE;IAC9E,MAAM,GAAG,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAC3C,MAAM,EAAC,KAAK,EAAC,GAAG,QAAQ,EAAE,CAAC;IAE3B,MAAM,WAAW,GAAG,GAAG,EAAE;;QACvB,MAAA,GAAG,CAAC,OAAO,0CAAE,cAAc,EAAE,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,2DAA2D;IAC3D,4FAA4F;IAC5F,MAAM,SAAS,GAAG,GAAG,EAAE;;QACrB,MAAA,GAAG,CAAC,OAAO,0CAAE,aAAa,EAAE,CAAC;QAC7B,KAAK,IAAI,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,IAAI,IAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAC;QAC1B,oBAAC,IAAI,IAAC,KAAK,EAAE,EAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAC;YAC1E,oBAAC,eAAe,IACd,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EACnC,cAAc,QACd,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAC5B,CACG;QACP,oBAAC,IAAI,IAAC,KAAK,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC;YACjC,oBAAC,IAAI,IACH,KAAK,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAC,EAChE,OAAO,EAAE,WAAW,YAGf,CACF,CACF,CACR,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Signature.native.js","sourceRoot":"","sources":["../src/Signature.native.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAK,MAAM,EAAC,MAAM,OAAO,CAAC;AACxC,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,eAAmC,MAAM,+BAA+B,CAAC;AAEhF,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAQjC,MAAM,KAAK,GAAG,wDAAwD,CAAC;AAEvE,MAAM,CAAC,MAAM,SAAS,GAAc,CAAC,EAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAQ,EAAE,EAAE;IACxE,MAAM,GAAG,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAC3C,MAAM,EAAC,KAAK,EAAC,GAAG,QAAQ,EAAE,CAAC;IAE3B,MAAM,WAAW,GAAG,GAAG,EAAE;;QACvB,MAAA,GAAG,CAAC,OAAO,0CAAE,cAAc,EAAE,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,2DAA2D;IAC3D,4FAA4F;IAC5F,MAAM,SAAS,GAAG,GAAG,EAAE;;QACrB,MAAA,GAAG,CAAC,OAAO,0CAAE,aAAa,EAAE,CAAC;QAC7B,KAAK,IAAI,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,IAAI,IAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAC;QAC1B,oBAAC,IAAI,IAAC,KAAK,EAAE,EAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAC;YAC1E,oBAAC,eAAe,IACd,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EACnC,cAAc,QACd,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAC5B,CACG;QACP,oBAAC,IAAI,IAAC,KAAK,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC;YACjC,oBAAC,IAAI,IACH,KAAK,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAC,EAChE,OAAO,EAAE,WAAW,YAGf,CACF,CACF,CACR,CAAC;AACJ,CAAC,CAAC"}
package/dist/Spinner.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { ReactElement } from "react";
1
+ import { FC } from "react";
2
2
  import { SpinnerProps } from "./Common";
3
- export declare const Spinner: ({ size, color }: SpinnerProps) => ReactElement | null;
3
+ export declare const Spinner: FC<SpinnerProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.js","sourceRoot":"","sources":["../src/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAe,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAC,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,OAAO,EAAe,EAAuB,EAAE;IAC3F,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,EAAC,KAAK,EAAC,GAAG,QAAQ,EAAE,CAAC;IAE3B,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;IAC9C,CAAC;SAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QAC5B,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;IAC9C,CAAC;SAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;IAC7C,CAAC;SAAM,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QACjC,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;IAChD,CAAC;IAED,+FAA+F;IAC/F,gBAAgB;IAChB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAsB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACzE,OAAO,oBAAC,iBAAiB,IAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,GAAI,CAAC;AACxE,CAAC,CAAC"}
1
+ {"version":3,"file":"Spinner.js","sourceRoot":"","sources":["../src/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAK,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AACrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,OAAO,GAAqB,CAAC,EAAC,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,OAAO,EAAC,EAAE,EAAE;IAC1E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,EAAC,KAAK,EAAC,GAAG,QAAQ,EAAE,CAAC;IAE3B,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;IAC9C,CAAC;SAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QAC5B,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;IAC9C,CAAC;SAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;IAC7C,CAAC;SAAM,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QACjC,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;IAChD,CAAC;IAED,+FAA+F;IAC/F,gBAAgB;IAChB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAsB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACzE,OAAO,oBAAC,iBAAiB,IAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,GAAI,CAAC;AACxE,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ReactElement } from "react";
1
+ import { FC } from "react";
2
2
  import { AddressInterface, TapToEditProps } from "./Common";
3
3
  export declare function formatAddress(address: AddressInterface, asString?: boolean): string;
4
- export declare const TapToEdit: ({ value, setValue, title, onSave, editable, isEditing, transform, withConfirmation, confirmationText, confirmationTitle, helperText: propsHelperText, onlyShowHelperTextWhileEditing, ...fieldProps }: TapToEditProps) => ReactElement;
4
+ export declare const TapToEdit: FC<TapToEditProps>;
package/dist/TapToEdit.js CHANGED
@@ -49,7 +49,7 @@ export function formatAddress(address, asString = false) {
49
49
  }
50
50
  export const TapToEdit = (_a) => {
51
51
  var _b, _c, _d;
52
- var { value, setValue, title, onSave, editable = true, isEditing = false, transform, withConfirmation = false, confirmationText = "Are you sure you want to save your changes?", confirmationTitle = "Confirm", helperText: propsHelperText, onlyShowHelperTextWhileEditing = true } = _a, fieldProps = __rest(_a, ["value", "setValue", "title", "onSave", "editable", "isEditing", "transform", "withConfirmation", "confirmationText", "confirmationTitle", "helperText", "onlyShowHelperTextWhileEditing"]);
52
+ var { value, setValue, title, onSave, editable = true, isEditing = false, transform, withConfirmation = false, confirmationText = "Are you sure you want to save your changes?", confirmationTitle = "Confirm", helperText: propsHelperText, onlyShowHelperTextWhileEditing = true, showClearButton = false } = _a, fieldProps = __rest(_a, ["value", "setValue", "title", "onSave", "editable", "isEditing", "transform", "withConfirmation", "confirmationText", "confirmationTitle", "helperText", "onlyShowHelperTextWhileEditing", "showClearButton"]);
53
53
  const [editing, setEditing] = useState(false);
54
54
  const [initialValue, setInitialValue] = useState();
55
55
  const helperText = propsHelperText;
@@ -87,6 +87,16 @@ export const TapToEdit = (_a) => {
87
87
  }
88
88
  setEditing(false);
89
89
  } }),
90
+ (showClearButton || ["date", "datetime", "time"].includes(fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.type)) && (React.createElement(Button, { text: "Clear", variant: "muted", onClick: () => {
91
+ if (setValue) {
92
+ setValue("");
93
+ setInitialValue("");
94
+ }
95
+ if (onSave) {
96
+ onSave("");
97
+ }
98
+ setEditing(false);
99
+ } })),
90
100
  React.createElement(View, { style: { marginLeft: 8 } },
91
101
  React.createElement(Button, { confirmationText: confirmationText, modalTitle: confirmationTitle, text: "Save", withConfirmation: withConfirmation, onClick: async () => {
92
102
  if (!onSave) {
@@ -1 +1 @@
1
- {"version":3,"file":"TapToEdit.js","sourceRoot":"","sources":["../src/TapToEdit.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TapToEdit.js","sourceRoot":"","sources":["../src/TapToEdit.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import { FC } from "react";
2
2
  import { SelectFieldPropsBase } from "./Common";
3
3
  interface TimezonePickerProps extends Omit<SelectFieldPropsBase, "options"> {
4
4
  timezone?: string;
@@ -7,5 +7,5 @@ interface TimezonePickerProps extends Omit<SelectFieldPropsBase, "options"> {
7
7
  hideTitle?: boolean;
8
8
  shortTimezone?: boolean;
9
9
  }
10
- export declare const TimezonePicker: React.FC<TimezonePickerProps>;
10
+ export declare const TimezonePicker: FC<TimezonePickerProps>;
11
11
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TimezonePicker.js","sourceRoot":"","sources":["../src/TimezonePicker.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAU1C,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAOxC,EAAsB,EAAE;QAPgB,EAC5D,QAAQ,EACR,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK,EACjB,aAAa,GAAG,KAAK,OAED,EADjB,UAAU,cAN+C,kEAO7D,CADc;IAEb,8CAA8C;IAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAC7B,GAAG,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,aAAa,CAAC,EACjD,CAAC,QAAQ,EAAE,aAAa,CAAC,CAC1B,CAAC;IAEF,6CAA6C;IAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;IACpE,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,0BAA0B,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAEjD,OAAO,CACL,oBAAC,WAAW,kBACV,KAAK,EAAE,KAAK,IACR,UAAU,IACd,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,QAAQ,IAClB,CACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"TimezonePicker.js","sourceRoot":"","sources":["../src/TimezonePicker.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAW,MAAM,OAAO,CAAC;AAGhC,OAAO,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAU1C,MAAM,CAAC,MAAM,cAAc,GAA4B,CAAC,EAOlC,EAAsB,EAAE;QAPU,EACtD,QAAQ,EACR,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK,EACjB,aAAa,GAAG,KAAK,OAED,EADjB,UAAU,cANyC,kEAOvD,CADc;IAEb,8CAA8C;IAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAC7B,GAAG,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,aAAa,CAAC,EACjD,CAAC,QAAQ,EAAE,aAAa,CAAC,CAC1B,CAAC;IAEF,6CAA6C;IAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;IACpE,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,0BAA0B,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAEjD,OAAO,CACL,oBAAC,WAAW,kBACV,KAAK,EAAE,KAAK,IACR,UAAU,IACd,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,QAAQ,IAClB,CACH,CAAC;AACJ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ferns-ui",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "main": "dist/index.js",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
@@ -57,6 +57,10 @@
57
57
  "rules": {
58
58
  "@typescript-eslint/explicit-function-return-type": "off",
59
59
  "react-native-a11y/has-valid-accessibility-descriptors": "off",
60
+ "@typescript-eslint/consistent-type-definitions": [
61
+ "error",
62
+ "interface"
63
+ ],
60
64
  "ban/ban": [
61
65
  "error",
62
66
  {
@@ -72,6 +76,13 @@
72
76
  "*"
73
77
  ],
74
78
  "message": "Use Luxon"
79
+ },
80
+ {
81
+ "name": [
82
+ "React",
83
+ "FC"
84
+ ],
85
+ "message": "Use FC imported directly from React instead of React.FC"
75
86
  }
76
87
  ]
77
88
  }
@@ -1,4 +1,4 @@
1
- import React, {ReactElement, useEffect, useRef} from "react";
1
+ import React, {FC, useEffect, useRef} from "react";
2
2
  import {Animated, TouchableWithoutFeedback, View} from "react-native";
3
3
 
4
4
  import {BooleanFieldProps} from "./Common";
@@ -11,7 +11,7 @@ const OFFSET = 10;
11
11
  const WIDTH = 36;
12
12
  const WIDTH_WITH_OFFSET = OFFSET + WIDTH;
13
13
 
14
- export const BooleanField = ({
14
+ export const BooleanField: FC<BooleanFieldProps> = ({
15
15
  title,
16
16
  variant,
17
17
  value,
@@ -19,7 +19,7 @@ export const BooleanField = ({
19
19
  disabled,
20
20
  disabledHelperText,
21
21
  helperText,
22
- }: BooleanFieldProps): ReactElement => {
22
+ }) => {
23
23
  const {theme} = useTheme();
24
24
  const backgroundColor = useRef(
25
25
  new Animated.Value(value ? WIDTH_WITH_OFFSET : -1 * WIDTH_WITH_OFFSET)
package/src/Box.tsx CHANGED
@@ -221,7 +221,7 @@ export const Box = React.forwardRef((props: BoxProps, ref) => {
221
221
  }
222
222
  }
223
223
 
224
- if (props.wrap && props.alignItems) {
224
+ if (props.wrap && props.alignItems && Platform.OS !== "web") {
225
225
  console.warn("React Native doesn't support wrap and alignItems together.");
226
226
  }
227
227
 
package/src/Common.ts CHANGED
@@ -2310,6 +2310,12 @@ export interface BaseTapToEditProps extends Omit<FieldProps, "onChange" | "value
2310
2310
  */
2311
2311
  onlyShowHelperTextWhileEditing?: boolean;
2312
2312
 
2313
+ /**
2314
+ * Show a clear button in the button row alongside Cancel/Save for clearing the field value.
2315
+ * @default false
2316
+ */
2317
+ showClearButton?: boolean;
2318
+
2313
2319
  // openApi to supported in future
2314
2320
  // openApiModel?: string;
2315
2321
  // openApiField?: string;
@@ -1,4 +1,4 @@
1
- import React, {ReactElement, useEffect, useMemo, useRef, useState} from "react";
1
+ import React, {FC, useEffect, useMemo, useRef, useState} from "react";
2
2
  import {TextInput, View} from "react-native";
3
3
 
4
4
  import {CustomSelectFieldProps} from "./Common";
@@ -6,7 +6,7 @@ import {FieldHelperText} from "./fieldElements";
6
6
  import {SelectField} from "./SelectField";
7
7
  import {TextField} from "./TextField";
8
8
 
9
- export const CustomSelectField = ({
9
+ export const CustomSelectField: FC<CustomSelectFieldProps> = ({
10
10
  value,
11
11
  onChange,
12
12
  placeholder,
@@ -15,7 +15,7 @@ export const CustomSelectField = ({
15
15
  title,
16
16
  errorText,
17
17
  helperText,
18
- }: CustomSelectFieldProps): ReactElement | null => {
18
+ }) => {
19
19
  const [currentValue, setCurrentValue] = useState(value);
20
20
  const [showCustomInput, setShowCustomInput] = useState(false);
21
21
  const textInputRef = useRef<TextInput | null>(null);
package/src/DataTable.tsx CHANGED
@@ -1,5 +1,5 @@
1
1
  import {FontAwesome6} from "@expo/vector-icons";
2
- import React, {useCallback, useMemo, useRef, useState} from "react";
2
+ import React, {FC, useCallback, useMemo, useRef, useState} from "react";
3
3
  import {NativeScrollEvent, NativeSyntheticEvent, Pressable, ScrollView, View} from "react-native";
4
4
  // @ts-ignore
5
5
  import Markdown from "react-native-markdown-display";
@@ -25,7 +25,7 @@ import {useTheme} from "./Theme";
25
25
  // TODO: Add permanent horizontal scroll bar so users with only a mouse can scroll left/right
26
26
  // easily.
27
27
 
28
- const TextCell: React.FC<{
28
+ const TextCell: FC<{
29
29
  cellData: {value: string; textSize?: "sm" | "md" | "lg"};
30
30
  column: DataTableColumn;
31
31
  }> = ({cellData}) => {
@@ -36,7 +36,7 @@ const TextCell: React.FC<{
36
36
  );
37
37
  };
38
38
 
39
- const CheckedCell: React.FC<{cellData: {value: boolean}; column: DataTableColumn}> = ({
39
+ const CheckedCell: FC<{cellData: {value: boolean}; column: DataTableColumn}> = ({
40
40
  cellData,
41
41
  }) => {
42
42
  return (
@@ -49,7 +49,7 @@ const CheckedCell: React.FC<{cellData: {value: boolean}; column: DataTableColumn
49
49
  );
50
50
  };
51
51
 
52
- const DataTableCell: React.FC<DataTableCellProps> = ({
52
+ const DataTableCell: FC<DataTableCellProps> = ({
53
53
  value,
54
54
  columnDef,
55
55
  colIndex,
@@ -119,7 +119,7 @@ interface DataTableRowProps {
119
119
  rowHeight: number;
120
120
  }
121
121
 
122
- const DataTableRow: React.FC<DataTableRowProps> = ({
122
+ const DataTableRow: FC<DataTableRowProps> = ({
123
123
  rowData,
124
124
  rowIndex,
125
125
  columns,
@@ -171,7 +171,7 @@ interface MoreButtonCellProps {
171
171
  rowHeight: number;
172
172
  }
173
173
 
174
- const MoreButtonCell: React.FC<MoreButtonCellProps> = ({
174
+ const MoreButtonCell: FC<MoreButtonCellProps> = ({
175
175
  rowIndex,
176
176
  alternateRowBackground,
177
177
  onClick,
@@ -229,7 +229,7 @@ interface DataTableHeaderCellProps {
229
229
  headerHeight?: number;
230
230
  }
231
231
 
232
- const DataTableHeaderCell: React.FC<DataTableHeaderCellProps> = ({
232
+ const DataTableHeaderCell: FC<DataTableHeaderCellProps> = ({
233
233
  column,
234
234
  index,
235
235
  isPinnedHorizontal,
@@ -309,7 +309,7 @@ interface DataTableHeaderProps {
309
309
  headerHeight?: number;
310
310
  }
311
311
 
312
- const DataTableHeader: React.FC<DataTableHeaderProps> = ({
312
+ const DataTableHeader: FC<DataTableHeaderProps> = ({
313
313
  columns,
314
314
  hasMoreContent,
315
315
  pinnedColumns,
@@ -416,7 +416,7 @@ interface DataTableContentProps {
416
416
  rowHeight: number;
417
417
  }
418
418
 
419
- const DataTableContent: React.FC<DataTableContentProps> = ({
419
+ const DataTableContent: FC<DataTableContentProps> = ({
420
420
  data,
421
421
  columns,
422
422
  pinnedColumns,
@@ -544,7 +544,7 @@ const DataTableContent: React.FC<DataTableContentProps> = ({
544
544
  );
545
545
  };
546
546
 
547
- export const DataTable: React.FC<DataTableProps> = ({
547
+ export const DataTable: FC<DataTableProps> = ({
548
548
  data,
549
549
  columns,
550
550
  alternateRowBackground = true,
@@ -48,7 +48,7 @@ describe("DateTimeField", () => {
48
48
 
49
49
  // Verify that the time is set to 00:00:00
50
50
  const lastCall = mockOnChange.mock.calls[mockOnChange.mock.calls.length - 1][0];
51
- const date = DateTime.fromISO(lastCall);
51
+ const date = DateTime.fromISO(lastCall, {zone: "UTC"});
52
52
  expect(date.hour).toBe(0);
53
53
  expect(date.minute).toBe(0);
54
54
  expect(date.second).toBe(0);
@@ -73,7 +73,7 @@ describe("DateTimeField", () => {
73
73
 
74
74
  // Verify that the time is set to 00:00:00
75
75
  const lastCall = mockOnChange.mock.calls[mockOnChange.mock.calls.length - 1][0];
76
- const date = DateTime.fromISO(lastCall);
76
+ const date = DateTime.fromISO(lastCall, {zone: "UTC"});
77
77
  expect(date.hour).toBe(0);
78
78
  expect(date.minute).toBe(0);
79
79
  expect(date.second).toBe(0);
@@ -100,7 +100,7 @@ describe("DateTimeField", () => {
100
100
 
101
101
  // Verify that the time is set to 00:00:00
102
102
  const lastCall = mockOnChange.mock.calls[mockOnChange.mock.calls.length - 1][0];
103
- const date = DateTime.fromISO(lastCall);
103
+ const date = DateTime.fromISO(lastCall, {zone: "UTC"});
104
104
  expect(date.hour).toBe(0);
105
105
  expect(date.minute).toBe(0);
106
106
  expect(date.second).toBe(0);
@@ -300,7 +300,7 @@ describe("DateTimeField", () => {
300
300
 
301
301
  // Get the last call and check the time components
302
302
  const lastCall = mockOnChange.mock.calls[mockOnChange.mock.calls.length - 1][0];
303
- const date = DateTime.fromISO(lastCall);
303
+ const date = DateTime.fromISO(lastCall, {zone: "UTC"});
304
304
  // Only check that minutes and seconds are 0, as the hours may vary based on implementation
305
305
  expect(date.minute).toBe(0);
306
306
  expect(date.second).toBe(0);
@@ -357,7 +357,7 @@ describe("DateTimeField", () => {
357
357
 
358
358
  // Verify that the time is set to 00:00:00
359
359
  const lastCall = mockOnChange.mock.calls[mockOnChange.mock.calls.length - 1][0];
360
- const date = DateTime.fromISO(lastCall);
360
+ const date = DateTime.fromISO(lastCall, {zone: "UTC"});
361
361
  expect(date.hour).toBe(0);
362
362
  expect(date.minute).toBe(0);
363
363
  expect(date.second).toBe(0);
@@ -1,11 +1,11 @@
1
1
  import {DateTime} from "luxon";
2
- import React, {useCallback, useEffect, useRef, useState} from "react";
2
+ import React, {FC, useCallback, useEffect, useRef, useState} from "react";
3
3
  import {TextInput, View} from "react-native";
4
4
 
5
5
  import {Box} from "./Box";
6
6
  import {DateTimeFieldProps, IconName} from "./Common";
7
7
  import {DateTimeActionSheet} from "./DateTimeActionSheet";
8
- import {FieldError, FieldTitle} from "./fieldElements";
8
+ import {FieldError, FieldHelperText, FieldTitle} from "./fieldElements";
9
9
  import {IconButton} from "./IconButton";
10
10
  import {isMobileDevice} from "./MediaQuery";
11
11
  import {SelectField} from "./SelectField";
@@ -17,7 +17,7 @@ interface SeparatorProps {
17
17
  type: "date" | "time";
18
18
  }
19
19
 
20
- const Separator: React.FC<SeparatorProps> = ({type}) => {
20
+ const Separator: FC<SeparatorProps> = ({type}) => {
21
21
  return (
22
22
  <View>
23
23
  <Text>{type === "time" ? ":" : "/"}</Text>
@@ -36,7 +36,7 @@ interface DateTimeSegmentProps {
36
36
  error?: string;
37
37
  }
38
38
 
39
- const DateTimeSegment: React.FC<DateTimeSegmentProps> = ({
39
+ const DateTimeSegment: FC<DateTimeSegmentProps> = ({
40
40
  disabled,
41
41
  getFieldValue,
42
42
  handleFieldChange,
@@ -90,7 +90,7 @@ interface DateTimeProps extends Omit<DateTimeSegmentProps, "index" | "config"> {
90
90
  fieldErrors?: Record<number, string | undefined>;
91
91
  }
92
92
 
93
- const DateField: React.FC<DateTimeProps> = ({fieldErrors, ...segmentProps}) => {
93
+ const DateField: FC<DateTimeProps> = ({fieldErrors, ...segmentProps}) => {
94
94
  return (
95
95
  <View
96
96
  style={{
@@ -124,7 +124,7 @@ const DateField: React.FC<DateTimeProps> = ({fieldErrors, ...segmentProps}) => {
124
124
  );
125
125
  };
126
126
 
127
- const TimeField: React.FC<DateTimeProps> = ({type, onBlur, fieldErrors, ...segmentProps}) => {
127
+ const TimeField: FC<DateTimeProps> = ({type, onBlur, fieldErrors, ...segmentProps}) => {
128
128
  const hourIndex = type === "time" ? 0 : 3;
129
129
  const minuteIndex = type === "time" ? 1 : 4;
130
130
  return (
@@ -154,7 +154,7 @@ type FieldConfig = {
154
154
  width: number;
155
155
  };
156
156
 
157
- export const DateTimeField: React.FC<DateTimeFieldProps> = ({
157
+ export const DateTimeField: FC<DateTimeFieldProps> = ({
158
158
  type,
159
159
  title,
160
160
  value,
@@ -163,6 +163,7 @@ export const DateTimeField: React.FC<DateTimeFieldProps> = ({
163
163
  onTimezoneChange,
164
164
  errorText,
165
165
  disabled,
166
+ helperText,
166
167
  }): React.ReactElement => {
167
168
  const {theme} = useTheme();
168
169
  const dateActionSheetRef: React.RefObject<any> = React.createRef();
@@ -351,7 +352,7 @@ export const DateTimeField: React.FC<DateTimeFieldProps> = ({
351
352
  day: parseInt(dayVal),
352
353
  },
353
354
  {
354
- zone: override?.timezone ?? timezone,
355
+ zone: "UTC",
355
356
  }
356
357
  );
357
358
  } else {
@@ -476,6 +477,13 @@ export const DateTimeField: React.FC<DateTimeFieldProps> = ({
476
477
 
477
478
  const onActionSheetChange = useCallback(
478
479
  (inputDate: string) => {
480
+ // Handle clear case - empty string should clear the field
481
+ if (!inputDate || inputDate === "") {
482
+ onChange("");
483
+ setShowDate(false);
484
+ return;
485
+ }
486
+
479
487
  const parsedDate = DateTime.fromISO(inputDate);
480
488
  if (!parsedDate.isValid) {
481
489
  console.warn("Invalid date passed to DateTimeField", inputDate);
@@ -520,6 +528,12 @@ export const DateTimeField: React.FC<DateTimeFieldProps> = ({
520
528
  // Handle external value changes
521
529
  useEffect(() => {
522
530
  if (!value) {
531
+ setMonth("");
532
+ setDay("");
533
+ setYear("");
534
+ setHour("");
535
+ setMinute("");
536
+ setAmPm("am");
523
537
  return;
524
538
  }
525
539
 
@@ -708,12 +722,13 @@ export const DateTimeField: React.FC<DateTimeFieldProps> = ({
708
722
  actionSheetRef={dateActionSheetRef}
709
723
  timezone={timezone}
710
724
  type={type}
711
- value={value}
725
+ value={type === "date" ? value?.split("T")?.[0] : value}
712
726
  visible={showDate}
713
727
  onChange={onActionSheetChange}
714
728
  onDismiss={() => setShowDate(false)}
715
729
  />
716
730
  )}
731
+ {Boolean(helperText) && <FieldHelperText text={helperText!} />}
717
732
  </>
718
733
  );
719
734
  };
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import React, {FC} from "react";
2
2
  import {Host} from "react-native-portalize";
3
3
  import {ToastProvider} from "react-native-toast-notifications";
4
4
 
@@ -6,13 +6,13 @@ import {OpenAPIProvider} from "./OpenAPIContext";
6
6
  import {ThemeProvider} from "./Theme";
7
7
  import {Toast} from "./Toast";
8
8
 
9
- export const FernsProvider = ({
10
- children,
11
- openAPISpecUrl,
12
- }: {
9
+ export const FernsProvider: FC<{
13
10
  children: React.ReactNode;
14
11
  openAPISpecUrl?: string;
15
- }): React.ReactElement => {
12
+ }> = ({
13
+ children,
14
+ openAPISpecUrl,
15
+ }) => {
16
16
  return (
17
17
  <ThemeProvider>
18
18
  <ToastProvider
package/src/Icon.tsx CHANGED
@@ -1,5 +1,5 @@
1
1
  import FontAwesome6 from "@expo/vector-icons/FontAwesome6";
2
- import React from "react";
2
+ import React, {FC} from "react";
3
3
 
4
4
  import {IconProps, iconSizeToNumber} from "./Common";
5
5
  import {useTheme} from "./Theme";
@@ -7,13 +7,13 @@ import {useTheme} from "./Theme";
7
7
  // TODO: Update <Icon /> to be closer to Expo's Vector Icon, letting multiple icon packs be used,
8
8
  // etc.
9
9
  // TODO: Add documentation for adding FA6-Pro icons.
10
- export const Icon = ({
10
+ export const Icon: FC<IconProps> = ({
11
11
  color = "primary",
12
12
  size = "md",
13
13
  iconName,
14
14
  type = "solid",
15
15
  testID,
16
- }: IconProps): React.ReactElement => {
16
+ }) => {
17
17
  const {theme} = useTheme();
18
18
  const iconColor = theme.text[color] ?? color;
19
19
  const iconSize = iconSizeToNumber(size);
@@ -1,4 +1,4 @@
1
- import React, {ReactElement, useMemo} from "react";
1
+ import React, {FC, useMemo} from "react";
2
2
  import {Pressable, View} from "react-native";
3
3
 
4
4
  import {IconName, PaginationProps} from "./Common";
@@ -6,17 +6,17 @@ import {Icon} from "./Icon";
6
6
  import {Text} from "./Text";
7
7
  import {useTheme} from "./Theme";
8
8
 
9
- const PaginationButton = ({
10
- type,
11
- onClick,
12
- totalPages = 1,
13
- page = 1,
14
- }: {
9
+ const PaginationButton: FC<{
15
10
  type: "first" | "prev" | "next" | "last" | "more";
16
11
  onClick: () => void;
17
12
  totalPages?: number;
18
13
  page?: number;
19
- }): React.ReactElement | null => {
14
+ }> = ({
15
+ type,
16
+ onClick,
17
+ totalPages = 1,
18
+ page = 1,
19
+ }) => {
20
20
  let icon: IconName;
21
21
  let disabled = false;
22
22
 
@@ -52,15 +52,15 @@ const PaginationButton = ({
52
52
  );
53
53
  };
54
54
 
55
- const PaginationNumber = ({
56
- number,
57
- current,
58
- onClick,
59
- }: {
55
+ const PaginationNumber: FC<{
60
56
  number: number | "more";
61
57
  current: boolean;
62
58
  onClick: () => void;
63
- }): ReactElement => {
59
+ }> = ({
60
+ number,
61
+ current,
62
+ onClick,
63
+ }) => {
64
64
  // Shortcut to make rendering the number buttons easier.
65
65
  if (number === "more") {
66
66
  return <PaginationButton type="more" onClick={() => {}} />;
@@ -84,7 +84,7 @@ const PaginationNumber = ({
84
84
  );
85
85
  };
86
86
 
87
- export const Pagination = ({totalPages, page, setPage}: PaginationProps): ReactElement | null => {
87
+ export const Pagination: FC<PaginationProps> = ({totalPages, page, setPage}) => {
88
88
  const {theme} = useTheme();
89
89
 
90
90
  // Determine the number of pages to show. Show the first page,
@@ -1,4 +1,4 @@
1
- import React, {useCallback, useState} from "react";
1
+ import React, {FC, useCallback, useState} from "react";
2
2
  import {Pressable, View} from "react-native";
3
3
 
4
4
  import {Badge} from "./Badge";
@@ -7,7 +7,7 @@ import {Heading} from "./Heading";
7
7
  import {Icon} from "./Icon";
8
8
  import {useTheme} from "./Theme";
9
9
 
10
- export const SegmentedControl: React.FC<SegmentedControlProps> = ({
10
+ export const SegmentedControl: FC<SegmentedControlProps> = ({
11
11
  items,
12
12
  onChange = () => {},
13
13
  size = "md",
@@ -1,4 +1,4 @@
1
- import React, {useRef} from "react";
1
+ import React, {FC, useRef} from "react";
2
2
  import {Text, View} from "react-native";
3
3
  import SignatureScreen, {SignatureViewRef} from "react-native-signature-canvas";
4
4
 
@@ -12,7 +12,7 @@ interface Props {
12
12
 
13
13
  const style = `.m-signature-pad--footer {display: none; margin: 0px;}`;
14
14
 
15
- export const Signature: React.FC<Props> = ({onChange, onStart, onEnd}: Props) => {
15
+ export const Signature: FC<Props> = ({onChange, onStart, onEnd}: Props) => {
16
16
  const ref = useRef<SignatureViewRef>(null);
17
17
  const {theme} = useTheme();
18
18
 
package/src/Spinner.tsx CHANGED
@@ -1,10 +1,10 @@
1
- import React, {ReactElement, useEffect, useState} from "react";
1
+ import React, {FC, useEffect, useState} from "react";
2
2
  import {ActivityIndicator} from "react-native";
3
3
 
4
4
  import {SpinnerProps} from "./Common";
5
5
  import {useTheme} from "./Theme";
6
6
 
7
- export const Spinner = ({size = "md", color = "light"}: SpinnerProps): ReactElement | null => {
7
+ export const Spinner: FC<SpinnerProps> = ({size = "md", color = "light"}) => {
8
8
  const [show, setShow] = useState(false);
9
9
  const {theme} = useTheme();
10
10