Skip to content

Commit 9834e8d

Browse files
committed
Use a stimulus value changed callback to reset the select if the url value changes
1 parent a617ad1 commit 9834e8d

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
@@ -52,7 +52,6 @@ export default class extends Controller {
5252
private isObserving = false;
5353
private hasLoadedChoicesPreviously = false;
5454
private originalOptions: Array<OptionDataStructure> = [];
55-
private isRemoteOptions = false;
5655

5756
initialize() {
5857
if (!this.mutationObserver) {
@@ -83,9 +82,6 @@ export default class extends Controller {
8382
this.hasMinCharactersValue ? this.minCharactersValue : null
8483
);
8584

86-
this.isRemoteOptions = true;
87-
this.startMutationObserver();
88-
8985
return;
9086
}
9187

@@ -132,6 +128,10 @@ export default class extends Controller {
132128
}
133129
}
134130

131+
urlValueChanged() {
132+
this.resetTomSelect();
133+
}
134+
135135
#getCommonConfig(): Partial<TomSettings> {
136136
const plugins: TPluginHash = {};
137137

@@ -453,21 +453,12 @@ export default class extends Controller {
453453
break;
454454
}
455455

456-
if (
457-
mutation.target === this.element &&
458-
mutation.attributeName.match(/data-(symfony--ux-)?autocomplete/)
459-
) {
460-
requireReset = true;
461-
462-
break;
463-
}
464-
465456
break;
466457
}
467458
});
468459

469460
const newOptions = this.selectElement ? this.createOptionsDataStructure(this.selectElement) : [];
470-
const areOptionsEquivalent = this.isRemoteOptions || this.areOptionsEquivalent(newOptions);
461+
const areOptionsEquivalent = this.areOptionsEquivalent(newOptions);
471462
if (!areOptionsEquivalent || requireReset) {
472463
this.originalOptions = newOptions;
473464
this.resetTomSelect();

0 commit comments

Comments
 (0)