@central-design-system/components 3.0.0-alpha.4 → 3.0.0-alpha.5
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/dist/cds.css +1 -1
- package/dist/cds.d.ts +4 -3
- package/dist/cds.es.js +4036 -3634
- package/dist/cds.umd.js +1 -1
- package/dist/components/CdsButton/CdsButton.vue.d.ts +9 -0
- package/dist/components/CdsCheckbox/CdsCheckbox.vue.d.ts +11 -11
- package/dist/components/CdsCheckbox/CdsCheckboxGroup.vue.d.ts +18 -18
- package/dist/components/CdsCombobox/CdsCombobox.vue.d.ts +109 -167
- package/dist/components/CdsDatePicker/CdsDatePicker.vue.d.ts +17 -17
- package/dist/components/CdsDatePicker/composable/calendar.d.ts +3 -1
- package/dist/components/CdsDropdown/CdsDropdown.vue.d.ts +76 -77
- package/dist/components/CdsForm/CdsForm.vue.d.ts +1 -1
- package/dist/components/CdsInput/CdsInput.vue.d.ts +11 -11
- package/dist/components/CdsRadioButton/CdsRadio.vue.d.ts +18 -18
- package/dist/components/CdsRadioButton/CdsRadioButton.vue.d.ts +18 -18
- package/dist/components/CdsSelect/CdsSelect.vue.d.ts +51 -33
- package/dist/components/CdsTextArea/CdsTextArea.vue.d.ts +83 -62
- package/dist/components/CdsTextInput/CdsTextInput.vue.d.ts +37 -73
- package/dist/components/CdsTimePicker/CdsTimePicker.vue.d.ts +171 -0
- package/dist/components/CdsTimePicker/composable/index.d.ts +1 -0
- package/dist/components/CdsTimePicker/composable/time.d.ts +134 -0
- package/dist/components/index.d.ts +2 -1
- package/dist/composable/datetime.d.ts +2 -17
- package/dist/composable/index.d.ts +1 -0
- package/dist/composable/readonly.d.ts +19 -0
- package/dist/composable/validation.d.ts +0 -16
- package/dist/utils/date.d.ts +2 -1
- package/dist/utils/helpers.d.ts +1 -0
- package/package.json +1 -1
- package/src/scss/themes/index.ts +1 -1
- package/src/utils/date.ts +9 -3
- package/src/utils/helpers.ts +2 -1
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import type { PropType, Ref } from 'vue';
|
|
2
|
+
import type { IRawDate, TDateLocale } from '../../../utils';
|
|
3
|
+
import type { IDatetimeProps } from '../../../composable';
|
|
4
|
+
export interface ITimeProps {
|
|
5
|
+
modelValue: IDatetimeProps['modelValue'];
|
|
6
|
+
format12h: boolean;
|
|
7
|
+
nowBtn: boolean;
|
|
8
|
+
withSeconds: boolean;
|
|
9
|
+
defaultDate?: string;
|
|
10
|
+
allowedTime?: (hr: number | null, min: number | null, sec: number | null) => boolean;
|
|
11
|
+
allowedHours?: number[];
|
|
12
|
+
allowedMinutes?: number[];
|
|
13
|
+
allowedSeconds?: number[];
|
|
14
|
+
}
|
|
15
|
+
export declare const makeTimeProps: <Defaults extends {
|
|
16
|
+
withSeconds?: unknown;
|
|
17
|
+
format12h?: unknown;
|
|
18
|
+
nowBtn?: unknown;
|
|
19
|
+
defaultDate?: unknown;
|
|
20
|
+
allowedTime?: unknown;
|
|
21
|
+
allowedHours?: unknown;
|
|
22
|
+
allowedMinutes?: unknown;
|
|
23
|
+
allowedSeconds?: unknown;
|
|
24
|
+
} = {}>(defaults?: Defaults | undefined) => import('../../../utils').AppendDefault<{
|
|
25
|
+
/**
|
|
26
|
+
* Добавляет секунды в выбор времени
|
|
27
|
+
*/
|
|
28
|
+
withSeconds: {
|
|
29
|
+
type: PropType<boolean>;
|
|
30
|
+
default: boolean;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Отображает время в 12-часовом формате AM/PM
|
|
34
|
+
*/
|
|
35
|
+
format12h: {
|
|
36
|
+
type: PropType<boolean>;
|
|
37
|
+
default: boolean;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Отображает кнопку "Сейчас"
|
|
41
|
+
*/
|
|
42
|
+
nowBtn: {
|
|
43
|
+
type: PropType<boolean>;
|
|
44
|
+
default: boolean;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Используемая дата по умолчанию, когда модель не заполнена (в формате YYYY/MM/DD)
|
|
48
|
+
*/
|
|
49
|
+
defaultDate: {
|
|
50
|
+
type: PropType<string>;
|
|
51
|
+
validator: (value: string) => boolean;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Позволяет настроить какое время доступно для выбора
|
|
55
|
+
*/
|
|
56
|
+
allowedTime: {
|
|
57
|
+
type: PropType<(hr: number | null, min: number | null, sec: number | null) => boolean>;
|
|
58
|
+
default: undefined;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Позволяет настроить какие часы доступны для выбора
|
|
62
|
+
*/
|
|
63
|
+
allowedHours: {
|
|
64
|
+
type: PropType<number[]>;
|
|
65
|
+
default: undefined;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Позволяет настроить какие минуты доступны для выбора
|
|
69
|
+
*/
|
|
70
|
+
allowedMinutes: {
|
|
71
|
+
type: PropType<number[]>;
|
|
72
|
+
default: undefined;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Позволяет настроить какие секунды доступны для выбора
|
|
76
|
+
*/
|
|
77
|
+
allowedSeconds: {
|
|
78
|
+
type: PropType<number[]>;
|
|
79
|
+
default: undefined;
|
|
80
|
+
};
|
|
81
|
+
}, Defaults>;
|
|
82
|
+
export declare function useTime(props: ITimeProps, internalLocale: Ref<TDateLocale>, internalMask: Ref<string>, getCurrentDate: (dateOnly?: boolean) => IRawDate): {
|
|
83
|
+
model: Ref<IRawDate> & {
|
|
84
|
+
readonly externalValue: string | import('../../../composable').TDatetimeValueRange | (string | import('../../../composable').TDatetimeValueRange)[];
|
|
85
|
+
};
|
|
86
|
+
isAM: Ref<boolean>;
|
|
87
|
+
stringModel: import("vue").ComputedRef<{
|
|
88
|
+
hour: string | undefined;
|
|
89
|
+
minute: string;
|
|
90
|
+
second: string;
|
|
91
|
+
}>;
|
|
92
|
+
hourInSelection: import("vue").ComputedRef<((value: number) => boolean | undefined) | null>;
|
|
93
|
+
minuteInSelection: import("vue").ComputedRef<((value: number) => boolean | undefined) | null>;
|
|
94
|
+
secondInSelection: import("vue").ComputedRef<((value: number) => boolean | undefined) | null>;
|
|
95
|
+
validHours: import("vue").ComputedRef<{
|
|
96
|
+
am: {
|
|
97
|
+
min: number;
|
|
98
|
+
max: number;
|
|
99
|
+
values: number[];
|
|
100
|
+
threshold: number;
|
|
101
|
+
};
|
|
102
|
+
pm: {
|
|
103
|
+
min: number;
|
|
104
|
+
max: number;
|
|
105
|
+
values: number[];
|
|
106
|
+
threshold: number;
|
|
107
|
+
};
|
|
108
|
+
values: number[];
|
|
109
|
+
} | null>;
|
|
110
|
+
validMinutes: import("vue").ComputedRef<{
|
|
111
|
+
min: number;
|
|
112
|
+
max: number;
|
|
113
|
+
values: number[];
|
|
114
|
+
threshold: number;
|
|
115
|
+
} | null>;
|
|
116
|
+
validSeconds: import("vue").ComputedRef<{
|
|
117
|
+
min: number;
|
|
118
|
+
max: number;
|
|
119
|
+
values: number[];
|
|
120
|
+
threshold: number;
|
|
121
|
+
} | null>;
|
|
122
|
+
getCurrentTime: () => {
|
|
123
|
+
hour: number;
|
|
124
|
+
minute: number;
|
|
125
|
+
second: number;
|
|
126
|
+
millisecond: number;
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Если передать массив чисел и число, которое меньше наименьшего числа в массиве, то вернется наибольшее число из массива и наоборот
|
|
131
|
+
* @param numbers
|
|
132
|
+
* @param target
|
|
133
|
+
*/
|
|
134
|
+
export declare function findClosestExtremeNumber(numbers: number[], target: number): number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Automatically generated by CDS CLI
|
|
3
|
-
* Generated on 5/
|
|
3
|
+
* Generated on 5/23/2023, 3:10:54 PM
|
|
4
4
|
**/
|
|
5
5
|
export { default as CdsBadge } from './CdsBadge/CdsBadge.vue';
|
|
6
6
|
export { default as CdsBreadcrumbs } from './CdsBreadcrumbs/CdsBreadcrumbs.vue';
|
|
@@ -39,3 +39,4 @@ export { default as CdsStatus } from './CdsStatus/CdsStatus.vue';
|
|
|
39
39
|
export { default as CdsTag } from './CdsTag/CdsTag.vue';
|
|
40
40
|
export { default as CdsTextArea } from './CdsTextArea/CdsTextArea.vue';
|
|
41
41
|
export { default as CdsTextInput } from './CdsTextInput/CdsTextInput.vue';
|
|
42
|
+
export { default as CdsTimePicker } from './CdsTimePicker/CdsTimePicker.vue';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { IRawDate, TDateLocale } from '../utils';
|
|
2
1
|
import type { ComputedRef, PropType } from 'vue';
|
|
2
|
+
import type { IRawDate, TDateLocale } from '../utils';
|
|
3
3
|
export interface IDatetimeProps {
|
|
4
4
|
modelValue: string | TDatetimeValueRange | Array<string | TDatetimeValueRange>;
|
|
5
5
|
mask: string;
|
|
@@ -25,8 +25,6 @@ export declare const makeDatetimeProps: <Defaults extends {
|
|
|
25
25
|
modelValue?: unknown;
|
|
26
26
|
mask?: unknown;
|
|
27
27
|
locale?: unknown;
|
|
28
|
-
readonly?: unknown;
|
|
29
|
-
disabled?: unknown;
|
|
30
28
|
} = {}>(defaults?: Defaults | undefined) => import('../utils').AppendDefault<{
|
|
31
29
|
/**
|
|
32
30
|
* Значение модели
|
|
@@ -58,19 +56,6 @@ export declare const makeDatetimeProps: <Defaults extends {
|
|
|
58
56
|
}>;
|
|
59
57
|
default: null;
|
|
60
58
|
};
|
|
61
|
-
/**
|
|
62
|
-
* Только для чтения
|
|
63
|
-
*/
|
|
64
|
-
readonly: {
|
|
65
|
-
type: PropType<boolean>;
|
|
66
|
-
default: boolean;
|
|
67
|
-
};
|
|
68
|
-
/**
|
|
69
|
-
* Заблокированный
|
|
70
|
-
*/
|
|
71
|
-
disabled: {
|
|
72
|
-
type: PropType<boolean>;
|
|
73
|
-
default: boolean;
|
|
74
|
-
};
|
|
75
59
|
}, Defaults>;
|
|
76
60
|
export declare function useDatetime(props: IDatetimeProps): IUseDatetime;
|
|
61
|
+
export declare function getDayHash(date: IRawDate): string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ComputedRef, PropType } from 'vue';
|
|
2
|
+
export interface IReadonlyProps {
|
|
3
|
+
readonly: boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface IUseReadonly {
|
|
6
|
+
readonlyClasses: ComputedRef<string | undefined>;
|
|
7
|
+
}
|
|
8
|
+
export declare const makeReadonlyProps: <Defaults extends {
|
|
9
|
+
readonly?: unknown;
|
|
10
|
+
} = {}>(defaults?: Defaults | undefined) => import('../utils').AppendDefault<{
|
|
11
|
+
/**
|
|
12
|
+
* Только для чтения
|
|
13
|
+
*/
|
|
14
|
+
readonly: {
|
|
15
|
+
type: PropType<boolean>;
|
|
16
|
+
default: boolean;
|
|
17
|
+
};
|
|
18
|
+
}, Defaults>;
|
|
19
|
+
export declare function useReadonly(props: IReadonlyProps): IUseReadonly;
|
|
@@ -33,25 +33,16 @@ export interface IUseValidation {
|
|
|
33
33
|
}
|
|
34
34
|
export declare const allowedValidationOn: readonly ["blur", "input", "submit"];
|
|
35
35
|
export declare const makeValidationProps: <Defaults extends {
|
|
36
|
-
disabled?: unknown;
|
|
37
36
|
error?: unknown;
|
|
38
37
|
errorMessages?: unknown;
|
|
39
38
|
maxErrors?: unknown;
|
|
40
39
|
name?: unknown;
|
|
41
|
-
readonly?: unknown;
|
|
42
40
|
rules?: unknown;
|
|
43
41
|
modelValue?: unknown;
|
|
44
42
|
validateOn?: unknown;
|
|
45
43
|
validationValue?: unknown;
|
|
46
44
|
hideMessages?: unknown;
|
|
47
45
|
} = {}>(defaults?: Defaults | undefined) => import('../utils').AppendDefault<{
|
|
48
|
-
/**
|
|
49
|
-
* Заблокированное состояние
|
|
50
|
-
*/
|
|
51
|
-
disabled: {
|
|
52
|
-
type: PropType<boolean>;
|
|
53
|
-
default: boolean;
|
|
54
|
-
};
|
|
55
46
|
/**
|
|
56
47
|
* Состояние ошибки
|
|
57
48
|
*/
|
|
@@ -80,13 +71,6 @@ export declare const makeValidationProps: <Defaults extends {
|
|
|
80
71
|
type: PropType<string | undefined>;
|
|
81
72
|
default: undefined;
|
|
82
73
|
};
|
|
83
|
-
/**
|
|
84
|
-
* Только для чтения
|
|
85
|
-
*/
|
|
86
|
-
readonly: {
|
|
87
|
-
type: PropType<boolean>;
|
|
88
|
-
default: boolean;
|
|
89
|
-
};
|
|
90
74
|
/**
|
|
91
75
|
* Правила валидации
|
|
92
76
|
*/
|
package/dist/utils/date.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export interface IRawDate {
|
|
|
11
11
|
dateHash?: string;
|
|
12
12
|
timeHash?: string;
|
|
13
13
|
date?: number;
|
|
14
|
+
changed?: boolean;
|
|
14
15
|
}
|
|
15
16
|
export declare type TDateLocale = ILocale['date'];
|
|
16
17
|
/**
|
|
@@ -43,7 +44,7 @@ export declare function extractDate(str: string, mask: string, dateLocale: TDate
|
|
|
43
44
|
* @param dateLocale
|
|
44
45
|
* @param defaultModel
|
|
45
46
|
*/
|
|
46
|
-
export declare function splitDate(str
|
|
47
|
+
export declare function splitDate(str?: string | any, mask?: string, dateLocale?: TDateLocale, defaultModel?: IRawDate): IRawDate;
|
|
47
48
|
/**
|
|
48
49
|
* Check a date string for validity.
|
|
49
50
|
* @param date
|
package/dist/utils/helpers.d.ts
CHANGED
package/package.json
CHANGED
package/src/scss/themes/index.ts
CHANGED
package/src/utils/date.ts
CHANGED
|
@@ -15,6 +15,7 @@ export interface IRawDate {
|
|
|
15
15
|
dateHash?: string;
|
|
16
16
|
timeHash?: string;
|
|
17
17
|
date?: number;
|
|
18
|
+
changed?: boolean;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
export type TDateLocale = ILocale['date'];
|
|
@@ -329,7 +330,12 @@ export function extractDate(str: string, mask: string, dateLocale: TDateLocale)
|
|
|
329
330
|
* @param dateLocale
|
|
330
331
|
* @param defaultModel
|
|
331
332
|
*/
|
|
332
|
-
export function splitDate(
|
|
333
|
+
export function splitDate(
|
|
334
|
+
str?: string | any,
|
|
335
|
+
mask?: string,
|
|
336
|
+
dateLocale?: TDateLocale,
|
|
337
|
+
defaultModel?: IRawDate
|
|
338
|
+
): IRawDate {
|
|
333
339
|
const date: IRawDate | Record<string, number | string | null> = {
|
|
334
340
|
year: null,
|
|
335
341
|
month: null,
|
|
@@ -345,7 +351,7 @@ export function splitDate(str: string, mask: string, dateLocale: TDateLocale, de
|
|
|
345
351
|
|
|
346
352
|
defaultModel !== undefined && Object.assign(date, defaultModel);
|
|
347
353
|
|
|
348
|
-
if (str === undefined || str === null || str === '') return date;
|
|
354
|
+
if (str === undefined || str === null || str === '' || typeof str !== 'string') return date;
|
|
349
355
|
|
|
350
356
|
if (!mask) mask = defaultMask;
|
|
351
357
|
|
|
@@ -922,7 +928,7 @@ function getRegexData(mask: string, dateLocale: TDateLocale): { map: Record<stri
|
|
|
922
928
|
return result;
|
|
923
929
|
}
|
|
924
930
|
|
|
925
|
-
function getDateLocale(paramDateLocale
|
|
931
|
+
function getDateLocale(paramDateLocale?: TDateLocale, locale?: ILocale): TDateLocale {
|
|
926
932
|
return paramDateLocale ? paramDateLocale : locale ? locale.date : defaultLang.date;
|
|
927
933
|
}
|
|
928
934
|
|
package/src/utils/helpers.ts
CHANGED
|
@@ -33,7 +33,8 @@ export const classesStates = Object.freeze({
|
|
|
33
33
|
indeterminate: 'cds-state-indeterminate',
|
|
34
34
|
invalid: 'cds-state-invalid',
|
|
35
35
|
empty: 'cds-state-empty',
|
|
36
|
-
loading: 'cds-state-loading'
|
|
36
|
+
loading: 'cds-state-loading',
|
|
37
|
+
readonly: 'cds-state-readonly'
|
|
37
38
|
});
|
|
38
39
|
|
|
39
40
|
/**
|