|
3 | 3 | const siteaccess = doc.querySelector('meta[name="SiteAccess"]').content; |
4 | 4 | const currentLanguageCode = ibexa.adminUiConfig.languages.priority[0]; |
5 | 5 | const fieldsSelectorNodes = doc.querySelectorAll('.ibexa-fields-selector'); |
6 | | - const DROPDOWN_ROUTINE = { |
7 | | - CHANGE_ANY_ITEM: 'changeAnyItem', |
8 | | - CHANGE_ITEM: 'changeItem', |
9 | | - }; |
10 | 6 | const ANY_ITEM = { |
11 | 7 | id: '*', |
12 | 8 | name: Translator.trans(/*@Desc("Any")*/ 'ibexa.fields_selector.any_item', {}, 'forms'), |
13 | 9 | }; |
14 | | - let contentTypeGroups = []; |
15 | 10 | const getNameForContentType = (names) => { |
16 | 11 | const currentLanguageNames = names.value.find(({ _languageCode }) => _languageCode === currentLanguageCode); |
17 | 12 |
|
|
58 | 53 | return fetch(request) |
59 | 54 | .then(ibexa.helpers.request.getJsonFromResponse) |
60 | 55 | .then((response) => { |
61 | | - contentTypeGroups = response.ContentTypeGroupList.ContentTypeGroup.map(({ id, identifier }) => ({ |
62 | | - id, |
| 56 | + const contentTypeGroups = response.ContentTypeGroupList.ContentTypeGroup.map(({ identifier }) => ({ |
| 57 | + id: identifier, |
63 | 58 | name: identifier, |
64 | 59 | })); |
65 | 60 |
|
|
83 | 78 | } |
84 | 79 |
|
85 | 80 | if (params.selectedValues[0] !== '*') { |
86 | | - bodyRequest.ViewInput.ContentTypeQuery.Query.ContentTypeGroupIdCriterion = params.selectedValues; |
| 81 | + bodyRequest.ViewInput.ContentTypeQuery.Query.ContentTypeGroupNameCriterion = params.selectedValues; |
87 | 82 | } |
88 | 83 |
|
89 | 84 | const request = new Request('/api/ibexa/v2/content/types/view', { |
|
136 | 131 | return value === ANY_ITEM.id; |
137 | 132 | } |
138 | 133 |
|
139 | | - fitItems() { |
140 | | - if (this.dropdownRoutine === DROPDOWN_ROUTINE.CHANGE_ITEM) { |
141 | | - return; |
142 | | - } |
143 | | - |
144 | | - super.fitItems(); |
145 | | - } |
146 | | - |
147 | | - onSelectSetSelectionInfoState(element, ...restArgs) { |
148 | | - if (this.isAnyItem(element)) { |
149 | | - return; |
150 | | - } |
151 | | - |
152 | | - super.onSelectSetSelectionInfoState(element, ...restArgs); |
153 | | - } |
154 | | - |
155 | | - onSelectSetCurrentSelectedValueState(element, selected, ...restArgs) { |
156 | | - if (this.dropdownRoutine === DROPDOWN_ROUTINE.CHANGE_ITEM) { |
157 | | - return; |
158 | | - } |
159 | | - |
160 | | - super.onSelectSetCurrentSelectedValueState(element, selected, ...restArgs); |
161 | | - } |
| 134 | + onSelectSetCurrentSelectedValueState() {} |
162 | 135 |
|
163 | 136 | getNumberOfSelectedItems() { |
164 | 137 | let numberOfSelectedItems = this.getSelectedItems().length; |
|
176 | 149 | const anyItemCheckbox = anyItemElement.querySelector('.ibexa-input--checkbox'); |
177 | 150 | const numberOfSelectedItems = this.getNumberOfSelectedItems(); |
178 | 151 |
|
179 | | - this.dropdownRoutine = DROPDOWN_ROUTINE.CHANGE_ANY_ITEM; |
180 | | - |
181 | 152 | if (numberOfSelectedItems === 0) { |
182 | 153 | anyItemLabel.textContent = ANY_ITEM.name; |
183 | 154 | } else { |
|
192 | 163 |
|
193 | 164 | if (numberOfSelectedItems === 0) { |
194 | 165 | anyItemCheckbox.indeterminate = false; |
| 166 | + this.onSelectSetSourceInputState(anyItemElement, false); |
| 167 | + this.onSelectSetItemsListState(anyItemElement, false); |
195 | 168 | } else if (numberOfSelectedItems === this.getAllItems().length) { |
196 | 169 | anyItemCheckbox.indeterminate = false; |
197 | | - this.onSelect(anyItemElement, true); |
| 170 | + this.onSelectSetSourceInputState(anyItemElement, true); |
| 171 | + this.onSelectSetItemsListState(anyItemElement, true); |
198 | 172 | } else { |
199 | | - this.onSelect(anyItemElement, false); |
| 173 | + this.onSelectSetSourceInputState(anyItemElement, false); |
| 174 | + this.onSelectSetItemsListState(anyItemElement, false); |
200 | 175 | anyItemCheckbox.indeterminate = true; |
201 | 176 | } |
202 | | - |
203 | | - this.dropdownRoutine = null; |
204 | 177 | } |
205 | 178 |
|
206 | 179 | deselectOption(...args) { |
|
209 | 182 | this.updateAnyItemState(); |
210 | 183 | } |
211 | 184 |
|
212 | | - onSelect(element, selected, ...restArgs) { |
213 | | - super.onSelect(element, selected, ...restArgs); |
214 | | - |
215 | | - if (this.isAnyItem(element)) { |
216 | | - if (this.dropdownRoutine === DROPDOWN_ROUTINE.CHANGE_ANY_ITEM) { |
217 | | - return; |
218 | | - } |
219 | | - |
220 | | - const allItems = this.getAllItems(); |
| 185 | + toggleAllItems(selected) { |
| 186 | + const allItems = this.getAllItems(); |
221 | 187 |
|
222 | | - this.dropdownRoutine = DROPDOWN_ROUTINE.CHANGE_ITEM; |
| 188 | + allItems.forEach((item) => { |
| 189 | + const itemValue = this.getValueFromElement(item); |
| 190 | + const sourceOption = this.sourceInput.querySelector(`[value=${itemValue}]`); |
223 | 191 |
|
224 | | - allItems.forEach((item) => { |
225 | | - const value = this.getValueFromElement(item); |
226 | | - const { selected: itemSelected } = this.sourceInput.querySelector(`[value=${value}]`); |
227 | | - |
228 | | - if (selected && !itemSelected) { |
229 | | - this.onSelect(item, true, ...restArgs); |
230 | | - } else if (!selected && itemSelected) { |
231 | | - this.onSelect(item, false, ...restArgs); |
232 | | - } |
233 | | - }); |
| 192 | + if (sourceOption.selected !== selected) { |
| 193 | + this.onSelectSetSourceInputState(item, selected); |
| 194 | + this.onSelectSetItemsListState(item, selected); |
| 195 | + this.onSelectSetSelectionInfoState(item, selected); |
| 196 | + } |
| 197 | + }); |
| 198 | + } |
234 | 199 |
|
235 | | - this.dropdownRoutine = null; |
236 | | - this.fitItems(); |
237 | | - this.fireValueChangedEvent(); |
| 200 | + onSelect(element, selected, ...restArgs) { |
| 201 | + if (this.isAnyItem(element)) { |
| 202 | + const anyItemCheckbox = element.querySelector('.ibexa-input--checkbox'); |
| 203 | + const nextSelectState = anyItemCheckbox.indeterminate ? false : selected; |
238 | 204 |
|
239 | | - return; |
| 205 | + this.toggleAllItems(nextSelectState); |
| 206 | + } else { |
| 207 | + super.onSelect(element, selected, ...restArgs); |
240 | 208 | } |
241 | 209 |
|
242 | 210 | this.updateAnyItemState(); |
| 211 | + this.fireValueChangedEvent(); |
243 | 212 | } |
244 | 213 | } |
245 | 214 |
|
|
0 commit comments