Skip to content

Commit

Permalink
fixes, modal improvement
Browse files Browse the repository at this point in the history
  • Loading branch information
4rthem committed Oct 14, 2024
1 parent 9507b86 commit e35ec11
Show file tree
Hide file tree
Showing 25 changed files with 78 additions and 92 deletions.
4 changes: 0 additions & 4 deletions databox/api/src/Api/Provider/ShareReadProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,6 @@ public function provideShare(Share $item): Share
$options = [
AssetRenditionRepository::WITH_FILE => true,
];
// $renditionIds = [];
// if (!empty($renditionIds)) {
// $options[AssetRenditionRepository::OPT_DEFINITION_IDS] = $renditionIds;
// }

/** @var AssetRendition[] $renditions */
$renditions = $this->em->getRepository(AssetRendition::class)->findAssetRenditions($asset->getId(), $options);
Expand Down
2 changes: 1 addition & 1 deletion databox/api/src/Asset/Attribute/AttributesResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public function assignHighlight(array $attributes, array $highlights): void
$definition = $attribute->getDefinition();
$f = $this->fieldNameResolver->getFieldNameFromDefinition($definition);

$fieldName = sprintf('attributes.%s.%s', $locale, $f);
$fieldName = sprintf('%s.%s.%s', AttributeInterface::ATTRIBUTES_FIELD, $locale, $f);

if ($h = ($highlights[$fieldName] ?? null)) {
if ($definition->isMultiple()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {
import {getBatchActions} from './batchActions.ts';
import {useModals} from '@alchemy/navigation';
import SavePreviewDialog from './SavePreviewDialog.tsx';
import {useDirtyFormPromptOutsideRouter} from '../Dialog/Tabbed/FormTab.tsx';
import {useDirtyFormPrompt} from '../Dialog/Tabbed/FormTab.tsx';
import {useTranslation} from 'react-i18next';
import {AttributeType} from '../../api/attributes.ts';
import {getAttributeType} from '../Media/Asset/Attribute/types';
Expand All @@ -34,6 +34,7 @@ type Props = {
definition: AttributeDefinition | undefined;
setDefinition: StateSetter<AttributeDefinition | undefined>;
onSaved: () => void;
modalIndex?: number | undefined;
};

export function useAttributeValues<T>({
Expand All @@ -44,6 +45,7 @@ export function useAttributeValues<T>({
definition,
setDefinition,
onSaved,
modalIndex,
}: Props) {
const {t} = useTranslation();
const {openModal} = useModals();
Expand Down Expand Up @@ -433,7 +435,7 @@ export function useAttributeValues<T>({
});
}, [index, initialIndex, definitionIndex, onSaved]);

useDirtyFormPromptOutsideRouter(history.current > 0);
useDirtyFormPrompt(history.current > 0, modalIndex);

return {
attributeDefinitions: finalAttributeDefinitions,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {useTranslation} from 'react-i18next';
import {AppDialog} from '@alchemy/phrasea-ui';
import {
StackedModalProps,
useInRouterDirtyFormPrompt,
useFormPrompt,
useModals,
} from '@alchemy/navigation';
import {Button, TextField} from '@mui/material';
Expand Down Expand Up @@ -78,7 +78,7 @@ export default function CreateAttributeEntityDialog({
},
});

useInRouterDirtyFormPrompt(t, forbidNavigation);
useFormPrompt(t, forbidNavigation, modalIndex);

return (
<AppDialog
Expand Down
4 changes: 2 additions & 2 deletions databox/client/src/components/Basket/CreateBasket.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {postBasket} from '../../api/basket';
import {toast} from 'react-toastify';
import {useTranslation} from 'react-i18next';
import {StackedModalProps, useModals} from '@alchemy/navigation';
import {useDirtyFormPromptOutsideRouter} from '../Dialog/Tabbed/FormTab';
import {useDirtyFormPrompt} from '../Dialog/Tabbed/FormTab';
import {useBasketStore} from '../../store/basketStore';

type Props = {
Expand Down Expand Up @@ -37,7 +37,7 @@ export default function CreateBasket({modalIndex, open, onCreate}: Props) {
});

const {submitting, remoteErrors, forbidNavigation} = usedFormSubmit;
useDirtyFormPromptOutsideRouter(forbidNavigation);
useDirtyFormPrompt(forbidNavigation, modalIndex);
const formId = 'create-basket';

return (
Expand Down
4 changes: 2 additions & 2 deletions databox/client/src/components/Dialog/Basket/EditBasket.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {toast} from 'react-toastify';
import {useFormSubmit} from '@alchemy/api';
import FormTab from '../Tabbed/FormTab';
import {DialogTabProps} from '../Tabbed/TabbedDialog';
import {useInRouterDirtyFormPrompt} from '@alchemy/navigation';
import {useFormPrompt} from '@alchemy/navigation';
import {useBasketStore} from '../../../store/basketStore';
import {putBasket} from '../../../api/basket';
import {BasketForm} from '../../Form/BasketForm';
Expand Down Expand Up @@ -35,7 +35,7 @@ export default function EditBasket({data, onClose, minHeight}: Props) {
});

const {submitting, remoteErrors, forbidNavigation} = usedFormSubmit;
useInRouterDirtyFormPrompt(t, forbidNavigation);
useFormPrompt(t, forbidNavigation);

const formId = 'edit-basket';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {useFormSubmit} from '@alchemy/api';
import FormTab from '../Tabbed/FormTab';
import {DialogTabProps} from '../Tabbed/TabbedDialog';
import {CollectionForm} from '../../Form/CollectionForm';
import {useInRouterDirtyFormPrompt} from '@alchemy/navigation';
import {useFormPrompt} from '@alchemy/navigation';
import {useCollectionStore} from '../../../store/collectionStore';

export type OnCollectionEdit = (coll: Collection) => void;
Expand Down Expand Up @@ -40,7 +40,7 @@ export default function EditCollection({data, onClose, minHeight}: Props) {
});

const {submitting, remoteErrors, forbidNavigation} = usedFormSubmit;
useInRouterDirtyFormPrompt(t, forbidNavigation);
useFormPrompt(t, forbidNavigation);

const formId = 'edit-collection';

Expand Down
13 changes: 3 additions & 10 deletions databox/client/src/components/Dialog/Tabbed/FormTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ import SaveIcon from '@mui/icons-material/Save';
import RemoteErrors from '../../Form/RemoteErrors';
import {useTranslation} from 'react-i18next';
import {
useInRouterDirtyFormPrompt,
useOutsideRouterDirtyFormPrompt,
useFormPrompt,
} from '@alchemy/navigation';

type Props = PropsWithChildren<{
Expand All @@ -22,16 +21,10 @@ type Props = PropsWithChildren<{
minHeight?: number | undefined;
}>;

export function useDirtyFormPrompt(isDirty: boolean) {
export function useDirtyFormPrompt(isDirty: boolean, modalIndex?: number) {
const {t} = useTranslation();

useInRouterDirtyFormPrompt(t, isDirty);
}

export function useDirtyFormPromptOutsideRouter(isDirty: boolean) {
const {t} = useTranslation();

useOutsideRouterDirtyFormPrompt(t, isDirty);
useFormPrompt(t, isDirty, modalIndex);
}

export default function FormTab({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {useFormSubmit} from '@alchemy/api';
import {
StackedModalProps,
useModals,
useOutsideRouterDirtyFormPrompt,
useFormPrompt,
} from '@alchemy/navigation';
import {Basket, IntegrationData} from '../../../../types.ts';
import {runIntegrationAction} from '../../../../api/integrations.ts';
Expand Down Expand Up @@ -79,7 +79,7 @@ export default function CreatePublicationDialog({
closeModal();
},
});
useOutsideRouterDirtyFormPrompt(t, forbidNavigation, modalIndex);
useFormPrompt(t, forbidNavigation, modalIndex);

const formId = 'ep';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,10 @@ import {SwitchWidget} from '@alchemy/react-form';
import {Asset} from '../../../../types';
import AssetSelection from '../../../AssetList/AssetSelection';
import {StackedModalProps, useModals} from '@alchemy/navigation';
import {useDirtyFormPromptOutsideRouter} from '../../../Dialog/Tabbed/FormTab';
import {useDirtyFormPrompt} from '../../../Dialog/Tabbed/FormTab';
import {toast} from 'react-toastify';
import {OnSelectionChange} from '../../../AssetList/types';

type FormData = {
destination: string;
byReference: boolean;
withAttributes: boolean;
withTags: boolean;
};

type Props = {
assets: Asset[];
onComplete: () => void;
} & StackedModalProps;

function AssetList({
assets,
onSelectionChange,
Expand Down Expand Up @@ -60,6 +48,18 @@ function AssetList({
);
}

type FormData = {
destination: string;
byReference: boolean;
withAttributes: boolean;
withTags: boolean;
};

type Props = {
assets: Asset[];
onComplete: () => void;
} & StackedModalProps;

export default function CopyAssetsDialog({
assets,
onComplete,
Expand Down Expand Up @@ -122,7 +122,7 @@ export default function CopyAssetsDialog({
onComplete();
},
});
useDirtyFormPromptOutsideRouter(forbidNavigation);
useDirtyFormPrompt(forbidNavigation, modalIndex);
const byRef = watch('byReference');

const nonLinkablePerm: Asset[] = useMemo(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ export default function ExportAssetsDialog({assets, open, modalIndex}: Props) {
closeModal();
},
});
useDirtyFormPrompt(forbidNavigation);
useDirtyFormPrompt(forbidNavigation, modalIndex);

const formId = 'export';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {FormFieldErrors} from '@alchemy/react-form';
import DriveFileMoveIcon from '@mui/icons-material/DriveFileMove';
import RemoteErrors from '../../../Form/RemoteErrors';
import {StackedModalProps, useModals} from '@alchemy/navigation';
import {useDirtyFormPromptOutsideRouter} from '../../../Dialog/Tabbed/FormTab';
import {useDirtyFormPrompt} from '../../../Dialog/Tabbed/FormTab';
import {toast} from 'react-toastify';

type Props = {
Expand Down Expand Up @@ -50,7 +50,7 @@ export default function MoveAssetsDialog({
onComplete();
},
});
useDirtyFormPromptOutsideRouter(forbidNavigation);
useDirtyFormPrompt(forbidNavigation, modalIndex);

const formId = 'move-assets';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export default function ReplaceAssetWithFileDialog({
closeModal();
},
});
useDirtyFormPrompt(forbidNavigation);
useDirtyFormPrompt(forbidNavigation, modalIndex);

const formId = 'save-file-as-new-asset';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ export default function SaveFileAsNewAssetDialog({
closeModal();
},
});
useDirtyFormPrompt(forbidNavigation);
useDirtyFormPrompt(forbidNavigation, modalIndex);

const formId = 'save-file-as-new-asset';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {useFormSubmit} from '@alchemy/api';
import {
useModals,
StackedModalProps,
useOutsideRouterDirtyFormPrompt,
useFormPrompt,
} from '@alchemy/navigation';

type FormData = {
Expand Down Expand Up @@ -62,7 +62,7 @@ export default function SaveFileAsRenditionDialog({
closeModal();
},
});
useOutsideRouterDirtyFormPrompt(t, forbidNavigation, modalIndex);
useFormPrompt(t, forbidNavigation, modalIndex);

const formId = 'save-file-as-rendition';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {CollectionChip, WorkspaceChip} from '../../Ui/Chips';
import {StackedModalProps, useModals} from '@alchemy/navigation';
import {OnCollectionEdit} from '../../Dialog/Collection/EditCollection';
import React from 'react';
import {useDirtyFormPromptOutsideRouter} from '../../Dialog/Tabbed/FormTab';
import {useDirtyFormPrompt} from '../../Dialog/Tabbed/FormTab';

type Props = {
parent?: string;
Expand Down Expand Up @@ -59,7 +59,7 @@ export default function CreateCollection({
});

const {submitting, remoteErrors, forbidNavigation} = usedFormSubmit;
useDirtyFormPromptOutsideRouter(forbidNavigation);
useDirtyFormPrompt(forbidNavigation, modalIndex);
const formId = 'create-collection';

const title = titlePath ? (
Expand Down
14 changes: 8 additions & 6 deletions databox/client/src/components/Root.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,14 @@ function WrapperComponent({children}: RouteWrapperProps) {
<>
<ModalStack>
<SessionExpireContainer />
<OverlayOutlet
routes={modalRoutes}
queryParam={'_m'}
RouteProxyComponent={RouteProxy}
/>
<MatomoRouteWrapper>{children}</MatomoRouteWrapper>
<MatomoRouteWrapper>
<OverlayOutlet
routes={modalRoutes}
queryParam={'_m'}
RouteProxyComponent={RouteProxy}
/>
{children}
</MatomoRouteWrapper>
</ModalStack>
</>
);
Expand Down
4 changes: 2 additions & 2 deletions databox/client/src/components/Share/CreateShareDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import FormDialog from '../Dialog/FormDialog.tsx';
import {
StackedModalProps,
useModals,
useOutsideRouterDirtyFormPrompt,
useFormPrompt,
} from '@alchemy/navigation';
import {createAssetShare} from '../../api/asset.ts';
import {useFormSubmit} from '../../../../../lib/js/api';
Expand Down Expand Up @@ -51,7 +51,7 @@ export default function CreateShareDialog({
closeModal();
},
});
useOutsideRouterDirtyFormPrompt(t, forbidNavigation, modalIndex);
useFormPrompt(t, forbidNavigation, modalIndex);

const formId = 'create-share-link';

Expand Down
6 changes: 4 additions & 2 deletions databox/client/src/components/Upload/UploadForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {OnChangeValue} from 'react-select';
import {Asset, Attribute, Tag} from '../../types';
import {AttributeIndex} from '../Media/Asset/Attribute/AttributesEditor';
import FullPageLoader from '../Ui/FullPageLoader';
import {useOutsideRouterDirtyFormPrompt} from '@alchemy/navigation';
import {useFormPrompt} from '@alchemy/navigation';
import {UseFormSubmitReturn} from '@alchemy/api';
import {WorkspaceContext} from '../../context/WorkspaceContext.tsx';

Expand All @@ -48,6 +48,7 @@ export const UploadForm: FC<{
usedFormSubmit: UseFormSubmitReturn<UploadData, Asset[], FormUploadData>;
resetForms: () => void;
formId: string;
modalIndex?: number;
}> = function ({
formId,
usedFormSubmit,
Expand All @@ -59,6 +60,7 @@ export const UploadForm: FC<{
onChangeWorkspace,
onChangeCollection,
resetForms,
modalIndex,
}) {
const {t} = useTranslation();
const [selectedTemplates, setSelectedTemplates] = React.useState<string[]>(
Expand All @@ -79,7 +81,7 @@ export const UploadForm: FC<{
submitting,
} = usedFormSubmit;

useOutsideRouterDirtyFormPrompt(t, forbidNavigation);
useFormPrompt(t, forbidNavigation, modalIndex);

const onTemplateSelect = React.useCallback(
(values: OnChangeValue<SelectOption, true>) => {
Expand Down
Loading

0 comments on commit e35ec11

Please sign in to comment.