Skip to content

Commit 71be8c9

Browse files
committed
Use a stimulus value changed callback to reset the select if the url value changes
1 parent b81a70b commit 71be8c9

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
@@ -34,11 +34,11 @@ export default class extends Controller {
3434
private isObserving;
3535
private hasLoadedChoicesPreviously;
3636
private originalOptions;
37-
private isRemoteOptions;
3837
initialize(): void;
3938
connect(): void;
4039
initializeTomSelect(): void;
4140
disconnect(): void;
41+
urlValueChanged(): void;
4242
private getMaxOptions;
4343
get selectElement(): HTMLSelectElement | null;
4444
get formElement(): HTMLInputElement | HTMLSelectElement;

src/Autocomplete/assets/dist/controller.js

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ class default_1 extends Controller {
3030
this.isObserving = false;
3131
this.hasLoadedChoicesPreviously = false;
3232
this.originalOptions = [];
33-
this.isRemoteOptions = false;
3433
}
3534
initialize() {
3635
if (!this.mutationObserver) {
@@ -51,8 +50,6 @@ class default_1 extends Controller {
5150
}
5251
if (this.urlValue) {
5352
this.tomSelect = __classPrivateFieldGet(this, _default_1_instances, "m", _default_1_createAutocompleteWithRemoteData).call(this, this.urlValue, this.hasMinCharactersValue ? this.minCharactersValue : null);
54-
this.isRemoteOptions = true;
55-
this.startMutationObserver();
5653
return;
5754
}
5855
if (this.optionsAsHtmlValue) {
@@ -87,6 +84,9 @@ class default_1 extends Controller {
8784
}
8885
}
8986
}
87+
urlValueChanged() {
88+
this.resetTomSelect();
89+
}
9090
getMaxOptions() {
9191
return this.selectElement ? this.selectElement.options.length : 50;
9292
}
@@ -170,16 +170,11 @@ class default_1 extends Controller {
170170
requireReset = true;
171171
break;
172172
}
173-
if (mutation.target === this.element &&
174-
mutation.attributeName.match(/data-(symfony--ux-)?autocomplete/)) {
175-
requireReset = true;
176-
break;
177-
}
178173
break;
179174
}
180175
});
181176
const newOptions = this.selectElement ? this.createOptionsDataStructure(this.selectElement) : [];
182-
const areOptionsEquivalent = this.isRemoteOptions || this.areOptionsEquivalent(newOptions);
177+
const areOptionsEquivalent = this.areOptionsEquivalent(newOptions);
183178
if (!areOptionsEquivalent || requireReset) {
184179
this.originalOptions = newOptions;
185180
this.resetTomSelect();

src/Autocomplete/assets/src/controller.ts

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ export default class extends Controller {
3939
private isObserving = false;
4040
private hasLoadedChoicesPreviously = false;
4141
private originalOptions: Array<{ value: string; text: string; group: string | null }> = [];
42-
private isRemoteOptions = false;
4342

4443
initialize() {
4544
if (!this.mutationObserver) {
@@ -70,9 +69,6 @@ export default class extends Controller {
7069
this.hasMinCharactersValue ? this.minCharactersValue : null
7170
);
7271

73-
this.isRemoteOptions = true;
74-
this.startMutationObserver();
75-
7672
return;
7773
}
7874

@@ -119,6 +115,10 @@ export default class extends Controller {
119115
}
120116
}
121117

118+
urlValueChanged() {
119+
this.resetTomSelect();
120+
}
121+
122122
#getCommonConfig(): Partial<TomSettings> {
123123
const plugins: TPluginHash = {};
124124

@@ -393,21 +393,12 @@ export default class extends Controller {
393393
break;
394394
}
395395

396-
if (
397-
mutation.target === this.element &&
398-
mutation.attributeName.match(/data-(symfony--ux-)?autocomplete/)
399-
) {
400-
requireReset = true;
401-
402-
break;
403-
}
404-
405396
break;
406397
}
407398
});
408399

409400
const newOptions = this.selectElement ? this.createOptionsDataStructure(this.selectElement) : [];
410-
const areOptionsEquivalent = this.isRemoteOptions || this.areOptionsEquivalent(newOptions);
401+
const areOptionsEquivalent = this.areOptionsEquivalent(newOptions);
411402
if (!areOptionsEquivalent || requireReset) {
412403
this.originalOptions = newOptions;
413404
this.resetTomSelect();

0 commit comments

Comments
 (0)