@@ -12,13 +12,18 @@ import ExpandIcon from '@patternfly/react-icons/dist/esm/icons/expand-icon';
1212import ExpandArrowsAltIcon from '@patternfly/react-icons/dist/esm/icons/expand-arrows-alt-icon' ;
1313import SearchPlusIcon from '@patternfly/react-icons/dist/esm/icons/search-plus-icon' ;
1414import SearchMinusIcon from '@patternfly/react-icons/dist/esm/icons/search-minus-icon' ;
15+ import CollapseIcon from '@patternfly/react-icons/dist/esm/icons/compress-alt-icon' ;
16+ import ExpandAltIcon from '@patternfly/react-icons/dist/esm/icons/expand-alt-icon' ;
17+
1518import '../../css/topology-controlbar' ;
1619
1720/* ID's for common control buttons */
1821export const ZOOM_IN = 'zoom-in' ;
1922export const ZOOM_OUT = 'zoom-out' ;
2023export const FIT_TO_SCREEN = 'fit-to-screen' ;
2124export const RESET_VIEW = 'reset-view' ;
25+ export const EXPAND_ALL = 'expand-all' ;
26+ export const COLLAPSE_ALL = 'collapse-all' ;
2227export const LEGEND = 'legend' ;
2328
2429/* Data needed for each control button */
@@ -66,6 +71,22 @@ export interface TopologyControlButtonsOptions {
6671 resetViewDisabled : boolean ;
6772 resetViewHidden : boolean ;
6873
74+ expandAll : boolean ;
75+ expandAllIcon : React . ReactNode ;
76+ expandAllTip : React . ReactNode ;
77+ expandAllAriaLabel : string ;
78+ expandAllCallback : ( id : any ) => void ;
79+ expandAllDisabled : boolean ;
80+ expandAllHidden : boolean ;
81+
82+ collapseAll : boolean ;
83+ collapseAllIcon : React . ReactNode ;
84+ collapseAllTip : React . ReactNode ;
85+ collapseAllAriaLabel : string ;
86+ collapseAllCallback : ( id : any ) => void ;
87+ collapseAllDisabled : boolean ;
88+ collapseAllHidden : boolean ;
89+
6990 legend : boolean ;
7091 legendIcon : React . ReactNode ;
7192 legendTip : string ;
@@ -111,6 +132,22 @@ export const defaultControlButtonsOptions: TopologyControlButtonsOptions = {
111132 resetViewDisabled : false ,
112133 resetViewHidden : false ,
113134
135+ expandAll : false ,
136+ expandAllIcon : < ExpandAltIcon /> ,
137+ expandAllTip : 'Expand All' ,
138+ expandAllAriaLabel : 'Expand All' ,
139+ expandAllCallback : null ,
140+ expandAllDisabled : false ,
141+ expandAllHidden : false ,
142+
143+ collapseAll : false ,
144+ collapseAllIcon : < CollapseIcon /> ,
145+ collapseAllTip : 'Collapse All' ,
146+ collapseAllAriaLabel : 'Collapse All' ,
147+ collapseAllCallback : null ,
148+ collapseAllDisabled : false ,
149+ collapseAllHidden : false ,
150+
114151 legend : true ,
115152 legendIcon : 'Legend' ,
116153 legendTip : '' ,
@@ -156,6 +193,22 @@ export const createTopologyControlButtons = ({
156193 resetViewDisabled = defaultControlButtonsOptions . resetViewDisabled ,
157194 resetViewHidden = defaultControlButtonsOptions . resetViewHidden ,
158195
196+ expandAll = defaultControlButtonsOptions . expandAll ,
197+ expandAllIcon = defaultControlButtonsOptions . expandAllIcon ,
198+ expandAllTip = defaultControlButtonsOptions . expandAllTip ,
199+ expandAllAriaLabel = defaultControlButtonsOptions . expandAllAriaLabel ,
200+ expandAllCallback = defaultControlButtonsOptions . expandAllCallback ,
201+ expandAllDisabled = defaultControlButtonsOptions . expandAllDisabled ,
202+ expandAllHidden = defaultControlButtonsOptions . expandAllHidden ,
203+
204+ collapseAll = defaultControlButtonsOptions . collapseAll ,
205+ collapseAllIcon = defaultControlButtonsOptions . collapseAllIcon ,
206+ collapseAllTip = defaultControlButtonsOptions . collapseAllTip ,
207+ collapseAllAriaLabel = defaultControlButtonsOptions . collapseAllAriaLabel ,
208+ collapseAllCallback = defaultControlButtonsOptions . collapseAllCallback ,
209+ collapseAllDisabled = defaultControlButtonsOptions . collapseAllDisabled ,
210+ collapseAllHidden = defaultControlButtonsOptions . collapseAllHidden ,
211+
159212 legend = defaultControlButtonsOptions . legend ,
160213 legendIcon = defaultControlButtonsOptions . legendIcon ,
161214 legendTip = defaultControlButtonsOptions . legendTip ,
@@ -216,6 +269,30 @@ export const createTopologyControlButtons = ({
216269 } ) ;
217270 }
218271
272+ if ( expandAll ) {
273+ controlButtons . push ( {
274+ id : EXPAND_ALL ,
275+ icon : expandAllIcon ,
276+ tooltip : expandAllTip ,
277+ ariaLabel : expandAllAriaLabel ,
278+ callback : expandAllCallback ,
279+ disabled : expandAllDisabled ,
280+ hidden : expandAllHidden
281+ } ) ;
282+ }
283+
284+ if ( collapseAll ) {
285+ controlButtons . push ( {
286+ id : COLLAPSE_ALL ,
287+ icon : collapseAllIcon ,
288+ tooltip : collapseAllTip ,
289+ ariaLabel : collapseAllAriaLabel ,
290+ callback : collapseAllCallback ,
291+ disabled : collapseAllDisabled ,
292+ hidden : collapseAllHidden
293+ } ) ;
294+ }
295+
219296 if ( customButtons ) {
220297 controlButtons . push ( ...customButtons ) ;
221298 }
0 commit comments