@rnaga/wp-next-admin 1.0.1
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/README.md +292 -0
- package/client/components/RootLayout.d.ts +13 -0
- package/client/components/RootLayout.d.ts.map +1 -0
- package/client/components/RootLayout.js +13 -0
- package/client/components/WrapperRootLayout.d.ts +9 -0
- package/client/components/WrapperRootLayout.d.ts.map +1 -0
- package/client/components/WrapperRootLayout.js +5 -0
- package/client/components/contents/blogs/Create.d.ts +2 -0
- package/client/components/contents/blogs/Create.d.ts.map +1 -0
- package/client/components/contents/blogs/Create.js +67 -0
- package/client/components/contents/blogs/Edit.d.ts +2 -0
- package/client/components/contents/blogs/Edit.d.ts.map +1 -0
- package/client/components/contents/blogs/Edit.js +144 -0
- package/client/components/contents/blogs/List.d.ts +2 -0
- package/client/components/contents/blogs/List.d.ts.map +1 -0
- package/client/components/contents/blogs/List.js +56 -0
- package/client/components/contents/blogs/index.d.ts +6 -0
- package/client/components/contents/blogs/index.d.ts.map +1 -0
- package/client/components/contents/blogs/index.js +8 -0
- package/client/components/contents/comments/ActionLink.d.ts +5 -0
- package/client/components/contents/comments/ActionLink.d.ts.map +1 -0
- package/client/components/contents/comments/ActionLink.js +67 -0
- package/client/components/contents/comments/List/Reply.d.ts +5 -0
- package/client/components/contents/comments/List/Reply.d.ts.map +1 -0
- package/client/components/contents/comments/List/Reply.js +33 -0
- package/client/components/contents/comments/List/Row.d.ts +5 -0
- package/client/components/contents/comments/List/Row.d.ts.map +1 -0
- package/client/components/contents/comments/List/Row.js +30 -0
- package/client/components/contents/comments/List/Toolbar.d.ts +8 -0
- package/client/components/contents/comments/List/Toolbar.d.ts.map +1 -0
- package/client/components/contents/comments/List/Toolbar.js +14 -0
- package/client/components/contents/comments/List/index.d.ts +5 -0
- package/client/components/contents/comments/List/index.d.ts.map +1 -0
- package/client/components/contents/comments/List/index.js +38 -0
- package/client/components/contents/comments/index.d.ts +7 -0
- package/client/components/contents/comments/index.d.ts.map +1 -0
- package/client/components/contents/comments/index.js +6 -0
- package/client/components/contents/dashboard/index.d.ts +2 -0
- package/client/components/contents/dashboard/index.d.ts.map +1 -0
- package/client/components/contents/dashboard/index.js +123 -0
- package/client/components/contents/index.d.ts +46 -0
- package/client/components/contents/index.d.ts.map +1 -0
- package/client/components/contents/index.js +28 -0
- package/client/components/contents/media/Edit.d.ts +2 -0
- package/client/components/contents/media/Edit.d.ts.map +1 -0
- package/client/components/contents/media/Edit.js +86 -0
- package/client/components/contents/media/List/ActionLink.d.ts +5 -0
- package/client/components/contents/media/List/ActionLink.d.ts.map +1 -0
- package/client/components/contents/media/List/ActionLink.js +24 -0
- package/client/components/contents/media/List/Table.d.ts +5 -0
- package/client/components/contents/media/List/Table.d.ts.map +1 -0
- package/client/components/contents/media/List/Table.js +38 -0
- package/client/components/contents/media/List/Thumbnail.d.ts +5 -0
- package/client/components/contents/media/List/Thumbnail.d.ts.map +1 -0
- package/client/components/contents/media/List/Thumbnail.js +28 -0
- package/client/components/contents/media/List/index.d.ts +2 -0
- package/client/components/contents/media/List/index.d.ts.map +1 -0
- package/client/components/contents/media/List/index.js +66 -0
- package/client/components/contents/media/index.d.ts +5 -0
- package/client/components/contents/media/index.d.ts.map +1 -0
- package/client/components/contents/media/index.js +6 -0
- package/client/components/contents/pages/Edit/Settings.d.ts +2 -0
- package/client/components/contents/pages/Edit/Settings.d.ts.map +1 -0
- package/client/components/contents/pages/Edit/Settings.js +17 -0
- package/client/components/contents/pages/Edit/Toolbar.d.ts +2 -0
- package/client/components/contents/pages/Edit/Toolbar.d.ts.map +1 -0
- package/client/components/contents/pages/Edit/Toolbar.js +72 -0
- package/client/components/contents/pages/Edit/index.d.ts +2 -0
- package/client/components/contents/pages/Edit/index.d.ts.map +1 -0
- package/client/components/contents/pages/Edit/index.js +43 -0
- package/client/components/contents/pages/List/ActionLink.d.ts +5 -0
- package/client/components/contents/pages/List/ActionLink.d.ts.map +1 -0
- package/client/components/contents/pages/List/ActionLink.js +12 -0
- package/client/components/contents/pages/List/Statuses.d.ts +2 -0
- package/client/components/contents/pages/List/Statuses.d.ts.map +1 -0
- package/client/components/contents/pages/List/Statuses.js +24 -0
- package/client/components/contents/pages/List/Toolbar.d.ts +8 -0
- package/client/components/contents/pages/List/Toolbar.d.ts.map +1 -0
- package/client/components/contents/pages/List/Toolbar.js +14 -0
- package/client/components/contents/pages/List/index.d.ts +2 -0
- package/client/components/contents/pages/List/index.d.ts.map +1 -0
- package/client/components/contents/pages/List/index.js +45 -0
- package/client/components/contents/pages/index.d.ts +5 -0
- package/client/components/contents/pages/index.d.ts.map +1 -0
- package/client/components/contents/pages/index.js +6 -0
- package/client/components/contents/posts/Edit/Settings.d.ts +2 -0
- package/client/components/contents/posts/Edit/Settings.d.ts.map +1 -0
- package/client/components/contents/posts/Edit/Settings.js +19 -0
- package/client/components/contents/posts/Edit/Toolbar.d.ts +2 -0
- package/client/components/contents/posts/Edit/Toolbar.d.ts.map +1 -0
- package/client/components/contents/posts/Edit/Toolbar.js +72 -0
- package/client/components/contents/posts/Edit/index.d.ts +2 -0
- package/client/components/contents/posts/Edit/index.d.ts.map +1 -0
- package/client/components/contents/posts/Edit/index.js +43 -0
- package/client/components/contents/posts/List/ActionLink.d.ts +5 -0
- package/client/components/contents/posts/List/ActionLink.d.ts.map +1 -0
- package/client/components/contents/posts/List/ActionLink.js +12 -0
- package/client/components/contents/posts/List/Statuses.d.ts +2 -0
- package/client/components/contents/posts/List/Statuses.d.ts.map +1 -0
- package/client/components/contents/posts/List/Statuses.js +32 -0
- package/client/components/contents/posts/List/Toolbar.d.ts +8 -0
- package/client/components/contents/posts/List/Toolbar.d.ts.map +1 -0
- package/client/components/contents/posts/List/Toolbar.js +14 -0
- package/client/components/contents/posts/List/index.d.ts +2 -0
- package/client/components/contents/posts/List/index.d.ts.map +1 -0
- package/client/components/contents/posts/List/index.js +46 -0
- package/client/components/contents/posts/index.d.ts +5 -0
- package/client/components/contents/posts/index.d.ts.map +1 -0
- package/client/components/contents/posts/index.js +6 -0
- package/client/components/contents/profile/index.d.ts +2 -0
- package/client/components/contents/profile/index.d.ts.map +1 -0
- package/client/components/contents/profile/index.js +7 -0
- package/client/components/contents/revisions/List/History.d.ts +7 -0
- package/client/components/contents/revisions/List/History.d.ts.map +1 -0
- package/client/components/contents/revisions/List/History.js +37 -0
- package/client/components/contents/revisions/List/diff2html.css +11 -0
- package/client/components/contents/revisions/List/index.d.ts +9 -0
- package/client/components/contents/revisions/List/index.d.ts.map +1 -0
- package/client/components/contents/revisions/List/index.js +145 -0
- package/client/components/contents/revisions/index.d.ts +2 -0
- package/client/components/contents/revisions/index.d.ts.map +1 -0
- package/client/components/contents/revisions/index.js +1 -0
- package/client/components/contents/roles/List/EditModal.d.ts +8 -0
- package/client/components/contents/roles/List/EditModal.d.ts.map +1 -0
- package/client/components/contents/roles/List/EditModal.js +153 -0
- package/client/components/contents/roles/List/index.d.ts +7 -0
- package/client/components/contents/roles/List/index.d.ts.map +1 -0
- package/client/components/contents/roles/List/index.js +111 -0
- package/client/components/contents/roles/index.d.ts +2 -0
- package/client/components/contents/roles/index.d.ts.map +1 -0
- package/client/components/contents/roles/index.js +1 -0
- package/client/components/contents/settings/index.d.ts +2 -0
- package/client/components/contents/settings/index.d.ts.map +1 -0
- package/client/components/contents/settings/index.js +67 -0
- package/client/components/contents/sites/Create.d.ts +2 -0
- package/client/components/contents/sites/Create.d.ts.map +1 -0
- package/client/components/contents/sites/Create.js +53 -0
- package/client/components/contents/sites/Delete.d.ts +2 -0
- package/client/components/contents/sites/Delete.d.ts.map +1 -0
- package/client/components/contents/sites/Delete.js +125 -0
- package/client/components/contents/sites/Edit.d.ts +2 -0
- package/client/components/contents/sites/Edit.d.ts.map +1 -0
- package/client/components/contents/sites/Edit.js +120 -0
- package/client/components/contents/sites/List.d.ts +2 -0
- package/client/components/contents/sites/List.d.ts.map +1 -0
- package/client/components/contents/sites/List.js +33 -0
- package/client/components/contents/sites/index.d.ts +7 -0
- package/client/components/contents/sites/index.d.ts.map +1 -0
- package/client/components/contents/sites/index.js +10 -0
- package/client/components/contents/terms/List/ActionLink.d.ts +5 -0
- package/client/components/contents/terms/List/ActionLink.d.ts.map +1 -0
- package/client/components/contents/terms/List/ActionLink.js +44 -0
- package/client/components/contents/terms/List/Toolbar.d.ts +8 -0
- package/client/components/contents/terms/List/Toolbar.d.ts.map +1 -0
- package/client/components/contents/terms/List/Toolbar.js +20 -0
- package/client/components/contents/terms/List/index.d.ts +18 -0
- package/client/components/contents/terms/List/index.d.ts.map +1 -0
- package/client/components/contents/terms/List/index.js +94 -0
- package/client/components/contents/terms/index.d.ts +2 -0
- package/client/components/contents/terms/index.d.ts.map +1 -0
- package/client/components/contents/terms/index.js +1 -0
- package/client/components/contents/users/Create.d.ts +2 -0
- package/client/components/contents/users/Create.d.ts.map +1 -0
- package/client/components/contents/users/Create.js +47 -0
- package/client/components/contents/users/Delete.d.ts +2 -0
- package/client/components/contents/users/Delete.d.ts.map +1 -0
- package/client/components/contents/users/Delete.js +113 -0
- package/client/components/contents/users/Edit/Profile/GenerateResetLinkModal.d.ts +6 -0
- package/client/components/contents/users/Edit/Profile/GenerateResetLinkModal.d.ts.map +1 -0
- package/client/components/contents/users/Edit/Profile/GenerateResetLinkModal.js +40 -0
- package/client/components/contents/users/Edit/Profile/ResetPasswordModal.d.ts +6 -0
- package/client/components/contents/users/Edit/Profile/ResetPasswordModal.d.ts.map +1 -0
- package/client/components/contents/users/Edit/Profile/ResetPasswordModal.js +41 -0
- package/client/components/contents/users/Edit/Profile/index.d.ts +4 -0
- package/client/components/contents/users/Edit/Profile/index.d.ts.map +1 -0
- package/client/components/contents/users/Edit/Profile/index.js +111 -0
- package/client/components/contents/users/Edit/Roles/ActionLink.d.ts +6 -0
- package/client/components/contents/users/Edit/Roles/ActionLink.d.ts.map +1 -0
- package/client/components/contents/users/Edit/Roles/ActionLink.js +63 -0
- package/client/components/contents/users/Edit/Roles/Add.d.ts +5 -0
- package/client/components/contents/users/Edit/Roles/Add.d.ts.map +1 -0
- package/client/components/contents/users/Edit/Roles/Add.js +60 -0
- package/client/components/contents/users/Edit/Roles/Edit.d.ts +8 -0
- package/client/components/contents/users/Edit/Roles/Edit.d.ts.map +1 -0
- package/client/components/contents/users/Edit/Roles/Edit.js +53 -0
- package/client/components/contents/users/Edit/Roles/Roles.d.ts +4 -0
- package/client/components/contents/users/Edit/Roles/Roles.d.ts.map +1 -0
- package/client/components/contents/users/Edit/Roles/Roles.js +41 -0
- package/client/components/contents/users/Edit/Roles/context.d.ts +9 -0
- package/client/components/contents/users/Edit/Roles/context.d.ts.map +1 -0
- package/client/components/contents/users/Edit/Roles/context.js +2 -0
- package/client/components/contents/users/Edit/Roles/index.d.ts +3 -0
- package/client/components/contents/users/Edit/Roles/index.d.ts.map +1 -0
- package/client/components/contents/users/Edit/Roles/index.js +2 -0
- package/client/components/contents/users/Edit/index.d.ts +4 -0
- package/client/components/contents/users/Edit/index.d.ts.map +1 -0
- package/client/components/contents/users/Edit/index.js +66 -0
- package/client/components/contents/users/List/CountRoles.d.ts +2 -0
- package/client/components/contents/users/List/CountRoles.d.ts.map +1 -0
- package/client/components/contents/users/List/CountRoles.js +68 -0
- package/client/components/contents/users/List/Toolbar.d.ts +10 -0
- package/client/components/contents/users/List/Toolbar.d.ts.map +1 -0
- package/client/components/contents/users/List/Toolbar.js +32 -0
- package/client/components/contents/users/List/index.d.ts +2 -0
- package/client/components/contents/users/List/index.d.ts.map +1 -0
- package/client/components/contents/users/List/index.js +30 -0
- package/client/components/contents/users/index.d.ts +9 -0
- package/client/components/contents/users/index.d.ts.map +1 -0
- package/client/components/contents/users/index.js +10 -0
- package/client/components/layout/Layout.d.ts +3 -0
- package/client/components/layout/Layout.d.ts.map +1 -0
- package/client/components/layout/Layout.js +69 -0
- package/client/components/layout/Main.d.ts +2 -0
- package/client/components/layout/Main.d.ts.map +1 -0
- package/client/components/layout/Main.js +12 -0
- package/client/components/layout/Overlay.d.ts +2 -0
- package/client/components/layout/Overlay.d.ts.map +1 -0
- package/client/components/layout/Overlay.js +49 -0
- package/client/components/layout/Title.d.ts +2 -0
- package/client/components/layout/Title.d.ts.map +1 -0
- package/client/components/layout/Title.js +19 -0
- package/client/components/layout/WrapperLayout.d.ts +2 -0
- package/client/components/layout/WrapperLayout.d.ts.map +1 -0
- package/client/components/layout/WrapperLayout.js +5 -0
- package/client/components/layout/header/Profile.d.ts +2 -0
- package/client/components/layout/header/Profile.d.ts.map +1 -0
- package/client/components/layout/header/Profile.js +66 -0
- package/client/components/layout/header/index.d.ts +2 -0
- package/client/components/layout/header/index.d.ts.map +1 -0
- package/client/components/layout/header/index.js +176 -0
- package/client/components/layout/sidebar/Collapse.d.ts +4 -0
- package/client/components/layout/sidebar/Collapse.d.ts.map +1 -0
- package/client/components/layout/sidebar/Collapse.js +53 -0
- package/client/components/layout/sidebar/Menus.d.ts +5 -0
- package/client/components/layout/sidebar/Menus.d.ts.map +1 -0
- package/client/components/layout/sidebar/Menus.js +76 -0
- package/client/components/layout/sidebar/index.d.ts +2 -0
- package/client/components/layout/sidebar/index.d.ts.map +1 -0
- package/client/components/layout/sidebar/index.js +86 -0
- package/client/components/utils/ErrorFallback.d.ts +6 -0
- package/client/components/utils/ErrorFallback.d.ts.map +1 -0
- package/client/components/utils/ErrorFallback.js +36 -0
- package/client/components/utils/dropdown/SelectWPAvailableSite.d.ts +7 -0
- package/client/components/utils/dropdown/SelectWPAvailableSite.d.ts.map +1 -0
- package/client/components/utils/dropdown/SelectWPAvailableSite.js +58 -0
- package/client/components/utils/dropdown/SelectWPSite.d.ts +5 -0
- package/client/components/utils/dropdown/SelectWPSite.d.ts.map +1 -0
- package/client/components/utils/dropdown/SelectWPSite.js +27 -0
- package/client/components/utils/dropdown/index.d.ts +2 -0
- package/client/components/utils/dropdown/index.d.ts.map +1 -0
- package/client/components/utils/dropdown/index.js +1 -0
- package/client/components/utils/index.d.ts +2 -0
- package/client/components/utils/index.d.ts.map +1 -0
- package/client/components/utils/index.js +1 -0
- package/client/components/utils/link/AdminLink.d.ts +46 -0
- package/client/components/utils/link/AdminLink.d.ts.map +1 -0
- package/client/components/utils/link/AdminLink.js +61 -0
- package/client/components/utils/link/index.d.ts +2 -0
- package/client/components/utils/link/index.d.ts.map +1 -0
- package/client/components/utils/link/index.js +2 -0
- package/client/components/utils/modal/CommentModal.d.ts +2 -0
- package/client/components/utils/modal/CommentModal.d.ts.map +1 -0
- package/client/components/utils/modal/CommentModal.js +53 -0
- package/client/components/utils/modal/TermModal.d.ts +10 -0
- package/client/components/utils/modal/TermModal.d.ts.map +1 -0
- package/client/components/utils/modal/TermModal.js +70 -0
- package/client/components/utils/modal/index.d.ts +3 -0
- package/client/components/utils/modal/index.d.ts.map +1 -0
- package/client/components/utils/modal/index.js +2 -0
- package/client/components/utils/post/PostPanel.d.ts +15 -0
- package/client/components/utils/post/PostPanel.d.ts.map +1 -0
- package/client/components/utils/post/PostPanel.js +70 -0
- package/client/components/utils/post/index.d.ts +4 -0
- package/client/components/utils/post/index.d.ts.map +1 -0
- package/client/components/utils/post/index.js +3 -0
- package/client/components/utils/post/link/PostActionLink.d.ts +9 -0
- package/client/components/utils/post/link/PostActionLink.d.ts.map +1 -0
- package/client/components/utils/post/link/PostActionLink.js +90 -0
- package/client/components/utils/post/link/PostRowLinks.d.ts +8 -0
- package/client/components/utils/post/link/PostRowLinks.d.ts.map +1 -0
- package/client/components/utils/post/link/PostRowLinks.js +30 -0
- package/client/components/utils/post/link/index.d.ts +3 -0
- package/client/components/utils/post/link/index.d.ts.map +1 -0
- package/client/components/utils/post/link/index.js +2 -0
- package/client/components/utils/post/settings/Categories.d.ts +2 -0
- package/client/components/utils/post/settings/Categories.d.ts.map +1 -0
- package/client/components/utils/post/settings/Categories.js +23 -0
- package/client/components/utils/post/settings/Discussion.d.ts +2 -0
- package/client/components/utils/post/settings/Discussion.d.ts.map +1 -0
- package/client/components/utils/post/settings/Discussion.js +25 -0
- package/client/components/utils/post/settings/Excerpt.d.ts +2 -0
- package/client/components/utils/post/settings/Excerpt.d.ts.map +1 -0
- package/client/components/utils/post/settings/Excerpt.js +9 -0
- package/client/components/utils/post/settings/FeaturedImage.d.ts +2 -0
- package/client/components/utils/post/settings/FeaturedImage.d.ts.map +1 -0
- package/client/components/utils/post/settings/FeaturedImage.js +63 -0
- package/client/components/utils/post/settings/PageAttributes.d.ts +2 -0
- package/client/components/utils/post/settings/PageAttributes.d.ts.map +1 -0
- package/client/components/utils/post/settings/PageAttributes.js +23 -0
- package/client/components/utils/post/settings/Revisions.d.ts +2 -0
- package/client/components/utils/post/settings/Revisions.d.ts.map +1 -0
- package/client/components/utils/post/settings/Revisions.js +44 -0
- package/client/components/utils/post/settings/Summary.d.ts +2 -0
- package/client/components/utils/post/settings/Summary.d.ts.map +1 -0
- package/client/components/utils/post/settings/Summary.js +58 -0
- package/client/components/utils/post/settings/Tags.d.ts +2 -0
- package/client/components/utils/post/settings/Tags.d.ts.map +1 -0
- package/client/components/utils/post/settings/Tags.js +11 -0
- package/client/components/utils/post/settings/index.d.ts +9 -0
- package/client/components/utils/post/settings/index.d.ts.map +1 -0
- package/client/components/utils/post/settings/index.js +8 -0
- package/client/hooks/index.d.ts +6 -0
- package/client/hooks/index.d.ts.map +1 -0
- package/client/hooks/index.js +5 -0
- package/client/hooks/use-admin-navigation.d.ts +39 -0
- package/client/hooks/use-admin-navigation.d.ts.map +1 -0
- package/client/hooks/use-admin-navigation.js +61 -0
- package/client/hooks/use-admin-server-actions.d.ts +49 -0
- package/client/hooks/use-admin-server-actions.d.ts.map +1 -0
- package/client/hooks/use-admin-server-actions.js +13 -0
- package/client/hooks/use-admin-user.d.ts +130 -0
- package/client/hooks/use-admin-user.d.ts.map +1 -0
- package/client/hooks/use-admin-user.js +19 -0
- package/client/hooks/use-current-menu.d.ts +3 -0
- package/client/hooks/use-current-menu.d.ts.map +1 -0
- package/client/hooks/use-current-menu.js +37 -0
- package/client/hooks/use-sidebar.d.ts +27 -0
- package/client/hooks/use-sidebar.d.ts.map +1 -0
- package/client/hooks/use-sidebar.js +51 -0
- package/client/hooks/use-sites.d.ts +136 -0
- package/client/hooks/use-sites.d.ts.map +1 -0
- package/client/hooks/use-sites.js +43 -0
- package/client/utils/get-default-admin-hooks.d.ts +3 -0
- package/client/utils/get-default-admin-hooks.d.ts.map +1 -0
- package/client/utils/get-default-admin-hooks.js +3 -0
- package/client/utils/index.d.ts +2 -0
- package/client/utils/index.d.ts.map +1 -0
- package/client/utils/index.js +1 -0
- package/client/wp-admin/initial-global-state.d.ts +5 -0
- package/client/wp-admin/initial-global-state.d.ts.map +1 -0
- package/client/wp-admin/initial-global-state.js +46 -0
- package/client/wp-admin/use-comment.d.ts +55 -0
- package/client/wp-admin/use-comment.d.ts.map +1 -0
- package/client/wp-admin/use-comment.js +32 -0
- package/client/wp-admin/use-overlay.d.ts +28 -0
- package/client/wp-admin/use-overlay.d.ts.map +1 -0
- package/client/wp-admin/use-overlay.js +89 -0
- package/client/wp-admin.d.ts +27 -0
- package/client/wp-admin.d.ts.map +1 -0
- package/client/wp-admin.js +49 -0
- package/client/wp-hooks/index.d.ts +5 -0
- package/client/wp-hooks/index.d.ts.map +1 -0
- package/client/wp-hooks/index.js +5 -0
- package/client/wp-hooks/menu-blog.hook.d.ts +11 -0
- package/client/wp-hooks/menu-blog.hook.d.ts.map +1 -0
- package/client/wp-hooks/menu-blog.hook.js +236 -0
- package/client/wp-hooks/menu-site.hook.d.ts +11 -0
- package/client/wp-hooks/menu-site.hook.d.ts.map +1 -0
- package/client/wp-hooks/menu-site.hook.js +171 -0
- package/client/wp-hooks/preload-modal.hook.d.ts +10 -0
- package/client/wp-hooks/preload-modal.hook.d.ts.map +1 -0
- package/client/wp-hooks/preload-modal.hook.js +45 -0
- package/client/wp-hooks/themes.hook.d.ts +9 -0
- package/client/wp-hooks/themes.hook.d.ts.map +1 -0
- package/client/wp-hooks/themes.hook.js +32 -0
- package/package.json +64 -0
- package/server/actions/dashboard.d.ts +141 -0
- package/server/actions/dashboard.d.ts.map +1 -0
- package/server/actions/dashboard.js +52 -0
- package/server/components/Page.d.ts +2 -0
- package/server/components/Page.d.ts.map +1 -0
- package/server/components/Page.js +3 -0
- package/server/components/RootLayout.d.ts +5 -0
- package/server/components/RootLayout.d.ts.map +1 -0
- package/server/components/RootLayout.js +57 -0
- package/server/components/RootPage.d.ts +2 -0
- package/server/components/RootPage.d.ts.map +1 -0
- package/server/components/RootPage.js +19 -0
- package/server/utils/get-default-admin-hooks.d.ts +3 -0
- package/server/utils/get-default-admin-hooks.d.ts.map +1 -0
- package/server/utils/get-default-admin-hooks.js +4 -0
- package/server/utils/index.d.ts +2 -0
- package/server/utils/index.d.ts.map +1 -0
- package/server/utils/index.js +1 -0
- package/server/wp-admin.d.ts +40 -0
- package/server/wp-admin.d.ts.map +1 -0
- package/server/wp-admin.js +58 -0
- package/server/wp-hooks/index.d.ts +3 -0
- package/server/wp-hooks/index.d.ts.map +1 -0
- package/server/wp-hooks/index.js +3 -0
- package/server/wp-hooks/next-admin-init.hook.d.ts +15 -0
- package/server/wp-hooks/next-admin-init.hook.d.ts.map +1 -0
- package/server/wp-hooks/next-admin-init.hook.js +65 -0
- package/types/client/form-data.d.ts +27 -0
- package/types/client/global-ref.d.ts +7 -0
- package/types/client/global-state.d.ts +78 -0
- package/types/client/index.d.ts +5 -0
- package/types/client/menus.d.ts +39 -0
- package/types/client.d.ts +40 -0
- package/types/hooks/actions.d.ts +4 -0
- package/types/hooks/filters.d.ts +39 -0
- package/types/hooks/index.d.ts +2 -0
- package/types/index.d.ts +4 -0
- package/types/server-actions.d.ts +21 -0
- package/types/theme.d.ts +33 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type * as wpTypes from "@rnaga/wp-node/types";
|
|
2
|
+
export type EditState = undefined | {
|
|
3
|
+
role: wpTypes.Role | undefined;
|
|
4
|
+
roleName: string | undefined;
|
|
5
|
+
};
|
|
6
|
+
export declare const List: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/client/components/contents/roles/List/index.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAGrD,MAAM,MAAM,SAAS,GACjB,SAAS,GACT;IACE,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEN,eAAO,MAAM,IAAI,+CAwNhB,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState, useTransition } from "react";
|
|
3
|
+
import { Box, Stack } from "@mui/material";
|
|
4
|
+
import { useServerActions } from "@rnaga/wp-next-core/client/hooks/use-server-actions";
|
|
5
|
+
import { Button } from "@rnaga/wp-next-ui/Button";
|
|
6
|
+
import { ActionTd, Table, Td, Th, THead, Tr } from "@rnaga/wp-next-ui/list";
|
|
7
|
+
import { Loading } from "@rnaga/wp-next-ui/Loading";
|
|
8
|
+
import { Select } from "@rnaga/wp-next-ui/Select";
|
|
9
|
+
import { Typography } from "@rnaga/wp-next-ui/Typography";
|
|
10
|
+
import * as wpDefaults from "@rnaga/wp-node/defaults";
|
|
11
|
+
import { AdminLink } from "../../../../components/utils/link";
|
|
12
|
+
import { useAdminNavigation, useSites } from "../../../../hooks/";
|
|
13
|
+
import { useWPAdmin } from "../../../../wp-admin";
|
|
14
|
+
import { EditModal } from "./EditModal";
|
|
15
|
+
export const List = () => {
|
|
16
|
+
const defaultRoleNames = Object.keys(wpDefaults.roles);
|
|
17
|
+
const { site, overlay } = useWPAdmin();
|
|
18
|
+
const { actions, safeParse, parse } = useServerActions();
|
|
19
|
+
const { queryObject, pushRouter } = useAdminNavigation();
|
|
20
|
+
const { sites: availableSites, blogs: availableBlogs, updateSites, } = useSites();
|
|
21
|
+
const [loading, startTransition] = useTransition();
|
|
22
|
+
const [state, setState] = useState({
|
|
23
|
+
openEditModal: false,
|
|
24
|
+
edit: undefined,
|
|
25
|
+
selectedBlog: undefined,
|
|
26
|
+
selectedRoleName: undefined,
|
|
27
|
+
roleCount: undefined,
|
|
28
|
+
});
|
|
29
|
+
const blogId = parseInt(`${queryObject.blog_id}`) > 0
|
|
30
|
+
? parseInt(`${queryObject.blog_id}`)
|
|
31
|
+
: availableSites.primary_blog?.blog_id ?? site.blogId;
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (!availableBlogs || !blogId) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const blog = !site.isMultiSite
|
|
37
|
+
? availableSites.primary_blog
|
|
38
|
+
: (() => {
|
|
39
|
+
const blogs = availableBlogs.filter((blog) => blog?.blog_id == queryObject.blog_id);
|
|
40
|
+
return 0 >= blogs.length ? availableBlogs[0] : blogs[0];
|
|
41
|
+
})();
|
|
42
|
+
startTransition(async () => {
|
|
43
|
+
const [roleCount] = await actions.roles
|
|
44
|
+
.count({ blog_id: blogId })
|
|
45
|
+
.then(parse);
|
|
46
|
+
setState({
|
|
47
|
+
...state,
|
|
48
|
+
selectedBlog: blog,
|
|
49
|
+
roleCount,
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}, [availableBlogs, queryObject.blog_id]);
|
|
53
|
+
const roles = Object.entries(state?.selectedBlog?.blog_roles || {}).filter(([roleName]) => !["anonymous", "superadmin"].includes(roleName));
|
|
54
|
+
const handleSetState = (newState) => () => {
|
|
55
|
+
setState({ ...state, ...newState });
|
|
56
|
+
};
|
|
57
|
+
const handleEdit = (roleName, role) => {
|
|
58
|
+
setState({
|
|
59
|
+
...state,
|
|
60
|
+
openEditModal: true,
|
|
61
|
+
edit: {
|
|
62
|
+
role,
|
|
63
|
+
roleName,
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
const handleDelete = (roleName, role) => {
|
|
68
|
+
overlay.confirm.open(`You are about to delete the ${role.name} role. This action cannot be undone`, async (confirm) => {
|
|
69
|
+
if (!confirm)
|
|
70
|
+
return;
|
|
71
|
+
const result = await actions.roles
|
|
72
|
+
.del(roleName, { blogId })
|
|
73
|
+
.then(safeParse);
|
|
74
|
+
if (!result.success) {
|
|
75
|
+
overlay.snackbar.open("error", result.error);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
overlay.snackbar.open("success", "Role has been deleted");
|
|
79
|
+
await updateSites();
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
const handleClickAddNewRole = () => {
|
|
83
|
+
blogId &&
|
|
84
|
+
setState({
|
|
85
|
+
...state,
|
|
86
|
+
openEditModal: true,
|
|
87
|
+
edit: {
|
|
88
|
+
role: undefined,
|
|
89
|
+
roleName: undefined,
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
const handleSelectBlog = (blogId) => {
|
|
94
|
+
pushRouter({
|
|
95
|
+
blog_id: blogId,
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
const showBlogDropdown = site.isMultiSite && availableBlogs && availableBlogs?.length > 0;
|
|
99
|
+
return (_jsxs(_Fragment, { children: [_jsx(EditModal, { open: state.openEditModal, editState: state.edit, blogId: blogId, onClose: handleSetState({ openEditModal: false, edit: undefined }) }), showBlogDropdown && (_jsx(Box, { sx: { display: "flex", mb: 2 }, children: _jsx(Select, { size: "medium", sx: { maxWidth: 400 }, enum: [
|
|
100
|
+
...availableBlogs.map((blog) => ({
|
|
101
|
+
label: blog?.blogname || "Unknown",
|
|
102
|
+
value: `${blog?.blog_id || 0}`,
|
|
103
|
+
})),
|
|
104
|
+
], value: `${blogId}`, onChange: (value) => {
|
|
105
|
+
handleSelectBlog(parseInt(value));
|
|
106
|
+
} }) })), _jsx(Loading, { loading: loading, children: _jsxs(Stack, { spacing: 1, children: [_jsxs(Table, { children: [_jsxs(THead, { children: [_jsx(Th, { children: "Name" }), _jsx(Th, { children: "Role" }), _jsx(Th, { children: "Capabilities" }), _jsx(Th, { children: "Users" })] }), _jsx("tbody", { children: roles.map(([roleName, role]) => (_jsxs(Tr, { children: [defaultRoleNames.includes(roleName) ? (_jsx(Td, { style: {
|
|
107
|
+
paddingLeft: 10,
|
|
108
|
+
paddingTop: 5,
|
|
109
|
+
paddingBottom: 5,
|
|
110
|
+
}, children: _jsx(Typography, { size: "medium", bold: true, children: role.name }) })) : (_jsxs(ActionTd, { children: [_jsx(Typography, { size: "medium", bold: true, children: role.name }), _jsxs(Typography, { children: [_jsx(AdminLink, { onClick: () => handleEdit(roleName, role), children: "Edit" }), " ", _jsx(AdminLink, { color: "error", onClick: () => handleDelete(roleName, role), children: "Delete" })] })] })), _jsx(Td, { children: _jsx(Typography, { children: roleName }) }), _jsx(Td, { children: role.capabilities.length }), _jsx(Td, { children: state?.roleCount?.[roleName] ?? 0 })] }, role.name))) })] }), _jsx(Box, { children: _jsx(Button, { size: "medium", onClick: handleClickAddNewRole, children: "Add New Role" }) })] }) })] }));
|
|
111
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/roles/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { List as Roles } from "./List";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/settings/index.tsx"],"names":[],"mappings":"AAoBA,eAAO,MAAM,QAAQ,sDAwLpB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import moment from "moment-timezone";
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
import { Box, Stack } from "@mui/material";
|
|
5
|
+
import { useServerActions } from "@rnaga/wp-next-core/client/hooks/use-server-actions";
|
|
6
|
+
import { Button } from "@rnaga/wp-next-ui/Button";
|
|
7
|
+
import { Checkbox } from "@rnaga/wp-next-ui/Checkbox";
|
|
8
|
+
import { FormControl, FormLabel } from "@rnaga/wp-next-ui/Form";
|
|
9
|
+
import { useFormData } from "@rnaga/wp-next-ui/hooks/use-form-data";
|
|
10
|
+
import { Input } from "@rnaga/wp-next-ui/Input";
|
|
11
|
+
import { InputMultiple } from "@rnaga/wp-next-ui/InputMultiple";
|
|
12
|
+
import { SelectAutocomplete } from "@rnaga/wp-next-ui/SelectAutocomplete";
|
|
13
|
+
import { SelectWPTerm } from "@rnaga/wp-next-ui/SelectWPTerm";
|
|
14
|
+
import { useAdminNavigation, useSites } from "../../../hooks";
|
|
15
|
+
import { useWPAdmin } from "../../../wp-admin";
|
|
16
|
+
export const Settings = () => {
|
|
17
|
+
const { site, overlay } = useWPAdmin();
|
|
18
|
+
const { refresh } = useAdminNavigation();
|
|
19
|
+
const { actions, safeParse, parse } = useServerActions();
|
|
20
|
+
const { updateSites } = useSites();
|
|
21
|
+
const { setFormData, formData, submit, setFormReady, formReady } = useFormData("options");
|
|
22
|
+
const [options, setOptions] = useState();
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
(async () => {
|
|
25
|
+
const [options] = await overlay.circular
|
|
26
|
+
.promise(actions.options.getAll())
|
|
27
|
+
.then(parse);
|
|
28
|
+
setOptions(options);
|
|
29
|
+
setFormReady(true);
|
|
30
|
+
})();
|
|
31
|
+
}, []);
|
|
32
|
+
const handleSubmit = async (data) => {
|
|
33
|
+
const result = await overlay.circular
|
|
34
|
+
.promise(actions.options.update(data))
|
|
35
|
+
.then(safeParse);
|
|
36
|
+
if (!result.success) {
|
|
37
|
+
overlay.snackbar.open("error", result.error);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
overlay.snackbar.open("success", "Settings have been updated");
|
|
41
|
+
updateSites();
|
|
42
|
+
refresh(["header"]);
|
|
43
|
+
};
|
|
44
|
+
const handleCheckbox = (name) => (e) => {
|
|
45
|
+
setFormData({ [name]: e.target.checked ? 1 : 0 });
|
|
46
|
+
};
|
|
47
|
+
if (!options || !formReady)
|
|
48
|
+
return null;
|
|
49
|
+
return (_jsx(Box, { sx: { pb: 10 }, children: _jsxs("form", { onSubmit: submit(handleSubmit), children: [_jsx(Box, { sx: {
|
|
50
|
+
display: "flex",
|
|
51
|
+
justifyContent: "flex-end",
|
|
52
|
+
gap: 1.5,
|
|
53
|
+
}, children: _jsx(Button, { size: "medium", type: "submit", children: "Save" }) }), _jsxs(Stack, { spacing: 2, sx: { rowGap: 1, display: "flex" }, children: [_jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Blog Name" }), _jsx(Input, { size: "large", name: "blogname", value: options.blogname, placeholder: "Blog Name" })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Blog Description" }), _jsx(Input, { size: "large", name: "blogdescription", value: options.blogdescription, placeholder: "Blog Description" })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Administration Email Address" }), _jsx(Input, { size: "large", name: "admin_email", value: options.admin_email, placeholder: "Administration Email Address" })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Timezone" }), _jsx(SelectAutocomplete, { size: "medium", onChange: (value) => {
|
|
54
|
+
setFormData({ timezone_string: value });
|
|
55
|
+
}, value: options.timezone_string || "Etc/UTC", items: moment.tz.names().map((name) => ({
|
|
56
|
+
label: name,
|
|
57
|
+
value: name,
|
|
58
|
+
})), disableClearable: true })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Default Post Category" }), _jsx(SelectWPTerm, { size: "medium", taxonomy: "category", defaultValue: options.default_category, onChange: (term) => setFormData({ default_category: term.term_id }) })] }), !site.isMultiSite && (_jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Membership" }), _jsx(Checkbox, { size: "medium", defaultChecked: options.users_can_register == "1", onChange: handleCheckbox("users_can_register"), label: "Anyone can register" })] })), _jsxs(Stack, { spacing: 1.5, children: [_jsx(FormLabel, { children: "Comments Settings" }), _jsx(Checkbox, { size: "medium", defaultChecked: options.require_name_email == "1", onChange: handleCheckbox("require_name_email"), label: "Comment author must fill out name and email" }), _jsx(Checkbox, { size: "medium", value: 1, name: "comment_registration", defaultChecked: options.comment_registration == "1", onChange: (e) => console.log(e.target.checked), label: "Users must be registered and logged in to comment" }), _jsx(Checkbox, { size: "medium", value: 1, defaultChecked: options.comment_moderation == "1", onChange: handleCheckbox("comment_moderation"), label: "Comment must be manually approved" }), _jsx(Checkbox, { size: "medium", value: 1, defaultChecked: options.comment_previously_approved == "1", onChange: handleCheckbox("comment_previously_approved"), label: "Comment author must have a previously approved comment" }), _jsx(FormLabel, { children: "Comment Moderation" }), _jsx(InputMultiple, { size: "medium", onChange: (value) => {
|
|
59
|
+
setFormData({ moderation_keys: value.join("\n") });
|
|
60
|
+
}, value: 0 >= options?.moderation_keys.length
|
|
61
|
+
? undefined
|
|
62
|
+
: options?.moderation_keys.split("\n") }), _jsx(FormLabel, { children: "Disallowed Comment Keys" }), _jsx(InputMultiple, { size: "medium", onChange: (value) => {
|
|
63
|
+
setFormData({ disallowed_keys: value.join("\n") });
|
|
64
|
+
}, value: 0 >= options?.disallowed_keys.length
|
|
65
|
+
? undefined
|
|
66
|
+
: options?.disallowed_keys.split("\n") })] })] })] }) }));
|
|
67
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Create.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/sites/Create.tsx"],"names":[],"mappings":"AAgBA,eAAO,MAAM,MAAM,+CAsFlB,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { Stack } from "@mui/material";
|
|
4
|
+
import { useServerActions } from "@rnaga/wp-next-core/client/hooks/use-server-actions";
|
|
5
|
+
import { Button } from "@rnaga/wp-next-ui/Button";
|
|
6
|
+
import { FormControl, FormLabel } from "@rnaga/wp-next-ui/Form";
|
|
7
|
+
import { useFormData } from "@rnaga/wp-next-ui/hooks/use-form-data";
|
|
8
|
+
import { Input } from "@rnaga/wp-next-ui/Input";
|
|
9
|
+
import { Modal, ModalContent } from "@rnaga/wp-next-ui/Modal";
|
|
10
|
+
import { Typography } from "@rnaga/wp-next-ui/Typography";
|
|
11
|
+
import { useAdminNavigation, useSites } from "../../../hooks";
|
|
12
|
+
import { useWPAdmin } from "../../../wp-admin";
|
|
13
|
+
export const Create = () => {
|
|
14
|
+
const wpAdmin = useWPAdmin();
|
|
15
|
+
const { updateSites } = useSites();
|
|
16
|
+
const { wp: { viewport, globalState: { get: globalStateGet, set: globalStateSet }, }, overlay, } = wpAdmin;
|
|
17
|
+
const { formData, submit, validation } = useFormData("site-create");
|
|
18
|
+
const { actions, safeParse } = useServerActions();
|
|
19
|
+
const [loading, setLoading] = useState(false);
|
|
20
|
+
const open = globalStateGet("site-create-site-modal").open;
|
|
21
|
+
const { gotoPath } = useAdminNavigation();
|
|
22
|
+
const validate = (data) => {
|
|
23
|
+
if (data.path.length > 0 && !/^\//.test(data.path)) {
|
|
24
|
+
return [false, "Invalid path"];
|
|
25
|
+
}
|
|
26
|
+
return true;
|
|
27
|
+
};
|
|
28
|
+
const handleSubmit = async (data) => {
|
|
29
|
+
setLoading(true);
|
|
30
|
+
const result = await actions.site.create(data).then(safeParse);
|
|
31
|
+
if (!result.success) {
|
|
32
|
+
overlay.snackbar.open("error", result.error);
|
|
33
|
+
setLoading(false);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (await updateSites()) {
|
|
37
|
+
globalStateSet("site-create-site-modal", { open: false });
|
|
38
|
+
gotoPath("/sites/edit", {
|
|
39
|
+
segment: "site",
|
|
40
|
+
queryParams: {
|
|
41
|
+
id: result.data.siteId,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
setLoading(false);
|
|
46
|
+
};
|
|
47
|
+
const handleClose = () => {
|
|
48
|
+
globalStateSet("site-create-site-modal", { open: false });
|
|
49
|
+
};
|
|
50
|
+
return (_jsx(Modal, { open: open, onClose: handleClose, sx: { zIndex: 2 }, children: _jsxs(ModalContent, { sx: {
|
|
51
|
+
minWidth: 350,
|
|
52
|
+
}, children: [_jsx(Typography, { size: "large", bold: true, sx: { mb: 2 }, children: "New Site" }), _jsx(Typography, { color: "error", children: validation?.error }), _jsx("form", { onSubmit: submit(handleSubmit, validate), children: _jsxs(Stack, { spacing: 2, children: [_jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Domain" }), _jsx(Input, { size: "medium", name: "domain", required: true })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Path " }), _jsx(Input, { size: "medium", name: "path", value: "/", required: true })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Site Name" }), _jsx(Input, { size: "medium", name: "siteName", required: true })] }), _jsx(Button, { size: "medium", type: "submit", loading: loading, children: "Submit" })] }) })] }) }));
|
|
53
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Delete.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/sites/Delete.tsx"],"names":[],"mappings":"AAwBA,eAAO,MAAM,MAAM,sDAmOlB,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { Alert, Box, List, ListItem, ListItemText, Radio, RadioGroup, Stack, } from "@mui/material";
|
|
5
|
+
import { useServerActions } from "@rnaga/wp-next-core/client/hooks/use-server-actions";
|
|
6
|
+
import { Button } from "@rnaga/wp-next-ui/Button";
|
|
7
|
+
import { useFormData } from "@rnaga/wp-next-ui/hooks/use-form-data";
|
|
8
|
+
import { SelectAutocomplete } from "@rnaga/wp-next-ui/SelectAutocomplete";
|
|
9
|
+
import { useWPTheme } from "@rnaga/wp-next-ui/ThemeRegistry";
|
|
10
|
+
import { Typography } from "@rnaga/wp-next-ui/Typography";
|
|
11
|
+
import { useAdminNavigation, useSites } from "../../../hooks";
|
|
12
|
+
import { useWPAdmin } from "../../../wp-admin";
|
|
13
|
+
export const Delete = () => {
|
|
14
|
+
const { searchParams, gotoPath } = useAdminNavigation();
|
|
15
|
+
const wpContext = useWPAdmin();
|
|
16
|
+
const { wp: { error }, overlay, } = wpContext;
|
|
17
|
+
const { sites: availableSites } = useSites();
|
|
18
|
+
const { wpTheme } = useWPTheme();
|
|
19
|
+
const { formData, setFormData, submit } = useFormData("site-delete", {
|
|
20
|
+
initialValue: {
|
|
21
|
+
deleteAll: true,
|
|
22
|
+
newSiteId: 1,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
const { actions, safeParse, parse } = useServerActions();
|
|
26
|
+
const [blogs, setBlogs] = useState();
|
|
27
|
+
const [site, setSite] = useState();
|
|
28
|
+
const [otherSites, setOtherSites] = useState([]);
|
|
29
|
+
const siteId = z
|
|
30
|
+
.string()
|
|
31
|
+
.transform((v) => parseInt(v))
|
|
32
|
+
.parse(searchParams.get("id"));
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
if (1 >= siteId) {
|
|
35
|
+
error.throw("Invalid site id");
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (!availableSites.sites?.some((site) => site.site_id == siteId && site.is_superadmin)) {
|
|
39
|
+
error.throw("Not permitted");
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const otherSites = availableSites.sites?.filter((site) => site.site_id !== siteId);
|
|
43
|
+
if (!otherSites) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
setOtherSites(otherSites);
|
|
47
|
+
const fetchData = async () => {
|
|
48
|
+
const resultBlogs = await actions.blog
|
|
49
|
+
.list({
|
|
50
|
+
site: [siteId],
|
|
51
|
+
per_page: 999,
|
|
52
|
+
})
|
|
53
|
+
.then(safeParse);
|
|
54
|
+
if (!resultBlogs.success) {
|
|
55
|
+
error.throw(resultBlogs.error);
|
|
56
|
+
}
|
|
57
|
+
const resultSite = await actions.site.get(siteId).then(safeParse);
|
|
58
|
+
if (!resultSite.success) {
|
|
59
|
+
error.throw(resultSite.error);
|
|
60
|
+
}
|
|
61
|
+
return { blogs: resultBlogs.data, site: resultSite.data };
|
|
62
|
+
};
|
|
63
|
+
overlay.circular.promise(fetchData().then((data) => {
|
|
64
|
+
setBlogs(data.blogs);
|
|
65
|
+
setSite(data.site);
|
|
66
|
+
}));
|
|
67
|
+
setFormData({ newSiteId: otherSites[0].site_id });
|
|
68
|
+
}, []);
|
|
69
|
+
const handleChange = (siteId) => {
|
|
70
|
+
const newSiteId = availableSites.sites?.filter((site) => site.site_id == siteId)[0].site_id;
|
|
71
|
+
if (!newSiteId) {
|
|
72
|
+
error.throw("Unknown error - please try again");
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
setFormData({ deleteAll: false, newSiteId });
|
|
76
|
+
};
|
|
77
|
+
const handleChangeRadio = (v) => {
|
|
78
|
+
console.log(v);
|
|
79
|
+
setFormData({ deleteAll: v === "delete" });
|
|
80
|
+
};
|
|
81
|
+
const validate = (data) => {
|
|
82
|
+
if (!data.deleteAll && 1 >= data.newSiteId) {
|
|
83
|
+
error.throw("Invalid formData");
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
};
|
|
88
|
+
const handleSubmit = () => {
|
|
89
|
+
overlay.confirm.open("This action cannot be undone. This will permanently delete the site.", async (confirm) => {
|
|
90
|
+
if (!confirm) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const serverAction = formData.deleteAll
|
|
94
|
+
? actions.site.del(siteId)
|
|
95
|
+
: actions.site.del(siteId, { newSiteId: formData.newSiteId });
|
|
96
|
+
await overlay.circular.promise(serverAction).then(parse);
|
|
97
|
+
gotoPath("/sites");
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
const handleCancel = () => {
|
|
101
|
+
gotoPath("/sites/edit", {
|
|
102
|
+
queryParams: { id: siteId },
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
if (!site) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
return (_jsx("form", { onSubmit: submit(handleSubmit, validate), children: _jsxs(Stack, { children: [_jsx(Alert, { variant: "outlined", severity: "error", sx: { mb: 2 }, children: _jsxs(Typography, { component: "div", size: "medium", color: "error", bold: true, children: [_jsx("b", { children: site.site_meta?.["site_name"] }), " will be deleted."] }) }), blogs && otherSites && (_jsxs(_Fragment, { children: [_jsx(Typography, { size: "medium", children: "The following blogs are associated with this site:" }), _jsx(List, { sx: { listStyleType: "disc" }, children: blogs.map((blog) => (_jsx(ListItemText, { sx: {
|
|
109
|
+
display: "list-item",
|
|
110
|
+
ml: 4,
|
|
111
|
+
}, children: _jsx(Typography, { size: "medium", bold: true, children: blog.blog_meta.blogname ?? `${blog.domain} ${blog.path}` }) }, `${blog.blog_id}`))) }), _jsx(Typography, { children: "What should be done with these blogs?" }), _jsx(Box, { sx: {
|
|
112
|
+
border: "1px solid",
|
|
113
|
+
borderColor: wpTheme.colorScale[400],
|
|
114
|
+
borderRadius: 1,
|
|
115
|
+
}, children: _jsx(RadioGroup, { defaultValue: "delete", name: "site", onChange: (e) => handleChangeRadio(e.target.value), children: _jsxs(List, { children: [_jsxs(ListItem, { children: [_jsx(Radio, { value: "delete" }), _jsx(Typography, { size: "medium", children: "Delete all blogs." })] }), _jsxs(ListItem, { children: [_jsx(Radio, { value: "inherit" }), _jsx(Typography, { size: "medium", children: "Attribute all blogs to:" })] }), formData.deleteAll === false && (_jsx(ListItem, { sx: { pl: 7 }, children: _jsx(SelectAutocomplete, { size: "medium", onChange: (value) => {
|
|
116
|
+
handleChange(parseInt(value));
|
|
117
|
+
}, value: `${formData.newSiteId ?? 1}`, items: otherSites.map((site) => ({
|
|
118
|
+
label: site.sitename,
|
|
119
|
+
value: `${site.site_id}`,
|
|
120
|
+
})), disableClearable: true, slotProps: {
|
|
121
|
+
input: {
|
|
122
|
+
minWidth: 250,
|
|
123
|
+
},
|
|
124
|
+
} }, siteId) }))] }) }) })] })), _jsxs(Box, { sx: { display: "flex", gap: 1, mt: 2 }, children: [_jsx(Button, { size: "medium", type: "submit", children: "Confirm Deletion" }), _jsx(Button, { color: "error", onClick: handleCancel, children: "Cancel" })] })] }) }));
|
|
125
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Edit.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/sites/Edit.tsx"],"names":[],"mappings":"AAoBA,eAAO,MAAM,IAAI,sDAwOhB,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { Box, Stack } from "@mui/material";
|
|
5
|
+
import { useServerActions } from "@rnaga/wp-next-core/client/hooks/use-server-actions";
|
|
6
|
+
import { Button } from "@rnaga/wp-next-ui/Button";
|
|
7
|
+
import { Checkbox } from "@rnaga/wp-next-ui/Checkbox";
|
|
8
|
+
import { FormControl, FormLabel } from "@rnaga/wp-next-ui/Form";
|
|
9
|
+
import { useFormData } from "@rnaga/wp-next-ui/hooks/use-form-data";
|
|
10
|
+
import { IconButtonDelete } from "@rnaga/wp-next-ui/IconButtonDelete";
|
|
11
|
+
import { Input } from "@rnaga/wp-next-ui/Input";
|
|
12
|
+
import { InputMultiple } from "@rnaga/wp-next-ui/InputMultiple";
|
|
13
|
+
import { Loading } from "@rnaga/wp-next-ui/Loading";
|
|
14
|
+
import { Select } from "@rnaga/wp-next-ui/Select";
|
|
15
|
+
import { useAdminNavigation, useSites } from "../../../hooks";
|
|
16
|
+
import { useWPAdmin } from "../../../wp-admin";
|
|
17
|
+
export const Edit = () => {
|
|
18
|
+
const wpContext = useWPAdmin();
|
|
19
|
+
const { wp: { error }, overlay, } = wpContext;
|
|
20
|
+
const { formData, setFormData, submit } = useFormData("site");
|
|
21
|
+
const { actions, execute, parse, safeParse, loading } = useServerActions();
|
|
22
|
+
const { searchParams, refresh, goto, resolvePath } = useAdminNavigation();
|
|
23
|
+
const { sites: availableSites } = useSites();
|
|
24
|
+
const [site, setSite] = useState();
|
|
25
|
+
const siteMetaKeys = [
|
|
26
|
+
"site_name",
|
|
27
|
+
"admin_email",
|
|
28
|
+
"illegal_names",
|
|
29
|
+
"limited_email_domains",
|
|
30
|
+
"banned_email_domains",
|
|
31
|
+
"add_new_users",
|
|
32
|
+
"registration",
|
|
33
|
+
];
|
|
34
|
+
const siteId = z
|
|
35
|
+
.string()
|
|
36
|
+
.transform((v) => parseInt(v))
|
|
37
|
+
.parse(searchParams.get("id"));
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
if (!availableSites.sites?.some((site) => site.site_id == siteId && site.is_superadmin)) {
|
|
40
|
+
error.throw("Not permitted");
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
execute(actions.site.get(siteId)).then((response) => {
|
|
44
|
+
const [data] = parse(response);
|
|
45
|
+
setSite(data);
|
|
46
|
+
setFormData({
|
|
47
|
+
...data,
|
|
48
|
+
meta_input: siteMetaKeys.reduce((acc, key) => {
|
|
49
|
+
acc[key] = data.site_meta?.[key];
|
|
50
|
+
return acc;
|
|
51
|
+
}, {}),
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}, [siteId]);
|
|
55
|
+
const handleFormMetaChange = (key, value) => {
|
|
56
|
+
console.log("handleFormMetaChange", key, value);
|
|
57
|
+
setFormData({
|
|
58
|
+
...formData,
|
|
59
|
+
meta_input: {
|
|
60
|
+
...formData.meta_input,
|
|
61
|
+
[key]: value,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
const handleSubmit = async (data) => {
|
|
66
|
+
console.log("data", data);
|
|
67
|
+
const result = await execute(actions.site.update(siteId, data)).then(safeParse);
|
|
68
|
+
if (!result.success) {
|
|
69
|
+
overlay.snackbar.open("error", result.error);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
refresh(["main"]);
|
|
73
|
+
};
|
|
74
|
+
const handleDelete = () => {
|
|
75
|
+
goto(resolvePath("site", {
|
|
76
|
+
append: "/sites/delete",
|
|
77
|
+
queryParams: { id: siteId },
|
|
78
|
+
}));
|
|
79
|
+
};
|
|
80
|
+
const validateDomain = (value) => {
|
|
81
|
+
return /^(?!:\/\/)([a-zA-Z0-9]+\.)?[a-zA-Z0-9][a-zA-Z0-9-]+\.[a-zA-Z]{2,6}?$/.test(value)
|
|
82
|
+
? [true]
|
|
83
|
+
: [false, "Invalid domain"];
|
|
84
|
+
};
|
|
85
|
+
const validateName = (value) => {
|
|
86
|
+
return /^([a-z0-9]+)/.test(value)
|
|
87
|
+
? [true]
|
|
88
|
+
: [false, "Value can only contain lowercase letters (a-z) and numbers"];
|
|
89
|
+
};
|
|
90
|
+
useEffect(() => {
|
|
91
|
+
console.log("Edit useEffect", formData);
|
|
92
|
+
}, [formData]);
|
|
93
|
+
if (!site) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
return (_jsx(Loading, { loading: loading, children: _jsxs("form", { onSubmit: submit(handleSubmit), children: [_jsxs(Box, { sx: {
|
|
97
|
+
display: "flex",
|
|
98
|
+
justifyContent: "flex-end",
|
|
99
|
+
gap: 1.5,
|
|
100
|
+
}, children: [_jsx(Button, { size: "medium", type: "submit", children: "Save" }), siteId > 1 && (_jsx(IconButtonDelete, { title: "Delete Site", onClick: handleDelete }))] }), _jsxs(Stack, { spacing: 2, sx: { rowGap: 1, display: "flex" }, children: [_jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Site Name" }), _jsx(Input, { size: "medium", value: formData.meta_input?.["site_name"], placeholder: "Site Name", onChange: (value) => handleFormMetaChange("site_name", value) })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Site Admin Email" }), _jsx(Input, { size: "medium", value: formData.meta_input?.["admin_email"], placeholder: "Site Admin Email", onChange: (value) => handleFormMetaChange("admin_email", value) })] }), _jsxs(Box, { sx: { display: "grid", gap: 1.5, gridTemplateColumns: "1fr 1fr" }, children: [_jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Domain" }), _jsx(Input, { size: "medium", value: site.domain })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Path" }), _jsx(Input, { size: "medium", name: "path", value: site.path })] })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Add New Users" }), _jsx(Checkbox, { size: "medium", defaultChecked: site.site_meta.add_new_users == "1", onChange: (e) => {
|
|
101
|
+
console.log(e.target.checked);
|
|
102
|
+
handleFormMetaChange("add_new_users", e.target.checked ? 1 : 0);
|
|
103
|
+
}, label: "Allow administrators to add new users" })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Allow new registrations" }), _jsx(Select, { size: "medium", value: formData.meta_input?.["registration"] || "none", onChange: (value) => handleFormMetaChange("registration", value), enum: [
|
|
104
|
+
{ value: "none", label: "Registration is disabled" },
|
|
105
|
+
{ value: "user", label: "User accounts may be registered" },
|
|
106
|
+
{
|
|
107
|
+
value: "blog",
|
|
108
|
+
label: "Logged in users may register new sites",
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
value: "all",
|
|
112
|
+
label: "Both sites and user accounts can be registered",
|
|
113
|
+
},
|
|
114
|
+
] })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Banned Names" }), _jsx(InputMultiple, { onChange: (value) => handleFormMetaChange("illegal_names", value), validate: validateName, value: formData.meta_input?.["illegal_names"] || [], limitTags: 15 })] }), _jsxs(Box, { sx: { display: "grid", gap: 1.5, gridTemplateColumns: "1fr 1fr" }, children: [_jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Limited Email Registrations" }), _jsx(InputMultiple, { size: "medium", onChange: (value) => {
|
|
115
|
+
console.log("value", value);
|
|
116
|
+
handleFormMetaChange("limited_email_domains", value);
|
|
117
|
+
}, value: formData.meta_input?.["limited_email_domains"] || [], validate: validateDomain, limitTags: 5 })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Banned Email Domains" }), _jsx(InputMultiple, { size: "medium", onChange: (value) => {
|
|
118
|
+
handleFormMetaChange("banned_email_domains", value);
|
|
119
|
+
}, value: formData.meta_input?.["banned_email_domains"] || [], validate: validateDomain, limitTags: 5 })] })] })] })] }) }));
|
|
120
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/sites/List.tsx"],"names":[],"mappings":"AA0BA,eAAO,MAAM,IAAI,sDAsEhB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState, useTransition } from "react";
|
|
3
|
+
import { AccordionDetails } from "@mui/material";
|
|
4
|
+
import { useServerActions } from "@rnaga/wp-next-core/client/hooks/use-server-actions";
|
|
5
|
+
import { Accordion } from "@rnaga/wp-next-ui/Accordion";
|
|
6
|
+
import { ActionTd, ListGrid, ListGridItem, ListGridTitle, SortableTh, Table, Td, Th, THead, Tr, } from "@rnaga/wp-next-ui/list";
|
|
7
|
+
import { Loading } from "@rnaga/wp-next-ui/Loading";
|
|
8
|
+
import { Typography } from "@rnaga/wp-next-ui/Typography";
|
|
9
|
+
import { useAdminNavigation } from "../../../hooks/use-admin-navigation";
|
|
10
|
+
import { useAdminUser } from "../../../hooks/use-admin-user";
|
|
11
|
+
import { AdminLink } from "../../utils/link";
|
|
12
|
+
export const List = () => {
|
|
13
|
+
const { navigationStatus, queryObject } = useAdminNavigation();
|
|
14
|
+
const { actions, parse } = useServerActions();
|
|
15
|
+
const { adminUser } = useAdminUser();
|
|
16
|
+
const [sites, setSites] = useState();
|
|
17
|
+
const [loading, startTransition] = useTransition();
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
startTransition(async () => {
|
|
20
|
+
const [sites] = await actions.site
|
|
21
|
+
.list({ per_page: 999, ...queryObject })
|
|
22
|
+
.then(parse);
|
|
23
|
+
setSites(sites);
|
|
24
|
+
});
|
|
25
|
+
}, [navigationStatus]);
|
|
26
|
+
const canEditSite = (siteId) => {
|
|
27
|
+
return adminUser.availableSites.sites?.some((site) => site.site_id == siteId && site.is_superadmin);
|
|
28
|
+
};
|
|
29
|
+
if (!sites) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return (_jsx(Loading, { loading: loading, children: _jsxs(Table, { children: [_jsxs(THead, { children: [_jsx(SortableTh, { name: "Name", orderby: "id" }), _jsx(SortableTh, { name: "Domain", orderby: "domain", viewport: "desktop" }), _jsx(Th, { viewport: "desktop", children: "Path" })] }), _jsx("tbody", { children: sites?.map((site) => (_jsxs(Tr, { style: { paddingTop: "1em" }, children: [_jsxs(ActionTd, { children: [_jsx(Typography, { children: site.site_name }), canEditSite(site.id) && (_jsx(AdminLink, { subPage: "edit", queryParams: { id: site.id }, children: "Edit" }))] }), _jsx(Td, { viewport: "mobile", children: _jsxs(Accordion, { children: [_jsx(ListGridTitle, { title: site.site_name }), _jsxs(AccordionDetails, { children: [canEditSite(site.id) && (_jsx(AdminLink, { subPage: "edit", queryParams: { id: site.id }, children: "Edit" })), _jsxs(ListGrid, { children: [_jsx(ListGridItem, { title: "Domain", children: site.domain }), _jsx(ListGridItem, { title: "Path", children: site.path })] })] })] }) }), _jsx(Td, { viewport: "desktop", children: site.domain }), _jsx(Td, { viewport: "desktop", children: site.path })] }, `${site.id}`))) })] }) }));
|
|
33
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const Sites: {
|
|
2
|
+
Create: () => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
List: () => import("react/jsx-runtime").JSX.Element | null;
|
|
4
|
+
Edit: () => import("react/jsx-runtime").JSX.Element | null;
|
|
5
|
+
Delete: () => import("react/jsx-runtime").JSX.Element | null;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/sites/index.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK;;;;;CAKjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionLink.d.ts","sourceRoot":"","sources":["../../../../../../src/client/components/contents/terms/List/ActionLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,WAAW,MAAM,2BAA2B,CAAC;AAW9D,eAAO,MAAM,UAAU,GAAI,OAAO;IAChC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CACzC,4CAyDA,CAAC"}
|