@cloud-ru/uikit-product-fields-predefined 3.0.3 → 3.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 (96) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +28 -0
  3. package/dist/cjs/components/FieldCode/FieldCode.d.ts +48 -0
  4. package/dist/cjs/components/FieldCode/FieldCode.js +47 -0
  5. package/dist/cjs/components/FieldCode/components/Cell/Cell.d.ts +7 -0
  6. package/dist/cjs/components/FieldCode/components/Cell/Cell.js +27 -0
  7. package/dist/cjs/components/FieldCode/components/Cell/index.d.ts +1 -0
  8. package/dist/cjs/components/FieldCode/components/Cell/index.js +17 -0
  9. package/dist/cjs/components/FieldCode/components/Cell/styles.module.css +19 -0
  10. package/dist/cjs/components/FieldCode/components/ResendCode/ResendCode.d.ts +8 -0
  11. package/dist/cjs/components/FieldCode/components/ResendCode/ResendCode.js +29 -0
  12. package/dist/cjs/components/FieldCode/components/ResendCode/index.d.ts +1 -0
  13. package/dist/cjs/components/FieldCode/components/ResendCode/index.js +17 -0
  14. package/dist/cjs/components/FieldCode/components/ResendCode/utils.d.ts +1 -0
  15. package/dist/cjs/components/FieldCode/components/ResendCode/utils.js +8 -0
  16. package/dist/cjs/components/FieldCode/components/index.d.ts +2 -0
  17. package/dist/cjs/components/FieldCode/components/index.js +18 -0
  18. package/dist/cjs/components/FieldCode/constants.d.ts +1 -0
  19. package/dist/cjs/components/FieldCode/constants.js +4 -0
  20. package/dist/cjs/components/FieldCode/hooks/index.d.ts +5 -0
  21. package/dist/cjs/components/FieldCode/hooks/index.js +21 -0
  22. package/dist/cjs/components/FieldCode/hooks/useCodeInput.d.ts +22 -0
  23. package/dist/cjs/components/FieldCode/hooks/useCodeInput.js +98 -0
  24. package/dist/cjs/components/FieldCode/hooks/useFieldCodeOverflow.d.ts +6 -0
  25. package/dist/cjs/components/FieldCode/hooks/useFieldCodeOverflow.js +43 -0
  26. package/dist/cjs/components/FieldCode/hooks/useFieldCodeValidate.d.ts +8 -0
  27. package/dist/cjs/components/FieldCode/hooks/useFieldCodeValidate.js +24 -0
  28. package/dist/cjs/components/FieldCode/hooks/useFieldHelpers.d.ts +12 -0
  29. package/dist/cjs/components/FieldCode/hooks/useFieldHelpers.js +30 -0
  30. package/dist/cjs/components/FieldCode/hooks/useFocusCell.d.ts +5 -0
  31. package/dist/cjs/components/FieldCode/hooks/useFocusCell.js +22 -0
  32. package/dist/cjs/components/FieldCode/index.d.ts +2 -0
  33. package/dist/cjs/components/FieldCode/index.js +20 -0
  34. package/dist/cjs/components/FieldCode/styles.module.css +41 -0
  35. package/dist/cjs/components/FieldCode/utils.d.ts +6 -0
  36. package/dist/cjs/components/FieldCode/utils.js +21 -0
  37. package/dist/cjs/components/index.d.ts +1 -0
  38. package/dist/cjs/components/index.js +1 -0
  39. package/dist/esm/components/FieldCode/FieldCode.d.ts +48 -0
  40. package/dist/esm/components/FieldCode/FieldCode.js +41 -0
  41. package/dist/esm/components/FieldCode/components/Cell/Cell.d.ts +7 -0
  42. package/dist/esm/components/FieldCode/components/Cell/Cell.js +21 -0
  43. package/dist/esm/components/FieldCode/components/Cell/index.d.ts +1 -0
  44. package/dist/esm/components/FieldCode/components/Cell/index.js +1 -0
  45. package/dist/esm/components/FieldCode/components/Cell/styles.module.css +19 -0
  46. package/dist/esm/components/FieldCode/components/ResendCode/ResendCode.d.ts +8 -0
  47. package/dist/esm/components/FieldCode/components/ResendCode/ResendCode.js +26 -0
  48. package/dist/esm/components/FieldCode/components/ResendCode/index.d.ts +1 -0
  49. package/dist/esm/components/FieldCode/components/ResendCode/index.js +1 -0
  50. package/dist/esm/components/FieldCode/components/ResendCode/utils.d.ts +1 -0
  51. package/dist/esm/components/FieldCode/components/ResendCode/utils.js +5 -0
  52. package/dist/esm/components/FieldCode/components/index.d.ts +2 -0
  53. package/dist/esm/components/FieldCode/components/index.js +2 -0
  54. package/dist/esm/components/FieldCode/constants.d.ts +1 -0
  55. package/dist/esm/components/FieldCode/constants.js +1 -0
  56. package/dist/esm/components/FieldCode/hooks/index.d.ts +5 -0
  57. package/dist/esm/components/FieldCode/hooks/index.js +5 -0
  58. package/dist/esm/components/FieldCode/hooks/useCodeInput.d.ts +22 -0
  59. package/dist/esm/components/FieldCode/hooks/useCodeInput.js +95 -0
  60. package/dist/esm/components/FieldCode/hooks/useFieldCodeOverflow.d.ts +6 -0
  61. package/dist/esm/components/FieldCode/hooks/useFieldCodeOverflow.js +40 -0
  62. package/dist/esm/components/FieldCode/hooks/useFieldCodeValidate.d.ts +8 -0
  63. package/dist/esm/components/FieldCode/hooks/useFieldCodeValidate.js +21 -0
  64. package/dist/esm/components/FieldCode/hooks/useFieldHelpers.d.ts +12 -0
  65. package/dist/esm/components/FieldCode/hooks/useFieldHelpers.js +27 -0
  66. package/dist/esm/components/FieldCode/hooks/useFocusCell.d.ts +5 -0
  67. package/dist/esm/components/FieldCode/hooks/useFocusCell.js +19 -0
  68. package/dist/esm/components/FieldCode/index.d.ts +2 -0
  69. package/dist/esm/components/FieldCode/index.js +2 -0
  70. package/dist/esm/components/FieldCode/styles.module.css +41 -0
  71. package/dist/esm/components/FieldCode/utils.d.ts +6 -0
  72. package/dist/esm/components/FieldCode/utils.js +13 -0
  73. package/dist/esm/components/index.d.ts +1 -0
  74. package/dist/esm/components/index.js +1 -0
  75. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  76. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  77. package/package.json +6 -3
  78. package/src/components/FieldCode/FieldCode.tsx +138 -0
  79. package/src/components/FieldCode/components/Cell/Cell.tsx +35 -0
  80. package/src/components/FieldCode/components/Cell/index.ts +1 -0
  81. package/src/components/FieldCode/components/Cell/styles.module.scss +24 -0
  82. package/src/components/FieldCode/components/ResendCode/ResendCode.tsx +36 -0
  83. package/src/components/FieldCode/components/ResendCode/index.ts +1 -0
  84. package/src/components/FieldCode/components/ResendCode/utils.ts +5 -0
  85. package/src/components/FieldCode/components/index.ts +2 -0
  86. package/src/components/FieldCode/constants.ts +1 -0
  87. package/src/components/FieldCode/hooks/index.ts +5 -0
  88. package/src/components/FieldCode/hooks/useCodeInput.ts +147 -0
  89. package/src/components/FieldCode/hooks/useFieldCodeOverflow.ts +54 -0
  90. package/src/components/FieldCode/hooks/useFieldCodeValidate.ts +35 -0
  91. package/src/components/FieldCode/hooks/useFieldHelpers.ts +44 -0
  92. package/src/components/FieldCode/hooks/useFocusCell.ts +29 -0
  93. package/src/components/FieldCode/index.ts +2 -0
  94. package/src/components/FieldCode/styles.module.scss +46 -0
  95. package/src/components/FieldCode/utils.ts +23 -0
  96. package/src/components/index.ts +1 -0
@@ -0,0 +1,41 @@
1
+ .fieldCode{
2
+ display:flex;
3
+ flex-direction:column;
4
+ align-items:center;
5
+ gap:8px;
6
+ }
7
+ .fieldCode[data-stretch-cells]{
8
+ width:100%;
9
+ }
10
+
11
+ .fieldCodeScrollable{
12
+ overflow-x:auto;
13
+ }
14
+
15
+ .fieldDecorator{
16
+ width:unset;
17
+ }
18
+
19
+ .codeContainer{
20
+ display:flex;
21
+ justify-content:safe center;
22
+ }
23
+ .codeContainer[data-size=s]{
24
+ gap:8px;
25
+ }
26
+ .codeContainer[data-size=m]{
27
+ gap:8px;
28
+ }
29
+ .codeContainer[data-size=l]{
30
+ gap:12px;
31
+ }
32
+
33
+ .cellSpacing[data-size=s]{
34
+ margin-right:8px;
35
+ }
36
+ .cellSpacing[data-size=m]{
37
+ margin-right:8px;
38
+ }
39
+ .cellSpacing[data-size=l]{
40
+ margin-right:12px;
41
+ }
@@ -0,0 +1,6 @@
1
+ import { FieldTextProps } from '@snack-uikit/fields';
2
+ export declare const isNumberChar: (char: string) => boolean;
3
+ export declare const isStringCodeLength: (input: string, codeLength: number) => boolean;
4
+ export declare const isZeroWidthSpace: (value: string) => value is "​";
5
+ export declare function getFirstEmptyCellIndex(code: readonly string[]): number;
6
+ export declare const getCellValidationState: (value: string, showEmptyChars?: boolean, error?: boolean) => FieldTextProps["validationState"];
@@ -0,0 +1,13 @@
1
+ import { ZERO_WIDTH_SPACE } from './constants';
2
+ export const isNumberChar = (char) => /^\d$/.test(char);
3
+ export const isStringCodeLength = (input, codeLength) => new RegExp(`^\\d{${codeLength}}$`).test(input);
4
+ export const isZeroWidthSpace = (value) => value === ZERO_WIDTH_SPACE;
5
+ export function getFirstEmptyCellIndex(code) {
6
+ return code.findIndex(isZeroWidthSpace);
7
+ }
8
+ export const getCellValidationState = (value, showEmptyChars, error) => {
9
+ if (showEmptyChars) {
10
+ return isZeroWidthSpace(value) ? 'error' : 'default';
11
+ }
12
+ return error ? 'error' : 'default';
13
+ };
@@ -5,3 +5,4 @@ export * from './AIDisclaimer';
5
5
  export * from './FieldName';
6
6
  export * from './FieldDescription';
7
7
  export * from './FieldMask';
8
+ export * from './FieldCode';
@@ -5,3 +5,4 @@ export * from './AIDisclaimer';
5
5
  export * from './FieldName';
6
6
  export * from './FieldDescription';
7
7
  export * from './FieldMask';
8
+ export * from './FieldCode';