mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-23 14:43:22 +00:00
Sli
7b41051d0d
* Don't tie the output name to webpack itself * Don't call js bundling webpack in python code * Make the doc more generic about js bundling
61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
import { AjaxSelect } from "#core:core/components/ajax-select-base";
|
|
import { registerComponent } from "#core:utils/web-components";
|
|
import type { TomOption } from "tom-select/dist/types/types";
|
|
import type { escape_html } from "tom-select/dist/types/utils";
|
|
import {
|
|
type ClubAccountSchema,
|
|
type CompanySchema,
|
|
accountingSearchClubAccount,
|
|
accountingSearchCompany,
|
|
} from "#openapi";
|
|
|
|
@registerComponent("club-account-ajax-select")
|
|
export class ClubAccountAjaxSelect extends AjaxSelect {
|
|
protected valueField = "id";
|
|
protected labelField = "name";
|
|
protected searchField = ["code", "name"];
|
|
|
|
protected async search(query: string): Promise<TomOption[]> {
|
|
const resp = await accountingSearchClubAccount({ query: { search: query } });
|
|
if (resp.data) {
|
|
return resp.data.results;
|
|
}
|
|
return [];
|
|
}
|
|
|
|
protected renderOption(item: ClubAccountSchema, sanitize: typeof escape_html) {
|
|
return `<div class="select-item">
|
|
<span class="select-item-text">${sanitize(item.name)}</span>
|
|
</div>`;
|
|
}
|
|
|
|
protected renderItem(item: ClubAccountSchema, sanitize: typeof escape_html) {
|
|
return `<span>${sanitize(item.name)}</span>`;
|
|
}
|
|
}
|
|
|
|
@registerComponent("company-ajax-select")
|
|
export class CompanyAjaxSelect extends AjaxSelect {
|
|
protected valueField = "id";
|
|
protected labelField = "name";
|
|
protected searchField = ["code", "name"];
|
|
|
|
protected async search(query: string): Promise<TomOption[]> {
|
|
const resp = await accountingSearchCompany({ query: { search: query } });
|
|
if (resp.data) {
|
|
return resp.data.results;
|
|
}
|
|
return [];
|
|
}
|
|
|
|
protected renderOption(item: CompanySchema, sanitize: typeof escape_html) {
|
|
return `<div class="select-item">
|
|
<span class="select-item-text">${sanitize(item.name)}</span>
|
|
</div>`;
|
|
}
|
|
|
|
protected renderItem(item: CompanySchema, sanitize: typeof escape_html) {
|
|
return `<span>${sanitize(item.name)}</span>`;
|
|
}
|
|
}
|