ding-react-admin 2.0.0 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +254 -195
- package/dist/index.css +1 -0
- package/dist/index.js +1773 -1170
- package/dist/src/components/NavMenuLabel.d.ts +8 -0
- package/dist/src/components/NavMenuLabel.d.ts.map +1 -0
- package/dist/src/components/NavMenuSearch.d.ts +9 -0
- package/dist/src/components/NavMenuSearch.d.ts.map +1 -0
- package/dist/src/components/ScrollableArea.d.ts +10 -0
- package/dist/src/components/ScrollableArea.d.ts.map +1 -0
- package/dist/src/components/index.d.ts +3 -0
- package/dist/src/components/index.d.ts.map +1 -1
- package/dist/src/context/AuthProvider.d.ts +2 -0
- package/dist/src/context/AuthProvider.d.ts.map +1 -1
- package/dist/src/crud/FormGlobalErrorsAlert.d.ts +5 -0
- package/dist/src/crud/FormGlobalErrorsAlert.d.ts.map +1 -0
- package/dist/src/crud/ResourceForm.d.ts +1 -4
- package/dist/src/crud/ResourceForm.d.ts.map +1 -1
- package/dist/src/crud/ResourceFormModal.d.ts +7 -1
- package/dist/src/crud/ResourceFormModal.d.ts.map +1 -1
- package/dist/src/crud/ResourceRecordForm.d.ts +27 -0
- package/dist/src/crud/ResourceRecordForm.d.ts.map +1 -0
- package/dist/src/crud/fields/ReferenceField.d.ts +12 -2
- package/dist/src/crud/fields/ReferenceField.d.ts.map +1 -1
- package/dist/src/crud/fields/ReferenceInputActions.d.ts +16 -0
- package/dist/src/crud/fields/ReferenceInputActions.d.ts.map +1 -0
- package/dist/src/crud/fields/ReferenceManyField.d.ts +10 -1
- package/dist/src/crud/fields/ReferenceManyField.d.ts.map +1 -1
- package/dist/src/crud/filters/ReferenceFilter.d.ts +1 -1
- package/dist/src/crud/filters/ReferenceFilter.d.ts.map +1 -1
- package/dist/src/crud/index.d.ts +5 -0
- package/dist/src/crud/index.d.ts.map +1 -1
- package/dist/src/crud/types.d.ts +12 -0
- package/dist/src/crud/types.d.ts.map +1 -1
- package/dist/src/crud/utils/choiceSelectionUtils.d.ts +10 -0
- package/dist/src/crud/utils/choiceSelectionUtils.d.ts.map +1 -0
- package/dist/src/crud/utils/choiceSelectionUtils.test.d.ts +2 -0
- package/dist/src/crud/utils/choiceSelectionUtils.test.d.ts.map +1 -0
- package/dist/src/crud/utils/formErrors.d.ts +18 -7
- package/dist/src/crud/utils/formErrors.d.ts.map +1 -1
- package/dist/src/crud/utils/formErrors.test.d.ts +2 -0
- package/dist/src/crud/utils/formErrors.test.d.ts.map +1 -0
- package/dist/src/crud/utils/prepareFormSubmitBody.d.ts +1 -0
- package/dist/src/crud/utils/prepareFormSubmitBody.d.ts.map +1 -1
- package/dist/src/crud/utils/referenceSelectNotFoundContent.d.ts +4 -0
- package/dist/src/crud/utils/referenceSelectNotFoundContent.d.ts.map +1 -0
- package/dist/src/crud/utils/toFormData.d.ts +1 -1
- package/dist/src/crud/utils/toFormData.d.ts.map +1 -1
- package/dist/src/crud/utils/uploadReferenceUtils.d.ts +5 -0
- package/dist/src/crud/utils/uploadReferenceUtils.d.ts.map +1 -0
- package/dist/src/crud/utils/useChoices.d.ts +27 -1
- package/dist/src/crud/utils/useChoices.d.ts.map +1 -1
- package/dist/src/crud/utils/useFormRecord.d.ts +9 -7
- package/dist/src/crud/utils/useFormRecord.d.ts.map +1 -1
- package/dist/src/data/parseFormErrorHelpers.d.ts +6 -27
- package/dist/src/data/parseFormErrorHelpers.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/layouts/AdminLayout.d.ts +1 -1
- package/dist/src/layouts/AdminLayout.d.ts.map +1 -1
- package/dist/src/layouts/AuthPageLayout.d.ts.map +1 -1
- package/dist/src/layouts/navFilter.d.ts +5 -0
- package/dist/src/layouts/navFilter.d.ts.map +1 -0
- package/dist/src/layouts/navMenuItems.d.ts +6 -0
- package/dist/src/layouts/navMenuItems.d.ts.map +1 -0
- package/dist/src/types.d.ts +12 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +85 -59
- package/src/app/AdminApp.tsx +34 -34
- package/src/components/AuthAlternateLink.tsx +23 -23
- package/src/components/DensitySwitch.tsx +31 -31
- package/src/components/NavMenuLabel.tsx +26 -0
- package/src/components/NavMenuSearch.tsx +76 -0
- package/src/components/ScrollableArea.tsx +46 -0
- package/src/components/ThemeSwitch.tsx +28 -28
- package/src/components/ThemeToolbar.tsx +34 -34
- package/src/components/index.ts +7 -4
- package/src/components/navMenu.css +21 -0
- package/src/components/scrollable.css +28 -0
- package/src/context/AppThemeProvider.tsx +128 -128
- package/src/context/AuthProvider.tsx +89 -77
- package/src/context/DataProvider.tsx +30 -30
- package/src/context/PermissionsProvider.tsx +57 -57
- package/src/crud/FilterBar.tsx +36 -36
- package/src/crud/FormGlobalErrorsAlert.tsx +36 -0
- package/src/crud/FormSteps.tsx +135 -135
- package/src/crud/FormTabs.tsx +126 -126
- package/src/crud/InlineFormSet.tsx +162 -162
- package/src/crud/ListActionsBar.tsx +106 -106
- package/src/crud/ResourceForm.tsx +83 -160
- package/src/crud/ResourceFormModal.tsx +75 -133
- package/src/crud/ResourceRecordForm.tsx +166 -0
- package/src/crud/columns/BooleanColumn.tsx +32 -32
- package/src/crud/columns/CustomColumn.tsx +33 -33
- package/src/crud/columns/DateColumn.tsx +28 -28
- package/src/crud/columns/ImageColumn.tsx +58 -58
- package/src/crud/columns/NumberColumn.tsx +31 -31
- package/src/crud/columns/ReferenceColumn.tsx +85 -85
- package/src/crud/columns/ReferenceManyColumn.tsx +67 -67
- package/src/crud/columns/TextColumn.tsx +38 -38
- package/src/crud/context/FilterContext.tsx +71 -71
- package/src/crud/context/FormContext.tsx +39 -39
- package/src/crud/context/FormSectionContext.tsx +22 -22
- package/src/crud/context/InlineFieldsRegistry.tsx +61 -61
- package/src/crud/context/ListContext.tsx +93 -93
- package/src/crud/fields/BooleanField.tsx +38 -38
- package/src/crud/fields/DateField.tsx +53 -53
- package/src/crud/fields/FileField.tsx +123 -123
- package/src/crud/fields/ImageField.tsx +120 -120
- package/src/crud/fields/NumberField.tsx +52 -52
- package/src/crud/fields/PasswordField.tsx +99 -99
- package/src/crud/fields/ReferenceField.tsx +237 -96
- package/src/crud/fields/ReferenceInputActions.tsx +106 -0
- package/src/crud/fields/ReferenceManyField.tsx +200 -76
- package/src/crud/fields/SelectField.tsx +48 -48
- package/src/crud/fields/TextField.tsx +46 -46
- package/src/crud/fields/uploadFieldUtils.ts +21 -21
- package/src/crud/fields/useUploadPreviewUrl.ts +20 -20
- package/src/crud/filters/BooleanFilter.tsx +38 -38
- package/src/crud/filters/DateFilter.tsx +35 -35
- package/src/crud/filters/NumberFilter.tsx +33 -33
- package/src/crud/filters/ReferenceFilter.tsx +192 -173
- package/src/crud/filters/SelectFilter.tsx +44 -44
- package/src/crud/filters/TextFilter.tsx +36 -36
- package/src/crud/index.ts +99 -94
- package/src/crud/types.ts +146 -134
- package/src/crud/utils/buildFormPayload.ts +24 -24
- package/src/crud/utils/buildInlineRowsPayload.ts +37 -37
- package/src/crud/utils/buildResourceFormSubmitBody.ts +29 -29
- package/src/crud/utils/choiceSelectionUtils.test.ts +45 -0
- package/src/crud/utils/choiceSelectionUtils.ts +116 -0
- package/src/crud/utils/formErrors.test.ts +168 -0
- package/src/crud/utils/formErrors.ts +138 -42
- package/src/crud/utils/formSectionErrors.ts +85 -85
- package/src/crud/utils/getFormValue.ts +13 -13
- package/src/crud/utils/hasUploadValues.ts +9 -9
- package/src/crud/utils/nestedFieldPath.ts +8 -8
- package/src/crud/utils/prepareFormSubmitBody.ts +22 -17
- package/src/crud/utils/referenceSelectNotFoundContent.tsx +7 -0
- package/src/crud/utils/setFormValue.ts +18 -18
- package/src/crud/utils/sortQueryParam.ts +37 -37
- package/src/crud/utils/toFormData.ts +79 -81
- package/src/crud/utils/uploadReferenceUtils.ts +44 -0
- package/src/crud/utils/useAbortableEffect.ts +17 -17
- package/src/crud/utils/useChoices.ts +330 -182
- package/src/crud/utils/useFormRecord.ts +179 -156
- package/src/crud/utils/useListQueryState.ts +191 -191
- package/src/data/abortError.test.ts +19 -19
- package/src/data/abortError.ts +10 -10
- package/src/data/createMemoryResourceHandlers.ts +78 -78
- package/src/data/createRestResourceHandlers.ts +63 -63
- package/src/data/dataUtils.test.ts +228 -220
- package/src/data/inMemoryList.ts +97 -97
- package/src/data/parseFormErrorHelpers.test.ts +201 -138
- package/src/data/parseFormErrorHelpers.ts +376 -311
- package/src/data/sortHelpers.ts +48 -48
- package/src/index.ts +211 -207
- package/src/layouts/AdminLayout.tsx +530 -382
- package/src/layouts/AuthPageLayout.tsx +87 -81
- package/src/layouts/navFilter.ts +49 -0
- package/src/layouts/navMenuItems.tsx +44 -0
- package/src/pages/LoginPage.tsx +80 -80
- package/src/pages/PlaceholderPage.tsx +9 -9
- package/src/permissions/resourcePermissions.ts +47 -47
- package/src/router/createAdminRouter.tsx +64 -64
- package/src/router/guards.tsx +63 -63
- package/src/router/routeAccess.ts +89 -89
- package/src/types.ts +10 -0
- package/src/vite-env.d.ts +1 -1
|
@@ -1,42 +1,29 @@
|
|
|
1
1
|
import { FormValidationErrors, ParseFormErrorContext } from './dataProviderTypes';
|
|
2
|
+
export declare const EXPECTED_VALIDATION_BODY_HINT = "Expected HTTP 400 with a JSON object such as `{ \"field_name\": [\"message\"] }` or `{ \"non_field_errors\": [\"message\"] }`.";
|
|
2
3
|
export declare function asStringMessages(value: unknown): string[];
|
|
4
|
+
export declare function describeNonStandardValidationBody(body: Record<string, unknown> | null, options?: {
|
|
5
|
+
hint?: string;
|
|
6
|
+
}): string;
|
|
7
|
+
export declare function getValidationErrorStatus(error: unknown): number | null;
|
|
8
|
+
export declare function getErrorResponseContentType(error: unknown): string | null;
|
|
3
9
|
/**
|
|
4
|
-
|
|
5
10
|
* Read a parsed JSON validation body when it is already available on the error.
|
|
6
|
-
|
|
7
11
|
*
|
|
8
|
-
|
|
9
12
|
* Supported transport shapes (sync only):
|
|
10
|
-
|
|
11
13
|
* - `{ body: { email: ["…"] } }` — explicit throw from a handler
|
|
12
|
-
|
|
13
14
|
* - `{ response: { data: { email: ["…"] } } }` — axios-style wrappers
|
|
14
|
-
|
|
15
15
|
* - `{ data: { email: ["…"] } }` — some HTTP clients attach parsed JSON here
|
|
16
|
-
|
|
17
16
|
*
|
|
18
|
-
|
|
19
17
|
* For fetch / OpenAPI clients that only expose a `Response`, use `resolveErrorBody`.
|
|
20
|
-
|
|
21
18
|
*/
|
|
22
19
|
export declare function getErrorBody(error: unknown): Record<string, unknown> | null;
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
* Resolve a validation JSON body from any common HTTP client error shape.
|
|
26
|
-
|
|
27
|
-
* Falls back to reading `response.json()` for fetch / OpenAPI `ResponseError`.
|
|
28
|
-
|
|
29
|
-
*/
|
|
30
20
|
export declare function resolveErrorBody(error: unknown): Promise<Record<string, unknown> | null>;
|
|
31
21
|
/** Map `{ lines: [{ label: ["…"] }] }` → `{ "lines.0.label": "…" }`. */
|
|
32
22
|
export declare function flattenNestedArrayErrors(arrayKey: string, rows: unknown[], fields: Record<string, string | string[]>): void;
|
|
33
23
|
export declare function finalizeFormErrors(fields: Record<string, string | string[]>, global: string[]): FormValidationErrors;
|
|
34
24
|
/**
|
|
35
|
-
|
|
36
25
|
* Django REST framework validation body:
|
|
37
|
-
|
|
38
26
|
* `{ "email": ["Invalid"], "non_field_errors": ["…"] }`
|
|
39
|
-
|
|
40
27
|
*/
|
|
41
28
|
export declare function parseDjangoDRFFormErrors(error: unknown, _ctx: ParseFormErrorContext): FormValidationErrors | null;
|
|
42
29
|
export type DotNetFormErrorOptions = {
|
|
@@ -48,26 +35,18 @@ export type DotNetFormErrorOptions = {
|
|
|
48
35
|
includeSummary?: boolean;
|
|
49
36
|
};
|
|
50
37
|
/**
|
|
51
|
-
|
|
52
38
|
* ASP.NET Core `ValidationProblemDetails`:
|
|
53
|
-
|
|
54
39
|
* `{ "errors": { "Email": ["The Email field is required."] } }`
|
|
55
|
-
|
|
56
40
|
*/
|
|
57
41
|
export declare function parseDotNetFormErrors(error: unknown, _ctx: ParseFormErrorContext, options?: DotNetFormErrorOptions): FormValidationErrors | null;
|
|
58
42
|
export type NodeFormErrorOptions = {
|
|
59
43
|
fieldMap?: Record<string, string>;
|
|
60
44
|
};
|
|
61
45
|
/**
|
|
62
|
-
|
|
63
46
|
* Common Node / Express shapes:
|
|
64
|
-
|
|
65
47
|
* - `{ errors: { email: ["Invalid"] } }`
|
|
66
|
-
|
|
67
48
|
* - `{ errors: [{ path: "email", msg: "Invalid" }] }` (express-validator)
|
|
68
|
-
|
|
69
49
|
* - `{ details: [{ message: "…", path: ["email"] }] }` (Joi)
|
|
70
|
-
|
|
71
50
|
*/
|
|
72
51
|
export declare function parseNodeFormErrors(error: unknown, _ctx: ParseFormErrorContext, options?: NodeFormErrorOptions): FormValidationErrors | null;
|
|
73
52
|
//# sourceMappingURL=parseFormErrorHelpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseFormErrorHelpers.d.ts","sourceRoot":"","sources":["../../../src/data/parseFormErrorHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"parseFormErrorHelpers.d.ts","sourceRoot":"","sources":["../../../src/data/parseFormErrorHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,6BAA6B,mIACgF,CAAC;AAI3H,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAOzD;AAwCD,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACpC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,MAAM,CAGR;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAYtE;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAOzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAsB3E;AAiBD,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAoBzC;AAeD,wEAAwE;AACxE,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GACxC,IAAI,CAYN;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EACzC,MAAM,EAAE,MAAM,EAAE,GACf,oBAAoB,CAKtB;AA2BD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,qBAAqB,GAC1B,oBAAoB,GAAG,IAAI,CAI7B;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mFAAmF;IACnF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,qBAAqB,EAC3B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,oBAAoB,GAAG,IAAI,CA0B7B;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,qBAAqB,EAC3B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,oBAAoB,GAAG,IAAI,CAyD7B"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export { AppThemeProvider, useThemeMode, } from './context/AppThemeProvider';
|
|
|
7
7
|
export type { CreateResult, DataProvider as DataProviderContract, DeleteResult, GetListParams, GetListResult, GetOneParams, GetOneResult, Identifier, PaginationParams, SortOrder, SortSpec, UpdateParams, UpdateResult, FormMutation, FormMutationBody, FormValidationErrors, ParseFormError, ParseFormErrorContext, } from './data/dataProviderTypes';
|
|
8
8
|
export { combineResourceHandlers } from './data/resourceHandlers';
|
|
9
9
|
export { isAbortError } from './data/abortError';
|
|
10
|
-
export { parseDjangoDRFFormErrors, parseDotNetFormErrors, parseNodeFormErrors, getErrorBody, resolveErrorBody, flattenNestedArrayErrors, asStringMessages, finalizeFormErrors, } from './data/parseFormErrorHelpers';
|
|
10
|
+
export { parseDjangoDRFFormErrors, parseDotNetFormErrors, parseNodeFormErrors, getErrorBody, resolveErrorBody, flattenNestedArrayErrors, asStringMessages, finalizeFormErrors, describeNonStandardValidationBody, EXPECTED_VALIDATION_BODY_HINT, } from './data/parseFormErrorHelpers';
|
|
11
11
|
export type { DotNetFormErrorOptions, NodeFormErrorOptions, } from './data/parseFormErrorHelpers';
|
|
12
12
|
export { createMemoryResourceHandlers } from './data/createMemoryResourceHandlers';
|
|
13
13
|
export { createRestResourceHandlers } from './data/createRestResourceHandlers';
|
|
@@ -28,5 +28,5 @@ export { createAdminRouter } from './router/createAdminRouter';
|
|
|
28
28
|
export { deriveAuthPaths, getRouteAccess, partitionAdminRoutes, } from './router/routeAccess';
|
|
29
29
|
export type { AdminAppProps, AdminLayoutProps, AdminRouteChild, AppThemeProviderProps, AuthAdapter, LoginCredentials, AuthRedirects, CreateAdminRouterOptions, AuthAlternateLinkProps, AuthPageLayoutProps, LoginPageProps, NavItem, RouteAccess, ThemeDensity, ThemeMode, } from './types';
|
|
30
30
|
export { ResourceList, FilterBar, ResourceForm, ResourceFormModal, InlineFormSet, InlineFormSetStacked, FormTabs, FormTab, FormSteps, FormStep, TextField, NumberField, BooleanField, DateField, SelectField, PasswordField, ReferenceField, ReferenceManyField, ImageField, FileField, FieldWrapper, TextColumn, NumberColumn, BooleanColumn, DateColumn, ReferenceColumn, ReferenceManyColumn, ImageColumn, CustomColumn, TextFilter, NumberFilter, BooleanFilter, DateFilter, SelectFilter, ReferenceFilter, ReferenceManyFilter, useListQueryState, useChoices, useAbortableEffect, getFormValue, setFormValue, buildFormPayload, buildInlineRowsPayload, buildResourceFormSubmitBody, prepareFormSubmitBody, toFormData, hasUploadValues, nestedFieldPath, useResourceListContext, useRegisterPayloadField, useRegisterSectionField, } from './crud';
|
|
31
|
-
export type { ResourceFormProps, ResourceFormModalProps, InlineFormSetProps, InlineFormSetStackedProps, FormTabsProps, FormTabProps, FormStepsProps, FormStepProps, InlineFormSetLayout, ResourceListProps, BaseSourceProps, ChoiceOption, ChoicesLoader,
|
|
31
|
+
export type { ResourceFormProps, ResourceFormModalProps, InlineFormSetProps, InlineFormSetStackedProps, FormTabsProps, FormTabProps, FormStepsProps, FormStepProps, InlineFormSetLayout, ResourceListProps, BaseSourceProps, ChoiceOption, ChoicesLoader, UseChoicesOptions, ReferenceFieldProps, ReferenceManyFieldProps, DisplayProps, EditMode, FieldRules, InlineCellContext, InlineColumnDef, InlineFormSetBaseProps, InlineRowContext, InlineFieldRegistration, FieldWrapperProps, ImageFieldProps, FileFieldProps, UploadFieldValue, ToFormDataOptions, PrepareFormSubmitBodyOptions, ResourceListBuiltInActions, ResourceListBulkAction, ResourceListBulkActionHelpers, ResourceListRowActionsHelpers, ListQueryState, ListQueryActions, } from './crud';
|
|
32
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,+BAA+B,EAC/B,OAAO,EACP,KAAK,iBAAiB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,KAAK,iBAAiB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,MAAM,EACN,cAAc,EACd,KAAK,wBAAwB,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,gBAAgB,EAChB,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,YAAY,EACZ,YAAY,IAAI,oBAAoB,EACpC,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { AdminLayoutProps } from '../types';
|
|
2
|
-
export declare function AdminLayout({ navItems, brand, collapsedBrand, mobileDrawerTitle, headerExtras, userMenuItems, onUserMenuClick, loginPath, siderCollapsedStorageKey, }: AdminLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function AdminLayout({ navItems, brand, collapsedBrand, mobileDrawerTitle, headerExtras, userMenuItems, onUserMenuClick, loginPath, siderCollapsedStorageKey, navSearch, }: AdminLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=AdminLayout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminLayout.d.ts","sourceRoot":"","sources":["../../../src/layouts/AdminLayout.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdminLayout.d.ts","sourceRoot":"","sources":["../../../src/layouts/AdminLayout.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,gBAAgB,EAAW,MAAM,UAAU,CAAC;AAC1D,OAAO,2BAA2B,CAAC;AA4InC,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAe,EACf,cAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,SAAoB,EACpB,wBAA4C,EAC5C,SAAgB,GACjB,EAAE,gBAAgB,2CA0VlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthPageLayout.d.ts","sourceRoot":"","sources":["../../../src/layouts/AuthPageLayout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AuthPageLayout.d.ts","sourceRoot":"","sources":["../../../src/layouts/AuthPageLayout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,KAAK,EACL,MAAM,EACN,gBAAuB,GACxB,EAAE,mBAAmB,2CAmErB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { NavItem } from '../types';
|
|
2
|
+
export declare function getNavItemLabel(item: NavItem): string;
|
|
3
|
+
export declare function filterNavItems(items: NavItem[], query: string): NavItem[];
|
|
4
|
+
export declare function collectSubmenuKeys(items: NavItem[]): string[];
|
|
5
|
+
//# sourceMappingURL=navFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navFilter.d.ts","sourceRoot":"","sources":["../../../src/layouts/navFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAKrD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAyBzE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAY7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navMenuItems.d.ts","sourceRoot":"","sources":["../../../src/layouts/navMenuItems.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGxC,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GACvC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAmCjC"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -30,6 +30,11 @@ export type AuthAdapter = {
|
|
|
30
30
|
logout: () => void;
|
|
31
31
|
/** Synchronous read of session (e.g. token). Used after mount and after login/logout. */
|
|
32
32
|
getToken: () => string | null;
|
|
33
|
+
/**
|
|
34
|
+
* Label for the account menu in `AdminLayout` (top-right button).
|
|
35
|
+
* Return `null` when no user is loaded. Defaults to `"User"` when omitted.
|
|
36
|
+
*/
|
|
37
|
+
getUserLabel?: () => string | null;
|
|
33
38
|
};
|
|
34
39
|
/** How a route participates in auth when using `AdminApp` / `createAdminRouter`. */
|
|
35
40
|
export type RouteAccess =
|
|
@@ -68,6 +73,13 @@ export type AdminLayoutProps = {
|
|
|
68
73
|
loginPath?: string;
|
|
69
74
|
/** localStorage key for sider collapsed state. Default `ding-react-admin-sider-collapsed`. */
|
|
70
75
|
siderCollapsedStorageKey?: string;
|
|
76
|
+
/**
|
|
77
|
+
* Sidebar menu search. Enabled by default; pass `false` to hide.
|
|
78
|
+
* Use an object to customize the placeholder.
|
|
79
|
+
*/
|
|
80
|
+
navSearch?: boolean | {
|
|
81
|
+
placeholder?: string;
|
|
82
|
+
};
|
|
71
83
|
};
|
|
72
84
|
export type { AuthPageLayoutProps } from './layouts/AuthPageLayout';
|
|
73
85
|
export type { AuthAlternateLinkProps } from './components/AuthAlternateLink';
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAErD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEpD,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,wGAAwG;IACxG,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC3B,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB,CAAC;AAEF,wFAAwF;AACxF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,CAAC,WAAW,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,yFAAyF;IACzF,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,59 +1,85 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ding-react-admin",
|
|
3
|
-
"version": "2.0.
|
|
4
|
-
"type": "module",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"description": "Composable admin shell (Ant Design + React Router): quick-start AdminApp or build your own layout.",
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
},
|
|
58
|
-
"
|
|
59
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "ding-react-admin",
|
|
3
|
+
"version": "2.0.5",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"description": "Composable admin shell (Ant Design + React Router): quick-start AdminApp or build your own layout.",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"react",
|
|
9
|
+
"admin",
|
|
10
|
+
"dashboard",
|
|
11
|
+
"antd",
|
|
12
|
+
"ant-design",
|
|
13
|
+
"crud",
|
|
14
|
+
"react-router",
|
|
15
|
+
"react-hook-form",
|
|
16
|
+
"data-grid",
|
|
17
|
+
"forms",
|
|
18
|
+
"typescript"
|
|
19
|
+
],
|
|
20
|
+
"homepage": "https://muhammadinaam.github.io/ding-react-admin/",
|
|
21
|
+
"bugs": {
|
|
22
|
+
"url": "https://github.com/Muhammadinaam/ding-react-admin/issues"
|
|
23
|
+
},
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "https://github.com/Muhammadinaam/ding-react-admin.git"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"provenance": true
|
|
30
|
+
},
|
|
31
|
+
"main": "./dist/index.js",
|
|
32
|
+
"module": "./dist/index.js",
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"sideEffects": [
|
|
35
|
+
"**/*.css",
|
|
36
|
+
"dist/index.css"
|
|
37
|
+
],
|
|
38
|
+
"exports": {
|
|
39
|
+
".": {
|
|
40
|
+
"types": "./dist/index.d.ts",
|
|
41
|
+
"import": "./dist/index.js"
|
|
42
|
+
},
|
|
43
|
+
"./style.css": "./dist/index.css"
|
|
44
|
+
},
|
|
45
|
+
"files": [
|
|
46
|
+
"dist",
|
|
47
|
+
"src",
|
|
48
|
+
"docs/assets"
|
|
49
|
+
],
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "vite build && node -e \"require('fs').writeFileSync('dist/index.d.ts','export * from \\\"./src/index\\\";\\n')\"",
|
|
52
|
+
"dev:example": "yarn --cwd examples/playground dev",
|
|
53
|
+
"build:example": "yarn --cwd examples/playground build",
|
|
54
|
+
"build:example:gh-pages": "yarn --cwd examples/playground build:gh-pages",
|
|
55
|
+
"test": "vitest run",
|
|
56
|
+
"prepublishOnly": "yarn build"
|
|
57
|
+
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"@ant-design/icons": ">=6",
|
|
60
|
+
"antd": ">=6",
|
|
61
|
+
"dayjs": ">=1",
|
|
62
|
+
"react": ">=18",
|
|
63
|
+
"react-dom": ">=18",
|
|
64
|
+
"react-hook-form": ">=7",
|
|
65
|
+
"react-router-dom": ">=6"
|
|
66
|
+
},
|
|
67
|
+
"devDependencies": {
|
|
68
|
+
"@ant-design/icons": "^6.0.0",
|
|
69
|
+
"@types/react": "^19.2.14",
|
|
70
|
+
"@types/react-dom": "^19.2.3",
|
|
71
|
+
"@vitejs/plugin-react": "^6.0.1",
|
|
72
|
+
"antd": "^6.0.0",
|
|
73
|
+
"dayjs": "^1.11.13",
|
|
74
|
+
"react": "^19.2.5",
|
|
75
|
+
"react-dom": "^19.2.5",
|
|
76
|
+
"react-hook-form": "^7.56.4",
|
|
77
|
+
"react-router-dom": "^7.14.2",
|
|
78
|
+
"typescript": "~6.0.2",
|
|
79
|
+
"vite": "^8.0.9",
|
|
80
|
+
"vite-plugin-dts": "^4.5.4",
|
|
81
|
+
"vite-plugin-lib-inject-css": "^2.2.2",
|
|
82
|
+
"vitest": "^3.2.4"
|
|
83
|
+
},
|
|
84
|
+
"dependencies": {}
|
|
85
|
+
}
|
package/src/app/AdminApp.tsx
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { useMemo } from "react";
|
|
2
|
-
import { RouterProvider } from "react-router-dom";
|
|
3
|
-
import { AppThemeProvider } from "../context/AppThemeProvider";
|
|
4
|
-
import { createAdminRouter } from "../router/createAdminRouter";
|
|
5
|
-
import type { AdminAppProps } from "../types";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Declarative admin shell: theme, router, and layout from your route list.
|
|
9
|
-
* Wrap in `<AuthProvider adapter={...}>` — auth is not configured on this component.
|
|
10
|
-
*/
|
|
11
|
-
export function AdminApp({
|
|
12
|
-
navItems,
|
|
13
|
-
routes,
|
|
14
|
-
authRedirects,
|
|
15
|
-
layoutProps,
|
|
16
|
-
theme: themeKeys,
|
|
17
|
-
}: AdminAppProps) {
|
|
18
|
-
const router = useMemo(
|
|
19
|
-
() =>
|
|
20
|
-
createAdminRouter({
|
|
21
|
-
navItems,
|
|
22
|
-
children: routes,
|
|
23
|
-
layoutProps,
|
|
24
|
-
redirects: authRedirects,
|
|
25
|
-
}),
|
|
26
|
-
[navItems, routes, layoutProps, authRedirects],
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
return (
|
|
30
|
-
<AppThemeProvider {...themeKeys}>
|
|
31
|
-
<RouterProvider router={router} />
|
|
32
|
-
</AppThemeProvider>
|
|
33
|
-
);
|
|
34
|
-
}
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { RouterProvider } from "react-router-dom";
|
|
3
|
+
import { AppThemeProvider } from "../context/AppThemeProvider";
|
|
4
|
+
import { createAdminRouter } from "../router/createAdminRouter";
|
|
5
|
+
import type { AdminAppProps } from "../types";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Declarative admin shell: theme, router, and layout from your route list.
|
|
9
|
+
* Wrap in `<AuthProvider adapter={...}>` — auth is not configured on this component.
|
|
10
|
+
*/
|
|
11
|
+
export function AdminApp({
|
|
12
|
+
navItems,
|
|
13
|
+
routes,
|
|
14
|
+
authRedirects,
|
|
15
|
+
layoutProps,
|
|
16
|
+
theme: themeKeys,
|
|
17
|
+
}: AdminAppProps) {
|
|
18
|
+
const router = useMemo(
|
|
19
|
+
() =>
|
|
20
|
+
createAdminRouter({
|
|
21
|
+
navItems,
|
|
22
|
+
children: routes,
|
|
23
|
+
layoutProps,
|
|
24
|
+
redirects: authRedirects,
|
|
25
|
+
}),
|
|
26
|
+
[navItems, routes, layoutProps, authRedirects],
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<AppThemeProvider {...themeKeys}>
|
|
31
|
+
<RouterProvider router={router} />
|
|
32
|
+
</AppThemeProvider>
|
|
33
|
+
);
|
|
34
|
+
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { Typography } from "antd";
|
|
2
|
-
import { Link } from "react-router-dom";
|
|
3
|
-
|
|
4
|
-
export type AuthAlternateLinkProps = {
|
|
5
|
-
prompt: string;
|
|
6
|
-
linkText: string;
|
|
7
|
-
to: string;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export function AuthAlternateLink({
|
|
11
|
-
prompt,
|
|
12
|
-
linkText,
|
|
13
|
-
to,
|
|
14
|
-
}: AuthAlternateLinkProps) {
|
|
15
|
-
return (
|
|
16
|
-
<Typography.Paragraph
|
|
17
|
-
type="secondary"
|
|
18
|
-
style={{ textAlign: "center", marginBottom: 0 }}
|
|
19
|
-
>
|
|
20
|
-
{prompt} <Link to={to}>{linkText}</Link>
|
|
21
|
-
</Typography.Paragraph>
|
|
22
|
-
);
|
|
23
|
-
}
|
|
1
|
+
import { Typography } from "antd";
|
|
2
|
+
import { Link } from "react-router-dom";
|
|
3
|
+
|
|
4
|
+
export type AuthAlternateLinkProps = {
|
|
5
|
+
prompt: string;
|
|
6
|
+
linkText: string;
|
|
7
|
+
to: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export function AuthAlternateLink({
|
|
11
|
+
prompt,
|
|
12
|
+
linkText,
|
|
13
|
+
to,
|
|
14
|
+
}: AuthAlternateLinkProps) {
|
|
15
|
+
return (
|
|
16
|
+
<Typography.Paragraph
|
|
17
|
+
type="secondary"
|
|
18
|
+
style={{ textAlign: "center", marginBottom: 0 }}
|
|
19
|
+
>
|
|
20
|
+
{prompt} <Link to={to}>{linkText}</Link>
|
|
21
|
+
</Typography.Paragraph>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { ColumnHeightOutlined, LayoutOutlined } from "@ant-design/icons";
|
|
2
|
-
import { Segmented } from "antd";
|
|
3
|
-
import type { SegmentedProps } from "antd";
|
|
4
|
-
import { useThemeMode } from "../context/AppThemeProvider";
|
|
5
|
-
import type { ThemeDensity } from "../types";
|
|
6
|
-
|
|
7
|
-
const OPTIONS: SegmentedProps["options"] = [
|
|
8
|
-
{
|
|
9
|
-
label: "Comfortable",
|
|
10
|
-
value: "comfortable",
|
|
11
|
-
icon: <LayoutOutlined />,
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
label: "Compact",
|
|
15
|
-
value: "compact",
|
|
16
|
-
icon: <ColumnHeightOutlined />,
|
|
17
|
-
},
|
|
18
|
-
];
|
|
19
|
-
|
|
20
|
-
export function DensitySwitch() {
|
|
21
|
-
const { density, setDensity } = useThemeMode();
|
|
22
|
-
|
|
23
|
-
return (
|
|
24
|
-
<Segmented
|
|
25
|
-
size="small"
|
|
26
|
-
value={density}
|
|
27
|
-
options={OPTIONS}
|
|
28
|
-
onChange={(v) => setDensity(v as ThemeDensity)}
|
|
29
|
-
/>
|
|
30
|
-
);
|
|
31
|
-
}
|
|
1
|
+
import { ColumnHeightOutlined, LayoutOutlined } from "@ant-design/icons";
|
|
2
|
+
import { Segmented } from "antd";
|
|
3
|
+
import type { SegmentedProps } from "antd";
|
|
4
|
+
import { useThemeMode } from "../context/AppThemeProvider";
|
|
5
|
+
import type { ThemeDensity } from "../types";
|
|
6
|
+
|
|
7
|
+
const OPTIONS: SegmentedProps["options"] = [
|
|
8
|
+
{
|
|
9
|
+
label: "Comfortable",
|
|
10
|
+
value: "comfortable",
|
|
11
|
+
icon: <LayoutOutlined />,
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
label: "Compact",
|
|
15
|
+
value: "compact",
|
|
16
|
+
icon: <ColumnHeightOutlined />,
|
|
17
|
+
},
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
export function DensitySwitch() {
|
|
21
|
+
const { density, setDensity } = useThemeMode();
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<Segmented
|
|
25
|
+
size="small"
|
|
26
|
+
value={density}
|
|
27
|
+
options={OPTIONS}
|
|
28
|
+
onChange={(v) => setDensity(v as ThemeDensity)}
|
|
29
|
+
/>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Tooltip } from "antd";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
import "./navMenu.css";
|
|
4
|
+
|
|
5
|
+
export type NavMenuLabelProps = {
|
|
6
|
+
label: ReactNode;
|
|
7
|
+
/** Plain-text tooltip shown on hover. */
|
|
8
|
+
title: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export function NavMenuLabel({ label, title }: NavMenuLabelProps) {
|
|
12
|
+
if (!title) {
|
|
13
|
+
return <span className="ding-admin-menu-label">{label}</span>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<Tooltip
|
|
18
|
+
title={title}
|
|
19
|
+
placement="right"
|
|
20
|
+
mouseEnterDelay={1}
|
|
21
|
+
destroyOnHidden
|
|
22
|
+
>
|
|
23
|
+
<span className="ding-admin-menu-label">{label}</span>
|
|
24
|
+
</Tooltip>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { SearchOutlined } from "@ant-design/icons";
|
|
2
|
+
import { ConfigProvider, Input, theme } from "antd";
|
|
3
|
+
import type { ChangeEvent } from "react";
|
|
4
|
+
|
|
5
|
+
export type NavMenuSearchProps = {
|
|
6
|
+
value: string;
|
|
7
|
+
onChange: (value: string) => void;
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
/** Lighter styling for the classic dark navy sidebar. */
|
|
10
|
+
variant?: "on-dark" | "app";
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export function NavMenuSearch({
|
|
14
|
+
value,
|
|
15
|
+
onChange,
|
|
16
|
+
placeholder = "Search menu…",
|
|
17
|
+
variant = "on-dark",
|
|
18
|
+
}: NavMenuSearchProps) {
|
|
19
|
+
const { token } = theme.useToken();
|
|
20
|
+
const onDark = variant === "on-dark";
|
|
21
|
+
|
|
22
|
+
const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
23
|
+
onChange(event.target.value);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<div
|
|
28
|
+
style={{
|
|
29
|
+
flexShrink: 0,
|
|
30
|
+
paddingInline: token.paddingSM,
|
|
31
|
+
paddingBlock: token.paddingXS,
|
|
32
|
+
}}
|
|
33
|
+
>
|
|
34
|
+
<ConfigProvider
|
|
35
|
+
theme={
|
|
36
|
+
onDark
|
|
37
|
+
? { token: { colorTextPlaceholder: "rgba(255, 255, 255, 0.45)" } }
|
|
38
|
+
: undefined
|
|
39
|
+
}
|
|
40
|
+
>
|
|
41
|
+
<Input
|
|
42
|
+
allowClear
|
|
43
|
+
size="small"
|
|
44
|
+
value={value}
|
|
45
|
+
onChange={handleChange}
|
|
46
|
+
placeholder={placeholder}
|
|
47
|
+
prefix={
|
|
48
|
+
<SearchOutlined
|
|
49
|
+
style={{
|
|
50
|
+
color: onDark
|
|
51
|
+
? "rgba(255, 255, 255, 0.45)"
|
|
52
|
+
: token.colorTextDescription,
|
|
53
|
+
}}
|
|
54
|
+
/>
|
|
55
|
+
}
|
|
56
|
+
aria-label={placeholder}
|
|
57
|
+
styles={{
|
|
58
|
+
input: onDark
|
|
59
|
+
? { color: "rgba(255, 255, 255, 0.88)" }
|
|
60
|
+
: undefined,
|
|
61
|
+
clear: onDark
|
|
62
|
+
? { color: "rgba(255, 255, 255, 0.45)" }
|
|
63
|
+
: undefined,
|
|
64
|
+
}}
|
|
65
|
+
style={{
|
|
66
|
+
background: onDark
|
|
67
|
+
? "rgba(255, 255, 255, 0.08)"
|
|
68
|
+
: token.colorFillTertiary,
|
|
69
|
+
borderColor: "transparent",
|
|
70
|
+
boxShadow: "none",
|
|
71
|
+
}}
|
|
72
|
+
/>
|
|
73
|
+
</ConfigProvider>
|
|
74
|
+
</div>
|
|
75
|
+
);
|
|
76
|
+
}
|