mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 13:00:39 +03:00
R: Move LibraryItem editor to proper feature
This commit is contained in:
parent
c9da647226
commit
fd6295f279
|
@ -13,7 +13,7 @@ const DlgCreateVersion = React.lazy(() => import('@/features/rsform/dialogs/DlgC
|
||||||
const DlgCstTemplate = React.lazy(() => import('@/features/rsform/dialogs/DlgCstTemplate'));
|
const DlgCstTemplate = React.lazy(() => import('@/features/rsform/dialogs/DlgCstTemplate'));
|
||||||
const DlgDeleteCst = React.lazy(() => import('@/features/rsform/dialogs/DlgDeleteCst'));
|
const DlgDeleteCst = React.lazy(() => import('@/features/rsform/dialogs/DlgDeleteCst'));
|
||||||
const DlgDeleteOperation = React.lazy(() => import('@/features/oss/dialogs/DlgDeleteOperation'));
|
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 DlgEditOperation = React.lazy(() => import('@/features/oss/dialogs/DlgEditOperation'));
|
||||||
const DlgEditReference = React.lazy(() => import('@/features/rsform/dialogs/DlgEditReference'));
|
const DlgEditReference = React.lazy(() => import('@/features/rsform/dialogs/DlgEditReference'));
|
||||||
const DlgEditVersions = React.lazy(() => import('@/features/rsform/dialogs/DlgEditVersions'));
|
const DlgEditVersions = React.lazy(() => import('@/features/rsform/dialogs/DlgEditVersions'));
|
||||||
|
|
|
@ -16,13 +16,8 @@ import {
|
||||||
import { Loader } from '@/components/Loader';
|
import { Loader } from '@/components/Loader';
|
||||||
import { CProps } from '@/components/props';
|
import { CProps } from '@/components/props';
|
||||||
import { ValueIcon } from '@/components/View';
|
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 { useLabelUser } from '@/features/users/backend/useLabelUser';
|
||||||
|
import { InfoUsers } from '@/features/users/components/InfoUsers';
|
||||||
import { SelectUser } from '@/features/users/components/SelectUser';
|
import { SelectUser } from '@/features/users/components/SelectUser';
|
||||||
import { UserID, UserRole } from '@/features/users/models/user';
|
import { UserID, UserRole } from '@/features/users/models/user';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
@ -31,13 +26,17 @@ import { useRoleStore } from '@/stores/role';
|
||||||
import { prefixes } from '@/utils/constants';
|
import { prefixes } from '@/utils/constants';
|
||||||
import { promptText } from '@/utils/labels';
|
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 {
|
interface EditorLibraryItemProps {
|
||||||
controller: ILibraryItemEditor;
|
controller: ILibraryItemEditor;
|
||||||
}
|
}
|
||||||
|
|
||||||
function EditorLibraryItem({ controller }: EditorLibraryItemProps) {
|
export function EditorLibraryItem({ controller }: EditorLibraryItemProps) {
|
||||||
const getUserLabel = useLabelUser();
|
const getUserLabel = useLabelUser();
|
||||||
const role = useRoleStore(state => state.role);
|
const role = useRoleStore(state => state.role);
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
@ -49,7 +48,6 @@ function EditorLibraryItem({ controller }: EditorLibraryItemProps) {
|
||||||
|
|
||||||
const { setOwner } = useSetOwner();
|
const { setOwner } = useSetOwner();
|
||||||
const { setLocation } = useSetLocation();
|
const { setLocation } = useSetLocation();
|
||||||
const { setEditors } = useSetEditors();
|
|
||||||
|
|
||||||
const showEditEditors = useDialogsStore(state => state.showEditEditors);
|
const showEditEditors = useDialogsStore(state => state.showEditEditors);
|
||||||
const showEditLocation = useDialogsStore(state => state.showChangeLocation);
|
const showEditLocation = useDialogsStore(state => state.showChangeLocation);
|
||||||
|
@ -80,8 +78,8 @@ function EditorLibraryItem({ controller }: EditorLibraryItemProps) {
|
||||||
|
|
||||||
function handleEditEditors() {
|
function handleEditEditors() {
|
||||||
showEditEditors({
|
showEditEditors({
|
||||||
editors: controller.schema.editors,
|
itemID: controller.schema.id,
|
||||||
onChangeEditors: newEditors => void setEditors({ itemID: controller.schema.id, editors: newEditors })
|
initial: controller.schema.editors
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,5 +161,3 @@ function EditorLibraryItem({ controller }: EditorLibraryItemProps) {
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default EditorLibraryItem;
|
|
|
@ -12,21 +12,24 @@ import { SelectUser } from '@/features/users/components/SelectUser';
|
||||||
import { UserID } from '@/features/users/models/user';
|
import { UserID } from '@/features/users/models/user';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
|
import { useSetEditors } from '../../backend/useSetEditors';
|
||||||
|
import { LibraryItemID } from '../../models/library';
|
||||||
import TableUsers from './TableUsers';
|
import TableUsers from './TableUsers';
|
||||||
|
|
||||||
export interface DlgEditEditorsProps {
|
export interface DlgEditEditorsProps {
|
||||||
editors: UserID[];
|
itemID: LibraryItemID;
|
||||||
onChangeEditors: (newValue: UserID[]) => void;
|
initial: UserID[];
|
||||||
}
|
}
|
||||||
|
|
||||||
function DlgEditEditors() {
|
function DlgEditEditors() {
|
||||||
const { editors, onChangeEditors } = useDialogsStore(state => state.props as DlgEditEditorsProps);
|
const { initial, itemID } = useDialogsStore(state => state.props as DlgEditEditorsProps);
|
||||||
const [selected, setSelected] = useState<UserID[]>(editors);
|
const { setEditors } = useSetEditors();
|
||||||
|
|
||||||
|
const [selected, setSelected] = useState<UserID[]>(initial);
|
||||||
const { users } = useUsers();
|
const { users } = useUsers();
|
||||||
|
|
||||||
function handleSubmit() {
|
function handleSubmit() {
|
||||||
onChangeEditors(selected);
|
void setEditors({ itemID: itemID, editors: selected });
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function onDeleteEditor(target: UserID) {
|
function onDeleteEditor(target: UserID) {
|
|
@ -3,8 +3,7 @@
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
|
|
||||||
import { FlexColumn } from '@/components/Container';
|
import { FlexColumn } from '@/components/Container';
|
||||||
// TODO: reconsider this dependency
|
import { EditorLibraryItem } from '@/features/library/components/EditorLibraryItem';
|
||||||
import EditorLibraryItem from '@/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem';
|
|
||||||
import ToolbarRSFormCard from '@/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarRSFormCard';
|
import ToolbarRSFormCard from '@/features/rsform/pages/RSFormPage/EditorRSFormCard/ToolbarRSFormCard';
|
||||||
import { useModificationStore } from '@/stores/modification';
|
import { useModificationStore } from '@/stores/modification';
|
||||||
import { globals } from '@/utils/constants';
|
import { globals } from '@/utils/constants';
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
|
|
||||||
import { FlexColumn } from '@/components/Container';
|
import { FlexColumn } from '@/components/Container';
|
||||||
|
import { EditorLibraryItem } from '@/features/library/components/EditorLibraryItem';
|
||||||
import { useModificationStore } from '@/stores/modification';
|
import { useModificationStore } from '@/stores/modification';
|
||||||
import { globals } from '@/utils/constants';
|
import { globals } from '@/utils/constants';
|
||||||
|
|
||||||
import { useRSEdit } from '../RSEditContext';
|
import { useRSEdit } from '../RSEditContext';
|
||||||
import EditorLibraryItem from './EditorLibraryItem';
|
|
||||||
import FormRSForm from './FormRSForm';
|
import FormRSForm from './FormRSForm';
|
||||||
import RSFormStats from './RSFormStats';
|
import RSFormStats from './RSFormStats';
|
||||||
import ToolbarRSFormCard from './ToolbarRSFormCard';
|
import ToolbarRSFormCard from './ToolbarRSFormCard';
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
|
|
||||||
import { CProps } from '@/components/props';
|
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 {
|
interface InfoUsersProps extends CProps.Styling {
|
||||||
items: UserID[];
|
items: UserID[];
|
||||||
|
@ -10,7 +11,7 @@ interface InfoUsersProps extends CProps.Styling {
|
||||||
header?: string;
|
header?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
function InfoUsers({ items, className, prefix, header, ...restProps }: InfoUsersProps) {
|
export function InfoUsers({ items, className, prefix, header, ...restProps }: InfoUsersProps) {
|
||||||
const getUserLabel = useLabelUser();
|
const getUserLabel = useLabelUser();
|
||||||
return (
|
return (
|
||||||
<div className={clsx('flex flex-col dense', className)} {...restProps}>
|
<div className={clsx('flex flex-col dense', className)} {...restProps}>
|
||||||
|
@ -22,5 +23,3 @@ function InfoUsers({ items, className, prefix, header, ...restProps }: InfoUsers
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default InfoUsers;
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { create } from 'zustand';
|
import { create } from 'zustand';
|
||||||
|
|
||||||
import { DlgChangeLocationProps } from '@/features/library/dialogs/DlgChangeLocation';
|
import { DlgChangeLocationProps } from '@/features/library/dialogs/DlgChangeLocation';
|
||||||
|
import { DlgEditEditorsProps } from '@/features/library/dialogs/DlgEditEditors/DlgEditEditors';
|
||||||
import { DlgChangeInputSchemaProps } from '@/features/oss/dialogs/DlgChangeInputSchema';
|
import { DlgChangeInputSchemaProps } from '@/features/oss/dialogs/DlgChangeInputSchema';
|
||||||
import { DlgCreateOperationProps } from '@/features/oss/dialogs/DlgCreateOperation/DlgCreateOperation';
|
import { DlgCreateOperationProps } from '@/features/oss/dialogs/DlgCreateOperation/DlgCreateOperation';
|
||||||
import { DlgDeleteOperationProps } from '@/features/oss/dialogs/DlgDeleteOperation';
|
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 { DlgCreateVersionProps } from '@/features/rsform/dialogs/DlgCreateVersion';
|
||||||
import { DlgCstTemplateProps } from '@/features/rsform/dialogs/DlgCstTemplate/DlgCstTemplate';
|
import { DlgCstTemplateProps } from '@/features/rsform/dialogs/DlgCstTemplate/DlgCstTemplate';
|
||||||
import { DlgDeleteCstProps } from '@/features/rsform/dialogs/DlgDeleteCst/DlgDeleteCst';
|
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 { DlgEditReferenceProps } from '@/features/rsform/dialogs/DlgEditReference/DlgEditReference';
|
||||||
import { DlgEditVersionsProps } from '@/features/rsform/dialogs/DlgEditVersions/DlgEditVersions';
|
import { DlgEditVersionsProps } from '@/features/rsform/dialogs/DlgEditVersions/DlgEditVersions';
|
||||||
import { DlgEditWordFormsProps } from '@/features/rsform/dialogs/DlgEditWordForms/DlgEditWordForms';
|
import { DlgEditWordFormsProps } from '@/features/rsform/dialogs/DlgEditWordForms/DlgEditWordForms';
|
||||||
|
|
Loading…
Reference in New Issue
Block a user