ferns-ui 0.10.0 → 0.11.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/dist/Common.d.ts CHANGED
@@ -354,6 +354,11 @@ export interface FieldWithLabelsProps {
354
354
  helperTextColor?: AllColors;
355
355
  children?: React.ReactNode;
356
356
  }
357
+ export interface DateTimeFieldProps extends FieldWithLabelsProps {
358
+ mode: "date" | "time" | "datetime";
359
+ value: Date;
360
+ onChange: (date: Date) => void;
361
+ }
357
362
  export interface TextFieldProps extends FieldWithLabelsProps {
358
363
  innerRef?: any;
359
364
  id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Common.js","sourceRoot":"","sources":["../src/Common.ts"],"names":[],"mappings":"AAgVA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AAkBzB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAe,EAAE,EAAE;IAClD,OAAO;QACL,EAAE,EAAE,CAAC;QACL,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;KACP,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAI,GAAG,EAAE,EAAY,EAAE;IACtD,IAAI,QAAkB,CAAC;IACvB,IAAI,IAAI,GAAG,CAAC,EAAE;QACZ,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM;QACL,QAAQ,GAAG,IAAI,CAAC;KACjB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,OAAgE;IAC9F,OAAO,CAAC;QACN,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,KAAK;QACZ,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,MAAM;KACjB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAU,CAAC;AACjC,CAAC;AAs4BD,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,OAAO,CACL,OAAO;QACP,OAAO,CAAC,KAAK;QACb,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CACrF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Common.js","sourceRoot":"","sources":["../src/Common.ts"],"names":[],"mappings":"AAgVA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AAkBzB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAe,EAAE,EAAE;IAClD,OAAO;QACL,EAAE,EAAE,CAAC;QACL,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;KACP,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAI,GAAG,EAAE,EAAY,EAAE;IACtD,IAAI,QAAkB,CAAC;IACvB,IAAI,IAAI,GAAG,CAAC,EAAE;QACZ,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM;QACL,QAAQ,GAAG,IAAI,CAAC;KACjB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,OAAgE;IAC9F,OAAO,CAAC;QACN,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,KAAK;QACZ,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,MAAM;KACjB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAU,CAAC;AACjC,CAAC;AA44BD,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,OAAO,CACL,OAAO;QACP,OAAO,CAAC,KAAK;QACb,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CACrF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ReactElement } from "react";
2
+ import { DateTimeFieldProps } from "./Common";
3
+ export declare const DateTimeField: ({ mode, value, onChange, errorMessage, errorMessageColor, }: DateTimeFieldProps) => ReactElement;
@@ -0,0 +1,26 @@
1
+ import DateTimePicker from "@react-native-community/datetimepicker";
2
+ import moment from "moment-timezone";
3
+ import React from "react";
4
+ import { View } from "react-native";
5
+ import { Box } from "./Box";
6
+ import { WithLabel } from "./WithLabel";
7
+ export const DateTimeField = ({ mode, value, onChange, errorMessage, errorMessageColor, }) => {
8
+ return (React.createElement(WithLabel, { label: errorMessage, labelColor: errorMessageColor || "red", labelPlacement: "after", labelSize: "sm" },
9
+ React.createElement(WithLabel, null,
10
+ React.createElement(View, null,
11
+ React.createElement(Box, { maxWidth: 300 },
12
+ React.createElement(DateTimePicker, { display: "spinner", mode: mode === "datetime" ? "date" : mode, testID: "dateTimePicker", value: moment(value).toDate(), onChange: (event, date) => {
13
+ if (!date) {
14
+ return;
15
+ }
16
+ onChange(value);
17
+ } }),
18
+ mode === "datetime" && (React.createElement(DateTimePicker, { display: "spinner", mode: "time", testID: "dateTimePicker", value: moment(value).toDate(), onChange: (event, date) => {
19
+ // fix to append to date object
20
+ if (!date) {
21
+ return;
22
+ }
23
+ onChange(value);
24
+ } })))))));
25
+ };
26
+ //# sourceMappingURL=DateTimeField.android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateTimeField.android.js","sourceRoot":"","sources":["../src/DateTimeField.android.tsx"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,wCAAwC,CAAC;AACpE,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAC;AAElC,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,iBAAiB,GACE,EAAgB,EAAE;IACrC,OAAO,CACL,oBAAC,SAAS,IACR,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,iBAAiB,IAAI,KAAK,EACtC,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,IAAI;QAEd,oBAAC,SAAS;YACR,oBAAC,IAAI;gBACH,oBAAC,GAAG,IAAC,QAAQ,EAAE,GAAG;oBAChB,oBAAC,cAAc,IACb,OAAO,EAAC,SAAS,EACjB,IAAI,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EACzC,MAAM,EAAC,gBAAgB,EACvB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAC7B,QAAQ,EAAE,CAAC,KAAU,EAAE,IAAS,EAAE,EAAE;4BAClC,IAAI,CAAC,IAAI,EAAE;gCACT,OAAO;6BACR;4BACD,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAClB,CAAC,GACD;oBACD,IAAI,KAAK,UAAU,IAAI,CACtB,oBAAC,cAAc,IACb,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,gBAAgB,EACvB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAC7B,QAAQ,EAAE,CAAC,KAAU,EAAE,IAAS,EAAE,EAAE;4BAClC,+BAA+B;4BAC/B,IAAI,CAAC,IAAI,EAAE;gCACT,OAAO;6BACR;4BACD,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAClB,CAAC,GACD,CACH,CACG,CACD,CACG,CACF,CACb,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ReactElement } from "react";
2
+ import { DateTimeFieldProps } from "./Common";
3
+ export declare const DateTimeField: ({ mode, value, onChange, errorMessage, errorMessageColor, }: DateTimeFieldProps) => ReactElement;
@@ -0,0 +1,3 @@
1
+ import { ReactElement } from "react";
2
+ import { DateTimeFieldProps } from "./Common";
3
+ export declare const DateTimeField: ({ mode, value, onChange, errorMessage, errorMessageColor, }: DateTimeFieldProps) => ReactElement;
@@ -0,0 +1,19 @@
1
+ import DateTimePicker from "@react-native-community/datetimepicker";
2
+ import moment from "moment-timezone";
3
+ import React from "react";
4
+ import { View } from "react-native";
5
+ import { Box } from "./Box";
6
+ import { WithLabel } from "./WithLabel";
7
+ export const DateTimeField = ({ mode, value, onChange, errorMessage, errorMessageColor, }) => {
8
+ return (React.createElement(WithLabel, { label: errorMessage, labelColor: errorMessageColor || "red", labelPlacement: "after", labelSize: "sm" },
9
+ React.createElement(WithLabel, null,
10
+ React.createElement(View, null,
11
+ React.createElement(Box, { maxWidth: 300 },
12
+ React.createElement(DateTimePicker, { display: "spinner", mode: mode, testID: "dateTimePicker", value: moment(value).toDate(), onChange: (event, date) => {
13
+ if (!date) {
14
+ return;
15
+ }
16
+ onChange(value);
17
+ } }))))));
18
+ };
19
+ //# sourceMappingURL=DateTimeField.ios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateTimeField.ios.js","sourceRoot":"","sources":["../src/DateTimeField.ios.tsx"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,wCAAwC,CAAC;AACpE,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAC;AAElC,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,iBAAiB,GACE,EAAgB,EAAE;IACrC,OAAO,CACL,oBAAC,SAAS,IACR,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,iBAAiB,IAAI,KAAK,EACtC,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,IAAI;QAEd,oBAAC,SAAS;YACR,oBAAC,IAAI;gBACH,oBAAC,GAAG,IAAC,QAAQ,EAAE,GAAG;oBAChB,oBAAC,cAAc,IACb,OAAO,EAAC,SAAS,EACjB,IAAI,EAAE,IAAI,EACV,MAAM,EAAC,gBAAgB,EACvB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAC7B,QAAQ,EAAE,CAAC,KAAU,EAAE,IAAS,EAAE,EAAE;4BAClC,IAAI,CAAC,IAAI,EAAE;gCACT,OAAO;6BACR;4BACD,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAClB,CAAC,GACD,CACE,CACD,CACG,CACF,CACb,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import React from "react";
2
+ import DatePicker from "react-date-picker";
3
+ import DateTimePickerWeb from "react-datetime-picker";
4
+ import { View } from "react-native";
5
+ import TimePicker from "react-time-picker";
6
+ import { Box } from "./Box";
7
+ import { WithLabel } from "./WithLabel";
8
+ export const DateTimeField = ({ mode, value, onChange, errorMessage, errorMessageColor, }) => {
9
+ return (React.createElement(WithLabel, { label: errorMessage, labelColor: errorMessageColor || "red", labelPlacement: "after", labelSize: "sm" },
10
+ React.createElement(WithLabel, null,
11
+ React.createElement(View, null,
12
+ React.createElement(Box, { maxWidth: 300 },
13
+ mode === "datetime" && (React.createElement(DateTimePickerWeb, { disableClock: true, value: value, onChange: onChange })),
14
+ mode === "date" && React.createElement(DatePicker, { value: value, onChange: onChange }),
15
+ mode === "time" && (React.createElement(TimePicker, { disableClock: true, value: value, onChange: (newVal) => {
16
+ // TimePicker returns a string or Date, so we need to make sure it's a Date
17
+ const newDate = new Date(newVal);
18
+ onChange(newDate);
19
+ } })))))));
20
+ };
21
+ //# sourceMappingURL=DateTimeField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateTimeField.js","sourceRoot":"","sources":["../src/DateTimeField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,iBAAiB,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAC;AAClC,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,iBAAiB,GACE,EAAgB,EAAE;IACrC,OAAO,CACL,oBAAC,SAAS,IACR,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,iBAAiB,IAAI,KAAK,EACtC,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,IAAI;QAEd,oBAAC,SAAS;YACR,oBAAC,IAAI;gBACH,oBAAC,GAAG,IAAC,QAAQ,EAAE,GAAG;oBACf,IAAI,KAAK,UAAU,IAAI,CACtB,oBAAC,iBAAiB,IAAC,YAAY,QAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,CACrE;oBACA,IAAI,KAAK,MAAM,IAAI,oBAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI;oBACnE,IAAI,KAAK,MAAM,IAAI,CAClB,oBAAC,UAAU,IACT,YAAY,QACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;4BACnB,2EAA2E;4BAC3E,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;4BACjC,QAAQ,CAAC,OAAO,CAAC,CAAC;wBACpB,CAAC,GACD,CACH,CACG,CACD,CACG,CACF,CACb,CAAC;AACJ,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -45,6 +45,7 @@ export * from "./HeightActionSheet";
45
45
  export * from "./NumberPickerActionSheet";
46
46
  export * from "./ModalSheet";
47
47
  export * from "./ProgressBar";
48
+ export * from "./DateTimeField";
48
49
  declare type ImageRequireSource = number;
49
50
  interface Insets {
50
51
  top?: number;
package/dist/index.js CHANGED
@@ -48,4 +48,5 @@ export * from "./NumberPickerActionSheet";
48
48
  // export * from "./Chart";
49
49
  export * from "./ModalSheet";
50
50
  export * from "./ProgressBar";
51
+ export * from "./DateTimeField";
51
52
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,4BAA4B;AAC5B,4BAA4B;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAExB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,2BAA2B;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,4BAA4B;AAC5B,4BAA4B;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAExB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,2BAA2B;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ferns-ui",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "main": "dist/index.js",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
@@ -127,7 +127,9 @@
127
127
  "@react-native-picker/picker": "2.4.4",
128
128
  "@types/lodash": "^4.14.184",
129
129
  "@types/mdurl": "^1.0.2",
130
+ "@types/react-datetime-picker": "^3.4.1",
130
131
  "@types/react-native": "^0.69.1",
132
+ "@types/react-time-picker": "^4.0.2",
131
133
  "@typescript-eslint/eslint-plugin": "^5.34.0",
132
134
  "@typescript-eslint/parser": "^5.34.0",
133
135
  "eslint": "^8.22.0",
@@ -149,6 +151,8 @@
149
151
  "prettier": "^2.6.2",
150
152
  "react": "^18.2.0",
151
153
  "react-app-polyfill": "^3.0.0",
154
+ "react-date-picker": "^8.4.0",
155
+ "react-datetime-picker": "^3.5.0",
152
156
  "react-dev-utils": "^12.0.1",
153
157
  "react-dom": "18.2.0",
154
158
  "react-native": "0.69.4",
@@ -161,6 +165,7 @@
161
165
  "react-native-svg": "^13.0.0",
162
166
  "react-router": "^6.3.0",
163
167
  "react-router-dom": "^6.3.0",
168
+ "react-time-picker": "^4.5.0",
164
169
  "typescript": "4.1.5"
165
170
  },
166
171
  "peerDependencies": {
package/src/Common.ts CHANGED
@@ -659,6 +659,12 @@ export interface FieldWithLabelsProps {
659
659
  children?: React.ReactNode;
660
660
  }
661
661
 
662
+ export interface DateTimeFieldProps extends FieldWithLabelsProps {
663
+ mode: "date" | "time" | "datetime";
664
+ value: Date;
665
+ onChange: (date: Date) => void;
666
+ }
667
+
662
668
  export interface TextFieldProps extends FieldWithLabelsProps {
663
669
  innerRef?: any;
664
670
  id?: string;
@@ -0,0 +1,59 @@
1
+ import DateTimePicker from "@react-native-community/datetimepicker";
2
+ import moment from "moment-timezone";
3
+ import React, {ReactElement} from "react";
4
+ import {View} from "react-native";
5
+
6
+ import {Box} from "./Box";
7
+ import {DateTimeFieldProps} from "./Common";
8
+ import {WithLabel} from "./WithLabel";
9
+
10
+ export const DateTimeField = ({
11
+ mode,
12
+ value,
13
+ onChange,
14
+ errorMessage,
15
+ errorMessageColor,
16
+ }: DateTimeFieldProps): ReactElement => {
17
+ return (
18
+ <WithLabel
19
+ label={errorMessage}
20
+ labelColor={errorMessageColor || "red"}
21
+ labelPlacement="after"
22
+ labelSize="sm"
23
+ >
24
+ <WithLabel>
25
+ <View>
26
+ <Box maxWidth={300}>
27
+ <DateTimePicker
28
+ display="spinner"
29
+ mode={mode === "datetime" ? "date" : mode}
30
+ testID="dateTimePicker"
31
+ value={moment(value).toDate()}
32
+ onChange={(event: any, date: any) => {
33
+ if (!date) {
34
+ return;
35
+ }
36
+ onChange(value);
37
+ }}
38
+ />
39
+ {mode === "datetime" && (
40
+ <DateTimePicker
41
+ display="spinner"
42
+ mode="time"
43
+ testID="dateTimePicker"
44
+ value={moment(value).toDate()}
45
+ onChange={(event: any, date: any) => {
46
+ // fix to append to date object
47
+ if (!date) {
48
+ return;
49
+ }
50
+ onChange(value);
51
+ }}
52
+ />
53
+ )}
54
+ </Box>
55
+ </View>
56
+ </WithLabel>
57
+ </WithLabel>
58
+ );
59
+ };
@@ -0,0 +1,44 @@
1
+ import DateTimePicker from "@react-native-community/datetimepicker";
2
+ import moment from "moment-timezone";
3
+ import React, {ReactElement} from "react";
4
+ import {View} from "react-native";
5
+
6
+ import {Box} from "./Box";
7
+ import {DateTimeFieldProps} from "./Common";
8
+ import {WithLabel} from "./WithLabel";
9
+
10
+ export const DateTimeField = ({
11
+ mode,
12
+ value,
13
+ onChange,
14
+ errorMessage,
15
+ errorMessageColor,
16
+ }: DateTimeFieldProps): ReactElement => {
17
+ return (
18
+ <WithLabel
19
+ label={errorMessage}
20
+ labelColor={errorMessageColor || "red"}
21
+ labelPlacement="after"
22
+ labelSize="sm"
23
+ >
24
+ <WithLabel>
25
+ <View>
26
+ <Box maxWidth={300}>
27
+ <DateTimePicker
28
+ display="spinner"
29
+ mode={mode}
30
+ testID="dateTimePicker"
31
+ value={moment(value).toDate()}
32
+ onChange={(event: any, date: any) => {
33
+ if (!date) {
34
+ return;
35
+ }
36
+ onChange(value);
37
+ }}
38
+ />
39
+ </Box>
40
+ </View>
41
+ </WithLabel>
42
+ </WithLabel>
43
+ );
44
+ };
@@ -0,0 +1,48 @@
1
+ import React, {ReactElement} from "react";
2
+ import DatePicker from "react-date-picker";
3
+ import DateTimePickerWeb from "react-datetime-picker";
4
+ import {View} from "react-native";
5
+ import TimePicker from "react-time-picker";
6
+
7
+ import {Box} from "./Box";
8
+ import {DateTimeFieldProps} from "./Common";
9
+ import {WithLabel} from "./WithLabel";
10
+
11
+ export const DateTimeField = ({
12
+ mode,
13
+ value,
14
+ onChange,
15
+ errorMessage,
16
+ errorMessageColor,
17
+ }: DateTimeFieldProps): ReactElement => {
18
+ return (
19
+ <WithLabel
20
+ label={errorMessage}
21
+ labelColor={errorMessageColor || "red"}
22
+ labelPlacement="after"
23
+ labelSize="sm"
24
+ >
25
+ <WithLabel>
26
+ <View>
27
+ <Box maxWidth={300}>
28
+ {mode === "datetime" && (
29
+ <DateTimePickerWeb disableClock value={value} onChange={onChange} />
30
+ )}
31
+ {mode === "date" && <DatePicker value={value} onChange={onChange} />}
32
+ {mode === "time" && (
33
+ <TimePicker
34
+ disableClock
35
+ value={value}
36
+ onChange={(newVal) => {
37
+ // TimePicker returns a string or Date, so we need to make sure it's a Date
38
+ const newDate = new Date(newVal);
39
+ onChange(newDate);
40
+ }}
41
+ />
42
+ )}
43
+ </Box>
44
+ </View>
45
+ </WithLabel>
46
+ </WithLabel>
47
+ );
48
+ };
package/src/index.tsx CHANGED
@@ -49,6 +49,7 @@ export * from "./NumberPickerActionSheet";
49
49
  // export * from "./Chart";
50
50
  export * from "./ModalSheet";
51
51
  export * from "./ProgressBar";
52
+ export * from "./DateTimeField";
52
53
 
53
54
  // Lifted from react-native
54
55
  type ImageRequireSource = number;