@dataclouder/ngx-core 0.1.18 → 0.1.19

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.
@@ -30,6 +30,8 @@ import { PaginatorModule } from 'primeng/paginator';
30
30
  import * as i3$2 from 'primeng/table';
31
31
  import { TableModule } from 'primeng/table';
32
32
  import { get } from 'lodash';
33
+ import * as i5$1 from 'primeng/tag';
34
+ import { TagModule } from 'primeng/tag';
33
35
  import { firstValueFrom, tap, catchError, lastValueFrom, throwError } from 'rxjs';
34
36
  import { CommonModule } from '@angular/common';
35
37
  import * as i4$2 from 'primeng/textarea';
@@ -151,11 +153,11 @@ class DCFilterBarComponent {
151
153
  this.onFilterAction.emit(filterEvent);
152
154
  }
153
155
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: DCFilterBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
154
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: DCFilterBarComponent, isStandalone: true, selector: "dc-filter-bar", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, customFilters: { classPropertyName: "customFilters", publicName: "customFilters", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onFilterAction: "onFilterAction", onChangeSort: "onChangeSort", onNew: "onNew" }, ngImport: i0, template: "<div class=\"background-bar\">\n <div class=\"button-flex\">\n <div>\n <p-button icon=\"pi pi-search\" label=\"buscar\" severity=\"secondary\" (click)=\"isSearchVisible = true\" />\n </div>\n\n @if (options()?.showCreateButton) {\n <span class=\"admin\">\n <p-button icon=\"pi pi-plus\" label=\"Crear Nueva\" severity=\"secondary\" (click)=\"createNew()\" />\n </span>\n }\n </div>\n\n @if(options()?.showViewButton){\n <p-button icon=\"pi pi-objects-column\" variant=\"text\" (click)=\"doItemAction({ action: 'changeView', item: null })\" severity=\"secondary\"></p-button>\n } @if(options()?.showActions){ @for(item of items(); track $index) {\n <p-button [icon]=\"item.icon\" variant=\"text\" (click)=\"doItemAction({ action: item.title, item: item })\" severity=\"secondary\"></p-button>\n }\n\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n }\n</div>\n\n@if (placeholder) {\n<span class=\"search-flex\" (click)=\"search(null)\"> <i class=\"pi pi-times\"></i>{{ placeholder }} </span>\n}\n\n<p-dialog [(visible)]=\"isSearchVisible\" [dismissableMask]=\"true\" [modal]=\"true\" [showHeader]=\"false\" (onHide)=\"isSearchVisible = false\">\n <p>Haz una b\u00FAsqueda (Enter)</p>\n <div>\n <span>\n <input (keydown.enter)=\"search(placeholder)\" type=\"text\" pInputText [(ngModel)]=\"placeholder\" />\n </span>\n </div>\n</p-dialog>\n\n<p-dialog [(visible)]=\"isFilterVisible\" [modal]=\"true\" [style]=\"{ width: '70vw', height: '70vh' }\" [header]=\"'Filtros'\">\n <div class=\"flex flex-column gap-4\">\n <!-- Sort Options -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Ordenar por</label>\n <p-select [options]=\"sortOptions\" [(ngModel)]=\"selectedSort\" optionLabel=\"label\" [style]=\"{ width: '100%' }\" placeholder=\"Seleccionar orden\"> </p-select>\n </div>\n\n <p-multiselect\n [options]=\"availibleFilters\"\n [(ngModel)]=\"selectedFilters\"\n optionLabel=\"name\"\n placeholder=\"Filtros R\u00E1pidos\"\n [maxSelectedLabels]=\"3\"\n styleClass=\"w-full md:w-80\" />\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-calendar\n [(ngModel)]=\"dateRange\"\n selectionMode=\"range\"\n [showButtonBar]=\"true\"\n [style]=\"{ width: '100%' }\"\n placeholder=\"Seleccionar fechas\"\n dateFormat=\"dd/mm/yy\">\n </p-calendar>\n </div>\n\n @if (customFilters?.length > 0) {\n <h4>Filtros Personalizados (No terminado...) </h4>\n <h6>Encontrar la forma de que cada custom filter se renderize como un nuevo form.</h6>\n @for (filter of customFilters; track filter.name) {\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">{{ filter.name }}</label>\n </div>\n } }\n\n <!-- Recent/All Toggle -->\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-content-end gap-2\">\n <p-button label=\"Limpiar\" icon=\"pi pi-trash\" (click)=\"clearFilters()\" styleClass=\"p-button-text\"> </p-button>\n <p-button label=\"Aplicar\" icon=\"pi pi-check\" (click)=\"applyFilters()\" severity=\"primary\"> </p-button>\n </div>\n </ng-template>\n</p-dialog>\n", styles: [":host{display:block}.admin{margin-left:10px}.background-bar{background-color:var(--p-primary-color);display:flex;border-radius:10px;justify-content:space-between;padding:10px}.button-flex{display:flex;margin-right:10px}.white{color:#fff}.search-flex{margin-left:10px}.search-dialog{width:750px;-webkit-backdrop-filter:blur(70px);backdrop-filter:blur(70px)}.border-none{border:none}.bg-black-alpha-50{background-color:var(--p-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i4.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "size", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "fluid", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "fluid", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "size", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i7.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "fluid", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
156
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: DCFilterBarComponent, isStandalone: true, selector: "dc-filter-bar", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, customFilters: { classPropertyName: "customFilters", publicName: "customFilters", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onFilterAction: "onFilterAction", onChangeSort: "onChangeSort", onNew: "onNew" }, ngImport: i0, template: "<div class=\"background-bar\">\n <div class=\"button-flex\">\n <div>\n <p-button icon=\"pi pi-search\" label=\"buscar\" severity=\"secondary\" (click)=\"isSearchVisible = true\" />\n </div>\n\n @if (options()?.showCreateButton) {\n <span class=\"admin\">\n <i style=\"position: absolute; right: -5px; top: -5px; z-index: 2; color: grey\" class=\"pi pi-key\"></i>\n <p-button icon=\"pi pi-plus\" label=\"Crear Nueva\" severity=\"secondary\" (click)=\"createNew()\" />\n </span>\n }\n </div>\n\n @if(options()?.showViewButton){\n <p-button icon=\"pi pi-objects-column\" variant=\"text\" (click)=\"doItemAction({ action: 'changeView', item: null })\" severity=\"secondary\"></p-button>\n } @if(options()?.showActions){ @for(item of items(); track $index) {\n <p-button [icon]=\"item.icon\" variant=\"text\" (click)=\"doItemAction({ action: item.title, item: item })\" severity=\"secondary\"></p-button>\n }\n\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n }\n</div>\n\n@if (placeholder) {\n<span class=\"search-flex\" (click)=\"search(null)\"> <i class=\"pi pi-times\"></i>{{ placeholder }} </span>\n}\n\n<p-dialog [(visible)]=\"isSearchVisible\" [dismissableMask]=\"true\" [modal]=\"true\" [showHeader]=\"false\" (onHide)=\"isSearchVisible = false\">\n <p>Haz una b\u00FAsqueda (Enter)</p>\n <div>\n <span>\n <input (keydown.enter)=\"search(placeholder)\" type=\"text\" pInputText [(ngModel)]=\"placeholder\" />\n </span>\n </div>\n</p-dialog>\n\n<p-dialog [(visible)]=\"isFilterVisible\" [modal]=\"true\" [style]=\"{ width: '70vw', height: '70vh' }\" [header]=\"'Filtros'\">\n <div class=\"flex flex-column gap-4\">\n <!-- Sort Options -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Ordenar por</label>\n <p-select [options]=\"sortOptions\" [(ngModel)]=\"selectedSort\" optionLabel=\"label\" [style]=\"{ width: '100%' }\" placeholder=\"Seleccionar orden\"> </p-select>\n </div>\n\n <p-multiselect\n [options]=\"availibleFilters\"\n [(ngModel)]=\"selectedFilters\"\n optionLabel=\"name\"\n placeholder=\"Filtros R\u00E1pidos\"\n [maxSelectedLabels]=\"3\"\n styleClass=\"w-full md:w-80\" />\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-calendar\n [(ngModel)]=\"dateRange\"\n selectionMode=\"range\"\n [showButtonBar]=\"true\"\n [style]=\"{ width: '100%' }\"\n placeholder=\"Seleccionar fechas\"\n dateFormat=\"dd/mm/yy\">\n </p-calendar>\n </div>\n\n @if (customFilters?.length > 0) {\n <h4>Filtros Personalizados (No terminado...) </h4>\n <h6>Encontrar la forma de que cada custom filter se renderize como un nuevo form.</h6>\n @for (filter of customFilters; track filter.name) {\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">{{ filter.name }}</label>\n </div>\n } }\n\n <!-- Recent/All Toggle -->\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-content-end gap-2\">\n <p-button label=\"Limpiar\" icon=\"pi pi-trash\" (click)=\"clearFilters()\" styleClass=\"p-button-text\"> </p-button>\n <p-button label=\"Aplicar\" icon=\"pi pi-check\" (click)=\"applyFilters()\" severity=\"primary\"> </p-button>\n </div>\n </ng-template>\n</p-dialog>\n", styles: [":host{display:block}.admin{margin-left:10px;position:relative}.background-bar{background-color:var(--p-primary-color);display:flex;border-radius:10px;justify-content:space-between;padding:10px}.button-flex{display:flex;margin-right:10px}.white{color:#fff}.search-flex{margin-left:10px}.search-dialog{width:750px;-webkit-backdrop-filter:blur(70px);backdrop-filter:blur(70px)}.border-none{border:none}.bg-black-alpha-50{background-color:var(--p-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i4.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "size", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "fluid", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "fluid", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "size", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i7.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "fluid", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
155
157
  }
156
158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: DCFilterBarComponent, decorators: [{
157
159
  type: Component,
158
- args: [{ selector: 'dc-filter-bar', standalone: true, imports: [FormsModule, ButtonModule, DialogModule, SelectModule, MultiSelectModule, CalendarModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"background-bar\">\n <div class=\"button-flex\">\n <div>\n <p-button icon=\"pi pi-search\" label=\"buscar\" severity=\"secondary\" (click)=\"isSearchVisible = true\" />\n </div>\n\n @if (options()?.showCreateButton) {\n <span class=\"admin\">\n <p-button icon=\"pi pi-plus\" label=\"Crear Nueva\" severity=\"secondary\" (click)=\"createNew()\" />\n </span>\n }\n </div>\n\n @if(options()?.showViewButton){\n <p-button icon=\"pi pi-objects-column\" variant=\"text\" (click)=\"doItemAction({ action: 'changeView', item: null })\" severity=\"secondary\"></p-button>\n } @if(options()?.showActions){ @for(item of items(); track $index) {\n <p-button [icon]=\"item.icon\" variant=\"text\" (click)=\"doItemAction({ action: item.title, item: item })\" severity=\"secondary\"></p-button>\n }\n\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n }\n</div>\n\n@if (placeholder) {\n<span class=\"search-flex\" (click)=\"search(null)\"> <i class=\"pi pi-times\"></i>{{ placeholder }} </span>\n}\n\n<p-dialog [(visible)]=\"isSearchVisible\" [dismissableMask]=\"true\" [modal]=\"true\" [showHeader]=\"false\" (onHide)=\"isSearchVisible = false\">\n <p>Haz una b\u00FAsqueda (Enter)</p>\n <div>\n <span>\n <input (keydown.enter)=\"search(placeholder)\" type=\"text\" pInputText [(ngModel)]=\"placeholder\" />\n </span>\n </div>\n</p-dialog>\n\n<p-dialog [(visible)]=\"isFilterVisible\" [modal]=\"true\" [style]=\"{ width: '70vw', height: '70vh' }\" [header]=\"'Filtros'\">\n <div class=\"flex flex-column gap-4\">\n <!-- Sort Options -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Ordenar por</label>\n <p-select [options]=\"sortOptions\" [(ngModel)]=\"selectedSort\" optionLabel=\"label\" [style]=\"{ width: '100%' }\" placeholder=\"Seleccionar orden\"> </p-select>\n </div>\n\n <p-multiselect\n [options]=\"availibleFilters\"\n [(ngModel)]=\"selectedFilters\"\n optionLabel=\"name\"\n placeholder=\"Filtros R\u00E1pidos\"\n [maxSelectedLabels]=\"3\"\n styleClass=\"w-full md:w-80\" />\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-calendar\n [(ngModel)]=\"dateRange\"\n selectionMode=\"range\"\n [showButtonBar]=\"true\"\n [style]=\"{ width: '100%' }\"\n placeholder=\"Seleccionar fechas\"\n dateFormat=\"dd/mm/yy\">\n </p-calendar>\n </div>\n\n @if (customFilters?.length > 0) {\n <h4>Filtros Personalizados (No terminado...) </h4>\n <h6>Encontrar la forma de que cada custom filter se renderize como un nuevo form.</h6>\n @for (filter of customFilters; track filter.name) {\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">{{ filter.name }}</label>\n </div>\n } }\n\n <!-- Recent/All Toggle -->\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-content-end gap-2\">\n <p-button label=\"Limpiar\" icon=\"pi pi-trash\" (click)=\"clearFilters()\" styleClass=\"p-button-text\"> </p-button>\n <p-button label=\"Aplicar\" icon=\"pi pi-check\" (click)=\"applyFilters()\" severity=\"primary\"> </p-button>\n </div>\n </ng-template>\n</p-dialog>\n", styles: [":host{display:block}.admin{margin-left:10px}.background-bar{background-color:var(--p-primary-color);display:flex;border-radius:10px;justify-content:space-between;padding:10px}.button-flex{display:flex;margin-right:10px}.white{color:#fff}.search-flex{margin-left:10px}.search-dialog{width:750px;-webkit-backdrop-filter:blur(70px);backdrop-filter:blur(70px)}.border-none{border:none}.bg-black-alpha-50{background-color:var(--p-primary-color)}\n"] }]
160
+ args: [{ selector: 'dc-filter-bar', standalone: true, imports: [FormsModule, ButtonModule, DialogModule, SelectModule, MultiSelectModule, CalendarModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"background-bar\">\n <div class=\"button-flex\">\n <div>\n <p-button icon=\"pi pi-search\" label=\"buscar\" severity=\"secondary\" (click)=\"isSearchVisible = true\" />\n </div>\n\n @if (options()?.showCreateButton) {\n <span class=\"admin\">\n <i style=\"position: absolute; right: -5px; top: -5px; z-index: 2; color: grey\" class=\"pi pi-key\"></i>\n <p-button icon=\"pi pi-plus\" label=\"Crear Nueva\" severity=\"secondary\" (click)=\"createNew()\" />\n </span>\n }\n </div>\n\n @if(options()?.showViewButton){\n <p-button icon=\"pi pi-objects-column\" variant=\"text\" (click)=\"doItemAction({ action: 'changeView', item: null })\" severity=\"secondary\"></p-button>\n } @if(options()?.showActions){ @for(item of items(); track $index) {\n <p-button [icon]=\"item.icon\" variant=\"text\" (click)=\"doItemAction({ action: item.title, item: item })\" severity=\"secondary\"></p-button>\n }\n\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n }\n</div>\n\n@if (placeholder) {\n<span class=\"search-flex\" (click)=\"search(null)\"> <i class=\"pi pi-times\"></i>{{ placeholder }} </span>\n}\n\n<p-dialog [(visible)]=\"isSearchVisible\" [dismissableMask]=\"true\" [modal]=\"true\" [showHeader]=\"false\" (onHide)=\"isSearchVisible = false\">\n <p>Haz una b\u00FAsqueda (Enter)</p>\n <div>\n <span>\n <input (keydown.enter)=\"search(placeholder)\" type=\"text\" pInputText [(ngModel)]=\"placeholder\" />\n </span>\n </div>\n</p-dialog>\n\n<p-dialog [(visible)]=\"isFilterVisible\" [modal]=\"true\" [style]=\"{ width: '70vw', height: '70vh' }\" [header]=\"'Filtros'\">\n <div class=\"flex flex-column gap-4\">\n <!-- Sort Options -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Ordenar por</label>\n <p-select [options]=\"sortOptions\" [(ngModel)]=\"selectedSort\" optionLabel=\"label\" [style]=\"{ width: '100%' }\" placeholder=\"Seleccionar orden\"> </p-select>\n </div>\n\n <p-multiselect\n [options]=\"availibleFilters\"\n [(ngModel)]=\"selectedFilters\"\n optionLabel=\"name\"\n placeholder=\"Filtros R\u00E1pidos\"\n [maxSelectedLabels]=\"3\"\n styleClass=\"w-full md:w-80\" />\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-calendar\n [(ngModel)]=\"dateRange\"\n selectionMode=\"range\"\n [showButtonBar]=\"true\"\n [style]=\"{ width: '100%' }\"\n placeholder=\"Seleccionar fechas\"\n dateFormat=\"dd/mm/yy\">\n </p-calendar>\n </div>\n\n @if (customFilters?.length > 0) {\n <h4>Filtros Personalizados (No terminado...) </h4>\n <h6>Encontrar la forma de que cada custom filter se renderize como un nuevo form.</h6>\n @for (filter of customFilters; track filter.name) {\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">{{ filter.name }}</label>\n </div>\n } }\n\n <!-- Recent/All Toggle -->\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-content-end gap-2\">\n <p-button label=\"Limpiar\" icon=\"pi pi-trash\" (click)=\"clearFilters()\" styleClass=\"p-button-text\"> </p-button>\n <p-button label=\"Aplicar\" icon=\"pi pi-check\" (click)=\"applyFilters()\" severity=\"primary\"> </p-button>\n </div>\n </ng-template>\n</p-dialog>\n", styles: [":host{display:block}.admin{margin-left:10px;position:relative}.background-bar{background-color:var(--p-primary-color);display:flex;border-radius:10px;justify-content:space-between;padding:10px}.button-flex{display:flex;margin-right:10px}.white{color:#fff}.search-flex{margin-left:10px}.search-dialog{width:750px;-webkit-backdrop-filter:blur(70px);backdrop-filter:blur(70px)}.border-none{border:none}.bg-black-alpha-50{background-color:var(--p-primary-color)}\n"] }]
159
161
  }], propDecorators: { customFilters: [{
160
162
  type: Input
161
163
  }] } });
@@ -443,7 +445,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
443
445
 
444
446
  class GetPathPipe {
445
447
  transform(obj, path) {
446
- return get(obj, path, 'No disponible');
448
+ const value = get(obj, path, 'No disponible');
449
+ if (typeof value === 'string') {
450
+ return value.length > 80 ? value.substring(0, 80) + '...' : value;
451
+ }
452
+ return value;
447
453
  }
448
454
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GetPathPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
449
455
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: GetPathPipe, isStandalone: true, name: "getPath" }); }
@@ -460,20 +466,24 @@ class QuickTableComponent {
460
466
  constructor() {
461
467
  // Inputs
462
468
  this.columns = input([]);
463
- this.tableData = input([]);
469
+ this.tableData = input([]); // This is the backup data
464
470
  // Default action is only select
465
471
  // readonly actions = input<MenuItem[]>();
466
472
  this.actions = [];
467
473
  // Outputs
468
474
  this.onAction = output();
469
- // Signals
475
+ // Signals States
470
476
  this._columns = signal([]);
477
+ this._tableData = signal([]);
471
478
  this.filters = signal({});
472
479
  this.globalFilterFields = signal([]);
473
480
  this.tableColumns = [];
474
481
  effect(() => {
475
482
  this.initializeTableColumns();
476
- this.initializeFilters();
483
+ if (this.tableData()) {
484
+ this._tableData.set(this.tableData());
485
+ this.initializeFilters();
486
+ }
477
487
  if (!this.actions) {
478
488
  this.actions = [{ title: 'select', label: 'Select', icon: 'pi pi-check', severity: 'primary' }];
479
489
  }
@@ -503,7 +513,7 @@ class QuickTableComponent {
503
513
  }
504
514
  onGlobalFilter(event) {
505
515
  const value = event.target.value;
506
- this.table.filterGlobal(value, FilterMatchMode.CONTAINS);
516
+ this.tableRef.filterGlobal(value, FilterMatchMode.CONTAINS);
507
517
  }
508
518
  getFilterType(column) {
509
519
  if (column.type === 'image') {
@@ -517,7 +527,7 @@ class QuickTableComponent {
517
527
  const fields = [];
518
528
  if (this._columns()) {
519
529
  this._columns().forEach((col) => {
520
- if (col.field !== 'actions') {
530
+ if (col.type === 'text') {
521
531
  // Add field to global filter fields
522
532
  fields.push(col.field);
523
533
  // Initialize filter for this column
@@ -526,22 +536,76 @@ class QuickTableComponent {
526
536
  matchMode: FilterMatchMode.CONTAINS,
527
537
  };
528
538
  }
539
+ else if (col.type === 'tags') {
540
+ // First extract all posible tags.
541
+ console.log(this.tableData());
542
+ const tags = [];
543
+ this.tableData().forEach((item) => {
544
+ if (Array.isArray(item[col.field])) {
545
+ tags.push(...item[col.field]);
546
+ }
547
+ else {
548
+ tags.push(item[col.field]);
549
+ }
550
+ });
551
+ const uniqueTags = Array.from(new Set(tags));
552
+ filterObj[col.field] = {
553
+ value: null,
554
+ matchMode: FilterMatchMode.IN,
555
+ options: uniqueTags,
556
+ };
557
+ }
529
558
  });
530
559
  }
531
560
  this.filters.set(filterObj);
532
561
  this.globalFilterFields.set(fields);
533
562
  }
563
+ onFilterLocal(event) {
564
+ console.log(event);
565
+ }
566
+ filterOutsideTable(type, column, value) {
567
+ // Its complicated understand all filter insde the table i can understand if i debugg tableRef.filters but seens is not able to filter array so i build my own outside.
568
+ if (type === 'tags') {
569
+ if (value.length === 0) {
570
+ this._tableData.set(this.tableData());
571
+ return;
572
+ }
573
+ const filteredData = [];
574
+ this.tableData().forEach((item) => {
575
+ if (Array.isArray(item[column])) {
576
+ const tags = item[column];
577
+ if (tags.some((tag) => value.includes(tag))) {
578
+ filteredData.push(item);
579
+ }
580
+ }
581
+ });
582
+ console.log(filteredData);
583
+ this._tableData.set(filteredData);
584
+ }
585
+ }
534
586
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: QuickTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
535
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: QuickTableComponent, isStandalone: true, selector: "app-quick-table", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, tableData: { classPropertyName: "tableData", publicName: "tableData", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onAction: "onAction" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["dataTable"], descendants: true }], ngImport: i0, template: "<p-table\n [tableStyle]=\"{ 'min-width': '20rem' }\"\n #dataTable\n [value]=\"tableData()\"\n [columns]=\"_columns()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [filters]=\"filters()\">\n <ng-template pTemplate=\"caption\">\n <div class=\"flex justify-content-between align-items-center\">\n <h5 class=\"m-0\">Table Data</h5>\n <span class=\"p-input-icon-left\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" (input)=\"onGlobalFilter($event)\" placeholder=\"Search keyword\" />\n </span>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n @for (column of columns; track column) {\n <th [pSortableColumn]=\"column.field\">{{ column.header }} <p-sortIcon [field]=\"column.field\"></p-sortIcon></th>\n }\n </tr>\n <tr>\n @for (column of columns; track column) {\n <th>\n <p-columnFilter [type]=\"getFilterType(column)\" [field]=\"column.field\" placeholder=\"Search\" [showMenu]=\"false\"></p-columnFilter>\n </th>\n }\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\n <tr>\n @for (column of columns; track column) {\n <td>\n @if(column.type === 'image'){\n <div class=\"image-container\">\n <img src=\"{{ item | getPath: column.field }}\" alt=\"Image\" class=\"image\" />\n </div>\n } @else if(column.type === 'actions') {\n <div style=\"display: flex; gap: 2px\">\n @for (actionBtn of actions; track actionBtn) {\n <p-button (click)=\"selectItem(item, actionBtn)\" [icon]=\"actionBtn.icon\" [severity]=\"actionBtn['severity']\" />\n }\n </div>\n } @else {\n <span>{{ item | getPath: column.field}} </span>\n }\n </td>\n }\n\n <!-- <td>\n <div style=\"display: flex; gap: 2px\">\n @for (actionBtn of actions(); track actionBtn) {\n <p-button (click)=\"selectItem(item, actionBtn)\" [icon]=\"actionBtn.icon\" [severity]=\"actionBtn['severity']\" />\n }\n </div>\n </td> -->\n </tr>\n </ng-template>\n</p-table>\n", styles: [":host{display:block;height:100%;overflow:auto}.generic-list-container{display:flex;flex-direction:column;height:100%}.generic-list-content{margin-top:10px;flex:1;overflow-y:auto;padding-bottom:10px}.card-source{margin-bottom:10px;position:relative}.paginator-container{margin-top:auto;padding-top:10px}.image-container{width:50px;height:50px;border-radius:50%;overflow:hidden;display:flex;justify-content:center;align-items:center}.image-container img{width:100%;height:100%;object-fit:cover}\n"], dependencies: [{ kind: "ngmodule", type: CardModule }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: SpeedDialModule }, { kind: "ngmodule", type: PaginatorModule }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i3$2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3$2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i3$2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i3$2.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons", "ariaLabel", "filterButtonProps"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: RouterModule }, { kind: "pipe", type: GetPathPipe, name: "getPath" }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
587
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: QuickTableComponent, isStandalone: true, selector: "app-quick-table", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, tableData: { classPropertyName: "tableData", publicName: "tableData", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onAction: "onAction" }, viewQueries: [{ propertyName: "tableRef", first: true, predicate: ["tableRef"], descendants: true }], ngImport: i0, template: "<p-table\n [tableStyle]=\"{ 'min-width': '20rem' }\"\n #tableRef\n [value]=\"_tableData()\"\n [columns]=\"_columns()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [filters]=\"filters()\"\n (onFilter)=\"onFilterLocal($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"flex justify-content-between align-items-center\">\n <h5 class=\"m-0\">Table Data</h5>\n <span class=\"p-input-icon-left\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" (input)=\"onGlobalFilter($event)\" placeholder=\"Search keyword\" />\n </span>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n @for (column of columns; track column) {\n <th [pSortableColumn]=\"column.field\">{{ column.header }} <p-sortIcon [field]=\"column.field\"></p-sortIcon></th>\n }\n </tr>\n <tr>\n @for (column of columns; track column) { @if(column.type === 'tags') {\n <th>\n <p-multiselect\n [options]=\"filters()?.[column.field]?.['options']\"\n placeholder=\"Selecciona\"\n (onChange)=\"filterOutsideTable('tags', column.field, $event.value)\"\n [style]=\"{ minWidth: '14rem' }\"\n [panelStyle]=\"{ minWidth: '16rem' }\">\n <ng-template let-option #item>\n <div class=\"flex items-center gap-2\">\n <span>{{ option }}</span>\n </div>\n </ng-template>\n </p-multiselect>\n </th>\n\n } @else {\n <th>\n <p-columnFilter [type]=\"getFilterType(column)\" [field]=\"column.field\" placeholder=\"Search\" [showMenu]=\"false\"></p-columnFilter>\n </th>\n } }\n </tr>\n </ng-template>\n <!-- @if(tableData()){ -->\n <ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\n <tr>\n @for (column of columns; track column) {\n <td>\n @if(column.type === 'image'){\n <div class=\"image-container\">\n <img src=\"{{ item | getPath: column.field }}\" alt=\"Image\" class=\"image\" />\n </div>\n } @else if(column.type === 'tags') {\n <div class=\"tags-container\">\n @for (tag of item[column.field]; track tag) {\n <p-tag [rounded]=\"true\" [value]=\"tag\"></p-tag>\n }\n </div>\n } @else if(column.type === 'actions') {\n <div style=\"display: flex; gap: 2px\">\n @for (actionBtn of actions; track actionBtn) {\n <p-button (click)=\"selectItem(item, actionBtn)\" [icon]=\"actionBtn.icon\" [severity]=\"actionBtn['severity']\" />\n }\n </div>\n } @else {\n <span>{{ item | getPath: column.field}} </span>\n }\n </td>\n }\n </tr>\n </ng-template>\n <!-- } -->\n</p-table>\n", styles: [":host{display:block;height:100%;overflow:auto}.generic-list-container{display:flex;flex-direction:column;height:100%}.generic-list-content{margin-top:10px;flex:1;overflow-y:auto;padding-bottom:10px}.card-source{margin-bottom:10px;position:relative}.paginator-container{margin-top:auto;padding-top:10px}.image-container{width:50px;height:50px;border-radius:50%;overflow:hidden;display:flex;justify-content:center;align-items:center}.image-container img{width:100%;height:100%;object-fit:cover}\n"], dependencies: [{ kind: "ngmodule", type: CardModule }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: SpeedDialModule }, { kind: "ngmodule", type: PaginatorModule }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i3$2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3$2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i3$2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i3$2.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons", "ariaLabel", "filterButtonProps"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: RouterModule }, { kind: "pipe", type: GetPathPipe, name: "getPath" }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i5$1.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: SelectModule }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "fluid", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "size", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
536
588
  }
537
589
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: QuickTableComponent, decorators: [{
538
590
  type: Component,
539
- args: [{ selector: 'app-quick-table', imports: [CardModule, ButtonModule, SpeedDialModule, PaginatorModule, TableModule, RouterModule, GetPathPipe, InputTextModule], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p-table\n [tableStyle]=\"{ 'min-width': '20rem' }\"\n #dataTable\n [value]=\"tableData()\"\n [columns]=\"_columns()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [filters]=\"filters()\">\n <ng-template pTemplate=\"caption\">\n <div class=\"flex justify-content-between align-items-center\">\n <h5 class=\"m-0\">Table Data</h5>\n <span class=\"p-input-icon-left\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" (input)=\"onGlobalFilter($event)\" placeholder=\"Search keyword\" />\n </span>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n @for (column of columns; track column) {\n <th [pSortableColumn]=\"column.field\">{{ column.header }} <p-sortIcon [field]=\"column.field\"></p-sortIcon></th>\n }\n </tr>\n <tr>\n @for (column of columns; track column) {\n <th>\n <p-columnFilter [type]=\"getFilterType(column)\" [field]=\"column.field\" placeholder=\"Search\" [showMenu]=\"false\"></p-columnFilter>\n </th>\n }\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\n <tr>\n @for (column of columns; track column) {\n <td>\n @if(column.type === 'image'){\n <div class=\"image-container\">\n <img src=\"{{ item | getPath: column.field }}\" alt=\"Image\" class=\"image\" />\n </div>\n } @else if(column.type === 'actions') {\n <div style=\"display: flex; gap: 2px\">\n @for (actionBtn of actions; track actionBtn) {\n <p-button (click)=\"selectItem(item, actionBtn)\" [icon]=\"actionBtn.icon\" [severity]=\"actionBtn['severity']\" />\n }\n </div>\n } @else {\n <span>{{ item | getPath: column.field}} </span>\n }\n </td>\n }\n\n <!-- <td>\n <div style=\"display: flex; gap: 2px\">\n @for (actionBtn of actions(); track actionBtn) {\n <p-button (click)=\"selectItem(item, actionBtn)\" [icon]=\"actionBtn.icon\" [severity]=\"actionBtn['severity']\" />\n }\n </div>\n </td> -->\n </tr>\n </ng-template>\n</p-table>\n", styles: [":host{display:block;height:100%;overflow:auto}.generic-list-container{display:flex;flex-direction:column;height:100%}.generic-list-content{margin-top:10px;flex:1;overflow-y:auto;padding-bottom:10px}.card-source{margin-bottom:10px;position:relative}.paginator-container{margin-top:auto;padding-top:10px}.image-container{width:50px;height:50px;border-radius:50%;overflow:hidden;display:flex;justify-content:center;align-items:center}.image-container img{width:100%;height:100%;object-fit:cover}\n"] }]
591
+ args: [{ selector: 'app-quick-table', imports: [
592
+ CardModule,
593
+ ButtonModule,
594
+ SpeedDialModule,
595
+ PaginatorModule,
596
+ TableModule,
597
+ RouterModule,
598
+ GetPathPipe,
599
+ InputTextModule,
600
+ TagModule,
601
+ SelectModule,
602
+ MultiSelectModule,
603
+ ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p-table\n [tableStyle]=\"{ 'min-width': '20rem' }\"\n #tableRef\n [value]=\"_tableData()\"\n [columns]=\"_columns()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [filters]=\"filters()\"\n (onFilter)=\"onFilterLocal($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"flex justify-content-between align-items-center\">\n <h5 class=\"m-0\">Table Data</h5>\n <span class=\"p-input-icon-left\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" (input)=\"onGlobalFilter($event)\" placeholder=\"Search keyword\" />\n </span>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n @for (column of columns; track column) {\n <th [pSortableColumn]=\"column.field\">{{ column.header }} <p-sortIcon [field]=\"column.field\"></p-sortIcon></th>\n }\n </tr>\n <tr>\n @for (column of columns; track column) { @if(column.type === 'tags') {\n <th>\n <p-multiselect\n [options]=\"filters()?.[column.field]?.['options']\"\n placeholder=\"Selecciona\"\n (onChange)=\"filterOutsideTable('tags', column.field, $event.value)\"\n [style]=\"{ minWidth: '14rem' }\"\n [panelStyle]=\"{ minWidth: '16rem' }\">\n <ng-template let-option #item>\n <div class=\"flex items-center gap-2\">\n <span>{{ option }}</span>\n </div>\n </ng-template>\n </p-multiselect>\n </th>\n\n } @else {\n <th>\n <p-columnFilter [type]=\"getFilterType(column)\" [field]=\"column.field\" placeholder=\"Search\" [showMenu]=\"false\"></p-columnFilter>\n </th>\n } }\n </tr>\n </ng-template>\n <!-- @if(tableData()){ -->\n <ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\n <tr>\n @for (column of columns; track column) {\n <td>\n @if(column.type === 'image'){\n <div class=\"image-container\">\n <img src=\"{{ item | getPath: column.field }}\" alt=\"Image\" class=\"image\" />\n </div>\n } @else if(column.type === 'tags') {\n <div class=\"tags-container\">\n @for (tag of item[column.field]; track tag) {\n <p-tag [rounded]=\"true\" [value]=\"tag\"></p-tag>\n }\n </div>\n } @else if(column.type === 'actions') {\n <div style=\"display: flex; gap: 2px\">\n @for (actionBtn of actions; track actionBtn) {\n <p-button (click)=\"selectItem(item, actionBtn)\" [icon]=\"actionBtn.icon\" [severity]=\"actionBtn['severity']\" />\n }\n </div>\n } @else {\n <span>{{ item | getPath: column.field}} </span>\n }\n </td>\n }\n </tr>\n </ng-template>\n <!-- } -->\n</p-table>\n", styles: [":host{display:block;height:100%;overflow:auto}.generic-list-container{display:flex;flex-direction:column;height:100%}.generic-list-content{margin-top:10px;flex:1;overflow-y:auto;padding-bottom:10px}.card-source{margin-bottom:10px;position:relative}.paginator-container{margin-top:auto;padding-top:10px}.image-container{width:50px;height:50px;border-radius:50%;overflow:hidden;display:flex;justify-content:center;align-items:center}.image-container img{width:100%;height:100%;object-fit:cover}\n"] }]
540
604
  }], ctorParameters: () => [], propDecorators: { actions: [{
541
605
  type: Input
542
- }], table: [{
606
+ }], tableRef: [{
543
607
  type: ViewChild,
544
- args: ['dataTable']
608
+ args: ['tableRef']
545
609
  }] } });
546
610
 
547
611
  const TOAST_ALERTS_TOKEN = new InjectionToken('Toast alerts Service');
@@ -1 +1 @@
1
- {"version":3,"file":"dataclouder-ngx-core.mjs","sources":["../../../../projects/dataclouder/ngx-core/src/lib/components/empty-state/empty-state.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/empty-state/empty-state.component.html","../../../../projects/dataclouder/ngx-core/src/lib/models/filter.models.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/list-filter-bar/dc-list-filter-bar.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/list-filter-bar/dc-list-filter-bar.component.html","../../../../projects/dataclouder/ngx-core/src/lib/components/confirm/confirm.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/confirm/confirm.component.html","../../../../projects/dataclouder/ngx-core/src/lib/components/progress-toast/progress-toast.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/progress-toast/progress-toast.html","../../../../projects/dataclouder/ngx-core/src/lib/components/loading-bar/loading-bar.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/loading-bar/loading-bar.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/loading-bar/loading-bar.html","../../../../projects/dataclouder/ngx-core/src/lib/pipes/loadash-get.pipe.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/quick-table/quick-table.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/quick-table/quick-table.html","../../../../projects/dataclouder/ngx-core/src/lib/models/classes.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/pagination.abstract.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/common-enums.ts","../../../../projects/dataclouder/ngx-core/src/lib/utils/utils.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/confirm.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/prompt/prompt.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/prompt/prompt.component.html","../../../../projects/dataclouder/ngx-core/src/lib/services/prompt.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/http-core.service.ts","../../../../projects/dataclouder/ngx-core/src/public-api.ts","../../../../projects/dataclouder/ngx-core/src/dataclouder-ngx-core.ts"],"sourcesContent":["import { Component, Input, input } from '@angular/core';\n\n\n@Component({\n selector: 'dc-empty-state',\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n standalone: true,\n imports: [],\n})\nexport class EmptyStateComponent {\n @Input()\n public headingText = 'No existe el recurso que buscas';\n @Input()\n public subHeadingText = 'Intenta más tarde';\n public readonly mainIconSrcString = input('assets/img/empty-states/empty-box.png');\n}\n","<div class=\"grid justify-content-center\">\n <div class=\"empty-state-content\">\n @if (headingText) {\n <h5 class=\"text-center\">{{ headingText }}</h5>\n }\n <img width=\"180px\" class=\"image-empty-state\" src=\"{{ mainIconSrcString() }}\" />\n @if (subHeadingText) {\n <h6>{{ subHeadingText }}</h6>\n }\n <ng-content></ng-content>\n </div>\n</div>\n","export interface SortOption {\n label: string;\n value: string;\n}\n\nexport const availibleFilters = [\n { name: 'Tomadas', code: 'taken' },\n { name: 'Recomendadas', code: 'suggested' },\n { name: 'Nivel Básico', code: 'basicLevel' },\n { name: 'Nivel Intermedio', code: 'mediumLevel' },\n { name: 'Nivel Avanzado', code: 'advancedLevel' },\n];\n\nexport enum OptionValue {\n Newest = 'newest',\n Oldest = 'oldest',\n Alphabetical = 'alphabetical',\n ReverseAlphabetical = 'reverseAlphabetical',\n}\n\nexport const sortOptions: SortOption[] = [\n { label: 'Más reciente', value: OptionValue.Newest },\n { label: 'Más antiguo', value: OptionValue.Oldest },\n { label: 'A-Z', value: OptionValue.Alphabetical },\n { label: 'Z-A', value: OptionValue.ReverseAlphabetical },\n];\n\nexport const sortTypes = [\n { name: 'Recientes', code: 'newest', sort: { createdDate: -1 } },\n { name: 'Antiguas', code: 'oldest', sort: { createdDate: 1 } },\n { name: 'Populares', code: 'popular', sort: { takenCount: -1 } },\n];\n\nexport interface ICustomFilter {\n name: string;\n type: 'string' | 'number' | 'boolean' | 'date' | 'select';\n options?: any[];\n}\n\nexport interface FiltersConfig {\n page?: number;\n rowsPerPage?: number;\n sort?: { [key: string]: number };\n filters?: { [key: string]: any };\n text?: string;\n returnProps?: Record<string, 0 | 1>;\n}\n\nexport interface IFilterQueryResponse<T> {\n rows: T[];\n count: number;\n skip: number;\n}\n\nexport interface ListFilterBarOptions {\n showCreateButton?: boolean;\n showViewButton?: boolean;\n showActions?: boolean;\n // Add other UI behavior flags here, e.g.:\n // showSortOptions?: boolean;\n // showFilterButton?: boolean;\n // allowManualSearch?: boolean;\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, output, input, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { SelectModule } from 'primeng/select';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { CalendarModule } from 'primeng/calendar';\nimport { availibleFilters, FiltersConfig, ICustomFilter, SortOption, sortOptions, ListFilterBarOptions } from '../../models/filter.models';\nimport { MenuItem } from 'primeng/api';\nimport { OnActionEvent } from '../../models/pagination.abstract';\n\nconst DEFAULT_FILTERS: FiltersConfig = { filters: {}, page: 0, rowsPerPage: 10, sort: { _id: -1 } };\ntype actions = 'new' | 'edit' | 'delete' | 'changeView' | (string & {});\n@Component({\n selector: 'dc-filter-bar',\n standalone: true,\n imports: [FormsModule, ButtonModule, DialogModule, SelectModule, MultiSelectModule, CalendarModule],\n templateUrl: './dc-list-filter-bar.component.html',\n styleUrl: './dc-list-filter-bar.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DCFilterBarComponent implements OnInit {\n // Signal Inputs\n public readonly items = input<MenuItem[]>([]);\n public readonly options = input<ListFilterBarOptions>({ showCreateButton: true });\n // Inputs\n @Input() public customFilters: ICustomFilter[] = [];\n\n // Outputs\n public readonly onFilterAction = output<any>();\n public readonly onChangeSort = output<any>();\n public readonly onNew = output<any>();\n\n // Internal State\n public customFilterModels = [];\n\n ngOnInit(): void {\n console.log('customFilters', this.customFilters);\n\n if (this.customFilters.length > 0) {\n console.log('customFilters', this.customFilters);\n for (const filter of this.customFilters) {\n console.log('Deberia agregar un filtro nuevo', filter);\n // this.availibleFilters.push({\n // name: filter.name,\n // type: filter.type,\n // options: filter.options,\n // });\n }\n }\n }\n\n public availibleFilters = availibleFilters;\n public sortOptions = sortOptions;\n\n public isSearchVisible = false;\n public isFilterVisible = false;\n public placeholder = '';\n\n public filter: FiltersConfig = { ...DEFAULT_FILTERS };\n\n selectedFilters: (typeof availibleFilters)[] = [];\n selectedSort: SortOption | null = null;\n dateRange: Date[] = [];\n\n public changeFilter(event) {\n console.log('Filter changed');\n }\n\n public changeSort(event) {\n console.log('Sort changed', event.value);\n this.onChangeSort.emit(event.value);\n }\n\n public createNew() {\n console.log('createNew from core components');\n this.onNew.emit('new');\n }\n\n public search(text: string = null): void {\n if (!text) {\n this.placeholder = '';\n this.clearFilters();\n } else {\n this.doItemAction({ action: 'search', item: text });\n }\n this.isSearchVisible = false;\n }\n\n clearFilters() {\n this.filter = { ...DEFAULT_FILTERS };\n this.doItemAction({ action: 'filterChange', item: this.filter });\n }\n\n applyFilters() {\n this.doItemAction({ action: 'filterChange', item: this.filter });\n this.isFilterVisible = false;\n }\n\n public doItemAction(filterEvent: OnActionEvent) {\n this.onFilterAction.emit(filterEvent);\n }\n}\n","<div class=\"background-bar\">\n <div class=\"button-flex\">\n <div>\n <p-button icon=\"pi pi-search\" label=\"buscar\" severity=\"secondary\" (click)=\"isSearchVisible = true\" />\n </div>\n\n @if (options()?.showCreateButton) {\n <span class=\"admin\">\n <p-button icon=\"pi pi-plus\" label=\"Crear Nueva\" severity=\"secondary\" (click)=\"createNew()\" />\n </span>\n }\n </div>\n\n @if(options()?.showViewButton){\n <p-button icon=\"pi pi-objects-column\" variant=\"text\" (click)=\"doItemAction({ action: 'changeView', item: null })\" severity=\"secondary\"></p-button>\n } @if(options()?.showActions){ @for(item of items(); track $index) {\n <p-button [icon]=\"item.icon\" variant=\"text\" (click)=\"doItemAction({ action: item.title, item: item })\" severity=\"secondary\"></p-button>\n }\n\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n }\n</div>\n\n@if (placeholder) {\n<span class=\"search-flex\" (click)=\"search(null)\"> <i class=\"pi pi-times\"></i>{{ placeholder }} </span>\n}\n\n<p-dialog [(visible)]=\"isSearchVisible\" [dismissableMask]=\"true\" [modal]=\"true\" [showHeader]=\"false\" (onHide)=\"isSearchVisible = false\">\n <p>Haz una búsqueda (Enter)</p>\n <div>\n <span>\n <input (keydown.enter)=\"search(placeholder)\" type=\"text\" pInputText [(ngModel)]=\"placeholder\" />\n </span>\n </div>\n</p-dialog>\n\n<p-dialog [(visible)]=\"isFilterVisible\" [modal]=\"true\" [style]=\"{ width: '70vw', height: '70vh' }\" [header]=\"'Filtros'\">\n <div class=\"flex flex-column gap-4\">\n <!-- Sort Options -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Ordenar por</label>\n <p-select [options]=\"sortOptions\" [(ngModel)]=\"selectedSort\" optionLabel=\"label\" [style]=\"{ width: '100%' }\" placeholder=\"Seleccionar orden\"> </p-select>\n </div>\n\n <p-multiselect\n [options]=\"availibleFilters\"\n [(ngModel)]=\"selectedFilters\"\n optionLabel=\"name\"\n placeholder=\"Filtros Rápidos\"\n [maxSelectedLabels]=\"3\"\n styleClass=\"w-full md:w-80\" />\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-calendar\n [(ngModel)]=\"dateRange\"\n selectionMode=\"range\"\n [showButtonBar]=\"true\"\n [style]=\"{ width: '100%' }\"\n placeholder=\"Seleccionar fechas\"\n dateFormat=\"dd/mm/yy\">\n </p-calendar>\n </div>\n\n @if (customFilters?.length > 0) {\n <h4>Filtros Personalizados (No terminado...) </h4>\n <h6>Encontrar la forma de que cada custom filter se renderize como un nuevo form.</h6>\n @for (filter of customFilters; track filter.name) {\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">{{ filter.name }}</label>\n </div>\n } }\n\n <!-- Recent/All Toggle -->\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-content-end gap-2\">\n <p-button label=\"Limpiar\" icon=\"pi pi-trash\" (click)=\"clearFilters()\" styleClass=\"p-button-text\"> </p-button>\n <p-button label=\"Aplicar\" icon=\"pi pi-check\" (click)=\"applyFilters()\" severity=\"primary\"> </p-button>\n </div>\n </ng-template>\n</p-dialog>\n","\r\nimport { Component, OnInit, Input, HostListener, inject } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { MessageModule } from 'primeng/message';\r\n\r\n@Component({\r\n selector: 'app-confirm',\r\n templateUrl: './confirm.component.html',\r\n styleUrls: ['./confirm.component.scss'],\r\n standalone: true,\r\n imports: [ButtonModule, MessageModule],\r\n})\r\nexport class ConfirmComponent implements OnInit {\n private dynamicDialogConfig = inject(DynamicDialogConfig);\n ref = inject(DynamicDialogRef);\n\r\n @Input() title: string = 'Confirmación';\r\n @Input() message: string;\r\n @Input() warning: string;\r\n\r\n @Input() oneBotton: boolean;\r\n\r\n @Input() acceptText: string;\r\n @Input() cancelText: string;\r\n\r\n @Input() piIcon: string;\r\n\r\n @HostListener('window:keyup.enter', ['$event'])\r\n onEnter(_event: any) {\r\n this.confirm();\r\n }\r\n\r\n @HostListener('window:keyup.escape', ['$event'])\r\n onEscapte(_event: any) {\r\n this.cancel();\r\n }\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\r\n\r\n constructor() {\r\n if (this.dynamicDialogConfig.data) {\r\n this.title = this.dynamicDialogConfig.data.title;\r\n this.message = this.dynamicDialogConfig.data.message;\r\n this.warning = this.dynamicDialogConfig.data.warning;\r\n this.oneBotton = this.dynamicDialogConfig.data.oneBotton;\r\n this.acceptText = this.dynamicDialogConfig.data.acceptText ?? 'Aceptar';\r\n this.cancelText = this.dynamicDialogConfig.data.cancelText ?? 'Cancelar';\r\n this.piIcon = this.dynamicDialogConfig.data.piIcon;\r\n }\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n public cancel(): void {\r\n this.ref.close(false);\r\n }\r\n\r\n public confirm(): void {\r\n this.ref.close(true);\r\n }\r\n}\r\n","<div class=\"form-input-card\">\n <p-message severity=\"secondary\"> {{ title }}</p-message>\n\n <div style=\"text-align: center; padding: 1rem\">\n <i style=\"font-size: 4rem; color: #ff0040\" class=\"pi {{ piIcon }}\"></i>\n </div>\n\n <div>{{ message }} </div>\n\n @if (warning) {\n <p-message severity=\"warn\">\n <i class=\"pi pi-exclamation-triangle\"></i>\n {{ warning }}</p-message\n >\n }\n\n <br /><br />\n\n <div>\n <div style=\"float: right\">\n @if (oneBotton) {\n <p-button label=\"Ok\" (click)=\"confirm()\"></p-button>\n }\n </div>\n\n @if (!oneBotton) {\n <div class=\"options\">\n <p-button [label]=\"cancelText\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\n <p-button [label]=\"acceptText\" (click)=\"confirm()\" severity=\"danger\"></p-button>\n </div>\n }\n </div>\n </div>\n","\nimport { ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, SimpleChanges, inject, output, input } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { ProgressBar, ProgressBarModule } from 'primeng/progressbar';\nimport { Toast, ToastModule } from 'primeng/toast';\n\n@Component({\n selector: 'dc-progress-toast',\n templateUrl: './progress-toast.html',\n styleUrls: ['./progress-toast.css'],\n standalone: true,\n providers: [MessageService],\n imports: [ButtonModule, ToastModule, ProgressBarModule, Toast, ButtonModule, ProgressBar],\n})\nexport class DCProgressToastComponent implements OnChanges, OnDestroy {\n private messageService = inject(MessageService);\n private cdr = inject(ChangeDetectorRef);\n\n @Input()\n visible: boolean = false;\n\n readonly progress = input<number>(0);\n\n readonly processCompleted = output<void>();\n\n readonly processClosed = output<void>();\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['visible'] && changes['visible'].currentValue) {\n this.showConfirm();\n } else if (changes['visible'] && !changes['visible'].currentValue) {\n this.onClose();\n }\n\n // Handle progress changes\n if (changes['progress']) {\n if (this.progress() >= 100) {\n this.onComplete();\n }\n this.cdr.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this.messageService.clear('confirm');\n }\n\n private showConfirm() {\n if (this.visible) {\n this.messageService.add({ key: 'confirm', sticky: true, severity: 'info', summary: 'Working on it...' });\n }\n }\n\n private onComplete() {\n this.messageService.clear('confirm');\n this.messageService.add({\n severity: 'success',\n summary: 'Process Completed',\n detail: 'The process has finished successfully!',\n life: 3000,\n });\n this.processCompleted.emit();\n this.visible = false;\n }\n\n public onClose() {\n this.visible = false;\n this.messageService.add({\n severity: 'info',\n summary: 'Process Cancelled',\n detail: 'The process was cancelled by the user',\n life: 3000,\n });\n this.messageService.clear('confirm');\n this.processClosed.emit();\n }\n}\n","<div class=\"card flex justify-center\">\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onClose()\" [baseZIndex]=\"9000\">\n <ng-template let-message #headless let-closeFn=\"closeFn\">\n <section style=\"padding: 15px\">\n <div>\n <i class=\"pi pi-cloud-upload\"></i>\n <span>{{ message.summary }}</span>\n </div>\n <div>\n <p-progressbar [value]=\"progress()\" [showValue]=\"false\" [style]=\"{ height: '6px' }\" />\n\n <label style=\"color: beige\">{{ progress() }}% uploaded</label>\n </div>\n <div>\n <p-button label=\"Another Upload?\" (click)=\"closeFn($event)\" size=\"small\" />\n <p-button label=\"Cancel\" (click)=\"closeFn($event)\" size=\"small\" />\n </div>\n </section>\n </ng-template>\n </p-toast>\n</div>\n","import { Injectable } from '@angular/core';\n\n/**\n * Service for managing a loading/progress bar component in the application.\n *\n * This service provides methods to control the visibility, progress state, and appearance\n * of a loading bar. It supports both determinate (with specific progress percentage)\n * and indeterminate modes, as well as different color options.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class LoadingBarService {\n /** Flag indicating whether the loading bar is currently visible */\n public isShowing: boolean = false;\n\n /** Current progress value (0-100) for determinate mode */\n public progress: number = 0;\n\n /** The current display mode of the loading bar */\n public mode: 'indeterminate' | 'determinate' = 'indeterminate';\n\n /** The color of the loading bar (can be a theme color name or hex value) */\n public color: string = 'primary';\n\n /** Interval reference for the fake progress animation */\n private progressInterval: any;\n constructor() {}\n\n /**\n * Shows the loading bar in determinate mode with 0% progress.\n * Use this method when starting a process with known progress states.\n */\n public showProgressBar() {\n this.isShowing = true;\n this.mode = 'determinate';\n this.progress = 0;\n }\n\n /**\n * Shows the loading bar in indeterminate mode.\n * Use this method when the progress of a process cannot be determined.\n */\n public showIndeterminate() {\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 0;\n }\n\n /**\n * Shows the loading bar in determinate mode with a specific progress value.\n *\n * @param progress The progress value to display (0-100)\n */\n public showProgressBarWithProgress(progress: number) {\n this.isShowing = true;\n this.mode = 'determinate';\n this.progress = progress;\n }\n\n /**\n * Hides the loading bar and resets its state.\n * Call this method when a process completes or when you want to hide the loading bar.\n */\n public hideProgressBar() {\n this.isShowing = false;\n this.mode = null;\n this.progress = 0;\n this.color = 'primary';\n }\n\n /**\n * Shows a success state (green color, 100% progress) and then automatically hides the loading bar after a delay.\n * Use this method to indicate successful completion of a process with visual feedback.\n */\n public successAndHide() {\n // Clear any existing progress interval\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n this.progressInterval = null;\n }\n\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 100;\n this.color = '#4BBD97';\n setTimeout(() => {\n this.hideProgressBar();\n }, 1100);\n }\n\n public infoAndHide() {\n // Clear any existing progress interval\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n this.progressInterval = null;\n }\n\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 100;\n this.color = '#45C8F3';\n setTimeout(() => {\n this.hideProgressBar();\n }, 1000);\n }\n\n /**\n * Demonstrates the loading bar by simulating progress from 0% to 100% over 5 seconds.\n * This is a test/demo method to visualize how the loading bar works.\n */\n public testProgressBar() {\n this.showProgressBarWithProgress(0);\n setTimeout(() => {\n this.showProgressBarWithProgress(20);\n }, 1000);\n setTimeout(() => {\n this.showProgressBarWithProgress(40);\n }, 2000);\n setTimeout(() => {\n this.showProgressBarWithProgress(60);\n }, 3000);\n setTimeout(() => {\n this.showProgressBarWithProgress(80);\n }, 4000);\n setTimeout(() => {\n this.showProgressBarWithProgress(100);\n }, 5000);\n }\n\n /**\n * Animates the progress bar from 0 to 100 over a specified time period\n * use when you dont know the duration of the process\n * if your process finish before the time ends call successAndHide()\n * @param durationInSeconds The total duration of the animation in seconds (default: 20)\n */\n public fakeProgressWithTime(durationInSeconds: number = 20): void {\n // Reset progress to 0\n this.showProgressBarWithProgress(0);\n\n // Calculate how often to update based on the duration\n const totalSteps = 50; // 0 to 100\n const intervalMs = (durationInSeconds * 1000) / totalSteps;\n let currentProgress = 0;\n\n // Clear any existing interval first\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n }\n\n // Create interval to update progress\n this.progressInterval = setInterval(() => {\n currentProgress += 2;\n this.showProgressBarWithProgress(currentProgress);\n\n // Clear interval when we reach local state or global\n if (currentProgress >= 100 || this.progress >= 100) {\n clearInterval(this.progressInterval);\n this.progressInterval = null;\n this.showIndeterminate();\n }\n }, intervalMs);\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { ProgressBar, ProgressBarModule } from 'primeng/progressbar';\nimport { ToastModule } from 'primeng/toast';\nimport { LoadingBarService } from './loading-bar.service';\n\n@Component({\n selector: 'dc-loading-bar',\n templateUrl: './loading-bar.html',\n styleUrls: ['./loading-bar.css'],\n standalone: true,\n providers: [MessageService],\n imports: [ButtonModule, ToastModule, ProgressBarModule, ButtonModule, ProgressBar],\n})\nexport class LoadingBarComponent {\n loadingBarService = inject(LoadingBarService);\n}\n","@if (loadingBarService.isShowing) {\n<p-progressbar [color]=\"loadingBarService.color\" [mode]=\"loadingBarService.mode\" [style]=\"{ height: '4px' }\" [value]=\"loadingBarService.progress\" />\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { get } from 'lodash';\n\n@Pipe({\n name: 'getPath',\n standalone: true,\n})\nexport class GetPathPipe implements PipeTransform {\n transform(obj: any, path: any): string {\n return get(obj, path, 'No disponible');\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewChild, output, input, effect, signal, Input } from '@angular/core';\nimport { CardModule } from 'primeng/card';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\n\nimport { RouterModule } from '@angular/router';\nimport { SpeedDialModule } from 'primeng/speeddial';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { TableModule, Table } from 'primeng/table';\nimport { FilterMatchMode } from 'primeng/api';\nimport { OnActionEvent } from '../../models/pagination.abstract';\n\nimport { GetPathPipe } from '../../pipes/loadash-get.pipe';\nimport { MenuItem } from 'primeng/api';\n\nexport interface PColumn {\n field: string;\n header: string;\n type?: 'text' | 'image' | 'actions';\n}\n\n@Component({\n selector: 'app-quick-table',\n imports: [CardModule, ButtonModule, SpeedDialModule, PaginatorModule, TableModule, RouterModule, GetPathPipe, InputTextModule],\n templateUrl: './quick-table.html',\n styleUrl: './quick-table.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class QuickTableComponent {\n // Inputs\n readonly columns = input<PColumn[]>([]);\n readonly tableData = input<any[]>([]);\n // Default action is only select\n // readonly actions = input<MenuItem[]>();\n @Input() actions: MenuItem[] = [];\n\n // Outputs\n readonly onAction = output<OnActionEvent>();\n\n // Signals\n public _columns = signal<PColumn[]>([]);\n public filters = signal<Record<string, any>>({});\n public globalFilterFields = signal<string[]>([]);\n\n @ViewChild('dataTable') table!: Table;\n\n tableColumns: any[] = [];\n\n constructor() {\n effect(() => {\n this.initializeTableColumns();\n this.initializeFilters();\n if (!this.actions) {\n this.actions = [{ title: 'select', label: 'Select', icon: 'pi pi-check', severity: 'primary' }];\n }\n console.log('QuickTableComponent', this.actions);\n });\n }\n\n private initializeTableColumns(): void {\n if (!this.columns() || this.columns().length === 0) {\n console.warn('No columns provided. please privide columns for acuracy');\n if (this.tableData()?.[0]) {\n this.tableColumns = Object.keys(this.tableData()[0]).map((key) => ({\n field: key,\n header: key,\n sortable: true,\n }));\n console.log(this.tableColumns);\n this._columns.set(this.tableColumns);\n }\n } else {\n this._columns.set([...this.columns(), { field: 'actions', header: 'Actions', type: 'actions' }]);\n }\n }\n\n public selectItem(item: any, action: MenuItem) {\n console.log('onAction', { item, action });\n this.onAction.emit({ item, action: action.title || action.label });\n }\n\n public onGlobalFilter(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.table.filterGlobal(value, FilterMatchMode.CONTAINS);\n }\n\n public getFilterType(column: PColumn): string {\n if (column.type === 'image') {\n return 'text';\n }\n return 'text';\n }\n\n private initializeFilters(): void {\n // Initialize filters\n const filterObj: Record<string, any> = {};\n const fields: string[] = [];\n\n if (this._columns()) {\n this._columns().forEach((col) => {\n if (col.field !== 'actions') {\n // Add field to global filter fields\n fields.push(col.field);\n\n // Initialize filter for this column\n filterObj[col.field] = {\n value: null,\n matchMode: FilterMatchMode.CONTAINS,\n };\n }\n });\n }\n\n this.filters.set(filterObj);\n this.globalFilterFields.set(fields);\n }\n\n // private getActionTemplate(item: any): any {\n //\n // if (!this.onlyView()) {\n // return {\n // edit: () => this.selectItem(item, { title: 'edit', label: 'Edit', icon: 'pi pi-pencil', severity: 'primary' }),\n // delete: () => this.selectItem(item, { title: 'delete', label: 'Delete', icon: 'pi pi-trash', severity: 'danger' }),\n // view: () => this.selectItem(item, { title: 'view', label: 'View', icon: 'pi pi-eye', severity: 'info' }),\n // };\n // } else {\n // return {\n // select: () => this.selectItem(item, { title: 'select', label: 'Select', icon: 'pi pi-check', severity: 'primary' }),\n // };\n // }\n // }\n}\n","<p-table\n [tableStyle]=\"{ 'min-width': '20rem' }\"\n #dataTable\n [value]=\"tableData()\"\n [columns]=\"_columns()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [filters]=\"filters()\">\n <ng-template pTemplate=\"caption\">\n <div class=\"flex justify-content-between align-items-center\">\n <h5 class=\"m-0\">Table Data</h5>\n <span class=\"p-input-icon-left\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" (input)=\"onGlobalFilter($event)\" placeholder=\"Search keyword\" />\n </span>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n @for (column of columns; track column) {\n <th [pSortableColumn]=\"column.field\">{{ column.header }} <p-sortIcon [field]=\"column.field\"></p-sortIcon></th>\n }\n </tr>\n <tr>\n @for (column of columns; track column) {\n <th>\n <p-columnFilter [type]=\"getFilterType(column)\" [field]=\"column.field\" placeholder=\"Search\" [showMenu]=\"false\"></p-columnFilter>\n </th>\n }\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\n <tr>\n @for (column of columns; track column) {\n <td>\n @if(column.type === 'image'){\n <div class=\"image-container\">\n <img src=\"{{ item | getPath: column.field }}\" alt=\"Image\" class=\"image\" />\n </div>\n } @else if(column.type === 'actions') {\n <div style=\"display: flex; gap: 2px\">\n @for (actionBtn of actions; track actionBtn) {\n <p-button (click)=\"selectItem(item, actionBtn)\" [icon]=\"actionBtn.icon\" [severity]=\"actionBtn['severity']\" />\n }\n </div>\n } @else {\n <span>{{ item | getPath: column.field}} </span>\n }\n </td>\n }\n\n <!-- <td>\n <div style=\"display: flex; gap: 2px\">\n @for (actionBtn of actions(); track actionBtn) {\n <p-button (click)=\"selectItem(item, actionBtn)\" [icon]=\"actionBtn.icon\" [severity]=\"actionBtn['severity']\" />\n }\n </div>\n </td> -->\n </tr>\n </ng-template>\n</p-table>\n","import { InjectionToken, Provider, Type } from '@angular/core';\nimport { EModelQuality } from './common-enums';\n\nexport const TOAST_ALERTS_TOKEN = new InjectionToken<ToastAlertsAbstractService>('Toast alerts Service');\n\nexport interface ToastData {\n title: string;\n subtitle: string;\n}\n\nexport abstract class ToastAlertsAbstractService {\n abstract success(data: ToastData): void;\n abstract info(data: ToastData): void;\n abstract warn(data: ToastData): void;\n abstract error(data: ToastData): void;\n}\n\nexport function provideToastAlert(serviceImplementation: Type<ToastAlertsAbstractService>): Provider[] {\n return [\n {\n provide: TOAST_ALERTS_TOKEN,\n useExisting: serviceImplementation,\n },\n ];\n}\n\n// @deprecated, moved to ngx-tts\nexport enum AudioSpeed {\n VerySlow = 'verySlow',\n Slow = 'slow',\n Regular = 'regular',\n Fast = 'fast',\n VeryFast = 'veryFast',\n}\n\nexport const AudioSpeedReverse = {\n [AudioSpeed.VerySlow]: 1,\n [AudioSpeed.Slow]: 2,\n [AudioSpeed.Regular]: 3,\n [AudioSpeed.Fast]: 4,\n [AudioSpeed.VeryFast]: 5,\n};\n\nexport class IAIModel {\n provider?: string; // First Priority\n modelName?: string; // if model is set then good, else use default. but model does not work alone. need a provider.\n quality?: EModelQuality; // Second priority if provider is not set, then get default for quality. is provider is set then look for quality defaults in server.\n id?: string; // Not sure if i'm usin this. probably i should change to label.\n}\n\n// Since it not clear if this bellows to chat AI Or user i put here.\nexport class ChatUserSettings {\n realTime: boolean; // For real time conversation chat, no need to press button to send message\n superHearing: boolean; // use whisper to get a better transcription\n repeatRecording: boolean; // depends on superhearing, if true, it will repeat the recording\n // fixGrammar: boolean; // fix grammar\n voice?: string; // first voice, when is not availible one\n // autoTranslate?: boolean; // auto translate\n highlightWords?: boolean; // highlight words\n synthVoice?: boolean; // post request to your own tts service to get audio, need resonse with standard\n model?: IAIModel; // if you want to use a specific model\n speed?: AudioSpeed; // if you want to use a specific speed variable\n speedRate?: number; // temporal for more specific speed.\n userMessageTask: boolean;\n assistantMessageTask: boolean;\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { FiltersConfig } from './filter.models';\nimport { MenuItem } from 'primeng/api';\nimport { PColumn } from '../components/quick-table/quick-table';\nimport { Directive, output, input, Inject, inject } from '@angular/core';\n\nexport interface OnActionEvent {\n action?: string;\n item?: any;\n menuItem?: MenuItem;\n}\n\n/**\n * Abstract base class for implementing pagination functionality.\n * Provides common pagination logic, state management, and navigation handling.\n * Child classes must implement the loadData method and define columns.\n */\n@Directive()\nexport abstract class PaginationBase {\n /**\n * Available actions for items.\n * Must be implemented by child classes.\n */\n readonly actions = input<MenuItem[]>();\n /**\n * Event emitted when an action is performed on an item.\n * Emits an object containing the item and the action that was triggered.\n */\n readonly onAction = output<OnActionEvent>();\n\n /** Current first record index for the paginator */\n public paginatorFirst: number = 0;\n /** Number of rows to display per page */\n public paginatorRows: number = 10;\n /** Total number of records available */\n public totalRecords: number = 0;\n /** Current view mode, either cards or table */\n public viewMode: 'cards' | 'table' = 'table';\n /** Loading state indicator */\n public isLoading: boolean = false;\n /** Available button actions for items */\n public buttonActions: MenuItem[] = [];\n\n /**\n * Columns configuration for the table view.\n * Must be implemented by child classes.\n */\n protected abstract columns: PColumn[];\n\n /**\n * Configuration for filtering, sorting, and pagination.\n * Includes current page, rows per page, sorting criteria, and applied filters.\n */\n public filterConfig: FiltersConfig = { page: 0, rowsPerPage: this.paginatorRows, sort: { _id: -1 }, filters: {} };\n\n protected route = inject(ActivatedRoute);\n protected router = inject(Router);\n /**\n * Creates an instance of PaginationBase.\n * @param route - The ActivatedRoute for accessing route parameters\n * @param router - The Router for navigation\n */\n constructor() {\n this.initializePagination();\n }\n\n /**\n * Initializes pagination based on URL query parameters.\n * Sets the current page from the 'page' query parameter if available.\n * @private\n */\n private initializePagination(): void {\n const page = this.route.snapshot.queryParamMap.get('page');\n if (page) {\n this.filterConfig.page = +page - 1;\n this.paginatorFirst = this.filterConfig.page * this.paginatorRows;\n }\n }\n\n /**\n * Handles pagination events from the paginator component.\n * Updates the filter configuration, loads new data, and updates the URL.\n * @param pageEvent - The page event containing page number and rows per page\n */\n public async onPageChange(pageEvent: any) {\n this.paginatorRows = pageEvent.rows;\n this.filterConfig = {\n ...this.filterConfig,\n page: pageEvent.page,\n rowsPerPage: this.paginatorRows,\n };\n\n await this.loadData();\n this.updatePageParam(pageEvent.page + 1);\n }\n\n /**\n * Updates the 'page' query parameter in the URL.\n * @param newPage - The new page number to set in the URL\n * @private\n */\n private updatePageParam(newPage: number) {\n const queryParams = { page: newPage };\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n queryParamsHandling: 'merge',\n });\n }\n\n // Abstract method that needs to be implemented by child classes\n /**\n * Loads data for the current page configuration.\n * Must be implemented by child classes to fetch data from the appropriate source.\n * @returns A promise that resolves when data loading is complete\n */\n protected abstract loadData(): Promise<void>;\n\n /**\n * Handle actions triggered from the table or card view\n * @param param0 Object containing the item and action that was triggered\n */\n public doAction(actionEvent: OnActionEvent) {\n console.log('actionEvent on pagination', actionEvent);\n this.onAction.emit(actionEvent);\n }\n}\n","export enum EModelQuality {\n FAST = 'fast', // Prioritize speed over intelligence like flash lite\n BALANCED = 'balanced', // Equal balance like flash 2.5\n SMART = 'smart', // Prioritize intelligence over speed like gemini pro 2.5\n SMART_THINKING = 'smart-thinking', // Maximum intelligence, ignore speed enable thinking mode\n}\n\nexport const ModelQualityOptions = [\n { label: 'Fast', value: EModelQuality.FAST },\n { label: 'Balanced', value: EModelQuality.BALANCED },\n { label: 'Smart', value: EModelQuality.SMART },\n { label: 'Smart Thinking', value: EModelQuality.SMART_THINKING },\n];\n","/**\n * Extracts and parses the first JSON object or array found within a string.\n *\n * @param content - The input string that may contain JSON data\n * @returns {any} The parsed JSON data if found and valid, or null if:\n * - No JSON object/array is found in the string\n * - The found JSON is invalid and cannot be parsed\n *\n * @example\n * // Returns {name: \"John\"}\n * extractJsonFromString('Some text {\"name\": \"John\"} more text');\n *\n * // Returns [1, 2, 3]\n * extractJsonFromString('Before [1,2,3] after');\n *\n * // Returns null\n * extractJsonFromString('No JSON here');\n */\nexport function extractJsonFromString(content: string): any {\n console.log(content);\n try {\n // First try to parse the entire string as JSON\n return JSON.parse(content);\n } catch {\n try {\n // If that fails, try to find the first valid JSON object or array in the string\n const matches = content.match(/(\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])/g);\n if (!matches) return null;\n\n // Try each matched potential JSON string until we find a valid one\n for (const match of matches) {\n try {\n return JSON.parse(match);\n } catch {\n continue;\n }\n }\n return null;\n } catch (error) {\n console.error('Error parsing JSON:', error);\n return null;\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\n\nimport { ConfirmComponent } from '../components/confirm/confirm.component';\nimport { firstValueFrom } from 'rxjs';\n\nexport interface ConfirmOptions {\n title?: string;\n message?: string;\n acceptText?: string;\n cancelText?: string;\n warning?: string;\n oneBotton?: boolean;\n piIcon?: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfirmService {\n pdialogService = inject(DialogService);\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\n\n constructor() {}\n\n openConfirm(title: string = '', message: string = '', acceptText: string = 'Aceptar') {\n const dialogRef = this.pdialogService.open(ConfirmComponent, {\n data: {\n message: message,\n title: title,\n acceptText,\n },\n closable: true,\n modal: true,\n });\n\n return dialogRef.onClose;\n }\n\n confirm(options: ConfirmOptions) {\n const dialogRef = this.pdialogService.open(ConfirmComponent, {\n data: {\n message: options.message || '',\n title: options.title || 'Confirmación',\n acceptText: options.acceptText || 'Aceptar',\n cancelText: options.cancelText || 'Cancelar',\n warning: options.warning || null,\n oneBotton: options.oneBotton || false,\n piIcon: options.piIcon || null,\n },\n closable: true,\n modal: true,\n });\n\n return firstValueFrom(dialogRef.onClose);\n }\n}\n","import { Component, OnInit, inject, signal } from '@angular/core';\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { FormsModule } from '@angular/forms';\nimport { MessageModule } from 'primeng/message';\nimport { CommonModule } from '@angular/common';\nimport { TextareaModule } from 'primeng/textarea';\n\n@Component({\n selector: 'dc-prompt',\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n standalone: true,\n imports: [CommonModule, ButtonModule, InputTextModule, FormsModule, MessageModule, TextareaModule],\n})\nexport class PromptComponent implements OnInit {\n ref = inject(DynamicDialogRef);\n config = inject(DynamicDialogConfig);\n\n title = signal<string>('Prompt');\n message = signal<string>('');\n acceptText = signal<string>('Accept');\n cancelText = signal<string>('Cancel');\n inputValue = signal<string>('');\n\n ngOnInit(): void {\n this.title.set(this.config.data?.title || 'Prompt');\n this.message.set(this.config.data?.message || '');\n this.acceptText.set(this.config.data?.acceptText || 'Accept');\n this.cancelText.set(this.config.data?.cancelText || 'Cancel');\n // Set initial value if provided\n this.inputValue.set(this.config.data?.initialValue || '');\n }\n\n accept(): void {\n this.ref.close(this.inputValue());\n }\n\n cancel(): void {\n this.ref.close(null);\n }\n}\n","<div class=\"form-input-card p-4\">\n <p-message severity=\"secondary\"> {{ title() }}</p-message>\n\n <div class=\"my-4\">{{ message() }}</div>\n\n <div class=\"p-field mb-4\">\n <textarea rows=\"5\" cols=\"30\" pTextarea [(ngModel)]=\"inputValue\" class=\"w-full\"></textarea>\n </div>\n\n <div class=\"flex justify-content-end gap-2\">\n <p-button [label]=\"cancelText()\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\n <p-button [label]=\"acceptText()\" (click)=\"accept()\"></p-button>\n </div>\n</div>\n","import { Injectable, inject } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { firstValueFrom } from 'rxjs';\n\nimport { PromptComponent } from '../components/prompt/prompt.component';\n\nexport interface PromptOptions {\n title?: string;\n message?: string;\n acceptText?: string;\n cancelText?: string;\n initialValue?: string; // Add initialValue property\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PromptService {\n private readonly dialogService = inject(DialogService);\n\n /**\n * Opens a prompt dialog.\n * @param options Configuration options for the prompt dialog.\n * @returns A promise that resolves with the input value if accepted, or null if canceled.\n */\n openPrompt(options: PromptOptions): Promise<string | null> {\n const dialogRef = this.dialogService.open(PromptComponent, {\n data: {\n title: options.title || 'Prompt',\n message: options.message || '',\n acceptText: options.acceptText || 'Accept',\n cancelText: options.cancelText || 'Cancel',\n initialValue: options.initialValue || '', // Pass initialValue to component data\n },\n header: options.title || 'Prompt', // Set header for accessibility and title bar\n closable: true,\n modal: true,\n width: '700px', // Optional: Adjust width as needed\n });\n\n // Return the result when the dialog closes\n return firstValueFrom(dialogRef.onClose);\n }\n}\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject, signal, InjectionToken, Optional, Inject } from '@angular/core';\nimport { Observable, throwError, lastValueFrom, tap, map, catchError } from 'rxjs';\n\n/**\n * Interface for HTTP error responses\n */\nexport interface HttpCoreError {\n error_message: string;\n explanation: string;\n status?: number;\n code?: string;\n}\n\n/**\n * Interface for deleted data response\n */\nexport interface DeletedData {\n acknowledged: boolean;\n deletedCount: number;\n}\n\n/**\n * Configuration for HttpCoreService\n */\nexport interface HttpCoreConfig {\n primaryUrl: string;\n secondaryUrl?: string;\n defaultHost?: 'primary' | 'secondary';\n errorHandler?: (error: HttpErrorResponse) => void;\n}\n\n/**\n * Injection token for HttpCoreService configuration\n */\nexport const HTTP_CORE_CONFIG = new InjectionToken<HttpCoreConfig>('HTTP_CORE_CONFIG');\n\n/**\n * Modern HTTP service for Angular applications\n * Provides methods for making HTTP requests with proper error handling and response transformation\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class HttpCoreService {\n private httpClient = inject(HttpClient);\n\n // Use signals for reactive state\n private isLoading = signal<boolean>(false);\n private lastError = signal<HttpCoreError | null>(null);\n\n // Configuration\n private config: HttpCoreConfig;\n\n constructor(@Optional() @Inject(HTTP_CORE_CONFIG) config: HttpCoreConfig | null) {\n if (config && config.primaryUrl) {\n this.config = {\n defaultHost: 'primary',\n ...config,\n };\n } else {\n // Initialize with a placeholder - this will be set properly with setConfig\n this.config = {\n primaryUrl: '',\n defaultHost: 'primary',\n };\n\n if (!config) {\n console.warn('HttpCoreService: No configuration provided. Use setConfig to configure the service.');\n } else if (!config.primaryUrl) {\n console.warn('HttpCoreService: primaryUrl is required in configuration. Use setConfig to set it.');\n }\n }\n }\n\n /**\n * Set the configuration for the service\n * This allows for manual configuration when not using dependency injection\n */\n setConfig(config: HttpCoreConfig): void {\n this.config = {\n ...this.config,\n ...config,\n };\n }\n\n /**\n * Get the loading state as a signal\n */\n public loading() {\n return this.isLoading;\n }\n\n /**\n * Get the last error as a signal\n */\n public error() {\n return this.lastError;\n }\n\n /**\n * Make a POST request to the specified service\n * @param service The service endpoint\n * @param data The data to send\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async post<T = any>(service: string, data: any, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.post<T>(url, dataPlain).pipe(tap(this.checkResponseStatus.bind(this)), catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a POST request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @param data The data to send\n * @returns A promise with the response\n */\n public async postToUrl<T = any>(baseUrl: string, service: string, data: any): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.post<T>(url, dataPlain).pipe(tap(this.checkResponseStatus.bind(this)), catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a PUT request to the specified service\n * @param service The service endpoint\n * @param data The data to send\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async put<T = any>(service: string, data: any, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.put<T>(url, dataPlain).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a PUT request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @param data The data to send\n * @returns A promise with the response\n */\n public async putToUrl<T = any>(baseUrl: string, service: string, data: any): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.put<T>(url, dataPlain).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a GET request to the specified service\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @param skipErrorHandling Whether to skip error handling\n * @returns A promise with the response\n */\n public async get<T = any>(service: string, host = this.config.defaultHost, skipErrorHandling = false): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const response$ = this.httpClient.get<T>(url).pipe(\n catchError((err) => {\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a GET request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @param skipErrorHandling Whether to skip error handling\n * @returns A promise with the response\n */\n public async getFromUrl<T = any>(baseUrl: string, service: string, skipErrorHandling = false): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n\n const response$ = this.httpClient.get<T>(url).pipe(\n catchError((err) => {\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a DELETE request to the specified service\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async delete<T = DeletedData>(service: string, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const response$ = this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a DELETE request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @returns A promise with the response\n */\n public async deleteFromUrl<T = DeletedData>(baseUrl: string, service: string): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n\n const response$ = this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Get an observable for a GET request\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public getObservable<T = any>(service: string, host = this.config.defaultHost): Observable<T> {\n const url = this.getHostUrl(host) + '/' + service;\n\n return this.httpClient.get<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n }\n\n /**\n * Get an observable for a POST request\n * @param service The service endpoint\n * @param data The data to send\n * @param skipErrorHandling Whether to skip error handling\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public postObservable<T = any>(service: string, data: any, skipErrorHandling = false, host = this.config.defaultHost): Observable<T> {\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n\n return this.httpClient.post<T>(url, dataPlain).pipe(\n catchError((err) => {\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n }\n\n /**\n * Get an observable for a DELETE request\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public deleteObservable<T = DeletedData>(service: string, host = this.config.defaultHost): Observable<T> {\n const url = this.getHostUrl(host) + '/' + service;\n\n return this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n }\n\n /**\n * Upload a file to the specified service\n * @param service The service endpoint\n * @param file The file to upload\n * @param metadata Optional metadata to send with the file\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async uploadFile<T = any>(service: string, file: Blob, metadata: any = null, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const formData = new FormData();\n formData.append('file', file);\n\n let headers = {};\n if (metadata) {\n headers = { metadata: JSON.stringify(metadata) };\n }\n\n const response$ = this.httpClient.post<T>(url, formData, { headers });\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Download a file from the specified service\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async downloadFile(service: string, host = this.config.defaultHost) {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const response$ = this.httpClient\n .get(url, {\n responseType: 'blob',\n observe: 'response',\n })\n .pipe(catchError(this.handleBlobError.bind(this)));\n\n const result = await lastValueFrom(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Upload a file to the specified service and get the response as a blob\n * @param service The service endpoint\n * @param data The data to send\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async postFileAndGetBlob(service: string, data: any, host = this.config.defaultHost) {\n this.isLoading.set(true);\n\n try {\n let url = this.getHostUrl(host);\n if (service) {\n url += '/' + service;\n }\n\n const response$ = this.httpClient\n .post(url, data, {\n observe: 'response',\n responseType: 'blob',\n })\n .pipe(catchError(this.handleBlobError.bind(this)));\n\n const result = await lastValueFrom(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Get a file from the specified service as an observable\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public getFileObservable(service: string, host = this.config.defaultHost): Observable<Blob> {\n const url = this.getHostUrl(host) + '/' + service;\n return this.httpClient.get(url, { responseType: 'blob' });\n }\n\n /**\n * Get the URL for the specified host\n * @param host The host to use (primary or secondary)\n * @returns The URL for the specified host\n */\n private getHostUrl(host: 'primary' | 'secondary' = this.config.defaultHost): string {\n return host === 'secondary' && this.config.secondaryUrl ? this.config.secondaryUrl : this.config.primaryUrl;\n }\n\n /**\n * Handle an error from a request\n * @param error The error to handle\n * @returns An observable that throws the error\n */\n private handleRequestError(error: HttpErrorResponse): Observable<never> {\n this.isLoading.set(false);\n\n // Set the last error\n if (error.error && typeof error.error === 'object') {\n this.lastError.set({\n error_message: error.error.error_message || 'An error occurred',\n explanation: error.error.explanation || 'Please try again later',\n status: error.status,\n code: error.error.code,\n });\n } else {\n this.lastError.set({\n error_message: error.message || 'An error occurred',\n explanation: 'Please try again later',\n status: error.status,\n });\n }\n\n // Call the custom error handler if provided\n if (this.config.errorHandler) {\n this.config.errorHandler(error);\n }\n\n return throwError(() => error);\n }\n\n /**\n * Handle an error from a blob request\n * @param error The error to handle\n * @returns An observable that throws the error\n */\n private async handleBlobError(error: HttpErrorResponse): Promise<Observable<never>> {\n // Convert blob error response to JSON if possible\n if (error.error instanceof Blob) {\n try {\n const errorText = await error.error.text();\n (error as any).error = JSON.parse(errorText);\n } catch (e) {\n // If parsing fails, create a generic error\n (error as any).error = {\n error_message: 'Error processing file',\n explanation: 'Unable to process server response',\n };\n }\n }\n\n return this.handleRequestError(error);\n }\n\n /**\n * Check the status of a response\n * @param response The response to check\n */\n private checkResponseStatus(response: any): void {\n // Implement any response status checking logic here\n // For example, check for specific status codes or error messages\n }\n\n /**\n * Convert an object to a plain object\n * @param obj The object to convert\n * @returns A plain object\n */\n private toPlainObject(obj: any): any {\n if (!obj) return obj;\n\n // Handle simple types\n if (typeof obj !== 'object' || obj instanceof Blob || obj instanceof File) {\n return obj;\n }\n\n // Handle arrays\n if (Array.isArray(obj)) {\n return obj.map((item) => this.toPlainObject(item));\n }\n\n // Handle objects\n const result: Record<string, any> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const value = obj[key];\n\n // Skip functions and undefined values\n if (typeof value === 'function' || value === undefined) {\n continue;\n }\n\n result[key] = this.toPlainObject(value);\n }\n }\n\n return result;\n }\n}\n","/*\n * Public API Surface of core-components\n */\n// Components\nexport * from './lib/components/empty-state/empty-state.component';\nexport * from './lib/components/list-filter-bar/dc-list-filter-bar.component';\nexport * from './lib/components/confirm/confirm.component';\nexport * from './lib/components/progress-toast/progress-toast';\nexport * from './lib/components/loading-bar/loading-bar';\nexport * from './lib/components/loading-bar/loading-bar.service';\nexport * from './lib/components/quick-table/quick-table';\n// models and classes\nexport * from './lib/models/classes';\nexport * from './lib/models/pagination.abstract';\nexport * from './lib/models/filter.models';\nexport * from './lib/models/common-enums'; // Added for EModelQuality\nexport * from './lib/utils/utils';\nexport * from './lib/pipes/loadash-get.pipe';\n// services\nexport * from './lib/services/confirm.service';\nexport * from './lib/services/prompt.service';\nexport * from './lib/services/http-core.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3","i4"],"mappings":"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"}
1
+ {"version":3,"file":"dataclouder-ngx-core.mjs","sources":["../../../../projects/dataclouder/ngx-core/src/lib/components/empty-state/empty-state.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/empty-state/empty-state.component.html","../../../../projects/dataclouder/ngx-core/src/lib/models/filter.models.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/list-filter-bar/dc-list-filter-bar.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/list-filter-bar/dc-list-filter-bar.component.html","../../../../projects/dataclouder/ngx-core/src/lib/components/confirm/confirm.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/confirm/confirm.component.html","../../../../projects/dataclouder/ngx-core/src/lib/components/progress-toast/progress-toast.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/progress-toast/progress-toast.html","../../../../projects/dataclouder/ngx-core/src/lib/components/loading-bar/loading-bar.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/loading-bar/loading-bar.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/loading-bar/loading-bar.html","../../../../projects/dataclouder/ngx-core/src/lib/pipes/loadash-get.pipe.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/quick-table/quick-table.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/quick-table/quick-table.html","../../../../projects/dataclouder/ngx-core/src/lib/models/classes.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/pagination.abstract.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/common-enums.ts","../../../../projects/dataclouder/ngx-core/src/lib/utils/utils.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/confirm.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/prompt/prompt.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/prompt/prompt.component.html","../../../../projects/dataclouder/ngx-core/src/lib/services/prompt.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/http-core.service.ts","../../../../projects/dataclouder/ngx-core/src/public-api.ts","../../../../projects/dataclouder/ngx-core/src/dataclouder-ngx-core.ts"],"sourcesContent":["import { Component, Input, input } from '@angular/core';\n\n\n@Component({\n selector: 'dc-empty-state',\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n standalone: true,\n imports: [],\n})\nexport class EmptyStateComponent {\n @Input()\n public headingText = 'No existe el recurso que buscas';\n @Input()\n public subHeadingText = 'Intenta más tarde';\n public readonly mainIconSrcString = input('assets/img/empty-states/empty-box.png');\n}\n","<div class=\"grid justify-content-center\">\n <div class=\"empty-state-content\">\n @if (headingText) {\n <h5 class=\"text-center\">{{ headingText }}</h5>\n }\n <img width=\"180px\" class=\"image-empty-state\" src=\"{{ mainIconSrcString() }}\" />\n @if (subHeadingText) {\n <h6>{{ subHeadingText }}</h6>\n }\n <ng-content></ng-content>\n </div>\n</div>\n","export interface SortOption {\n label: string;\n value: string;\n}\n\nexport const availibleFilters = [\n { name: 'Tomadas', code: 'taken' },\n { name: 'Recomendadas', code: 'suggested' },\n { name: 'Nivel Básico', code: 'basicLevel' },\n { name: 'Nivel Intermedio', code: 'mediumLevel' },\n { name: 'Nivel Avanzado', code: 'advancedLevel' },\n];\n\nexport enum OptionValue {\n Newest = 'newest',\n Oldest = 'oldest',\n Alphabetical = 'alphabetical',\n ReverseAlphabetical = 'reverseAlphabetical',\n}\n\nexport const sortOptions: SortOption[] = [\n { label: 'Más reciente', value: OptionValue.Newest },\n { label: 'Más antiguo', value: OptionValue.Oldest },\n { label: 'A-Z', value: OptionValue.Alphabetical },\n { label: 'Z-A', value: OptionValue.ReverseAlphabetical },\n];\n\nexport const sortTypes = [\n { name: 'Recientes', code: 'newest', sort: { createdDate: -1 } },\n { name: 'Antiguas', code: 'oldest', sort: { createdDate: 1 } },\n { name: 'Populares', code: 'popular', sort: { takenCount: -1 } },\n];\n\nexport interface ICustomFilter {\n name: string;\n type: 'string' | 'number' | 'boolean' | 'date' | 'select';\n options?: any[];\n}\n\nexport interface FiltersConfig {\n page?: number;\n rowsPerPage?: number;\n sort?: { [key: string]: number };\n filters?: { [key: string]: any };\n text?: string;\n returnProps?: Record<string, 0 | 1>;\n}\n\nexport interface IFilterQueryResponse<T> {\n rows: T[];\n count: number;\n skip: number;\n}\n\nexport interface ListFilterBarOptions {\n showCreateButton?: boolean;\n showViewButton?: boolean;\n showActions?: boolean;\n // Add other UI behavior flags here, e.g.:\n // showSortOptions?: boolean;\n // showFilterButton?: boolean;\n // allowManualSearch?: boolean;\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, output, input, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { SelectModule } from 'primeng/select';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { CalendarModule } from 'primeng/calendar';\nimport { availibleFilters, FiltersConfig, ICustomFilter, SortOption, sortOptions, ListFilterBarOptions } from '../../models/filter.models';\nimport { MenuItem } from 'primeng/api';\nimport { OnActionEvent } from '../../models/pagination.abstract';\n\nconst DEFAULT_FILTERS: FiltersConfig = { filters: {}, page: 0, rowsPerPage: 10, sort: { _id: -1 } };\ntype actions = 'new' | 'edit' | 'delete' | 'changeView' | (string & {});\n@Component({\n selector: 'dc-filter-bar',\n standalone: true,\n imports: [FormsModule, ButtonModule, DialogModule, SelectModule, MultiSelectModule, CalendarModule],\n templateUrl: './dc-list-filter-bar.component.html',\n styleUrl: './dc-list-filter-bar.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DCFilterBarComponent implements OnInit {\n // Signal Inputs\n public readonly items = input<MenuItem[]>([]);\n public readonly options = input<ListFilterBarOptions>({ showCreateButton: true });\n // Inputs\n @Input() public customFilters: ICustomFilter[] = [];\n\n // Outputs\n public readonly onFilterAction = output<any>();\n public readonly onChangeSort = output<any>();\n public readonly onNew = output<any>();\n\n // Internal State\n public customFilterModels = [];\n\n ngOnInit(): void {\n console.log('customFilters', this.customFilters);\n\n if (this.customFilters.length > 0) {\n console.log('customFilters', this.customFilters);\n for (const filter of this.customFilters) {\n console.log('Deberia agregar un filtro nuevo', filter);\n // this.availibleFilters.push({\n // name: filter.name,\n // type: filter.type,\n // options: filter.options,\n // });\n }\n }\n }\n\n public availibleFilters = availibleFilters;\n public sortOptions = sortOptions;\n\n public isSearchVisible = false;\n public isFilterVisible = false;\n public placeholder = '';\n\n public filter: FiltersConfig = { ...DEFAULT_FILTERS };\n\n selectedFilters: (typeof availibleFilters)[] = [];\n selectedSort: SortOption | null = null;\n dateRange: Date[] = [];\n\n public changeFilter(event) {\n console.log('Filter changed');\n }\n\n public changeSort(event) {\n console.log('Sort changed', event.value);\n this.onChangeSort.emit(event.value);\n }\n\n public createNew() {\n console.log('createNew from core components');\n this.onNew.emit('new');\n }\n\n public search(text: string = null): void {\n if (!text) {\n this.placeholder = '';\n this.clearFilters();\n } else {\n this.doItemAction({ action: 'search', item: text });\n }\n this.isSearchVisible = false;\n }\n\n clearFilters() {\n this.filter = { ...DEFAULT_FILTERS };\n this.doItemAction({ action: 'filterChange', item: this.filter });\n }\n\n applyFilters() {\n this.doItemAction({ action: 'filterChange', item: this.filter });\n this.isFilterVisible = false;\n }\n\n public doItemAction(filterEvent: OnActionEvent) {\n this.onFilterAction.emit(filterEvent);\n }\n}\n","<div class=\"background-bar\">\n <div class=\"button-flex\">\n <div>\n <p-button icon=\"pi pi-search\" label=\"buscar\" severity=\"secondary\" (click)=\"isSearchVisible = true\" />\n </div>\n\n @if (options()?.showCreateButton) {\n <span class=\"admin\">\n <i style=\"position: absolute; right: -5px; top: -5px; z-index: 2; color: grey\" class=\"pi pi-key\"></i>\n <p-button icon=\"pi pi-plus\" label=\"Crear Nueva\" severity=\"secondary\" (click)=\"createNew()\" />\n </span>\n }\n </div>\n\n @if(options()?.showViewButton){\n <p-button icon=\"pi pi-objects-column\" variant=\"text\" (click)=\"doItemAction({ action: 'changeView', item: null })\" severity=\"secondary\"></p-button>\n } @if(options()?.showActions){ @for(item of items(); track $index) {\n <p-button [icon]=\"item.icon\" variant=\"text\" (click)=\"doItemAction({ action: item.title, item: item })\" severity=\"secondary\"></p-button>\n }\n\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n }\n</div>\n\n@if (placeholder) {\n<span class=\"search-flex\" (click)=\"search(null)\"> <i class=\"pi pi-times\"></i>{{ placeholder }} </span>\n}\n\n<p-dialog [(visible)]=\"isSearchVisible\" [dismissableMask]=\"true\" [modal]=\"true\" [showHeader]=\"false\" (onHide)=\"isSearchVisible = false\">\n <p>Haz una búsqueda (Enter)</p>\n <div>\n <span>\n <input (keydown.enter)=\"search(placeholder)\" type=\"text\" pInputText [(ngModel)]=\"placeholder\" />\n </span>\n </div>\n</p-dialog>\n\n<p-dialog [(visible)]=\"isFilterVisible\" [modal]=\"true\" [style]=\"{ width: '70vw', height: '70vh' }\" [header]=\"'Filtros'\">\n <div class=\"flex flex-column gap-4\">\n <!-- Sort Options -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Ordenar por</label>\n <p-select [options]=\"sortOptions\" [(ngModel)]=\"selectedSort\" optionLabel=\"label\" [style]=\"{ width: '100%' }\" placeholder=\"Seleccionar orden\"> </p-select>\n </div>\n\n <p-multiselect\n [options]=\"availibleFilters\"\n [(ngModel)]=\"selectedFilters\"\n optionLabel=\"name\"\n placeholder=\"Filtros Rápidos\"\n [maxSelectedLabels]=\"3\"\n styleClass=\"w-full md:w-80\" />\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-calendar\n [(ngModel)]=\"dateRange\"\n selectionMode=\"range\"\n [showButtonBar]=\"true\"\n [style]=\"{ width: '100%' }\"\n placeholder=\"Seleccionar fechas\"\n dateFormat=\"dd/mm/yy\">\n </p-calendar>\n </div>\n\n @if (customFilters?.length > 0) {\n <h4>Filtros Personalizados (No terminado...) </h4>\n <h6>Encontrar la forma de que cada custom filter se renderize como un nuevo form.</h6>\n @for (filter of customFilters; track filter.name) {\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">{{ filter.name }}</label>\n </div>\n } }\n\n <!-- Recent/All Toggle -->\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-content-end gap-2\">\n <p-button label=\"Limpiar\" icon=\"pi pi-trash\" (click)=\"clearFilters()\" styleClass=\"p-button-text\"> </p-button>\n <p-button label=\"Aplicar\" icon=\"pi pi-check\" (click)=\"applyFilters()\" severity=\"primary\"> </p-button>\n </div>\n </ng-template>\n</p-dialog>\n","\r\nimport { Component, OnInit, Input, HostListener, inject } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { MessageModule } from 'primeng/message';\r\n\r\n@Component({\r\n selector: 'app-confirm',\r\n templateUrl: './confirm.component.html',\r\n styleUrls: ['./confirm.component.scss'],\r\n standalone: true,\r\n imports: [ButtonModule, MessageModule],\r\n})\r\nexport class ConfirmComponent implements OnInit {\n private dynamicDialogConfig = inject(DynamicDialogConfig);\n ref = inject(DynamicDialogRef);\n\r\n @Input() title: string = 'Confirmación';\r\n @Input() message: string;\r\n @Input() warning: string;\r\n\r\n @Input() oneBotton: boolean;\r\n\r\n @Input() acceptText: string;\r\n @Input() cancelText: string;\r\n\r\n @Input() piIcon: string;\r\n\r\n @HostListener('window:keyup.enter', ['$event'])\r\n onEnter(_event: any) {\r\n this.confirm();\r\n }\r\n\r\n @HostListener('window:keyup.escape', ['$event'])\r\n onEscapte(_event: any) {\r\n this.cancel();\r\n }\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\r\n\r\n constructor() {\r\n if (this.dynamicDialogConfig.data) {\r\n this.title = this.dynamicDialogConfig.data.title;\r\n this.message = this.dynamicDialogConfig.data.message;\r\n this.warning = this.dynamicDialogConfig.data.warning;\r\n this.oneBotton = this.dynamicDialogConfig.data.oneBotton;\r\n this.acceptText = this.dynamicDialogConfig.data.acceptText ?? 'Aceptar';\r\n this.cancelText = this.dynamicDialogConfig.data.cancelText ?? 'Cancelar';\r\n this.piIcon = this.dynamicDialogConfig.data.piIcon;\r\n }\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n public cancel(): void {\r\n this.ref.close(false);\r\n }\r\n\r\n public confirm(): void {\r\n this.ref.close(true);\r\n }\r\n}\r\n","<div class=\"form-input-card\">\n <p-message severity=\"secondary\"> {{ title }}</p-message>\n\n <div style=\"text-align: center; padding: 1rem\">\n <i style=\"font-size: 4rem; color: #ff0040\" class=\"pi {{ piIcon }}\"></i>\n </div>\n\n <div>{{ message }} </div>\n\n @if (warning) {\n <p-message severity=\"warn\">\n <i class=\"pi pi-exclamation-triangle\"></i>\n {{ warning }}</p-message\n >\n }\n\n <br /><br />\n\n <div>\n <div style=\"float: right\">\n @if (oneBotton) {\n <p-button label=\"Ok\" (click)=\"confirm()\"></p-button>\n }\n </div>\n\n @if (!oneBotton) {\n <div class=\"options\">\n <p-button [label]=\"cancelText\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\n <p-button [label]=\"acceptText\" (click)=\"confirm()\" severity=\"danger\"></p-button>\n </div>\n }\n </div>\n </div>\n","\nimport { ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, SimpleChanges, inject, output, input } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { ProgressBar, ProgressBarModule } from 'primeng/progressbar';\nimport { Toast, ToastModule } from 'primeng/toast';\n\n@Component({\n selector: 'dc-progress-toast',\n templateUrl: './progress-toast.html',\n styleUrls: ['./progress-toast.css'],\n standalone: true,\n providers: [MessageService],\n imports: [ButtonModule, ToastModule, ProgressBarModule, Toast, ButtonModule, ProgressBar],\n})\nexport class DCProgressToastComponent implements OnChanges, OnDestroy {\n private messageService = inject(MessageService);\n private cdr = inject(ChangeDetectorRef);\n\n @Input()\n visible: boolean = false;\n\n readonly progress = input<number>(0);\n\n readonly processCompleted = output<void>();\n\n readonly processClosed = output<void>();\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['visible'] && changes['visible'].currentValue) {\n this.showConfirm();\n } else if (changes['visible'] && !changes['visible'].currentValue) {\n this.onClose();\n }\n\n // Handle progress changes\n if (changes['progress']) {\n if (this.progress() >= 100) {\n this.onComplete();\n }\n this.cdr.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this.messageService.clear('confirm');\n }\n\n private showConfirm() {\n if (this.visible) {\n this.messageService.add({ key: 'confirm', sticky: true, severity: 'info', summary: 'Working on it...' });\n }\n }\n\n private onComplete() {\n this.messageService.clear('confirm');\n this.messageService.add({\n severity: 'success',\n summary: 'Process Completed',\n detail: 'The process has finished successfully!',\n life: 3000,\n });\n this.processCompleted.emit();\n this.visible = false;\n }\n\n public onClose() {\n this.visible = false;\n this.messageService.add({\n severity: 'info',\n summary: 'Process Cancelled',\n detail: 'The process was cancelled by the user',\n life: 3000,\n });\n this.messageService.clear('confirm');\n this.processClosed.emit();\n }\n}\n","<div class=\"card flex justify-center\">\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onClose()\" [baseZIndex]=\"9000\">\n <ng-template let-message #headless let-closeFn=\"closeFn\">\n <section style=\"padding: 15px\">\n <div>\n <i class=\"pi pi-cloud-upload\"></i>\n <span>{{ message.summary }}</span>\n </div>\n <div>\n <p-progressbar [value]=\"progress()\" [showValue]=\"false\" [style]=\"{ height: '6px' }\" />\n\n <label style=\"color: beige\">{{ progress() }}% uploaded</label>\n </div>\n <div>\n <p-button label=\"Another Upload?\" (click)=\"closeFn($event)\" size=\"small\" />\n <p-button label=\"Cancel\" (click)=\"closeFn($event)\" size=\"small\" />\n </div>\n </section>\n </ng-template>\n </p-toast>\n</div>\n","import { Injectable } from '@angular/core';\n\n/**\n * Service for managing a loading/progress bar component in the application.\n *\n * This service provides methods to control the visibility, progress state, and appearance\n * of a loading bar. It supports both determinate (with specific progress percentage)\n * and indeterminate modes, as well as different color options.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class LoadingBarService {\n /** Flag indicating whether the loading bar is currently visible */\n public isShowing: boolean = false;\n\n /** Current progress value (0-100) for determinate mode */\n public progress: number = 0;\n\n /** The current display mode of the loading bar */\n public mode: 'indeterminate' | 'determinate' = 'indeterminate';\n\n /** The color of the loading bar (can be a theme color name or hex value) */\n public color: string = 'primary';\n\n /** Interval reference for the fake progress animation */\n private progressInterval: any;\n constructor() {}\n\n /**\n * Shows the loading bar in determinate mode with 0% progress.\n * Use this method when starting a process with known progress states.\n */\n public showProgressBar() {\n this.isShowing = true;\n this.mode = 'determinate';\n this.progress = 0;\n }\n\n /**\n * Shows the loading bar in indeterminate mode.\n * Use this method when the progress of a process cannot be determined.\n */\n public showIndeterminate() {\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 0;\n }\n\n /**\n * Shows the loading bar in determinate mode with a specific progress value.\n *\n * @param progress The progress value to display (0-100)\n */\n public showProgressBarWithProgress(progress: number) {\n this.isShowing = true;\n this.mode = 'determinate';\n this.progress = progress;\n }\n\n /**\n * Hides the loading bar and resets its state.\n * Call this method when a process completes or when you want to hide the loading bar.\n */\n public hideProgressBar() {\n this.isShowing = false;\n this.mode = null;\n this.progress = 0;\n this.color = 'primary';\n }\n\n /**\n * Shows a success state (green color, 100% progress) and then automatically hides the loading bar after a delay.\n * Use this method to indicate successful completion of a process with visual feedback.\n */\n public successAndHide() {\n // Clear any existing progress interval\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n this.progressInterval = null;\n }\n\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 100;\n this.color = '#4BBD97';\n setTimeout(() => {\n this.hideProgressBar();\n }, 1100);\n }\n\n public infoAndHide() {\n // Clear any existing progress interval\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n this.progressInterval = null;\n }\n\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 100;\n this.color = '#45C8F3';\n setTimeout(() => {\n this.hideProgressBar();\n }, 1000);\n }\n\n /**\n * Demonstrates the loading bar by simulating progress from 0% to 100% over 5 seconds.\n * This is a test/demo method to visualize how the loading bar works.\n */\n public testProgressBar() {\n this.showProgressBarWithProgress(0);\n setTimeout(() => {\n this.showProgressBarWithProgress(20);\n }, 1000);\n setTimeout(() => {\n this.showProgressBarWithProgress(40);\n }, 2000);\n setTimeout(() => {\n this.showProgressBarWithProgress(60);\n }, 3000);\n setTimeout(() => {\n this.showProgressBarWithProgress(80);\n }, 4000);\n setTimeout(() => {\n this.showProgressBarWithProgress(100);\n }, 5000);\n }\n\n /**\n * Animates the progress bar from 0 to 100 over a specified time period\n * use when you dont know the duration of the process\n * if your process finish before the time ends call successAndHide()\n * @param durationInSeconds The total duration of the animation in seconds (default: 20)\n */\n public fakeProgressWithTime(durationInSeconds: number = 20): void {\n // Reset progress to 0\n this.showProgressBarWithProgress(0);\n\n // Calculate how often to update based on the duration\n const totalSteps = 50; // 0 to 100\n const intervalMs = (durationInSeconds * 1000) / totalSteps;\n let currentProgress = 0;\n\n // Clear any existing interval first\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n }\n\n // Create interval to update progress\n this.progressInterval = setInterval(() => {\n currentProgress += 2;\n this.showProgressBarWithProgress(currentProgress);\n\n // Clear interval when we reach local state or global\n if (currentProgress >= 100 || this.progress >= 100) {\n clearInterval(this.progressInterval);\n this.progressInterval = null;\n this.showIndeterminate();\n }\n }, intervalMs);\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { ProgressBar, ProgressBarModule } from 'primeng/progressbar';\nimport { ToastModule } from 'primeng/toast';\nimport { LoadingBarService } from './loading-bar.service';\n\n@Component({\n selector: 'dc-loading-bar',\n templateUrl: './loading-bar.html',\n styleUrls: ['./loading-bar.css'],\n standalone: true,\n providers: [MessageService],\n imports: [ButtonModule, ToastModule, ProgressBarModule, ButtonModule, ProgressBar],\n})\nexport class LoadingBarComponent {\n loadingBarService = inject(LoadingBarService);\n}\n","@if (loadingBarService.isShowing) {\n<p-progressbar [color]=\"loadingBarService.color\" [mode]=\"loadingBarService.mode\" [style]=\"{ height: '4px' }\" [value]=\"loadingBarService.progress\" />\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { get } from 'lodash';\n\n@Pipe({\n name: 'getPath',\n standalone: true,\n})\nexport class GetPathPipe implements PipeTransform {\n transform(obj: any, path: any): string {\n const value = get(obj, path, 'No disponible');\n if (typeof value === 'string') {\n return value.length > 80 ? value.substring(0, 80) + '...' : value;\n }\n return value;\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewChild, output, input, effect, signal, Input } from '@angular/core';\nimport { CardModule } from 'primeng/card';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\n\nimport { RouterModule } from '@angular/router';\nimport { SpeedDialModule } from 'primeng/speeddial';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { TableModule, Table } from 'primeng/table';\nimport { FilterMatchMode, FilterMetadata } from 'primeng/api';\nimport { OnActionEvent } from '../../models/pagination.abstract';\n\nimport { GetPathPipe } from '../../pipes/loadash-get.pipe';\nimport { MenuItem } from 'primeng/api';\nimport { TagModule } from 'primeng/tag';\nimport { SelectModule } from 'primeng/select';\nimport { MultiSelectModule } from 'primeng/multiselect';\n\nexport interface PColumn {\n field: string;\n header: string;\n type?: 'text' | 'image' | 'tags' | 'actions';\n}\n\n@Component({\n selector: 'app-quick-table',\n imports: [\n CardModule,\n ButtonModule,\n SpeedDialModule,\n PaginatorModule,\n TableModule,\n RouterModule,\n GetPathPipe,\n InputTextModule,\n TagModule,\n SelectModule,\n MultiSelectModule,\n ],\n templateUrl: './quick-table.html',\n styleUrl: './quick-table.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class QuickTableComponent {\n // Inputs\n readonly columns = input<PColumn[]>([]);\n readonly tableData = input<any[]>([]); // This is the backup data\n // Default action is only select\n // readonly actions = input<MenuItem[]>();\n @Input() actions: MenuItem[] = [];\n\n // Outputs\n readonly onAction = output<OnActionEvent>();\n\n // Signals States\n public _columns = signal<PColumn[]>([]);\n public _tableData = signal<any[]>([]);\n public filters = signal<{ [s: string]: FilterMetadata | FilterMetadata[] }>({});\n public globalFilterFields = signal<string[]>([]);\n\n @ViewChild('tableRef') tableRef!: Table;\n\n tableColumns: any[] = [];\n\n constructor() {\n effect(() => {\n this.initializeTableColumns();\n if (this.tableData()) {\n this._tableData.set(this.tableData());\n\n this.initializeFilters();\n }\n if (!this.actions) {\n this.actions = [{ title: 'select', label: 'Select', icon: 'pi pi-check', severity: 'primary' }];\n }\n console.log('QuickTableComponent', this.actions);\n });\n }\n\n private initializeTableColumns(): void {\n if (!this.columns() || this.columns().length === 0) {\n console.warn('No columns provided. please privide columns for acuracy');\n if (this.tableData()?.[0]) {\n this.tableColumns = Object.keys(this.tableData()[0]).map((key) => ({\n field: key,\n header: key,\n sortable: true,\n }));\n console.log(this.tableColumns);\n this._columns.set(this.tableColumns);\n }\n } else {\n this._columns.set([...this.columns(), { field: 'actions', header: 'Actions', type: 'actions' }]);\n }\n }\n\n public selectItem(item: any, action: MenuItem) {\n console.log('onAction', { item, action });\n this.onAction.emit({ item, action: action.title || action.label });\n }\n\n public onGlobalFilter(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.tableRef.filterGlobal(value, FilterMatchMode.CONTAINS);\n }\n\n public getFilterType(column: PColumn): string {\n if (column.type === 'image') {\n return 'text';\n }\n return 'text';\n }\n\n private initializeFilters(): void {\n // Initialize filters\n const filterObj: Record<string, any> = {};\n const fields: string[] = [];\n\n if (this._columns()) {\n this._columns().forEach((col) => {\n if (col.type === 'text') {\n // Add field to global filter fields\n fields.push(col.field);\n\n // Initialize filter for this column\n filterObj[col.field] = {\n value: null,\n matchMode: FilterMatchMode.CONTAINS,\n };\n } else if (col.type === 'tags') {\n // First extract all posible tags.\n console.log(this.tableData());\n const tags: string[] = [];\n this.tableData().forEach((item) => {\n if (Array.isArray(item[col.field])) {\n tags.push(...item[col.field]);\n } else {\n tags.push(item[col.field]);\n }\n });\n const uniqueTags = Array.from(new Set(tags));\n\n filterObj[col.field] = {\n value: null,\n matchMode: FilterMatchMode.IN,\n options: uniqueTags,\n };\n }\n });\n }\n\n this.filters.set(filterObj);\n this.globalFilterFields.set(fields);\n }\n\n public onFilterLocal(event: any) {\n console.log(event);\n }\n\n public filterOutsideTable(type: 'tags' | 'text', column: string, value: string[]) {\n // Its complicated understand all filter insde the table i can understand if i debugg tableRef.filters but seens is not able to filter array so i build my own outside.\n if (type === 'tags') {\n if (value.length === 0) {\n this._tableData.set(this.tableData());\n return;\n }\n const filteredData = [];\n this.tableData().forEach((item: string[]) => {\n if (Array.isArray(item[column])) {\n const tags: string[] = item[column];\n if (tags.some((tag) => value.includes(tag))) {\n filteredData.push(item);\n }\n }\n });\n console.log(filteredData);\n this._tableData.set(filteredData);\n }\n }\n}\n","<p-table\n [tableStyle]=\"{ 'min-width': '20rem' }\"\n #tableRef\n [value]=\"_tableData()\"\n [columns]=\"_columns()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [filters]=\"filters()\"\n (onFilter)=\"onFilterLocal($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"flex justify-content-between align-items-center\">\n <h5 class=\"m-0\">Table Data</h5>\n <span class=\"p-input-icon-left\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" (input)=\"onGlobalFilter($event)\" placeholder=\"Search keyword\" />\n </span>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n @for (column of columns; track column) {\n <th [pSortableColumn]=\"column.field\">{{ column.header }} <p-sortIcon [field]=\"column.field\"></p-sortIcon></th>\n }\n </tr>\n <tr>\n @for (column of columns; track column) { @if(column.type === 'tags') {\n <th>\n <p-multiselect\n [options]=\"filters()?.[column.field]?.['options']\"\n placeholder=\"Selecciona\"\n (onChange)=\"filterOutsideTable('tags', column.field, $event.value)\"\n [style]=\"{ minWidth: '14rem' }\"\n [panelStyle]=\"{ minWidth: '16rem' }\">\n <ng-template let-option #item>\n <div class=\"flex items-center gap-2\">\n <span>{{ option }}</span>\n </div>\n </ng-template>\n </p-multiselect>\n </th>\n\n } @else {\n <th>\n <p-columnFilter [type]=\"getFilterType(column)\" [field]=\"column.field\" placeholder=\"Search\" [showMenu]=\"false\"></p-columnFilter>\n </th>\n } }\n </tr>\n </ng-template>\n <!-- @if(tableData()){ -->\n <ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\n <tr>\n @for (column of columns; track column) {\n <td>\n @if(column.type === 'image'){\n <div class=\"image-container\">\n <img src=\"{{ item | getPath: column.field }}\" alt=\"Image\" class=\"image\" />\n </div>\n } @else if(column.type === 'tags') {\n <div class=\"tags-container\">\n @for (tag of item[column.field]; track tag) {\n <p-tag [rounded]=\"true\" [value]=\"tag\"></p-tag>\n }\n </div>\n } @else if(column.type === 'actions') {\n <div style=\"display: flex; gap: 2px\">\n @for (actionBtn of actions; track actionBtn) {\n <p-button (click)=\"selectItem(item, actionBtn)\" [icon]=\"actionBtn.icon\" [severity]=\"actionBtn['severity']\" />\n }\n </div>\n } @else {\n <span>{{ item | getPath: column.field}} </span>\n }\n </td>\n }\n </tr>\n </ng-template>\n <!-- } -->\n</p-table>\n","import { InjectionToken, Provider, Type } from '@angular/core';\nimport { EModelQuality } from './common-enums';\n\nexport const TOAST_ALERTS_TOKEN = new InjectionToken<ToastAlertsAbstractService>('Toast alerts Service');\n\nexport interface ToastData {\n title: string;\n subtitle: string;\n}\n\nexport abstract class ToastAlertsAbstractService {\n abstract success(data: ToastData): void;\n abstract info(data: ToastData): void;\n abstract warn(data: ToastData): void;\n abstract error(data: ToastData): void;\n}\n\nexport function provideToastAlert(serviceImplementation: Type<ToastAlertsAbstractService>): Provider[] {\n return [\n {\n provide: TOAST_ALERTS_TOKEN,\n useExisting: serviceImplementation,\n },\n ];\n}\n\n// @deprecated, moved to ngx-tts\nexport enum AudioSpeed {\n VerySlow = 'verySlow',\n Slow = 'slow',\n Regular = 'regular',\n Fast = 'fast',\n VeryFast = 'veryFast',\n}\n\nexport const AudioSpeedReverse = {\n [AudioSpeed.VerySlow]: 1,\n [AudioSpeed.Slow]: 2,\n [AudioSpeed.Regular]: 3,\n [AudioSpeed.Fast]: 4,\n [AudioSpeed.VeryFast]: 5,\n};\n\nexport class IAIModel {\n provider?: string; // First Priority\n modelName?: string; // if model is set then good, else use default. but model does not work alone. need a provider.\n quality?: EModelQuality; // Second priority if provider is not set, then get default for quality. is provider is set then look for quality defaults in server.\n id?: string; // Not sure if i'm usin this. probably i should change to label.\n}\n\n// Since it not clear if this bellows to chat AI Or user i put here.\nexport class ChatUserSettings {\n realTime: boolean; // For real time conversation chat, no need to press button to send message\n superHearing: boolean; // use whisper to get a better transcription\n repeatRecording: boolean; // depends on superhearing, if true, it will repeat the recording\n // fixGrammar: boolean; // fix grammar\n voice?: string; // first voice, when is not availible one\n // autoTranslate?: boolean; // auto translate\n highlightWords?: boolean; // highlight words\n synthVoice?: boolean; // post request to your own tts service to get audio, need resonse with standard\n model?: IAIModel; // if you want to use a specific model\n speed?: AudioSpeed; // if you want to use a specific speed variable\n speedRate?: number; // temporal for more specific speed.\n userMessageTask: boolean;\n assistantMessageTask: boolean;\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { FiltersConfig } from './filter.models';\nimport { MenuItem } from 'primeng/api';\nimport { PColumn } from '../components/quick-table/quick-table';\nimport { Directive, output, input, Inject, inject } from '@angular/core';\n\nexport interface OnActionEvent {\n action?: string;\n item?: any;\n menuItem?: MenuItem;\n}\n\n/**\n * Abstract base class for implementing pagination functionality.\n * Provides common pagination logic, state management, and navigation handling.\n * Child classes must implement the loadData method and define columns.\n */\n@Directive()\nexport abstract class PaginationBase {\n /**\n * Available actions for items.\n * Must be implemented by child classes.\n */\n readonly actions = input<MenuItem[]>();\n /**\n * Event emitted when an action is performed on an item.\n * Emits an object containing the item and the action that was triggered.\n */\n readonly onAction = output<OnActionEvent>();\n\n /** Current first record index for the paginator */\n public paginatorFirst: number = 0;\n /** Number of rows to display per page */\n public paginatorRows: number = 10;\n /** Total number of records available */\n public totalRecords: number = 0;\n /** Current view mode, either cards or table */\n public viewMode: 'cards' | 'table' = 'table';\n /** Loading state indicator */\n public isLoading: boolean = false;\n /** Available button actions for items */\n public buttonActions: MenuItem[] = [];\n\n /**\n * Columns configuration for the table view.\n * Must be implemented by child classes.\n */\n protected abstract columns: PColumn[];\n\n /**\n * Configuration for filtering, sorting, and pagination.\n * Includes current page, rows per page, sorting criteria, and applied filters.\n */\n public filterConfig: FiltersConfig = { page: 0, rowsPerPage: this.paginatorRows, sort: { _id: -1 }, filters: {} };\n\n protected route = inject(ActivatedRoute);\n protected router = inject(Router);\n /**\n * Creates an instance of PaginationBase.\n * @param route - The ActivatedRoute for accessing route parameters\n * @param router - The Router for navigation\n */\n constructor() {\n this.initializePagination();\n }\n\n /**\n * Initializes pagination based on URL query parameters.\n * Sets the current page from the 'page' query parameter if available.\n * @private\n */\n private initializePagination(): void {\n const page = this.route.snapshot.queryParamMap.get('page');\n if (page) {\n this.filterConfig.page = +page - 1;\n this.paginatorFirst = this.filterConfig.page * this.paginatorRows;\n }\n }\n\n /**\n * Handles pagination events from the paginator component.\n * Updates the filter configuration, loads new data, and updates the URL.\n * @param pageEvent - The page event containing page number and rows per page\n */\n public async onPageChange(pageEvent: any) {\n this.paginatorRows = pageEvent.rows;\n this.filterConfig = {\n ...this.filterConfig,\n page: pageEvent.page,\n rowsPerPage: this.paginatorRows,\n };\n\n await this.loadData();\n this.updatePageParam(pageEvent.page + 1);\n }\n\n /**\n * Updates the 'page' query parameter in the URL.\n * @param newPage - The new page number to set in the URL\n * @private\n */\n private updatePageParam(newPage: number) {\n const queryParams = { page: newPage };\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n queryParamsHandling: 'merge',\n });\n }\n\n // Abstract method that needs to be implemented by child classes\n /**\n * Loads data for the current page configuration.\n * Must be implemented by child classes to fetch data from the appropriate source.\n * @returns A promise that resolves when data loading is complete\n */\n protected abstract loadData(): Promise<void>;\n\n /**\n * Handle actions triggered from the table or card view\n * @param param0 Object containing the item and action that was triggered\n */\n public doAction(actionEvent: OnActionEvent) {\n console.log('actionEvent on pagination', actionEvent);\n this.onAction.emit(actionEvent);\n }\n}\n","export enum EModelQuality {\n FAST = 'fast', // Prioritize speed over intelligence like flash lite\n BALANCED = 'balanced', // Equal balance like flash 2.5\n SMART = 'smart', // Prioritize intelligence over speed like gemini pro 2.5\n SMART_THINKING = 'smart-thinking', // Maximum intelligence, ignore speed enable thinking mode\n}\n\nexport const ModelQualityOptions = [\n { label: 'Fast', value: EModelQuality.FAST },\n { label: 'Balanced', value: EModelQuality.BALANCED },\n { label: 'Smart', value: EModelQuality.SMART },\n { label: 'Smart Thinking', value: EModelQuality.SMART_THINKING },\n];\n","/**\n * Extracts and parses the first JSON object or array found within a string.\n *\n * @param content - The input string that may contain JSON data\n * @returns {any} The parsed JSON data if found and valid, or null if:\n * - No JSON object/array is found in the string\n * - The found JSON is invalid and cannot be parsed\n *\n * @example\n * // Returns {name: \"John\"}\n * extractJsonFromString('Some text {\"name\": \"John\"} more text');\n *\n * // Returns [1, 2, 3]\n * extractJsonFromString('Before [1,2,3] after');\n *\n * // Returns null\n * extractJsonFromString('No JSON here');\n */\nexport function extractJsonFromString(content: string): any {\n console.log(content);\n try {\n // First try to parse the entire string as JSON\n return JSON.parse(content);\n } catch {\n try {\n // If that fails, try to find the first valid JSON object or array in the string\n const matches = content.match(/(\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])/g);\n if (!matches) return null;\n\n // Try each matched potential JSON string until we find a valid one\n for (const match of matches) {\n try {\n return JSON.parse(match);\n } catch {\n continue;\n }\n }\n return null;\n } catch (error) {\n console.error('Error parsing JSON:', error);\n return null;\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\n\nimport { ConfirmComponent } from '../components/confirm/confirm.component';\nimport { firstValueFrom } from 'rxjs';\n\nexport interface ConfirmOptions {\n title?: string;\n message?: string;\n acceptText?: string;\n cancelText?: string;\n warning?: string;\n oneBotton?: boolean;\n piIcon?: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfirmService {\n pdialogService = inject(DialogService);\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\n\n constructor() {}\n\n openConfirm(title: string = '', message: string = '', acceptText: string = 'Aceptar') {\n const dialogRef = this.pdialogService.open(ConfirmComponent, {\n data: {\n message: message,\n title: title,\n acceptText,\n },\n closable: true,\n modal: true,\n });\n\n return dialogRef.onClose;\n }\n\n confirm(options: ConfirmOptions) {\n const dialogRef = this.pdialogService.open(ConfirmComponent, {\n data: {\n message: options.message || '',\n title: options.title || 'Confirmación',\n acceptText: options.acceptText || 'Aceptar',\n cancelText: options.cancelText || 'Cancelar',\n warning: options.warning || null,\n oneBotton: options.oneBotton || false,\n piIcon: options.piIcon || null,\n },\n closable: true,\n modal: true,\n });\n\n return firstValueFrom(dialogRef.onClose);\n }\n}\n","import { Component, OnInit, inject, signal } from '@angular/core';\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { FormsModule } from '@angular/forms';\nimport { MessageModule } from 'primeng/message';\nimport { CommonModule } from '@angular/common';\nimport { TextareaModule } from 'primeng/textarea';\n\n@Component({\n selector: 'dc-prompt',\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n standalone: true,\n imports: [CommonModule, ButtonModule, InputTextModule, FormsModule, MessageModule, TextareaModule],\n})\nexport class PromptComponent implements OnInit {\n ref = inject(DynamicDialogRef);\n config = inject(DynamicDialogConfig);\n\n title = signal<string>('Prompt');\n message = signal<string>('');\n acceptText = signal<string>('Accept');\n cancelText = signal<string>('Cancel');\n inputValue = signal<string>('');\n\n ngOnInit(): void {\n this.title.set(this.config.data?.title || 'Prompt');\n this.message.set(this.config.data?.message || '');\n this.acceptText.set(this.config.data?.acceptText || 'Accept');\n this.cancelText.set(this.config.data?.cancelText || 'Cancel');\n // Set initial value if provided\n this.inputValue.set(this.config.data?.initialValue || '');\n }\n\n accept(): void {\n this.ref.close(this.inputValue());\n }\n\n cancel(): void {\n this.ref.close(null);\n }\n}\n","<div class=\"form-input-card p-4\">\n <p-message severity=\"secondary\"> {{ title() }}</p-message>\n\n <div class=\"my-4\">{{ message() }}</div>\n\n <div class=\"p-field mb-4\">\n <textarea rows=\"5\" cols=\"30\" pTextarea [(ngModel)]=\"inputValue\" class=\"w-full\"></textarea>\n </div>\n\n <div class=\"flex justify-content-end gap-2\">\n <p-button [label]=\"cancelText()\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\n <p-button [label]=\"acceptText()\" (click)=\"accept()\"></p-button>\n </div>\n</div>\n","import { Injectable, inject } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { firstValueFrom } from 'rxjs';\n\nimport { PromptComponent } from '../components/prompt/prompt.component';\n\nexport interface PromptOptions {\n title?: string;\n message?: string;\n acceptText?: string;\n cancelText?: string;\n initialValue?: string; // Add initialValue property\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PromptService {\n private readonly dialogService = inject(DialogService);\n\n /**\n * Opens a prompt dialog.\n * @param options Configuration options for the prompt dialog.\n * @returns A promise that resolves with the input value if accepted, or null if canceled.\n */\n openPrompt(options: PromptOptions): Promise<string | null> {\n const dialogRef = this.dialogService.open(PromptComponent, {\n data: {\n title: options.title || 'Prompt',\n message: options.message || '',\n acceptText: options.acceptText || 'Accept',\n cancelText: options.cancelText || 'Cancel',\n initialValue: options.initialValue || '', // Pass initialValue to component data\n },\n header: options.title || 'Prompt', // Set header for accessibility and title bar\n closable: true,\n modal: true,\n width: '700px', // Optional: Adjust width as needed\n });\n\n // Return the result when the dialog closes\n return firstValueFrom(dialogRef.onClose);\n }\n}\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject, signal, InjectionToken, Optional, Inject } from '@angular/core';\nimport { Observable, throwError, lastValueFrom, tap, map, catchError } from 'rxjs';\n\n/**\n * Interface for HTTP error responses\n */\nexport interface HttpCoreError {\n error_message: string;\n explanation: string;\n status?: number;\n code?: string;\n}\n\n/**\n * Interface for deleted data response\n */\nexport interface DeletedData {\n acknowledged: boolean;\n deletedCount: number;\n}\n\n/**\n * Configuration for HttpCoreService\n */\nexport interface HttpCoreConfig {\n primaryUrl: string;\n secondaryUrl?: string;\n defaultHost?: 'primary' | 'secondary';\n errorHandler?: (error: HttpErrorResponse) => void;\n}\n\n/**\n * Injection token for HttpCoreService configuration\n */\nexport const HTTP_CORE_CONFIG = new InjectionToken<HttpCoreConfig>('HTTP_CORE_CONFIG');\n\n/**\n * Modern HTTP service for Angular applications\n * Provides methods for making HTTP requests with proper error handling and response transformation\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class HttpCoreService {\n private httpClient = inject(HttpClient);\n\n // Use signals for reactive state\n private isLoading = signal<boolean>(false);\n private lastError = signal<HttpCoreError | null>(null);\n\n // Configuration\n private config: HttpCoreConfig;\n\n constructor(@Optional() @Inject(HTTP_CORE_CONFIG) config: HttpCoreConfig | null) {\n if (config && config.primaryUrl) {\n this.config = {\n defaultHost: 'primary',\n ...config,\n };\n } else {\n // Initialize with a placeholder - this will be set properly with setConfig\n this.config = {\n primaryUrl: '',\n defaultHost: 'primary',\n };\n\n if (!config) {\n console.warn('HttpCoreService: No configuration provided. Use setConfig to configure the service.');\n } else if (!config.primaryUrl) {\n console.warn('HttpCoreService: primaryUrl is required in configuration. Use setConfig to set it.');\n }\n }\n }\n\n /**\n * Set the configuration for the service\n * This allows for manual configuration when not using dependency injection\n */\n setConfig(config: HttpCoreConfig): void {\n this.config = {\n ...this.config,\n ...config,\n };\n }\n\n /**\n * Get the loading state as a signal\n */\n public loading() {\n return this.isLoading;\n }\n\n /**\n * Get the last error as a signal\n */\n public error() {\n return this.lastError;\n }\n\n /**\n * Make a POST request to the specified service\n * @param service The service endpoint\n * @param data The data to send\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async post<T = any>(service: string, data: any, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.post<T>(url, dataPlain).pipe(tap(this.checkResponseStatus.bind(this)), catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a POST request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @param data The data to send\n * @returns A promise with the response\n */\n public async postToUrl<T = any>(baseUrl: string, service: string, data: any): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.post<T>(url, dataPlain).pipe(tap(this.checkResponseStatus.bind(this)), catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a PUT request to the specified service\n * @param service The service endpoint\n * @param data The data to send\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async put<T = any>(service: string, data: any, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.put<T>(url, dataPlain).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a PUT request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @param data The data to send\n * @returns A promise with the response\n */\n public async putToUrl<T = any>(baseUrl: string, service: string, data: any): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.put<T>(url, dataPlain).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a GET request to the specified service\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @param skipErrorHandling Whether to skip error handling\n * @returns A promise with the response\n */\n public async get<T = any>(service: string, host = this.config.defaultHost, skipErrorHandling = false): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const response$ = this.httpClient.get<T>(url).pipe(\n catchError((err) => {\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a GET request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @param skipErrorHandling Whether to skip error handling\n * @returns A promise with the response\n */\n public async getFromUrl<T = any>(baseUrl: string, service: string, skipErrorHandling = false): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n\n const response$ = this.httpClient.get<T>(url).pipe(\n catchError((err) => {\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a DELETE request to the specified service\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async delete<T = DeletedData>(service: string, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const response$ = this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a DELETE request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @returns A promise with the response\n */\n public async deleteFromUrl<T = DeletedData>(baseUrl: string, service: string): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n\n const response$ = this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Get an observable for a GET request\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public getObservable<T = any>(service: string, host = this.config.defaultHost): Observable<T> {\n const url = this.getHostUrl(host) + '/' + service;\n\n return this.httpClient.get<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n }\n\n /**\n * Get an observable for a POST request\n * @param service The service endpoint\n * @param data The data to send\n * @param skipErrorHandling Whether to skip error handling\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public postObservable<T = any>(service: string, data: any, skipErrorHandling = false, host = this.config.defaultHost): Observable<T> {\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n\n return this.httpClient.post<T>(url, dataPlain).pipe(\n catchError((err) => {\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n }\n\n /**\n * Get an observable for a DELETE request\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public deleteObservable<T = DeletedData>(service: string, host = this.config.defaultHost): Observable<T> {\n const url = this.getHostUrl(host) + '/' + service;\n\n return this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n }\n\n /**\n * Upload a file to the specified service\n * @param service The service endpoint\n * @param file The file to upload\n * @param metadata Optional metadata to send with the file\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async uploadFile<T = any>(service: string, file: Blob, metadata: any = null, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const formData = new FormData();\n formData.append('file', file);\n\n let headers = {};\n if (metadata) {\n headers = { metadata: JSON.stringify(metadata) };\n }\n\n const response$ = this.httpClient.post<T>(url, formData, { headers });\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Download a file from the specified service\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async downloadFile(service: string, host = this.config.defaultHost) {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const response$ = this.httpClient\n .get(url, {\n responseType: 'blob',\n observe: 'response',\n })\n .pipe(catchError(this.handleBlobError.bind(this)));\n\n const result = await lastValueFrom(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Upload a file to the specified service and get the response as a blob\n * @param service The service endpoint\n * @param data The data to send\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async postFileAndGetBlob(service: string, data: any, host = this.config.defaultHost) {\n this.isLoading.set(true);\n\n try {\n let url = this.getHostUrl(host);\n if (service) {\n url += '/' + service;\n }\n\n const response$ = this.httpClient\n .post(url, data, {\n observe: 'response',\n responseType: 'blob',\n })\n .pipe(catchError(this.handleBlobError.bind(this)));\n\n const result = await lastValueFrom(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Get a file from the specified service as an observable\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public getFileObservable(service: string, host = this.config.defaultHost): Observable<Blob> {\n const url = this.getHostUrl(host) + '/' + service;\n return this.httpClient.get(url, { responseType: 'blob' });\n }\n\n /**\n * Get the URL for the specified host\n * @param host The host to use (primary or secondary)\n * @returns The URL for the specified host\n */\n private getHostUrl(host: 'primary' | 'secondary' = this.config.defaultHost): string {\n return host === 'secondary' && this.config.secondaryUrl ? this.config.secondaryUrl : this.config.primaryUrl;\n }\n\n /**\n * Handle an error from a request\n * @param error The error to handle\n * @returns An observable that throws the error\n */\n private handleRequestError(error: HttpErrorResponse): Observable<never> {\n this.isLoading.set(false);\n\n // Set the last error\n if (error.error && typeof error.error === 'object') {\n this.lastError.set({\n error_message: error.error.error_message || 'An error occurred',\n explanation: error.error.explanation || 'Please try again later',\n status: error.status,\n code: error.error.code,\n });\n } else {\n this.lastError.set({\n error_message: error.message || 'An error occurred',\n explanation: 'Please try again later',\n status: error.status,\n });\n }\n\n // Call the custom error handler if provided\n if (this.config.errorHandler) {\n this.config.errorHandler(error);\n }\n\n return throwError(() => error);\n }\n\n /**\n * Handle an error from a blob request\n * @param error The error to handle\n * @returns An observable that throws the error\n */\n private async handleBlobError(error: HttpErrorResponse): Promise<Observable<never>> {\n // Convert blob error response to JSON if possible\n if (error.error instanceof Blob) {\n try {\n const errorText = await error.error.text();\n (error as any).error = JSON.parse(errorText);\n } catch (e) {\n // If parsing fails, create a generic error\n (error as any).error = {\n error_message: 'Error processing file',\n explanation: 'Unable to process server response',\n };\n }\n }\n\n return this.handleRequestError(error);\n }\n\n /**\n * Check the status of a response\n * @param response The response to check\n */\n private checkResponseStatus(response: any): void {\n // Implement any response status checking logic here\n // For example, check for specific status codes or error messages\n }\n\n /**\n * Convert an object to a plain object\n * @param obj The object to convert\n * @returns A plain object\n */\n private toPlainObject(obj: any): any {\n if (!obj) return obj;\n\n // Handle simple types\n if (typeof obj !== 'object' || obj instanceof Blob || obj instanceof File) {\n return obj;\n }\n\n // Handle arrays\n if (Array.isArray(obj)) {\n return obj.map((item) => this.toPlainObject(item));\n }\n\n // Handle objects\n const result: Record<string, any> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const value = obj[key];\n\n // Skip functions and undefined values\n if (typeof value === 'function' || value === undefined) {\n continue;\n }\n\n result[key] = this.toPlainObject(value);\n }\n }\n\n return result;\n }\n}\n","/*\n * Public API Surface of core-components\n */\n// Components\nexport * from './lib/components/empty-state/empty-state.component';\nexport * from './lib/components/list-filter-bar/dc-list-filter-bar.component';\nexport * from './lib/components/confirm/confirm.component';\nexport * from './lib/components/progress-toast/progress-toast';\nexport * from './lib/components/loading-bar/loading-bar';\nexport * from './lib/components/loading-bar/loading-bar.service';\nexport * from './lib/components/quick-table/quick-table';\n// models and classes\nexport * from './lib/models/classes';\nexport * from './lib/models/pagination.abstract';\nexport * from './lib/models/filter.models';\nexport * from './lib/models/common-enums'; // Added for EModelQuality\nexport * from './lib/utils/utils';\nexport * from './lib/pipes/loadash-get.pipe';\n// services\nexport * from './lib/services/confirm.service';\nexport * from './lib/services/prompt.service';\nexport * from './lib/services/http-core.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3","i5","i4"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { Table } from 'primeng/table';
2
+ import { FilterMetadata } from 'primeng/api';
2
3
  import { OnActionEvent } from '../../models/pagination.abstract';
3
4
  import { MenuItem } from 'primeng/api';
4
5
  import * as i0 from "@angular/core";
5
6
  export interface PColumn {
6
7
  field: string;
7
8
  header: string;
8
- type?: 'text' | 'image' | 'actions';
9
+ type?: 'text' | 'image' | 'tags' | 'actions';
9
10
  }
10
11
  export declare class QuickTableComponent {
11
12
  readonly columns: import("@angular/core").InputSignal<PColumn[]>;
@@ -13,9 +14,12 @@ export declare class QuickTableComponent {
13
14
  actions: MenuItem[];
14
15
  readonly onAction: import("@angular/core").OutputEmitterRef<OnActionEvent>;
15
16
  _columns: import("@angular/core").WritableSignal<PColumn[]>;
16
- filters: import("@angular/core").WritableSignal<Record<string, any>>;
17
+ _tableData: import("@angular/core").WritableSignal<any[]>;
18
+ filters: import("@angular/core").WritableSignal<{
19
+ [s: string]: FilterMetadata | FilterMetadata[];
20
+ }>;
17
21
  globalFilterFields: import("@angular/core").WritableSignal<string[]>;
18
- table: Table;
22
+ tableRef: Table;
19
23
  tableColumns: any[];
20
24
  constructor();
21
25
  private initializeTableColumns;
@@ -23,6 +27,8 @@ export declare class QuickTableComponent {
23
27
  onGlobalFilter(event: Event): void;
24
28
  getFilterType(column: PColumn): string;
25
29
  private initializeFilters;
30
+ onFilterLocal(event: any): void;
31
+ filterOutsideTable(type: 'tags' | 'text', column: string, value: string[]): void;
26
32
  static ɵfac: i0.ɵɵFactoryDeclaration<QuickTableComponent, never>;
27
33
  static ɵcmp: i0.ɵɵComponentDeclaration<QuickTableComponent, "app-quick-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "tableData": { "alias": "tableData"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; }; }, { "onAction": "onAction"; }, never, never, true, never>;
28
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dataclouder/ngx-core",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
4
4
  "description": "Angular core components library for DataClouder applications, only for internal use",
5
5
  "author": {
6
6
  "name": "dataclouder",