@dataclouder/ngx-core 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/dataclouder-ngx-core.mjs +204 -18
- package/fesm2022/dataclouder-ngx-core.mjs.map +1 -1
- package/lib/components/loading-bar/loading-bar.d.ts +8 -0
- package/lib/components/loading-bar/loading-bar.service.d.ts +16 -0
- package/lib/components/progress-toast/progress-toast.d.ts +19 -0
- package/lib/utils/utils.d.ts +18 -0
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
|
@@ -13,11 +13,16 @@ import * as i6 from 'primeng/multiselect';
|
|
|
13
13
|
import { MultiSelectModule } from 'primeng/multiselect';
|
|
14
14
|
import * as i7 from 'primeng/calendar';
|
|
15
15
|
import { CalendarModule } from 'primeng/calendar';
|
|
16
|
-
import * as
|
|
17
|
-
import
|
|
16
|
+
import * as i1$1 from 'primeng/api';
|
|
17
|
+
import { MessageService } from 'primeng/api';
|
|
18
|
+
import * as i3 from 'primeng/message';
|
|
18
19
|
import { MessageModule } from 'primeng/message';
|
|
19
|
-
import * as i1$
|
|
20
|
+
import * as i1$2 from 'primeng/dynamicdialog';
|
|
20
21
|
import { firstValueFrom } from 'rxjs';
|
|
22
|
+
import * as i4$1 from 'primeng/progressbar';
|
|
23
|
+
import { ProgressBarModule, ProgressBar } from 'primeng/progressbar';
|
|
24
|
+
import * as i3$1 from 'primeng/toast';
|
|
25
|
+
import { ToastModule, Toast } from 'primeng/toast';
|
|
21
26
|
|
|
22
27
|
class EmptyStateComponent {
|
|
23
28
|
constructor() {
|
|
@@ -130,7 +135,7 @@ class DCFilterBarComponent {
|
|
|
130
135
|
this.isFilterVisible = false;
|
|
131
136
|
}
|
|
132
137
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: DCFilterBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
133
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.1", type: DCFilterBarComponent, isStandalone: true, selector: "dc-filter-bar", inputs: { isAdmin: "isAdmin", customFilters: "customFilters" }, outputs: { onChangeSort: "onChangeSort", onNew: "onNew", onSearch: "onSearch", onFilterChange: "onFilterChange" }, 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 (isAdmin) {\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 <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\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: CommonModule }, { 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: i2.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 }); }
|
|
138
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.1", type: DCFilterBarComponent, isStandalone: true, selector: "dc-filter-bar", inputs: { isAdmin: "isAdmin", customFilters: "customFilters" }, outputs: { onChangeSort: "onChangeSort", onNew: "onNew", onSearch: "onSearch", onFilterChange: "onFilterChange" }, 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 (isAdmin) {\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 <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\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: CommonModule }, { 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: i2.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: i1$1.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 }); }
|
|
134
139
|
}
|
|
135
140
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: DCFilterBarComponent, decorators: [{
|
|
136
141
|
type: Component,
|
|
@@ -177,13 +182,13 @@ class ConfirmComponent {
|
|
|
177
182
|
confirm() {
|
|
178
183
|
this.ref.close(true);
|
|
179
184
|
}
|
|
180
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ConfirmComponent, deps: [{ token: i1$
|
|
181
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.1", type: ConfirmComponent, isStandalone: true, selector: "app-confirm", inputs: { title: "title", message: "message", warning: "warning", oneBotton: "oneBotton", acceptText: "acceptText", cancelText: "cancelText", piIcon: "piIcon" }, host: { listeners: { "window:keyup.enter": "onEnter($event)", "window:keyup.escape": "onEscapte($event)" } }, ngImport: i0, template: "<div class=\"form-input-card\">\r\n <p-message severity=\"secondary\"> {{ title }}</p-message>\r\n\r\n <div style=\"text-align: center; padding: 1rem\">\r\n <i style=\"font-size: 4rem; color: #ff0040\" class=\"pi {{ piIcon }}\"></i>\r\n </div>\r\n\r\n <div>{{ message }} </div>\r\n\r\n @if (warning) {\r\n <p-message severity=\"warn\">\r\n <i class=\"pi pi-exclamation-triangle\"></i>\r\n {{ warning }}</p-message\r\n >\r\n }\r\n\r\n <br /><br />\r\n\r\n <div>\r\n <div style=\"float: right\">\r\n <p-button *ngIf=\"oneBotton\" label=\"Ok\" (click)=\"confirm()\"></p-button>\r\n </div>\r\n\r\n <div *ngIf=\"!oneBotton\" class=\"options\">\r\n <p-button [label]=\"cancelText\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\r\n <p-button [label]=\"acceptText\" (click)=\"confirm()\" severity=\"danger\"></p-button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".options{display:flex;justify-content:space-between}.subtext{color:#353535;font-size:small}nb-card{min-width:50vw;max-width:88vw;max-height:90vh}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.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: MessageModule }, { kind: "component", type: i3
|
|
185
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ConfirmComponent, deps: [{ token: i1$2.DynamicDialogConfig }, { token: i1$2.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
186
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.1", type: ConfirmComponent, isStandalone: true, selector: "app-confirm", inputs: { title: "title", message: "message", warning: "warning", oneBotton: "oneBotton", acceptText: "acceptText", cancelText: "cancelText", piIcon: "piIcon" }, host: { listeners: { "window:keyup.enter": "onEnter($event)", "window:keyup.escape": "onEscapte($event)" } }, ngImport: i0, template: "<div class=\"form-input-card\">\r\n <p-message severity=\"secondary\"> {{ title }}</p-message>\r\n\r\n <div style=\"text-align: center; padding: 1rem\">\r\n <i style=\"font-size: 4rem; color: #ff0040\" class=\"pi {{ piIcon }}\"></i>\r\n </div>\r\n\r\n <div>{{ message }} </div>\r\n\r\n @if (warning) {\r\n <p-message severity=\"warn\">\r\n <i class=\"pi pi-exclamation-triangle\"></i>\r\n {{ warning }}</p-message\r\n >\r\n }\r\n\r\n <br /><br />\r\n\r\n <div>\r\n <div style=\"float: right\">\r\n <p-button *ngIf=\"oneBotton\" label=\"Ok\" (click)=\"confirm()\"></p-button>\r\n </div>\r\n\r\n <div *ngIf=\"!oneBotton\" class=\"options\">\r\n <p-button [label]=\"cancelText\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\r\n <p-button [label]=\"acceptText\" (click)=\"confirm()\" severity=\"danger\"></p-button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".options{display:flex;justify-content:space-between}.subtext{color:#353535;font-size:small}nb-card{min-width:50vw;max-width:88vw;max-height:90vh}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.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: MessageModule }, { kind: "component", type: i3.Message, selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass", "closable", "icon", "closeIcon", "life", "showTransitionOptions", "hideTransitionOptions", "size", "variant"], outputs: ["onClose"] }] }); }
|
|
182
187
|
}
|
|
183
188
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ConfirmComponent, decorators: [{
|
|
184
189
|
type: Component,
|
|
185
190
|
args: [{ selector: 'app-confirm', standalone: true, imports: [NgIf, ButtonModule, MessageModule], template: "<div class=\"form-input-card\">\r\n <p-message severity=\"secondary\"> {{ title }}</p-message>\r\n\r\n <div style=\"text-align: center; padding: 1rem\">\r\n <i style=\"font-size: 4rem; color: #ff0040\" class=\"pi {{ piIcon }}\"></i>\r\n </div>\r\n\r\n <div>{{ message }} </div>\r\n\r\n @if (warning) {\r\n <p-message severity=\"warn\">\r\n <i class=\"pi pi-exclamation-triangle\"></i>\r\n {{ warning }}</p-message\r\n >\r\n }\r\n\r\n <br /><br />\r\n\r\n <div>\r\n <div style=\"float: right\">\r\n <p-button *ngIf=\"oneBotton\" label=\"Ok\" (click)=\"confirm()\"></p-button>\r\n </div>\r\n\r\n <div *ngIf=\"!oneBotton\" class=\"options\">\r\n <p-button [label]=\"cancelText\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\r\n <p-button [label]=\"acceptText\" (click)=\"confirm()\" severity=\"danger\"></p-button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".options{display:flex;justify-content:space-between}.subtext{color:#353535;font-size:small}nb-card{min-width:50vw;max-width:88vw;max-height:90vh}\n"] }]
|
|
186
|
-
}], ctorParameters: () => [{ type: i1$
|
|
191
|
+
}], ctorParameters: () => [{ type: i1$2.DynamicDialogConfig }, { type: i1$2.DynamicDialogRef }], propDecorators: { title: [{
|
|
187
192
|
type: Input
|
|
188
193
|
}], message: [{
|
|
189
194
|
type: Input
|
|
@@ -294,7 +299,7 @@ class ConfirmService {
|
|
|
294
299
|
});
|
|
295
300
|
return firstValueFrom(dialogRef.onClose);
|
|
296
301
|
}
|
|
297
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ConfirmService, deps: [{ token: i1$
|
|
302
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ConfirmService, deps: [{ token: i1$2.DialogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
298
303
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ConfirmService, providedIn: 'root' }); }
|
|
299
304
|
}
|
|
300
305
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ConfirmService, decorators: [{
|
|
@@ -302,21 +307,202 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImpor
|
|
|
302
307
|
args: [{
|
|
303
308
|
providedIn: 'root',
|
|
304
309
|
}]
|
|
305
|
-
}], ctorParameters: () => [{ type: i1$
|
|
310
|
+
}], ctorParameters: () => [{ type: i1$2.DialogService }] });
|
|
306
311
|
|
|
312
|
+
/**
|
|
313
|
+
* Extracts and parses the first JSON object or array found within a string.
|
|
314
|
+
*
|
|
315
|
+
* @param content - The input string that may contain JSON data
|
|
316
|
+
* @returns {any} The parsed JSON data if found and valid, or null if:
|
|
317
|
+
* - No JSON object/array is found in the string
|
|
318
|
+
* - The found JSON is invalid and cannot be parsed
|
|
319
|
+
*
|
|
320
|
+
* @example
|
|
321
|
+
* // Returns {name: "John"}
|
|
322
|
+
* extractJsonFromString('Some text {"name": "John"} more text');
|
|
323
|
+
*
|
|
324
|
+
* // Returns [1, 2, 3]
|
|
325
|
+
* extractJsonFromString('Before [1,2,3] after');
|
|
326
|
+
*
|
|
327
|
+
* // Returns null
|
|
328
|
+
* extractJsonFromString('No JSON here');
|
|
329
|
+
*/
|
|
307
330
|
function extractJsonFromString(content) {
|
|
308
|
-
|
|
309
|
-
const jsonMatch = content.match(/\{[\s\S]*?\}/); // Match everything between first { and }
|
|
310
|
-
if (!jsonMatch)
|
|
311
|
-
return null;
|
|
331
|
+
console.log(content);
|
|
312
332
|
try {
|
|
313
|
-
|
|
333
|
+
// First try to parse the entire string as JSON
|
|
334
|
+
return JSON.parse(content);
|
|
335
|
+
}
|
|
336
|
+
catch {
|
|
337
|
+
try {
|
|
338
|
+
// If that fails, try to find the first valid JSON object or array in the string
|
|
339
|
+
const matches = content.match(/(\{[\s\S]*\}|\[[\s\S]*\])/g);
|
|
340
|
+
if (!matches)
|
|
341
|
+
return null;
|
|
342
|
+
// Try each matched potential JSON string until we find a valid one
|
|
343
|
+
for (const match of matches) {
|
|
344
|
+
try {
|
|
345
|
+
return JSON.parse(match);
|
|
346
|
+
}
|
|
347
|
+
catch {
|
|
348
|
+
continue;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
catch (error) {
|
|
354
|
+
console.error('Error parsing JSON:', error);
|
|
355
|
+
return null;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
class DCProgressToastComponent {
|
|
361
|
+
constructor(messageService, cdr) {
|
|
362
|
+
this.messageService = messageService;
|
|
363
|
+
this.cdr = cdr;
|
|
364
|
+
this.visible = false;
|
|
365
|
+
this.progress = 0;
|
|
366
|
+
this.processCompleted = new EventEmitter();
|
|
367
|
+
this.processClosed = new EventEmitter();
|
|
368
|
+
}
|
|
369
|
+
ngOnChanges(changes) {
|
|
370
|
+
if (changes['visible'] && changes['visible'].currentValue) {
|
|
371
|
+
this.showConfirm();
|
|
372
|
+
}
|
|
373
|
+
else if (changes['visible'] && !changes['visible'].currentValue) {
|
|
374
|
+
this.onClose();
|
|
375
|
+
}
|
|
376
|
+
// Handle progress changes
|
|
377
|
+
if (changes['progress']) {
|
|
378
|
+
if (this.progress >= 100) {
|
|
379
|
+
this.onComplete();
|
|
380
|
+
}
|
|
381
|
+
this.cdr.markForCheck();
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
ngOnDestroy() {
|
|
385
|
+
this.messageService.clear('confirm');
|
|
386
|
+
}
|
|
387
|
+
showConfirm() {
|
|
388
|
+
if (this.visible) {
|
|
389
|
+
this.messageService.add({ key: 'confirm', sticky: true, severity: 'info', summary: 'Working on it...' });
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
onComplete() {
|
|
393
|
+
this.messageService.clear('confirm');
|
|
394
|
+
this.messageService.add({
|
|
395
|
+
severity: 'success',
|
|
396
|
+
summary: 'Process Completed',
|
|
397
|
+
detail: 'The process has finished successfully!',
|
|
398
|
+
life: 3000,
|
|
399
|
+
});
|
|
400
|
+
this.processCompleted.emit();
|
|
401
|
+
this.visible = false;
|
|
402
|
+
}
|
|
403
|
+
onClose() {
|
|
404
|
+
this.visible = false;
|
|
405
|
+
this.messageService.add({
|
|
406
|
+
severity: 'info',
|
|
407
|
+
summary: 'Process Cancelled',
|
|
408
|
+
detail: 'The process was cancelled by the user',
|
|
409
|
+
life: 3000,
|
|
410
|
+
});
|
|
411
|
+
this.messageService.clear('confirm');
|
|
412
|
+
this.processClosed.emit();
|
|
413
|
+
}
|
|
414
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: DCProgressToastComponent, deps: [{ token: i1$1.MessageService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
415
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.1", type: DCProgressToastComponent, isStandalone: true, selector: "dc-progress-toast", inputs: { visible: "visible", progress: "progress" }, outputs: { processCompleted: "processCompleted", processClosed: "processClosed" }, providers: [MessageService], usesOnChanges: true, ngImport: i0, template: "<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", styles: [""], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.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: CommonModule }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i3$1.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "ngmodule", type: ProgressBarModule }, { kind: "component", type: i4$1.ProgressBar, selector: "p-progressBar, p-progressbar, p-progress-bar", inputs: ["value", "showValue", "styleClass", "valueStyleClass", "style", "unit", "mode", "color"] }] }); }
|
|
416
|
+
}
|
|
417
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: DCProgressToastComponent, decorators: [{
|
|
418
|
+
type: Component,
|
|
419
|
+
args: [{ selector: 'dc-progress-toast', standalone: true, providers: [MessageService], imports: [ButtonModule, CommonModule, ToastModule, ProgressBarModule, Toast, ButtonModule, ProgressBar], template: "<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" }]
|
|
420
|
+
}], ctorParameters: () => [{ type: i1$1.MessageService }, { type: i0.ChangeDetectorRef }], propDecorators: { visible: [{
|
|
421
|
+
type: Input
|
|
422
|
+
}], progress: [{
|
|
423
|
+
type: Input
|
|
424
|
+
}], processCompleted: [{
|
|
425
|
+
type: Output
|
|
426
|
+
}], processClosed: [{
|
|
427
|
+
type: Output
|
|
428
|
+
}] } });
|
|
429
|
+
|
|
430
|
+
class LoadingBarService {
|
|
431
|
+
constructor() {
|
|
432
|
+
this.isShowing = false;
|
|
433
|
+
this.progress = 0;
|
|
434
|
+
this.mode = 'indeterminate';
|
|
435
|
+
this.color = 'primary';
|
|
436
|
+
}
|
|
437
|
+
showProgressBar() {
|
|
438
|
+
this.isShowing = true;
|
|
439
|
+
this.mode = 'determinate';
|
|
440
|
+
this.progress = 0;
|
|
441
|
+
}
|
|
442
|
+
showIndeterminate() {
|
|
443
|
+
this.isShowing = true;
|
|
444
|
+
this.mode = 'indeterminate';
|
|
445
|
+
this.progress = 0;
|
|
314
446
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
447
|
+
showProgressBarWithProgress(progress) {
|
|
448
|
+
this.isShowing = true;
|
|
449
|
+
this.mode = 'determinate';
|
|
450
|
+
this.progress = progress;
|
|
318
451
|
}
|
|
452
|
+
hideProgressBar() {
|
|
453
|
+
this.isShowing = false;
|
|
454
|
+
this.mode = null;
|
|
455
|
+
this.progress = 0;
|
|
456
|
+
this.color = 'primary';
|
|
457
|
+
}
|
|
458
|
+
successAndHide() {
|
|
459
|
+
this.isShowing = true;
|
|
460
|
+
this.mode = 'indeterminate';
|
|
461
|
+
this.progress = 100;
|
|
462
|
+
this.color = '#4BBD97';
|
|
463
|
+
setTimeout(() => {
|
|
464
|
+
this.hideProgressBar();
|
|
465
|
+
}, 1600);
|
|
466
|
+
}
|
|
467
|
+
exampleProgress() {
|
|
468
|
+
this.showProgressBarWithProgress(0);
|
|
469
|
+
setTimeout(() => {
|
|
470
|
+
this.showProgressBarWithProgress(20);
|
|
471
|
+
}, 1000);
|
|
472
|
+
setTimeout(() => {
|
|
473
|
+
this.showProgressBarWithProgress(40);
|
|
474
|
+
}, 2000);
|
|
475
|
+
setTimeout(() => {
|
|
476
|
+
this.showProgressBarWithProgress(60);
|
|
477
|
+
}, 3000);
|
|
478
|
+
setTimeout(() => {
|
|
479
|
+
this.showProgressBarWithProgress(80);
|
|
480
|
+
}, 4000);
|
|
481
|
+
setTimeout(() => {
|
|
482
|
+
this.showProgressBarWithProgress(100);
|
|
483
|
+
}, 5000);
|
|
484
|
+
}
|
|
485
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: LoadingBarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
486
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: LoadingBarService, providedIn: 'root' }); }
|
|
319
487
|
}
|
|
488
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: LoadingBarService, decorators: [{
|
|
489
|
+
type: Injectable,
|
|
490
|
+
args: [{
|
|
491
|
+
providedIn: 'root',
|
|
492
|
+
}]
|
|
493
|
+
}], ctorParameters: () => [] });
|
|
494
|
+
|
|
495
|
+
class LoadingBarComponent {
|
|
496
|
+
constructor(loadingBarService) {
|
|
497
|
+
this.loadingBarService = loadingBarService;
|
|
498
|
+
}
|
|
499
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: LoadingBarComponent, deps: [{ token: LoadingBarService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
500
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.1", type: LoadingBarComponent, isStandalone: true, selector: "dc-loading-bar", providers: [MessageService], ngImport: i0, template: "@if (loadingBarService.isShowing) {\n<p-progressbar [color]=\"loadingBarService.color\" [mode]=\"loadingBarService.mode\" [style]=\"{ height: '4px' }\" [value]=\"loadingBarService.progress\" />\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ToastModule }, { kind: "ngmodule", type: ProgressBarModule }, { kind: "component", type: i4$1.ProgressBar, selector: "p-progressBar, p-progressbar, p-progress-bar", inputs: ["value", "showValue", "styleClass", "valueStyleClass", "style", "unit", "mode", "color"] }] }); }
|
|
501
|
+
}
|
|
502
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: LoadingBarComponent, decorators: [{
|
|
503
|
+
type: Component,
|
|
504
|
+
args: [{ selector: 'dc-loading-bar', standalone: true, providers: [MessageService], imports: [ButtonModule, CommonModule, ToastModule, ProgressBarModule, ButtonModule, ProgressBar], template: "@if (loadingBarService.isShowing) {\n<p-progressbar [color]=\"loadingBarService.color\" [mode]=\"loadingBarService.mode\" [style]=\"{ height: '4px' }\" [value]=\"loadingBarService.progress\" />\n}\n" }]
|
|
505
|
+
}], ctorParameters: () => [{ type: LoadingBarService }] });
|
|
320
506
|
|
|
321
507
|
/*
|
|
322
508
|
* Public API Surface of core-components
|
|
@@ -326,5 +512,5 @@ function extractJsonFromString(content) {
|
|
|
326
512
|
* Generated bundle index. Do not edit.
|
|
327
513
|
*/
|
|
328
514
|
|
|
329
|
-
export { AudioSpeed, ConfirmComponent, ConfirmService, DCFilterBarComponent, EmptyStateComponent, OptionValue, PaginationBase, TOAST_ALERTS_TOKEN, ToastAlertsAbstractService, availibleFilters, extractJsonFromString, provideToastAlert, sortOptions, sortTypes };
|
|
515
|
+
export { AudioSpeed, ConfirmComponent, ConfirmService, DCFilterBarComponent, DCProgressToastComponent, EmptyStateComponent, LoadingBarComponent, LoadingBarService, OptionValue, PaginationBase, TOAST_ALERTS_TOKEN, ToastAlertsAbstractService, availibleFilters, extractJsonFromString, provideToastAlert, sortOptions, sortTypes };
|
|
330
516
|
//# sourceMappingURL=dataclouder-ngx-core.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataclouder-ngx-core.mjs","sources":["../../../../projects/dataclouder/core-components/src/lib/components/empty-state/empty-state.component.ts","../../../../projects/dataclouder/core-components/src/lib/components/empty-state/empty-state.component.html","../../../../projects/dataclouder/core-components/src/lib/models/filter.models.ts","../../../../projects/dataclouder/core-components/src/lib/components/list-filter-bar/dc-list-filter-bar.component.ts","../../../../projects/dataclouder/core-components/src/lib/components/list-filter-bar/dc-list-filter-bar.component.html","../../../../projects/dataclouder/core-components/src/lib/components/confirm/confirm.component.ts","../../../../projects/dataclouder/core-components/src/lib/components/confirm/confirm.component.html","../../../../projects/dataclouder/core-components/src/lib/models/classes.ts","../../../../projects/dataclouder/core-components/src/lib/models/pagination.abstract.ts","../../../../projects/dataclouder/core-components/src/lib/services/confirm.service.ts","../../../../projects/dataclouder/core-components/src/lib/utils/utils.ts","../../../../projects/dataclouder/core-components/src/public-api.ts","../../../../projects/dataclouder/core-components/src/dataclouder-ngx-core.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\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: [NgIf],\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 @Input()\n public mainIconSrcString = 'assets/img/empty-states/empty-box.png';\n}\n","<div class=\"grid justify-content-center\">\r\n <div class=\"empty-state-content\">\r\n <h5 class=\"text-center\" *ngIf=\"headingText\">{{ headingText }}</h5>\r\n <img width=\"180px\" class=\"image-empty-state\" src=\"{{ mainIconSrcString }}\" />\r\n <h6 *ngIf=\"subHeadingText\">{{ subHeadingText }}</h6>\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\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","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } 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 } from '../../models/filter.models';\n\nconst DEFAULT_FILTERS: FiltersConfig = { filters: {}, page: 0, rowsPerPage: 10, sort: { _id: -1 } };\n\n@Component({\n selector: 'dc-filter-bar',\n standalone: true,\n imports: [CommonModule, 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 @Input() public isAdmin: any = true; // TODO: create a solution for is admin\n @Input() public customFilters: ICustomFilter[] = [];\n @Output() public onChangeSort: any = new EventEmitter();\n @Output() public onNew: any = new EventEmitter();\n @Output() public onSearch: any = new EventEmitter();\n @Output() public onFilterChange = new EventEmitter<FiltersConfig>();\n\n public customFilterModels = [];\n constructor() {}\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 // this.router.navigate(['edit/'], { relativeTo: this.route });\n console.log('createNew from core components');\n this.onNew.emit();\n }\n\n public search(text: string = null): void {\n if (!text) {\n this.placeholder = '';\n this.clearFilters();\n } else {\n this.onSearch.emit(text);\n }\n this.isSearchVisible = false;\n }\n\n clearFilters() {\n this.filter = { ...DEFAULT_FILTERS };\n this.onFilterChange.emit(this.filter);\n }\n\n applyFilters() {\n this.onFilterChange.emit(this.filter);\n this.isFilterVisible = false;\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 (isAdmin) {\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 <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\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","import { NgIf } from '@angular/common';\r\nimport { Component, OnInit, Input, HostListener } 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: [NgIf, ButtonModule, MessageModule],\r\n})\r\nexport class ConfirmComponent implements OnInit {\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 }\r\n\r\n constructor(private dynamicDialogConfig: DynamicDialogConfig, public ref: DynamicDialogRef) {\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\">\r\n <p-message severity=\"secondary\"> {{ title }}</p-message>\r\n\r\n <div style=\"text-align: center; padding: 1rem\">\r\n <i style=\"font-size: 4rem; color: #ff0040\" class=\"pi {{ piIcon }}\"></i>\r\n </div>\r\n\r\n <div>{{ message }} </div>\r\n\r\n @if (warning) {\r\n <p-message severity=\"warn\">\r\n <i class=\"pi pi-exclamation-triangle\"></i>\r\n {{ warning }}</p-message\r\n >\r\n }\r\n\r\n <br /><br />\r\n\r\n <div>\r\n <div style=\"float: right\">\r\n <p-button *ngIf=\"oneBotton\" label=\"Ok\" (click)=\"confirm()\"></p-button>\r\n </div>\r\n\r\n <div *ngIf=\"!oneBotton\" class=\"options\">\r\n <p-button [label]=\"cancelText\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\r\n <p-button [label]=\"acceptText\" (click)=\"confirm()\" severity=\"danger\"></p-button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\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\nexport enum AudioSpeed {\n VerySlow = 'verySlow',\n Slow = 'slow',\n Regular = 'regular',\n Fast = 'fast',\n VeryFast = 'veryFast',\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { FiltersConfig } from './filter.models';\n\nexport abstract class PaginationBase {\n public paginatorFirst: number = 0;\n public paginatorRows: number = 10;\n public totalRecords: number = 0;\n\n public filterConfig: FiltersConfig = { page: 0, rowsPerPage: this.paginatorRows, sort: { _id: -1 }, filters: {} };\n\n constructor(protected route: ActivatedRoute, protected router: Router) {\n this.initializePagination();\n }\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 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 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 protected abstract loadData(): Promise<void>;\n}\n","import { Injectable } 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 constructor(public pdialogService: DialogService) {}\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","export function extractJsonFromString(content: string): any {\n // lets say you have string in md, from AI model response, then this method can help extracting json.\n const jsonMatch = content.match(/\\{[\\s\\S]*?\\}/); // Match everything between first { and }\n if (!jsonMatch) return null;\n\n try {\n return JSON.parse(jsonMatch[0]);\n } catch (error) {\n console.error('Error parsing JSON:', error);\n return null;\n }\n}\n","/*\n * Public API Surface of core-components\n */\n\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/models/classes';\nexport * from './lib/models/pagination.abstract';\nexport * from './lib/models/filter.models';\nexport * from './lib/services/confirm.service';\nexport * from './lib/utils/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3"],"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/models/classes.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/pagination.abstract.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/confirm.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/utils/utils.ts","../../../../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/public-api.ts","../../../../projects/dataclouder/ngx-core/src/dataclouder-ngx-core.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\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: [NgIf],\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 @Input()\n public mainIconSrcString = 'assets/img/empty-states/empty-box.png';\n}\n","<div class=\"grid justify-content-center\">\r\n <div class=\"empty-state-content\">\r\n <h5 class=\"text-center\" *ngIf=\"headingText\">{{ headingText }}</h5>\r\n <img width=\"180px\" class=\"image-empty-state\" src=\"{{ mainIconSrcString }}\" />\r\n <h6 *ngIf=\"subHeadingText\">{{ subHeadingText }}</h6>\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\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","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } 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 } from '../../models/filter.models';\n\nconst DEFAULT_FILTERS: FiltersConfig = { filters: {}, page: 0, rowsPerPage: 10, sort: { _id: -1 } };\n\n@Component({\n selector: 'dc-filter-bar',\n standalone: true,\n imports: [CommonModule, 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 @Input() public isAdmin: any = true; // TODO: create a solution for is admin\n @Input() public customFilters: ICustomFilter[] = [];\n @Output() public onChangeSort: any = new EventEmitter();\n @Output() public onNew: any = new EventEmitter();\n @Output() public onSearch: any = new EventEmitter();\n @Output() public onFilterChange = new EventEmitter<FiltersConfig>();\n\n public customFilterModels = [];\n constructor() {}\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 // this.router.navigate(['edit/'], { relativeTo: this.route });\n console.log('createNew from core components');\n this.onNew.emit();\n }\n\n public search(text: string = null): void {\n if (!text) {\n this.placeholder = '';\n this.clearFilters();\n } else {\n this.onSearch.emit(text);\n }\n this.isSearchVisible = false;\n }\n\n clearFilters() {\n this.filter = { ...DEFAULT_FILTERS };\n this.onFilterChange.emit(this.filter);\n }\n\n applyFilters() {\n this.onFilterChange.emit(this.filter);\n this.isFilterVisible = false;\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 (isAdmin) {\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 <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\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","import { NgIf } from '@angular/common';\r\nimport { Component, OnInit, Input, HostListener } 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: [NgIf, ButtonModule, MessageModule],\r\n})\r\nexport class ConfirmComponent implements OnInit {\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 }\r\n\r\n constructor(private dynamicDialogConfig: DynamicDialogConfig, public ref: DynamicDialogRef) {\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\">\r\n <p-message severity=\"secondary\"> {{ title }}</p-message>\r\n\r\n <div style=\"text-align: center; padding: 1rem\">\r\n <i style=\"font-size: 4rem; color: #ff0040\" class=\"pi {{ piIcon }}\"></i>\r\n </div>\r\n\r\n <div>{{ message }} </div>\r\n\r\n @if (warning) {\r\n <p-message severity=\"warn\">\r\n <i class=\"pi pi-exclamation-triangle\"></i>\r\n {{ warning }}</p-message\r\n >\r\n }\r\n\r\n <br /><br />\r\n\r\n <div>\r\n <div style=\"float: right\">\r\n <p-button *ngIf=\"oneBotton\" label=\"Ok\" (click)=\"confirm()\"></p-button>\r\n </div>\r\n\r\n <div *ngIf=\"!oneBotton\" class=\"options\">\r\n <p-button [label]=\"cancelText\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\r\n <p-button [label]=\"acceptText\" (click)=\"confirm()\" severity=\"danger\"></p-button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\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\nexport enum AudioSpeed {\n VerySlow = 'verySlow',\n Slow = 'slow',\n Regular = 'regular',\n Fast = 'fast',\n VeryFast = 'veryFast',\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { FiltersConfig } from './filter.models';\n\nexport abstract class PaginationBase {\n public paginatorFirst: number = 0;\n public paginatorRows: number = 10;\n public totalRecords: number = 0;\n\n public filterConfig: FiltersConfig = { page: 0, rowsPerPage: this.paginatorRows, sort: { _id: -1 }, filters: {} };\n\n constructor(protected route: ActivatedRoute, protected router: Router) {\n this.initializePagination();\n }\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 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 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 protected abstract loadData(): Promise<void>;\n}\n","import { Injectable } 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 constructor(public pdialogService: DialogService) {}\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","/**\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 { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } 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, CommonModule, ToastModule, ProgressBarModule, Toast, ButtonModule, ProgressBar],\n})\nexport class DCProgressToastComponent implements OnChanges, OnDestroy {\n @Input()\n visible: boolean = false;\n\n @Input()\n progress: number = 0;\n\n @Output()\n processCompleted = new EventEmitter<void>();\n\n @Output()\n processClosed = new EventEmitter<void>();\n\n constructor(private messageService: MessageService, private cdr: ChangeDetectorRef) {}\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@Injectable({\n providedIn: 'root',\n})\nexport class LoadingBarService {\n public isShowing: boolean = false;\n public progress: number = 0;\n public mode: 'indeterminate' | 'determinate' = 'indeterminate';\n public color: string = 'primary';\n constructor() {}\n\n public showProgressBar() {\n this.isShowing = true;\n this.mode = 'determinate';\n this.progress = 0;\n }\n\n public showIndeterminate() {\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 0;\n }\n\n public showProgressBarWithProgress(progress: number) {\n this.isShowing = true;\n this.mode = 'determinate';\n this.progress = progress;\n }\n\n public hideProgressBar() {\n this.isShowing = false;\n this.mode = null;\n this.progress = 0;\n this.color = 'primary';\n }\n\n public successAndHide() {\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 100;\n this.color = '#4BBD97';\n setTimeout(() => {\n this.hideProgressBar();\n }, 1600);\n }\n\n public exampleProgress() {\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","import { CommonModule } from '@angular/common';\nimport { Component } 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, CommonModule, ToastModule, ProgressBarModule, ButtonModule, ProgressBar],\n})\nexport class LoadingBarComponent {\n constructor(public loadingBarService: LoadingBarService) {}\n}\n","@if (loadingBarService.isShowing) {\n<p-progressbar [color]=\"loadingBarService.color\" [mode]=\"loadingBarService.mode\" [style]=\"{ height: '4px' }\" [value]=\"loadingBarService.progress\" />\n}\n","/*\n * Public API Surface of core-components\n */\n\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/models/classes';\nexport * from './lib/models/pagination.abstract';\nexport * from './lib/models/filter.models';\nexport * from './lib/services/confirm.service';\nexport * from './lib/utils/utils';\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';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i1","i4","i1.LoadingBarService","i2"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LoadingBarService } from './loading-bar.service';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class LoadingBarComponent {
|
|
4
|
+
loadingBarService: LoadingBarService;
|
|
5
|
+
constructor(loadingBarService: LoadingBarService);
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LoadingBarComponent, never>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LoadingBarComponent, "dc-loading-bar", never, {}, {}, never, never, true, never>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class LoadingBarService {
|
|
3
|
+
isShowing: boolean;
|
|
4
|
+
progress: number;
|
|
5
|
+
mode: 'indeterminate' | 'determinate';
|
|
6
|
+
color: string;
|
|
7
|
+
constructor();
|
|
8
|
+
showProgressBar(): void;
|
|
9
|
+
showIndeterminate(): void;
|
|
10
|
+
showProgressBarWithProgress(progress: number): void;
|
|
11
|
+
hideProgressBar(): void;
|
|
12
|
+
successAndHide(): void;
|
|
13
|
+
exampleProgress(): void;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LoadingBarService, never>;
|
|
15
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<LoadingBarService>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { MessageService } from 'primeng/api';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class DCProgressToastComponent implements OnChanges, OnDestroy {
|
|
5
|
+
private messageService;
|
|
6
|
+
private cdr;
|
|
7
|
+
visible: boolean;
|
|
8
|
+
progress: number;
|
|
9
|
+
processCompleted: EventEmitter<void>;
|
|
10
|
+
processClosed: EventEmitter<void>;
|
|
11
|
+
constructor(messageService: MessageService, cdr: ChangeDetectorRef);
|
|
12
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
13
|
+
ngOnDestroy(): void;
|
|
14
|
+
private showConfirm;
|
|
15
|
+
private onComplete;
|
|
16
|
+
onClose(): void;
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DCProgressToastComponent, never>;
|
|
18
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DCProgressToastComponent, "dc-progress-toast", never, { "visible": { "alias": "visible"; "required": false; }; "progress": { "alias": "progress"; "required": false; }; }, { "processCompleted": "processCompleted"; "processClosed": "processClosed"; }, never, never, true, never>;
|
|
19
|
+
}
|
package/lib/utils/utils.d.ts
CHANGED
|
@@ -1 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts and parses the first JSON object or array found within a string.
|
|
3
|
+
*
|
|
4
|
+
* @param content - The input string that may contain JSON data
|
|
5
|
+
* @returns {any} The parsed JSON data if found and valid, or null if:
|
|
6
|
+
* - No JSON object/array is found in the string
|
|
7
|
+
* - The found JSON is invalid and cannot be parsed
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* // Returns {name: "John"}
|
|
11
|
+
* extractJsonFromString('Some text {"name": "John"} more text');
|
|
12
|
+
*
|
|
13
|
+
* // Returns [1, 2, 3]
|
|
14
|
+
* extractJsonFromString('Before [1,2,3] after');
|
|
15
|
+
*
|
|
16
|
+
* // Returns null
|
|
17
|
+
* extractJsonFromString('No JSON here');
|
|
18
|
+
*/
|
|
1
19
|
export declare function extractJsonFromString(content: string): any;
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -6,3 +6,6 @@ export * from './lib/models/pagination.abstract';
|
|
|
6
6
|
export * from './lib/models/filter.models';
|
|
7
7
|
export * from './lib/services/confirm.service';
|
|
8
8
|
export * from './lib/utils/utils';
|
|
9
|
+
export * from './lib/components/progress-toast/progress-toast';
|
|
10
|
+
export * from './lib/components/loading-bar/loading-bar';
|
|
11
|
+
export * from './lib/components/loading-bar/loading-bar.service';
|