adminizer 4.1.0-build.13 → 4.1.0-build.15
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/assets/{VanillaJSONEditor-BGC0iJ01.js → VanillaJSONEditor-D-Lx670g.js} +2 -2
- package/assets/add-BP_u3Tjl.js +1 -0
- package/assets/add-form-nffmiYTh.js +1 -0
- package/assets/add-group-D4vcHlm-.js +1 -0
- package/assets/{add-group-form-BUM07NJS.js → add-group-form-gNJW11-q.js} +1 -1
- package/assets/add-user-DWh3Nas0.js +1 -0
- package/assets/add-user-form-BJ0FsZYJ.js +1 -0
- package/assets/{app-BYldMVaW.css → app-C3OdwOHy.css} +1 -1
- package/assets/{app-layout-YPlKN2l5.js → app-layout-DYsRFUuP.js} +1 -1
- package/assets/{app-shell-D6Uf68EA.js → app-shell-Dd9Eknik.js} +1 -1
- package/assets/app-sidebar-BOmu6-Sl.js +1 -0
- package/assets/{app-sidebar-header-BTKq0Dr0.js → app-sidebar-header-CoXSzWxk.js} +1 -1
- package/assets/app.js +14 -14
- package/assets/{breadcrumbs-B4LOvzuL.js → breadcrumbs-BmAq4fHT.js} +1 -1
- package/assets/{button-CTOOfwvn.js → button-C9B_5Jf_.js} +1 -1
- package/assets/checkbox-Fg27sL_1.js +1 -0
- package/assets/{compiler-runtime-tM4jBQ-T.js → compiler-runtime-hB6dAw2d.js} +1 -1
- package/assets/dashboard-BOltB2Hq.css +1 -0
- package/assets/dashboard-Ddh74NBQ.js +3 -0
- package/assets/{date-picker-DdGpxs8q.js → date-picker-DI1cCO7K.js} +1 -1
- package/assets/{dropdown-menu-CsGmdVIn.js → dropdown-menu-Bhj17ENm.js} +1 -1
- package/assets/{field-renderer-Q3ajtfjk.js → field-renderer-DVHZF6HS.js} +3 -3
- package/assets/form-BgWdwvz1.js +1 -0
- package/assets/form-DgtErfln.js +1 -0
- package/assets/{geo-json-CFYMCghL.js → geo-json-BjiyTtMu.js} +1 -1
- package/assets/{handsontable-BCnjOpBr.js → handsontable-4mjU_b0n.js} +1 -1
- package/assets/home-CHntBHJa.js +2 -0
- package/assets/{icon-Bz9BMaD0.js → icon-Dt0vBgDO.js} +1 -1
- package/assets/index-B8BS9wMC.js +1 -0
- package/assets/{index-Mx04mBJl.js → index-BC0yfOHo.js} +1 -1
- package/assets/{index-m5itSoCR.js → index-BKCgnGj_.js} +1 -1
- package/assets/{index-C5OL14ES.js → index-BbXEMx9n.js} +1 -1
- package/assets/{index-DnbQEoxZ.js → index-BykbU6Ee.js} +1 -1
- package/assets/index-CaJgc5EZ.js +1 -0
- package/assets/{index-Cb_qrizV.js → index-Cgp8OfuI.js} +1 -1
- package/assets/{index-CGjCQBqR.js → index-Cw5o84pO.js} +1 -1
- package/assets/index-DrWfGwtf.js +1 -0
- package/assets/{init-user-CotD_o5_.js → init-user-JfCKJ5Ce.js} +1 -1
- package/assets/{input-DF7Ue23C.js → input-CvRbIbk4.js} +1 -1
- package/assets/{input-error-BBygona6.js → input-error-DMK7cAt7.js} +1 -1
- package/assets/{label-C2tlefOv.js → label-CSLFe9Bz.js} +1 -1
- package/assets/list-B2Oa5O_Q.js +1 -0
- package/assets/{list-table-Cz8Wgfsa.js → list-table-DA9MhywL.js} +2 -2
- package/assets/{login-B7br6gt5.js → login-DQwGtdis.js} +1 -1
- package/assets/manifest.json +588 -568
- package/assets/{material-icon-CItZiB53.js → material-icon-BJg8o_fs.js} +1 -1
- package/assets/module-DWXp59Vg.js +1 -0
- package/assets/{monaco-editor-DqAqwxw4.js → monaco-editor-CJs0_GlD.js} +1 -1
- package/assets/{multi-select-CDlcaNFy.js → multi-select-BvRpAW8r.js} +1 -1
- package/assets/{nav-footer-CXKG3O4K.js → nav-footer-Bs4dmN1d.js} +1 -1
- package/assets/{nav-main-ByHRr3yf.js → nav-main-Bq3IMk4C.js} +1 -1
- package/assets/{nav-user-BVRKiqm-.js → nav-user-CbB22J5O.js} +1 -1
- package/assets/{pagination-render-CihJ7J2u.js → pagination-render-DuXDDbC_.js} +1 -1
- package/assets/{popover-_WN_Lj46.js → popover-DtoGI2b1.js} +1 -1
- package/assets/{register-CpRFo88B.js → register-BSogVF0h.js} +1 -1
- package/assets/{select-DYffGc49.js → select-BWepUw-9.js} +1 -1
- package/assets/{sidebar-B9HagQ6H.js → sidebar-CAHsHdjM.js} +2 -2
- package/assets/skeleton-COOcAA8f.js +1 -0
- package/assets/{sonner-Dzckw3U3.js → sonner-BI0IFOQN.js} +1 -1
- package/assets/{toast-editor-ZLOtXFu5.js → toast-editor-CMK7QtF1.js} +82 -82
- package/assets/{tooltip-CWVAD5oF.js → tooltip-DHwpLKOI.js} +1 -1
- package/assets/{use-appearance-Co6mO0dV.js → use-appearance-DRfIqTgw.js} +1 -1
- package/assets/{use-window-size-B8l6Bpkf.js → use-window-size-h0Sh_NvX.js} +1 -1
- package/assets/{user-info-DA4KTAOF.js → user-info-DFrmpJ4y.js} +1 -1
- package/assets/{user-menu-content-Biwi4u9j.js → user-menu-content-DPXQdERj.js} +1 -1
- package/assets/welcome-B4WCIXKf.js +1 -0
- package/controllers/add.js +1 -1
- package/controllers/dashboard.js +15 -1
- package/controllers/edit.js +1 -1
- package/controllers/getAllWidgets.js +1 -1
- package/controllers/list.js +1 -1
- package/controllers/navigation/edit.js +1 -1
- package/controllers/remove.js +1 -1
- package/controllers/view.js +1 -1
- package/controllers/widgetsDB.js +2 -2
- package/helpers/accessRightsHelper.js +8 -2
- package/helpers/controllerHelper.js +1 -1
- package/helpers/fieldsHelper.js +1 -1
- package/helpers/inertiaAddHelper.js +1 -1
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/interfaces/adminpanelConfig.d.ts +2 -19
- package/interfaces/global.d.ts +3 -0
- package/interfaces/types.d.ts +1 -1
- package/lib/Adminizer.js +9 -5
- package/lib/catalog/Navigation.js +0 -1
- package/lib/media-manager/Items.js +0 -3
- package/lib/v4/DataAccessor.d.ts +3 -1
- package/lib/v4/DataAccessor.js +23 -9
- package/lib/v4/I18n.js +2 -0
- package/lib/v4/model/adapter/sequelize.js +8 -1
- package/lib/v4/model/adapter/waterline.js +5 -2
- package/lib/widgets/abstractAction.d.ts +1 -1
- package/lib/widgets/abstractCustom.d.ts +27 -12
- package/lib/widgets/abstractCustom.js +8 -2
- package/lib/widgets/abstractInfo.d.ts +1 -1
- package/lib/widgets/abstractInfo.js +1 -1
- package/lib/widgets/abstractLink.d.ts +1 -0
- package/lib/widgets/abstractSwitch.d.ts +1 -1
- package/lib/widgets/abstractWidgetBase.d.ts +1 -1
- package/lib/widgets/widgetHandler.d.ts +26 -3
- package/lib/widgets/widgetHandler.js +25 -25
- package/models/UserAP.d.ts +5 -2
- package/package.json +14 -8
- package/system/Router.js +6 -14
- package/system/bindAccessRights.js +0 -4
- package/system/bindDev.js +1 -0
- package/system/bindMediaManager.js +0 -1
- package/system/bindModels.js +7 -2
- package/system/bindNavigation.js +0 -1
- package/translations/ru.json +17 -8
- package/assets/add-EOP63mij.js +0 -1
- package/assets/add-form-DofA75xF.js +0 -1
- package/assets/add-group-CbKcu8bN.js +0 -1
- package/assets/add-user-FQ_0_L3C.js +0 -1
- package/assets/add-user-form-D1f_2noB.js +0 -1
- package/assets/app-sidebar-mh83eSsH.js +0 -1
- package/assets/checkbox-D9ub-v0l.js +0 -1
- package/assets/dashboard-BiLSHuF2.js +0 -1
- package/assets/form-D2gvtdQt.js +0 -1
- package/assets/form-EPWwr8yD.js +0 -1
- package/assets/home-Co9WBSjN.js +0 -2
- package/assets/index-DEzdKGnS.js +0 -1
- package/assets/index-DUXJYtOc.js +0 -1
- package/assets/index-Dllsp4Rk.js +0 -1
- package/assets/list-BrJBbAVm.js +0 -1
- package/assets/module-BA_EenoK.js +0 -1
- package/assets/welcome-C1kRbbWq.js +0 -1
- package/controllers/processInstallFinalize.d.ts +0 -1
- package/controllers/processInstallFinalize.js +0 -16
- package/controllers/processInstallStep.d.ts +0 -0
- package/controllers/processInstallStep.js +0 -122
- package/lib/installStepper/InstallStepAbstract.d.ts +0 -52
- package/lib/installStepper/InstallStepAbstract.js +0 -69
- package/lib/installStepper/finalizeStep.d.ts +0 -21
- package/lib/installStepper/finalizeStep.js +0 -48
- package/lib/installStepper/installStepper.d.ts +0 -40
- package/lib/installStepper/installStepper.js +0 -195
- package/system/bindInstallStepper.d.ts +0 -2
- package/system/bindInstallStepper.js +0 -23
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import BaseWidget from "./abstractWidgetBase";
|
|
2
2
|
export default abstract class InfoBase extends BaseWidget {
|
|
3
3
|
readonly widgetType = "info";
|
|
4
|
-
/** Widget background css
|
|
4
|
+
/** Widget background css color */
|
|
5
5
|
readonly backgroundCSS: string;
|
|
6
6
|
/** Widget size */
|
|
7
7
|
readonly size: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import BaseWidget from "./abstractWidgetBase";
|
|
2
2
|
export default abstract class SwitchBase extends BaseWidget {
|
|
3
3
|
readonly widgetType = "switcher";
|
|
4
|
-
/** Widget background css
|
|
4
|
+
/** Widget background css color */
|
|
5
5
|
abstract readonly backgroundCSS: string | null;
|
|
6
6
|
/** Get current state */
|
|
7
7
|
abstract getState(): Promise<boolean>;
|
|
@@ -6,6 +6,7 @@ import CustomBase from "./abstractCustom";
|
|
|
6
6
|
import { AdminpanelIcon } from "../../interfaces/adminpanelConfig";
|
|
7
7
|
import { Adminizer } from "../Adminizer";
|
|
8
8
|
import { UserAP } from "models/UserAP";
|
|
9
|
+
import { I18n } from "../v4/I18n";
|
|
9
10
|
export type WidgetType = (SwitcherBase | InfoBase | ActionBase | LinkBase | CustomBase);
|
|
10
11
|
export interface WidgetConfig {
|
|
11
12
|
id: string;
|
|
@@ -17,6 +18,7 @@ export interface WidgetConfig {
|
|
|
17
18
|
name: string;
|
|
18
19
|
backgroundCSS: string;
|
|
19
20
|
scriptUrl?: string;
|
|
21
|
+
linkType?: 'self' | 'blank';
|
|
20
22
|
constructorName?: string;
|
|
21
23
|
constructorOption?: any;
|
|
22
24
|
size?: {
|
|
@@ -26,6 +28,21 @@ export interface WidgetConfig {
|
|
|
26
28
|
added?: boolean;
|
|
27
29
|
hideAdminPanelUI?: boolean;
|
|
28
30
|
}
|
|
31
|
+
export interface WidgetLayoutItem {
|
|
32
|
+
x: number;
|
|
33
|
+
y: number;
|
|
34
|
+
w: number;
|
|
35
|
+
h: number;
|
|
36
|
+
i: string;
|
|
37
|
+
id: string;
|
|
38
|
+
}
|
|
39
|
+
export interface WidgetsLayouts {
|
|
40
|
+
lg: WidgetLayoutItem[];
|
|
41
|
+
md: WidgetLayoutItem[];
|
|
42
|
+
sm: WidgetLayoutItem[];
|
|
43
|
+
xs: WidgetLayoutItem[];
|
|
44
|
+
xxs: WidgetLayoutItem[];
|
|
45
|
+
}
|
|
29
46
|
export declare class WidgetHandler {
|
|
30
47
|
private widgets;
|
|
31
48
|
adminizer: Adminizer;
|
|
@@ -33,7 +50,13 @@ export declare class WidgetHandler {
|
|
|
33
50
|
add(widget: WidgetType): void;
|
|
34
51
|
getById(id: string): WidgetType | undefined;
|
|
35
52
|
removeById(id: string): void;
|
|
36
|
-
getAll(user: UserAP): Promise<WidgetConfig[]>;
|
|
37
|
-
getWidgetsDB(id: number, auth: boolean): Promise<
|
|
38
|
-
|
|
53
|
+
getAll(user: UserAP, i18n: I18n): Promise<WidgetConfig[]>;
|
|
54
|
+
getWidgetsDB(id: number, auth: boolean, i18n: I18n): Promise<{
|
|
55
|
+
widgets: WidgetConfig[];
|
|
56
|
+
layout: WidgetsLayouts;
|
|
57
|
+
}>;
|
|
58
|
+
setWidgetsDB(id: number, body: {
|
|
59
|
+
widgets: WidgetConfig[];
|
|
60
|
+
layout: WidgetLayoutItem[];
|
|
61
|
+
}, auth: boolean): Promise<number>;
|
|
39
62
|
}
|
|
@@ -3,6 +3,7 @@ import InfoBase from "./abstractInfo";
|
|
|
3
3
|
import ActionBase from "./abstractAction";
|
|
4
4
|
import LinkBase from "./abstractLink";
|
|
5
5
|
import CustomBase from "./abstractCustom";
|
|
6
|
+
import * as process from "node:process";
|
|
6
7
|
export class WidgetHandler {
|
|
7
8
|
widgets = [];
|
|
8
9
|
adminizer;
|
|
@@ -34,7 +35,7 @@ export class WidgetHandler {
|
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
|
-
getAll(user) {
|
|
38
|
+
getAll(user, i18n) {
|
|
38
39
|
let widgets = [];
|
|
39
40
|
if (this.widgets.length) {
|
|
40
41
|
let id_key = 0;
|
|
@@ -45,9 +46,9 @@ export class WidgetHandler {
|
|
|
45
46
|
id: `${widget.id}__${id_key}`,
|
|
46
47
|
type: widget.widgetType,
|
|
47
48
|
api: `${this.adminizer.config.routePrefix}/widgets-switch/${widget.id}`,
|
|
48
|
-
description: widget.description,
|
|
49
|
+
description: i18n.__(widget.description),
|
|
49
50
|
icon: widget.icon,
|
|
50
|
-
name: widget.name,
|
|
51
|
+
name: i18n.__(widget.name),
|
|
51
52
|
backgroundCSS: widget.backgroundCSS ?? null,
|
|
52
53
|
size: widget.size ?? null
|
|
53
54
|
});
|
|
@@ -59,9 +60,9 @@ export class WidgetHandler {
|
|
|
59
60
|
id: `${widget.id}__${id_key}`,
|
|
60
61
|
type: widget.widgetType,
|
|
61
62
|
api: `${this.adminizer.config.routePrefix}/widgets-info/${widget.id}`,
|
|
62
|
-
description: widget.description,
|
|
63
|
+
description: i18n.__(widget.description),
|
|
63
64
|
icon: widget.icon,
|
|
64
|
-
name: widget.name,
|
|
65
|
+
name: i18n.__(widget.name),
|
|
65
66
|
backgroundCSS: widget.backgroundCSS ?? null,
|
|
66
67
|
size: widget.size ?? null
|
|
67
68
|
});
|
|
@@ -73,9 +74,9 @@ export class WidgetHandler {
|
|
|
73
74
|
id: `${widget.id}__${id_key}`,
|
|
74
75
|
type: widget.widgetType,
|
|
75
76
|
api: `${this.adminizer.config.routePrefix}/widgets-action/${widget.id}`,
|
|
76
|
-
description: widget.description,
|
|
77
|
+
description: i18n.__(widget.description),
|
|
77
78
|
icon: widget.icon,
|
|
78
|
-
name: widget.name,
|
|
79
|
+
name: i18n.__(widget.name),
|
|
79
80
|
backgroundCSS: widget.backgroundCSS ?? null,
|
|
80
81
|
size: widget.size ?? null
|
|
81
82
|
});
|
|
@@ -86,10 +87,11 @@ export class WidgetHandler {
|
|
|
86
87
|
let links_id_key = 0;
|
|
87
88
|
for (const link of widget.links) {
|
|
88
89
|
widgets.push({
|
|
89
|
-
name: link.name,
|
|
90
|
+
name: i18n.__(link.name),
|
|
90
91
|
id: `${widget.id}__${links_id_key}`,
|
|
91
92
|
type: 'link',
|
|
92
|
-
|
|
93
|
+
linkType: link.linkType,
|
|
94
|
+
description: i18n.__(link.description),
|
|
93
95
|
link: link.link,
|
|
94
96
|
icon: link.icon,
|
|
95
97
|
backgroundCSS: link.backgroundCSS
|
|
@@ -104,15 +106,12 @@ export class WidgetHandler {
|
|
|
104
106
|
id: `${widget.id}_${id_key}`,
|
|
105
107
|
type: widget.widgetType,
|
|
106
108
|
api: `${this.adminizer.config.routePrefix}/widgets-custom/${widget.id}`,
|
|
107
|
-
description: widget.description,
|
|
109
|
+
description: i18n.__(widget.description),
|
|
108
110
|
icon: widget.icon,
|
|
109
|
-
name: widget.name,
|
|
111
|
+
name: i18n.__(widget.name),
|
|
110
112
|
backgroundCSS: widget.backgroundCSS ?? null,
|
|
111
113
|
size: widget.size ?? null,
|
|
112
|
-
scriptUrl: widget.
|
|
113
|
-
constructorName: widget.constructorName,
|
|
114
|
-
constructorOption: widget.constructorOption,
|
|
115
|
-
hideAdminPanelUI: widget.hideAdminPanelUI
|
|
114
|
+
scriptUrl: process.env.VITE_ENV === 'dev' ? widget.jsPath.dev : widget.jsPath.production,
|
|
116
115
|
});
|
|
117
116
|
}
|
|
118
117
|
}
|
|
@@ -123,9 +122,9 @@ export class WidgetHandler {
|
|
|
123
122
|
}
|
|
124
123
|
return Promise.resolve(widgets);
|
|
125
124
|
}
|
|
126
|
-
async getWidgetsDB(id, auth) {
|
|
125
|
+
async getWidgetsDB(id, auth, i18n) {
|
|
127
126
|
let user;
|
|
128
|
-
let widgets;
|
|
127
|
+
let result = { widgets: [], layout: { lg: [], md: [], sm: [], xs: [], xxs: [] } };
|
|
129
128
|
if (!auth) {
|
|
130
129
|
// TODO refactor CRUD functions for DataAccessor usage
|
|
131
130
|
user = await this.adminizer.modelHandler.model.get("UserAP")?.["_findOne"]({ login: this.adminizer.config.administrator?.login ?? 'admin' });
|
|
@@ -134,11 +133,11 @@ export class WidgetHandler {
|
|
|
134
133
|
// TODO refactor CRUD functions for DataAccessor usage
|
|
135
134
|
user = await this.adminizer.modelHandler.model.get("UserAP")?.["_findOne"]({ id: id });
|
|
136
135
|
}
|
|
137
|
-
if (!user || !user.widgets || user.widgets.length === 0) {
|
|
136
|
+
if (!user || !user.widgets || user.widgets.widgets.length === 0) {
|
|
138
137
|
if (this.adminizer.config.dashboard && typeof this.adminizer.config.dashboard !== "boolean" && this.adminizer.config.dashboard.defaultWidgets) {
|
|
139
138
|
let defaultWidgets = this.adminizer.config.dashboard.defaultWidgets;
|
|
140
|
-
widgets = await this.getAll(user);
|
|
141
|
-
widgets.forEach(widget => {
|
|
139
|
+
result.widgets = await this.getAll(user, i18n);
|
|
140
|
+
result.widgets.forEach(widget => {
|
|
142
141
|
if (defaultWidgets.includes(widget.id.split("__")[0])) {
|
|
143
142
|
widget.added = true;
|
|
144
143
|
}
|
|
@@ -146,19 +145,20 @@ export class WidgetHandler {
|
|
|
146
145
|
}
|
|
147
146
|
}
|
|
148
147
|
else {
|
|
149
|
-
widgets = user.widgets;
|
|
148
|
+
result.widgets = user.widgets.widgets;
|
|
149
|
+
result.layout = user.widgets.layout;
|
|
150
150
|
}
|
|
151
|
-
return
|
|
151
|
+
return result;
|
|
152
152
|
}
|
|
153
|
-
async setWidgetsDB(id,
|
|
153
|
+
async setWidgetsDB(id, body, auth) {
|
|
154
154
|
if (!auth) {
|
|
155
155
|
// TODO refactor CRUD functions for DataAccessor usage
|
|
156
|
-
let updatedUser = await this.adminizer.modelHandler.model.get("UserAP")?.["_updateOne"]({ login: this.adminizer.config.administrator?.login ?? 'admin' }, { widgets:
|
|
156
|
+
let updatedUser = await this.adminizer.modelHandler.model.get("UserAP")?.["_updateOne"]({ login: this.adminizer.config.administrator?.login ?? 'admin' }, { widgets: body });
|
|
157
157
|
return updatedUser.id;
|
|
158
158
|
}
|
|
159
159
|
else {
|
|
160
160
|
// TODO refactor CRUD functions for DataAccessor usage
|
|
161
|
-
let updatedUser = await this.adminizer.modelHandler.model.get("UserAP")?.["_updateOne"]({ id: id }, { widgets:
|
|
161
|
+
let updatedUser = await this.adminizer.modelHandler.model.get("UserAP")?.["_updateOne"]({ id: id }, { widgets: body });
|
|
162
162
|
return updatedUser.id;
|
|
163
163
|
}
|
|
164
164
|
}
|
package/models/UserAP.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WidgetConfig } from "lib/widgets/widgetHandler";
|
|
1
|
+
import { WidgetConfig, WidgetsLayouts } from "lib/widgets/widgetHandler";
|
|
2
2
|
import { GroupAP } from "./GroupAP";
|
|
3
3
|
declare const _default: {
|
|
4
4
|
id: {
|
|
@@ -68,6 +68,9 @@ export interface UserAP {
|
|
|
68
68
|
isActive?: boolean;
|
|
69
69
|
isAdministrator?: boolean;
|
|
70
70
|
groups?: GroupAP[];
|
|
71
|
-
widgets?:
|
|
71
|
+
widgets?: {
|
|
72
|
+
widgets: WidgetConfig[];
|
|
73
|
+
layout: WidgetsLayouts;
|
|
74
|
+
};
|
|
72
75
|
isConfirmed?: boolean;
|
|
73
76
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adminizer",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "4.1.0-build.
|
|
4
|
+
"version": "4.1.0-build.15",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"test": "
|
|
8
|
-
"start": "tsx --tsconfig ./fixture/tsconfig.json ./fixture/index.ts",
|
|
7
|
+
"test": "vitest --reporter verbose",
|
|
8
|
+
"start": "cross-env NO_SEED_DATA=true ORM=sequelize tsx --tsconfig ./fixture/tsconfig.json ./fixture/index.ts",
|
|
9
9
|
"dev": "cross-env VITE_ENV=dev tsx watch --tsconfig ./fixture/tsconfig.json ./fixture/index.ts",
|
|
10
|
+
"dev:sequelize": "cross-env VITE_ENV=dev NO_SEED_DATA=true ORM=sequelize tsx watch --tsconfig ./fixture/tsconfig.json ./fixture/index.ts",
|
|
10
11
|
"build:assets": "vite build",
|
|
11
12
|
"compile:backend": "tsc -p src/tsconfig.json",
|
|
12
13
|
"watch:backend": "tsc -w -p src/tsconfig.json",
|
|
@@ -17,16 +18,15 @@
|
|
|
17
18
|
"build:react-quill": "vite build --config modules/controls/wysiwyg/vite.config.react-quill.ts",
|
|
18
19
|
"copy:modules": "node copy-modules.js",
|
|
19
20
|
"build:assets:modules": "npm run build:assets && npm run copy:modules",
|
|
20
|
-
"start:seed": "cross-env
|
|
21
|
+
"start:seed": "cross-env ORM=sequelize tsx --tsconfig ./fixture/tsconfig.json ./fixture/index.ts",
|
|
21
22
|
"demo:build": "npm run copy:backend && npm run compile:backend && npm run build:assets && npm run copy:modules",
|
|
22
|
-
"demo": "cross-env
|
|
23
|
+
"demo": "cross-env ORM=sequelize tsx --tsconfig ./fixture/tsconfig.json ./fixture/index.ts"
|
|
23
24
|
},
|
|
24
25
|
"keywords": [],
|
|
25
26
|
"author": "",
|
|
26
27
|
"license": "MIT",
|
|
27
28
|
"description": "",
|
|
28
29
|
"dependencies": {
|
|
29
|
-
"@radix-ui/react-menubar": "^1.1.12",
|
|
30
30
|
"body-parser": "^1.20.3",
|
|
31
31
|
"chalk": "^5.4.1",
|
|
32
32
|
"cmdk": "^1.1.1",
|
|
@@ -39,7 +39,6 @@
|
|
|
39
39
|
"express": "^4.21.2",
|
|
40
40
|
"express-session": "^1.18.1",
|
|
41
41
|
"jsonwebtoken": "^9.0.2",
|
|
42
|
-
"ky": "^1.8.0",
|
|
43
42
|
"multer": "^1.4.5-lts.1",
|
|
44
43
|
"next-themes": "^0.4.6",
|
|
45
44
|
"password-hash": "^1.2.2",
|
|
@@ -50,6 +49,7 @@
|
|
|
50
49
|
"winston": "^3.17.0"
|
|
51
50
|
},
|
|
52
51
|
"devDependencies": {
|
|
52
|
+
"@babel/plugin-proposal-decorators": "^7.27.1",
|
|
53
53
|
"@ckeditor/ckeditor5-react": "^9.5.0",
|
|
54
54
|
"@faker-js/faker": "^9.7.0",
|
|
55
55
|
"@handsontable/react": "^15.2.0",
|
|
@@ -62,6 +62,9 @@
|
|
|
62
62
|
"@radix-ui/react-dropdown-menu": "^2.1.6",
|
|
63
63
|
"@radix-ui/react-label": "^2.1.2",
|
|
64
64
|
"@radix-ui/react-popover": "^1.1.7",
|
|
65
|
+
"@radix-ui/react-menubar": "^1.1.12",
|
|
66
|
+
"@radix-ui/react-portal": "^1.1.6",
|
|
67
|
+
"@radix-ui/react-switch": "^1.2.4",
|
|
65
68
|
"@radix-ui/react-select": "^2.1.6",
|
|
66
69
|
"@radix-ui/react-separator": "^1.1.3",
|
|
67
70
|
"@radix-ui/react-slider": "^1.2.3",
|
|
@@ -84,6 +87,7 @@
|
|
|
84
87
|
"@types/password-hash": "^1.2.24",
|
|
85
88
|
"@types/react": "^19.0.3",
|
|
86
89
|
"@types/react-dom": "^19.0.2",
|
|
90
|
+
"@types/react-grid-layout": "^1.3.5",
|
|
87
91
|
"@types/sprintf-js": "^1.1.4",
|
|
88
92
|
"@types/uuid": "^10.0.0",
|
|
89
93
|
"@types/waterline": "^0.13.9",
|
|
@@ -103,6 +107,7 @@
|
|
|
103
107
|
"react": "^19.0.0",
|
|
104
108
|
"react-day-picker": "^8.10.1",
|
|
105
109
|
"react-dom": "^19.0.0",
|
|
110
|
+
"react-grid-layout": "^1.5.1",
|
|
106
111
|
"react-intersection-observer": "^9.16.0",
|
|
107
112
|
"react-leaflet": "^5.0.0",
|
|
108
113
|
"react-quill-new": "^3.4.6",
|
|
@@ -123,6 +128,7 @@
|
|
|
123
128
|
"vanilla-jsoneditor": "^3.1.1",
|
|
124
129
|
"vite": "^6.1.0",
|
|
125
130
|
"vite-plugin-externals": "^0.6.2",
|
|
126
|
-
"vite-plugin-full-reload": "^1.2.0"
|
|
131
|
+
"vite-plugin-full-reload": "^1.2.0",
|
|
132
|
+
"vitest": "^3.0.7"
|
|
127
133
|
}
|
|
128
134
|
}
|
package/system/Router.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// import _processInstallStep from "../controllers/processInstallStep";
|
|
2
|
-
// import _processInstallFinalize from "../controllers/processInstallFinalize";
|
|
3
1
|
import _dashboard from "../controllers/dashboard";
|
|
4
2
|
import _welcome from "../controllers/welcome";
|
|
5
3
|
import _list from "../controllers/list";
|
|
@@ -38,33 +36,27 @@ export default class Router {
|
|
|
38
36
|
/**
|
|
39
37
|
* Widgets All
|
|
40
38
|
*/
|
|
41
|
-
adminizer.app.all(
|
|
39
|
+
adminizer.app.all(`${adminizer.config.routePrefix}/widgets-get-all`, adminizer.policyManager.bindPolicies(policies, _getAllWidgets));
|
|
42
40
|
/**
|
|
43
41
|
* Widgets All from DB
|
|
44
42
|
*/
|
|
45
|
-
adminizer.app.all(
|
|
43
|
+
adminizer.app.all(`${adminizer.config.routePrefix}/widgets-get-all-db`, adminizer.policyManager.bindPolicies(policies, _widgetsDB));
|
|
46
44
|
/**
|
|
47
45
|
* Widgets Switch
|
|
48
46
|
*/
|
|
49
|
-
adminizer.app.all(
|
|
47
|
+
adminizer.app.all(`${adminizer.config.routePrefix}/widgets-switch/:widgetId`, adminizer.policyManager.bindPolicies(policies, widgetSwitchController));
|
|
50
48
|
/**
|
|
51
49
|
* Widgets Info
|
|
52
50
|
*/
|
|
53
|
-
adminizer.app.all(
|
|
51
|
+
adminizer.app.all(`${adminizer.config.routePrefix}/widgets-info/:widgetId`, adminizer.policyManager.bindPolicies(policies, widgetInfoController));
|
|
54
52
|
/**
|
|
55
53
|
* Widgets Action
|
|
56
54
|
*/
|
|
57
|
-
adminizer.app.all(
|
|
55
|
+
adminizer.app.all(`${adminizer.config.routePrefix}/widgets-action/:widgetId`, adminizer.policyManager.bindPolicies(policies, widgetActionController));
|
|
58
56
|
/**
|
|
59
57
|
* Widgets Custom
|
|
60
58
|
*/
|
|
61
|
-
adminizer.app.all(
|
|
62
|
-
// /**
|
|
63
|
-
// * Module Install Stepper
|
|
64
|
-
// * @deprecated
|
|
65
|
-
// * */
|
|
66
|
-
// adminizer.app.all(`/install/:id`, adminizer.policyManager.bindPolicies(policies, _processInstallStep));
|
|
67
|
-
// adminizer.app.all(`/install/:id/finalize`, adminizer.policyManager.bindPolicies(policies, _processInstallFinalize));
|
|
59
|
+
adminizer.app.all(`${adminizer.config.routePrefix}/widgets-action/:widgetId`, adminizer.policyManager.bindPolicies(policies, widgetCustomController));
|
|
68
60
|
/**
|
|
69
61
|
* Edit form
|
|
70
62
|
* */
|
|
@@ -55,10 +55,6 @@ export default async function bindAccessRights(adminizer) {
|
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
adminizer.accessRightsHelper.registerToken({
|
|
59
|
-
id: `process-install-step`, name: "Process install step",
|
|
60
|
-
description: "Access to '/processInstallStep' route", department: "Routes"
|
|
61
|
-
});
|
|
62
58
|
// Widgets
|
|
63
59
|
adminizer.accessRightsHelper.registerToken({
|
|
64
60
|
id: `widgets`, name: "Widgets",
|
package/system/bindDev.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export default function bindDev(adminizer) {
|
|
2
2
|
if (adminizer.config.models) {
|
|
3
3
|
Object.keys(adminizer.config.models).forEach((modelname) => {
|
|
4
|
+
// if(["userap", "groupap"].includes(modelname)) return;
|
|
4
5
|
if (typeof adminizer.config.models[modelname] !== "boolean") {
|
|
5
6
|
let modelName = adminizer.config.models[modelname].model;
|
|
6
7
|
adminizer.config.models[`dev-${modelName}`] = {
|
package/system/bindModels.js
CHANGED
|
@@ -11,10 +11,11 @@ export default async function bindModels(adminizer) {
|
|
|
11
11
|
throw new Error("Default ORM adapter was not provided");
|
|
12
12
|
}
|
|
13
13
|
const systemModelsDir = path.resolve(import.meta.dirname, "../models");
|
|
14
|
-
|
|
14
|
+
// Фильтруем только .js и .ts файлы, исключая .d.ts
|
|
15
|
+
const systemModelsFiles = fs.readdirSync(systemModelsDir).filter(file => (file.endsWith(".js") || (file.endsWith(".ts") && !file.endsWith(".d.ts"))));
|
|
15
16
|
// Bind system models reading them from ../models and get the whole list of them for further checks
|
|
16
17
|
const systemModels = systemModelsFiles.map((file) => {
|
|
17
|
-
const modelName = path.basename(file,
|
|
18
|
+
const modelName = path.basename(file, path.extname(file)); // убираем .js/.ts
|
|
18
19
|
const ormAdapter = adminizer.getOrmAdapter(defaultOrmAdapter);
|
|
19
20
|
// Create model adapter instance and add it to model handler
|
|
20
21
|
const registeredModel = ormAdapter.getModel(modelName.toLowerCase());
|
|
@@ -25,6 +26,7 @@ export default async function bindModels(adminizer) {
|
|
|
25
26
|
const modelsFromConfig = Object.values(adminizer.config.models)
|
|
26
27
|
.filter((item) => typeof item !== "boolean" && item?.model !== undefined)
|
|
27
28
|
.map(item => item.model.toLowerCase());
|
|
29
|
+
Adminizer.log.debug(`Bind models > Models from config: ${modelsFromConfig}`);
|
|
28
30
|
// Bind project models using config
|
|
29
31
|
modelsFromConfig.forEach((modelName) => {
|
|
30
32
|
const modelConfig = Object.entries(adminizer.config.models)
|
|
@@ -37,6 +39,9 @@ export default async function bindModels(adminizer) {
|
|
|
37
39
|
}
|
|
38
40
|
// Create model adapter instance and add it to model handler
|
|
39
41
|
const registeredModel = ormAdapter.getModel(modelName);
|
|
42
|
+
if (!registeredModel) {
|
|
43
|
+
throw `Bind models > Model not found: ${modelName}`;
|
|
44
|
+
}
|
|
40
45
|
const model = new ormAdapter.Model(modelName, registeredModel);
|
|
41
46
|
adminizer.modelHandler.add(modelName, model);
|
|
42
47
|
}
|
package/system/bindNavigation.js
CHANGED
package/translations/ru.json
CHANGED
|
@@ -59,12 +59,12 @@
|
|
|
59
59
|
"Yes": "Да",
|
|
60
60
|
"No": "Нет",
|
|
61
61
|
"Full Name": "Полное имя",
|
|
62
|
-
"password": "
|
|
62
|
+
"password": "пароль",
|
|
63
63
|
"expires": "Истекает",
|
|
64
64
|
"is administrator": "Администратор",
|
|
65
65
|
"widgets": "Виджеты",
|
|
66
66
|
"isConfirmed": "Подтверждено",
|
|
67
|
-
"isAdministrator": "
|
|
67
|
+
"isAdministrator": "Администратор",
|
|
68
68
|
"id": "id",
|
|
69
69
|
"Title": "Title",
|
|
70
70
|
"name": "Имя",
|
|
@@ -72,7 +72,6 @@
|
|
|
72
72
|
"tokens": "Токены",
|
|
73
73
|
"users": "Пользователи",
|
|
74
74
|
"data": "data",
|
|
75
|
-
"data2": "data2",
|
|
76
75
|
"Google": "Google",
|
|
77
76
|
"Google1": "Google1",
|
|
78
77
|
"Google2": "Google2",
|
|
@@ -80,10 +79,10 @@
|
|
|
80
79
|
"Textarea": "Textarea",
|
|
81
80
|
"Disabled": "Disabled",
|
|
82
81
|
"Boolean": "Boolean",
|
|
83
|
-
"time": "
|
|
84
|
-
"Number": "
|
|
85
|
-
"Editor": "
|
|
86
|
-
"Date and time": "
|
|
82
|
+
"time": "Время",
|
|
83
|
+
"Number": "Номер",
|
|
84
|
+
"Editor": "Редактор",
|
|
85
|
+
"Date and time": "Дата и время",
|
|
87
86
|
"Values in \"password\" and \"repeatPassword\" fields should be the same": "Значения в полях \"password\" и \"repeatPassword\" должны быть одинаковыми.",
|
|
88
87
|
"Is Administrator": "Администратор",
|
|
89
88
|
"Is confirmed": "Подтверждено",
|
|
@@ -91,5 +90,15 @@
|
|
|
91
90
|
"New record was created": "Новая запись создана",
|
|
92
91
|
"Record was updated": "Запись обновлена",
|
|
93
92
|
"Record was not removed": "Запись не удалена",
|
|
94
|
-
"Record was removed successfully !": "Запись удалена успешно!"
|
|
93
|
+
"Record was removed successfully !": "Запись удалена успешно!",
|
|
94
|
+
"Quick actions": "Быстрые действия",
|
|
95
|
+
"Toggle to change the grid. To save the grid, turn it off.": "Переключите для изменения сетки. Чтобы сохранить сетку, отключите.",
|
|
96
|
+
"You don't have any widgets selected yet. You can add them by clicking on the plus sign at the top right.": "У вас пока нет выбранных виджетов. Вы можете добавить их, нажав на значок плюса в правом верхнем углу.",
|
|
97
|
+
"No widgets found": "Виджеты не найдены",
|
|
98
|
+
"Global Settings": "Глобальные настройки",
|
|
99
|
+
"All": "Все",
|
|
100
|
+
"Custom": "Пользовательский виджет",
|
|
101
|
+
"Fast links": "Быстрые ссылки",
|
|
102
|
+
"Info": "Информация",
|
|
103
|
+
"Switcher": "Переключатель"
|
|
95
104
|
}
|
package/assets/add-EOP63mij.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as t}from"./app.js";import{c as m}from"./compiler-runtime-tM4jBQ-T.js";import{A as i}from"./app-layout-YPlKN2l5.js";import p from"./add-form-DofA75xF.js";import"./sidebar-B9HagQ6H.js";import"./index-DUXJYtOc.js";import"./button-CTOOfwvn.js";import"./utils-DjqsqOe8.js";import"./index-CGjCQBqR.js";import"./createLucideIcon-BFG25zNo.js";import"./index-Dllsp4Rk.js";import"./index-D5ir9iUV.js";import"./index-DEzdKGnS.js";import"./index-DnbQEoxZ.js";import"./index-Mx04mBJl.js";import"./tooltip-CWVAD5oF.js";import"./index-Cb_qrizV.js";import"./app-shell-D6Uf68EA.js";import"./app-sidebar-mh83eSsH.js";import"./nav-main-ByHRr3yf.js";import"./material-icon-CItZiB53.js";import"./chevron-right-D5q8rF7h.js";import"./index-C5OL14ES.js";import"./index-m5itSoCR.js";import"./chevrons-up-down-kALltqHV.js";import"./app-sidebar-header-BTKq0Dr0.js";import"./breadcrumbs-B4LOvzuL.js";import"./nav-user-BVRKiqm-.js";import"./dropdown-menu-CsGmdVIn.js";import"./user-info-DA4KTAOF.js";import"./user-menu-content-Biwi4u9j.js";import"./icon-Bz9BMaD0.js";import"./use-appearance-Co6mO0dV.js";import"./label-C2tlefOv.js";import"./field-renderer-Q3ajtfjk.js";import"./checkbox-D9ub-v0l.js";import"./index-DwctwfU0.js";import"./check-LAUWAnlX.js";import"./select-DYffGc49.js";import"./chevron-down-B5XuAFRu.js";import"./dynamic-controls-CSVVCONh.js";import"./input-DF7Ue23C.js";import"./multi-select-CDlcaNFy.js";import"./popover-_WN_Lj46.js";import"./search-BspystAk.js";import"./form-state-702tb_BV.js";import"./input-error-BBygona6.js";import"./move-left-BhKZRPb4.js";import"./loader-circle-Utah5tGx.js";const e=[];function to(){const r=m.c(1);let o;return r[0]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsx(i,{breadcrumbs:e,children:t.jsx(p,{})}),r[0]=o):o=r[0],o}export{to as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as r,r as u,q as O,S as V,J as z}from"./app.js";import{c as E}from"./compiler-runtime-tM4jBQ-T.js";import{B as y}from"./button-CTOOfwvn.js";import{Icon as A}from"./icon-Bz9BMaD0.js";import{L as D}from"./label-C2tlefOv.js";import{T as J,a as U,b as q,c as P}from"./tooltip-CWVAD5oF.js";import B from"./field-renderer-Q3ajtfjk.js";import{c as W}from"./utils-DjqsqOe8.js";import{r as $,h as C,g as I}from"./form-state-702tb_BV.js";import T from"./input-error-BBygona6.js";import{I as G,M as H}from"./move-left-BhKZRPb4.js";import{L}from"./loader-circle-Utah5tGx.js";import"./index-DUXJYtOc.js";import"./index-DEzdKGnS.js";import"./index-Dllsp4Rk.js";import"./index-D5ir9iUV.js";import"./index-Mx04mBJl.js";import"./index-Cb_qrizV.js";import"./checkbox-D9ub-v0l.js";import"./index-DwctwfU0.js";import"./check-LAUWAnlX.js";import"./createLucideIcon-BFG25zNo.js";import"./select-DYffGc49.js";import"./index-C5OL14ES.js";import"./index-DnbQEoxZ.js";import"./chevron-down-B5XuAFRu.js";import"./dynamic-controls-CSVVCONh.js";import"./input-DF7Ue23C.js";import"./multi-select-CDlcaNFy.js";import"./popover-_WN_Lj46.js";import"./index-CGjCQBqR.js";import"./search-BspystAk.js";function K(t){const e=E.c(8);let s,n;e[0]!==t?({className:s,...n}=t,e[0]=t,e[1]=s,e[2]=n):(s=e[1],n=e[2]);let a;e[3]!==s?(a=W("bg-accent animate-pulse rounded-md",s),e[3]=s,e[4]=a):a=e[4];let i;return e[5]!==n||e[6]!==a?(i=r.jsx("div",{"data-slot":"skeleton",className:a,...n}),e[5]=n,e[6]=a,e[7]=i):i=e[7],i}var N=new Map,v=new WeakMap,k=0,Q=void 0;function X(t){return t?(v.has(t)||(k+=1,v.set(t,k.toString())),v.get(t)):"0"}function Y(t){return Object.keys(t).sort().filter(e=>t[e]!==void 0).map(e=>`${e}_${e==="root"?X(t.root):t[e]}`).toString()}function Z(t){const e=Y(t);let s=N.get(e);if(!s){const n=new Map;let a;const i=new IntersectionObserver(c=>{c.forEach(p=>{var l;const m=p.isIntersecting&&a.some(d=>p.intersectionRatio>=d);t.trackVisibility&&typeof p.isVisible>"u"&&(p.isVisible=m),(l=n.get(p.target))==null||l.forEach(d=>{d(m,p)})})},t);a=i.thresholds||(Array.isArray(t.threshold)?t.threshold:[t.threshold||0]),s={id:e,observer:i,elements:n},N.set(e,s)}return s}function _(t,e,s={},n=Q){if(typeof window.IntersectionObserver>"u"&&n!==void 0){const l=t.getBoundingClientRect();return e(n,{isIntersecting:n,target:t,intersectionRatio:typeof s.threshold=="number"?s.threshold:0,time:0,boundingClientRect:l,intersectionRect:l,rootBounds:l}),()=>{}}const{id:a,observer:i,elements:c}=Z(s),p=c.get(t)||[];return c.has(t)||c.set(t,p),p.push(e),i.observe(t),function(){p.splice(p.indexOf(e),1),p.length===0&&(c.delete(t),i.unobserve(t)),c.size===0&&(i.disconnect(),N.delete(a))}}function ee({threshold:t,delay:e,trackVisibility:s,rootMargin:n,root:a,triggerOnce:i,skip:c,initialInView:p,fallbackInView:l,onChange:m}={}){var d;const[o,f]=u.useState(null),x=u.useRef(m),[b,F]=u.useState({inView:!!p,entry:void 0});x.current=m,u.useEffect(()=>{if(c||!o)return;let g;return g=_(o,(S,w)=>{F({inView:S,entry:w}),x.current&&x.current(S,w),w.isIntersecting&&i&&g&&(g(),g=void 0)},{root:a,rootMargin:n,threshold:t,trackVisibility:s,delay:e},l),()=>{g&&g()}},[Array.isArray(t)?t.toString():t,o,a,n,i,c,s,l,e]);const j=(d=b.entry)==null?void 0:d.target,R=u.useRef(void 0);!o&&j&&!i&&!c&&R.current!==j&&(R.current=j,F({inView:!!p,entry:void 0}));const h=[f,b.inView,b.entry];return h.ref=h[0],h.inView=h[1],h.entry=h[2],h}const M=u.memo(t=>{const e=E.c(8),{field:s}=t,n=`${s.type}-${s.name}`;let a;e[0]!==s.label||e[1]!==n?(a=r.jsx(D,{htmlFor:n,children:s.label}),e[0]=s.label,e[1]=n,e[2]=a):a=e[2];let i;e[3]!==s.tooltip?(i=s.tooltip&&r.jsx(J,{children:r.jsxs(U,{children:[r.jsx(q,{onClick:re,children:r.jsx(A,{iconNode:G,className:"text-primary w-5 h-5 cursor-pointer"})}),r.jsx(P,{align:"center",side:"top",className:"z-[1002]",children:r.jsx("p",{children:s.tooltip})})]})}),e[3]=s.tooltip,e[4]=i):i=e[4];let c;return e[5]!==a||e[6]!==i?(c=r.jsxs("div",{className:"flex gap-3",children:[a,i]}),e[5]=a,e[6]=i,e[7]=c):c=e[7],c}),te=u.memo(t=>{const e=E.c(12),{field:s,value:n,onChange:a,processing:i,notFound:c,search:p}=t;let l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l={triggerOnce:!0,rootMargin:"100px 0px"},e[0]=l):l=e[0];const[m,d]=ee(l);let o;e[1]!==s||e[2]!==d||e[3]!==c||e[4]!==a||e[5]!==i||e[6]!==p||e[7]!==n?(o=d?r.jsx(B,{field:s,value:n,onChange:a,notFound:c,search:p,processing:i}):r.jsx(K,{className:"w-full h-[250px] rounded-sm"}),e[1]=s,e[2]=d,e[3]=c,e[4]=a,e[5]=i,e[6]=p,e[7]=n,e[8]=o):o=e[8];let f;return e[9]!==m||e[10]!==o?(f=r.jsx("div",{ref:m,className:"grid gap-4 w-full",children:o}),e[9]=m,e[10]=o,e[11]=f):f=e[11],f}),Ae=()=>{const t=O(),{fields:e,btnBack:s,view:n,notFound:a}=t.props,{data:i,setData:c,post:p,processing:l}=V(Object.fromEntries(e.map(o=>[o.name,o.value??void 0])));u.useEffect(()=>($(),()=>{$()}),[]);const m=u.useCallback((o,f)=>{c(o,f)},[]),d=o=>{o.preventDefault(),p(t.props.postLink)};return r.jsxs("div",{className:"p-4 w-full",children:[r.jsxs("div",{className:"w-full sticky z-[1001] py-4 pb-8 top-0 h-fit bg-background flex gap-4",children:[r.jsx(y,{className:"w-fit",asChild:!0,children:r.jsxs(z,{href:s.link,preserveScroll:!0,children:[r.jsx(A,{iconNode:H}),s.title]})}),r.jsxs(y,{variant:"green",type:"submit",className:"w-fit cursor-pointer lg:hidden",form:"addUserForm",disabled:l||t.props.view||C(),children:[l&&r.jsx(L,{className:"h-4 w-4 animate-spin"}),t.props.btnSave.title]})]}),r.jsx("form",{id:"addUserForm",onSubmit:d,className:n?"cursor-not-allowed":"",children:r.jsxs("div",{className:"grid lg:grid-cols-[1fr_150px] gap-4 max-w-[1144px] pb-8",children:[r.jsx("div",{className:"flex flex-col gap-10",children:e.map(o=>r.jsx("div",{className:`grid gap-4 w-full ${n?"pointer-events-none":""}`,children:o.type==="markdown"||o.type==="table"||o.type==="jsonEditor"||o.type==="codeEditor"||o.type==="geoJson"?r.jsxs(r.Fragment,{children:[r.jsx(M,{field:o}),r.jsx(T,{message:I(`${o.type}-${o.name}`)}),r.jsx(te,{field:o,value:i[o.name],onChange:m,processing:l||n,notFound:a,search:t.props.search})]}):r.jsxs(r.Fragment,{children:[r.jsx(M,{field:o}),r.jsx(T,{message:I(`${o.type}-${o.name}`)}),r.jsx(B,{field:o,value:i[o.name],onChange:m,processing:l||n,notFound:a,search:t.props.search})]})},o.name))}),r.jsx("div",{className:"p-4 rounded-md h-fit sticky top-[84px] shadow hidden lg:block",children:r.jsxs(y,{variant:"green",type:"submit",className:"w-fit cursor-pointer",disabled:l||t.props.view||C(),children:[l&&r.jsx(L,{className:"h-4 w-4 animate-spin"}),t.props.btnSave.title]})})]})})]})};function re(t){return t.preventDefault()}export{M as LabelRenderer,te as LazyField,Ae as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as t}from"./app.js";import{c as m}from"./compiler-runtime-tM4jBQ-T.js";import{A as p}from"./app-layout-YPlKN2l5.js";import i from"./add-group-form-BUM07NJS.js";import"./sidebar-B9HagQ6H.js";import"./index-DUXJYtOc.js";import"./button-CTOOfwvn.js";import"./utils-DjqsqOe8.js";import"./index-CGjCQBqR.js";import"./createLucideIcon-BFG25zNo.js";import"./index-Dllsp4Rk.js";import"./index-D5ir9iUV.js";import"./index-DEzdKGnS.js";import"./index-DnbQEoxZ.js";import"./index-Mx04mBJl.js";import"./tooltip-CWVAD5oF.js";import"./index-Cb_qrizV.js";import"./app-shell-D6Uf68EA.js";import"./app-sidebar-mh83eSsH.js";import"./nav-main-ByHRr3yf.js";import"./material-icon-CItZiB53.js";import"./chevron-right-D5q8rF7h.js";import"./index-C5OL14ES.js";import"./index-m5itSoCR.js";import"./chevrons-up-down-kALltqHV.js";import"./app-sidebar-header-BTKq0Dr0.js";import"./breadcrumbs-B4LOvzuL.js";import"./nav-user-BVRKiqm-.js";import"./dropdown-menu-CsGmdVIn.js";import"./user-info-DA4KTAOF.js";import"./user-menu-content-Biwi4u9j.js";import"./icon-Bz9BMaD0.js";import"./use-appearance-Co6mO0dV.js";import"./label-C2tlefOv.js";import"./input-DF7Ue23C.js";import"./checkbox-D9ub-v0l.js";import"./index-DwctwfU0.js";import"./check-LAUWAnlX.js";import"./move-left-BhKZRPb4.js";import"./loader-circle-Utah5tGx.js";const e=[];function T(){const r=m.c(1);let o;return r[0]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsx(p,{breadcrumbs:e,children:t.jsx(i,{})}),r[0]=o):o=r[0],o}export{T as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as t}from"./app.js";import{c as m}from"./compiler-runtime-tM4jBQ-T.js";import{A as i}from"./app-layout-YPlKN2l5.js";import p from"./add-user-form-D1f_2noB.js";import"./sidebar-B9HagQ6H.js";import"./index-DUXJYtOc.js";import"./button-CTOOfwvn.js";import"./utils-DjqsqOe8.js";import"./index-CGjCQBqR.js";import"./createLucideIcon-BFG25zNo.js";import"./index-Dllsp4Rk.js";import"./index-D5ir9iUV.js";import"./index-DEzdKGnS.js";import"./index-DnbQEoxZ.js";import"./index-Mx04mBJl.js";import"./tooltip-CWVAD5oF.js";import"./index-Cb_qrizV.js";import"./app-shell-D6Uf68EA.js";import"./app-sidebar-mh83eSsH.js";import"./nav-main-ByHRr3yf.js";import"./material-icon-CItZiB53.js";import"./chevron-right-D5q8rF7h.js";import"./index-C5OL14ES.js";import"./index-m5itSoCR.js";import"./chevrons-up-down-kALltqHV.js";import"./app-sidebar-header-BTKq0Dr0.js";import"./breadcrumbs-B4LOvzuL.js";import"./nav-user-BVRKiqm-.js";import"./dropdown-menu-CsGmdVIn.js";import"./user-info-DA4KTAOF.js";import"./user-menu-content-Biwi4u9j.js";import"./icon-Bz9BMaD0.js";import"./use-appearance-Co6mO0dV.js";import"./label-C2tlefOv.js";import"./input-DF7Ue23C.js";import"./select-DYffGc49.js";import"./index-DwctwfU0.js";import"./chevron-down-B5XuAFRu.js";import"./check-LAUWAnlX.js";import"./checkbox-D9ub-v0l.js";import"./input-error-BBygona6.js";import"./move-left-BhKZRPb4.js";import"./loader-circle-Utah5tGx.js";const e=[];function W(){const o=m.c(1);let r;return o[0]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx(i,{breadcrumbs:e,children:t.jsx(p,{})}),o[0]=r):r=o[0],r}export{W as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var Cs=Object.defineProperty;var Ns=(e,t,r)=>t in e?Cs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var g=(e,t,r)=>Ns(e,typeof t!="symbol"?t+"":t,r);import{q as ks,r as ps,S as Ps,j as i,J as ds}from"./app.js";import{c as Ss}from"./compiler-runtime-tM4jBQ-T.js";import{Icon as us}from"./icon-Bz9BMaD0.js";import{B as jt}from"./button-CTOOfwvn.js";import{L as b}from"./label-C2tlefOv.js";import{I as He}from"./input-DF7Ue23C.js";import{c as fs,S as hs,a as ms,b as bs,d as ys}from"./select-DYffGc49.js";import{C as vt}from"./checkbox-D9ub-v0l.js";import{b as qs,T as Es,a as As,c as Us}from"./tooltip-CWVAD5oF.js";import Is from"./input-error-BBygona6.js";import Ls from"./material-icon-CItZiB53.js";import{M as Bs,I as Fs}from"./move-left-BhKZRPb4.js";import{L as zs}from"./loader-circle-Utah5tGx.js";import"./utils-DjqsqOe8.js";import"./index-DUXJYtOc.js";import"./index-DEzdKGnS.js";import"./index-Dllsp4Rk.js";import"./index-D5ir9iUV.js";import"./index-C5OL14ES.js";import"./index-DnbQEoxZ.js";import"./index-DwctwfU0.js";import"./index-Cb_qrizV.js";import"./chevron-down-B5XuAFRu.js";import"./createLucideIcon-BFG25zNo.js";import"./check-LAUWAnlX.js";import"./index-Mx04mBJl.js";class gs extends Error{constructor(r,o,a){const c=r.status||r.status===0?r.status:"",u=r.statusText||"",d=`${c} ${u}`.trim(),h=d?`status code ${d}`:"an unknown error";super(`Request failed with ${h}: ${o.method} ${o.url}`);g(this,"response");g(this,"request");g(this,"options");this.name="HTTPError",this.response=r,this.request=o,this.options=a}}class _s extends Error{constructor(r){super(`Request timed out: ${r.method} ${r.url}`);g(this,"request");this.name="TimeoutError",this.request=r}}const xs=(()=>{let e=!1,t=!1;const r=typeof globalThis.ReadableStream=="function",o=typeof globalThis.Request=="function";if(r&&o)try{t=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type")}catch(a){if(a instanceof Error&&a.message==="unsupported BodyInit type")return!1;throw a}return e&&!t})(),Os=typeof globalThis.AbortController=="function",Hs=typeof globalThis.ReadableStream=="function",Ds=typeof globalThis.FormData=="function",js=["get","post","put","patch","head","delete"],Ms={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*"},Rt=2147483647,$s=new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length,vs=Symbol("stop"),Js={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0},Vs={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,dispatcher:!0,duplex:!0,priority:!0},Ws=e=>{if(!e)return 0;if(e instanceof FormData){let t=0;for(const[r,o]of e)t+=$s,t+=new TextEncoder().encode(`Content-Disposition: form-data; name="${r}"`).length,t+=typeof o=="string"?new TextEncoder().encode(o).length:o.size;return t}if(e instanceof Blob)return e.size;if(e instanceof ArrayBuffer)return e.byteLength;if(typeof e=="string")return new TextEncoder().encode(e).length;if(e instanceof URLSearchParams)return new TextEncoder().encode(e.toString()).length;if("byteLength"in e)return e.byteLength;if(typeof e=="object"&&e!==null)try{const t=JSON.stringify(e);return new TextEncoder().encode(t).length}catch{return 0}return 0},Ks=(e,t)=>{const r=Number(e.headers.get("content-length"))||0;let o=0;return e.status===204?(t&&t({percent:1,totalBytes:r,transferredBytes:o},new Uint8Array),new Response(null,{status:e.status,statusText:e.statusText,headers:e.headers})):new Response(new ReadableStream({async start(a){const c=e.body.getReader();t&&t({percent:0,transferredBytes:0,totalBytes:r},new Uint8Array);async function u(){const{done:d,value:h}=await c.read();if(d){a.close();return}if(t){o+=h.byteLength;const m=r===0?0:o/r;t({percent:m,transferredBytes:o,totalBytes:r},h)}a.enqueue(h),await u()}await u()}}),{status:e.status,statusText:e.statusText,headers:e.headers})},Xs=(e,t)=>{const r=Ws(e.body);let o=0;return new Request(e,{duplex:"half",body:new ReadableStream({async start(a){const c=e.body instanceof ReadableStream?e.body.getReader():new Response("").body.getReader();async function u(){const{done:d,value:h}=await c.read();if(d){t&&t({percent:1,transferredBytes:o,totalBytes:Math.max(r,o)},new Uint8Array),a.close();return}o+=h.byteLength;let m=r===0?0:o/r;(r<o||m===1)&&(m=.99),t&&t({percent:Number(m.toFixed(2)),transferredBytes:o,totalBytes:r},h),a.enqueue(h),await u()}await u()}})})},De=e=>e!==null&&typeof e=="object",Qe=(...e)=>{for(const t of e)if((!De(t)||Array.isArray(t))&&t!==void 0)throw new TypeError("The `options` argument must be an object");return Ct({},...e)},Rs=(e={},t={})=>{const r=new globalThis.Headers(e),o=t instanceof globalThis.Headers,a=new globalThis.Headers(t);for(const[c,u]of a.entries())o&&u==="undefined"||u===void 0?r.delete(c):r.set(c,u);return r};function Ze(e,t,r){return Object.hasOwn(t,r)&&t[r]===void 0?[]:Ct(e[r]??[],t[r]??[])}const Ts=(e={},t={})=>({beforeRequest:Ze(e,t,"beforeRequest"),beforeRetry:Ze(e,t,"beforeRetry"),afterResponse:Ze(e,t,"afterResponse"),beforeError:Ze(e,t,"beforeError")}),Ct=(...e)=>{let t={},r={},o={};for(const a of e)if(Array.isArray(a))Array.isArray(t)||(t=[]),t=[...t,...a];else if(De(a)){for(let[c,u]of Object.entries(a))De(u)&&c in t&&(u=Ct(t[c],u)),t={...t,[c]:u};De(a.hooks)&&(o=Ts(o,a.hooks),t.hooks=o),De(a.headers)&&(r=Rs(r,a.headers),t.headers=r)}return t},Ys=e=>js.includes(e)?e.toUpperCase():e,Gs=["get","put","head","delete","options","trace"],Qs=[408,413,429,500,502,503,504],Zs=[413,429,503],ws={limit:2,methods:Gs,statusCodes:Qs,afterStatusCodes:Zs,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:e=>.3*2**(e-1)*1e3},er=(e={})=>{if(typeof e=="number")return{...ws,limit:e};if(e.methods&&!Array.isArray(e.methods))throw new Error("retry.methods must be an array");if(e.statusCodes&&!Array.isArray(e.statusCodes))throw new Error("retry.statusCodes must be an array");return{...ws,...e}};async function tr(e,t,r,o){return new Promise((a,c)=>{const u=setTimeout(()=>{r&&r.abort(),c(new _s(e))},o.timeout);o.fetch(e,t).then(a).catch(c).then(()=>{clearTimeout(u)})})}async function sr(e,{signal:t}){return new Promise((r,o)=>{t&&(t.throwIfAborted(),t.addEventListener("abort",a,{once:!0}));function a(){clearTimeout(c),o(t.reason)}const c=setTimeout(()=>{t==null||t.removeEventListener("abort",a),r()},e)})}const rr=(e,t)=>{const r={};for(const o in t)!(o in Vs)&&!(o in Js)&&!(o in e)&&(r[o]=t[o]);return r};class et{constructor(t,r={}){g(this,"request");g(this,"abortController");g(this,"_retryCount",0);g(this,"_input");g(this,"_options");var o,a;if(this._input=t,this._options={...r,headers:Rs(this._input.headers,r.headers),hooks:Ts({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},r.hooks),method:Ys(r.method??this._input.method??"GET"),prefixUrl:String(r.prefixUrl||""),retry:er(r.retry),throwHttpErrors:r.throwHttpErrors!==!1,timeout:r.timeout??1e4,fetch:r.fetch??globalThis.fetch.bind(globalThis)},typeof this._input!="string"&&!(this._input instanceof URL||this._input instanceof globalThis.Request))throw new TypeError("`input` must be a string, URL, or Request");if(this._options.prefixUrl&&typeof this._input=="string"){if(this._input.startsWith("/"))throw new Error("`input` must not begin with a slash when using `prefixUrl`");this._options.prefixUrl.endsWith("/")||(this._options.prefixUrl+="/"),this._input=this._options.prefixUrl+this._input}if(Os){const c=this._options.signal??this._input.signal;this.abortController=new globalThis.AbortController,this._options.signal=c?AbortSignal.any([c,this.abortController.signal]):this.abortController.signal}if(xs&&(this._options.duplex="half"),this._options.json!==void 0&&(this._options.body=((a=(o=this._options).stringifyJson)==null?void 0:a.call(o,this._options.json))??JSON.stringify(this._options.json),this._options.headers.set("content-type",this._options.headers.get("content-type")??"application/json")),this.request=new globalThis.Request(this._input,this._options),this._options.searchParams){const u="?"+(typeof this._options.searchParams=="string"?this._options.searchParams.replace(/^\?/,""):new URLSearchParams(this._options.searchParams).toString()),d=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,u);(Ds&&this._options.body instanceof globalThis.FormData||this._options.body instanceof URLSearchParams)&&!(this._options.headers&&this._options.headers["content-type"])&&this.request.headers.delete("content-type"),this.request=new globalThis.Request(new globalThis.Request(d,{...this.request}),this._options)}if(this._options.onUploadProgress){if(typeof this._options.onUploadProgress!="function")throw new TypeError("The `onUploadProgress` option must be a function");if(!xs)throw new Error("Request streams are not supported in your environment. The `duplex` option for `Request` is not available.");this.request.body&&(this.request=Xs(this.request,this._options.onUploadProgress))}}static create(t,r){const o=new et(t,r),a=async()=>{if(typeof o._options.timeout=="number"&&o._options.timeout>Rt)throw new RangeError(`The \`timeout\` option cannot be greater than ${Rt}`);await Promise.resolve();let d=await o._fetch();for(const h of o._options.hooks.afterResponse){const m=await h(o.request,o._options,o._decorateResponse(d.clone()));m instanceof globalThis.Response&&(d=m)}if(o._decorateResponse(d),!d.ok&&o._options.throwHttpErrors){let h=new gs(d,o.request,o._options);for(const m of o._options.hooks.beforeError)h=await m(h);throw h}if(o._options.onDownloadProgress){if(typeof o._options.onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!Hs)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");return Ks(d.clone(),o._options.onDownloadProgress)}return d},u=(o._options.retry.methods.includes(o.request.method.toLowerCase())?o._retry(a):a()).finally(async()=>{var d;o.request.bodyUsed||await((d=o.request.body)==null?void 0:d.cancel())});for(const[d,h]of Object.entries(Ms))u[d]=async()=>{o.request.headers.set("accept",o.request.headers.get("accept")||h);const m=await u;if(d==="json"){if(m.status===204||(await m.clone().arrayBuffer()).byteLength===0)return"";if(r.parseJson)return r.parseJson(await m.text())}return m[d]()};return u}_calculateRetryDelay(t){if(this._retryCount++,this._retryCount>this._options.retry.limit||t instanceof _s)throw t;if(t instanceof gs){if(!this._options.retry.statusCodes.includes(t.response.status))throw t;const o=t.response.headers.get("Retry-After")??t.response.headers.get("RateLimit-Reset")??t.response.headers.get("X-RateLimit-Reset")??t.response.headers.get("X-Rate-Limit-Reset");if(o&&this._options.retry.afterStatusCodes.includes(t.response.status)){let a=Number(o)*1e3;Number.isNaN(a)?a=Date.parse(o)-Date.now():a>=Date.parse("2024-01-01")&&(a-=Date.now());const c=this._options.retry.maxRetryAfter??a;return a<c?a:c}if(t.response.status===413)throw t}const r=this._options.retry.delay(this._retryCount);return Math.min(this._options.retry.backoffLimit,r)}_decorateResponse(t){return this._options.parseJson&&(t.json=async()=>this._options.parseJson(await t.text())),t}async _retry(t){try{return await t()}catch(r){const o=Math.min(this._calculateRetryDelay(r),Rt);if(this._retryCount<1)throw r;await sr(o,{signal:this._options.signal});for(const a of this._options.hooks.beforeRetry)if(await a({request:this.request,options:this._options,error:r,retryCount:this._retryCount})===vs)return;return this._retry(t)}}async _fetch(){for(const o of this._options.hooks.beforeRequest){const a=await o(this.request,this._options);if(a instanceof Request){this.request=a;break}if(a instanceof Response)return a}const t=rr(this.request,this._options),r=this.request;return this.request=r.clone(),this._options.timeout===!1?this._options.fetch(r,t):tr(r,t,this.abortController,this._options)}}/*! MIT License © Sindre Sorhus */const Tt=e=>{const t=(r,o)=>et.create(r,Qe(e,o));for(const r of js)t[r]=(o,a)=>et.create(o,Qe(e,a,{method:r}));return t.create=r=>Tt(Qe(r)),t.extend=r=>(typeof r=="function"&&(r=r(e??{})),Tt(Qe(e,r))),t.stop=vs,t},or=Tt();function Br(){var Nt,kt,Pt,St,qt,Et,At,Ut,It,Lt,Bt,Ft,zt,Ot,Ht,Dt,Mt,$t,Jt,Vt,Wt,Kt,Xt,Yt,Gt,Qt,Zt,es,ts,ss,rs,os,is,as,ns,ls,cs;const e=Ss.c(260),t=ks(),[r,o]=ps.useState(),{fields:a,groups:c,auth:u}=t.props;let d;e[0]!==a?(d=Object.fromEntries(a.map(cr)),e[0]=a,e[1]=d):d=e[1];let h;e[2]!==c?(h=Object.fromEntries(c.map(lr)),e[2]=c,e[3]=h):h=e[3];let m;e[4]!==d||e[5]!==h?(m={...d,...h},e[4]=d,e[5]=h,e[6]=m):m=e[6];const{data:p,setData:Me,errors:tt,setError:st,clearErrors:rt,post:ot,processing:f}=Ps(m);let $e,Je;e[7]===Symbol.for("react.memo_cache_sentinel")?($e=()=>{(async()=>{const x=await or.get(`${window.routePrefix}/get-timezones`).json();o(x.timezones)})()},Je=[],e[7]=$e,e[8]=Je):($e=e[7],Je=e[8]),ps.useEffect($e,Je);let Ve;e[9]!==t.props.fields?(Ve=l=>t.props.fields.find(x=>x.name===l),e[9]=t.props.fields,e[10]=Ve):Ve=e[10];const s=Ve;let We;e[11]!==p.repeatUserPassword||e[12]!==p.userPassword||e[13]!==t.props.passwordError||e[14]!==t.props.postLink||e[15]!==ot||e[16]!==st?(We=l=>{if(l.preventDefault(),p.userPassword!==p.repeatUserPassword){st("repeatUserPassword",t.props.passwordError);return}ot(t.props.postLink)},e[11]=p.repeatUserPassword,e[12]=p.userPassword,e[13]=t.props.passwordError,e[14]=t.props.postLink,e[15]=ot,e[16]=st,e[17]=We):We=e[17];const it=We;let Ke;e[18]!==rt||e[19]!==Me?(Ke=(l,x)=>{rt(),Me(l,x)},e[18]=rt,e[19]=Me,e[20]=Ke):Ke=e[20];const n=Ke;let Xe;e[21]===Symbol.for("react.memo_cache_sentinel")?(Xe=i.jsx(us,{iconNode:Bs}),e[21]=Xe):Xe=e[21];let w;e[22]!==t.props.btnBack.link||e[23]!==t.props.btnBack.title?(w=i.jsx(jt,{className:"mb-3 w-fit",asChild:!0,children:i.jsxs(ds,{href:t.props.btnBack.link,children:[Xe,t.props.btnBack.title]})}),e[22]=t.props.btnBack.link,e[23]=t.props.btnBack.title,e[24]=w):w=e[24];const at=f||t.props.view;let y;e[25]!==f?(y=f&&i.jsx(zs,{className:"h-4 w-4 animate-spin"}),e[25]=f,e[26]=y):y=e[26];let _;e[27]!==t.props.btnSave.title||e[28]!==at||e[29]!==y?(_=i.jsxs(jt,{variant:"green",type:"submit",className:"w-fit cursor-pointer",form:"addUserForm",disabled:at,children:[y,t.props.btnSave.title]}),e[27]=t.props.btnSave.title,e[28]=at,e[29]=y,e[30]=_):_=e[30];let j;e[31]!==_||e[32]!==w?(j=i.jsxs("div",{className:"w-full sticky z-[1001] py-4 pb-8 top-0 h-fit bg-background flex gap-4",children:[w,_]}),e[31]=_,e[32]=w,e[33]=j):j=e[33];const nt=t.props.view?"cursor-not-allowed":"";let v;e[34]!==t.props.head?(v=i.jsx("h2",{className:"font-bold text-xl",children:t.props.head}),e[34]=t.props.head,e[35]=v):v=e[35];let R;e[36]!==s?(R=(Nt=s("login"))==null?void 0:Nt.name,e[36]=s,e[37]=R):R=e[37];let T;e[38]!==s?(T=(kt=s("login"))==null?void 0:kt.label,e[38]=s,e[39]=T):T=e[39];let C;e[40]!==R||e[41]!==T?(C=i.jsx(b,{htmlFor:R,children:T}),e[40]=R,e[41]=T,e[42]=C):C=e[42];let N;e[43]!==s?(N=(Pt=s("login"))==null?void 0:Pt.name,e[43]=s,e[44]=N):N=e[44];const lt=p.login;let k;e[45]!==n?(k=l=>n("login",l.target.value),e[45]=n,e[46]=k):k=e[46];const ct=f||t.props.view;let P;e[47]!==s?(P=(St=s("login"))==null?void 0:St.label,e[47]=s,e[48]=P):P=e[48];let S;e[49]!==N||e[50]!==lt||e[51]!==k||e[52]!==ct||e[53]!==P?(S=i.jsx(He,{id:N,type:"text",required:!0,tabIndex:1,autoComplete:"username",value:lt,onChange:k,disabled:ct,placeholder:P}),e[49]=N,e[50]=lt,e[51]=k,e[52]=ct,e[53]=P,e[54]=S):S=e[54];let q;e[55]!==C||e[56]!==S?(q=i.jsxs("div",{className:"grid gap-4",children:[C,S]}),e[55]=C,e[56]=S,e[57]=q):q=e[57];let E;e[58]!==s?(E=(qt=s("fullName"))==null?void 0:qt.name,e[58]=s,e[59]=E):E=e[59];let A;e[60]!==s?(A=(Et=s("fullName"))==null?void 0:Et.label,e[60]=s,e[61]=A):A=e[61];let U;e[62]!==E||e[63]!==A?(U=i.jsx(b,{htmlFor:E,children:A}),e[62]=E,e[63]=A,e[64]=U):U=e[64];let I;e[65]!==s?(I=(At=s("fullName"))==null?void 0:At.name,e[65]=s,e[66]=I):I=e[66];const pt=p.fullName;let L;e[67]!==n?(L=l=>n("fullName",l.target.value),e[67]=n,e[68]=L):L=e[68];const dt=f||t.props.view;let B;e[69]!==s?(B=(Ut=s("fullName"))==null?void 0:Ut.label,e[69]=s,e[70]=B):B=e[70];let F;e[71]!==I||e[72]!==pt||e[73]!==L||e[74]!==dt||e[75]!==B?(F=i.jsx(He,{id:I,type:"text",required:!0,tabIndex:1,autoComplete:"additional-name",value:pt,onChange:L,disabled:dt,placeholder:B}),e[71]=I,e[72]=pt,e[73]=L,e[74]=dt,e[75]=B,e[76]=F):F=e[76];let z;e[77]!==U||e[78]!==F?(z=i.jsxs("div",{className:"grid gap-4",children:[U,F]}),e[77]=U,e[78]=F,e[79]=z):z=e[79];let O;e[80]!==s?(O=(It=s("email"))==null?void 0:It.name,e[80]=s,e[81]=O):O=e[81];let H;e[82]!==s?(H=(Lt=s("email"))==null?void 0:Lt.label,e[82]=s,e[83]=H):H=e[83];let D;e[84]!==O||e[85]!==H?(D=i.jsx(b,{htmlFor:O,children:H}),e[84]=O,e[85]=H,e[86]=D):D=e[86];let M;e[87]!==s?(M=(Bt=s("email"))==null?void 0:Bt.name,e[87]=s,e[88]=M):M=e[88];const ut=p.email;let $;e[89]!==n?($=l=>n("email",l.target.value),e[89]=n,e[90]=$):$=e[90];const ft=f||t.props.view;let J;e[91]!==s?(J=(Ft=s("email"))==null?void 0:Ft.label,e[91]=s,e[92]=J):J=e[92];let V;e[93]!==M||e[94]!==ut||e[95]!==$||e[96]!==ft||e[97]!==J?(V=i.jsx(He,{id:M,type:"email",required:!0,tabIndex:1,autoComplete:"email",value:ut,onChange:$,disabled:ft,placeholder:J}),e[93]=M,e[94]=ut,e[95]=$,e[96]=ft,e[97]=J,e[98]=V):V=e[98];let W;e[99]!==D||e[100]!==V?(W=i.jsxs("div",{className:"grid gap-4",children:[D,V]}),e[99]=D,e[100]=V,e[101]=W):W=e[101];let K;e[102]!==q||e[103]!==z||e[104]!==W?(K=i.jsxs("div",{className:"basis-1/2 flex flex-col gap-6",children:[q,z,W]}),e[102]=q,e[103]=z,e[104]=W,e[105]=K):K=e[105];let X;e[106]!==s?(X=(zt=s("timezone"))==null?void 0:zt.name,e[106]=s,e[107]=X):X=e[107];let Y;e[108]!==s?(Y=(Ot=s("timezone"))==null?void 0:Ot.label,e[108]=s,e[109]=Y):Y=e[109];let G;e[110]!==X||e[111]!==Y?(G=i.jsx(b,{htmlFor:X,children:Y}),e[110]=X,e[111]=Y,e[112]=G):G=e[112];let Q;e[113]!==n?(Q=l=>n("timezone",l),e[113]=n,e[114]=Q):Q=e[114];const ht=p.timezone,mt=f||t.props.view;let Z;e[115]!==s?(Z=(Ht=s("timezone"))==null?void 0:Ht.name,e[115]=s,e[116]=Z):Z=e[116];let ee;e[117]!==Z?(ee=i.jsx(hs,{className:"w-full cursor-pointer",children:i.jsx(ms,{placeholder:Z})}),e[117]=Z,e[118]=ee):ee=e[118];let te;e[119]!==r?(te=r??[],e[119]=r,e[120]=te):te=e[120];let se;e[121]!==te?(se=te.map(nr),e[121]=te,e[122]=se):se=e[122];let re;e[123]!==se?(re=i.jsx(bs,{children:se}),e[123]=se,e[124]=re):re=e[124];let oe;e[125]!==Q||e[126]!==ht||e[127]!==mt||e[128]!==ee||e[129]!==re?(oe=i.jsxs(fs,{onValueChange:Q,defaultValue:ht,disabled:mt,children:[ee,re]}),e[125]=Q,e[126]=ht,e[127]=mt,e[128]=ee,e[129]=re,e[130]=oe):oe=e[130];let ie;e[131]!==G||e[132]!==oe?(ie=i.jsxs("div",{className:"grid gap-4",children:[G,oe]}),e[131]=G,e[132]=oe,e[133]=ie):ie=e[133];let ae;e[134]!==p.date||e[135]!==s||e[136]!==n||e[137]!==f?(ae=s("date")&&i.jsxs("div",{className:"grid gap-4",children:[i.jsx(b,{htmlFor:(Dt=s("date"))==null?void 0:Dt.name,children:(Mt=s("date"))==null?void 0:Mt.label}),i.jsx(He,{id:($t=s("date"))==null?void 0:$t.name,type:"date",className:"max-w-fit",tabIndex:1,value:p.date,onChange:l=>n("date",l.target.value),disabled:f})]}),e[134]=p.date,e[135]=s,e[136]=n,e[137]=f,e[138]=ae):ae=e[138];let ne;e[139]!==p.isAdmin||e[140]!==s||e[141]!==n||e[142]!==t.props.view||e[143]!==f?(ne=s("isAdmin")&&i.jsxs("div",{className:"grid gap-4",children:[i.jsx(b,{className:"cursor-pointer",htmlFor:(Jt=s("isAdmin"))==null?void 0:Jt.name,children:(Vt=s("isAdmin"))==null?void 0:Vt.label}),i.jsx(vt,{id:(Wt=s("isAdmin"))==null?void 0:Wt.name,className:"cursor-pointer size-5",disabled:f||t.props.view,checked:p.isAdmin,onCheckedChange:l=>n("isAdmin",l)})]}),e[139]=p.isAdmin,e[140]=s,e[141]=n,e[142]=t.props.view,e[143]=f,e[144]=ne):ne=e[144];let le;e[145]!==p.isConfirmed||e[146]!==s||e[147]!==n||e[148]!==t.props.view||e[149]!==f?(le=s("isConfirmed")&&i.jsxs("div",{className:"grid gap-4",children:[i.jsx(b,{className:"cursor-pointer",htmlFor:(Kt=s("isConfirmed"))==null?void 0:Kt.name,children:(Xt=s("isConfirmed"))==null?void 0:Xt.label}),i.jsx(vt,{id:(Yt=s("isConfirmed"))==null?void 0:Yt.name,className:"cursor-pointer size-5",disabled:f||t.props.view,checked:p.isConfirmed,onCheckedChange:l=>n("isConfirmed",l)})]}),e[145]=p.isConfirmed,e[146]=s,e[147]=n,e[148]=t.props.view,e[149]=f,e[150]=le):le=e[150];let ce;e[151]!==ne||e[152]!==le?(ce=i.jsxs("div",{className:"flex gap-6",children:[ne,le]}),e[151]=ne,e[152]=le,e[153]=ce):ce=e[153];let pe;e[154]!==ae||e[155]!==ce?(pe=i.jsxs("div",{className:"flex flex-col md:flex-row justify-start gap-4 xl:justify-between items-start md:items-center",children:[ae,ce]}),e[154]=ae,e[155]=ce,e[156]=pe):pe=e[156];let de;e[157]!==p.locale||e[158]!==s||e[159]!==n||e[160]!==t.props.locales||e[161]!==t.props.view||e[162]!==f?(de=s("locale")&&i.jsxs("div",{className:"grid gap-4",children:[i.jsx(b,{htmlFor:(Gt=s("locale"))==null?void 0:Gt.name,children:(Qt=s("locale"))==null?void 0:Qt.label}),i.jsxs(fs,{onValueChange:l=>n("locale",l),defaultValue:p.locale,disabled:f||t.props.view,children:[i.jsx(hs,{className:"w-full cursor-pointer",children:i.jsx(ms,{placeholder:(Zt=s("locale"))==null?void 0:Zt.name})}),i.jsx(bs,{children:(t.props.locales??[]).map(ar)})]})]}),e[157]=p.locale,e[158]=s,e[159]=n,e[160]=t.props.locales,e[161]=t.props.view,e[162]=f,e[163]=de):de=e[163];let ue;e[164]!==ie||e[165]!==pe||e[166]!==de?(ue=i.jsxs("div",{className:"basis-1/2 flex flex-col gap-6",children:[ie,pe,de]}),e[164]=ie,e[165]=pe,e[166]=de,e[167]=ue):ue=e[167];let fe;e[168]!==K||e[169]!==ue?(fe=i.jsxs("div",{className:"flex-col xl:flex-row flex gap-16",children:[K,ue]}),e[168]=K,e[169]=ue,e[170]=fe):fe=e[170];let he;e[171]!==u.user.isAdministrator||e[172]!==p.login||e[173]!==t.props.userPretend?(he=u.user.isAdministrator&&i.jsx(jt,{className:"w-fit",asChild:!0,variant:"outline",children:i.jsxs(ds,{href:t.props.userPretend.postLink,method:"post",data:{login:p.login,pretend:!0},children:[i.jsx(Ls,{name:"masks",className:"!text-[18px]"}),t.props.userPretend.label]})}),e[171]=u.user.isAdministrator,e[172]=p.login,e[173]=t.props.userPretend,e[174]=he):he=e[174];let me;e[175]!==s?(me=(es=s("userPassword"))==null?void 0:es.label,e[175]=s,e[176]=me):me=e[176];let be;e[177]!==me?(be=i.jsx("label",{className:"font-bold text-xl",children:me}),e[177]=me,e[178]=be):be=e[178];let Ye;e[179]===Symbol.for("react.memo_cache_sentinel")?(Ye=i.jsx(qs,{onClick:ir,children:i.jsx(us,{iconNode:Fs,className:"text-primary w-5 h-5 cursor-pointer"})}),e[179]=Ye):Ye=e[179];let ge;e[180]!==s?(ge=(ts=s("userPassword"))==null?void 0:ts.tooltip,e[180]=s,e[181]=ge):ge=e[181];let xe;e[182]!==ge?(xe=i.jsx(Es,{children:i.jsxs(As,{children:[Ye,i.jsx(Us,{align:"center",side:"top",children:i.jsx("p",{children:ge})})]})}),e[182]=ge,e[183]=xe):xe=e[183];let we;e[184]!==be||e[185]!==xe?(we=i.jsxs("div",{className:"flex gap-3",children:[be,xe]}),e[184]=be,e[185]=xe,e[186]=we):we=e[186];let ye;e[187]!==s?(ye=(ss=s("userPassword"))==null?void 0:ss.name,e[187]=s,e[188]=ye):ye=e[188];let _e;e[189]!==s?(_e=(rs=s("userPassword"))==null?void 0:rs.label,e[189]=s,e[190]=_e):_e=e[190];let je;e[191]!==ye||e[192]!==_e?(je=i.jsx(b,{htmlFor:ye,children:_e}),e[191]=ye,e[192]=_e,e[193]=je):je=e[193];let ve;e[194]!==s?(ve=(os=s("userPassword"))==null?void 0:os.name,e[194]=s,e[195]=ve):ve=e[195];const bt=!t.props.edit,gt=p.password;let Re;e[196]!==n?(Re=l=>n("userPassword",l.target.value),e[196]=n,e[197]=Re):Re=e[197];const xt=f||t.props.view;let Te;e[198]!==s?(Te=(is=s("userPassword"))==null?void 0:is.label,e[198]=s,e[199]=Te):Te=e[199];let Ce;e[200]!==ve||e[201]!==bt||e[202]!==gt||e[203]!==Re||e[204]!==xt||e[205]!==Te?(Ce=i.jsx(He,{id:ve,type:"password",required:bt,tabIndex:1,autoComplete:"new-password",value:gt,onChange:Re,disabled:xt,placeholder:Te}),e[200]=ve,e[201]=bt,e[202]=gt,e[203]=Re,e[204]=xt,e[205]=Te,e[206]=Ce):Ce=e[206];let Ne;e[207]!==je||e[208]!==Ce?(Ne=i.jsxs("div",{className:"grid gap-4 col-span-1",children:[je,Ce]}),e[207]=je,e[208]=Ce,e[209]=Ne):Ne=e[209];let ke;e[210]!==s?(ke=(as=s("repeatUserPassword"))==null?void 0:as.name,e[210]=s,e[211]=ke):ke=e[211];let Pe;e[212]!==s?(Pe=(ns=s("repeatUserPassword"))==null?void 0:ns.label,e[212]=s,e[213]=Pe):Pe=e[213];let Se;e[214]!==ke||e[215]!==Pe?(Se=i.jsx(b,{htmlFor:ke,children:Pe}),e[214]=ke,e[215]=Pe,e[216]=Se):Se=e[216];let qe;e[217]!==s?(qe=(ls=s("repeatUserPassword"))==null?void 0:ls.name,e[217]=s,e[218]=qe):qe=e[218];const wt=!t.props.edit,yt=p.repeatUserPassword;let Ee;e[219]!==n?(Ee=l=>n("repeatUserPassword",l.target.value),e[219]=n,e[220]=Ee):Ee=e[220];const _t=f||t.props.view;let Ae;e[221]!==s?(Ae=(cs=s("repeatUserPassword"))==null?void 0:cs.label,e[221]=s,e[222]=Ae):Ae=e[222];let Ue;e[223]!==qe||e[224]!==wt||e[225]!==yt||e[226]!==Ee||e[227]!==_t||e[228]!==Ae?(Ue=i.jsx(He,{id:qe,type:"password",required:wt,tabIndex:1,autoComplete:"new-password",value:yt,onChange:Ee,disabled:_t,placeholder:Ae}),e[223]=qe,e[224]=wt,e[225]=yt,e[226]=Ee,e[227]=_t,e[228]=Ae,e[229]=Ue):Ue=e[229];let Ie;e[230]!==tt.repeatUserPassword?(Ie=i.jsx(Is,{message:tt.repeatUserPassword}),e[230]=tt.repeatUserPassword,e[231]=Ie):Ie=e[231];let Le;e[232]!==Se||e[233]!==Ue||e[234]!==Ie?(Le=i.jsxs("div",{className:"grid gap-4 col-span-1 col-start-1",children:[Se,Ue,Ie]}),e[232]=Se,e[233]=Ue,e[234]=Ie,e[235]=Le):Le=e[235];let Be;e[236]!==Ne||e[237]!==Le?(Be=i.jsxs("div",{className:"grid grid-col-1 lg:grid-cols-2 grid-rows-2 gap-x-16 gap-y-6",children:[Ne,Le]}),e[236]=Ne,e[237]=Le,e[238]=Be):Be=e[238];let Fe;e[239]!==p||e[240]!==n||e[241]!==t.props.groupHead||e[242]!==t.props.groups||e[243]!==t.props.view||e[244]!==f?(Fe=t.props.groups.length>0&&i.jsxs(i.Fragment,{children:[i.jsx("h2",{className:"font-bold text-xl",children:t.props.groupHead}),i.jsx("div",{className:"grid grid-cols-1 md:grid-cols-5 xl:grid-cols-6 gap-4",children:t.props.groups.map(l=>i.jsxs("div",{className:"grid gap-4",children:[i.jsx(b,{className:"cursor-pointer",htmlFor:l.name,children:l.label}),i.jsx(vt,{id:l.name,disabled:f||t.props.view,className:"cursor-pointer size-5",checked:p[l.name],onCheckedChange:x=>n(l.name,x)})]},l.name))})]}),e[239]=p,e[240]=n,e[241]=t.props.groupHead,e[242]=t.props.groups,e[243]=t.props.view,e[244]=f,e[245]=Fe):Fe=e[245];let ze;e[246]!==v||e[247]!==fe||e[248]!==he||e[249]!==we||e[250]!==Be||e[251]!==Fe?(ze=i.jsxs("div",{className:"flex flex-col gap-10 max-w-[1144px]",children:[v,fe,he,we,Be,Fe]}),e[246]=v,e[247]=fe,e[248]=he,e[249]=we,e[250]=Be,e[251]=Fe,e[252]=ze):ze=e[252];let Oe;e[253]!==it||e[254]!==ze||e[255]!==nt?(Oe=i.jsx("form",{id:"addUserForm",onSubmit:it,className:nt,children:ze}),e[253]=it,e[254]=ze,e[255]=nt,e[256]=Oe):Oe=e[256];let Ge;return e[257]!==Oe||e[258]!==j?(Ge=i.jsxs("div",{className:"flex h-full flex-1 flex-col gap-4 rounded-xl p-4",children:[j,Oe]}),e[257]=Oe,e[258]=j,e[259]=Ge):Ge=e[259],Ge}function ir(e){return e.preventDefault()}function ar(e){return i.jsx(ys,{value:e.value,children:e.label},e.value)}function nr(e){return i.jsx(ys,{value:e.value,children:e.label},e.value)}function lr(e){return[e.name,e.value]}function cr(e){return[e.name,e.value]}export{Br as default};
|