@central-design-system/components 3.0.0-alpha.3 → 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 +3 -2
- package/src/scss/themes/index.ts +1 -1
- package/src/utils/__test__/helper.test.ts +59 -0
- package/src/utils/__test__/mocks/helper.mock.ts +362 -0
- package/src/utils/__test__/mocks/propFactory.mock.ts +88 -0
- package/src/utils/__test__/propFactory.test.ts +9 -0
- package/src/utils/anchor.ts +76 -0
- package/src/utils/animation.ts +62 -0
- package/src/utils/box.ts +39 -0
- package/src/utils/cache.ts +12 -0
- package/src/utils/changeCase/__test__/lowerCase.test.ts +12 -0
- package/src/utils/changeCase/__test__/mocks/lowerCase.mock.ts +80 -0
- package/src/utils/changeCase/__test__/mocks/noCase.mock.ts +131 -0
- package/src/utils/changeCase/__test__/mocks/paramCase.mock.ts +39 -0
- package/src/utils/changeCase/__test__/mocks/pascalCase.mock.ts +46 -0
- package/src/utils/changeCase/__test__/noCase.test.ts +8 -0
- package/src/utils/changeCase/__test__/paramCase.test.ts +8 -0
- package/src/utils/changeCase/__test__/pascalCase.test.ts +8 -0
- package/src/utils/changeCase/lowerCase.ts +56 -0
- package/src/utils/changeCase/noCase.ts +45 -0
- package/src/utils/changeCase/paramCase.ts +11 -0
- package/src/utils/changeCase/pascalCase.ts +24 -0
- package/src/utils/date.ts +1106 -0
- package/src/utils/dom.ts +24 -0
- package/src/utils/getCurrentInstance.ts +43 -0
- package/src/utils/getScrollParent.ts +29 -0
- package/src/utils/globals.ts +8 -0
- package/src/utils/helpers.ts +312 -0
- package/src/utils/index.ts +19 -0
- package/src/utils/propsFactory.ts +92 -0
|
@@ -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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@central-design-system/components",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.5",
|
|
4
4
|
"description": "Central Design System on the Vue 3.0 and TypeScript",
|
|
5
5
|
"author": "magersoft",
|
|
6
6
|
"license": "ISC",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"dist",
|
|
22
|
+
"src/utils",
|
|
22
23
|
"src/scss",
|
|
23
24
|
"nuxt.js"
|
|
24
25
|
],
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
"publish:alpha": "npm publish --tag next"
|
|
31
32
|
},
|
|
32
33
|
"peerDependencies": {
|
|
33
|
-
"vue": "3.2.
|
|
34
|
+
"vue": "^3.2.0"
|
|
34
35
|
},
|
|
35
36
|
"devDependencies": {
|
|
36
37
|
"@types/node": "16.18.3",
|
package/src/scss/themes/index.ts
CHANGED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { pick, isObject, mergeDeep, getNestedValue, getObjectValueByPath, getPropertyFromItem } from '../helpers';
|
|
2
|
+
import {
|
|
3
|
+
mockHelpersIsObject,
|
|
4
|
+
mockHelpersMergeDeep,
|
|
5
|
+
mockHelpersGetNestedValue,
|
|
6
|
+
mockHelpersGetObjectValueByPath,
|
|
7
|
+
mockHelpersGetPropertyFromItem,
|
|
8
|
+
mockHelpersPick
|
|
9
|
+
} from './mocks/helper.mock';
|
|
10
|
+
|
|
11
|
+
describe('isObject', () => {
|
|
12
|
+
mockHelpersIsObject.forEach(({ name, initial, expected }) => {
|
|
13
|
+
it(name, () => {
|
|
14
|
+
expect(isObject(initial)).toEqual(expected);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
describe('mergeDeep', () => {
|
|
20
|
+
mockHelpersMergeDeep.forEach(({ name, initial, expected }) => {
|
|
21
|
+
it(name, () => {
|
|
22
|
+
expect(mergeDeep(initial.source, initial.target, initial.arrayFn)).toEqual(expected);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
describe('getNestedValue', () => {
|
|
28
|
+
mockHelpersGetNestedValue.forEach(({ name, initial, expected }) => {
|
|
29
|
+
it(name, () => {
|
|
30
|
+
expect(getNestedValue(initial.obj, initial.path, initial.fallback)).toEqual(expected);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
describe('getObjectValueByPath', () => {
|
|
36
|
+
mockHelpersGetObjectValueByPath.forEach(({ name, initial, expected }) => {
|
|
37
|
+
it(name, () => {
|
|
38
|
+
expect(getObjectValueByPath(initial.obj, initial.path, initial.fallback)).toEqual(expected);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
describe('getPropertyFromItem', () => {
|
|
44
|
+
mockHelpersGetPropertyFromItem.forEach(({ name, initial, expected }) => {
|
|
45
|
+
it(name, () => {
|
|
46
|
+
expect(getPropertyFromItem(initial.item, initial.property, initial.fallback)).toEqual(expected);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
describe('pick', () => {
|
|
52
|
+
mockHelpersPick.forEach(({ name, initial, expected }) => {
|
|
53
|
+
it(name, () => {
|
|
54
|
+
const [yes, no] = pick(initial.obj, initial.paths);
|
|
55
|
+
expect(yes).toEqual(expected.yes);
|
|
56
|
+
expect(no).toEqual(expected.no);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
});
|