Skip to content

Commit 495c10b

Browse files
committed
FEATURE: Support new link editor layout
1 parent 5aa090c commit 495c10b

8 files changed

Lines changed: 32 additions & 17 deletions

File tree

packages/asset-preview/src/components/AssetPreview.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ const useLightBoxContainer = (defaultContainer: null | Element = null) => {
3333
};
3434

3535
export default function AssetPreview() {
36-
const { containerRef, isInNodeCreationDialog } = useMediaUi();
36+
const { containerRef, isInDialog } = useMediaUi();
3737
const assets = useRecoilValue(availableAssetsState);
3838
const [selectedAssetForPreview, setSelectedAssetForPreview] = useRecoilState(selectedAssetForPreviewState);
3939
const { asset } = useAssetQuery(selectedAssetForPreview);
40-
const lightBoxContainer = useLightBoxContainer(isInNodeCreationDialog ? null : containerRef.current);
40+
const lightBoxContainer = useLightBoxContainer(isInDialog ? null : containerRef.current);
4141

4242
const [prevAsset, nextAsset] = useMemo(() => {
4343
if (!asset) return [null, null];

packages/core/src/provider/MediaUiProvider.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ interface MediaUiProviderProps {
2020
dummyImage: string;
2121
selectionMode?: boolean;
2222
isInNodeCreationDialog?: boolean;
23+
isInDialog?: boolean;
2324
containerRef: React.RefObject<HTMLDivElement>;
2425
onAssetSelection?: (localAssetIdentifier: string) => void;
2526
approvalAttainmentStrategyFactory?: ApprovalAttainmentStrategyFactory;
@@ -32,6 +33,7 @@ interface MediaUiProviderValues {
3233
// TODO: Turn view variants into a single view Enum
3334
selectionMode: boolean;
3435
isInNodeCreationDialog: boolean;
36+
isInDialog: boolean;
3537
isAssetSelectable: (asset: Asset) => boolean;
3638
approvalAttainmentStrategy: ApprovalAttainmentStrategy;
3739
}
@@ -44,6 +46,7 @@ export function MediaUiProvider({
4446
dummyImage,
4547
selectionMode = false,
4648
isInNodeCreationDialog = false,
49+
isInDialog = false,
4750
onAssetSelection = null,
4851
containerRef,
4952
approvalAttainmentStrategyFactory = DefaultApprovalAttainmentStrategyFactory,
@@ -136,6 +139,7 @@ export function MediaUiProvider({
136139
handleSelectAsset,
137140
selectionMode,
138141
isInNodeCreationDialog,
142+
isInDialog,
139143
isAssetSelectable,
140144
approvalAttainmentStrategy,
141145
}}

packages/media-module/src/components/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import classes from './App.module.css';
3333
import './Global.module.css';
3434

3535
const App = () => {
36-
const { selectionMode, isInNodeCreationDialog, containerRef } = useMediaUi();
36+
const { selectionMode, isInDialog, containerRef } = useMediaUi();
3737
const uploadDialog = useRecoilValue(uploadDialogState);
3838
const createTagDialog = useRecoilValue(createTagDialogState);
3939
const showCreateAssetCollectionDialog = useRecoilValue(createAssetCollectionDialogVisibleState);
@@ -59,7 +59,7 @@ const App = () => {
5959
<div
6060
className={cx(classes.container, classes.mediaModuleApp, theme.mediaModuleTheme, {
6161
[classes.selectionMode]: selectionMode,
62-
[classes.fullHeight]: isInNodeCreationDialog,
62+
[classes.fullHeight]: isInDialog,
6363
})}
6464
ref={containerRef}
6565
>

packages/media-module/src/components/Main/ListView.module.css

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
height: auto;
33
}
44

5-
.listView--fullHeight {
5+
.fullHeight {
66
height: 100%;
7+
padding-bottom: 41px;
78
}
89

910
.listView table {

packages/media-module/src/components/Main/ListView.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ interface ListViewProps {
1515
import classes from './ListView.module.css';
1616

1717
const ListView: React.FC<ListViewProps> = ({ assetIdentities }: ListViewProps) => {
18-
const { isInNodeCreationDialog } = useMediaUi();
18+
const { isInDialog } = useMediaUi();
1919
const { translate } = useIntl();
2020
const setSelectedAssetForPreview = useSetRecoilState(selectedAssetForPreviewState);
2121
const selectAsset = useSelectAsset();
@@ -32,7 +32,7 @@ const ListView: React.FC<ListViewProps> = ({ assetIdentities }: ListViewProps) =
3232
);
3333

3434
return (
35-
<section className={cx(classes.listView, isInNodeCreationDialog && classes.listViewFullHeight)}>
35+
<section className={cx(classes.listView, isInDialog && classes.fullHeight)}>
3636
<table>
3737
<thead>
3838
<tr>

packages/media-module/src/components/TopBar/SortOrderSelector.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ interface SortByOption {
1717
}
1818

1919
const SortOrderSelector: React.FC = () => {
20-
const { isInNodeCreationDialog, selectionMode } = useMediaUi();
20+
const { isInDialog, selectionMode } = useMediaUi();
2121
const [sortOrderState, setSortOrderState] = useRecoilState(selectedSortOrderState);
2222
const { translate } = useIntl();
23-
const hideOptionIcon = isInNodeCreationDialog || selectionMode;
23+
const hideOptionIcon = isInDialog || selectionMode;
2424
const handleChangeSortBy = useCallback(
2525
(sortBy: SORT_BY) => {
2626
setSortOrderState({ ...sortOrderState, sortBy });

packages/media-selection-screen/src/MediaSelectionScreen.module.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
padding: 1rem;
55
}
66

7-
.isInNodeCreationDialog {
7+
.isInDialog {
88
padding: 0;
99
}

packages/media-selection-screen/src/MediaSelectionScreen.tsx

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ interface MediaSelectionScreenState {
4545

4646
class MediaSelectionScreen extends React.PureComponent<MediaSelectionScreenProps, MediaSelectionScreenState> {
4747
notificationHandler: NeosNotification;
48+
containerRef = createRef<HTMLDivElement>();
4849

4950
constructor(props: MediaSelectionScreenProps) {
5051
super(props);
@@ -69,15 +70,19 @@ class MediaSelectionScreen extends React.PureComponent<MediaSelectionScreenProps
6970
initialLeftSideBarHiddenState: isLeftSideBarHidden,
7071
initialNodeCreationDialogOpenState: isNodeCreationDialogOpen,
7172
});
72-
if (!isLeftSideBarHidden && !isNodeCreationDialogOpen) {
73+
if (!isLeftSideBarHidden && !isNodeCreationDialogOpen && !this.isInDialog()) {
7374
toggleSidebar();
7475
}
7576
}
7677

7778
componentWillUnmount() {
7879
const { isLeftSideBarHidden, toggleSidebar } = this.props;
7980
const { initialLeftSideBarHiddenState, initialNodeCreationDialogOpenState } = this.state;
80-
if (initialLeftSideBarHiddenState !== isLeftSideBarHidden && !initialNodeCreationDialogOpenState) {
81+
if (
82+
initialLeftSideBarHiddenState !== isLeftSideBarHidden &&
83+
!initialNodeCreationDialogOpenState &&
84+
!this.isInDialog()
85+
) {
8186
toggleSidebar();
8287
}
8388
}
@@ -138,16 +143,20 @@ class MediaSelectionScreen extends React.PureComponent<MediaSelectionScreenProps
138143
};
139144
};
140145

146+
isInDialog = () => {
147+
return this.state.initialNodeCreationDialogOpenState || !!this.containerRef.current?.closest('[role="dialog"]');
148+
};
149+
141150
render() {
142151
const { onComplete } = this.props;
143152
const { dummyImage } = this.getConfig();
144-
const containerRef = createRef<HTMLDivElement>();
145-
const isInNodeCreationDialog = this.state.initialNodeCreationDialogOpenState;
153+
const isInDialog = this.isInDialog();
154+
const { initialNodeCreationDialogOpenState } = this.state;
146155

147156
return (
148157
<div
149158
className={cx(classes.mediaSelectionScreen, {
150-
[classes.isInNodeCreationDialog]: isInNodeCreationDialog,
159+
[classes.isInDialog]: isInDialog,
151160
})}
152161
>
153162
<MediaApplicationWrapper
@@ -160,8 +169,9 @@ class MediaSelectionScreen extends React.PureComponent<MediaSelectionScreenProps
160169
dummyImage={dummyImage}
161170
onAssetSelection={onComplete}
162171
selectionMode
163-
isInNodeCreationDialog={isInNodeCreationDialog}
164-
containerRef={containerRef}
172+
isInNodeCreationDialog={initialNodeCreationDialogOpenState}
173+
isInDialog={isInDialog}
174+
containerRef={this.containerRef}
165175
>
166176
<AssetCollectionTreeDndProvider>
167177
<App />

0 commit comments

Comments
 (0)