@koalarx/ui
Version:
Koala UI is a Design System developed in Angular whose objective is to facilitate and make your development faster and simpler, making this framework your greatest ally.
105 lines • 15.2 kB
JavaScript
import { KoalaDynamicComponent } from "@koalarx/ui/dynamic-component";
import { BehaviorSubject, Observable } from "rxjs";
import { first } from "rxjs/operators";
export class ListBuilder {
constructor() {
this.config = {};
}
service(service, type = "all", resultIndexName, qtdResultIndexName) {
this.config.typeRequest = type;
this.config.responseIndexName = resultIndexName;
this.config.responseQtdResultIndexName = response => response[qtdResultIndexName ?? ''] ?? [];
this.config.columnSort = this.config?.filterParams?.getValue()?.sort;
this.config.sortDirection = this.config?.filterParams?.getValue()?.order ?? 'asc';
const response = service(this.config.filterParams ?? null);
if (response instanceof Promise) {
this.config.request = new Observable(observe => {
response.then(response => observe.next(response))
.catch(error => observe.error(error));
}).pipe(first());
}
else {
this.config.request = new Observable(observe => {
service(this.config.filterParams ?? null).pipe(first()).subscribe(observe);
}).pipe(first());
}
return this;
}
filterConfig(config) {
this.config.filterFormConfig = config;
return this;
}
defaultFilter(config) {
this.config.filterParams = new BehaviorSubject(config);
return this;
}
pageSize(size) {
this.config.pageSize = size;
return this;
}
columns(columns) {
this.config.columnsToShowInList = columns;
return this;
}
itemColumn(item) {
(this.config.itemsList?.length > 0) ?
this.config.itemsList.push(item) :
this.config.itemsList = [item];
return this;
}
actionList(item) {
(this.config.itemsMenuListOptions?.length ?? 0 > 0) ?
this.config.itemsMenuListOptions?.push(item) :
this.config.itemsMenuListOptions = [item];
return this;
}
getDataSource(fn) {
this.config.getDataSource = fn;
return this;
}
getSelectionList(fn) {
this.config.getSelectionList = fn;
return this;
}
emptyListComponent(component, data) {
this.config.emptyListComponent = new KoalaDynamicComponent(component, data);
return this;
}
errorListComponent(component, data) {
this.config.errorListComponent = new KoalaDynamicComponent(component, data);
return this;
}
disableCheckboxItemList(fn) {
this.config.disabledCheckboxItemList = fn;
return this;
}
setSubList(config) {
this.config.subListConfig = config;
return this;
}
defineBtnCollapseSubListConfig(config) {
this.config.btnCollapseSubListConfig = config;
return this;
}
hidePaginator(hide = true) {
this.config.hidePaginator = hide;
return this;
}
setCustomClass(className) {
this.config.customClass = className;
return this;
}
getConfig() {
this.config.reload = new BehaviorSubject(false);
return this.config;
}
setLimitOptions(options) {
this.config.limitOptions = options;
}
addLimitOption(limit) {
if (!this.config.limitOptions)
this.config.limitOptions = [10, 20, 30, 50, 100];
this.config.limitOptions.push(limit);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGlzdC9zcmMvbGliL2xpc3QtYnVpbGRlci9saXN0LmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZDLE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBQ1UsV0FBTSxHQUFHLEVBQThCLENBQUM7SUE2SGxELENBQUM7SUEzSFEsT0FBTyxDQUNaLE9BQWtHLEVBQ2xHLE9BQTJCLEtBQUssRUFDaEMsZUFBd0IsRUFDeEIsa0JBQTJCO1FBRTNCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixHQUFHLGVBQWUsQ0FBQztRQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLDBCQUEwQixHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5RixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUM7UUFDckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUVsRixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUM7UUFFM0QsSUFB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QUMsS0FBYTtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFaEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtvYWxhTGlzdENvbmZpZ0ludGVyZmFjZSB9IGZyb20gXCIuLi9rb2FsYS5saXN0LWNvbmZpZy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IEtvYWxhTGlzdEl0ZW1JbnRlcmZhY2UgfSBmcm9tIFwiLi4va29hbGEtbGlzdC1pdGVtLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBLb2FsYUR5bmFtaWNDb21wb25lbnQgfSBmcm9tIFwiQGtvYWxhcngvdWkvZHluYW1pYy1jb21wb25lbnRcIjtcbmltcG9ydCB7IEtvYWxhTGlzdEZpbHRlckludGVyZmFjZSB9IGZyb20gXCIuLi9rb2FsYS1saXN0LWZpbHRlci5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBLb2FsYUxpc3RGb3JtRmlsdGVySW50ZXJmYWNlIH0gZnJvbSBcIi4uL2tvYWxhLWxpc3QtZm9ybS1maWx0ZXIuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBLb2FsYUxpc3RJdGVtTWVudU9wdGlvbkludGVyZmFjZSB9IGZyb20gXCIuLi9rb2FsYS1saXN0LWl0ZW0tbWVudS1vcHRpb24uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcbmltcG9ydCB7IEtvYWxhTGlzdFBhZ2VTaXplIH0gZnJvbSBcIi4uL2xpc3QuYWJzdHJhY3RcIjtcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBLb2FsYUxpc3RCdG5Db2xsYXBzZVN1Ykxpc3RDb25maWdJbnRlcmZhY2UgfSBmcm9tIFwiLi4va29hbGEtbGlzdC1idG4tY29sbGFwc2Utc3ViLWxpc3QtY29uZmlnLmludGVyZmFjZVwiO1xuXG5leHBvcnQgY2xhc3MgTGlzdEJ1aWxkZXI8RGF0YVR5cGU+IHtcbiAgcHJpdmF0ZSBjb25maWcgPSB7fSBhcyBLb2FsYUxpc3RDb25maWdJbnRlcmZhY2U7XG5cbiAgcHVibGljIHNlcnZpY2UoXG4gICAgc2VydmljZTogKGZpbHRlcjogQmVoYXZpb3JTdWJqZWN0PEtvYWxhTGlzdEZvcm1GaWx0ZXJJbnRlcmZhY2U+KSA9PiBPYnNlcnZhYmxlPGFueT4gfCBQcm9taXNlPGFueT4sXG4gICAgdHlwZTogJ2FsbCcgfCAnb25EZW1hbmQnID0gXCJhbGxcIixcbiAgICByZXN1bHRJbmRleE5hbWU/OiBzdHJpbmcsXG4gICAgcXRkUmVzdWx0SW5kZXhOYW1lPzogc3RyaW5nXG4gICkge1xuICAgIHRoaXMuY29uZmlnLnR5cGVSZXF1ZXN0ID0gdHlwZTtcbiAgICB0aGlzLmNvbmZpZy5yZXNwb25zZUluZGV4TmFtZSA9IHJlc3VsdEluZGV4TmFtZTtcbiAgICB0aGlzLmNvbmZpZy5yZXNwb25zZVF0ZFJlc3VsdEluZGV4TmFtZSA9IHJlc3BvbnNlID0+IHJlc3BvbnNlW3F0ZFJlc3VsdEluZGV4TmFtZSA/PyAnJ10gPz8gW107XG4gICAgdGhpcy5jb25maWcuY29sdW1uU29ydCA9IHRoaXMuY29uZmlnPy5maWx0ZXJQYXJhbXM/LmdldFZhbHVlKCk/LnNvcnQ7XG4gICAgdGhpcy5jb25maWcuc29ydERpcmVjdGlvbiA9IHRoaXMuY29uZmlnPy5maWx0ZXJQYXJhbXM/LmdldFZhbHVlKCk/Lm9yZGVyID8/ICdhc2MnO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBzZXJ2aWNlKHRoaXMuY29uZmlnLmZpbHRlclBhcmFtcyA/PyBudWxsKTtcblxuICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIHRoaXMuY29uZmlnLnJlcXVlc3QgPSBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xuICAgICAgICByZXNwb25zZS50aGVuKHJlc3BvbnNlID0+IG9ic2VydmUubmV4dChyZXNwb25zZSkpXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IG9ic2VydmUuZXJyb3IoZXJyb3IpKTtcbiAgICAgIH0pLnBpcGUoZmlyc3QoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uZmlnLnJlcXVlc3QgPSBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xuICAgICAgICAoc2VydmljZSh0aGlzLmNvbmZpZy5maWx0ZXJQYXJhbXMgPz8gbnVsbCkgYXMgT2JzZXJ2YWJsZTxhbnk+KS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZShvYnNlcnZlKTtcbiAgICAgIH0pLnBpcGUoZmlyc3QoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyQ29uZmlnKGNvbmZpZzogS29hbGFMaXN0RmlsdGVySW50ZXJmYWNlKSB7XG4gICAgdGhpcy5jb25maWcuZmlsdGVyRm9ybUNvbmZpZyA9IGNvbmZpZztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkZWZhdWx0RmlsdGVyKGNvbmZpZzogS29hbGFMaXN0Rm9ybUZpbHRlckludGVyZmFjZSkge1xuICAgIHRoaXMuY29uZmlnLmZpbHRlclBhcmFtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8S29hbGFMaXN0Rm9ybUZpbHRlckludGVyZmFjZT4oY29uZmlnKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBwYWdlU2l6ZShzaXplOiBLb2FsYUxpc3RQYWdlU2l6ZSkge1xuICAgIHRoaXMuY29uZmlnLnBhZ2VTaXplID0gc2l6ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBjb2x1bW5zKGNvbHVtbnM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5jb25maWcuY29sdW1uc1RvU2hvd0luTGlzdCA9IGNvbHVtbnM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgaXRlbUNvbHVtbihpdGVtOiBLb2FsYUxpc3RJdGVtSW50ZXJmYWNlPERhdGFUeXBlPikge1xuICAgICh0aGlzLmNvbmZpZy5pdGVtc0xpc3Q/Lmxlbmd0aCA+IDApID9cbiAgICAgIHRoaXMuY29uZmlnLml0ZW1zTGlzdC5wdXNoKGl0ZW0pIDpcbiAgICAgIHRoaXMuY29uZmlnLml0ZW1zTGlzdCA9IFtpdGVtXTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGFjdGlvbkxpc3QoaXRlbTogS29hbGFMaXN0SXRlbU1lbnVPcHRpb25JbnRlcmZhY2U8RGF0YVR5cGU+KSB7XG4gICAgKHRoaXMuY29uZmlnLml0ZW1zTWVudUxpc3RPcHRpb25zPy5sZW5ndGggPz8gMCA+IDApID9cbiAgICAgIHRoaXMuY29uZmlnLml0ZW1zTWVudUxpc3RPcHRpb25zPy5wdXNoKGl0ZW0pIDpcbiAgICAgIHRoaXMuY29uZmlnLml0ZW1zTWVudUxpc3RPcHRpb25zID0gW2l0ZW1dO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YVNvdXJjZShmbjogKGRhdGFTb3VyY2U6IERhdGFUeXBlW10pID0+IHZvaWQpIHtcbiAgICB0aGlzLmNvbmZpZy5nZXREYXRhU291cmNlID0gZm47XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VsZWN0aW9uTGlzdChmbjogKHNlbGVjdGlvbjogU2VsZWN0aW9uTW9kZWw8RGF0YVR5cGU+KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5jb25maWcuZ2V0U2VsZWN0aW9uTGlzdCA9IGZuO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGVtcHR5TGlzdENvbXBvbmVudChjb21wb25lbnQ6IFR5cGU8YW55PiwgZGF0YT86IGFueSkge1xuICAgIHRoaXMuY29uZmlnLmVtcHR5TGlzdENvbXBvbmVudCA9IG5ldyBLb2FsYUR5bmFtaWNDb21wb25lbnQoY29tcG9uZW50LCBkYXRhKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBlcnJvckxpc3RDb21wb25lbnQoY29tcG9uZW50OiBUeXBlPGFueT4sIGRhdGE/OiBhbnkpIHtcbiAgICB0aGlzLmNvbmZpZy5lcnJvckxpc3RDb21wb25lbnQgPSBuZXcgS29hbGFEeW5hbWljQ29tcG9uZW50KGNvbXBvbmVudCwgZGF0YSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZUNoZWNrYm94SXRlbUxpc3QoZm46IChpdGVtOiBEYXRhVHlwZSkgPT4gYm9vbGVhbikge1xuICAgIHRoaXMuY29uZmlnLmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdCA9IGZuO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHNldFN1Ykxpc3QoY29uZmlnOiAoaXRlbTogRGF0YVR5cGUpID0+IEtvYWxhTGlzdENvbmZpZ0ludGVyZmFjZSkge1xuICAgIHRoaXMuY29uZmlnLnN1Ykxpc3RDb25maWcgPSBjb25maWc7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVmaW5lQnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnKGNvbmZpZzogS29hbGFMaXN0QnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnSW50ZXJmYWNlPERhdGFUeXBlPikge1xuICAgIHRoaXMuY29uZmlnLmJ0bkNvbGxhcHNlU3ViTGlzdENvbmZpZyA9IGNvbmZpZztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBoaWRlUGFnaW5hdG9yKGhpZGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgdGhpcy5jb25maWcuaGlkZVBhZ2luYXRvciA9IGhpZGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2V0Q3VzdG9tQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpZy5jdXN0b21DbGFzcyA9IGNsYXNzTmFtZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb25maWcoKTogS29hbGFMaXN0Q29uZmlnSW50ZXJmYWNlIHtcbiAgICB0aGlzLmNvbmZpZy5yZWxvYWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICByZXR1cm4gdGhpcy5jb25maWc7XG4gIH1cblxuICBwdWJsaWMgc2V0TGltaXRPcHRpb25zKG9wdGlvbnM6IG51bWJlcltdKSB7XG4gICAgdGhpcy5jb25maWcubGltaXRPcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBhZGRMaW1pdE9wdGlvbihsaW1pdDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5saW1pdE9wdGlvbnMpIHRoaXMuY29uZmlnLmxpbWl0T3B0aW9ucyA9IFsxMCwgMjAsIDMwLCA1MCwgMTAwXTtcblxuICAgIHRoaXMuY29uZmlnLmxpbWl0T3B0aW9ucy5wdXNoKGxpbWl0KTtcbiAgfVxufVxuIl19