ferns-ui 0.44.2 → 0.45.1

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 (54) hide show
  1. package/dist/Button.d.ts +1 -1
  2. package/dist/Button.js +1 -2
  3. package/dist/Button.js.map +1 -1
  4. package/dist/Common.d.ts +16 -1
  5. package/dist/DateTimeActionSheet.d.ts +1 -1
  6. package/dist/DateTimeActionSheet.js +130 -95
  7. package/dist/DateTimeActionSheet.js.map +1 -1
  8. package/dist/DateTimeField.android.d.ts +1 -1
  9. package/dist/DateTimeField.android.js +20 -20
  10. package/dist/DateTimeField.android.js.map +1 -1
  11. package/dist/DateTimeField.ios.d.ts +1 -1
  12. package/dist/DateTimeField.ios.js +21 -21
  13. package/dist/DateTimeField.ios.js.map +1 -1
  14. package/dist/DateUtilities.d.ts +50 -0
  15. package/dist/DateUtilities.js +240 -0
  16. package/dist/DateUtilities.js.map +1 -0
  17. package/dist/DateUtilities.test.d.ts +1 -0
  18. package/dist/DateUtilities.test.js +270 -0
  19. package/dist/DateUtilities.test.js.map +1 -0
  20. package/dist/Field.d.ts +1 -1
  21. package/dist/Field.js +2 -2
  22. package/dist/Field.js.map +1 -1
  23. package/dist/TextField.d.ts +1 -1
  24. package/dist/TextField.js +36 -34
  25. package/dist/TextField.js.map +1 -1
  26. package/dist/TextFieldNumberActionSheet.js +1 -2
  27. package/dist/TextFieldNumberActionSheet.js.map +1 -1
  28. package/dist/TimezonePicker.d.ts +3 -0
  29. package/dist/TimezonePicker.js +26 -0
  30. package/dist/TimezonePicker.js.map +1 -0
  31. package/dist/index.d.ts +1 -0
  32. package/dist/index.js +1 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/setupTests.d.ts +0 -0
  35. package/dist/setupTests.js +3 -0
  36. package/dist/setupTests.js.map +1 -0
  37. package/package.json +37 -54
  38. package/src/Button.tsx +0 -2
  39. package/src/Common.ts +19 -1
  40. package/src/DateTimeActionSheet.tsx +178 -119
  41. package/src/DateTimeField.android.tsx +18 -17
  42. package/src/DateTimeField.ios.tsx +19 -18
  43. package/src/DateUtilities.test.ts +417 -0
  44. package/src/DateUtilities.tsx +296 -0
  45. package/src/Field.tsx +2 -0
  46. package/src/TextField.tsx +34 -31
  47. package/src/TextFieldNumberActionSheet.tsx +1 -2
  48. package/src/TimezonePicker.tsx +52 -0
  49. package/src/index.tsx +1 -0
  50. package/src/setupTests.ts +1 -0
  51. package/dist/dayjsExtended.d.ts +0 -2
  52. package/dist/dayjsExtended.js +0 -10
  53. package/dist/dayjsExtended.js.map +0 -1
  54. package/src/dayjsExtended.ts +0 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimezonePicker.js","sourceRoot":"","sources":["../src/TimezonePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAEtC,qCAAqC;AACrC,MAAM,OAAO,GAAG;IACd,EAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAC;IAC7C,EAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAC;IAC5C,EAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,EAAC;IAC5C,EAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,qBAAqB,EAAC;IAChD,EAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAC;IAC7C,EAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAC;IAC5C,EAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAC;CAC7C,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,KAAK,GAAG,GAAG,GACS,EAAsB,EAAE;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,oBAAC,GAAG,IAAC,QAAQ,EAAE,KAAK;YAClB,oBAAC,SAAS,IAAC,KAAK,EAAC,UAAU;gBACzB,oBAAC,UAAU,IACT,UAAU,QACV,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,EAAC,SAAS,EAAE,EAAE,EAAC,EACtB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,QAAQ,GAClB,CACQ,CACR,CACP,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CACL,oBAAC,GAAG,IAAC,QAAQ,EAAE,KAAK;YAClB,oBAAC,UAAU,IACT,UAAU,QACV,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,EAAC,SAAS,EAAE,EAAE,EAAC,EACtB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,QAAQ,GAClB,CACE,CACP,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@ export * from "./Common";
12
12
  export * from "./Constants";
13
13
  export * from "./DateTimeActionSheet";
14
14
  export * from "./DateTimeField";
15
+ export * from "./DateUtilities";
15
16
  export * from "./DecimalRangeActionSheet";
16
17
  export * from "./ErrorBoundary";
17
18
  export * from "./ErrorPage";
package/dist/index.js CHANGED
@@ -12,6 +12,7 @@ export * from "./Common";
12
12
  export * from "./Constants";
13
13
  export * from "./DateTimeActionSheet";
14
14
  export * from "./DateTimeField";
15
+ export * from "./DateUtilities";
15
16
  export * from "./DecimalRangeActionSheet";
16
17
  export * from "./ErrorBoundary";
17
18
  export * from "./ErrorPage";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,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,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,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,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC"}
File without changes
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ process.env.TZ = "America/New_York";
3
+ //# sourceMappingURL=setupTests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupTests.js","sourceRoot":"","sources":["../src/setupTests.ts"],"names":[],"mappings":";AAAA,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ferns-ui",
3
- "version": "0.44.2",
3
+ "version": "0.45.1",
4
4
  "main": "dist/index.js",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
@@ -9,13 +9,18 @@
9
9
  "lintfix": "eslint --fix \"src/**/*.ts*\"",
10
10
  "build": "tsc",
11
11
  "dev": "tsc -w",
12
- "deps": "node checkDeps.js"
12
+ "deps": "node checkDeps.js",
13
+ "test": "TZ=America/New_York jest --watchAll",
14
+ "test:ci": "TZ=America/New_York jest --ci"
13
15
  },
14
16
  "babel": {
15
17
  "presets": [
16
18
  "react-app"
17
19
  ]
18
20
  },
21
+ "jest": {
22
+ "globalSetup": "./jest-setup.js"
23
+ },
19
24
  "browserslist": {
20
25
  "production": [
21
26
  ">0.2%",
@@ -46,66 +51,38 @@
46
51
  "project": "./tsconfig.json",
47
52
  "tsconfigRootDir": "./"
48
53
  },
54
+ "plugins": [
55
+ "ban"
56
+ ],
49
57
  "rules": {
50
- "@typescript-eslint/explicit-function-return-type": "off"
58
+ "@typescript-eslint/explicit-function-return-type": "off",
59
+ "ban/ban": [
60
+ "error",
61
+ {
62
+ "name": [
63
+ "dayjs",
64
+ "*"
65
+ ],
66
+ "message": "Use Luxon."
67
+ },
68
+ {
69
+ "name": [
70
+ "moment",
71
+ "*"
72
+ ],
73
+ "message": "Use Luxon"
74
+ }
75
+ ]
51
76
  }
52
77
  },
53
- "jest": {
54
- "collectCoverageFrom": [
55
- "src/**/*.{js,jsx,ts,tsx}",
56
- "!src/**/*.d.ts"
57
- ],
58
- "moduleFileExtensions": [
59
- "web.js",
60
- "js",
61
- "web.ts",
62
- "ts",
63
- "web.tsx",
64
- "tsx",
65
- "json",
66
- "web.jsx",
67
- "jsx",
68
- "node"
69
- ],
70
- "moduleNameMapper": {
71
- "^react-native$": "react-native-web",
72
- "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy"
73
- },
74
- "modulePaths": [],
75
- "roots": [
76
- "<rootDir>/src"
77
- ],
78
- "setupFiles": [
79
- "react-app-polyfill/jsdom"
80
- ],
81
- "setupFilesAfterEnv": [
82
- "<rootDir>/src/setupTests.ts"
83
- ],
84
- "testEnvironment": "jest-environment-jsdom-fourteen",
85
- "testMatch": [
86
- "<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
87
- "<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"
88
- ],
89
- "transform": {
90
- "^.+\\.(js|jsx|ts|tsx)$": "<rootDir>/node_modules/babel-jest",
91
- "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
92
- "^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
93
- },
94
- "transformIgnorePatterns": [
95
- "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$",
96
- "^.+\\.module\\.(css|sass|scss)$"
97
- ],
98
- "watchPlugins": [
99
- "jest-watch-typeahead/filename",
100
- "jest-watch-typeahead/testname"
101
- ]
102
- },
103
78
  "files": [
104
79
  "dist/**/*",
105
80
  "src/**/*"
106
81
  ],
107
82
  "devDependencies": {
108
83
  "@expo/config-plugins": "~7.8.0",
84
+ "@types/jest": "^29.5.12",
85
+ "@types/luxon": "^3.4.2",
109
86
  "@types/mdurl": "^1.0.4",
110
87
  "@types/react": "~18.2.57",
111
88
  "@types/react-datetime-picker": "^5.0.0",
@@ -113,8 +90,11 @@
113
90
  "@types/react-time-picker": "^6.0.0",
114
91
  "@typescript-eslint/eslint-plugin": "^7.0.2",
115
92
  "@typescript-eslint/parser": "^7.0.2",
93
+ "babel-jest": "^29.7.0",
94
+ "babel-preset-react-app": "^10.0.1",
116
95
  "eslint": "^8.56.0",
117
96
  "eslint-config-prettier": "^9.1.0",
97
+ "eslint-plugin-ban": "^1.6.0",
118
98
  "eslint-plugin-comment-length": "^1.7.3",
119
99
  "eslint-plugin-ferns": "^0.3.0",
120
100
  "eslint-plugin-import": "^2.29.1",
@@ -125,6 +105,9 @@
125
105
  "eslint-plugin-react-native": "^4.1.0",
126
106
  "eslint-plugin-simple-import-sort": "^12.0.0",
127
107
  "eslint-plugin-unused-imports": "3.1.0",
108
+ "jest": "^29.7.0",
109
+ "jest-expo": "~50.0.0",
110
+ "jest-github-actions-reporter": "^1.0.3",
128
111
  "mdurl": "^2.0.0",
129
112
  "prettier": "^3.2.5",
130
113
  "react": "18.2.0",
@@ -145,7 +128,6 @@
145
128
  "@react-native-community/blur": "^4.4.0",
146
129
  "@react-native-community/datetimepicker": "7.6.1",
147
130
  "@react-native-picker/picker": "2.6.1",
148
- "dayjs": "^1.11.10",
149
131
  "expo-clipboard": "~5.0.1",
150
132
  "expo-font": "~11.10.3",
151
133
  "expo-haptics": "~12.8.1",
@@ -154,6 +136,7 @@
154
136
  "expo-localization": "~14.8.3",
155
137
  "libphonenumber-js": "^1.10.56",
156
138
  "lodash": "^4.17.21",
139
+ "luxon": "^3.4.4",
157
140
  "react-app-polyfill": "^3.0.0",
158
141
  "react-date-picker": "^10.5.2",
159
142
  "react-datetime-picker": "^5.5.3",
package/src/Button.tsx CHANGED
@@ -38,7 +38,6 @@ export const Button = ({
38
38
  disabled = false,
39
39
  type = "solid",
40
40
  loading: propsLoading,
41
- children,
42
41
  text,
43
42
  inline = false,
44
43
  icon,
@@ -161,7 +160,6 @@ export const Button = ({
161
160
  />
162
161
  </Box>
163
162
  )}
164
- {Boolean(children) && children}
165
163
  {Boolean(text) && (
166
164
  <Text
167
165
  align="center"
package/src/Common.ts CHANGED
@@ -1908,6 +1908,14 @@ export interface DateTimeFieldProps extends FieldWithLabelsProps {
1908
1908
  onChange: (date: Date) => void;
1909
1909
  dateFormat?: string;
1910
1910
  pickerType?: "default" | "compact" | "inline" | "spinner";
1911
+ showTimezone?: boolean; // defaults to true
1912
+ }
1913
+
1914
+ export interface TimezonePickerProps {
1915
+ timezone?: string;
1916
+ onChange: (tz: string | undefined) => void | Promise<void>;
1917
+ showLabel?: boolean; // defaults to true
1918
+ width?: number | string; // defaults to 100
1911
1919
  }
1912
1920
 
1913
1921
  export interface TextFieldProps extends FieldWithLabelsProps {
@@ -1946,6 +1954,8 @@ export interface TextFieldProps extends FieldWithLabelsProps {
1946
1954
  // Required for type=numberRange
1947
1955
  min?: number;
1948
1956
  max?: number;
1957
+ // Options to translate values
1958
+ transformValue?: TransformValueOptions;
1949
1959
  }
1950
1960
 
1951
1961
  export type TextAreaProps = TextFieldProps;
@@ -2128,6 +2138,13 @@ export interface AddressInterface {
2128
2138
  countyCode?: string;
2129
2139
  }
2130
2140
 
2141
+ export interface TransformValueOptions {
2142
+ func?: (value: string) => string;
2143
+ options?: {
2144
+ [key: string]: any;
2145
+ };
2146
+ }
2147
+
2131
2148
  // TODO: Tighten up type to exclude string, which is almost never an acceptable type for React
2132
2149
  // Native children (except Heading or Text for example.).
2133
2150
  export type ReactChild = ReactNode;
@@ -2628,7 +2645,6 @@ export interface BodyProps {
2628
2645
 
2629
2646
  export interface ButtonProps {
2630
2647
  alignSelf?: FlexStyle["alignSelf"];
2631
- children?: React.ReactElement;
2632
2648
  text: string;
2633
2649
  // TODO make this work for all colors
2634
2650
  color?: ButtonColor | Color;
@@ -2670,6 +2686,7 @@ export interface DateTimeActionSheetProps {
2670
2686
  actionSheetRef: React.RefObject<any>;
2671
2687
  visible: boolean;
2672
2688
  onDismiss: () => void;
2689
+ transformValue?: TransformValueOptions;
2673
2690
  }
2674
2691
 
2675
2692
  export interface DecimalRangeActionSheetProps {
@@ -2726,6 +2743,7 @@ export interface FieldProps extends FieldWithLabelsProps {
2726
2743
  includeCounty?: boolean;
2727
2744
  googleMapsApiKey?: string;
2728
2745
  googlePlacesMobileStyles?: Styles;
2746
+ transformValue?: TransformValueOptions;
2729
2747
  }
2730
2748
 
2731
2749
  export interface FormLineProps {