@@ -61,6 +61,7 @@ interface Props {
61
61
searchAllEntities : boolean ;
62
62
joinAttrs : AdvancedSearchJoinAttrInfo [ ] ;
63
63
refreshSearchResults : ( ) => void ;
64
+ isReadonly ?: boolean ;
64
65
}
65
66
66
67
export const SearchResultsTableHead : FC < Props > = ( {
@@ -73,6 +74,7 @@ export const SearchResultsTableHead: FC<Props> = ({
73
74
searchAllEntities,
74
75
joinAttrs,
75
76
refreshSearchResults,
77
+ isReadonly = false ,
76
78
} ) => {
77
79
const location = useLocation ( ) ;
78
80
const navigate = useNavigate ( ) ;
@@ -187,33 +189,44 @@ export const SearchResultsTableHead: FC<Props> = ({
187
189
return (
188
190
< TableHead >
189
191
< TableRow sx = { { backgroundColor : "primary.dark" } } >
190
- < TableCell sx = { { witdh : "80px" } } />
192
+ { /* Bulk operation checkbox would be invisible when Readonly mode is true */ }
193
+ { ! isReadonly && < TableCell sx = { { witdh : "80px" } } /> }
191
194
< StyledTableCell sx = { { outline : "1px solid #FFFFFF" } } >
192
195
< HeaderBox >
193
196
< Typography > アイテム名</ Typography >
194
- < StyledIconButton
195
- onClick = { ( e ) => {
196
- setEntryMenuEls ( e . currentTarget ) ;
197
- } }
198
- >
199
- { defaultEntryFilter ? < FilterAltIcon /> : < FilterListIcon /> }
200
- </ StyledIconButton >
201
- < SearchResultControlMenuForEntry
202
- entryFilter = { entryFilter }
203
- anchorElem = { entryMenuEls }
204
- handleClose = { ( ) => setEntryMenuEls ( null ) }
205
- entryFilterDispatcher = { entryFilterDispatcher }
206
- handleSelectFilterConditions = { handleSelectFilterConditions ( ) }
207
- handleClear = { ( ) => handleSelectFilterConditions ( ) ( undefined , "" ) }
208
- />
197
+
198
+ { /* SearchControlMenu would be invisible when Readonly Mode is True */ }
199
+ { ! isReadonly && (
200
+ < >
201
+ < StyledIconButton
202
+ onClick = { ( e ) => {
203
+ setEntryMenuEls ( e . currentTarget ) ;
204
+ } }
205
+ >
206
+ { defaultEntryFilter ? < FilterAltIcon /> : < FilterListIcon /> }
207
+ </ StyledIconButton >
208
+ < SearchResultControlMenuForEntry
209
+ entryFilter = { entryFilter }
210
+ anchorElem = { entryMenuEls }
211
+ handleClose = { ( ) => setEntryMenuEls ( null ) }
212
+ entryFilterDispatcher = { entryFilterDispatcher }
213
+ handleSelectFilterConditions = { handleSelectFilterConditions ( ) }
214
+ handleClear = { ( ) =>
215
+ handleSelectFilterConditions ( ) ( undefined , "" )
216
+ }
217
+ />
218
+ </ >
219
+ ) }
209
220
</ HeaderBox >
210
221
</ StyledTableCell >
211
222
{ attrNames . map ( ( attrName ) => (
212
223
< StyledTableCell key = { attrName } >
213
224
< HeaderBox >
214
225
< Typography > { attrName } </ Typography >
215
226
227
+ { /* Bulk operation checkbox would be invisible when Readonly mode is true */ }
216
228
{ ( attrTypes [ attrName ] & EntryAttributeTypeTypeEnum . OBJECT ) > 0 &&
229
+ ! isReadonly &&
217
230
attrsFilter [ attrName ] ?. joinedAttrname === undefined && (
218
231
< StyledIconButton onClick = { ( ) => setJoinAttrname ( attrName ) } >
219
232
< AddIcon />
@@ -229,36 +242,40 @@ export const SearchResultsTableHead: FC<Props> = ({
229
242
refreshSearchResults = { refreshSearchResults }
230
243
/>
231
244
) }
232
- < StyledIconButton
233
- onClick = { ( e ) => {
234
- setAttributeMenuEls ( {
235
- ...attributeMenuEls ,
236
- [ attrName ] : e . currentTarget ,
237
- } ) ;
238
- } }
239
- sx = { { marginLeft : "auto" } }
240
- >
241
- { isFiltered [ attrName ] ?? false ? (
242
- < FilterAltIcon />
243
- ) : (
244
- < FilterListIcon />
245
- ) }
246
- </ StyledIconButton >
247
- < SearchResultControlMenu
248
- attrFilter = { attrsFilter [ attrName ] }
249
- anchorElem = { attributeMenuEls [ attrName ] }
250
- handleClose = { ( ) =>
251
- setAttributeMenuEls ( {
252
- ...attributeMenuEls ,
253
- [ attrName ] : null ,
254
- } )
255
- }
256
- handleSelectFilterConditions = { handleSelectFilterConditions (
257
- attrName
258
- ) }
259
- handleUpdateAttrFilter = { handleUpdateAttrFilter ( attrName ) }
260
- attrType = { attrTypes [ attrName ] }
261
- />
245
+ { ! isReadonly && (
246
+ < >
247
+ < StyledIconButton
248
+ onClick = { ( e ) => {
249
+ setAttributeMenuEls ( {
250
+ ...attributeMenuEls ,
251
+ [ attrName ] : e . currentTarget ,
252
+ } ) ;
253
+ } }
254
+ sx = { { marginLeft : "auto" } }
255
+ >
256
+ { isFiltered [ attrName ] ?? false ? (
257
+ < FilterAltIcon />
258
+ ) : (
259
+ < FilterListIcon />
260
+ ) }
261
+ </ StyledIconButton >
262
+ < SearchResultControlMenu
263
+ attrFilter = { attrsFilter [ attrName ] }
264
+ anchorElem = { attributeMenuEls [ attrName ] }
265
+ handleClose = { ( ) =>
266
+ setAttributeMenuEls ( {
267
+ ...attributeMenuEls ,
268
+ [ attrName ] : null ,
269
+ } )
270
+ }
271
+ handleSelectFilterConditions = { handleSelectFilterConditions (
272
+ attrName
273
+ ) }
274
+ handleUpdateAttrFilter = { handleUpdateAttrFilter ( attrName ) }
275
+ attrType = { attrTypes [ attrName ] }
276
+ />
277
+ </ >
278
+ ) }
262
279
</ HeaderBox >
263
280
</ StyledTableCell >
264
281
) ) }
0 commit comments