xladmin 0.3.7 → 0.5.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/dist/client.d.ts +2 -0
- package/dist/components/ActionFormDialog.d.ts +25 -0
- package/dist/components/FieldEditor.d.ts +16 -2
- package/dist/components/model-page/useModelPageController.d.ts +3 -0
- package/dist/components/object-page/useObjectPageController.d.ts +3 -0
- package/dist/index.js +1280 -633
- package/dist/types/index.d.ts +27 -8
- package/dist/utils/adminFields.d.ts +3 -2
- package/dist/utils/pickersLocale.d.ts +148 -0
- package/package.json +4 -4
package/dist/types/index.d.ts
CHANGED
|
@@ -1,30 +1,46 @@
|
|
|
1
1
|
export type AdminLocale = 'ru' | 'en';
|
|
2
|
-
export type AdminFieldInputKind = 'text' | 'textarea' | 'password' | 'number' | 'decimal' | 'boolean' | 'date' | 'datetime' | 'json' | 'relation' | 'relation-multiple';
|
|
2
|
+
export type AdminFieldInputKind = 'text' | 'textarea' | 'password' | 'number' | 'decimal' | 'boolean' | 'date' | 'datetime' | 'json' | 'select' | 'select-multiple' | 'relation' | 'relation-multiple';
|
|
3
3
|
export type AdminFieldDisplayKind = 'text' | 'image';
|
|
4
4
|
export type AdminListFilterInputKind = 'text' | 'select' | 'select-multiple' | 'boolean';
|
|
5
|
-
export type
|
|
5
|
+
export type AdminFieldOptionMeta = {
|
|
6
|
+
value: string | number | boolean;
|
|
7
|
+
label: string;
|
|
8
|
+
};
|
|
9
|
+
export type AdminEditableFieldMeta = {
|
|
6
10
|
name: string;
|
|
7
11
|
label: string;
|
|
8
12
|
help_text: string | null;
|
|
13
|
+
required: boolean;
|
|
14
|
+
placeholder?: string | null;
|
|
15
|
+
nullable: boolean;
|
|
16
|
+
read_only: boolean;
|
|
17
|
+
type: string;
|
|
18
|
+
input_kind: AdminFieldInputKind;
|
|
19
|
+
has_choices: boolean;
|
|
20
|
+
is_relation_many: boolean;
|
|
21
|
+
options?: AdminFieldOptionMeta[];
|
|
22
|
+
auto_now?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export type AdminFieldMeta = AdminEditableFieldMeta & {
|
|
9
25
|
width_px?: number | null;
|
|
10
26
|
display_kind: AdminFieldDisplayKind;
|
|
11
27
|
image_url_prefix?: string | null;
|
|
12
|
-
nullable: boolean;
|
|
13
|
-
read_only: boolean;
|
|
14
28
|
hidden_in_list: boolean;
|
|
15
29
|
hidden_in_detail: boolean;
|
|
16
30
|
hidden_in_form: boolean;
|
|
17
31
|
hidden_in_create: boolean;
|
|
18
32
|
hidden_in_update: boolean;
|
|
19
|
-
type: string;
|
|
20
|
-
input_kind: AdminFieldInputKind;
|
|
21
33
|
is_primary_key: boolean;
|
|
22
34
|
is_virtual: boolean;
|
|
23
|
-
has_choices: boolean;
|
|
24
35
|
is_relation: boolean;
|
|
25
|
-
is_relation_many: boolean;
|
|
26
36
|
is_sortable: boolean;
|
|
27
37
|
};
|
|
38
|
+
export type AdminCreateFormFieldMeta = AdminEditableFieldMeta & {
|
|
39
|
+
placeholder: string | null;
|
|
40
|
+
options: AdminFieldOptionMeta[];
|
|
41
|
+
auto_now: boolean;
|
|
42
|
+
};
|
|
43
|
+
export type AdminFormFieldMeta = AdminCreateFormFieldMeta;
|
|
28
44
|
export type AdminListFilterOptionMeta = {
|
|
29
45
|
value: string;
|
|
30
46
|
label: string;
|
|
@@ -43,10 +59,12 @@ export type AdminListFilterMeta = {
|
|
|
43
59
|
export type AdminBulkActionMeta = {
|
|
44
60
|
slug: string;
|
|
45
61
|
label: string;
|
|
62
|
+
form: AdminFormFieldMeta[] | null;
|
|
46
63
|
};
|
|
47
64
|
export type AdminObjectActionMeta = {
|
|
48
65
|
slug: string;
|
|
49
66
|
label: string;
|
|
67
|
+
form: AdminFormFieldMeta[] | null;
|
|
50
68
|
};
|
|
51
69
|
export type AdminModelMeta = {
|
|
52
70
|
locale: AdminLocale;
|
|
@@ -60,6 +78,7 @@ export type AdminModelMeta = {
|
|
|
60
78
|
list_fields: string[];
|
|
61
79
|
detail_fields: string[];
|
|
62
80
|
create_fields: string[];
|
|
81
|
+
create_form: AdminCreateFormFieldMeta[] | null;
|
|
63
82
|
update_fields: string[];
|
|
64
83
|
bulk_actions: AdminBulkActionMeta[];
|
|
65
84
|
object_actions: AdminObjectActionMeta[];
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { AdminFieldMeta, AdminLocale } from '@xladmin-core/types';
|
|
1
|
+
import type { AdminEditableFieldMeta, AdminFieldMeta, AdminLocale } from '@xladmin-core/types';
|
|
2
2
|
/**
|
|
3
3
|
* Готовит payload для create/patch так, чтобы nullable-поля можно было очищать,
|
|
4
4
|
* а служебные пустые поля вроде пароля не улетали в API без необходимости.
|
|
5
5
|
*/
|
|
6
|
-
export declare function buildAdminPayload(values: Record<string, unknown>, fields:
|
|
6
|
+
export declare function buildAdminPayload(values: Record<string, unknown>, fields: AdminEditableFieldMeta[]): Record<string, unknown>;
|
|
7
|
+
export declare function buildAdminFormInitialValues(fields: AdminEditableFieldMeta[], initialValues?: Record<string, unknown>): Record<string, unknown>;
|
|
7
8
|
type FormatAdminValueOptions = {
|
|
8
9
|
locale?: AdminLocale;
|
|
9
10
|
field?: Pick<AdminFieldMeta, 'input_kind' | 'type'>;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import type { AdminLocale } from '../types';
|
|
2
|
+
export declare function getMuiPickersLocaleText(locale: AdminLocale): {
|
|
3
|
+
previousMonth?: string | undefined;
|
|
4
|
+
nextMonth?: string | undefined;
|
|
5
|
+
calendarWeekNumberHeaderLabel?: string | undefined;
|
|
6
|
+
calendarWeekNumberHeaderText?: string | undefined;
|
|
7
|
+
calendarWeekNumberAriaLabelText?: ((weekNumber: number) => string) | undefined;
|
|
8
|
+
calendarWeekNumberText?: ((weekNumber: number) => string) | undefined;
|
|
9
|
+
openPreviousView?: string | undefined;
|
|
10
|
+
openNextView?: string | undefined;
|
|
11
|
+
calendarViewSwitchingButtonAriaLabel?: ((currentView: import("@mui/x-date-pickers").DateView) => string) | undefined;
|
|
12
|
+
start?: string | undefined;
|
|
13
|
+
end?: string | undefined;
|
|
14
|
+
startDate?: string | undefined;
|
|
15
|
+
startTime?: string | undefined;
|
|
16
|
+
endDate?: string | undefined;
|
|
17
|
+
endTime?: string | undefined;
|
|
18
|
+
cancelButtonLabel?: string | undefined;
|
|
19
|
+
clearButtonLabel?: string | undefined;
|
|
20
|
+
okButtonLabel?: string | undefined;
|
|
21
|
+
todayButtonLabel?: string | undefined;
|
|
22
|
+
nextStepButtonLabel?: string | undefined;
|
|
23
|
+
clockLabelText?: ((view: import("@mui/x-date-pickers").TimeView, formattedTime: string | null) => string) | undefined;
|
|
24
|
+
hoursClockNumberText?: ((hours: string) => string) | undefined;
|
|
25
|
+
minutesClockNumberText?: ((minutes: string) => string) | undefined;
|
|
26
|
+
secondsClockNumberText?: ((seconds: string) => string) | undefined;
|
|
27
|
+
selectViewText?: ((view: import("@mui/x-date-pickers/internals").TimeViewWithMeridiem) => string) | undefined;
|
|
28
|
+
openDatePickerDialogue?: ((formattedDate: string | null) => string) | undefined;
|
|
29
|
+
openTimePickerDialogue?: ((formattedTime: string | null) => string) | undefined;
|
|
30
|
+
openRangePickerDialogue?: ((formattedRange: string | null) => string) | undefined;
|
|
31
|
+
fieldClearLabel?: string | undefined;
|
|
32
|
+
timeTableLabel?: string | undefined;
|
|
33
|
+
dateTableLabel?: string | undefined;
|
|
34
|
+
fieldYearPlaceholder?: ((params: {
|
|
35
|
+
digitAmount: number;
|
|
36
|
+
format: string;
|
|
37
|
+
}) => string) | undefined;
|
|
38
|
+
fieldMonthPlaceholder?: ((params: {
|
|
39
|
+
contentType: import("@mui/x-date-pickers").FieldSectionContentType;
|
|
40
|
+
format: string;
|
|
41
|
+
}) => string) | undefined;
|
|
42
|
+
fieldDayPlaceholder?: ((params: {
|
|
43
|
+
format: string;
|
|
44
|
+
}) => string) | undefined;
|
|
45
|
+
fieldWeekDayPlaceholder?: ((params: {
|
|
46
|
+
contentType: import("@mui/x-date-pickers").FieldSectionContentType;
|
|
47
|
+
format: string;
|
|
48
|
+
}) => string) | undefined;
|
|
49
|
+
fieldHoursPlaceholder?: ((params: {
|
|
50
|
+
format: string;
|
|
51
|
+
}) => string) | undefined;
|
|
52
|
+
fieldMinutesPlaceholder?: ((params: {
|
|
53
|
+
format: string;
|
|
54
|
+
}) => string) | undefined;
|
|
55
|
+
fieldSecondsPlaceholder?: ((params: {
|
|
56
|
+
format: string;
|
|
57
|
+
}) => string) | undefined;
|
|
58
|
+
fieldMeridiemPlaceholder?: ((params: {
|
|
59
|
+
format: string;
|
|
60
|
+
}) => string) | undefined;
|
|
61
|
+
year?: string | undefined;
|
|
62
|
+
month?: string | undefined;
|
|
63
|
+
day?: string | undefined;
|
|
64
|
+
weekDay?: string | undefined;
|
|
65
|
+
hours?: string | undefined;
|
|
66
|
+
minutes?: string | undefined;
|
|
67
|
+
seconds?: string | undefined;
|
|
68
|
+
meridiem?: string | undefined;
|
|
69
|
+
empty?: string | undefined;
|
|
70
|
+
datePickerToolbarTitle?: string | undefined;
|
|
71
|
+
timePickerToolbarTitle?: string | undefined;
|
|
72
|
+
dateTimePickerToolbarTitle?: string | undefined;
|
|
73
|
+
dateRangePickerToolbarTitle?: string | undefined;
|
|
74
|
+
timeRangePickerToolbarTitle?: string | undefined;
|
|
75
|
+
} | {
|
|
76
|
+
previousMonth?: string | undefined;
|
|
77
|
+
nextMonth?: string | undefined;
|
|
78
|
+
calendarWeekNumberHeaderLabel?: string | undefined;
|
|
79
|
+
calendarWeekNumberHeaderText?: string | undefined;
|
|
80
|
+
calendarWeekNumberAriaLabelText?: ((weekNumber: number) => string) | undefined;
|
|
81
|
+
calendarWeekNumberText?: ((weekNumber: number) => string) | undefined;
|
|
82
|
+
openPreviousView?: string | undefined;
|
|
83
|
+
openNextView?: string | undefined;
|
|
84
|
+
calendarViewSwitchingButtonAriaLabel?: ((currentView: import("@mui/x-date-pickers").DateView) => string) | undefined;
|
|
85
|
+
start?: string | undefined;
|
|
86
|
+
end?: string | undefined;
|
|
87
|
+
startDate?: string | undefined;
|
|
88
|
+
startTime?: string | undefined;
|
|
89
|
+
endDate?: string | undefined;
|
|
90
|
+
endTime?: string | undefined;
|
|
91
|
+
cancelButtonLabel?: string | undefined;
|
|
92
|
+
clearButtonLabel?: string | undefined;
|
|
93
|
+
okButtonLabel?: string | undefined;
|
|
94
|
+
todayButtonLabel?: string | undefined;
|
|
95
|
+
nextStepButtonLabel?: string | undefined;
|
|
96
|
+
clockLabelText?: ((view: import("@mui/x-date-pickers").TimeView, formattedTime: string | null) => string) | undefined;
|
|
97
|
+
hoursClockNumberText?: ((hours: string) => string) | undefined;
|
|
98
|
+
minutesClockNumberText?: ((minutes: string) => string) | undefined;
|
|
99
|
+
secondsClockNumberText?: ((seconds: string) => string) | undefined;
|
|
100
|
+
selectViewText?: ((view: import("@mui/x-date-pickers/internals").TimeViewWithMeridiem) => string) | undefined;
|
|
101
|
+
openDatePickerDialogue?: ((formattedDate: string | null) => string) | undefined;
|
|
102
|
+
openTimePickerDialogue?: ((formattedTime: string | null) => string) | undefined;
|
|
103
|
+
openRangePickerDialogue?: ((formattedRange: string | null) => string) | undefined;
|
|
104
|
+
fieldClearLabel?: string | undefined;
|
|
105
|
+
timeTableLabel?: string | undefined;
|
|
106
|
+
dateTableLabel?: string | undefined;
|
|
107
|
+
fieldYearPlaceholder?: ((params: {
|
|
108
|
+
digitAmount: number;
|
|
109
|
+
format: string;
|
|
110
|
+
}) => string) | undefined;
|
|
111
|
+
fieldMonthPlaceholder?: ((params: {
|
|
112
|
+
contentType: import("@mui/x-date-pickers").FieldSectionContentType;
|
|
113
|
+
format: string;
|
|
114
|
+
}) => string) | undefined;
|
|
115
|
+
fieldDayPlaceholder?: ((params: {
|
|
116
|
+
format: string;
|
|
117
|
+
}) => string) | undefined;
|
|
118
|
+
fieldWeekDayPlaceholder?: ((params: {
|
|
119
|
+
contentType: import("@mui/x-date-pickers").FieldSectionContentType;
|
|
120
|
+
format: string;
|
|
121
|
+
}) => string) | undefined;
|
|
122
|
+
fieldHoursPlaceholder?: ((params: {
|
|
123
|
+
format: string;
|
|
124
|
+
}) => string) | undefined;
|
|
125
|
+
fieldMinutesPlaceholder?: ((params: {
|
|
126
|
+
format: string;
|
|
127
|
+
}) => string) | undefined;
|
|
128
|
+
fieldSecondsPlaceholder?: ((params: {
|
|
129
|
+
format: string;
|
|
130
|
+
}) => string) | undefined;
|
|
131
|
+
fieldMeridiemPlaceholder?: ((params: {
|
|
132
|
+
format: string;
|
|
133
|
+
}) => string) | undefined;
|
|
134
|
+
year?: string | undefined;
|
|
135
|
+
month?: string | undefined;
|
|
136
|
+
day?: string | undefined;
|
|
137
|
+
weekDay?: string | undefined;
|
|
138
|
+
hours?: string | undefined;
|
|
139
|
+
minutes?: string | undefined;
|
|
140
|
+
seconds?: string | undefined;
|
|
141
|
+
meridiem?: string | undefined;
|
|
142
|
+
empty?: string | undefined;
|
|
143
|
+
datePickerToolbarTitle?: string | undefined;
|
|
144
|
+
timePickerToolbarTitle?: string | undefined;
|
|
145
|
+
dateTimePickerToolbarTitle?: string | undefined;
|
|
146
|
+
dateRangePickerToolbarTitle?: string | undefined;
|
|
147
|
+
timeRangePickerToolbarTitle?: string | undefined;
|
|
148
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xladmin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Framework-agnostic React + MUI admin frontend for xladmin.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"@emotion/react": ">=11.14.0 <12.0.0",
|
|
40
40
|
"@emotion/styled": ">=11.14.0 <12.0.0",
|
|
41
|
-
"@mui/icons-material": ">=
|
|
42
|
-
"@mui/material": ">=
|
|
43
|
-
"@mui/x-date-pickers": ">=
|
|
41
|
+
"@mui/icons-material": ">=9.0.0 <10.0.0",
|
|
42
|
+
"@mui/material": ">=9.0.0 <10.0.0",
|
|
43
|
+
"@mui/x-date-pickers": ">=9.0.0 <10.0.0",
|
|
44
44
|
"axios": ">=1.0.0 <2.0.0",
|
|
45
45
|
"dayjs": ">=1.11.0 <2.0.0",
|
|
46
46
|
"react": ">=19.0.0 <20.0.0",
|