@updevs/components 1.0.0-alpha.92 → 1.0.0-alpha.94
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/button/button.component.d.ts +2 -1
- package/esm2022/button/button.component.mjs +6 -3
- package/esm2022/card/card.component.mjs +1 -1
- package/esm2022/dropdown/dropdown.component.mjs +1 -1
- package/esm2022/form/components/dynamic-field/dynamic-field.component.mjs +1 -1
- package/esm2022/form/form.component.mjs +1 -1
- package/esm2022/form-controls/date-picker/date-picker.component.mjs +1 -1
- package/esm2022/form-controls/file-upload/file-upload.component.mjs +1 -1
- package/esm2022/form-controls/select/components/multiple/select-multiple.component.mjs +1 -1
- package/esm2022/form-controls/select/components/single/select.component.mjs +1 -1
- package/esm2022/form-controls/time-picker/time-picker.component.mjs +1 -1
- package/esm2022/form-controls/time-picker/time-selector/time-selector.component.mjs +1 -1
- package/esm2022/layout/pages/auth-flow/login/login.component.mjs +1 -1
- package/esm2022/layout/partials/page-header/page-header.component.mjs +1 -1
- package/esm2022/modal/components/modal-container/modal-container.component.mjs +1 -1
- package/esm2022/paginator/paginator.component.mjs +1 -1
- package/esm2022/pricing/pricing-cards/pricing-cards.component.mjs +1 -1
- package/esm2022/pricing/pricing-table/pricing-table.component.mjs +1 -1
- package/esm2022/table/components/filter-row/filter-row.component.mjs +1 -1
- package/esm2022/table/components/save-search/save-search.component.mjs +1 -1
- package/esm2022/table/components/search-section/search-section.component.mjs +7 -6
- package/esm2022/table/table.component.mjs +1 -1
- package/fesm2022/updevs-components-button.mjs +5 -2
- package/fesm2022/updevs-components-button.mjs.map +1 -1
- package/fesm2022/updevs-components-card.mjs +1 -1
- package/fesm2022/updevs-components-card.mjs.map +1 -1
- package/fesm2022/updevs-components-dropdown.mjs +1 -1
- package/fesm2022/updevs-components-dropdown.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-date-picker.mjs +1 -1
- package/fesm2022/updevs-components-form-controls-date-picker.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-file-upload.mjs +1 -1
- package/fesm2022/updevs-components-form-controls-file-upload.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-select.mjs +2 -2
- package/fesm2022/updevs-components-form-controls-select.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-time-picker.mjs +2 -2
- package/fesm2022/updevs-components-form-controls-time-picker.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-layout.mjs +2 -2
- package/fesm2022/updevs-components-layout.mjs.map +1 -1
- package/fesm2022/updevs-components-modal.mjs +1 -1
- package/fesm2022/updevs-components-modal.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.mjs +2 -2
- package/fesm2022/updevs-components-pricing.mjs.map +1 -1
- package/fesm2022/updevs-components-table.mjs +9 -8
- package/fesm2022/updevs-components-table.mjs.map +1 -1
- package/package.json +24 -24
- package/table/components/search-section/search-section.component.d.ts +14 -13
|
@@ -25,21 +25,22 @@ export class SearchSectionComponent extends BaseComponent {
|
|
|
25
25
|
this.isFilterSectionOpen = signal(false);
|
|
26
26
|
this.canApplyFilters = computed(() => this.activeFilters().length > 0
|
|
27
27
|
&& this.activeFilters().every(af => !af.isHidden && !!af.name && !!af.operandConfig?.operand && (!af.operandConfig?.requiresValue || !!af.value)));
|
|
28
|
+
this.visibleFiltersCount = computed(() => this.searchRequest().filters?.filter(af => !af.isHidden).length || 0);
|
|
28
29
|
this.canPerformActions = computed(() => this.canApplyFilters() && !this.isSearching());
|
|
29
|
-
this.badgeConfig = computed(() =>
|
|
30
|
+
this.badgeConfig = computed(() => this.visibleFiltersCount() > 0
|
|
30
31
|
? ({
|
|
31
32
|
isNotification: true,
|
|
32
33
|
isPill: true,
|
|
33
34
|
bgColor: 'primary-lt',
|
|
34
|
-
text: { text: this.
|
|
35
|
+
text: { text: this.visibleFiltersCount().toString(), isTranslated: true }
|
|
35
36
|
})
|
|
36
37
|
: undefined);
|
|
37
38
|
this.filterSectionBtnColor = computed(() => this.isFilterSectionOpen() ? 'primary' : undefined);
|
|
38
39
|
this.searchSubject = new Subject();
|
|
39
40
|
this.filtersOperandsService = inject(FiltersOperandsService);
|
|
40
41
|
effect(() => {
|
|
41
|
-
if (
|
|
42
|
-
this.activeFilters.set([...FilterTools.convertToFilterItem(this.searchRequest().filters || [], this.filtersOperandsService.getAllOperands())]);
|
|
42
|
+
if (this.visibleFiltersCount() > 0) {
|
|
43
|
+
this.activeFilters.set([...FilterTools.convertToFilterItem(this.searchRequest().filters?.filter(af => !af.isHidden) || [], this.filtersOperandsService.getAllOperands())]);
|
|
43
44
|
}
|
|
44
45
|
else {
|
|
45
46
|
this.activeFilters.set([]);
|
|
@@ -81,7 +82,7 @@ export class SearchSectionComponent extends BaseComponent {
|
|
|
81
82
|
});
|
|
82
83
|
}
|
|
83
84
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SearchSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
84
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SearchSectionComponent, selector: "upd-search-section", inputs: { searchRequest: { classPropertyName: "searchRequest", publicName: "searchRequest", isSignal: true, isRequired: true, transformFunction: null }, hasChanges: { classPropertyName: "hasChanges", publicName: "hasChanges", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, isSearching: { classPropertyName: "isSearching", publicName: "isSearching", isSignal: true, isRequired: true, transformFunction: null }, searchRequestSubject: { classPropertyName: "searchRequestSubject", publicName: "searchRequestSubject", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, actionsTpl: { classPropertyName: "actionsTpl", publicName: "actionsTpl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchRequest: "searchRequestChange", hasChanges: "hasChangesChange" }, host: { properties: { "class": "this.wrapperClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n @if (!!actionsTpl()) {\n <ng-template [ngTemplateOutlet]=\"actionsTpl()!\"></ng-template>\n }\n\n <div class=\"d-flex align-items-center gap-2\">\n <upd-input wrapperClasses=\"w-100\" [placeholder]=\"{text:'UpDevs.Table.Search', isTranslated:false}\" [isAppendButton]=\"true\"\n (valueChange)=\"searchSubject.next($event)\" [value]=\"searchRequest().description\">\n <ng-template updInputAppend>\n <upd-button [isIcon]=\"true\" [colorStyle]=\"filterSectionBtnColor()\" (clicked)=\"toggleFilterSection()\"\n [badgeConfig]=\"badgeConfig()\">\n <upd-icon [tablerIcon]=\"isFilterSectionOpen() ? 'filter-up' : 'filter-down'\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n </ng-template>\n </upd-input>\n </div>\n\n @if (isFilterSectionOpen()) {\n @for (row of activeFilters(); track row; let i = $index) {\n <upd-filter-row [store]=\"config().store\" [currentFilter]=\"row\" [(activeFilters)]=\"activeFilters\" [columns]=\"columns()\"\n [rowIndex]=\"i\" (removed)=\"onRowRemoved()\" [isDisabled]=\"isSearching()\">\n </upd-filter-row>\n }\n\n <div class=\"ms-auto d-flex gap-2\">\n <upd-button customClasses=\"gap-2\" colorStyle=\"primary\" [isOutline]=\"true\" (clicked)=\"addEmptyFilterRow()\"\n [isDisabled]=\"!canPerformActions()\">\n <upd-icon tablerIcon=\"plus\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('AddNewFilter') }}\n </upd-button>\n <upd-button customClasses=\"gap-2\" colorStyle=\"success\" [isDisabled]=\"!canPerformActions()\" (clicked)=\"search()\">\n <upd-icon tablerIcon=\"checks\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ApplyFilters') }}\n </upd-button>\n </div>\n }\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { 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.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: i5.InputAppendDirective, selector: "ng-template[updInputAppend]" }, { kind: "component", type: i6.FilterRowComponent, selector: "upd-filter-row", inputs: ["activeFilters", "rowIndex", "columns", "isDisabled", "store", "currentFilter"], outputs: ["removed", "activeFiltersChange"] }] }); }
|
|
85
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SearchSectionComponent, selector: "upd-search-section", inputs: { searchRequest: { classPropertyName: "searchRequest", publicName: "searchRequest", isSignal: true, isRequired: true, transformFunction: null }, hasChanges: { classPropertyName: "hasChanges", publicName: "hasChanges", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, isSearching: { classPropertyName: "isSearching", publicName: "isSearching", isSignal: true, isRequired: true, transformFunction: null }, searchRequestSubject: { classPropertyName: "searchRequestSubject", publicName: "searchRequestSubject", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, actionsTpl: { classPropertyName: "actionsTpl", publicName: "actionsTpl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchRequest: "searchRequestChange", hasChanges: "hasChangesChange" }, host: { properties: { "class": "this.wrapperClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n @if (!!actionsTpl()) {\n <ng-template [ngTemplateOutlet]=\"actionsTpl()!\"></ng-template>\n }\n\n <div class=\"d-flex align-items-center gap-2\">\n <upd-input wrapperClasses=\"w-100\" [placeholder]=\"{text:'UpDevs.Table.Search', isTranslated:false}\" [isAppendButton]=\"true\"\n (valueChange)=\"searchSubject.next($event)\" [value]=\"searchRequest().description\">\n <ng-template updInputAppend>\n <upd-button [isIcon]=\"true\" [colorStyle]=\"filterSectionBtnColor()\" (clicked)=\"toggleFilterSection()\"\n [badgeConfig]=\"badgeConfig()\">\n <upd-icon [tablerIcon]=\"isFilterSectionOpen() ? 'filter-up' : 'filter-down'\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n </ng-template>\n </upd-input>\n </div>\n\n @if (isFilterSectionOpen()) {\n @for (row of activeFilters(); track row; let i = $index) {\n <upd-filter-row [store]=\"config().store\" [currentFilter]=\"row\" [(activeFilters)]=\"activeFilters\" [columns]=\"columns()\"\n [rowIndex]=\"i\" (removed)=\"onRowRemoved()\" [isDisabled]=\"isSearching()\">\n </upd-filter-row>\n }\n\n <div class=\"ms-auto d-flex gap-2\">\n <upd-button customClasses=\"gap-2\" colorStyle=\"primary\" [isOutline]=\"true\" (clicked)=\"addEmptyFilterRow()\"\n [isDisabled]=\"!canPerformActions()\">\n <upd-icon tablerIcon=\"plus\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('AddNewFilter') }}\n </upd-button>\n <upd-button customClasses=\"gap-2\" colorStyle=\"success\" [isDisabled]=\"!canPerformActions()\" (clicked)=\"search()\">\n <upd-icon tablerIcon=\"checks\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ApplyFilters') }}\n </upd-button>\n </div>\n }\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { 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", "stopPropagation"], outputs: ["clicked"] }, { kind: "component", type: i5.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: i5.InputAppendDirective, selector: "ng-template[updInputAppend]" }, { kind: "component", type: i6.FilterRowComponent, selector: "upd-filter-row", inputs: ["activeFilters", "rowIndex", "columns", "isDisabled", "store", "currentFilter"], outputs: ["removed", "activeFiltersChange"] }] }); }
|
|
85
86
|
}
|
|
86
87
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SearchSectionComponent, decorators: [{
|
|
87
88
|
type: Component,
|
|
@@ -90,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
90
91
|
type: HostBinding,
|
|
91
92
|
args: ['class']
|
|
92
93
|
}] } });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYmxlL3NyYy9jb21wb25lbnRzL3NlYXJjaC1zZWN0aW9uL3NlYXJjaC1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJsZS9zcmMvY29tcG9uZW50cy9zZWFyY2gtc2VjdGlvbi9zZWFyY2gtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXhELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7OztBQU9yRixNQUFNLE9BQU8sc0JBQTBCLFNBQVEsYUFBYTtJQWtDeEQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQWxDVSxpQkFBWSxHQUFHLHVEQUF1RCxDQUFDO1FBRTdGLGtCQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBc0IsQ0FBQztRQUNyRCxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxQixDQUFDO1FBQzlDLGdCQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBQ3hDLHlCQUFvQixHQUFHLEtBQUss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QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBN0ZRLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHdxQ0NsQm5DLHdnRUFxQ0E7OzJGRG5CYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksb0JBQW9CO3dEQUtSLFlBQVk7c0JBQWpDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIFRlbXBsYXRlUmVmLCBIb3N0QmluZGluZywgc2lnbmFsLCBjb21wdXRlZCwgbW9kZWwsIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaFJlcXVlc3RNb2RlbCB9IGZyb20gJ0B1cGRldnMvc2RrL3N0b3Jlcyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcbmltcG9ydCB7IE9wdGlvbmFsVHlwZSwgQmdDb2xvclN0eWxlVHlwZSB9IGZyb20gJ0B1cGRldnMvc2RrL3R5cGVzJztcbmltcG9ydCB7IEJhZGdlQ29uZmlnIH0gZnJvbSAnQHVwZGV2cy9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IFN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmlsdGVySXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbHRlci1pdGVtLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlQ29uZmlnTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IEZpbHRlclRvb2xzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZmlsdGVycy50b29scyc7XG5pbXBvcnQgeyBCYXNlQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi9hYnN0cmFjdGlvbnMvYmFzZS1jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVyc09wZXJhbmRzU2VydmljZSB9IGZyb20gJy4uLy4uL2Fic3RyYWN0aW9ucy9maWx0ZXJzLW9wZXJhbmRzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1zZWFyY2gtc2VjdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2VhcmNoLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlY3Rpb25Db21wb25lbnQ8VD4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgd3JhcHBlckNsYXNzID0gJ2NhcmQtYm9keSBib3JkZXItYm90dG9tIHB5LTMgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yJztcblxuICAgIHNlYXJjaFJlcXVlc3QgPSBtb2RlbC5yZXF1aXJlZDxTZWFyY2hSZXF1ZXN0TW9kZWw+KCk7XG4gICAgaGFzQ2hhbmdlcyA9IG1vZGVsLnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gICAgY29sdW1ucyA9IGlucHV0LnJlcXVpcmVkPEJhc2VDb2x1bW5Nb2RlbFtdPigpO1xuICAgIGlzU2VhcmNoaW5nID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcbiAgICBzZWFyY2hSZXF1ZXN0U3ViamVjdCA9IGlucHV0LnJlcXVpcmVkPFN1YmplY3Q8U2VhcmNoUmVxdWVzdE1vZGVsPj4oKTtcbiAgICBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxUYWJsZUNvbmZpZ01vZGVsPFQ+PigpO1xuICAgIGFjdGlvbnNUcGwgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICAgIGFjdGl2ZUZpbHRlcnMgPSBzaWduYWw8RmlsdGVySXRlbU1vZGVsW10+KFtdKTtcbiAgICBpc0ZpbHRlclNlY3Rpb25PcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgICBjYW5BcHBseUZpbHRlcnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFjdGl2ZUZpbHRlcnMoKS5sZW5ndGggPiAwXG4gICAgICAgICYmIHRoaXMuYWN0aXZlRmlsdGVycygpLmV2ZXJ5KGFmID0+XG4gICAgICAgICAgICAhYWYuaXNIaWRkZW4gJiYgISFhZi5uYW1lICYmICEhYWYub3BlcmFuZENvbmZpZz8ub3BlcmFuZCAmJiAoIWFmLm9wZXJhbmRDb25maWc/LnJlcXVpcmVzVmFsdWUgfHwgISFhZi52YWx1ZSlcbiAgICAgICAgKVxuICAgICk7XG4gICAgY2FuUGVyZm9ybUFjdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNhbkFwcGx5RmlsdGVycygpICYmICF0aGlzLmlzU2VhcmNoaW5nKCkpO1xuICAgIGJhZGdlQ29uZmlnID0gY29tcHV0ZWQ8T3B0aW9uYWxUeXBlPEJhZGdlQ29uZmlnPj4oKCkgPT5cbiAgICAgICAgKHRoaXMuc2VhcmNoUmVxdWVzdCgpLmZpbHRlcnM/Lmxlbmd0aCB8fCAwKSA+IDBcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICBpc05vdGlmaWNhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1BpbGw6IHRydWUsXG4gICAgICAgICAgICAgICAgYmdDb2xvcjogJ3ByaW1hcnktbHQnLFxuICAgICAgICAgICAgICAgIHRleHQ6IHsgdGV4dDogdGhpcy5zZWFyY2hSZXF1ZXN0KCkuZmlsdGVycyEubGVuZ3RoLnRvU3RyaW5nKCksIGlzVHJhbnNsYXRlZDogdHJ1ZSB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIGZpbHRlclNlY3Rpb25CdG5Db2xvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXNGaWx0ZXJTZWN0aW9uT3BlbigpID8gPEJnQ29sb3JTdHlsZVR5cGU+J3ByaW1hcnknIDogdW5kZWZpbmVkKTtcblxuICAgIHJlYWRvbmx5IHNlYXJjaFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcnNPcGVyYW5kc1NlcnZpY2UgPSBpbmplY3QoRmlsdGVyc09wZXJhbmRzU2VydmljZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCh0aGlzLnNlYXJjaFJlcXVlc3QoKS5maWx0ZXJzPy5sZW5ndGggfHwgMCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzLnNldChcbiAgICAgICAgICAgICAgICAgICAgWy4uLkZpbHRlclRvb2xzLmNvbnZlcnRUb0ZpbHRlckl0ZW0odGhpcy5zZWFyY2hSZXF1ZXN0KCkuZmlsdGVycyB8fCBbXSwgdGhpcy5maWx0ZXJzT3BlcmFuZHNTZXJ2aWNlLmdldEFsbE9wZXJhbmRzKCkpXVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycy5zZXQoW10pO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNGaWx0ZXJTZWN0aW9uT3Blbi5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWFyY2hTdWIgPSB0aGlzLnNlYXJjaFN1YmplY3RcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuY29uZmlnKCkuc2VhcmNoSW5wdXREZWJvdW5jZVRpbWUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRlcm0gPT5cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFJlcXVlc3RTdWJqZWN0KCkubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc2VhcmNoUmVxdWVzdCgpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGVybVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYWRkU3Vic2NyaXB0aW9ucyhzZWFyY2hTdWIpO1xuICAgIH1cblxuICAgIHNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hSZXF1ZXN0U3ViamVjdCgpLm5leHQoe1xuICAgICAgICAgICAgLi4udGhpcy5zZWFyY2hSZXF1ZXN0KCksXG4gICAgICAgICAgICBmaWx0ZXJzOiBGaWx0ZXJUb29scy5jb252ZXJ0VG9SZXF1ZXN0RmlsdGVyKHRoaXMuYWN0aXZlRmlsdGVycygpLCB0aGlzLmNvbmZpZygpLmNvbHVtbnMpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRvZ2dsZUZpbHRlclNlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUZpbHRlcnMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkRW1wdHlGaWx0ZXJSb3coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJTZWN0aW9uT3Blbi51cGRhdGUoaXNPcGVuID0+ICFpc09wZW4pO1xuICAgIH1cblxuICAgIG9uUm93UmVtb3ZlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVycygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5pc0ZpbHRlclNlY3Rpb25PcGVuLnNldChmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaCgpO1xuICAgIH1cblxuICAgIGFkZEVtcHR5RmlsdGVyUm93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlcnMudXBkYXRlKGN1cnIgPT4ge1xuICAgICAgICAgICAgY3Vyci5wdXNoKHt9KTtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY3Vycl07XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyBwcmVmaXg6ICdVcERldnMuVGFibGUnXCI+XG4gICAgQGlmICghIWFjdGlvbnNUcGwoKSkge1xuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWN0aW9uc1RwbCgpIVwiPjwvbmctdGVtcGxhdGU+XG4gICAgfVxuXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgPHVwZC1pbnB1dCB3cmFwcGVyQ2xhc3Nlcz1cInctMTAwXCIgW3BsYWNlaG9sZGVyXT1cInt0ZXh0OidVcERldnMuVGFibGUuU2VhcmNoJywgaXNUcmFuc2xhdGVkOmZhbHNlfVwiIFtpc0FwcGVuZEJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZWFyY2hTdWJqZWN0Lm5leHQoJGV2ZW50KVwiIFt2YWx1ZV09XCJzZWFyY2hSZXF1ZXN0KCkuZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB1cGRJbnB1dEFwcGVuZD5cbiAgICAgICAgICAgICAgICA8dXBkLWJ1dHRvbiBbaXNJY29uXT1cInRydWVcIiBbY29sb3JTdHlsZV09XCJmaWx0ZXJTZWN0aW9uQnRuQ29sb3IoKVwiIChjbGlja2VkKT1cInRvZ2dsZUZpbHRlclNlY3Rpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIFtiYWRnZUNvbmZpZ109XCJiYWRnZUNvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx1cGQtaWNvbiBbdGFibGVySWNvbl09XCJpc0ZpbHRlclNlY3Rpb25PcGVuKCkgPyAnZmlsdGVyLXVwJyA6ICdmaWx0ZXItZG93bidcIiBbdGFibGVySWNvblNpemVdPVwiMjBcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgIDwvdXBkLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdXBkLWlucHV0PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0ZpbHRlclNlY3Rpb25PcGVuKCkpIHtcbiAgICAgICAgQGZvciAocm93IG9mIGFjdGl2ZUZpbHRlcnMoKTsgdHJhY2sgcm93OyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgPHVwZC1maWx0ZXItcm93IFtzdG9yZV09XCJjb25maWcoKS5zdG9yZVwiIFtjdXJyZW50RmlsdGVyXT1cInJvd1wiIFsoYWN0aXZlRmlsdGVycyldPVwiYWN0aXZlRmlsdGVyc1wiIFtjb2x1bW5zXT1cImNvbHVtbnMoKVwiXG4gICAgICAgICAgICAgICAgW3Jvd0luZGV4XT1cImlcIiAocmVtb3ZlZCk9XCJvblJvd1JlbW92ZWQoKVwiIFtpc0Rpc2FibGVkXT1cImlzU2VhcmNoaW5nKClcIj5cbiAgICAgICAgICAgIDwvdXBkLWZpbHRlci1yb3c+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibXMtYXV0byBkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgIDx1cGQtYnV0dG9uIGN1c3RvbUNsYXNzZXM9XCJnYXAtMlwiIGNvbG9yU3R5bGU9XCJwcmltYXJ5XCIgW2lzT3V0bGluZV09XCJ0cnVlXCIgKGNsaWNrZWQpPVwiYWRkRW1wdHlGaWx0ZXJSb3coKVwiXG4gICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiIWNhblBlcmZvcm1BY3Rpb25zKClcIj5cbiAgICAgICAgICAgICAgICA8dXBkLWljb24gdGFibGVySWNvbj1cInBsdXNcIiB0YWJsZXJJY29uV2VpZ2h0PVwiYm9sZFwiIFt0YWJsZXJJY29uU2l6ZV09XCIyMFwiPjwvdXBkLWljb24+XG4gICAgICAgICAgICAgICAge3sgdCgnQWRkTmV3RmlsdGVyJykgfX1cbiAgICAgICAgICAgIDwvdXBkLWJ1dHRvbj5cbiAgICAgICAgICAgIDx1cGQtYnV0dG9uIGN1c3RvbUNsYXNzZXM9XCJnYXAtMlwiIGNvbG9yU3R5bGU9XCJzdWNjZXNzXCIgW2lzRGlzYWJsZWRdPVwiIWNhblBlcmZvcm1BY3Rpb25zKClcIiAoY2xpY2tlZCk9XCJzZWFyY2goKVwiPlxuICAgICAgICAgICAgICAgIDx1cGQtaWNvbiB0YWJsZXJJY29uPVwiY2hlY2tzXCIgdGFibGVySWNvbldlaWdodD1cImJvbGRcIiBbdGFibGVySWNvblNpemVdPVwiMjBcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgIHt7IHQoJ0FwcGx5RmlsdGVycycpIH19XG4gICAgICAgICAgICA8L3VwZC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYmxlL3NyYy9jb21wb25lbnRzL3NlYXJjaC1zZWN0aW9uL3NlYXJjaC1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJsZS9zcmMvY29tcG9uZW50cy9zZWFyY2gtc2VjdGlvbi9zZWFyY2gtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXhELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7OztBQU9yRixNQUFNLE9BQU8sc0JBQTBCLFNBQVEsYUFBYTtJQWtDeEQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQWxDVSxpQkFBWSxHQUFHLHVEQUF1RCxDQUFDO1FBRXBGLGtCQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBc0IsQ0FBQztRQUNyRCxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxQixDQUFDO1FBQzlDLGdCQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBQ3hDLHlCQUFvQixHQUFHLEtBQUss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QUNiLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBN0ZRLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHdxQ0NsQm5DLHdnRUFxQ0E7OzJGRG5CYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksb0JBQW9CO3dEQUtSLFlBQVk7c0JBQWpDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIFRlbXBsYXRlUmVmLCBIb3N0QmluZGluZywgc2lnbmFsLCBjb21wdXRlZCwgbW9kZWwsIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaFJlcXVlc3RNb2RlbCB9IGZyb20gJ0B1cGRldnMvc2RrL3N0b3Jlcyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcbmltcG9ydCB7IE9wdGlvbmFsVHlwZSwgQmdDb2xvclN0eWxlVHlwZSB9IGZyb20gJ0B1cGRldnMvc2RrL3R5cGVzJztcbmltcG9ydCB7IEJhZGdlQ29uZmlnIH0gZnJvbSAnQHVwZGV2cy9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IFN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmlsdGVySXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbHRlci1pdGVtLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlQ29uZmlnTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IEZpbHRlclRvb2xzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZmlsdGVycy50b29scyc7XG5pbXBvcnQgeyBCYXNlQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi9hYnN0cmFjdGlvbnMvYmFzZS1jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVyc09wZXJhbmRzU2VydmljZSB9IGZyb20gJy4uLy4uL2Fic3RyYWN0aW9ucy9maWx0ZXJzLW9wZXJhbmRzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1zZWFyY2gtc2VjdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2VhcmNoLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlY3Rpb25Db21wb25lbnQ8VD4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgd3JhcHBlckNsYXNzID0gJ2NhcmQtYm9keSBib3JkZXItYm90dG9tIHB5LTMgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yJztcblxuICAgIHJlYWRvbmx5IHNlYXJjaFJlcXVlc3QgPSBtb2RlbC5yZXF1aXJlZDxTZWFyY2hSZXF1ZXN0TW9kZWw+KCk7XG4gICAgcmVhZG9ubHkgaGFzQ2hhbmdlcyA9IG1vZGVsLnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gICAgcmVhZG9ubHkgY29sdW1ucyA9IGlucHV0LnJlcXVpcmVkPEJhc2VDb2x1bW5Nb2RlbFtdPigpO1xuICAgIHJlYWRvbmx5IGlzU2VhcmNoaW5nID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcbiAgICByZWFkb25seSBzZWFyY2hSZXF1ZXN0U3ViamVjdCA9IGlucHV0LnJlcXVpcmVkPFN1YmplY3Q8U2VhcmNoUmVxdWVzdE1vZGVsPj4oKTtcbiAgICByZWFkb25seSBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxUYWJsZUNvbmZpZ01vZGVsPFQ+PigpO1xuICAgIHJlYWRvbmx5IGFjdGlvbnNUcGwgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICAgIHJlYWRvbmx5IGFjdGl2ZUZpbHRlcnMgPSBzaWduYWw8RmlsdGVySXRlbU1vZGVsW10+KFtdKTtcbiAgICByZWFkb25seSBpc0ZpbHRlclNlY3Rpb25PcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgICByZWFkb25seSBjYW5BcHBseUZpbHRlcnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFjdGl2ZUZpbHRlcnMoKS5sZW5ndGggPiAwXG4gICAgICAgICYmIHRoaXMuYWN0aXZlRmlsdGVycygpLmV2ZXJ5KGFmID0+XG4gICAgICAgICAgICAhYWYuaXNIaWRkZW4gJiYgISFhZi5uYW1lICYmICEhYWYub3BlcmFuZENvbmZpZz8ub3BlcmFuZCAmJiAoIWFmLm9wZXJhbmRDb25maWc/LnJlcXVpcmVzVmFsdWUgfHwgISFhZi52YWx1ZSlcbiAgICAgICAgKVxuICAgICk7XG4gICAgcmVhZG9ubHkgdmlzaWJsZUZpbHRlcnNDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VhcmNoUmVxdWVzdCgpLmZpbHRlcnM/LmZpbHRlcihhZiA9PiAhYWYuaXNIaWRkZW4pLmxlbmd0aCB8fCAwKTtcbiAgICByZWFkb25seSBjYW5QZXJmb3JtQWN0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2FuQXBwbHlGaWx0ZXJzKCkgJiYgIXRoaXMuaXNTZWFyY2hpbmcoKSk7XG4gICAgcmVhZG9ubHkgYmFkZ2VDb25maWcgPSBjb21wdXRlZDxPcHRpb25hbFR5cGU8QmFkZ2VDb25maWc+PigoKSA9PlxuICAgICAgICB0aGlzLnZpc2libGVGaWx0ZXJzQ291bnQoKSA+IDBcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICBpc05vdGlmaWNhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1BpbGw6IHRydWUsXG4gICAgICAgICAgICAgICAgYmdDb2xvcjogJ3ByaW1hcnktbHQnLFxuICAgICAgICAgICAgICAgIHRleHQ6IHsgdGV4dDogdGhpcy52aXNpYmxlRmlsdGVyc0NvdW50KCkudG9TdHJpbmcoKSwgaXNUcmFuc2xhdGVkOiB0cnVlIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgcmVhZG9ubHkgZmlsdGVyU2VjdGlvbkJ0bkNvbG9yID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pc0ZpbHRlclNlY3Rpb25PcGVuKCkgPyA8QmdDb2xvclN0eWxlVHlwZT4ncHJpbWFyeScgOiB1bmRlZmluZWQpO1xuICAgIHJlYWRvbmx5IHNlYXJjaFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcnNPcGVyYW5kc1NlcnZpY2UgPSBpbmplY3QoRmlsdGVyc09wZXJhbmRzU2VydmljZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZUZpbHRlcnNDb3VudCgpID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycy5zZXQoXG4gICAgICAgICAgICAgICAgICAgIFsuLi5GaWx0ZXJUb29scy5jb252ZXJ0VG9GaWx0ZXJJdGVtKHRoaXMuc2VhcmNoUmVxdWVzdCgpLmZpbHRlcnM/LmZpbHRlcihhZiA9PiAhYWYuaXNIaWRkZW4pIHx8IFtdLCB0aGlzLmZpbHRlcnNPcGVyYW5kc1NlcnZpY2UuZ2V0QWxsT3BlcmFuZHMoKSldXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzLnNldChbXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpbHRlclNlY3Rpb25PcGVuLnNldChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFN1YiA9IHRoaXMuc2VhcmNoU3ViamVjdFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5jb25maWcoKS5zZWFyY2hJbnB1dERlYm91bmNlVGltZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGVybSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVxdWVzdFN1YmplY3QoKS5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5zZWFyY2hSZXF1ZXN0KCksXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXJtXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5hZGRTdWJzY3JpcHRpb25zKHNlYXJjaFN1Yik7XG4gICAgfVxuXG4gICAgc2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaFJlcXVlc3RTdWJqZWN0KCkubmV4dCh7XG4gICAgICAgICAgICAuLi50aGlzLnNlYXJjaFJlcXVlc3QoKSxcbiAgICAgICAgICAgIGZpbHRlcnM6IEZpbHRlclRvb2xzLmNvbnZlcnRUb1JlcXVlc3RGaWx0ZXIodGhpcy5hY3RpdmVGaWx0ZXJzKCksIHRoaXMuY29uZmlnKCkuY29sdW1ucylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlRmlsdGVyU2VjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVycygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5hZGRFbXB0eUZpbHRlclJvdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0ZpbHRlclNlY3Rpb25PcGVuLnVwZGF0ZShpc09wZW4gPT4gIWlzT3Blbik7XG4gICAgfVxuXG4gICAgb25Sb3dSZW1vdmVkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXJzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmlzRmlsdGVyU2VjdGlvbk9wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XG4gICAgfVxuXG4gICAgYWRkRW1wdHlGaWx0ZXJSb3coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycy51cGRhdGUoY3VyciA9PiB7XG4gICAgICAgICAgICBjdXJyLnB1c2goe30pO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jdXJyXTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHQ7IHByZWZpeDogJ1VwRGV2cy5UYWJsZSdcIj5cbiAgICBAaWYgKCEhYWN0aW9uc1RwbCgpKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJhY3Rpb25zVHBsKCkhXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICB9XG5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICA8dXBkLWlucHV0IHdyYXBwZXJDbGFzc2VzPVwidy0xMDBcIiBbcGxhY2Vob2xkZXJdPVwie3RleHQ6J1VwRGV2cy5UYWJsZS5TZWFyY2gnLCBpc1RyYW5zbGF0ZWQ6ZmFsc2V9XCIgW2lzQXBwZW5kQnV0dG9uXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNlYXJjaFN1YmplY3QubmV4dCgkZXZlbnQpXCIgW3ZhbHVlXT1cInNlYXJjaFJlcXVlc3QoKS5kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHVwZElucHV0QXBwZW5kPlxuICAgICAgICAgICAgICAgIDx1cGQtYnV0dG9uIFtpc0ljb25dPVwidHJ1ZVwiIFtjb2xvclN0eWxlXT1cImZpbHRlclNlY3Rpb25CdG5Db2xvcigpXCIgKGNsaWNrZWQpPVwidG9nZ2xlRmlsdGVyU2VjdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgW2JhZGdlQ29uZmlnXT1cImJhZGdlQ29uZmlnKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVwZC1pY29uIFt0YWJsZXJJY29uXT1cImlzRmlsdGVyU2VjdGlvbk9wZW4oKSA/ICdmaWx0ZXItdXAnIDogJ2ZpbHRlci1kb3duJ1wiIFt0YWJsZXJJY29uU2l6ZV09XCIyMFwiPjwvdXBkLWljb24+XG4gICAgICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC91cGQtaW5wdXQ+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGlzRmlsdGVyU2VjdGlvbk9wZW4oKSkge1xuICAgICAgICBAZm9yIChyb3cgb2YgYWN0aXZlRmlsdGVycygpOyB0cmFjayByb3c7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8dXBkLWZpbHRlci1yb3cgW3N0b3JlXT1cImNvbmZpZygpLnN0b3JlXCIgW2N1cnJlbnRGaWx0ZXJdPVwicm93XCIgWyhhY3RpdmVGaWx0ZXJzKV09XCJhY3RpdmVGaWx0ZXJzXCIgW2NvbHVtbnNdPVwiY29sdW1ucygpXCJcbiAgICAgICAgICAgICAgICBbcm93SW5kZXhdPVwiaVwiIChyZW1vdmVkKT1cIm9uUm93UmVtb3ZlZCgpXCIgW2lzRGlzYWJsZWRdPVwiaXNTZWFyY2hpbmcoKVwiPlxuICAgICAgICAgICAgPC91cGQtZmlsdGVyLXJvdz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcy1hdXRvIGQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgPHVwZC1idXR0b24gY3VzdG9tQ2xhc3Nlcz1cImdhcC0yXCIgY29sb3JTdHlsZT1cInByaW1hcnlcIiBbaXNPdXRsaW5lXT1cInRydWVcIiAoY2xpY2tlZCk9XCJhZGRFbXB0eUZpbHRlclJvdygpXCJcbiAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCIhY2FuUGVyZm9ybUFjdGlvbnMoKVwiPlxuICAgICAgICAgICAgICAgIDx1cGQtaWNvbiB0YWJsZXJJY29uPVwicGx1c1wiIHRhYmxlckljb25XZWlnaHQ9XCJib2xkXCIgW3RhYmxlckljb25TaXplXT1cIjIwXCI+PC91cGQtaWNvbj5cbiAgICAgICAgICAgICAgICB7eyB0KCdBZGROZXdGaWx0ZXInKSB9fVxuICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgPHVwZC1idXR0b24gY3VzdG9tQ2xhc3Nlcz1cImdhcC0yXCIgY29sb3JTdHlsZT1cInN1Y2Nlc3NcIiBbaXNEaXNhYmxlZF09XCIhY2FuUGVyZm9ybUFjdGlvbnMoKVwiIChjbGlja2VkKT1cInNlYXJjaCgpXCI+XG4gICAgICAgICAgICAgICAgPHVwZC1pY29uIHRhYmxlckljb249XCJjaGVja3NcIiB0YWJsZXJJY29uV2VpZ2h0PVwiYm9sZFwiIFt0YWJsZXJJY29uU2l6ZV09XCIyMFwiPjwvdXBkLWljb24+XG4gICAgICAgICAgICAgICAge3sgdCgnQXBwbHlGaWx0ZXJzJykgfX1cbiAgICAgICAgICAgIDwvdXBkLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -430,7 +430,7 @@ export class TableComponent extends BaseComponent {
|
|
|
430
430
|
};
|
|
431
431
|
}
|
|
432
432
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
433
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: TableComponent, selector: "upd-table", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, searchRequest: { classPropertyName: "searchRequest", publicName: "searchRequest", isSignal: true, isRequired: false, transformFunction: null }, activeFilters: { classPropertyName: "activeFilters", publicName: "activeFilters", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange", searchRequest: "searchRequestChange", activeFilters: "activeFiltersChange", currentPage: "currentPageChange", pageSize: "pageSizeChange" }, viewQueries: [{ propertyName: "savedViewsRef", first: true, predicate: ["savedViewsBtn"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n <div class=\"card\">\n @if (!!configModel().title || !configModel().canSearch) {\n <div class=\"card-header\">\n @if (!!configModel().title) {\n <h3 class=\"card-title\">{{ textService.getText(configModel().title) }}</h3>\n }\n <ng-template [ngTemplateOutlet]=\"actionsTpl\"></ng-template>\n </div>\n }\n\n @if (configModel().customHeaderActions.length > 0) {\n <div class=\"card-body py-3 d-flex flex-column gap-2\">\n <div class=\"ms-auto d-flex gap-2\">\n @for (btn of configModel().customHeaderActions; track btn) {\n <upd-button customClasses=\"gap-2\" [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n\n @if (configModel().canSearch) {\n <upd-search-section [actionsTpl]=\"!configModel().title ? actionsTpl : undefined\" [isSearching]=\"isSearching()\"\n [(searchRequest)]=\"searchRequest\" [searchRequestSubject]=\"searchRequestSubject\" [config]=\"configModel()\"\n [(hasChanges)]=\"hasSearchChanged\" [columns]=\"columns()\">\n </upd-search-section>\n }\n\n <div [class.table-responsive]=\"configModel().isResponsive\">\n <!-- TODO: implement pixel sized table -->\n <table class=\"table card-table table-vcenter table-nowrap\" [class.fixed]=\"hasWidth\"\n [class.pixel-sized]=\"isWidthInPixels\">\n <thead [class.sticky-top]=\"configModel().hasStickyHeader\">\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <th class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleAllSelection($event)\"\n [(isChecked)]=\"isMainCheckboxChecked\"\n [(isIndeterminate)]=\"isMainCheckboxIndeterminate\"></upd-checkbox>\n </th>\n }\n\n @for (col of columns(); track col) {\n <th [ngClass]=\"col.widthClass\" [style.width.px]=\"col.pixelsSize\">\n {{ textService.getText(col.title) }}\n @if (canSortColumn(col.name)) {\n <upd-icon [tablerIcon]=\"getSortingIcon(col.name)\" tablerIconWeight=\"bold\" colorClass=\"text-body-tertiary\"\n [tablerIconSize]=\"16\" (click)=\"sortByColumn(col.name)\">\n </upd-icon>\n }\n </th>\n }\n\n @if (!!pendingWidthColClass) {\n <th [ngClass]=\"pendingWidthColClass\"></th>\n }\n\n @if (configModel().customActions.length > 0) {\n <th class=\"custom-actions\"></th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (isSearching()) {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ t('Loading') }}...</h1>\n <div class=\"progress progress-sm w-25\">\n <div class=\"progress-bar progress-bar-indeterminate bg-body-tertiary\"></div>\n </div>\n </div>\n </td>\n </tr>\n } @else {\n @for (record of data(); track record) {\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <td class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleItemSelection(record)\"\n [isChecked]=\"selectionModel().isSelected(record)\"></upd-checkbox>\n </td>\n }\n\n @for (col of columns(); track col) {\n <td [style.width.px]=\"col.pixelsSize\">\n <ng-container updTableColumn [record]=\"record\" [config]=\"col\"></ng-container>\n </td>\n }\n\n @if (!!pendingWidthColClass) {\n <td></td>\n }\n\n @if (configModel().customActions.length > 0) {\n <td style=\"overflow: unset\">\n <div class=\"grow-left d-flex\">\n @if (configModel().customActions.length > 1) {\n <upd-button customClasses=\"ca-item\" [iconModel]=\"{tablerIcon:'dots'}\" [isIcon]=\"true\"\n [isLink]=\"true\" size=\"small\"></upd-button>\n\n <div class=\"ca-dropdown-content rounded shadow-sm\">\n @for (btn of configModel().customActions; track btn) {\n <upd-button [model]=\"adaptCustomAction(btn, record)\"></upd-button>\n }\n </div>\n } @else {\n <upd-button [model]=\"adaptCustomAction(configModel().customActions[0], record)\">\n </upd-button>\n }\n </div>\n </td>\n }\n </tr>\n } @empty {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <p class=\"empty-title\">{{ t('NoRecordsFoundTitle') }}</p>\n <p class=\"empty-subtitle text-secondary\">{{ t('NoRecordsFoundSubtitle') }}</p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n <upd-paginator wrapperClasses=\"card-footer\" [shouldDisplayPreviousText]=\"false\" [shouldDisplayNextText]=\"false\"\n [(pageSize)]=\"pageSize\" [shouldDisplayFirstText]=\"false\" [shouldDisplayLastText]=\"false\"\n [(currentPage)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\" (changed)=\"onPageSettingsChanged()\">\n </upd-paginator>\n </div>\n\n <ng-template #actionsTpl>\n <div class=\"ms-auto d-flex gap-2\">\n @if (!!activeSavedView()) {\n @if (activeSavedView()!.isDefault) {\n <div class=\"ribbon ribbon-top ribbon-start\">\n <upd-icon tablerIcon=\"heart\" [tablerIconSize]=\"20\"></upd-icon>\n </div>\n }\n <div class=\"tag align-self-center py-3 text-primary bg-primary-lt border-primary\"\n updPopover=\"{{ t('CurrentSavedView') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"list-details\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ activeSavedView()!.name }}</span>\n </div>\n }\n @if (hiddenColumns() > 0) {\n <div class=\"tag align-self-center py-3 text-orange bg-orange-lt border-orange\"\n updPopover=\"{{ t('HiddenColumnsTooltip') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"eye-off\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ hiddenColumns() }}</span>\n </div>\n }\n @if (!!activeSavedView() || hiddenColumns() > 0) {\n <upd-button (clicked)=\"resetViewState()\" colorStyle=\"danger\" updPopover=\"{{ t('ResetView') }}\"\n [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\" [isOutline]=\"true\">\n <upd-icon tablerIcon=\"restore\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canSaveViews) {\n <upd-button customClasses=\"gap-2\" [isDisabled]=\"!hasSearchChanged()\" (clicked)=\"openSaveSearchModal()\"\n updPopover=\"{{ t('SaveCurrentView') }}\" [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\">\n <upd-icon tablerIcon=\"device-floppy\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canManageColumns) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"openColumnsManagerModal()\">\n <upd-icon tablerIcon=\"columns\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ColumnsManagerButton') }}\n </upd-button>\n }\n @if (configModel().canSaveViews || configModel().canLoadSavedViews) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"isSavedViewsDropdownOpen = true\" #savedViewsBtn>\n <upd-icon tablerIcon=\"folders\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('SavedViews.ButtonTitle') }}\n </upd-button>\n <upd-dropdown wrapperClasses=\"overflow-x-hidden mt-1\" [isOpen]=\"isSavedViewsDropdownOpen\"\n [dropdownReference]=\"savedViewsRef()\" [items]=\"savedViewsOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isSavedViewsDropdownOpen = $event\" [minWidth]=\"350\" (selectedItem)=\"selectSavedView($event)\">\n @if (savedViewsOptions().length < 1) {\n <span class=\"m-2\">{{ t('NoSavedViews') }}</span>\n }\n </upd-dropdown>\n }\n </div>\n </ng-template>\n</ng-container>\n", styles: [".fixed{table-layout:fixed!important}.fixed td,.fixed th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.checkbox-selector{width:52px!important}.custom-actions{width:56px!important}.ca-item{transition:all,.5s}.ca-item:hover{width:400px}.grow-left{direction:rtl}.ca-dropdown-content{display:none;background:var(--upd-secondary-lt)}.grow-left:hover .ca-dropdown-content{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { 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.PaginatorComponent, selector: "upd-paginator", inputs: ["startPageIndex", "currentPage", "wrapperClasses", "availablePageSizes", "defaultInitPageSize", "pageSize", "shouldDisplayFirstIcon", "shouldDisplayFirstText", "shouldDisplayPreviousIcon", "shouldDisplayPreviousText", "shouldDisplayNextIcon", "shouldDisplayNextText", "shouldDisplayLastIcon", "shouldDisplayLastText", "previousDescription", "nextDescription", "totalRecords"], outputs: ["changed", "currentPageChange", "pageSizeChange"] }, { kind: "component", type: i6.CheckboxComponent, selector: "upd-checkbox", inputs: ["wrapperClasses", "value", "customClasses", "isChecked", "isInline", "isSwitch", "isIndeterminate"], outputs: ["changed", "isCheckedChange", "isIndeterminateChange"] }, { kind: "component", type: i7.DropdownComponent, selector: "upd-dropdown", inputs: ["items", "header", "isOpen", "shouldCloseOnOutsideClick", "arrowType", "wrapperClasses", "elementsExcludedFromOutsideClick", "minHeight", "maxHeight", "minWidth", "maxWidth", "dropdownReference", "dropdownReferencePosition", "textOverflowStrategy"], outputs: ["isOpenChange", "selectedItem", "checkboxChanged"] }, { kind: "directive", type: i8.PopoverDirective, selector: "[updPopover]", inputs: ["updPopover", "updPopoverTitle", "updPopoverTitleTemplate", "updPopoverTemplate", "updPopoverPlacement", "updPopoverCustomClasses", "updPopoverActAsTooltip"] }, { kind: "component", type: i9.SearchSectionComponent, selector: "upd-search-section", inputs: ["searchRequest", "hasChanges", "columns", "isSearching", "searchRequestSubject", "config", "actionsTpl"], outputs: ["searchRequestChange", "hasChangesChange"] }, { kind: "directive", type: i10.TableColumnDirective, selector: "[updTableColumn]", inputs: ["record", "config"] }] }); }
|
|
433
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: TableComponent, selector: "upd-table", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, searchRequest: { classPropertyName: "searchRequest", publicName: "searchRequest", isSignal: true, isRequired: false, transformFunction: null }, activeFilters: { classPropertyName: "activeFilters", publicName: "activeFilters", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange", searchRequest: "searchRequestChange", activeFilters: "activeFiltersChange", currentPage: "currentPageChange", pageSize: "pageSizeChange" }, viewQueries: [{ propertyName: "savedViewsRef", first: true, predicate: ["savedViewsBtn"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n <div class=\"card\">\n @if (!!configModel().title || !configModel().canSearch) {\n <div class=\"card-header\">\n @if (!!configModel().title) {\n <h3 class=\"card-title\">{{ textService.getText(configModel().title) }}</h3>\n }\n <ng-template [ngTemplateOutlet]=\"actionsTpl\"></ng-template>\n </div>\n }\n\n @if (configModel().customHeaderActions.length > 0) {\n <div class=\"card-body py-3 d-flex flex-column gap-2\">\n <div class=\"ms-auto d-flex gap-2\">\n @for (btn of configModel().customHeaderActions; track btn) {\n <upd-button customClasses=\"gap-2\" [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n\n @if (configModel().canSearch) {\n <upd-search-section [actionsTpl]=\"!configModel().title ? actionsTpl : undefined\" [isSearching]=\"isSearching()\"\n [(searchRequest)]=\"searchRequest\" [searchRequestSubject]=\"searchRequestSubject\" [config]=\"configModel()\"\n [(hasChanges)]=\"hasSearchChanged\" [columns]=\"columns()\">\n </upd-search-section>\n }\n\n <div [class.table-responsive]=\"configModel().isResponsive\">\n <!-- TODO: implement pixel sized table -->\n <table class=\"table card-table table-vcenter table-nowrap\" [class.fixed]=\"hasWidth\"\n [class.pixel-sized]=\"isWidthInPixels\">\n <thead [class.sticky-top]=\"configModel().hasStickyHeader\">\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <th class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleAllSelection($event)\"\n [(isChecked)]=\"isMainCheckboxChecked\"\n [(isIndeterminate)]=\"isMainCheckboxIndeterminate\"></upd-checkbox>\n </th>\n }\n\n @for (col of columns(); track col) {\n <th [ngClass]=\"col.widthClass\" [style.width.px]=\"col.pixelsSize\">\n {{ textService.getText(col.title) }}\n @if (canSortColumn(col.name)) {\n <upd-icon [tablerIcon]=\"getSortingIcon(col.name)\" tablerIconWeight=\"bold\" colorClass=\"text-body-tertiary\"\n [tablerIconSize]=\"16\" (click)=\"sortByColumn(col.name)\">\n </upd-icon>\n }\n </th>\n }\n\n @if (!!pendingWidthColClass) {\n <th [ngClass]=\"pendingWidthColClass\"></th>\n }\n\n @if (configModel().customActions.length > 0) {\n <th class=\"custom-actions\"></th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (isSearching()) {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ t('Loading') }}...</h1>\n <div class=\"progress progress-sm w-25\">\n <div class=\"progress-bar progress-bar-indeterminate bg-body-tertiary\"></div>\n </div>\n </div>\n </td>\n </tr>\n } @else {\n @for (record of data(); track record) {\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <td class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleItemSelection(record)\"\n [isChecked]=\"selectionModel().isSelected(record)\"></upd-checkbox>\n </td>\n }\n\n @for (col of columns(); track col) {\n <td [style.width.px]=\"col.pixelsSize\">\n <ng-container updTableColumn [record]=\"record\" [config]=\"col\"></ng-container>\n </td>\n }\n\n @if (!!pendingWidthColClass) {\n <td></td>\n }\n\n @if (configModel().customActions.length > 0) {\n <td style=\"overflow: unset\">\n <div class=\"grow-left d-flex\">\n @if (configModel().customActions.length > 1) {\n <upd-button customClasses=\"ca-item\" [iconModel]=\"{tablerIcon:'dots'}\" [isIcon]=\"true\"\n [isLink]=\"true\" size=\"small\"></upd-button>\n\n <div class=\"ca-dropdown-content rounded shadow-sm\">\n @for (btn of configModel().customActions; track btn) {\n <upd-button [model]=\"adaptCustomAction(btn, record)\"></upd-button>\n }\n </div>\n } @else {\n <upd-button [model]=\"adaptCustomAction(configModel().customActions[0], record)\">\n </upd-button>\n }\n </div>\n </td>\n }\n </tr>\n } @empty {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <p class=\"empty-title\">{{ t('NoRecordsFoundTitle') }}</p>\n <p class=\"empty-subtitle text-secondary\">{{ t('NoRecordsFoundSubtitle') }}</p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n <upd-paginator wrapperClasses=\"card-footer\" [shouldDisplayPreviousText]=\"false\" [shouldDisplayNextText]=\"false\"\n [(pageSize)]=\"pageSize\" [shouldDisplayFirstText]=\"false\" [shouldDisplayLastText]=\"false\"\n [(currentPage)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\" (changed)=\"onPageSettingsChanged()\">\n </upd-paginator>\n </div>\n\n <ng-template #actionsTpl>\n <div class=\"ms-auto d-flex gap-2\">\n @if (!!activeSavedView()) {\n @if (activeSavedView()!.isDefault) {\n <div class=\"ribbon ribbon-top ribbon-start\">\n <upd-icon tablerIcon=\"heart\" [tablerIconSize]=\"20\"></upd-icon>\n </div>\n }\n <div class=\"tag align-self-center py-3 text-primary bg-primary-lt border-primary\"\n updPopover=\"{{ t('CurrentSavedView') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"list-details\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ activeSavedView()!.name }}</span>\n </div>\n }\n @if (hiddenColumns() > 0) {\n <div class=\"tag align-self-center py-3 text-orange bg-orange-lt border-orange\"\n updPopover=\"{{ t('HiddenColumnsTooltip') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"eye-off\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ hiddenColumns() }}</span>\n </div>\n }\n @if (!!activeSavedView() || hiddenColumns() > 0) {\n <upd-button (clicked)=\"resetViewState()\" colorStyle=\"danger\" updPopover=\"{{ t('ResetView') }}\"\n [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\" [isOutline]=\"true\">\n <upd-icon tablerIcon=\"restore\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canSaveViews) {\n <upd-button customClasses=\"gap-2\" [isDisabled]=\"!hasSearchChanged()\" (clicked)=\"openSaveSearchModal()\"\n updPopover=\"{{ t('SaveCurrentView') }}\" [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\">\n <upd-icon tablerIcon=\"device-floppy\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canManageColumns) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"openColumnsManagerModal()\">\n <upd-icon tablerIcon=\"columns\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ColumnsManagerButton') }}\n </upd-button>\n }\n @if (configModel().canSaveViews || configModel().canLoadSavedViews) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"isSavedViewsDropdownOpen = true\" #savedViewsBtn>\n <upd-icon tablerIcon=\"folders\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('SavedViews.ButtonTitle') }}\n </upd-button>\n <upd-dropdown wrapperClasses=\"overflow-x-hidden mt-1\" [isOpen]=\"isSavedViewsDropdownOpen\"\n [dropdownReference]=\"savedViewsRef()\" [items]=\"savedViewsOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isSavedViewsDropdownOpen = $event\" [minWidth]=\"350\" (selectedItem)=\"selectSavedView($event)\">\n @if (savedViewsOptions().length < 1) {\n <span class=\"m-2\">{{ t('NoSavedViews') }}</span>\n }\n </upd-dropdown>\n }\n </div>\n </ng-template>\n</ng-container>\n", styles: [".fixed{table-layout:fixed!important}.fixed td,.fixed th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.checkbox-selector{width:52px!important}.custom-actions{width:56px!important}.ca-item{transition:all,.5s}.ca-item:hover{width:400px}.grow-left{direction:rtl}.ca-dropdown-content{display:none;background:var(--upd-secondary-lt)}.grow-left:hover .ca-dropdown-content{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { 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", "stopPropagation"], outputs: ["clicked"] }, { kind: "component", type: i5.PaginatorComponent, selector: "upd-paginator", inputs: ["startPageIndex", "currentPage", "wrapperClasses", "availablePageSizes", "defaultInitPageSize", "pageSize", "shouldDisplayFirstIcon", "shouldDisplayFirstText", "shouldDisplayPreviousIcon", "shouldDisplayPreviousText", "shouldDisplayNextIcon", "shouldDisplayNextText", "shouldDisplayLastIcon", "shouldDisplayLastText", "previousDescription", "nextDescription", "totalRecords"], outputs: ["changed", "currentPageChange", "pageSizeChange"] }, { kind: "component", type: i6.CheckboxComponent, selector: "upd-checkbox", inputs: ["wrapperClasses", "value", "customClasses", "isChecked", "isInline", "isSwitch", "isIndeterminate"], outputs: ["changed", "isCheckedChange", "isIndeterminateChange"] }, { kind: "component", type: i7.DropdownComponent, selector: "upd-dropdown", inputs: ["items", "header", "isOpen", "shouldCloseOnOutsideClick", "arrowType", "wrapperClasses", "elementsExcludedFromOutsideClick", "minHeight", "maxHeight", "minWidth", "maxWidth", "dropdownReference", "dropdownReferencePosition", "textOverflowStrategy"], outputs: ["isOpenChange", "selectedItem", "checkboxChanged"] }, { kind: "directive", type: i8.PopoverDirective, selector: "[updPopover]", inputs: ["updPopover", "updPopoverTitle", "updPopoverTitleTemplate", "updPopoverTemplate", "updPopoverPlacement", "updPopoverCustomClasses", "updPopoverActAsTooltip"] }, { kind: "component", type: i9.SearchSectionComponent, selector: "upd-search-section", inputs: ["searchRequest", "hasChanges", "columns", "isSearching", "searchRequestSubject", "config", "actionsTpl"], outputs: ["searchRequestChange", "hasChangesChange"] }, { kind: "directive", type: i10.TableColumnDirective, selector: "[updTableColumn]", inputs: ["record", "config"] }] }); }
|
|
434
434
|
}
|
|
435
435
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TableComponent, decorators: [{
|
|
436
436
|
type: Component,
|
|
@@ -46,6 +46,7 @@ class ButtonComponent {
|
|
|
46
46
|
this.colorStyle = input();
|
|
47
47
|
this.size = input('regular');
|
|
48
48
|
this.title = input();
|
|
49
|
+
this.stopPropagation = input(false);
|
|
49
50
|
this._size = computed(() => !!this.model() ? this.model().size() : this.size());
|
|
50
51
|
this._title = computed(() => !!this.model() && !!this.model()?.title ? this.model().title() : this.title());
|
|
51
52
|
this._colorStyle = computed(() => !!this.model() && !!this.model()?.colorStyle ? this.model().colorStyle() : this.colorStyle());
|
|
@@ -138,10 +139,12 @@ class ButtonComponent {
|
|
|
138
139
|
else {
|
|
139
140
|
this.clicked.emit(event);
|
|
140
141
|
}
|
|
141
|
-
|
|
142
|
+
if (this.model()?.stopPropagation() !== false) {
|
|
143
|
+
event.stopPropagation();
|
|
144
|
+
}
|
|
142
145
|
}
|
|
143
146
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
144
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ButtonComponent, selector: "upd-button", inputs: { model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, brandColorStyle: { classPropertyName: "brandColorStyle", publicName: "brandColorStyle", isSignal: true, isRequired: false, transformFunction: null }, customClasses: { classPropertyName: "customClasses", publicName: "customClasses", isSignal: true, isRequired: false, transformFunction: null }, isOutline: { classPropertyName: "isOutline", publicName: "isOutline", isSignal: true, isRequired: false, transformFunction: null }, isGhost: { classPropertyName: "isGhost", publicName: "isGhost", isSignal: true, isRequired: false, transformFunction: null }, isSquare: { classPropertyName: "isSquare", publicName: "isSquare", isSignal: true, isRequired: false, transformFunction: null }, isPill: { classPropertyName: "isPill", publicName: "isPill", isSignal: true, isRequired: false, transformFunction: null }, isIcon: { classPropertyName: "isIcon", publicName: "isIcon", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isList: { classPropertyName: "isList", publicName: "isList", isSignal: true, isRequired: false, transformFunction: null }, isFloating: { classPropertyName: "isFloating", publicName: "isFloating", isSignal: true, isRequired: false, transformFunction: null }, isAction: { classPropertyName: "isAction", publicName: "isAction", isSignal: true, isRequired: false, transformFunction: null }, isNavigationLink: { classPropertyName: "isNavigationLink", publicName: "isNavigationLink", isSignal: true, isRequired: false, transformFunction: null }, isLink: { classPropertyName: "isLink", publicName: "isLink", isSignal: true, isRequired: false, transformFunction: null }, shouldIgnoreBtnClass: { classPropertyName: "shouldIgnoreBtnClass", publicName: "shouldIgnoreBtnClass", isSignal: true, isRequired: false, transformFunction: null }, iconModel: { classPropertyName: "iconModel", publicName: "iconModel", isSignal: true, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "iconPosition", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null }, badgeConfig: { classPropertyName: "badgeConfig", publicName: "badgeConfig", isSignal: true, isRequired: false, transformFunction: null }, colorStyle: { classPropertyName: "colorStyle", publicName: "colorStyle", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, host: { listeners: { "click": "onClick($event)" }, properties: { "class": "this.classes", "title": "this.titleAttr" } }, ngImport: i0, template: "<ng-template #userContentTpl>\n @if (!!_iconModel && _iconPosition === 'left') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n\n <div [class.mx-1]=\"!!_iconModel && !_isIcon\">\n <ng-content></ng-content>\n </div>\n\n @if (!!badgeConfig()) {\n <upd-badge [config]=\"badgeConfig()\"></upd-badge>\n }\n\n @if (!!_iconModel && _iconPosition === 'right') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n</ng-template>\n\n@if (!mainText) {\n <ng-container [ngTemplateOutlet]=\"userContentTpl\"></ng-container>\n} @else {\n @if (!!_iconModel && _iconPosition === 'left') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n\n <span [class.mx-1]=\"!!_iconModel\">\n {{ mainText }}\n </span>\n\n @if (!!badgeConfig()) {\n <upd-badge [config]=\"badgeConfig()\"></upd-badge>\n }\n\n @if (!!_iconModel && _iconPosition === 'right') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n}\n", styles: [".btn-icon .icon{margin:0 calc(-1 * var(--upd-btn-padding-x)) 0 calc(-1 * var(--upd-btn-padding-x))!important}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i3.BadgeComponent, selector: "upd-badge", inputs: ["config", "bgColor", "textColor", "text", "isOutline", "isPill", "isNotification", "isBlinking", "customClasses"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
147
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ButtonComponent, selector: "upd-button", inputs: { model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, brandColorStyle: { classPropertyName: "brandColorStyle", publicName: "brandColorStyle", isSignal: true, isRequired: false, transformFunction: null }, customClasses: { classPropertyName: "customClasses", publicName: "customClasses", isSignal: true, isRequired: false, transformFunction: null }, isOutline: { classPropertyName: "isOutline", publicName: "isOutline", isSignal: true, isRequired: false, transformFunction: null }, isGhost: { classPropertyName: "isGhost", publicName: "isGhost", isSignal: true, isRequired: false, transformFunction: null }, isSquare: { classPropertyName: "isSquare", publicName: "isSquare", isSignal: true, isRequired: false, transformFunction: null }, isPill: { classPropertyName: "isPill", publicName: "isPill", isSignal: true, isRequired: false, transformFunction: null }, isIcon: { classPropertyName: "isIcon", publicName: "isIcon", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isList: { classPropertyName: "isList", publicName: "isList", isSignal: true, isRequired: false, transformFunction: null }, isFloating: { classPropertyName: "isFloating", publicName: "isFloating", isSignal: true, isRequired: false, transformFunction: null }, isAction: { classPropertyName: "isAction", publicName: "isAction", isSignal: true, isRequired: false, transformFunction: null }, isNavigationLink: { classPropertyName: "isNavigationLink", publicName: "isNavigationLink", isSignal: true, isRequired: false, transformFunction: null }, isLink: { classPropertyName: "isLink", publicName: "isLink", isSignal: true, isRequired: false, transformFunction: null }, shouldIgnoreBtnClass: { classPropertyName: "shouldIgnoreBtnClass", publicName: "shouldIgnoreBtnClass", isSignal: true, isRequired: false, transformFunction: null }, iconModel: { classPropertyName: "iconModel", publicName: "iconModel", isSignal: true, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "iconPosition", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null }, badgeConfig: { classPropertyName: "badgeConfig", publicName: "badgeConfig", isSignal: true, isRequired: false, transformFunction: null }, colorStyle: { classPropertyName: "colorStyle", publicName: "colorStyle", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, stopPropagation: { classPropertyName: "stopPropagation", publicName: "stopPropagation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, host: { listeners: { "click": "onClick($event)" }, properties: { "class": "this.classes", "title": "this.titleAttr" } }, ngImport: i0, template: "<ng-template #userContentTpl>\n @if (!!_iconModel && _iconPosition === 'left') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n\n <div [class.mx-1]=\"!!_iconModel && !_isIcon\">\n <ng-content></ng-content>\n </div>\n\n @if (!!badgeConfig()) {\n <upd-badge [config]=\"badgeConfig()\"></upd-badge>\n }\n\n @if (!!_iconModel && _iconPosition === 'right') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n</ng-template>\n\n@if (!mainText) {\n <ng-container [ngTemplateOutlet]=\"userContentTpl\"></ng-container>\n} @else {\n @if (!!_iconModel && _iconPosition === 'left') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n\n <span [class.mx-1]=\"!!_iconModel\">\n {{ mainText }}\n </span>\n\n @if (!!badgeConfig()) {\n <upd-badge [config]=\"badgeConfig()\"></upd-badge>\n }\n\n @if (!!_iconModel && _iconPosition === 'right') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n}\n", styles: [".btn-icon .icon{margin:0 calc(-1 * var(--upd-btn-padding-x)) 0 calc(-1 * var(--upd-btn-padding-x))!important}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i3.BadgeComponent, selector: "upd-badge", inputs: ["config", "bgColor", "textColor", "text", "isOutline", "isPill", "isNotification", "isBlinking", "customClasses"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
145
148
|
}
|
|
146
149
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
147
150
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updevs-components-button.mjs","sources":["../../../../libs/components/button/src/button.component.ts","../../../../libs/components/button/src/button.component.html","../../../../libs/components/button/src/upd-button.module.ts","../../../../libs/components/button/src/updevs-components-button.ts"],"sourcesContent":["import {\n Component,\n ViewEncapsulation,\n Output,\n EventEmitter,\n HostBinding,\n HostListener,\n inject,\n input,\n computed\n} from '@angular/core';\nimport { IconModel } from '@updevs/icons';\nimport { TextModel, TextService } from '@updevs/sdk';\nimport { ButtonModel } from '@updevs/sdk/layout';\nimport { LeftRightType, OptionalType, BrandType, BgColorStyleType, ButtonSizeType } from '@updevs/sdk/types';\nimport { BadgeConfig } from '@updevs/components/badge';\n\n@Component({\n selector: 'upd-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonComponent {\n @HostBinding('class') get classes(): string[] {\n return this.buttonClasses();\n }\n\n @HostBinding('title') get titleAttr(): OptionalType<string> {\n return this.textService.getText(this._title());\n }\n\n /**\n * Emitted when the button is clicked.\n * **NOTE:** The name of the event can not be 'click'. It would generate a conflict with the HTML event of same name.\n * That would cause strange behaviors like preventing `isDisabled` from working correctly.\n */\n @Output() readonly clicked = new EventEmitter<any>();\n\n model = input<ButtonModel>();\n text = input<TextModel>();\n brandColorStyle = input<BrandType>();\n customClasses = input<string>();\n isOutline = input(false);\n isGhost = input(false);\n isSquare = input(false);\n isPill = input(false);\n isIcon = input(false);\n isLoading = input(false);\n /**\n * Whether the button should act as a list (top-bottom alignment instead of left-right related to neighbors).\n */\n isList = input(false);\n /**\n * Whether the button should be floating in the bottom right corner.\n */\n isFloating = input(false);\n isAction = input(false);\n isNavigationLink = input(false);\n isLink = input(false);\n shouldIgnoreBtnClass = input(false);\n iconModel = input<IconModel>();\n iconPosition = input<LeftRightType>('left');\n isDisabled = input(false);\n isActive = input(false);\n badgeConfig = input<BadgeConfig>();\n colorStyle = input<BgColorStyleType>();\n size = input<ButtonSizeType>('regular');\n title = input<TextModel>();\n\n get mainText(): string {\n return this.textService.getText(this.model()?.text?.() || this.text());\n }\n\n get _iconModel(): OptionalType<IconModel> {\n return this.model()?.iconModel?.() || this.iconModel();\n }\n\n get _iconPosition(): LeftRightType {\n return this.model()?.iconPosition() || this.iconPosition();\n }\n\n get _isIcon(): boolean {\n return this.model()?.isIcon() || this.isIcon();\n }\n\n private get sizeClass(): string {\n switch (this._size()) {\n case 'large':\n return 'btn-lg';\n case 'small':\n return 'btn-sm';\n default:\n return '';\n }\n }\n\n private _size = computed(() => !!this.model() ? this.model()!.size() : this.size());\n private _title = computed(() => !!this.model() && !!this.model()?.title ? this.model()!.title!() : this.title());\n private _colorStyle = computed(() => !!this.model() && !!this.model()?.colorStyle ? this.model()!.colorStyle!() : this.colorStyle());\n private _brandColorStyle = computed(() =>\n !!this.model() && !!this.model()?.brandColorStyle ? this.model()!.brandColorStyle!() : this.brandColorStyle()\n );\n private buttonClasses = computed(() => {\n const isLink = this.model()?.isLink() || this.isLink();\n const outlineCls = this.model()?.isOutline() || this.isOutline() ? 'outline-' : '';\n const ghostCls = this.model()?.isGhost() || this.isGhost() ? 'ghost-' : '';\n const lClasses: string[] = this.model()?.shouldIgnoreBtnClass() || this.shouldIgnoreBtnClass() ? [] : ['btn'];\n const customClasses = this.model()?.customClasses?.().split(' ') || this.customClasses()?.split(' ') || [];\n\n if (!isLink && (!!outlineCls || !!ghostCls || !!this._colorStyle() || !!this._brandColorStyle())) {\n lClasses.push(`btn-${outlineCls || ghostCls}${this._colorStyle() || this._brandColorStyle()}`);\n } else if (!!this._colorStyle() || !!this._brandColorStyle()) {\n lClasses.push(`link-${this._colorStyle() || this._brandColorStyle()}`);\n }\n\n if (this.model()?.isSquare() || this.isSquare()) {\n lClasses.push('btn-square');\n }\n\n if (this.model()?.isPill() || this.isPill()) {\n lClasses.push('btn-pill');\n }\n\n if (this._isIcon) {\n lClasses.push('btn-icon');\n }\n\n if (this.model()?.isLoading() || this.isLoading()) {\n lClasses.push('btn-loading');\n }\n\n if (this.model()?.isList() || this.isList()) {\n lClasses.push('btn-list');\n }\n\n if (this.model()?.isFloating() || this.isFloating()) {\n lClasses.push('btn-floating');\n }\n\n if (this.model()?.isAction() || this.isAction()) {\n lClasses.push('btn-action');\n }\n\n if (this.model()?.isNavigationLink() || this.isNavigationLink()) {\n lClasses.push('nav-link');\n }\n\n if (isLink) {\n lClasses.push('btn-link');\n }\n\n if (this.model()?.isActive() || this.isActive()) {\n lClasses.push('active');\n }\n\n if (this.model()?.isDisabled() || this.isDisabled()) {\n lClasses.push('disabled');\n }\n\n if (!!this.badgeConfig() && (this.badgeConfig()!.isBlinking || this.badgeConfig()!.isNotification)) {\n lClasses.push('position-relative');\n }\n\n lClasses.push(this.sizeClass);\n\n return [...lClasses, ...customClasses];\n });\n private readonly textService = inject(TextService);\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (!!this.model() && !!this.model()?.clickFunction) {\n this.model()!.clickFunction!({ event, data: this });\n } else {\n this.clicked.emit(event);\n }\n\n event.stopPropagation();\n }\n}\n","<ng-template #userContentTpl>\n @if (!!_iconModel && _iconPosition === 'left') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n\n <div [class.mx-1]=\"!!_iconModel && !_isIcon\">\n <ng-content></ng-content>\n </div>\n\n @if (!!badgeConfig()) {\n <upd-badge [config]=\"badgeConfig()\"></upd-badge>\n }\n\n @if (!!_iconModel && _iconPosition === 'right') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n</ng-template>\n\n@if (!mainText) {\n <ng-container [ngTemplateOutlet]=\"userContentTpl\"></ng-container>\n} @else {\n @if (!!_iconModel && _iconPosition === 'left') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n\n <span [class.mx-1]=\"!!_iconModel\">\n {{ mainText }}\n </span>\n\n @if (!!badgeConfig()) {\n <upd-badge [config]=\"badgeConfig()\"></upd-badge>\n }\n\n @if (!!_iconModel && _iconPosition === 'right') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdBadgeModule } from '@updevs/components/badge';\n\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n imports: [\n CommonModule,\n UpdIconsModule,\n UpdBadgeModule\n ],\n declarations: [\n ButtonComponent\n ],\n exports: [\n ButtonComponent\n ]\n})\nexport class UpdButtonModule {}\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-button.mjs","sources":["../../../../libs/components/button/src/button.component.ts","../../../../libs/components/button/src/button.component.html","../../../../libs/components/button/src/upd-button.module.ts","../../../../libs/components/button/src/updevs-components-button.ts"],"sourcesContent":["import {\n Component,\n ViewEncapsulation,\n Output,\n EventEmitter,\n HostBinding,\n HostListener,\n inject,\n input,\n computed\n} from '@angular/core';\nimport { IconModel } from '@updevs/icons';\nimport { TextModel, TextService } from '@updevs/sdk';\nimport { ButtonModel } from '@updevs/sdk/layout';\nimport { LeftRightType, OptionalType, BrandType, BgColorStyleType, ButtonSizeType } from '@updevs/sdk/types';\nimport { BadgeConfig } from '@updevs/components/badge';\n\n@Component({\n selector: 'upd-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonComponent {\n @HostBinding('class') get classes(): string[] {\n return this.buttonClasses();\n }\n\n @HostBinding('title') get titleAttr(): OptionalType<string> {\n return this.textService.getText(this._title());\n }\n\n /**\n * Emitted when the button is clicked.\n * **NOTE:** The name of the event can not be 'click'. It would generate a conflict with the HTML event of same name.\n * That would cause strange behaviors like preventing `isDisabled` from working correctly.\n */\n @Output() readonly clicked = new EventEmitter<any>();\n\n model = input<ButtonModel>();\n text = input<TextModel>();\n brandColorStyle = input<BrandType>();\n customClasses = input<string>();\n isOutline = input(false);\n isGhost = input(false);\n isSquare = input(false);\n isPill = input(false);\n isIcon = input(false);\n isLoading = input(false);\n /**\n * Whether the button should act as a list (top-bottom alignment instead of left-right related to neighbors).\n */\n isList = input(false);\n /**\n * Whether the button should be floating in the bottom right corner.\n */\n isFloating = input(false);\n isAction = input(false);\n isNavigationLink = input(false);\n isLink = input(false);\n shouldIgnoreBtnClass = input(false);\n iconModel = input<IconModel>();\n iconPosition = input<LeftRightType>('left');\n isDisabled = input(false);\n isActive = input(false);\n badgeConfig = input<BadgeConfig>();\n colorStyle = input<BgColorStyleType>();\n size = input<ButtonSizeType>('regular');\n title = input<TextModel>();\n stopPropagation = input(false);\n\n get mainText(): string {\n return this.textService.getText(this.model()?.text?.() || this.text());\n }\n\n get _iconModel(): OptionalType<IconModel> {\n return this.model()?.iconModel?.() || this.iconModel();\n }\n\n get _iconPosition(): LeftRightType {\n return this.model()?.iconPosition() || this.iconPosition();\n }\n\n get _isIcon(): boolean {\n return this.model()?.isIcon() || this.isIcon();\n }\n\n private get sizeClass(): string {\n switch (this._size()) {\n case 'large':\n return 'btn-lg';\n case 'small':\n return 'btn-sm';\n default:\n return '';\n }\n }\n\n private _size = computed(() => !!this.model() ? this.model()!.size() : this.size());\n private _title = computed(() => !!this.model() && !!this.model()?.title ? this.model()!.title!() : this.title());\n private _colorStyle = computed(() => !!this.model() && !!this.model()?.colorStyle ? this.model()!.colorStyle!() : this.colorStyle());\n private _brandColorStyle = computed(() =>\n !!this.model() && !!this.model()?.brandColorStyle ? this.model()!.brandColorStyle!() : this.brandColorStyle()\n );\n private buttonClasses = computed(() => {\n const isLink = this.model()?.isLink() || this.isLink();\n const outlineCls = this.model()?.isOutline() || this.isOutline() ? 'outline-' : '';\n const ghostCls = this.model()?.isGhost() || this.isGhost() ? 'ghost-' : '';\n const lClasses: string[] = this.model()?.shouldIgnoreBtnClass() || this.shouldIgnoreBtnClass() ? [] : ['btn'];\n const customClasses = this.model()?.customClasses?.().split(' ') || this.customClasses()?.split(' ') || [];\n\n if (!isLink && (!!outlineCls || !!ghostCls || !!this._colorStyle() || !!this._brandColorStyle())) {\n lClasses.push(`btn-${outlineCls || ghostCls}${this._colorStyle() || this._brandColorStyle()}`);\n } else if (!!this._colorStyle() || !!this._brandColorStyle()) {\n lClasses.push(`link-${this._colorStyle() || this._brandColorStyle()}`);\n }\n\n if (this.model()?.isSquare() || this.isSquare()) {\n lClasses.push('btn-square');\n }\n\n if (this.model()?.isPill() || this.isPill()) {\n lClasses.push('btn-pill');\n }\n\n if (this._isIcon) {\n lClasses.push('btn-icon');\n }\n\n if (this.model()?.isLoading() || this.isLoading()) {\n lClasses.push('btn-loading');\n }\n\n if (this.model()?.isList() || this.isList()) {\n lClasses.push('btn-list');\n }\n\n if (this.model()?.isFloating() || this.isFloating()) {\n lClasses.push('btn-floating');\n }\n\n if (this.model()?.isAction() || this.isAction()) {\n lClasses.push('btn-action');\n }\n\n if (this.model()?.isNavigationLink() || this.isNavigationLink()) {\n lClasses.push('nav-link');\n }\n\n if (isLink) {\n lClasses.push('btn-link');\n }\n\n if (this.model()?.isActive() || this.isActive()) {\n lClasses.push('active');\n }\n\n if (this.model()?.isDisabled() || this.isDisabled()) {\n lClasses.push('disabled');\n }\n\n if (!!this.badgeConfig() && (this.badgeConfig()!.isBlinking || this.badgeConfig()!.isNotification)) {\n lClasses.push('position-relative');\n }\n\n lClasses.push(this.sizeClass);\n\n return [...lClasses, ...customClasses];\n });\n private readonly textService = inject(TextService);\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (!!this.model() && !!this.model()?.clickFunction) {\n this.model()!.clickFunction!({ event, data: this });\n } else {\n this.clicked.emit(event);\n }\n\n if (this.model()?.stopPropagation() !== false) {\n event.stopPropagation();\n }\n }\n}\n","<ng-template #userContentTpl>\n @if (!!_iconModel && _iconPosition === 'left') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n\n <div [class.mx-1]=\"!!_iconModel && !_isIcon\">\n <ng-content></ng-content>\n </div>\n\n @if (!!badgeConfig()) {\n <upd-badge [config]=\"badgeConfig()\"></upd-badge>\n }\n\n @if (!!_iconModel && _iconPosition === 'right') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n</ng-template>\n\n@if (!mainText) {\n <ng-container [ngTemplateOutlet]=\"userContentTpl\"></ng-container>\n} @else {\n @if (!!_iconModel && _iconPosition === 'left') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n\n <span [class.mx-1]=\"!!_iconModel\">\n {{ mainText }}\n </span>\n\n @if (!!badgeConfig()) {\n <upd-badge [config]=\"badgeConfig()\"></upd-badge>\n }\n\n @if (!!_iconModel && _iconPosition === 'right') {\n <upd-icon [model]=\"_iconModel\" [tablerIconSize]=\"_iconModel.tablerIconSize || 20\"\n [heroIconSize]=\"_iconModel.heroIconSize || 'small'\">\n </upd-icon>\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdBadgeModule } from '@updevs/components/badge';\n\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n imports: [\n CommonModule,\n UpdIconsModule,\n UpdBadgeModule\n ],\n declarations: [\n ButtonComponent\n ],\n exports: [\n ButtonComponent\n ]\n})\nexport class UpdButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -118,7 +118,7 @@ class CardComponent {
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
121
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: CardComponent, selector: "upd-card", inputs: { wrapperClasses: "wrapperClasses", title: "title", subtitle: "subtitle", hoverEffect: "hoverEffect", state: "state", type: "type", imagePosition: "imagePosition", bgColor: "bgColor", stampIcon: "stampIcon", stampBackground: "stampBackground", statusBackground: "statusBackground", statusPosition: "statusPosition", ribbonBackground: "ribbonBackground", ribbonStyle: "ribbonStyle", ribbonIcon: "ribbonIcon", ribbonText: "ribbonText", rotate: "rotate", removeBorder: "removeBorder", useLightHeader: "useLightHeader", showHeader: "showHeader", isFooterTransparent: "isFooterTransparent", footerText: "footerText", showProgressBar: "showProgressBar", progress: "progress", actions: "actions" }, host: { properties: { "class": "this.wrapperClasses" } }, queries: [{ propertyName: "headerTemplate", first: true, predicate: CardHeaderDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: CardFooterDirective, descendants: true }, { propertyName: "imageTemplate", first: true, predicate: CardImageDirective, descendants: true }, { propertyName: "actionsTemplate", first: true, predicate: CardActionsDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template *ngIf=\"!hoverEffect; else linkTpl\" [ngTemplateOutlet]=\"structureTpl\"></ng-template>\n\n<!-- Template for cards that are links -->\n<ng-template #linkTpl>\n <a href=\"#\" class=\"card\" [ngClass]=\"classes\">\n <ng-template [ngTemplateOutlet]=\"structureTpl\"></ng-template>\n </a>\n</ng-template>\n\n<ng-template #structureTpl>\n <!-- Ribbon -->\n <div *ngIf=\"!!ribbonBackground\" class=\"ribbon {{ribbonStyle === 'default' ? '' : 'ribbon-' + ribbonStyle}} bg-{{ribbonBackground}}\">\n <span *ngIf=\"!!ribbonText; else ribbonIconTpl\">{{ribbonText}}</span>\n <ng-template #ribbonIconTpl>\n <upd-icon [model]=\"ribbonIcon\" wrapperClasses=\"icon\" [removeDefaultClasses]=\"true\"></upd-icon>\n </ng-template>\n </div>\n\n <!-- Status -->\n <div *ngIf=\"!!statusBackground\" class=\"card-status-{{statusPosition}} bg-{{statusBackground}}\"></div>\n\n <!-- Stamp -->\n <div *ngIf=\"!!stampIcon\" class=\"card-stamp\">\n <div class=\"card-stamp-icon bg-{{stampBackground}}\">\n <upd-icon [model]=\"stampIcon\" wrapperClasses=\"icon\" [removeDefaultClasses]=\"true\"></upd-icon>\n </div>\n </div>\n\n <!-- Header section -->\n <div *ngIf=\"showHeader && (!!title || !!headerTemplate?.templateRef)\" class=\"card-header\" [class.card-header-light]=\"useLightHeader\">\n <ng-container *ngIf=\"!headerTemplate?.templateRef; else customHeaderTpl\">\n <h3 class=\"card-title\">{{title}} <span *ngIf=\"!!subtitle\" class=\"card-subtitle\">{{subtitle}}</span></h3>\n </ng-container>\n <ng-template #customHeaderTpl [ngTemplateOutlet]=\"headerTemplate?.templateRef || null\"></ng-template>\n\n <!-- Actions -->\n <div *ngIf=\"!!actionsTemplate || actions.length > 0\" class=\"card-actions\">\n <ng-container *ngIf=\"actions.length > 0; else customActionsTpl\">\n <upd-button *ngFor=\"let btn of actions\" [model]=\"btn\" customClasses=\"me-1\"></upd-button>\n </ng-container>\n <ng-template #customActionsTpl [ngTemplateOutlet]=\"actionsTemplate?.templateRef || null\"></ng-template>\n </div>\n </div>\n\n <!-- Body -->\n <ng-container *ngIf=\"!!imageTemplate; else bodyTpl\">\n <ng-template *ngIf=\"imagePosition === 'left' || imagePosition === 'right'; else bodyWithTopBottomImageTpl\"\n [ngTemplateOutlet]=\"bodyWithSideImageTpl\"></ng-template>\n </ng-container>\n\n <!-- Footer -->\n <div *ngIf=\"!!footerText || !!footerTemplate\" class=\"card-footer\" [class.card-footer-transparent]=\"isFooterTransparent\">\n <ng-container *ngIf=\"!footerTemplate?.templateRef; else customFooterTpl\">\n <span *ngIf=\"!!footerText\">{{footerText}}</span>\n </ng-container>\n <ng-template #customFooterTpl [ngTemplateOutlet]=\"footerTemplate?.templateRef || null\"></ng-template>\n </div>\n\n <!-- Progress bar -->\n <div *ngIf=\"showProgressBar\" class=\"progress progress-sm card-progress\">\n <div class=\"progress-bar\" [style.width.%]=\"progress\" role=\"progressbar\" [attr.aria-valuenow]=\"progress\" aria-valuemin=\"0\"\n aria-valuemax=\"100\">\n </div>\n </div>\n</ng-template>\n\n<!-- Body with an image on either side -->\n<ng-template #bodyWithSideImageTpl>\n <div class=\"row row-0\">\n <div class=\"col-3\" [class.order-md-last]=\"imagePosition === 'right'\">\n <div class=\"card-image-{{imagePosition}}\">\n <ng-template [ngTemplateOutlet]=\"imageTemplate!.templateRef\"></ng-template>\n </div>\n </div>\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"bodyTpl\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<!-- Body with an image on top or bottom -->\n<ng-template #bodyWithTopBottomImageTpl>\n <div *ngIf=\"imagePosition === 'top'\" class=\"img-responsive-21x9 card-img-top\">\n <div class=\"card-image-{{imagePosition}}\">\n <ng-template [ngTemplateOutlet]=\"imageTemplate!.templateRef\"></ng-template>\n </div>\n </div>\n <ng-template [ngTemplateOutlet]=\"bodyTpl\"></ng-template>\n <div *ngIf=\"imagePosition === 'bottom'\" class=\"img-responsive-21x9 card-img-bottom\">\n <div class=\"card-image-{{imagePosition}}\">\n <ng-template [ngTemplateOutlet]=\"imageTemplate!.templateRef\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<!-- Body -->\n<ng-template #bodyTpl>\n <div class=\"card-body\">\n <!-- If title was set, but the header section is hidden, we add the title to the body -->\n <ng-container *ngIf=\"!showHeader && !!title\">\n <h3 class=\"card-title\">{{title}} <span *ngIf=\"!!subtitle\" class=\"card-subtitle\">{{subtitle}}</span></h3>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i3.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"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: CardComponent, selector: "upd-card", inputs: { wrapperClasses: "wrapperClasses", title: "title", subtitle: "subtitle", hoverEffect: "hoverEffect", state: "state", type: "type", imagePosition: "imagePosition", bgColor: "bgColor", stampIcon: "stampIcon", stampBackground: "stampBackground", statusBackground: "statusBackground", statusPosition: "statusPosition", ribbonBackground: "ribbonBackground", ribbonStyle: "ribbonStyle", ribbonIcon: "ribbonIcon", ribbonText: "ribbonText", rotate: "rotate", removeBorder: "removeBorder", useLightHeader: "useLightHeader", showHeader: "showHeader", isFooterTransparent: "isFooterTransparent", footerText: "footerText", showProgressBar: "showProgressBar", progress: "progress", actions: "actions" }, host: { properties: { "class": "this.wrapperClasses" } }, queries: [{ propertyName: "headerTemplate", first: true, predicate: CardHeaderDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: CardFooterDirective, descendants: true }, { propertyName: "imageTemplate", first: true, predicate: CardImageDirective, descendants: true }, { propertyName: "actionsTemplate", first: true, predicate: CardActionsDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template *ngIf=\"!hoverEffect; else linkTpl\" [ngTemplateOutlet]=\"structureTpl\"></ng-template>\n\n<!-- Template for cards that are links -->\n<ng-template #linkTpl>\n <a href=\"#\" class=\"card\" [ngClass]=\"classes\">\n <ng-template [ngTemplateOutlet]=\"structureTpl\"></ng-template>\n </a>\n</ng-template>\n\n<ng-template #structureTpl>\n <!-- Ribbon -->\n <div *ngIf=\"!!ribbonBackground\" class=\"ribbon {{ribbonStyle === 'default' ? '' : 'ribbon-' + ribbonStyle}} bg-{{ribbonBackground}}\">\n <span *ngIf=\"!!ribbonText; else ribbonIconTpl\">{{ribbonText}}</span>\n <ng-template #ribbonIconTpl>\n <upd-icon [model]=\"ribbonIcon\" wrapperClasses=\"icon\" [removeDefaultClasses]=\"true\"></upd-icon>\n </ng-template>\n </div>\n\n <!-- Status -->\n <div *ngIf=\"!!statusBackground\" class=\"card-status-{{statusPosition}} bg-{{statusBackground}}\"></div>\n\n <!-- Stamp -->\n <div *ngIf=\"!!stampIcon\" class=\"card-stamp\">\n <div class=\"card-stamp-icon bg-{{stampBackground}}\">\n <upd-icon [model]=\"stampIcon\" wrapperClasses=\"icon\" [removeDefaultClasses]=\"true\"></upd-icon>\n </div>\n </div>\n\n <!-- Header section -->\n <div *ngIf=\"showHeader && (!!title || !!headerTemplate?.templateRef)\" class=\"card-header\" [class.card-header-light]=\"useLightHeader\">\n <ng-container *ngIf=\"!headerTemplate?.templateRef; else customHeaderTpl\">\n <h3 class=\"card-title\">{{title}} <span *ngIf=\"!!subtitle\" class=\"card-subtitle\">{{subtitle}}</span></h3>\n </ng-container>\n <ng-template #customHeaderTpl [ngTemplateOutlet]=\"headerTemplate?.templateRef || null\"></ng-template>\n\n <!-- Actions -->\n <div *ngIf=\"!!actionsTemplate || actions.length > 0\" class=\"card-actions\">\n <ng-container *ngIf=\"actions.length > 0; else customActionsTpl\">\n <upd-button *ngFor=\"let btn of actions\" [model]=\"btn\" customClasses=\"me-1\"></upd-button>\n </ng-container>\n <ng-template #customActionsTpl [ngTemplateOutlet]=\"actionsTemplate?.templateRef || null\"></ng-template>\n </div>\n </div>\n\n <!-- Body -->\n <ng-container *ngIf=\"!!imageTemplate; else bodyTpl\">\n <ng-template *ngIf=\"imagePosition === 'left' || imagePosition === 'right'; else bodyWithTopBottomImageTpl\"\n [ngTemplateOutlet]=\"bodyWithSideImageTpl\"></ng-template>\n </ng-container>\n\n <!-- Footer -->\n <div *ngIf=\"!!footerText || !!footerTemplate\" class=\"card-footer\" [class.card-footer-transparent]=\"isFooterTransparent\">\n <ng-container *ngIf=\"!footerTemplate?.templateRef; else customFooterTpl\">\n <span *ngIf=\"!!footerText\">{{footerText}}</span>\n </ng-container>\n <ng-template #customFooterTpl [ngTemplateOutlet]=\"footerTemplate?.templateRef || null\"></ng-template>\n </div>\n\n <!-- Progress bar -->\n <div *ngIf=\"showProgressBar\" class=\"progress progress-sm card-progress\">\n <div class=\"progress-bar\" [style.width.%]=\"progress\" role=\"progressbar\" [attr.aria-valuenow]=\"progress\" aria-valuemin=\"0\"\n aria-valuemax=\"100\">\n </div>\n </div>\n</ng-template>\n\n<!-- Body with an image on either side -->\n<ng-template #bodyWithSideImageTpl>\n <div class=\"row row-0\">\n <div class=\"col-3\" [class.order-md-last]=\"imagePosition === 'right'\">\n <div class=\"card-image-{{imagePosition}}\">\n <ng-template [ngTemplateOutlet]=\"imageTemplate!.templateRef\"></ng-template>\n </div>\n </div>\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"bodyTpl\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<!-- Body with an image on top or bottom -->\n<ng-template #bodyWithTopBottomImageTpl>\n <div *ngIf=\"imagePosition === 'top'\" class=\"img-responsive-21x9 card-img-top\">\n <div class=\"card-image-{{imagePosition}}\">\n <ng-template [ngTemplateOutlet]=\"imageTemplate!.templateRef\"></ng-template>\n </div>\n </div>\n <ng-template [ngTemplateOutlet]=\"bodyTpl\"></ng-template>\n <div *ngIf=\"imagePosition === 'bottom'\" class=\"img-responsive-21x9 card-img-bottom\">\n <div class=\"card-image-{{imagePosition}}\">\n <ng-template [ngTemplateOutlet]=\"imageTemplate!.templateRef\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<!-- Body -->\n<ng-template #bodyTpl>\n <div class=\"card-body\">\n <!-- If title was set, but the header section is hidden, we add the title to the body -->\n <ng-container *ngIf=\"!showHeader && !!title\">\n <h3 class=\"card-title\">{{title}} <span *ngIf=\"!!subtitle\" class=\"card-subtitle\">{{subtitle}}</span></h3>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i3.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", "stopPropagation"], outputs: ["clicked"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
122
122
|
}
|
|
123
123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CardComponent, decorators: [{
|
|
124
124
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updevs-components-card.mjs","sources":["../../../../libs/components/card/src/directives/card-actions.directive.ts","../../../../libs/components/card/src/directives/card-footer.directive.ts","../../../../libs/components/card/src/directives/card-header.directive.ts","../../../../libs/components/card/src/directives/card-image.directive.ts","../../../../libs/components/card/src/card.component.ts","../../../../libs/components/card/src/card.component.html","../../../../libs/components/card/src/upd-card.module.ts","../../../../libs/components/card/src/updevs-components-card.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[updCardActions]'\n})\nexport class CardActionsDirective {\n public readonly templateRef = inject(TemplateRef<any>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[updCardFooter]'\n})\nexport class CardFooterDirective {\n public readonly templateRef = inject(TemplateRef<any>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[updCardHeader]'\n})\nexport class CardHeaderDirective {\n public readonly templateRef = inject(TemplateRef<any>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[updCardImage]'\n})\nexport class CardImageDirective {\n public readonly templateRef = inject(TemplateRef<any>);\n}\n","import {\n Component,\n Input,\n ContentChild,\n SimpleChanges,\n OnInit,\n OnChanges,\n ViewEncapsulation, HostBinding\n} from '@angular/core';\nimport { ButtonModel } from '@updevs/sdk/layout';\nimport { TopBottomLeftRightType, BgColorStyleType } from '@updevs/sdk/types';\nimport { IconModel } from '@updevs/icons';\n\nimport { CardFooterDirective } from './directives/card-footer.directive';\nimport { CardHeaderDirective } from './directives/card-header.directive';\nimport { HoverEffectType } from './types/hover-effect.type';\nimport { CardStateType } from './types/card-state.type';\nimport { StatusPositionType } from './types/status-position.type';\nimport { RibbonStyleType } from './types/ribbon-style.type';\nimport { CardStyleType } from './types/card-style.type';\nimport { CardImageDirective } from './directives/card-image.directive';\nimport { CardActionsDirective } from './directives/card-actions.directive';\n\n@Component({\n selector: 'upd-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class CardComponent implements OnInit, OnChanges {\n @HostBinding('class') @Input() wrapperClasses = '';\n @ContentChild(CardHeaderDirective) headerTemplate?: CardHeaderDirective;\n @ContentChild(CardFooterDirective) footerTemplate?: CardFooterDirective;\n @ContentChild(CardImageDirective) imageTemplate?: CardImageDirective;\n @ContentChild(CardActionsDirective) actionsTemplate?: CardActionsDirective;\n\n @Input() title?: string;\n @Input() subtitle?: string;\n @Input() hoverEffect?: HoverEffectType;\n @Input() state?: CardStateType;\n @Input() type?: CardStyleType;\n @Input() imagePosition?: TopBottomLeftRightType;\n @Input() bgColor?: BgColorStyleType;\n @Input() stampIcon?: IconModel;\n @Input() stampBackground: BgColorStyleType = 'primary';\n @Input() statusBackground?: BgColorStyleType;\n @Input() statusPosition: StatusPositionType = 'top';\n @Input() ribbonBackground?: BgColorStyleType;\n @Input() ribbonStyle: RibbonStyleType = 'default';\n @Input() ribbonIcon?: IconModel = { tablerIcon: 'star' };\n @Input() ribbonText?: string;\n @Input() rotate?: 'right' | 'left';\n @Input() removeBorder = false;\n @Input() useLightHeader = false;\n /**\n * Whether the header should be displayed.\n */\n @Input() showHeader = true;\n @Input() isFooterTransparent = false;\n @Input() footerText?: string;\n @Input() showProgressBar = false;\n @Input() progress?: number;\n @Input() actions: ButtonModel[] = [];\n\n classes: string[] = [];\n\n ngOnInit(): void {\n this.updateClasses();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.updateClasses();\n }\n\n private updateClasses(): void {\n const lClasses: string[] = [];\n\n if (this.removeBorder) {\n lClasses.push('card-borderless');\n }\n\n if (!!this.hoverEffect) {\n lClasses.push('card-link');\n\n if (this.hoverEffect !== 'default') {\n lClasses.push(`card-link-${this.hoverEffect}`);\n }\n }\n\n if (!!this.state) {\n lClasses.push(`card-${this.state}`);\n }\n\n if (!!this.bgColor) {\n lClasses.push(`bg-${this.bgColor}`);\n }\n\n if (!!this.rotate) {\n lClasses.push(`card-rotate-${this.rotate}`);\n }\n\n if (!!this.type) {\n lClasses.push(`card-${this.type}`);\n }\n\n if (!!this.hoverEffect) {\n this.classes = [...lClasses];\n } else {\n this.wrapperClasses = 'card ' + lClasses.join(' ');\n }\n }\n}\n","<ng-template *ngIf=\"!hoverEffect; else linkTpl\" [ngTemplateOutlet]=\"structureTpl\"></ng-template>\n\n<!-- Template for cards that are links -->\n<ng-template #linkTpl>\n <a href=\"#\" class=\"card\" [ngClass]=\"classes\">\n <ng-template [ngTemplateOutlet]=\"structureTpl\"></ng-template>\n </a>\n</ng-template>\n\n<ng-template #structureTpl>\n <!-- Ribbon -->\n <div *ngIf=\"!!ribbonBackground\" class=\"ribbon {{ribbonStyle === 'default' ? '' : 'ribbon-' + ribbonStyle}} bg-{{ribbonBackground}}\">\n <span *ngIf=\"!!ribbonText; else ribbonIconTpl\">{{ribbonText}}</span>\n <ng-template #ribbonIconTpl>\n <upd-icon [model]=\"ribbonIcon\" wrapperClasses=\"icon\" [removeDefaultClasses]=\"true\"></upd-icon>\n </ng-template>\n </div>\n\n <!-- Status -->\n <div *ngIf=\"!!statusBackground\" class=\"card-status-{{statusPosition}} bg-{{statusBackground}}\"></div>\n\n <!-- Stamp -->\n <div *ngIf=\"!!stampIcon\" class=\"card-stamp\">\n <div class=\"card-stamp-icon bg-{{stampBackground}}\">\n <upd-icon [model]=\"stampIcon\" wrapperClasses=\"icon\" [removeDefaultClasses]=\"true\"></upd-icon>\n </div>\n </div>\n\n <!-- Header section -->\n <div *ngIf=\"showHeader && (!!title || !!headerTemplate?.templateRef)\" class=\"card-header\" [class.card-header-light]=\"useLightHeader\">\n <ng-container *ngIf=\"!headerTemplate?.templateRef; else customHeaderTpl\">\n <h3 class=\"card-title\">{{title}} <span *ngIf=\"!!subtitle\" class=\"card-subtitle\">{{subtitle}}</span></h3>\n </ng-container>\n <ng-template #customHeaderTpl [ngTemplateOutlet]=\"headerTemplate?.templateRef || null\"></ng-template>\n\n <!-- Actions -->\n <div *ngIf=\"!!actionsTemplate || actions.length > 0\" class=\"card-actions\">\n <ng-container *ngIf=\"actions.length > 0; else customActionsTpl\">\n <upd-button *ngFor=\"let btn of actions\" [model]=\"btn\" customClasses=\"me-1\"></upd-button>\n </ng-container>\n <ng-template #customActionsTpl [ngTemplateOutlet]=\"actionsTemplate?.templateRef || null\"></ng-template>\n </div>\n </div>\n\n <!-- Body -->\n <ng-container *ngIf=\"!!imageTemplate; else bodyTpl\">\n <ng-template *ngIf=\"imagePosition === 'left' || imagePosition === 'right'; else bodyWithTopBottomImageTpl\"\n [ngTemplateOutlet]=\"bodyWithSideImageTpl\"></ng-template>\n </ng-container>\n\n <!-- Footer -->\n <div *ngIf=\"!!footerText || !!footerTemplate\" class=\"card-footer\" [class.card-footer-transparent]=\"isFooterTransparent\">\n <ng-container *ngIf=\"!footerTemplate?.templateRef; else customFooterTpl\">\n <span *ngIf=\"!!footerText\">{{footerText}}</span>\n </ng-container>\n <ng-template #customFooterTpl [ngTemplateOutlet]=\"footerTemplate?.templateRef || null\"></ng-template>\n </div>\n\n <!-- Progress bar -->\n <div *ngIf=\"showProgressBar\" class=\"progress progress-sm card-progress\">\n <div class=\"progress-bar\" [style.width.%]=\"progress\" role=\"progressbar\" [attr.aria-valuenow]=\"progress\" aria-valuemin=\"0\"\n aria-valuemax=\"100\">\n </div>\n </div>\n</ng-template>\n\n<!-- Body with an image on either side -->\n<ng-template #bodyWithSideImageTpl>\n <div class=\"row row-0\">\n <div class=\"col-3\" [class.order-md-last]=\"imagePosition === 'right'\">\n <div class=\"card-image-{{imagePosition}}\">\n <ng-template [ngTemplateOutlet]=\"imageTemplate!.templateRef\"></ng-template>\n </div>\n </div>\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"bodyTpl\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<!-- Body with an image on top or bottom -->\n<ng-template #bodyWithTopBottomImageTpl>\n <div *ngIf=\"imagePosition === 'top'\" class=\"img-responsive-21x9 card-img-top\">\n <div class=\"card-image-{{imagePosition}}\">\n <ng-template [ngTemplateOutlet]=\"imageTemplate!.templateRef\"></ng-template>\n </div>\n </div>\n <ng-template [ngTemplateOutlet]=\"bodyTpl\"></ng-template>\n <div *ngIf=\"imagePosition === 'bottom'\" class=\"img-responsive-21x9 card-img-bottom\">\n <div class=\"card-image-{{imagePosition}}\">\n <ng-template [ngTemplateOutlet]=\"imageTemplate!.templateRef\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<!-- Body -->\n<ng-template #bodyTpl>\n <div class=\"card-body\">\n <!-- If title was set, but the header section is hidden, we add the title to the body -->\n <ng-container *ngIf=\"!showHeader && !!title\">\n <h3 class=\"card-title\">{{title}} <span *ngIf=\"!!subtitle\" class=\"card-subtitle\">{{subtitle}}</span></h3>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdButtonModule } from '@updevs/components/button';\n\nimport { CardComponent } from './card.component';\nimport { CardHeaderDirective } from './directives/card-header.directive';\nimport { CardFooterDirective } from './directives/card-footer.directive';\nimport { CardImageDirective } from './directives/card-image.directive';\nimport { CardActionsDirective } from './directives/card-actions.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n UpdIconsModule,\n UpdButtonModule\n ],\n declarations: [\n CardComponent,\n CardHeaderDirective,\n CardFooterDirective,\n CardImageDirective,\n CardActionsDirective\n ],\n exports: [\n CardComponent,\n CardHeaderDirective,\n CardFooterDirective,\n CardImageDirective\n ]\n})\nexport class UpdCardModule {}\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-card.mjs","sources":["../../../../libs/components/card/src/directives/card-actions.directive.ts","../../../../libs/components/card/src/directives/card-footer.directive.ts","../../../../libs/components/card/src/directives/card-header.directive.ts","../../../../libs/components/card/src/directives/card-image.directive.ts","../../../../libs/components/card/src/card.component.ts","../../../../libs/components/card/src/card.component.html","../../../../libs/components/card/src/upd-card.module.ts","../../../../libs/components/card/src/updevs-components-card.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[updCardActions]'\n})\nexport class CardActionsDirective {\n public readonly templateRef = inject(TemplateRef<any>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[updCardFooter]'\n})\nexport class CardFooterDirective {\n public readonly templateRef = inject(TemplateRef<any>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[updCardHeader]'\n})\nexport class CardHeaderDirective {\n public readonly templateRef = inject(TemplateRef<any>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[updCardImage]'\n})\nexport class CardImageDirective {\n public readonly templateRef = inject(TemplateRef<any>);\n}\n","import {\n Component,\n Input,\n ContentChild,\n SimpleChanges,\n OnInit,\n OnChanges,\n ViewEncapsulation, HostBinding\n} from '@angular/core';\nimport { ButtonModel } from '@updevs/sdk/layout';\nimport { TopBottomLeftRightType, BgColorStyleType } from '@updevs/sdk/types';\nimport { IconModel } from '@updevs/icons';\n\nimport { CardFooterDirective } from './directives/card-footer.directive';\nimport { CardHeaderDirective } from './directives/card-header.directive';\nimport { HoverEffectType } from './types/hover-effect.type';\nimport { CardStateType } from './types/card-state.type';\nimport { StatusPositionType } from './types/status-position.type';\nimport { RibbonStyleType } from './types/ribbon-style.type';\nimport { CardStyleType } from './types/card-style.type';\nimport { CardImageDirective } from './directives/card-image.directive';\nimport { CardActionsDirective } from './directives/card-actions.directive';\n\n@Component({\n selector: 'upd-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class CardComponent implements OnInit, OnChanges {\n @HostBinding('class') @Input() wrapperClasses = '';\n @ContentChild(CardHeaderDirective) headerTemplate?: CardHeaderDirective;\n @ContentChild(CardFooterDirective) footerTemplate?: CardFooterDirective;\n @ContentChild(CardImageDirective) imageTemplate?: CardImageDirective;\n @ContentChild(CardActionsDirective) actionsTemplate?: CardActionsDirective;\n\n @Input() title?: string;\n @Input() subtitle?: string;\n @Input() hoverEffect?: HoverEffectType;\n @Input() state?: CardStateType;\n @Input() type?: CardStyleType;\n @Input() imagePosition?: TopBottomLeftRightType;\n @Input() bgColor?: BgColorStyleType;\n @Input() stampIcon?: IconModel;\n @Input() stampBackground: BgColorStyleType = 'primary';\n @Input() statusBackground?: BgColorStyleType;\n @Input() statusPosition: StatusPositionType = 'top';\n @Input() ribbonBackground?: BgColorStyleType;\n @Input() ribbonStyle: RibbonStyleType = 'default';\n @Input() ribbonIcon?: IconModel = { tablerIcon: 'star' };\n @Input() ribbonText?: string;\n @Input() rotate?: 'right' | 'left';\n @Input() removeBorder = false;\n @Input() useLightHeader = false;\n /**\n * Whether the header should be displayed.\n */\n @Input() showHeader = true;\n @Input() isFooterTransparent = false;\n @Input() footerText?: string;\n @Input() showProgressBar = false;\n @Input() progress?: number;\n @Input() actions: ButtonModel[] = [];\n\n classes: string[] = [];\n\n ngOnInit(): void {\n this.updateClasses();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.updateClasses();\n }\n\n private updateClasses(): void {\n const lClasses: string[] = [];\n\n if (this.removeBorder) {\n lClasses.push('card-borderless');\n }\n\n if (!!this.hoverEffect) {\n lClasses.push('card-link');\n\n if (this.hoverEffect !== 'default') {\n lClasses.push(`card-link-${this.hoverEffect}`);\n }\n }\n\n if (!!this.state) {\n lClasses.push(`card-${this.state}`);\n }\n\n if (!!this.bgColor) {\n lClasses.push(`bg-${this.bgColor}`);\n }\n\n if (!!this.rotate) {\n lClasses.push(`card-rotate-${this.rotate}`);\n }\n\n if (!!this.type) {\n lClasses.push(`card-${this.type}`);\n }\n\n if (!!this.hoverEffect) {\n this.classes = [...lClasses];\n } else {\n this.wrapperClasses = 'card ' + lClasses.join(' ');\n }\n }\n}\n","<ng-template *ngIf=\"!hoverEffect; else linkTpl\" [ngTemplateOutlet]=\"structureTpl\"></ng-template>\n\n<!-- Template for cards that are links -->\n<ng-template #linkTpl>\n <a href=\"#\" class=\"card\" [ngClass]=\"classes\">\n <ng-template [ngTemplateOutlet]=\"structureTpl\"></ng-template>\n </a>\n</ng-template>\n\n<ng-template #structureTpl>\n <!-- Ribbon -->\n <div *ngIf=\"!!ribbonBackground\" class=\"ribbon {{ribbonStyle === 'default' ? '' : 'ribbon-' + ribbonStyle}} bg-{{ribbonBackground}}\">\n <span *ngIf=\"!!ribbonText; else ribbonIconTpl\">{{ribbonText}}</span>\n <ng-template #ribbonIconTpl>\n <upd-icon [model]=\"ribbonIcon\" wrapperClasses=\"icon\" [removeDefaultClasses]=\"true\"></upd-icon>\n </ng-template>\n </div>\n\n <!-- Status -->\n <div *ngIf=\"!!statusBackground\" class=\"card-status-{{statusPosition}} bg-{{statusBackground}}\"></div>\n\n <!-- Stamp -->\n <div *ngIf=\"!!stampIcon\" class=\"card-stamp\">\n <div class=\"card-stamp-icon bg-{{stampBackground}}\">\n <upd-icon [model]=\"stampIcon\" wrapperClasses=\"icon\" [removeDefaultClasses]=\"true\"></upd-icon>\n </div>\n </div>\n\n <!-- Header section -->\n <div *ngIf=\"showHeader && (!!title || !!headerTemplate?.templateRef)\" class=\"card-header\" [class.card-header-light]=\"useLightHeader\">\n <ng-container *ngIf=\"!headerTemplate?.templateRef; else customHeaderTpl\">\n <h3 class=\"card-title\">{{title}} <span *ngIf=\"!!subtitle\" class=\"card-subtitle\">{{subtitle}}</span></h3>\n </ng-container>\n <ng-template #customHeaderTpl [ngTemplateOutlet]=\"headerTemplate?.templateRef || null\"></ng-template>\n\n <!-- Actions -->\n <div *ngIf=\"!!actionsTemplate || actions.length > 0\" class=\"card-actions\">\n <ng-container *ngIf=\"actions.length > 0; else customActionsTpl\">\n <upd-button *ngFor=\"let btn of actions\" [model]=\"btn\" customClasses=\"me-1\"></upd-button>\n </ng-container>\n <ng-template #customActionsTpl [ngTemplateOutlet]=\"actionsTemplate?.templateRef || null\"></ng-template>\n </div>\n </div>\n\n <!-- Body -->\n <ng-container *ngIf=\"!!imageTemplate; else bodyTpl\">\n <ng-template *ngIf=\"imagePosition === 'left' || imagePosition === 'right'; else bodyWithTopBottomImageTpl\"\n [ngTemplateOutlet]=\"bodyWithSideImageTpl\"></ng-template>\n </ng-container>\n\n <!-- Footer -->\n <div *ngIf=\"!!footerText || !!footerTemplate\" class=\"card-footer\" [class.card-footer-transparent]=\"isFooterTransparent\">\n <ng-container *ngIf=\"!footerTemplate?.templateRef; else customFooterTpl\">\n <span *ngIf=\"!!footerText\">{{footerText}}</span>\n </ng-container>\n <ng-template #customFooterTpl [ngTemplateOutlet]=\"footerTemplate?.templateRef || null\"></ng-template>\n </div>\n\n <!-- Progress bar -->\n <div *ngIf=\"showProgressBar\" class=\"progress progress-sm card-progress\">\n <div class=\"progress-bar\" [style.width.%]=\"progress\" role=\"progressbar\" [attr.aria-valuenow]=\"progress\" aria-valuemin=\"0\"\n aria-valuemax=\"100\">\n </div>\n </div>\n</ng-template>\n\n<!-- Body with an image on either side -->\n<ng-template #bodyWithSideImageTpl>\n <div class=\"row row-0\">\n <div class=\"col-3\" [class.order-md-last]=\"imagePosition === 'right'\">\n <div class=\"card-image-{{imagePosition}}\">\n <ng-template [ngTemplateOutlet]=\"imageTemplate!.templateRef\"></ng-template>\n </div>\n </div>\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"bodyTpl\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<!-- Body with an image on top or bottom -->\n<ng-template #bodyWithTopBottomImageTpl>\n <div *ngIf=\"imagePosition === 'top'\" class=\"img-responsive-21x9 card-img-top\">\n <div class=\"card-image-{{imagePosition}}\">\n <ng-template [ngTemplateOutlet]=\"imageTemplate!.templateRef\"></ng-template>\n </div>\n </div>\n <ng-template [ngTemplateOutlet]=\"bodyTpl\"></ng-template>\n <div *ngIf=\"imagePosition === 'bottom'\" class=\"img-responsive-21x9 card-img-bottom\">\n <div class=\"card-image-{{imagePosition}}\">\n <ng-template [ngTemplateOutlet]=\"imageTemplate!.templateRef\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<!-- Body -->\n<ng-template #bodyTpl>\n <div class=\"card-body\">\n <!-- If title was set, but the header section is hidden, we add the title to the body -->\n <ng-container *ngIf=\"!showHeader && !!title\">\n <h3 class=\"card-title\">{{title}} <span *ngIf=\"!!subtitle\" class=\"card-subtitle\">{{subtitle}}</span></h3>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdButtonModule } from '@updevs/components/button';\n\nimport { CardComponent } from './card.component';\nimport { CardHeaderDirective } from './directives/card-header.directive';\nimport { CardFooterDirective } from './directives/card-footer.directive';\nimport { CardImageDirective } from './directives/card-image.directive';\nimport { CardActionsDirective } from './directives/card-actions.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n UpdIconsModule,\n UpdButtonModule\n ],\n declarations: [\n CardComponent,\n CardHeaderDirective,\n CardFooterDirective,\n CardImageDirective,\n CardActionsDirective\n ],\n exports: [\n CardComponent,\n CardHeaderDirective,\n CardFooterDirective,\n CardImageDirective\n ]\n})\nexport class UpdCardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -165,7 +165,7 @@ class DropdownComponent extends BaseComponent {
|
|
|
165
165
|
this.renderer.setStyle(ddElement, 'top', `${result.y}px`, RendererStyleFlags2.Important);
|
|
166
166
|
}
|
|
167
167
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
168
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: DropdownComponent, selector: "upd-dropdown", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: false, isRequired: false, transformFunction: null }, shouldCloseOnOutsideClick: { classPropertyName: "shouldCloseOnOutsideClick", publicName: "shouldCloseOnOutsideClick", isSignal: false, isRequired: false, transformFunction: null }, arrowType: { classPropertyName: "arrowType", publicName: "arrowType", isSignal: false, isRequired: false, transformFunction: null }, wrapperClasses: { classPropertyName: "wrapperClasses", publicName: "wrapperClasses", isSignal: false, isRequired: false, transformFunction: null }, elementsExcludedFromOutsideClick: { classPropertyName: "elementsExcludedFromOutsideClick", publicName: "elementsExcludedFromOutsideClick", isSignal: false, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: false, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: false, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: false, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: false, isRequired: false, transformFunction: null }, dropdownReference: { classPropertyName: "dropdownReference", publicName: "dropdownReference", isSignal: false, isRequired: false, transformFunction: null }, dropdownReferencePosition: { classPropertyName: "dropdownReferencePosition", publicName: "dropdownReferencePosition", isSignal: false, isRequired: false, transformFunction: null }, textOverflowStrategy: { classPropertyName: "textOverflowStrategy", publicName: "textOverflowStrategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpenChange: "isOpenChange", selectedItem: "selectedItem", checkboxChanged: "checkboxChanged" }, host: { properties: { "class": "this.localWrapperClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (!!header) {\n <h6 class=\"dropdown-header\">{{ header }}</h6>\n}\n\n@for (item of items; track trackByItemId($index, item)) {\n @switch (item.type) {\n @case ('divider') {\n <div class=\"dropdown-divider\"></div>\n }\n @case ('default') {\n <upd-button [customClasses]=\"getButtonClasses(item)\"\n [shouldIgnoreBtnClass]=\"true\" (clicked)=\"onSelect(item)\">\n @if (!!item.icon) {\n <upd-icon [model]=\"item.icon\" customClasses=\"dropdown-item-icon\"></upd-icon>\n }\n\n @if (!!item.leftBoxText || !!item.leftBoxImage) {\n <span style=\"background-image: url({{item.leftBoxImage}})\"\n class=\"avatar avatar-xs rounded me-2\">{{ item.leftBoxText }}</span>\n }\n\n {{ textService.getText(item.text) }}\n\n @if (!!item.badgeColor) {\n <span class=\"badge bg-{{item.badgeColor}} ms-auto\">{{ item.badgeText }}</span>\n }\n </upd-button>\n }\n @case ('radio') {\n <upd-radio (selected)=\"onSelect(item)\" [label]=\"item.text\" [isChecked]=\"item.isChecked || false\"\n [wrapperClasses]=\"'dropdown-item' + (item.isDisabled ? ' disabled' : '') + (item.isActive ? ' active' : '')\"></upd-radio>\n }\n @case ('checkbox') {\n <upd-checkbox (changed)=\"onCheckboxChange(item, $event)\" [label]=\"item.text\" [isChecked]=\"item.isChecked || false\"\n [isSwitch]=\"item.isSwitch || false\"\n [wrapperClasses]=\"'dropdown-item' + (item.isDisabled ? ' disabled' : '') + (item.isActive ? ' active' : '')\"></upd-checkbox>\n }\n @case ('with-toolbar') {\n <div class=\"dropdown-item\" [class.disabled]=\"item.isDisabled\" [class.active]=\"item.isActive\" (click)=\"onSelect(item)\">\n @if (!!item.icon) {\n <upd-icon [model]=\"item.icon\" customClasses=\"dropdown-item-icon\"></upd-icon>\n }\n\n @if (!!item.leftBoxText || !!item.leftBoxImage) {\n <span style=\"background-image: url({{item.leftBoxImage}})\"\n class=\"avatar avatar-xs rounded me-2\">{{ item.leftBoxText }}</span>\n }\n\n <span [ngClass]=\"overflowClass\">\n {{ textService.getText(item.text) }}\n </span>\n\n @if ((item.actionButtons?.length || 0) > 0) {\n <div class=\"ms-auto d-flex\" [class.btn-group]=\"item.toolbarType === 'grouped'\"\n [class.gap-1]=\"item.toolbarType === 'spaced'\">\n @for (btn of item.actionButtons; track btn) {\n <upd-button [model]=\"adaptAction(btn, item)\"></upd-button>\n }\n </div>\n }\n\n @if (!!item.badgeColor) {\n <span class=\"badge bg-{{item.badgeColor}} ms-auto\">{{ item.badgeText }}</span>\n }\n </div>\n }\n }\n}\n\n<ng-content></ng-content>\n", styles: [".dropdown-show{display:inline-block!important;width:100%!important;position:relative;top:0!important;margin-bottom:1rem!important}.dropdown-item>.form-check{margin-bottom:0!important}.dropdown-item{cursor:pointer!important}.dropdown-overflow{overflow-y:auto!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i3.RadioComponent, selector: "upd-radio", inputs: ["wrapperClasses", "value", "customClasses", "isChecked", "isInline"], outputs: ["selected"] }, { kind: "component", type: i4.CheckboxComponent, selector: "upd-checkbox", inputs: ["wrapperClasses", "value", "customClasses", "isChecked", "isInline", "isSwitch", "isIndeterminate"], outputs: ["changed", "isCheckedChange", "isIndeterminateChange"] }, { 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"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
168
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: DropdownComponent, selector: "upd-dropdown", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: false, isRequired: false, transformFunction: null }, shouldCloseOnOutsideClick: { classPropertyName: "shouldCloseOnOutsideClick", publicName: "shouldCloseOnOutsideClick", isSignal: false, isRequired: false, transformFunction: null }, arrowType: { classPropertyName: "arrowType", publicName: "arrowType", isSignal: false, isRequired: false, transformFunction: null }, wrapperClasses: { classPropertyName: "wrapperClasses", publicName: "wrapperClasses", isSignal: false, isRequired: false, transformFunction: null }, elementsExcludedFromOutsideClick: { classPropertyName: "elementsExcludedFromOutsideClick", publicName: "elementsExcludedFromOutsideClick", isSignal: false, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: false, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: false, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: false, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: false, isRequired: false, transformFunction: null }, dropdownReference: { classPropertyName: "dropdownReference", publicName: "dropdownReference", isSignal: false, isRequired: false, transformFunction: null }, dropdownReferencePosition: { classPropertyName: "dropdownReferencePosition", publicName: "dropdownReferencePosition", isSignal: false, isRequired: false, transformFunction: null }, textOverflowStrategy: { classPropertyName: "textOverflowStrategy", publicName: "textOverflowStrategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpenChange: "isOpenChange", selectedItem: "selectedItem", checkboxChanged: "checkboxChanged" }, host: { properties: { "class": "this.localWrapperClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (!!header) {\n <h6 class=\"dropdown-header\">{{ header }}</h6>\n}\n\n@for (item of items; track trackByItemId($index, item)) {\n @switch (item.type) {\n @case ('divider') {\n <div class=\"dropdown-divider\"></div>\n }\n @case ('default') {\n <upd-button [customClasses]=\"getButtonClasses(item)\"\n [shouldIgnoreBtnClass]=\"true\" (clicked)=\"onSelect(item)\">\n @if (!!item.icon) {\n <upd-icon [model]=\"item.icon\" customClasses=\"dropdown-item-icon\"></upd-icon>\n }\n\n @if (!!item.leftBoxText || !!item.leftBoxImage) {\n <span style=\"background-image: url({{item.leftBoxImage}})\"\n class=\"avatar avatar-xs rounded me-2\">{{ item.leftBoxText }}</span>\n }\n\n {{ textService.getText(item.text) }}\n\n @if (!!item.badgeColor) {\n <span class=\"badge bg-{{item.badgeColor}} ms-auto\">{{ item.badgeText }}</span>\n }\n </upd-button>\n }\n @case ('radio') {\n <upd-radio (selected)=\"onSelect(item)\" [label]=\"item.text\" [isChecked]=\"item.isChecked || false\"\n [wrapperClasses]=\"'dropdown-item' + (item.isDisabled ? ' disabled' : '') + (item.isActive ? ' active' : '')\"></upd-radio>\n }\n @case ('checkbox') {\n <upd-checkbox (changed)=\"onCheckboxChange(item, $event)\" [label]=\"item.text\" [isChecked]=\"item.isChecked || false\"\n [isSwitch]=\"item.isSwitch || false\"\n [wrapperClasses]=\"'dropdown-item' + (item.isDisabled ? ' disabled' : '') + (item.isActive ? ' active' : '')\"></upd-checkbox>\n }\n @case ('with-toolbar') {\n <div class=\"dropdown-item\" [class.disabled]=\"item.isDisabled\" [class.active]=\"item.isActive\" (click)=\"onSelect(item)\">\n @if (!!item.icon) {\n <upd-icon [model]=\"item.icon\" customClasses=\"dropdown-item-icon\"></upd-icon>\n }\n\n @if (!!item.leftBoxText || !!item.leftBoxImage) {\n <span style=\"background-image: url({{item.leftBoxImage}})\"\n class=\"avatar avatar-xs rounded me-2\">{{ item.leftBoxText }}</span>\n }\n\n <span [ngClass]=\"overflowClass\">\n {{ textService.getText(item.text) }}\n </span>\n\n @if ((item.actionButtons?.length || 0) > 0) {\n <div class=\"ms-auto d-flex\" [class.btn-group]=\"item.toolbarType === 'grouped'\"\n [class.gap-1]=\"item.toolbarType === 'spaced'\">\n @for (btn of item.actionButtons; track btn) {\n <upd-button [model]=\"adaptAction(btn, item)\"></upd-button>\n }\n </div>\n }\n\n @if (!!item.badgeColor) {\n <span class=\"badge bg-{{item.badgeColor}} ms-auto\">{{ item.badgeText }}</span>\n }\n </div>\n }\n }\n}\n\n<ng-content></ng-content>\n", styles: [".dropdown-show{display:inline-block!important;width:100%!important;position:relative;top:0!important;margin-bottom:1rem!important}.dropdown-item>.form-check{margin-bottom:0!important}.dropdown-item{cursor:pointer!important}.dropdown-overflow{overflow-y:auto!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i3.RadioComponent, selector: "upd-radio", inputs: ["wrapperClasses", "value", "customClasses", "isChecked", "isInline"], outputs: ["selected"] }, { kind: "component", type: i4.CheckboxComponent, selector: "upd-checkbox", inputs: ["wrapperClasses", "value", "customClasses", "isChecked", "isInline", "isSwitch", "isIndeterminate"], outputs: ["changed", "isCheckedChange", "isIndeterminateChange"] }, { 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", "stopPropagation"], outputs: ["clicked"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
169
169
|
}
|
|
170
170
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
171
171
|
type: Component,
|