Skip to content

Commit 9a3f821

Browse files
committed
Use a stimulus value changed callback to reset the select if the url value changes
1 parent 35be543 commit 9a3f821

File tree

3 files changed

+10
-24
lines changed

3 files changed

+10
-24
lines changed

src/Autocomplete/assets/dist/controller.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ export default class extends Controller {
3636
private isObserving;
3737
private hasLoadedChoicesPreviously;
3838
private originalOptions;
39-
private isRemoteOptions;
4039
initialize(): void;
4140
connect(): void;
4241
initializeTomSelect(): void;
4342
disconnect(): void;
43+
urlValueChanged(): void;
4444
private getMaxOptions;
4545
get selectElement(): HTMLSelectElement | null;
4646
get formElement(): HTMLInputElement | HTMLSelectElement;

src/Autocomplete/assets/dist/controller.js

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ class default_1 extends Controller {
3737
this.isObserving = false;
3838
this.hasLoadedChoicesPreviously = false;
3939
this.originalOptions = [];
40-
this.isRemoteOptions = false;
4140
}
4241
initialize() {
4342
if (!this.mutationObserver) {
@@ -58,8 +57,6 @@ class default_1 extends Controller {
5857
}
5958
if (this.urlValue) {
6059
this.tomSelect = __classPrivateFieldGet(this, _default_1_instances, "m", _default_1_createAutocompleteWithRemoteData).call(this, this.urlValue, this.hasMinCharactersValue ? this.minCharactersValue : null);
61-
this.isRemoteOptions = true;
62-
this.startMutationObserver();
6360
return;
6461
}
6562
if (this.optionsAsHtmlValue) {
@@ -94,6 +91,9 @@ class default_1 extends Controller {
9491
}
9592
}
9693
}
94+
urlValueChanged() {
95+
this.resetTomSelect();
96+
}
9797
getMaxOptions() {
9898
return this.selectElement ? this.selectElement.options.length : 50;
9999
}
@@ -183,16 +183,11 @@ class default_1 extends Controller {
183183
}
184184
break;
185185
}
186-
if (mutation.target === this.element &&
187-
mutation.attributeName.match(/data-(symfony--ux-)?autocomplete/)) {
188-
requireReset = true;
189-
break;
190-
}
191186
break;
192187
}
193188
});
194189
const newOptions = this.selectElement ? this.createOptionsDataStructure(this.selectElement) : [];
195-
const areOptionsEquivalent = this.isRemoteOptions || this.areOptionsEquivalent(newOptions);
190+
const areOptionsEquivalent = this.areOptionsEquivalent(newOptions);
196191
if (!areOptionsEquivalent || requireReset) {
197192
this.originalOptions = newOptions;
198193
this.resetTomSelect();

src/Autocomplete/assets/src/controller.ts

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ export default class extends Controller {
4848
private isObserving = false;
4949
private hasLoadedChoicesPreviously = false;
5050
private originalOptions: Array<{ value: string; text: string; group: string | null }> = [];
51-
private isRemoteOptions = false;
5251

5352
initialize() {
5453
if (!this.mutationObserver) {
@@ -79,9 +78,6 @@ export default class extends Controller {
7978
this.hasMinCharactersValue ? this.minCharactersValue : null
8079
);
8180

82-
this.isRemoteOptions = true;
83-
this.startMutationObserver();
84-
8581
return;
8682
}
8783

@@ -128,6 +124,10 @@ export default class extends Controller {
128124
}
129125
}
130126

127+
urlValueChanged() {
128+
this.resetTomSelect();
129+
}
130+
131131
#getCommonConfig(): Partial<TomSettings> {
132132
const plugins: TPluginHash = {};
133133

@@ -402,21 +402,12 @@ export default class extends Controller {
402402
break;
403403
}
404404

405-
if (
406-
mutation.target === this.element &&
407-
mutation.attributeName.match(/data-(symfony--ux-)?autocomplete/)
408-
) {
409-
requireReset = true;
410-
411-
break;
412-
}
413-
414405
break;
415406
}
416407
});
417408

418409
const newOptions = this.selectElement ? this.createOptionsDataStructure(this.selectElement) : [];
419-
const areOptionsEquivalent = this.isRemoteOptions || this.areOptionsEquivalent(newOptions);
410+
const areOptionsEquivalent = this.areOptionsEquivalent(newOptions);
420411
if (!areOptionsEquivalent || requireReset) {
421412
this.originalOptions = newOptions;
422413
this.resetTomSelect();

0 commit comments

Comments
 (0)