@snack-uikit/fields 0.30.0 → 0.32.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/CHANGELOG.md +33 -0
- package/README.md +184 -152
- package/dist/cjs/components/FieldDate/FieldDate.d.ts +15 -24
- package/dist/cjs/components/FieldDate/FieldDate.js +53 -41
- package/dist/cjs/components/FieldDate/index.d.ts +0 -1
- package/dist/cjs/components/FieldDate/index.js +1 -9
- package/dist/cjs/components/FieldSecure/FieldSecure.d.ts +1 -1
- package/dist/cjs/components/FieldSelect/hooks.d.ts +2 -2
- package/dist/cjs/components/FieldSelect/hooks.js +7 -3
- package/dist/cjs/components/FieldSelect/styles.module.css +6 -18
- package/dist/cjs/components/FieldSlider/FieldSlider.d.ts +1 -1
- package/dist/cjs/components/FieldText/FieldText.d.ts +1 -1
- package/dist/cjs/components/FieldTextArea/FieldTextArea.d.ts +1 -1
- package/dist/cjs/components/FieldTime/FieldTime.d.ts +30 -0
- package/dist/cjs/components/FieldTime/FieldTime.js +298 -0
- package/dist/cjs/components/FieldTime/index.d.ts +1 -0
- package/dist/cjs/components/{FieldDate/hooks → FieldTime}/index.js +1 -1
- package/dist/cjs/components/FieldTime/styles.module.css +27 -0
- package/dist/cjs/components/index.d.ts +6 -5
- package/dist/cjs/components/index.js +6 -5
- package/dist/cjs/constants/dateFields.d.ts +24 -0
- package/dist/cjs/constants/dateFields.js +152 -0
- package/dist/cjs/constants/index.d.ts +2 -0
- package/dist/cjs/constants/index.js +26 -0
- package/dist/cjs/hooks/dateHandlers/index.d.ts +3 -0
- package/dist/cjs/hooks/dateHandlers/index.js +27 -0
- package/dist/cjs/{components/FieldDate/hooks → hooks/dateHandlers}/useDateField.d.ts +13 -5
- package/dist/cjs/{components/FieldDate/hooks → hooks/dateHandlers}/useDateField.js +49 -34
- package/dist/cjs/hooks/dateHandlers/useDateFieldHelpersForMode.d.ts +18 -0
- package/dist/cjs/hooks/dateHandlers/useDateFieldHelpersForMode.js +113 -0
- package/dist/cjs/hooks/index.d.ts +1 -0
- package/dist/cjs/hooks/index.js +1 -0
- package/dist/cjs/hooks/useCopyButton.js +1 -1
- package/dist/cjs/{types.d.ts → types/allFields.d.ts} +1 -1
- package/dist/cjs/types/dateFields.d.ts +11 -0
- package/dist/cjs/types/index.d.ts +2 -0
- package/dist/cjs/types/index.js +26 -0
- package/dist/cjs/utils/dateFields.d.ts +10 -0
- package/dist/cjs/utils/dateFields.js +71 -0
- package/dist/esm/components/FieldDate/FieldDate.d.ts +15 -24
- package/dist/esm/components/FieldDate/FieldDate.js +39 -31
- package/dist/esm/components/FieldDate/index.d.ts +0 -1
- package/dist/esm/components/FieldDate/index.js +0 -1
- package/dist/esm/components/FieldSecure/FieldSecure.d.ts +1 -1
- package/dist/esm/components/FieldSelect/hooks.d.ts +2 -2
- package/dist/esm/components/FieldSelect/hooks.js +9 -3
- package/dist/esm/components/FieldSelect/styles.module.css +6 -18
- package/dist/esm/components/FieldSlider/FieldSlider.d.ts +1 -1
- package/dist/esm/components/FieldText/FieldText.d.ts +1 -1
- package/dist/esm/components/FieldTextArea/FieldTextArea.d.ts +1 -1
- package/dist/esm/components/FieldTime/FieldTime.d.ts +30 -0
- package/dist/esm/components/FieldTime/FieldTime.js +161 -0
- package/dist/esm/components/FieldTime/index.d.ts +1 -0
- package/dist/esm/components/FieldTime/index.js +1 -0
- package/dist/esm/components/FieldTime/styles.module.css +27 -0
- package/dist/esm/components/index.d.ts +6 -5
- package/dist/esm/components/index.js +6 -5
- package/dist/esm/constants/dateFields.d.ts +24 -0
- package/dist/esm/constants/dateFields.js +103 -0
- package/dist/esm/constants/index.d.ts +2 -0
- package/dist/esm/constants/index.js +2 -0
- package/dist/esm/hooks/dateHandlers/index.d.ts +3 -0
- package/dist/esm/hooks/dateHandlers/index.js +3 -0
- package/dist/esm/{components/FieldDate/hooks → hooks/dateHandlers}/useDateField.d.ts +13 -5
- package/dist/esm/{components/FieldDate/hooks → hooks/dateHandlers}/useDateField.js +48 -35
- package/dist/esm/hooks/dateHandlers/useDateFieldHelpersForMode.d.ts +18 -0
- package/dist/esm/hooks/dateHandlers/useDateFieldHelpersForMode.js +95 -0
- package/dist/esm/hooks/index.d.ts +1 -0
- package/dist/esm/hooks/index.js +1 -0
- package/dist/esm/hooks/useCopyButton.js +1 -1
- package/dist/esm/{types.d.ts → types/allFields.d.ts} +1 -1
- package/dist/esm/types/dateFields.d.ts +11 -0
- package/dist/esm/types/index.d.ts +2 -0
- package/dist/esm/types/index.js +2 -0
- package/dist/esm/utils/dateFields.d.ts +10 -0
- package/dist/esm/utils/dateFields.js +59 -0
- package/package.json +16 -16
- package/src/components/FieldColor/styles.module.scss +9 -10
- package/src/components/FieldDate/FieldDate.tsx +72 -52
- package/src/components/FieldDate/index.ts +0 -1
- package/src/components/FieldDate/styles.module.scss +10 -11
- package/src/components/FieldDecorator/styles.module.scss +44 -45
- package/src/components/FieldSelect/hooks.ts +15 -3
- package/src/components/FieldSelect/styles.module.scss +20 -20
- package/src/components/FieldSlider/styles.module.scss +4 -4
- package/src/components/FieldTextArea/styles.module.scss +18 -18
- package/src/components/FieldTime/FieldTime.tsx +350 -0
- package/src/components/FieldTime/index.ts +1 -0
- package/src/components/FieldTime/styles.module.scss +41 -0
- package/src/components/index.ts +6 -5
- package/src/constants/dateFields.ts +127 -0
- package/src/constants/index.ts +2 -0
- package/src/helperComponents/ButtonCopyValue/styles.module.scss +2 -2
- package/src/helperComponents/ButtonField/styles.module.scss +9 -9
- package/src/helperComponents/ButtonFieldList/styles.module.scss +2 -2
- package/src/helperComponents/ButtonHideValue/styles.module.scss +2 -2
- package/src/helperComponents/FieldContainerPrivate/styles.module.scss +24 -26
- package/src/helperComponents/TextArea/styles.module.scss +5 -5
- package/src/hooks/dateHandlers/index.ts +3 -0
- package/src/{components/FieldDate/hooks → hooks/dateHandlers}/useDateField.ts +93 -47
- package/src/hooks/dateHandlers/useDateFieldHelpersForMode.ts +145 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/styles.module.scss +5 -5
- package/src/hooks/useCopyButton.tsx +1 -1
- package/src/styles.module.scss +15 -15
- package/src/{types.ts → types/allFields.ts} +1 -1
- package/src/types/dateFields.ts +14 -0
- package/src/types/index.ts +2 -0
- package/src/utils/dateFields.ts +75 -0
- package/dist/cjs/components/FieldDate/constants.d.ts +0 -10
- package/dist/cjs/components/FieldDate/constants.js +0 -49
- package/dist/cjs/components/FieldDate/hooks/index.d.ts +0 -1
- package/dist/cjs/components/FieldDate/hooks/useDateFieldHelpers.d.ts +0 -10
- package/dist/cjs/components/FieldDate/hooks/useDateFieldHelpers.js +0 -82
- package/dist/cjs/components/FieldDate/types.d.ts +0 -6
- package/dist/cjs/components/FieldDate/utils.d.ts +0 -9
- package/dist/cjs/components/FieldDate/utils.js +0 -56
- package/dist/esm/components/FieldDate/constants.d.ts +0 -10
- package/dist/esm/components/FieldDate/constants.js +0 -28
- package/dist/esm/components/FieldDate/hooks/index.d.ts +0 -1
- package/dist/esm/components/FieldDate/hooks/index.js +0 -1
- package/dist/esm/components/FieldDate/hooks/useDateFieldHelpers.d.ts +0 -10
- package/dist/esm/components/FieldDate/hooks/useDateFieldHelpers.js +0 -66
- package/dist/esm/components/FieldDate/types.d.ts +0 -6
- package/dist/esm/components/FieldDate/utils.d.ts +0 -9
- package/dist/esm/components/FieldDate/utils.js +0 -43
- package/src/components/FieldDate/constants.ts +0 -33
- package/src/components/FieldDate/hooks/index.ts +0 -1
- package/src/components/FieldDate/hooks/useDateFieldHelpers.ts +0 -96
- package/src/components/FieldDate/types.ts +0 -6
- package/src/components/FieldDate/utils.ts +0 -49
- /package/dist/cjs/{constants.d.ts → constants/allFields.d.ts} +0 -0
- /package/dist/cjs/{constants.js → constants/allFields.js} +0 -0
- /package/dist/cjs/{components/FieldDate/hooks → hooks/dateHandlers}/useFocusHandlers.d.ts +0 -0
- /package/dist/cjs/{components/FieldDate/hooks → hooks/dateHandlers}/useFocusHandlers.js +0 -0
- /package/dist/cjs/{components/FieldDate/hooks → hooks/dateHandlers}/useHandlers.d.ts +0 -0
- /package/dist/cjs/{components/FieldDate/hooks → hooks/dateHandlers}/useHandlers.js +0 -0
- /package/dist/cjs/{components/FieldDate/types.js → types/allFields.js} +0 -0
- /package/dist/cjs/{types.js → types/dateFields.js} +0 -0
- /package/dist/esm/{constants.d.ts → constants/allFields.d.ts} +0 -0
- /package/dist/esm/{constants.js → constants/allFields.js} +0 -0
- /package/dist/esm/{components/FieldDate/hooks → hooks/dateHandlers}/useFocusHandlers.d.ts +0 -0
- /package/dist/esm/{components/FieldDate/hooks → hooks/dateHandlers}/useFocusHandlers.js +0 -0
- /package/dist/esm/{components/FieldDate/hooks → hooks/dateHandlers}/useHandlers.d.ts +0 -0
- /package/dist/esm/{components/FieldDate/hooks → hooks/dateHandlers}/useHandlers.js +0 -0
- /package/dist/esm/{components/FieldDate/types.js → types/allFields.js} +0 -0
- /package/dist/esm/{types.js → types/dateFields.js} +0 -0
- /package/src/{constants.ts → constants/allFields.ts} +0 -0
- /package/src/{components/FieldDate/hooks → hooks/dateHandlers}/useFocusHandlers.ts +0 -0
- /package/src/{components/FieldDate/hooks → hooks/dateHandlers}/useHandlers.ts +0 -0
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { useCallback } from 'react';
|
|
2
|
-
import { SlotKey, SLOTS } from '../constants';
|
|
3
|
-
export function useDateFieldHelpers(inputRef) {
|
|
4
|
-
const setFocus = useCallback((slotKey) => {
|
|
5
|
-
if (inputRef.current) {
|
|
6
|
-
const { start, end } = SLOTS[slotKey];
|
|
7
|
-
inputRef.current.setSelectionRange(start, end);
|
|
8
|
-
}
|
|
9
|
-
}, [inputRef]);
|
|
10
|
-
const isAllSelected = useCallback(() => { var _a, _b, _c; return ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.value.length) === ((_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.selectionEnd) && ((_c = inputRef.current) === null || _c === void 0 ? void 0 : _c.selectionStart) === 0; }, [inputRef]);
|
|
11
|
-
const getSlot = useCallback((slotKey) => {
|
|
12
|
-
if (inputRef.current) {
|
|
13
|
-
return inputRef.current.value.slice(SLOTS[slotKey].start, SLOTS[slotKey].end);
|
|
14
|
-
}
|
|
15
|
-
return '';
|
|
16
|
-
}, [inputRef]);
|
|
17
|
-
const isLikeDate = useCallback(() => {
|
|
18
|
-
if (inputRef.current) {
|
|
19
|
-
return Object.keys(SLOTS).every(slotKey => getSlot(slotKey) && Number.isInteger(Number(getSlot(slotKey))));
|
|
20
|
-
}
|
|
21
|
-
return false;
|
|
22
|
-
}, [getSlot, inputRef]);
|
|
23
|
-
const isValidInput = useCallback(() => {
|
|
24
|
-
const day = parseInt(getSlot(SlotKey.Day), 10);
|
|
25
|
-
const month = parseInt(getSlot(SlotKey.Month), 10);
|
|
26
|
-
const year = parseInt(getSlot(SlotKey.Year), 10);
|
|
27
|
-
if (!month || !day) {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
const date = new Date(year || /* високосный год = */ 2020, month - 1, day);
|
|
31
|
-
return date.getDate() === day;
|
|
32
|
-
}, [getSlot]);
|
|
33
|
-
const tryToCompleteInput = useCallback(() => {
|
|
34
|
-
var _a;
|
|
35
|
-
const day = parseInt(getSlot(SlotKey.Day), 10);
|
|
36
|
-
const month = parseInt(getSlot(SlotKey.Month), 10);
|
|
37
|
-
const year = parseInt(getSlot(SlotKey.Year), 10);
|
|
38
|
-
const { min, max } = SLOTS[SlotKey.Year];
|
|
39
|
-
const isCompleted = Boolean(day && month && year >= min && year <= max);
|
|
40
|
-
if (isCompleted && inputRef.current) {
|
|
41
|
-
const lastPosition = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.value.length;
|
|
42
|
-
inputRef.current.selectionStart = lastPosition;
|
|
43
|
-
inputRef.current.selectionEnd = lastPosition;
|
|
44
|
-
}
|
|
45
|
-
return isCompleted;
|
|
46
|
-
}, [getSlot, inputRef]);
|
|
47
|
-
const updateSlot = useCallback((slotKey, slotValue) => {
|
|
48
|
-
if (inputRef.current) {
|
|
49
|
-
const { start, end, max } = SLOTS[slotKey];
|
|
50
|
-
inputRef.current.value =
|
|
51
|
-
inputRef.current.value.slice(0, start) +
|
|
52
|
-
slotValue.toString().padStart(max.toString().length, '0') +
|
|
53
|
-
inputRef.current.value.slice(end);
|
|
54
|
-
setFocus(slotKey);
|
|
55
|
-
}
|
|
56
|
-
}, [inputRef, setFocus]);
|
|
57
|
-
return {
|
|
58
|
-
isAllSelected,
|
|
59
|
-
isValidInput,
|
|
60
|
-
tryToCompleteInput,
|
|
61
|
-
getSlot,
|
|
62
|
-
updateSlot,
|
|
63
|
-
setFocus,
|
|
64
|
-
isLikeDate,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SlotKey } from './constants';
|
|
2
|
-
export declare function getSlotKey(index: number | null): string | null;
|
|
3
|
-
export declare function getNextSlotKey(slotKey: string | null): SlotKey.Month | SlotKey.Year;
|
|
4
|
-
export declare function getPrevSlotKey(slotKey: string | null): SlotKey.Day | SlotKey.Month;
|
|
5
|
-
/**
|
|
6
|
-
* Преобразует строковое значение поля FieldDate в тип Date
|
|
7
|
-
* @function helper
|
|
8
|
-
*/
|
|
9
|
-
export declare function parseDate(date: string): Date;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { SlotKey, SLOTS } from './constants';
|
|
2
|
-
export function getSlotKey(index) {
|
|
3
|
-
if (index !== null) {
|
|
4
|
-
for (const key in SLOTS) {
|
|
5
|
-
if (index >= SLOTS[key].start && index <= SLOTS[key].end) {
|
|
6
|
-
return key;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
return null;
|
|
11
|
-
}
|
|
12
|
-
export function getNextSlotKey(slotKey) {
|
|
13
|
-
switch (slotKey) {
|
|
14
|
-
case SlotKey.Day: {
|
|
15
|
-
return SlotKey.Month;
|
|
16
|
-
}
|
|
17
|
-
case SlotKey.Month:
|
|
18
|
-
case SlotKey.Year:
|
|
19
|
-
default: {
|
|
20
|
-
return SlotKey.Year;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
export function getPrevSlotKey(slotKey) {
|
|
25
|
-
switch (slotKey) {
|
|
26
|
-
case SlotKey.Year: {
|
|
27
|
-
return SlotKey.Month;
|
|
28
|
-
}
|
|
29
|
-
case SlotKey.Month:
|
|
30
|
-
case SlotKey.Day:
|
|
31
|
-
default: {
|
|
32
|
-
return SlotKey.Day;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Преобразует строковое значение поля FieldDate в тип Date
|
|
38
|
-
* @function helper
|
|
39
|
-
*/
|
|
40
|
-
export function parseDate(date) {
|
|
41
|
-
const values = date.split('.');
|
|
42
|
-
return new Date(Number(values[2]), Number(values[1]) - 1, Number(values[0]));
|
|
43
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Slot } from './types';
|
|
2
|
-
|
|
3
|
-
export enum SlotKey {
|
|
4
|
-
Day = 'D',
|
|
5
|
-
Month = 'M',
|
|
6
|
-
Year = 'Y',
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export const MASK: Record<string, string> = {
|
|
10
|
-
'ru-RU': 'ДД.ММ.ГГГГ',
|
|
11
|
-
'en-US': 'DD.MM.YYYY',
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export const DEFAULT_LOCALE = new Intl.Locale('ru-RU');
|
|
15
|
-
|
|
16
|
-
export const SLOTS: Record<SlotKey | string, Slot> = {
|
|
17
|
-
[SlotKey.Day]: { start: 0, end: 2, max: 31, min: 1 },
|
|
18
|
-
[SlotKey.Month]: { start: 3, end: 5, max: 12, min: 1 },
|
|
19
|
-
[SlotKey.Year]: { start: 6, end: 10, max: 2100, min: 1900 },
|
|
20
|
-
} as const;
|
|
21
|
-
|
|
22
|
-
export const SLOTS_PLACEHOLDER: Record<string, Record<string, string>> = {
|
|
23
|
-
'ru-RU': {
|
|
24
|
-
[SlotKey.Day]: 'ДД',
|
|
25
|
-
[SlotKey.Month]: 'ММ',
|
|
26
|
-
[SlotKey.Year]: 'ГГГГ',
|
|
27
|
-
},
|
|
28
|
-
'en-US': {
|
|
29
|
-
[SlotKey.Day]: 'DD',
|
|
30
|
-
[SlotKey.Month]: 'MM',
|
|
31
|
-
[SlotKey.Year]: 'YYYY',
|
|
32
|
-
},
|
|
33
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './useDateField';
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { RefObject, useCallback } from 'react';
|
|
2
|
-
|
|
3
|
-
import { SlotKey, SLOTS } from '../constants';
|
|
4
|
-
|
|
5
|
-
export function useDateFieldHelpers(inputRef: RefObject<HTMLInputElement>) {
|
|
6
|
-
const setFocus = useCallback(
|
|
7
|
-
(slotKey: string) => {
|
|
8
|
-
if (inputRef.current) {
|
|
9
|
-
const { start, end } = SLOTS[slotKey];
|
|
10
|
-
|
|
11
|
-
inputRef.current.setSelectionRange(start, end);
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
[inputRef],
|
|
15
|
-
);
|
|
16
|
-
|
|
17
|
-
const isAllSelected = useCallback(
|
|
18
|
-
() => inputRef.current?.value.length === inputRef.current?.selectionEnd && inputRef.current?.selectionStart === 0,
|
|
19
|
-
[inputRef],
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
const getSlot = useCallback(
|
|
23
|
-
(slotKey: string) => {
|
|
24
|
-
if (inputRef.current) {
|
|
25
|
-
return inputRef.current.value.slice(SLOTS[slotKey].start, SLOTS[slotKey].end);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return '';
|
|
29
|
-
},
|
|
30
|
-
[inputRef],
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
const isLikeDate = useCallback(() => {
|
|
34
|
-
if (inputRef.current) {
|
|
35
|
-
return Object.keys(SLOTS).every(slotKey => getSlot(slotKey) && Number.isInteger(Number(getSlot(slotKey))));
|
|
36
|
-
}
|
|
37
|
-
return false;
|
|
38
|
-
}, [getSlot, inputRef]);
|
|
39
|
-
|
|
40
|
-
const isValidInput = useCallback((): boolean => {
|
|
41
|
-
const day = parseInt(getSlot(SlotKey.Day), 10);
|
|
42
|
-
const month = parseInt(getSlot(SlotKey.Month), 10);
|
|
43
|
-
const year = parseInt(getSlot(SlotKey.Year), 10);
|
|
44
|
-
|
|
45
|
-
if (!month || !day) {
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const date = new Date(year || /* високосный год = */ 2020, month - 1, day);
|
|
50
|
-
|
|
51
|
-
return date.getDate() === day;
|
|
52
|
-
}, [getSlot]);
|
|
53
|
-
|
|
54
|
-
const tryToCompleteInput = useCallback((): boolean => {
|
|
55
|
-
const day = parseInt(getSlot(SlotKey.Day), 10);
|
|
56
|
-
const month = parseInt(getSlot(SlotKey.Month), 10);
|
|
57
|
-
const year = parseInt(getSlot(SlotKey.Year), 10);
|
|
58
|
-
|
|
59
|
-
const { min, max } = SLOTS[SlotKey.Year];
|
|
60
|
-
|
|
61
|
-
const isCompleted = Boolean(day && month && year >= min && year <= max);
|
|
62
|
-
|
|
63
|
-
if (isCompleted && inputRef.current) {
|
|
64
|
-
const lastPosition = inputRef.current?.value.length;
|
|
65
|
-
inputRef.current.selectionStart = lastPosition;
|
|
66
|
-
inputRef.current.selectionEnd = lastPosition;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return isCompleted;
|
|
70
|
-
}, [getSlot, inputRef]);
|
|
71
|
-
|
|
72
|
-
const updateSlot = useCallback(
|
|
73
|
-
(slotKey: string, slotValue: number | string) => {
|
|
74
|
-
if (inputRef.current) {
|
|
75
|
-
const { start, end, max } = SLOTS[slotKey];
|
|
76
|
-
|
|
77
|
-
inputRef.current.value =
|
|
78
|
-
inputRef.current.value.slice(0, start) +
|
|
79
|
-
slotValue.toString().padStart(max.toString().length, '0') +
|
|
80
|
-
inputRef.current.value.slice(end);
|
|
81
|
-
setFocus(slotKey);
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
[inputRef, setFocus],
|
|
85
|
-
);
|
|
86
|
-
|
|
87
|
-
return {
|
|
88
|
-
isAllSelected,
|
|
89
|
-
isValidInput,
|
|
90
|
-
tryToCompleteInput,
|
|
91
|
-
getSlot,
|
|
92
|
-
updateSlot,
|
|
93
|
-
setFocus,
|
|
94
|
-
isLikeDate,
|
|
95
|
-
};
|
|
96
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { SlotKey, SLOTS } from './constants';
|
|
2
|
-
|
|
3
|
-
export function getSlotKey(index: number | null) {
|
|
4
|
-
if (index !== null) {
|
|
5
|
-
for (const key in SLOTS) {
|
|
6
|
-
if (index >= SLOTS[key].start && index <= SLOTS[key].end) {
|
|
7
|
-
return key;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export function getNextSlotKey(slotKey: string | null) {
|
|
16
|
-
switch (slotKey) {
|
|
17
|
-
case SlotKey.Day: {
|
|
18
|
-
return SlotKey.Month;
|
|
19
|
-
}
|
|
20
|
-
case SlotKey.Month:
|
|
21
|
-
case SlotKey.Year:
|
|
22
|
-
default: {
|
|
23
|
-
return SlotKey.Year;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export function getPrevSlotKey(slotKey: string | null) {
|
|
29
|
-
switch (slotKey) {
|
|
30
|
-
case SlotKey.Year: {
|
|
31
|
-
return SlotKey.Month;
|
|
32
|
-
}
|
|
33
|
-
case SlotKey.Month:
|
|
34
|
-
case SlotKey.Day:
|
|
35
|
-
default: {
|
|
36
|
-
return SlotKey.Day;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Преобразует строковое значение поля FieldDate в тип Date
|
|
43
|
-
* @function helper
|
|
44
|
-
*/
|
|
45
|
-
|
|
46
|
-
export function parseDate(date: string) {
|
|
47
|
-
const values = date.split('.');
|
|
48
|
-
return new Date(Number(values[2]), Number(values[1]) - 1, Number(values[0]));
|
|
49
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|