From fd6295f27971cd173a3c93ac3db465b1830fc0e6 Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Wed, 12 Feb 2025 12:45:40 +0300 Subject: [PATCH] R: Move LibraryItem editor to proper feature --- rsconcept/frontend/src/app/GlobalDialogs.tsx | 2 +- .../components}/EditorLibraryItem.tsx | 22 ++++++++----------- .../dialogs/DlgEditEditors/DlgEditEditors.tsx | 15 ++++++++----- .../dialogs/DlgEditEditors/TableUsers.tsx | 0 .../dialogs/DlgEditEditors/index.tsx | 0 .../OssPage/EditorOssCard/EditorOssCard.tsx | 3 +-- .../EditorRSFormCard/EditorRSFormCard.tsx | 2 +- .../components}/InfoUsers.tsx | 9 ++++---- rsconcept/frontend/src/stores/dialogs.ts | 2 +- 9 files changed, 26 insertions(+), 29 deletions(-) rename rsconcept/frontend/src/features/{rsform/pages/RSFormPage/EditorRSFormCard => library/components}/EditorLibraryItem.tsx (87%) rename rsconcept/frontend/src/features/{rsform => library}/dialogs/DlgEditEditors/DlgEditEditors.tsx (82%) rename rsconcept/frontend/src/features/{rsform => library}/dialogs/DlgEditEditors/TableUsers.tsx (100%) rename rsconcept/frontend/src/features/{rsform => library}/dialogs/DlgEditEditors/index.tsx (100%) rename rsconcept/frontend/src/features/{rsform/pages/RSFormPage/EditorRSFormCard => users/components}/InfoUsers.tsx (71%) diff --git a/rsconcept/frontend/src/app/GlobalDialogs.tsx b/rsconcept/frontend/src/app/GlobalDialogs.tsx index b7d99df9..ffa6afe6 100644 --- a/rsconcept/frontend/src/app/GlobalDialogs.tsx +++ b/rsconcept/frontend/src/app/GlobalDialogs.tsx @@ -13,7 +13,7 @@ const DlgCreateVersion = React.lazy(() => import('@/features/rsform/dialogs/DlgC const DlgCstTemplate = React.lazy(() => import('@/features/rsform/dialogs/DlgCstTemplate')); const DlgDeleteCst = React.lazy(() => import('@/features/rsform/dialogs/DlgDeleteCst')); const DlgDeleteOperation = React.lazy(() => import('@/features/oss/dialogs/DlgDeleteOperation')); -const DlgEditEditors = React.lazy(() => import('@/features/rsform/dialogs/DlgEditEditors')); +const DlgEditEditors = React.lazy(() => import('@/features/library/dialogs/DlgEditEditors')); const DlgEditOperation = React.lazy(() => import('@/features/oss/dialogs/DlgEditOperation')); const DlgEditReference = React.lazy(() => import('@/features/rsform/dialogs/DlgEditReference')); const DlgEditVersions = React.lazy(() => import('@/features/rsform/dialogs/DlgEditVersions')); diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem.tsx b/rsconcept/frontend/src/features/library/components/EditorLibraryItem.tsx similarity index 87% rename from rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem.tsx rename to rsconcept/frontend/src/features/library/components/EditorLibraryItem.tsx index 80f356cd..e6a92eac 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem.tsx +++ b/rsconcept/frontend/src/features/library/components/EditorLibraryItem.tsx @@ -16,13 +16,8 @@ import { import { Loader } from '@/components/Loader'; import { CProps } from '@/components/props'; import { ValueIcon } from '@/components/View'; -import { useMutatingLibrary } from '@/features/library/backend/useMutatingLibrary'; -import { useSetEditors } from '@/features/library/backend/useSetEditors'; -import { useSetLocation } from '@/features/library/backend/useSetLocation'; -import { useSetOwner } from '@/features/library/backend/useSetOwner'; -import { ILibraryItemEditor } from '@/features/library/models/library'; -import { useLibrarySearchStore } from '@/features/library/stores/librarySearch'; import { useLabelUser } from '@/features/users/backend/useLabelUser'; +import { InfoUsers } from '@/features/users/components/InfoUsers'; import { SelectUser } from '@/features/users/components/SelectUser'; import { UserID, UserRole } from '@/features/users/models/user'; import { useDialogsStore } from '@/stores/dialogs'; @@ -31,13 +26,17 @@ import { useRoleStore } from '@/stores/role'; import { prefixes } from '@/utils/constants'; import { promptText } from '@/utils/labels'; -import InfoUsers from './InfoUsers'; +import { useMutatingLibrary } from '../backend/useMutatingLibrary'; +import { useSetLocation } from '../backend/useSetLocation'; +import { useSetOwner } from '../backend/useSetOwner'; +import { ILibraryItemEditor } from '../models/library'; +import { useLibrarySearchStore } from '../stores/librarySearch'; interface EditorLibraryItemProps { controller: ILibraryItemEditor; } -function EditorLibraryItem({ controller }: EditorLibraryItemProps) { +export function EditorLibraryItem({ controller }: EditorLibraryItemProps) { const getUserLabel = useLabelUser(); const role = useRoleStore(state => state.role); const intl = useIntl(); @@ -49,7 +48,6 @@ function EditorLibraryItem({ controller }: EditorLibraryItemProps) { const { setOwner } = useSetOwner(); const { setLocation } = useSetLocation(); - const { setEditors } = useSetEditors(); const showEditEditors = useDialogsStore(state => state.showEditEditors); const showEditLocation = useDialogsStore(state => state.showChangeLocation); @@ -80,8 +78,8 @@ function EditorLibraryItem({ controller }: EditorLibraryItemProps) { function handleEditEditors() { showEditEditors({ - editors: controller.schema.editors, - onChangeEditors: newEditors => void setEditors({ itemID: controller.schema.id, editors: newEditors }) + itemID: controller.schema.id, + initial: controller.schema.editors }); } @@ -163,5 +161,3 @@ function EditorLibraryItem({ controller }: EditorLibraryItemProps) { ); } - -export default EditorLibraryItem; diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditEditors/DlgEditEditors.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgEditEditors/DlgEditEditors.tsx similarity index 82% rename from rsconcept/frontend/src/features/rsform/dialogs/DlgEditEditors/DlgEditEditors.tsx rename to rsconcept/frontend/src/features/library/dialogs/DlgEditEditors/DlgEditEditors.tsx index 350466c0..f7807d69 100644 --- a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditEditors/DlgEditEditors.tsx +++ b/rsconcept/frontend/src/features/library/dialogs/DlgEditEditors/DlgEditEditors.tsx @@ -12,21 +12,24 @@ import { SelectUser } from '@/features/users/components/SelectUser'; import { UserID } from '@/features/users/models/user'; import { useDialogsStore } from '@/stores/dialogs'; +import { useSetEditors } from '../../backend/useSetEditors'; +import { LibraryItemID } from '../../models/library'; import TableUsers from './TableUsers'; export interface DlgEditEditorsProps { - editors: UserID[]; - onChangeEditors: (newValue: UserID[]) => void; + itemID: LibraryItemID; + initial: UserID[]; } function DlgEditEditors() { - const { editors, onChangeEditors } = useDialogsStore(state => state.props as DlgEditEditorsProps); - const [selected, setSelected] = useState(editors); + const { initial, itemID } = useDialogsStore(state => state.props as DlgEditEditorsProps); + const { setEditors } = useSetEditors(); + + const [selected, setSelected] = useState(initial); const { users } = useUsers(); function handleSubmit() { - onChangeEditors(selected); - return true; + void setEditors({ itemID: itemID, editors: selected }); } function onDeleteEditor(target: UserID) { diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditEditors/TableUsers.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgEditEditors/TableUsers.tsx similarity index 100% rename from rsconcept/frontend/src/features/rsform/dialogs/DlgEditEditors/TableUsers.tsx rename to rsconcept/frontend/src/features/library/dialogs/DlgEditEditors/TableUsers.tsx diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditEditors/index.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgEditEditors/index.tsx similarity index 100% rename from rsconcept/frontend/src/features/rsform/dialogs/DlgEditEditors/index.tsx rename to rsconcept/frontend/src/features/library/dialogs/DlgEditEditors/index.tsx diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/EditorOssCard.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/EditorOssCard.tsx index 1af4ccc8..c7b338ff 100644 --- a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/EditorOssCard.tsx +++ b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/EditorOssCard.tsx @@ -3,8 +3,7 @@ import clsx from 'clsx'; import { FlexColumn } from '@/components/Container'; -// TODO: reconsider this dependency -import EditorLibraryItem from '@/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem'; +import { EditorLibraryItem } from '@/features/library/components/EditorLibraryItem'; import ToolbarRSFormCard from '@/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarRSFormCard'; import { useModificationStore } from '@/stores/modification'; import { globals } from '@/utils/constants'; diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx index a6c0b6e3..a511af27 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx @@ -3,11 +3,11 @@ import clsx from 'clsx'; import { FlexColumn } from '@/components/Container'; +import { EditorLibraryItem } from '@/features/library/components/EditorLibraryItem'; import { useModificationStore } from '@/stores/modification'; import { globals } from '@/utils/constants'; import { useRSEdit } from '../RSEditContext'; -import EditorLibraryItem from './EditorLibraryItem'; import FormRSForm from './FormRSForm'; import RSFormStats from './RSFormStats'; import ToolbarRSFormCard from './ToolbarRSFormCard'; diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/InfoUsers.tsx b/rsconcept/frontend/src/features/users/components/InfoUsers.tsx similarity index 71% rename from rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/InfoUsers.tsx rename to rsconcept/frontend/src/features/users/components/InfoUsers.tsx index 1011fb4c..54f79d61 100644 --- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/InfoUsers.tsx +++ b/rsconcept/frontend/src/features/users/components/InfoUsers.tsx @@ -1,8 +1,9 @@ import clsx from 'clsx'; import { CProps } from '@/components/props'; -import { useLabelUser } from '@/features/users/backend/useLabelUser'; -import { UserID } from '@/features/users/models/user'; + +import { useLabelUser } from '../backend/useLabelUser'; +import { UserID } from '../models/user'; interface InfoUsersProps extends CProps.Styling { items: UserID[]; @@ -10,7 +11,7 @@ interface InfoUsersProps extends CProps.Styling { header?: string; } -function InfoUsers({ items, className, prefix, header, ...restProps }: InfoUsersProps) { +export function InfoUsers({ items, className, prefix, header, ...restProps }: InfoUsersProps) { const getUserLabel = useLabelUser(); return (
@@ -22,5 +23,3 @@ function InfoUsers({ items, className, prefix, header, ...restProps }: InfoUsers
); } - -export default InfoUsers; diff --git a/rsconcept/frontend/src/stores/dialogs.ts b/rsconcept/frontend/src/stores/dialogs.ts index 62db4701..a87ee264 100644 --- a/rsconcept/frontend/src/stores/dialogs.ts +++ b/rsconcept/frontend/src/stores/dialogs.ts @@ -1,6 +1,7 @@ import { create } from 'zustand'; import { DlgChangeLocationProps } from '@/features/library/dialogs/DlgChangeLocation'; +import { DlgEditEditorsProps } from '@/features/library/dialogs/DlgEditEditors/DlgEditEditors'; import { DlgChangeInputSchemaProps } from '@/features/oss/dialogs/DlgChangeInputSchema'; import { DlgCreateOperationProps } from '@/features/oss/dialogs/DlgCreateOperation/DlgCreateOperation'; import { DlgDeleteOperationProps } from '@/features/oss/dialogs/DlgDeleteOperation'; @@ -11,7 +12,6 @@ import { DlgCreateCstProps } from '@/features/rsform/dialogs/DlgCreateCst/DlgCre import { DlgCreateVersionProps } from '@/features/rsform/dialogs/DlgCreateVersion'; import { DlgCstTemplateProps } from '@/features/rsform/dialogs/DlgCstTemplate/DlgCstTemplate'; import { DlgDeleteCstProps } from '@/features/rsform/dialogs/DlgDeleteCst/DlgDeleteCst'; -import { DlgEditEditorsProps } from '@/features/rsform/dialogs/DlgEditEditors/DlgEditEditors'; import { DlgEditReferenceProps } from '@/features/rsform/dialogs/DlgEditReference/DlgEditReference'; import { DlgEditVersionsProps } from '@/features/rsform/dialogs/DlgEditVersions/DlgEditVersions'; import { DlgEditWordFormsProps } from '@/features/rsform/dialogs/DlgEditWordForms/DlgEditWordForms';