@ruya.sa/next 3.71.3
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.md +22 -0
- package/dist/auth/login.js +67 -0
- package/dist/auth/login.js.map +1 -0
- package/dist/auth/logout.js +52 -0
- package/dist/auth/logout.js.map +1 -0
- package/dist/auth/refresh.js +56 -0
- package/dist/auth/refresh.js.map +1 -0
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -0
- package/dist/dummy.css +0 -0
- package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +19 -0
- package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +81 -0
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/Tab/index.js +66 -0
- package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/index.js +78 -0
- package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +29 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js +72 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -0
- package/dist/elements/DocumentHeader/index.js +36 -0
- package/dist/elements/DocumentHeader/index.js.map +1 -0
- package/dist/elements/FormHeader/index.js +20 -0
- package/dist/elements/FormHeader/index.js.map +1 -0
- package/dist/elements/Logo/index.js +39 -0
- package/dist/elements/Logo/index.js.map +1 -0
- package/dist/elements/Nav/NavHamburger/index.js +51 -0
- package/dist/elements/Nav/NavHamburger/index.js.map +1 -0
- package/dist/elements/Nav/NavWrapper/index.js +61 -0
- package/dist/elements/Nav/NavWrapper/index.js.map +1 -0
- package/dist/elements/Nav/SettingsMenuButton/index.js +45 -0
- package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -0
- package/dist/elements/Nav/getNavPrefs.js +26 -0
- package/dist/elements/Nav/getNavPrefs.js.map +1 -0
- package/dist/elements/Nav/index.client.js +133 -0
- package/dist/elements/Nav/index.client.js.map +1 -0
- package/dist/elements/Nav/index.js +145 -0
- package/dist/elements/Nav/index.js.map +1 -0
- package/dist/esbuildEntry.js +5 -0
- package/dist/esbuildEntry.js.map +1 -0
- package/dist/exports/auth.js +4 -0
- package/dist/exports/auth.js.map +1 -0
- package/dist/exports/client.js +6 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/layouts.js +3 -0
- package/dist/exports/layouts.js.map +1 -0
- package/dist/exports/routes.js +3 -0
- package/dist/exports/routes.js.map +1 -0
- package/dist/exports/rsc.js +4 -0
- package/dist/exports/rsc.js.map +1 -0
- package/dist/exports/templates.js +3 -0
- package/dist/exports/templates.js.map +1 -0
- package/dist/exports/utilities.js +53 -0
- package/dist/exports/utilities.js.map +1 -0
- package/dist/exports/views.js +10 -0
- package/dist/exports/views.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/layouts/Root/NestProviders.js +24 -0
- package/dist/layouts/Root/NestProviders.js.map +1 -0
- package/dist/layouts/Root/checkDependencies.js +49 -0
- package/dist/layouts/Root/checkDependencies.js.map +1 -0
- package/dist/layouts/Root/index.js +120 -0
- package/dist/layouts/Root/index.js.map +1 -0
- package/dist/routes/graphql/handler.js +137 -0
- package/dist/routes/graphql/handler.js.map +1 -0
- package/dist/routes/graphql/index.js +3 -0
- package/dist/routes/graphql/index.js.map +1 -0
- package/dist/routes/graphql/playground.js +31 -0
- package/dist/routes/graphql/playground.js.map +1 -0
- package/dist/routes/index.js +3 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/rest/index.js +33 -0
- package/dist/routes/rest/index.js.map +1 -0
- package/dist/routes/rest/og/image.js +86 -0
- package/dist/routes/rest/og/image.js.map +1 -0
- package/dist/routes/rest/og/index.js +70 -0
- package/dist/routes/rest/og/index.js.map +1 -0
- package/dist/routes/rest/og/roboto-regular.woff +0 -0
- package/dist/templates/Default/NavHamburger/index.js +25 -0
- package/dist/templates/Default/NavHamburger/index.js.map +1 -0
- package/dist/templates/Default/Wrapper/index.js +49 -0
- package/dist/templates/Default/Wrapper/index.js.map +1 -0
- package/dist/templates/Default/index.js +129 -0
- package/dist/templates/Default/index.js.map +1 -0
- package/dist/templates/Minimal/index.js +21 -0
- package/dist/templates/Minimal/index.js.map +1 -0
- package/dist/utilities/getExistingAuthToken.js +6 -0
- package/dist/utilities/getExistingAuthToken.js.map +1 -0
- package/dist/utilities/getNextRequestI18n.js +22 -0
- package/dist/utilities/getNextRequestI18n.js.map +1 -0
- package/dist/utilities/getPayloadHMR.js +15 -0
- package/dist/utilities/getPayloadHMR.js.map +1 -0
- package/dist/utilities/getPreferences.js +26 -0
- package/dist/utilities/getPreferences.js.map +1 -0
- package/dist/utilities/getRequestLocale.js +20 -0
- package/dist/utilities/getRequestLocale.js.map +1 -0
- package/dist/utilities/getRequestTheme.js +22 -0
- package/dist/utilities/getRequestTheme.js.map +1 -0
- package/dist/utilities/getRouteWithoutAdmin.js +7 -0
- package/dist/utilities/getRouteWithoutAdmin.js.map +1 -0
- package/dist/utilities/handleAuthRedirect.js +41 -0
- package/dist/utilities/handleAuthRedirect.js.map +1 -0
- package/dist/utilities/handleServerFunctions.js +57 -0
- package/dist/utilities/handleServerFunctions.js.map +1 -0
- package/dist/utilities/initReq.js +110 -0
- package/dist/utilities/initReq.js.map +1 -0
- package/dist/utilities/isCustomAdminView.js +31 -0
- package/dist/utilities/isCustomAdminView.js.map +1 -0
- package/dist/utilities/isPublicAdminRoute.js +25 -0
- package/dist/utilities/isPublicAdminRoute.js.map +1 -0
- package/dist/utilities/meta.js +69 -0
- package/dist/utilities/meta.js.map +1 -0
- package/dist/utilities/selectiveCache.js +38 -0
- package/dist/utilities/selectiveCache.js.map +1 -0
- package/dist/utilities/setPayloadAuthCookie.js +27 -0
- package/dist/utilities/setPayloadAuthCookie.js.map +1 -0
- package/dist/utilities/slugify.js +47 -0
- package/dist/utilities/slugify.js.map +1 -0
- package/dist/utilities/timestamp.js +8 -0
- package/dist/utilities/timestamp.js.map +1 -0
- package/dist/views/API/LocaleSelector/index.js +44 -0
- package/dist/views/API/LocaleSelector/index.js.map +1 -0
- package/dist/views/API/RenderJSON/index.js +135 -0
- package/dist/views/API/RenderJSON/index.js.map +1 -0
- package/dist/views/API/index.client.js +209 -0
- package/dist/views/API/index.client.js.map +1 -0
- package/dist/views/API/index.js +7 -0
- package/dist/views/API/index.js.map +1 -0
- package/dist/views/API/metadata.js +29 -0
- package/dist/views/API/metadata.js.map +1 -0
- package/dist/views/Account/ResetPreferences/index.js +112 -0
- package/dist/views/Account/ResetPreferences/index.js.map +1 -0
- package/dist/views/Account/Settings/LanguageSelector.js +52 -0
- package/dist/views/Account/Settings/LanguageSelector.js.map +1 -0
- package/dist/views/Account/Settings/index.js +33 -0
- package/dist/views/Account/Settings/index.js.map +1 -0
- package/dist/views/Account/ToggleTheme/index.js +60 -0
- package/dist/views/Account/ToggleTheme/index.js.map +1 -0
- package/dist/views/Account/index.client.js +37 -0
- package/dist/views/Account/index.client.js.map +1 -0
- package/dist/views/Account/index.js +178 -0
- package/dist/views/Account/index.js.map +1 -0
- package/dist/views/Account/metadata.js +14 -0
- package/dist/views/Account/metadata.js.map +1 -0
- package/dist/views/BrowseByFolder/buildView.js +169 -0
- package/dist/views/BrowseByFolder/buildView.js.map +1 -0
- package/dist/views/BrowseByFolder/index.js +20 -0
- package/dist/views/BrowseByFolder/index.js.map +1 -0
- package/dist/views/BrowseByFolder/metadata.js +18 -0
- package/dist/views/BrowseByFolder/metadata.js.map +1 -0
- package/dist/views/CollectionFolders/buildView.js +156 -0
- package/dist/views/CollectionFolders/buildView.js.map +1 -0
- package/dist/views/CollectionFolders/index.js +20 -0
- package/dist/views/CollectionFolders/index.js.map +1 -0
- package/dist/views/CollectionFolders/metadata.js +25 -0
- package/dist/views/CollectionFolders/metadata.js.map +1 -0
- package/dist/views/CollectionFolders/renderFolderViewSlots.js +64 -0
- package/dist/views/CollectionFolders/renderFolderViewSlots.js.map +1 -0
- package/dist/views/CollectionTrash/index.js +21 -0
- package/dist/views/CollectionTrash/index.js.map +1 -0
- package/dist/views/CollectionTrash/metadata.js +25 -0
- package/dist/views/CollectionTrash/metadata.js.map +1 -0
- package/dist/views/CreateFirstUser/index.client.js +112 -0
- package/dist/views/CreateFirstUser/index.client.js.map +1 -0
- package/dist/views/CreateFirstUser/index.js +88 -0
- package/dist/views/CreateFirstUser/index.js.map +1 -0
- package/dist/views/CreateFirstUser/metadata.js +14 -0
- package/dist/views/CreateFirstUser/metadata.js.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +147 -0
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +431 -0
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/index.js +87 -0
- package/dist/views/Dashboard/Default/ModularDashboard/index.js.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +99 -0
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js +58 -0
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +72 -0
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +158 -0
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/utils/collisionDetection.js +38 -0
- package/dist/views/Dashboard/Default/ModularDashboard/utils/collisionDetection.js.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js +264 -0
- package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js.map +1 -0
- package/dist/views/Dashboard/Default/index.js +52 -0
- package/dist/views/Dashboard/Default/index.js.map +1 -0
- package/dist/views/Dashboard/index.js +50 -0
- package/dist/views/Dashboard/index.js.map +1 -0
- package/dist/views/Dashboard/metadata.js +16 -0
- package/dist/views/Dashboard/metadata.js.map +1 -0
- package/dist/views/Document/getCustomDocumentViewByKey.js +4 -0
- package/dist/views/Document/getCustomDocumentViewByKey.js.map +1 -0
- package/dist/views/Document/getCustomViewByRoute.js +35 -0
- package/dist/views/Document/getCustomViewByRoute.js.map +1 -0
- package/dist/views/Document/getDocPreferences.js +45 -0
- package/dist/views/Document/getDocPreferences.js.map +1 -0
- package/dist/views/Document/getDocumentData.js +60 -0
- package/dist/views/Document/getDocumentData.js.map +1 -0
- package/dist/views/Document/getDocumentPermissions.js +87 -0
- package/dist/views/Document/getDocumentPermissions.js.map +1 -0
- package/dist/views/Document/getDocumentView.js +310 -0
- package/dist/views/Document/getDocumentView.js.map +1 -0
- package/dist/views/Document/getIsLocked.js +79 -0
- package/dist/views/Document/getIsLocked.js.map +1 -0
- package/dist/views/Document/getMetaBySegment.js +150 -0
- package/dist/views/Document/getMetaBySegment.js.map +1 -0
- package/dist/views/Document/getVersions.js +210 -0
- package/dist/views/Document/getVersions.js.map +1 -0
- package/dist/views/Document/handleServerFunction.js +135 -0
- package/dist/views/Document/handleServerFunction.js.map +1 -0
- package/dist/views/Document/index.js +390 -0
- package/dist/views/Document/index.js.map +1 -0
- package/dist/views/Document/metadata.js +3 -0
- package/dist/views/Document/metadata.js.map +1 -0
- package/dist/views/Document/renderDocumentSlots.js +154 -0
- package/dist/views/Document/renderDocumentSlots.js.map +1 -0
- package/dist/views/Edit/index.js +11 -0
- package/dist/views/Edit/index.js.map +1 -0
- package/dist/views/Edit/metadata.js +52 -0
- package/dist/views/Edit/metadata.js.map +1 -0
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +179 -0
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -0
- package/dist/views/ForgotPassword/index.js +72 -0
- package/dist/views/ForgotPassword/index.js.map +1 -0
- package/dist/views/ForgotPassword/metadata.js +14 -0
- package/dist/views/ForgotPassword/metadata.js.map +1 -0
- package/dist/views/List/createSerializableValue.js +14 -0
- package/dist/views/List/createSerializableValue.js.map +1 -0
- package/dist/views/List/enrichDocsWithVersionStatus.js +96 -0
- package/dist/views/List/enrichDocsWithVersionStatus.js.map +1 -0
- package/dist/views/List/extractRelationshipDisplayValue.js +17 -0
- package/dist/views/List/extractRelationshipDisplayValue.js.map +1 -0
- package/dist/views/List/extractValueOrRelationshipID.js +19 -0
- package/dist/views/List/extractValueOrRelationshipID.js.map +1 -0
- package/dist/views/List/handleGroupBy.js +160 -0
- package/dist/views/List/handleGroupBy.js.map +1 -0
- package/dist/views/List/handleServerFunction.js +130 -0
- package/dist/views/List/handleServerFunction.js.map +1 -0
- package/dist/views/List/index.js +356 -0
- package/dist/views/List/index.js.map +1 -0
- package/dist/views/List/metadata.js +24 -0
- package/dist/views/List/metadata.js.map +1 -0
- package/dist/views/List/renderListViewSlots.js +80 -0
- package/dist/views/List/renderListViewSlots.js.map +1 -0
- package/dist/views/List/resolveAllFilterOptions.js +49 -0
- package/dist/views/List/resolveAllFilterOptions.js.map +1 -0
- package/dist/views/List/transformColumnsToSelect.js +11 -0
- package/dist/views/List/transformColumnsToSelect.js.map +1 -0
- package/dist/views/Login/LoginField/index.js +98 -0
- package/dist/views/Login/LoginField/index.js.map +1 -0
- package/dist/views/Login/LoginForm/index.js +177 -0
- package/dist/views/Login/LoginForm/index.js.map +1 -0
- package/dist/views/Login/index.js +95 -0
- package/dist/views/Login/index.js.map +1 -0
- package/dist/views/Login/metadata.js +14 -0
- package/dist/views/Login/metadata.js.map +1 -0
- package/dist/views/Logout/LogoutClient.js +140 -0
- package/dist/views/Logout/LogoutClient.js.map +1 -0
- package/dist/views/Logout/index.js +36 -0
- package/dist/views/Logout/index.js.map +1 -0
- package/dist/views/Logout/metadata.js +13 -0
- package/dist/views/Logout/metadata.js.map +1 -0
- package/dist/views/NotFound/index.client.js +88 -0
- package/dist/views/NotFound/index.client.js.map +1 -0
- package/dist/views/NotFound/index.js +87 -0
- package/dist/views/NotFound/index.js.map +1 -0
- package/dist/views/NotFound/metadata.js +11 -0
- package/dist/views/NotFound/metadata.js.map +1 -0
- package/dist/views/ResetPassword/ResetPasswordForm/index.js +117 -0
- package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -0
- package/dist/views/ResetPassword/index.js +83 -0
- package/dist/views/ResetPassword/index.js.map +1 -0
- package/dist/views/ResetPassword/metadata.js +14 -0
- package/dist/views/ResetPassword/metadata.js.map +1 -0
- package/dist/views/Root/attachViewActions.js +27 -0
- package/dist/views/Root/attachViewActions.js.map +1 -0
- package/dist/views/Root/generateCustomViewMetadata.js +25 -0
- package/dist/views/Root/generateCustomViewMetadata.js.map +1 -0
- package/dist/views/Root/getCustomViewByKey.js +16 -0
- package/dist/views/Root/getCustomViewByKey.js.map +1 -0
- package/dist/views/Root/getCustomViewByRoute.js +48 -0
- package/dist/views/Root/getCustomViewByRoute.js.map +1 -0
- package/dist/views/Root/getDocumentViewInfo.js +28 -0
- package/dist/views/Root/getDocumentViewInfo.js.map +1 -0
- package/dist/views/Root/getRouteData.js +359 -0
- package/dist/views/Root/getRouteData.js.map +1 -0
- package/dist/views/Root/index.js +300 -0
- package/dist/views/Root/index.js.map +1 -0
- package/dist/views/Root/isPathMatchingRoute.js +29 -0
- package/dist/views/Root/isPathMatchingRoute.js.map +1 -0
- package/dist/views/Root/metadata.js +209 -0
- package/dist/views/Root/metadata.js.map +1 -0
- package/dist/views/Unauthorized/index.js +54 -0
- package/dist/views/Unauthorized/index.js.map +1 -0
- package/dist/views/Unauthorized/metadata.js +14 -0
- package/dist/views/Unauthorized/metadata.js.map +1 -0
- package/dist/views/Verify/index.client.js +50 -0
- package/dist/views/Verify/index.client.js.map +1 -0
- package/dist/views/Verify/index.js +71 -0
- package/dist/views/Verify/index.js.map +1 -0
- package/dist/views/Verify/metadata.js +14 -0
- package/dist/views/Verify/metadata.js.map +1 -0
- package/dist/views/Version/Default/SelectedLocalesContext.js +8 -0
- package/dist/views/Version/Default/SelectedLocalesContext.js.map +1 -0
- package/dist/views/Version/Default/SetStepNav.js +135 -0
- package/dist/views/Version/Default/SetStepNav.js.map +1 -0
- package/dist/views/Version/Default/index.js +253 -0
- package/dist/views/Version/Default/index.js.map +1 -0
- package/dist/views/Version/Default/types.js +2 -0
- package/dist/views/Version/Default/types.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +130 -0
- package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js +80 -0
- package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +439 -0
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +61 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +75 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +66 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +129 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.js +45 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +188 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js +17 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +87 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +155 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +100 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +222 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/index.js +35 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/index.js +13 -0
- package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +242 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js +861 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js +4 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js +47 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +45 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js +135 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js.map +1 -0
- package/dist/views/Version/Restore/index.js +106 -0
- package/dist/views/Version/Restore/index.js.map +1 -0
- package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js +56 -0
- package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -0
- package/dist/views/Version/SelectComparison/VersionDrawer/index.js +240 -0
- package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -0
- package/dist/views/Version/SelectComparison/index.js +57 -0
- package/dist/views/Version/SelectComparison/index.js.map +1 -0
- package/dist/views/Version/SelectComparison/types.js +2 -0
- package/dist/views/Version/SelectComparison/types.js.map +1 -0
- package/dist/views/Version/SelectLocales/index.js +39 -0
- package/dist/views/Version/SelectLocales/index.js.map +1 -0
- package/dist/views/Version/VersionPillLabel/VersionPillLabel.js +110 -0
- package/dist/views/Version/VersionPillLabel/VersionPillLabel.js.map +1 -0
- package/dist/views/Version/VersionPillLabel/getVersionLabel.js +34 -0
- package/dist/views/Version/VersionPillLabel/getVersionLabel.js.map +1 -0
- package/dist/views/Version/fetchVersions.js +151 -0
- package/dist/views/Version/fetchVersions.js.map +1 -0
- package/dist/views/Version/index.js +349 -0
- package/dist/views/Version/index.js.map +1 -0
- package/dist/views/Version/metadata.js +58 -0
- package/dist/views/Version/metadata.js.map +1 -0
- package/dist/views/Versions/buildColumns.js +88 -0
- package/dist/views/Versions/buildColumns.js.map +1 -0
- package/dist/views/Versions/cells/AutosaveCell/index.js +45 -0
- package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -0
- package/dist/views/Versions/cells/CreatedAt/index.js +60 -0
- package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -0
- package/dist/views/Versions/cells/ID/index.js +12 -0
- package/dist/views/Versions/cells/ID/index.js.map +1 -0
- package/dist/views/Versions/index.client.js +89 -0
- package/dist/views/Versions/index.client.js.map +1 -0
- package/dist/views/Versions/index.js +157 -0
- package/dist/views/Versions/index.js.map +1 -0
- package/dist/views/Versions/metadata.js +51 -0
- package/dist/views/Versions/metadata.js.map +1 -0
- package/dist/views/Versions/types.js +2 -0
- package/dist/views/Versions/types.js.map +1 -0
- package/dist/withPayload/withPayload.js +162 -0
- package/dist/withPayload/withPayload.js.map +1 -0
- package/dist/withPayload/withPayload.spec.js +40 -0
- package/dist/withPayload/withPayload.spec.js.map +1 -0
- package/dist/withPayload/withPayload.utils.js +133 -0
- package/dist/withPayload/withPayload.utils.js.map +1 -0
- package/dist/withPayload/withPayloadLegacy.js +47 -0
- package/dist/withPayload/withPayloadLegacy.js.map +1 -0
- package/package.json +153 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"countChangedFields.spec.js","names":["describe","it","expect","countChangedFields","countChangedFieldsInRows","locales","undefined","fields","name","type","valueFrom","a","b","valueTo","result","toBe","id","label","c","group","tabs","namedTab","admin","arrayField","blocks","slug","blockType","d","localized","en","de","tab","field","valueFromRows","valueToRows"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.ts"],"sourcesContent":["import type { ClientField } from '@ruya.sa/payload'\nimport { describe, it, expect } from 'vitest'\n\nimport { countChangedFields, countChangedFieldsInRows } from './countChangedFields.js'\n\ndescribe('countChangedFields', () => {\n // locales can be undefined when not configured in payload.config.js\n const locales = undefined\n it('should return 0 when no fields have changed', () => {\n const fields: ClientField[] = [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'number' },\n ]\n const valueFrom = { a: 'original', b: 123 }\n const valueTo = { a: 'original', b: 123 }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(0)\n })\n\n it('should count simple changed fields', () => {\n const fields: ClientField[] = [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'number' },\n ]\n const valueFrom = { a: 'original', b: 123 }\n const valueTo = { a: 'changed', b: 123 }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(1)\n })\n\n it('should count previously undefined fields', () => {\n const fields: ClientField[] = [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'number' },\n ]\n const valueFrom = {}\n const valueTo = { a: 'new', b: 123 }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(2)\n })\n\n it('should not count the id field because it is not displayed in the version view', () => {\n const fields: ClientField[] = [\n { name: 'id', type: 'text' },\n { name: 'a', type: 'text' },\n ]\n const valueFrom = { id: 'original', a: 'original' }\n const valueTo = { id: 'changed', a: 'original' }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(0)\n })\n\n it('should count changed fields inside collapsible fields', () => {\n const fields: ClientField[] = [\n {\n type: 'collapsible',\n label: 'A collapsible field',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ]\n const valueFrom = { a: 'original', b: 'original', c: 'original' }\n const valueTo = { a: 'changed', b: 'changed', c: 'original' }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(2)\n })\n\n it('should count changed fields inside row fields', () => {\n const fields: ClientField[] = [\n {\n type: 'row',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ]\n const valueFrom = { a: 'original', b: 'original', c: 'original' }\n const valueTo = { a: 'changed', b: 'changed', c: 'original' }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(2)\n })\n\n it('should count changed fields inside group fields', () => {\n const fields: ClientField[] = [\n {\n type: 'group',\n name: 'group',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ]\n const valueFrom = { group: { a: 'original', b: 'original', c: 'original' } }\n const valueTo = { group: { a: 'changed', b: 'changed', c: 'original' } }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(2)\n })\n\n it('should count changed fields inside unnamed tabs ', () => {\n const fields: ClientField[] = [\n {\n type: 'tabs',\n tabs: [\n {\n label: 'Unnamed tab',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ],\n },\n ]\n const valueFrom = { a: 'original', b: 'original', c: 'original' }\n const valueTo = { a: 'changed', b: 'changed', c: 'original' }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(2)\n })\n\n it('should count changed fields inside named tabs ', () => {\n const fields: ClientField[] = [\n {\n type: 'tabs',\n tabs: [\n {\n name: 'namedTab',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ],\n },\n ]\n const valueFrom = { namedTab: { a: 'original', b: 'original', c: 'original' } }\n const valueTo = { namedTab: { a: 'changed', b: 'changed', c: 'original' } }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(2)\n })\n\n it('should ignore UI fields', () => {\n const fields: ClientField[] = [\n { name: 'a', type: 'text' },\n {\n name: 'b',\n type: 'ui',\n admin: {},\n },\n ]\n const valueFrom = { a: 'original', b: 'original' }\n const valueTo = { a: 'original', b: 'changed' }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(0)\n })\n\n it('should count changed fields inside array fields', () => {\n const fields: ClientField[] = [\n {\n name: 'arrayField',\n type: 'array',\n fields: [\n {\n name: 'a',\n type: 'text',\n },\n {\n name: 'b',\n type: 'text',\n },\n {\n name: 'c',\n type: 'text',\n },\n ],\n },\n ]\n const valueFrom = {\n arrayField: [\n { a: 'original', b: 'original', c: 'original' },\n { a: 'original', b: 'original' },\n ],\n }\n const valueTo = {\n arrayField: [\n { a: 'changed', b: 'changed', c: 'original' },\n { a: 'changed', b: 'changed', c: 'changed' },\n ],\n }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(5)\n })\n\n it('should count changed fields inside arrays nested inside of collapsibles', () => {\n const fields: ClientField[] = [\n {\n type: 'collapsible',\n label: 'A collapsible field',\n fields: [\n {\n name: 'arrayField',\n type: 'array',\n fields: [\n {\n name: 'a',\n type: 'text',\n },\n {\n name: 'b',\n type: 'text',\n },\n {\n name: 'c',\n type: 'text',\n },\n ],\n },\n ],\n },\n ]\n const valueFrom = { arrayField: [{ a: 'original', b: 'original', c: 'original' }] }\n const valueTo = { arrayField: [{ a: 'changed', b: 'changed', c: 'original' }] }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(2)\n })\n\n it('should count changed fields inside blocks fields', () => {\n const fields: ClientField[] = [\n {\n name: 'blocks',\n type: 'blocks',\n blocks: [\n {\n slug: 'blockA',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ],\n },\n ]\n const valueFrom = {\n blocks: [\n { blockType: 'blockA', a: 'original', b: 'original', c: 'original' },\n { blockType: 'blockA', a: 'original', b: 'original' },\n ],\n }\n const valueTo = {\n blocks: [\n { blockType: 'blockA', a: 'changed', b: 'changed', c: 'original' },\n { blockType: 'blockA', a: 'changed', b: 'changed', c: 'changed' },\n ],\n }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(5)\n })\n\n it('should count changed fields between blocks with different slugs', () => {\n const fields: ClientField[] = [\n {\n name: 'blocks',\n type: 'blocks',\n blocks: [\n {\n slug: 'blockA',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n {\n slug: 'blockB',\n fields: [\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n { name: 'd', type: 'text' },\n ],\n },\n ],\n },\n ]\n const valueFrom = {\n blocks: [{ blockType: 'blockA', a: 'removed', b: 'original', c: 'original' }],\n }\n const valueTo = {\n blocks: [{ blockType: 'blockB', b: 'original', c: 'changed', d: 'new' }],\n }\n\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(3)\n })\n\n describe('localized fields', () => {\n const locales = ['en', 'de']\n it('should count simple localized fields', () => {\n const fields: ClientField[] = [\n { name: 'a', type: 'text', localized: true },\n { name: 'b', type: 'text', localized: true },\n ]\n const valueFrom = {\n a: { en: 'original', de: 'original' },\n b: { en: 'original', de: 'original' },\n }\n const valueTo = {\n a: { en: 'changed', de: 'original' },\n b: { en: 'original', de: 'original' },\n }\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(1)\n })\n\n it('should count multiple locales of the same localized field', () => {\n const locales = ['en', 'de']\n const fields: ClientField[] = [\n { name: 'a', type: 'text', localized: true },\n { name: 'b', type: 'text', localized: true },\n ]\n const valueFrom = {\n a: { en: 'original', de: 'original' },\n b: { en: 'original', de: 'original' },\n }\n const valueTo = {\n a: { en: 'changed', de: 'changed' },\n b: { en: 'original', de: 'original' },\n }\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(2)\n })\n\n it('should count changed fields inside localized groups fields', () => {\n const fields: ClientField[] = [\n {\n type: 'group',\n name: 'group',\n localized: true,\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ]\n const valueFrom = {\n group: {\n en: { a: 'original', b: 'original', c: 'original' },\n de: { a: 'original', b: 'original', c: 'original' },\n },\n }\n const valueTo = {\n group: {\n en: { a: 'changed', b: 'changed', c: 'original' },\n de: { a: 'original', b: 'changed', c: 'original' },\n },\n }\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(3)\n })\n it('should count changed fields inside localized tabs', () => {\n const fields: ClientField[] = [\n {\n type: 'tabs',\n tabs: [\n {\n name: 'tab',\n localized: true,\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ],\n },\n ]\n const valueFrom = {\n tab: {\n en: { a: 'original', b: 'original', c: 'original' },\n de: { a: 'original', b: 'original', c: 'original' },\n },\n }\n const valueTo = {\n tab: {\n en: { a: 'changed', b: 'changed', c: 'original' },\n de: { a: 'original', b: 'changed', c: 'original' },\n },\n }\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(3)\n })\n\n it('should count changed fields inside localized array fields', () => {\n const fields: ClientField[] = [\n {\n name: 'arrayField',\n type: 'array',\n localized: true,\n fields: [\n {\n name: 'a',\n type: 'text',\n },\n {\n name: 'b',\n type: 'text',\n },\n {\n name: 'c',\n type: 'text',\n },\n ],\n },\n ]\n const valueFrom = {\n arrayField: {\n en: [{ a: 'original', b: 'original', c: 'original' }],\n de: [{ a: 'original', b: 'original', c: 'original' }],\n },\n }\n const valueTo = {\n arrayField: {\n en: [{ a: 'changed', b: 'changed', c: 'original' }],\n de: [{ a: 'original', b: 'changed', c: 'original' }],\n },\n }\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(3)\n })\n\n it('should count changed fields inside localized blocks fields', () => {\n const fields: ClientField[] = [\n {\n name: 'blocks',\n type: 'blocks',\n localized: true,\n blocks: [\n {\n slug: 'blockA',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ],\n },\n ]\n const valueFrom = {\n blocks: {\n en: [{ blockType: 'blockA', a: 'original', b: 'original', c: 'original' }],\n de: [{ blockType: 'blockA', a: 'original', b: 'original', c: 'original' }],\n },\n }\n const valueTo = {\n blocks: {\n en: [{ blockType: 'blockA', a: 'changed', b: 'changed', c: 'original' }],\n de: [{ blockType: 'blockA', a: 'original', b: 'changed', c: 'original' }],\n },\n }\n const result = countChangedFields({ valueFrom, fields, valueTo, locales })\n expect(result).toBe(3)\n })\n })\n})\n\ndescribe('countChangedFieldsInRows', () => {\n it('should count fields in array rows', () => {\n const field: ClientField = {\n name: 'myArray',\n type: 'array',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n }\n\n const valueFromRows = [{ a: 'original', b: 'original', c: 'original' }]\n const valueToRows = [{ a: 'changed', b: 'changed', c: 'original' }]\n\n const result = countChangedFieldsInRows({\n valueFromRows,\n field,\n locales: undefined,\n valueToRows: valueToRows,\n })\n expect(result).toBe(2)\n })\n\n it('should count fields in blocks', () => {\n const field: ClientField = {\n name: 'myBlocks',\n type: 'blocks',\n blocks: [\n {\n slug: 'blockA',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ],\n }\n\n const valueFromRows = [{ blockType: 'blockA', a: 'original', b: 'original', c: 'original' }]\n const valueToRows = [{ blockType: 'blockA', a: 'changed', b: 'changed', c: 'original' }]\n\n const result = countChangedFieldsInRows({\n valueFromRows,\n field,\n locales: undefined,\n valueToRows,\n })\n expect(result).toBe(2)\n })\n})\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldHasChanges.js","names":["fieldHasChanges","a","b","JSON","stringify"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.ts"],"sourcesContent":["export function fieldHasChanges(a: unknown, b: unknown) {\n return JSON.stringify(a) !== JSON.stringify(b)\n}\n"],"mappings":"AAAA,OAAO,SAASA,gBAAgBC,CAAU,EAAEC,CAAU;EACpD,OAAOC,IAAA,CAAKC,SAAS,CAACH,CAAA,MAAOE,IAAA,CAAKC,SAAS,CAACF,CAAA;AAC9C","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { fieldHasChanges } from './fieldHasChanges.js';
|
|
3
|
+
describe('hasChanges', () => {
|
|
4
|
+
it('should return false for identical values', () => {
|
|
5
|
+
const a = 'value';
|
|
6
|
+
const b = 'value';
|
|
7
|
+
expect(fieldHasChanges(a, b)).toBe(false);
|
|
8
|
+
});
|
|
9
|
+
it('should return true for different values', () => {
|
|
10
|
+
const a = 1;
|
|
11
|
+
const b = 2;
|
|
12
|
+
expect(fieldHasChanges(a, b)).toBe(true);
|
|
13
|
+
});
|
|
14
|
+
it('should return false for identical objects', () => {
|
|
15
|
+
const a = {
|
|
16
|
+
key: 'value'
|
|
17
|
+
};
|
|
18
|
+
const b = {
|
|
19
|
+
key: 'value'
|
|
20
|
+
};
|
|
21
|
+
expect(fieldHasChanges(a, b)).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
it('should return true for different objects', () => {
|
|
24
|
+
const a = {
|
|
25
|
+
key: 'value'
|
|
26
|
+
};
|
|
27
|
+
const b = {
|
|
28
|
+
key: 'differentValue'
|
|
29
|
+
};
|
|
30
|
+
expect(fieldHasChanges(a, b)).toBe(true);
|
|
31
|
+
});
|
|
32
|
+
it('should handle undefined values', () => {
|
|
33
|
+
const a = {
|
|
34
|
+
key: 'value'
|
|
35
|
+
};
|
|
36
|
+
const b = undefined;
|
|
37
|
+
expect(fieldHasChanges(a, b)).toBe(true);
|
|
38
|
+
});
|
|
39
|
+
it('should handle null values', () => {
|
|
40
|
+
const a = {
|
|
41
|
+
key: 'value'
|
|
42
|
+
};
|
|
43
|
+
const b = null;
|
|
44
|
+
expect(fieldHasChanges(a, b)).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=fieldHasChanges.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldHasChanges.spec.js","names":["describe","it","expect","fieldHasChanges","a","b","toBe","key","undefined"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.ts"],"sourcesContent":["import { describe, it, expect } from 'vitest'\n\nimport { fieldHasChanges } from './fieldHasChanges.js'\n\ndescribe('hasChanges', () => {\n it('should return false for identical values', () => {\n const a = 'value'\n const b = 'value'\n expect(fieldHasChanges(a, b)).toBe(false)\n })\n it('should return true for different values', () => {\n const a = 1\n const b = 2\n expect(fieldHasChanges(a, b)).toBe(true)\n })\n\n it('should return false for identical objects', () => {\n const a = { key: 'value' }\n const b = { key: 'value' }\n expect(fieldHasChanges(a, b)).toBe(false)\n })\n\n it('should return true for different objects', () => {\n const a = { key: 'value' }\n const b = { key: 'differentValue' }\n expect(fieldHasChanges(a, b)).toBe(true)\n })\n\n it('should handle undefined values', () => {\n const a = { key: 'value' }\n const b = undefined\n expect(fieldHasChanges(a, b)).toBe(true)\n })\n\n it('should handle null values', () => {\n const a = { key: 'value' }\n const b = null\n expect(fieldHasChanges(a, b)).toBe(true)\n })\n})\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,EAAEC,MAAM,QAAQ;AAErC,SAASC,eAAe,QAAQ;AAEhCH,QAAA,CAAS,cAAc;EACrBC,EAAA,CAAG,4CAA4C;IAC7C,MAAMG,CAAA,GAAI;IACV,MAAMC,CAAA,GAAI;IACVH,MAAA,CAAOC,eAAA,CAAgBC,CAAA,EAAGC,CAAA,GAAIC,IAAI,CAAC;EACrC;EACAL,EAAA,CAAG,2CAA2C;IAC5C,MAAMG,CAAA,GAAI;IACV,MAAMC,CAAA,GAAI;IACVH,MAAA,CAAOC,eAAA,CAAgBC,CAAA,EAAGC,CAAA,GAAIC,IAAI,CAAC;EACrC;EAEAL,EAAA,CAAG,6CAA6C;IAC9C,MAAMG,CAAA,GAAI;MAAEG,GAAA,EAAK;IAAQ;IACzB,MAAMF,CAAA,GAAI;MAAEE,GAAA,EAAK;IAAQ;IACzBL,MAAA,CAAOC,eAAA,CAAgBC,CAAA,EAAGC,CAAA,GAAIC,IAAI,CAAC;EACrC;EAEAL,EAAA,CAAG,4CAA4C;IAC7C,MAAMG,CAAA,GAAI;MAAEG,GAAA,EAAK;IAAQ;IACzB,MAAMF,CAAA,GAAI;MAAEE,GAAA,EAAK;IAAiB;IAClCL,MAAA,CAAOC,eAAA,CAAgBC,CAAA,EAAGC,CAAA,GAAIC,IAAI,CAAC;EACrC;EAEAL,EAAA,CAAG,kCAAkC;IACnC,MAAMG,CAAA,GAAI;MAAEG,GAAA,EAAK;IAAQ;IACzB,MAAMF,CAAA,GAAIG,SAAA;IACVN,MAAA,CAAOC,eAAA,CAAgBC,CAAA,EAAGC,CAAA,GAAIC,IAAI,CAAC;EACrC;EAEAL,EAAA,CAAG,6BAA6B;IAC9B,MAAMG,CAAA,GAAI;MAAEG,GAAA,EAAK;IAAQ;IACzB,MAAMF,CAAA,GAAI;IACVH,MAAA,CAAOC,eAAA,CAAgBC,CAAA,EAAGC,CAAA,GAAIC,IAAI,CAAC;EACrC;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { getUniqueListBy } from '@ruya.sa/payload/shared';
|
|
2
|
+
/**
|
|
3
|
+
* Get the fields for a row in an iterable field for comparison.
|
|
4
|
+
* - Array fields: the fields of the array field, because the fields are the same for each row.
|
|
5
|
+
* - Blocks fields: the union of fields from the comparison and version row,
|
|
6
|
+
* because the fields from the version and comparison rows may differ.
|
|
7
|
+
*/
|
|
8
|
+
export function getFieldsForRowComparison({
|
|
9
|
+
baseVersionField,
|
|
10
|
+
config,
|
|
11
|
+
field,
|
|
12
|
+
row,
|
|
13
|
+
valueFromRow,
|
|
14
|
+
valueToRow
|
|
15
|
+
}) {
|
|
16
|
+
let fields = [];
|
|
17
|
+
let versionFields = [];
|
|
18
|
+
if (field.type === 'array' && 'fields' in field) {
|
|
19
|
+
fields = field.fields;
|
|
20
|
+
versionFields = baseVersionField.rows?.length ? baseVersionField.rows[row] : baseVersionField.fields;
|
|
21
|
+
} else if (field.type === 'blocks') {
|
|
22
|
+
if (valueToRow?.blockType === valueFromRow?.blockType) {
|
|
23
|
+
const matchedBlock = config?.blocksMap?.[valueToRow?.blockType] ?? (('blocks' in field || 'blockReferences' in field) && (field.blockReferences ?? field.blocks)?.find(block => typeof block !== 'string' && block.slug === valueToRow?.blockType) || {
|
|
24
|
+
fields: []
|
|
25
|
+
});
|
|
26
|
+
fields = matchedBlock.fields;
|
|
27
|
+
versionFields = baseVersionField.rows?.length ? baseVersionField.rows[row] : baseVersionField.fields;
|
|
28
|
+
} else {
|
|
29
|
+
const matchedVersionBlock = config?.blocksMap?.[valueToRow?.blockType] ?? (('blocks' in field || 'blockReferences' in field) && (field.blockReferences ?? field.blocks)?.find(block => typeof block !== 'string' && block.slug === valueToRow?.blockType) || {
|
|
30
|
+
fields: []
|
|
31
|
+
});
|
|
32
|
+
const matchedComparisonBlock = config?.blocksMap?.[valueFromRow?.blockType] ?? (('blocks' in field || 'blockReferences' in field) && (field.blockReferences ?? field.blocks)?.find(block => typeof block !== 'string' && block.slug === valueFromRow?.blockType) || {
|
|
33
|
+
fields: []
|
|
34
|
+
});
|
|
35
|
+
fields = getUniqueListBy([...matchedVersionBlock.fields, ...matchedComparisonBlock.fields], 'name');
|
|
36
|
+
// buildVersionFields already merged the fields of the version and comparison rows together
|
|
37
|
+
versionFields = baseVersionField.rows?.length ? baseVersionField.rows[row] : baseVersionField.fields;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
fields,
|
|
42
|
+
versionFields
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=getFieldsForRowComparison.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFieldsForRowComparison.js","names":["getUniqueListBy","getFieldsForRowComparison","baseVersionField","config","field","row","valueFromRow","valueToRow","fields","versionFields","type","rows","length","blockType","matchedBlock","blocksMap","blockReferences","blocks","find","block","slug","matchedVersionBlock","matchedComparisonBlock"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.ts"],"sourcesContent":["import type {\n ArrayFieldClient,\n BaseVersionField,\n BlocksFieldClient,\n ClientBlock,\n ClientConfig,\n ClientField,\n VersionField,\n} from '@ruya.sa/payload'\n\nimport { getUniqueListBy } from '@ruya.sa/payload/shared'\n\n/**\n * Get the fields for a row in an iterable field for comparison.\n * - Array fields: the fields of the array field, because the fields are the same for each row.\n * - Blocks fields: the union of fields from the comparison and version row,\n * because the fields from the version and comparison rows may differ.\n */\nexport function getFieldsForRowComparison({\n baseVersionField,\n config,\n field,\n row,\n valueFromRow,\n valueToRow,\n}: {\n baseVersionField: BaseVersionField\n config: ClientConfig\n field: ArrayFieldClient | BlocksFieldClient\n row: number\n valueFromRow: any\n valueToRow: any\n}): { fields: ClientField[]; versionFields: VersionField[] } {\n let fields: ClientField[] = []\n let versionFields: VersionField[] = []\n\n if (field.type === 'array' && 'fields' in field) {\n fields = field.fields\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n } else if (field.type === 'blocks') {\n if (valueToRow?.blockType === valueFromRow?.blockType) {\n const matchedBlock: ClientBlock =\n config?.blocksMap?.[valueToRow?.blockType] ??\n (((('blocks' in field || 'blockReferences' in field) &&\n (field.blockReferences ?? field.blocks)?.find(\n (block) => typeof block !== 'string' && block.slug === valueToRow?.blockType,\n )) || {\n fields: [],\n }) as ClientBlock)\n\n fields = matchedBlock.fields\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n } else {\n const matchedVersionBlock =\n config?.blocksMap?.[valueToRow?.blockType] ??\n (((('blocks' in field || 'blockReferences' in field) &&\n (field.blockReferences ?? field.blocks)?.find(\n (block) => typeof block !== 'string' && block.slug === valueToRow?.blockType,\n )) || {\n fields: [],\n }) as ClientBlock)\n\n const matchedComparisonBlock =\n config?.blocksMap?.[valueFromRow?.blockType] ??\n (((('blocks' in field || 'blockReferences' in field) &&\n (field.blockReferences ?? field.blocks)?.find(\n (block) => typeof block !== 'string' && block.slug === valueFromRow?.blockType,\n )) || {\n fields: [],\n }) as ClientBlock)\n\n fields = getUniqueListBy<ClientField>(\n [...matchedVersionBlock.fields, ...matchedComparisonBlock.fields],\n 'name',\n )\n\n // buildVersionFields already merged the fields of the version and comparison rows together\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n }\n }\n\n return { fields, versionFields }\n}\n"],"mappings":"AAUA,SAASA,eAAe,QAAQ;AAEhC;;;;;;AAMA,OAAO,SAASC,0BAA0B;EACxCC,gBAAgB;EAChBC,MAAM;EACNC,KAAK;EACLC,GAAG;EACHC,YAAY;EACZC;AAAU,CAQX;EACC,IAAIC,MAAA,GAAwB,EAAE;EAC9B,IAAIC,aAAA,GAAgC,EAAE;EAEtC,IAAIL,KAAA,CAAMM,IAAI,KAAK,WAAW,YAAYN,KAAA,EAAO;IAC/CI,MAAA,GAASJ,KAAA,CAAMI,MAAM;IACrBC,aAAA,GAAgBP,gBAAA,CAAiBS,IAAI,EAAEC,MAAA,GACnCV,gBAAA,CAAiBS,IAAI,CAACN,GAAA,CAAI,GAC1BH,gBAAA,CAAiBM,MAAM;EAC7B,OAAO,IAAIJ,KAAA,CAAMM,IAAI,KAAK,UAAU;IAClC,IAAIH,UAAA,EAAYM,SAAA,KAAcP,YAAA,EAAcO,SAAA,EAAW;MACrD,MAAMC,YAAA,GACJX,MAAA,EAAQY,SAAA,GAAYR,UAAA,EAAYM,SAAA,CAAU,KACxC,CAAE,YAAYT,KAAA,IAAS,qBAAqBA,KAAI,KAC/C,CAAAA,KAAA,CAAMY,eAAe,IAAIZ,KAAA,CAAMa,MAAM,GAAGC,IAAA,CACtCC,KAAA,IAAU,OAAOA,KAAA,KAAU,YAAYA,KAAA,CAAMC,IAAI,KAAKb,UAAA,EAAYM,SAAA,KAC/D;QACNL,MAAA,EAAQ;MACV;MAEFA,MAAA,GAASM,YAAA,CAAaN,MAAM;MAC5BC,aAAA,GAAgBP,gBAAA,CAAiBS,IAAI,EAAEC,MAAA,GACnCV,gBAAA,CAAiBS,IAAI,CAACN,GAAA,CAAI,GAC1BH,gBAAA,CAAiBM,MAAM;IAC7B,OAAO;MACL,MAAMa,mBAAA,GACJlB,MAAA,EAAQY,SAAA,GAAYR,UAAA,EAAYM,SAAA,CAAU,KACxC,CAAE,YAAYT,KAAA,IAAS,qBAAqBA,KAAI,KAC/C,CAAAA,KAAA,CAAMY,eAAe,IAAIZ,KAAA,CAAMa,MAAM,GAAGC,IAAA,CACtCC,KAAA,IAAU,OAAOA,KAAA,KAAU,YAAYA,KAAA,CAAMC,IAAI,KAAKb,UAAA,EAAYM,SAAA,KAC/D;QACNL,MAAA,EAAQ;MACV;MAEF,MAAMc,sBAAA,GACJnB,MAAA,EAAQY,SAAA,GAAYT,YAAA,EAAcO,SAAA,CAAU,KAC1C,CAAE,YAAYT,KAAA,IAAS,qBAAqBA,KAAI,KAC/C,CAAAA,KAAA,CAAMY,eAAe,IAAIZ,KAAA,CAAMa,MAAM,GAAGC,IAAA,CACtCC,KAAA,IAAU,OAAOA,KAAA,KAAU,YAAYA,KAAA,CAAMC,IAAI,KAAKd,YAAA,EAAcO,SAAA,KACjE;QACNL,MAAA,EAAQ;MACV;MAEFA,MAAA,GAASR,eAAA,CACP,C,GAAIqB,mBAAA,CAAoBb,MAAM,E,GAAKc,sBAAA,CAAuBd,MAAM,CAAC,EACjE;MAGF;MACAC,aAAA,GAAgBP,gBAAA,CAAiBS,IAAI,EAAEC,MAAA,GACnCV,gBAAA,CAAiBS,IAAI,CAACN,GAAA,CAAI,GAC1BH,gBAAA,CAAiBM,MAAM;IAC7B;EACF;EAEA,OAAO;IAAEA,MAAA;IAAQC;EAAc;AACjC","ignoreList":[]}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { getFieldsForRowComparison } from './getFieldsForRowComparison';
|
|
3
|
+
describe('getFieldsForRowComparison', () => {
|
|
4
|
+
describe('array fields', () => {
|
|
5
|
+
it('should return fields from array field', () => {
|
|
6
|
+
const arrayFields = [{
|
|
7
|
+
name: 'title',
|
|
8
|
+
type: 'text'
|
|
9
|
+
}, {
|
|
10
|
+
name: 'description',
|
|
11
|
+
type: 'textarea'
|
|
12
|
+
}];
|
|
13
|
+
const field = {
|
|
14
|
+
type: 'array',
|
|
15
|
+
name: 'items',
|
|
16
|
+
fields: arrayFields
|
|
17
|
+
};
|
|
18
|
+
const {
|
|
19
|
+
fields
|
|
20
|
+
} = getFieldsForRowComparison({
|
|
21
|
+
field,
|
|
22
|
+
valueToRow: {},
|
|
23
|
+
valueFromRow: {},
|
|
24
|
+
row: 0,
|
|
25
|
+
baseVersionField: {
|
|
26
|
+
fields: [],
|
|
27
|
+
path: 'items',
|
|
28
|
+
schemaPath: 'items',
|
|
29
|
+
type: 'array'
|
|
30
|
+
},
|
|
31
|
+
config: {}
|
|
32
|
+
});
|
|
33
|
+
expect(fields).toEqual(arrayFields);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
describe('blocks fields', () => {
|
|
37
|
+
it('should return combined fields when block types match', () => {
|
|
38
|
+
const blockAFields = [{
|
|
39
|
+
name: 'a',
|
|
40
|
+
type: 'text'
|
|
41
|
+
}, {
|
|
42
|
+
name: 'b',
|
|
43
|
+
type: 'text'
|
|
44
|
+
}];
|
|
45
|
+
const field = {
|
|
46
|
+
type: 'blocks',
|
|
47
|
+
name: 'myBlocks',
|
|
48
|
+
blocks: [{
|
|
49
|
+
slug: 'blockA',
|
|
50
|
+
fields: blockAFields
|
|
51
|
+
}]
|
|
52
|
+
};
|
|
53
|
+
const valueToRow = {
|
|
54
|
+
blockType: 'blockA'
|
|
55
|
+
};
|
|
56
|
+
const valueFromRow = {
|
|
57
|
+
blockType: 'blockA'
|
|
58
|
+
};
|
|
59
|
+
const {
|
|
60
|
+
fields
|
|
61
|
+
} = getFieldsForRowComparison({
|
|
62
|
+
field,
|
|
63
|
+
valueToRow,
|
|
64
|
+
valueFromRow,
|
|
65
|
+
row: 0,
|
|
66
|
+
baseVersionField: {
|
|
67
|
+
fields: [],
|
|
68
|
+
path: 'myBlocks',
|
|
69
|
+
schemaPath: 'myBlocks',
|
|
70
|
+
type: 'blocks'
|
|
71
|
+
},
|
|
72
|
+
config: {}
|
|
73
|
+
});
|
|
74
|
+
expect(fields).toEqual(blockAFields);
|
|
75
|
+
});
|
|
76
|
+
it('should return unique combined fields when block types differ', () => {
|
|
77
|
+
const field = {
|
|
78
|
+
type: 'blocks',
|
|
79
|
+
name: 'myBlocks',
|
|
80
|
+
blocks: [{
|
|
81
|
+
slug: 'blockA',
|
|
82
|
+
fields: [{
|
|
83
|
+
name: 'a',
|
|
84
|
+
type: 'text'
|
|
85
|
+
}, {
|
|
86
|
+
name: 'b',
|
|
87
|
+
type: 'text'
|
|
88
|
+
}]
|
|
89
|
+
}, {
|
|
90
|
+
slug: 'blockB',
|
|
91
|
+
fields: [{
|
|
92
|
+
name: 'b',
|
|
93
|
+
type: 'text'
|
|
94
|
+
}, {
|
|
95
|
+
name: 'c',
|
|
96
|
+
type: 'text'
|
|
97
|
+
}]
|
|
98
|
+
}]
|
|
99
|
+
};
|
|
100
|
+
const valueToRow = {
|
|
101
|
+
blockType: 'blockA'
|
|
102
|
+
};
|
|
103
|
+
const valueFromRow = {
|
|
104
|
+
blockType: 'blockB'
|
|
105
|
+
};
|
|
106
|
+
const {
|
|
107
|
+
fields
|
|
108
|
+
} = getFieldsForRowComparison({
|
|
109
|
+
field,
|
|
110
|
+
valueToRow,
|
|
111
|
+
valueFromRow,
|
|
112
|
+
row: 0,
|
|
113
|
+
baseVersionField: {
|
|
114
|
+
fields: [],
|
|
115
|
+
path: 'myBlocks',
|
|
116
|
+
schemaPath: 'myBlocks',
|
|
117
|
+
type: 'blocks'
|
|
118
|
+
},
|
|
119
|
+
config: {}
|
|
120
|
+
});
|
|
121
|
+
// Should contain all unique fields from both blocks
|
|
122
|
+
expect(fields).toEqual([{
|
|
123
|
+
name: 'a',
|
|
124
|
+
type: 'text'
|
|
125
|
+
}, {
|
|
126
|
+
name: 'b',
|
|
127
|
+
type: 'text'
|
|
128
|
+
}, {
|
|
129
|
+
name: 'c',
|
|
130
|
+
type: 'text'
|
|
131
|
+
}]);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
//# sourceMappingURL=getFieldsForRowComparison.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFieldsForRowComparison.spec.js","names":["describe","it","expect","getFieldsForRowComparison","arrayFields","name","type","field","fields","valueToRow","valueFromRow","row","baseVersionField","path","schemaPath","config","toEqual","blockAFields","blocks","slug","blockType"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.ts"],"sourcesContent":["import type { ArrayFieldClient, BlocksFieldClient, ClientField } from '@ruya.sa/payload'\nimport { describe, it, expect } from 'vitest'\n\nimport { getFieldsForRowComparison } from './getFieldsForRowComparison'\n\ndescribe('getFieldsForRowComparison', () => {\n describe('array fields', () => {\n it('should return fields from array field', () => {\n const arrayFields: ClientField[] = [\n { name: 'title', type: 'text' },\n { name: 'description', type: 'textarea' },\n ]\n\n const field: ArrayFieldClient = {\n type: 'array',\n name: 'items',\n fields: arrayFields,\n }\n\n const { fields } = getFieldsForRowComparison({\n field,\n valueToRow: {},\n valueFromRow: {},\n row: 0,\n baseVersionField: { fields: [], path: 'items', schemaPath: 'items', type: 'array' },\n config: {} as any,\n })\n\n expect(fields).toEqual(arrayFields)\n })\n })\n\n describe('blocks fields', () => {\n it('should return combined fields when block types match', () => {\n const blockAFields: ClientField[] = [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n ]\n\n const field: BlocksFieldClient = {\n type: 'blocks',\n name: 'myBlocks',\n blocks: [\n {\n slug: 'blockA',\n fields: blockAFields,\n },\n ],\n }\n\n const valueToRow = { blockType: 'blockA' }\n const valueFromRow = { blockType: 'blockA' }\n\n const { fields } = getFieldsForRowComparison({\n field,\n valueToRow,\n valueFromRow,\n row: 0,\n baseVersionField: { fields: [], path: 'myBlocks', schemaPath: 'myBlocks', type: 'blocks' },\n config: {} as any,\n })\n\n expect(fields).toEqual(blockAFields)\n })\n\n it('should return unique combined fields when block types differ', () => {\n const field: BlocksFieldClient = {\n type: 'blocks',\n name: 'myBlocks',\n blocks: [\n {\n slug: 'blockA',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n ],\n },\n {\n slug: 'blockB',\n fields: [\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ],\n }\n\n const valueToRow = { blockType: 'blockA' }\n const valueFromRow = { blockType: 'blockB' }\n\n const { fields } = getFieldsForRowComparison({\n field,\n valueToRow,\n valueFromRow,\n row: 0,\n baseVersionField: { fields: [], path: 'myBlocks', schemaPath: 'myBlocks', type: 'blocks' },\n config: {} as any,\n })\n\n // Should contain all unique fields from both blocks\n expect(fields).toEqual([\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ])\n })\n })\n})\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { getTranslation } from '@ruya.sa/translations';
|
|
5
|
+
import { Button, ConfirmationModal, PopupList, toast, useConfig, useModal, useRouteTransition, useTranslation } from '@ruya.sa/ui';
|
|
6
|
+
import { requests } from '@ruya.sa/ui/shared';
|
|
7
|
+
import { useRouter } from 'next/navigation.js';
|
|
8
|
+
import { formatAdminURL } from '@ruya.sa/payload/shared';
|
|
9
|
+
import React, { Fragment, useCallback, useState } from 'react';
|
|
10
|
+
const baseClass = 'restore-version';
|
|
11
|
+
const modalSlug = 'restore-version';
|
|
12
|
+
export const Restore = ({
|
|
13
|
+
className,
|
|
14
|
+
collectionConfig,
|
|
15
|
+
globalConfig,
|
|
16
|
+
label,
|
|
17
|
+
originalDocID,
|
|
18
|
+
status,
|
|
19
|
+
versionDateFormatted,
|
|
20
|
+
versionID
|
|
21
|
+
}) => {
|
|
22
|
+
const {
|
|
23
|
+
config: {
|
|
24
|
+
routes: {
|
|
25
|
+
admin: adminRoute,
|
|
26
|
+
api: apiRoute
|
|
27
|
+
},
|
|
28
|
+
serverURL
|
|
29
|
+
}
|
|
30
|
+
} = useConfig();
|
|
31
|
+
const {
|
|
32
|
+
toggleModal
|
|
33
|
+
} = useModal();
|
|
34
|
+
const router = useRouter();
|
|
35
|
+
const {
|
|
36
|
+
i18n,
|
|
37
|
+
t
|
|
38
|
+
} = useTranslation();
|
|
39
|
+
const [draft, setDraft] = useState(false);
|
|
40
|
+
const {
|
|
41
|
+
startRouteTransition
|
|
42
|
+
} = useRouteTransition();
|
|
43
|
+
const restoreMessage = t('version:aboutToRestoreGlobal', {
|
|
44
|
+
label: getTranslation(label, i18n),
|
|
45
|
+
versionDate: versionDateFormatted
|
|
46
|
+
});
|
|
47
|
+
const canRestoreAsDraft = status !== 'draft' && collectionConfig?.versions?.drafts;
|
|
48
|
+
const handleRestore = useCallback(async () => {
|
|
49
|
+
let fetchURL = formatAdminURL({
|
|
50
|
+
apiRoute,
|
|
51
|
+
path: ''
|
|
52
|
+
});
|
|
53
|
+
let redirectURL;
|
|
54
|
+
if (collectionConfig) {
|
|
55
|
+
fetchURL = `${fetchURL}/${collectionConfig.slug}/versions/${versionID}?draft=${draft}`;
|
|
56
|
+
redirectURL = formatAdminURL({
|
|
57
|
+
adminRoute,
|
|
58
|
+
path: `/collections/${collectionConfig.slug}/${originalDocID}`
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
if (globalConfig) {
|
|
62
|
+
fetchURL = `${fetchURL}/globals/${globalConfig.slug}/versions/${versionID}?draft=${draft}`;
|
|
63
|
+
redirectURL = formatAdminURL({
|
|
64
|
+
adminRoute,
|
|
65
|
+
path: `/globals/${globalConfig.slug}`
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const res = await requests.post(fetchURL, {
|
|
69
|
+
headers: {
|
|
70
|
+
'Accept-Language': i18n.language
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
if (res.status === 200) {
|
|
74
|
+
const json = await res.json();
|
|
75
|
+
toast.success(json.message);
|
|
76
|
+
return startRouteTransition(() => router.push(redirectURL));
|
|
77
|
+
} else {
|
|
78
|
+
toast.error(t('version:problemRestoringVersion'));
|
|
79
|
+
}
|
|
80
|
+
}, [apiRoute, collectionConfig, globalConfig, i18n.language, versionID, draft, adminRoute, originalDocID, startRouteTransition, router, t]);
|
|
81
|
+
return /*#__PURE__*/_jsxs(Fragment, {
|
|
82
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
83
|
+
className: [baseClass, className].filter(Boolean).join(' '),
|
|
84
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
85
|
+
buttonStyle: "primary",
|
|
86
|
+
className: [canRestoreAsDraft && `${baseClass}__restore-as-draft-button`].filter(Boolean).join(' '),
|
|
87
|
+
onClick: () => toggleModal(modalSlug),
|
|
88
|
+
size: "xsmall",
|
|
89
|
+
SubMenuPopupContent: canRestoreAsDraft ? () => /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
|
|
90
|
+
children: /*#__PURE__*/_jsx(PopupList.Button, {
|
|
91
|
+
onClick: () => [setDraft(true), toggleModal(modalSlug)],
|
|
92
|
+
children: t('version:restoreAsDraft')
|
|
93
|
+
})
|
|
94
|
+
}) : null,
|
|
95
|
+
children: t('version:restoreThisVersion')
|
|
96
|
+
})
|
|
97
|
+
}), /*#__PURE__*/_jsx(ConfirmationModal, {
|
|
98
|
+
body: restoreMessage,
|
|
99
|
+
confirmingLabel: t('version:restoring'),
|
|
100
|
+
heading: t('version:confirmVersionRestoration'),
|
|
101
|
+
modalSlug: modalSlug,
|
|
102
|
+
onConfirm: handleRestore
|
|
103
|
+
})]
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","Button","ConfirmationModal","PopupList","toast","useConfig","useModal","useRouteTransition","useTranslation","requests","useRouter","formatAdminURL","React","Fragment","useCallback","useState","baseClass","modalSlug","Restore","className","collectionConfig","globalConfig","label","originalDocID","status","versionDateFormatted","versionID","config","routes","admin","adminRoute","api","apiRoute","serverURL","toggleModal","router","i18n","t","draft","setDraft","startRouteTransition","restoreMessage","versionDate","canRestoreAsDraft","versions","drafts","handleRestore","fetchURL","path","redirectURL","slug","res","post","headers","language","json","success","message","push","error","_jsxs","_jsx","filter","Boolean","join","buttonStyle","onClick","size","SubMenuPopupContent","ButtonGroup","body","confirmingLabel","heading","onConfirm"],"sources":["../../../../src/views/Version/Restore/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, ClientGlobalConfig, SanitizedCollectionConfig } from '@ruya.sa/payload'\n\nimport { getTranslation } from '@ruya.sa/translations'\nimport {\n Button,\n ConfirmationModal,\n PopupList,\n toast,\n useConfig,\n useModal,\n useRouteTransition,\n useTranslation,\n} from '@ruya.sa/ui'\nimport { requests } from '@ruya.sa/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from '@ruya.sa/payload/shared'\n\nimport './index.scss'\n\nimport React, { Fragment, useCallback, useState } from 'react'\n\nconst baseClass = 'restore-version'\nconst modalSlug = 'restore-version'\n\ntype Props = {\n className?: string\n collectionConfig?: ClientCollectionConfig\n globalConfig?: ClientGlobalConfig\n label: SanitizedCollectionConfig['labels']['singular']\n originalDocID: number | string\n status?: string\n versionDateFormatted: string\n versionID: string\n}\n\nexport const Restore: React.FC<Props> = ({\n className,\n collectionConfig,\n globalConfig,\n label,\n originalDocID,\n status,\n versionDateFormatted,\n versionID,\n}) => {\n const {\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n } = useConfig()\n\n const { toggleModal } = useModal()\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const [draft, setDraft] = useState(false)\n const { startRouteTransition } = useRouteTransition()\n\n const restoreMessage = t('version:aboutToRestoreGlobal', {\n label: getTranslation(label, i18n),\n versionDate: versionDateFormatted,\n })\n\n const canRestoreAsDraft = status !== 'draft' && collectionConfig?.versions?.drafts\n\n const handleRestore = useCallback(async () => {\n let fetchURL = formatAdminURL({\n apiRoute,\n path: '',\n })\n let redirectURL: string\n\n if (collectionConfig) {\n fetchURL = `${fetchURL}/${collectionConfig.slug}/versions/${versionID}?draft=${draft}`\n redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig.slug}/${originalDocID}`,\n })\n }\n\n if (globalConfig) {\n fetchURL = `${fetchURL}/globals/${globalConfig.slug}/versions/${versionID}?draft=${draft}`\n redirectURL = formatAdminURL({\n adminRoute,\n path: `/globals/${globalConfig.slug}`,\n })\n }\n\n const res = await requests.post(fetchURL, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (res.status === 200) {\n const json = await res.json()\n toast.success(json.message)\n return startRouteTransition(() => router.push(redirectURL))\n } else {\n toast.error(t('version:problemRestoringVersion'))\n }\n }, [\n apiRoute,\n collectionConfig,\n globalConfig,\n i18n.language,\n versionID,\n draft,\n adminRoute,\n originalDocID,\n startRouteTransition,\n router,\n t,\n ])\n\n return (\n <Fragment>\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <Button\n buttonStyle=\"primary\"\n className={[canRestoreAsDraft && `${baseClass}__restore-as-draft-button`]\n .filter(Boolean)\n .join(' ')}\n onClick={() => toggleModal(modalSlug)}\n size=\"xsmall\"\n SubMenuPopupContent={\n canRestoreAsDraft\n ? () => (\n <PopupList.ButtonGroup>\n <PopupList.Button onClick={() => [setDraft(true), toggleModal(modalSlug)]}>\n {t('version:restoreAsDraft')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )\n : null\n }\n >\n {t('version:restoreThisVersion')}\n </Button>\n </div>\n <ConfirmationModal\n body={restoreMessage}\n confirmingLabel={t('version:restoring')}\n heading={t('version:confirmVersionRestoration')}\n modalSlug={modalSlug}\n onConfirm={handleRestore}\n />\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
+
import { useConfig, useModal, useRouteTransition, useTranslation } from '@ruya.sa/ui';
|
|
5
|
+
import { formatDate } from '@ruya.sa/ui/shared';
|
|
6
|
+
import { usePathname, useRouter, useSearchParams } from 'next/navigation.js';
|
|
7
|
+
export const VersionDrawerCreatedAtCell = t0 => {
|
|
8
|
+
const {
|
|
9
|
+
rowData: t1
|
|
10
|
+
} = t0;
|
|
11
|
+
const {
|
|
12
|
+
id,
|
|
13
|
+
updatedAt
|
|
14
|
+
} = t1 === undefined ? {} : t1;
|
|
15
|
+
const {
|
|
16
|
+
config: t2
|
|
17
|
+
} = useConfig();
|
|
18
|
+
const {
|
|
19
|
+
admin: t3
|
|
20
|
+
} = t2;
|
|
21
|
+
const {
|
|
22
|
+
dateFormat
|
|
23
|
+
} = t3;
|
|
24
|
+
const {
|
|
25
|
+
closeAllModals
|
|
26
|
+
} = useModal();
|
|
27
|
+
const router = useRouter();
|
|
28
|
+
const pathname = usePathname();
|
|
29
|
+
const searchParams = useSearchParams();
|
|
30
|
+
const {
|
|
31
|
+
startRouteTransition
|
|
32
|
+
} = useRouteTransition();
|
|
33
|
+
const {
|
|
34
|
+
i18n
|
|
35
|
+
} = useTranslation();
|
|
36
|
+
return _jsx("button", {
|
|
37
|
+
className: "created-at-cell",
|
|
38
|
+
onClick: () => {
|
|
39
|
+
closeAllModals();
|
|
40
|
+
const current = new URLSearchParams(Array.from(searchParams.entries()));
|
|
41
|
+
if (id) {
|
|
42
|
+
current.set("versionFrom", String(id));
|
|
43
|
+
}
|
|
44
|
+
const search = current.toString();
|
|
45
|
+
const query = search ? `?${search}` : "";
|
|
46
|
+
startRouteTransition(() => router.push(`${pathname}${query}`));
|
|
47
|
+
},
|
|
48
|
+
type: "button",
|
|
49
|
+
children: formatDate({
|
|
50
|
+
date: updatedAt,
|
|
51
|
+
i18n,
|
|
52
|
+
pattern: dateFormat
|
|
53
|
+
})
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=CreatedAtCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreatedAtCell.js","names":["useConfig","useModal","useRouteTransition","useTranslation","formatDate","usePathname","useRouter","useSearchParams","VersionDrawerCreatedAtCell","t0","rowData","t1","id","updatedAt","undefined","config","t2","admin","t3","dateFormat","closeAllModals","router","pathname","searchParams","startRouteTransition","i18n","_jsx","className","onClick","current","URLSearchParams","Array","from","entries","set","String","search","toString","query","push","type","children","date","pattern"],"sources":["../../../../../src/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.tsx"],"sourcesContent":["'use client'\nimport { useConfig, useModal, useRouteTransition, useTranslation } from '@ruya.sa/ui'\nimport { formatDate } from '@ruya.sa/ui/shared'\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation.js'\n\nimport type { CreatedAtCellProps } from '../../../Versions/cells/CreatedAt/index.js'\n\nexport const VersionDrawerCreatedAtCell: React.FC<CreatedAtCellProps> = ({\n rowData: { id, updatedAt } = {},\n}) => {\n const {\n config: {\n admin: { dateFormat },\n },\n } = useConfig()\n const { closeAllModals } = useModal()\n const router = useRouter()\n const pathname = usePathname()\n const searchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n\n const { i18n } = useTranslation()\n\n return (\n <button\n className=\"created-at-cell\"\n onClick={() => {\n closeAllModals()\n const current = new URLSearchParams(Array.from(searchParams.entries()))\n\n if (id) {\n current.set('versionFrom', String(id))\n }\n\n const search = current.toString()\n const query = search ? `?${search}` : ''\n\n startRouteTransition(() => router.push(`${pathname}${query}`))\n }}\n type=\"button\"\n >\n {formatDate({ date: updatedAt, i18n, pattern: dateFormat })}\n </button>\n )\n}\n"],"mappings":"AAAA;;;AACA,SAASA,SAAS,EAAEC,QAAQ,EAAEC,kBAAkB,EAAEC,cAAc,QAAQ;AACxE,SAASC,UAAU,QAAQ;AAC3B,SAASC,WAAW,EAAEC,SAAS,EAAEC,eAAe,QAAQ;AAIxD,OAAO,MAAMC,0BAAA,GAA2DC,EAAA;EAAC;IAAAC,OAAA,EAAAC;EAAA,IAAAF,EAExE;EADU;IAAAG,EAAA;IAAAC;EAAA,IAAAF,EAAsB,KAAAG,SAAA,QAAtBH,EAAsB;EAE/B;IAAAI,MAAA,EAAAC;EAAA,IAIIhB,SAAA;EAHM;IAAAiB,KAAA,EAAAC;EAAA,IAAAF,EAEP;EADQ;IAAAG;EAAA,IAAAD,EAAc;EAGzB;IAAAE;EAAA,IAA2BnB,QAAA;EAC3B,MAAAoB,MAAA,GAAef,SAAA;EACf,MAAAgB,QAAA,GAAiBjB,WAAA;EACjB,MAAAkB,YAAA,GAAqBhB,eAAA;EACrB;IAAAiB;EAAA,IAAiCtB,kBAAA;EAEjC;IAAAuB;EAAA,IAAiBtB,cAAA;EAAA,OAGfuB,IAAA,CAAC;IAAAC,SAAA,EACW;IAAAC,OAAA,EAAAA,CAAA;MAERR,cAAA;MACA,MAAAS,OAAA,OAAAC,eAAA,CAAoCC,KAAA,CAAAC,IAAA,CAAWT,YAAA,CAAAU,OAAA,CAAoB;MAAA,IAE/DrB,EAAA;QACFiB,OAAA,CAAAK,GAAA,CAAY,eAAeC,MAAA,CAAOvB,EAAA;MAAA;MAGpC,MAAAwB,MAAA,GAAeP,OAAA,CAAAQ,QAAA,CAAgB;MAC/B,MAAAC,KAAA,GAAcF,MAAA,GAAS,IAAIA,MAAA,EAAQ,GAAG;MAEtCZ,oBAAA,OAA2BH,MAAA,CAAAkB,IAAA,CAAY,GAAGjB,QAAA,GAAWgB,KAAA,EAAO;IAAA;IAAAE,IAAA,EAEzD;IAAAC,QAAA,EAEJrC,UAAA;MAAAsC,IAAA,EAAmB7B,SAAA;MAAAY,IAAA;MAAAkB,OAAA,EAA0BxB;IAAA,CAAW;EAAA,C;CAG/D","ignoreList":[]}
|