update to simpler sorting

This commit is contained in:
Arthur
2026-01-14 14:29:08 -08:00
parent 20f52153a4
commit 6317bcc657
3 changed files with 14 additions and 26 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -75,15 +75,11 @@ export class DynamicTomSelect extends TomSelect {
load(value: string) { load(value: string) {
const self = this; const self = this;
const currentValue = self.getValue();
// Automatically clear any cached options. (Only options included // Automatically clear any cached options. (Only options included
// in the API response should be present.) // in the API response should be present.)
self.clearOptions(); self.clearOptions();
// Clear user_options to prevent the pre-selected option from being treated specially // Populate the null option (if any) if not searching
(self as any).user_options = {};
if (self.nullOption && !value) { if (self.nullOption && !value) {
self.addOption(self.nullOption); self.addOption(self.nullOption);
} }
@@ -97,29 +93,21 @@ export class DynamicTomSelect extends TomSelect {
addClasses(self.wrapper, self.settings.loadingClass); addClasses(self.wrapper, self.settings.loadingClass);
self.loading++; self.loading++;
// Make the API request
fetch(url) fetch(url)
.then(response => response.json()) .then(response => response.json())
.then(apiData => { .then(apiData => {
const results: Dict[] = apiData.results; const results: Dict[] = apiData.results;
const options: Dict[] = [];
// Add options (TomSelect automatically preserves insertion order via $order) for (const result of results) {
results.forEach((result) => {
const option = self.getOptionFromData(result); const option = self.getOptionFromData(result);
self.addOption(option); options.push(option);
});
if (self.loading > 0) {
self.loading--;
if (self.loading === 0) {
self.wrapper.classList.remove(self.settings.loadingClass as string);
}
} }
return options;
if (currentValue && !self.items.includes(currentValue as string)) { })
self.items.push(currentValue as string); // Pass the options to the callback function
} .then(options => {
self.loadCallback(options, []);
self.refreshOptions(false);
}) })
.catch(() => { .catch(() => {
self.loadCallback([], []); self.loadCallback([], []);