rn-inputforge 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +273 -0
- package/lib/commonjs/components/ChatInput/ChatInput.js +170 -0
- package/lib/commonjs/components/ChatInput/ChatInput.js.map +1 -0
- package/lib/commonjs/components/ChatInput/index.js +13 -0
- package/lib/commonjs/components/ChatInput/index.js.map +1 -0
- package/lib/commonjs/components/ChatInput/types.js +6 -0
- package/lib/commonjs/components/ChatInput/types.js.map +1 -0
- package/lib/commonjs/components/DescriptionField/DescriptionField.js +40 -0
- package/lib/commonjs/components/DescriptionField/DescriptionField.js.map +1 -0
- package/lib/commonjs/components/DescriptionField/index.js +13 -0
- package/lib/commonjs/components/DescriptionField/index.js.map +1 -0
- package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js +207 -0
- package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js.map +1 -0
- package/lib/commonjs/components/FieldFlowInput/index.js +13 -0
- package/lib/commonjs/components/FieldFlowInput/index.js.map +1 -0
- package/lib/commonjs/components/FieldFlowInput/styles.js +99 -0
- package/lib/commonjs/components/FieldFlowInput/styles.js.map +1 -0
- package/lib/commonjs/components/FieldFlowInput/types.js +6 -0
- package/lib/commonjs/components/FieldFlowInput/types.js.map +1 -0
- package/lib/commonjs/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js +44 -0
- package/lib/commonjs/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js.map +1 -0
- package/lib/commonjs/components/KeyboardAwareFormWrapper/index.js +13 -0
- package/lib/commonjs/components/KeyboardAwareFormWrapper/index.js.map +1 -0
- package/lib/commonjs/hooks/index.js +27 -0
- package/lib/commonjs/hooks/index.js.map +1 -0
- package/lib/commonjs/hooks/useFieldFlowForm.js +108 -0
- package/lib/commonjs/hooks/useFieldFlowForm.js.map +1 -0
- package/lib/commonjs/hooks/useFieldState.js +27 -0
- package/lib/commonjs/hooks/useFieldState.js.map +1 -0
- package/lib/commonjs/hooks/useKeyboardManager.js +68 -0
- package/lib/commonjs/hooks/useKeyboardManager.js.map +1 -0
- package/lib/commonjs/icons/Icon.js +388 -0
- package/lib/commonjs/icons/Icon.js.map +1 -0
- package/lib/commonjs/icons/index.js +13 -0
- package/lib/commonjs/icons/index.js.map +1 -0
- package/lib/commonjs/index.js +158 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/theme/ThemeProvider.js +48 -0
- package/lib/commonjs/theme/ThemeProvider.js.map +1 -0
- package/lib/commonjs/theme/defaultTheme.js +62 -0
- package/lib/commonjs/theme/defaultTheme.js.map +1 -0
- package/lib/commonjs/theme/index.js +38 -0
- package/lib/commonjs/theme/index.js.map +1 -0
- package/lib/commonjs/types/index.js +6 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/commonjs/utils/formatters.js +25 -0
- package/lib/commonjs/utils/formatters.js.map +1 -0
- package/lib/commonjs/utils/keyboardTypes.js +103 -0
- package/lib/commonjs/utils/keyboardTypes.js.map +1 -0
- package/lib/commonjs/validation/index.js +80 -0
- package/lib/commonjs/validation/index.js.map +1 -0
- package/lib/commonjs/validation/useValidation.js +34 -0
- package/lib/commonjs/validation/useValidation.js.map +1 -0
- package/lib/commonjs/validation/validators.js +118 -0
- package/lib/commonjs/validation/validators.js.map +1 -0
- package/lib/module/components/ChatInput/ChatInput.js +165 -0
- package/lib/module/components/ChatInput/ChatInput.js.map +1 -0
- package/lib/module/components/ChatInput/index.js +4 -0
- package/lib/module/components/ChatInput/index.js.map +1 -0
- package/lib/module/components/ChatInput/types.js +4 -0
- package/lib/module/components/ChatInput/types.js.map +1 -0
- package/lib/module/components/DescriptionField/DescriptionField.js +35 -0
- package/lib/module/components/DescriptionField/DescriptionField.js.map +1 -0
- package/lib/module/components/DescriptionField/index.js +4 -0
- package/lib/module/components/DescriptionField/index.js.map +1 -0
- package/lib/module/components/FieldFlowInput/FieldFlowInput.js +202 -0
- package/lib/module/components/FieldFlowInput/FieldFlowInput.js.map +1 -0
- package/lib/module/components/FieldFlowInput/index.js +4 -0
- package/lib/module/components/FieldFlowInput/index.js.map +1 -0
- package/lib/module/components/FieldFlowInput/styles.js +92 -0
- package/lib/module/components/FieldFlowInput/styles.js.map +1 -0
- package/lib/module/components/FieldFlowInput/types.js +4 -0
- package/lib/module/components/FieldFlowInput/types.js.map +1 -0
- package/lib/module/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js +39 -0
- package/lib/module/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js.map +1 -0
- package/lib/module/components/KeyboardAwareFormWrapper/index.js +4 -0
- package/lib/module/components/KeyboardAwareFormWrapper/index.js.map +1 -0
- package/lib/module/hooks/index.js +6 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/useFieldFlowForm.js +104 -0
- package/lib/module/hooks/useFieldFlowForm.js.map +1 -0
- package/lib/module/hooks/useFieldState.js +23 -0
- package/lib/module/hooks/useFieldState.js.map +1 -0
- package/lib/module/hooks/useKeyboardManager.js +64 -0
- package/lib/module/hooks/useKeyboardManager.js.map +1 -0
- package/lib/module/icons/Icon.js +383 -0
- package/lib/module/icons/Icon.js.map +1 -0
- package/lib/module/icons/index.js +4 -0
- package/lib/module/icons/index.js.map +1 -0
- package/lib/module/index.js +18 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/theme/ThemeProvider.js +42 -0
- package/lib/module/theme/ThemeProvider.js.map +1 -0
- package/lib/module/theme/defaultTheme.js +58 -0
- package/lib/module/theme/defaultTheme.js.map +1 -0
- package/lib/module/theme/index.js +5 -0
- package/lib/module/theme/index.js.map +1 -0
- package/lib/module/types/index.js +4 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/utils/formatters.js +19 -0
- package/lib/module/utils/formatters.js.map +1 -0
- package/lib/module/utils/keyboardTypes.js +98 -0
- package/lib/module/utils/keyboardTypes.js.map +1 -0
- package/lib/module/validation/index.js +5 -0
- package/lib/module/validation/index.js.map +1 -0
- package/lib/module/validation/useValidation.js +30 -0
- package/lib/module/validation/useValidation.js.map +1 -0
- package/lib/module/validation/validators.js +103 -0
- package/lib/module/validation/validators.js.map +1 -0
- package/lib/typescript/components/ChatInput/ChatInput.d.ts +10 -0
- package/lib/typescript/components/ChatInput/ChatInput.d.ts.map +1 -0
- package/lib/typescript/components/ChatInput/index.d.ts +3 -0
- package/lib/typescript/components/ChatInput/index.d.ts.map +1 -0
- package/lib/typescript/components/ChatInput/types.d.ts +30 -0
- package/lib/typescript/components/ChatInput/types.d.ts.map +1 -0
- package/lib/typescript/components/DescriptionField/DescriptionField.d.ts +16 -0
- package/lib/typescript/components/DescriptionField/DescriptionField.d.ts.map +1 -0
- package/lib/typescript/components/DescriptionField/index.d.ts +3 -0
- package/lib/typescript/components/DescriptionField/index.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowInput/FieldFlowInput.d.ts +5 -0
- package/lib/typescript/components/FieldFlowInput/FieldFlowInput.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowInput/index.d.ts +3 -0
- package/lib/typescript/components/FieldFlowInput/index.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowInput/styles.d.ts +71 -0
- package/lib/typescript/components/FieldFlowInput/styles.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowInput/types.d.ts +50 -0
- package/lib/typescript/components/FieldFlowInput/types.d.ts.map +1 -0
- package/lib/typescript/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.d.ts +17 -0
- package/lib/typescript/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.d.ts.map +1 -0
- package/lib/typescript/components/KeyboardAwareFormWrapper/index.d.ts +3 -0
- package/lib/typescript/components/KeyboardAwareFormWrapper/index.d.ts.map +1 -0
- package/lib/typescript/hooks/index.d.ts +7 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -0
- package/lib/typescript/hooks/useFieldFlowForm.d.ts +31 -0
- package/lib/typescript/hooks/useFieldFlowForm.d.ts.map +1 -0
- package/lib/typescript/hooks/useFieldState.d.ts +12 -0
- package/lib/typescript/hooks/useFieldState.d.ts.map +1 -0
- package/lib/typescript/hooks/useKeyboardManager.d.ts +35 -0
- package/lib/typescript/hooks/useKeyboardManager.d.ts.map +1 -0
- package/lib/typescript/icons/Icon.d.ts +17 -0
- package/lib/typescript/icons/Icon.d.ts.map +1 -0
- package/lib/typescript/icons/index.d.ts +3 -0
- package/lib/typescript/icons/index.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +18 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/theme/ThemeProvider.d.ts +16 -0
- package/lib/typescript/theme/ThemeProvider.d.ts.map +1 -0
- package/lib/typescript/theme/defaultTheme.d.ts +4 -0
- package/lib/typescript/theme/defaultTheme.d.ts.map +1 -0
- package/lib/typescript/theme/index.d.ts +4 -0
- package/lib/typescript/theme/index.d.ts.map +1 -0
- package/lib/typescript/types/index.d.ts +79 -0
- package/lib/typescript/types/index.d.ts.map +1 -0
- package/lib/typescript/utils/formatters.d.ts +5 -0
- package/lib/typescript/utils/formatters.d.ts.map +1 -0
- package/lib/typescript/utils/keyboardTypes.d.ts +18 -0
- package/lib/typescript/utils/keyboardTypes.d.ts.map +1 -0
- package/lib/typescript/validation/index.d.ts +4 -0
- package/lib/typescript/validation/index.d.ts.map +1 -0
- package/lib/typescript/validation/useValidation.d.ts +14 -0
- package/lib/typescript/validation/useValidation.d.ts.map +1 -0
- package/lib/typescript/validation/validators.d.ts +17 -0
- package/lib/typescript/validation/validators.d.ts.map +1 -0
- package/package.json +80 -0
- package/src/components/ChatInput/ChatInput.tsx +178 -0
- package/src/components/ChatInput/index.ts +2 -0
- package/src/components/ChatInput/types.ts +35 -0
- package/src/components/DescriptionField/DescriptionField.tsx +39 -0
- package/src/components/DescriptionField/index.ts +2 -0
- package/src/components/FieldFlowInput/FieldFlowInput.tsx +240 -0
- package/src/components/FieldFlowInput/index.ts +2 -0
- package/src/components/FieldFlowInput/styles.ts +94 -0
- package/src/components/FieldFlowInput/types.ts +55 -0
- package/src/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.tsx +45 -0
- package/src/components/KeyboardAwareFormWrapper/index.ts +2 -0
- package/src/hooks/index.ts +12 -0
- package/src/hooks/useFieldFlowForm.ts +133 -0
- package/src/hooks/useFieldState.ts +31 -0
- package/src/hooks/useKeyboardManager.ts +105 -0
- package/src/icons/Icon.tsx +338 -0
- package/src/icons/index.ts +2 -0
- package/src/index.ts +63 -0
- package/src/theme/ThemeProvider.tsx +49 -0
- package/src/theme/defaultTheme.ts +58 -0
- package/src/theme/index.ts +3 -0
- package/src/types/index.ts +98 -0
- package/src/utils/formatters.ts +18 -0
- package/src/utils/keyboardTypes.ts +85 -0
- package/src/validation/index.ts +15 -0
- package/src/validation/useValidation.ts +37 -0
- package/src/validation/validators.ts +93 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.FieldFlowThemeProvider = FieldFlowThemeProvider;
|
|
7
|
+
exports.mergeDeep = mergeDeep;
|
|
8
|
+
exports.useFieldFlowTheme = useFieldFlowTheme;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _defaultTheme = require("./defaultTheme");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
|
+
const FieldFlowThemeContext = /*#__PURE__*/(0, _react.createContext)(_defaultTheme.defaultTheme);
|
|
14
|
+
function mergeDeep(base, override) {
|
|
15
|
+
if (!override) return base;
|
|
16
|
+
const result = {
|
|
17
|
+
...base
|
|
18
|
+
};
|
|
19
|
+
for (const key of Object.keys(override)) {
|
|
20
|
+
const overrideValue = override[key];
|
|
21
|
+
const baseValue = base[key];
|
|
22
|
+
if (overrideValue && typeof overrideValue === 'object' && !Array.isArray(overrideValue) && baseValue && typeof baseValue === 'object') {
|
|
23
|
+
result[key] = mergeDeep(baseValue, overrideValue);
|
|
24
|
+
} else if (overrideValue !== undefined) {
|
|
25
|
+
result[key] = overrideValue;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Wrap your app (or a screen/form) in this provider to apply a custom theme.
|
|
32
|
+
* Any field not covered by your overrides falls back to FieldFlow's defaults,
|
|
33
|
+
* so you only need to specify what you want to change.
|
|
34
|
+
*/
|
|
35
|
+
function FieldFlowThemeProvider({
|
|
36
|
+
theme,
|
|
37
|
+
children
|
|
38
|
+
}) {
|
|
39
|
+
const merged = (0, _react.useMemo)(() => mergeDeep(_defaultTheme.defaultTheme, theme), [theme]);
|
|
40
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(FieldFlowThemeContext.Provider, {
|
|
41
|
+
value: merged,
|
|
42
|
+
children: children
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function useFieldFlowTheme() {
|
|
46
|
+
return (0, _react.useContext)(FieldFlowThemeContext);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=ThemeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_defaultTheme","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FieldFlowThemeContext","createContext","defaultTheme","mergeDeep","base","override","result","key","keys","overrideValue","baseValue","Array","isArray","undefined","FieldFlowThemeProvider","theme","children","merged","useMemo","jsx","Provider","value","useFieldFlowTheme","useContext"],"sourceRoot":"../../../src","sources":["theme/ThemeProvider.tsx"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAD,OAAA;AAA8C,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAD,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAE9C,MAAMkB,qBAAqB,gBAAG,IAAAC,oBAAa,EAAiBC,0BAAY,CAAC;AAEzE,SAASC,SAASA,CAAgCC,IAAO,EAAEC,QAAyB,EAAK;EACvF,IAAI,CAACA,QAAQ,EAAE,OAAOD,IAAI;EAC1B,MAAME,MAAW,GAAG;IAAE,GAAGF;EAAK,CAAC;EAC/B,KAAK,MAAMG,GAAG,IAAIV,MAAM,CAACW,IAAI,CAACH,QAAQ,CAAC,EAAE;IACvC,MAAMI,aAAa,GAAIJ,QAAQ,CAASE,GAAG,CAAC;IAC5C,MAAMG,SAAS,GAAIN,IAAI,CAASG,GAAG,CAAC;IACpC,IACEE,aAAa,IACb,OAAOA,aAAa,KAAK,QAAQ,IACjC,CAACE,KAAK,CAACC,OAAO,CAACH,aAAa,CAAC,IAC7BC,SAAS,IACT,OAAOA,SAAS,KAAK,QAAQ,EAC7B;MACAJ,MAAM,CAACC,GAAG,CAAC,GAAGJ,SAAS,CAACO,SAAS,EAAED,aAAa,CAAC;IACnD,CAAC,MAAM,IAAIA,aAAa,KAAKI,SAAS,EAAE;MACtCP,MAAM,CAACC,GAAG,CAAC,GAAGE,aAAa;IAC7B;EACF;EACA,OAAOH,MAAM;AACf;AAOA;AACA;AACA;AACA;AACA;AACO,SAASQ,sBAAsBA,CAAC;EAAEC,KAAK;EAAEC;AAAsC,CAAC,EAAE;EACvF,MAAMC,MAAM,GAAG,IAAAC,cAAO,EAAC,MAAMf,SAAS,CAACD,0BAAY,EAAEa,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EACrE,oBACE,IAAAnC,WAAA,CAAAuC,GAAA,EAACnB,qBAAqB,CAACoB,QAAQ;IAACC,KAAK,EAAEJ,MAAO;IAAAD,QAAA,EAAEA;EAAQ,CAAiC,CAAC;AAE9F;AAEO,SAASM,iBAAiBA,CAAA,EAAmB;EAClD,OAAO,IAAAC,iBAAU,EAACvB,qBAAqB,CAAC;AAC1C","ignoreList":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.defaultTheme = exports.darkTheme = void 0;
|
|
7
|
+
const defaultTheme = exports.defaultTheme = {
|
|
8
|
+
colors: {
|
|
9
|
+
background: '#FFFFFF',
|
|
10
|
+
backgroundDisabled: '#F2F3F5',
|
|
11
|
+
border: '#D8DCE2',
|
|
12
|
+
borderFocused: '#3B82F6',
|
|
13
|
+
borderError: '#EF4444',
|
|
14
|
+
borderSuccess: '#22C55E',
|
|
15
|
+
text: '#111827',
|
|
16
|
+
placeholder: '#9CA3AF',
|
|
17
|
+
label: '#374151',
|
|
18
|
+
labelFocused: '#3B82F6',
|
|
19
|
+
error: '#EF4444',
|
|
20
|
+
success: '#22C55E',
|
|
21
|
+
icon: '#6B7280',
|
|
22
|
+
iconFocused: '#3B82F6'
|
|
23
|
+
},
|
|
24
|
+
spacing: {
|
|
25
|
+
paddingHorizontal: 14,
|
|
26
|
+
paddingVertical: 12,
|
|
27
|
+
gap: 6,
|
|
28
|
+
borderRadius: 10,
|
|
29
|
+
borderWidth: 1,
|
|
30
|
+
borderWidthFocused: 1.5
|
|
31
|
+
},
|
|
32
|
+
typography: {
|
|
33
|
+
fontSize: 15,
|
|
34
|
+
labelFontSize: 13,
|
|
35
|
+
helperFontSize: 12,
|
|
36
|
+
fontWeight: '400'
|
|
37
|
+
},
|
|
38
|
+
animation: {
|
|
39
|
+
duration: 160,
|
|
40
|
+
useNativeDriver: false
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const darkTheme = exports.darkTheme = {
|
|
44
|
+
...defaultTheme,
|
|
45
|
+
colors: {
|
|
46
|
+
background: '#1F2329',
|
|
47
|
+
backgroundDisabled: '#15171B',
|
|
48
|
+
border: '#3A3F47',
|
|
49
|
+
borderFocused: '#60A5FA',
|
|
50
|
+
borderError: '#F87171',
|
|
51
|
+
borderSuccess: '#4ADE80',
|
|
52
|
+
text: '#F3F4F6',
|
|
53
|
+
placeholder: '#6B7280',
|
|
54
|
+
label: '#D1D5DB',
|
|
55
|
+
labelFocused: '#60A5FA',
|
|
56
|
+
error: '#F87171',
|
|
57
|
+
success: '#4ADE80',
|
|
58
|
+
icon: '#9CA3AF',
|
|
59
|
+
iconFocused: '#60A5FA'
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=defaultTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["defaultTheme","exports","colors","background","backgroundDisabled","border","borderFocused","borderError","borderSuccess","text","placeholder","label","labelFocused","error","success","icon","iconFocused","spacing","paddingHorizontal","paddingVertical","gap","borderRadius","borderWidth","borderWidthFocused","typography","fontSize","labelFontSize","helperFontSize","fontWeight","animation","duration","useNativeDriver","darkTheme"],"sourceRoot":"../../../src","sources":["theme/defaultTheme.ts"],"mappings":";;;;;;AAEO,MAAMA,YAA4B,GAAAC,OAAA,CAAAD,YAAA,GAAG;EAC1CE,MAAM,EAAE;IACNC,UAAU,EAAE,SAAS;IACrBC,kBAAkB,EAAE,SAAS;IAC7BC,MAAM,EAAE,SAAS;IACjBC,aAAa,EAAE,SAAS;IACxBC,WAAW,EAAE,SAAS;IACtBC,aAAa,EAAE,SAAS;IACxBC,IAAI,EAAE,SAAS;IACfC,WAAW,EAAE,SAAS;IACtBC,KAAK,EAAE,SAAS;IAChBC,YAAY,EAAE,SAAS;IACvBC,KAAK,EAAE,SAAS;IAChBC,OAAO,EAAE,SAAS;IAClBC,IAAI,EAAE,SAAS;IACfC,WAAW,EAAE;EACf,CAAC;EACDC,OAAO,EAAE;IACPC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,EAAE;IACnBC,GAAG,EAAE,CAAC;IACNC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,kBAAkB,EAAE;EACtB,CAAC;EACDC,UAAU,EAAE;IACVC,QAAQ,EAAE,EAAE;IACZC,aAAa,EAAE,EAAE;IACjBC,cAAc,EAAE,EAAE;IAClBC,UAAU,EAAE;EACd,CAAC;EACDC,SAAS,EAAE;IACTC,QAAQ,EAAE,GAAG;IACbC,eAAe,EAAE;EACnB;AACF,CAAC;AAEM,MAAMC,SAAyB,GAAA/B,OAAA,CAAA+B,SAAA,GAAG;EACvC,GAAGhC,YAAY;EACfE,MAAM,EAAE;IACNC,UAAU,EAAE,SAAS;IACrBC,kBAAkB,EAAE,SAAS;IAC7BC,MAAM,EAAE,SAAS;IACjBC,aAAa,EAAE,SAAS;IACxBC,WAAW,EAAE,SAAS;IACtBC,aAAa,EAAE,SAAS;IACxBC,IAAI,EAAE,SAAS;IACfC,WAAW,EAAE,SAAS;IACtBC,KAAK,EAAE,SAAS;IAChBC,YAAY,EAAE,SAAS;IACvBC,KAAK,EAAE,SAAS;IAChBC,OAAO,EAAE,SAAS;IAClBC,IAAI,EAAE,SAAS;IACfC,WAAW,EAAE;EACf;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "FieldFlowThemeProvider", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _ThemeProvider.FieldFlowThemeProvider;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "darkTheme", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _defaultTheme.darkTheme;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "defaultTheme", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _defaultTheme.defaultTheme;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "mergeDeep", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _ThemeProvider.mergeDeep;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "useFieldFlowTheme", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _ThemeProvider.useFieldFlowTheme;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
var _defaultTheme = require("./defaultTheme");
|
|
37
|
+
var _ThemeProvider = require("./ThemeProvider");
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_defaultTheme","require","_ThemeProvider"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/index.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.sanitizeNumeric = sanitizeNumeric;
|
|
7
|
+
exports.sanitizePhone = sanitizePhone;
|
|
8
|
+
exports.truncate = truncate;
|
|
9
|
+
/** Strips everything except digits, a single leading "+", and "." for decimals. */
|
|
10
|
+
function sanitizeNumeric(value, allowDecimal = false) {
|
|
11
|
+
if (allowDecimal) {
|
|
12
|
+
const cleaned = value.replace(/[^0-9.]/g, '');
|
|
13
|
+
const [head, ...rest] = cleaned.split('.');
|
|
14
|
+
return rest.length ? `${head}.${rest.join('')}` : head;
|
|
15
|
+
}
|
|
16
|
+
return value.replace(/[^0-9]/g, '');
|
|
17
|
+
}
|
|
18
|
+
function sanitizePhone(value) {
|
|
19
|
+
return value.replace(/[^0-9+()\-\s]/g, '');
|
|
20
|
+
}
|
|
21
|
+
function truncate(value, maxLength) {
|
|
22
|
+
if (!maxLength) return value;
|
|
23
|
+
return value.length > maxLength ? value.slice(0, maxLength) : value;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["sanitizeNumeric","value","allowDecimal","cleaned","replace","head","rest","split","length","join","sanitizePhone","truncate","maxLength","slice"],"sourceRoot":"../../../src","sources":["utils/formatters.ts"],"mappings":";;;;;;;;AAAA;AACO,SAASA,eAAeA,CAACC,KAAa,EAAEC,YAAY,GAAG,KAAK,EAAU;EAC3E,IAAIA,YAAY,EAAE;IAChB,MAAMC,OAAO,GAAGF,KAAK,CAACG,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;IAC7C,MAAM,CAACC,IAAI,EAAE,GAAGC,IAAI,CAAC,GAAGH,OAAO,CAACI,KAAK,CAAC,GAAG,CAAC;IAC1C,OAAOD,IAAI,CAACE,MAAM,GAAG,GAAGH,IAAI,IAAIC,IAAI,CAACG,IAAI,CAAC,EAAE,CAAC,EAAE,GAAGJ,IAAI;EACxD;EACA,OAAOJ,KAAK,CAACG,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;AACrC;AAEO,SAASM,aAAaA,CAACT,KAAa,EAAU;EACnD,OAAOA,KAAK,CAACG,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;AAC5C;AAEO,SAASO,QAAQA,CAACV,KAAa,EAAEW,SAAkB,EAAU;EAClE,IAAI,CAACA,SAAS,EAAE,OAAOX,KAAK;EAC5B,OAAOA,KAAK,CAACO,MAAM,GAAGI,SAAS,GAAGX,KAAK,CAACY,KAAK,CAAC,CAAC,EAAED,SAAS,CAAC,GAAGX,KAAK;AACrE","ignoreList":[]}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.implicitRulesForType = implicitRulesForType;
|
|
7
|
+
exports.resolveFieldConfig = resolveFieldConfig;
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
/**
|
|
10
|
+
* Central place that decides "if fieldType is X, the input should behave like Y".
|
|
11
|
+
* This is what powers the "just set type='email' and everything is handled" behavior.
|
|
12
|
+
*/
|
|
13
|
+
function resolveFieldConfig(type) {
|
|
14
|
+
switch (type) {
|
|
15
|
+
case 'email':
|
|
16
|
+
return {
|
|
17
|
+
keyboardType: 'email-address',
|
|
18
|
+
secureTextEntry: false,
|
|
19
|
+
autoCapitalize: 'none',
|
|
20
|
+
autoCorrect: false,
|
|
21
|
+
multiline: false
|
|
22
|
+
};
|
|
23
|
+
case 'number':
|
|
24
|
+
return {
|
|
25
|
+
keyboardType: _reactNative.Platform.select({
|
|
26
|
+
ios: 'number-pad',
|
|
27
|
+
android: 'numeric',
|
|
28
|
+
default: 'numeric'
|
|
29
|
+
}),
|
|
30
|
+
secureTextEntry: false,
|
|
31
|
+
autoCapitalize: 'none',
|
|
32
|
+
autoCorrect: false,
|
|
33
|
+
multiline: false
|
|
34
|
+
};
|
|
35
|
+
case 'decimal':
|
|
36
|
+
return {
|
|
37
|
+
keyboardType: _reactNative.Platform.select({
|
|
38
|
+
ios: 'decimal-pad',
|
|
39
|
+
android: 'numeric',
|
|
40
|
+
default: 'decimal-pad'
|
|
41
|
+
}),
|
|
42
|
+
secureTextEntry: false,
|
|
43
|
+
autoCapitalize: 'none',
|
|
44
|
+
autoCorrect: false,
|
|
45
|
+
multiline: false
|
|
46
|
+
};
|
|
47
|
+
case 'phone':
|
|
48
|
+
return {
|
|
49
|
+
keyboardType: 'phone-pad',
|
|
50
|
+
secureTextEntry: false,
|
|
51
|
+
autoCapitalize: 'none',
|
|
52
|
+
autoCorrect: false,
|
|
53
|
+
multiline: false
|
|
54
|
+
};
|
|
55
|
+
case 'password':
|
|
56
|
+
return {
|
|
57
|
+
keyboardType: 'default',
|
|
58
|
+
secureTextEntry: true,
|
|
59
|
+
autoCapitalize: 'none',
|
|
60
|
+
autoCorrect: false,
|
|
61
|
+
multiline: false
|
|
62
|
+
};
|
|
63
|
+
case 'search':
|
|
64
|
+
return {
|
|
65
|
+
keyboardType: 'default',
|
|
66
|
+
secureTextEntry: false,
|
|
67
|
+
autoCapitalize: 'none',
|
|
68
|
+
autoCorrect: false,
|
|
69
|
+
multiline: false
|
|
70
|
+
};
|
|
71
|
+
case 'multiline':
|
|
72
|
+
case 'description':
|
|
73
|
+
case 'chat':
|
|
74
|
+
return {
|
|
75
|
+
keyboardType: 'default',
|
|
76
|
+
secureTextEntry: false,
|
|
77
|
+
autoCapitalize: 'sentences',
|
|
78
|
+
autoCorrect: true,
|
|
79
|
+
multiline: true
|
|
80
|
+
};
|
|
81
|
+
case 'text':
|
|
82
|
+
default:
|
|
83
|
+
return {
|
|
84
|
+
keyboardType: 'default',
|
|
85
|
+
secureTextEntry: false,
|
|
86
|
+
autoCapitalize: 'sentences',
|
|
87
|
+
autoCorrect: true,
|
|
88
|
+
multiline: false
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** Returns sensible default validation rules implied purely by the field type (before user overrides). */
|
|
94
|
+
function implicitRulesForType(type) {
|
|
95
|
+
if (type === 'email') return {
|
|
96
|
+
email: true
|
|
97
|
+
};
|
|
98
|
+
if (type === 'number' || type === 'decimal') return {
|
|
99
|
+
number: true
|
|
100
|
+
};
|
|
101
|
+
return {};
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=keyboardTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","resolveFieldConfig","type","keyboardType","secureTextEntry","autoCapitalize","autoCorrect","multiline","Platform","select","ios","android","default","implicitRulesForType","email","number"],"sourceRoot":"../../../src","sources":["utils/keyboardTypes.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAACC,IAAwB,EAA8B;EACvF,QAAQA,IAAI;IACV,KAAK,OAAO;MACV,OAAO;QACLC,YAAY,EAAE,eAAe;QAC7BC,eAAe,EAAE,KAAK;QACtBC,cAAc,EAAE,MAAM;QACtBC,WAAW,EAAE,KAAK;QAClBC,SAAS,EAAE;MACb,CAAC;IACH,KAAK,QAAQ;MACX,OAAO;QACLJ,YAAY,EAAEK,qBAAQ,CAACC,MAAM,CAAC;UAAEC,GAAG,EAAE,YAAY;UAAEC,OAAO,EAAE,SAAS;UAAEC,OAAO,EAAE;QAAU,CAAC,CAAC;QAC5FR,eAAe,EAAE,KAAK;QACtBC,cAAc,EAAE,MAAM;QACtBC,WAAW,EAAE,KAAK;QAClBC,SAAS,EAAE;MACb,CAAC;IACH,KAAK,SAAS;MACZ,OAAO;QACLJ,YAAY,EAAEK,qBAAQ,CAACC,MAAM,CAAC;UAAEC,GAAG,EAAE,aAAa;UAAEC,OAAO,EAAE,SAAS;UAAEC,OAAO,EAAE;QAAc,CAAC,CAAC;QACjGR,eAAe,EAAE,KAAK;QACtBC,cAAc,EAAE,MAAM;QACtBC,WAAW,EAAE,KAAK;QAClBC,SAAS,EAAE;MACb,CAAC;IACH,KAAK,OAAO;MACV,OAAO;QACLJ,YAAY,EAAE,WAAW;QACzBC,eAAe,EAAE,KAAK;QACtBC,cAAc,EAAE,MAAM;QACtBC,WAAW,EAAE,KAAK;QAClBC,SAAS,EAAE;MACb,CAAC;IACH,KAAK,UAAU;MACb,OAAO;QACLJ,YAAY,EAAE,SAAS;QACvBC,eAAe,EAAE,IAAI;QACrBC,cAAc,EAAE,MAAM;QACtBC,WAAW,EAAE,KAAK;QAClBC,SAAS,EAAE;MACb,CAAC;IACH,KAAK,QAAQ;MACX,OAAO;QACLJ,YAAY,EAAE,SAAS;QACvBC,eAAe,EAAE,KAAK;QACtBC,cAAc,EAAE,MAAM;QACtBC,WAAW,EAAE,KAAK;QAClBC,SAAS,EAAE;MACb,CAAC;IACH,KAAK,WAAW;IAChB,KAAK,aAAa;IAClB,KAAK,MAAM;MACT,OAAO;QACLJ,YAAY,EAAE,SAAS;QACvBC,eAAe,EAAE,KAAK;QACtBC,cAAc,EAAE,WAAW;QAC3BC,WAAW,EAAE,IAAI;QACjBC,SAAS,EAAE;MACb,CAAC;IACH,KAAK,MAAM;IACX;MACE,OAAO;QACLJ,YAAY,EAAE,SAAS;QACvBC,eAAe,EAAE,KAAK;QACtBC,cAAc,EAAE,WAAW;QAC3BC,WAAW,EAAE,IAAI;QACjBC,SAAS,EAAE;MACb,CAAC;EACL;AACF;;AAEA;AACO,SAASM,oBAAoBA,CAACX,IAAwB,EAAE;EAC7D,IAAIA,IAAI,KAAK,OAAO,EAAE,OAAO;IAAEY,KAAK,EAAE;EAAc,CAAC;EACrD,IAAIZ,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,SAAS,EAAE,OAAO;IAAEa,MAAM,EAAE;EAAc,CAAC;EAC7E,OAAO,CAAC,CAAC;AACX","ignoreList":[]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "emailValidator", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _validators.emailValidator;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "isValidEmail", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _validators.isValidEmail;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "isValidNumber", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _validators.isValidNumber;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "isValidPhone", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _validators.isValidPhone;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "maxLengthValidator", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _validators.maxLengthValidator;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "minLengthValidator", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _validators.minLengthValidator;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "numberValidator", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _validators.numberValidator;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
Object.defineProperty(exports, "patternValidator", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _validators.patternValidator;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports, "phoneValidator", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _validators.phoneValidator;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(exports, "requiredValidator", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
get: function () {
|
|
63
|
+
return _validators.requiredValidator;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(exports, "runRules", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function () {
|
|
69
|
+
return _validators.runRules;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
Object.defineProperty(exports, "useValidation", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return _useValidation.useValidation;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
var _validators = require("./validators");
|
|
79
|
+
var _useValidation = require("./useValidation");
|
|
80
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_validators","require","_useValidation"],"sourceRoot":"../../../src","sources":["validation/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAaA,IAAAC,cAAA,GAAAD,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useValidation = useValidation;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _validators = require("./validators");
|
|
9
|
+
/**
|
|
10
|
+
* Lightweight per-field validation hook for use outside of `useFieldFlowForm`,
|
|
11
|
+
* e.g. when a single input is validated on its own.
|
|
12
|
+
*/
|
|
13
|
+
function useValidation(rules) {
|
|
14
|
+
const [error, setError] = (0, _react.useState)(null);
|
|
15
|
+
const [touched, setTouched] = (0, _react.useState)(false);
|
|
16
|
+
const validate = (0, _react.useCallback)(value => {
|
|
17
|
+
const result = (0, _validators.runRules)(value, rules);
|
|
18
|
+
setError(result.valid ? null : result.message ?? 'Invalid value');
|
|
19
|
+
return result.valid;
|
|
20
|
+
}, [rules]);
|
|
21
|
+
const markTouched = (0, _react.useCallback)(() => setTouched(true), []);
|
|
22
|
+
const reset = (0, _react.useCallback)(() => {
|
|
23
|
+
setError(null);
|
|
24
|
+
setTouched(false);
|
|
25
|
+
}, []);
|
|
26
|
+
return {
|
|
27
|
+
error,
|
|
28
|
+
touched,
|
|
29
|
+
validate,
|
|
30
|
+
markTouched,
|
|
31
|
+
reset
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=useValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_validators","useValidation","rules","error","setError","useState","touched","setTouched","validate","useCallback","value","result","runRules","valid","message","markTouched","reset"],"sourceRoot":"../../../src","sources":["validation/useValidation.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAUA;AACA;AACA;AACA;AACO,SAASE,aAAaA,CAACC,KAAsB,EAAuB;EACzE,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAAgB,IAAI,CAAC;EACvD,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAF,eAAQ,EAAC,KAAK,CAAC;EAE7C,MAAMG,QAAQ,GAAG,IAAAC,kBAAW,EACzBC,KAAa,IAAK;IACjB,MAAMC,MAAM,GAAG,IAAAC,oBAAQ,EAACF,KAAK,EAAER,KAAK,CAAC;IACrCE,QAAQ,CAACO,MAAM,CAACE,KAAK,GAAG,IAAI,GAAGF,MAAM,CAACG,OAAO,IAAI,eAAe,CAAC;IACjE,OAAOH,MAAM,CAACE,KAAK;EACrB,CAAC,EACD,CAACX,KAAK,CACR,CAAC;EAED,MAAMa,WAAW,GAAG,IAAAN,kBAAW,EAAC,MAAMF,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;EAC3D,MAAMS,KAAK,GAAG,IAAAP,kBAAW,EAAC,MAAM;IAC9BL,QAAQ,CAAC,IAAI,CAAC;IACdG,UAAU,CAAC,KAAK,CAAC;EACnB,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IAAEJ,KAAK;IAAEG,OAAO;IAAEE,QAAQ;IAAEO,WAAW;IAAEC;EAAM,CAAC;AACzD","ignoreList":[]}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.requiredValidator = exports.phoneValidator = exports.patternValidator = exports.numberValidator = exports.minLengthValidator = exports.maxLengthValidator = exports.isValidPhone = exports.isValidNumber = exports.isValidEmail = exports.emailValidator = void 0;
|
|
7
|
+
exports.runRules = runRules;
|
|
8
|
+
const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
9
|
+
const NUMBER_REGEX = /^-?\d+(\.\d+)?$/;
|
|
10
|
+
const PHONE_REGEX = /^[+]?[\d\s()-]{7,20}$/;
|
|
11
|
+
const isValidEmail = value => EMAIL_REGEX.test(value.trim());
|
|
12
|
+
exports.isValidEmail = isValidEmail;
|
|
13
|
+
const isValidNumber = value => NUMBER_REGEX.test(value.trim());
|
|
14
|
+
exports.isValidNumber = isValidNumber;
|
|
15
|
+
const isValidPhone = value => PHONE_REGEX.test(value.trim());
|
|
16
|
+
exports.isValidPhone = isValidPhone;
|
|
17
|
+
const requiredValidator = (message = 'This field is required') => value => value !== undefined && value !== null && value.trim().length > 0 ? {
|
|
18
|
+
valid: true
|
|
19
|
+
} : {
|
|
20
|
+
valid: false,
|
|
21
|
+
message
|
|
22
|
+
};
|
|
23
|
+
exports.requiredValidator = requiredValidator;
|
|
24
|
+
const emailValidator = (message = 'Enter a valid email address') => value => value.length === 0 || isValidEmail(value) ? {
|
|
25
|
+
valid: true
|
|
26
|
+
} : {
|
|
27
|
+
valid: false,
|
|
28
|
+
message
|
|
29
|
+
};
|
|
30
|
+
exports.emailValidator = emailValidator;
|
|
31
|
+
const numberValidator = (message = 'Enter a valid number') => value => value.length === 0 || isValidNumber(value) ? {
|
|
32
|
+
valid: true
|
|
33
|
+
} : {
|
|
34
|
+
valid: false,
|
|
35
|
+
message
|
|
36
|
+
};
|
|
37
|
+
exports.numberValidator = numberValidator;
|
|
38
|
+
const phoneValidator = (message = 'Enter a valid phone number') => value => value.length === 0 || isValidPhone(value) ? {
|
|
39
|
+
valid: true
|
|
40
|
+
} : {
|
|
41
|
+
valid: false,
|
|
42
|
+
message
|
|
43
|
+
};
|
|
44
|
+
exports.phoneValidator = phoneValidator;
|
|
45
|
+
const minLengthValidator = (min, message) => value => value.length === 0 || value.length >= min ? {
|
|
46
|
+
valid: true
|
|
47
|
+
} : {
|
|
48
|
+
valid: false,
|
|
49
|
+
message: message ?? `Must be at least ${min} characters`
|
|
50
|
+
};
|
|
51
|
+
exports.minLengthValidator = minLengthValidator;
|
|
52
|
+
const maxLengthValidator = (max, message) => value => value.length <= max ? {
|
|
53
|
+
valid: true
|
|
54
|
+
} : {
|
|
55
|
+
valid: false,
|
|
56
|
+
message: message ?? `Must be at most ${max} characters`
|
|
57
|
+
};
|
|
58
|
+
exports.maxLengthValidator = maxLengthValidator;
|
|
59
|
+
const patternValidator = (pattern, message = 'Invalid format') => value => value.length === 0 || pattern.test(value) ? {
|
|
60
|
+
valid: true
|
|
61
|
+
} : {
|
|
62
|
+
valid: false,
|
|
63
|
+
message
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Turns a declarative `FieldFlowRules` object into an ordered list of validators
|
|
68
|
+
* and runs them against a value, stopping at (and returning) the first failure.
|
|
69
|
+
*/
|
|
70
|
+
exports.patternValidator = patternValidator;
|
|
71
|
+
function runRules(value, rules) {
|
|
72
|
+
if (!rules) return {
|
|
73
|
+
valid: true
|
|
74
|
+
};
|
|
75
|
+
const validators = [];
|
|
76
|
+
if (rules.required) {
|
|
77
|
+
const message = typeof rules.required === 'string' ? rules.required : undefined;
|
|
78
|
+
validators.push(requiredValidator(message));
|
|
79
|
+
}
|
|
80
|
+
if (rules.email) {
|
|
81
|
+
const message = typeof rules.email === 'string' ? rules.email : undefined;
|
|
82
|
+
validators.push(emailValidator(message));
|
|
83
|
+
}
|
|
84
|
+
if (rules.number) {
|
|
85
|
+
const message = typeof rules.number === 'string' ? rules.number : undefined;
|
|
86
|
+
validators.push(numberValidator(message));
|
|
87
|
+
}
|
|
88
|
+
if (rules.minLength !== undefined) {
|
|
89
|
+
const cfg = typeof rules.minLength === 'number' ? {
|
|
90
|
+
value: rules.minLength
|
|
91
|
+
} : rules.minLength;
|
|
92
|
+
validators.push(minLengthValidator(cfg.value, cfg.message));
|
|
93
|
+
}
|
|
94
|
+
if (rules.maxLength !== undefined) {
|
|
95
|
+
const cfg = typeof rules.maxLength === 'number' ? {
|
|
96
|
+
value: rules.maxLength
|
|
97
|
+
} : rules.maxLength;
|
|
98
|
+
validators.push(maxLengthValidator(cfg.value, cfg.message));
|
|
99
|
+
}
|
|
100
|
+
if (rules.pattern) {
|
|
101
|
+
const cfg = rules.pattern instanceof RegExp ? {
|
|
102
|
+
value: rules.pattern
|
|
103
|
+
} : rules.pattern;
|
|
104
|
+
validators.push(patternValidator(cfg.value, cfg.message));
|
|
105
|
+
}
|
|
106
|
+
if (rules.custom) {
|
|
107
|
+
const customs = Array.isArray(rules.custom) ? rules.custom : [rules.custom];
|
|
108
|
+
validators.push(...customs);
|
|
109
|
+
}
|
|
110
|
+
for (const validate of validators) {
|
|
111
|
+
const result = validate(value ?? '');
|
|
112
|
+
if (!result.valid) return result;
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
valid: true
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["EMAIL_REGEX","NUMBER_REGEX","PHONE_REGEX","isValidEmail","value","test","trim","exports","isValidNumber","isValidPhone","requiredValidator","message","undefined","length","valid","emailValidator","numberValidator","phoneValidator","minLengthValidator","min","maxLengthValidator","max","patternValidator","pattern","runRules","rules","validators","required","push","email","number","minLength","cfg","maxLength","RegExp","custom","customs","Array","isArray","validate","result"],"sourceRoot":"../../../src","sources":["validation/validators.ts"],"mappings":"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","ignoreList":[]}
|