Enhance FileUpload, ObjectProperty, and ObjectSelect components by adding masterFilter prop for improved file filtering capabilities. Refactor FileList component styles for better layout consistency. Update ObjectSelect to accept custom styles, enhancing flexibility in usage.

This commit is contained in:
Tom Butcher 2026-07-24 22:20:03 +01:00
parent c201d26744
commit 70456d945d
4 changed files with 32 additions and 7 deletions

View File

@ -67,14 +67,22 @@ const FileList = ({
<Flex <Flex
vertical vertical
gap='10px' gap='10px'
style={{ maxWidth: '100%', minWidth: 0, width: card ? '100%' : 'fit-content' }} style={{
maxWidth: '100%',
minWidth: 0,
width: card ? '100%' : 'fit-content'
}}
> >
<Flex <Flex
justify={card ? 'space-between' : 'start'} justify={card ? 'space-between' : 'start'}
align='center' align='center'
gap='small' gap='small'
wrap={false} wrap={false}
style={{ maxWidth: '100%', minWidth: 0, width: card ? '100%' : 'fit-content' }} style={{
maxWidth: '100%',
minWidth: 0,
width: card ? '100%' : 'fit-content'
}}
> >
<Flex <Flex
gap={'small'} gap={'small'}

View File

@ -35,7 +35,8 @@ const FileUpload = ({
multiple = true, multiple = true,
defaultPreviewOpen = false, defaultPreviewOpen = false,
showPreview = true, showPreview = true,
showInfo showInfo,
masterFilter = []
}) => { }) => {
const { uploadFile } = useContext(ApiServerContext) const { uploadFile } = useContext(ApiServerContext)
const [uploading, setUploading] = useState(false) const [uploading, setUploading] = useState(false)
@ -138,11 +139,17 @@ const FileUpload = ({
<Flex gap={'small'} vertical> <Flex gap={'small'} vertical>
{hasNoItems && uploading == false ? ( {hasNoItems && uploading == false ? (
<Flex gap={'small'} align='center' wrap> <Flex gap={'small'} align='center' wrap>
<Space.Compact style={{ flexGrow: 1 }}> <Space.Compact style={{ flexGrow: 1, minWidth: 0 }}>
<ObjectSelect <ObjectSelect
type={'file'} type={'file'}
value={selectedFile} value={selectedFile}
onChange={setSelectedFile} onChange={setSelectedFile}
style={{ width: '100%', minWidth: 0 }}
masterFilter={
masterFilter.length > 0
? { extension: { $in: masterFilter } }
: {}
}
/> />
<Button <Button
icon={<PlusIcon />} icon={<PlusIcon />}
@ -157,6 +164,9 @@ const FileUpload = ({
beforeUpload={handleFileUpload} beforeUpload={handleFileUpload}
showUploadList={false} showUploadList={false}
multiple={multiple} multiple={multiple}
accept={
masterFilter.length > 0 ? masterFilter.join(',') : undefined
}
> >
<Button style={{ width: '100%' }} icon={<UploadIcon />}> <Button style={{ width: '100%' }} icon={<UploadIcon />}>
Upload Upload
@ -209,7 +219,8 @@ FileUpload.propTypes = {
showPreview: PropTypes.bool, showPreview: PropTypes.bool,
showInfo: PropTypes.bool, showInfo: PropTypes.bool,
defaultPreviewOpen: PropTypes.bool, defaultPreviewOpen: PropTypes.bool,
minimal: PropTypes.bool minimal: PropTypes.bool,
masterFilter: PropTypes.array
} }
export default FileUpload export default FileUpload

View File

@ -621,6 +621,7 @@ const ObjectProperty = ({
showPreview={showPreview} showPreview={showPreview}
showInfo={showHyperlink} showInfo={showHyperlink}
showDownload={showDownload} showDownload={showDownload}
masterFilter={masterFilter}
/> />
) )
} }
@ -635,6 +636,7 @@ const ObjectProperty = ({
defaultPreviewOpen={previewOpen} defaultPreviewOpen={previewOpen}
showPreview={showPreview} showPreview={showPreview}
showInfo={showHyperlink} showInfo={showHyperlink}
masterFilter={masterFilter}
/> />
) )
} }
@ -947,6 +949,7 @@ const ObjectProperty = ({
defaultPreviewOpen={previewOpen} defaultPreviewOpen={previewOpen}
showPreview={showPreview} showPreview={showPreview}
showInfo={showHyperlink} showInfo={showHyperlink}
masterFilter={masterFilter}
{...inputProps} {...inputProps}
/> />
) )
@ -958,6 +961,7 @@ const ObjectProperty = ({
defaultPreviewOpen={previewOpen} defaultPreviewOpen={previewOpen}
showPreview={showPreview} showPreview={showPreview}
showInfo={showHyperlink} showInfo={showHyperlink}
masterFilter={masterFilter}
{...inputProps} {...inputProps}
/> />
) )

View File

@ -46,6 +46,7 @@ const ObjectSelect = ({
value, value,
onChange, onChange,
disabled = false, disabled = false,
style = {},
...rest ...rest
}) => { }) => {
const { fetchObjectsByProperty, fetchObject, connected, searchObjects } = const { fetchObjectsByProperty, fetchObject, connected, searchObjects } =
@ -719,7 +720,7 @@ const ObjectSelect = ({
// --- Main TreeSelect UI --- // --- Main TreeSelect UI ---
return ( return (
<div> <div style={style}>
<TreeSelect <TreeSelect
key={treeVersion} key={treeVersion}
treeDataSimpleMode={false} treeDataSimpleMode={false}
@ -773,7 +774,8 @@ ObjectSelect.propTypes = {
multiple: PropTypes.bool, multiple: PropTypes.bool,
treeSelectProps: PropTypes.object, treeSelectProps: PropTypes.object,
type: PropTypes.string.isRequired, type: PropTypes.string.isRequired,
disabled: PropTypes.bool disabled: PropTypes.bool,
style: PropTypes.object
} }
export default ObjectSelect export default ObjectSelect