wcz-layout 6.7.2 → 9.4.2
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/Approval-Co6D1BNq.mjs +194 -0
- package/dist/Approval-Co6D1BNq.mjs.map +1 -0
- package/dist/DialogsContext-DLqA8RJ_.mjs +7 -0
- package/dist/DialogsContext-DLqA8RJ_.mjs.map +1 -0
- package/dist/Email-BzQQkbe9.mjs +20 -0
- package/dist/Email-BzQQkbe9.mjs.map +1 -0
- package/dist/FileMeta-DDqUju1Y.mjs +19 -0
- package/dist/FileMeta-DDqUju1Y.mjs.map +1 -0
- package/dist/FileMeta-ILLTOjaM.d.mts +20 -0
- package/dist/NotificationContext-CgwUOeW0.mjs +7 -0
- package/dist/NotificationContext-CgwUOeW0.mjs.map +1 -0
- package/dist/QueryClientParam-CzaM3akD.d.mts +11 -0
- package/dist/RouterListItemButton-owZVvuC_.mjs +78 -0
- package/dist/RouterListItemButton-owZVvuC_.mjs.map +1 -0
- package/dist/User-1gKoYJvW.d.mts +12 -0
- package/dist/auth.d.mts +25 -0
- package/dist/auth.mjs +88 -0
- package/dist/auth.mjs.map +1 -0
- package/dist/authMiddleware--HdlhhZO.mjs +78 -0
- package/dist/authMiddleware--HdlhhZO.mjs.map +1 -0
- package/dist/components.d.mts +107 -0
- package/dist/components.mjs +1500 -0
- package/dist/components.mjs.map +1 -0
- package/dist/data/client.d.mts +3217 -0
- package/dist/data/client.mjs +187 -0
- package/dist/data/client.mjs.map +1 -0
- package/dist/data/server.d.mts +19 -0
- package/dist/data/server.mjs +16 -0
- package/dist/data/server.mjs.map +1 -0
- package/dist/entra-s4ZjHq5o.mjs +101 -0
- package/dist/entra-s4ZjHq5o.mjs.map +1 -0
- package/dist/env-CoveIivr.mjs +30 -0
- package/dist/env-CoveIivr.mjs.map +1 -0
- package/dist/file-C5-a_6W6.mjs +148 -0
- package/dist/file-C5-a_6W6.mjs.map +1 -0
- package/dist/file-DM1x40eJ.mjs +179 -0
- package/dist/file-DM1x40eJ.mjs.map +1 -0
- package/dist/hooks.d.mts +226 -0
- package/dist/hooks.mjs +1087 -0
- package/dist/hooks.mjs.map +1 -0
- package/dist/index.d.mts +48 -0
- package/dist/index.mjs +1944 -0
- package/dist/index.mjs.map +1 -0
- package/dist/middleware.d.mts +46 -0
- package/dist/middleware.mjs +27 -0
- package/dist/middleware.mjs.map +1 -0
- package/dist/models.d.mts +598 -0
- package/dist/models.mjs +74 -0
- package/dist/models.mjs.map +1 -0
- package/dist/msalServer-CkNOOjjH.mjs +44 -0
- package/dist/msalServer-CkNOOjjH.mjs.map +1 -0
- package/dist/peoplesoft-DIe8H1Nu.mjs +240 -0
- package/dist/peoplesoft-DIe8H1Nu.mjs.map +1 -0
- package/dist/peoplesoft-gKd-Jh5L.d.mts +1219 -0
- package/dist/useDialogs-BUzVrTSP.mjs +248 -0
- package/dist/useDialogs-BUzVrTSP.mjs.map +1 -0
- package/dist/user-Cen43mlr.d.mts +19 -0
- package/dist/utils-2XiozDlV.mjs +156 -0
- package/dist/utils-2XiozDlV.mjs.map +1 -0
- package/dist/utils-BuWEQOuy.d.mts +65 -0
- package/dist/utils.d.mts +5 -0
- package/dist/utils.mjs +5 -0
- package/dist/vite.d.mts +7 -0
- package/dist/vite.mjs +182 -0
- package/dist/vite.mjs.map +1 -0
- package/package.json +129 -62
- package/skills/client-db/SKILL.md +93 -0
- package/skills/data-grid/SKILL.md +142 -0
- package/skills/db-schema/SKILL.md +71 -0
- package/skills/dialogs/SKILL.md +79 -0
- package/skills/forms/SKILL.md +82 -0
- package/skills/general/SKILL.md +17 -0
- package/skills/notifications/SKILL.md +43 -0
- package/skills/routing/SKILL.md +128 -0
- package/skills/server-functions/SKILL.md +113 -0
- package/skills/services/SKILL.md +30 -0
- package/skills/services/docs/approval.md +257 -0
- package/skills/services/docs/email.md +32 -0
- package/skills/services/docs/file.md +81 -0
- package/skills/services/docs/peoplesoft.md +110 -0
- package/skills/start/SKILL.md +46 -0
- package/skills/start/steps/01-git-setup.md +11 -0
- package/skills/start/steps/02-project-name-setup.md +14 -0
- package/skills/start/steps/03-apm-setup.md +208 -0
- package/skills/start/steps/04-database-setup.md +39 -0
- package/skills/start/steps/05-entra-setup.md +59 -0
- package/skills/start/steps/06-vault-setup.md +70 -0
- package/skills/start/steps/07-generate-favicon.md +10 -0
- package/skills/start/steps/08-commit.md +15 -0
- package/dist/src/components/Layout.d.ts +0 -16
- package/dist/src/components/Layout.js +0 -122
- package/dist/src/components/Layout.js.map +0 -1
- package/dist/src/components/dataGrid/ChipInputCell.d.ts +0 -9
- package/dist/src/components/dataGrid/ChipInputCell.js +0 -17
- package/dist/src/components/dataGrid/ChipInputCell.js.map +0 -1
- package/dist/src/components/dataGrid/EditableColumnHeader.d.ts +0 -2
- package/dist/src/components/dataGrid/EditableColumnHeader.js +0 -7
- package/dist/src/components/dataGrid/EditableColumnHeader.js.map +0 -1
- package/dist/src/components/dataGrid/GridToolbar.d.ts +0 -8
- package/dist/src/components/dataGrid/GridToolbar.js +0 -40
- package/dist/src/components/dataGrid/GridToolbar.js.map +0 -1
- package/dist/src/components/dataGrid/TableContainer.d.ts +0 -3
- package/dist/src/components/dataGrid/TableContainer.js +0 -32
- package/dist/src/components/dataGrid/TableContainer.js.map +0 -1
- package/dist/src/components/form/FormAutocomplete.d.ts +0 -7
- package/dist/src/components/form/FormAutocomplete.js +0 -10
- package/dist/src/components/form/FormAutocomplete.js.map +0 -1
- package/dist/src/components/form/FormCheckbox.d.ts +0 -7
- package/dist/src/components/form/FormCheckbox.js +0 -11
- package/dist/src/components/form/FormCheckbox.js.map +0 -1
- package/dist/src/components/form/FormDatePicker.d.ts +0 -9
- package/dist/src/components/form/FormDatePicker.js +0 -19
- package/dist/src/components/form/FormDatePicker.js.map +0 -1
- package/dist/src/components/form/FormDateTimePicker.d.ts +0 -9
- package/dist/src/components/form/FormDateTimePicker.js +0 -19
- package/dist/src/components/form/FormDateTimePicker.js.map +0 -1
- package/dist/src/components/form/FormNumberField.d.ts +0 -12
- package/dist/src/components/form/FormNumberField.js +0 -12
- package/dist/src/components/form/FormNumberField.js.map +0 -1
- package/dist/src/components/form/FormRadioGroup.d.ts +0 -13
- package/dist/src/components/form/FormRadioGroup.js +0 -11
- package/dist/src/components/form/FormRadioGroup.js.map +0 -1
- package/dist/src/components/form/FormSlider.d.ts +0 -7
- package/dist/src/components/form/FormSlider.js +0 -11
- package/dist/src/components/form/FormSlider.js.map +0 -1
- package/dist/src/components/form/FormSubmitButton.d.ts +0 -5
- package/dist/src/components/form/FormSubmitButton.js +0 -13
- package/dist/src/components/form/FormSubmitButton.js.map +0 -1
- package/dist/src/components/form/FormSwitch.d.ts +0 -7
- package/dist/src/components/form/FormSwitch.js +0 -11
- package/dist/src/components/form/FormSwitch.js.map +0 -1
- package/dist/src/components/form/FormTextField.d.ts +0 -7
- package/dist/src/components/form/FormTextField.js +0 -11
- package/dist/src/components/form/FormTextField.js.map +0 -1
- package/dist/src/components/layout/AccountMenu.d.ts +0 -9
- package/dist/src/components/layout/AccountMenu.js +0 -44
- package/dist/src/components/layout/AccountMenu.js.map +0 -1
- package/dist/src/components/layout/DevelopmentBanner.d.ts +0 -7
- package/dist/src/components/layout/DevelopmentBanner.js +0 -29
- package/dist/src/components/layout/DevelopmentBanner.js.map +0 -1
- package/dist/src/components/layout/ErrorPage.d.ts +0 -2
- package/dist/src/components/layout/ErrorPage.js +0 -25
- package/dist/src/components/layout/ErrorPage.js.map +0 -1
- package/dist/src/components/layout/LayoutDialog.d.ts +0 -12
- package/dist/src/components/layout/LayoutDialog.js +0 -12
- package/dist/src/components/layout/LayoutDialog.js.map +0 -1
- package/dist/src/components/layout/LayoutSnackbar.d.ts +0 -8
- package/dist/src/components/layout/LayoutSnackbar.js +0 -25
- package/dist/src/components/layout/LayoutSnackbar.js.map +0 -1
- package/dist/src/components/layout/NavigationDrawer.d.ts +0 -11
- package/dist/src/components/layout/NavigationDrawer.js +0 -70
- package/dist/src/components/layout/NavigationDrawer.js.map +0 -1
- package/dist/src/components/layout/NotificationMenu.d.ts +0 -8
- package/dist/src/components/layout/NotificationMenu.js +0 -26
- package/dist/src/components/layout/NotificationMenu.js.map +0 -1
- package/dist/src/components/layout/TypographyWithIcon.d.ts +0 -7
- package/dist/src/components/layout/TypographyWithIcon.js +0 -22
- package/dist/src/components/layout/TypographyWithIcon.js.map +0 -1
- package/dist/src/components/layout/Unauthorized.d.ts +0 -2
- package/dist/src/components/layout/Unauthorized.js +0 -26
- package/dist/src/components/layout/Unauthorized.js.map +0 -1
- package/dist/src/contexts/LayoutContext.d.ts +0 -40
- package/dist/src/contexts/LayoutContext.js +0 -60
- package/dist/src/contexts/LayoutContext.js.map +0 -1
- package/dist/src/contexts/UserContext.d.ts +0 -24
- package/dist/src/contexts/UserContext.js +0 -55
- package/dist/src/contexts/UserContext.js.map +0 -1
- package/dist/src/hooks/FormHooks.d.ts +0 -46
- package/dist/src/hooks/FormHooks.js +0 -31
- package/dist/src/hooks/FormHooks.js.map +0 -1
- package/dist/src/hooks/UseSnackbar.d.ts +0 -10
- package/dist/src/hooks/UseSnackbar.js +0 -23
- package/dist/src/hooks/UseSnackbar.js.map +0 -1
- package/dist/src/hooks/UseUser.d.ts +0 -10
- package/dist/src/hooks/UseUser.js +0 -25
- package/dist/src/hooks/UseUser.js.map +0 -1
- package/dist/src/index.d.ts +0 -20
- package/dist/src/index.js +0 -15
- package/dist/src/index.js.map +0 -1
- package/dist/src/models/Error.d.ts +0 -6
- package/dist/src/models/Error.js +0 -2
- package/dist/src/models/Error.js.map +0 -1
- package/dist/src/models/KeycloakSettings.d.ts +0 -8
- package/dist/src/models/KeycloakSettings.js +0 -2
- package/dist/src/models/KeycloakSettings.js.map +0 -1
- package/dist/src/models/LayoutPaletteColorOptions.d.ts +0 -6
- package/dist/src/models/LayoutPaletteColorOptions.js +0 -2
- package/dist/src/models/LayoutPaletteColorOptions.js.map +0 -1
- package/dist/src/models/LayoutRoute.d.ts +0 -14
- package/dist/src/models/LayoutRoute.js +0 -2
- package/dist/src/models/LayoutRoute.js.map +0 -1
- package/dist/src/models/Notification.d.ts +0 -9
- package/dist/src/models/Notification.js +0 -2
- package/dist/src/models/Notification.js.map +0 -1
- package/dist/src/models/PeoplesoftDepartment.d.ts +0 -14
- package/dist/src/models/PeoplesoftDepartment.js +0 -2
- package/dist/src/models/PeoplesoftDepartment.js.map +0 -1
- package/dist/src/models/PeoplesoftEmployee.d.ts +0 -34
- package/dist/src/models/PeoplesoftEmployee.js +0 -2
- package/dist/src/models/PeoplesoftEmployee.js.map +0 -1
- package/dist/src/models/Snackbar.d.ts +0 -15
- package/dist/src/models/Snackbar.js +0 -2
- package/dist/src/models/Snackbar.js.map +0 -1
- package/dist/src/models/User.d.ts +0 -27
- package/dist/src/models/User.js +0 -11
- package/dist/src/models/User.js.map +0 -1
- package/dist/src/models/types/EmployeeCategoryGroup.d.ts +0 -1
- package/dist/src/models/types/EmployeeCategoryGroup.js +0 -2
- package/dist/src/models/types/EmployeeCategoryGroup.js.map +0 -1
- package/dist/src/models/types/EmployeeStatus.d.ts +0 -1
- package/dist/src/models/types/EmployeeStatus.js +0 -2
- package/dist/src/models/types/EmployeeStatus.js.map +0 -1
- package/dist/src/utils/Auth.d.ts +0 -12
- package/dist/src/utils/Auth.js +0 -49
- package/dist/src/utils/Auth.js.map +0 -1
- package/dist/src/utils/Fetches.d.ts +0 -5
- package/dist/src/utils/Fetches.js +0 -66
- package/dist/src/utils/Fetches.js.map +0 -1
- package/dist/src/utils/FormUtils.d.ts +0 -7
- package/dist/src/utils/FormUtils.js +0 -9
- package/dist/src/utils/FormUtils.js.map +0 -1
- package/dist/src/utils/Helpers.d.ts +0 -11
- package/dist/src/utils/Helpers.js +0 -26
- package/dist/src/utils/Helpers.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/src/components/Layout.tsx +0 -183
- package/src/components/dataGrid/ChipInputCell.tsx +0 -31
- package/src/components/dataGrid/EditableColumnHeader.tsx +0 -7
- package/src/components/dataGrid/GridToolbar.tsx +0 -63
- package/src/components/dataGrid/TableContainer.tsx +0 -39
- package/src/components/form/FormAutocomplete.tsx +0 -34
- package/src/components/form/FormCheckbox.tsx +0 -32
- package/src/components/form/FormDatePicker.tsx +0 -34
- package/src/components/form/FormDateTimePicker.tsx +0 -34
- package/src/components/form/FormNumberField.tsx +0 -33
- package/src/components/form/FormRadioGroup.tsx +0 -43
- package/src/components/form/FormSlider.tsx +0 -28
- package/src/components/form/FormSubmitButton.tsx +0 -29
- package/src/components/form/FormSwitch.tsx +0 -32
- package/src/components/form/FormTextField.tsx +0 -26
- package/src/components/layout/AccountMenu.tsx +0 -160
- package/src/components/layout/DevelopmentBanner.tsx +0 -54
- package/src/components/layout/ErrorPage.tsx +0 -34
- package/src/components/layout/LayoutDialog.tsx +0 -50
- package/src/components/layout/LayoutSnackbar.tsx +0 -44
- package/src/components/layout/NavigationDrawer.tsx +0 -131
- package/src/components/layout/NotificationMenu.tsx +0 -76
- package/src/components/layout/TypographyWithIcon.tsx +0 -35
- package/src/components/layout/Unauthorized.tsx +0 -37
- package/src/contexts/LayoutContext.tsx +0 -127
- package/src/contexts/UserContext.tsx +0 -88
- package/src/hooks/FormHooks.ts +0 -33
- package/src/hooks/UseSnackbar.tsx +0 -28
- package/src/hooks/UseUser.tsx +0 -29
- package/src/index.ts +0 -27
- package/src/models/Error.tsx +0 -6
- package/src/models/KeycloakSettings.ts +0 -8
- package/src/models/LayoutPaletteColorOptions.tsx +0 -7
- package/src/models/LayoutRoute.ts +0 -15
- package/src/models/Notification.ts +0 -10
- package/src/models/PeoplesoftDepartment.ts +0 -15
- package/src/models/PeoplesoftEmployee.ts +0 -35
- package/src/models/Snackbar.ts +0 -16
- package/src/models/User.ts +0 -13
- package/src/models/types/EmployeeCategoryGroup.ts +0 -1
- package/src/models/types/EmployeeStatus.ts +0 -1
- package/src/utils/Auth.ts +0 -58
- package/src/utils/Fetches.ts +0 -83
- package/src/utils/FormUtils.ts +0 -22
- package/src/utils/Helpers.ts +0 -27
- package/tsconfig.json +0 -29
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { t as serverEnv } from "./env-CoveIivr.mjs";
|
|
2
|
+
import { l as getAccessToken } from "./utils-2XiozDlV.mjs";
|
|
3
|
+
import { t as getAppToken } from "./msalServer-CkNOOjjH.mjs";
|
|
4
|
+
import { r as apiMiddleware, t as authenticationMiddleware } from "./authMiddleware--HdlhhZO.mjs";
|
|
5
|
+
import { t as FileMetaSchema } from "./FileMeta-DDqUju1Y.mjs";
|
|
6
|
+
import { z as z$1 } from "zod";
|
|
7
|
+
import { createServerFn } from "@tanstack/react-start";
|
|
8
|
+
import { uuidv7 } from "uuidv7";
|
|
9
|
+
import { DefaultHttpStack, Upload } from "tus-js-client";
|
|
10
|
+
import { setResponseHeaders } from "@tanstack/react-start/server";
|
|
11
|
+
import https from "node:https";
|
|
12
|
+
import { Readable } from "node:stream";
|
|
13
|
+
//#region src/data/server/file.ts
|
|
14
|
+
const GetFileMetasSchema = z$1.object({
|
|
15
|
+
appName: z$1.string().min(1).max(255),
|
|
16
|
+
subId: z$1.uuid()
|
|
17
|
+
});
|
|
18
|
+
const FileSchema = z$1.object({
|
|
19
|
+
appName: z$1.string().min(1).max(255),
|
|
20
|
+
id: z$1.uuid()
|
|
21
|
+
});
|
|
22
|
+
const UpdateFileMetaSchema = FileMetaSchema.extend({ fileName: z$1.string().min(1).max(255) });
|
|
23
|
+
const DeleteFileSchema = FileSchema;
|
|
24
|
+
const BatchDeleteFilesSchema = GetFileMetasSchema;
|
|
25
|
+
const UploadFileMetaSchema = z$1.object({
|
|
26
|
+
appName: z$1.string().min(1).max(255),
|
|
27
|
+
subId: z$1.uuid(),
|
|
28
|
+
file: z$1.instanceof(File)
|
|
29
|
+
});
|
|
30
|
+
const getFileMetas = createServerFn({ method: "GET" }).validator(GetFileMetasSchema).middleware([apiMiddleware({
|
|
31
|
+
baseURL: "FILE_BASE_URL",
|
|
32
|
+
scopeKey: "file"
|
|
33
|
+
})]).handler(async ({ data, context }) => {
|
|
34
|
+
const queryParams = new URLSearchParams();
|
|
35
|
+
queryParams.append("appName", data.appName);
|
|
36
|
+
queryParams.append("subId", data.subId);
|
|
37
|
+
const { data: fileMetas } = await context.api.request({
|
|
38
|
+
url: `/v1/meta?${queryParams.toString()}`,
|
|
39
|
+
method: "GET"
|
|
40
|
+
});
|
|
41
|
+
return fileMetas;
|
|
42
|
+
});
|
|
43
|
+
const getFileThumbnail = createServerFn({ method: "GET" }).validator(FileSchema).middleware([apiMiddleware({
|
|
44
|
+
baseURL: "FILE_BASE_URL",
|
|
45
|
+
scopeKey: "file"
|
|
46
|
+
})]).handler(async ({ data, context }) => {
|
|
47
|
+
const queryParams = new URLSearchParams();
|
|
48
|
+
queryParams.append("appName", data.appName);
|
|
49
|
+
queryParams.append("id", data.id);
|
|
50
|
+
const response = await context.api.request({
|
|
51
|
+
url: `/v1/thumbnail?${queryParams.toString()}`,
|
|
52
|
+
method: "GET",
|
|
53
|
+
responseType: "stream"
|
|
54
|
+
});
|
|
55
|
+
setResponseHeaders(new Headers({
|
|
56
|
+
"Content-Type": response.headers["content-type"],
|
|
57
|
+
"Cache-Control": "private, max-age=3600, immutable"
|
|
58
|
+
}));
|
|
59
|
+
return Readable.toWeb(response.data);
|
|
60
|
+
});
|
|
61
|
+
const getFile = createServerFn({ method: "GET" }).validator(FileSchema).middleware([apiMiddleware({
|
|
62
|
+
baseURL: "FILE_BASE_URL",
|
|
63
|
+
scopeKey: "file"
|
|
64
|
+
})]).handler(async ({ data, context }) => {
|
|
65
|
+
const queryParams = new URLSearchParams();
|
|
66
|
+
queryParams.append("appName", data.appName);
|
|
67
|
+
queryParams.append("id", data.id);
|
|
68
|
+
const response = await context.api.request({
|
|
69
|
+
url: `/v1?${queryParams.toString()}`,
|
|
70
|
+
method: "GET",
|
|
71
|
+
responseType: "stream"
|
|
72
|
+
});
|
|
73
|
+
setResponseHeaders(new Headers({
|
|
74
|
+
"Content-Type": response.headers["content-type"],
|
|
75
|
+
"Cache-Control": "private, max-age=3600, immutable"
|
|
76
|
+
}));
|
|
77
|
+
return Readable.toWeb(response.data);
|
|
78
|
+
});
|
|
79
|
+
const downloadFile = createServerFn({ method: "GET" }).validator(FileSchema).middleware([apiMiddleware({
|
|
80
|
+
baseURL: "FILE_BASE_URL",
|
|
81
|
+
scopeKey: "file"
|
|
82
|
+
})]).handler(async ({ data, context }) => {
|
|
83
|
+
const queryParams = new URLSearchParams();
|
|
84
|
+
queryParams.append("appName", data.appName);
|
|
85
|
+
queryParams.append("id", data.id);
|
|
86
|
+
const response = await context.api.request({
|
|
87
|
+
url: `/v1/download?${queryParams.toString()}`,
|
|
88
|
+
method: "GET",
|
|
89
|
+
responseType: "stream"
|
|
90
|
+
});
|
|
91
|
+
setResponseHeaders(new Headers({
|
|
92
|
+
"Content-Type": response.headers["content-type"],
|
|
93
|
+
"Cache-Control": "private, max-age=3600, immutable"
|
|
94
|
+
}));
|
|
95
|
+
return Readable.toWeb(response.data);
|
|
96
|
+
});
|
|
97
|
+
const updateFileMeta = createServerFn({ method: "POST" }).validator(UpdateFileMetaSchema).middleware([apiMiddleware({
|
|
98
|
+
baseURL: "FILE_BASE_URL",
|
|
99
|
+
scopeKey: "file"
|
|
100
|
+
})]).handler(async ({ data, context }) => {
|
|
101
|
+
const queryParams = new URLSearchParams();
|
|
102
|
+
queryParams.append("appName", data.appName);
|
|
103
|
+
queryParams.append("id", data.id);
|
|
104
|
+
await context.api.request({
|
|
105
|
+
url: `/v1/meta?${queryParams.toString()}`,
|
|
106
|
+
method: "PUT",
|
|
107
|
+
data
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
const deleteFile = createServerFn({ method: "POST" }).validator(DeleteFileSchema).middleware([apiMiddleware({
|
|
111
|
+
baseURL: "FILE_BASE_URL",
|
|
112
|
+
scopeKey: "file"
|
|
113
|
+
})]).handler(async ({ data, context }) => {
|
|
114
|
+
const queryParams = new URLSearchParams();
|
|
115
|
+
queryParams.append("appName", data.appName);
|
|
116
|
+
queryParams.append("id", data.id);
|
|
117
|
+
await context.api.request({
|
|
118
|
+
url: `/v1?${queryParams.toString()}`,
|
|
119
|
+
method: "DELETE"
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
const batchDeleteFiles = createServerFn({ method: "POST" }).validator(BatchDeleteFilesSchema).middleware([apiMiddleware({
|
|
123
|
+
baseURL: "FILE_BASE_URL",
|
|
124
|
+
scopeKey: "file"
|
|
125
|
+
})]).handler(async ({ data, context }) => {
|
|
126
|
+
const queryParams = new URLSearchParams();
|
|
127
|
+
queryParams.append("appName", data.appName);
|
|
128
|
+
queryParams.append("subId", data.subId);
|
|
129
|
+
await context.api.request({
|
|
130
|
+
url: `/v1?${queryParams.toString()}`,
|
|
131
|
+
method: "DELETE"
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
const insecureHttpsAgent = new https.Agent({ rejectUnauthorized: false });
|
|
135
|
+
const uploadFile = createServerFn({ method: "POST" }).validator((data) => UploadFileMetaSchema.parse({
|
|
136
|
+
appName: data.get("appName"),
|
|
137
|
+
subId: data.get("subId"),
|
|
138
|
+
file: data.get("file")
|
|
139
|
+
})).middleware([authenticationMiddleware()]).handler(async ({ data }) => {
|
|
140
|
+
let accessToken;
|
|
141
|
+
try {
|
|
142
|
+
accessToken = await getAccessToken("file");
|
|
143
|
+
} catch {
|
|
144
|
+
accessToken = await getAppToken("file");
|
|
145
|
+
}
|
|
146
|
+
const stream = Readable.fromWeb(data.file.stream());
|
|
147
|
+
const id = uuidv7();
|
|
148
|
+
const dotIndex = data.file.name.lastIndexOf(".");
|
|
149
|
+
const fileExtension = dotIndex >= 0 ? data.file.name.slice(dotIndex + 1) : "";
|
|
150
|
+
await new Promise((resolve, reject) => {
|
|
151
|
+
new Upload(stream, {
|
|
152
|
+
endpoint: `${serverEnv.FILE_BASE_URL}/v1/upload`,
|
|
153
|
+
httpStack: new DefaultHttpStack({ agent: insecureHttpsAgent }),
|
|
154
|
+
uploadSize: data.file.size,
|
|
155
|
+
chunkSize: 1048576,
|
|
156
|
+
metadata: {
|
|
157
|
+
id,
|
|
158
|
+
appName: data.appName,
|
|
159
|
+
subId: data.subId,
|
|
160
|
+
fileName: data.file.name,
|
|
161
|
+
fileExtension,
|
|
162
|
+
mimeType: data.file.type
|
|
163
|
+
},
|
|
164
|
+
headers: { Authorization: `Bearer ${accessToken}` },
|
|
165
|
+
onError: reject,
|
|
166
|
+
onSuccess: () => resolve()
|
|
167
|
+
}).start();
|
|
168
|
+
});
|
|
169
|
+
return {
|
|
170
|
+
id,
|
|
171
|
+
appName: data.appName,
|
|
172
|
+
subId: data.subId,
|
|
173
|
+
fileName: data.file.name
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
//#endregion
|
|
177
|
+
export { batchDeleteFiles as a, getFile as c, updateFileMeta as d, uploadFile as f, UploadFileMetaSchema as i, getFileMetas as l, GetFileMetasSchema as n, deleteFile as o, UpdateFileMetaSchema as r, downloadFile as s, FileSchema as t, getFileThumbnail as u };
|
|
178
|
+
|
|
179
|
+
//# sourceMappingURL=file-DM1x40eJ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-DM1x40eJ.mjs","names":["createServerFn","setResponseHeaders","https","Readable","DefaultHttpStack","Upload","uuidv7","z","serverEnv","getAppToken","getAccessToken","apiMiddleware","authenticationMiddleware","FileMeta","FileMetaSchema","GetFileMetasSchema","object","appName","string","min","max","subId","uuid","FileSchema","id","UpdateFileMetaSchema","extend","fileName","DeleteFileSchema","BatchDeleteFilesSchema","UploadFileResult","UploadFileMetaSchema","file","instanceof","File","getFileMetas","method","validator","middleware","baseURL","scopeKey","handler","data","context","queryParams","URLSearchParams","append","fileMetas","api","request","Array","url","toString","getFileThumbnail","response","responseType","Headers","headers","toWeb","ReadableStream","getFile","downloadFile","updateFileMeta","deleteFile","batchDeleteFiles","insecureHttpsAgent","Agent","rejectUnauthorized","uploadFile","FormData","parse","get","Promise","accessToken","stream","fromWeb","dotIndex","name","lastIndexOf","fileExtension","slice","resolve","reject","upload","endpoint","FILE_BASE_URL","httpStack","agent","uploadSize","size","chunkSize","metadata","mimeType","type","Authorization","onError","onSuccess","start"],"sources":["../src/data/server/file.ts"],"sourcesContent":["import { createServerFn } from \"@tanstack/react-start\";\nimport { setResponseHeaders } from \"@tanstack/react-start/server\";\nimport https from \"node:https\";\nimport { Readable } from \"node:stream\";\nimport { DefaultHttpStack, Upload } from \"tus-js-client\";\nimport { uuidv7 } from \"uuidv7\";\nimport { z } from \"zod\";\nimport { serverEnv } from \"~/env\";\nimport { getAppToken } from \"~/lib/auth/msalServer\";\nimport { getAccessToken } from \"~/lib/auth/user\";\nimport { apiMiddleware } from \"~/middleware/apiMiddleware\";\nimport { authenticationMiddleware } from \"~/middleware/authMiddleware\";\nimport type { FileMeta } from \"~/models/file/FileMeta\";\nimport { FileMetaSchema } from \"~/models/file/FileMeta\";\n\nexport const GetFileMetasSchema = z.object({\n appName: z.string().min(1).max(255),\n subId: z.uuid(),\n});\n\nexport const FileSchema = z.object({\n appName: z.string().min(1).max(255),\n id: z.uuid(),\n});\n\nexport const UpdateFileMetaSchema = FileMetaSchema.extend({\n fileName: z.string().min(1).max(255),\n});\n\nconst DeleteFileSchema = FileSchema;\n\nconst BatchDeleteFilesSchema = GetFileMetasSchema;\n\nexport interface UploadFileResult {\n id: string;\n appName: string;\n subId: string;\n fileName: string;\n}\n\nexport const UploadFileMetaSchema = z.object({\n appName: z.string().min(1).max(255),\n subId: z.uuid(),\n file: z.instanceof(File),\n});\n\nexport const getFileMetas = createServerFn({ method: \"GET\" })\n .validator(GetFileMetasSchema)\n .middleware([apiMiddleware({ baseURL: \"FILE_BASE_URL\", scopeKey: \"file\" })])\n .handler(async ({ data, context }) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", data.appName);\n queryParams.append(\"subId\", data.subId);\n\n const { data: fileMetas } = await context.api.request<Array<FileMeta>>({\n url: `/v1/meta?${queryParams.toString()}`,\n method: \"GET\",\n });\n return fileMetas;\n });\n\nexport const getFileThumbnail = createServerFn({ method: \"GET\" })\n .validator(FileSchema)\n .middleware([apiMiddleware({ baseURL: \"FILE_BASE_URL\", scopeKey: \"file\" })])\n .handler(async ({ data, context }) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", data.appName);\n queryParams.append(\"id\", data.id);\n\n const response = await context.api.request<Readable>({\n url: `/v1/thumbnail?${queryParams.toString()}`,\n method: \"GET\",\n responseType: \"stream\",\n });\n\n setResponseHeaders(\n new Headers({\n \"Content-Type\": response.headers[\"content-type\"] as string,\n \"Cache-Control\": \"private, max-age=3600, immutable\",\n }),\n );\n return Readable.toWeb(response.data) as ReadableStream;\n });\n\nexport const getFile = createServerFn({ method: \"GET\" })\n .validator(FileSchema)\n .middleware([apiMiddleware({ baseURL: \"FILE_BASE_URL\", scopeKey: \"file\" })])\n .handler(async ({ data, context }) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", data.appName);\n queryParams.append(\"id\", data.id);\n\n const response = await context.api.request<Readable>({\n url: `/v1?${queryParams.toString()}`,\n method: \"GET\",\n responseType: \"stream\",\n });\n\n setResponseHeaders(\n new Headers({\n \"Content-Type\": response.headers[\"content-type\"] as string,\n \"Cache-Control\": \"private, max-age=3600, immutable\",\n }),\n );\n return Readable.toWeb(response.data) as ReadableStream;\n });\n\nexport const downloadFile = createServerFn({ method: \"GET\" })\n .validator(FileSchema)\n .middleware([apiMiddleware({ baseURL: \"FILE_BASE_URL\", scopeKey: \"file\" })])\n .handler(async ({ data, context }) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", data.appName);\n queryParams.append(\"id\", data.id);\n\n const response = await context.api.request<Readable>({\n url: `/v1/download?${queryParams.toString()}`,\n method: \"GET\",\n responseType: \"stream\",\n });\n\n setResponseHeaders(\n new Headers({\n \"Content-Type\": response.headers[\"content-type\"] as string,\n \"Cache-Control\": \"private, max-age=3600, immutable\",\n }),\n );\n return Readable.toWeb(response.data) as ReadableStream;\n });\n\nexport const updateFileMeta = createServerFn({ method: \"POST\" })\n .validator(UpdateFileMetaSchema)\n .middleware([apiMiddleware({ baseURL: \"FILE_BASE_URL\", scopeKey: \"file\" })])\n .handler(async ({ data, context }) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", data.appName);\n queryParams.append(\"id\", data.id);\n\n await context.api.request({ url: `/v1/meta?${queryParams.toString()}`, method: \"PUT\", data });\n });\n\nexport const deleteFile = createServerFn({ method: \"POST\" })\n .validator(DeleteFileSchema)\n .middleware([apiMiddleware({ baseURL: \"FILE_BASE_URL\", scopeKey: \"file\" })])\n .handler(async ({ data, context }) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", data.appName);\n queryParams.append(\"id\", data.id);\n\n await context.api.request({ url: `/v1?${queryParams.toString()}`, method: \"DELETE\" });\n });\n\nexport const batchDeleteFiles = createServerFn({ method: \"POST\" })\n .validator(BatchDeleteFilesSchema)\n .middleware([apiMiddleware({ baseURL: \"FILE_BASE_URL\", scopeKey: \"file\" })])\n .handler(async ({ data, context }) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", data.appName);\n queryParams.append(\"subId\", data.subId);\n\n await context.api.request({ url: `/v1?${queryParams.toString()}`, method: \"DELETE\" });\n });\n\nconst insecureHttpsAgent = new https.Agent({ rejectUnauthorized: false });\n\nexport const uploadFile = createServerFn({ method: \"POST\" })\n // File inputs must travel as multipart FormData — a File nested in a plain\n // payload object can't be seroval-serialized, so the request never fires.\n .validator((data: FormData) =>\n UploadFileMetaSchema.parse({\n appName: data.get(\"appName\"),\n subId: data.get(\"subId\"),\n file: data.get(\"file\"),\n }),\n )\n .middleware([authenticationMiddleware()])\n .handler(async ({ data }): Promise<UploadFileResult> => {\n // Prefer the signed-in user's delegated token so the file service stamps\n // createdBy; fall back to the app identity when there's no user session.\n let accessToken: string;\n try {\n accessToken = await getAccessToken(\"file\");\n } catch {\n accessToken = await getAppToken(\"file\");\n }\n // Stream instead of buffering the whole file: in-process callers (e.g. a File\n // from fs.openAsBlob) upload arbitrarily large files without holding them in RAM.\n const stream = Readable.fromWeb(data.file.stream() as import(\"node:stream/web\").ReadableStream);\n const id = uuidv7();\n const dotIndex = data.file.name.lastIndexOf(\".\");\n const fileExtension = dotIndex >= 0 ? data.file.name.slice(dotIndex + 1) : \"\";\n\n // Server-originated edge cases only — browser uploads go direct to the file\n // service via uploadFileMutationOptions (client) with the user's OBO token.\n await new Promise<void>((resolve, reject) => {\n const upload = new Upload(stream, {\n endpoint: `${serverEnv.FILE_BASE_URL}/v1/upload`,\n httpStack: new DefaultHttpStack({ agent: insecureHttpsAgent }),\n uploadSize: data.file.size,\n chunkSize: 1_048_576,\n metadata: {\n id,\n appName: data.appName,\n subId: data.subId,\n fileName: data.file.name,\n fileExtension,\n mimeType: data.file.type,\n },\n headers: { Authorization: `Bearer ${accessToken}` },\n onError: reject,\n onSuccess: () => resolve(),\n });\n upload.start();\n });\n\n return {\n id,\n appName: data.appName,\n subId: data.subId,\n fileName: data.file.name,\n };\n });\n"],"mappings":"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"}
|
package/dist/hooks.d.mts
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { t as FormOmittedProps } from "./utils-BuWEQOuy.mjs";
|
|
2
|
+
import { AutocompleteProps, ButtonProps, CheckboxProps, RadioGroupProps, SliderProps, SwitchProps, TextFieldProps } from "@mui/material";
|
|
3
|
+
import { DatePickerProps, DateRangePickerProps, DateTimePickerProps, DateTimeRangePickerProps, TimePickerProps, TimeRangePickerProps } from "@mui/x-date-pickers-pro";
|
|
4
|
+
import { FC, ReactNode } from "react";
|
|
5
|
+
import { useTranslation } from "react-i18next";
|
|
6
|
+
import { AlertColor } from "@mui/material/Alert";
|
|
7
|
+
import { useInView } from "react-intersection-observer";
|
|
8
|
+
import { InputAttributes, NumericFormatProps } from "react-number-format/types/types";
|
|
9
|
+
import { PickersTextFieldProps } from "@mui/x-date-pickers/PickersTextField";
|
|
10
|
+
|
|
11
|
+
//#region src/components/form/FormTextField.d.ts
|
|
12
|
+
interface FormTextFieldProps extends Omit<TextFieldProps, FormOmittedProps> {
|
|
13
|
+
type?: "color" | "email" | "password" | "search" | "tel" | "text" | "url";
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
//#region src/components/form/FormNumberField.d.ts
|
|
17
|
+
interface FormNumberFieldProps extends Omit<TextFieldProps, FormOmittedProps> {
|
|
18
|
+
defaultValue?: number | null;
|
|
19
|
+
options?: Omit<NumericFormatProps<InputAttributes>, "customInput" | "onValueChange" | keyof InputAttributes>;
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/components/form/FormAutocomplete.d.ts
|
|
23
|
+
interface FormAutocompleteProps extends Omit<AutocompleteProps<any, boolean, boolean, boolean>, FormOmittedProps> {
|
|
24
|
+
textFieldProps?: Omit<TextFieldProps, FormOmittedProps>;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
//#region src/components/form/FormCheckbox.d.ts
|
|
28
|
+
interface FormCheckboxProps extends Omit<CheckboxProps, FormOmittedProps> {
|
|
29
|
+
label?: string;
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/components/form/FormSwitch.d.ts
|
|
33
|
+
interface FormSwitchProps extends Omit<SwitchProps, FormOmittedProps> {
|
|
34
|
+
label?: string;
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region src/components/form/FormRadioGroup.d.ts
|
|
38
|
+
interface Option {
|
|
39
|
+
label: string;
|
|
40
|
+
value: string | number;
|
|
41
|
+
}
|
|
42
|
+
interface FormRadioGroupProps extends Omit<RadioGroupProps, FormOmittedProps> {
|
|
43
|
+
label?: string;
|
|
44
|
+
options: Array<Option>;
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
//#region src/components/form/FormSlider.d.ts
|
|
48
|
+
interface FormSliderProps extends Omit<SliderProps, FormOmittedProps> {
|
|
49
|
+
label?: string;
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region src/components/form/FormDatePicker.d.ts
|
|
53
|
+
interface FormDatePickerProps extends Omit<DatePickerProps, FormOmittedProps> {
|
|
54
|
+
textFieldProps?: Partial<PickersTextFieldProps>;
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
//#region src/components/form/FormDateRangePicker.d.ts
|
|
58
|
+
interface FormDateRangePickerProps extends Omit<DateRangePickerProps, FormOmittedProps> {
|
|
59
|
+
textFieldProps?: Partial<PickersTextFieldProps>;
|
|
60
|
+
}
|
|
61
|
+
//#endregion
|
|
62
|
+
//#region src/components/form/FormTimePicker.d.ts
|
|
63
|
+
interface FormTimePickerProps extends Omit<TimePickerProps, FormOmittedProps> {
|
|
64
|
+
textFieldProps?: Partial<PickersTextFieldProps>;
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
//#region src/components/form/FormTimeRangePicker.d.ts
|
|
68
|
+
interface FormTimeRangePickerProps extends Omit<TimeRangePickerProps, FormOmittedProps> {
|
|
69
|
+
textFieldProps?: Partial<PickersTextFieldProps>;
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
//#region src/components/form/FormDateTimePicker.d.ts
|
|
73
|
+
interface FormDateTimePickerProps extends Omit<DateTimePickerProps, FormOmittedProps> {
|
|
74
|
+
textFieldProps?: Partial<PickersTextFieldProps>;
|
|
75
|
+
}
|
|
76
|
+
//#endregion
|
|
77
|
+
//#region src/components/form/FormDateTimeRangePicker.d.ts
|
|
78
|
+
interface FormDateTimeRangePickerProps extends Omit<DateTimeRangePickerProps, FormOmittedProps> {
|
|
79
|
+
textFieldProps?: Partial<PickersTextFieldProps>;
|
|
80
|
+
}
|
|
81
|
+
//#endregion
|
|
82
|
+
//#region src/components/form/FormSubmitButton.d.ts
|
|
83
|
+
type FormSubmitButtonProps = Omit<ButtonProps, "loading" | "disabled" | "onClick" | "type">;
|
|
84
|
+
declare const useLayoutForm: <TFormData, TOnMount extends import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined, TOnChange extends import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined, TOnChangeAsync extends import("@tanstack/form-core").FormAsyncValidateOrFn<TFormData> | undefined, TOnBlur extends import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined, TOnBlurAsync extends import("@tanstack/form-core").FormAsyncValidateOrFn<TFormData> | undefined, TOnSubmit extends import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined, TOnSubmitAsync extends import("@tanstack/form-core").FormAsyncValidateOrFn<TFormData> | undefined, TOnDynamic extends import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined, TOnDynamicAsync extends import("@tanstack/form-core").FormAsyncValidateOrFn<TFormData> | undefined, TOnServer extends import("@tanstack/form-core").FormAsyncValidateOrFn<TFormData> | undefined, TSubmitMeta>(props: import("@tanstack/form-core").FormOptions<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>) => import("@tanstack/react-form").AppFieldExtendedReactFormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta, {
|
|
85
|
+
readonly TextField: import("react").FC<FormTextFieldProps>;
|
|
86
|
+
readonly NumberField: import("react").FC<FormNumberFieldProps>;
|
|
87
|
+
readonly Autocomplete: import("react").FC<FormAutocompleteProps>;
|
|
88
|
+
readonly Checkbox: import("react").FC<FormCheckboxProps>;
|
|
89
|
+
readonly Switch: import("react").FC<FormSwitchProps>;
|
|
90
|
+
readonly RadioGroup: import("react").FC<FormRadioGroupProps>;
|
|
91
|
+
readonly Slider: import("react").FC<FormSliderProps>;
|
|
92
|
+
readonly DatePicker: import("react").FC<FormDatePickerProps>;
|
|
93
|
+
readonly DateRangePicker: import("react").FC<FormDateRangePickerProps>;
|
|
94
|
+
readonly TimePicker: import("react").FC<FormTimePickerProps>;
|
|
95
|
+
readonly TimeRangePicker: import("react").FC<FormTimeRangePickerProps>;
|
|
96
|
+
readonly DateTimePicker: import("react").FC<FormDateTimePickerProps>;
|
|
97
|
+
readonly DateTimeRangePicker: import("react").FC<FormDateTimeRangePickerProps>;
|
|
98
|
+
}, {
|
|
99
|
+
readonly SubmitButton: import("react").FC<FormSubmitButtonProps>;
|
|
100
|
+
}>, withLayoutForm: <TFormData, TOnMount extends import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined, TOnChange extends import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined, TOnChangeAsync extends import("@tanstack/form-core").FormAsyncValidateOrFn<TFormData> | undefined, TOnBlur extends import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined, TOnBlurAsync extends import("@tanstack/form-core").FormAsyncValidateOrFn<TFormData> | undefined, TOnSubmit extends import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined, TOnSubmitAsync extends import("@tanstack/form-core").FormAsyncValidateOrFn<TFormData> | undefined, TOnDynamic extends import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined, TOnDynamicAsync extends import("@tanstack/form-core").FormAsyncValidateOrFn<TFormData> | undefined, TOnServer extends import("@tanstack/form-core").FormAsyncValidateOrFn<TFormData> | undefined, TSubmitMeta, TRenderProps extends object = {}>({
|
|
101
|
+
render,
|
|
102
|
+
props
|
|
103
|
+
}: import("@tanstack/react-form").WithFormProps<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta, {
|
|
104
|
+
readonly TextField: import("react").FC<FormTextFieldProps>;
|
|
105
|
+
readonly NumberField: import("react").FC<FormNumberFieldProps>;
|
|
106
|
+
readonly Autocomplete: import("react").FC<FormAutocompleteProps>;
|
|
107
|
+
readonly Checkbox: import("react").FC<FormCheckboxProps>;
|
|
108
|
+
readonly Switch: import("react").FC<FormSwitchProps>;
|
|
109
|
+
readonly RadioGroup: import("react").FC<FormRadioGroupProps>;
|
|
110
|
+
readonly Slider: import("react").FC<FormSliderProps>;
|
|
111
|
+
readonly DatePicker: import("react").FC<FormDatePickerProps>;
|
|
112
|
+
readonly DateRangePicker: import("react").FC<FormDateRangePickerProps>;
|
|
113
|
+
readonly TimePicker: import("react").FC<FormTimePickerProps>;
|
|
114
|
+
readonly TimeRangePicker: import("react").FC<FormTimeRangePickerProps>;
|
|
115
|
+
readonly DateTimePicker: import("react").FC<FormDateTimePickerProps>;
|
|
116
|
+
readonly DateTimeRangePicker: import("react").FC<FormDateTimeRangePickerProps>;
|
|
117
|
+
}, {
|
|
118
|
+
readonly SubmitButton: import("react").FC<FormSubmitButtonProps>;
|
|
119
|
+
}, TRenderProps>) => import("react").FunctionComponent<import("react").PropsWithChildren<NoInfer<[unknown] extends [TRenderProps] ? any : TRenderProps> & {
|
|
120
|
+
form: import("@tanstack/react-form").AppFieldExtendedReactFormApi<[unknown] extends [TFormData] ? any : TFormData, [import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined] extends [TOnMount] ? [TOnMount] extends [TOnMount & (import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined)] ? any : TOnMount : TOnMount, [import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined] extends [TOnChange] ? [TOnChange] extends [TOnChange & (import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined)] ? any : TOnChange : TOnChange, [import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined] extends [TOnChangeAsync] ? [TOnChangeAsync] extends [TOnChangeAsync & (import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined)] ? any : TOnChangeAsync : TOnChangeAsync, [import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined] extends [TOnBlur] ? [TOnBlur] extends [TOnBlur & (import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined)] ? any : TOnBlur : TOnBlur, [import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined] extends [TOnBlurAsync] ? [TOnBlurAsync] extends [TOnBlurAsync & (import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined)] ? any : TOnBlurAsync : TOnBlurAsync, [import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined] extends [TOnSubmit] ? [TOnSubmit] extends [TOnSubmit & (import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined)] ? any : TOnSubmit : TOnSubmit, [import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined] extends [TOnSubmitAsync] ? [TOnSubmitAsync] extends [TOnSubmitAsync & (import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined)] ? any : TOnSubmitAsync : TOnSubmitAsync, [import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined] extends [TOnDynamic] ? [TOnDynamic] extends [TOnDynamic & (import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined)] ? any : TOnDynamic : TOnDynamic, [import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined] extends [TOnDynamicAsync] ? [TOnDynamicAsync] extends [TOnDynamicAsync & (import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined)] ? any : TOnDynamicAsync : TOnDynamicAsync, [import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined] extends [TOnServer] ? [TOnServer] extends [TOnServer & (import("@tanstack/form-core").FormValidateOrFn<TFormData> | undefined)] ? any : TOnServer : TOnServer, [unknown] extends [TSubmitMeta] ? any : TSubmitMeta, {
|
|
121
|
+
readonly TextField: import("react").FC<FormTextFieldProps>;
|
|
122
|
+
readonly NumberField: import("react").FC<FormNumberFieldProps>;
|
|
123
|
+
readonly Autocomplete: import("react").FC<FormAutocompleteProps>;
|
|
124
|
+
readonly Checkbox: import("react").FC<FormCheckboxProps>;
|
|
125
|
+
readonly Switch: import("react").FC<FormSwitchProps>;
|
|
126
|
+
readonly RadioGroup: import("react").FC<FormRadioGroupProps>;
|
|
127
|
+
readonly Slider: import("react").FC<FormSliderProps>;
|
|
128
|
+
readonly DatePicker: import("react").FC<FormDatePickerProps>;
|
|
129
|
+
readonly DateRangePicker: import("react").FC<FormDateRangePickerProps>;
|
|
130
|
+
readonly TimePicker: import("react").FC<FormTimePickerProps>;
|
|
131
|
+
readonly TimeRangePicker: import("react").FC<FormTimeRangePickerProps>;
|
|
132
|
+
readonly DateTimePicker: import("react").FC<FormDateTimePickerProps>;
|
|
133
|
+
readonly DateTimeRangePicker: import("react").FC<FormDateTimeRangePickerProps>;
|
|
134
|
+
}, {
|
|
135
|
+
readonly SubmitButton: import("react").FC<FormSubmitButtonProps>;
|
|
136
|
+
}>;
|
|
137
|
+
}>>;
|
|
138
|
+
//#endregion
|
|
139
|
+
//#region src/hooks/useDialogs.d.ts
|
|
140
|
+
interface OpenDialogOptions<TResult> {
|
|
141
|
+
onClose?: (result: TResult) => Promise<void>;
|
|
142
|
+
}
|
|
143
|
+
interface AlertOptions {
|
|
144
|
+
title?: ReactNode;
|
|
145
|
+
}
|
|
146
|
+
interface ConfirmOptions {
|
|
147
|
+
title?: ReactNode;
|
|
148
|
+
cancelText?: ReactNode;
|
|
149
|
+
}
|
|
150
|
+
interface DialogProps<TPayload = undefined, TResult = void> {
|
|
151
|
+
payload: TPayload;
|
|
152
|
+
open: boolean;
|
|
153
|
+
onClose: (result: TResult) => Promise<void>;
|
|
154
|
+
}
|
|
155
|
+
type OpenAlertDialog = (message: ReactNode, options?: AlertOptions) => Promise<void>;
|
|
156
|
+
type OpenConfirmDialog = (message: ReactNode, options?: ConfirmOptions) => Promise<boolean>;
|
|
157
|
+
type DialogComponent<TPayload, TResult> = React.ComponentType<DialogProps<TPayload, TResult>>;
|
|
158
|
+
interface OpenDialog {
|
|
159
|
+
<TPayload extends undefined, TResult>(Component: DialogComponent<TPayload, TResult>, payload?: TPayload, options?: OpenDialogOptions<TResult>): Promise<TResult>;
|
|
160
|
+
<TPayload, TResult>(Component: DialogComponent<TPayload, TResult>, payload: TPayload, options?: OpenDialogOptions<TResult>): Promise<TResult>;
|
|
161
|
+
}
|
|
162
|
+
type CloseDialog = <TResult>(dialog: Promise<TResult>, result: TResult) => Promise<TResult>;
|
|
163
|
+
interface DialogHook {
|
|
164
|
+
alert: OpenAlertDialog;
|
|
165
|
+
confirm: OpenConfirmDialog;
|
|
166
|
+
open: OpenDialog;
|
|
167
|
+
close: CloseDialog;
|
|
168
|
+
}
|
|
169
|
+
declare function useDialogs(): DialogHook;
|
|
170
|
+
//#endregion
|
|
171
|
+
//#region src/contexts/NotificationContext.d.ts
|
|
172
|
+
interface NotificationOptions {
|
|
173
|
+
severity?: AlertColor;
|
|
174
|
+
autoHideDuration?: number;
|
|
175
|
+
}
|
|
176
|
+
interface NotificationContextValue {
|
|
177
|
+
notify: (message: string, options?: NotificationOptions) => void;
|
|
178
|
+
}
|
|
179
|
+
//#endregion
|
|
180
|
+
//#region src/hooks/useNotification.d.ts
|
|
181
|
+
declare function useNotification(): NotificationContextValue;
|
|
182
|
+
//#endregion
|
|
183
|
+
//#region src/hooks/useScanDetection.d.ts
|
|
184
|
+
interface Config {
|
|
185
|
+
/** Time to wait from last character to then trigger an evaluation of the buffer. */
|
|
186
|
+
timeToEvaluate?: number;
|
|
187
|
+
/** Average time between characters in milliseconds. Used to determine if input is from keyboard or a scanner. Defaults to 50ms.*/
|
|
188
|
+
averageWaitTime?: number;
|
|
189
|
+
/** Character that barcode scanner prefixes input with.*/
|
|
190
|
+
startCharacter?: Array<string>;
|
|
191
|
+
/** Character that barcode scanner suffixes input with. Defaults to line return.*/
|
|
192
|
+
endCharacter?: Array<string>;
|
|
193
|
+
/** Callback to use on complete scan input.*/
|
|
194
|
+
onComplete: (code: string) => void;
|
|
195
|
+
/** Callback to use on error. */
|
|
196
|
+
onError?: (error: string) => void;
|
|
197
|
+
/** Minimum length a scanned code should be. Defaults to 0.*/
|
|
198
|
+
minLength?: number;
|
|
199
|
+
/** Ignore scan input if this node is focused.*/
|
|
200
|
+
ignoreIfFocusOn?: Node;
|
|
201
|
+
/** Stop propagation on keydown event. Defaults to false.*/
|
|
202
|
+
stopPropagation?: boolean;
|
|
203
|
+
/** Prevent default on keydown event. Defaults to false.*/
|
|
204
|
+
preventDefault?: boolean;
|
|
205
|
+
/** Bind keydown event to this node. Defaults to document (resolved on the client only, so the hook is SSR-safe).*/
|
|
206
|
+
container?: Node;
|
|
207
|
+
/** Indicates if the scanning is enabled. */
|
|
208
|
+
enabled?: boolean;
|
|
209
|
+
}
|
|
210
|
+
declare const useScanDetection: ({
|
|
211
|
+
timeToEvaluate,
|
|
212
|
+
averageWaitTime,
|
|
213
|
+
startCharacter,
|
|
214
|
+
endCharacter,
|
|
215
|
+
onComplete,
|
|
216
|
+
onError,
|
|
217
|
+
minLength,
|
|
218
|
+
ignoreIfFocusOn,
|
|
219
|
+
stopPropagation,
|
|
220
|
+
preventDefault,
|
|
221
|
+
container,
|
|
222
|
+
enabled
|
|
223
|
+
}: Config) => void;
|
|
224
|
+
//#endregion
|
|
225
|
+
export { type DialogProps, useDialogs, useFieldContext, useFormContext, useInView, useLayoutForm, useNotification, useScanDetection, useTranslation, withLayoutForm };
|
|
226
|
+
//# sourceMappingURL=hooks.d.mts.map
|