@qoretechnologies/reqraft 0.0.1 → 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.
Files changed (36) hide show
  1. package/dist/components/form/fields/Field.d.ts +10 -0
  2. package/dist/components/form/fields/Field.d.ts.map +1 -0
  3. package/dist/components/form/fields/Field.js +44 -0
  4. package/dist/components/form/fields/Field.js.map +1 -0
  5. package/dist/components/form/{string → fields/string}/String.d.ts +3 -2
  6. package/dist/components/form/fields/string/String.d.ts.map +1 -0
  7. package/dist/components/form/fields/string/String.js.map +1 -0
  8. package/dist/components/form/fields/string/String.stories.d.ts.map +1 -0
  9. package/dist/components/form/fields/string/String.stories.js.map +1 -0
  10. package/dist/hooks/useValidation.d.ts +3 -0
  11. package/dist/hooks/useValidation.d.ts.map +1 -0
  12. package/dist/hooks/useValidation.js +11 -0
  13. package/dist/hooks/useValidation.js.map +1 -0
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/types/Form.d.ts +3 -0
  19. package/dist/types/Form.d.ts.map +1 -0
  20. package/dist/types/Form.js +3 -0
  21. package/dist/types/Form.js.map +1 -0
  22. package/package.json +1 -1
  23. package/src/components/form/fields/Field.tsx +37 -0
  24. package/src/components/form/{string → fields/string}/String.stories.tsx +1 -1
  25. package/src/components/form/{string → fields/string}/String.tsx +3 -2
  26. package/src/hooks/useValidation.ts +9 -0
  27. package/src/index.tsx +1 -1
  28. package/src/types/Form.ts +57 -0
  29. package/tests.json +1 -1
  30. package/dist/components/form/string/String.d.ts.map +0 -1
  31. package/dist/components/form/string/String.js.map +0 -1
  32. package/dist/components/form/string/String.stories.d.ts.map +0 -1
  33. package/dist/components/form/string/String.stories.js.map +0 -1
  34. /package/dist/components/form/{string → fields/string}/String.js +0 -0
  35. /package/dist/components/form/{string → fields/string}/String.stories.d.ts +0 -0
  36. /package/dist/components/form/{string → fields/string}/String.stories.js +0 -0
@@ -0,0 +1,10 @@
1
+ import { TFormFieldType, TFormFieldValueType } from '../../../types/Form';
2
+ export interface IFormFieldProps<T extends TFormFieldType = TFormFieldType> {
3
+ type?: T;
4
+ value: TFormFieldValueType<T>;
5
+ onChange: (value: TFormFieldValueType<T>, event?: unknown) => void;
6
+ validateSelf?: boolean;
7
+ onValidateChange?: (isValid: boolean) => void;
8
+ }
9
+ export declare const FormField: <T extends TFormFieldType>({ type, onChange, ...rest }: IFormFieldProps<T>) => import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=Field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../../src/components/form/fields/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1E,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IACxE,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAED,eAAO,MAAM,SAAS,0DAInB,gBAAgB,CAAC,CAAC,4CAoBpB,CAAC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.FormField = void 0;
26
+ var jsx_runtime_1 = require("react/jsx-runtime");
27
+ var String_1 = require("./string/String");
28
+ var FormField = function (_a) {
29
+ var type = _a.type, onChange = _a.onChange, rest = __rest(_a, ["type", "onChange"]);
30
+ var handleChange = function (value, event) {
31
+ onChange(value, event);
32
+ };
33
+ var renderField = function (type) {
34
+ switch (type) {
35
+ case 'string':
36
+ return ((0, jsx_runtime_1.jsx)(String_1.FormStringField, __assign({}, rest, { onChange: function (value) { return handleChange(value); } })));
37
+ default:
38
+ return null;
39
+ }
40
+ };
41
+ return renderField(type);
42
+ };
43
+ exports.FormField = FormField;
44
+ //# sourceMappingURL=Field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.js","sourceRoot":"","sources":["../../../../src/components/form/fields/Field.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0CAAkD;AAW3C,IAAM,SAAS,GAAG,UAA2B,EAI/B;IAHnB,IAAA,IAAI,UAAA,EACJ,QAAQ,cAAA,EACL,IAAI,cAH2C,oBAInD,CADQ;IAEP,IAAM,YAAY,GAAG,UAAC,KAA6B,EAAE,KAAe;QAClE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG,UAAC,IAAO;QAC1B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,CACL,uBAAC,wBAAe,eACV,IAAI,IACR,QAAQ,EAAE,UAAC,KAAa,IAAK,OAAA,YAAY,CAAC,KAA+B,CAAC,EAA7C,CAA6C,IAC1E,CACH,CAAC;YACJ;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC;AAxBW,QAAA,SAAS,aAwBpB"}
@@ -2,14 +2,15 @@ import { IReqoreControlGroupProps } from '@qoretechnologies/reqore/dist/componen
2
2
  import { IReqoreInputProps } from '@qoretechnologies/reqore/dist/components/Input';
3
3
  import { IReqoreTagProps } from '@qoretechnologies/reqore/dist/components/Tag';
4
4
  import { ChangeEvent } from 'react';
5
+ import { TFormFieldValueType } from '../../../../types/Form';
5
6
  export interface IStringFormFieldProps extends Omit<IReqoreInputProps, 'onChange' | 'value'> {
6
7
  sensitive?: boolean;
7
- value?: string;
8
+ value?: TFormFieldValueType<'string'>;
8
9
  label?: IReqoreTagProps['label'];
9
10
  labelPosition?: 'top' | 'left' | 'right' | 'bottom';
10
11
  labelProps?: IReqoreTagProps;
11
12
  wrapperProps?: IReqoreControlGroupProps;
12
- onChange?: (value?: string, event?: ChangeEvent<HTMLInputElement>) => void;
13
+ onChange?: (value?: TFormFieldValueType<'string'>, event?: ChangeEvent<HTMLInputElement>) => void;
13
14
  }
14
15
  export declare const FormStringField: ({ onChange, wrapperProps, labelProps, label, labelPosition, sensitive, ...rest }: IStringFormFieldProps) => import("react/jsx-runtime").JSX.Element;
15
16
  //# sourceMappingURL=String.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"String.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/fields/string/String.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAe,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC;IAC1F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CACnG;AAED,eAAO,MAAM,eAAe,qFAQzB,qBAAqB,4CA0CvB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"String.js","sourceRoot":"","sources":["../../../../../src/components/form/fields/string/String.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAsF;AAItF,+BAAiD;AAa1C,IAAM,eAAe,GAAG,UAAC,EAQR;IAPtB,IAAA,QAAQ,cAAA,EACR,YAAY,kBAAA,EACZ,UAAU,gBAAA,EACV,KAAK,WAAA,EACL,qBAAqB,EAArB,aAAa,mBAAG,KAAK,KAAA,EACrB,SAAS,eAAA,EACN,IAAI,cAPuB,iFAQ/B,CADQ;IAEP,2BAA2B;IAC3B,IAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,UAAC,KAAoC;;QACpE,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhB,QAAQ,CAAC,MAAA,KAAK,CAAC,MAAM,CAAC,KAAK,0CAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,iCAAiC;IACjC,IAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC;QACnC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,wBAAC,2BAAkB,aACjB,KAAK,UACD,YAAY,IAChB,QAAQ,EAAE,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,KAAK,aAE9D,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,KAAK,IAAI,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CACjF,uBAAC,kBAAS,aAAC,KAAK,EAAE,KAAK,EAAE,KAAK,UAAK,UAAU,EAAI,CAClD,CAAC,CAAC,CAAC,IAAI,EACR,uBAAC,oBAAW,aACV,KAAK,QACL,OAAO,EAAE,UAAC,KAAK;;oBACb,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,qDAAG,KAAK,CAAC,CAAC;gBACzB,CAAC,EACD,OAAO,EAAE,UAAC,KAAK;;oBACb,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,qDAAG,KAAK,CAAC,CAAC;gBACzB,CAAC,EACD,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EACrC,YAAY,EAAE,gBAAgB,IAC1B,IAAI,EACR,EACD,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CACrF,uBAAC,kBAAS,aAAC,KAAK,EAAE,KAAK,EAAE,KAAK,UAAK,UAAU,EAAI,CAClD,CAAC,CAAC,CAAC,IAAI,KACW,CACtB,CAAC;AACJ,CAAC,CAAC;AAlDW,QAAA,eAAe,mBAkD1B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"String.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/fields/string/String.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,QAAA,MAAM,IAAI;;EAG4B,CAAC;AAEvC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AACjC,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC;AACF,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"String.stories.js","sourceRoot":"","sources":["../../../../../src/components/form/fields/string/String.stories.tsx"],"names":[],"mappings":";;;AAEA,mCAA2C;AAE3C,IAAM,IAAI,GAAG;IACX,SAAS,EAAE,wBAAe;IAC1B,KAAK,EAAE,wBAAwB;CACK,CAAC;AAEvC,kBAAe,IAAI,CAAC;AAGP,QAAA,OAAO,GAAU,EAAE,CAAC;AACpB,QAAA,KAAK,GAAU;IAC1B,IAAI,EAAE;QACJ,KAAK,EAAE,eAAe;KACvB;CACF,CAAC;AACW,QAAA,SAAS,GAAU;IAC9B,IAAI,EAAE;QACJ,KAAK,EAAE,OAAO;KACf;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TFormFieldType } from '../types/Form';
2
+ export declare const useValidation: (value: any, type?: TFormFieldType) => boolean;
3
+ //# sourceMappingURL=useValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useValidation.d.ts","sourceRoot":"","sources":["../../src/hooks/useValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAI/C,eAAO,MAAM,aAAa,UAAW,GAAG,SAAS,cAAc,YAI9D,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useValidation = void 0;
4
+ // @ts-expect-error "need to implement this"
5
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
6
+ var useValidation = function (value, type) {
7
+ // Build validation...
8
+ return true;
9
+ };
10
+ exports.useValidation = useValidation;
11
+ //# sourceMappingURL=useValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useValidation.js","sourceRoot":"","sources":["../../src/hooks/useValidation.ts"],"names":[],"mappings":";;;AAEA,4CAA4C;AAC5C,6DAA6D;AACtD,IAAM,aAAa,GAAG,UAAC,KAAU,EAAE,IAAqB;IAC7D,sBAAsB;IAEtB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,aAAa,iBAIxB"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { FormStringField, IStringFormFieldProps } from './components/form/string/String';
1
+ export { FormStringField, IStringFormFieldProps } from './components/form/fields/string/String';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FormStringField = void 0;
4
- var String_1 = require("./components/form/string/String");
4
+ var String_1 = require("./components/form/fields/string/String");
5
5
  Object.defineProperty(exports, "FormStringField", { enumerable: true, get: function () { return String_1.FormStringField; } });
6
6
  //# 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,0DAAyF;AAAhF,yGAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;AAAA,iEAAgG;AAAvF,yGAAA,eAAe,OAAA"}
@@ -0,0 +1,3 @@
1
+ export type TFormFieldType = 'string' | 'number' | 'boolean' | 'date' | 'time' | 'datetime' | 'select' | 'multiSelect' | 'radio' | 'checkbox' | 'file' | 'image' | 'color' | 'password' | 'email' | 'phone' | 'url' | 'markdown';
2
+ export type TFormFieldValueType<T> = T extends 'string' ? string : T extends 'number' ? number : T extends 'boolean' ? boolean : T extends 'date' ? Date | string : T extends 'time' ? Date | string : T extends 'datetime' ? Date | string : T extends 'select' ? string : T extends 'multiSelect' ? string[] : T extends 'radio' ? string : T extends 'checkbox' ? boolean : T extends 'file' ? File : T extends 'image' ? string : T extends 'color' ? string : T extends 'password' ? string : T extends 'email' ? string : T extends 'phone' ? string : T extends 'url' ? string : T extends 'markdown' ? string : any;
3
+ //# sourceMappingURL=Form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../src/types/Form.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,MAAM,GACN,UAAU,GACV,QAAQ,GACR,aAAa,GACb,OAAO,GACP,UAAU,GACV,MAAM,GACN,OAAO,GACP,OAAO,GACP,UAAU,GACV,OAAO,GACP,OAAO,GACP,KAAK,GACL,UAAU,CAAC;AAEf,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,GACnD,MAAM,GACN,CAAC,SAAS,QAAQ,GAClB,MAAM,GACN,CAAC,SAAS,SAAS,GACnB,OAAO,GACP,CAAC,SAAS,MAAM,GAChB,IAAI,GAAG,MAAM,GACb,CAAC,SAAS,MAAM,GAChB,IAAI,GAAG,MAAM,GACb,CAAC,SAAS,UAAU,GACpB,IAAI,GAAG,MAAM,GACb,CAAC,SAAS,QAAQ,GAClB,MAAM,GACN,CAAC,SAAS,aAAa,GACvB,MAAM,EAAE,GACR,CAAC,SAAS,OAAO,GACjB,MAAM,GACN,CAAC,SAAS,UAAU,GACpB,OAAO,GACP,CAAC,SAAS,MAAM,GAChB,IAAI,GACJ,CAAC,SAAS,OAAO,GACjB,MAAM,GACN,CAAC,SAAS,OAAO,GACjB,MAAM,GACN,CAAC,SAAS,UAAU,GACpB,MAAM,GACN,CAAC,SAAS,OAAO,GACjB,MAAM,GACN,CAAC,SAAS,OAAO,GACjB,MAAM,GACN,CAAC,SAAS,KAAK,GACf,MAAM,GACN,CAAC,SAAS,UAAU,GACpB,MAAM,GACN,GAAG,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.js","sourceRoot":"","sources":["../../src/types/Form.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qoretechnologies/reqraft",
3
- "version": "0.0.1",
3
+ "version": "0.1.0",
4
4
  "description": "ReQraft is a collection of React components and hooks that are used across Qore Technologies' products made using the ReQore component library from Qore.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -0,0 +1,37 @@
1
+ import { TFormFieldType, TFormFieldValueType } from '../../../types/Form';
2
+ import { FormStringField } from './string/String';
3
+
4
+ export interface IFormFieldProps<T extends TFormFieldType = TFormFieldType> {
5
+ type?: T;
6
+ value: TFormFieldValueType<T>;
7
+ onChange: (value: TFormFieldValueType<T>, event?: unknown) => void;
8
+
9
+ validateSelf?: boolean;
10
+ onValidateChange?: (isValid: boolean) => void;
11
+ }
12
+
13
+ export const FormField = <T extends TFormFieldType>({
14
+ type,
15
+ onChange,
16
+ ...rest
17
+ }: IFormFieldProps<T>) => {
18
+ const handleChange = (value: TFormFieldValueType<T>, event?: unknown) => {
19
+ onChange(value, event);
20
+ };
21
+
22
+ const renderField = (type: T) => {
23
+ switch (type) {
24
+ case 'string':
25
+ return (
26
+ <FormStringField
27
+ {...rest}
28
+ onChange={(value: string) => handleChange(value as TFormFieldValueType<T>)}
29
+ />
30
+ );
31
+ default:
32
+ return null;
33
+ }
34
+ };
35
+
36
+ return renderField(type);
37
+ };
@@ -1,5 +1,5 @@
1
1
  import { StoryObj } from '@storybook/react';
2
- import { StoryMeta } from '../../../types';
2
+ import { StoryMeta } from '../../../../types';
3
3
  import { FormStringField } from './String';
4
4
 
5
5
  const meta = {
@@ -3,15 +3,16 @@ import { IReqoreControlGroupProps } from '@qoretechnologies/reqore/dist/componen
3
3
  import { IReqoreInputProps } from '@qoretechnologies/reqore/dist/components/Input';
4
4
  import { IReqoreTagProps } from '@qoretechnologies/reqore/dist/components/Tag';
5
5
  import { ChangeEvent, useCallback } from 'react';
6
+ import { TFormFieldValueType } from '../../../../types/Form';
6
7
 
7
8
  export interface IStringFormFieldProps extends Omit<IReqoreInputProps, 'onChange' | 'value'> {
8
9
  sensitive?: boolean;
9
- value?: string;
10
+ value?: TFormFieldValueType<'string'>;
10
11
  label?: IReqoreTagProps['label'];
11
12
  labelPosition?: 'top' | 'left' | 'right' | 'bottom';
12
13
  labelProps?: IReqoreTagProps;
13
14
  wrapperProps?: IReqoreControlGroupProps;
14
- onChange?: (value?: string, event?: ChangeEvent<HTMLInputElement>) => void;
15
+ onChange?: (value?: TFormFieldValueType<'string'>, event?: ChangeEvent<HTMLInputElement>) => void;
15
16
  }
16
17
 
17
18
  export const FormStringField = ({
@@ -0,0 +1,9 @@
1
+ import { TFormFieldType } from '../types/Form';
2
+
3
+ // @ts-expect-error "need to implement this"
4
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
+ export const useValidation = (value: any, type?: TFormFieldType) => {
6
+ // Build validation...
7
+
8
+ return true;
9
+ };
package/src/index.tsx CHANGED
@@ -1 +1 @@
1
- export { FormStringField, IStringFormFieldProps } from './components/form/string/String';
1
+ export { FormStringField, IStringFormFieldProps } from './components/form/fields/string/String';
@@ -0,0 +1,57 @@
1
+ export type TFormFieldType =
2
+ | 'string'
3
+ | 'number'
4
+ | 'boolean'
5
+ | 'date'
6
+ | 'time'
7
+ | 'datetime'
8
+ | 'select'
9
+ | 'multiSelect'
10
+ | 'radio'
11
+ | 'checkbox'
12
+ | 'file'
13
+ | 'image'
14
+ | 'color'
15
+ | 'password'
16
+ | 'email'
17
+ | 'phone'
18
+ | 'url'
19
+ | 'markdown';
20
+
21
+ export type TFormFieldValueType<T> = T extends 'string'
22
+ ? string
23
+ : T extends 'number'
24
+ ? number
25
+ : T extends 'boolean'
26
+ ? boolean
27
+ : T extends 'date'
28
+ ? Date | string
29
+ : T extends 'time'
30
+ ? Date | string
31
+ : T extends 'datetime'
32
+ ? Date | string
33
+ : T extends 'select'
34
+ ? string
35
+ : T extends 'multiSelect'
36
+ ? string[]
37
+ : T extends 'radio'
38
+ ? string
39
+ : T extends 'checkbox'
40
+ ? boolean
41
+ : T extends 'file'
42
+ ? File
43
+ : T extends 'image'
44
+ ? string
45
+ : T extends 'color'
46
+ ? string
47
+ : T extends 'password'
48
+ ? string
49
+ : T extends 'email'
50
+ ? string
51
+ : T extends 'phone'
52
+ ? string
53
+ : T extends 'url'
54
+ ? string
55
+ : T extends 'markdown'
56
+ ? string
57
+ : any;
package/tests.json CHANGED
@@ -1 +1 @@
1
- {"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":0,"numPassedTests":0,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":0,"numTotalTests":0,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1714466978525,"success":true,"testResults":[],"wasInterrupted":false}
1
+ {"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":0,"numPassedTests":0,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":0,"numTotalTests":0,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1715150843374,"success":true,"testResults":[],"wasInterrupted":false}
@@ -1 +0,0 @@
1
- {"version":3,"file":"String.d.ts","sourceRoot":"","sources":["../../../../src/components/form/string/String.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAe,MAAM,OAAO,CAAC;AAEjD,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC;IAC1F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAC5E;AAED,eAAO,MAAM,eAAe,qFAQzB,qBAAqB,4CA0CvB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"String.js","sourceRoot":"","sources":["../../../../src/components/form/string/String.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAsF;AAItF,+BAAiD;AAY1C,IAAM,eAAe,GAAG,UAAC,EAQR;IAPtB,IAAA,QAAQ,cAAA,EACR,YAAY,kBAAA,EACZ,UAAU,gBAAA,EACV,KAAK,WAAA,EACL,qBAAqB,EAArB,aAAa,mBAAG,KAAK,KAAA,EACrB,SAAS,eAAA,EACN,IAAI,cAPuB,iFAQ/B,CADQ;IAEP,2BAA2B;IAC3B,IAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,UAAC,KAAoC;;QACpE,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhB,QAAQ,CAAC,MAAA,KAAK,CAAC,MAAM,CAAC,KAAK,0CAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,iCAAiC;IACjC,IAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC;QACnC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,wBAAC,2BAAkB,aACjB,KAAK,UACD,YAAY,IAChB,QAAQ,EAAE,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,KAAK,aAE9D,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,KAAK,IAAI,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CACjF,uBAAC,kBAAS,aAAC,KAAK,EAAE,KAAK,EAAE,KAAK,UAAK,UAAU,EAAI,CAClD,CAAC,CAAC,CAAC,IAAI,EACR,uBAAC,oBAAW,aACV,KAAK,QACL,OAAO,EAAE,UAAC,KAAK;;oBACb,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,qDAAG,KAAK,CAAC,CAAC;gBACzB,CAAC,EACD,OAAO,EAAE,UAAC,KAAK;;oBACb,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,qDAAG,KAAK,CAAC,CAAC;gBACzB,CAAC,EACD,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EACrC,YAAY,EAAE,gBAAgB,IAC1B,IAAI,EACR,EACD,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CACrF,uBAAC,kBAAS,aAAC,KAAK,EAAE,KAAK,EAAE,KAAK,UAAK,UAAU,EAAI,CAClD,CAAC,CAAC,CAAC,IAAI,KACW,CACtB,CAAC;AACJ,CAAC,CAAC;AAlDW,QAAA,eAAe,mBAkD1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"String.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/form/string/String.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,QAAA,MAAM,IAAI;;EAG4B,CAAC;AAEvC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AACjC,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC;AACF,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"String.stories.js","sourceRoot":"","sources":["../../../../src/components/form/string/String.stories.tsx"],"names":[],"mappings":";;;AAEA,mCAA2C;AAE3C,IAAM,IAAI,GAAG;IACX,SAAS,EAAE,wBAAe;IAC1B,KAAK,EAAE,wBAAwB;CACK,CAAC;AAEvC,kBAAe,IAAI,CAAC;AAGP,QAAA,OAAO,GAAU,EAAE,CAAC;AACpB,QAAA,KAAK,GAAU;IAC1B,IAAI,EAAE;QACJ,KAAK,EAAE,eAAe;KACvB;CACF,CAAC;AACW,QAAA,SAAS,GAAU;IAC9B,IAAI,EAAE;QACJ,KAAK,EAAE,OAAO;KACf;CACF,CAAC"}