@payloadcms/ui 4.0.0-canary.2 → 4.0.0-internal.011fd46
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/css/colors.css +3 -0
- package/dist/css/design-tokens.css +5 -0
- package/dist/css/elevations.css +4 -0
- package/dist/elements/AppHeader/index.d.ts +3 -2
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +2 -2
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/ColumnSelection/Popup.d.ts +12 -0
- package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -0
- package/dist/elements/{ColumnSelector/index.js → ColumnSelection/Popup.js} +23 -12
- package/dist/elements/ColumnSelection/Popup.js.map +1 -0
- package/dist/elements/ColumnSelection/index.d.ts +10 -0
- package/dist/elements/ColumnSelection/index.d.ts.map +1 -0
- package/dist/elements/{ColumnsButton → ColumnSelection}/index.js +23 -17
- package/dist/elements/ColumnSelection/index.js.map +1 -0
- package/dist/elements/DocumentControls/index.css +7 -1
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +2 -2
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerHeader/index.js +5 -3
- package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
- package/dist/elements/GroupBy/Popup.d.ts +21 -0
- package/dist/elements/GroupBy/Popup.d.ts.map +1 -0
- package/dist/elements/GroupBy/Popup.js +269 -0
- package/dist/elements/GroupBy/Popup.js.map +1 -0
- package/dist/elements/GroupBy/index.d.ts +12 -0
- package/dist/elements/GroupBy/index.d.ts.map +1 -0
- package/dist/elements/GroupBy/index.js +91 -0
- package/dist/elements/GroupBy/index.js.map +1 -0
- package/dist/elements/ListColumnSelectionButton/index.d.ts +11 -0
- package/dist/elements/ListColumnSelectionButton/index.d.ts.map +1 -0
- package/dist/elements/ListColumnSelectionButton/index.js +37 -0
- package/dist/elements/ListColumnSelectionButton/index.js.map +1 -0
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +7 -7
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListGroupByButton/index.d.ts +12 -0
- package/dist/elements/ListGroupByButton/index.d.ts.map +1 -0
- package/dist/elements/ListGroupByButton/index.js +55 -0
- package/dist/elements/ListGroupByButton/index.js.map +1 -0
- package/dist/elements/ListWhereBuilder/index.d.ts +16 -0
- package/dist/elements/ListWhereBuilder/index.d.ts.map +1 -0
- package/dist/elements/ListWhereBuilder/index.js +62 -0
- package/dist/elements/ListWhereBuilder/index.js.map +1 -0
- package/dist/elements/Popup/PopupButtonList/index.css +5 -0
- package/dist/elements/Popup/PopupGroupLabel/index.css +8 -5
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js +42 -11
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.d.ts +2 -1
- package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/PublishMany/index.d.ts +2 -6
- package/dist/elements/PublishMany/index.d.ts.map +1 -1
- package/dist/elements/PublishMany/index.js +0 -38
- package/dist/elements/PublishMany/index.js.map +1 -1
- package/dist/elements/QueryPresets/cells/ColumnsCell/{index.scss → index.css} +1 -3
- package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts +1 -1
- package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/cells/ColumnsCell/index.js +1 -1
- package/dist/elements/QueryPresets/cells/ColumnsCell/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts +1 -1
- package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/fields/ColumnsField/index.js +77 -48
- package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts +1 -1
- package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/fields/GroupByField/index.js +12 -21
- package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/Heading/index.css +52 -0
- package/dist/elements/QueryPresets/fields/Heading/index.d.ts +7 -0
- package/dist/elements/QueryPresets/fields/Heading/index.d.ts.map +1 -0
- package/dist/elements/QueryPresets/fields/Heading/index.js +31 -0
- package/dist/elements/QueryPresets/fields/Heading/index.js.map +1 -0
- package/dist/elements/QueryPresets/fields/WhereField/index.d.ts +1 -1
- package/dist/elements/QueryPresets/fields/WhereField/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/fields/WhereField/index.js +24 -23
- package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/fields.css +23 -0
- package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts +5 -0
- package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts.map +1 -0
- package/dist/elements/ReactSelect/getCaptureMenuScroll.js +10 -0
- package/dist/elements/ReactSelect/getCaptureMenuScroll.js.map +1 -0
- package/dist/elements/ReactSelect/getMenuListStyles.d.ts +6 -0
- package/dist/elements/ReactSelect/getMenuListStyles.d.ts.map +1 -0
- package/dist/elements/ReactSelect/getMenuListStyles.js +7 -0
- package/dist/elements/ReactSelect/getMenuListStyles.js.map +1 -0
- package/dist/elements/ReactSelect/index.css +0 -1
- package/dist/elements/ReactSelect/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/index.js +168 -148
- package/dist/elements/ReactSelect/index.js.map +1 -1
- package/dist/elements/ReactSelect/types.d.ts +1 -0
- package/dist/elements/ReactSelect/types.d.ts.map +1 -1
- package/dist/elements/ReactSelect/types.js.map +1 -1
- package/dist/elements/RelationshipTable/index.js +2 -2
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/SortColumn/index.css +1 -1
- package/dist/elements/Table/index.css +24 -2
- package/dist/elements/Toasts/fieldErrors.d.ts +1 -0
- package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
- package/dist/elements/Toasts/fieldErrors.js +25 -9
- package/dist/elements/Toasts/fieldErrors.js.map +1 -1
- package/dist/elements/Toasts/index.css +5 -0
- package/dist/elements/UnpublishMany/DrawerContent.d.ts +2 -1
- package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/UnpublishMany/index.d.ts +2 -4
- package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/index.js +0 -38
- package/dist/elements/UnpublishMany/index.js.map +1 -1
- package/dist/elements/UserMenu/LanguageMenu/index.js +1 -1
- package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/SettingsMenu/index.d.ts +6 -2
- package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/SettingsMenu/index.js +15 -10
- package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/ThemeMenu/index.js +1 -1
- package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/index.d.ts +2 -1
- package/dist/elements/UserMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/index.js +8 -5
- package/dist/elements/UserMenu/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.d.ts +1 -0
- package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.js +17 -2
- package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
- package/dist/elements/WhereBuilder/index.d.ts +4 -3
- package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/index.js +71 -62
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/elements/WhereBuilder/types.d.ts +6 -5
- package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/types.js.map +1 -1
- package/dist/exports/client/index.d.ts +2 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +26 -26
- package/dist/exports/client/index.js.map +4 -4
- package/dist/fields/RadioGroup/index.css +6 -0
- package/dist/icons/Check/index.css +1 -2
- package/dist/icons/Check/index.js +1 -1
- package/dist/icons/Check/index.js.map +1 -1
- package/dist/icons/Warning/index.css +1 -7
- package/dist/icons/Warning/index.d.ts +1 -1
- package/dist/icons/Warning/index.d.ts.map +1 -1
- package/dist/icons/Warning/index.js +11 -16
- package/dist/icons/Warning/index.js.map +1 -1
- package/dist/providers/ToastContainer/index.css +208 -0
- package/dist/providers/ToastContainer/index.d.ts +1 -0
- package/dist/providers/ToastContainer/index.d.ts.map +1 -1
- package/dist/providers/ToastContainer/index.js +19 -6
- package/dist/providers/ToastContainer/index.js.map +1 -1
- package/dist/scss/app.scss +7 -2
- package/dist/styles.css +1 -1
- package/dist/templates/Default/index.d.ts.map +1 -1
- package/dist/templates/Default/index.js +51 -9
- package/dist/templates/Default/index.js.map +1 -1
- package/dist/utilities/reduceFieldsToOptions.js +1 -1
- package/dist/utilities/reduceFieldsToOptions.js.map +1 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.js +4 -4
- package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
- package/dist/views/List/ListSelection/index.js +4 -4
- package/dist/views/List/ListSelection/index.js.map +1 -1
- package/dist/views/List/index.client.d.ts.map +1 -1
- package/dist/views/List/index.client.js +3 -3
- package/dist/views/List/index.client.js.map +1 -1
- package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
- package/dist/views/List/renderListViewSlots.js +9 -6
- package/dist/views/List/renderListViewSlots.js.map +1 -1
- package/dist/views/Logout/LogoutClient.js +1 -1
- package/dist/views/Logout/LogoutClient.js.map +1 -1
- package/dist/views/Versions/index.css +0 -4
- package/package.json +5 -5
- package/dist/elements/ColumnSelector/index.d.ts +0 -9
- package/dist/elements/ColumnSelector/index.d.ts.map +0 -1
- package/dist/elements/ColumnSelector/index.js.map +0 -1
- package/dist/elements/ColumnsButton/index.d.ts +0 -7
- package/dist/elements/ColumnsButton/index.d.ts.map +0 -1
- package/dist/elements/ColumnsButton/index.js.map +0 -1
- package/dist/elements/GroupByBuilder/index.d.ts +0 -12
- package/dist/elements/GroupByBuilder/index.d.ts.map +0 -1
- package/dist/elements/GroupByBuilder/index.js +0 -164
- package/dist/elements/GroupByBuilder/index.js.map +0 -1
- package/dist/elements/GroupByBuilder/index.scss +0 -39
- package/dist/elements/GroupByControl/index.d.ts +0 -9
- package/dist/elements/GroupByControl/index.d.ts.map +0 -1
- package/dist/elements/GroupByControl/index.js +0 -254
- package/dist/elements/GroupByControl/index.js.map +0 -1
- package/dist/elements/QueryPresets/fields/ColumnsField/index.scss +0 -17
- package/dist/elements/QueryPresets/fields/GroupByField/index.scss +0 -17
- package/dist/elements/QueryPresets/fields/WhereField/index.scss +0 -23
- package/dist/scss/toasts.scss +0 -146
- /package/dist/elements/{ColumnSelector/index.css → ColumnSelection/Popup.css} +0 -0
- /package/dist/elements/{GroupByControl/index.css → GroupBy/Popup.css} +0 -0
|
@@ -77,12 +77,15 @@ export const renderListViewSlots = ({
|
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
79
|
if (collectionConfig.admin.components?.views?.list?.NoResults) {
|
|
80
|
-
result.NoResults =
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
result.NoResults = /*#__PURE__*/_jsx(React.Fragment, {
|
|
81
|
+
children: RenderServerComponent({
|
|
82
|
+
clientProps: clientProps,
|
|
83
|
+
Component: collectionConfig.admin.components.views.list.NoResults,
|
|
84
|
+
importMap: payload.importMap,
|
|
85
|
+
key: 'list-view-no-results',
|
|
86
|
+
serverProps: serverProps
|
|
87
|
+
})
|
|
88
|
+
}, "list-view-no-results");
|
|
86
89
|
}
|
|
87
90
|
return result;
|
|
88
91
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderListViewSlots.js","names":["React","Banner","RenderServerComponent","renderListViewSlots","clientProps","collectionConfig","description","notFoundDocId","payload","serverProps","result","admin","components","afterList","AfterList","Component","importMap","listMenuItems","Array","isArray","afterListTable","AfterListTable","beforeList","BeforeList","existingBeforeListTable","beforeListTable","notFoundBanner","_jsx","className","type","i18n","t","id","BeforeListTable","_jsxs","Fragment","Description","collectionSlug","slug","views","list","NoResults"],"sources":["../../../src/views/List/renderListViewSlots.tsx"],"sourcesContent":["import type {\n AfterListClientProps,\n AfterListTableClientProps,\n AfterListTableServerPropsOnly,\n BeforeListClientProps,\n BeforeListServerPropsOnly,\n BeforeListTableClientProps,\n BeforeListTableServerPropsOnly,\n ListViewServerPropsOnly,\n ListViewSlots,\n ListViewSlotSharedClientProps,\n NoResultsClientProps,\n NoResultsServerPropsOnly,\n Payload,\n SanitizedCollectionConfig,\n StaticDescription,\n ViewDescriptionClientProps,\n ViewDescriptionServerPropsOnly,\n} from 'payload'\n\nimport React from 'react'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { RenderServerComponent } from '../../elements/RenderServerComponent/index.js'\n\ntype Args = {\n clientProps: ListViewSlotSharedClientProps\n collectionConfig: SanitizedCollectionConfig\n description?: StaticDescription\n notFoundDocId?: null | string\n payload: Payload\n serverProps: ListViewServerPropsOnly\n}\n\nexport const renderListViewSlots = ({\n clientProps,\n collectionConfig,\n description,\n notFoundDocId,\n payload,\n serverProps,\n}: Args): ListViewSlots => {\n const result: ListViewSlots = {} as ListViewSlots\n\n if (collectionConfig.admin.components?.afterList) {\n result.AfterList = RenderServerComponent({\n clientProps: clientProps satisfies AfterListClientProps,\n Component: collectionConfig.admin.components.afterList,\n importMap: payload.importMap,\n serverProps: serverProps satisfies AfterListTableServerPropsOnly,\n })\n }\n\n const listMenuItems = collectionConfig.admin.components?.listMenuItems\n\n if (Array.isArray(listMenuItems)) {\n result.listMenuItems = [\n RenderServerComponent({\n clientProps,\n Component: listMenuItems,\n importMap: payload.importMap,\n serverProps,\n }),\n ]\n }\n\n if (collectionConfig.admin.components?.afterListTable) {\n result.AfterListTable = RenderServerComponent({\n clientProps: clientProps satisfies AfterListTableClientProps,\n Component: collectionConfig.admin.components.afterListTable,\n importMap: payload.importMap,\n serverProps: serverProps satisfies AfterListTableServerPropsOnly,\n })\n }\n\n if (collectionConfig.admin.components?.beforeList) {\n result.BeforeList = RenderServerComponent({\n clientProps: clientProps satisfies BeforeListClientProps,\n Component: collectionConfig.admin.components.beforeList,\n importMap: payload.importMap,\n serverProps: serverProps satisfies BeforeListServerPropsOnly,\n })\n }\n\n // Handle beforeListTable with optional banner\n const existingBeforeListTable = collectionConfig.admin.components?.beforeListTable\n ? RenderServerComponent({\n clientProps: clientProps satisfies BeforeListTableClientProps,\n Component: collectionConfig.admin.components.beforeListTable,\n importMap: payload.importMap,\n serverProps: serverProps satisfies BeforeListTableServerPropsOnly,\n })\n : null\n\n // Create banner for document not found\n const notFoundBanner = notFoundDocId ? (\n <Banner className=\"list-view__not-found-banner\" type=\"danger\">\n {serverProps.i18n.t('error:documentNotFound', { id: notFoundDocId })}\n </Banner>\n ) : null\n\n // Combine banner and existing component\n if (notFoundBanner || existingBeforeListTable) {\n result.BeforeListTable = (\n <React.Fragment>\n {notFoundBanner}\n {existingBeforeListTable}\n </React.Fragment>\n )\n }\n\n if (collectionConfig.admin.components?.Description) {\n result.Description = RenderServerComponent({\n clientProps: {\n collectionSlug: collectionConfig.slug,\n description,\n } satisfies ViewDescriptionClientProps,\n Component: collectionConfig.admin.components.Description,\n importMap: payload.importMap,\n serverProps: serverProps satisfies ViewDescriptionServerPropsOnly,\n })\n }\n\n if (collectionConfig.admin.components?.views?.list?.NoResults) {\n result.NoResults = RenderServerComponent({\n
|
|
1
|
+
{"version":3,"file":"renderListViewSlots.js","names":["React","Banner","RenderServerComponent","renderListViewSlots","clientProps","collectionConfig","description","notFoundDocId","payload","serverProps","result","admin","components","afterList","AfterList","Component","importMap","listMenuItems","Array","isArray","afterListTable","AfterListTable","beforeList","BeforeList","existingBeforeListTable","beforeListTable","notFoundBanner","_jsx","className","type","i18n","t","id","BeforeListTable","_jsxs","Fragment","Description","collectionSlug","slug","views","list","NoResults","key"],"sources":["../../../src/views/List/renderListViewSlots.tsx"],"sourcesContent":["import type {\n AfterListClientProps,\n AfterListTableClientProps,\n AfterListTableServerPropsOnly,\n BeforeListClientProps,\n BeforeListServerPropsOnly,\n BeforeListTableClientProps,\n BeforeListTableServerPropsOnly,\n ListViewServerPropsOnly,\n ListViewSlots,\n ListViewSlotSharedClientProps,\n NoResultsClientProps,\n NoResultsServerPropsOnly,\n Payload,\n SanitizedCollectionConfig,\n StaticDescription,\n ViewDescriptionClientProps,\n ViewDescriptionServerPropsOnly,\n} from 'payload'\n\nimport React from 'react'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { RenderServerComponent } from '../../elements/RenderServerComponent/index.js'\n\ntype Args = {\n clientProps: ListViewSlotSharedClientProps\n collectionConfig: SanitizedCollectionConfig\n description?: StaticDescription\n notFoundDocId?: null | string\n payload: Payload\n serverProps: ListViewServerPropsOnly\n}\n\nexport const renderListViewSlots = ({\n clientProps,\n collectionConfig,\n description,\n notFoundDocId,\n payload,\n serverProps,\n}: Args): ListViewSlots => {\n const result: ListViewSlots = {} as ListViewSlots\n\n if (collectionConfig.admin.components?.afterList) {\n result.AfterList = RenderServerComponent({\n clientProps: clientProps satisfies AfterListClientProps,\n Component: collectionConfig.admin.components.afterList,\n importMap: payload.importMap,\n serverProps: serverProps satisfies AfterListTableServerPropsOnly,\n })\n }\n\n const listMenuItems = collectionConfig.admin.components?.listMenuItems\n\n if (Array.isArray(listMenuItems)) {\n result.listMenuItems = [\n RenderServerComponent({\n clientProps,\n Component: listMenuItems,\n importMap: payload.importMap,\n serverProps,\n }),\n ]\n }\n\n if (collectionConfig.admin.components?.afterListTable) {\n result.AfterListTable = RenderServerComponent({\n clientProps: clientProps satisfies AfterListTableClientProps,\n Component: collectionConfig.admin.components.afterListTable,\n importMap: payload.importMap,\n serverProps: serverProps satisfies AfterListTableServerPropsOnly,\n })\n }\n\n if (collectionConfig.admin.components?.beforeList) {\n result.BeforeList = RenderServerComponent({\n clientProps: clientProps satisfies BeforeListClientProps,\n Component: collectionConfig.admin.components.beforeList,\n importMap: payload.importMap,\n serverProps: serverProps satisfies BeforeListServerPropsOnly,\n })\n }\n\n // Handle beforeListTable with optional banner\n const existingBeforeListTable = collectionConfig.admin.components?.beforeListTable\n ? RenderServerComponent({\n clientProps: clientProps satisfies BeforeListTableClientProps,\n Component: collectionConfig.admin.components.beforeListTable,\n importMap: payload.importMap,\n serverProps: serverProps satisfies BeforeListTableServerPropsOnly,\n })\n : null\n\n // Create banner for document not found\n const notFoundBanner = notFoundDocId ? (\n <Banner className=\"list-view__not-found-banner\" type=\"danger\">\n {serverProps.i18n.t('error:documentNotFound', { id: notFoundDocId })}\n </Banner>\n ) : null\n\n // Combine banner and existing component\n if (notFoundBanner || existingBeforeListTable) {\n result.BeforeListTable = (\n <React.Fragment>\n {notFoundBanner}\n {existingBeforeListTable}\n </React.Fragment>\n )\n }\n\n if (collectionConfig.admin.components?.Description) {\n result.Description = RenderServerComponent({\n clientProps: {\n collectionSlug: collectionConfig.slug,\n description,\n } satisfies ViewDescriptionClientProps,\n Component: collectionConfig.admin.components.Description,\n importMap: payload.importMap,\n serverProps: serverProps satisfies ViewDescriptionServerPropsOnly,\n })\n }\n\n if (collectionConfig.admin.components?.views?.list?.NoResults) {\n result.NoResults = (\n <React.Fragment key=\"list-view-no-results\">\n {RenderServerComponent({\n clientProps: clientProps satisfies NoResultsClientProps,\n Component: collectionConfig.admin.components.views.list.NoResults,\n importMap: payload.importMap,\n key: 'list-view-no-results',\n serverProps: serverProps satisfies NoResultsServerPropsOnly,\n })}\n </React.Fragment>\n )\n }\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -64,7 +64,7 @@ export const LogoutClient = props => {
|
|
|
64
64
|
if (!navigatingToLoginRef.current) {
|
|
65
65
|
navigatingToLoginRef.current = true;
|
|
66
66
|
await logOut();
|
|
67
|
-
toast
|
|
67
|
+
toast(t("authentication:loggedOutSuccessfully"));
|
|
68
68
|
startRouteTransition(() => router.push(loginRoute));
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoutClient.js","names":["c","_c","formatAdminURL","React","useEffect","toast","Button","LoadingOverlay","useAuth","useRouter","useRouteTransition","useTranslation","baseClass","LogoutClient","props","$","adminRoute","inactivity","redirect","logOut","user","startRouteTransition","id","isLoggedIn","Boolean","navigatingToLoginRef","useRef","t0","path","length","encodeURIComponent","loginRoute","useState","t","router","t1","current","
|
|
1
|
+
{"version":3,"file":"LogoutClient.js","names":["c","_c","formatAdminURL","React","useEffect","toast","Button","LoadingOverlay","useAuth","useRouter","useRouteTransition","useTranslation","baseClass","LogoutClient","props","$","adminRoute","inactivity","redirect","logOut","user","startRouteTransition","id","isLoggedIn","Boolean","navigatingToLoginRef","useRef","t0","path","length","encodeURIComponent","loginRoute","useState","t","router","t1","current","push","handleLogOut","t2","t3","t4","_jsxs","className","children","_jsx","buttonStyle","el","size","url","animationDuration","loadingText"],"sources":["../../../src/views/Logout/LogoutClient.tsx"],"sourcesContent":["'use client'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useEffect } from 'react'\nimport { toast } from 'sonner'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { LoadingOverlay } from '../../elements/Loading/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useRouter } from '../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.css'\n\nconst baseClass = 'logout'\n\n/**\n * This component should **just** be the inactivity route and do nothing with logging the user out.\n *\n * It currently handles too much, the auth provider should just log the user out and then\n * we could remove the useEffect in this file. So instead of the logout button\n * being an anchor link, it should be a button that calls `logOut` in the provider.\n *\n * This view is still useful if cookies attempt to refresh and fail, i.e. the user\n * is logged out due to inactivity.\n */\nexport const LogoutClient: React.FC<{\n adminRoute: string\n inactivity?: boolean\n redirect: string\n}> = (props) => {\n const { adminRoute, inactivity, redirect } = props\n\n const { logOut, user } = useAuth()\n\n const { startRouteTransition } = useRouteTransition()\n\n const isLoggedIn = React.useMemo(() => {\n return Boolean(user?.id)\n }, [user?.id])\n\n const navigatingToLoginRef = React.useRef(false)\n\n const [loginRoute] = React.useState(() =>\n formatAdminURL({\n adminRoute,\n path: `/login${\n inactivity && redirect && redirect.length > 0\n ? `?redirect=${encodeURIComponent(redirect)}`\n : ''\n }`,\n }),\n )\n\n const { t } = useTranslation()\n const router = useRouter()\n\n const handleLogOut = React.useCallback(async () => {\n if (!navigatingToLoginRef.current) {\n navigatingToLoginRef.current = true\n await logOut()\n toast(t('authentication:loggedOutSuccessfully'))\n startRouteTransition(() => router.push(loginRoute))\n return\n }\n }, [logOut, loginRoute, router, startRouteTransition, t])\n\n useEffect(() => {\n if (isLoggedIn && !inactivity) {\n void handleLogOut()\n } else if (!inactivity && !navigatingToLoginRef.current) {\n navigatingToLoginRef.current = true\n startRouteTransition(() => router.push(loginRoute))\n }\n }, [handleLogOut, isLoggedIn, loginRoute, router, startRouteTransition, inactivity])\n\n if (!isLoggedIn && inactivity) {\n return (\n <div className={`${baseClass}__wrap`}>\n <h2>{t('authentication:loggedOutInactivity')}</h2>\n <Button buttonStyle=\"primary\" el=\"link\" size=\"medium\" url={loginRoute}>\n {t('authentication:logBackIn')}\n </Button>\n </div>\n )\n }\n\n return <LoadingOverlay animationDuration={'0ms'} loadingText={t('authentication:loggingOut')} />\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/ui",
|
|
3
|
-
"version": "4.0.0-
|
|
3
|
+
"version": "4.0.0-internal.011fd46",
|
|
4
4
|
"homepage": "https://payloadcms.com",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -243,7 +243,7 @@
|
|
|
243
243
|
"ts-essentials": "10.0.3",
|
|
244
244
|
"use-context-selector": "2.0.0",
|
|
245
245
|
"uuid": "14.0.0",
|
|
246
|
-
"@payloadcms/translations": "4.0.0-
|
|
246
|
+
"@payloadcms/translations": "4.0.0-internal.011fd46"
|
|
247
247
|
},
|
|
248
248
|
"devDependencies": {
|
|
249
249
|
"@babel/cli": "7.27.2",
|
|
@@ -257,13 +257,13 @@
|
|
|
257
257
|
"babel-plugin-react-compiler": "19.1.0-rc.3",
|
|
258
258
|
"esbuild": "0.27.1",
|
|
259
259
|
"esbuild-sass-plugin": "3.3.1",
|
|
260
|
-
"
|
|
261
|
-
"
|
|
260
|
+
"@payloadcms/eslint-config": "3.28.0",
|
|
261
|
+
"payload": "4.0.0-internal.011fd46"
|
|
262
262
|
},
|
|
263
263
|
"peerDependencies": {
|
|
264
264
|
"react": "^19.0.1 || ^19.1.2 || ^19.2.1",
|
|
265
265
|
"react-dom": "^19.0.1 || ^19.1.2 || ^19.2.1",
|
|
266
|
-
"payload": "4.0.0-
|
|
266
|
+
"payload": "4.0.0-internal.011fd46"
|
|
267
267
|
},
|
|
268
268
|
"engines": {
|
|
269
269
|
"node": ">=24.15.0"
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { SanitizedCollectionConfig } from 'payload';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import './index.css';
|
|
4
|
-
export type Props = {
|
|
5
|
-
readonly collectionSlug: SanitizedCollectionConfig['slug'];
|
|
6
|
-
readonly onClose?: () => void;
|
|
7
|
-
};
|
|
8
|
-
export declare const ColumnSelector: React.FC<Props>;
|
|
9
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ColumnSelector/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAe,MAAM,SAAS,CAAA;AAIrE,OAAO,KAAyE,MAAM,OAAO,CAAA;AAY7F,OAAO,aAAa,CAAA;AA8CpB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAC9B,CAAA;AAkDD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAsM1C,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","getTranslation","fieldIsHiddenOrDisabled","fieldIsID","isFieldDisabled","React","useCallback","useId","useLayoutEffect","useMemo","useRef","useState","AlignJustifiedIcon","SearchIcon","XIcon","useEditDepth","useTableColumns","useTranslation","Button","DraggableSortable","useDraggableSortable","Switch","baseClass","parseNestedLabel","label","includes","segments","split","length","NestedLabel","_jsx","_Fragment","map","segment","index","_jsxs","Fragment","className","ColumnItem","t0","$","id","active","labelText","onToggle","t","t1","attributes","isDragging","isOver","isSorting","listeners","setNodeRef","transform","t2","t3","t4","t5","filter","Boolean","t6","join","t7","undefined","t8","ref","style","children","size","checked","onChange","ColumnSelector","collectionSlug","onClose","columns","moveColumn","toggleColumn","i18n","uuid","editDepth","searchQuery","setSearchQuery","containerRef","lockedWidth","setLockedWidth","current","offsetWidth","filteredColumns","col","field","columnItems","all","hidden","shown","items","i","accessor","labelWithPrefix","name","filtered","item","toLowerCase","handleDragEnd","moveFromIndex","moveToIndex","allItems","shownCount","fromItem","toItem","fromIsShown","toIsShown","fromIndex","toIndex","allIds","containerStyle","buttonStyle","icon","onClick","e","target","value","placeholder","type","ids","onDragEnd"],"sources":["../../../src/elements/ColumnSelector/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig, StaticLabel } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldIsHiddenOrDisabled, fieldIsID, isFieldDisabled } from 'payload/shared'\nimport React, { useCallback, useId, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport { AlignJustifiedIcon } from '../../icons/AlignJustified/index.js'\nimport { SearchIcon } from '../../icons/Search/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTableColumns } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { useDraggableSortable } from '../DraggableSortable/useDraggableSortable/index.js'\nimport { Switch } from '../Switch/index.js'\nimport './index.css'\n\nconst baseClass = 'column-selector'\n\n/**\n * Parses a nested field label and returns segments for rendering.\n * - For deeply nested paths (more than 3 segments), truncates to [First, \"...\", Last]\n */\nfunction parseNestedLabel(label: string): string[] {\n if (!label.includes(' > ')) {\n return [label]\n }\n\n const segments = label.split(' > ')\n\n if (segments.length <= 3) {\n return segments\n }\n\n // For deep nesting, show: First / ... / Last\n return [segments[0], '...', segments[segments.length - 1]]\n}\n\ntype NestedLabelProps = {\n readonly label: string\n}\n\nconst NestedLabel: React.FC<NestedLabelProps> = ({ label }) => {\n const segments = parseNestedLabel(label)\n\n if (segments.length === 1) {\n return <>{segments[0]}</>\n }\n\n return (\n <>\n {segments.map((segment, index) => (\n <React.Fragment key={index}>\n {index > 0 && <span className={`${baseClass}__separator`}>/</span>}\n {segment}\n </React.Fragment>\n ))}\n </>\n )\n}\n\nexport type Props = {\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly onClose?: () => void\n}\n\ntype ColumnItemProps = {\n readonly active: boolean\n readonly id: string\n readonly labelText: string\n readonly onToggle: () => void\n}\n\nconst ColumnItem: React.FC<ColumnItemProps> = ({ id, active, labelText, onToggle }) => {\n const { t } = useTranslation()\n const { attributes, isDragging, isOver, isSorting, listeners, setNodeRef, transform } =\n useDraggableSortable({\n id,\n })\n\n return (\n <div\n aria-label={labelText}\n className={[\n `${baseClass}__item`,\n !active && `${baseClass}__item--inactive`,\n isDragging && `${baseClass}__item--dragging`,\n isOver && isSorting && !isDragging && `${baseClass}__item--over`,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={setNodeRef}\n style={{\n // Keep item in place while dragging - don't apply transform\n transform: isDragging ? undefined : transform,\n ...attributes.style,\n }}\n {...attributes}\n >\n <span\n aria-label={t('general:dragToReorder')}\n className={`${baseClass}__drag-handle`}\n {...listeners}\n >\n <AlignJustifiedIcon size={16} />\n </span>\n <span className={`${baseClass}__item-label`}>\n <NestedLabel label={labelText} />\n </span>\n <Switch checked={active} onChange={onToggle} />\n </div>\n )\n}\n\nexport const ColumnSelector: React.FC<Props> = ({ collectionSlug, onClose }) => {\n const { columns, moveColumn, toggleColumn } = useTableColumns()\n const { i18n, t } = useTranslation()\n\n const uuid = useId()\n const editDepth = useEditDepth()\n const [searchQuery, setSearchQuery] = useState('')\n const containerRef = useRef<HTMLDivElement>(null)\n const [lockedWidth, setLockedWidth] = useState<null | number>(null)\n\n // Lock the width when search starts to prevent layout shift\n useLayoutEffect(() => {\n if (!containerRef.current) {\n return\n }\n\n if (searchQuery && lockedWidth === null) {\n // Capture width when search starts\n setLockedWidth(containerRef.current.offsetWidth)\n } else if (!searchQuery && lockedWidth !== null) {\n // Release width lock when search is cleared\n setLockedWidth(null)\n }\n }, [searchQuery, lockedWidth])\n\n const filteredColumns = useMemo(\n () =>\n columns?.filter(\n (col) =>\n !(fieldIsHiddenOrDisabled(col.field) && !fieldIsID(col.field)) &&\n !isFieldDisabled(col.field, 'column'),\n ),\n [columns],\n )\n\n const columnItems = useMemo(() => {\n if (!filteredColumns) {\n return { all: [], hidden: [], shown: [] }\n }\n\n const items = filteredColumns.map((col, i) => {\n const { accessor, active, field } = col\n\n const label =\n 'labelWithPrefix' in field && field.labelWithPrefix !== undefined\n ? field.labelWithPrefix\n : 'label' in field && field.label !== undefined && field.label !== false\n ? field.label\n : 'name' in field && field.name !== undefined\n ? field.name\n : accessor\n\n const labelText =\n typeof label === 'string' ? label : getTranslation(label as StaticLabel, i18n)\n\n return {\n id: `${collectionSlug}-${accessor}-${i}${editDepth ? `-${editDepth}-` : ''}${uuid}`,\n accessor,\n active,\n index: i,\n label,\n labelText,\n }\n })\n\n // Filter by search query\n const filtered = searchQuery\n ? items.filter((item) => item.labelText.toLowerCase().includes(searchQuery.toLowerCase()))\n : items\n\n return {\n all: items,\n hidden: filtered.filter((item) => !item.active),\n shown: filtered.filter((item) => item.active),\n }\n }, [collectionSlug, editDepth, filteredColumns, i18n, searchQuery, uuid])\n\n const handleDragEnd = useCallback(\n ({ moveFromIndex, moveToIndex }: { moveFromIndex: number; moveToIndex: number }) => {\n if (moveFromIndex === moveToIndex) {\n return\n }\n\n // All shown items first, then all hidden items\n const allItems = [...columnItems.shown, ...columnItems.hidden]\n const shownCount = columnItems.shown.length\n const fromItem = allItems[moveFromIndex]\n const toItem = allItems[moveToIndex]\n\n if (!fromItem || !toItem) {\n return\n }\n\n // Determine if crossing sections\n const fromIsShown = moveFromIndex < shownCount\n const toIsShown = moveToIndex < shownCount\n\n if (fromIsShown !== toIsShown) {\n // Cross-section move: just toggle the column's active state (show/hide)\n void toggleColumn(fromItem.accessor)\n // Don't reorder when crossing sections - the toggle handles the change\n return\n }\n\n // Same-section move: perform the reorder\n void moveColumn({\n fromIndex: fromItem.index,\n toIndex: toItem.index,\n })\n },\n [columnItems.shown, columnItems.hidden, moveColumn, toggleColumn],\n )\n\n if (!filteredColumns) {\n return null\n }\n\n // Combined IDs: shown items first, then hidden items\n const allIds = [...columnItems.shown, ...columnItems.hidden].map((item) => item.id)\n\n const containerStyle = lockedWidth\n ? ({ '--column-selector-locked-width': `${lockedWidth}px` } as React.CSSProperties)\n : undefined\n\n return (\n <div\n className={baseClass}\n data-popup-prevent-close\n data-width-locked={lockedWidth ? 'true' : undefined}\n ref={containerRef}\n style={containerStyle}\n >\n <div className={`${baseClass}__header`}>\n <span className={`${baseClass}__title`}>{t('general:editColumns')}</span>\n {onClose && (\n <Button\n aria-label={t('general:close')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__close`}\n icon={<XIcon size={24} />}\n onClick={onClose}\n />\n )}\n </div>\n <div className={`${baseClass}__search`}>\n <div className={`${baseClass}__search-bar`}>\n <SearchIcon size={24} />\n <input\n aria-label={t('general:searchColumns')}\n className={`${baseClass}__search-input`}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder={t('general:searchColumns')}\n type=\"text\"\n value={searchQuery}\n />\n </div>\n </div>\n <div className={`${baseClass}__content`}>\n <DraggableSortable ids={allIds} onDragEnd={handleDragEnd}>\n {columnItems.shown.length === 0 && columnItems.hidden.length === 0 && searchQuery && (\n <div className={`${baseClass}__no-results`}>{t('general:noMatchesFound')}</div>\n )}\n {columnItems.shown.length > 0 && (\n <div className={`${baseClass}__section`}>\n <div className={`${baseClass}__section-header`}>{t('general:shownInTable')}</div>\n {columnItems.shown.map((item) => (\n <ColumnItem\n active={item.active}\n id={item.id}\n key={item.id}\n labelText={item.labelText}\n onToggle={() => {\n void toggleColumn(item.accessor)\n }}\n />\n ))}\n </div>\n )}\n {columnItems.hidden.length > 0 && (\n <div className={`${baseClass}__section`}>\n <div className={`${baseClass}__section-header`}>{t('general:notShownInTable')}</div>\n {columnItems.hidden.map((item) => (\n <ColumnItem\n active={item.active}\n id={item.id}\n key={item.id}\n labelText={item.labelText}\n onToggle={() => {\n void toggleColumn(item.accessor)\n }}\n />\n ))}\n </div>\n )}\n </DraggableSortable>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { SanitizedCollectionConfig } from 'payload';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
export type ColumnsButtonProps = {
|
|
4
|
-
readonly collectionSlug: SanitizedCollectionConfig['slug'];
|
|
5
|
-
};
|
|
6
|
-
export declare const ColumnsButton: React.FC<ColumnsButtonProps>;
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ColumnsButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAExD,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;CAC3D,CAAA;AAID,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAwBtD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","React","ChevronIcon","useTranslation","Button","ColumnSelector","Popup","baseClass","ColumnsButton","t0","$","collectionSlug","t","t1","t2","close","_jsx","onClose","t3","active","props","buttonStyle","className","icon","direction","size","children","horizontalAlign","render","verticalAlign"],"sources":["../../../src/elements/ColumnsButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport React from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { Popup } from '../Popup/index.js'\n\nexport type ColumnsButtonProps = {\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n}\n\nconst baseClass = 'columns-button'\n\nexport const ColumnsButton: React.FC<ColumnsButtonProps> = ({ collectionSlug }) => {\n const { t } = useTranslation()\n\n return (\n <Popup\n className={baseClass}\n horizontalAlign=\"right\"\n render={({ close }) => <ColumnSelector collectionSlug={collectionSlug} onClose={close} />}\n renderButton={({ active, ...props }) => (\n <Button\n {...props}\n buttonStyle=\"secondary\"\n className={`${baseClass}__button`}\n icon={<ChevronIcon direction={active ? 'up' : 'down'} size={16} />}\n selected={active}\n size=\"medium\"\n >\n {t('general:columns')}\n </Button>\n )}\n theme=\"auto\"\n verticalAlign=\"bottom\"\n />\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,OAAOC,KAAA,MAAW;AAElB,SAASC,WAAW,QAAQ;AAC5B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,cAAc,QAAQ;AAC/B,SAASC,KAAK,QAAQ;AAMtB,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,aAAA,GAA8CC,EAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EAAC;IAAAW;EAAA,IAAAF,EAAkB;EAC5E;IAAAG;EAAA,IAAcT,cAAA;EAAA,IAAAU,EAAA;EAAA,IAAAH,CAAA,QAAAC,cAAA;IAMFE,EAAA,GAAAC,EAAA;MAAC;QAAAC;MAAA,IAAAD,EAAS;MAAA,OAAKE,IAAA,CAAAX,cAAA;QAAAM,cAAA;QAAAM,OAAA,EAAyDF;MAAA,C;;;;;;;;;IAClED,EAAA,GAAAI,EAAA;MAAC;QAAAC,MAAA;QAAA,GAAAC;MAAA,IAAAF,EAAoB;MAAA,OACjCF,IAAA,CAAAZ,MAAA;QAAA,GACMgB,KAAK;QAAAC,WAAA,EACG;QAAAC,SAAA,EACD,GAAAf,SAAA,UAAsB;QAAAgB,IAAA,EAC3BP,IAAA,CAAAd,WAAA;UAAAsB,SAAA,EAAwBL,MAAA,GAAS,OAAO;UAAAM,IAAA;QAAA,C;kBACpCN,MAAA;QAAAM,IAAA,EACL;QAAAC,QAAA,EAEJd,CAAA,CAAE;MAAA,C;;;;;;;;;IAbTM,EAAA,GAAAF,IAAA,CAAAV,KAAA;MAAAgB,SAAA,EAAAf,SAAA;MAAAoB,eAAA,EAEkB;MAAAC,MAAA,EACRf,E;oBACMC,E;aAYR;MAAAe,aAAA,EACQ;IAAA,C;;;;;;;SAjBhBX,E;CAoBJ","ignoreList":[]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { ClientField, SanitizedCollectionConfig } from 'payload';
|
|
2
|
-
import './index.scss';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
export type Props = {
|
|
5
|
-
readonly collectionSlug: SanitizedCollectionConfig['slug'];
|
|
6
|
-
readonly fields: ClientField[];
|
|
7
|
-
/** When set, GroupByBuilder is controlled by the form (value + onChange) instead of list query. */
|
|
8
|
-
readonly onChange?: (groupBy: string) => void;
|
|
9
|
-
readonly value?: string;
|
|
10
|
-
};
|
|
11
|
-
export declare const GroupByBuilder: React.FC<Props>;
|
|
12
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/GroupByBuilder/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAS,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAI5E,OAAO,cAAc,CAAA;AAErB,OAAO,KAAkB,MAAM,OAAO,CAAA;AAStC,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9B,mGAAmG;IACnG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAyBD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+J1C,CAAA"}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
-
import { isFieldDisabled } from 'payload/shared';
|
|
5
|
-
import './index.scss';
|
|
6
|
-
import React, { useMemo } from 'react';
|
|
7
|
-
import { SelectInput } from '../../fields/Select/Input.js';
|
|
8
|
-
import { useAuth } from '../../providers/Auth/index.js';
|
|
9
|
-
import { useListQuery } from '../../providers/ListQuery/index.js';
|
|
10
|
-
import { useTranslation } from '../../providers/Translation/index.js';
|
|
11
|
-
import { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js';
|
|
12
|
-
import { ReactSelect } from '../ReactSelect/index.js';
|
|
13
|
-
const baseClass = 'group-by-builder';
|
|
14
|
-
/**
|
|
15
|
-
* Note: Some fields are already omitted from the list of fields:
|
|
16
|
-
* - fields with nested field, e.g. `tabs`, `groups`, etc.
|
|
17
|
-
* - fields that don't affect data, i.e. `row`, `collapsible`, `ui`, etc.
|
|
18
|
-
* So we don't technically need to omit them here, but do anyway.
|
|
19
|
-
* But some remaining fields still need an additional check, e.g. `richText`, etc.
|
|
20
|
-
*/
|
|
21
|
-
const supportedFieldTypes = ['text', 'textarea', 'number', 'select', 'relationship', 'date', 'checkbox', 'radio', 'email', 'number', 'upload'];
|
|
22
|
-
export const GroupByBuilder = ({
|
|
23
|
-
collectionSlug,
|
|
24
|
-
fields,
|
|
25
|
-
onChange,
|
|
26
|
-
value: valueProp
|
|
27
|
-
}) => {
|
|
28
|
-
const {
|
|
29
|
-
i18n,
|
|
30
|
-
t
|
|
31
|
-
} = useTranslation();
|
|
32
|
-
const {
|
|
33
|
-
permissions
|
|
34
|
-
} = useAuth();
|
|
35
|
-
const listQuery = useListQuery();
|
|
36
|
-
const isFormMode = typeof onChange === 'function';
|
|
37
|
-
const groupByRaw = isFormMode ? valueProp : listQuery.query?.groupBy;
|
|
38
|
-
const groupByFieldName = groupByRaw?.replace(/^-/, '');
|
|
39
|
-
const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields;
|
|
40
|
-
const reducedFields = useMemo(() => reduceFieldsToOptions({
|
|
41
|
-
fieldPermissions,
|
|
42
|
-
fields,
|
|
43
|
-
i18n
|
|
44
|
-
}), [fields, fieldPermissions, i18n]);
|
|
45
|
-
const groupByField = reducedFields.find(field => field.fieldPath === groupByFieldName);
|
|
46
|
-
const handleFieldChange = useMemo(() => {
|
|
47
|
-
if (isFormMode) {
|
|
48
|
-
return v => {
|
|
49
|
-
const value = v === null ? undefined : v.value;
|
|
50
|
-
const newGroupBy = value ? groupByRaw?.startsWith('-') ? `-${value}` : value : '';
|
|
51
|
-
onChange?.(newGroupBy);
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
return v_0 => {
|
|
55
|
-
void (async () => {
|
|
56
|
-
if (typeof listQuery.refineListData !== 'function') {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
const value_0 = v_0 === null ? undefined : v_0.value;
|
|
60
|
-
if (v_0 === null) {
|
|
61
|
-
await listQuery.refineListData({
|
|
62
|
-
groupBy: '',
|
|
63
|
-
page: 1
|
|
64
|
-
});
|
|
65
|
-
} else {
|
|
66
|
-
await listQuery.refineListData({
|
|
67
|
-
groupBy: value_0 ? listQuery.query?.groupBy?.startsWith('-') ? `-${value_0}` : value_0 : undefined,
|
|
68
|
-
page: 1
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
})();
|
|
72
|
-
};
|
|
73
|
-
}, [isFormMode, groupByRaw, listQuery, onChange]);
|
|
74
|
-
const handleClear = useMemo(() => {
|
|
75
|
-
if (isFormMode) {
|
|
76
|
-
return () => onChange?.('');
|
|
77
|
-
}
|
|
78
|
-
return () => {
|
|
79
|
-
void (async () => {
|
|
80
|
-
if (typeof listQuery.refineListData === 'function') {
|
|
81
|
-
await listQuery.refineListData({
|
|
82
|
-
groupBy: ''
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
})();
|
|
86
|
-
};
|
|
87
|
-
}, [isFormMode, listQuery, onChange]);
|
|
88
|
-
const handleDirectionChange = useMemo(() => {
|
|
89
|
-
if (isFormMode) {
|
|
90
|
-
return ({
|
|
91
|
-
value: value_1
|
|
92
|
-
}) => {
|
|
93
|
-
if (!groupByFieldName) {
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
onChange?.(value_1 === 'asc' ? groupByFieldName : `-${groupByFieldName}`);
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
return ({
|
|
100
|
-
value: value_2
|
|
101
|
-
}) => {
|
|
102
|
-
void (async () => {
|
|
103
|
-
if (!groupByFieldName || typeof listQuery.refineListData !== 'function') {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
await listQuery.refineListData({
|
|
107
|
-
groupBy: value_2 === 'asc' ? groupByFieldName : `-${groupByFieldName}`,
|
|
108
|
-
page: 1
|
|
109
|
-
});
|
|
110
|
-
})();
|
|
111
|
-
};
|
|
112
|
-
}, [groupByFieldName, isFormMode, listQuery, onChange]);
|
|
113
|
-
const directionValue = !groupByRaw || typeof groupByRaw !== 'string' ? 'asc' : groupByRaw.startsWith('-') ? 'desc' : 'asc';
|
|
114
|
-
return /*#__PURE__*/_jsxs("div", {
|
|
115
|
-
className: baseClass,
|
|
116
|
-
children: [/*#__PURE__*/_jsxs("div", {
|
|
117
|
-
className: `${baseClass}__header`,
|
|
118
|
-
children: [/*#__PURE__*/_jsx("p", {
|
|
119
|
-
children: t('general:groupByLabel', {
|
|
120
|
-
label: ''
|
|
121
|
-
})
|
|
122
|
-
}), groupByRaw && /*#__PURE__*/_jsx("button", {
|
|
123
|
-
className: `${baseClass}__clear-button`,
|
|
124
|
-
id: "group-by--reset",
|
|
125
|
-
onClick: () => void handleClear(),
|
|
126
|
-
type: "button",
|
|
127
|
-
children: t('general:clear')
|
|
128
|
-
})]
|
|
129
|
-
}), /*#__PURE__*/_jsxs("div", {
|
|
130
|
-
className: `${baseClass}__inputs`,
|
|
131
|
-
children: [/*#__PURE__*/_jsx(ReactSelect, {
|
|
132
|
-
filterOption: (option, inputValue) => (option?.data?.plainTextLabel || option.label).toLowerCase().includes(inputValue.toLowerCase()),
|
|
133
|
-
id: "group-by--field-select",
|
|
134
|
-
isClearable: true,
|
|
135
|
-
isMulti: false,
|
|
136
|
-
onChange: handleFieldChange,
|
|
137
|
-
options: reducedFields.filter(field_0 => !isFieldDisabled(field_0.field, 'groupBy') && field_0.fieldPath !== 'id' && supportedFieldTypes.includes(field_0.field.type)).map(f => ({
|
|
138
|
-
...f,
|
|
139
|
-
value: f.fieldPath
|
|
140
|
-
})),
|
|
141
|
-
value: {
|
|
142
|
-
label: groupByField?.label || t('general:selectValue'),
|
|
143
|
-
value: groupByFieldName || ''
|
|
144
|
-
}
|
|
145
|
-
}), /*#__PURE__*/_jsx(SelectInput, {
|
|
146
|
-
id: "group-by--sort",
|
|
147
|
-
isClearable: false,
|
|
148
|
-
name: "direction",
|
|
149
|
-
onChange: handleDirectionChange,
|
|
150
|
-
options: [{
|
|
151
|
-
label: t('general:ascending'),
|
|
152
|
-
value: 'asc'
|
|
153
|
-
}, {
|
|
154
|
-
label: t('general:descending'),
|
|
155
|
-
value: 'desc'
|
|
156
|
-
}],
|
|
157
|
-
path: "direction",
|
|
158
|
-
readOnly: !groupByFieldName,
|
|
159
|
-
value: directionValue
|
|
160
|
-
})]
|
|
161
|
-
})]
|
|
162
|
-
});
|
|
163
|
-
};
|
|
164
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["isFieldDisabled","React","useMemo","SelectInput","useAuth","useListQuery","useTranslation","reduceFieldsToOptions","ReactSelect","baseClass","supportedFieldTypes","GroupByBuilder","collectionSlug","fields","onChange","value","valueProp","i18n","t","permissions","listQuery","isFormMode","groupByRaw","query","groupBy","groupByFieldName","replace","fieldPermissions","collections","reducedFields","groupByField","find","field","fieldPath","handleFieldChange","v","undefined","newGroupBy","startsWith","refineListData","page","handleClear","handleDirectionChange","directionValue","_jsxs","className","_jsx","label","id","onClick","type","filterOption","option","inputValue","data","plainTextLabel","toLowerCase","includes","isClearable","isMulti","options","filter","map","f","name","path","readOnly"],"sources":["../../../src/elements/GroupByBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField, Field, SanitizedCollectionConfig } from 'payload'\n\nimport { isFieldDisabled } from 'payload/shared'\n\nimport './index.scss'\n\nimport React, { useMemo } from 'react'\n\nimport { SelectInput } from '../../fields/Select/Input.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\n\nexport type Props = {\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly fields: ClientField[]\n /** When set, GroupByBuilder is controlled by the form (value + onChange) instead of list query. */\n readonly onChange?: (groupBy: string) => void\n readonly value?: string\n}\n\nconst baseClass = 'group-by-builder'\n\n/**\n * Note: Some fields are already omitted from the list of fields:\n * - fields with nested field, e.g. `tabs`, `groups`, etc.\n * - fields that don't affect data, i.e. `row`, `collapsible`, `ui`, etc.\n * So we don't technically need to omit them here, but do anyway.\n * But some remaining fields still need an additional check, e.g. `richText`, etc.\n */\nconst supportedFieldTypes: Field['type'][] = [\n 'text',\n 'textarea',\n 'number',\n 'select',\n 'relationship',\n 'date',\n 'checkbox',\n 'radio',\n 'email',\n 'number',\n 'upload',\n]\n\nexport const GroupByBuilder: React.FC<Props> = ({\n collectionSlug,\n fields,\n onChange,\n value: valueProp,\n}) => {\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const listQuery = useListQuery()\n\n const isFormMode = typeof onChange === 'function'\n const groupByRaw = isFormMode ? valueProp : listQuery.query?.groupBy\n const groupByFieldName = groupByRaw?.replace(/^-/, '')\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields,\n i18n,\n }),\n [fields, fieldPermissions, i18n],\n )\n\n const groupByField = reducedFields.find((field) => field.fieldPath === groupByFieldName)\n\n const handleFieldChange = useMemo(() => {\n if (isFormMode) {\n return (v: { value: string } | null) => {\n const value = v === null ? undefined : v.value\n const newGroupBy = value ? (groupByRaw?.startsWith('-') ? `-${value}` : value) : ''\n onChange?.(newGroupBy)\n }\n }\n return (v: { value: string } | null) => {\n void (async () => {\n if (typeof listQuery.refineListData !== 'function') {\n return\n }\n const value = v === null ? undefined : v.value\n if (v === null) {\n await listQuery.refineListData({ groupBy: '', page: 1 })\n } else {\n await listQuery.refineListData({\n groupBy: value\n ? listQuery.query?.groupBy?.startsWith('-')\n ? `-${value}`\n : value\n : undefined,\n page: 1,\n })\n }\n })()\n }\n }, [isFormMode, groupByRaw, listQuery, onChange])\n\n const handleClear = useMemo(() => {\n if (isFormMode) {\n return () => onChange?.('')\n }\n return () => {\n void (async () => {\n if (typeof listQuery.refineListData === 'function') {\n await listQuery.refineListData({ groupBy: '' })\n }\n })()\n }\n }, [isFormMode, listQuery, onChange])\n\n const handleDirectionChange = useMemo(() => {\n if (isFormMode) {\n return ({ value }: { value: string }) => {\n if (!groupByFieldName) {\n return\n }\n onChange?.(value === 'asc' ? groupByFieldName : `-${groupByFieldName}`)\n }\n }\n return ({ value }: { value: string }) => {\n void (async () => {\n if (!groupByFieldName || typeof listQuery.refineListData !== 'function') {\n return\n }\n await listQuery.refineListData({\n groupBy: value === 'asc' ? groupByFieldName : `-${groupByFieldName}`,\n page: 1,\n })\n })()\n }\n }, [groupByFieldName, isFormMode, listQuery, onChange])\n\n const directionValue =\n !groupByRaw || typeof groupByRaw !== 'string'\n ? 'asc'\n : groupByRaw.startsWith('-')\n ? 'desc'\n : 'asc'\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n <p>\n {t('general:groupByLabel', {\n label: '',\n })}\n </p>\n {groupByRaw && (\n <button\n className={`${baseClass}__clear-button`}\n id=\"group-by--reset\"\n onClick={() => void handleClear()}\n type=\"button\"\n >\n {t('general:clear')}\n </button>\n )}\n </div>\n <div className={`${baseClass}__inputs`}>\n <ReactSelect\n filterOption={(option, inputValue) =>\n ((option?.data?.plainTextLabel as string) || option.label)\n .toLowerCase()\n .includes(inputValue.toLowerCase())\n }\n id=\"group-by--field-select\"\n isClearable\n isMulti={false}\n onChange={handleFieldChange}\n options={reducedFields\n .filter(\n (field) =>\n !isFieldDisabled(field.field, 'groupBy') &&\n field.fieldPath !== 'id' &&\n supportedFieldTypes.includes(field.field.type),\n )\n .map((f) => ({ ...f, value: f.fieldPath }))}\n value={{\n label: groupByField?.label || t('general:selectValue'),\n value: groupByFieldName || '',\n }}\n />\n <SelectInput\n id=\"group-by--sort\"\n isClearable={false}\n name=\"direction\"\n onChange={handleDirectionChange}\n options={[\n { label: t('general:ascending'), value: 'asc' },\n { label: t('general:descending'), value: 'desc' },\n ]}\n path=\"direction\"\n readOnly={!groupByFieldName}\n value={directionValue}\n />\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
@import '../../scss/styles.scss';
|
|
2
|
-
|
|
3
|
-
@layer payload-default {
|
|
4
|
-
.group-by-builder {
|
|
5
|
-
background: var(--theme-elevation-50);
|
|
6
|
-
padding: var(--base);
|
|
7
|
-
display: flex;
|
|
8
|
-
flex-direction: column;
|
|
9
|
-
gap: calc(var(--base) / 2);
|
|
10
|
-
|
|
11
|
-
&__header {
|
|
12
|
-
width: 100%;
|
|
13
|
-
display: flex;
|
|
14
|
-
justify-content: space-between;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
&__clear-button {
|
|
18
|
-
background: transparent;
|
|
19
|
-
border: none;
|
|
20
|
-
color: var(--theme-elevation-500);
|
|
21
|
-
line-height: inherit;
|
|
22
|
-
cursor: pointer;
|
|
23
|
-
font-size: inherit;
|
|
24
|
-
padding: 0;
|
|
25
|
-
text-decoration: underline;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
&__inputs {
|
|
29
|
-
width: 100%;
|
|
30
|
-
display: flex;
|
|
31
|
-
gap: base(1);
|
|
32
|
-
|
|
33
|
-
& > * {
|
|
34
|
-
flex-grow: 1;
|
|
35
|
-
width: 50%;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { ClientField, SanitizedCollectionConfig } from 'payload';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import './index.css';
|
|
4
|
-
export type GroupByControlProps = {
|
|
5
|
-
readonly collectionSlug: SanitizedCollectionConfig['slug'];
|
|
6
|
-
readonly fields: ClientField[];
|
|
7
|
-
};
|
|
8
|
-
export declare const GroupByControl: React.FC<GroupByControlProps>;
|
|
9
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/GroupByControl/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAS,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAG5E,OAAO,KAAuC,MAAM,OAAO,CAAA;AAW3D,OAAO,aAAa,CAAA;AAEpB,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAC/B,CAAA;AAoBD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAoPxD,CAAA"}
|