wcz-test 2.13.0 → 3.0.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/index.d.ts +26 -29
- package/dist/index.js +300 -233
- package/dist/index.js.map +1 -1
- package/package.json +8 -5
package/dist/index.js
CHANGED
|
@@ -42,7 +42,7 @@ var require_react_is_production_min = __commonJS({
|
|
|
42
42
|
var p = b ? Symbol.for("react.suspense") : 60113;
|
|
43
43
|
var q = b ? Symbol.for("react.suspense_list") : 60120;
|
|
44
44
|
var r = b ? Symbol.for("react.memo") : 60115;
|
|
45
|
-
var
|
|
45
|
+
var t2 = b ? Symbol.for("react.lazy") : 60116;
|
|
46
46
|
var v = b ? Symbol.for("react.block") : 60121;
|
|
47
47
|
var w = b ? Symbol.for("react.fundamental") : 60117;
|
|
48
48
|
var x = b ? Symbol.for("react.responder") : 60118;
|
|
@@ -64,7 +64,7 @@ var require_react_is_production_min = __commonJS({
|
|
|
64
64
|
switch (a = a && a.$$typeof, a) {
|
|
65
65
|
case k:
|
|
66
66
|
case n:
|
|
67
|
-
case
|
|
67
|
+
case t2:
|
|
68
68
|
case r:
|
|
69
69
|
case h:
|
|
70
70
|
return a;
|
|
@@ -87,7 +87,7 @@ var require_react_is_production_min = __commonJS({
|
|
|
87
87
|
exports.Element = c;
|
|
88
88
|
exports.ForwardRef = n;
|
|
89
89
|
exports.Fragment = e;
|
|
90
|
-
exports.Lazy =
|
|
90
|
+
exports.Lazy = t2;
|
|
91
91
|
exports.Memo = r;
|
|
92
92
|
exports.Portal = d;
|
|
93
93
|
exports.Profiler = g;
|
|
@@ -113,7 +113,7 @@ var require_react_is_production_min = __commonJS({
|
|
|
113
113
|
return z2(a) === e;
|
|
114
114
|
};
|
|
115
115
|
exports.isLazy = function(a) {
|
|
116
|
-
return z2(a) ===
|
|
116
|
+
return z2(a) === t2;
|
|
117
117
|
};
|
|
118
118
|
exports.isMemo = function(a) {
|
|
119
119
|
return z2(a) === r;
|
|
@@ -131,7 +131,7 @@ var require_react_is_production_min = __commonJS({
|
|
|
131
131
|
return z2(a) === p;
|
|
132
132
|
};
|
|
133
133
|
exports.isValidElementType = function(a) {
|
|
134
|
-
return "string" === typeof a || "function" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || "object" === typeof a && null !== a && (a.$$typeof ===
|
|
134
|
+
return "string" === typeof a || "function" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || "object" === typeof a && null !== a && (a.$$typeof === t2 || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);
|
|
135
135
|
};
|
|
136
136
|
exports.typeOf = z2;
|
|
137
137
|
}
|
|
@@ -1063,9 +1063,45 @@ var PageContainer = (props) => {
|
|
|
1063
1063
|
);
|
|
1064
1064
|
};
|
|
1065
1065
|
|
|
1066
|
+
// src/components/file/Dropzone.tsx
|
|
1067
|
+
import CloudUpload from "@mui/icons-material/CloudUpload";
|
|
1068
|
+
import { Paper, Typography as Typography2, useTheme } from "@mui/material";
|
|
1069
|
+
import { useDropzone } from "react-dropzone";
|
|
1070
|
+
import { useTranslation } from "react-i18next";
|
|
1071
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
1072
|
+
var baseStyle = {
|
|
1073
|
+
flex: 1,
|
|
1074
|
+
display: "flex",
|
|
1075
|
+
flexDirection: "column",
|
|
1076
|
+
alignItems: "center",
|
|
1077
|
+
padding: "20px",
|
|
1078
|
+
borderWidth: 2,
|
|
1079
|
+
borderRadius: 2,
|
|
1080
|
+
borderStyle: "dashed",
|
|
1081
|
+
outline: "none",
|
|
1082
|
+
transition: "border .24s ease-in-out",
|
|
1083
|
+
cursor: "pointer"
|
|
1084
|
+
};
|
|
1085
|
+
var Dropzone = ({ sx, ...props }) => {
|
|
1086
|
+
const { getRootProps, getInputProps, isFocused, isDragAccept, isDragReject } = useDropzone(props);
|
|
1087
|
+
const { t: t2 } = useTranslation();
|
|
1088
|
+
const theme = useTheme();
|
|
1089
|
+
const style = {
|
|
1090
|
+
...baseStyle,
|
|
1091
|
+
...isFocused ? { borderColor: theme.palette.primary.main } : {},
|
|
1092
|
+
...isDragAccept ? { borderColor: theme.palette.success.main } : {},
|
|
1093
|
+
...isDragReject ? { borderColor: theme.palette.error.main } : {}
|
|
1094
|
+
};
|
|
1095
|
+
return /* @__PURE__ */ jsxs2(Paper, { variant: "outlined", ...getRootProps({ style }), sx, children: [
|
|
1096
|
+
/* @__PURE__ */ jsx3("input", { ...getInputProps(), style: { display: "none" } }),
|
|
1097
|
+
/* @__PURE__ */ jsx3(CloudUpload, {}),
|
|
1098
|
+
/* @__PURE__ */ jsx3(Typography2, { children: t2("Layout.File.DragSomeFilesHereOrClickToSelectThem") })
|
|
1099
|
+
] });
|
|
1100
|
+
};
|
|
1101
|
+
|
|
1066
1102
|
// src/components/data-grid/ChipInputCell.tsx
|
|
1067
1103
|
import { Chip, Stack as Stack2 } from "@mui/material";
|
|
1068
|
-
import { jsx as
|
|
1104
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
1069
1105
|
var isArray = (value) => Array.isArray(value);
|
|
1070
1106
|
var ChipInputCell = ({ params, slotProps, getLabel }) => {
|
|
1071
1107
|
if (!params.value) return null;
|
|
@@ -1074,107 +1110,107 @@ var ChipInputCell = ({ params, slotProps, getLabel }) => {
|
|
|
1074
1110
|
return value;
|
|
1075
1111
|
};
|
|
1076
1112
|
if (isArray(params.value))
|
|
1077
|
-
return /* @__PURE__ */
|
|
1078
|
-
(value, index) => /* @__PURE__ */
|
|
1113
|
+
return /* @__PURE__ */ jsx4(Stack2, { direction: "row", alignItems: "center", gap: 1, sx: { overflowX: "auto", height: "100%", width: params.colDef.computedWidth }, children: params.value.map(
|
|
1114
|
+
(value, index) => /* @__PURE__ */ jsx4(Chip, { label: getLabelValue(value), ...slotProps }, `${index + 1}-chip-input-cell`)
|
|
1079
1115
|
) });
|
|
1080
|
-
return /* @__PURE__ */
|
|
1116
|
+
return /* @__PURE__ */ jsx4(Chip, { label: getLabelValue(params.value), ...slotProps });
|
|
1081
1117
|
};
|
|
1082
1118
|
|
|
1083
1119
|
// src/components/data-grid/EditableColumnHeader.tsx
|
|
1084
|
-
import
|
|
1085
|
-
import { jsx as
|
|
1120
|
+
import Edit from "@mui/icons-material/Edit";
|
|
1121
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
1086
1122
|
var EditableColumnHeader = ({ colDef }) => {
|
|
1087
|
-
return /* @__PURE__ */
|
|
1123
|
+
return /* @__PURE__ */ jsx5(TypographyWithIcon, { endIcon: /* @__PURE__ */ jsx5(Edit, { color: "disabled", fontSize: "small" }), variant: "body2", className: "MuiDataGrid-columnHeaderTitle", children: colDef.headerName });
|
|
1088
1124
|
};
|
|
1089
1125
|
|
|
1090
1126
|
// src/components/router/RouterButton.tsx
|
|
1091
1127
|
import { Button } from "@mui/material";
|
|
1092
1128
|
import { createLink } from "@tanstack/react-router";
|
|
1093
1129
|
import React from "react";
|
|
1094
|
-
import { jsx as
|
|
1130
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
1095
1131
|
var Component = React.forwardRef(function ButtonComponent(props, reference) {
|
|
1096
|
-
return /* @__PURE__ */
|
|
1132
|
+
return /* @__PURE__ */ jsx6(Button, { ref: reference, component: "a", ...props });
|
|
1097
1133
|
});
|
|
1098
1134
|
var CreatedComponent = createLink(Component);
|
|
1099
1135
|
var RouterButton = (props) => {
|
|
1100
|
-
return /* @__PURE__ */
|
|
1136
|
+
return /* @__PURE__ */ jsx6(CreatedComponent, { preload: "intent", ...props });
|
|
1101
1137
|
};
|
|
1102
1138
|
|
|
1103
1139
|
// src/components/router/RouterGridActionsCellItem.tsx
|
|
1104
1140
|
import { GridActionsCellItem } from "@mui/x-data-grid-premium";
|
|
1105
1141
|
import { createLink as createLink2 } from "@tanstack/react-router";
|
|
1106
1142
|
import React2 from "react";
|
|
1107
|
-
import { jsx as
|
|
1143
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
1108
1144
|
var Component2 = React2.forwardRef(
|
|
1109
1145
|
function GridActionsCellItemComponent(props, reference) {
|
|
1110
|
-
return /* @__PURE__ */
|
|
1146
|
+
return /* @__PURE__ */ jsx7(GridActionsCellItem, { ref: reference, component: "a", ...props });
|
|
1111
1147
|
}
|
|
1112
1148
|
);
|
|
1113
1149
|
var CreatedComponent2 = createLink2(Component2);
|
|
1114
1150
|
var RouterGridActionsCellItem = (props) => {
|
|
1115
|
-
return /* @__PURE__ */
|
|
1151
|
+
return /* @__PURE__ */ jsx7(CreatedComponent2, { preload: "intent", ...props });
|
|
1116
1152
|
};
|
|
1117
1153
|
|
|
1118
1154
|
// src/components/router/RouterIconButton.tsx
|
|
1119
1155
|
import { IconButton } from "@mui/material";
|
|
1120
1156
|
import { createLink as createLink3 } from "@tanstack/react-router";
|
|
1121
1157
|
import React3 from "react";
|
|
1122
|
-
import { jsx as
|
|
1158
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
1123
1159
|
var Component3 = React3.forwardRef(function IconButtonComponent(props, reference) {
|
|
1124
|
-
return /* @__PURE__ */
|
|
1160
|
+
return /* @__PURE__ */ jsx8(IconButton, { ref: reference, component: "a", ...props });
|
|
1125
1161
|
});
|
|
1126
1162
|
var CreatedComponent3 = createLink3(Component3);
|
|
1127
1163
|
var RouterIconButton = (props) => {
|
|
1128
|
-
return /* @__PURE__ */
|
|
1164
|
+
return /* @__PURE__ */ jsx8(CreatedComponent3, { preload: "intent", ...props });
|
|
1129
1165
|
};
|
|
1130
1166
|
|
|
1131
1167
|
// src/components/router/RouterLink.tsx
|
|
1132
1168
|
import { Link } from "@mui/material";
|
|
1133
1169
|
import { createLink as createLink4 } from "@tanstack/react-router";
|
|
1134
1170
|
import React4 from "react";
|
|
1135
|
-
import { jsx as
|
|
1171
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
1136
1172
|
var Component4 = React4.forwardRef(function LinkComponent(props, reference) {
|
|
1137
|
-
return /* @__PURE__ */
|
|
1173
|
+
return /* @__PURE__ */ jsx9(Link, { ref: reference, ...props });
|
|
1138
1174
|
});
|
|
1139
1175
|
var CreatedComponent4 = createLink4(Component4);
|
|
1140
1176
|
var RouterLink = (props) => {
|
|
1141
|
-
return /* @__PURE__ */
|
|
1177
|
+
return /* @__PURE__ */ jsx9(CreatedComponent4, { preload: "intent", ...props });
|
|
1142
1178
|
};
|
|
1143
1179
|
|
|
1144
1180
|
// src/components/router/RouterTab.tsx
|
|
1145
1181
|
import { Tab } from "@mui/material";
|
|
1146
1182
|
import { createLink as createLink5 } from "@tanstack/react-router";
|
|
1147
1183
|
import React5 from "react";
|
|
1148
|
-
import { jsx as
|
|
1184
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
1149
1185
|
var Component5 = React5.forwardRef(function TabComponent(props, reference) {
|
|
1150
|
-
return /* @__PURE__ */
|
|
1186
|
+
return /* @__PURE__ */ jsx10(Tab, { ref: reference, component: "a", ...props });
|
|
1151
1187
|
});
|
|
1152
1188
|
var CreatedComponent5 = createLink5(Component5);
|
|
1153
1189
|
var RouterTab = (props) => {
|
|
1154
|
-
return /* @__PURE__ */
|
|
1190
|
+
return /* @__PURE__ */ jsx10(CreatedComponent5, { preload: "intent", ...props });
|
|
1155
1191
|
};
|
|
1156
1192
|
|
|
1157
1193
|
// src/components/router/RouterNotFound.tsx
|
|
1158
|
-
import { Box, Divider, Typography as
|
|
1159
|
-
import { useTranslation } from "react-i18next";
|
|
1160
|
-
import { jsx as
|
|
1194
|
+
import { Box, Divider, Typography as Typography3 } from "@mui/material";
|
|
1195
|
+
import { useTranslation as useTranslation2 } from "react-i18next";
|
|
1196
|
+
import { jsx as jsx11, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
1161
1197
|
function RouterNotFound() {
|
|
1162
|
-
const { t } =
|
|
1163
|
-
return /* @__PURE__ */
|
|
1164
|
-
/* @__PURE__ */
|
|
1165
|
-
/* @__PURE__ */
|
|
1166
|
-
/* @__PURE__ */
|
|
1198
|
+
const { t: t2 } = useTranslation2();
|
|
1199
|
+
return /* @__PURE__ */ jsx11(Box, { height: "100vh", display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", textAlign: "center", px: 2, children: /* @__PURE__ */ jsxs3(Box, { display: "flex", alignItems: "center", mb: 4, children: [
|
|
1200
|
+
/* @__PURE__ */ jsx11(Typography3, { variant: "h3", component: "span", fontWeight: 500, sx: { lineHeight: 1 }, children: "404" }),
|
|
1201
|
+
/* @__PURE__ */ jsx11(Divider, { orientation: "vertical", flexItem: true, sx: { mx: 3 } }),
|
|
1202
|
+
/* @__PURE__ */ jsx11(Typography3, { variant: "h5", component: "span", children: t2("Layout.ThisPageCouldNotBeFound") })
|
|
1167
1203
|
] }) });
|
|
1168
1204
|
}
|
|
1169
1205
|
|
|
1170
1206
|
// src/components/router/RouterError.tsx
|
|
1171
|
-
import { Box as Box2, Divider as Divider2, Typography as
|
|
1172
|
-
import { jsx as
|
|
1207
|
+
import { Box as Box2, Divider as Divider2, Typography as Typography4 } from "@mui/material";
|
|
1208
|
+
import { jsx as jsx12, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1173
1209
|
var RouterError = ({ error }) => {
|
|
1174
|
-
return /* @__PURE__ */
|
|
1175
|
-
/* @__PURE__ */
|
|
1176
|
-
/* @__PURE__ */
|
|
1177
|
-
/* @__PURE__ */
|
|
1210
|
+
return /* @__PURE__ */ jsx12(Box2, { height: "100vh", display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", textAlign: "center", px: 2, children: /* @__PURE__ */ jsxs4(Box2, { display: "flex", alignItems: "center", mb: 4, children: [
|
|
1211
|
+
/* @__PURE__ */ jsx12(Typography4, { variant: "h3", component: "span", fontWeight: 500, sx: { lineHeight: 1 }, children: error.name || "500" }),
|
|
1212
|
+
/* @__PURE__ */ jsx12(Divider2, { orientation: "vertical", flexItem: true, sx: { mx: 3 } }),
|
|
1213
|
+
/* @__PURE__ */ jsx12(Typography4, { variant: "h5", component: "span", children: error.message })
|
|
1178
1214
|
] }) });
|
|
1179
1215
|
};
|
|
1180
1216
|
|
|
@@ -1185,8 +1221,8 @@ import { LinearProgress, useMediaQuery } from "@mui/material";
|
|
|
1185
1221
|
function _extends() {
|
|
1186
1222
|
return _extends = Object.assign ? Object.assign.bind() : function(n) {
|
|
1187
1223
|
for (var e = 1; e < arguments.length; e++) {
|
|
1188
|
-
var
|
|
1189
|
-
for (var r in
|
|
1224
|
+
var t2 = arguments[e];
|
|
1225
|
+
for (var r in t2) ({}).hasOwnProperty.call(t2, r) && (n[r] = t2[r]);
|
|
1190
1226
|
}
|
|
1191
1227
|
return n;
|
|
1192
1228
|
}, _extends.apply(null, arguments);
|
|
@@ -1195,12 +1231,12 @@ function _extends() {
|
|
|
1195
1231
|
// node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
|
|
1196
1232
|
function _objectWithoutPropertiesLoose(r, e) {
|
|
1197
1233
|
if (null == r) return {};
|
|
1198
|
-
var
|
|
1234
|
+
var t2 = {};
|
|
1199
1235
|
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
|
1200
1236
|
if (-1 !== e.indexOf(n)) continue;
|
|
1201
|
-
|
|
1237
|
+
t2[n] = r[n];
|
|
1202
1238
|
}
|
|
1203
|
-
return
|
|
1239
|
+
return t2;
|
|
1204
1240
|
}
|
|
1205
1241
|
|
|
1206
1242
|
// node_modules/@mui/x-date-pickers/esm/LocalizationProvider/LocalizationProvider.js
|
|
@@ -1209,17 +1245,18 @@ import * as React6 from "react";
|
|
|
1209
1245
|
import { useThemeProps } from "@mui/material/styles";
|
|
1210
1246
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1211
1247
|
var _excluded = ["localeText"];
|
|
1212
|
-
var
|
|
1213
|
-
if (process.env.NODE_ENV !== "production")
|
|
1248
|
+
var PickerAdapterContext = /* @__PURE__ */ React6.createContext(null);
|
|
1249
|
+
if (process.env.NODE_ENV !== "production") PickerAdapterContext.displayName = "PickerAdapterContext";
|
|
1214
1250
|
var LocalizationProvider = function LocalizationProvider2(inProps) {
|
|
1215
1251
|
const {
|
|
1216
1252
|
localeText: inLocaleText
|
|
1217
1253
|
} = inProps, otherInProps = _objectWithoutPropertiesLoose(inProps, _excluded);
|
|
1218
1254
|
const {
|
|
1219
|
-
|
|
1255
|
+
adapter: parentAdapter,
|
|
1220
1256
|
localeText: parentLocaleText
|
|
1221
|
-
} = React6.useContext(
|
|
1257
|
+
} = React6.useContext(PickerAdapterContext) ?? {
|
|
1222
1258
|
utils: void 0,
|
|
1259
|
+
adapter: void 0,
|
|
1223
1260
|
localeText: void 0
|
|
1224
1261
|
};
|
|
1225
1262
|
const props = useThemeProps({
|
|
@@ -1237,41 +1274,42 @@ var LocalizationProvider = function LocalizationProvider2(inProps) {
|
|
|
1237
1274
|
localeText: themeLocaleText
|
|
1238
1275
|
} = props;
|
|
1239
1276
|
const localeText = React6.useMemo(() => _extends({}, themeLocaleText, parentLocaleText, inLocaleText), [themeLocaleText, parentLocaleText, inLocaleText]);
|
|
1240
|
-
const
|
|
1277
|
+
const adapter = React6.useMemo(() => {
|
|
1241
1278
|
if (!DateAdapter) {
|
|
1242
|
-
if (
|
|
1243
|
-
return
|
|
1279
|
+
if (parentAdapter) {
|
|
1280
|
+
return parentAdapter;
|
|
1244
1281
|
}
|
|
1245
1282
|
return null;
|
|
1246
1283
|
}
|
|
1247
|
-
const
|
|
1284
|
+
const dateAdapter = new DateAdapter({
|
|
1248
1285
|
locale: adapterLocale,
|
|
1249
1286
|
formats: dateFormats,
|
|
1250
1287
|
instance: dateLibInstance
|
|
1251
1288
|
});
|
|
1252
|
-
if (!
|
|
1289
|
+
if (!dateAdapter.isMUIAdapter) {
|
|
1253
1290
|
throw new Error(["MUI X: The date adapter should be imported from `@mui/x-date-pickers` or `@mui/x-date-pickers-pro`, not from `@date-io`", "For example, `import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'` instead of `import AdapterDayjs from '@date-io/dayjs'`", "More information on the installation documentation: https://mui.com/x/react-date-pickers/quickstart/#installation"].join(`
|
|
1254
1291
|
`));
|
|
1255
1292
|
}
|
|
1256
|
-
return
|
|
1257
|
-
}, [DateAdapter, adapterLocale, dateFormats, dateLibInstance,
|
|
1293
|
+
return dateAdapter;
|
|
1294
|
+
}, [DateAdapter, adapterLocale, dateFormats, dateLibInstance, parentAdapter]);
|
|
1258
1295
|
const defaultDates = React6.useMemo(() => {
|
|
1259
|
-
if (!
|
|
1296
|
+
if (!adapter) {
|
|
1260
1297
|
return null;
|
|
1261
1298
|
}
|
|
1262
1299
|
return {
|
|
1263
|
-
minDate:
|
|
1264
|
-
maxDate:
|
|
1300
|
+
minDate: adapter.date("1900-01-01T00:00:00.000"),
|
|
1301
|
+
maxDate: adapter.date("2099-12-31T00:00:00.000")
|
|
1265
1302
|
};
|
|
1266
|
-
}, [
|
|
1303
|
+
}, [adapter]);
|
|
1267
1304
|
const contextValue = React6.useMemo(() => {
|
|
1268
1305
|
return {
|
|
1269
|
-
utils,
|
|
1306
|
+
utils: adapter,
|
|
1307
|
+
adapter,
|
|
1270
1308
|
defaultDates,
|
|
1271
1309
|
localeText
|
|
1272
1310
|
};
|
|
1273
|
-
}, [defaultDates,
|
|
1274
|
-
return /* @__PURE__ */ _jsx(
|
|
1311
|
+
}, [defaultDates, adapter, localeText]);
|
|
1312
|
+
return /* @__PURE__ */ _jsx(PickerAdapterContext.Provider, {
|
|
1275
1313
|
value: contextValue,
|
|
1276
1314
|
children
|
|
1277
1315
|
});
|
|
@@ -1630,10 +1668,10 @@ var AdapterDayjs = class {
|
|
|
1630
1668
|
};
|
|
1631
1669
|
this.expandFormat = (format) => {
|
|
1632
1670
|
const localeFormats = this.getLocaleFormats();
|
|
1633
|
-
const
|
|
1671
|
+
const t2 = (formatBis) => formatBis.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, (_, a, b) => a || b.slice(1));
|
|
1634
1672
|
return format.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, (_, a, b) => {
|
|
1635
1673
|
const B = b && b.toUpperCase();
|
|
1636
|
-
return a || localeFormats[b] ||
|
|
1674
|
+
return a || localeFormats[b] || t2(localeFormats[B]);
|
|
1637
1675
|
});
|
|
1638
1676
|
};
|
|
1639
1677
|
this.isValid = (value) => {
|
|
@@ -1840,17 +1878,11 @@ import { useRouterState } from "@tanstack/react-router";
|
|
|
1840
1878
|
import { DashboardLayout } from "@toolpad/core/DashboardLayout";
|
|
1841
1879
|
import { TanStackRouterAppProvider } from "@toolpad/core/tanstack-router";
|
|
1842
1880
|
import { NotificationsProvider } from "@toolpad/core/useNotifications";
|
|
1843
|
-
import
|
|
1844
|
-
import
|
|
1845
|
-
import HttpBackend from "i18next-http-backend";
|
|
1846
|
-
import { initReactI18next, useTranslation as useTranslation5 } from "react-i18next";
|
|
1847
|
-
import { z } from "zod";
|
|
1848
|
-
import { zodI18nMap } from "zod-i18n-map";
|
|
1849
|
-
import zodCsTranslations from "zod-i18n-map/locales/cs/zod.json";
|
|
1850
|
-
import zodEnTranslations from "zod-i18n-map/locales/en/zod.json";
|
|
1881
|
+
import { useState as useState2 } from "react";
|
|
1882
|
+
import { I18nextProvider, useTranslation as useTranslation5 } from "react-i18next";
|
|
1851
1883
|
|
|
1852
1884
|
// src/components/core/AppTitle.tsx
|
|
1853
|
-
import { Stack as Stack3, Typography as
|
|
1885
|
+
import { Chip as Chip2, Stack as Stack3, Typography as Typography5 } from "@mui/material";
|
|
1854
1886
|
|
|
1855
1887
|
// src/contexts/LayoutContext.ts
|
|
1856
1888
|
import { createContext as createContext2, useContext as useContext2 } from "react";
|
|
@@ -1858,65 +1890,55 @@ var LayoutContext = createContext2({});
|
|
|
1858
1890
|
var useLayout = () => useContext2(LayoutContext);
|
|
1859
1891
|
|
|
1860
1892
|
// src/components/core/AppTitle.tsx
|
|
1861
|
-
import { jsx as
|
|
1893
|
+
import { jsx as jsx13, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1862
1894
|
var AppTitle = () => {
|
|
1863
1895
|
const { appTitle } = useLayout();
|
|
1864
|
-
return /* @__PURE__ */
|
|
1865
|
-
/* @__PURE__ */
|
|
1866
|
-
/* @__PURE__ */
|
|
1896
|
+
return /* @__PURE__ */ jsxs5(Stack3, { direction: "row", alignItems: "center", spacing: 2, children: [
|
|
1897
|
+
/* @__PURE__ */ jsx13("img", { src: "/favicon-32x32.png", alt: "app-logo", loading: "lazy" }),
|
|
1898
|
+
/* @__PURE__ */ jsx13(Typography5, { variant: "h6", children: appTitle }),
|
|
1899
|
+
import.meta.env.DEV && /* @__PURE__ */ jsx13(Chip2, { size: "small", label: "BETA", color: "info" })
|
|
1867
1900
|
] });
|
|
1868
1901
|
};
|
|
1869
1902
|
|
|
1870
|
-
// src/components/core/
|
|
1871
|
-
import
|
|
1872
|
-
import
|
|
1873
|
-
import
|
|
1874
|
-
import
|
|
1875
|
-
import
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
] }) }) });
|
|
1903
|
+
// src/components/core/ToolbarAccount.tsx
|
|
1904
|
+
import AccountCircle from "@mui/icons-material/AccountCircle";
|
|
1905
|
+
import ArrowBack from "@mui/icons-material/ArrowBack";
|
|
1906
|
+
import Brightness4 from "@mui/icons-material/Brightness4";
|
|
1907
|
+
import ChevronRight from "@mui/icons-material/ChevronRight";
|
|
1908
|
+
import DarkMode from "@mui/icons-material/DarkMode";
|
|
1909
|
+
import LightMode from "@mui/icons-material/LightMode";
|
|
1910
|
+
import Login from "@mui/icons-material/Login";
|
|
1911
|
+
import Logout from "@mui/icons-material/Logout";
|
|
1912
|
+
import SettingsBrightness from "@mui/icons-material/SettingsBrightness";
|
|
1913
|
+
import Translate from "@mui/icons-material/Translate";
|
|
1914
|
+
import { Avatar, Box as Box3, IconButton as IconButton2, List, ListItem, ListItemButton, ListItemIcon, ListItemText, ListSubheader, Menu, Typography as Typography6, useColorScheme } from "@mui/material";
|
|
1915
|
+
import { Fragment, useState } from "react";
|
|
1916
|
+
import { useTranslation as useTranslation3 } from "react-i18next";
|
|
1917
|
+
|
|
1918
|
+
// src/auth-test/keycloak.ts
|
|
1919
|
+
import { useRouter } from "@tanstack/react-router";
|
|
1920
|
+
import Keycloak from "keycloak-js";
|
|
1921
|
+
var keycloakConfig = {
|
|
1922
|
+
url: import.meta.env.VITE_KEYCLOAK_URL,
|
|
1923
|
+
realm: import.meta.env.VITE_KEYCLOAK_REALM,
|
|
1924
|
+
clientId: import.meta.env.VITE_KEYCLOAK_CLIENT_ID,
|
|
1925
|
+
idpHint: import.meta.env.VITE_KEYCLOAK_IDP_HINT,
|
|
1926
|
+
confidentialClientId: import.meta.env.VITE_KEYCLOAK_CONFIDENTIAL_CLIENT_ID,
|
|
1927
|
+
confidentialClientSecret: import.meta.env.VITE_KEYCLOAK_CONFIDENTIAL_CLIENT_SECRET
|
|
1896
1928
|
};
|
|
1929
|
+
function useKeycloak() {
|
|
1930
|
+
const routerContext = useRouter();
|
|
1931
|
+
const keycloak = routerContext.options.context.keycloak;
|
|
1932
|
+
return keycloak;
|
|
1933
|
+
}
|
|
1897
1934
|
|
|
1898
1935
|
// src/components/core/ToolbarAccount.tsx
|
|
1899
|
-
import { AccountCircle, ArrowBack, Brightness4, ChevronRight, DarkMode, LightMode, Login, Logout, SettingsBrightness, Translate } from "@mui/icons-material";
|
|
1900
|
-
import { Avatar, Box as Box3, IconButton as IconButton3, List, ListItem, ListItemButton, ListItemIcon, ListItemText, ListSubheader, Menu, Typography as Typography6, useColorScheme } from "@mui/material";
|
|
1901
|
-
import { Fragment, useState as useState2 } from "react";
|
|
1902
|
-
import { useTranslation as useTranslation3 } from "react-i18next";
|
|
1903
1936
|
import { jsx as jsx14, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1904
|
-
var user = {
|
|
1905
|
-
name: "Dalibor Homola",
|
|
1906
|
-
employeeId: "C2503017",
|
|
1907
|
-
department: "MD0L50",
|
|
1908
|
-
login: () => {
|
|
1909
|
-
console.log("Login");
|
|
1910
|
-
},
|
|
1911
|
-
logout: () => {
|
|
1912
|
-
console.log("Logout");
|
|
1913
|
-
}
|
|
1914
|
-
};
|
|
1915
1937
|
var ToolbarAccount = () => {
|
|
1916
|
-
const [anchorElement, setAnchorElement] =
|
|
1917
|
-
const [tab, setTab] =
|
|
1938
|
+
const [anchorElement, setAnchorElement] = useState();
|
|
1939
|
+
const [tab, setTab] = useState("settings");
|
|
1918
1940
|
const open = Boolean(anchorElement);
|
|
1919
|
-
const { t, i18n: i18n2 } = useTranslation3();
|
|
1941
|
+
const { t: t2, i18n: i18n2 } = useTranslation3();
|
|
1920
1942
|
const { mode, setMode } = useColorScheme();
|
|
1921
1943
|
const changeLanguage = (newLanguage) => () => {
|
|
1922
1944
|
i18n2.changeLanguage(newLanguage).finally(() => closeMenu());
|
|
@@ -1925,20 +1947,23 @@ var ToolbarAccount = () => {
|
|
|
1925
1947
|
setMode(newMode);
|
|
1926
1948
|
closeMenu();
|
|
1927
1949
|
};
|
|
1950
|
+
const keycloak = useKeycloak();
|
|
1951
|
+
const user = keycloak.user;
|
|
1928
1952
|
const getModeText = () => {
|
|
1929
1953
|
switch (mode) {
|
|
1930
1954
|
case "light": {
|
|
1931
|
-
return
|
|
1955
|
+
return t2("Layout.Light");
|
|
1932
1956
|
}
|
|
1933
1957
|
case "dark": {
|
|
1934
|
-
return
|
|
1958
|
+
return t2("Layout.Dark");
|
|
1935
1959
|
}
|
|
1936
1960
|
default: {
|
|
1937
|
-
return
|
|
1961
|
+
return t2("Layout.System");
|
|
1938
1962
|
}
|
|
1939
1963
|
}
|
|
1940
1964
|
};
|
|
1941
1965
|
const usernameInitials = () => {
|
|
1966
|
+
if (!user?.name) return "";
|
|
1942
1967
|
const splittedName = user.name.split(" ");
|
|
1943
1968
|
return `${splittedName[0][0]}${splittedName.length > 1 ? splittedName[1][0] : ""}`;
|
|
1944
1969
|
};
|
|
@@ -1947,63 +1972,61 @@ var ToolbarAccount = () => {
|
|
|
1947
1972
|
setAnchorElement(void 0);
|
|
1948
1973
|
setTimeout(() => setTab("settings"), 300);
|
|
1949
1974
|
};
|
|
1950
|
-
const login = () => user.login();
|
|
1951
|
-
const logout = () => user.logout();
|
|
1952
1975
|
const changeTab = (newTab) => () => setTab(newTab);
|
|
1953
|
-
const settings = /* @__PURE__ */ jsxs6(List, { component: "nav", subheader: /* @__PURE__ */ jsx14(ListSubheader, { sx: { backgroundColor: "transparent" }, children:
|
|
1976
|
+
const settings = /* @__PURE__ */ jsxs6(List, { component: "nav", subheader: /* @__PURE__ */ jsx14(ListSubheader, { sx: { backgroundColor: "transparent" }, children: t2("Layout.Settings") }), children: [
|
|
1954
1977
|
/* @__PURE__ */ jsxs6(ListItemButton, { onClick: changeTab("theme"), sx: { py: 0.3 }, children: [
|
|
1955
1978
|
/* @__PURE__ */ jsx14(ListItemIcon, { children: /* @__PURE__ */ jsx14(Brightness4, {}) }),
|
|
1956
|
-
/* @__PURE__ */ jsx14(ListItemText, { primary:
|
|
1979
|
+
/* @__PURE__ */ jsx14(ListItemText, { primary: t2("Layout.Appearance"), secondary: getModeText() }),
|
|
1957
1980
|
/* @__PURE__ */ jsx14(ChevronRight, {})
|
|
1958
1981
|
] }),
|
|
1959
1982
|
/* @__PURE__ */ jsxs6(ListItemButton, { onClick: changeTab("language"), sx: { py: 0.3 }, children: [
|
|
1960
1983
|
/* @__PURE__ */ jsx14(ListItemIcon, { children: /* @__PURE__ */ jsx14(Translate, {}) }),
|
|
1961
|
-
/* @__PURE__ */ jsx14(ListItemText, { primary:
|
|
1984
|
+
/* @__PURE__ */ jsx14(ListItemText, { primary: t2("Layout.Language"), secondary: i18n2.resolvedLanguage === "en" ? "English" : "\u010Ce\u0161tina" }),
|
|
1962
1985
|
/* @__PURE__ */ jsx14(ChevronRight, {})
|
|
1963
1986
|
] })
|
|
1964
1987
|
] });
|
|
1965
1988
|
const theme = /* @__PURE__ */ jsxs6(List, { subheader: /* @__PURE__ */ jsxs6(ListSubheader, { onClick: changeTab("settings"), sx: { backgroundColor: "transparent", display: "flex", alignItems: "center", px: 1, cursor: "pointer" }, children: [
|
|
1966
|
-
/* @__PURE__ */ jsx14(
|
|
1989
|
+
/* @__PURE__ */ jsx14(IconButton2, { size: "small", sx: { mr: 0.5 }, children: /* @__PURE__ */ jsx14(ArrowBack, { fontSize: "small" }) }),
|
|
1967
1990
|
" ",
|
|
1968
|
-
|
|
1991
|
+
t2("Layout.Appearance")
|
|
1969
1992
|
] }), children: [
|
|
1970
1993
|
/* @__PURE__ */ jsxs6(ListItemButton, { onClick: changeMode("light"), disabled: mode === "light", children: [
|
|
1971
1994
|
/* @__PURE__ */ jsx14(ListItemIcon, { children: /* @__PURE__ */ jsx14(LightMode, {}) }),
|
|
1972
|
-
/* @__PURE__ */ jsx14(ListItemText, { primary:
|
|
1995
|
+
/* @__PURE__ */ jsx14(ListItemText, { primary: t2("Layout.Light") })
|
|
1973
1996
|
] }),
|
|
1974
1997
|
/* @__PURE__ */ jsxs6(ListItemButton, { onClick: changeMode("dark"), disabled: mode === "dark", children: [
|
|
1975
1998
|
/* @__PURE__ */ jsx14(ListItemIcon, { children: /* @__PURE__ */ jsx14(DarkMode, {}) }),
|
|
1976
|
-
/* @__PURE__ */ jsx14(ListItemText, { primary:
|
|
1999
|
+
/* @__PURE__ */ jsx14(ListItemText, { primary: t2("Layout.Dark") })
|
|
1977
2000
|
] }),
|
|
1978
2001
|
/* @__PURE__ */ jsxs6(ListItemButton, { onClick: changeMode("system"), disabled: mode === "system", children: [
|
|
1979
2002
|
/* @__PURE__ */ jsx14(ListItemIcon, { children: /* @__PURE__ */ jsx14(SettingsBrightness, {}) }),
|
|
1980
|
-
/* @__PURE__ */ jsx14(ListItemText, { primary:
|
|
2003
|
+
/* @__PURE__ */ jsx14(ListItemText, { primary: t2("Layout.System") })
|
|
1981
2004
|
] })
|
|
1982
2005
|
] });
|
|
1983
2006
|
const language = /* @__PURE__ */ jsxs6(List, { subheader: /* @__PURE__ */ jsxs6(ListSubheader, { onClick: changeTab("settings"), sx: { backgroundColor: "transparent", display: "flex", alignItems: "center", px: 1, cursor: "pointer" }, children: [
|
|
1984
|
-
/* @__PURE__ */ jsx14(
|
|
2007
|
+
/* @__PURE__ */ jsx14(IconButton2, { size: "small", sx: { mr: 0.5 }, children: /* @__PURE__ */ jsx14(ArrowBack, { fontSize: "small" }) }),
|
|
1985
2008
|
" ",
|
|
1986
|
-
|
|
2009
|
+
t2("Layout.Language")
|
|
1987
2010
|
] }), children: [
|
|
1988
2011
|
/* @__PURE__ */ jsx14(ListItemButton, { onClick: changeLanguage("en"), disabled: i18n2.resolvedLanguage === "en", children: /* @__PURE__ */ jsx14(ListItemText, { primary: "English" }) }),
|
|
1989
2012
|
/* @__PURE__ */ jsx14(ListItemButton, { onClick: changeLanguage("cs"), disabled: i18n2.resolvedLanguage === "cs", children: /* @__PURE__ */ jsx14(ListItemText, { primary: "\u010Ce\u0161tina" }) })
|
|
1990
2013
|
] });
|
|
1991
2014
|
return /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
1992
|
-
/* @__PURE__ */ jsx14(
|
|
2015
|
+
/* @__PURE__ */ jsx14(IconButton2, { size: "small", onClick: openMenu, children: user?.name ? /* @__PURE__ */ jsx14(Avatar, { sx: { width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 }, bgcolor: "primary.main" }, children: /* @__PURE__ */ jsx14(Typography6, { variant: "subtitle2", sx: { fontWeight: "bold", lineHeight: 0 }, children: usernameInitials() }) }) : /* @__PURE__ */ jsx14(AccountCircle, {}) }),
|
|
1993
2016
|
/* @__PURE__ */ jsx14(Menu, { anchorEl: anchorElement, open, onClose: closeMenu, children: /* @__PURE__ */ jsxs6(Box3, { sx: { width: 240 }, children: [
|
|
1994
|
-
/* @__PURE__ */ jsx14(List, { children: user
|
|
2017
|
+
/* @__PURE__ */ jsx14(List, { children: user?.name ? /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
1995
2018
|
/* @__PURE__ */ jsx14(ListItem, { children: /* @__PURE__ */ jsx14(ListItemText, { primary: user.name, secondary: /* @__PURE__ */ jsxs6("span", { children: [
|
|
1996
2019
|
/* @__PURE__ */ jsx14("span", { children: user.employeeId }),
|
|
1997
2020
|
/* @__PURE__ */ jsx14("br", {}),
|
|
1998
2021
|
/* @__PURE__ */ jsx14("span", { children: user.department })
|
|
1999
2022
|
] }) }) }),
|
|
2000
|
-
/* @__PURE__ */ jsxs6(ListItemButton, { onClick: logout, children: [
|
|
2023
|
+
/* @__PURE__ */ jsxs6(ListItemButton, { onClick: () => keycloak.logout(), children: [
|
|
2001
2024
|
/* @__PURE__ */ jsx14(ListItemIcon, { children: /* @__PURE__ */ jsx14(Logout, { color: "error" }) }),
|
|
2002
|
-
/* @__PURE__ */ jsx14(ListItemText, { primary:
|
|
2025
|
+
/* @__PURE__ */ jsx14(ListItemText, { primary: t2("Layout.Logout") })
|
|
2003
2026
|
] })
|
|
2004
|
-
] }) : /* @__PURE__ */ jsxs6(ListItemButton, { onClick: login, children: [
|
|
2027
|
+
] }) : /* @__PURE__ */ jsxs6(ListItemButton, { onClick: () => keycloak.login(), children: [
|
|
2005
2028
|
/* @__PURE__ */ jsx14(ListItemIcon, { children: /* @__PURE__ */ jsx14(Login, { color: "success" }) }),
|
|
2006
|
-
/* @__PURE__ */ jsx14(ListItemText, { primary:
|
|
2029
|
+
/* @__PURE__ */ jsx14(ListItemText, { primary: t2("Layout.LogIn") })
|
|
2007
2030
|
] }) }),
|
|
2008
2031
|
tab === "settings" && settings,
|
|
2009
2032
|
tab === "theme" && theme,
|
|
@@ -2019,48 +2042,8 @@ import { csCZ, enUS } from "@mui/material/locale";
|
|
|
2019
2042
|
import { csCZ as dataGridCsCz, enUS as dataGridEnUs } from "@mui/x-data-grid-premium/locales";
|
|
2020
2043
|
import { csCZ as datePickersCsCz, enUS as datePickersEnUs } from "@mui/x-date-pickers-pro/locales";
|
|
2021
2044
|
import { useTranslation as useTranslation4 } from "react-i18next";
|
|
2022
|
-
|
|
2023
|
-
// src/utils/ClientUtils.ts
|
|
2024
|
-
import { useQueryClient } from "@tanstack/react-query";
|
|
2025
|
-
import axios from "axios";
|
|
2026
|
-
var Platform = class {
|
|
2027
|
-
static isAndroid = /android/i.test(navigator.userAgent);
|
|
2028
|
-
static isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
|
|
2029
|
-
static isWindows = /windows/i.test(navigator.userAgent);
|
|
2030
|
-
static isMacOS = /Macintosh|MacIntel|MacPPC|Mac68K/.test(navigator.userAgent);
|
|
2031
|
-
};
|
|
2032
|
-
var getContrastTextColor = (color) => {
|
|
2033
|
-
const r = Number.parseInt(color.slice(1, 3), 16);
|
|
2034
|
-
const g = Number.parseInt(color.slice(3, 5), 16);
|
|
2035
|
-
const b = Number.parseInt(color.slice(5, 7), 16);
|
|
2036
|
-
const yiq = (r * 299 + g * 587 + b * 114) / 1e3;
|
|
2037
|
-
return yiq >= 128 ? "black" : "white";
|
|
2038
|
-
};
|
|
2039
|
-
var rootRouteHead = ({ title, themeColor }) => () => ({
|
|
2040
|
-
meta: [
|
|
2041
|
-
{ charSet: "utf-8" },
|
|
2042
|
-
{ name: "viewport", content: "width=device-width, initial-scale=1" },
|
|
2043
|
-
{ title },
|
|
2044
|
-
{ name: "og:type", content: "website" },
|
|
2045
|
-
{ name: "og:title", content: title },
|
|
2046
|
-
{ name: "og:image", content: "/favicon-32x32.png" }
|
|
2047
|
-
],
|
|
2048
|
-
links: [
|
|
2049
|
-
{ rel: "apple-touch-icon", sizes: "180x180", href: "/apple-touch-icon.png" },
|
|
2050
|
-
{ rel: "icon", type: "image/png", sizes: "32x32", href: "/favicon-32x32.png" },
|
|
2051
|
-
{ rel: "icon", type: "image/png", sizes: "16x16", href: "/favicon-16x16.png" },
|
|
2052
|
-
{ rel: "manifest", href: "/site.webmanifest", name: title, theme_color: themeColor },
|
|
2053
|
-
{ rel: "icon", href: "/favicon.ico" }
|
|
2054
|
-
]
|
|
2055
|
-
});
|
|
2056
|
-
var wczApiClient = axios.create();
|
|
2057
|
-
wczApiClient.interceptors.request.use(async (config) => {
|
|
2058
|
-
return config;
|
|
2059
|
-
});
|
|
2060
2045
|
var WISTRON_PRIMARY_COLOR = "#00506E";
|
|
2061
2046
|
var WISTRON_SECONDARY_COLOR = "#64DC00";
|
|
2062
|
-
|
|
2063
|
-
// src/hooks/ThemeHook.ts
|
|
2064
2047
|
var useGetTheme = (theme) => {
|
|
2065
2048
|
const { i18n: i18n2 } = useTranslation4();
|
|
2066
2049
|
return createTheme(
|
|
@@ -2110,11 +2093,6 @@ var useGetTheme = (theme) => {
|
|
|
2110
2093
|
};
|
|
2111
2094
|
}
|
|
2112
2095
|
},
|
|
2113
|
-
MuiTextField: {
|
|
2114
|
-
defaultProps: {
|
|
2115
|
-
fullWidth: true
|
|
2116
|
-
}
|
|
2117
|
-
},
|
|
2118
2096
|
MuiTableContainer: {
|
|
2119
2097
|
styleOverrides: {
|
|
2120
2098
|
root: ({ theme: theme2 }) => ({
|
|
@@ -2140,16 +2118,6 @@ var useGetTheme = (theme) => {
|
|
|
2140
2118
|
})
|
|
2141
2119
|
}
|
|
2142
2120
|
},
|
|
2143
|
-
MuiDialog: {
|
|
2144
|
-
defaultProps: {
|
|
2145
|
-
fullWidth: true
|
|
2146
|
-
}
|
|
2147
|
-
},
|
|
2148
|
-
MuiContainer: {
|
|
2149
|
-
defaultProps: {
|
|
2150
|
-
maxWidth: false
|
|
2151
|
-
}
|
|
2152
|
-
},
|
|
2153
2121
|
...theme?.components
|
|
2154
2122
|
}
|
|
2155
2123
|
},
|
|
@@ -2159,38 +2127,54 @@ var useGetTheme = (theme) => {
|
|
|
2159
2127
|
);
|
|
2160
2128
|
};
|
|
2161
2129
|
|
|
2162
|
-
// src/
|
|
2163
|
-
import
|
|
2130
|
+
// src/utils/i18n.ts
|
|
2131
|
+
import i18n from "i18next";
|
|
2132
|
+
import { initReactI18next } from "react-i18next";
|
|
2133
|
+
import HttpBackend from "i18next-http-backend";
|
|
2134
|
+
import LanguageDetector from "i18next-browser-languagedetector";
|
|
2135
|
+
import { z } from "zod";
|
|
2136
|
+
import { zodI18nMap } from "zod-i18n-map";
|
|
2137
|
+
import zodCsTranslations from "zod-i18n-map/locales/cs/zod.json";
|
|
2138
|
+
import zodEnTranslations from "zod-i18n-map/locales/en/zod.json";
|
|
2139
|
+
import { default as default2 } from "i18next";
|
|
2164
2140
|
i18n.use(HttpBackend).use(LanguageDetector).use(initReactI18next).init({
|
|
2165
2141
|
fallbackLng: "en",
|
|
2166
2142
|
interpolation: {
|
|
2167
2143
|
escapeValue: false
|
|
2144
|
+
},
|
|
2145
|
+
react: {
|
|
2146
|
+
useSuspense: false
|
|
2168
2147
|
}
|
|
2169
2148
|
});
|
|
2170
2149
|
i18n.addResourceBundle("en", "zod", zodEnTranslations);
|
|
2171
2150
|
i18n.addResourceBundle("cs", "zod", zodCsTranslations);
|
|
2172
2151
|
z.setErrorMap(zodI18nMap);
|
|
2152
|
+
|
|
2153
|
+
// src/providers/LayoutProvider.tsx
|
|
2154
|
+
import { jsx as jsx15, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2173
2155
|
var LayoutProvider = (props) => {
|
|
2174
2156
|
const rootRouterState = useRouterState({ select: (s) => s.matches[0] });
|
|
2175
2157
|
const theme = useGetTheme(props.theme);
|
|
2176
|
-
const { t
|
|
2158
|
+
const { t: t2 } = useTranslation5();
|
|
2177
2159
|
const isFetching = !!useIsFetching();
|
|
2178
2160
|
const isMutating = !!useIsMutating();
|
|
2179
2161
|
const isLargeScreen = useMediaQuery(theme.breakpoints.up("sm"));
|
|
2180
|
-
const
|
|
2181
|
-
const navigation = props.getNavigation
|
|
2162
|
+
const [user, setUser] = useState2({ employeeId: "", name: "Unknown", department: "", company: "", category: "" });
|
|
2163
|
+
const navigation = props.getNavigation?.({ user, t: t2 });
|
|
2182
2164
|
const appTitle = rootRouterState.meta?.find((meta) => meta?.title)?.title;
|
|
2183
2165
|
if (!appTitle)
|
|
2184
2166
|
throw new Error("Title is not defined in the RootRoute head.");
|
|
2185
|
-
return /* @__PURE__ */ jsx15(LocalizationProvider, { dateAdapter: AdapterDayjs, adapterLocale:
|
|
2186
|
-
confirm:
|
|
2187
|
-
cancel:
|
|
2188
|
-
alert:
|
|
2189
|
-
}, children: /* @__PURE__ */ jsx15(NotificationsProvider, { slotProps: { snackbar: { anchorOrigin: { vertical: isLargeScreen ? "top" : "bottom", horizontal: "center" } } }, children: /* @__PURE__ */ jsx15(LayoutContext.Provider, { value: { appTitle }, children: /* @__PURE__ */ jsxs7(
|
|
2167
|
+
return /* @__PURE__ */ jsx15(I18nextProvider, { i18n: default2, children: /* @__PURE__ */ jsx15(LocalizationProvider, { dateAdapter: AdapterDayjs, adapterLocale: default2.resolvedLanguage, children: /* @__PURE__ */ jsx15(TanStackRouterAppProvider, { navigation, theme, localeText: {
|
|
2168
|
+
confirm: t2("Layout.Dialog.Confirm"),
|
|
2169
|
+
cancel: t2("Layout.Dialog.Cancel"),
|
|
2170
|
+
alert: t2("Layout.Dialog.Alert")
|
|
2171
|
+
}, children: /* @__PURE__ */ jsx15(NotificationsProvider, { slotProps: { snackbar: { anchorOrigin: { vertical: isLargeScreen ? "top" : "bottom", horizontal: "center" } } }, children: /* @__PURE__ */ jsx15(LayoutContext.Provider, { value: { appTitle, user: { get: user, set: setUser } }, children: /* @__PURE__ */ jsxs7(
|
|
2190
2172
|
DashboardLayout,
|
|
2191
2173
|
{
|
|
2192
|
-
defaultSidebarCollapsed: true,
|
|
2193
|
-
|
|
2174
|
+
defaultSidebarCollapsed: props.defaultSidebarCollapsed ?? true,
|
|
2175
|
+
disableCollapsibleSidebar: props.disableCollapsibleSidebar,
|
|
2176
|
+
sidebarExpandedWidth: props.sidebarExpandedWidth,
|
|
2177
|
+
hideNavigation: navigation?.length === 0,
|
|
2194
2178
|
slots: {
|
|
2195
2179
|
toolbarActions: () => null,
|
|
2196
2180
|
toolbarAccount: ToolbarAccount,
|
|
@@ -2198,15 +2182,52 @@ var LayoutProvider = (props) => {
|
|
|
2198
2182
|
},
|
|
2199
2183
|
children: [
|
|
2200
2184
|
props.children,
|
|
2201
|
-
/* @__PURE__ */ jsx15(DevelopmentBanner, { hasNavigationRoutes: navigation.length > 0 }),
|
|
2202
2185
|
(isFetching || isMutating) && /* @__PURE__ */ jsx15(LinearProgress, { sx: { position: "fixed", top: { xs: 56, sm: 64 }, left: 0, right: 0 } })
|
|
2203
2186
|
]
|
|
2204
2187
|
}
|
|
2205
|
-
) }) }) }) });
|
|
2188
|
+
) }) }) }) }) });
|
|
2206
2189
|
};
|
|
2207
2190
|
|
|
2208
2191
|
// src/index.ts
|
|
2209
|
-
import { uuidv7 } from "uuidv7";
|
|
2192
|
+
import { uuidv7 as uuidv72 } from "uuidv7";
|
|
2193
|
+
|
|
2194
|
+
// src/utils/ClientUtils.ts
|
|
2195
|
+
import axios from "axios";
|
|
2196
|
+
var Platform = class {
|
|
2197
|
+
static get isAndroid() {
|
|
2198
|
+
return /android/i.test(this.userAgent);
|
|
2199
|
+
}
|
|
2200
|
+
static get isIOS() {
|
|
2201
|
+
return /iPad|iPhone|iPod/.test(this.userAgent);
|
|
2202
|
+
}
|
|
2203
|
+
static get isWindows() {
|
|
2204
|
+
return /windows/i.test(this.userAgent);
|
|
2205
|
+
}
|
|
2206
|
+
static get isMacOS() {
|
|
2207
|
+
return /Macintosh|MacIntel|MacPPC|Mac68K/.test(this.userAgent);
|
|
2208
|
+
}
|
|
2209
|
+
static get userAgent() {
|
|
2210
|
+
return typeof navigator === "undefined" ? "" : navigator.userAgent;
|
|
2211
|
+
}
|
|
2212
|
+
};
|
|
2213
|
+
var rootRouteHead = ({ title }) => () => ({
|
|
2214
|
+
meta: [
|
|
2215
|
+
{ charSet: "utf-8" },
|
|
2216
|
+
{ name: "viewport", content: "width=device-width, initial-scale=1" },
|
|
2217
|
+
{ title },
|
|
2218
|
+
{ name: "og:type", content: "website" },
|
|
2219
|
+
{ name: "og:title", content: title },
|
|
2220
|
+
{ name: "og:image", content: "/favicon-32x32.png" }
|
|
2221
|
+
],
|
|
2222
|
+
links: [
|
|
2223
|
+
{ rel: "apple-touch-icon", sizes: "180x180", href: "/apple-touch-icon.png" },
|
|
2224
|
+
{ rel: "icon", type: "image/png", sizes: "32x32", href: "/favicon-32x32.png" },
|
|
2225
|
+
{ rel: "icon", type: "image/png", sizes: "16x16", href: "/favicon-16x16.png" },
|
|
2226
|
+
{ rel: "manifest", href: "/site.webmanifest" },
|
|
2227
|
+
{ rel: "icon", href: "/favicon.ico" }
|
|
2228
|
+
]
|
|
2229
|
+
});
|
|
2230
|
+
var wczApiClient = axios.create();
|
|
2210
2231
|
|
|
2211
2232
|
// src/hooks/FormHooks.ts
|
|
2212
2233
|
import { createFormHook, createFormHookContexts } from "@tanstack/react-form";
|
|
@@ -2512,12 +2533,14 @@ import { useDialogs } from "@toolpad/core/useDialogs";
|
|
|
2512
2533
|
import { useNotifications } from "@toolpad/core/useNotifications";
|
|
2513
2534
|
import { useLocalStorageState } from "@toolpad/core/useLocalStorageState";
|
|
2514
2535
|
import { useTranslation as useTranslation6 } from "react-i18next";
|
|
2536
|
+
import { t } from "i18next";
|
|
2515
2537
|
|
|
2516
2538
|
// src/hooks/FileHooks.ts
|
|
2517
|
-
import { useMutation, useQuery, useQueryClient
|
|
2539
|
+
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
2518
2540
|
import saveAs from "file-saver";
|
|
2519
2541
|
import { useState as useState3 } from "react";
|
|
2520
2542
|
import { Upload as TusUpload } from "tus-js-client";
|
|
2543
|
+
import { uuidv7 } from "uuidv7";
|
|
2521
2544
|
var BASE_URL = import.meta.env.VITE_FILE_API_BASE_URL;
|
|
2522
2545
|
var QUERY_KEY = "Files";
|
|
2523
2546
|
var HOUR = 1e3 * 60 * 60;
|
|
@@ -2599,7 +2622,7 @@ var useOpenFile = (options) => {
|
|
|
2599
2622
|
};
|
|
2600
2623
|
var useUpdateFileMeta = (options) => {
|
|
2601
2624
|
const { appTitle } = useLayout();
|
|
2602
|
-
const queryClient =
|
|
2625
|
+
const queryClient = useQueryClient();
|
|
2603
2626
|
return useMutation({
|
|
2604
2627
|
...options,
|
|
2605
2628
|
mutationFn: (meta) => wczApiClient.request({
|
|
@@ -2612,7 +2635,7 @@ var useUpdateFileMeta = (options) => {
|
|
|
2612
2635
|
};
|
|
2613
2636
|
var useDeleteFile = (options) => {
|
|
2614
2637
|
const { appTitle } = useLayout();
|
|
2615
|
-
const queryClient =
|
|
2638
|
+
const queryClient = useQueryClient();
|
|
2616
2639
|
return useMutation({
|
|
2617
2640
|
...options,
|
|
2618
2641
|
mutationFn: (meta) => wczApiClient.request({
|
|
@@ -2624,7 +2647,7 @@ var useDeleteFile = (options) => {
|
|
|
2624
2647
|
};
|
|
2625
2648
|
var useDeleteFiles = (options) => {
|
|
2626
2649
|
const { appTitle } = useLayout();
|
|
2627
|
-
const queryClient =
|
|
2650
|
+
const queryClient = useQueryClient();
|
|
2628
2651
|
return useMutation({
|
|
2629
2652
|
...options,
|
|
2630
2653
|
mutationFn: (subId) => wczApiClient.request({
|
|
@@ -2636,32 +2659,39 @@ var useDeleteFiles = (options) => {
|
|
|
2636
2659
|
};
|
|
2637
2660
|
var useUploadFile = ({ subId, onSuccess, onError }) => {
|
|
2638
2661
|
const { appTitle } = useLayout();
|
|
2639
|
-
const [
|
|
2640
|
-
const queryClient =
|
|
2662
|
+
const [progress, setProgress] = useState3(0);
|
|
2663
|
+
const queryClient = useQueryClient();
|
|
2641
2664
|
const mutate = async (file) => {
|
|
2642
2665
|
if (!subId) throw new Error("subId is required for file upload");
|
|
2666
|
+
const metadata = {
|
|
2667
|
+
id: uuidv7(),
|
|
2668
|
+
appName: appTitle,
|
|
2669
|
+
subId,
|
|
2670
|
+
fileName: file.name
|
|
2671
|
+
};
|
|
2643
2672
|
const upload = new TusUpload(file, {
|
|
2644
2673
|
endpoint: `${BASE_URL}/v1/upload`,
|
|
2645
2674
|
chunkSize: 1048576,
|
|
2646
2675
|
// 1 MB
|
|
2647
2676
|
metadata: {
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2677
|
+
id: metadata.id,
|
|
2678
|
+
appName: metadata.appName,
|
|
2679
|
+
subId: metadata.subId,
|
|
2680
|
+
fileName: metadata.fileName,
|
|
2681
|
+
fileExtension: file.type
|
|
2652
2682
|
},
|
|
2653
2683
|
//headers: { "Authorization": `Bearer ${await getToken()}` }, //TODO: implement token retrieval
|
|
2654
2684
|
onError: (error) => {
|
|
2655
|
-
|
|
2685
|
+
setProgress(0);
|
|
2656
2686
|
onError?.(error);
|
|
2657
2687
|
},
|
|
2658
2688
|
onProgress: (bytesUploaded, bytesTotal) => {
|
|
2659
|
-
|
|
2689
|
+
setProgress(bytesUploaded / bytesTotal * 100);
|
|
2660
2690
|
},
|
|
2661
2691
|
onSuccess: () => {
|
|
2662
|
-
|
|
2692
|
+
setProgress(0);
|
|
2663
2693
|
queryClient.invalidateQueries({ queryKey: [QUERY_KEY, "meta"], exact: false });
|
|
2664
|
-
onSuccess?.(
|
|
2694
|
+
onSuccess?.(metadata);
|
|
2665
2695
|
}
|
|
2666
2696
|
});
|
|
2667
2697
|
const previousUploads = await upload.findPreviousUploads();
|
|
@@ -2670,10 +2700,48 @@ var useUploadFile = ({ subId, onSuccess, onError }) => {
|
|
|
2670
2700
|
}
|
|
2671
2701
|
upload.start();
|
|
2672
2702
|
};
|
|
2673
|
-
return { mutate,
|
|
2703
|
+
return { mutate, progress };
|
|
2674
2704
|
};
|
|
2705
|
+
function useOptimisticFileMutation(subId, options) {
|
|
2706
|
+
const [uploadedFileIds, setUploadedFileIds] = useState3([]);
|
|
2707
|
+
const [deletedFileIds, setDeletedFileIds] = useState3([]);
|
|
2708
|
+
const { data } = useGetFileMetas(subId, options);
|
|
2709
|
+
const { mutate: deleteAttachment } = useDeleteFile();
|
|
2710
|
+
function addFile(meta) {
|
|
2711
|
+
setUploadedFileIds((previous) => [...previous, meta.id]);
|
|
2712
|
+
}
|
|
2713
|
+
function removeFile(meta) {
|
|
2714
|
+
const added = uploadedFileIds.includes(meta.id);
|
|
2715
|
+
if (added) {
|
|
2716
|
+
setUploadedFileIds((previous) => previous.filter((file) => file !== meta.id));
|
|
2717
|
+
} else {
|
|
2718
|
+
setDeletedFileIds((previous) => [...previous, meta.id]);
|
|
2719
|
+
}
|
|
2720
|
+
}
|
|
2721
|
+
function save() {
|
|
2722
|
+
for (const id of deletedFileIds) {
|
|
2723
|
+
const meta = data.find((meta2) => meta2.id === id);
|
|
2724
|
+
if (!meta) continue;
|
|
2725
|
+
deleteAttachment(meta);
|
|
2726
|
+
}
|
|
2727
|
+
}
|
|
2728
|
+
function undo() {
|
|
2729
|
+
for (const id of uploadedFileIds) {
|
|
2730
|
+
const meta = data.find((meta2) => meta2.id === id);
|
|
2731
|
+
if (!meta) continue;
|
|
2732
|
+
deleteAttachment(meta);
|
|
2733
|
+
}
|
|
2734
|
+
}
|
|
2735
|
+
return {
|
|
2736
|
+
addFile,
|
|
2737
|
+
removeFile,
|
|
2738
|
+
save,
|
|
2739
|
+
undo
|
|
2740
|
+
};
|
|
2741
|
+
}
|
|
2675
2742
|
export {
|
|
2676
2743
|
ChipInputCell,
|
|
2744
|
+
Dropzone,
|
|
2677
2745
|
EditableColumnHeader,
|
|
2678
2746
|
LayoutProvider,
|
|
2679
2747
|
PageContainer,
|
|
@@ -2687,10 +2755,8 @@ export {
|
|
|
2687
2755
|
RouterNotFound,
|
|
2688
2756
|
RouterTab,
|
|
2689
2757
|
TypographyWithIcon,
|
|
2690
|
-
WISTRON_PRIMARY_COLOR,
|
|
2691
|
-
WISTRON_SECONDARY_COLOR,
|
|
2692
|
-
getContrastTextColor,
|
|
2693
2758
|
rootRouteHead,
|
|
2759
|
+
t,
|
|
2694
2760
|
useDeleteFile,
|
|
2695
2761
|
useDeleteFiles,
|
|
2696
2762
|
useDialogs,
|
|
@@ -2704,10 +2770,11 @@ export {
|
|
|
2704
2770
|
useLocalStorageState,
|
|
2705
2771
|
useNotifications,
|
|
2706
2772
|
useOpenFile,
|
|
2773
|
+
useOptimisticFileMutation,
|
|
2707
2774
|
useTranslation6 as useTranslation,
|
|
2708
2775
|
useUpdateFileMeta,
|
|
2709
2776
|
useUploadFile,
|
|
2710
|
-
uuidv7,
|
|
2777
|
+
uuidv72 as uuidv7,
|
|
2711
2778
|
wczApiClient,
|
|
2712
2779
|
withLayoutForm
|
|
2713
2780
|
};
|