@updevs/components 1.0.0-alpha.50 → 1.0.0-alpha.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/form/components/dynamic-field/dynamic-field.component.mjs +3 -3
- package/esm2022/form/models/select-field.model.mjs +1 -1
- package/esm2022/form-controls/select/components/single/select.component.mjs +6 -3
- package/esm2022/list/list.component.mjs +4 -3
- package/esm2022/list/models/list-item.mjs +1 -1
- package/esm2022/list/models/list-item.model.mjs +7 -2
- package/esm2022/paginator/paginator.component.mjs +1 -1
- package/esm2022/pricing-cards/pricing-cards.component.mjs +3 -3
- package/esm2022/table/components/filter-row/filter-row.component.mjs +1 -1
- package/fesm2022/updevs-components-form-controls-select.mjs +5 -2
- package/fesm2022/updevs-components-form-controls-select.mjs.map +1 -1
- package/fesm2022/updevs-components-form.mjs +2 -2
- package/fesm2022/updevs-components-form.mjs.map +1 -1
- package/fesm2022/updevs-components-list.mjs +9 -3
- package/fesm2022/updevs-components-list.mjs.map +1 -1
- package/fesm2022/updevs-components-paginator.mjs +1 -1
- package/fesm2022/updevs-components-paginator.mjs.map +1 -1
- package/fesm2022/updevs-components-pricing-cards.mjs +2 -2
- package/fesm2022/updevs-components-pricing-cards.mjs.map +1 -1
- package/fesm2022/updevs-components-table.mjs +1 -1
- package/fesm2022/updevs-components-table.mjs.map +1 -1
- package/form/models/select-field.model.d.ts +2 -1
- package/form-controls/select/components/single/select.component.d.ts +2 -1
- package/list/models/list-item.d.ts +1 -0
- package/list/models/list-item.model.d.ts +1 -0
- package/package.json +19 -19
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export class ListItemModel {
|
|
2
2
|
get hasLeftBox() {
|
|
3
|
-
return !!this.leftBoxImage
|
|
3
|
+
return !!this.leftBoxImage
|
|
4
|
+
|| !!this.leftBoxText
|
|
5
|
+
|| !!this.badgeColor
|
|
6
|
+
|| this.hasCheckbox === true
|
|
7
|
+
|| !!this.icon
|
|
8
|
+
|| !!this.leftBoxHtml;
|
|
4
9
|
}
|
|
5
10
|
get hasLeftBadge() {
|
|
6
11
|
return !!this.badgeColor && this.badgePosition === 'left';
|
|
@@ -12,4 +17,4 @@ export class ListItemModel {
|
|
|
12
17
|
Object.assign(this, init);
|
|
13
18
|
}
|
|
14
19
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3Qvc3JjL21vZGVscy9saXN0LWl0ZW0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxPQUFPLGFBQWE7SUFpQnRCLElBQUksVUFBVTtRQUNWLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZO2VBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVztlQUNsQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVU7ZUFDakIsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJO2VBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSTtlQUNYLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDWixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssTUFBTSxDQUFDO0lBQzlELENBQUM7SUFDRCxJQUFJLG1CQUFtQjtRQUNuQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssdUJBQXVCLENBQUM7SUFDL0UsQ0FBQztJQUVELFlBQVksSUFBZTtRQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJY29uTW9kZWwgfSBmcm9tICdAdXBkZXZzL2ljb25zJztcbmltcG9ydCB7IEJnQ29sb3JTdHlsZVR5cGUgfSBmcm9tICdAdXBkZXZzL3Nkay90eXBlcyc7XG5cbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi9saXN0LWl0ZW0nO1xuaW1wb3J0IHsgQmFkZ2VQb3NpdGlvblR5cGUgfSBmcm9tICcuL2JhZGdlLXBvc2l0aW9uLnR5cGUnO1xuXG5leHBvcnQgY2xhc3MgTGlzdEl0ZW1Nb2RlbCBpbXBsZW1lbnRzIExpc3RJdGVtIHtcbiAgICBpZD86IGFueTtcbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGljb24/OiBJY29uTW9kZWw7XG4gICAgaXNDaGVja2VkPzogYm9vbGVhbjtcbiAgICBpc1N3aXRjaD86IGJvb2xlYW47XG4gICAgaGFzQ2hlY2tib3g/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgICBsZWZ0Qm94VGV4dD86IHN0cmluZztcbiAgICBsZWZ0Qm94SW1hZ2U/OiBzdHJpbmc7XG4gICAgbGVmdEJveEh0bWw/OiBzdHJpbmc7XG4gICAgYmFkZ2VDb2xvcj86IEJnQ29sb3JTdHlsZVR5cGU7XG4gICAgYmFkZ2VUZXh0Pzogc3RyaW5nO1xuICAgIGJhZGdlUG9zaXRpb24/OiBCYWRnZVBvc2l0aW9uVHlwZTtcbiAgICBjaGlsZHJlbj86IExpc3RJdGVtTW9kZWxbXTtcbiAgICBnZXQgaGFzTGVmdEJveCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5sZWZ0Qm94SW1hZ2VcbiAgICAgICAgICAgIHx8ICEhdGhpcy5sZWZ0Qm94VGV4dFxuICAgICAgICAgICAgfHwgISF0aGlzLmJhZGdlQ29sb3JcbiAgICAgICAgICAgIHx8IHRoaXMuaGFzQ2hlY2tib3ggPT09IHRydWVcbiAgICAgICAgICAgIHx8ICEhdGhpcy5pY29uXG4gICAgICAgICAgICB8fCAhIXRoaXMubGVmdEJveEh0bWw7XG4gICAgfVxuICAgIGdldCBoYXNMZWZ0QmFkZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuYmFkZ2VDb2xvciAmJiB0aGlzLmJhZGdlUG9zaXRpb24gPT09ICdsZWZ0JztcbiAgICB9XG4gICAgZ2V0IGhhc0JvdHRvbVJpZ2h0QmFkZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuYmFkZ2VDb2xvciAmJiB0aGlzLmJhZGdlUG9zaXRpb24gPT09ICdsZWZ0LWJveC1ib3R0b20tcmlnaHQnO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBMaXN0SXRlbSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -52,7 +52,7 @@ export class PaginatorComponent {
|
|
|
52
52
|
this.changed.emit();
|
|
53
53
|
}
|
|
54
54
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: PaginatorComponent, selector: "upd-paginator", inputs: { startPageIndex: { classPropertyName: "startPageIndex", publicName: "startPageIndex", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, wrapperClasses: { classPropertyName: "wrapperClasses", publicName: "wrapperClasses", isSignal: true, isRequired: false, transformFunction: null }, availablePageSizes: { classPropertyName: "availablePageSizes", publicName: "availablePageSizes", isSignal: true, isRequired: false, transformFunction: null }, defaultInitPageSize: { classPropertyName: "defaultInitPageSize", publicName: "defaultInitPageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayFirstIcon: { classPropertyName: "shouldDisplayFirstIcon", publicName: "shouldDisplayFirstIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayFirstText: { classPropertyName: "shouldDisplayFirstText", publicName: "shouldDisplayFirstText", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayPreviousIcon: { classPropertyName: "shouldDisplayPreviousIcon", publicName: "shouldDisplayPreviousIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayPreviousText: { classPropertyName: "shouldDisplayPreviousText", publicName: "shouldDisplayPreviousText", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayNextIcon: { classPropertyName: "shouldDisplayNextIcon", publicName: "shouldDisplayNextIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayNextText: { classPropertyName: "shouldDisplayNextText", publicName: "shouldDisplayNextText", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayLastIcon: { classPropertyName: "shouldDisplayLastIcon", publicName: "shouldDisplayLastIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayLastText: { classPropertyName: "shouldDisplayLastText", publicName: "shouldDisplayLastText", isSignal: true, isRequired: false, transformFunction: null }, previousDescription: { classPropertyName: "previousDescription", publicName: "previousDescription", isSignal: true, isRequired: false, transformFunction: null }, nextDescription: { classPropertyName: "nextDescription", publicName: "nextDescription", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", currentPage: "currentPageChange", pageSize: "pageSizeChange" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Paginator'\">\n <div class=\"d-flex m-0 ms-auto align-items-center\">\n <div class=\"text-secondary me-2\">\n {{ t('ItemsPerPage') }}\n </div>\n <upd-select [items]=\"pageOptions()\" [selected]=\"selectedPageSize()\" (selectedItem)=\"onSelectPageSize($event)\"\n [shouldShowClearButton]=\"false\" [isCompact]=\"true\" [useSystemStyle]=\"true\"></upd-select>\n <p class=\"m-0 text-secondary ms-4\">\n @if (totalRecords() > 0) {\n {{ t('FromToOf', { first: currentFirstDisplayed(), last: currentLastDisplayed(), totalRecords: totalRecords() }) }}\n } @else {\n {{ t('NoRecords') }}\n }\n </p>\n <ul class=\"pagination m-0 ms-4\">\n @if (!previousDescription()) {\n <li class=\"page-item\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayFirstText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isFirstDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isFirstDisabled()\"\n [isDisabled]=\"isPreviousDisabled()\" (clicked)=\"selectPage(startPageIndex())\">\n @if (shouldDisplayFirstIcon()) {\n <upd-icon tablerIcon=\"chevron-left-pipe\"></upd-icon>\n }\n @if (shouldDisplayFirstText()) {\n {{ t('First') }}\n }\n </upd-button>\n </li>\n }\n\n <li class=\"page-item\" [class.page-prev]=\"!!previousDescription()\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayPreviousText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isPreviousDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isPreviousDisabled()\"\n [isDisabled]=\"isPreviousDisabled()\" (clicked)=\"selectPage(currentPage() - 1)\">\n @if (!!previousDescription()) {\n <div class=\"page-item-subtitle\">{{ t('Previous') }}</div>\n <div class=\"page-item-title\">{{ textService.getText(previousDescription()) }}</div>\n } @else {\n @if (shouldDisplayPreviousIcon()) {\n <upd-icon tablerIcon=\"chevron-left\"></upd-icon>\n }\n @if (shouldDisplayPreviousText()) {\n {{ t('PreviousShort') }}\n }\n }\n </upd-button>\n </li>\n\n <li class=\"page-item\" [class.page-next]=\"!!nextDescription()\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayNextText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isNextDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isNextDisabled()\" [isDisabled]=\"isNextDisabled()\"\n (clicked)=\"selectPage(currentPage() + 1)\">\n @if (!!nextDescription()) {\n <div class=\"page-item-subtitle\">{{ t('Next') }}</div>\n <div class=\"page-item-title\">{{ textService.getText(nextDescription()) }}</div>\n } @else {\n @if (shouldDisplayNextText()) {\n {{ t('NextShort') }}\n }\n @if (shouldDisplayNextIcon()) {\n <upd-icon tablerIcon=\"chevron-right\"></upd-icon>\n }\n }\n </upd-button>\n </li>\n\n @if (!nextDescription()) {\n <li class=\"page-item\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayLastText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isLastDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isLastDisabled()\" [isDisabled]=\"isNextDisabled()\"\n (clicked)=\"selectPage(totalPages() - (startPageIndex() === 0 ? 1 : 0))\">\n @if (shouldDisplayLastText()) {\n {{ t('Last') }}\n }\n @if (shouldDisplayLastIcon()) {\n <upd-icon tablerIcon=\"chevron-right-pipe\"></upd-icon>\n }\n </upd-button>\n </li>\n }\n </ul>\n </div>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "component", type: i1.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i2.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i3.SelectComponent, selector: "upd-select", inputs: ["useSystemStyle", "shouldShowClearButton", "isCompact", "selected"], outputs: ["selectedItem"] }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
55
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: PaginatorComponent, selector: "upd-paginator", inputs: { startPageIndex: { classPropertyName: "startPageIndex", publicName: "startPageIndex", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, wrapperClasses: { classPropertyName: "wrapperClasses", publicName: "wrapperClasses", isSignal: true, isRequired: false, transformFunction: null }, availablePageSizes: { classPropertyName: "availablePageSizes", publicName: "availablePageSizes", isSignal: true, isRequired: false, transformFunction: null }, defaultInitPageSize: { classPropertyName: "defaultInitPageSize", publicName: "defaultInitPageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayFirstIcon: { classPropertyName: "shouldDisplayFirstIcon", publicName: "shouldDisplayFirstIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayFirstText: { classPropertyName: "shouldDisplayFirstText", publicName: "shouldDisplayFirstText", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayPreviousIcon: { classPropertyName: "shouldDisplayPreviousIcon", publicName: "shouldDisplayPreviousIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayPreviousText: { classPropertyName: "shouldDisplayPreviousText", publicName: "shouldDisplayPreviousText", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayNextIcon: { classPropertyName: "shouldDisplayNextIcon", publicName: "shouldDisplayNextIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayNextText: { classPropertyName: "shouldDisplayNextText", publicName: "shouldDisplayNextText", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayLastIcon: { classPropertyName: "shouldDisplayLastIcon", publicName: "shouldDisplayLastIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayLastText: { classPropertyName: "shouldDisplayLastText", publicName: "shouldDisplayLastText", isSignal: true, isRequired: false, transformFunction: null }, previousDescription: { classPropertyName: "previousDescription", publicName: "previousDescription", isSignal: true, isRequired: false, transformFunction: null }, nextDescription: { classPropertyName: "nextDescription", publicName: "nextDescription", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", currentPage: "currentPageChange", pageSize: "pageSizeChange" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Paginator'\">\n <div class=\"d-flex m-0 ms-auto align-items-center\">\n <div class=\"text-secondary me-2\">\n {{ t('ItemsPerPage') }}\n </div>\n <upd-select [items]=\"pageOptions()\" [selected]=\"selectedPageSize()\" (selectedItem)=\"onSelectPageSize($event)\"\n [shouldShowClearButton]=\"false\" [isCompact]=\"true\" [useSystemStyle]=\"true\"></upd-select>\n <p class=\"m-0 text-secondary ms-4\">\n @if (totalRecords() > 0) {\n {{ t('FromToOf', { first: currentFirstDisplayed(), last: currentLastDisplayed(), totalRecords: totalRecords() }) }}\n } @else {\n {{ t('NoRecords') }}\n }\n </p>\n <ul class=\"pagination m-0 ms-4\">\n @if (!previousDescription()) {\n <li class=\"page-item\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayFirstText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isFirstDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isFirstDisabled()\"\n [isDisabled]=\"isPreviousDisabled()\" (clicked)=\"selectPage(startPageIndex())\">\n @if (shouldDisplayFirstIcon()) {\n <upd-icon tablerIcon=\"chevron-left-pipe\"></upd-icon>\n }\n @if (shouldDisplayFirstText()) {\n {{ t('First') }}\n }\n </upd-button>\n </li>\n }\n\n <li class=\"page-item\" [class.page-prev]=\"!!previousDescription()\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayPreviousText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isPreviousDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isPreviousDisabled()\"\n [isDisabled]=\"isPreviousDisabled()\" (clicked)=\"selectPage(currentPage() - 1)\">\n @if (!!previousDescription()) {\n <div class=\"page-item-subtitle\">{{ t('Previous') }}</div>\n <div class=\"page-item-title\">{{ textService.getText(previousDescription()) }}</div>\n } @else {\n @if (shouldDisplayPreviousIcon()) {\n <upd-icon tablerIcon=\"chevron-left\"></upd-icon>\n }\n @if (shouldDisplayPreviousText()) {\n {{ t('PreviousShort') }}\n }\n }\n </upd-button>\n </li>\n\n <li class=\"page-item\" [class.page-next]=\"!!nextDescription()\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayNextText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isNextDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isNextDisabled()\" [isDisabled]=\"isNextDisabled()\"\n (clicked)=\"selectPage(currentPage() + 1)\">\n @if (!!nextDescription()) {\n <div class=\"page-item-subtitle\">{{ t('Next') }}</div>\n <div class=\"page-item-title\">{{ textService.getText(nextDescription()) }}</div>\n } @else {\n @if (shouldDisplayNextText()) {\n {{ t('NextShort') }}\n }\n @if (shouldDisplayNextIcon()) {\n <upd-icon tablerIcon=\"chevron-right\"></upd-icon>\n }\n }\n </upd-button>\n </li>\n\n @if (!nextDescription()) {\n <li class=\"page-item\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayLastText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isLastDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isLastDisabled()\" [isDisabled]=\"isNextDisabled()\"\n (clicked)=\"selectPage(totalPages() - (startPageIndex() === 0 ? 1 : 0))\">\n @if (shouldDisplayLastText()) {\n {{ t('Last') }}\n }\n @if (shouldDisplayLastIcon()) {\n <upd-icon tablerIcon=\"chevron-right-pipe\"></upd-icon>\n }\n </upd-button>\n </li>\n }\n </ul>\n </div>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "component", type: i1.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i2.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i3.SelectComponent, selector: "upd-select", inputs: ["useSystemStyle", "shouldShowClearButton", "shouldTruncateSelectedText", "isCompact", "selected"], outputs: ["selectedItem"] }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
56
56
|
}
|
|
57
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PaginatorComponent, decorators: [{
|
|
58
58
|
type: Component,
|
|
@@ -16,10 +16,10 @@ export class PricingCardsComponent {
|
|
|
16
16
|
this.selected.emit(item);
|
|
17
17
|
}
|
|
18
18
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PricingCardsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: PricingCardsComponent, selector: "upd-pricing-cards", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { selected: "selected" }, ngImport: i0, template: "<div class=\"row row-cards\">\n @for (item of items(); track item.id) {\n <div class=\"col\">\n <upd-card [ribbonBackground]=\"!!item.ribbonIcon ? item.highlightColor : undefined\" [ribbonIcon]=\"item.ribbonIcon\"\n [ribbonStyle]=\"item.ribbonStyle || 'top'\" [statusBackground]=\"item.highlightColor\" [useLightHeader]=\"true\">\n <ng-template updCardHeader>\n <div class=\"text-uppercase text-secondary fw-bold\">{{ item.title }}</div>\n <div [class.me-6]=\"!!item.ribbonIcon\" class=\"ms-auto d-flex gap-1\">\n @for (tag of item.tags; track tag.text.text) {\n <upd-badge [bgColor]=\"tag.backgroundColor\" [text]=\"tag.text\"></upd-badge>\n }\n </div>\n </ng-template>\n\n <div class=\"display-5 fw-bold mb-3\">{{ item.price }}</div>\n\n @if ((item.groupedFeatures?.length || 0) > 0) {\n @for (group of item.groupedFeatures; track group.name) {\n <div class=\"bg-surface-tertiary\">\n <span class=\"subheader\">{{ group.name }}</span>\n </div>\n <ng-container [ngTemplateOutlet]=\"featuresTpl\"\n [ngTemplateOutletContext]=\"{features: group.features}\"></ng-container>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"featuresTpl\" [ngTemplateOutletContext]=\"{features: item.features}\"></ng-container>\n }\n\n <div class=\"text-center mt-4\">\n <upd-button (clicked)=\"selectOption(item)\" customClasses=\"w-100\"\n [colorStyle]=\"!!item.highlightColor ? item.highlightColor : undefined\" [isDisabled]=\"!!item.currentText\">\n {{ textService.getText(!!item.currentText ? item.currentText : item.chooseThisText) }}\n </upd-button>\n </div>\n </upd-card>\n </div>\n }\n</div>\n\n<ng-template #featuresTpl let-features=\"features\">\n <ul class=\"list-unstyled lh-lg\">\n @for (feature of features; track feature.text) {\n <li [class.fw-bold]=\"feature.isHighlighted\">\n @if (feature.isIncluded) {\n <upd-icon tablerIcon=\"check\" colorClass=\"text-success\"></upd-icon>\n } @else {\n <upd-icon tablerIcon=\"x\" colorClass=\"text-danger\"></upd-icon>\n }\n <span class=\"ms-2\">{{ feature.text }}</span>\n </li>\n }\n </ul>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.CardComponent, selector: "upd-card", inputs: ["wrapperClasses", "title", "subtitle", "hoverEffect", "state", "type", "imagePosition", "bgColor", "stampIcon", "stampBackground", "statusBackground", "statusPosition", "ribbonBackground", "ribbonStyle", "ribbonIcon", "ribbonText", "rotate", "removeBorder", "useLightHeader", "showHeader", "isFooterTransparent", "footerText", "showProgressBar", "progress", "actions"] }, { kind: "directive", type: i2.CardHeaderDirective, selector: "ng-template[updCardHeader]" }, { kind: "component", type: i3.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i4.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i5.BadgeComponent, selector: "upd-badge", inputs: ["config", "bgColor", "textColor", "text", "isOutline", "isPill", "isNotification", "isBlinking", "customClasses"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: PricingCardsComponent, selector: "upd-pricing-cards", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { selected: "selected" }, ngImport: i0, template: "<div class=\"row row-cards\">\n @for (item of items(); track item.id) {\n <div class=\"col-lg col-sm-6\">\n <upd-card [ribbonBackground]=\"!!item.ribbonIcon ? item.highlightColor : undefined\" [ribbonIcon]=\"item.ribbonIcon\"\n [ribbonStyle]=\"item.ribbonStyle || 'top'\" [statusBackground]=\"item.highlightColor\" [useLightHeader]=\"true\">\n <ng-template updCardHeader>\n <div class=\"text-uppercase text-secondary fw-bold\">{{ item.title }}</div>\n <div [class.me-6]=\"!!item.ribbonIcon\" class=\"ms-auto d-flex gap-1\">\n @for (tag of item.tags; track tag.text.text) {\n <upd-badge [bgColor]=\"tag.backgroundColor\" [text]=\"tag.text\"></upd-badge>\n }\n </div>\n </ng-template>\n\n <div class=\"display-5 fw-bold mb-3\">{{ item.price }}</div>\n\n @if ((item.groupedFeatures?.length || 0) > 0) {\n @for (group of item.groupedFeatures; track group.name) {\n <div class=\"bg-surface-tertiary\">\n <span class=\"subheader\">{{ group.name }}</span>\n </div>\n <ng-container [ngTemplateOutlet]=\"featuresTpl\"\n [ngTemplateOutletContext]=\"{features: group.features}\"></ng-container>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"featuresTpl\" [ngTemplateOutletContext]=\"{features: item.features}\"></ng-container>\n }\n\n <div class=\"text-center mt-4\">\n <upd-button (clicked)=\"selectOption(item)\" customClasses=\"w-100\"\n [colorStyle]=\"!!item.highlightColor ? item.highlightColor : undefined\" [isDisabled]=\"!!item.currentText\">\n {{ textService.getText(!!item.currentText ? item.currentText : item.chooseThisText) }}\n </upd-button>\n </div>\n </upd-card>\n </div>\n }\n</div>\n\n<ng-template #featuresTpl let-features=\"features\">\n <ul class=\"list-unstyled lh-lg\">\n @for (feature of features; track feature.text) {\n <li [class.fw-bold]=\"feature.isHighlighted\">\n @if (feature.isIncluded) {\n <upd-icon tablerIcon=\"check\" colorClass=\"text-success\"></upd-icon>\n } @else {\n <upd-icon tablerIcon=\"x\" colorClass=\"text-danger\"></upd-icon>\n }\n <span class=\"ms-2\">{{ feature.text }}</span>\n </li>\n }\n </ul>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.CardComponent, selector: "upd-card", inputs: ["wrapperClasses", "title", "subtitle", "hoverEffect", "state", "type", "imagePosition", "bgColor", "stampIcon", "stampBackground", "statusBackground", "statusPosition", "ribbonBackground", "ribbonStyle", "ribbonIcon", "ribbonText", "rotate", "removeBorder", "useLightHeader", "showHeader", "isFooterTransparent", "footerText", "showProgressBar", "progress", "actions"] }, { kind: "directive", type: i2.CardHeaderDirective, selector: "ng-template[updCardHeader]" }, { kind: "component", type: i3.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i4.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i5.BadgeComponent, selector: "upd-badge", inputs: ["config", "bgColor", "textColor", "text", "isOutline", "isPill", "isNotification", "isBlinking", "customClasses"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
20
|
}
|
|
21
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PricingCardsComponent, decorators: [{
|
|
22
22
|
type: Component,
|
|
23
|
-
args: [{ selector: 'upd-pricing-cards', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"row row-cards\">\n @for (item of items(); track item.id) {\n <div class=\"col\">\n <upd-card [ribbonBackground]=\"!!item.ribbonIcon ? item.highlightColor : undefined\" [ribbonIcon]=\"item.ribbonIcon\"\n [ribbonStyle]=\"item.ribbonStyle || 'top'\" [statusBackground]=\"item.highlightColor\" [useLightHeader]=\"true\">\n <ng-template updCardHeader>\n <div class=\"text-uppercase text-secondary fw-bold\">{{ item.title }}</div>\n <div [class.me-6]=\"!!item.ribbonIcon\" class=\"ms-auto d-flex gap-1\">\n @for (tag of item.tags; track tag.text.text) {\n <upd-badge [bgColor]=\"tag.backgroundColor\" [text]=\"tag.text\"></upd-badge>\n }\n </div>\n </ng-template>\n\n <div class=\"display-5 fw-bold mb-3\">{{ item.price }}</div>\n\n @if ((item.groupedFeatures?.length || 0) > 0) {\n @for (group of item.groupedFeatures; track group.name) {\n <div class=\"bg-surface-tertiary\">\n <span class=\"subheader\">{{ group.name }}</span>\n </div>\n <ng-container [ngTemplateOutlet]=\"featuresTpl\"\n [ngTemplateOutletContext]=\"{features: group.features}\"></ng-container>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"featuresTpl\" [ngTemplateOutletContext]=\"{features: item.features}\"></ng-container>\n }\n\n <div class=\"text-center mt-4\">\n <upd-button (clicked)=\"selectOption(item)\" customClasses=\"w-100\"\n [colorStyle]=\"!!item.highlightColor ? item.highlightColor : undefined\" [isDisabled]=\"!!item.currentText\">\n {{ textService.getText(!!item.currentText ? item.currentText : item.chooseThisText) }}\n </upd-button>\n </div>\n </upd-card>\n </div>\n }\n</div>\n\n<ng-template #featuresTpl let-features=\"features\">\n <ul class=\"list-unstyled lh-lg\">\n @for (feature of features; track feature.text) {\n <li [class.fw-bold]=\"feature.isHighlighted\">\n @if (feature.isIncluded) {\n <upd-icon tablerIcon=\"check\" colorClass=\"text-success\"></upd-icon>\n } @else {\n <upd-icon tablerIcon=\"x\" colorClass=\"text-danger\"></upd-icon>\n }\n <span class=\"ms-2\">{{ feature.text }}</span>\n </li>\n }\n </ul>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
|
|
23
|
+
args: [{ selector: 'upd-pricing-cards', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"row row-cards\">\n @for (item of items(); track item.id) {\n <div class=\"col-lg col-sm-6\">\n <upd-card [ribbonBackground]=\"!!item.ribbonIcon ? item.highlightColor : undefined\" [ribbonIcon]=\"item.ribbonIcon\"\n [ribbonStyle]=\"item.ribbonStyle || 'top'\" [statusBackground]=\"item.highlightColor\" [useLightHeader]=\"true\">\n <ng-template updCardHeader>\n <div class=\"text-uppercase text-secondary fw-bold\">{{ item.title }}</div>\n <div [class.me-6]=\"!!item.ribbonIcon\" class=\"ms-auto d-flex gap-1\">\n @for (tag of item.tags; track tag.text.text) {\n <upd-badge [bgColor]=\"tag.backgroundColor\" [text]=\"tag.text\"></upd-badge>\n }\n </div>\n </ng-template>\n\n <div class=\"display-5 fw-bold mb-3\">{{ item.price }}</div>\n\n @if ((item.groupedFeatures?.length || 0) > 0) {\n @for (group of item.groupedFeatures; track group.name) {\n <div class=\"bg-surface-tertiary\">\n <span class=\"subheader\">{{ group.name }}</span>\n </div>\n <ng-container [ngTemplateOutlet]=\"featuresTpl\"\n [ngTemplateOutletContext]=\"{features: group.features}\"></ng-container>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"featuresTpl\" [ngTemplateOutletContext]=\"{features: item.features}\"></ng-container>\n }\n\n <div class=\"text-center mt-4\">\n <upd-button (clicked)=\"selectOption(item)\" customClasses=\"w-100\"\n [colorStyle]=\"!!item.highlightColor ? item.highlightColor : undefined\" [isDisabled]=\"!!item.currentText\">\n {{ textService.getText(!!item.currentText ? item.currentText : item.chooseThisText) }}\n </upd-button>\n </div>\n </upd-card>\n </div>\n }\n</div>\n\n<ng-template #featuresTpl let-features=\"features\">\n <ul class=\"list-unstyled lh-lg\">\n @for (feature of features; track feature.text) {\n <li [class.fw-bold]=\"feature.isHighlighted\">\n @if (feature.isIncluded) {\n <upd-icon tablerIcon=\"check\" colorClass=\"text-success\"></upd-icon>\n } @else {\n <upd-icon tablerIcon=\"x\" colorClass=\"text-danger\"></upd-icon>\n }\n <span class=\"ms-2\">{{ feature.text }}</span>\n </li>\n }\n </ul>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
|
|
24
24
|
}] });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2luZy1jYXJkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcHJpY2luZy1jYXJkcy9zcmMvcHJpY2luZy1jYXJkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcHJpY2luZy1jYXJkcy9zcmMvcHJpY2luZy1jYXJkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7QUFVMUMsTUFBTSxPQUFPLHFCQUFxQjtJQU5sQztRQU9hLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFvQixDQUFDO1FBQzNDLGFBQVEsR0FBRyxNQUFNLEVBQWtCLENBQUM7UUFFcEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FLOUM7SUFIRyxZQUFZLENBQUMsSUFBb0I7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQzs4R0FSUSxxQkFBcUI7a0dBQXJCLHFCQUFxQiwrTkNYbEMsc3RGQXFEQTs7MkZEMUNhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDSSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGV4dFNlcnZpY2UgfSBmcm9tICdAdXBkZXZzL3Nkayc7XG5cbmltcG9ydCB7IFByaWNlSXRlbU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvcHJpY2UtaXRlbS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndXBkLXByaWNpbmctY2FyZHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcmljaW5nLWNhcmRzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHJpY2luZy1jYXJkcy5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUHJpY2luZ0NhcmRzQ29tcG9uZW50IHtcbiAgICByZWFkb25seSBpdGVtcyA9IGlucHV0LnJlcXVpcmVkPFByaWNlSXRlbU1vZGVsW10+KCk7XG4gICAgcmVhZG9ubHkgc2VsZWN0ZWQgPSBvdXRwdXQ8UHJpY2VJdGVtTW9kZWw+KCk7XG5cbiAgICByZWFkb25seSB0ZXh0U2VydmljZSA9IGluamVjdChUZXh0U2VydmljZSk7XG5cbiAgICBzZWxlY3RPcHRpb24oaXRlbTogUHJpY2VJdGVtTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KGl0ZW0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3cgcm93LWNhcmRzXCI+XG4gICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGcgY29sLXNtLTZcIj5cbiAgICAgICAgICAgIDx1cGQtY2FyZCBbcmliYm9uQmFja2dyb3VuZF09XCIhIWl0ZW0ucmliYm9uSWNvbiA/IGl0ZW0uaGlnaGxpZ2h0Q29sb3IgOiB1bmRlZmluZWRcIiBbcmliYm9uSWNvbl09XCJpdGVtLnJpYmJvbkljb25cIlxuICAgICAgICAgICAgICAgIFtyaWJib25TdHlsZV09XCJpdGVtLnJpYmJvblN0eWxlIHx8ICd0b3AnXCIgW3N0YXR1c0JhY2tncm91bmRdPVwiaXRlbS5oaWdobGlnaHRDb2xvclwiIFt1c2VMaWdodEhlYWRlcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHVwZENhcmRIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXVwcGVyY2FzZSB0ZXh0LXNlY29uZGFyeSBmdy1ib2xkXCI+e3sgaXRlbS50aXRsZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5tZS02XT1cIiEhaXRlbS5yaWJib25JY29uXCIgY2xhc3M9XCJtcy1hdXRvIGQtZmxleCBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAodGFnIG9mIGl0ZW0udGFnczsgdHJhY2sgdGFnLnRleHQudGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cGQtYmFkZ2UgW2JnQ29sb3JdPVwidGFnLmJhY2tncm91bmRDb2xvclwiIFt0ZXh0XT1cInRhZy50ZXh0XCI+PC91cGQtYmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlzcGxheS01IGZ3LWJvbGQgbWItM1wiPnt7IGl0ZW0ucHJpY2UgfX08L2Rpdj5cblxuICAgICAgICAgICAgICAgIEBpZiAoKGl0ZW0uZ3JvdXBlZEZlYXR1cmVzPy5sZW5ndGggfHwgMCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGdyb3VwIG9mIGl0ZW0uZ3JvdXBlZEZlYXR1cmVzOyB0cmFjayBncm91cC5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctc3VyZmFjZS10ZXJ0aWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViaGVhZGVyXCI+e3sgZ3JvdXAubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmZWF0dXJlc1RwbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntmZWF0dXJlczogZ3JvdXAuZmVhdHVyZXN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmZWF0dXJlc1RwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ZmVhdHVyZXM6IGl0ZW0uZmVhdHVyZXN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVwZC1idXR0b24gKGNsaWNrZWQpPVwic2VsZWN0T3B0aW9uKGl0ZW0pXCIgY3VzdG9tQ2xhc3Nlcz1cInctMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvclN0eWxlXT1cIiEhaXRlbS5oaWdobGlnaHRDb2xvciA/IGl0ZW0uaGlnaGxpZ2h0Q29sb3IgOiB1bmRlZmluZWRcIiBbaXNEaXNhYmxlZF09XCIhIWl0ZW0uY3VycmVudFRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRleHRTZXJ2aWNlLmdldFRleHQoISFpdGVtLmN1cnJlbnRUZXh0ID8gaXRlbS5jdXJyZW50VGV4dCA6IGl0ZW0uY2hvb3NlVGhpc1RleHQpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvdXBkLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdXBkLWNhcmQ+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2ZlYXR1cmVzVHBsIGxldC1mZWF0dXJlcz1cImZlYXR1cmVzXCI+XG4gICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBsaC1sZ1wiPlxuICAgICAgICBAZm9yIChmZWF0dXJlIG9mIGZlYXR1cmVzOyB0cmFjayBmZWF0dXJlLnRleHQpIHtcbiAgICAgICAgICAgIDxsaSBbY2xhc3MuZnctYm9sZF09XCJmZWF0dXJlLmlzSGlnaGxpZ2h0ZWRcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGZlYXR1cmUuaXNJbmNsdWRlZCkge1xuICAgICAgICAgICAgICAgICAgICA8dXBkLWljb24gdGFibGVySWNvbj1cImNoZWNrXCIgY29sb3JDbGFzcz1cInRleHQtc3VjY2Vzc1wiPjwvdXBkLWljb24+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDx1cGQtaWNvbiB0YWJsZXJJY29uPVwieFwiIGNvbG9yQ2xhc3M9XCJ0ZXh0LWRhbmdlclwiPjwvdXBkLWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGZlYXR1cmUudGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -100,7 +100,7 @@ export class FilterRowComponent extends BaseComponent {
|
|
|
100
100
|
this.removed.emit();
|
|
101
101
|
}
|
|
102
102
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FilterRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
103
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FilterRowComponent, selector: "upd-filter-row", inputs: { activeFilters: { classPropertyName: "activeFilters", publicName: "activeFilters", isSignal: true, isRequired: true, transformFunction: null }, rowIndex: { classPropertyName: "rowIndex", publicName: "rowIndex", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: true, transformFunction: null }, store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, currentFilter: { classPropertyName: "currentFilter", publicName: "currentFilter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { removed: "removed", activeFilters: "activeFiltersChange" }, host: { properties: { "class": "this.wrapperClasses" } }, usesInheritance: true, ngImport: i0, template: "<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [selected]=\"selectedField\">\n</upd-select>\n<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"comparisonOperatorOptions()\" (selectedItem)=\"onSelectOperand($event)\"\n [selected]=\"selectedOperand\">\n</upd-select>\n\n@if (isValueSectionEnabled()) {\n @switch (fieldType) {\n @case (DataTypeEnum.Number) {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"number\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n @case (DataTypeEnum.Date) {\n\n }\n @default {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"text\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n }\n} @else {\n <div class=\"w-100\">\n <input type=\"text\" class=\"form-control h-100\" disabled>\n </div>\n}\n\n<upd-button class=\"flex-shrink-1\" colorStyle=\"danger\" [isDisabled]=\"isDisabled()\" [isOutline]=\"true\" [isIcon]=\"true\"\n [iconModel]=\"{tablerIcon:'x'}\" (clicked)=\"removeFilterItem()\"></upd-button>\n", styles: [""], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i2.InputComponent, selector: "upd-input", inputs: ["type", "mask", "maskConfig", "value", "size", "customClasses", "wrapperClasses", "maxLength", "isPlainText", "isReadOnly", "isLoading", "isRound", "isFlush", "isInputGroupFlat", "isPrependButton", "isAppendButton", "isFloating", "loaderPosition", "prependIconModel", "appendIconModel", "isValidationStatusLight", "layout"], outputs: ["valueChange", "blurred", "keyDown", "keyDownEsc", "keyUpEnter"] }, { kind: "component", type: i3.SelectComponent, selector: "upd-select", inputs: ["useSystemStyle", "shouldShowClearButton", "isCompact", "selected"], outputs: ["selectedItem"] }] }); }
|
|
103
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FilterRowComponent, selector: "upd-filter-row", inputs: { activeFilters: { classPropertyName: "activeFilters", publicName: "activeFilters", isSignal: true, isRequired: true, transformFunction: null }, rowIndex: { classPropertyName: "rowIndex", publicName: "rowIndex", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: true, transformFunction: null }, store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, currentFilter: { classPropertyName: "currentFilter", publicName: "currentFilter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { removed: "removed", activeFilters: "activeFiltersChange" }, host: { properties: { "class": "this.wrapperClasses" } }, usesInheritance: true, ngImport: i0, template: "<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [selected]=\"selectedField\">\n</upd-select>\n<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"comparisonOperatorOptions()\" (selectedItem)=\"onSelectOperand($event)\"\n [selected]=\"selectedOperand\">\n</upd-select>\n\n@if (isValueSectionEnabled()) {\n @switch (fieldType) {\n @case (DataTypeEnum.Number) {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"number\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n @case (DataTypeEnum.Date) {\n\n }\n @default {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"text\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n }\n} @else {\n <div class=\"w-100\">\n <input type=\"text\" class=\"form-control h-100\" disabled>\n </div>\n}\n\n<upd-button class=\"flex-shrink-1\" colorStyle=\"danger\" [isDisabled]=\"isDisabled()\" [isOutline]=\"true\" [isIcon]=\"true\"\n [iconModel]=\"{tablerIcon:'x'}\" (clicked)=\"removeFilterItem()\"></upd-button>\n", styles: [""], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i2.InputComponent, selector: "upd-input", inputs: ["type", "mask", "maskConfig", "value", "size", "customClasses", "wrapperClasses", "maxLength", "isPlainText", "isReadOnly", "isLoading", "isRound", "isFlush", "isInputGroupFlat", "isPrependButton", "isAppendButton", "isFloating", "loaderPosition", "prependIconModel", "appendIconModel", "isValidationStatusLight", "layout"], outputs: ["valueChange", "blurred", "keyDown", "keyDownEsc", "keyUpEnter"] }, { kind: "component", type: i3.SelectComponent, selector: "upd-select", inputs: ["useSystemStyle", "shouldShowClearButton", "shouldTruncateSelectedText", "isCompact", "selected"], outputs: ["selectedItem"] }] }); }
|
|
104
104
|
}
|
|
105
105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FilterRowComponent, decorators: [{
|
|
106
106
|
type: Component,
|
|
@@ -245,6 +245,7 @@ class SelectComponent extends BaseSelectComponent {
|
|
|
245
245
|
*/
|
|
246
246
|
this.useSystemStyle = false;
|
|
247
247
|
this.shouldShowClearButton = true;
|
|
248
|
+
this.shouldTruncateSelectedText = true;
|
|
248
249
|
this.isCompact = false;
|
|
249
250
|
/**
|
|
250
251
|
* Triggered when an item is selected.
|
|
@@ -280,15 +281,17 @@ class SelectComponent extends BaseSelectComponent {
|
|
|
280
281
|
this.selectedItem.emit(undefined);
|
|
281
282
|
}
|
|
282
283
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
283
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SelectComponent, selector: "upd-select", inputs: { useSystemStyle: "useSystemStyle", shouldShowClearButton: "shouldShowClearButton", isCompact: "isCompact", selected: "selected" }, outputs: { selectedItem: "selectedItem" }, usesInheritance: true, ngImport: i0, template: "@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n@if (!useSystemStyle) {\n <div class=\"dropdown\" [attr.id]=\"name()\" [ngClass]=\"layoutClasses()\">\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n }\n\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n </div>\n} @else {\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></ng-template>\n }\n}\n\n<ng-template #contentTpl>\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @if (!!currentSelection) {\n <span>{{ currentSelection.text }}</span>\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (!!currentSelection && shouldShowClearButton) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\">\n <upd-icon [model]=\"{tablerIcon:'x'}\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\">\n <upd-icon [model]=\"{tablerIcon:'chevron-down'}\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #contentDefaultStyleTpl>\n <select class=\"form-select\" [class.compact]=\"isCompact\" [attr.placeholder]=\"placeholder()\" [attr.name]=\"name()\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\"
|
|
284
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SelectComponent, selector: "upd-select", inputs: { useSystemStyle: "useSystemStyle", shouldShowClearButton: "shouldShowClearButton", shouldTruncateSelectedText: "shouldTruncateSelectedText", isCompact: "isCompact", selected: "selected" }, outputs: { selectedItem: "selectedItem" }, usesInheritance: true, ngImport: i0, template: "@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n@if (!useSystemStyle) {\n <div class=\"dropdown\" [attr.id]=\"name()\" [ngClass]=\"layoutClasses()\">\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n }\n\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n </div>\n} @else {\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></ng-template>\n }\n}\n\n<ng-template #contentTpl>\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [class.select-cursor-default]=\"!isDisabled()\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @if (!!currentSelection) {\n <span [ngClass]=\"shouldTruncateSelectedText ? 'd-block text-truncate' : ''\">{{ currentSelection.text }}</span>\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (!!currentSelection && shouldShowClearButton) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\" [class.select-cursor-pointer]=\"!isDisabled()\">\n <upd-icon [model]=\"{tablerIcon:'x'}\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\" [class.select-cursor-pointer]=\"!isDisabled()\">\n <upd-icon [model]=\"{tablerIcon:'chevron-down'}\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #contentDefaultStyleTpl>\n <select class=\"form-select\" [class.compact]=\"isCompact\" [attr.placeholder]=\"placeholder()\" [attr.name]=\"name()\"\n [class.select-cursor-pointer]=\"!isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\"\n (change)=\"onSystemSelect($event)\">\n @for (item of localItems; track item) {\n @if ((item.children?.length || 0) > 0) {\n <optgroup [label]=\"item.text\">\n @for (child of item.children; track child) {\n <option [attr.selected]=\"!!currentSelection && child.value === currentSelection.value ? true : undefined\"\n [value]=\"child.value\">\n {{ child.text }}\n </option>\n }\n </optgroup>\n } @else {\n <option [attr.selected]=\"!!currentSelection && item.value === currentSelection.value ? true : undefined\"\n [value]=\"item.value\">\n {{ item.text }}\n </option>\n }\n }\n </select>\n</ng-template>\n", styles: [".select-dropdown-content{position:absolute!important;background-color:var(--upd-card-bg);z-index:1;border:var(--upd-card-border-width) solid var(--upd-card-border-color)!important;border-radius:var(--upd-card-border-radius)!important;box-shadow:0 1px 1px #0000002e}.select-dropdown-content-open{display:block!important}.select-loader-wrapper{height:24px}.select-loader-wrapper .select-loader{height:24px;width:24px}.select-search-box{position:absolute;z-index:1;padding:.5rem;margin-top:-1px;background:var(--upd-body-bg);border:var(--upd-border-width) var(--upd-border-style) var(--upd-border-color)}.remove-bottom-radius{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.remove-top-radius{border-top-left-radius:0!important;border-top-right-radius:0!important}.compact{padding:.25rem 2rem .25rem .75rem!important}.select-cursor-default{cursor:default}.select-cursor-pointer{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ListComponent, selector: "upd-list", inputs: ["items", "shouldOverflow", "isFlush", "isVisible", "isHoverable", "shouldDisplayItemsCounter", "wrapperClasses", "maxHeight"], outputs: ["checkboxChanged", "selectedItem"] }, { kind: "component", type: i3.InputComponent, selector: "upd-input", inputs: ["type", "mask", "maskConfig", "value", "size", "customClasses", "wrapperClasses", "maxLength", "isPlainText", "isReadOnly", "isLoading", "isRound", "isFlush", "isInputGroupFlat", "isPrependButton", "isAppendButton", "isFloating", "loaderPosition", "prependIconModel", "appendIconModel", "isValidationStatusLight", "layout"], outputs: ["valueChange", "blurred", "keyDown", "keyDownEsc", "keyUpEnter"] }, { kind: "directive", type: i3.InputPrependDirective, selector: "ng-template[updInputPrepend]" }, { kind: "component", type: i4.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i5.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "directive", type: i6.PopoverDirective, selector: "[updPopover]", inputs: ["updPopover", "updPopoverTitle", "updPopoverTitleTemplate", "updPopoverTemplate", "updPopoverPlacement", "updPopoverCustomClasses", "updPopoverActAsTooltip"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
284
285
|
}
|
|
285
286
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SelectComponent, decorators: [{
|
|
286
287
|
type: Component,
|
|
287
|
-
args: [{ selector: 'upd-select', encapsulation: ViewEncapsulation.None, template: "@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n@if (!useSystemStyle) {\n <div class=\"dropdown\" [attr.id]=\"name()\" [ngClass]=\"layoutClasses()\">\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n }\n\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n </div>\n} @else {\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></ng-template>\n }\n}\n\n<ng-template #contentTpl>\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @if (!!currentSelection) {\n <span>{{ currentSelection.text }}</span>\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (!!currentSelection && shouldShowClearButton) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\">\n <upd-icon [model]=\"{tablerIcon:'x'}\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\">\n <upd-icon [model]=\"{tablerIcon:'chevron-down'}\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #contentDefaultStyleTpl>\n <select class=\"form-select\" [class.compact]=\"isCompact\" [attr.placeholder]=\"placeholder()\" [attr.name]=\"name()\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\"
|
|
288
|
+
args: [{ selector: 'upd-select', encapsulation: ViewEncapsulation.None, template: "@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n@if (!useSystemStyle) {\n <div class=\"dropdown\" [attr.id]=\"name()\" [ngClass]=\"layoutClasses()\">\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n }\n\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n </div>\n} @else {\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></ng-template>\n }\n}\n\n<ng-template #contentTpl>\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [class.select-cursor-default]=\"!isDisabled()\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @if (!!currentSelection) {\n <span [ngClass]=\"shouldTruncateSelectedText ? 'd-block text-truncate' : ''\">{{ currentSelection.text }}</span>\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (!!currentSelection && shouldShowClearButton) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\" [class.select-cursor-pointer]=\"!isDisabled()\">\n <upd-icon [model]=\"{tablerIcon:'x'}\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\" [class.select-cursor-pointer]=\"!isDisabled()\">\n <upd-icon [model]=\"{tablerIcon:'chevron-down'}\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #contentDefaultStyleTpl>\n <select class=\"form-select\" [class.compact]=\"isCompact\" [attr.placeholder]=\"placeholder()\" [attr.name]=\"name()\"\n [class.select-cursor-pointer]=\"!isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\"\n (change)=\"onSystemSelect($event)\">\n @for (item of localItems; track item) {\n @if ((item.children?.length || 0) > 0) {\n <optgroup [label]=\"item.text\">\n @for (child of item.children; track child) {\n <option [attr.selected]=\"!!currentSelection && child.value === currentSelection.value ? true : undefined\"\n [value]=\"child.value\">\n {{ child.text }}\n </option>\n }\n </optgroup>\n } @else {\n <option [attr.selected]=\"!!currentSelection && item.value === currentSelection.value ? true : undefined\"\n [value]=\"item.value\">\n {{ item.text }}\n </option>\n }\n }\n </select>\n</ng-template>\n", styles: [".select-dropdown-content{position:absolute!important;background-color:var(--upd-card-bg);z-index:1;border:var(--upd-card-border-width) solid var(--upd-card-border-color)!important;border-radius:var(--upd-card-border-radius)!important;box-shadow:0 1px 1px #0000002e}.select-dropdown-content-open{display:block!important}.select-loader-wrapper{height:24px}.select-loader-wrapper .select-loader{height:24px;width:24px}.select-search-box{position:absolute;z-index:1;padding:.5rem;margin-top:-1px;background:var(--upd-body-bg);border:var(--upd-border-width) var(--upd-border-style) var(--upd-border-color)}.remove-bottom-radius{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.remove-top-radius{border-top-left-radius:0!important;border-top-right-radius:0!important}.compact{padding:.25rem 2rem .25rem .75rem!important}.select-cursor-default{cursor:default}.select-cursor-pointer{cursor:pointer}\n"] }]
|
|
288
289
|
}], ctorParameters: () => [], propDecorators: { useSystemStyle: [{
|
|
289
290
|
type: Input
|
|
290
291
|
}], shouldShowClearButton: [{
|
|
291
292
|
type: Input
|
|
293
|
+
}], shouldTruncateSelectedText: [{
|
|
294
|
+
type: Input
|
|
292
295
|
}], isCompact: [{
|
|
293
296
|
type: Input
|
|
294
297
|
}], selected: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updevs-components-form-controls-select.mjs","sources":["../../../../libs/components/form-controls/select/src/models/defaults.ts","../../../../libs/components/form-controls/select/src/models/abstractions/base-select.component.ts","../../../../libs/components/form-controls/select/src/components/single/select.component.ts","../../../../libs/components/form-controls/select/src/components/single/select.component.html","../../../../libs/components/form-controls/select/src/components/multiple/select-multiple.component.ts","../../../../libs/components/form-controls/select/src/components/multiple/select-multiple.component.html","../../../../libs/components/form-controls/select/src/upd-select.module.ts","../../../../libs/components/form-controls/select/src/updevs-components-form-controls-select.ts"],"sourcesContent":["import { HorizontalVerticalType } from '@updevs/components';\n\nexport class Defaults {\n static dropdownMaxHeight = 300;\n static typeaheadDebounce = 200;\n static shouldAutoSearch = true;\n static shouldCloseOnOutsideClick = true;\n static layout: HorizontalVerticalType = 'vertical';\n}\n","import {\n Directive,\n HostBinding,\n ElementRef,\n OnInit,\n Output,\n EventEmitter,\n inject,\n NgZone,\n Renderer2,\n RendererStyleFlags2,\n input,\n viewChild,\n computed, effect\n} from '@angular/core';\nimport { DomEventsService, PositioningService, ComputePositionResult } from '@updevs/sdk/layout';\nimport { Tools } from '@updevs/sdk/core';\nimport { BaseSearchStore, ObservableSearchType } from '@updevs/sdk/stores';\nimport { HorizontalVerticalType, ColumnSizeHelper } from '@updevs/components';\nimport { ListItem } from '@updevs/components/list';\nimport { BaseControl } from '@updevs/components/form-controls/abstractions';\nimport { tap, debounceTime, Subject } from 'rxjs';\n\nimport { SelectItem } from '../select-item';\nimport { Defaults } from '../defaults';\n\nimport Utils = Tools.Utils;\n\n@Directive()\nexport abstract class BaseSelectComponent extends BaseControl implements OnInit {\n @HostBinding('class') get wrapperClasses() {\n return this.hostWrapperClasses();\n }\n @Output() readonly dropdownOpenStatusChange = new EventEmitter<boolean>();\n\n componentBox = viewChild('componentBox', { read: ElementRef });\n searchBox = viewChild('searchBox', { read: ElementRef });\n searchBoxChild = viewChild('searchBoxChild', { read: ElementRef });\n list = viewChild('list', { read: ElementRef });\n\n /**\n * Select items.\n * If provided, the select will be considered static.\n */\n items = input<SelectItem[]>();\n /**\n * Store used to load/filter the items.\n */\n store = input<BaseSearchStore>();\n /**\n * Observable used to load/filter the items.\n */\n observable = input<ObservableSearchType>();\n /**\n * Name of the property in the object that represents the ID/key of the option.\n * **Note:** used only for remote data.\n */\n itemKey = input<string>();\n /**\n * Name of the property in the object that represents the value/description of the option.\n * **Note:** used only for remote data.\n */\n itemValue = input<string>();\n /**\n * Maximum height of the dropdown.\n */\n dropdownMaxHeight = input(Defaults.dropdownMaxHeight);\n typeaheadDebounce = input(Defaults.typeaheadDebounce);\n shouldAutoSearch = input(Defaults.shouldAutoSearch);\n shouldCloseOnOutsideClick = input(Defaults.shouldCloseOnOutsideClick);\n layout = input<HorizontalVerticalType>(Defaults.layout);\n layoutClasses = computed(() => this.layout() === 'horizontal' ? ['col', 'align-self-center'] : []);\n isLoading = false;\n localItems: SelectItem[] = [];\n listItems: ListItem[] = [];\n dropdownClasses = 'select-dropdown-content remove-top-radius';\n get isDropdownOpen(): boolean {\n return this._isDropdownOpen;\n }\n set isDropdownOpen(value: boolean) {\n this._isDropdownOpen = value;\n\n this.dropdownOpenStatusChange.emit(value);\n\n if (value) {\n this.dropdownClasses += ' select-dropdown-content-open';\n } else {\n this.dropdownClasses = this.dropdownClasses.replace(' select-dropdown-content-open', '');\n }\n }\n get labelSizeClasses(): string {\n if (this.layout() !== 'horizontal') {\n return 'form-label';\n }\n\n return ColumnSizeHelper.getClasses(\n 'col-form-label',\n ColumnSizeHelper.getSizeClasses(this.labelColSize(), 3)\n );\n }\n\n protected _currentTerm?: string;\n protected _localBackupItems: SelectItem[] = [];\n\n private hasExternalList = false;\n private _isDropdownOpen = false;\n private hostWrapperClasses = computed(() => this.layout() === 'horizontal' ? 'row' : '');\n private readonly searchInputSubject = new Subject<string>();\n private readonly renderer = inject(Renderer2);\n private readonly ngZone = inject(NgZone);\n private readonly domEventsService = inject(DomEventsService);\n private readonly positioningService = inject(PositioningService);\n\n protected constructor() {\n super();\n\n effect(() => {\n if (!!this.items()) {\n this._setupLocalItems(this.items()!);\n }\n });\n }\n\n ngOnInit(): void {\n this.hasExternalList = !this.observable() && !this.store();\n\n if (this.shouldAutoSearch()) {\n if (this.hasExternalList) {\n this._setupLocalItems(this.items()!);\n } else {\n this.searchRemote();\n }\n }\n\n if (this.hasExternalList) {\n return;\n }\n\n const typeaheadSubscription = this.searchInputSubject\n .pipe(\n tap(value => this._currentTerm = value),\n debounceTime(this.typeaheadDebounce())\n )\n .subscribe(() => this.searchRemote());\n\n this.addSubscriptions(typeaheadSubscription);\n }\n\n openDropdown(): void {\n this.isDropdownOpen = true;\n\n if (this.shouldCloseOnOutsideClick()) {\n const outsideClickSub = this.domEventsService.startOutsideClickListener(\n () => this.ngZone.run(() => this.isDropdownOpen = false),\n this.list()?.nativeElement,\n true,\n this.componentBox()?.nativeElement,\n this.searchBox()?.nativeElement\n );\n this.addSubscriptions(outsideClickSub);\n }\n\n this.ngZone.runOutsideAngular(() =>\n this.positioningService\n .computePosition(this.componentBox()!, this.list()!, { placement: 'bottom' })\n .subscribe(resp => this.updatePosition(resp))\n );\n }\n\n search(term?: string): void {\n if (this.hasExternalList) {\n this.searchLocal();\n } else {\n this.searchInputSubject.next(term || '');\n }\n }\n\n protected _setupLocalItems(items: SelectItem[]): void {\n this.localItems = Utils.deepCopy(items);\n this._localBackupItems = Utils.deepCopy(items);\n const tempItems: ListItem[] = [];\n\n for (const item of this._localBackupItems) {\n const listItem = this.getListItem(item);\n item.listItem = Object.assign(listItem, {});\n\n tempItems.push(listItem);\n }\n\n this.listItems = [...tempItems];\n this.isLoading = false;\n }\n\n private searchLocal(): void {\n if (!this._currentTerm) {\n this.listItems = Utils.deepCopy(this._localBackupItems.map(li => li.listItem!));\n this.localItems = Utils.deepCopy(this._localBackupItems);\n\n return;\n }\n\n this.ngZone.run(() => {\n this.listItems = Utils.deepCopy<SelectItem[]>(this._localBackupItems).filter(si => {\n let hasChildrenInSearch = false;\n\n if ((si.children?.length || 0) > 0) {\n hasChildrenInSearch = si.children!.filter(\n ci => ci.text!.toLowerCase().includes(this._currentTerm!.toLowerCase())\n ).length > 0;\n }\n\n return si.text!.toLowerCase().includes(this._currentTerm!.toLowerCase()) || hasChildrenInSearch;\n }).map(si => {\n const bkpItem = this._localBackupItems.find(lbi => lbi.value === si.value);\n\n if ((bkpItem?.children?.length || 0) > 0) {\n si.children = [...bkpItem!.children!].filter(\n ci => ci.text!.toLowerCase().includes(this._currentTerm!.toLowerCase())\n );\n }\n\n return this.getListItem(si);\n });\n });\n }\n\n private searchRemote(): void {\n this.isLoading = true;\n const request = { description: this._currentTerm };\n const observable = !!this.observable() ? this.observable()!(request) : this.store()!.search(request);\n\n observable.subscribe(r => {\n const items: SelectItem[] = [];\n\n r.records.forEach(item => {\n items.push({\n value: item[this.itemKey()!],\n text: item[this.itemValue()!],\n objectData: item\n });\n });\n this._setupLocalItems(items);\n });\n }\n\n private getListItem(item: SelectItem): ListItem {\n let listItem: ListItem;\n\n if (!!item.listItem) {\n listItem = item.listItem;\n listItem.id = item.value;\n listItem.text = item.text;\n } else {\n listItem = {\n id: item.value,\n text: item.text\n };\n }\n\n if ((item.children?.length || 0) > 0) {\n listItem.children = [...item.children!].map(c => this.getListItem(c));\n }\n\n return listItem;\n }\n\n private updatePosition(result: ComputePositionResult): void {\n const componentBox = this.componentBox()!.nativeElement.getBoundingClientRect();\n const searchBoxChildElement = this.searchBoxChild()?.nativeElement;\n const ddElement = this.list()!.nativeElement;\n\n this.renderer.setStyle(searchBoxChildElement, 'width', `${Math.abs(componentBox.width)}px`, RendererStyleFlags2.Important);\n this.renderer.setStyle(ddElement, 'top', `${result.y + searchBoxChildElement.scrollHeight}px`, RendererStyleFlags2.Important);\n this.renderer.setStyle(ddElement, 'left', 0, RendererStyleFlags2.Important);\n this.renderer.setStyle(ddElement, 'width', `${Math.abs(componentBox.width)}px`, RendererStyleFlags2.Important);\n }\n\n abstract clearSelection(): void;\n abstract onSelectItem(item: ListItem): void;\n}\n","import {\n Component,\n Input,\n ViewEncapsulation,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { ListItem } from '@updevs/components/list';\n\nimport { BaseSelectComponent } from '../../models/abstractions/base-select.component';\nimport { SelectItem } from '../../models/select-item';\n\n@Component({\n selector: 'upd-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectComponent extends BaseSelectComponent {\n /**\n * If true, it'll use the default style of the OS, no search capabilities.\n */\n @Input() useSystemStyle = false;\n @Input() shouldShowClearButton = true;\n @Input() isCompact = false;\n @Input() set selected(item: OptionalType<SelectItem>) {\n this.currentSelection = item;\n }\n\n /**\n * Triggered when an item is selected.\n */\n @Output() readonly selectedItem = new EventEmitter<OptionalType<SelectItem>>();\n\n currentSelection?: SelectItem;\n\n constructor() {\n super();\n }\n\n onSelectItem(item: ListItem): void {\n this._currentTerm = item.text;\n this.isDropdownOpen = false;\n\n for (const localBackupItem of this._localBackupItems) {\n if ((localBackupItem.children?.length || 0) > 0) {\n this.currentSelection = localBackupItem.children?.find(c => c.value === item.id);\n\n if (!!this.currentSelection) {\n break;\n }\n } else if (localBackupItem.value === item.id) {\n this.currentSelection = localBackupItem;\n break;\n }\n }\n\n this.selectedItem.emit(this.currentSelection);\n }\n\n onSystemSelect(event: any): void {\n // eslint-disable-next-line eqeqeq\n this.currentSelection = this.localItems.find(c => c.value == event.target.value);\n this.selectedItem.emit(this.currentSelection);\n }\n\n clearSelection(): void {\n this.currentSelection = undefined;\n this._currentTerm = undefined;\n\n this.search();\n this.selectedItem.emit(undefined);\n }\n}\n","@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n@if (!useSystemStyle) {\n <div class=\"dropdown\" [attr.id]=\"name()\" [ngClass]=\"layoutClasses()\">\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n }\n\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n </div>\n} @else {\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></ng-template>\n }\n}\n\n<ng-template #contentTpl>\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @if (!!currentSelection) {\n <span>{{ currentSelection.text }}</span>\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (!!currentSelection && shouldShowClearButton) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\">\n <upd-icon [model]=\"{tablerIcon:'x'}\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\">\n <upd-icon [model]=\"{tablerIcon:'chevron-down'}\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #contentDefaultStyleTpl>\n <select class=\"form-select\" [class.compact]=\"isCompact\" [attr.placeholder]=\"placeholder()\" [attr.name]=\"name()\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (change)=\"onSystemSelect($event)\">\n @for (item of localItems; track item) {\n @if ((item.children?.length || 0) > 0) {\n <optgroup [label]=\"item.text\">\n @for (child of item.children; track child) {\n <option [attr.selected]=\"!!currentSelection && child.value === currentSelection.value ? true : undefined\"\n [value]=\"child.value\">\n {{ child.text }}\n </option>\n }\n </optgroup>\n } @else {\n <option [attr.selected]=\"!!currentSelection && item.value === currentSelection.value ? true : undefined\"\n [value]=\"item.value\">\n {{ item.text }}\n </option>\n }\n }\n </select>\n</ng-template>\n","import { Component, ViewEncapsulation, EventEmitter, Output } from '@angular/core';\nimport { ListItem } from '@updevs/components/list';\n\nimport { BaseSelectComponent } from '../../models/abstractions/base-select.component';\nimport { SelectItem } from '../../models/select-item';\n\n@Component({\n selector: 'upd-select-multiple',\n templateUrl: './select-multiple.component.html',\n styleUrls: ['./select-multiple.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectMultipleComponent extends BaseSelectComponent {\n /**\n * Returns the selected items.\n * Triggered when items are selected.\n */\n @Output() readonly selectedItems = new EventEmitter<SelectItem[]>();\n /**\n * Returns the selected Ids.\n * Triggered when items are selected.\n */\n @Output() readonly selectedIds = new EventEmitter<any[]>();\n\n currentSelection: SelectItem[] = [];\n\n constructor() {\n super();\n }\n\n clearSelection(): void {\n this.currentSelection = [];\n this._currentTerm = undefined;\n\n this.updateActiveItemsOnList();\n }\n\n onSelectItem(item: ListItem): void {\n const selectedItem = this.currentSelection.find(cs => cs.value === item.id);\n\n if (!!selectedItem) {\n this.onRemoveItem(selectedItem);\n return;\n }\n\n for (const localBackupItem of this._localBackupItems) {\n if ((localBackupItem.children?.length || 0) > 0) {\n const child = localBackupItem.children?.find(c => c.value === item.id);\n\n if (!!child) {\n this.currentSelection.push(child);\n break;\n }\n } else if (localBackupItem.value === item.id) {\n this.currentSelection.push(localBackupItem);\n break;\n }\n }\n\n this.updateActiveItemsOnList();\n this.selectedItems.emit(this.currentSelection);\n this.selectedIds.emit(this.currentSelection.map(cs => cs.value));\n }\n\n onRemoveItem(item: SelectItem): void {\n const idx = this.currentSelection.findIndex(cs => cs.value === item.value);\n\n this.currentSelection.splice(idx, 1);\n this.updateActiveItemsOnList();\n }\n\n private updateActiveItemsOnList(): void {\n for (const backupItem of this._localBackupItems) {\n const selectedItem = this.currentSelection.find(cs => cs.value === backupItem.value);\n backupItem.listItem!.isActive = !!selectedItem;\n }\n\n this._setupLocalItems(this._localBackupItems);\n }\n}\n","@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n<div class=\"dropdown\" [attr.id]=\"name()\">\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @for (sel of currentSelection; track sel) {\n <span class=\"badge bg-primary select-multiple-value\">{{ sel.text }}\n <upd-button [isIcon]=\"true\" [shouldIgnoreBtnClass]=\"true\" (clicked)=\"onRemoveItem(sel)\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-button></span> \n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (currentSelection.length > 0) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\">\n <upd-icon tablerIcon=\"chevron-down\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdCoreLayoutModule } from '@updevs/sdk/layout';\nimport { UpdListModule } from '@updevs/components/list';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdInputModule } from '@updevs/components/form-controls/input';\nimport { UpdPopoverModule } from '@updevs/components/popover';\n\nimport { SelectComponent } from './components/single/select.component';\nimport { SelectMultipleComponent } from './components/multiple/select-multiple.component';\n\n@NgModule({\n imports: [\n CommonModule,\n UpdCoreLayoutModule,\n UpdListModule,\n UpdInputModule,\n UpdIconsModule,\n UpdButtonModule,\n UpdPopoverModule,\n TranslocoModule\n ],\n declarations: [\n SelectComponent,\n SelectMultipleComponent\n ],\n exports: [\n SelectComponent,\n SelectMultipleComponent\n ]\n})\nexport class UpdSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updevs-components-form-controls-select.mjs","sources":["../../../../libs/components/form-controls/select/src/models/defaults.ts","../../../../libs/components/form-controls/select/src/models/abstractions/base-select.component.ts","../../../../libs/components/form-controls/select/src/components/single/select.component.ts","../../../../libs/components/form-controls/select/src/components/single/select.component.html","../../../../libs/components/form-controls/select/src/components/multiple/select-multiple.component.ts","../../../../libs/components/form-controls/select/src/components/multiple/select-multiple.component.html","../../../../libs/components/form-controls/select/src/upd-select.module.ts","../../../../libs/components/form-controls/select/src/updevs-components-form-controls-select.ts"],"sourcesContent":["import { HorizontalVerticalType } from '@updevs/components';\n\nexport class Defaults {\n static dropdownMaxHeight = 300;\n static typeaheadDebounce = 200;\n static shouldAutoSearch = true;\n static shouldCloseOnOutsideClick = true;\n static layout: HorizontalVerticalType = 'vertical';\n}\n","import {\n Directive,\n HostBinding,\n ElementRef,\n OnInit,\n Output,\n EventEmitter,\n inject,\n NgZone,\n Renderer2,\n RendererStyleFlags2,\n input,\n viewChild,\n computed, effect\n} from '@angular/core';\nimport { DomEventsService, PositioningService, ComputePositionResult } from '@updevs/sdk/layout';\nimport { Tools } from '@updevs/sdk/core';\nimport { BaseSearchStore, ObservableSearchType } from '@updevs/sdk/stores';\nimport { HorizontalVerticalType, ColumnSizeHelper } from '@updevs/components';\nimport { ListItem } from '@updevs/components/list';\nimport { BaseControl } from '@updevs/components/form-controls/abstractions';\nimport { tap, debounceTime, Subject } from 'rxjs';\n\nimport { SelectItem } from '../select-item';\nimport { Defaults } from '../defaults';\n\nimport Utils = Tools.Utils;\n\n@Directive()\nexport abstract class BaseSelectComponent extends BaseControl implements OnInit {\n @HostBinding('class') get wrapperClasses() {\n return this.hostWrapperClasses();\n }\n @Output() readonly dropdownOpenStatusChange = new EventEmitter<boolean>();\n\n componentBox = viewChild('componentBox', { read: ElementRef });\n searchBox = viewChild('searchBox', { read: ElementRef });\n searchBoxChild = viewChild('searchBoxChild', { read: ElementRef });\n list = viewChild('list', { read: ElementRef });\n\n /**\n * Select items.\n * If provided, the select will be considered static.\n */\n items = input<SelectItem[]>();\n /**\n * Store used to load/filter the items.\n */\n store = input<BaseSearchStore>();\n /**\n * Observable used to load/filter the items.\n */\n observable = input<ObservableSearchType>();\n /**\n * Name of the property in the object that represents the ID/key of the option.\n * **Note:** used only for remote data.\n */\n itemKey = input<string>();\n /**\n * Name of the property in the object that represents the value/description of the option.\n * **Note:** used only for remote data.\n */\n itemValue = input<string>();\n /**\n * Maximum height of the dropdown.\n */\n dropdownMaxHeight = input(Defaults.dropdownMaxHeight);\n typeaheadDebounce = input(Defaults.typeaheadDebounce);\n shouldAutoSearch = input(Defaults.shouldAutoSearch);\n shouldCloseOnOutsideClick = input(Defaults.shouldCloseOnOutsideClick);\n layout = input<HorizontalVerticalType>(Defaults.layout);\n layoutClasses = computed(() => this.layout() === 'horizontal' ? ['col', 'align-self-center'] : []);\n isLoading = false;\n localItems: SelectItem[] = [];\n listItems: ListItem[] = [];\n dropdownClasses = 'select-dropdown-content remove-top-radius';\n get isDropdownOpen(): boolean {\n return this._isDropdownOpen;\n }\n set isDropdownOpen(value: boolean) {\n this._isDropdownOpen = value;\n\n this.dropdownOpenStatusChange.emit(value);\n\n if (value) {\n this.dropdownClasses += ' select-dropdown-content-open';\n } else {\n this.dropdownClasses = this.dropdownClasses.replace(' select-dropdown-content-open', '');\n }\n }\n get labelSizeClasses(): string {\n if (this.layout() !== 'horizontal') {\n return 'form-label';\n }\n\n return ColumnSizeHelper.getClasses(\n 'col-form-label',\n ColumnSizeHelper.getSizeClasses(this.labelColSize(), 3)\n );\n }\n\n protected _currentTerm?: string;\n protected _localBackupItems: SelectItem[] = [];\n\n private hasExternalList = false;\n private _isDropdownOpen = false;\n private hostWrapperClasses = computed(() => this.layout() === 'horizontal' ? 'row' : '');\n private readonly searchInputSubject = new Subject<string>();\n private readonly renderer = inject(Renderer2);\n private readonly ngZone = inject(NgZone);\n private readonly domEventsService = inject(DomEventsService);\n private readonly positioningService = inject(PositioningService);\n\n protected constructor() {\n super();\n\n effect(() => {\n if (!!this.items()) {\n this._setupLocalItems(this.items()!);\n }\n });\n }\n\n ngOnInit(): void {\n this.hasExternalList = !this.observable() && !this.store();\n\n if (this.shouldAutoSearch()) {\n if (this.hasExternalList) {\n this._setupLocalItems(this.items()!);\n } else {\n this.searchRemote();\n }\n }\n\n if (this.hasExternalList) {\n return;\n }\n\n const typeaheadSubscription = this.searchInputSubject\n .pipe(\n tap(value => this._currentTerm = value),\n debounceTime(this.typeaheadDebounce())\n )\n .subscribe(() => this.searchRemote());\n\n this.addSubscriptions(typeaheadSubscription);\n }\n\n openDropdown(): void {\n this.isDropdownOpen = true;\n\n if (this.shouldCloseOnOutsideClick()) {\n const outsideClickSub = this.domEventsService.startOutsideClickListener(\n () => this.ngZone.run(() => this.isDropdownOpen = false),\n this.list()?.nativeElement,\n true,\n this.componentBox()?.nativeElement,\n this.searchBox()?.nativeElement\n );\n this.addSubscriptions(outsideClickSub);\n }\n\n this.ngZone.runOutsideAngular(() =>\n this.positioningService\n .computePosition(this.componentBox()!, this.list()!, { placement: 'bottom' })\n .subscribe(resp => this.updatePosition(resp))\n );\n }\n\n search(term?: string): void {\n if (this.hasExternalList) {\n this.searchLocal();\n } else {\n this.searchInputSubject.next(term || '');\n }\n }\n\n protected _setupLocalItems(items: SelectItem[]): void {\n this.localItems = Utils.deepCopy(items);\n this._localBackupItems = Utils.deepCopy(items);\n const tempItems: ListItem[] = [];\n\n for (const item of this._localBackupItems) {\n const listItem = this.getListItem(item);\n item.listItem = Object.assign(listItem, {});\n\n tempItems.push(listItem);\n }\n\n this.listItems = [...tempItems];\n this.isLoading = false;\n }\n\n private searchLocal(): void {\n if (!this._currentTerm) {\n this.listItems = Utils.deepCopy(this._localBackupItems.map(li => li.listItem!));\n this.localItems = Utils.deepCopy(this._localBackupItems);\n\n return;\n }\n\n this.ngZone.run(() => {\n this.listItems = Utils.deepCopy<SelectItem[]>(this._localBackupItems).filter(si => {\n let hasChildrenInSearch = false;\n\n if ((si.children?.length || 0) > 0) {\n hasChildrenInSearch = si.children!.filter(\n ci => ci.text!.toLowerCase().includes(this._currentTerm!.toLowerCase())\n ).length > 0;\n }\n\n return si.text!.toLowerCase().includes(this._currentTerm!.toLowerCase()) || hasChildrenInSearch;\n }).map(si => {\n const bkpItem = this._localBackupItems.find(lbi => lbi.value === si.value);\n\n if ((bkpItem?.children?.length || 0) > 0) {\n si.children = [...bkpItem!.children!].filter(\n ci => ci.text!.toLowerCase().includes(this._currentTerm!.toLowerCase())\n );\n }\n\n return this.getListItem(si);\n });\n });\n }\n\n private searchRemote(): void {\n this.isLoading = true;\n const request = { description: this._currentTerm };\n const observable = !!this.observable() ? this.observable()!(request) : this.store()!.search(request);\n\n observable.subscribe(r => {\n const items: SelectItem[] = [];\n\n r.records.forEach(item => {\n items.push({\n value: item[this.itemKey()!],\n text: item[this.itemValue()!],\n objectData: item\n });\n });\n this._setupLocalItems(items);\n });\n }\n\n private getListItem(item: SelectItem): ListItem {\n let listItem: ListItem;\n\n if (!!item.listItem) {\n listItem = item.listItem;\n listItem.id = item.value;\n listItem.text = item.text;\n } else {\n listItem = {\n id: item.value,\n text: item.text\n };\n }\n\n if ((item.children?.length || 0) > 0) {\n listItem.children = [...item.children!].map(c => this.getListItem(c));\n }\n\n return listItem;\n }\n\n private updatePosition(result: ComputePositionResult): void {\n const componentBox = this.componentBox()!.nativeElement.getBoundingClientRect();\n const searchBoxChildElement = this.searchBoxChild()?.nativeElement;\n const ddElement = this.list()!.nativeElement;\n\n this.renderer.setStyle(searchBoxChildElement, 'width', `${Math.abs(componentBox.width)}px`, RendererStyleFlags2.Important);\n this.renderer.setStyle(ddElement, 'top', `${result.y + searchBoxChildElement.scrollHeight}px`, RendererStyleFlags2.Important);\n this.renderer.setStyle(ddElement, 'left', 0, RendererStyleFlags2.Important);\n this.renderer.setStyle(ddElement, 'width', `${Math.abs(componentBox.width)}px`, RendererStyleFlags2.Important);\n }\n\n abstract clearSelection(): void;\n abstract onSelectItem(item: ListItem): void;\n}\n","import {\n Component,\n Input,\n ViewEncapsulation,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { ListItem } from '@updevs/components/list';\n\nimport { BaseSelectComponent } from '../../models/abstractions/base-select.component';\nimport { SelectItem } from '../../models/select-item';\n\n@Component({\n selector: 'upd-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectComponent extends BaseSelectComponent {\n /**\n * If true, it'll use the default style of the OS, no search capabilities.\n */\n @Input() useSystemStyle = false;\n @Input() shouldShowClearButton = true;\n @Input() shouldTruncateSelectedText? = true;\n @Input() isCompact = false;\n @Input() set selected(item: OptionalType<SelectItem>) {\n this.currentSelection = item;\n }\n\n /**\n * Triggered when an item is selected.\n */\n @Output() readonly selectedItem = new EventEmitter<OptionalType<SelectItem>>();\n\n currentSelection?: SelectItem;\n\n constructor() {\n super();\n }\n\n onSelectItem(item: ListItem): void {\n this._currentTerm = item.text;\n this.isDropdownOpen = false;\n\n for (const localBackupItem of this._localBackupItems) {\n if ((localBackupItem.children?.length || 0) > 0) {\n this.currentSelection = localBackupItem.children?.find(c => c.value === item.id);\n\n if (!!this.currentSelection) {\n break;\n }\n } else if (localBackupItem.value === item.id) {\n this.currentSelection = localBackupItem;\n break;\n }\n }\n\n this.selectedItem.emit(this.currentSelection);\n }\n\n onSystemSelect(event: any): void {\n // eslint-disable-next-line eqeqeq\n this.currentSelection = this.localItems.find(c => c.value == event.target.value);\n this.selectedItem.emit(this.currentSelection);\n }\n\n clearSelection(): void {\n this.currentSelection = undefined;\n this._currentTerm = undefined;\n\n this.search();\n this.selectedItem.emit(undefined);\n }\n}\n","@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n@if (!useSystemStyle) {\n <div class=\"dropdown\" [attr.id]=\"name()\" [ngClass]=\"layoutClasses()\">\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n }\n\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n </div>\n} @else {\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></ng-template>\n }\n}\n\n<ng-template #contentTpl>\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [class.select-cursor-default]=\"!isDisabled()\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @if (!!currentSelection) {\n <span [ngClass]=\"shouldTruncateSelectedText ? 'd-block text-truncate' : ''\">{{ currentSelection.text }}</span>\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (!!currentSelection && shouldShowClearButton) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\" [class.select-cursor-pointer]=\"!isDisabled()\">\n <upd-icon [model]=\"{tablerIcon:'x'}\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\" [class.select-cursor-pointer]=\"!isDisabled()\">\n <upd-icon [model]=\"{tablerIcon:'chevron-down'}\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #contentDefaultStyleTpl>\n <select class=\"form-select\" [class.compact]=\"isCompact\" [attr.placeholder]=\"placeholder()\" [attr.name]=\"name()\"\n [class.select-cursor-pointer]=\"!isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\"\n (change)=\"onSystemSelect($event)\">\n @for (item of localItems; track item) {\n @if ((item.children?.length || 0) > 0) {\n <optgroup [label]=\"item.text\">\n @for (child of item.children; track child) {\n <option [attr.selected]=\"!!currentSelection && child.value === currentSelection.value ? true : undefined\"\n [value]=\"child.value\">\n {{ child.text }}\n </option>\n }\n </optgroup>\n } @else {\n <option [attr.selected]=\"!!currentSelection && item.value === currentSelection.value ? true : undefined\"\n [value]=\"item.value\">\n {{ item.text }}\n </option>\n }\n }\n </select>\n</ng-template>\n","import { Component, ViewEncapsulation, EventEmitter, Output } from '@angular/core';\nimport { ListItem } from '@updevs/components/list';\n\nimport { BaseSelectComponent } from '../../models/abstractions/base-select.component';\nimport { SelectItem } from '../../models/select-item';\n\n@Component({\n selector: 'upd-select-multiple',\n templateUrl: './select-multiple.component.html',\n styleUrls: ['./select-multiple.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectMultipleComponent extends BaseSelectComponent {\n /**\n * Returns the selected items.\n * Triggered when items are selected.\n */\n @Output() readonly selectedItems = new EventEmitter<SelectItem[]>();\n /**\n * Returns the selected Ids.\n * Triggered when items are selected.\n */\n @Output() readonly selectedIds = new EventEmitter<any[]>();\n\n currentSelection: SelectItem[] = [];\n\n constructor() {\n super();\n }\n\n clearSelection(): void {\n this.currentSelection = [];\n this._currentTerm = undefined;\n\n this.updateActiveItemsOnList();\n }\n\n onSelectItem(item: ListItem): void {\n const selectedItem = this.currentSelection.find(cs => cs.value === item.id);\n\n if (!!selectedItem) {\n this.onRemoveItem(selectedItem);\n return;\n }\n\n for (const localBackupItem of this._localBackupItems) {\n if ((localBackupItem.children?.length || 0) > 0) {\n const child = localBackupItem.children?.find(c => c.value === item.id);\n\n if (!!child) {\n this.currentSelection.push(child);\n break;\n }\n } else if (localBackupItem.value === item.id) {\n this.currentSelection.push(localBackupItem);\n break;\n }\n }\n\n this.updateActiveItemsOnList();\n this.selectedItems.emit(this.currentSelection);\n this.selectedIds.emit(this.currentSelection.map(cs => cs.value));\n }\n\n onRemoveItem(item: SelectItem): void {\n const idx = this.currentSelection.findIndex(cs => cs.value === item.value);\n\n this.currentSelection.splice(idx, 1);\n this.updateActiveItemsOnList();\n }\n\n private updateActiveItemsOnList(): void {\n for (const backupItem of this._localBackupItems) {\n const selectedItem = this.currentSelection.find(cs => cs.value === backupItem.value);\n backupItem.listItem!.isActive = !!selectedItem;\n }\n\n this._setupLocalItems(this._localBackupItems);\n }\n}\n","@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n<div class=\"dropdown\" [attr.id]=\"name()\">\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @for (sel of currentSelection; track sel) {\n <span class=\"badge bg-primary select-multiple-value\">{{ sel.text }}\n <upd-button [isIcon]=\"true\" [shouldIgnoreBtnClass]=\"true\" (clicked)=\"onRemoveItem(sel)\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-button></span> \n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (currentSelection.length > 0) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\">\n <upd-icon tablerIcon=\"chevron-down\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdCoreLayoutModule } from '@updevs/sdk/layout';\nimport { UpdListModule } from '@updevs/components/list';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdInputModule } from '@updevs/components/form-controls/input';\nimport { UpdPopoverModule } from '@updevs/components/popover';\n\nimport { SelectComponent } from './components/single/select.component';\nimport { SelectMultipleComponent } from './components/multiple/select-multiple.component';\n\n@NgModule({\n imports: [\n CommonModule,\n UpdCoreLayoutModule,\n UpdListModule,\n UpdInputModule,\n UpdIconsModule,\n UpdButtonModule,\n UpdPopoverModule,\n TranslocoModule\n ],\n declarations: [\n SelectComponent,\n SelectMultipleComponent\n ],\n exports: [\n SelectComponent,\n SelectMultipleComponent\n ]\n})\nexport class UpdSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|