@@ -16,11 +16,11 @@ import { CustomColumnVisibilityControl } from '../CustomColumnVisibilityControl'
1616import { useWindowDimensions } from '../Helpers/Dimension' ;
1717import { updateVisibleColumns } from '../Helpers/ResponsiveColumns/responsive-coulmns.tsx/responsive-column' ;
1818import PromptComponent from '../Prompt' ;
19+ import SearchBar from '../SearchBar' ;
1920import AssignmentModal from './AssignmentModal' ;
2021import EditButton from './EditButton' ;
2122import useDesignAssignment from './hooks/useDesignAssignment' ;
2223import { TableHeader , TableRightActionHeader } from './styles' ;
23- import { ColumnVisibility } from './types' ;
2424
2525export interface DesignTableProps {
2626 workspaceId : string ;
@@ -48,14 +48,15 @@ export interface DesignTableProps {
4848 modalRef : React . RefObject < any >
4949 ) => void ;
5050 handleShowDetails : ( designId : string , designName : string ) => void ;
51- isDownloadDisabled : boolean ;
52- isCopyLinkDisabled : boolean ;
53- isDeleteDisabled : boolean ;
54- isPublishDisabled : boolean ;
55- isUnpublishDisabled : boolean ;
5651 GenericRJSFModal : any ;
57- isAssignDisabled : boolean ;
58- isRemoveDisabled : boolean ;
52+ isDownloadAllowed : boolean ;
53+ isCopyLinkAllowed : boolean ;
54+ isDeleteAllowed : boolean ;
55+ isPublishAllowed : boolean ;
56+ isUnpublishAllowed : boolean ;
57+ isAssignAllowed : boolean ;
58+ isRemoveAllowed : boolean ;
59+ setDesignSearch : ( value : string ) => void ;
5960}
6061
6162export interface PublishModalState {
@@ -83,17 +84,18 @@ const DesignTable: React.FC<DesignTableProps> = ({
8384 handleUnpublishModal,
8485 handleWorkspaceDesignDeleteModal,
8586 publishModalHandler,
86- isCopyLinkDisabled ,
87- isDeleteDisabled ,
88- isDownloadDisabled ,
89- isPublishDisabled ,
90- isUnpublishDisabled ,
87+ isCopyLinkAllowed ,
88+ isDeleteAllowed ,
89+ isDownloadAllowed ,
90+ isPublishAllowed ,
91+ isUnpublishAllowed ,
9192 useAssignDesignToWorkspaceMutation,
9293 useUnassignDesignFromWorkspaceMutation,
9394 GenericRJSFModal,
94- isAssignDisabled,
95- isRemoveDisabled,
96- useGetWorkspaceDesignsQuery
95+ isAssignAllowed,
96+ isRemoveAllowed,
97+ useGetWorkspaceDesignsQuery,
98+ setDesignSearch
9799} ) => {
98100 const [ publishModal , setPublishModal ] = useState < PublishModalState > ( {
99101 open : false ,
@@ -103,6 +105,7 @@ const DesignTable: React.FC<DesignTableProps> = ({
103105 const [ page , setPage ] = useState < number > ( 0 ) ;
104106 const [ pageSize , setPageSize ] = useState < number > ( 10 ) ;
105107 const [ sortOrder , setSortOrder ] = useState < string > ( '' ) ;
108+ const [ isSearchExpanded , setIsSearchExpanded ] = useState ( false ) ;
106109
107110 const handlePublishModal = ( pattern : Pattern ) : void => {
108111 const result = publishModalHandler ( pattern ) ;
@@ -119,11 +122,13 @@ const DesignTable: React.FC<DesignTableProps> = ({
119122 handleCopyUrl,
120123 handleClone,
121124 handleShowDetails,
122- isDownloadDisabled,
123- isCopyLinkDisabled,
124- isDeleteDisabled,
125- isPublishDisabled,
126- isUnpublishDisabled
125+ isCopyLinkAllowed,
126+ isDeleteAllowed,
127+ isDownloadAllowed,
128+ isPublishAllowed,
129+ isUnpublishAllowed,
130+ isFromWorkspaceTable : true ,
131+ isRemoveAllowed
127132 } ) ;
128133
129134 const [ publishSchema , setPublishSchema ] = useState < {
@@ -135,9 +140,9 @@ const DesignTable: React.FC<DesignTableProps> = ({
135140 } ) ;
136141
137142 const { width } = useWindowDimensions ( ) ;
138- const [ columnVisibility , setColumnVisibility ] = useState < ColumnVisibility > ( ( ) => {
143+ const [ columnVisibility , setColumnVisibility ] = useState < Record < string , boolean > > ( ( ) => {
139144 const showCols = updateVisibleColumns ( designColumnsColViews , width ) ;
140- const initialVisibility : ColumnVisibility = { } ;
145+ const initialVisibility : Record < string , boolean > = { } ;
141146 columns . forEach ( ( col ) => {
142147 initialVisibility [ col . name ] = showCols [ col . name ] ;
143148 } ) ;
@@ -167,19 +172,7 @@ const DesignTable: React.FC<DesignTableProps> = ({
167172 fetchSchema ( ) ;
168173 } , [ meshModelModelsData ] ) ;
169174
170- const {
171- disableTransferButton,
172- assignModal,
173- handleAssignModalClose,
174- handleAssignModal,
175- assignedItems,
176- data,
177- workspaceData,
178- handleAssignablePage,
179- handleAssignedPage,
180- handleAssign,
181- handleAssignData
182- } = useDesignAssignment ( {
175+ const designAssignment = useDesignAssignment ( {
183176 workspaceId,
184177 useAssignDesignToWorkspaceMutation,
185178 useUnassignDesignFromWorkspaceMutation,
@@ -192,6 +185,17 @@ const DesignTable: React.FC<DesignTableProps> = ({
192185 Assigned Designs
193186 </ Typography >
194187 < TableRightActionHeader >
188+ < SearchBar
189+ onSearch = { ( value ) => {
190+ setDesignSearch ( value ) ;
191+ } }
192+ onClear = { ( ) => {
193+ setDesignSearch ( '' ) ;
194+ } }
195+ expanded = { isSearchExpanded }
196+ setExpanded = { setIsSearchExpanded }
197+ placeholder = "Search designs..."
198+ />
195199 < CustomColumnVisibilityControl
196200 columns = { columns }
197201 customToolsProps = { {
@@ -200,7 +204,7 @@ const DesignTable: React.FC<DesignTableProps> = ({
200204 } }
201205 id = { 'catalog-table' }
202206 />
203- < EditButton onClick = { handleAssignModal } disabled = { ! isAssignDisabled } />
207+ < EditButton onClick = { designAssignment . handleAssignModal } disabled = { ! isAssignAllowed } />
204208 </ TableRightActionHeader >
205209 </ TableHeader >
206210 ) ;
@@ -234,28 +238,29 @@ const DesignTable: React.FC<DesignTableProps> = ({
234238 handleBulkWorkspaceDesignDeleteModal ( designs , modalRef , workspaceName , workspaceId )
235239 }
236240 filter = { 'my-designs' }
241+ setSearch = { setDesignSearch }
237242 />
238243 </ AccordionDetails >
239244 </ Accordion >
240245 < AssignmentModal
241- open = { assignModal }
242- onClose = { handleAssignModalClose }
246+ open = { designAssignment . assignModal }
247+ onClose = { designAssignment . handleAssignModalClose }
243248 title = { `Assign Designs to ${ workspaceName } ` }
244249 headerIcon = { < DesignIcon height = "40" width = "40" secondaryFill = "white" /> }
245250 name = "Designs"
246- assignableData = { data }
247- handleAssignedData = { handleAssignData }
248- originalAssignedData = { workspaceData }
251+ assignableData = { designAssignment . data }
252+ handleAssignedData = { designAssignment . handleAssignData }
253+ originalAssignedData = { designAssignment . workspaceData }
249254 emptyStateIcon = { < DesignIcon height = "5rem" width = "5rem" secondaryFill = { '#808080' } /> }
250- handleAssignablePage = { handleAssignablePage }
251- handleAssignedPage = { handleAssignedPage }
252- originalLeftCount = { data ?. length }
253- originalRightCount = { assignedItems ?. length }
254- onAssign = { handleAssign }
255- disableTransfer = { disableTransferButton }
255+ handleAssignablePage = { designAssignment . handleAssignablePage }
256+ handleAssignedPage = { designAssignment . handleAssignedPage }
257+ originalLeftCount = { designAssignment . data ?. length }
258+ originalRightCount = { designAssignment . assignedItems ?. length }
259+ onAssign = { designAssignment . handleAssign }
260+ disableTransfer = { designAssignment . disableTransferButton }
256261 helpText = { `Assign Designs to ${ workspaceName } ` }
257- isAssignDisabled = { isAssignDisabled }
258- isRemoveDisabled = { isRemoveDisabled }
262+ isAssignAllowed = { isAssignAllowed }
263+ isRemoveAllowed = { isRemoveAllowed }
259264 />
260265 < GenericRJSFModal
261266 open = { publishModal . open }
0 commit comments