33 IconButton ,
44 IconButtonWithTooltip ,
55 Dropdown ,
6+ OverlayTrigger ,
7+ Tooltip ,
68} from '@openedx/paragon' ;
79import {
810 AddCircle ,
@@ -25,24 +27,21 @@ import { getTagListRowData } from './utils';
2527const EDITABLE_COLUMNS = [ 'value' ] ;
2628
2729interface GetColumnsArgs {
28- setIsCreatingTopTag : ( isCreating : boolean ) => void ;
30+ setIsCreatingTopRow : ( isCreating : boolean ) => void ;
2931 setCreatingParentId : ( id : RowId | null ) => void ;
30- handleUpdateTag : ( value : string , originalValue : string ) => void ;
3132 setEditingRowId : ( id : RowId | null ) => void ;
3233 onStartDraft : ( ) => void ;
3334 setActiveActionMenuRowId : ( id : RowId | null ) => void ;
3435 hasOpenDraft : boolean ;
3536 canAddTag : boolean ;
36- draftError : string ;
3737 setDraftError : ( error : string ) => void ;
38- isSavingDraft : boolean ;
3938 maxDepth : number ;
4039}
4140
4241interface ActionsHeaderProps {
4342 onStartDraft : ( ) => void ;
4443 setDraftError : ( error : string ) => void ;
45- setIsCreatingTopTag : ( isCreating : boolean ) => void ;
44+ setIsCreatingTopRow : ( isCreating : boolean ) => void ;
4645 setEditingRowId : ( id : RowId | null ) => void ;
4746 setActiveActionMenuRowId : ( id : RowId | null ) => void ;
4847 hasOpenDraft : boolean ;
@@ -53,7 +52,7 @@ interface ActionsHeaderProps {
5352const ActionsHeader = ( {
5453 onStartDraft,
5554 setDraftError,
56- setIsCreatingTopTag ,
55+ setIsCreatingTopRow ,
5756 setEditingRowId,
5857 setActiveActionMenuRowId,
5958 hasOpenDraft,
@@ -72,7 +71,7 @@ const ActionsHeader = ({
7271 onClick = { ( ) => {
7372 onStartDraft ( ) ;
7473 setDraftError ( '' ) ;
75- setIsCreatingTopTag ( true ) ;
74+ setIsCreatingTopRow ( true ) ;
7675 setEditingRowId ( null ) ;
7776 setActiveActionMenuRowId ( null ) ;
7877 } }
@@ -90,6 +89,9 @@ interface ActionsMenuProps {
9089 editTag : ( ) => void ;
9190 disableEditTag : boolean ;
9291 reachedMaxDepth : ( row : Row < TreeRowData > ) => boolean ;
92+ deleteTag : ( ) => void ;
93+ disableDeleteTag : boolean ;
94+
9395 row : Row < TreeRowData > ;
9496}
9597
@@ -101,9 +103,20 @@ const ActionsMenu = ({
101103 editTag,
102104 disableEditTag,
103105 reachedMaxDepth,
106+ deleteTag,
107+ disableDeleteTag,
104108} : ActionsMenuProps ) => {
105109 const intl = useIntl ( ) ;
106110
111+ const deleteTagMenuItem = (
112+ < Dropdown . Item
113+ onClick = { deleteTag }
114+ disabled = { disableDeleteTag }
115+ >
116+ { intl . formatMessage ( messages . deleteTag ) }
117+ </ Dropdown . Item >
118+ )
119+
107120 return (
108121 < Dropdown >
109122 < Dropdown . Toggle
@@ -128,13 +141,25 @@ const ActionsMenu = ({
128141 >
129142 { intl . formatMessage ( messages . renameTag ) }
130143 </ Dropdown . Item >
144+ { disableDeleteTag ? (
145+ < OverlayTrigger
146+ placement = "bottom"
147+ overlay = {
148+ < Tooltip id = { `tooltip-taxonomy-delete-tag-${ rowData . id } ` } >
149+ { intl . formatMessage ( messages . deleteTagDisabledTooltip ) }
150+ </ Tooltip >
151+ }
152+ >
153+ { deleteTagMenuItem }
154+ </ OverlayTrigger >
155+ ) : deleteTagMenuItem }
131156 </ Dropdown . Menu >
132157 </ Dropdown >
133158 ) ;
134159} ;
135160
136161function getColumns ( {
137- setIsCreatingTopTag ,
162+ setIsCreatingTopRow ,
138163 setCreatingParentId,
139164 setEditingRowId,
140165 onStartDraft,
@@ -175,7 +200,7 @@ function getColumns({
175200 < ActionsHeader
176201 onStartDraft = { onStartDraft }
177202 setDraftError = { setDraftError }
178- setIsCreatingTopTag = { setIsCreatingTopTag }
203+ setIsCreatingTopRow = { setIsCreatingTopRow }
179204 setEditingRowId = { setEditingRowId }
180205 setActiveActionMenuRowId = { setActiveActionMenuRowId }
181206 hasOpenDraft = { hasOpenDraft }
@@ -192,13 +217,14 @@ function getColumns({
192217
193218 const disableAddSubtag = hasOpenDraft || ! canAddTag ;
194219 const disableEditTag = hasOpenDraft || rowData . canChangeTag === false ;
220+ const disableDeleteTag = hasOpenDraft || rowData . canDeleteTag === false ;
195221
196222 const startSubtagDraft = ( ) => {
197223 onStartDraft ( ) ;
198224 setDraftError ( '' ) ;
199225 setCreatingParentId ( rowData . id ) ;
200226 setEditingRowId ( null ) ;
201- setIsCreatingTopTag ( false ) ;
227+ setIsCreatingTopRow ( false ) ;
202228 setActiveActionMenuRowId ( null ) ;
203229 row . toggleExpanded ( true ) ;
204230 } ;
@@ -208,10 +234,14 @@ function getColumns({
208234 setDraftError ( '' ) ;
209235 setEditingRowId ( `${ rowData . id } :${ rowData . value } ` ) ;
210236 setCreatingParentId ( null ) ;
211- setIsCreatingTopTag ( false ) ;
237+ setIsCreatingTopRow ( false ) ;
212238 setActiveActionMenuRowId ( null ) ;
213239 } ;
214240
241+ const deleteTag = ( ) => {
242+ // todo: implement
243+ } ;
244+
215245 return (
216246 < div className = "d-flex align-items-center justify-content-end gap-2" >
217247 < ActionsMenu
@@ -222,6 +252,8 @@ function getColumns({
222252 editTag = { editTag }
223253 disableEditTag = { disableEditTag }
224254 reachedMaxDepth = { reachedMaxDepth }
255+ deleteTag = { deleteTag }
256+ disableDeleteTag = { disableDeleteTag }
225257 />
226258 </ div >
227259 ) ;
0 commit comments