|
107 | 107 | const CANCEL_LABEL = Granite.I18n.get('Cancel'); |
108 | 108 | const DIALOG_LABEL = Granite.I18n.get('Rollout'); |
109 | 109 | const ROLLOUT_AND_PUBLISH_LABEL = Granite.I18n.get('Rollout and Publish'); |
110 | | - const SELECT_ALL_LABEL = Granite.I18n.get('Select all'); |
111 | | - const UNSELECT_ALL_LABEL = Granite.I18n.get('Unselect all'); |
| 110 | + const EXPAND_ALL = Granite.I18n.get('Expand All'); |
| 111 | + const COLLAPSE_ALL = Granite.I18n.get('Collapse All'); |
| 112 | + const SELECT_ALL_LABEL = Granite.I18n.get('Select All'); |
| 113 | + const UNSELECT_ALL_LABEL = Granite.I18n.get('Unselect All'); |
112 | 114 | const TARGET_PATHS_LABEL = Granite.I18n.get('Target paths'); |
113 | 115 | const ROLLOUT_SCOPE_LABEL = Granite.I18n.get('Rollout scope'); |
114 | 116 | const INCLUDE_SUBPAGES_LABEL = Granite.I18n.get('Include subpages'); |
|
138 | 140 | .text(SELECT_ALL_LABEL) |
139 | 141 | .appendTo($span); |
140 | 142 | $span.appendTo(sourceElement); |
| 143 | + $('<button is="coral-button" variant="quiet" class="rollout-manager-expand">') |
| 144 | + .text(COLLAPSE_ALL) |
| 145 | + .appendTo($span); |
| 146 | + $span.appendTo(sourceElement); |
141 | 147 | } |
142 | 148 |
|
143 | 149 | function appendRolloutScope(sourceElement) { |
|
147 | 153 |
|
148 | 154 | function initNestedAccordion(currentCheckbox, liveCopiesJsonArray) { |
149 | 155 | const $accordion = $('<coral-accordion variant="quiet">'); |
150 | | - const $accordionItem = $('<coral-accordion-item>'); |
| 156 | + const $accordionItem = $('<coral-accordion-item selected>'); |
151 | 157 | const $accordionItemLabel = $('<coral-accordion-item-label>'); |
152 | 158 |
|
153 | 159 | currentCheckbox.appendTo($accordionItemLabel); |
|
231 | 237 | onCheckboxChange(submitBtn); |
232 | 238 | } |
233 | 239 |
|
| 240 | + function onExpandButtonClick() { |
| 241 | + const $expandBtn = $('.rollout-manager-expand'); |
| 242 | + const isExpand = $expandBtn.text() === EXPAND_ALL; |
| 243 | + $('coral-accordion-item').prop('selected', isExpand); |
| 244 | + $expandBtn.text(isExpand ? COLLAPSE_ALL : EXPAND_ALL); |
| 245 | + } |
| 246 | + |
234 | 247 | function onResolve($btn, path, deferred) { |
235 | 248 | const shouldActivate = $btn.closest('[data-dialog-action]').data('dialogAction') === 'rolloutPublish'; |
236 | 249 | const isDeepRollout = $('coral-checkbox[name="isDeepRollout"]').filter(':not([disabled])').prop('checked'); |
|
253 | 266 | function initEventHandlers(dialog, deferred, onCheckboxChange, onSelectAllClick, onResolve) { |
254 | 267 | dialog.on('change', 'coral-checkbox', onCheckboxChange); |
255 | 268 | dialog.on('click', '.rollout-manager-select-all', onSelectAllClick); |
| 269 | + dialog.on('click', '.rollout-manager-expand', onExpandButtonClick); |
256 | 270 | dialog.on('click', '[data-dialog-action]', onResolve); |
257 | 271 | dialog.on('coral-overlay:close', function () { |
258 | 272 | dialog.off('change', 'coral-checkbox', onCheckboxChange); |
259 | 273 | dialog.off('click', '.rollout-manager-select-all', onSelectAllClick); |
| 274 | + dialog.off('click', '.rollout-manager-expand', onExpandButtonClick); |
260 | 275 | dialog.off('click', '[data-dialog-action]', onResolve); |
261 | 276 | deferred.reject(); |
262 | 277 | }); |
|
0 commit comments