@shoper/phoenix_design_system 1.18.2-9 → 1.18.3-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js +74 -20
- package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/form/select/model/select_option_mapper.js +1 -2
- package/build/cjs/packages/phoenix/src/components/form/select/model/select_option_mapper.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/form/select/select.js +26 -50
- package/build/cjs/packages/phoenix/src/components/form/select/select.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/accordion/accordion_content.d.ts +7 -1
- package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js +74 -20
- package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/form/select/model/select_option_mapper.js +1 -2
- package/build/esm/packages/phoenix/src/components/form/select/model/select_option_mapper.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/form/select/select.d.ts +3 -3
- package/build/esm/packages/phoenix/src/components/form/select/select.js +26 -50
- package/build/esm/packages/phoenix/src/components/form/select/select.js.map +1 -1
- package/package.json +1 -1
|
@@ -12,43 +12,92 @@ var context_consumer_controller = require('../../core/context/context_consumer_c
|
|
|
12
12
|
var accordion_constants = require('./accordion_constants.js');
|
|
13
13
|
var transition_controller = require('../../controllers/transition_controller/transition_controller.js');
|
|
14
14
|
|
|
15
|
+
const RESIZE_DEBOUNCE_MS = 150;
|
|
16
|
+
const MUTATION_DEBOUNCE_MS = 100;
|
|
15
17
|
exports.HAccordionContent = class HAccordionContent extends phoenix_light_lit_element.PhoenixLightLitElement {
|
|
16
18
|
constructor() {
|
|
17
19
|
super();
|
|
18
20
|
this.transitionName = 'accordion-toggle';
|
|
21
|
+
this._resizeDebounceTimer = null;
|
|
22
|
+
this._mutationDebounceTimer = null;
|
|
23
|
+
this._mutationObserver = null;
|
|
24
|
+
this._handleResize = () => {
|
|
25
|
+
if (this._resizeDebounceTimer !== null) {
|
|
26
|
+
window.cancelAnimationFrame(this._resizeDebounceTimer);
|
|
27
|
+
}
|
|
28
|
+
this._resizeDebounceTimer = window.requestAnimationFrame(() => {
|
|
29
|
+
setTimeout(() => {
|
|
30
|
+
this._setStylingOptions();
|
|
31
|
+
}, RESIZE_DEBOUNCE_MS);
|
|
32
|
+
});
|
|
33
|
+
};
|
|
19
34
|
this._setStylingOptions = () => {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
35
|
+
requestAnimationFrame(() => {
|
|
36
|
+
const previousDisplay = this.style.display;
|
|
37
|
+
this.style.display = 'block';
|
|
38
|
+
this.style.height = 'auto';
|
|
39
|
+
requestAnimationFrame(() => {
|
|
40
|
+
this._setOriginalHeightValue();
|
|
41
|
+
this.style.display = previousDisplay;
|
|
42
|
+
this.style.height = this.hidden ? '0px' : this._originalHeight;
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
this._handleMutation = () => {
|
|
47
|
+
if (this._mutationDebounceTimer !== null) {
|
|
48
|
+
window.clearTimeout(this._mutationDebounceTimer);
|
|
49
|
+
}
|
|
50
|
+
this._mutationDebounceTimer = window.setTimeout(() => {
|
|
51
|
+
requestAnimationFrame(() => {
|
|
52
|
+
this.style.height = 'auto';
|
|
53
|
+
requestAnimationFrame(() => {
|
|
54
|
+
this._setOriginalHeightValue();
|
|
55
|
+
if (this.hidden) {
|
|
56
|
+
this.style.height = '0px';
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
this.style.height = this._originalHeight;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}, MUTATION_DEBOUNCE_MS);
|
|
25
64
|
};
|
|
26
65
|
this._setOriginalHeightValue = () => {
|
|
27
66
|
const newHeight = this.getBoundingClientRect().height;
|
|
28
|
-
if (newHeight !== 0 || this.children.length === 0)
|
|
67
|
+
if (newHeight !== 0 || this.children.length === 0) {
|
|
29
68
|
this._originalHeight = `${newHeight}px`;
|
|
69
|
+
}
|
|
30
70
|
};
|
|
31
71
|
this._expand = () => {
|
|
32
72
|
this._setHeight(this._originalHeight);
|
|
33
|
-
|
|
73
|
+
};
|
|
74
|
+
this._handleTransitionEnd = (e) => {
|
|
75
|
+
if (e.propertyName !== 'height' || e.target !== this) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (!this.hidden && this.style.height !== '0px') {
|
|
34
79
|
this.style.height = 'auto';
|
|
35
|
-
}
|
|
80
|
+
}
|
|
36
81
|
};
|
|
37
82
|
this._collapse = () => {
|
|
38
|
-
this.
|
|
83
|
+
const currentHeight = this.getBoundingClientRect().height;
|
|
84
|
+
this._setHeight(`${currentHeight}px`);
|
|
39
85
|
requestAnimationFrame(() => {
|
|
40
|
-
|
|
86
|
+
requestAnimationFrame(() => {
|
|
87
|
+
this._setHeight('0px');
|
|
88
|
+
});
|
|
41
89
|
});
|
|
42
90
|
};
|
|
43
91
|
this.setAttribute('role', 'region');
|
|
92
|
+
this._boundHandleTransitionEnd = this._handleTransitionEnd.bind(this);
|
|
44
93
|
}
|
|
45
94
|
connectedCallback() {
|
|
46
95
|
super.connectedCallback();
|
|
47
96
|
this._contextConsumer = new context_consumer_controller.ContextConsumerController(this);
|
|
48
97
|
this._transitionController = new transition_controller.TransitionController(this, this.transitionName);
|
|
49
98
|
this._subscribeObserver();
|
|
50
|
-
window.addEventListener('resize', this.
|
|
51
|
-
this.
|
|
99
|
+
window.addEventListener('resize', this._handleResize, { passive: true });
|
|
100
|
+
this.addEventListener('transitionend', this._boundHandleTransitionEnd);
|
|
52
101
|
}
|
|
53
102
|
firstUpdated(props) {
|
|
54
103
|
super.firstUpdated(props);
|
|
@@ -61,12 +110,8 @@ exports.HAccordionContent = class HAccordionContent extends phoenix_light_lit_el
|
|
|
61
110
|
accordionProps.opened ? this._transitionController.show(this._expand) : this._transitionController.hide(this._collapse);
|
|
62
111
|
});
|
|
63
112
|
this._accordionGroupProps.subscribe(this._accordionGroupPropsObserver);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
this._setOriginalHeightValue();
|
|
67
|
-
this.hidden ? this._collapse() : this._expand();
|
|
68
|
-
});
|
|
69
|
-
mutationObserver.observe(this, { childList: true, subtree: true });
|
|
113
|
+
this._mutationObserver = new MutationObserver(this._handleMutation);
|
|
114
|
+
this._mutationObserver.observe(this, { childList: true, subtree: true });
|
|
70
115
|
}
|
|
71
116
|
_setHeight(height) {
|
|
72
117
|
this.style.height = height;
|
|
@@ -76,9 +121,18 @@ exports.HAccordionContent = class HAccordionContent extends phoenix_light_lit_el
|
|
|
76
121
|
this.setAttribute('labelledby', regionId);
|
|
77
122
|
}
|
|
78
123
|
disconnectedCallback() {
|
|
124
|
+
var _a, _b;
|
|
79
125
|
super.disconnectedCallback();
|
|
80
|
-
this._accordionGroupProps.unsubscribe(this._accordionGroupPropsObserver);
|
|
81
|
-
|
|
126
|
+
(_a = this._accordionGroupProps) === null || _a === void 0 ? void 0 : _a.unsubscribe(this._accordionGroupPropsObserver);
|
|
127
|
+
(_b = this._mutationObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
|
|
128
|
+
window.removeEventListener('resize', this._handleResize);
|
|
129
|
+
this.removeEventListener('transitionend', this._boundHandleTransitionEnd);
|
|
130
|
+
if (this._resizeDebounceTimer !== null) {
|
|
131
|
+
window.cancelAnimationFrame(this._resizeDebounceTimer);
|
|
132
|
+
}
|
|
133
|
+
if (this._mutationDebounceTimer !== null) {
|
|
134
|
+
window.clearTimeout(this._mutationDebounceTimer);
|
|
135
|
+
}
|
|
82
136
|
}
|
|
83
137
|
};
|
|
84
138
|
tslib_es6.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -10,8 +10,7 @@ class SelectOptionMapper {
|
|
|
10
10
|
const $optionContent = $option.querySelector(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.optionContent);
|
|
11
11
|
const optionContentText = ($optionContent === null || $optionContent === void 0 ? void 0 : $optionContent.textContent) || ($optionContent === null || $optionContent === void 0 ? void 0 : $optionContent.innerText);
|
|
12
12
|
const value = $option.getAttribute('value');
|
|
13
|
-
|
|
14
|
-
if (value === null || value === undefined)
|
|
13
|
+
if (!value)
|
|
15
14
|
throw new Error('h-option must contain a unique value');
|
|
16
15
|
if (!optionContentText)
|
|
17
16
|
throw new Error('h-options must contains a h-option-content element inside');
|
package/build/cjs/packages/phoenix/src/components/form/select/model/select_option_mapper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -44,6 +44,7 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
|
|
|
44
44
|
this.noDeselect = false;
|
|
45
45
|
this.assistiveTitleId = '';
|
|
46
46
|
this.translations = {};
|
|
47
|
+
this.selectedIndex = -1;
|
|
47
48
|
this._selectOptionsId = v4['default']();
|
|
48
49
|
this._searchValue = '';
|
|
49
50
|
this._$options = new Map();
|
|
@@ -57,8 +58,7 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
|
|
|
57
58
|
const $options = this._getOptions();
|
|
58
59
|
this._$options = $options.reduce((acc, $option) => {
|
|
59
60
|
const value = $option.getAttribute('value');
|
|
60
|
-
|
|
61
|
-
if (value === null || value === undefined)
|
|
61
|
+
if (!value)
|
|
62
62
|
throw Error('Select option must hava a value');
|
|
63
63
|
if (acc.has(value))
|
|
64
64
|
throw Error('Select options must hava a unique values.');
|
|
@@ -176,20 +176,6 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
|
|
|
176
176
|
if (this.multiple)
|
|
177
177
|
this.type = select_constants.SELECT_TYPES.multiple;
|
|
178
178
|
}
|
|
179
|
-
get selectedIndex() {
|
|
180
|
-
const selectedOptions = this._selectController.selectedOptions$.getValue();
|
|
181
|
-
if (!selectedOptions || selectedOptions.length === 0)
|
|
182
|
-
return -1;
|
|
183
|
-
const htmlOptions = Array.from(this._$options.values());
|
|
184
|
-
return this.multiple
|
|
185
|
-
? select_utils.SelectControlUtils.getFirstIndexSelectedOption(htmlOptions)
|
|
186
|
-
: select_utils.SelectControlUtils.getLastIndexOfSelectedOption(htmlOptions);
|
|
187
|
-
}
|
|
188
|
-
set selectedIndex(index) {
|
|
189
|
-
const option = Array.from(this._$options.values()).filter(($option) => !$option.hidden)[index];
|
|
190
|
-
option ? this._selectOption(option.value) : this._selectController.deselectAll();
|
|
191
|
-
Array.from(this._$options.values()).forEach(($option) => this.updateOptionAriaAttribute($option));
|
|
192
|
-
}
|
|
193
179
|
get selectedOptions() {
|
|
194
180
|
var _a;
|
|
195
181
|
const selectedOptions = (_a = this._selectController.selectedOptions$.getValue()) !== null && _a !== void 0 ? _a : [];
|
|
@@ -204,6 +190,20 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
|
|
|
204
190
|
get options() {
|
|
205
191
|
return Array.from(this._$options.values());
|
|
206
192
|
}
|
|
193
|
+
_getSelectedIndex() {
|
|
194
|
+
const selectedOptions = this._selectController.selectedOptions$.getValue();
|
|
195
|
+
if (!selectedOptions || selectedOptions.length === 0)
|
|
196
|
+
return -1;
|
|
197
|
+
const htmlOptions = Array.from(this._$options.values());
|
|
198
|
+
return this.multiple
|
|
199
|
+
? select_utils.SelectControlUtils.getFirstIndexSelectedOption(htmlOptions)
|
|
200
|
+
: select_utils.SelectControlUtils.getLastIndexOfSelectedOption(htmlOptions);
|
|
201
|
+
}
|
|
202
|
+
_applySelectedIndex(index) {
|
|
203
|
+
const option = Array.from(this._$options.values()).filter(($option) => !$option.hidden)[index];
|
|
204
|
+
option ? this._selectOption(option.value) : this._selectController.deselectAll();
|
|
205
|
+
Array.from(this._$options.values()).forEach(($option) => this.updateOptionAriaAttribute($option));
|
|
206
|
+
}
|
|
207
207
|
updated(changedProperties) {
|
|
208
208
|
var _a, _b;
|
|
209
209
|
super.updated(changedProperties);
|
|
@@ -218,7 +218,6 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
|
|
|
218
218
|
}
|
|
219
219
|
if (changedProperties.has('optionsList')) {
|
|
220
220
|
this._updateOptions();
|
|
221
|
-
this._addPlaceholderOptionIfNeeded();
|
|
222
221
|
}
|
|
223
222
|
if (this._$optionsList.value) {
|
|
224
223
|
(_a = this.listBoxController) === null || _a === void 0 ? void 0 : _a.hostDisconnected();
|
|
@@ -238,6 +237,12 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
|
|
|
238
237
|
$list: this._$optionsList.value
|
|
239
238
|
});
|
|
240
239
|
}
|
|
240
|
+
if (changedProperties.has('selectedIndex')) {
|
|
241
|
+
const currentIndex = this._getSelectedIndex();
|
|
242
|
+
if (this.selectedIndex !== currentIndex) {
|
|
243
|
+
this._applySelectedIndex(this.selectedIndex);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
241
246
|
}
|
|
242
247
|
_focusElementAfterSelectOpened() {
|
|
243
248
|
var _a;
|
|
@@ -267,7 +272,6 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
|
|
|
267
272
|
this._selectedOptionsAriaObserver = new observer.Observer((selectedOptions) => this._updateLabelAria(selectedOptions));
|
|
268
273
|
this._selectController.selectedOptions$.subscribe(this._selectedOptionsAriaObserver);
|
|
269
274
|
this._updateOptions();
|
|
270
|
-
this._addPlaceholderOptionIfNeeded();
|
|
271
275
|
this._setupEvents();
|
|
272
276
|
}
|
|
273
277
|
attributeChangedCallback(name, _old, value) {
|
|
@@ -280,38 +284,6 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
|
|
|
280
284
|
this.disabled ? this.classList.add(select_constants.SELECT_CSS_CLASSES.selectDisabled) : this.classList.remove(select_constants.SELECT_CSS_CLASSES.selectDisabled);
|
|
281
285
|
}
|
|
282
286
|
}
|
|
283
|
-
_addPlaceholderOptionIfNeeded() {
|
|
284
|
-
if (this.multiple)
|
|
285
|
-
return;
|
|
286
|
-
const selectedOptions = this._selectController.selectedOptions$.getValue();
|
|
287
|
-
if (selectedOptions && selectedOptions.length > 0)
|
|
288
|
-
return;
|
|
289
|
-
const $existingPlaceholder = this.querySelector('h-option[data-placeholder]');
|
|
290
|
-
if ($existingPlaceholder)
|
|
291
|
-
return;
|
|
292
|
-
const $placeholderOption = document.createElement('h-option');
|
|
293
|
-
$placeholderOption.value = '';
|
|
294
|
-
$placeholderOption.selected = true;
|
|
295
|
-
$placeholderOption.setAttribute('data-placeholder', 'true');
|
|
296
|
-
$placeholderOption.setAttribute('slot', select_constants.SELECT_SLOT_NAMES.content);
|
|
297
|
-
$placeholderOption.setAttribute('disabled', 'true');
|
|
298
|
-
const $optionContent = document.createElement(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.optionContent);
|
|
299
|
-
if (typeof this.$placeholder === 'string') {
|
|
300
|
-
$optionContent.textContent = this.$placeholder;
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
$optionContent.innerHTML = this.$placeholder.innerHTML;
|
|
304
|
-
}
|
|
305
|
-
$placeholderOption.appendChild($optionContent);
|
|
306
|
-
const firstOption = this.querySelector(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.option);
|
|
307
|
-
if (firstOption) {
|
|
308
|
-
this.insertBefore($placeholderOption, firstOption);
|
|
309
|
-
}
|
|
310
|
-
else {
|
|
311
|
-
this.appendChild($placeholderOption);
|
|
312
|
-
}
|
|
313
|
-
this._updateOptions();
|
|
314
|
-
}
|
|
315
287
|
_setupEvents() {
|
|
316
288
|
this.addEventListener(select_constants.SELECT_EVENT_NAMES.deselectOption, this._handleOptionDeselect);
|
|
317
289
|
this.addEventListener(select_components_constatns.SELECT_CLOSE_BTN_EVENT_NAMES.close, this._closeSelect);
|
|
@@ -564,6 +536,10 @@ tslib_es6.__decorate([
|
|
|
564
536
|
}),
|
|
565
537
|
tslib_es6.__metadata("design:type", Object)
|
|
566
538
|
], exports.HSelect.prototype, "translations", void 0);
|
|
539
|
+
tslib_es6.__decorate([
|
|
540
|
+
decorators_js.property({ type: Number, attribute: 'selected-index' }),
|
|
541
|
+
tslib_es6.__metadata("design:type", Number)
|
|
542
|
+
], exports.HSelect.prototype, "selectedIndex", void 0);
|
|
567
543
|
tslib_es6.__decorate([
|
|
568
544
|
decorators.state(),
|
|
569
545
|
tslib_es6.__metadata("design:type", String)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,+CAAmD;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,wDAA4D;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,+CAAmD;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,wDAA4D;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -7,14 +7,20 @@ export declare class HAccordionContent extends PhoenixLightLitElement {
|
|
|
7
7
|
private _accordionGroupProps;
|
|
8
8
|
private _accordionGroupPropsObserver;
|
|
9
9
|
private _originalHeight;
|
|
10
|
-
private
|
|
10
|
+
private _resizeDebounceTimer;
|
|
11
|
+
private _mutationDebounceTimer;
|
|
12
|
+
private _mutationObserver;
|
|
13
|
+
private _boundHandleTransitionEnd;
|
|
11
14
|
constructor();
|
|
12
15
|
connectedCallback(): void;
|
|
13
16
|
firstUpdated(props: PropertyValues): void;
|
|
17
|
+
private _handleResize;
|
|
14
18
|
private _setStylingOptions;
|
|
15
19
|
private _subscribeObserver;
|
|
20
|
+
private _handleMutation;
|
|
16
21
|
private _setOriginalHeightValue;
|
|
17
22
|
private _expand;
|
|
23
|
+
private _handleTransitionEnd;
|
|
18
24
|
private _collapse;
|
|
19
25
|
private _setHeight;
|
|
20
26
|
private _setAttributes;
|
|
@@ -8,43 +8,92 @@ import { ContextConsumerController } from '../../core/context/context_consumer_c
|
|
|
8
8
|
import { ACCORDION_CONTEXTS } from './accordion_constants.js';
|
|
9
9
|
import { TransitionController } from '../../controllers/transition_controller/transition_controller.js';
|
|
10
10
|
|
|
11
|
+
const RESIZE_DEBOUNCE_MS = 150;
|
|
12
|
+
const MUTATION_DEBOUNCE_MS = 100;
|
|
11
13
|
let HAccordionContent = class HAccordionContent extends PhoenixLightLitElement {
|
|
12
14
|
constructor() {
|
|
13
15
|
super();
|
|
14
16
|
this.transitionName = 'accordion-toggle';
|
|
17
|
+
this._resizeDebounceTimer = null;
|
|
18
|
+
this._mutationDebounceTimer = null;
|
|
19
|
+
this._mutationObserver = null;
|
|
20
|
+
this._handleResize = () => {
|
|
21
|
+
if (this._resizeDebounceTimer !== null) {
|
|
22
|
+
window.cancelAnimationFrame(this._resizeDebounceTimer);
|
|
23
|
+
}
|
|
24
|
+
this._resizeDebounceTimer = window.requestAnimationFrame(() => {
|
|
25
|
+
setTimeout(() => {
|
|
26
|
+
this._setStylingOptions();
|
|
27
|
+
}, RESIZE_DEBOUNCE_MS);
|
|
28
|
+
});
|
|
29
|
+
};
|
|
15
30
|
this._setStylingOptions = () => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
31
|
+
requestAnimationFrame(() => {
|
|
32
|
+
const previousDisplay = this.style.display;
|
|
33
|
+
this.style.display = 'block';
|
|
34
|
+
this.style.height = 'auto';
|
|
35
|
+
requestAnimationFrame(() => {
|
|
36
|
+
this._setOriginalHeightValue();
|
|
37
|
+
this.style.display = previousDisplay;
|
|
38
|
+
this.style.height = this.hidden ? '0px' : this._originalHeight;
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
this._handleMutation = () => {
|
|
43
|
+
if (this._mutationDebounceTimer !== null) {
|
|
44
|
+
window.clearTimeout(this._mutationDebounceTimer);
|
|
45
|
+
}
|
|
46
|
+
this._mutationDebounceTimer = window.setTimeout(() => {
|
|
47
|
+
requestAnimationFrame(() => {
|
|
48
|
+
this.style.height = 'auto';
|
|
49
|
+
requestAnimationFrame(() => {
|
|
50
|
+
this._setOriginalHeightValue();
|
|
51
|
+
if (this.hidden) {
|
|
52
|
+
this.style.height = '0px';
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.style.height = this._originalHeight;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}, MUTATION_DEBOUNCE_MS);
|
|
21
60
|
};
|
|
22
61
|
this._setOriginalHeightValue = () => {
|
|
23
62
|
const newHeight = this.getBoundingClientRect().height;
|
|
24
|
-
if (newHeight !== 0 || this.children.length === 0)
|
|
63
|
+
if (newHeight !== 0 || this.children.length === 0) {
|
|
25
64
|
this._originalHeight = `${newHeight}px`;
|
|
65
|
+
}
|
|
26
66
|
};
|
|
27
67
|
this._expand = () => {
|
|
28
68
|
this._setHeight(this._originalHeight);
|
|
29
|
-
|
|
69
|
+
};
|
|
70
|
+
this._handleTransitionEnd = (e) => {
|
|
71
|
+
if (e.propertyName !== 'height' || e.target !== this) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (!this.hidden && this.style.height !== '0px') {
|
|
30
75
|
this.style.height = 'auto';
|
|
31
|
-
}
|
|
76
|
+
}
|
|
32
77
|
};
|
|
33
78
|
this._collapse = () => {
|
|
34
|
-
this.
|
|
79
|
+
const currentHeight = this.getBoundingClientRect().height;
|
|
80
|
+
this._setHeight(`${currentHeight}px`);
|
|
35
81
|
requestAnimationFrame(() => {
|
|
36
|
-
|
|
82
|
+
requestAnimationFrame(() => {
|
|
83
|
+
this._setHeight('0px');
|
|
84
|
+
});
|
|
37
85
|
});
|
|
38
86
|
};
|
|
39
87
|
this.setAttribute('role', 'region');
|
|
88
|
+
this._boundHandleTransitionEnd = this._handleTransitionEnd.bind(this);
|
|
40
89
|
}
|
|
41
90
|
connectedCallback() {
|
|
42
91
|
super.connectedCallback();
|
|
43
92
|
this._contextConsumer = new ContextConsumerController(this);
|
|
44
93
|
this._transitionController = new TransitionController(this, this.transitionName);
|
|
45
94
|
this._subscribeObserver();
|
|
46
|
-
window.addEventListener('resize', this.
|
|
47
|
-
this.
|
|
95
|
+
window.addEventListener('resize', this._handleResize, { passive: true });
|
|
96
|
+
this.addEventListener('transitionend', this._boundHandleTransitionEnd);
|
|
48
97
|
}
|
|
49
98
|
firstUpdated(props) {
|
|
50
99
|
super.firstUpdated(props);
|
|
@@ -57,12 +106,8 @@ let HAccordionContent = class HAccordionContent extends PhoenixLightLitElement {
|
|
|
57
106
|
accordionProps.opened ? this._transitionController.show(this._expand) : this._transitionController.hide(this._collapse);
|
|
58
107
|
});
|
|
59
108
|
this._accordionGroupProps.subscribe(this._accordionGroupPropsObserver);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
this._setOriginalHeightValue();
|
|
63
|
-
this.hidden ? this._collapse() : this._expand();
|
|
64
|
-
});
|
|
65
|
-
mutationObserver.observe(this, { childList: true, subtree: true });
|
|
109
|
+
this._mutationObserver = new MutationObserver(this._handleMutation);
|
|
110
|
+
this._mutationObserver.observe(this, { childList: true, subtree: true });
|
|
66
111
|
}
|
|
67
112
|
_setHeight(height) {
|
|
68
113
|
this.style.height = height;
|
|
@@ -72,9 +117,18 @@ let HAccordionContent = class HAccordionContent extends PhoenixLightLitElement {
|
|
|
72
117
|
this.setAttribute('labelledby', regionId);
|
|
73
118
|
}
|
|
74
119
|
disconnectedCallback() {
|
|
120
|
+
var _a, _b;
|
|
75
121
|
super.disconnectedCallback();
|
|
76
|
-
this._accordionGroupProps.unsubscribe(this._accordionGroupPropsObserver);
|
|
77
|
-
|
|
122
|
+
(_a = this._accordionGroupProps) === null || _a === void 0 ? void 0 : _a.unsubscribe(this._accordionGroupPropsObserver);
|
|
123
|
+
(_b = this._mutationObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
|
|
124
|
+
window.removeEventListener('resize', this._handleResize);
|
|
125
|
+
this.removeEventListener('transitionend', this._boundHandleTransitionEnd);
|
|
126
|
+
if (this._resizeDebounceTimer !== null) {
|
|
127
|
+
window.cancelAnimationFrame(this._resizeDebounceTimer);
|
|
128
|
+
}
|
|
129
|
+
if (this._mutationDebounceTimer !== null) {
|
|
130
|
+
window.clearTimeout(this._mutationDebounceTimer);
|
|
131
|
+
}
|
|
78
132
|
}
|
|
79
133
|
};
|
|
80
134
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -6,8 +6,7 @@ class SelectOptionMapper {
|
|
|
6
6
|
const $optionContent = $option.querySelector(SELECT_RELATED_COMPONENTS_NAMES.optionContent);
|
|
7
7
|
const optionContentText = ($optionContent === null || $optionContent === void 0 ? void 0 : $optionContent.textContent) || ($optionContent === null || $optionContent === void 0 ? void 0 : $optionContent.innerText);
|
|
8
8
|
const value = $option.getAttribute('value');
|
|
9
|
-
|
|
10
|
-
if (value === null || value === undefined)
|
|
9
|
+
if (!value)
|
|
11
10
|
throw new Error('h-option must contain a unique value');
|
|
12
11
|
if (!optionContentText)
|
|
13
12
|
throw new Error('h-options must contains a h-option-content element inside');
|
package/build/esm/packages/phoenix/src/components/form/select/model/select_option_mapper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -24,9 +24,8 @@ export declare class HSelect extends PhoenixLightLitElement {
|
|
|
24
24
|
noDeselect: boolean;
|
|
25
25
|
assistiveTitleId: string;
|
|
26
26
|
translations: Record<string, string>;
|
|
27
|
+
selectedIndex: number;
|
|
27
28
|
private _selectOptionsId;
|
|
28
|
-
get selectedIndex(): number;
|
|
29
|
-
set selectedIndex(index: number);
|
|
30
29
|
get selectedOptions(): (HOption | undefined)[];
|
|
31
30
|
get name(): string;
|
|
32
31
|
get id(): string;
|
|
@@ -47,13 +46,14 @@ export declare class HSelect extends PhoenixLightLitElement {
|
|
|
47
46
|
private $placeholder;
|
|
48
47
|
private $searchLabel;
|
|
49
48
|
constructor();
|
|
49
|
+
private _getSelectedIndex;
|
|
50
|
+
private _applySelectedIndex;
|
|
50
51
|
updated(changedProperties: PropertyValues): void;
|
|
51
52
|
private _focusElementAfterSelectOpened;
|
|
52
53
|
connectedCallback(): void;
|
|
53
54
|
attributeChangedCallback(name: string, _old: string | null, value: string | null): void;
|
|
54
55
|
private _updateOptions;
|
|
55
56
|
private _getOptions;
|
|
56
|
-
private _addPlaceholderOptionIfNeeded;
|
|
57
57
|
private _setupEvents;
|
|
58
58
|
private _handleOptionDeselect;
|
|
59
59
|
private _updateOptionsView;
|
|
@@ -40,6 +40,7 @@ let HSelect = class HSelect extends PhoenixLightLitElement {
|
|
|
40
40
|
this.noDeselect = false;
|
|
41
41
|
this.assistiveTitleId = '';
|
|
42
42
|
this.translations = {};
|
|
43
|
+
this.selectedIndex = -1;
|
|
43
44
|
this._selectOptionsId = v4();
|
|
44
45
|
this._searchValue = '';
|
|
45
46
|
this._$options = new Map();
|
|
@@ -53,8 +54,7 @@ let HSelect = class HSelect extends PhoenixLightLitElement {
|
|
|
53
54
|
const $options = this._getOptions();
|
|
54
55
|
this._$options = $options.reduce((acc, $option) => {
|
|
55
56
|
const value = $option.getAttribute('value');
|
|
56
|
-
|
|
57
|
-
if (value === null || value === undefined)
|
|
57
|
+
if (!value)
|
|
58
58
|
throw Error('Select option must hava a value');
|
|
59
59
|
if (acc.has(value))
|
|
60
60
|
throw Error('Select options must hava a unique values.');
|
|
@@ -172,20 +172,6 @@ let HSelect = class HSelect extends PhoenixLightLitElement {
|
|
|
172
172
|
if (this.multiple)
|
|
173
173
|
this.type = SELECT_TYPES.multiple;
|
|
174
174
|
}
|
|
175
|
-
get selectedIndex() {
|
|
176
|
-
const selectedOptions = this._selectController.selectedOptions$.getValue();
|
|
177
|
-
if (!selectedOptions || selectedOptions.length === 0)
|
|
178
|
-
return -1;
|
|
179
|
-
const htmlOptions = Array.from(this._$options.values());
|
|
180
|
-
return this.multiple
|
|
181
|
-
? SelectControlUtils.getFirstIndexSelectedOption(htmlOptions)
|
|
182
|
-
: SelectControlUtils.getLastIndexOfSelectedOption(htmlOptions);
|
|
183
|
-
}
|
|
184
|
-
set selectedIndex(index) {
|
|
185
|
-
const option = Array.from(this._$options.values()).filter(($option) => !$option.hidden)[index];
|
|
186
|
-
option ? this._selectOption(option.value) : this._selectController.deselectAll();
|
|
187
|
-
Array.from(this._$options.values()).forEach(($option) => this.updateOptionAriaAttribute($option));
|
|
188
|
-
}
|
|
189
175
|
get selectedOptions() {
|
|
190
176
|
var _a;
|
|
191
177
|
const selectedOptions = (_a = this._selectController.selectedOptions$.getValue()) !== null && _a !== void 0 ? _a : [];
|
|
@@ -200,6 +186,20 @@ let HSelect = class HSelect extends PhoenixLightLitElement {
|
|
|
200
186
|
get options() {
|
|
201
187
|
return Array.from(this._$options.values());
|
|
202
188
|
}
|
|
189
|
+
_getSelectedIndex() {
|
|
190
|
+
const selectedOptions = this._selectController.selectedOptions$.getValue();
|
|
191
|
+
if (!selectedOptions || selectedOptions.length === 0)
|
|
192
|
+
return -1;
|
|
193
|
+
const htmlOptions = Array.from(this._$options.values());
|
|
194
|
+
return this.multiple
|
|
195
|
+
? SelectControlUtils.getFirstIndexSelectedOption(htmlOptions)
|
|
196
|
+
: SelectControlUtils.getLastIndexOfSelectedOption(htmlOptions);
|
|
197
|
+
}
|
|
198
|
+
_applySelectedIndex(index) {
|
|
199
|
+
const option = Array.from(this._$options.values()).filter(($option) => !$option.hidden)[index];
|
|
200
|
+
option ? this._selectOption(option.value) : this._selectController.deselectAll();
|
|
201
|
+
Array.from(this._$options.values()).forEach(($option) => this.updateOptionAriaAttribute($option));
|
|
202
|
+
}
|
|
203
203
|
updated(changedProperties) {
|
|
204
204
|
var _a, _b;
|
|
205
205
|
super.updated(changedProperties);
|
|
@@ -214,7 +214,6 @@ let HSelect = class HSelect extends PhoenixLightLitElement {
|
|
|
214
214
|
}
|
|
215
215
|
if (changedProperties.has('optionsList')) {
|
|
216
216
|
this._updateOptions();
|
|
217
|
-
this._addPlaceholderOptionIfNeeded();
|
|
218
217
|
}
|
|
219
218
|
if (this._$optionsList.value) {
|
|
220
219
|
(_a = this.listBoxController) === null || _a === void 0 ? void 0 : _a.hostDisconnected();
|
|
@@ -234,6 +233,12 @@ let HSelect = class HSelect extends PhoenixLightLitElement {
|
|
|
234
233
|
$list: this._$optionsList.value
|
|
235
234
|
});
|
|
236
235
|
}
|
|
236
|
+
if (changedProperties.has('selectedIndex')) {
|
|
237
|
+
const currentIndex = this._getSelectedIndex();
|
|
238
|
+
if (this.selectedIndex !== currentIndex) {
|
|
239
|
+
this._applySelectedIndex(this.selectedIndex);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
237
242
|
}
|
|
238
243
|
_focusElementAfterSelectOpened() {
|
|
239
244
|
var _a;
|
|
@@ -263,7 +268,6 @@ let HSelect = class HSelect extends PhoenixLightLitElement {
|
|
|
263
268
|
this._selectedOptionsAriaObserver = new Observer((selectedOptions) => this._updateLabelAria(selectedOptions));
|
|
264
269
|
this._selectController.selectedOptions$.subscribe(this._selectedOptionsAriaObserver);
|
|
265
270
|
this._updateOptions();
|
|
266
|
-
this._addPlaceholderOptionIfNeeded();
|
|
267
271
|
this._setupEvents();
|
|
268
272
|
}
|
|
269
273
|
attributeChangedCallback(name, _old, value) {
|
|
@@ -276,38 +280,6 @@ let HSelect = class HSelect extends PhoenixLightLitElement {
|
|
|
276
280
|
this.disabled ? this.classList.add(SELECT_CSS_CLASSES.selectDisabled) : this.classList.remove(SELECT_CSS_CLASSES.selectDisabled);
|
|
277
281
|
}
|
|
278
282
|
}
|
|
279
|
-
_addPlaceholderOptionIfNeeded() {
|
|
280
|
-
if (this.multiple)
|
|
281
|
-
return;
|
|
282
|
-
const selectedOptions = this._selectController.selectedOptions$.getValue();
|
|
283
|
-
if (selectedOptions && selectedOptions.length > 0)
|
|
284
|
-
return;
|
|
285
|
-
const $existingPlaceholder = this.querySelector('h-option[data-placeholder]');
|
|
286
|
-
if ($existingPlaceholder)
|
|
287
|
-
return;
|
|
288
|
-
const $placeholderOption = document.createElement('h-option');
|
|
289
|
-
$placeholderOption.value = '';
|
|
290
|
-
$placeholderOption.selected = true;
|
|
291
|
-
$placeholderOption.setAttribute('data-placeholder', 'true');
|
|
292
|
-
$placeholderOption.setAttribute('slot', SELECT_SLOT_NAMES.content);
|
|
293
|
-
$placeholderOption.setAttribute('disabled', 'true');
|
|
294
|
-
const $optionContent = document.createElement(SELECT_RELATED_COMPONENTS_NAMES.optionContent);
|
|
295
|
-
if (typeof this.$placeholder === 'string') {
|
|
296
|
-
$optionContent.textContent = this.$placeholder;
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
$optionContent.innerHTML = this.$placeholder.innerHTML;
|
|
300
|
-
}
|
|
301
|
-
$placeholderOption.appendChild($optionContent);
|
|
302
|
-
const firstOption = this.querySelector(SELECT_RELATED_COMPONENTS_NAMES.option);
|
|
303
|
-
if (firstOption) {
|
|
304
|
-
this.insertBefore($placeholderOption, firstOption);
|
|
305
|
-
}
|
|
306
|
-
else {
|
|
307
|
-
this.appendChild($placeholderOption);
|
|
308
|
-
}
|
|
309
|
-
this._updateOptions();
|
|
310
|
-
}
|
|
311
283
|
_setupEvents() {
|
|
312
284
|
this.addEventListener(SELECT_EVENT_NAMES.deselectOption, this._handleOptionDeselect);
|
|
313
285
|
this.addEventListener(SELECT_CLOSE_BTN_EVENT_NAMES.close, this._closeSelect);
|
|
@@ -560,6 +532,10 @@ __decorate([
|
|
|
560
532
|
}),
|
|
561
533
|
__metadata("design:type", Object)
|
|
562
534
|
], HSelect.prototype, "translations", void 0);
|
|
535
|
+
__decorate([
|
|
536
|
+
property({ type: Number, attribute: 'selected-index' }),
|
|
537
|
+
__metadata("design:type", Number)
|
|
538
|
+
], HSelect.prototype, "selectedIndex", void 0);
|
|
563
539
|
__decorate([
|
|
564
540
|
state(),
|
|
565
541
|
__metadata("design:type", String)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,+CAAmD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAA4D;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,+CAAmD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAA4D;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|