@redneckz/wildless-cms-uni-blocks 0.14.589 → 0.14.591

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 (77) hide show
  1. package/bundle/bundle.umd.js +84 -62
  2. package/bundle/bundle.umd.min.js +1 -1
  3. package/bundle/hooks/useElementSpace.d.ts +2 -0
  4. package/bundle/ui-kit/FormField/validators.d.ts +9 -9
  5. package/dist/hooks/useElementSpace.d.ts +2 -0
  6. package/dist/hooks/useElementSpace.js +21 -0
  7. package/dist/hooks/useElementSpace.js.map +1 -0
  8. package/dist/ui-kit/DatePicker/DatePicker.js +5 -1
  9. package/dist/ui-kit/DatePicker/DatePicker.js.map +1 -1
  10. package/dist/ui-kit/FormField/Fields/MiddleNameField.js +3 -1
  11. package/dist/ui-kit/FormField/Fields/MiddleNameField.js.map +1 -1
  12. package/dist/ui-kit/FormField/getObjectValidator.js +46 -45
  13. package/dist/ui-kit/FormField/getObjectValidator.js.map +1 -1
  14. package/dist/ui-kit/FormField/validators.d.ts +9 -9
  15. package/dist/ui-kit/FormField/validators.js +17 -9
  16. package/dist/ui-kit/FormField/validators.js.map +1 -1
  17. package/dist/ui-kit/Input/Input.js +3 -2
  18. package/dist/ui-kit/Input/Input.js.map +1 -1
  19. package/lib/hooks/useElementSpace.d.ts +2 -0
  20. package/lib/hooks/useElementSpace.js +18 -0
  21. package/lib/hooks/useElementSpace.js.map +1 -0
  22. package/lib/ui-kit/DatePicker/DatePicker.js +5 -1
  23. package/lib/ui-kit/DatePicker/DatePicker.js.map +1 -1
  24. package/lib/ui-kit/FormField/Fields/MiddleNameField.js +3 -1
  25. package/lib/ui-kit/FormField/Fields/MiddleNameField.js.map +1 -1
  26. package/lib/ui-kit/FormField/getObjectValidator.js +46 -45
  27. package/lib/ui-kit/FormField/getObjectValidator.js.map +1 -1
  28. package/lib/ui-kit/FormField/validators.d.ts +9 -9
  29. package/lib/ui-kit/FormField/validators.js +9 -9
  30. package/lib/ui-kit/FormField/validators.js.map +1 -1
  31. package/lib/ui-kit/Input/Input.js +3 -2
  32. package/lib/ui-kit/Input/Input.js.map +1 -1
  33. package/mobile/bundle/bundle.umd.js +84 -62
  34. package/mobile/bundle/bundle.umd.min.js +1 -1
  35. package/mobile/bundle/hooks/useElementSpace.d.ts +2 -0
  36. package/mobile/bundle/ui-kit/FormField/validators.d.ts +9 -9
  37. package/mobile/dist/hooks/useElementSpace.d.ts +2 -0
  38. package/mobile/dist/hooks/useElementSpace.js +21 -0
  39. package/mobile/dist/hooks/useElementSpace.js.map +1 -0
  40. package/mobile/dist/ui-kit/DatePicker/DatePicker.js +5 -1
  41. package/mobile/dist/ui-kit/DatePicker/DatePicker.js.map +1 -1
  42. package/mobile/dist/ui-kit/FormField/Fields/MiddleNameField.js +3 -1
  43. package/mobile/dist/ui-kit/FormField/Fields/MiddleNameField.js.map +1 -1
  44. package/mobile/dist/ui-kit/FormField/getObjectValidator.js +46 -45
  45. package/mobile/dist/ui-kit/FormField/getObjectValidator.js.map +1 -1
  46. package/mobile/dist/ui-kit/FormField/validators.d.ts +9 -9
  47. package/mobile/dist/ui-kit/FormField/validators.js +17 -9
  48. package/mobile/dist/ui-kit/FormField/validators.js.map +1 -1
  49. package/mobile/dist/ui-kit/Input/Input.js +3 -2
  50. package/mobile/dist/ui-kit/Input/Input.js.map +1 -1
  51. package/mobile/lib/hooks/useElementSpace.d.ts +2 -0
  52. package/mobile/lib/hooks/useElementSpace.js +18 -0
  53. package/mobile/lib/hooks/useElementSpace.js.map +1 -0
  54. package/mobile/lib/ui-kit/DatePicker/DatePicker.js +5 -1
  55. package/mobile/lib/ui-kit/DatePicker/DatePicker.js.map +1 -1
  56. package/mobile/lib/ui-kit/FormField/Fields/MiddleNameField.js +3 -1
  57. package/mobile/lib/ui-kit/FormField/Fields/MiddleNameField.js.map +1 -1
  58. package/mobile/lib/ui-kit/FormField/getObjectValidator.js +46 -45
  59. package/mobile/lib/ui-kit/FormField/getObjectValidator.js.map +1 -1
  60. package/mobile/lib/ui-kit/FormField/validators.d.ts +9 -9
  61. package/mobile/lib/ui-kit/FormField/validators.js +9 -9
  62. package/mobile/lib/ui-kit/FormField/validators.js.map +1 -1
  63. package/mobile/lib/ui-kit/Input/Input.js +3 -2
  64. package/mobile/lib/ui-kit/Input/Input.js.map +1 -1
  65. package/mobile/src/hooks/useElementSpace.ts +25 -0
  66. package/mobile/src/ui-kit/DatePicker/DatePicker.tsx +9 -1
  67. package/mobile/src/ui-kit/FormField/Fields/MiddleNameField.tsx +7 -1
  68. package/mobile/src/ui-kit/FormField/getObjectValidator.tsx +46 -45
  69. package/mobile/src/ui-kit/FormField/validators.ts +19 -18
  70. package/mobile/src/ui-kit/Input/Input.tsx +6 -2
  71. package/package.json +1 -1
  72. package/src/hooks/useElementSpace.ts +25 -0
  73. package/src/ui-kit/DatePicker/DatePicker.tsx +9 -1
  74. package/src/ui-kit/FormField/Fields/MiddleNameField.tsx +7 -1
  75. package/src/ui-kit/FormField/getObjectValidator.tsx +46 -45
  76. package/src/ui-kit/FormField/validators.ts +19 -18
  77. package/src/ui-kit/Input/Input.tsx +6 -2
@@ -1,11 +1,11 @@
1
- export declare const defaultValidator: import("../../validation/validator").Validator<any>;
1
+ export declare const defaultValidator: (errorMsg?: string) => import("../../validation/validator").Validator<any>;
2
2
  export declare const defaultSelectValidator: import("../../validation/validator").Validator<any>;
3
- export declare const nameValidator: import("../../validation/validator").Validator<any>;
4
- export declare const lengthStringValidator: (maxLength: number) => import("../../validation/validator").Validator<any>;
5
- export declare const serieValidator: import("../../validation/validator").Validator<any>;
6
- export declare const numberValidator: import("../../validation/validator").Validator<any>;
7
- export declare const innValidator: import("../../validation/validator").Validator<any>;
8
- export declare const phoneValidator: import("../../validation/validator").Validator<any>;
3
+ export declare const nameValidator: (errorMsg?: string) => import("../../validation/validator").Validator<any>;
4
+ export declare const lengthStringValidator: (maxLength: number, errorMsg?: string) => import("../../validation/validator").Validator<any>;
5
+ export declare const serieValidator: (errorMsg: string) => import("../../validation/validator").Validator<any>;
6
+ export declare const numberValidator: (errorMsg: string) => import("../../validation/validator").Validator<any>;
7
+ export declare const innValidator: (errorMsg: string) => import("../../validation/validator").Validator<any>;
8
+ export declare const phoneValidator: (errorMsg: string) => import("../../validation/validator").Validator<any>;
9
9
  export declare const agreementValidator: import("../../validation/validator").Validator<any>;
10
- export declare const snilsValidator: import("../../validation/validator").Validator<string>;
11
- export declare const emailValidator: import("../../validation/validator").Validator<string>;
10
+ export declare const snilsValidator: (errorMsg: string) => import("../../validation/validator").Validator<string>;
11
+ export declare const emailValidator: (errorMsg: string) => import("../../validation/validator").Validator<string>;
@@ -2,14 +2,14 @@ import { pattern } from '../../validation/pattern.js';
2
2
  import { required } from '../../validation/required.js';
3
3
  import { validator } from '../../validation/validator.js';
4
4
  const ERROR_MESSAGE = 'Некорректно заполненное поле';
5
- export const defaultValidator = required(ERROR_MESSAGE);
5
+ export const defaultValidator = (errorMsg) => required(errorMsg ? errorMsg : ERROR_MESSAGE);
6
6
  export const defaultSelectValidator = validator((_) => _?.key && _?.key !== '')(ERROR_MESSAGE);
7
- export const nameValidator = validator((_) => typeof _ === 'string' && _.length > 1)(ERROR_MESSAGE);
8
- export const lengthStringValidator = (maxLength) => validator((_) => typeof _ === 'string' && _.length >= 1 && _.length <= maxLength)(ERROR_MESSAGE);
9
- export const serieValidator = validator((_) => typeof _ === 'string' && _.length === 4)(ERROR_MESSAGE);
10
- export const numberValidator = validator((_) => typeof _ === 'string' && _.length === 6)(ERROR_MESSAGE);
11
- export const innValidator = validator((_) => typeof _ === 'string' && (_.length === 10 || _.length === 12))(ERROR_MESSAGE);
12
- export const phoneValidator = pattern(/^(\+7)?[\s-]?\(?[0-9]{3}\)?[\s-]?[0-9]{3}[\s-]?[0-9]{2}[\s-]?[0-9]{2}$/)(ERROR_MESSAGE);
7
+ export const nameValidator = (errorMsg) => validator((_) => typeof _ === 'string' && _.length > 1)(errorMsg ? errorMsg : ERROR_MESSAGE);
8
+ export const lengthStringValidator = (maxLength, errorMsg) => validator((_) => typeof _ === 'string' && _.length >= 1 && _.length <= maxLength)(errorMsg ? errorMsg : ERROR_MESSAGE);
9
+ export const serieValidator = (errorMsg) => validator((_) => typeof _ === 'string' && _.length === 4)(errorMsg);
10
+ export const numberValidator = (errorMsg) => validator((_) => typeof _ === 'string' && _.length === 6)(errorMsg);
11
+ export const innValidator = (errorMsg) => validator((_) => typeof _ === 'string' && (_.length === 10 || _.length === 12))(errorMsg);
12
+ export const phoneValidator = (errorMsg) => pattern(/^(\+7)?[\s-]?\(?[0-9]{3}\)?[\s-]?[0-9]{3}[\s-]?[0-9]{2}[\s-]?[0-9]{2}$/)(errorMsg);
13
13
  export const agreementValidator = validator((_) => typeof _ === 'boolean' && _)('Согласие обязательно');
14
14
  const snilsValidate = (snils) => {
15
15
  const snl = String(snils).replace(/[^0-9]+/g, '');
@@ -28,7 +28,7 @@ const snilsValidate = (snils) => {
28
28
  }
29
29
  return false;
30
30
  };
31
- export const snilsValidator = validator(snilsValidate)(ERROR_MESSAGE);
31
+ export const snilsValidator = (errorMsg) => validator(snilsValidate)(errorMsg);
32
32
  const emailValidate = (email) => /^[^\s@]+@[^\s@]+\.[a-zA-Z]{2}$/.test(email);
33
- export const emailValidator = validator((_) => emailValidate(_))(ERROR_MESSAGE);
33
+ export const emailValidator = (errorMsg) => validator((_) => emailValidate(_))(errorMsg);
34
34
  //# sourceMappingURL=validators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/ui-kit/FormField/validators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/ui-kit/FormField/validators.ts"],"names":[],"mappings":"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"}
@@ -7,17 +7,18 @@ import { renderLabel } from './renderLabel.js';
7
7
  export const Input = JSX(({ key, className = '', id, name, type = 'text', label, placeholder, value = '', valid = true, children, onChange, onFocus, onBlur, pattern, autoFocus = false, isTextarea = false, }) => {
8
8
  const inputRef = useRef(null);
9
9
  const handleChange = useCallback((e) => {
10
- onChange && onChange(e.target?.value || '');
10
+ const valueWithoutSpace = (e.target?.value || '').trimStart();
11
+ onChange && onChange(valueWithoutSpace);
11
12
  }, [onChange]);
12
13
  useEffect(() => {
13
14
  if (autoFocus) {
14
15
  inputRef.current?.focus();
15
16
  }
16
17
  }, [autoFocus, inputRef]);
17
- const defaultStyle = 'w-full border rounded-md text-primary-text outline-none p-m';
18
18
  const paddingStyle = children ? 'pr-3xl' : '';
19
19
  const validStyle = getValidStyle(valid);
20
20
  return (_jsxs("div", { className: style('relative', className), children: [_jsxs("label", { className: "space-y-xs", children: [renderLabel(label), isTextarea ? (_jsx("textarea", { className: style('block resize-y min-h-24', defaultStyle, validStyle), id: style('textarea', id), name: name || id, placeholder: placeholder, value: value, onChange: handleChange, onFocus: onFocus, onBlur: onBlur }, key)) : (_jsx("input", { type: type, className: style('h-14', defaultStyle, paddingStyle, validStyle), ref: inputRef, id: id, name: name || id, placeholder: placeholder, value: value, onChange: handleChange, onFocus: onFocus, onBlur: onBlur, pattern: pattern }, key))] }), children] }));
21
21
  });
22
22
  const getValidStyle = (valid) => (valid ? inputValidStyle : 'border-error');
23
+ const defaultStyle = 'w-full border rounded-md text-primary-text outline-none p-m';
23
24
  //# sourceMappingURL=Input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../src/ui-kit/Input/Input.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CACtB,CAAC,EACC,GAAG,EACH,SAAS,GAAG,EAAE,EACd,EAAE,EACF,IAAI,EACJ,IAAI,GAAG,MAAM,EACb,KAAK,EACL,WAAW,EACX,KAAK,GAAG,EAAE,EACV,KAAK,GAAG,IAAI,EACZ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,MAAM,EACN,OAAO,EACP,SAAS,GAAG,KAAK,EACjB,UAAU,GAAG,KAAK,GACnB,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,CAAkC,EAAE,EAAE;QACrC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE;YACb,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;SAC3B;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1B,MAAM,YAAY,GAAG,6DAA6D,CAAC;IACnF,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAExC,OAAO,CACL,eAAK,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,aAC1C,iBAAO,SAAS,EAAC,YAAY,aAC1B,WAAW,CAAC,KAAK,CAAC,EAClB,UAAU,CAAC,CAAC,CAAC,CACZ,mBACE,SAAS,EAAE,KAAK,CAAC,yBAAyB,EAAE,YAAY,EAAE,UAAU,CAAC,EAErE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,EACzB,IAAI,EAAE,IAAI,IAAI,EAAE,EAChB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,IAPT,GAAG,CAQR,CACH,CAAC,CAAC,CAAC,CACF,gBACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,EAChE,GAAG,EAAE,QAAQ,EAEb,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,IAAI,EAAE,EAChB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,IARX,GAAG,CASR,CACH,IACK,EACP,QAAQ,IACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../src/ui-kit/Input/Input.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CACtB,CAAC,EACC,GAAG,EACH,SAAS,GAAG,EAAE,EACd,EAAE,EACF,IAAI,EACJ,IAAI,GAAG,MAAM,EACb,KAAK,EACL,WAAW,EACX,KAAK,GAAG,EAAE,EACV,KAAK,GAAG,IAAI,EACZ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,MAAM,EACN,OAAO,EACP,SAAS,GAAG,KAAK,EACjB,UAAU,GAAG,KAAK,GACnB,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAEvD,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,CAAkC,EAAE,EAAE;QACrC,MAAM,iBAAiB,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QAC9D,QAAQ,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC1C,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE;YACb,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;SAC3B;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE1B,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAExC,OAAO,CACL,eAAK,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,aAC1C,iBAAO,SAAS,EAAC,YAAY,aAC1B,WAAW,CAAC,KAAK,CAAC,EAClB,UAAU,CAAC,CAAC,CAAC,CACZ,mBACE,SAAS,EAAE,KAAK,CAAC,yBAAyB,EAAE,YAAY,EAAE,UAAU,CAAC,EAErE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,EACzB,IAAI,EAAE,IAAI,IAAI,EAAE,EAChB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,IAPT,GAAG,CAQR,CACH,CAAC,CAAC,CAAC,CACF,gBACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,EAChE,GAAG,EAAE,QAAQ,EAEb,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,IAAI,EAAE,EAChB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,IARX,GAAG,CASR,CACH,IACK,EACP,QAAQ,IACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;AAErF,MAAM,YAAY,GAAG,6DAA6D,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
2
+ import { type RefObject } from 'react';
3
+
4
+ export const useElementSpace = (ref: RefObject<HTMLElement>, heightEl: number) => {
5
+ const [spaceAbove, setSpaceAbove] = useState(false);
6
+
7
+ useEffect(() => {
8
+ const handleResize = () => {
9
+ if (ref?.current) {
10
+ const { top } = ref.current.getBoundingClientRect();
11
+
12
+ const hasSpaceAbove = top > heightEl;
13
+
14
+ setSpaceAbove(hasSpaceAbove);
15
+ }
16
+ };
17
+
18
+ handleResize();
19
+ window.addEventListener('resize', handleResize);
20
+
21
+ return () => window.removeEventListener('resize', handleResize);
22
+ }, [ref]);
23
+
24
+ return spaceAbove;
25
+ };
@@ -1,6 +1,7 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import { useState } from '@redneckz/uni-jsx/lib/hooks';
3
3
  import { useBool } from '@redneckz/uni-jsx/lib/hooks/useBool';
4
+ import { useElementSpace } from '../../hooks/useElementSpace';
4
5
  import { type LabelProps } from '../../model/HeadlineType';
5
6
  import { type IconVersion } from '../../model/IconVersion';
6
7
  import { formatDate } from '../../utils/formatDate';
@@ -65,13 +66,19 @@ export const DatePicker = JSX<DatePickerProps>(
65
66
  showCalendar,
66
67
  });
67
68
 
69
+ const spaceAbove = useElementSpace(ref, 370);
70
+
68
71
  return (
69
72
  <div className={style('space-y-xs', className)} ref={ref}>
70
73
  {renderLabel(label)}
71
74
  <div className="relative">
72
75
  {renderDatePickerForm(handleChangeVisibleCalendar, value, valid)}
73
76
  {showCalendar ? (
74
- <div className="absolute bg-white z-20 select-none bottom-full">
77
+ <div
78
+ className={style('absolute bg-white z-20 select-none', {
79
+ 'bottom-full': spaceAbove,
80
+ })}
81
+ >
75
82
  <div className="flex gap-s">
76
83
  <div className="my-auto" onClick={handlePrevMonth}>
77
84
  <Icon {...ICON_PROPS} className="-rotate-90 cursor-pointer" />
@@ -99,6 +106,7 @@ export const DatePicker = JSX<DatePickerProps>(
99
106
  onDateSelect={onChange}
100
107
  min={minDate}
101
108
  max={maxDate}
109
+ setValue={setValue}
102
110
  />
103
111
  </div>
104
112
  ) : null}
@@ -1,7 +1,13 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import { InputControl } from '../../Input/InputControl';
3
3
  import { type CustomFieldProps } from '../CustomFieldProps';
4
+ import { validatorObj } from '../getObjectValidator';
5
+ import { getValidation } from '../getValidation';
4
6
 
5
7
  export const MiddleNameField = JSX<CustomFieldProps>(({ field, input }) => (
6
- <InputControl label="Отчество (Обязательно, при наличии)" {...field('middleName')} {...input} />
8
+ <InputControl
9
+ label="Отчество (Обязательно, при наличии)"
10
+ {...getValidation(field('middleName'), validatorObj.middleName)}
11
+ {...input}
12
+ />
7
13
  ));
@@ -16,50 +16,51 @@ import {
16
16
  } from './validators';
17
17
 
18
18
  export const validatorObj: Record<string, Validator> = {
19
- typeForm: defaultValidator,
20
- surname: nameValidator,
21
- name: nameValidator,
19
+ typeForm: defaultValidator(),
20
+ surname: nameValidator('Укажите свою фамилию'),
21
+ name: nameValidator('Укажите своё имя'),
22
+ middleName: nameValidator('Укажите своё отчество'),
22
23
  region: defaultSelectValidator,
23
24
  addressBranch: defaultSelectValidator,
24
- phone: phoneValidator,
25
- secondaryPhone: phoneValidator,
26
- birthday: defaultValidator,
27
- education: defaultValidator,
28
- housing: defaultValidator,
29
- employment: defaultValidator,
30
- organization: defaultValidator,
31
- amountWorkers: defaultValidator,
32
- employerActivities: defaultValidator,
33
- employerOrganization: defaultValidator,
34
- positionOrganization: defaultValidator,
35
- email: emailValidator,
36
- dulSerie: serieValidator,
37
- dulNumber: numberValidator,
38
- dulIssueDateField: defaultValidator,
39
- dulSubdivisionCode: numberValidator,
40
- dulIssuedBy: defaultValidator,
41
- fullName: nameValidator,
42
- inn: innValidator,
43
- legalForm: defaultValidator,
44
- organizationName: defaultValidator,
45
- generalSeniority: defaultValidator,
46
- lastJobExperience: defaultValidator,
47
- experience5Years: defaultValidator,
48
- jobsNumber: defaultValidator,
49
- beginDate: defaultValidator,
50
- fullAddress: defaultValidator,
51
- partnerComments: defaultValidator,
52
- collectionCount: defaultValidator,
53
- comment: defaultValidator,
25
+ phone: phoneValidator('Укажите номер телефона'),
26
+ secondaryPhone: phoneValidator('Укажите номер телефона'),
27
+ birthday: defaultValidator('Укажите дату рождения'),
28
+ education: defaultValidator('Выберите ваше образование'),
29
+ housing: defaultValidator('Выберите тип жилья'),
30
+ employment: defaultValidator('Выберите информацию о трудоустройстве'),
31
+ organization: defaultValidator('Выберите тип организации'),
32
+ amountWorkers: defaultValidator('Выберите информацию о количестве сотрудников'),
33
+ employerActivities: defaultValidator('Выберите вид деятельности организации'),
34
+ employerOrganization: defaultValidator('Выберите вид организации'),
35
+ positionOrganization: defaultValidator('Выберите вашу должность'),
36
+ dulSerie: serieValidator('Укажите серию паспорта'),
37
+ dulNumber: numberValidator('Укажите номер паспорта'),
38
+ dulIssueDateField: defaultValidator('Укажите дату выдачи паспорта'),
39
+ dulSubdivisionCode: numberValidator('Укажите код подразделения'),
40
+ dulIssuedBy: defaultValidator('Укажите организацию, выдавшую паспорт'),
41
+ email: emailValidator('Укажите электронную почту'),
42
+ fullName: nameValidator(),
43
+ inn: innValidator('Укажите ИНН'),
44
+ legalForm: defaultValidator('Укажите ОПФ'),
45
+ organizationName: defaultValidator('Укажите наименование организации'),
46
+ generalSeniority: defaultValidator(),
47
+ lastJobExperience: defaultValidator('Укажите стаж на последнем месте работы'),
48
+ experience5Years: defaultValidator('Укажите общий стаж за последние 5 лет'),
49
+ jobsNumber: defaultValidator('Укажите количество лет стажа'),
50
+ beginDate: defaultValidator('Укажите дату заключения трудового договора'),
51
+ fullAddress: defaultValidator(),
52
+ partnerComments: defaultValidator(),
53
+ collectionCount: defaultValidator(),
54
+ comment: defaultValidator(),
54
55
  acquiringType: defaultSelectValidator,
55
56
  feedbackMethod: defaultSelectValidator,
56
57
  serviceType: defaultSelectValidator,
57
58
  serviceDirection: defaultSelectValidator,
58
- meetingDay: defaultValidator,
59
- product: defaultValidator,
60
- localities: defaultValidator,
59
+ meetingDay: defaultValidator(),
60
+ product: defaultValidator(),
61
+ localities: defaultValidator(),
61
62
  consentDataProcessing: agreementValidator,
62
- annualRevenue: defaultValidator,
63
+ annualRevenue: defaultValidator(),
63
64
  consentToReceiveMaterials: agreementValidator,
64
65
  processPersonalDataLeadFlg: agreementValidator,
65
66
  consentProviderFlg: agreementValidator,
@@ -68,14 +69,14 @@ export const validatorObj: Record<string, Validator> = {
68
69
  consentAssignmentClaimsFlg: agreementValidator,
69
70
  consentCollectionFlg: agreementValidator,
70
71
  consentInformFlg: agreementValidator,
71
- familyStatus: defaultValidator,
72
- children: lengthStringValidator(2),
73
- familyMembers: lengthStringValidator(2),
74
- dependents: lengthStringValidator(2),
75
- totalIncome: lengthStringValidator(19),
76
- expenses: lengthStringValidator(10),
77
- snils: snilsValidator,
78
- conscription: defaultValidator,
72
+ familyStatus: defaultValidator('Выберите семейное положение'),
73
+ children: lengthStringValidator(2, 'Укажите количество детей'),
74
+ familyMembers: lengthStringValidator(2, 'Укажите количество членов семьи'),
75
+ dependents: lengthStringValidator(2, 'Укажите количество иждивенцев'),
76
+ totalIncome: lengthStringValidator(19, 'Укажите среднемесячный доход от основной зарплаты'),
77
+ expenses: lengthStringValidator(10, 'Укажите сумму обязательных выплат'),
78
+ snils: snilsValidator('Некорректный номер СНИЛС'),
79
+ conscription: defaultValidator(),
79
80
  armyIdFlg: agreementValidator,
80
81
  };
81
82
 
@@ -4,30 +4,30 @@ import { validator } from '../../validation/validator';
4
4
 
5
5
  const ERROR_MESSAGE = 'Некорректно заполненное поле';
6
6
 
7
- export const defaultValidator = required(ERROR_MESSAGE);
7
+ export const defaultValidator = (errorMsg?: string) =>
8
+ required(errorMsg ? errorMsg : ERROR_MESSAGE);
8
9
 
9
10
  export const defaultSelectValidator = validator((_) => _?.key && _?.key !== '')(ERROR_MESSAGE);
10
11
 
11
- export const nameValidator = validator((_) => typeof _ === 'string' && _.length > 1)(ERROR_MESSAGE);
12
+ export const nameValidator = (errorMsg?: string) =>
13
+ validator((_) => typeof _ === 'string' && _.length > 1)(errorMsg ? errorMsg : ERROR_MESSAGE);
12
14
 
13
- export const lengthStringValidator = (maxLength: number) =>
14
- validator((_) => typeof _ === 'string' && _.length >= 1 && _.length <= maxLength)(ERROR_MESSAGE);
15
+ export const lengthStringValidator = (maxLength: number, errorMsg?: string) =>
16
+ validator((_) => typeof _ === 'string' && _.length >= 1 && _.length <= maxLength)(
17
+ errorMsg ? errorMsg : ERROR_MESSAGE,
18
+ );
15
19
 
16
- export const serieValidator = validator((_) => typeof _ === 'string' && _.length === 4)(
17
- ERROR_MESSAGE,
18
- );
20
+ export const serieValidator = (errorMsg: string) =>
21
+ validator((_) => typeof _ === 'string' && _.length === 4)(errorMsg);
19
22
 
20
- export const numberValidator = validator((_) => typeof _ === 'string' && _.length === 6)(
21
- ERROR_MESSAGE,
22
- );
23
+ export const numberValidator = (errorMsg: string) =>
24
+ validator((_) => typeof _ === 'string' && _.length === 6)(errorMsg);
23
25
 
24
- export const innValidator = validator(
25
- (_) => typeof _ === 'string' && (_.length === 10 || _.length === 12),
26
- )(ERROR_MESSAGE);
26
+ export const innValidator = (errorMsg: string) =>
27
+ validator((_) => typeof _ === 'string' && (_.length === 10 || _.length === 12))(errorMsg);
27
28
 
28
- export const phoneValidator = pattern(
29
- /^(\+7)?[\s-]?\(?[0-9]{3}\)?[\s-]?[0-9]{3}[\s-]?[0-9]{2}[\s-]?[0-9]{2}$/,
30
- )(ERROR_MESSAGE);
29
+ export const phoneValidator = (errorMsg: string) =>
30
+ pattern(/^(\+7)?[\s-]?\(?[0-9]{3}\)?[\s-]?[0-9]{3}[\s-]?[0-9]{2}[\s-]?[0-9]{2}$/)(errorMsg);
31
31
 
32
32
  export const agreementValidator = validator((_) => typeof _ === 'boolean' && _)(
33
33
  'Согласие обязательно',
@@ -53,8 +53,9 @@ const snilsValidate = (snils: string) => {
53
53
  return false;
54
54
  };
55
55
 
56
- export const snilsValidator = validator(snilsValidate)(ERROR_MESSAGE);
56
+ export const snilsValidator = (errorMsg: string) => validator(snilsValidate)(errorMsg);
57
57
 
58
58
  const emailValidate = (email: string) => /^[^\s@]+@[^\s@]+\.[a-zA-Z]{2}$/.test(email);
59
59
 
60
- export const emailValidator = validator((_: string) => emailValidate(_))(ERROR_MESSAGE);
60
+ export const emailValidator = (errorMsg: string) =>
61
+ validator((_: string) => emailValidate(_))(errorMsg);
@@ -25,9 +25,11 @@ export const Input = JSX<InputProps>(
25
25
  isTextarea = false,
26
26
  }) => {
27
27
  const inputRef = useRef<HTMLInputElement | null>(null);
28
+
28
29
  const handleChange = useCallback(
29
30
  (e: { target?: { value?: string } }) => {
30
- onChange && onChange(e.target?.value || '');
31
+ const valueWithoutSpace = (e.target?.value || '').trimStart();
32
+ onChange && onChange(valueWithoutSpace);
31
33
  },
32
34
  [onChange],
33
35
  );
@@ -37,7 +39,7 @@ export const Input = JSX<InputProps>(
37
39
  inputRef.current?.focus();
38
40
  }
39
41
  }, [autoFocus, inputRef]);
40
- const defaultStyle = 'w-full border rounded-md text-primary-text outline-none p-m';
42
+
41
43
  const paddingStyle = children ? 'pr-3xl' : '';
42
44
  const validStyle = getValidStyle(valid);
43
45
 
@@ -81,3 +83,5 @@ export const Input = JSX<InputProps>(
81
83
  );
82
84
 
83
85
  const getValidStyle = (valid: boolean) => (valid ? inputValidStyle : 'border-error');
86
+
87
+ const defaultStyle = 'w-full border rounded-md text-primary-text outline-none p-m';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redneckz/wildless-cms-uni-blocks",
3
- "version": "0.14.589",
3
+ "version": "0.14.591",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "ЦК",
@@ -0,0 +1,25 @@
1
+ import { useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
2
+ import { type RefObject } from 'react';
3
+
4
+ export const useElementSpace = (ref: RefObject<HTMLElement>, heightEl: number) => {
5
+ const [spaceAbove, setSpaceAbove] = useState(false);
6
+
7
+ useEffect(() => {
8
+ const handleResize = () => {
9
+ if (ref?.current) {
10
+ const { top } = ref.current.getBoundingClientRect();
11
+
12
+ const hasSpaceAbove = top > heightEl;
13
+
14
+ setSpaceAbove(hasSpaceAbove);
15
+ }
16
+ };
17
+
18
+ handleResize();
19
+ window.addEventListener('resize', handleResize);
20
+
21
+ return () => window.removeEventListener('resize', handleResize);
22
+ }, [ref]);
23
+
24
+ return spaceAbove;
25
+ };
@@ -1,6 +1,7 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import { useState } from '@redneckz/uni-jsx/lib/hooks';
3
3
  import { useBool } from '@redneckz/uni-jsx/lib/hooks/useBool';
4
+ import { useElementSpace } from '../../hooks/useElementSpace';
4
5
  import { type LabelProps } from '../../model/HeadlineType';
5
6
  import { type IconVersion } from '../../model/IconVersion';
6
7
  import { formatDate } from '../../utils/formatDate';
@@ -65,13 +66,19 @@ export const DatePicker = JSX<DatePickerProps>(
65
66
  showCalendar,
66
67
  });
67
68
 
69
+ const spaceAbove = useElementSpace(ref, 370);
70
+
68
71
  return (
69
72
  <div className={style('space-y-xs', className)} ref={ref}>
70
73
  {renderLabel(label)}
71
74
  <div className="relative">
72
75
  {renderDatePickerForm(handleChangeVisibleCalendar, value, valid)}
73
76
  {showCalendar ? (
74
- <div className="absolute bg-white z-20 select-none bottom-full">
77
+ <div
78
+ className={style('absolute bg-white z-20 select-none', {
79
+ 'bottom-full': spaceAbove,
80
+ })}
81
+ >
75
82
  <div className="flex gap-s">
76
83
  <div className="my-auto" onClick={handlePrevMonth}>
77
84
  <Icon {...ICON_PROPS} className="-rotate-90 cursor-pointer" />
@@ -99,6 +106,7 @@ export const DatePicker = JSX<DatePickerProps>(
99
106
  onDateSelect={onChange}
100
107
  min={minDate}
101
108
  max={maxDate}
109
+ setValue={setValue}
102
110
  />
103
111
  </div>
104
112
  ) : null}
@@ -1,7 +1,13 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import { InputControl } from '../../Input/InputControl';
3
3
  import { type CustomFieldProps } from '../CustomFieldProps';
4
+ import { validatorObj } from '../getObjectValidator';
5
+ import { getValidation } from '../getValidation';
4
6
 
5
7
  export const MiddleNameField = JSX<CustomFieldProps>(({ field, input }) => (
6
- <InputControl label="Отчество (Обязательно, при наличии)" {...field('middleName')} {...input} />
8
+ <InputControl
9
+ label="Отчество (Обязательно, при наличии)"
10
+ {...getValidation(field('middleName'), validatorObj.middleName)}
11
+ {...input}
12
+ />
7
13
  ));
@@ -16,50 +16,51 @@ import {
16
16
  } from './validators';
17
17
 
18
18
  export const validatorObj: Record<string, Validator> = {
19
- typeForm: defaultValidator,
20
- surname: nameValidator,
21
- name: nameValidator,
19
+ typeForm: defaultValidator(),
20
+ surname: nameValidator('Укажите свою фамилию'),
21
+ name: nameValidator('Укажите своё имя'),
22
+ middleName: nameValidator('Укажите своё отчество'),
22
23
  region: defaultSelectValidator,
23
24
  addressBranch: defaultSelectValidator,
24
- phone: phoneValidator,
25
- secondaryPhone: phoneValidator,
26
- birthday: defaultValidator,
27
- education: defaultValidator,
28
- housing: defaultValidator,
29
- employment: defaultValidator,
30
- organization: defaultValidator,
31
- amountWorkers: defaultValidator,
32
- employerActivities: defaultValidator,
33
- employerOrganization: defaultValidator,
34
- positionOrganization: defaultValidator,
35
- email: emailValidator,
36
- dulSerie: serieValidator,
37
- dulNumber: numberValidator,
38
- dulIssueDateField: defaultValidator,
39
- dulSubdivisionCode: numberValidator,
40
- dulIssuedBy: defaultValidator,
41
- fullName: nameValidator,
42
- inn: innValidator,
43
- legalForm: defaultValidator,
44
- organizationName: defaultValidator,
45
- generalSeniority: defaultValidator,
46
- lastJobExperience: defaultValidator,
47
- experience5Years: defaultValidator,
48
- jobsNumber: defaultValidator,
49
- beginDate: defaultValidator,
50
- fullAddress: defaultValidator,
51
- partnerComments: defaultValidator,
52
- collectionCount: defaultValidator,
53
- comment: defaultValidator,
25
+ phone: phoneValidator('Укажите номер телефона'),
26
+ secondaryPhone: phoneValidator('Укажите номер телефона'),
27
+ birthday: defaultValidator('Укажите дату рождения'),
28
+ education: defaultValidator('Выберите ваше образование'),
29
+ housing: defaultValidator('Выберите тип жилья'),
30
+ employment: defaultValidator('Выберите информацию о трудоустройстве'),
31
+ organization: defaultValidator('Выберите тип организации'),
32
+ amountWorkers: defaultValidator('Выберите информацию о количестве сотрудников'),
33
+ employerActivities: defaultValidator('Выберите вид деятельности организации'),
34
+ employerOrganization: defaultValidator('Выберите вид организации'),
35
+ positionOrganization: defaultValidator('Выберите вашу должность'),
36
+ dulSerie: serieValidator('Укажите серию паспорта'),
37
+ dulNumber: numberValidator('Укажите номер паспорта'),
38
+ dulIssueDateField: defaultValidator('Укажите дату выдачи паспорта'),
39
+ dulSubdivisionCode: numberValidator('Укажите код подразделения'),
40
+ dulIssuedBy: defaultValidator('Укажите организацию, выдавшую паспорт'),
41
+ email: emailValidator('Укажите электронную почту'),
42
+ fullName: nameValidator(),
43
+ inn: innValidator('Укажите ИНН'),
44
+ legalForm: defaultValidator('Укажите ОПФ'),
45
+ organizationName: defaultValidator('Укажите наименование организации'),
46
+ generalSeniority: defaultValidator(),
47
+ lastJobExperience: defaultValidator('Укажите стаж на последнем месте работы'),
48
+ experience5Years: defaultValidator('Укажите общий стаж за последние 5 лет'),
49
+ jobsNumber: defaultValidator('Укажите количество лет стажа'),
50
+ beginDate: defaultValidator('Укажите дату заключения трудового договора'),
51
+ fullAddress: defaultValidator(),
52
+ partnerComments: defaultValidator(),
53
+ collectionCount: defaultValidator(),
54
+ comment: defaultValidator(),
54
55
  acquiringType: defaultSelectValidator,
55
56
  feedbackMethod: defaultSelectValidator,
56
57
  serviceType: defaultSelectValidator,
57
58
  serviceDirection: defaultSelectValidator,
58
- meetingDay: defaultValidator,
59
- product: defaultValidator,
60
- localities: defaultValidator,
59
+ meetingDay: defaultValidator(),
60
+ product: defaultValidator(),
61
+ localities: defaultValidator(),
61
62
  consentDataProcessing: agreementValidator,
62
- annualRevenue: defaultValidator,
63
+ annualRevenue: defaultValidator(),
63
64
  consentToReceiveMaterials: agreementValidator,
64
65
  processPersonalDataLeadFlg: agreementValidator,
65
66
  consentProviderFlg: agreementValidator,
@@ -68,14 +69,14 @@ export const validatorObj: Record<string, Validator> = {
68
69
  consentAssignmentClaimsFlg: agreementValidator,
69
70
  consentCollectionFlg: agreementValidator,
70
71
  consentInformFlg: agreementValidator,
71
- familyStatus: defaultValidator,
72
- children: lengthStringValidator(2),
73
- familyMembers: lengthStringValidator(2),
74
- dependents: lengthStringValidator(2),
75
- totalIncome: lengthStringValidator(19),
76
- expenses: lengthStringValidator(10),
77
- snils: snilsValidator,
78
- conscription: defaultValidator,
72
+ familyStatus: defaultValidator('Выберите семейное положение'),
73
+ children: lengthStringValidator(2, 'Укажите количество детей'),
74
+ familyMembers: lengthStringValidator(2, 'Укажите количество членов семьи'),
75
+ dependents: lengthStringValidator(2, 'Укажите количество иждивенцев'),
76
+ totalIncome: lengthStringValidator(19, 'Укажите среднемесячный доход от основной зарплаты'),
77
+ expenses: lengthStringValidator(10, 'Укажите сумму обязательных выплат'),
78
+ snils: snilsValidator('Некорректный номер СНИЛС'),
79
+ conscription: defaultValidator(),
79
80
  armyIdFlg: agreementValidator,
80
81
  };
81
82