Add portals for selects in dialogs (#5253)

This commit is contained in:
WithoutPants
2024-09-11 16:12:18 +10:00
committed by GitHub
parent 17be7e97d3
commit 5c4bf4ecdf
10 changed files with 24 additions and 0 deletions

View File

@@ -63,6 +63,7 @@ export const OptionsEditor: React.FC<IOptionsEditor> = ({
options.skipMultipleMatchTag ? [options.skipMultipleMatchTag] : [] options.skipMultipleMatchTag ? [options.skipMultipleMatchTag] : []
} }
noSelectionString="Select/create tag..." noSelectionString="Select/create tag..."
menuPortalTarget={document.body}
/> />
</Col> </Col>
</Form.Group> </Form.Group>
@@ -98,6 +99,7 @@ export const OptionsEditor: React.FC<IOptionsEditor> = ({
: [] : []
} }
noSelectionString="Select/create tag..." noSelectionString="Select/create tag..."
menuPortalTarget={document.body}
/> />
</Col> </Col>
</Form.Group> </Form.Group>

View File

@@ -211,6 +211,7 @@ export const EditGalleriesDialog: React.FC<IListOperationProps> = (
existingIds={existingIds ?? []} existingIds={existingIds ?? []}
ids={ids ?? []} ids={ids ?? []}
mode={mode} mode={mode}
menuPortalTarget={document.body}
/> />
); );
} }
@@ -273,6 +274,7 @@ export const EditGalleriesDialog: React.FC<IListOperationProps> = (
} }
ids={studioId ? [studioId] : []} ids={studioId ? [studioId] : []}
isDisabled={isUpdating} isDisabled={isUpdating}
menuPortalTarget={document.body}
/> />
</Col> </Col>
</Form.Group> </Form.Group>

View File

@@ -14,6 +14,7 @@ export const ContainingGroupsMultiSet: React.FC<{
disabled?: boolean; disabled?: boolean;
onUpdate: (value: IRelatedGroupEntry[]) => void; onUpdate: (value: IRelatedGroupEntry[]) => void;
onSetMode: (mode: GQL.BulkUpdateIdMode) => void; onSetMode: (mode: GQL.BulkUpdateIdMode) => void;
menuPortalTarget?: HTMLElement | null;
}> = (props) => { }> = (props) => {
const { mode, onUpdate, existingValue } = props; const { mode, onUpdate, existingValue } = props;
@@ -48,12 +49,14 @@ export const ContainingGroupsMultiSet: React.FC<{
value={props.value} value={props.value}
onUpdate={props.onUpdate} onUpdate={props.onUpdate}
disabled={props.disabled} disabled={props.disabled}
menuPortalTarget={props.menuPortalTarget}
/> />
) : ( ) : (
<GroupSelect <GroupSelect
onSelect={(items) => onRemoveSet(items)} onSelect={(items) => onRemoveSet(items)}
values={[]} values={[]}
isDisabled={props.disabled} isDisabled={props.disabled}
menuPortalTarget={props.menuPortalTarget}
/> />
)} )}
</div> </div>

View File

@@ -227,6 +227,7 @@ export const EditGroupsDialog: React.FC<IListOperationProps> = (
} }
ids={studioId ? [studioId] : []} ids={studioId ? [studioId] : []}
isDisabled={isUpdating} isDisabled={isUpdating}
menuPortalTarget={document.body}
/> />
</Col> </Col>
</Form.Group> </Form.Group>
@@ -241,6 +242,7 @@ export const EditGroupsDialog: React.FC<IListOperationProps> = (
existingValue={existingContainingGroups ?? []} existingValue={existingContainingGroups ?? []}
value={containingGroups ?? []} value={containingGroups ?? []}
mode={containingGroupsMode} mode={containingGroupsMode}
menuPortalTarget={document.body}
/> />
</Form.Group> </Form.Group>
<Form.Group controlId="director"> <Form.Group controlId="director">
@@ -267,6 +269,7 @@ export const EditGroupsDialog: React.FC<IListOperationProps> = (
existingIds={existingTagIds ?? []} existingIds={existingTagIds ?? []}
ids={tagIds ?? []} ids={tagIds ?? []}
mode={tagMode} mode={tagMode}
menuPortalTarget={document.body}
/> />
</Form.Group> </Form.Group>
</Form> </Form>

View File

@@ -19,6 +19,7 @@ export const RelatedGroupTable: React.FC<{
excludeIDs?: string[]; excludeIDs?: string[];
filterHook?: (f: ListFilterModel) => ListFilterModel; filterHook?: (f: ListFilterModel) => ListFilterModel;
disabled?: boolean; disabled?: boolean;
menuPortalTarget?: HTMLElement | null;
}> = (props) => { }> = (props) => {
const { value, onUpdate } = props; const { value, onUpdate } = props;
@@ -101,6 +102,7 @@ export const RelatedGroupTable: React.FC<{
excludeIds={excludeIDs} excludeIds={excludeIDs}
filterHook={props.filterHook} filterHook={props.filterHook}
isDisabled={props.disabled} isDisabled={props.disabled}
menuPortalTarget={props.menuPortalTarget}
/> />
</Col> </Col>
<Col xs={3}> <Col xs={3}>
@@ -129,6 +131,7 @@ export const RelatedGroupTable: React.FC<{
excludeIds={excludeIDs} excludeIds={excludeIDs}
filterHook={props.filterHook} filterHook={props.filterHook}
isDisabled={props.disabled} isDisabled={props.disabled}
menuPortalTarget={props.menuPortalTarget}
/> />
</Col> </Col>
</Row> </Row>

View File

@@ -237,6 +237,7 @@ export const EditImagesDialog: React.FC<IListOperationProps> = (
} }
ids={studioId ? [studioId] : []} ids={studioId ? [studioId] : []}
isDisabled={isUpdating} isDisabled={isUpdating}
menuPortalTarget={document.body}
/> />
</Col> </Col>
</Form.Group> </Form.Group>
@@ -253,6 +254,7 @@ export const EditImagesDialog: React.FC<IListOperationProps> = (
existingIds={existingPerformerIds ?? []} existingIds={existingPerformerIds ?? []}
ids={performerIds ?? []} ids={performerIds ?? []}
mode={performerMode} mode={performerMode}
menuPortalTarget={document.body}
/> />
</Form.Group> </Form.Group>
@@ -268,6 +270,7 @@ export const EditImagesDialog: React.FC<IListOperationProps> = (
existingIds={existingTagIds ?? []} existingIds={existingTagIds ?? []}
ids={tagIds ?? []} ids={tagIds ?? []}
mode={tagMode} mode={tagMode}
menuPortalTarget={document.body}
/> />
</Form.Group> </Form.Group>
@@ -283,6 +286,7 @@ export const EditImagesDialog: React.FC<IListOperationProps> = (
existingIds={existingGalleryIds ?? []} existingIds={existingGalleryIds ?? []}
ids={galleryIds ?? []} ids={galleryIds ?? []}
mode={galleryMode} mode={galleryMode}
menuPortalTarget={document.body}
/> />
</Form.Group> </Form.Group>

View File

@@ -369,6 +369,7 @@ export const EditPerformersDialog: React.FC<IListOperationProps> = (
existingIds={existingTagIds ?? []} existingIds={existingTagIds ?? []}
ids={tagIds.ids ?? []} ids={tagIds.ids ?? []}
mode={tagIds.mode} mode={tagIds.mode}
menuPortalTarget={document.body}
/> />
</Form.Group> </Form.Group>

View File

@@ -226,6 +226,7 @@ export const EditScenesDialog: React.FC<IListOperationProps> = (
ids={ids ?? []} ids={ids ?? []}
existingIds={existingIds ?? []} existingIds={existingIds ?? []}
mode={mode} mode={mode}
menuPortalTarget={document.body}
/> />
); );
} }
@@ -288,6 +289,7 @@ export const EditScenesDialog: React.FC<IListOperationProps> = (
} }
ids={studioId ? [studioId] : []} ids={studioId ? [studioId] : []}
isDisabled={isUpdating} isDisabled={isUpdating}
menuPortalTarget={document.body}
/> />
</Col> </Col>
</Form.Group> </Form.Group>

View File

@@ -17,6 +17,7 @@ interface IMultiSetProps {
disabled?: boolean; disabled?: boolean;
onUpdate: (ids: string[]) => void; onUpdate: (ids: string[]) => void;
onSetMode: (mode: GQL.BulkUpdateIdMode) => void; onSetMode: (mode: GQL.BulkUpdateIdMode) => void;
menuPortalTarget?: HTMLElement | null;
} }
const Select: React.FC<IMultiSetProps> = (props) => { const Select: React.FC<IMultiSetProps> = (props) => {
@@ -36,6 +37,7 @@ const Select: React.FC<IMultiSetProps> = (props) => {
ids={props.ids ?? []} ids={props.ids ?? []}
// exclude file-based galleries when setting galleries // exclude file-based galleries when setting galleries
extraCriteria={excludeFileBasedGalleries} extraCriteria={excludeFileBasedGalleries}
menuPortalTarget={props.menuPortalTarget}
/> />
); );
} }
@@ -48,6 +50,7 @@ const Select: React.FC<IMultiSetProps> = (props) => {
isClearable={false} isClearable={false}
onSelect={onUpdate} onSelect={onUpdate}
ids={props.ids ?? []} ids={props.ids ?? []}
menuPortalTarget={props.menuPortalTarget}
/> />
); );
}; };

View File

@@ -48,6 +48,7 @@ function Tags(props: {
existingIds={existingTagIds ?? []} existingIds={existingTagIds ?? []}
ids={tagIDs.ids ?? []} ids={tagIDs.ids ?? []}
mode={tagIDs.mode} mode={tagIDs.mode}
menuPortalTarget={document.body}
/> />
</Form.Group> </Form.Group>
); );