spiderly 19.3.1 → 19.4.0-preview.1
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/README.md +17 -17
- package/fesm2022/spiderly.mjs +765 -1066
- package/fesm2022/spiderly.mjs.map +1 -1
- package/lib/components/auth/login/login.component.d.ts +3 -3
- package/lib/components/auth/partials/auth.component.d.ts +3 -4
- package/lib/components/auth/partials/login-verification.component.d.ts +2 -2
- package/lib/components/footer/footer.component.d.ts +2 -2
- package/lib/components/layout/layout.component.d.ts +3 -3
- package/lib/components/layout/profile-avatar/profile-avatar.component.d.ts +6 -6
- package/lib/components/layout/sidebar/menuitem.component.d.ts +5 -5
- package/lib/components/layout/sidebar/sidebar-menu.component.d.ts +5 -5
- package/lib/components/layout/sidemenu-topbar/sidemenu-topbar.component.d.ts +4 -4
- package/lib/components/layout/topbar/topbar.component.d.ts +3 -3
- package/lib/components/not-found/not-found.component.d.ts +2 -2
- package/lib/entities/security-entities.d.ts +6 -184
- package/lib/guards/auth.guard.d.ts +3 -3
- package/lib/guards/not-auth.guard.d.ts +2 -2
- package/lib/handlers/spiderly-error-handler.d.ts +2 -2
- package/lib/services/api.service.security.d.ts +5 -18
- package/lib/services/app-initializer.d.ts +2 -2
- package/lib/services/{app-layout-base.service.d.ts → app-layout.service.base.d.ts} +8 -8
- package/lib/services/{auth-base.service.d.ts → auth.service.base.d.ts} +6 -6
- package/lib/services/{config-base.service.d.ts → config.service.base.d.ts} +3 -4
- package/lib/services/spiderly-transloco-loader.d.ts +2 -2
- package/package.json +1 -1
- package/public-api.d.ts +3 -4
- package/styles/components/info-card/info-card.component.scss +60 -60
- package/styles/components/layout/profile-avatar/profile-avatar.component.scss +8 -8
- package/styles/components/layout/topbar/topbar.component.scss +38 -38
- package/styles/components/spiderly-data-table/spiderly-data-table.component.scss +48 -48
- package/styles/components/spiderly-data-view/spiderly-data-view.component.scss +55 -55
- package/styles/components/spiderly-panels/panel-body/panel-body.component.scss +8 -8
- package/styles/components/spiderly-panels/panel-footer/panel-footer.component.scss +16 -16
- package/styles/components/spiderly-panels/spiderly-panel/spiderly-panel.component.scss +87 -87
- package/styles/controls/base-controls.scss +16 -16
- package/styles/controls/spiderly-checkbox/spiderly-checkbox.component.scss +22 -22
- package/styles/styles/layout/_content.scss +14 -14
- package/styles/styles/layout/_footer.scss +11 -11
- package/styles/styles/layout/_main.scss +34 -34
- package/styles/styles/layout/_menu.scss +137 -137
- package/styles/styles/layout/_mixins.scss +13 -13
- package/styles/styles/layout/_preloading.scss +47 -47
- package/styles/styles/layout/_responsive.scss +102 -102
- package/styles/styles/layout/_spiderly-controls.scss +14 -14
- package/styles/styles/layout/_topbar.scss +235 -235
- package/styles/styles/layout/_typography.scss +63 -63
- package/styles/styles/layout/_utils.scss +19 -19
- package/styles/styles/layout/_variables.scss +908 -908
- package/styles/styles/layout/layout.scss +11 -11
- package/styles/styles/shared.scss +483 -483
- package/styles/styles/styles.scss +2 -2
- package/lib/components/base-details/role-base-details.component.d.ts +0 -43
package/fesm2022/spiderly.mjs
CHANGED
|
@@ -30,7 +30,7 @@ import * as i1$1 from 'primeng/button';
|
|
|
30
30
|
import { ButtonModule } from 'primeng/button';
|
|
31
31
|
import * as i1$5 from 'primeng/splitbutton';
|
|
32
32
|
import { SplitButtonModule } from 'primeng/splitbutton';
|
|
33
|
-
import { Subject, throttleTime, map, BehaviorSubject, of, firstValueFrom,
|
|
33
|
+
import { Subject, throttleTime, map, BehaviorSubject, of, firstValueFrom, delay as delay$1, withLatestFrom, combineLatest, filter as filter$1, finalize as finalize$1, tap as tap$1 } from 'rxjs';
|
|
34
34
|
import * as i3$2 from '@angular/router';
|
|
35
35
|
import { RouterModule, NavigationEnd } from '@angular/router';
|
|
36
36
|
import * as FileSaver from 'file-saver';
|
|
@@ -45,14 +45,14 @@ import * as i4$7 from 'primeng/password';
|
|
|
45
45
|
import { PasswordModule } from 'primeng/password';
|
|
46
46
|
import * as i4$8 from 'primeng/textarea';
|
|
47
47
|
import { TextareaModule } from 'primeng/textarea';
|
|
48
|
-
import * as i1$3 from '
|
|
48
|
+
import * as i1$3 from '@angular/common/http';
|
|
49
|
+
import { HttpParams, HttpHeaders, HttpErrorResponse, HttpResponse } from '@angular/common/http';
|
|
50
|
+
import * as i1$4 from 'primeng/skeleton';
|
|
49
51
|
import { SkeletonModule } from 'primeng/skeleton';
|
|
50
52
|
import * as i2$1 from 'primeng/menu';
|
|
51
53
|
import { MenuModule } from 'primeng/menu';
|
|
52
54
|
import * as i4$9 from 'primeng/panel';
|
|
53
55
|
import { PanelModule } from 'primeng/panel';
|
|
54
|
-
import * as i1$4 from '@angular/common/http';
|
|
55
|
-
import { HttpParams, HttpHeaders, HttpErrorResponse, HttpResponse } from '@angular/common/http';
|
|
56
56
|
import { map as map$1, finalize, delay, tap, filter, catchError } from 'rxjs/operators';
|
|
57
57
|
import * as i3$4 from '@abacritt/angularx-social-login';
|
|
58
58
|
import * as i9 from 'primeng/table';
|
|
@@ -352,7 +352,7 @@ class SpiderlyAutocompleteComponent extends BaseAutocompleteControl {
|
|
|
352
352
|
this.helperFormControl.markAsDirty();
|
|
353
353
|
}
|
|
354
354
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyAutocompleteComponent, deps: [{ token: i1.TranslocoService }, { token: ValidatorAbstractService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
355
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyAutocompleteComponent, isStandalone: true, selector: "spiderly-autocomplete", inputs: { appendTo: "appendTo", showClear: "showClear", emptyMessage: "emptyMessage", displayName: "displayName" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\
|
|
355
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyAutocompleteComponent, isStandalone: true, selector: "spiderly-autocomplete", inputs: { appendTo: "appendTo", showClear: "showClear", emptyMessage: "emptyMessage", displayName: "displayName" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\"> <!-- By passing an empty string we remove the label entirely -->\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n \n <!-- Don't support p-inputgroup -->\n <p-autocomplete\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [id]=\"label\"\n [formControl]=\"helperFormControl\"\n [placeholder]=\"placeholder\"\n [suggestions]=\"options\"\n (completeMethod)=\"search($event)\"\n [forceSelection]=\"true\"\n [dropdown]=\"false\"\n [showClear]=\"showClear\"\n (onHide)=\"autocompleteMarkAsDirty()\"\n (onSelect)=\"select($event)\"\n (onClear)=\"clear()\"\n [completeOnFocus]=\"true\"\n [fluid]=\"true\"\n [style]=\"{'width':'100%'}\"\n [appendTo]=\"appendTo\"\n [emptyMessage]=\"emptyMessage\"\n [lazy]=\"true\"\n optionLabel=\"displayName\"\n ></p-autocomplete>\n </div>\n</ng-container>", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i4.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "variant", "fluid"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "ngmodule", type: InputGroupAddonModule }, { kind: "ngmodule", type: InputGroupModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RequiredComponent, selector: "required" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
356
356
|
}
|
|
357
357
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyAutocompleteComponent, decorators: [{
|
|
358
358
|
type: Component,
|
|
@@ -366,7 +366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
366
366
|
CommonModule,
|
|
367
367
|
RequiredComponent,
|
|
368
368
|
TranslocoDirective,
|
|
369
|
-
], template: "<ng-container *transloco=\"let t\">\
|
|
369
|
+
], template: "<ng-container *transloco=\"let t\">\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\"> <!-- By passing an empty string we remove the label entirely -->\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n \n <!-- Don't support p-inputgroup -->\n <p-autocomplete\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [id]=\"label\"\n [formControl]=\"helperFormControl\"\n [placeholder]=\"placeholder\"\n [suggestions]=\"options\"\n (completeMethod)=\"search($event)\"\n [forceSelection]=\"true\"\n [dropdown]=\"false\"\n [showClear]=\"showClear\"\n (onHide)=\"autocompleteMarkAsDirty()\"\n (onSelect)=\"select($event)\"\n (onClear)=\"clear()\"\n [completeOnFocus]=\"true\"\n [fluid]=\"true\"\n [style]=\"{'width':'100%'}\"\n [appendTo]=\"appendTo\"\n [emptyMessage]=\"emptyMessage\"\n [lazy]=\"true\"\n optionLabel=\"displayName\"\n ></p-autocomplete>\n </div>\n</ng-container>" }]
|
|
370
370
|
}], ctorParameters: () => [{ type: i1.TranslocoService }, { type: ValidatorAbstractService }], propDecorators: { appendTo: [{
|
|
371
371
|
type: Input
|
|
372
372
|
}], showClear: [{
|
|
@@ -389,7 +389,7 @@ class SpiderlyCalendarComponent extends BaseControl {
|
|
|
389
389
|
setDate(event) {
|
|
390
390
|
}
|
|
391
391
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyCalendarComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
392
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyCalendarComponent, isStandalone: true, selector: "spiderly-calendar", inputs: { showTime: "showTime" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\
|
|
392
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyCalendarComponent, isStandalone: true, selector: "spiderly-calendar", inputs: { showTime: "showTime" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\" style=\"display: flex; align-items: center;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 8px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\n </div>\n <p-datepicker\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [formControl]=\"control\"\n (onBlur)=\"control.markAsDirty()\"\n dateFormat=\"dd.mm.yy.\"\n iconDisplay=\"input\" \n [showIcon]=\"true\" \n [showTime]=\"showTime\"\n (onSelect)=\"setDate($event)\"\n appendTo=\"body\"\n [fluid]=\"true\"\n />\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i4$1.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", 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", "size", "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"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
|
|
393
393
|
}
|
|
394
394
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyCalendarComponent, decorators: [{
|
|
395
395
|
type: Component,
|
|
@@ -400,7 +400,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
400
400
|
DatePickerModule,
|
|
401
401
|
TooltipModule,
|
|
402
402
|
RequiredComponent
|
|
403
|
-
], template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\
|
|
403
|
+
], template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\" style=\"display: flex; align-items: center;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 8px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\n </div>\n <p-datepicker\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [formControl]=\"control\"\n (onBlur)=\"control.markAsDirty()\"\n dateFormat=\"dd.mm.yy.\"\n iconDisplay=\"input\" \n [showIcon]=\"true\" \n [showTime]=\"showTime\"\n (onSelect)=\"setDate($event)\"\n appendTo=\"body\"\n [fluid]=\"true\"\n />\n</div>\n" }]
|
|
404
404
|
}], ctorParameters: () => [{ type: i1.TranslocoService }], propDecorators: { showTime: [{
|
|
405
405
|
type: Input
|
|
406
406
|
}] } });
|
|
@@ -423,7 +423,7 @@ class SpiderlyCheckboxComponent extends BaseControl {
|
|
|
423
423
|
super.ngOnInit();
|
|
424
424
|
}
|
|
425
425
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyCheckboxComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
426
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyCheckboxComponent, isStandalone: true, selector: "spiderly-checkbox", inputs: { fakeLabel: "fakeLabel", initializeToFalse: "initializeToFalse", inlineLabel: "inlineLabel" }, outputs: { onChange: "onChange" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\
|
|
426
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyCheckboxComponent, isStandalone: true, selector: "spiderly-checkbox", inputs: { fakeLabel: "fakeLabel", initializeToFalse: "initializeToFalse", inlineLabel: "inlineLabel" }, outputs: { onChange: "onChange" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"inlineLabel === false && getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <div style=\"margin-top: 0.5rem; position: relative;\"> <!-- The margin-top is intentional: it vertically aligns the checkbox with other input controls that have greater height. -->\n <p-checkbox\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \n [formControl]=\"control\"\n [value]=\"inlineLabel ? label : null\"\n [id]=\"label\"\n [binary]=\"true\"\n (onChange)=\"change($event)\"\n />\n </div>\n</div>", styles: ["::ng-deep .p-checkbox-false .p-checkbox-box{border-color:var(--p-checkbox-checked-border-color);background:var(--p-checkbox-checked-background)}::ng-deep .p-checkbox-false .p-checkbox:not(.p-disabled):has(.p-checkbox-input:hover) .p-checkbox-box{border-color:var(--p-checkbox-checked-hover-border-color);background:var(--p-checkbox-checked-hover-background)}::ng-deep .p-checkbox-false .p-checkbox-false:has(.p-checkbox.p-disabled) .p-checkbox-false-icon{color:var(--p-checkbox-icon-disabled-color)}.p-checkbox-false-icon{position:absolute;top:3px;left:2.7px;font-size:12.25px;color:var(--p-checkbox-icon-checked-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i4$2.Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["value", "name", "disabled", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "inputStyle", "styleClass", "inputClass", "indeterminate", "size", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
|
|
427
427
|
}
|
|
428
428
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyCheckboxComponent, decorators: [{
|
|
429
429
|
type: Component,
|
|
@@ -434,7 +434,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
434
434
|
CheckboxModule,
|
|
435
435
|
TooltipModule,
|
|
436
436
|
RequiredComponent
|
|
437
|
-
], template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\
|
|
437
|
+
], template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"inlineLabel === false && getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <div style=\"margin-top: 0.5rem; position: relative;\"> <!-- The margin-top is intentional: it vertically aligns the checkbox with other input controls that have greater height. -->\n <p-checkbox\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \n [formControl]=\"control\"\n [value]=\"inlineLabel ? label : null\"\n [id]=\"label\"\n [binary]=\"true\"\n (onChange)=\"change($event)\"\n />\n </div>\n</div>", styles: ["::ng-deep .p-checkbox-false .p-checkbox-box{border-color:var(--p-checkbox-checked-border-color);background:var(--p-checkbox-checked-background)}::ng-deep .p-checkbox-false .p-checkbox:not(.p-disabled):has(.p-checkbox-input:hover) .p-checkbox-box{border-color:var(--p-checkbox-checked-hover-border-color);background:var(--p-checkbox-checked-hover-background)}::ng-deep .p-checkbox-false .p-checkbox-false:has(.p-checkbox.p-disabled) .p-checkbox-false-icon{color:var(--p-checkbox-icon-disabled-color)}.p-checkbox-false-icon{position:absolute;top:3px;left:2.7px;font-size:12.25px;color:var(--p-checkbox-icon-checked-color)}\n"] }]
|
|
438
438
|
}], ctorParameters: () => [{ type: i1.TranslocoService }], propDecorators: { fakeLabel: [{
|
|
439
439
|
type: Input
|
|
440
440
|
}], initializeToFalse: [{
|
|
@@ -460,7 +460,7 @@ class SpiderlyColorPickerComponent extends BaseControl {
|
|
|
460
460
|
super.ngOnInit();
|
|
461
461
|
}
|
|
462
462
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyColorPickerComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
463
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyColorPickerComponent, isStandalone: true, selector: "spiderly-colorpicker", inputs: { showInputTextField: "showInputTextField" }, usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\
|
|
463
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyColorPickerComponent, isStandalone: true, selector: "spiderly-colorpicker", inputs: { showInputTextField: "showInputTextField" }, usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\n\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <div style=\"display: flex; gap: 10px;\">\n <input\n *ngIf=\"control && showInputTextField\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n pInputText\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [id]=\"control.label\"\n (blur)=\"control.markAsDirty()\"\n [fluid]=\"true\"\n />\n <p-colorpicker\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [formControl]=\"control\"\n [id]=\"control.label\"\n (blur)=\"control.markAsDirty()\"\n appendTo=\"body\"\n ></p-colorpicker>\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ColorPickerModule }, { kind: "component", type: i4$3.ColorPicker, selector: "p-colorPicker, p-colorpicker, p-color-picker", inputs: ["style", "styleClass", "inline", "format", "appendTo", "disabled", "tabindex", "inputId", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "autofocus"], outputs: ["onChange", "onShow", "onHide"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i5$1.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
|
|
464
464
|
}
|
|
465
465
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyColorPickerComponent, decorators: [{
|
|
466
466
|
type: Component,
|
|
@@ -472,7 +472,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
472
472
|
InputTextModule,
|
|
473
473
|
TooltipModule,
|
|
474
474
|
RequiredComponent
|
|
475
|
-
], template: "<!-- Can't put (onBlur) in this control -->\
|
|
475
|
+
], template: "<!-- Can't put (onBlur) in this control -->\n\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <div style=\"display: flex; gap: 10px;\">\n <input\n *ngIf=\"control && showInputTextField\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n pInputText\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [id]=\"control.label\"\n (blur)=\"control.markAsDirty()\"\n [fluid]=\"true\"\n />\n <p-colorpicker\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [formControl]=\"control\"\n [id]=\"control.label\"\n (blur)=\"control.markAsDirty()\"\n appendTo=\"body\"\n ></p-colorpicker>\n </div>\n</div>" }]
|
|
476
476
|
}], ctorParameters: () => [{ type: i1.TranslocoService }], propDecorators: { showInputTextField: [{
|
|
477
477
|
type: Input
|
|
478
478
|
}] } });
|
|
@@ -498,7 +498,7 @@ class SpiderlyDropdownComponent extends BaseDropdownControl {
|
|
|
498
498
|
this.onChange.next(event);
|
|
499
499
|
}
|
|
500
500
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDropdownComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
501
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyDropdownComponent, isStandalone: true, selector: "spiderly-dropdown", inputs: { isBooleanPicker: "isBooleanPicker" }, outputs: { onChange: "onChange" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\
|
|
501
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyDropdownComponent, isStandalone: true, selector: "spiderly-dropdown", inputs: { isBooleanPicker: "isBooleanPicker" }, outputs: { onChange: "onChange" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\n </div>\n\n <!-- Don't support p-inputgroup -->\n <p-select\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \n [id]=\"label\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [options]=\"options\"\n optionLabel=\"displayName\"\n optionValue=\"id\"\n [showClear]=\"true\"\n (onHide)=\"dropdownMarkAsDirty()\"\n (onChange)=\"change($event)\"\n [fluid]=\"true\"\n appendTo=\"body\"\n />\n \n</div>", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i3$1.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: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
|
|
502
502
|
}
|
|
503
503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDropdownComponent, decorators: [{
|
|
504
504
|
type: Component,
|
|
@@ -509,7 +509,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
509
509
|
TooltipModule,
|
|
510
510
|
CommonModule,
|
|
511
511
|
RequiredComponent,
|
|
512
|
-
], template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\
|
|
512
|
+
], template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\n </div>\n\n <!-- Don't support p-inputgroup -->\n <p-select\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \n [id]=\"label\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [options]=\"options\"\n optionLabel=\"displayName\"\n optionValue=\"id\"\n [showClear]=\"true\"\n (onHide)=\"dropdownMarkAsDirty()\"\n (onChange)=\"change($event)\"\n [fluid]=\"true\"\n appendTo=\"body\"\n />\n \n</div>" }]
|
|
513
513
|
}], ctorParameters: () => [{ type: i1.TranslocoService }], propDecorators: { isBooleanPicker: [{
|
|
514
514
|
type: Input
|
|
515
515
|
}], onChange: [{
|
|
@@ -542,7 +542,7 @@ class SpiderlyEditorComponent extends BaseControl {
|
|
|
542
542
|
};
|
|
543
543
|
}
|
|
544
544
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyEditorComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
545
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyEditorComponent, isStandalone: true, selector: "spiderly-editor", viewQueries: [{ propertyName: "editor", first: true, predicate: Editor, descendants: true }, { propertyName: "tooltip", first: true, predicate: Tooltip, descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\
|
|
545
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyEditorComponent, isStandalone: true, selector: "spiderly-editor", viewQueries: [{ propertyName: "editor", first: true, predicate: Editor, descendants: true }, { propertyName: "tooltip", first: true, predicate: Tooltip, descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\n\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n\n <!-- Disable doesn't work on this control -->\n <p-editor\n *ngIf=\"control\"\n [formControl]=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [readonly]=\"control.disabled\"\n [class]=\"control.invalid && control.dirty ? 'control-error-border' : ''\"\n [id]=\"control.label\"\n [placeholder]=\"placeholder\"\n (click)=\"onClick()\"\n [style]=\"{ height: '320px' }\"\n ></p-editor>\n\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i4$4.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
|
|
546
546
|
}
|
|
547
547
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyEditorComponent, decorators: [{
|
|
548
548
|
type: Component,
|
|
@@ -553,7 +553,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
553
553
|
EditorModule,
|
|
554
554
|
TooltipModule,
|
|
555
555
|
RequiredComponent
|
|
556
|
-
], template: "<!-- Can't put (onBlur) in this control -->\
|
|
556
|
+
], template: "<!-- Can't put (onBlur) in this control -->\n\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n\n <!-- Disable doesn't work on this control -->\n <p-editor\n *ngIf=\"control\"\n [formControl]=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [readonly]=\"control.disabled\"\n [class]=\"control.invalid && control.dirty ? 'control-error-border' : ''\"\n [id]=\"control.label\"\n [placeholder]=\"placeholder\"\n (click)=\"onClick()\"\n [style]=\"{ height: '320px' }\"\n ></p-editor>\n\n</div>" }]
|
|
557
557
|
}], ctorParameters: () => [{ type: i1.TranslocoService }], propDecorators: { editor: [{
|
|
558
558
|
type: ViewChild,
|
|
559
559
|
args: [Editor]
|
|
@@ -634,7 +634,7 @@ class SpiderlyButtonComponent extends SpiderlyButtonBaseComponent {
|
|
|
634
634
|
this.type = 'button';
|
|
635
635
|
}
|
|
636
636
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
637
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyButtonComponent, isStandalone: true, selector: "spiderly-button", inputs: { type: "type" }, usesInheritance: true, ngImport: i0, template: "<p-button \
|
|
637
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyButtonComponent, isStandalone: true, selector: "spiderly-button", inputs: { type: "type" }, usesInheritance: true, ngImport: i0, template: "<p-button \n(onClick)=\"handleClick($event)\" \n[label]=\"label\" \n[icon]=\"icon\" \n[outlined]=\"outlined\" \n[styleClass]=\"styleClass\" \n[severity]=\"severity\" \n[rounded]=\"rounded\"\n[style]=\"style\"\n[class]=\"class\"\n[disabled]=\"disabled\"\n[size]=\"size\"\n[type]=\"type\"\n>\n <ng-content></ng-content>\n</p-button>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: SplitButtonModule }] }); }
|
|
638
638
|
}
|
|
639
639
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyButtonComponent, decorators: [{
|
|
640
640
|
type: Component,
|
|
@@ -642,7 +642,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
642
642
|
CommonModule,
|
|
643
643
|
ButtonModule,
|
|
644
644
|
SplitButtonModule
|
|
645
|
-
], template: "<p-button \
|
|
645
|
+
], template: "<p-button \n(onClick)=\"handleClick($event)\" \n[label]=\"label\" \n[icon]=\"icon\" \n[outlined]=\"outlined\" \n[styleClass]=\"styleClass\" \n[severity]=\"severity\" \n[rounded]=\"rounded\"\n[style]=\"style\"\n[class]=\"class\"\n[disabled]=\"disabled\"\n[size]=\"size\"\n[type]=\"type\"\n>\n <ng-content></ng-content>\n</p-button>" }]
|
|
646
646
|
}], propDecorators: { type: [{
|
|
647
647
|
type: Input
|
|
648
648
|
}] } });
|
|
@@ -982,7 +982,7 @@ class SpiderlyFileComponent extends BaseControl {
|
|
|
982
982
|
return isExcelFileType(mimeType);
|
|
983
983
|
}
|
|
984
984
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyFileComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
985
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyFileComponent, isStandalone: true, selector: "spiderly-file", inputs: { objectId: "objectId", fileData: "fileData", acceptedFileTypes: "acceptedFileTypes", required: "required", multiple: "multiple", isCloudinaryFileData: "isCloudinaryFileData", files: "files" }, outputs: { onFileSelected: "onFileSelected", onFileRemoved: "onFileRemoved" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\
|
|
985
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyFileComponent, isStandalone: true, selector: "spiderly-file", inputs: { objectId: "objectId", fileData: "fileData", acceptedFileTypes: "acceptedFileTypes", required: "required", multiple: "multiple", isCloudinaryFileData: "isCloudinaryFileData", files: "files" }, outputs: { onFileSelected: "onFileSelected", onFileRemoved: "onFileRemoved" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <!-- It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl. -->\n <required *ngIf=\"control?.required || required\"></required>\n </div>\n\n <p-fileUpload \n [files]=\"files\" \n [disabled]=\"disabled\" \n [name]=\"control?.label ?? label\" \n [multiple]=\"multiple\" \n [accept]=\"acceptedFileTypesCommaSeparated\" \n [maxFileSize]=\"1000000\" \n (onSelect)=\"filesSelected($event)\"\n [class]=\"control?.invalid && control?.dirty ? 'control-error-border' : ''\"\n >\n <ng-template pTemplate=\"header\" let-files let-chooseCallback=\"chooseCallback\" let-clearCallback=\"clearCallback\" let-uploadCallback=\"uploadCallback\">\n <div class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\n <div class=\"flex gap-2\">\n <spiderly-button [disabled]=\"disabled\" (onClick)=\"choose($event, chooseCallback)\" icon=\"pi pi-upload\" [rounded]=\"true\" [outlined]=\"true\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-files let-removeFileCallback=\"removeFileCallback\">\n <div *ngIf=\"files.length > 0\">\n <div class=\"flex justify-content-center p-0 gap-5\">\n <div *ngFor=\"let file of files; let index = index\" class=\"card m-0 px-3 py-3 flex flex-column align-items-center gap-3\" style=\"justify-content: center; overflow: hidden;\">\n <div *ngIf=\"isImageFileType(file.type)\" class=\"image-container\">\n <img role=\"presentation\" [src]=\"file.objectURL\"/>\n </div>\n <div *ngIf=\"isExcelFileType(file.type)\" class=\"excel-container\">\n <div class=\"excel-details\">\n <i class=\"pi pi-file-excel\" style=\"color: green; margin-right: 4px;\"></i>\n <span class=\"file-name\">{{ file.name }}</span>\n </div>\n </div>\n <spiderly-button [disabled]=\"disabled\" icon=\"pi pi-times\" (onClick)=\"fileRemoved(removeFileCallback, index)\" [outlined]=\"true\" [rounded]=\"true\" severity=\"danger\" />\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"file\"> </ng-template>\n <ng-template pTemplate=\"empty\">\n <div class=\"flex align-items-center justify-content-center flex-column\">\n <i class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400 mt-3\"></i>\n <p class=\"mt-4 mb-0\">{{t('DragAndDropFilesHereToUpload')}}</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i3$3.FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "directive", type: i1$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: RequiredComponent, selector: "required" }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
986
986
|
}
|
|
987
987
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyFileComponent, decorators: [{
|
|
988
988
|
type: Component,
|
|
@@ -994,7 +994,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
994
994
|
RequiredComponent,
|
|
995
995
|
SpiderlyButtonComponent,
|
|
996
996
|
TranslocoDirective
|
|
997
|
-
], template: "<ng-container *transloco=\"let t\">\
|
|
997
|
+
], template: "<ng-container *transloco=\"let t\">\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <!-- It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl. -->\n <required *ngIf=\"control?.required || required\"></required>\n </div>\n\n <p-fileUpload \n [files]=\"files\" \n [disabled]=\"disabled\" \n [name]=\"control?.label ?? label\" \n [multiple]=\"multiple\" \n [accept]=\"acceptedFileTypesCommaSeparated\" \n [maxFileSize]=\"1000000\" \n (onSelect)=\"filesSelected($event)\"\n [class]=\"control?.invalid && control?.dirty ? 'control-error-border' : ''\"\n >\n <ng-template pTemplate=\"header\" let-files let-chooseCallback=\"chooseCallback\" let-clearCallback=\"clearCallback\" let-uploadCallback=\"uploadCallback\">\n <div class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\n <div class=\"flex gap-2\">\n <spiderly-button [disabled]=\"disabled\" (onClick)=\"choose($event, chooseCallback)\" icon=\"pi pi-upload\" [rounded]=\"true\" [outlined]=\"true\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-files let-removeFileCallback=\"removeFileCallback\">\n <div *ngIf=\"files.length > 0\">\n <div class=\"flex justify-content-center p-0 gap-5\">\n <div *ngFor=\"let file of files; let index = index\" class=\"card m-0 px-3 py-3 flex flex-column align-items-center gap-3\" style=\"justify-content: center; overflow: hidden;\">\n <div *ngIf=\"isImageFileType(file.type)\" class=\"image-container\">\n <img role=\"presentation\" [src]=\"file.objectURL\"/>\n </div>\n <div *ngIf=\"isExcelFileType(file.type)\" class=\"excel-container\">\n <div class=\"excel-details\">\n <i class=\"pi pi-file-excel\" style=\"color: green; margin-right: 4px;\"></i>\n <span class=\"file-name\">{{ file.name }}</span>\n </div>\n </div>\n <spiderly-button [disabled]=\"disabled\" icon=\"pi pi-times\" (onClick)=\"fileRemoved(removeFileCallback, index)\" [outlined]=\"true\" [rounded]=\"true\" severity=\"danger\" />\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"file\"> </ng-template>\n <ng-template pTemplate=\"empty\">\n <div class=\"flex align-items-center justify-content-center flex-column\">\n <i class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400 mt-3\"></i>\n <p class=\"mt-4 mb-0\">{{t('DragAndDropFilesHereToUpload')}}</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n</ng-container>" }]
|
|
998
998
|
}], ctorParameters: () => [{ type: i1.TranslocoService }], propDecorators: { onFileSelected: [{
|
|
999
999
|
type: Output
|
|
1000
1000
|
}], onFileRemoved: [{
|
|
@@ -1035,7 +1035,7 @@ class SpiderlyMultiAutocompleteComponent extends BaseAutocompleteControl {
|
|
|
1035
1035
|
this.onTextInput.next(event);
|
|
1036
1036
|
}
|
|
1037
1037
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMultiAutocompleteComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1038
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyMultiAutocompleteComponent, isStandalone: true, selector: "spiderly-multiautocomplete", usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\
|
|
1038
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyMultiAutocompleteComponent, isStandalone: true, selector: "spiderly-multiautocomplete", usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n\n <!-- Don't support p-inputgroup -->\n <!-- Showing label fix: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294 -->\n <p-autocomplete \n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [id]=\"label\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [suggestions]=\"options\"\n (completeMethod)=\"search($event)\"\n [forceSelection]=\"true\"\n [multiple]=\"true\"\n [dropdown]=\"false\"\n [showClear]=\"true\"\n (onHide)=\"dropdownMarkAsDirty()\"\n [completeOnFocus]=\"true\"\n dropdownIcon=\"pi pi-plus\"\n [fluid]=\"true\"\n [style]=\"{'width': '100%'}\"\n appendTo=\"body\"\n optionLabel=\"displayName\"\n dataKey=\"id\"\n >\n </p-autocomplete>\n </div>\n</ng-container>", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i4.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "variant", "fluid"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RequiredComponent, selector: "required" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
1039
1039
|
}
|
|
1040
1040
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMultiAutocompleteComponent, decorators: [{
|
|
1041
1041
|
type: Component,
|
|
@@ -1047,7 +1047,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1047
1047
|
CommonModule,
|
|
1048
1048
|
RequiredComponent,
|
|
1049
1049
|
TranslocoDirective,
|
|
1050
|
-
], template: "<ng-container *transloco=\"let t\">\
|
|
1050
|
+
], template: "<ng-container *transloco=\"let t\">\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n\n <!-- Don't support p-inputgroup -->\n <!-- Showing label fix: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294 -->\n <p-autocomplete \n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [id]=\"label\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [suggestions]=\"options\"\n (completeMethod)=\"search($event)\"\n [forceSelection]=\"true\"\n [multiple]=\"true\"\n [dropdown]=\"false\"\n [showClear]=\"true\"\n (onHide)=\"dropdownMarkAsDirty()\"\n [completeOnFocus]=\"true\"\n dropdownIcon=\"pi pi-plus\"\n [fluid]=\"true\"\n [style]=\"{'width': '100%'}\"\n appendTo=\"body\"\n optionLabel=\"displayName\"\n dataKey=\"id\"\n >\n </p-autocomplete>\n </div>\n</ng-container>" }]
|
|
1051
1051
|
}], ctorParameters: () => [{ type: i1.TranslocoService }] });
|
|
1052
1052
|
|
|
1053
1053
|
class SpiderlyMultiSelectComponent extends BaseDropdownControl {
|
|
@@ -1059,7 +1059,7 @@ class SpiderlyMultiSelectComponent extends BaseDropdownControl {
|
|
|
1059
1059
|
super.ngOnInit();
|
|
1060
1060
|
}
|
|
1061
1061
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMultiSelectComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1062
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyMultiSelectComponent, isStandalone: true, selector: "spiderly-multiselect", usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\
|
|
1062
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyMultiSelectComponent, isStandalone: true, selector: "spiderly-multiselect", usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <p-multiSelect\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [id]=\"label\"\n [formControl]=\"control\"\n [options]=\"options\"\n optionLabel=\"displayName\"\n optionValue=\"id\"\n display=\"chip\"\n [maxSelectedLabels]=\"20\"\n [placeholder]=\"placeholder\"\n [fluid]=\"true\"\n appendTo=\"body\"\n />\n <!-- [virtualScroll]=\"true\" FT: I think that this is not doing anything, check -->\n <!-- (onFilter)=\"search($event)\" FT: While they don't implement lazy load like here: https://github.com/yelhouti/primeng/blob/8.0.0-rc2/src/app/components/multiselect/multiselect.ts\n we need to use this and dropdown control only on the client -->\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i4$5.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", "highlightOnSelect"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
|
|
1063
1063
|
}
|
|
1064
1064
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMultiSelectComponent, decorators: [{
|
|
1065
1065
|
type: Component,
|
|
@@ -1070,7 +1070,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1070
1070
|
MultiSelectModule,
|
|
1071
1071
|
TooltipModule,
|
|
1072
1072
|
RequiredComponent
|
|
1073
|
-
], template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\
|
|
1073
|
+
], template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <p-multiSelect\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [id]=\"label\"\n [formControl]=\"control\"\n [options]=\"options\"\n optionLabel=\"displayName\"\n optionValue=\"id\"\n display=\"chip\"\n [maxSelectedLabels]=\"20\"\n [placeholder]=\"placeholder\"\n [fluid]=\"true\"\n appendTo=\"body\"\n />\n <!-- [virtualScroll]=\"true\" FT: I think that this is not doing anything, check -->\n <!-- (onFilter)=\"search($event)\" FT: While they don't implement lazy load like here: https://github.com/yelhouti/primeng/blob/8.0.0-rc2/src/app/components/multiselect/multiselect.ts\n we need to use this and dropdown control only on the client -->\n</div>" }]
|
|
1074
1074
|
}], ctorParameters: () => [{ type: i1.TranslocoService }] });
|
|
1075
1075
|
|
|
1076
1076
|
class SpiderlyNumberComponent extends BaseControl {
|
|
@@ -1084,7 +1084,7 @@ class SpiderlyNumberComponent extends BaseControl {
|
|
|
1084
1084
|
super.ngOnInit();
|
|
1085
1085
|
}
|
|
1086
1086
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyNumberComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1087
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyNumberComponent, isStandalone: true, selector: "spiderly-number", inputs: { prefix: "prefix", showButtons: "showButtons", decimal: "decimal", maxFractionDigits: "maxFractionDigits" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\
|
|
1087
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyNumberComponent, isStandalone: true, selector: "spiderly-number", inputs: { prefix: "prefix", showButtons: "showButtons", decimal: "decimal", maxFractionDigits: "maxFractionDigits" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"showLabel\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <p-inputNumber\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [formControl]=\"control\"\n [id]=\"control.label\"\n (onBlur)=\"control.markAsDirty()\"\n [prefix]=\"prefix\"\n [style]=\"{'width':'100%'}\"\n [inputStyle]=\"{'width':'100%'}\"\n [showButtons]=\"showButtons\"\n buttonLayout=\"horizontal\"\n [maxFractionDigits]=\"maxFractionDigits\"\n />\n </div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: InputNumberModule }, { kind: "component", type: i4$6.InputNumber, selector: "p-inputNumber, p-inputnumber, p-input-number", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaDescribedBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled", "fluid"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
|
|
1088
1088
|
}
|
|
1089
1089
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyNumberComponent, decorators: [{
|
|
1090
1090
|
type: Component,
|
|
@@ -1095,7 +1095,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1095
1095
|
InputNumberModule,
|
|
1096
1096
|
TooltipModule,
|
|
1097
1097
|
RequiredComponent
|
|
1098
|
-
], template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\
|
|
1098
|
+
], template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"showLabel\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <p-inputNumber\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [formControl]=\"control\"\n [id]=\"control.label\"\n (onBlur)=\"control.markAsDirty()\"\n [prefix]=\"prefix\"\n [style]=\"{'width':'100%'}\"\n [inputStyle]=\"{'width':'100%'}\"\n [showButtons]=\"showButtons\"\n buttonLayout=\"horizontal\"\n [maxFractionDigits]=\"maxFractionDigits\"\n />\n </div>" }]
|
|
1099
1099
|
}], ctorParameters: () => [{ type: i1.TranslocoService }], propDecorators: { prefix: [{
|
|
1100
1100
|
type: Input
|
|
1101
1101
|
}], showButtons: [{
|
|
@@ -1116,7 +1116,7 @@ class SpiderlyPasswordComponent extends BaseControl {
|
|
|
1116
1116
|
super.ngOnInit();
|
|
1117
1117
|
}
|
|
1118
1118
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyPasswordComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1119
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyPasswordComponent, isStandalone: true, selector: "spiderly-password", inputs: { showPasswordStrength: "showPasswordStrength" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\
|
|
1119
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyPasswordComponent, isStandalone: true, selector: "spiderly-password", inputs: { showPasswordStrength: "showPasswordStrength" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <p-password\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [formControl]=\"control\"\n [id]=\"control?.label\"\n [toggleMask]=\"true\"\n [feedback]=\"showPasswordStrength\"\n (onBlur)=\"control?.markAsDirty()\"\n [style]=\"{'width':'100%'}\"\n [inputStyle]=\"{'width':'100%'}\"\n />\n </div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PasswordModule }, { kind: "component", type: i4$7.Password, selector: "p-password", inputs: ["ariaLabel", "fluid", "ariaLabelledBy", "label", "disabled", "promptLabel", "mediumRegex", "strongRegex", "weakLabel", "mediumLabel", "maxLength", "strongLabel", "inputId", "feedback", "appendTo", "toggleMask", "size", "inputStyleClass", "styleClass", "style", "inputStyle", "showTransitionOptions", "hideTransitionOptions", "autocomplete", "placeholder", "showClear", "autofocus", "variant", "tabindex"], outputs: ["onFocus", "onBlur", "onClear"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
|
|
1120
1120
|
}
|
|
1121
1121
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyPasswordComponent, decorators: [{
|
|
1122
1122
|
type: Component,
|
|
@@ -1127,7 +1127,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1127
1127
|
PasswordModule,
|
|
1128
1128
|
TooltipModule,
|
|
1129
1129
|
RequiredComponent
|
|
1130
|
-
], template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\
|
|
1130
|
+
], template: "<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <p-password\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [formControl]=\"control\"\n [id]=\"control?.label\"\n [toggleMask]=\"true\"\n [feedback]=\"showPasswordStrength\"\n (onBlur)=\"control?.markAsDirty()\"\n [style]=\"{'width':'100%'}\"\n [inputStyle]=\"{'width':'100%'}\"\n />\n </div>\n" }]
|
|
1131
1131
|
}], ctorParameters: () => [{ type: i1.TranslocoService }], propDecorators: { showPasswordStrength: [{
|
|
1132
1132
|
type: Input
|
|
1133
1133
|
}] } });
|
|
@@ -1141,7 +1141,7 @@ class SpiderlyTextareaComponent extends BaseControl {
|
|
|
1141
1141
|
super.ngOnInit();
|
|
1142
1142
|
}
|
|
1143
1143
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTextareaComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1144
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyTextareaComponent, isStandalone: true, selector: "spiderly-textarea", usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\
|
|
1144
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyTextareaComponent, isStandalone: true, selector: "spiderly-textarea", usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\n\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <textarea\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n pTextarea\n [formControl]=\"control\"\n [id]=\"control.label\"\n (blur)=\"control.markAsDirty()\"\n [autoResize]=\"true\"\n [class]=\"control.disabled ? 'disabled' : ''\"\n ></textarea>\n </div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TextareaModule }, { kind: "directive", type: i4$8.Textarea, selector: "[pTextarea], [pInputTextarea]", inputs: ["autoResize", "variant", "fluid", "pSize"], outputs: ["onResize"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
|
|
1145
1145
|
}
|
|
1146
1146
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTextareaComponent, decorators: [{
|
|
1147
1147
|
type: Component,
|
|
@@ -1152,7 +1152,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1152
1152
|
TextareaModule,
|
|
1153
1153
|
TooltipModule,
|
|
1154
1154
|
RequiredComponent
|
|
1155
|
-
], template: "<!-- Can't put (onBlur) in this control -->\
|
|
1155
|
+
], template: "<!-- Can't put (onBlur) in this control -->\n\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <textarea\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n pTextarea\n [formControl]=\"control\"\n [id]=\"control.label\"\n (blur)=\"control.markAsDirty()\"\n [autoResize]=\"true\"\n [class]=\"control.disabled ? 'disabled' : ''\"\n ></textarea>\n </div>" }]
|
|
1156
1156
|
}], ctorParameters: () => [{ type: i1.TranslocoService }] });
|
|
1157
1157
|
|
|
1158
1158
|
class SpiderlyTextboxComponent extends BaseControl {
|
|
@@ -1169,7 +1169,7 @@ class SpiderlyTextboxComponent extends BaseControl {
|
|
|
1169
1169
|
this.onButtonClick.next(null);
|
|
1170
1170
|
}
|
|
1171
1171
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTextboxComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1172
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyTextboxComponent, isStandalone: true, selector: "spiderly-textbox", inputs: { showButton: "showButton", buttonIcon: "buttonIcon" }, outputs: { onButtonClick: "onButtonClick" }, usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\
|
|
1172
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyTextboxComponent, isStandalone: true, selector: "spiderly-textbox", inputs: { showButton: "showButton", buttonIcon: "buttonIcon" }, outputs: { onButtonClick: "onButtonClick" }, usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\n\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <div class=\"spiderly-inputgroup\">\n <input\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n pInputText\n [formControl]=\"control\"\n [id]=\"control.label\"\n (blur)=\"control.markAsDirty()\"\n [placeholder]=\"placeholder\"\n [fluid]=\"true\"\n />\n <span *ngIf=\"showButton\" (click)=\"buttonClick()\" class=\"spiderly-inputgroup-addon\">\n <i class=\"{{buttonIcon}}\"></i>\n </span>\n </div>\n</div>", styles: [".spiderly-inputgroup{display:flex;gap:8px}.spiderly-inputgroup-addon{width:38px;cursor:pointer;background-color:var(--p-primary-color);border-color:var(--p-primary-color);border-radius:var(--p-content-border-radius);display:flex}.spiderly-inputgroup-addon i{margin:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i5$1.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
|
|
1173
1173
|
}
|
|
1174
1174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTextboxComponent, decorators: [{
|
|
1175
1175
|
type: Component,
|
|
@@ -1180,7 +1180,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1180
1180
|
InputTextModule,
|
|
1181
1181
|
TooltipModule,
|
|
1182
1182
|
RequiredComponent
|
|
1183
|
-
], template: "<!-- Can't put (onBlur) in this control -->\
|
|
1183
|
+
], template: "<!-- Can't put (onBlur) in this control -->\n\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <div class=\"spiderly-inputgroup\">\n <input\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n pInputText\n [formControl]=\"control\"\n [id]=\"control.label\"\n (blur)=\"control.markAsDirty()\"\n [placeholder]=\"placeholder\"\n [fluid]=\"true\"\n />\n <span *ngIf=\"showButton\" (click)=\"buttonClick()\" class=\"spiderly-inputgroup-addon\">\n <i class=\"{{buttonIcon}}\"></i>\n </span>\n </div>\n</div>", styles: [".spiderly-inputgroup{display:flex;gap:8px}.spiderly-inputgroup-addon{width:38px;cursor:pointer;background-color:var(--p-primary-color);border-color:var(--p-primary-color);border-radius:var(--p-content-border-radius);display:flex}.spiderly-inputgroup-addon i{margin:auto}\n"] }]
|
|
1184
1184
|
}], ctorParameters: () => [{ type: i1.TranslocoService }], propDecorators: { showButton: [{
|
|
1185
1185
|
type: Input
|
|
1186
1186
|
}], buttonIcon: [{
|
|
@@ -1204,7 +1204,7 @@ class SpiderlyReturnButtonComponent {
|
|
|
1204
1204
|
}
|
|
1205
1205
|
}
|
|
1206
1206
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyReturnButtonComponent, deps: [{ token: i3$2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1207
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyReturnButtonComponent, isStandalone: true, selector: "return-button", inputs: { navigateUrl: "navigateUrl" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\
|
|
1207
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyReturnButtonComponent, isStandalone: true, selector: "return-button", inputs: { navigateUrl: "navigateUrl" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <spiderly-button (onClick)=\"onReturn()\" [label]=\"t('Return')\" icon=\"pi pi-undo\" [outlined]=\"true\"></spiderly-button>\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
1208
1208
|
}
|
|
1209
1209
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyReturnButtonComponent, decorators: [{
|
|
1210
1210
|
type: Component,
|
|
@@ -1213,7 +1213,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1213
1213
|
ButtonModule,
|
|
1214
1214
|
SpiderlyButtonComponent,
|
|
1215
1215
|
TranslocoDirective,
|
|
1216
|
-
], template: "<ng-container *transloco=\"let t\">\
|
|
1216
|
+
], template: "<ng-container *transloco=\"let t\">\n <spiderly-button (onClick)=\"onReturn()\" [label]=\"t('Return')\" icon=\"pi pi-undo\" [outlined]=\"true\"></spiderly-button>\n</ng-container>" }]
|
|
1217
1217
|
}], ctorParameters: () => [{ type: i3$2.Router }], propDecorators: { navigateUrl: [{
|
|
1218
1218
|
type: Input
|
|
1219
1219
|
}] } });
|
|
@@ -1307,372 +1307,553 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1307
1307
|
}]
|
|
1308
1308
|
}] });
|
|
1309
1309
|
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
}
|
|
1315
|
-
static { this.typeName = 'IsAuthorizedForSaveEvent'; }
|
|
1316
|
-
}
|
|
1317
|
-
|
|
1318
|
-
class Namebook extends BaseEntity {
|
|
1319
|
-
constructor({ id, displayName, } = {}) {
|
|
1320
|
-
super();
|
|
1321
|
-
this.id = id;
|
|
1322
|
-
this.displayName = displayName;
|
|
1310
|
+
// When we call it, inside the console, it will show SpiderlyError: ...
|
|
1311
|
+
class SpiderlyError extends Error {
|
|
1312
|
+
constructor(message) {
|
|
1313
|
+
super(message);
|
|
1323
1314
|
}
|
|
1324
|
-
static { this.schema = {
|
|
1325
|
-
id: {
|
|
1326
|
-
type: 'any',
|
|
1327
|
-
},
|
|
1328
|
-
displayName: {
|
|
1329
|
-
type: 'string',
|
|
1330
|
-
},
|
|
1331
|
-
}; }
|
|
1332
|
-
static { this.typeName = 'Namebook'; }
|
|
1333
1315
|
}
|
|
1334
1316
|
|
|
1335
|
-
class
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
this.
|
|
1340
|
-
this.email = email;
|
|
1341
|
-
}
|
|
1342
|
-
static { this.schema = {
|
|
1343
|
-
id: {
|
|
1344
|
-
type: 'number',
|
|
1345
|
-
},
|
|
1346
|
-
email: {
|
|
1347
|
-
type: 'string',
|
|
1348
|
-
},
|
|
1349
|
-
}; }
|
|
1350
|
-
}
|
|
1351
|
-
class RolePermission extends BaseEntity {
|
|
1352
|
-
static { this.typeName = 'RolePermission'; }
|
|
1353
|
-
constructor({ roleDisplayName, roleId, permissionDisplayName, permissionId } = {}) {
|
|
1354
|
-
super();
|
|
1355
|
-
this.roleDisplayName = roleDisplayName;
|
|
1356
|
-
this.roleId = roleId;
|
|
1357
|
-
this.permissionDisplayName = permissionDisplayName;
|
|
1358
|
-
this.permissionId = permissionId;
|
|
1359
|
-
}
|
|
1360
|
-
static { this.schema = {
|
|
1361
|
-
roleDisplayName: {
|
|
1362
|
-
type: 'string',
|
|
1363
|
-
},
|
|
1364
|
-
roleId: {
|
|
1365
|
-
type: 'number',
|
|
1366
|
-
},
|
|
1367
|
-
permissionDisplayName: {
|
|
1368
|
-
type: 'string',
|
|
1369
|
-
},
|
|
1370
|
-
permissionId: {
|
|
1371
|
-
type: 'number',
|
|
1372
|
-
},
|
|
1373
|
-
}; }
|
|
1374
|
-
}
|
|
1375
|
-
class RolePermissionSaveBody extends BaseEntity {
|
|
1376
|
-
static { this.typeName = 'RolePermissionSaveBody'; }
|
|
1377
|
-
constructor({ rolePermissionDTO } = {}) {
|
|
1378
|
-
super();
|
|
1379
|
-
this.rolePermissionDTO = rolePermissionDTO;
|
|
1380
|
-
}
|
|
1381
|
-
static { this.schema = {
|
|
1382
|
-
rolePermissionDTO: {
|
|
1383
|
-
type: 'RolePermission',
|
|
1384
|
-
get nestedConstructor() { return RolePermission; },
|
|
1385
|
-
},
|
|
1386
|
-
}; }
|
|
1387
|
-
}
|
|
1388
|
-
class AuthResult extends BaseEntity {
|
|
1389
|
-
static { this.typeName = 'AuthResult'; }
|
|
1390
|
-
constructor({ userId, email, accessToken, refreshToken } = {}) {
|
|
1391
|
-
super();
|
|
1392
|
-
this.userId = userId;
|
|
1393
|
-
this.email = email;
|
|
1394
|
-
this.accessToken = accessToken;
|
|
1395
|
-
this.refreshToken = refreshToken;
|
|
1396
|
-
}
|
|
1397
|
-
static { this.schema = {
|
|
1398
|
-
userId: {
|
|
1399
|
-
type: 'number',
|
|
1400
|
-
},
|
|
1401
|
-
email: {
|
|
1402
|
-
type: 'string',
|
|
1403
|
-
},
|
|
1404
|
-
accessToken: {
|
|
1405
|
-
type: 'string',
|
|
1406
|
-
},
|
|
1407
|
-
refreshToken: {
|
|
1408
|
-
type: 'string',
|
|
1409
|
-
},
|
|
1410
|
-
}; }
|
|
1411
|
-
}
|
|
1412
|
-
class VerificationTokenRequest extends BaseEntity {
|
|
1413
|
-
static { this.typeName = 'VerificationTokenRequest'; }
|
|
1414
|
-
constructor({ verificationCode, browserId, email } = {}) {
|
|
1415
|
-
super();
|
|
1416
|
-
this.verificationCode = verificationCode;
|
|
1417
|
-
this.browserId = browserId;
|
|
1418
|
-
this.email = email;
|
|
1419
|
-
}
|
|
1420
|
-
static { this.schema = {
|
|
1421
|
-
verificationCode: {
|
|
1422
|
-
type: 'string',
|
|
1423
|
-
},
|
|
1424
|
-
browserId: {
|
|
1425
|
-
type: 'string',
|
|
1426
|
-
},
|
|
1427
|
-
email: {
|
|
1428
|
-
type: 'string',
|
|
1429
|
-
},
|
|
1430
|
-
}; }
|
|
1431
|
-
}
|
|
1432
|
-
class ExternalProvider extends BaseEntity {
|
|
1433
|
-
static { this.typeName = 'ExternalProvider'; }
|
|
1434
|
-
constructor({ idToken, browserId } = {}) {
|
|
1435
|
-
super();
|
|
1436
|
-
this.idToken = idToken;
|
|
1437
|
-
this.browserId = browserId;
|
|
1317
|
+
class SpiderlyMessageService {
|
|
1318
|
+
constructor(messageService, translocoService, ngZone) {
|
|
1319
|
+
this.messageService = messageService;
|
|
1320
|
+
this.translocoService = translocoService;
|
|
1321
|
+
this.ngZone = ngZone;
|
|
1438
1322
|
}
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
}
|
|
1446
|
-
}; }
|
|
1447
|
-
}
|
|
1448
|
-
class UserRole extends BaseEntity {
|
|
1449
|
-
static { this.typeName = 'UserRole'; }
|
|
1450
|
-
constructor({ roleId, userId } = {}) {
|
|
1451
|
-
super();
|
|
1452
|
-
this.roleId = roleId;
|
|
1453
|
-
this.userId = userId;
|
|
1323
|
+
successMessage(detail, title = this.translocoService.translate('SuccessfulAction')) {
|
|
1324
|
+
this.messageService.add({
|
|
1325
|
+
severity: 'success',
|
|
1326
|
+
summary: title,
|
|
1327
|
+
detail: detail,
|
|
1328
|
+
life: 10000,
|
|
1329
|
+
});
|
|
1454
1330
|
}
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
}
|
|
1464
|
-
class UserRoleSaveBody extends BaseEntity {
|
|
1465
|
-
static { this.typeName = 'UserRoleSaveBody'; }
|
|
1466
|
-
constructor({ userRoleDTO } = {}) {
|
|
1467
|
-
super();
|
|
1468
|
-
this.userRoleDTO = userRoleDTO;
|
|
1331
|
+
warningMessage(detail, title, sticky) {
|
|
1332
|
+
this.messageService.add({
|
|
1333
|
+
severity: 'warn',
|
|
1334
|
+
summary: title ?? this.translocoService.translate('Warning'),
|
|
1335
|
+
detail: detail,
|
|
1336
|
+
life: 10000,
|
|
1337
|
+
sticky: sticky
|
|
1338
|
+
});
|
|
1469
1339
|
}
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
}
|
|
1477
|
-
class LoginVerificationToken extends BaseEntity {
|
|
1478
|
-
static { this.typeName = 'LoginVerificationToken'; }
|
|
1479
|
-
constructor({ email, userId, browserId, expireAt } = {}) {
|
|
1480
|
-
super();
|
|
1481
|
-
this.email = email;
|
|
1482
|
-
this.userId = userId;
|
|
1483
|
-
this.browserId = browserId;
|
|
1484
|
-
this.expireAt = expireAt;
|
|
1340
|
+
errorMessage(detail, title = this.translocoService.translate('Error')) {
|
|
1341
|
+
this.messageService.add({
|
|
1342
|
+
severity: 'error',
|
|
1343
|
+
summary: title,
|
|
1344
|
+
detail: detail,
|
|
1345
|
+
life: 10000,
|
|
1346
|
+
});
|
|
1485
1347
|
}
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
type: 'string',
|
|
1495
|
-
},
|
|
1496
|
-
expireAt: {
|
|
1497
|
-
type: 'Date',
|
|
1498
|
-
},
|
|
1499
|
-
}; }
|
|
1500
|
-
}
|
|
1501
|
-
class Login extends BaseEntity {
|
|
1502
|
-
static { this.typeName = 'Login'; }
|
|
1503
|
-
constructor({ email, browserId } = {}) {
|
|
1504
|
-
super();
|
|
1505
|
-
this.email = email;
|
|
1506
|
-
this.browserId = browserId;
|
|
1348
|
+
infoMessage(detail, title, sticky) {
|
|
1349
|
+
this.messageService.add({
|
|
1350
|
+
severity: 'info',
|
|
1351
|
+
summary: title ?? this.translocoService.translate('Info'),
|
|
1352
|
+
detail: detail,
|
|
1353
|
+
life: 10000,
|
|
1354
|
+
sticky: sticky,
|
|
1355
|
+
});
|
|
1507
1356
|
}
|
|
1508
|
-
static { this
|
|
1509
|
-
|
|
1510
|
-
type: 'string',
|
|
1511
|
-
},
|
|
1512
|
-
browserId: {
|
|
1513
|
-
type: 'string',
|
|
1514
|
-
},
|
|
1515
|
-
}; }
|
|
1357
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMessageService, deps: [{ token: i1$2.MessageService }, { token: i1.TranslocoService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1358
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMessageService, providedIn: 'root' }); }
|
|
1516
1359
|
}
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1360
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMessageService, decorators: [{
|
|
1361
|
+
type: Injectable,
|
|
1362
|
+
args: [{
|
|
1363
|
+
providedIn: 'root',
|
|
1364
|
+
}]
|
|
1365
|
+
}], ctorParameters: () => [{ type: i1$2.MessageService }, { type: i1.TranslocoService }, { type: i0.NgZone }] });
|
|
1366
|
+
|
|
1367
|
+
class TranslateLabelsAbstractService {
|
|
1368
|
+
constructor() {
|
|
1523
1369
|
}
|
|
1524
|
-
static { this
|
|
1525
|
-
|
|
1526
|
-
type: 'string',
|
|
1527
|
-
},
|
|
1528
|
-
browserId: {
|
|
1529
|
-
type: 'string',
|
|
1530
|
-
},
|
|
1531
|
-
}; }
|
|
1370
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: TranslateLabelsAbstractService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1371
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: TranslateLabelsAbstractService, providedIn: 'root' }); }
|
|
1532
1372
|
}
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
this.
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1373
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: TranslateLabelsAbstractService, decorators: [{
|
|
1374
|
+
type: Injectable,
|
|
1375
|
+
args: [{
|
|
1376
|
+
providedIn: 'root',
|
|
1377
|
+
}]
|
|
1378
|
+
}], ctorParameters: () => [] });
|
|
1379
|
+
|
|
1380
|
+
class BaseFormService {
|
|
1381
|
+
constructor(translateLabelsService, validatorService, messageService, translocoService) {
|
|
1382
|
+
this.translateLabelsService = translateLabelsService;
|
|
1383
|
+
this.validatorService = validatorService;
|
|
1384
|
+
this.messageService = messageService;
|
|
1385
|
+
this.translocoService = translocoService;
|
|
1386
|
+
this.initFormGroup = (formGroup, targetClass, initialValues, updateOnChangeControls) => {
|
|
1387
|
+
if (!formGroup)
|
|
1388
|
+
throw new SpiderlyError('You need to instantiate the form group.');
|
|
1389
|
+
if (!targetClass)
|
|
1390
|
+
throw new SpiderlyError('You need to pass targetClass.');
|
|
1391
|
+
if (!initialValues)
|
|
1392
|
+
initialValues = {};
|
|
1393
|
+
Object.keys(targetClass.schema).forEach((formControlName) => {
|
|
1394
|
+
const propSchema = targetClass.schema[formControlName];
|
|
1395
|
+
let propInitialValue = initialValues[formControlName];
|
|
1396
|
+
const existingControl = formGroup.get(formControlName);
|
|
1397
|
+
if (propSchema.type.endsWith('[]') &&
|
|
1398
|
+
propSchema.nestedConstructor &&
|
|
1399
|
+
propSchema.type !== 'Namebook[]') {
|
|
1400
|
+
if (existingControl instanceof SpiderlyFormArray) {
|
|
1401
|
+
this.initFormArray(existingControl, propSchema.nestedConstructor, propInitialValue);
|
|
1402
|
+
}
|
|
1403
|
+
else {
|
|
1404
|
+
const control = new SpiderlyFormArray([], this.translocoService, this);
|
|
1405
|
+
this.initFormArray(control, propSchema.nestedConstructor, propInitialValue);
|
|
1406
|
+
control.label = formControlName;
|
|
1407
|
+
control.labelForDisplay = this.getTranslatedLabel(formControlName);
|
|
1408
|
+
formGroup.setControl(formControlName, control);
|
|
1409
|
+
}
|
|
1410
|
+
}
|
|
1411
|
+
else if (propSchema.nestedConstructor &&
|
|
1412
|
+
propSchema.type !== 'Namebook[]') {
|
|
1413
|
+
if (existingControl instanceof SpiderlyFormGroup) {
|
|
1414
|
+
this.initFormGroup(existingControl, propSchema.nestedConstructor, propInitialValue);
|
|
1415
|
+
}
|
|
1416
|
+
else {
|
|
1417
|
+
const control = new SpiderlyFormGroup({});
|
|
1418
|
+
this.initFormGroup(control, propSchema.nestedConstructor, propInitialValue);
|
|
1419
|
+
formGroup.setControl(formControlName, control);
|
|
1420
|
+
}
|
|
1421
|
+
}
|
|
1422
|
+
else {
|
|
1423
|
+
// HACK: Because on the backend id type is not nullable on generated DTOs, we need to do this, it's ugly hack and we should make it better.
|
|
1424
|
+
if (formControlName === 'id' && !propInitialValue) {
|
|
1425
|
+
propInitialValue = 0;
|
|
1426
|
+
}
|
|
1427
|
+
if (existingControl instanceof SpiderlyFormControl) {
|
|
1428
|
+
existingControl.setValue(propInitialValue);
|
|
1429
|
+
}
|
|
1430
|
+
else {
|
|
1431
|
+
let control;
|
|
1432
|
+
if (updateOnChangeControls?.includes(formControlName) ||
|
|
1433
|
+
(formControlName.endsWith('Id') && formControlName.length > 2) ||
|
|
1434
|
+
propSchema.type === 'Date' ||
|
|
1435
|
+
propSchema.type === 'Namebook[]') {
|
|
1436
|
+
control = new SpiderlyFormControl(propInitialValue, { updateOn: 'change' });
|
|
1437
|
+
}
|
|
1438
|
+
else {
|
|
1439
|
+
control = new SpiderlyFormControl(propInitialValue, { updateOn: 'blur' });
|
|
1440
|
+
}
|
|
1441
|
+
control.label = formControlName;
|
|
1442
|
+
control.labelForDisplay = this.getTranslatedLabel(formControlName);
|
|
1443
|
+
control.parentClassName = targetClass.typeName;
|
|
1444
|
+
this.validatorService.setValidator(control, targetClass.typeName);
|
|
1445
|
+
formGroup.setControl(formControlName, control);
|
|
1446
|
+
}
|
|
1447
|
+
}
|
|
1448
|
+
});
|
|
1449
|
+
formGroup.targetClass = targetClass;
|
|
1450
|
+
return formGroup;
|
|
1451
|
+
};
|
|
1452
|
+
//#region Helpers
|
|
1453
|
+
this.showInvalidFieldsMessage = () => {
|
|
1454
|
+
this.messageService.warningMessage(this.translocoService.translate('YouHaveSomeInvalidFieldsDescription'), this.translocoService.translate('YouHaveSomeInvalidFieldsTitle'));
|
|
1455
|
+
};
|
|
1456
|
+
this.getSaveBodyMainDTOKey = (saveBodyClass) => {
|
|
1457
|
+
const schema = saveBodyClass.schema;
|
|
1458
|
+
return Object.keys(schema).find(k => schema[k].isSaveBodyMainDTO === true);
|
|
1459
|
+
};
|
|
1460
|
+
this.mapMainUIFormToSaveBody = (mainUIFormClass, mainUIFormValues) => {
|
|
1461
|
+
let saveBody = {};
|
|
1462
|
+
Object.keys(mainUIFormClass.schema).forEach(propName => {
|
|
1463
|
+
const property = mainUIFormClass.schema[propName];
|
|
1464
|
+
const value = mainUIFormValues[propName];
|
|
1465
|
+
// Handle ordered one-to-many (e.g., "orderedItemsMainUIFormDTO" -> "orderedItemsSaveBodyDTO")
|
|
1466
|
+
if (propName.startsWith('ordered') && propName.endsWith('MainUIFormDTO')) {
|
|
1467
|
+
const newKey = propName.replace('MainUIFormDTO', 'SaveBodyDTO');
|
|
1468
|
+
// Recursively map nested DTOs
|
|
1469
|
+
const relatedEntity = property.nestedConstructor;
|
|
1470
|
+
saveBody[newKey] = value?.map(item => this.mapMainUIFormToSaveBody(relatedEntity, item)) ?? [];
|
|
1471
|
+
}
|
|
1472
|
+
// Handle multi-select (e.g., "itemsIds" -> "selectedItemsIds")
|
|
1473
|
+
else if (propName.endsWith('Ids')) {
|
|
1474
|
+
saveBody[`selected${capitalizeFirstChar(propName)}`] = value ?? [];
|
|
1475
|
+
}
|
|
1476
|
+
// Handle multi-autocomplete (e.g., "itemsNamebookDTOList" -> "selectedItemsIds")
|
|
1477
|
+
else if (propName.endsWith('NamebookDTOList')) {
|
|
1478
|
+
saveBody[`selected${capitalizeFirstChar(propName)}`] = value ?? [];
|
|
1479
|
+
}
|
|
1480
|
+
// Handle the main DTO object (e.g., "entityDTO")
|
|
1481
|
+
else {
|
|
1482
|
+
saveBody[propName] = value;
|
|
1483
|
+
}
|
|
1484
|
+
});
|
|
1485
|
+
return saveBody;
|
|
1486
|
+
};
|
|
1487
|
+
}
|
|
1488
|
+
getTranslatedLabel(formControlName) {
|
|
1489
|
+
if (formControlName.endsWith('Id') && formControlName.length > 2) {
|
|
1490
|
+
formControlName = formControlName.substring(0, formControlName.length - 2);
|
|
1491
|
+
}
|
|
1492
|
+
else if (formControlName.endsWith('DisplayName')) {
|
|
1493
|
+
formControlName = formControlName.replace('DisplayName', '');
|
|
1494
|
+
}
|
|
1495
|
+
return this.translateLabelsService.translate(formControlName);
|
|
1496
|
+
}
|
|
1497
|
+
addNewFormGroupToFormArray(formArray, targetClass, initialValues, index) {
|
|
1498
|
+
let helperFormGroup = new SpiderlyFormGroup({});
|
|
1499
|
+
this.initFormGroup(helperFormGroup, targetClass, initialValues);
|
|
1500
|
+
if (index == null) {
|
|
1501
|
+
formArray.push(helperFormGroup);
|
|
1502
|
+
}
|
|
1503
|
+
else {
|
|
1504
|
+
formArray.insert(index, helperFormGroup);
|
|
1505
|
+
}
|
|
1506
|
+
return helperFormGroup;
|
|
1507
|
+
}
|
|
1508
|
+
removeFormControlFromTheFormArray(formArray, index) {
|
|
1509
|
+
if (index == null)
|
|
1510
|
+
throw new SpiderlyError('Can not pass null index.');
|
|
1511
|
+
formArray.removeAt(index);
|
|
1512
|
+
}
|
|
1513
|
+
initFormArray(formArray, targetClass, initialValues = []) {
|
|
1514
|
+
if (!formArray)
|
|
1515
|
+
throw new SpiderlyError('You must pass a FormArray instance to be initialized or updated.');
|
|
1516
|
+
if (!targetClass)
|
|
1517
|
+
throw new SpiderlyError('You did not initialize targetClass');
|
|
1518
|
+
formArray.formGroupInitialValues = {}; // When we need we can pass formGroupInitialValues to this method instead of assigning it to empty object
|
|
1519
|
+
formArray.targetClass = targetClass;
|
|
1520
|
+
initialValues.forEach((model, index) => {
|
|
1521
|
+
const existingControl = formArray.at(index);
|
|
1522
|
+
if (existingControl instanceof SpiderlyFormGroup) {
|
|
1523
|
+
this.initFormGroup(existingControl, targetClass, model);
|
|
1524
|
+
}
|
|
1525
|
+
else {
|
|
1526
|
+
let helperFormGroup = new SpiderlyFormGroup({});
|
|
1527
|
+
this.initFormGroup(helperFormGroup, targetClass, model);
|
|
1528
|
+
formArray.push(helperFormGroup);
|
|
1529
|
+
}
|
|
1530
|
+
});
|
|
1531
|
+
return formArray;
|
|
1532
|
+
}
|
|
1533
|
+
generateNewNegativeId(formArray) {
|
|
1534
|
+
return -formArray.getRawValue().filter(x => x.id < 0).length - 1;
|
|
1535
|
+
}
|
|
1536
|
+
isControlValid(control, controlNamesFromHtml) {
|
|
1537
|
+
let invalid = false;
|
|
1538
|
+
if (control instanceof SpiderlyFormControl) {
|
|
1539
|
+
if (control.invalid &&
|
|
1540
|
+
(controlNamesFromHtml == null || controlNamesFromHtml?.includes(control.label))) {
|
|
1541
|
+
control.markAsDirty();
|
|
1542
|
+
invalid = true;
|
|
1543
|
+
}
|
|
1544
|
+
}
|
|
1545
|
+
else if (control instanceof SpiderlyFormGroup) {
|
|
1546
|
+
Object.keys(control.controls).forEach(key => {
|
|
1547
|
+
const nestedControl = control.controls[key];
|
|
1548
|
+
if (!this.isControlValid(nestedControl, control.controlNamesFromHtml)) {
|
|
1549
|
+
invalid = true;
|
|
1550
|
+
}
|
|
1551
|
+
});
|
|
1552
|
+
}
|
|
1553
|
+
else if (control instanceof SpiderlyFormArray) {
|
|
1554
|
+
control.controls.forEach((nestedControl) => {
|
|
1555
|
+
if (!this.isControlValid(nestedControl)) {
|
|
1556
|
+
invalid = true;
|
|
1557
|
+
}
|
|
1558
|
+
});
|
|
1559
|
+
}
|
|
1560
|
+
if (invalid) {
|
|
1561
|
+
return false;
|
|
1562
|
+
}
|
|
1563
|
+
return true;
|
|
1564
|
+
}
|
|
1565
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: BaseFormService, deps: [{ token: TranslateLabelsAbstractService }, { token: ValidatorAbstractService }, { token: SpiderlyMessageService }, { token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1566
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: BaseFormService, providedIn: 'root' }); }
|
|
1567
|
+
}
|
|
1568
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: BaseFormService, decorators: [{
|
|
1569
|
+
type: Injectable,
|
|
1570
|
+
args: [{
|
|
1571
|
+
providedIn: 'root',
|
|
1572
|
+
}]
|
|
1573
|
+
}], ctorParameters: () => [{ type: TranslateLabelsAbstractService }, { type: ValidatorAbstractService }, { type: SpiderlyMessageService }, { type: i1.TranslocoService }] });
|
|
1574
|
+
|
|
1575
|
+
class BaseFormCopy {
|
|
1576
|
+
constructor(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService) {
|
|
1577
|
+
this.differs = differs;
|
|
1578
|
+
this.http = http;
|
|
1579
|
+
this.messageService = messageService;
|
|
1580
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
1581
|
+
this.router = router;
|
|
1582
|
+
this.route = route;
|
|
1583
|
+
this.translocoService = translocoService;
|
|
1584
|
+
this.baseFormService = baseFormService;
|
|
1585
|
+
this.parentFormGroup = new SpiderlyFormGroup({});
|
|
1586
|
+
this.successfulSaveToastDescription = this.translocoService.translate('SuccessfulSaveToastDescription');
|
|
1587
|
+
//#region Model
|
|
1588
|
+
// onSave method is here only because of the hooks, we should move everything except them to the BaseFromService
|
|
1589
|
+
this.onSave = (reroute = true) => {
|
|
1590
|
+
if (!this.saveBodyClass)
|
|
1591
|
+
throw new SpiderlyError('You did not initialize saveBodyClass');
|
|
1592
|
+
if (!this.mainUIFormClass)
|
|
1593
|
+
throw new SpiderlyError('You did not initialize mainUIFormClass');
|
|
1594
|
+
this.saveBody = this.parentFormGroup.initSaveBody();
|
|
1595
|
+
this.onBeforeSave(this.saveBody);
|
|
1596
|
+
this.saveBody = this.saveBody ?? this.parentFormGroup.getRawValue();
|
|
1597
|
+
const isValid = this.baseFormService.isControlValid(this.parentFormGroup);
|
|
1598
|
+
if (isValid) {
|
|
1599
|
+
this.parentFormGroup.saveObservableMethod(this.saveBody).subscribe(res => {
|
|
1600
|
+
this.messageService.successMessage(this.successfulSaveToastDescription);
|
|
1601
|
+
this.baseFormService.initFormGroup(this.parentFormGroup, this.mainUIFormClass, res);
|
|
1602
|
+
if (reroute) {
|
|
1603
|
+
const saveBodyMainDTOKey = this.baseFormService.getSaveBodyMainDTOKey(this.saveBodyClass);
|
|
1604
|
+
const savedObjectId = res[saveBodyMainDTOKey]?.id;
|
|
1605
|
+
this.rerouteToSavedObject(savedObjectId); // You always need to have id, because of id == 0 and version change
|
|
1606
|
+
}
|
|
1607
|
+
this.onAfterSave();
|
|
1608
|
+
});
|
|
1609
|
+
this.onAfterSaveRequest();
|
|
1610
|
+
}
|
|
1611
|
+
else {
|
|
1612
|
+
this.baseFormService.showInvalidFieldsMessage();
|
|
1613
|
+
}
|
|
1614
|
+
};
|
|
1615
|
+
this.rerouteToSavedObject = (rerouteId) => {
|
|
1616
|
+
if (rerouteId == null) {
|
|
1617
|
+
const currentUrl = this.router.url;
|
|
1618
|
+
const parentUrl = getParentUrl(currentUrl);
|
|
1619
|
+
this.router.navigateByUrl(parentUrl);
|
|
1620
|
+
return;
|
|
1621
|
+
}
|
|
1622
|
+
const segments = this.router.url.split('/');
|
|
1623
|
+
segments[segments.length - 1] = rerouteId.toString();
|
|
1624
|
+
const newUrl = segments.join('/');
|
|
1625
|
+
this.router.navigateByUrl(newUrl);
|
|
1626
|
+
};
|
|
1627
|
+
this.onBeforeSave = (saveBody) => { };
|
|
1628
|
+
this.onAfterSave = () => { };
|
|
1629
|
+
this.onAfterSaveRequest = () => { };
|
|
1630
|
+
}
|
|
1631
|
+
ngOnInit() {
|
|
1632
|
+
}
|
|
1633
|
+
//#endregion
|
|
1634
|
+
//#region Model List
|
|
1635
|
+
getFormArrayControlByIndex(formControlName, formArray, index, filter) {
|
|
1636
|
+
// if(formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)
|
|
1637
|
+
// formArray.controlNamesFromHtml.push(formControlName);
|
|
1638
|
+
let filteredFormGroups;
|
|
1639
|
+
if (filter) {
|
|
1640
|
+
filteredFormGroups = filter(formArray.controls);
|
|
1641
|
+
}
|
|
1642
|
+
else {
|
|
1643
|
+
return formArray.controls[index].controls[formControlName];
|
|
1644
|
+
}
|
|
1645
|
+
return filteredFormGroups[index]?.controls[formControlName]; // FT: Don't change this. It's always possible that change detection occurs before something.
|
|
1646
|
+
}
|
|
1647
|
+
getFormArrayControls(formControlName, formArray, filter) {
|
|
1648
|
+
// if(formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)
|
|
1649
|
+
// formArray.controlNamesFromHtml.push(formControlName);
|
|
1650
|
+
let filteredFormGroups;
|
|
1651
|
+
if (filter) {
|
|
1652
|
+
filteredFormGroups = filter(formArray.controls);
|
|
1653
|
+
}
|
|
1654
|
+
else {
|
|
1655
|
+
return formArray.controls.map(x => x.controls[formControlName]);
|
|
1656
|
+
}
|
|
1657
|
+
return filteredFormGroups.map(x => x.controls[formControlName]);
|
|
1658
|
+
}
|
|
1659
|
+
removeFormControlsFromTheFormArray(formArray, indexes) {
|
|
1660
|
+
// Sort indexes in descending order to avoid index shifts when removing controls
|
|
1661
|
+
const sortedIndexes = indexes.sort((a, b) => b - a);
|
|
1662
|
+
sortedIndexes.forEach(index => {
|
|
1663
|
+
if (index >= 0 && index < formArray.length) {
|
|
1664
|
+
formArray.removeAt(index);
|
|
1665
|
+
}
|
|
1666
|
+
});
|
|
1667
|
+
}
|
|
1668
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: BaseFormCopy, deps: [{ token: i0.KeyValueDiffers }, { token: i1$3.HttpClient }, { token: SpiderlyMessageService }, { token: i0.ChangeDetectorRef }, { token: i3$2.Router }, { token: i3$2.ActivatedRoute }, { token: i1.TranslocoService }, { token: BaseFormService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1669
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: BaseFormCopy, isStandalone: false, selector: "base-form", ngImport: i0, template: '', isInline: true }); }
|
|
1670
|
+
}
|
|
1671
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: BaseFormCopy, decorators: [{
|
|
1672
|
+
type: Component,
|
|
1673
|
+
args: [{ selector: 'base-form', template: '', standalone: false }]
|
|
1674
|
+
}], ctorParameters: () => [{ type: i0.KeyValueDiffers }, { type: i1$3.HttpClient }, { type: SpiderlyMessageService }, { type: i0.ChangeDetectorRef }, { type: i3$2.Router }, { type: i3$2.ActivatedRoute }, { type: i1.TranslocoService }, { type: BaseFormService }] });
|
|
1675
|
+
|
|
1676
|
+
class CardSkeletonComponent {
|
|
1677
|
+
constructor() {
|
|
1678
|
+
this.height = 400;
|
|
1679
|
+
this.titleHeight = 23;
|
|
1680
|
+
this.padding = 21;
|
|
1681
|
+
this.titleMarginBottom = 14;
|
|
1682
|
+
this.titleMarginTop = 4;
|
|
1683
|
+
}
|
|
1684
|
+
ngOnInit() {
|
|
1685
|
+
this.dataHeight = this.height - (this.titleHeight + this.padding * 2 + this.titleMarginBottom + this.titleMarginTop);
|
|
1686
|
+
}
|
|
1687
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: CardSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1688
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: CardSkeletonComponent, isStandalone: true, selector: "card-skeleton", inputs: { height: "height" }, ngImport: i0, template: "<div class=\"border-round border-1 surface-border p-4 surface-card\" [style]=\"'height: ' + height + 'px;'\">\n <div [style]=\"'margin-bottom:' + titleMarginBottom + 'px; margin-top:' + titleMarginTop + 'px;'\">\n <p-skeleton width=\"160px\" [height]=\"titleHeight + 'px'\"></p-skeleton>\n </div>\n <div [style]=\"'height: ' + dataHeight + 'px;'\">\n <p-skeleton width=\"100%\" height=\"100%\"/>\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1$4.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }] }); }
|
|
1689
|
+
}
|
|
1690
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: CardSkeletonComponent, decorators: [{
|
|
1691
|
+
type: Component,
|
|
1692
|
+
args: [{ selector: 'card-skeleton', imports: [SkeletonModule], template: "<div class=\"border-round border-1 surface-border p-4 surface-card\" [style]=\"'height: ' + height + 'px;'\">\n <div [style]=\"'margin-bottom:' + titleMarginBottom + 'px; margin-top:' + titleMarginTop + 'px;'\">\n <p-skeleton width=\"160px\" [height]=\"titleHeight + 'px'\"></p-skeleton>\n </div>\n <div [style]=\"'height: ' + dataHeight + 'px;'\">\n <p-skeleton width=\"100%\" height=\"100%\"/>\n </div>\n</div>" }]
|
|
1693
|
+
}], propDecorators: { height: [{
|
|
1694
|
+
type: Input
|
|
1695
|
+
}] } });
|
|
1696
|
+
|
|
1697
|
+
class UserBase extends BaseEntity {
|
|
1698
|
+
static { this.typeName = 'UserBase'; }
|
|
1699
|
+
constructor({ id, email, } = {}) {
|
|
1700
|
+
super();
|
|
1701
|
+
this.id = id;
|
|
1702
|
+
this.email = email;
|
|
1703
|
+
}
|
|
1704
|
+
static { this.schema = {
|
|
1705
|
+
id: {
|
|
1706
|
+
type: 'number',
|
|
1707
|
+
},
|
|
1708
|
+
email: {
|
|
1709
|
+
type: 'string',
|
|
1710
|
+
},
|
|
1711
|
+
}; }
|
|
1712
|
+
}
|
|
1713
|
+
class AuthResult extends BaseEntity {
|
|
1714
|
+
static { this.typeName = 'AuthResult'; }
|
|
1715
|
+
constructor({ userId, email, accessToken, refreshToken } = {}) {
|
|
1716
|
+
super();
|
|
1717
|
+
this.userId = userId;
|
|
1718
|
+
this.email = email;
|
|
1719
|
+
this.accessToken = accessToken;
|
|
1720
|
+
this.refreshToken = refreshToken;
|
|
1721
|
+
}
|
|
1722
|
+
static { this.schema = {
|
|
1723
|
+
userId: {
|
|
1724
|
+
type: 'number',
|
|
1556
1725
|
},
|
|
1557
|
-
|
|
1558
|
-
type: '
|
|
1726
|
+
email: {
|
|
1727
|
+
type: 'string',
|
|
1559
1728
|
},
|
|
1560
|
-
|
|
1561
|
-
type: '
|
|
1729
|
+
accessToken: {
|
|
1730
|
+
type: 'string',
|
|
1731
|
+
},
|
|
1732
|
+
refreshToken: {
|
|
1733
|
+
type: 'string',
|
|
1562
1734
|
},
|
|
1563
1735
|
}; }
|
|
1564
1736
|
}
|
|
1565
|
-
class
|
|
1566
|
-
static { this.typeName = '
|
|
1567
|
-
constructor({
|
|
1737
|
+
class VerificationTokenRequest extends BaseEntity {
|
|
1738
|
+
static { this.typeName = 'VerificationTokenRequest'; }
|
|
1739
|
+
constructor({ verificationCode, browserId, email } = {}) {
|
|
1568
1740
|
super();
|
|
1569
|
-
this.
|
|
1570
|
-
this.
|
|
1571
|
-
this.
|
|
1741
|
+
this.verificationCode = verificationCode;
|
|
1742
|
+
this.browserId = browserId;
|
|
1743
|
+
this.email = email;
|
|
1572
1744
|
}
|
|
1573
1745
|
static { this.schema = {
|
|
1574
|
-
|
|
1575
|
-
type: '
|
|
1576
|
-
get nestedConstructor() { return Role; },
|
|
1577
|
-
isMainDTOForMainUIFormDTO: true,
|
|
1746
|
+
verificationCode: {
|
|
1747
|
+
type: 'string',
|
|
1578
1748
|
},
|
|
1579
|
-
|
|
1580
|
-
type: '
|
|
1581
|
-
get nestedConstructor() { return Namebook; },
|
|
1749
|
+
browserId: {
|
|
1750
|
+
type: 'string',
|
|
1582
1751
|
},
|
|
1583
|
-
|
|
1584
|
-
type: '
|
|
1752
|
+
email: {
|
|
1753
|
+
type: 'string',
|
|
1585
1754
|
},
|
|
1586
1755
|
}; }
|
|
1587
1756
|
}
|
|
1588
|
-
class
|
|
1589
|
-
static { this.typeName = '
|
|
1590
|
-
constructor({
|
|
1757
|
+
class ExternalProvider extends BaseEntity {
|
|
1758
|
+
static { this.typeName = 'ExternalProvider'; }
|
|
1759
|
+
constructor({ idToken, browserId } = {}) {
|
|
1591
1760
|
super();
|
|
1592
|
-
this.
|
|
1593
|
-
this.
|
|
1594
|
-
this.selectedUsersIds = selectedUsersIds;
|
|
1761
|
+
this.idToken = idToken;
|
|
1762
|
+
this.browserId = browserId;
|
|
1595
1763
|
}
|
|
1596
1764
|
static { this.schema = {
|
|
1597
|
-
|
|
1598
|
-
type: '
|
|
1599
|
-
|
|
1600
|
-
|
|
1765
|
+
idToken: {
|
|
1766
|
+
type: 'string',
|
|
1767
|
+
},
|
|
1768
|
+
browserId: {
|
|
1769
|
+
type: 'string',
|
|
1601
1770
|
},
|
|
1602
|
-
|
|
1603
|
-
|
|
1771
|
+
}; }
|
|
1772
|
+
}
|
|
1773
|
+
class UserRole extends BaseEntity {
|
|
1774
|
+
static { this.typeName = 'UserRole'; }
|
|
1775
|
+
constructor({ roleId, userId } = {}) {
|
|
1776
|
+
super();
|
|
1777
|
+
this.roleId = roleId;
|
|
1778
|
+
this.userId = userId;
|
|
1779
|
+
}
|
|
1780
|
+
static { this.schema = {
|
|
1781
|
+
roleId: {
|
|
1782
|
+
type: 'number',
|
|
1604
1783
|
},
|
|
1605
|
-
|
|
1606
|
-
type: 'number
|
|
1784
|
+
userId: {
|
|
1785
|
+
type: 'number',
|
|
1607
1786
|
},
|
|
1608
1787
|
}; }
|
|
1609
1788
|
}
|
|
1610
|
-
class
|
|
1611
|
-
static { this.typeName = '
|
|
1612
|
-
constructor({
|
|
1789
|
+
class LoginVerificationToken extends BaseEntity {
|
|
1790
|
+
static { this.typeName = 'LoginVerificationToken'; }
|
|
1791
|
+
constructor({ email, userId, browserId, expireAt } = {}) {
|
|
1613
1792
|
super();
|
|
1614
|
-
this.
|
|
1615
|
-
this.
|
|
1616
|
-
this.
|
|
1617
|
-
this.
|
|
1618
|
-
this.code = code;
|
|
1619
|
-
this.id = id;
|
|
1793
|
+
this.email = email;
|
|
1794
|
+
this.userId = userId;
|
|
1795
|
+
this.browserId = browserId;
|
|
1796
|
+
this.expireAt = expireAt;
|
|
1620
1797
|
}
|
|
1621
1798
|
static { this.schema = {
|
|
1622
|
-
|
|
1799
|
+
email: {
|
|
1623
1800
|
type: 'string',
|
|
1624
1801
|
},
|
|
1625
|
-
|
|
1626
|
-
type: '
|
|
1802
|
+
userId: {
|
|
1803
|
+
type: 'number',
|
|
1627
1804
|
},
|
|
1628
|
-
|
|
1805
|
+
browserId: {
|
|
1629
1806
|
type: 'string',
|
|
1630
1807
|
},
|
|
1631
|
-
|
|
1632
|
-
type: '
|
|
1808
|
+
expireAt: {
|
|
1809
|
+
type: 'Date',
|
|
1633
1810
|
},
|
|
1634
|
-
|
|
1811
|
+
}; }
|
|
1812
|
+
}
|
|
1813
|
+
class Login extends BaseEntity {
|
|
1814
|
+
static { this.typeName = 'Login'; }
|
|
1815
|
+
constructor({ email, browserId } = {}) {
|
|
1816
|
+
super();
|
|
1817
|
+
this.email = email;
|
|
1818
|
+
this.browserId = browserId;
|
|
1819
|
+
}
|
|
1820
|
+
static { this.schema = {
|
|
1821
|
+
email: {
|
|
1635
1822
|
type: 'string',
|
|
1636
1823
|
},
|
|
1637
|
-
|
|
1638
|
-
type: '
|
|
1824
|
+
browserId: {
|
|
1825
|
+
type: 'string',
|
|
1639
1826
|
},
|
|
1640
1827
|
}; }
|
|
1641
1828
|
}
|
|
1642
|
-
class
|
|
1643
|
-
static { this.typeName = '
|
|
1644
|
-
constructor({
|
|
1829
|
+
class RefreshTokenRequest extends BaseEntity {
|
|
1830
|
+
static { this.typeName = 'RefreshTokenRequest'; }
|
|
1831
|
+
constructor({ refreshToken, browserId } = {}) {
|
|
1645
1832
|
super();
|
|
1646
|
-
this.
|
|
1833
|
+
this.refreshToken = refreshToken;
|
|
1834
|
+
this.browserId = browserId;
|
|
1647
1835
|
}
|
|
1648
1836
|
static { this.schema = {
|
|
1649
|
-
|
|
1650
|
-
type: '
|
|
1651
|
-
|
|
1837
|
+
refreshToken: {
|
|
1838
|
+
type: 'string',
|
|
1839
|
+
},
|
|
1840
|
+
browserId: {
|
|
1841
|
+
type: 'string',
|
|
1652
1842
|
},
|
|
1653
1843
|
}; }
|
|
1654
1844
|
}
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
constructor() {
|
|
1658
|
-
|
|
1659
|
-
this.
|
|
1660
|
-
this.padding = 21;
|
|
1661
|
-
this.titleMarginBottom = 14;
|
|
1662
|
-
this.titleMarginTop = 4;
|
|
1663
|
-
}
|
|
1664
|
-
ngOnInit() {
|
|
1665
|
-
this.dataHeight = this.height - (this.titleHeight + this.padding * 2 + this.titleMarginBottom + this.titleMarginTop);
|
|
1845
|
+
class SendLoginVerificationEmailResult extends BaseEntity {
|
|
1846
|
+
static { this.typeName = 'SendLoginVerificationEmailResult'; }
|
|
1847
|
+
constructor({ message } = {}) {
|
|
1848
|
+
super();
|
|
1849
|
+
this.message = message;
|
|
1666
1850
|
}
|
|
1667
|
-
static { this
|
|
1668
|
-
|
|
1851
|
+
static { this.schema = {
|
|
1852
|
+
message: {
|
|
1853
|
+
type: 'string',
|
|
1854
|
+
},
|
|
1855
|
+
}; }
|
|
1669
1856
|
}
|
|
1670
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: CardSkeletonComponent, decorators: [{
|
|
1671
|
-
type: Component,
|
|
1672
|
-
args: [{ selector: 'card-skeleton', imports: [SkeletonModule], template: "<div class=\"border-round border-1 surface-border p-4 surface-card\" [style]=\"'height: ' + height + 'px;'\">\r\n <div [style]=\"'margin-bottom:' + titleMarginBottom + 'px; margin-top:' + titleMarginTop + 'px;'\">\r\n <p-skeleton width=\"160px\" [height]=\"titleHeight + 'px'\"></p-skeleton>\r\n </div>\r\n <div [style]=\"'height: ' + dataHeight + 'px;'\">\r\n <p-skeleton width=\"100%\" height=\"100%\"/>\r\n </div>\r\n</div>" }]
|
|
1673
|
-
}], propDecorators: { height: [{
|
|
1674
|
-
type: Input
|
|
1675
|
-
}] } });
|
|
1676
1857
|
|
|
1677
1858
|
class PanelBodyComponent {
|
|
1678
1859
|
constructor() {
|
|
@@ -1681,11 +1862,11 @@ class PanelBodyComponent {
|
|
|
1681
1862
|
ngOnInit() {
|
|
1682
1863
|
}
|
|
1683
1864
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PanelBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1684
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: PanelBodyComponent, isStandalone: false, selector: "panel-body", inputs: { normalBottomPadding: "normalBottomPadding" }, ngImport: i0, template: "<!-- this is selector, not the class -->\
|
|
1865
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: PanelBodyComponent, isStandalone: false, selector: "panel-body", inputs: { normalBottomPadding: "normalBottomPadding" }, ngImport: i0, template: "<!-- this is selector, not the class -->\n<div class=\"panel-body\"\n [ngClass]=\"{\n 'non-grid-panel-bottom-padding': normalBottomPadding, \n }\"\n style=\"overflow: auto;\">\n <!-- 'card': true, -->\n <ng-content></ng-content>\n</div>", styles: [".non-grid-panel-bottom-padding{padding-bottom:14px}@media (max-width: 600px){.non-grid-panel-bottom-padding{padding-bottom:0}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
1685
1866
|
}
|
|
1686
1867
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PanelBodyComponent, decorators: [{
|
|
1687
1868
|
type: Component,
|
|
1688
|
-
args: [{ selector: 'panel-body', standalone: false, template: "<!-- this is selector, not the class -->\
|
|
1869
|
+
args: [{ selector: 'panel-body', standalone: false, template: "<!-- this is selector, not the class -->\n<div class=\"panel-body\"\n [ngClass]=\"{\n 'non-grid-panel-bottom-padding': normalBottomPadding, \n }\"\n style=\"overflow: auto;\">\n <!-- 'card': true, -->\n <ng-content></ng-content>\n</div>", styles: [".non-grid-panel-bottom-padding{padding-bottom:14px}@media (max-width: 600px){.non-grid-panel-bottom-padding{padding-bottom:0}}\n"] }]
|
|
1689
1870
|
}], ctorParameters: () => [], propDecorators: { normalBottomPadding: [{
|
|
1690
1871
|
type: Input
|
|
1691
1872
|
}] } });
|
|
@@ -1695,11 +1876,11 @@ class PanelFooterComponent {
|
|
|
1695
1876
|
ngOnInit() {
|
|
1696
1877
|
}
|
|
1697
1878
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PanelFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1698
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: PanelFooterComponent, isStandalone: false, selector: "panel-footer", ngImport: i0, template: "<div class=\"spiderly-panel-footer\">\
|
|
1879
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: PanelFooterComponent, isStandalone: false, selector: "panel-footer", ngImport: i0, template: "<div class=\"spiderly-panel-footer\">\n <div class=\"buttons-wrapper\">\n <ng-content></ng-content>\n </div>\n <span class=\"p-text-secondary\">\n <ng-content select=\"[footerRight]\"></ng-content>\n </span>\n</div>", styles: [".spiderly-panel-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--p-content-border-color);border-bottom-right-radius:var(--p-content-border-radius);border-bottom-left-radius:var(--p-content-border-radius);padding:18px}.buttons-wrapper{gap:.5rem;display:flex;align-items:center;flex-wrap:wrap}\n"] }); }
|
|
1699
1880
|
}
|
|
1700
1881
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PanelFooterComponent, decorators: [{
|
|
1701
1882
|
type: Component,
|
|
1702
|
-
args: [{ selector: 'panel-footer', standalone: false, template: "<div class=\"spiderly-panel-footer\">\
|
|
1883
|
+
args: [{ selector: 'panel-footer', standalone: false, template: "<div class=\"spiderly-panel-footer\">\n <div class=\"buttons-wrapper\">\n <ng-content></ng-content>\n </div>\n <span class=\"p-text-secondary\">\n <ng-content select=\"[footerRight]\"></ng-content>\n </span>\n</div>", styles: [".spiderly-panel-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--p-content-border-color);border-bottom-right-radius:var(--p-content-border-radius);border-bottom-left-radius:var(--p-content-border-radius);padding:18px}.buttons-wrapper{gap:.5rem;display:flex;align-items:center;flex-wrap:wrap}\n"] }]
|
|
1703
1884
|
}], ctorParameters: () => [] });
|
|
1704
1885
|
|
|
1705
1886
|
class PanelHeaderComponent {
|
|
@@ -1720,11 +1901,11 @@ class PanelHeaderComponent {
|
|
|
1720
1901
|
tab.isSelected = true;
|
|
1721
1902
|
}
|
|
1722
1903
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PanelHeaderComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1723
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: PanelHeaderComponent, isStandalone: false, selector: "panel-header", inputs: { title: "title", showBigTitle: "showBigTitle", showIcon: "showIcon", icon: "icon", index: "index", tabs: "tabs" }, ngImport: i0, template: "<div style=\"display: flex; align-items: center; gap: 24px; flex-wrap: wrap;\">\
|
|
1904
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: PanelHeaderComponent, isStandalone: false, selector: "panel-header", inputs: { title: "title", showBigTitle: "showBigTitle", showIcon: "showIcon", icon: "icon", index: "index", tabs: "tabs" }, ngImport: i0, template: "<div style=\"display: flex; align-items: center; gap: 24px; flex-wrap: wrap;\">\n @if (tabs == null) {\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\n <i class=\"{{icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 21px' : 'font-size: 16px;'\"></i> \n <div [style]=\"(showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : '')\">{{title}}</div>\n </div>\n }\n @else {\n @for (tab of tabs; track $index) {\n <div (click)=\"setTabIsSelected(tab)\"\n [style]=\"{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n cursor: 'pointer',\n fontWeight: tab.isSelected ? '700' : 'normal'\n }\">\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\n <i class=\"{{tab.icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 21px' : 'font-size: 16px;'\"></i> \n <div [style]=\"showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : ''\">{{tab.label}}</div>\n </div>\n }\n }\n</div>", styles: [".p-panel-icons-end{font-size:50px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
1724
1905
|
}
|
|
1725
1906
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PanelHeaderComponent, decorators: [{
|
|
1726
1907
|
type: Component,
|
|
1727
|
-
args: [{ selector: 'panel-header', standalone: false, template: "<div style=\"display: flex; align-items: center; gap: 24px; flex-wrap: wrap;\">\
|
|
1908
|
+
args: [{ selector: 'panel-header', standalone: false, template: "<div style=\"display: flex; align-items: center; gap: 24px; flex-wrap: wrap;\">\n @if (tabs == null) {\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\n <i class=\"{{icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 21px' : 'font-size: 16px;'\"></i> \n <div [style]=\"(showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : '')\">{{title}}</div>\n </div>\n }\n @else {\n @for (tab of tabs; track $index) {\n <div (click)=\"setTabIsSelected(tab)\"\n [style]=\"{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n cursor: 'pointer',\n fontWeight: tab.isSelected ? '700' : 'normal'\n }\">\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\n <i class=\"{{tab.icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 21px' : 'font-size: 16px;'\"></i> \n <div [style]=\"showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : ''\">{{tab.label}}</div>\n </div>\n }\n }\n</div>", styles: [".p-panel-icons-end{font-size:50px}\n"] }]
|
|
1728
1909
|
}], ctorParameters: () => [{ type: i1.TranslocoService }], propDecorators: { title: [{
|
|
1729
1910
|
type: Input
|
|
1730
1911
|
}], showBigTitle: [{
|
|
@@ -1771,11 +1952,11 @@ class SpiderlyPanelComponent {
|
|
|
1771
1952
|
this.onRemoveIconClick.next(null);
|
|
1772
1953
|
}
|
|
1773
1954
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1774
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyPanelComponent, isStandalone: false, selector: "spiderly-panel", inputs: { isFirstMultiplePanel: "isFirstMultiplePanel", isMiddleMultiplePanel: "isMiddleMultiplePanel", isLastMultiplePanel: "isLastMultiplePanel", toggleable: "toggleable", toggler: "toggler", collapsed: "collapsed", crudMenu: "crudMenu", showCrudMenu: "showCrudMenu", showRemoveIcon: "showRemoveIcon", index: "index", showPanelHeader: "showPanelHeader" }, outputs: { onMenuIconClick: "onMenuIconClick", onRemoveIconClick: "onRemoveIconClick" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], ngImport: i0, template: "<p-panel \
|
|
1955
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyPanelComponent, isStandalone: false, selector: "spiderly-panel", inputs: { isFirstMultiplePanel: "isFirstMultiplePanel", isMiddleMultiplePanel: "isMiddleMultiplePanel", isLastMultiplePanel: "isLastMultiplePanel", toggleable: "toggleable", toggler: "toggler", collapsed: "collapsed", crudMenu: "crudMenu", showCrudMenu: "showCrudMenu", showRemoveIcon: "showRemoveIcon", index: "index", showPanelHeader: "showPanelHeader" }, outputs: { onMenuIconClick: "onMenuIconClick", onRemoveIconClick: "onRemoveIconClick" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], ngImport: i0, template: "<p-panel \n[showHeader]=\"showPanelHeader\"\n[ngClass]=\"{\n 'multiple-panel-first-without-header': isFirstMultiplePanel && !showPanelHeader,\n 'multiple-panel-first': isFirstMultiplePanel,\n 'multiple-panel-middle-without-header': isMiddleMultiplePanel && !showPanelHeader,\n 'multiple-panel-middle': isMiddleMultiplePanel,\n 'multiple-panel-last-without-header': isLastMultiplePanel && !showPanelHeader,\n 'multiple-panel-last': isLastMultiplePanel,\n 'panel-border': !isFirstMultiplePanel,\n 'spiderly-panel': true,\n 'panel-header-cursor-pointer': toggler === 'header' && toggleable\n}\"\n[toggleable]=\"toggleable\"\n[toggler]=\"toggler\"\n[collapsed]=\"toggleable && collapsed\"\nexpandIcon=\"pi pi-chevron-up\"\ncollapseIcon=\"pi pi-chevron-down\"\n>\n <ng-template pTemplate=\"header\">\n <div>\n <ng-content select=\"panel-header\"></ng-content>\n <ng-content select=\"[panelHeader]\"></ng-content>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"icons\">\n <div *ngIf=\"showCrudMenu && crudMenu\" class=\"mr-2\">\n <i class=\"pi pi-ellipsis-h icon-hover\" (click)=\"menuItemClick(index, $event)\"></i>\n <!-- https://github.com/primefaces/primeng/issues/13934 -->\n <p-menu #menu [model]=\"crudMenu\" [popup]=\"true\" appendTo=\"body\" [tabindex]=\"undefined\"></p-menu>\n </div>\n <div *ngIf=\"showRemoveIcon\" class=\"mr-2\">\n <i class=\"pi pi-minus icon-hover error-color-light\" (click)=\"removeItemClick()\"></i>\n </div>\n </ng-template>\n\n <div class=\"panel-body-wrapper\">\n <ng-content select=\"panel-body\"></ng-content>\n </div>\n\n <ng-content select=\"panel-footer\"></ng-content>\n\n</p-panel>\n", styles: [":host ::ng-deep .spiderly-panel .p-panel-content{padding:0}:host ::ng-deep .p-panel{overflow:hidden}:host ::ng-deep .p-panel-icons{display:flex;align-items:center}:host ::ng-deep .panel-header-cursor-pointer .p-panel-header{cursor:pointer!important}.multiple-panel-first-without-header .p-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;border-top:1px solid var(--surface-border);border-top-left-radius:var(--p-content-border-radius);border-top-right-radius:var(--p-content-border-radius);border-bottom:none}.multiple-panel-middle-without-header .p-panel{border-radius:0/0px;border-top:1px solid var(--surface-border);border-bottom:none}.multiple-panel-last-without-header .p-panel{border-bottom-left-radius:var(--p-content-border-radius);border-bottom-right-radius:var(--p-content-border-radius);border-top:1px solid var(--surface-border);border-top-left-radius:0;border-top-right-radius:0}.multiple-panel-first .p-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:none}.panel-border .p-panel{border-bottom-left-radius:var(--p-content-border-radius);border-bottom-right-radius:var(--p-content-border-radius);border-bottom:1px solid var(--surface-border)}.multiple-panel-middle .p-panel{border-radius:0;border-bottom:none}.multiple-panel-last .p-panel{border-top-left-radius:0;border-top-right-radius:0}.panel-body-wrapper{padding:18px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i1$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4$9.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions", "toggleButtonProps"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }] }); }
|
|
1775
1956
|
}
|
|
1776
1957
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyPanelComponent, decorators: [{
|
|
1777
1958
|
type: Component,
|
|
1778
|
-
args: [{ selector: 'spiderly-panel', standalone: false, template: "<p-panel \
|
|
1959
|
+
args: [{ selector: 'spiderly-panel', standalone: false, template: "<p-panel \n[showHeader]=\"showPanelHeader\"\n[ngClass]=\"{\n 'multiple-panel-first-without-header': isFirstMultiplePanel && !showPanelHeader,\n 'multiple-panel-first': isFirstMultiplePanel,\n 'multiple-panel-middle-without-header': isMiddleMultiplePanel && !showPanelHeader,\n 'multiple-panel-middle': isMiddleMultiplePanel,\n 'multiple-panel-last-without-header': isLastMultiplePanel && !showPanelHeader,\n 'multiple-panel-last': isLastMultiplePanel,\n 'panel-border': !isFirstMultiplePanel,\n 'spiderly-panel': true,\n 'panel-header-cursor-pointer': toggler === 'header' && toggleable\n}\"\n[toggleable]=\"toggleable\"\n[toggler]=\"toggler\"\n[collapsed]=\"toggleable && collapsed\"\nexpandIcon=\"pi pi-chevron-up\"\ncollapseIcon=\"pi pi-chevron-down\"\n>\n <ng-template pTemplate=\"header\">\n <div>\n <ng-content select=\"panel-header\"></ng-content>\n <ng-content select=\"[panelHeader]\"></ng-content>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"icons\">\n <div *ngIf=\"showCrudMenu && crudMenu\" class=\"mr-2\">\n <i class=\"pi pi-ellipsis-h icon-hover\" (click)=\"menuItemClick(index, $event)\"></i>\n <!-- https://github.com/primefaces/primeng/issues/13934 -->\n <p-menu #menu [model]=\"crudMenu\" [popup]=\"true\" appendTo=\"body\" [tabindex]=\"undefined\"></p-menu>\n </div>\n <div *ngIf=\"showRemoveIcon\" class=\"mr-2\">\n <i class=\"pi pi-minus icon-hover error-color-light\" (click)=\"removeItemClick()\"></i>\n </div>\n </ng-template>\n\n <div class=\"panel-body-wrapper\">\n <ng-content select=\"panel-body\"></ng-content>\n </div>\n\n <ng-content select=\"panel-footer\"></ng-content>\n\n</p-panel>\n", styles: [":host ::ng-deep .spiderly-panel .p-panel-content{padding:0}:host ::ng-deep .p-panel{overflow:hidden}:host ::ng-deep .p-panel-icons{display:flex;align-items:center}:host ::ng-deep .panel-header-cursor-pointer .p-panel-header{cursor:pointer!important}.multiple-panel-first-without-header .p-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;border-top:1px solid var(--surface-border);border-top-left-radius:var(--p-content-border-radius);border-top-right-radius:var(--p-content-border-radius);border-bottom:none}.multiple-panel-middle-without-header .p-panel{border-radius:0/0px;border-top:1px solid var(--surface-border);border-bottom:none}.multiple-panel-last-without-header .p-panel{border-bottom-left-radius:var(--p-content-border-radius);border-bottom-right-radius:var(--p-content-border-radius);border-top:1px solid var(--surface-border);border-top-left-radius:0;border-top-right-radius:0}.multiple-panel-first .p-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:none}.panel-border .p-panel{border-bottom-left-radius:var(--p-content-border-radius);border-bottom-right-radius:var(--p-content-border-radius);border-bottom:1px solid var(--surface-border)}.multiple-panel-middle .p-panel{border-radius:0;border-bottom:none}.multiple-panel-last .p-panel{border-top-left-radius:0;border-top-right-radius:0}.panel-body-wrapper{padding:18px}\n"] }]
|
|
1779
1960
|
}], ctorParameters: () => [], propDecorators: { isFirstMultiplePanel: [{
|
|
1780
1961
|
type: Input
|
|
1781
1962
|
}], isMiddleMultiplePanel: [{
|
|
@@ -1846,388 +2027,141 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1846
2027
|
}]
|
|
1847
2028
|
}] });
|
|
1848
2029
|
|
|
1849
|
-
class
|
|
1850
|
-
constructor() {
|
|
1851
|
-
|
|
1852
|
-
this.
|
|
1853
|
-
this.companyName = 'Company Name';
|
|
1854
|
-
this.primaryColor = '#111b2c';
|
|
1855
|
-
this.googleAuth = true;
|
|
1856
|
-
/* URLs */
|
|
1857
|
-
this.loginSlug = 'login';
|
|
1858
|
-
/* Local storage */
|
|
1859
|
-
this.accessTokenKey = 'access_token';
|
|
1860
|
-
this.refreshTokenKey = 'refresh_token';
|
|
1861
|
-
this.browserIdKey = 'browser_id';
|
|
1862
|
-
this.httpOptions = {};
|
|
1863
|
-
this.httpSkipSpinnerOptions = {
|
|
1864
|
-
headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
|
|
1865
|
-
params: new HttpParams().set('X-Skip-Spinner', 'true')
|
|
1866
|
-
};
|
|
1867
|
-
this.logoPath = 'assets/images/logo/logo.svg';
|
|
1868
|
-
}
|
|
1869
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ConfigBaseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1870
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ConfigBaseService, providedIn: 'root' }); }
|
|
1871
|
-
}
|
|
1872
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ConfigBaseService, decorators: [{
|
|
1873
|
-
type: Injectable,
|
|
1874
|
-
args: [{
|
|
1875
|
-
providedIn: 'root'
|
|
1876
|
-
}]
|
|
1877
|
-
}], ctorParameters: () => [] });
|
|
1878
|
-
|
|
1879
|
-
class ApiSecurityService {
|
|
1880
|
-
constructor(http, config) {
|
|
2030
|
+
class VerificationWrapperComponent extends BaseFormCopy {
|
|
2031
|
+
constructor(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService) {
|
|
2032
|
+
super(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService);
|
|
2033
|
+
this.differs = differs;
|
|
1881
2034
|
this.http = http;
|
|
1882
|
-
this.config = config;
|
|
1883
|
-
//#region Authentication
|
|
1884
|
-
this.login = (request) => {
|
|
1885
|
-
return this.http.post(`${this.config.apiUrl}/Security/Login`, request, this.config.httpOptions);
|
|
1886
|
-
};
|
|
1887
|
-
this.loginExternal = (externalProviderDTO) => {
|
|
1888
|
-
return this.http.post(`${this.config.apiUrl}/Security/LoginExternal`, externalProviderDTO, this.config.httpOptions);
|
|
1889
|
-
};
|
|
1890
|
-
this.sendLoginVerificationEmail = (loginDTO) => {
|
|
1891
|
-
return this.http.post(`${this.config.apiUrl}/Security/SendLoginVerificationEmail`, loginDTO, this.config.httpOptions);
|
|
1892
|
-
};
|
|
1893
|
-
this.logout = (browserId) => {
|
|
1894
|
-
return this.http.get(`${this.config.apiUrl}/Security/Logout?browserId=${browserId}`);
|
|
1895
|
-
};
|
|
1896
|
-
this.refreshToken = (request) => {
|
|
1897
|
-
return this.http.post(`${this.config.apiUrl}/Security/RefreshToken`, request, this.config.httpOptions);
|
|
1898
|
-
};
|
|
1899
|
-
//#endregion
|
|
1900
|
-
//#region User
|
|
1901
|
-
this.getCurrentUserBase = () => {
|
|
1902
|
-
return this.http.get(`${this.config.apiUrl}/Security/GetCurrentUserBase`, this.config.httpSkipSpinnerOptions);
|
|
1903
|
-
};
|
|
1904
|
-
this.getCurrentUserPermissionCodes = () => {
|
|
1905
|
-
return this.http.get(`${this.config.apiUrl}/Security/GetCurrentUserPermissionCodes`, this.config.httpSkipSpinnerOptions);
|
|
1906
|
-
};
|
|
1907
|
-
//#endregion
|
|
1908
|
-
//#region Role
|
|
1909
|
-
this.getPaginatedRoleList = (dto) => {
|
|
1910
|
-
return this.http.post(`${this.config.apiUrl}/Security/GetPaginatedRoleList`, dto, this.config.httpSkipSpinnerOptions);
|
|
1911
|
-
};
|
|
1912
|
-
this.exportRoleListToExcel = (dto) => {
|
|
1913
|
-
return this.http.post(`${this.config.apiUrl}/Security/ExportRoleListToExcel`, dto, this.config.httpOptions);
|
|
1914
|
-
};
|
|
1915
|
-
this.deleteRole = (id) => {
|
|
1916
|
-
return this.http.delete(`${this.config.apiUrl}/Security/DeleteRole?id=${id}`);
|
|
1917
|
-
};
|
|
1918
|
-
this.getRoleMainUIFormDTO = (id) => {
|
|
1919
|
-
return this.http.get(`${this.config.apiUrl}/Security/GetRoleMainUIFormDTO?id=${id}`);
|
|
1920
|
-
};
|
|
1921
|
-
this.getRole = (id) => {
|
|
1922
|
-
return this.http.get(`${this.config.apiUrl}/Security/GetRole?id=${id}`);
|
|
1923
|
-
};
|
|
1924
|
-
this.saveRole = (dto) => {
|
|
1925
|
-
return this.http.put(`${this.config.apiUrl}/Security/SaveRole`, dto, this.config.httpOptions);
|
|
1926
|
-
};
|
|
1927
|
-
this.getUsersNamebookListForRole = (roleId) => {
|
|
1928
|
-
return this.http.get(`${this.config.apiUrl}/Security/GetUsersNamebookListForRole?roleId=${roleId}`, this.config.httpSkipSpinnerOptions);
|
|
1929
|
-
};
|
|
1930
|
-
this.getPermissionsDropdownListForRole = () => {
|
|
1931
|
-
return this.http.get(`${this.config.apiUrl}/Security/GetPermissionsDropdownListForRole`, this.config.httpSkipSpinnerOptions);
|
|
1932
|
-
};
|
|
1933
|
-
this.getPermissionsNamebookListForRole = (roleId) => {
|
|
1934
|
-
return this.http.get(`${this.config.apiUrl}/Security/GetPermissionsNamebookListForRole?roleId=${roleId}`, this.config.httpSkipSpinnerOptions);
|
|
1935
|
-
};
|
|
1936
|
-
this.getUsersAutocompleteListForRole = (limit, query) => {
|
|
1937
|
-
return this.http.get(`${this.config.apiUrl}/Security/GetUsersAutocompleteListForRole?limit=${limit}&query=${query}`, this.config.httpSkipSpinnerOptions);
|
|
1938
|
-
};
|
|
1939
|
-
//#endregion
|
|
1940
|
-
//#region Notification
|
|
1941
|
-
this.getUnreadNotificationsCountForCurrentUser = () => {
|
|
1942
|
-
return this.http.get(`${this.config.apiUrl}/Notification/GetUnreadNotificationsCountForCurrentUser`, this.config.httpSkipSpinnerOptions);
|
|
1943
|
-
};
|
|
1944
|
-
}
|
|
1945
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ApiSecurityService, deps: [{ token: i1$4.HttpClient }, { token: ConfigBaseService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1946
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ApiSecurityService, providedIn: 'root' }); }
|
|
1947
|
-
}
|
|
1948
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ApiSecurityService, decorators: [{
|
|
1949
|
-
type: Injectable,
|
|
1950
|
-
args: [{
|
|
1951
|
-
providedIn: 'root'
|
|
1952
|
-
}]
|
|
1953
|
-
}], ctorParameters: () => [{ type: i1$4.HttpClient }, { type: ConfigBaseService }] });
|
|
1954
|
-
|
|
1955
|
-
// When we call it, inside the console, it will show SpiderlyError: ...
|
|
1956
|
-
class SpiderlyError extends Error {
|
|
1957
|
-
constructor(message) {
|
|
1958
|
-
super(message);
|
|
1959
|
-
}
|
|
1960
|
-
}
|
|
1961
|
-
|
|
1962
|
-
class TranslateLabelsAbstractService {
|
|
1963
|
-
constructor() {
|
|
1964
|
-
}
|
|
1965
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: TranslateLabelsAbstractService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1966
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: TranslateLabelsAbstractService, providedIn: 'root' }); }
|
|
1967
|
-
}
|
|
1968
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: TranslateLabelsAbstractService, decorators: [{
|
|
1969
|
-
type: Injectable,
|
|
1970
|
-
args: [{
|
|
1971
|
-
providedIn: 'root',
|
|
1972
|
-
}]
|
|
1973
|
-
}], ctorParameters: () => [] });
|
|
1974
|
-
|
|
1975
|
-
class SpiderlyMessageService {
|
|
1976
|
-
constructor(messageService, translocoService, ngZone) {
|
|
1977
2035
|
this.messageService = messageService;
|
|
2036
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
2037
|
+
this.router = router;
|
|
2038
|
+
this.route = route;
|
|
1978
2039
|
this.translocoService = translocoService;
|
|
1979
|
-
this.
|
|
2040
|
+
this.baseFormService = baseFormService;
|
|
2041
|
+
this.verificationTokenRequestFormGroup = new SpiderlyFormGroup({});
|
|
2042
|
+
this.onResendVerificationToken = new EventEmitter();
|
|
2043
|
+
this.onCodeSubmit = new EventEmitter();
|
|
1980
2044
|
}
|
|
1981
|
-
|
|
1982
|
-
this.
|
|
1983
|
-
severity: 'success',
|
|
1984
|
-
summary: title,
|
|
1985
|
-
detail: detail,
|
|
1986
|
-
life: 10000,
|
|
1987
|
-
});
|
|
2045
|
+
ngOnInit() {
|
|
2046
|
+
this.initVerificationTokenRequestFormGroup(new VerificationTokenRequest({ email: this.email }));
|
|
1988
2047
|
}
|
|
1989
|
-
|
|
1990
|
-
this.
|
|
1991
|
-
severity: 'warn',
|
|
1992
|
-
summary: title ?? this.translocoService.translate('Warning'),
|
|
1993
|
-
detail: detail,
|
|
1994
|
-
life: 10000,
|
|
1995
|
-
sticky: sticky
|
|
1996
|
-
});
|
|
2048
|
+
initVerificationTokenRequestFormGroup(model) {
|
|
2049
|
+
this.baseFormService.initFormGroup(this.verificationTokenRequestFormGroup, VerificationTokenRequest, model, ['verificationCode']);
|
|
1997
2050
|
}
|
|
1998
|
-
|
|
1999
|
-
this.
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
life: 10000,
|
|
2004
|
-
});
|
|
2051
|
+
codeSubmit() {
|
|
2052
|
+
let isValid = this.baseFormService.isControlValid(this.verificationTokenRequestFormGroup);
|
|
2053
|
+
if (isValid) {
|
|
2054
|
+
this.onCodeSubmit.next(this.verificationTokenRequestFormGroup.controls.verificationCode.getRawValue());
|
|
2055
|
+
}
|
|
2005
2056
|
}
|
|
2006
|
-
|
|
2007
|
-
this.
|
|
2008
|
-
severity: 'info',
|
|
2009
|
-
summary: title ?? this.translocoService.translate('Info'),
|
|
2010
|
-
detail: detail,
|
|
2011
|
-
life: 10000,
|
|
2012
|
-
sticky: sticky,
|
|
2013
|
-
});
|
|
2057
|
+
resendVerificationToken() {
|
|
2058
|
+
this.onResendVerificationToken.next(null);
|
|
2014
2059
|
}
|
|
2015
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type:
|
|
2016
|
-
static { this.ɵ
|
|
2060
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: VerificationWrapperComponent, deps: [{ token: i0.KeyValueDiffers }, { token: i1$3.HttpClient }, { token: SpiderlyMessageService }, { token: i0.ChangeDetectorRef }, { token: i3$2.Router }, { token: i3$2.ActivatedRoute }, { token: i1.TranslocoService }, { token: BaseFormService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2061
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: VerificationWrapperComponent, isStandalone: true, selector: "verification-wrapper", inputs: { email: "email" }, outputs: { onResendVerificationToken: "onResendVerificationToken", onCodeSubmit: "onCodeSubmit" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div class=\"min-h-screen\" style=\"display: flex; justify-content: center; align-items: center;\">\n <div class=\"dialog\" style=\"padding: 0px;\">\n @if (verificationTokenRequestFormGroup != null) {\n <spiderly-panel>\n <panel-header [title]=\"t('AccountVerificationHeader')\" [showBigTitle]=\"true\" icon=\"pi pi-envelope\"></panel-header>\n \n <panel-body>\n <form class=\"grid\">\n <div class=\"col-12\">\n <div style=\"font-size: 17.5px\">{{t('AccountVerificationTitle')}}</div>\n </div>\n <div class=\"col-12\">\n {{t('AccountVerificationDescription', {email: email})}}\n </div>\n <div class=\"col-12\">\n <spiderly-textbox [control]=\"verificationTokenRequestFormGroup.getControl('verificationCode')\"></spiderly-textbox>\n </div>\n <div class=\"col-12\">\n <spiderly-button (onClick)=\"codeSubmit()\" [label]=\"t('Submit')\" icon=\"pi pi-verified\" type=\"submit\"></spiderly-button>\n </div>\n </form>\n </panel-body>\n \n <panel-footer>\n <a pButton class=\"p-button-link\" [label]=\"t('GoToGmail')\" icon=\"pi pi-external-link\" href=\"https://mail.google.com/mail/u/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\n <a pButton class=\"p-button-link\" [label]=\"t('GoToYahoo')\" icon=\"pi pi-external-link\" href=\"https://mail.yahoo.com/d/folders/1/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\n </panel-footer>\n <panel-footer>\n <div>{{t('ResendVerificationCodeFirstPart')}} <a class=\"link\" (click)=\"resendVerificationToken()\">{{t('ResendVerificationCodeLinkSecondPart')}}</a></div>\n </panel-footer>\n </spiderly-panel>\n }\n @else {\n <!-- TODO FT: Add skeleton -->\n }\n </div>\n </div>\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }, { kind: "ngmodule", type: SpiderlyPanelsModule }, { kind: "component", type: PanelHeaderComponent, selector: "panel-header", inputs: ["title", "showBigTitle", "showIcon", "icon", "index", "tabs"] }, { kind: "component", type: PanelBodyComponent, selector: "panel-body", inputs: ["normalBottomPadding"] }, { kind: "component", type: PanelFooterComponent, selector: "panel-footer" }, { kind: "component", type: SpiderlyPanelComponent, selector: "spiderly-panel", inputs: ["isFirstMultiplePanel", "isMiddleMultiplePanel", "isLastMultiplePanel", "toggleable", "toggler", "collapsed", "crudMenu", "showCrudMenu", "showRemoveIcon", "index", "showPanelHeader"], outputs: ["onMenuIconClick", "onRemoveIconClick"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
2017
2062
|
}
|
|
2018
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type:
|
|
2063
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: VerificationWrapperComponent, decorators: [{
|
|
2064
|
+
type: Component,
|
|
2065
|
+
args: [{ selector: 'verification-wrapper', imports: [
|
|
2066
|
+
CommonModule,
|
|
2067
|
+
FormsModule,
|
|
2068
|
+
ReactiveFormsModule,
|
|
2069
|
+
SpiderlyControlsModule,
|
|
2070
|
+
SpiderlyPanelsModule,
|
|
2071
|
+
ButtonModule,
|
|
2072
|
+
TranslocoDirective,
|
|
2073
|
+
], template: "<ng-container *transloco=\"let t\">\n <div class=\"min-h-screen\" style=\"display: flex; justify-content: center; align-items: center;\">\n <div class=\"dialog\" style=\"padding: 0px;\">\n @if (verificationTokenRequestFormGroup != null) {\n <spiderly-panel>\n <panel-header [title]=\"t('AccountVerificationHeader')\" [showBigTitle]=\"true\" icon=\"pi pi-envelope\"></panel-header>\n \n <panel-body>\n <form class=\"grid\">\n <div class=\"col-12\">\n <div style=\"font-size: 17.5px\">{{t('AccountVerificationTitle')}}</div>\n </div>\n <div class=\"col-12\">\n {{t('AccountVerificationDescription', {email: email})}}\n </div>\n <div class=\"col-12\">\n <spiderly-textbox [control]=\"verificationTokenRequestFormGroup.getControl('verificationCode')\"></spiderly-textbox>\n </div>\n <div class=\"col-12\">\n <spiderly-button (onClick)=\"codeSubmit()\" [label]=\"t('Submit')\" icon=\"pi pi-verified\" type=\"submit\"></spiderly-button>\n </div>\n </form>\n </panel-body>\n \n <panel-footer>\n <a pButton class=\"p-button-link\" [label]=\"t('GoToGmail')\" icon=\"pi pi-external-link\" href=\"https://mail.google.com/mail/u/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\n <a pButton class=\"p-button-link\" [label]=\"t('GoToYahoo')\" icon=\"pi pi-external-link\" href=\"https://mail.yahoo.com/d/folders/1/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\n </panel-footer>\n <panel-footer>\n <div>{{t('ResendVerificationCodeFirstPart')}} <a class=\"link\" (click)=\"resendVerificationToken()\">{{t('ResendVerificationCodeLinkSecondPart')}}</a></div>\n </panel-footer>\n </spiderly-panel>\n }\n @else {\n <!-- TODO FT: Add skeleton -->\n }\n </div>\n </div>\n</ng-container>" }]
|
|
2074
|
+
}], ctorParameters: () => [{ type: i0.KeyValueDiffers }, { type: i1$3.HttpClient }, { type: SpiderlyMessageService }, { type: i0.ChangeDetectorRef }, { type: i3$2.Router }, { type: i3$2.ActivatedRoute }, { type: i1.TranslocoService }, { type: BaseFormService }], propDecorators: { email: [{
|
|
2075
|
+
type: Input
|
|
2076
|
+
}], onResendVerificationToken: [{
|
|
2077
|
+
type: Output
|
|
2078
|
+
}], onCodeSubmit: [{
|
|
2079
|
+
type: Output
|
|
2080
|
+
}] } });
|
|
2081
|
+
|
|
2082
|
+
class InitCompanyAuthDialogDetails extends BaseEntity {
|
|
2083
|
+
constructor({ image, companyName, } = {}) {
|
|
2084
|
+
super();
|
|
2085
|
+
this.image = image;
|
|
2086
|
+
this.companyName = companyName;
|
|
2087
|
+
}
|
|
2088
|
+
static { this.typeName = 'InitCompanyAuthDialogDetails'; }
|
|
2089
|
+
}
|
|
2090
|
+
|
|
2091
|
+
class ConfigServiceBase {
|
|
2092
|
+
constructor() {
|
|
2093
|
+
this.production = false;
|
|
2094
|
+
this.frontendUrl = 'http://localhost:4200';
|
|
2095
|
+
this.companyName = 'Company Name';
|
|
2096
|
+
this.primaryColor = '#111b2c';
|
|
2097
|
+
/* URLs */
|
|
2098
|
+
this.loginSlug = 'login';
|
|
2099
|
+
/* Local storage */
|
|
2100
|
+
this.accessTokenKey = 'access_token';
|
|
2101
|
+
this.refreshTokenKey = 'refresh_token';
|
|
2102
|
+
this.browserIdKey = 'browser_id';
|
|
2103
|
+
this.httpOptions = {};
|
|
2104
|
+
this.httpSkipSpinnerOptions = {
|
|
2105
|
+
headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
|
|
2106
|
+
params: new HttpParams().set('X-Skip-Spinner', 'true')
|
|
2107
|
+
};
|
|
2108
|
+
this.logoPath = 'assets/images/logo/logo.svg';
|
|
2109
|
+
}
|
|
2110
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ConfigServiceBase, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2111
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ConfigServiceBase, providedIn: 'root' }); }
|
|
2112
|
+
}
|
|
2113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ConfigServiceBase, decorators: [{
|
|
2019
2114
|
type: Injectable,
|
|
2020
2115
|
args: [{
|
|
2021
|
-
providedIn: 'root'
|
|
2116
|
+
providedIn: 'root'
|
|
2022
2117
|
}]
|
|
2023
|
-
}], ctorParameters: () => [
|
|
2118
|
+
}], ctorParameters: () => [] });
|
|
2024
2119
|
|
|
2025
|
-
class
|
|
2026
|
-
constructor(
|
|
2027
|
-
this.
|
|
2028
|
-
this.
|
|
2029
|
-
|
|
2030
|
-
this.
|
|
2031
|
-
|
|
2032
|
-
if (!formGroup)
|
|
2033
|
-
throw new SpiderlyError('You need to instantiate the form group.');
|
|
2034
|
-
if (!targetClass)
|
|
2035
|
-
throw new SpiderlyError('You need to pass targetClass.');
|
|
2036
|
-
if (!initialValues)
|
|
2037
|
-
initialValues = {};
|
|
2038
|
-
Object.keys(targetClass.schema).forEach((formControlName) => {
|
|
2039
|
-
const propSchema = targetClass.schema[formControlName];
|
|
2040
|
-
let propInitialValue = initialValues[formControlName];
|
|
2041
|
-
const existingControl = formGroup.get(formControlName);
|
|
2042
|
-
if (propSchema.type.endsWith('[]') &&
|
|
2043
|
-
propSchema.nestedConstructor &&
|
|
2044
|
-
propSchema.type !== 'Namebook[]') {
|
|
2045
|
-
if (existingControl instanceof SpiderlyFormArray) {
|
|
2046
|
-
this.initFormArray(existingControl, propSchema.nestedConstructor, propInitialValue);
|
|
2047
|
-
}
|
|
2048
|
-
else {
|
|
2049
|
-
const control = new SpiderlyFormArray([], this.translocoService, this);
|
|
2050
|
-
this.initFormArray(control, propSchema.nestedConstructor, propInitialValue);
|
|
2051
|
-
control.label = formControlName;
|
|
2052
|
-
control.labelForDisplay = this.getTranslatedLabel(formControlName);
|
|
2053
|
-
formGroup.setControl(formControlName, control);
|
|
2054
|
-
}
|
|
2055
|
-
}
|
|
2056
|
-
else if (propSchema.nestedConstructor &&
|
|
2057
|
-
propSchema.type !== 'Namebook[]') {
|
|
2058
|
-
if (existingControl instanceof SpiderlyFormGroup) {
|
|
2059
|
-
this.initFormGroup(existingControl, propSchema.nestedConstructor, propInitialValue);
|
|
2060
|
-
}
|
|
2061
|
-
else {
|
|
2062
|
-
const control = new SpiderlyFormGroup({});
|
|
2063
|
-
this.initFormGroup(control, propSchema.nestedConstructor, propInitialValue);
|
|
2064
|
-
formGroup.setControl(formControlName, control);
|
|
2065
|
-
}
|
|
2066
|
-
}
|
|
2067
|
-
else {
|
|
2068
|
-
// HACK: Because on the backend id type is not nullable on generated DTOs, we need to do this, it's ugly hack and we should make it better.
|
|
2069
|
-
if (formControlName === 'id' && !propInitialValue) {
|
|
2070
|
-
propInitialValue = 0;
|
|
2071
|
-
}
|
|
2072
|
-
if (existingControl instanceof SpiderlyFormControl) {
|
|
2073
|
-
existingControl.setValue(propInitialValue);
|
|
2074
|
-
}
|
|
2075
|
-
else {
|
|
2076
|
-
let control;
|
|
2077
|
-
if (updateOnChangeControls?.includes(formControlName) ||
|
|
2078
|
-
(formControlName.endsWith('Id') && formControlName.length > 2) ||
|
|
2079
|
-
propSchema.type === 'Date' ||
|
|
2080
|
-
propSchema.type === 'Namebook[]') {
|
|
2081
|
-
control = new SpiderlyFormControl(propInitialValue, { updateOn: 'change' });
|
|
2082
|
-
}
|
|
2083
|
-
else {
|
|
2084
|
-
control = new SpiderlyFormControl(propInitialValue, { updateOn: 'blur' });
|
|
2085
|
-
}
|
|
2086
|
-
control.label = formControlName;
|
|
2087
|
-
control.labelForDisplay = this.getTranslatedLabel(formControlName);
|
|
2088
|
-
control.parentClassName = targetClass.typeName;
|
|
2089
|
-
this.validatorService.setValidator(control, targetClass.typeName);
|
|
2090
|
-
formGroup.setControl(formControlName, control);
|
|
2091
|
-
}
|
|
2092
|
-
}
|
|
2093
|
-
});
|
|
2094
|
-
formGroup.targetClass = targetClass;
|
|
2095
|
-
return formGroup;
|
|
2120
|
+
class ApiSecurityService {
|
|
2121
|
+
constructor(http, config) {
|
|
2122
|
+
this.http = http;
|
|
2123
|
+
this.config = config;
|
|
2124
|
+
//#region Authentication
|
|
2125
|
+
this.login = (request) => {
|
|
2126
|
+
return this.http.post(`${this.config.apiUrl}/Security/Login`, request, this.config.httpOptions);
|
|
2096
2127
|
};
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
this.messageService.warningMessage(this.translocoService.translate('YouHaveSomeInvalidFieldsDescription'), this.translocoService.translate('YouHaveSomeInvalidFieldsTitle'));
|
|
2128
|
+
this.loginExternal = (externalProviderDTO) => {
|
|
2129
|
+
return this.http.post(`${this.config.apiUrl}/Security/LoginExternal`, externalProviderDTO, this.config.httpOptions);
|
|
2100
2130
|
};
|
|
2101
|
-
this.
|
|
2102
|
-
|
|
2103
|
-
return Object.keys(schema).find(k => schema[k].isSaveBodyMainDTO === true);
|
|
2131
|
+
this.sendLoginVerificationEmail = (loginDTO) => {
|
|
2132
|
+
return this.http.post(`${this.config.apiUrl}/Security/SendLoginVerificationEmail`, loginDTO, this.config.httpOptions);
|
|
2104
2133
|
};
|
|
2105
|
-
this.
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
saveBody[`selected${capitalizeFirstChar(propName)}`] = value ?? [];
|
|
2124
|
-
}
|
|
2125
|
-
// Handle the main DTO object (e.g., "entityDTO")
|
|
2126
|
-
else {
|
|
2127
|
-
saveBody[propName] = value;
|
|
2128
|
-
}
|
|
2129
|
-
});
|
|
2130
|
-
return saveBody;
|
|
2134
|
+
this.logout = (browserId) => {
|
|
2135
|
+
return this.http.get(`${this.config.apiUrl}/Security/Logout?browserId=${browserId}`);
|
|
2136
|
+
};
|
|
2137
|
+
this.refreshToken = (request) => {
|
|
2138
|
+
return this.http.post(`${this.config.apiUrl}/Security/RefreshToken`, request, this.config.httpOptions);
|
|
2139
|
+
};
|
|
2140
|
+
//#endregion
|
|
2141
|
+
//#region User
|
|
2142
|
+
this.getCurrentUserBase = () => {
|
|
2143
|
+
return this.http.get(`${this.config.apiUrl}/Security/GetCurrentUserBase`, this.config.httpSkipSpinnerOptions);
|
|
2144
|
+
};
|
|
2145
|
+
this.getCurrentUserPermissionCodes = () => {
|
|
2146
|
+
return this.http.get(`${this.config.apiUrl}/Security/GetCurrentUserPermissionCodes`, this.config.httpSkipSpinnerOptions);
|
|
2147
|
+
};
|
|
2148
|
+
//#endregion
|
|
2149
|
+
//#region Notification
|
|
2150
|
+
this.getUnreadNotificationsCountForCurrentUser = () => {
|
|
2151
|
+
return this.http.get(`${this.config.apiUrl}/Notification/GetUnreadNotificationsCountForCurrentUser`, this.config.httpSkipSpinnerOptions);
|
|
2131
2152
|
};
|
|
2132
2153
|
}
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
formControlName = formControlName.substring(0, formControlName.length - 2);
|
|
2136
|
-
}
|
|
2137
|
-
else if (formControlName.endsWith('DisplayName')) {
|
|
2138
|
-
formControlName = formControlName.replace('DisplayName', '');
|
|
2139
|
-
}
|
|
2140
|
-
return this.translateLabelsService.translate(formControlName);
|
|
2141
|
-
}
|
|
2142
|
-
addNewFormGroupToFormArray(formArray, targetClass, initialValues, index) {
|
|
2143
|
-
let helperFormGroup = new SpiderlyFormGroup({});
|
|
2144
|
-
this.initFormGroup(helperFormGroup, targetClass, initialValues);
|
|
2145
|
-
if (index == null) {
|
|
2146
|
-
formArray.push(helperFormGroup);
|
|
2147
|
-
}
|
|
2148
|
-
else {
|
|
2149
|
-
formArray.insert(index, helperFormGroup);
|
|
2150
|
-
}
|
|
2151
|
-
return helperFormGroup;
|
|
2152
|
-
}
|
|
2153
|
-
removeFormControlFromTheFormArray(formArray, index) {
|
|
2154
|
-
if (index == null)
|
|
2155
|
-
throw new SpiderlyError('Can not pass null index.');
|
|
2156
|
-
formArray.removeAt(index);
|
|
2157
|
-
}
|
|
2158
|
-
initFormArray(formArray, targetClass, initialValues = []) {
|
|
2159
|
-
if (!formArray)
|
|
2160
|
-
throw new SpiderlyError('You must pass a FormArray instance to be initialized or updated.');
|
|
2161
|
-
if (!targetClass)
|
|
2162
|
-
throw new SpiderlyError('You did not initialize targetClass');
|
|
2163
|
-
// formArray.required = required;
|
|
2164
|
-
formArray.formGroupInitialValues = {}; // When we need we can pass formGroupInitialValues to this method instead of assigning it to empty object
|
|
2165
|
-
formArray.targetClass = targetClass;
|
|
2166
|
-
initialValues.forEach((model, index) => {
|
|
2167
|
-
const existingControl = formArray.at(index);
|
|
2168
|
-
if (existingControl instanceof SpiderlyFormGroup) {
|
|
2169
|
-
this.initFormGroup(existingControl, targetClass, model);
|
|
2170
|
-
}
|
|
2171
|
-
else {
|
|
2172
|
-
let helperFormGroup = new SpiderlyFormGroup({});
|
|
2173
|
-
this.initFormGroup(helperFormGroup, targetClass, model);
|
|
2174
|
-
formArray.push(helperFormGroup);
|
|
2175
|
-
}
|
|
2176
|
-
});
|
|
2177
|
-
return formArray;
|
|
2178
|
-
}
|
|
2179
|
-
generateNewNegativeId(formArray) {
|
|
2180
|
-
return -formArray.getRawValue().filter(x => x.id < 0).length - 1;
|
|
2181
|
-
}
|
|
2182
|
-
isControlValid(control, controlNamesFromHtml) {
|
|
2183
|
-
let invalid = false;
|
|
2184
|
-
if (control instanceof SpiderlyFormControl) {
|
|
2185
|
-
if (control.invalid &&
|
|
2186
|
-
(controlNamesFromHtml == null || controlNamesFromHtml?.includes(control.label))) {
|
|
2187
|
-
control.markAsDirty();
|
|
2188
|
-
invalid = true;
|
|
2189
|
-
}
|
|
2190
|
-
}
|
|
2191
|
-
else if (control instanceof SpiderlyFormGroup) {
|
|
2192
|
-
Object.keys(control.controls).forEach(key => {
|
|
2193
|
-
const nestedControl = control.controls[key];
|
|
2194
|
-
if (!this.isControlValid(nestedControl, control.controlNamesFromHtml)) {
|
|
2195
|
-
invalid = true;
|
|
2196
|
-
}
|
|
2197
|
-
});
|
|
2198
|
-
}
|
|
2199
|
-
else if (control instanceof SpiderlyFormArray) {
|
|
2200
|
-
control.controls.forEach((nestedControl) => {
|
|
2201
|
-
if (!this.isControlValid(nestedControl)) {
|
|
2202
|
-
invalid = true;
|
|
2203
|
-
}
|
|
2204
|
-
});
|
|
2205
|
-
}
|
|
2206
|
-
if (invalid) {
|
|
2207
|
-
return false;
|
|
2208
|
-
}
|
|
2209
|
-
return true;
|
|
2210
|
-
}
|
|
2211
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: BaseFormService, deps: [{ token: TranslateLabelsAbstractService }, { token: ValidatorAbstractService }, { token: SpiderlyMessageService }, { token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2212
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: BaseFormService, providedIn: 'root' }); }
|
|
2154
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ApiSecurityService, deps: [{ token: i1$3.HttpClient }, { token: ConfigServiceBase }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2155
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ApiSecurityService, providedIn: 'root' }); }
|
|
2213
2156
|
}
|
|
2214
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type:
|
|
2157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ApiSecurityService, decorators: [{
|
|
2215
2158
|
type: Injectable,
|
|
2216
2159
|
args: [{
|
|
2217
|
-
providedIn: 'root'
|
|
2160
|
+
providedIn: 'root'
|
|
2218
2161
|
}]
|
|
2219
|
-
}], ctorParameters: () => [{ type:
|
|
2220
|
-
|
|
2221
|
-
class InitCompanyAuthDialogDetails extends BaseEntity {
|
|
2222
|
-
constructor({ image, companyName, } = {}) {
|
|
2223
|
-
super();
|
|
2224
|
-
this.image = image;
|
|
2225
|
-
this.companyName = companyName;
|
|
2226
|
-
}
|
|
2227
|
-
static { this.typeName = 'InitCompanyAuthDialogDetails'; }
|
|
2228
|
-
}
|
|
2162
|
+
}], ctorParameters: () => [{ type: i1$3.HttpClient }, { type: ConfigServiceBase }] });
|
|
2229
2163
|
|
|
2230
|
-
class
|
|
2164
|
+
class AuthServiceBase {
|
|
2231
2165
|
constructor(router, http, externalAuthService, apiService, config, platformId) {
|
|
2232
2166
|
this.router = router;
|
|
2233
2167
|
this.http = http;
|
|
@@ -2423,284 +2357,19 @@ class AuthBaseService {
|
|
|
2423
2357
|
}
|
|
2424
2358
|
this.onAfterNgOnDestroy();
|
|
2425
2359
|
}
|
|
2426
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type:
|
|
2427
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type:
|
|
2360
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthServiceBase, deps: [{ token: i3$2.Router }, { token: i1$3.HttpClient }, { token: i3$4.SocialAuthService }, { token: ApiSecurityService }, { token: ConfigServiceBase }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2361
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthServiceBase, providedIn: 'root' }); }
|
|
2428
2362
|
}
|
|
2429
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type:
|
|
2363
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthServiceBase, decorators: [{
|
|
2430
2364
|
type: Injectable,
|
|
2431
2365
|
args: [{
|
|
2432
2366
|
providedIn: 'root'
|
|
2433
2367
|
}]
|
|
2434
|
-
}], ctorParameters: () => [{ type: i3$2.Router }, { type: i1$
|
|
2368
|
+
}], ctorParameters: () => [{ type: i3$2.Router }, { type: i1$3.HttpClient }, { type: i3$4.SocialAuthService }, { type: ApiSecurityService }, { type: ConfigServiceBase }, { type: Object, decorators: [{
|
|
2435
2369
|
type: Inject,
|
|
2436
2370
|
args: [PLATFORM_ID]
|
|
2437
2371
|
}] }] });
|
|
2438
2372
|
|
|
2439
|
-
class RoleBaseDetailsComponent {
|
|
2440
|
-
constructor(apiService, route, baseFormService, authService) {
|
|
2441
|
-
this.apiService = apiService;
|
|
2442
|
-
this.route = route;
|
|
2443
|
-
this.baseFormService = baseFormService;
|
|
2444
|
-
this.authService = authService;
|
|
2445
|
-
this.onSave = new EventEmitter();
|
|
2446
|
-
this.onAfterFormGroupInit = new EventEmitter();
|
|
2447
|
-
this.additionalButtons = [];
|
|
2448
|
-
this.showBigPanelTitle = true;
|
|
2449
|
-
this.handleAdditionalSaveAuthorization = () => Promise.resolve(true);
|
|
2450
|
-
this.isAuthorizedForSave = false;
|
|
2451
|
-
this.onIsAuthorizedForSaveChange = new EventEmitter();
|
|
2452
|
-
this.loading = true;
|
|
2453
|
-
this.handleAuthorizationForSave = async () => {
|
|
2454
|
-
const currentUserPermissionCodes = await firstValueFrom(this.authService.currentUserPermissionCodes$);
|
|
2455
|
-
const isAdditionallyAuthorizedForSave = await this.handleAdditionalSaveAuthorization();
|
|
2456
|
-
this.isAuthorizedForSave =
|
|
2457
|
-
(currentUserPermissionCodes.includes('InsertRole') && this.modelId <= 0) ||
|
|
2458
|
-
(currentUserPermissionCodes.includes('UpdateRole') && this.modelId > 0) ||
|
|
2459
|
-
isAdditionallyAuthorizedForSave;
|
|
2460
|
-
if (this.isAuthorizedForSave) {
|
|
2461
|
-
this.parentFormGroup.enable();
|
|
2462
|
-
}
|
|
2463
|
-
else {
|
|
2464
|
-
this.parentFormGroup.disable();
|
|
2465
|
-
}
|
|
2466
|
-
this.onIsAuthorizedForSaveChange.next(new IsAuthorizedForSaveEvent({
|
|
2467
|
-
isAuthorizedForSave: this.isAuthorizedForSave,
|
|
2468
|
-
}));
|
|
2469
|
-
};
|
|
2470
|
-
}
|
|
2471
|
-
ngOnInit() {
|
|
2472
|
-
this.parentFormGroup.initSaveBody = () => {
|
|
2473
|
-
let saveBody = new RoleSaveBody();
|
|
2474
|
-
saveBody = this.baseFormService.mapMainUIFormToSaveBody(RoleMainUIForm, this.parentFormGroup.getRawValue());
|
|
2475
|
-
return saveBody;
|
|
2476
|
-
};
|
|
2477
|
-
this.parentFormGroup.saveObservableMethod = this.apiService.saveRole;
|
|
2478
|
-
this.route.params.subscribe(async (params) => {
|
|
2479
|
-
this.modelId = params['id'];
|
|
2480
|
-
this.apiService.getPermissionsDropdownListForRole().subscribe(po => {
|
|
2481
|
-
this.permissionsForRoleOptions = po;
|
|
2482
|
-
});
|
|
2483
|
-
if (this.modelId > 0) {
|
|
2484
|
-
forkJoin({
|
|
2485
|
-
mainUIFormDTO: this.apiService.getRoleMainUIFormDTO(this.modelId)
|
|
2486
|
-
})
|
|
2487
|
-
.subscribe(async ({ mainUIFormDTO }) => {
|
|
2488
|
-
this.baseFormService.initFormGroup(this.parentFormGroup, RoleMainUIForm, mainUIFormDTO);
|
|
2489
|
-
await this.handleAuthorizationForSave();
|
|
2490
|
-
this.loading = false;
|
|
2491
|
-
this.onAfterFormGroupInit.next();
|
|
2492
|
-
});
|
|
2493
|
-
}
|
|
2494
|
-
else {
|
|
2495
|
-
this.baseFormService.initFormGroup(this.parentFormGroup, RoleMainUIForm);
|
|
2496
|
-
await this.handleAuthorizationForSave();
|
|
2497
|
-
this.loading = false;
|
|
2498
|
-
this.onAfterFormGroupInit.next();
|
|
2499
|
-
}
|
|
2500
|
-
});
|
|
2501
|
-
}
|
|
2502
|
-
searchUsersForRole(event) {
|
|
2503
|
-
this.apiService.getUsersAutocompleteListForRole(50, event?.query ?? '').subscribe(no => {
|
|
2504
|
-
this.usersForRoleOptions = no;
|
|
2505
|
-
});
|
|
2506
|
-
}
|
|
2507
|
-
save() {
|
|
2508
|
-
this.onSave.next();
|
|
2509
|
-
}
|
|
2510
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: RoleBaseDetailsComponent, deps: [{ token: ApiSecurityService }, { token: i3$2.ActivatedRoute }, { token: BaseFormService }, { token: AuthBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2511
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: RoleBaseDetailsComponent, isStandalone: true, selector: "role-base-details", inputs: { getCrudMenuForOrderedData: "getCrudMenuForOrderedData", parentFormGroup: "parentFormGroup", additionalButtons: "additionalButtons", panelTitle: "panelTitle", showBigPanelTitle: "showBigPanelTitle", panelIcon: "panelIcon", handleAdditionalSaveAuthorization: "handleAdditionalSaveAuthorization" }, outputs: { onSave: "onSave", onAfterFormGroupInit: "onAfterFormGroupInit", onIsAuthorizedForSaveChange: "onIsAuthorizedForSaveChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <spiderly-panel>\r\n <panel-header [title]=\"panelTitle\" [showBigTitle]=\"showBigPanelTitle\" [icon]=\"panelIcon\"></panel-header>\r\n\r\n <panel-body>\r\n <form *ngIf=\"loading === false\" class=\"grid\"> <!-- FT: Don't put @deffer it's not working as expected -->\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"parentFormGroup.controls.roleDTO.getControl('name')\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textarea [control]=\"parentFormGroup.controls.roleDTO.getControl('description')\"></spiderly-textarea>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiautocomplete [control]=\"parentFormGroup.controls.usersNamebookDTOList\" [options]=\"usersForRoleOptions\" (onTextInput)=\"searchUsersForRole($event)\" [label]=\"t('Users')\"></spiderly-multiautocomplete>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiselect [control]=\"parentFormGroup.controls.permissionsIds\" [options]=\"permissionsForRoleOptions\" [label]=\"t('Permissions')\"></spiderly-multiselect>\r\n </div>\r\n </form>\r\n\r\n <card-skeleton *ngIf=\"loading === true\" [height]=\"502\"></card-skeleton>\r\n\r\n </panel-body>\r\n\r\n <panel-footer>\r\n <spiderly-button [disabled]=\"!isAuthorizedForSave\" (onClick)=\"save()\" [label]=\"t('Save')\" icon=\"pi pi-save\"></spiderly-button>\r\n @for (button of additionalButtons; track button.label) {\r\n <spiderly-button (onClick)=\"button.onClick()\" [disabled]=\"button.disabled\" [label]=\"button.label\" [icon]=\"button.icon\"></spiderly-button>\r\n }\r\n <return-button></return-button>\r\n </panel-footer>\r\n </spiderly-panel>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: CardSkeletonComponent, selector: "card-skeleton", inputs: ["height"] }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyTextareaComponent, selector: "spiderly-textarea" }, { kind: "component", type: SpiderlyMultiAutocompleteComponent, selector: "spiderly-multiautocomplete" }, { kind: "component", type: SpiderlyMultiSelectComponent, selector: "spiderly-multiselect" }, { kind: "ngmodule", type: SpiderlyPanelsModule }, { kind: "component", type: PanelHeaderComponent, selector: "panel-header", inputs: ["title", "showBigTitle", "showIcon", "icon", "index", "tabs"] }, { kind: "component", type: PanelBodyComponent, selector: "panel-body", inputs: ["normalBottomPadding"] }, { kind: "component", type: PanelFooterComponent, selector: "panel-footer" }, { kind: "component", type: SpiderlyPanelComponent, selector: "spiderly-panel", inputs: ["isFirstMultiplePanel", "isMiddleMultiplePanel", "isLastMultiplePanel", "toggleable", "toggler", "collapsed", "crudMenu", "showCrudMenu", "showRemoveIcon", "index", "showPanelHeader"], outputs: ["onMenuIconClick", "onRemoveIconClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }, { kind: "component", type: SpiderlyReturnButtonComponent, selector: "return-button", inputs: ["navigateUrl"] }] }); }
|
|
2512
|
-
}
|
|
2513
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: RoleBaseDetailsComponent, decorators: [{
|
|
2514
|
-
type: Component,
|
|
2515
|
-
args: [{ selector: 'role-base-details', imports: [
|
|
2516
|
-
CommonModule,
|
|
2517
|
-
FormsModule,
|
|
2518
|
-
ReactiveFormsModule,
|
|
2519
|
-
TranslocoDirective,
|
|
2520
|
-
CardSkeletonComponent,
|
|
2521
|
-
SpiderlyTextboxComponent,
|
|
2522
|
-
SpiderlyTextareaComponent,
|
|
2523
|
-
SpiderlyMultiAutocompleteComponent,
|
|
2524
|
-
SpiderlyMultiSelectComponent,
|
|
2525
|
-
SpiderlyPanelsModule,
|
|
2526
|
-
SpiderlyButtonComponent,
|
|
2527
|
-
SpiderlyReturnButtonComponent
|
|
2528
|
-
], template: "<ng-container *transloco=\"let t\">\r\n <spiderly-panel>\r\n <panel-header [title]=\"panelTitle\" [showBigTitle]=\"showBigPanelTitle\" [icon]=\"panelIcon\"></panel-header>\r\n\r\n <panel-body>\r\n <form *ngIf=\"loading === false\" class=\"grid\"> <!-- FT: Don't put @deffer it's not working as expected -->\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"parentFormGroup.controls.roleDTO.getControl('name')\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textarea [control]=\"parentFormGroup.controls.roleDTO.getControl('description')\"></spiderly-textarea>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiautocomplete [control]=\"parentFormGroup.controls.usersNamebookDTOList\" [options]=\"usersForRoleOptions\" (onTextInput)=\"searchUsersForRole($event)\" [label]=\"t('Users')\"></spiderly-multiautocomplete>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiselect [control]=\"parentFormGroup.controls.permissionsIds\" [options]=\"permissionsForRoleOptions\" [label]=\"t('Permissions')\"></spiderly-multiselect>\r\n </div>\r\n </form>\r\n\r\n <card-skeleton *ngIf=\"loading === true\" [height]=\"502\"></card-skeleton>\r\n\r\n </panel-body>\r\n\r\n <panel-footer>\r\n <spiderly-button [disabled]=\"!isAuthorizedForSave\" (onClick)=\"save()\" [label]=\"t('Save')\" icon=\"pi pi-save\"></spiderly-button>\r\n @for (button of additionalButtons; track button.label) {\r\n <spiderly-button (onClick)=\"button.onClick()\" [disabled]=\"button.disabled\" [label]=\"button.label\" [icon]=\"button.icon\"></spiderly-button>\r\n }\r\n <return-button></return-button>\r\n </panel-footer>\r\n </spiderly-panel>\r\n</ng-container>" }]
|
|
2529
|
-
}], ctorParameters: () => [{ type: ApiSecurityService }, { type: i3$2.ActivatedRoute }, { type: BaseFormService }, { type: AuthBaseService }], propDecorators: { onSave: [{
|
|
2530
|
-
type: Output
|
|
2531
|
-
}], onAfterFormGroupInit: [{
|
|
2532
|
-
type: Output
|
|
2533
|
-
}], getCrudMenuForOrderedData: [{
|
|
2534
|
-
type: Input
|
|
2535
|
-
}], parentFormGroup: [{
|
|
2536
|
-
type: Input
|
|
2537
|
-
}], additionalButtons: [{
|
|
2538
|
-
type: Input
|
|
2539
|
-
}], panelTitle: [{
|
|
2540
|
-
type: Input
|
|
2541
|
-
}], showBigPanelTitle: [{
|
|
2542
|
-
type: Input
|
|
2543
|
-
}], panelIcon: [{
|
|
2544
|
-
type: Input
|
|
2545
|
-
}], handleAdditionalSaveAuthorization: [{
|
|
2546
|
-
type: Input
|
|
2547
|
-
}], onIsAuthorizedForSaveChange: [{
|
|
2548
|
-
type: Output
|
|
2549
|
-
}] } });
|
|
2550
|
-
|
|
2551
|
-
class BaseFormCopy {
|
|
2552
|
-
constructor(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService) {
|
|
2553
|
-
this.differs = differs;
|
|
2554
|
-
this.http = http;
|
|
2555
|
-
this.messageService = messageService;
|
|
2556
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
2557
|
-
this.router = router;
|
|
2558
|
-
this.route = route;
|
|
2559
|
-
this.translocoService = translocoService;
|
|
2560
|
-
this.baseFormService = baseFormService;
|
|
2561
|
-
this.parentFormGroup = new SpiderlyFormGroup({});
|
|
2562
|
-
this.successfulSaveToastDescription = this.translocoService.translate('SuccessfulSaveToastDescription');
|
|
2563
|
-
//#region Model
|
|
2564
|
-
// onSave method is here only because of the hooks, we should move everything except them to the BaseFromService
|
|
2565
|
-
this.onSave = (reroute = true) => {
|
|
2566
|
-
if (!this.saveBodyClass)
|
|
2567
|
-
throw new SpiderlyError('You did not initialize saveBodyClass');
|
|
2568
|
-
if (!this.mainUIFormClass)
|
|
2569
|
-
throw new SpiderlyError('You did not initialize mainUIFormClass');
|
|
2570
|
-
this.saveBody = this.parentFormGroup.initSaveBody();
|
|
2571
|
-
this.onBeforeSave(this.saveBody);
|
|
2572
|
-
this.saveBody = this.saveBody ?? this.parentFormGroup.getRawValue();
|
|
2573
|
-
const isValid = this.baseFormService.isControlValid(this.parentFormGroup);
|
|
2574
|
-
if (isValid) {
|
|
2575
|
-
this.parentFormGroup.saveObservableMethod(this.saveBody).subscribe(res => {
|
|
2576
|
-
this.messageService.successMessage(this.successfulSaveToastDescription);
|
|
2577
|
-
this.baseFormService.initFormGroup(this.parentFormGroup, this.mainUIFormClass, res);
|
|
2578
|
-
if (reroute) {
|
|
2579
|
-
const saveBodyMainDTOKey = this.baseFormService.getSaveBodyMainDTOKey(this.saveBodyClass);
|
|
2580
|
-
const savedObjectId = res[saveBodyMainDTOKey]?.id;
|
|
2581
|
-
this.rerouteToSavedObject(savedObjectId); // You always need to have id, because of id == 0 and version change
|
|
2582
|
-
}
|
|
2583
|
-
this.onAfterSave();
|
|
2584
|
-
});
|
|
2585
|
-
this.onAfterSaveRequest();
|
|
2586
|
-
}
|
|
2587
|
-
else {
|
|
2588
|
-
this.baseFormService.showInvalidFieldsMessage();
|
|
2589
|
-
}
|
|
2590
|
-
};
|
|
2591
|
-
this.rerouteToSavedObject = (rerouteId) => {
|
|
2592
|
-
if (rerouteId == null) {
|
|
2593
|
-
const currentUrl = this.router.url;
|
|
2594
|
-
const parentUrl = getParentUrl(currentUrl);
|
|
2595
|
-
this.router.navigateByUrl(parentUrl);
|
|
2596
|
-
return;
|
|
2597
|
-
}
|
|
2598
|
-
const segments = this.router.url.split('/');
|
|
2599
|
-
segments[segments.length - 1] = rerouteId.toString();
|
|
2600
|
-
const newUrl = segments.join('/');
|
|
2601
|
-
this.router.navigateByUrl(newUrl);
|
|
2602
|
-
};
|
|
2603
|
-
this.onBeforeSave = (saveBody) => { };
|
|
2604
|
-
this.onAfterSave = () => { };
|
|
2605
|
-
this.onAfterSaveRequest = () => { };
|
|
2606
|
-
}
|
|
2607
|
-
ngOnInit() {
|
|
2608
|
-
}
|
|
2609
|
-
//#endregion
|
|
2610
|
-
//#region Model List
|
|
2611
|
-
getFormArrayControlByIndex(formControlName, formArray, index, filter) {
|
|
2612
|
-
// if(formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)
|
|
2613
|
-
// formArray.controlNamesFromHtml.push(formControlName);
|
|
2614
|
-
let filteredFormGroups;
|
|
2615
|
-
if (filter) {
|
|
2616
|
-
filteredFormGroups = filter(formArray.controls);
|
|
2617
|
-
}
|
|
2618
|
-
else {
|
|
2619
|
-
return formArray.controls[index].controls[formControlName];
|
|
2620
|
-
}
|
|
2621
|
-
return filteredFormGroups[index]?.controls[formControlName]; // FT: Don't change this. It's always possible that change detection occurs before something.
|
|
2622
|
-
}
|
|
2623
|
-
getFormArrayControls(formControlName, formArray, filter) {
|
|
2624
|
-
// if(formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)
|
|
2625
|
-
// formArray.controlNamesFromHtml.push(formControlName);
|
|
2626
|
-
let filteredFormGroups;
|
|
2627
|
-
if (filter) {
|
|
2628
|
-
filteredFormGroups = filter(formArray.controls);
|
|
2629
|
-
}
|
|
2630
|
-
else {
|
|
2631
|
-
return formArray.controls.map(x => x.controls[formControlName]);
|
|
2632
|
-
}
|
|
2633
|
-
return filteredFormGroups.map(x => x.controls[formControlName]);
|
|
2634
|
-
}
|
|
2635
|
-
removeFormControlsFromTheFormArray(formArray, indexes) {
|
|
2636
|
-
// Sort indexes in descending order to avoid index shifts when removing controls
|
|
2637
|
-
const sortedIndexes = indexes.sort((a, b) => b - a);
|
|
2638
|
-
sortedIndexes.forEach(index => {
|
|
2639
|
-
if (index >= 0 && index < formArray.length) {
|
|
2640
|
-
formArray.removeAt(index);
|
|
2641
|
-
}
|
|
2642
|
-
});
|
|
2643
|
-
}
|
|
2644
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: BaseFormCopy, deps: [{ token: i0.KeyValueDiffers }, { token: i1$4.HttpClient }, { token: SpiderlyMessageService }, { token: i0.ChangeDetectorRef }, { token: i3$2.Router }, { token: i3$2.ActivatedRoute }, { token: i1.TranslocoService }, { token: BaseFormService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2645
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: BaseFormCopy, isStandalone: false, selector: "base-form", ngImport: i0, template: '', isInline: true }); }
|
|
2646
|
-
}
|
|
2647
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: BaseFormCopy, decorators: [{
|
|
2648
|
-
type: Component,
|
|
2649
|
-
args: [{ selector: 'base-form', template: '', standalone: false }]
|
|
2650
|
-
}], ctorParameters: () => [{ type: i0.KeyValueDiffers }, { type: i1$4.HttpClient }, { type: SpiderlyMessageService }, { type: i0.ChangeDetectorRef }, { type: i3$2.Router }, { type: i3$2.ActivatedRoute }, { type: i1.TranslocoService }, { type: BaseFormService }] });
|
|
2651
|
-
|
|
2652
|
-
class VerificationWrapperComponent extends BaseFormCopy {
|
|
2653
|
-
constructor(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService) {
|
|
2654
|
-
super(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService);
|
|
2655
|
-
this.differs = differs;
|
|
2656
|
-
this.http = http;
|
|
2657
|
-
this.messageService = messageService;
|
|
2658
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
2659
|
-
this.router = router;
|
|
2660
|
-
this.route = route;
|
|
2661
|
-
this.translocoService = translocoService;
|
|
2662
|
-
this.baseFormService = baseFormService;
|
|
2663
|
-
this.verificationTokenRequestFormGroup = new SpiderlyFormGroup({});
|
|
2664
|
-
this.onResendVerificationToken = new EventEmitter();
|
|
2665
|
-
this.onCodeSubmit = new EventEmitter();
|
|
2666
|
-
}
|
|
2667
|
-
ngOnInit() {
|
|
2668
|
-
this.initVerificationTokenRequestFormGroup(new VerificationTokenRequest({ email: this.email }));
|
|
2669
|
-
}
|
|
2670
|
-
initVerificationTokenRequestFormGroup(model) {
|
|
2671
|
-
this.baseFormService.initFormGroup(this.verificationTokenRequestFormGroup, VerificationTokenRequest, model, ['verificationCode']);
|
|
2672
|
-
}
|
|
2673
|
-
codeSubmit() {
|
|
2674
|
-
let isValid = this.baseFormService.isControlValid(this.verificationTokenRequestFormGroup);
|
|
2675
|
-
if (isValid) {
|
|
2676
|
-
this.onCodeSubmit.next(this.verificationTokenRequestFormGroup.controls.verificationCode.getRawValue());
|
|
2677
|
-
}
|
|
2678
|
-
}
|
|
2679
|
-
resendVerificationToken() {
|
|
2680
|
-
this.onResendVerificationToken.next(null);
|
|
2681
|
-
}
|
|
2682
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: VerificationWrapperComponent, deps: [{ token: i0.KeyValueDiffers }, { token: i1$4.HttpClient }, { token: SpiderlyMessageService }, { token: i0.ChangeDetectorRef }, { token: i3$2.Router }, { token: i3$2.ActivatedRoute }, { token: i1.TranslocoService }, { token: BaseFormService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2683
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: VerificationWrapperComponent, isStandalone: true, selector: "verification-wrapper", inputs: { email: "email" }, outputs: { onResendVerificationToken: "onResendVerificationToken", onCodeSubmit: "onCodeSubmit" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div class=\"min-h-screen\" style=\"display: flex; justify-content: center; align-items: center;\">\r\n <div class=\"dialog\" style=\"padding: 0px;\">\r\n @if (verificationTokenRequestFormGroup != null) {\r\n <spiderly-panel>\r\n <panel-header [title]=\"t('AccountVerificationHeader')\" [showBigTitle]=\"true\" icon=\"pi pi-envelope\"></panel-header>\r\n \r\n <panel-body>\r\n <form class=\"grid\">\r\n <div class=\"col-12\">\r\n <div style=\"font-size: 17.5px\">{{t('AccountVerificationTitle')}}</div>\r\n </div>\r\n <div class=\"col-12\">\r\n {{t('AccountVerificationDescription', {email: email})}}\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"verificationTokenRequestFormGroup.getControl('verificationCode')\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-button (onClick)=\"codeSubmit()\" [label]=\"t('Submit')\" icon=\"pi pi-verified\" type=\"submit\"></spiderly-button>\r\n </div>\r\n </form>\r\n </panel-body>\r\n \r\n <panel-footer>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToGmail')\" icon=\"pi pi-external-link\" href=\"https://mail.google.com/mail/u/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToYahoo')\" icon=\"pi pi-external-link\" href=\"https://mail.yahoo.com/d/folders/1/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n </panel-footer>\r\n <panel-footer>\r\n <div>{{t('ResendVerificationCodeFirstPart')}} <a class=\"link\" (click)=\"resendVerificationToken()\">{{t('ResendVerificationCodeLinkSecondPart')}}</a></div>\r\n </panel-footer>\r\n </spiderly-panel>\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n </div>\r\n </div>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }, { kind: "ngmodule", type: SpiderlyPanelsModule }, { kind: "component", type: PanelHeaderComponent, selector: "panel-header", inputs: ["title", "showBigTitle", "showIcon", "icon", "index", "tabs"] }, { kind: "component", type: PanelBodyComponent, selector: "panel-body", inputs: ["normalBottomPadding"] }, { kind: "component", type: PanelFooterComponent, selector: "panel-footer" }, { kind: "component", type: SpiderlyPanelComponent, selector: "spiderly-panel", inputs: ["isFirstMultiplePanel", "isMiddleMultiplePanel", "isLastMultiplePanel", "toggleable", "toggler", "collapsed", "crudMenu", "showCrudMenu", "showRemoveIcon", "index", "showPanelHeader"], outputs: ["onMenuIconClick", "onRemoveIconClick"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
2684
|
-
}
|
|
2685
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: VerificationWrapperComponent, decorators: [{
|
|
2686
|
-
type: Component,
|
|
2687
|
-
args: [{ selector: 'verification-wrapper', imports: [
|
|
2688
|
-
CommonModule,
|
|
2689
|
-
FormsModule,
|
|
2690
|
-
ReactiveFormsModule,
|
|
2691
|
-
SpiderlyControlsModule,
|
|
2692
|
-
SpiderlyPanelsModule,
|
|
2693
|
-
ButtonModule,
|
|
2694
|
-
TranslocoDirective,
|
|
2695
|
-
], template: "<ng-container *transloco=\"let t\">\r\n <div class=\"min-h-screen\" style=\"display: flex; justify-content: center; align-items: center;\">\r\n <div class=\"dialog\" style=\"padding: 0px;\">\r\n @if (verificationTokenRequestFormGroup != null) {\r\n <spiderly-panel>\r\n <panel-header [title]=\"t('AccountVerificationHeader')\" [showBigTitle]=\"true\" icon=\"pi pi-envelope\"></panel-header>\r\n \r\n <panel-body>\r\n <form class=\"grid\">\r\n <div class=\"col-12\">\r\n <div style=\"font-size: 17.5px\">{{t('AccountVerificationTitle')}}</div>\r\n </div>\r\n <div class=\"col-12\">\r\n {{t('AccountVerificationDescription', {email: email})}}\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"verificationTokenRequestFormGroup.getControl('verificationCode')\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-button (onClick)=\"codeSubmit()\" [label]=\"t('Submit')\" icon=\"pi pi-verified\" type=\"submit\"></spiderly-button>\r\n </div>\r\n </form>\r\n </panel-body>\r\n \r\n <panel-footer>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToGmail')\" icon=\"pi pi-external-link\" href=\"https://mail.google.com/mail/u/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToYahoo')\" icon=\"pi pi-external-link\" href=\"https://mail.yahoo.com/d/folders/1/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n </panel-footer>\r\n <panel-footer>\r\n <div>{{t('ResendVerificationCodeFirstPart')}} <a class=\"link\" (click)=\"resendVerificationToken()\">{{t('ResendVerificationCodeLinkSecondPart')}}</a></div>\r\n </panel-footer>\r\n </spiderly-panel>\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n </div>\r\n </div>\r\n</ng-container>" }]
|
|
2696
|
-
}], ctorParameters: () => [{ type: i0.KeyValueDiffers }, { type: i1$4.HttpClient }, { type: SpiderlyMessageService }, { type: i0.ChangeDetectorRef }, { type: i3$2.Router }, { type: i3$2.ActivatedRoute }, { type: i1.TranslocoService }, { type: BaseFormService }], propDecorators: { email: [{
|
|
2697
|
-
type: Input
|
|
2698
|
-
}], onResendVerificationToken: [{
|
|
2699
|
-
type: Output
|
|
2700
|
-
}], onCodeSubmit: [{
|
|
2701
|
-
type: Output
|
|
2702
|
-
}] } });
|
|
2703
|
-
|
|
2704
2373
|
class LoginVerificationComponent {
|
|
2705
2374
|
constructor(authService, messageService, translocoService) {
|
|
2706
2375
|
this.authService = authService;
|
|
@@ -2720,15 +2389,15 @@ class LoginVerificationComponent {
|
|
|
2720
2389
|
this.authService.navigateToDashboard();
|
|
2721
2390
|
});
|
|
2722
2391
|
}
|
|
2723
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LoginVerificationComponent, deps: [{ token:
|
|
2724
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: LoginVerificationComponent, isStandalone: true, selector: "login-verification", inputs: { email: "email", userId: "userId" }, ngImport: i0, template: "<verification-wrapper [email]=\"email\" (onResendVerificationToken)=\"resendVerificationToken()\" (onCodeSubmit)=\"onCodeSubmit($event)\"></verification-wrapper>\
|
|
2392
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LoginVerificationComponent, deps: [{ token: AuthServiceBase }, { token: SpiderlyMessageService }, { token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2393
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: LoginVerificationComponent, isStandalone: true, selector: "login-verification", inputs: { email: "email", userId: "userId" }, ngImport: i0, template: "<verification-wrapper [email]=\"email\" (onResendVerificationToken)=\"resendVerificationToken()\" (onCodeSubmit)=\"onCodeSubmit($event)\"></verification-wrapper>\n\n", dependencies: [{ kind: "component", type: VerificationWrapperComponent, selector: "verification-wrapper", inputs: ["email"], outputs: ["onResendVerificationToken", "onCodeSubmit"] }] }); }
|
|
2725
2394
|
}
|
|
2726
2395
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LoginVerificationComponent, decorators: [{
|
|
2727
2396
|
type: Component,
|
|
2728
2397
|
args: [{ selector: 'login-verification', imports: [
|
|
2729
2398
|
VerificationWrapperComponent
|
|
2730
|
-
], template: "<verification-wrapper [email]=\"email\" (onResendVerificationToken)=\"resendVerificationToken()\" (onCodeSubmit)=\"onCodeSubmit($event)\"></verification-wrapper>\
|
|
2731
|
-
}], ctorParameters: () => [{ type:
|
|
2399
|
+
], template: "<verification-wrapper [email]=\"email\" (onResendVerificationToken)=\"resendVerificationToken()\" (onCodeSubmit)=\"onCodeSubmit($event)\"></verification-wrapper>\n\n" }]
|
|
2400
|
+
}], ctorParameters: () => [{ type: AuthServiceBase }, { type: SpiderlyMessageService }, { type: i1.TranslocoService }], propDecorators: { email: [{
|
|
2732
2401
|
type: Input
|
|
2733
2402
|
}], userId: [{
|
|
2734
2403
|
type: Input
|
|
@@ -2742,14 +2411,14 @@ class GoogleButtonComponent {
|
|
|
2742
2411
|
this.loginWithGoogle.emit(createFakeGoogleWrapper());
|
|
2743
2412
|
}
|
|
2744
2413
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: GoogleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2745
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: GoogleButtonComponent, isStandalone: true, selector: "google-button", inputs: { label: "label" }, outputs: { loginWithGoogle: "loginWithGoogle" }, ngImport: i0, template: "<ng-container>\
|
|
2414
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: GoogleButtonComponent, isStandalone: true, selector: "google-button", inputs: { label: "label" }, outputs: { loginWithGoogle: "loginWithGoogle" }, ngImport: i0, template: "<ng-container>\n <spiderly-button (onClick)=\"handleGoogleLogin()\" [label]=\"label\" [outlined]=\"true\" [style]=\"{width: '100%'}\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"0.98em\" height=\"1em\" viewBox=\"0 0 256 262\"><path fill=\"#4285f4\" d=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622l38.755 30.023l2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\"/><path fill=\"#34a853\" d=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055c-34.523 0-63.824-22.773-74.269-54.25l-1.531.13l-40.298 31.187l-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\"/><path fill=\"#fbbc05\" d=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82c0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602z\"/><path fill=\"#eb4335\" d=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0C79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\"/></svg>\n </spiderly-button>\n</ng-container>", dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }] }); }
|
|
2746
2415
|
}
|
|
2747
2416
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: GoogleButtonComponent, decorators: [{
|
|
2748
2417
|
type: Component,
|
|
2749
2418
|
args: [{ selector: 'google-button', imports: [
|
|
2750
2419
|
ButtonModule,
|
|
2751
2420
|
SpiderlyButtonComponent
|
|
2752
|
-
], template: "<ng-container>\
|
|
2421
|
+
], template: "<ng-container>\n <spiderly-button (onClick)=\"handleGoogleLogin()\" [label]=\"label\" [outlined]=\"true\" [style]=\"{width: '100%'}\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"0.98em\" height=\"1em\" viewBox=\"0 0 256 262\"><path fill=\"#4285f4\" d=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622l38.755 30.023l2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\"/><path fill=\"#34a853\" d=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055c-34.523 0-63.824-22.773-74.269-54.25l-1.531.13l-40.298 31.187l-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\"/><path fill=\"#fbbc05\" d=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82c0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602z\"/><path fill=\"#eb4335\" d=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0C79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\"/></svg>\n </spiderly-button>\n</ng-container>" }]
|
|
2753
2422
|
}], propDecorators: { label: [{
|
|
2754
2423
|
type: Input
|
|
2755
2424
|
}], loginWithGoogle: [{
|
|
@@ -2762,8 +2431,7 @@ class AuthComponent {
|
|
|
2762
2431
|
this.authService = authService;
|
|
2763
2432
|
this.initCompanyAuthDialogDetailsSubscription = null;
|
|
2764
2433
|
this.onCompanyNameChange = new EventEmitter();
|
|
2765
|
-
this.showGoogleAuth =
|
|
2766
|
-
this.hasGoogleAuth = this.config.googleAuth;
|
|
2434
|
+
this.showGoogleAuth = false;
|
|
2767
2435
|
}
|
|
2768
2436
|
ngOnInit() {
|
|
2769
2437
|
this.initCompanyDetails();
|
|
@@ -2785,8 +2453,8 @@ class AuthComponent {
|
|
|
2785
2453
|
this.initCompanyAuthDialogDetailsSubscription.unsubscribe();
|
|
2786
2454
|
}
|
|
2787
2455
|
}
|
|
2788
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthComponent, deps: [{ token:
|
|
2789
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: AuthComponent, isStandalone: true, selector: "auth", inputs: { showGoogleAuth: "showGoogleAuth" }, outputs: { onCompanyNameChange: "onCompanyNameChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\
|
|
2456
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthComponent, deps: [{ token: ConfigServiceBase }, { token: AuthServiceBase }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2457
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: AuthComponent, isStandalone: true, selector: "auth", inputs: { showGoogleAuth: "showGoogleAuth" }, outputs: { onCompanyNameChange: "onCompanyNameChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\n <div class=\"flex flex-column w-full\">\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--p-primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\n <div class=\"text-center\" style=\"margin-bottom: 38px;\">\n <img *ngIf=\"image != null\" [src]=\"image\" alt=\"{{companyName}} Logo\" title=\"{{companyName}} Logo\" height=\"60\">\n <i *ngIf=\"image == null\" class=\"pi pi-spin pi-spinner primary-color\" style=\"font-size: 2rem\"></i>\n </div>\n\n <ng-content></ng-content>\n \n <div *ngIf=\"showGoogleAuth\">\n <div style=\"display: flex; align-items: center; gap: 7px; justify-content: center; margin-bottom: 16px;\">\n <div class=\"separator\"></div>\n <div>{{t('or')}}</div>\n <div class=\"separator\"></div>\n </div>\n <div>\n <!-- https://code-maze.com/how-to-sign-in-with-google-angular-aspnet-webapi/ -->\n <google-button (loginWithGoogle)=\"onGoogleSignIn($event)\" [label]=\"t('ContinueWithGoogle')\"></google-button> \n </div>\n </div>\n \n </div>\n </div>\n </div>\n </div>\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GoogleButtonComponent, selector: "google-button", inputs: ["label"], outputs: ["loginWithGoogle"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
2790
2458
|
}
|
|
2791
2459
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthComponent, decorators: [{
|
|
2792
2460
|
type: Component,
|
|
@@ -2794,8 +2462,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
2794
2462
|
CommonModule,
|
|
2795
2463
|
GoogleButtonComponent,
|
|
2796
2464
|
TranslocoDirective,
|
|
2797
|
-
], template: "<ng-container *transloco=\"let t\">\
|
|
2798
|
-
}], ctorParameters: () => [{ type:
|
|
2465
|
+
], template: "<ng-container *transloco=\"let t\">\n <div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\n <div class=\"flex flex-column w-full\">\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--p-primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\n <div class=\"text-center\" style=\"margin-bottom: 38px;\">\n <img *ngIf=\"image != null\" [src]=\"image\" alt=\"{{companyName}} Logo\" title=\"{{companyName}} Logo\" height=\"60\">\n <i *ngIf=\"image == null\" class=\"pi pi-spin pi-spinner primary-color\" style=\"font-size: 2rem\"></i>\n </div>\n\n <ng-content></ng-content>\n \n <div *ngIf=\"showGoogleAuth\">\n <div style=\"display: flex; align-items: center; gap: 7px; justify-content: center; margin-bottom: 16px;\">\n <div class=\"separator\"></div>\n <div>{{t('or')}}</div>\n <div class=\"separator\"></div>\n </div>\n <div>\n <!-- https://code-maze.com/how-to-sign-in-with-google-angular-aspnet-webapi/ -->\n <google-button (loginWithGoogle)=\"onGoogleSignIn($event)\" [label]=\"t('ContinueWithGoogle')\"></google-button> \n </div>\n </div>\n \n </div>\n </div>\n </div>\n </div>\n</ng-container>" }]
|
|
2466
|
+
}], ctorParameters: () => [{ type: ConfigServiceBase }, { type: AuthServiceBase }], propDecorators: { onCompanyNameChange: [{
|
|
2799
2467
|
type: Output
|
|
2800
2468
|
}], showGoogleAuth: [{
|
|
2801
2469
|
type: Input
|
|
@@ -2828,14 +2496,19 @@ class LoginComponent extends BaseFormCopy {
|
|
|
2828
2496
|
}
|
|
2829
2497
|
sendLoginVerificationEmail() {
|
|
2830
2498
|
let isFormGroupValid = this.baseFormService.isControlValid(this.loginFormGroup);
|
|
2831
|
-
if (isFormGroupValid == false)
|
|
2499
|
+
if (isFormGroupValid == false) {
|
|
2500
|
+
this.baseFormService.showInvalidFieldsMessage();
|
|
2832
2501
|
return;
|
|
2833
|
-
|
|
2502
|
+
}
|
|
2503
|
+
this.authService.sendLoginVerificationEmail(this.loginFormGroup.getRawValue()).subscribe((result) => {
|
|
2504
|
+
if (result.message) {
|
|
2505
|
+
this.messageService.successMessage(result.message);
|
|
2506
|
+
}
|
|
2834
2507
|
this.showEmailSentDialog = true;
|
|
2835
2508
|
});
|
|
2836
2509
|
}
|
|
2837
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LoginComponent, deps: [{ token: i0.KeyValueDiffers }, { token: i1$
|
|
2838
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: LoginComponent, isStandalone: true, selector: "app-login", usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\
|
|
2510
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LoginComponent, deps: [{ token: i0.KeyValueDiffers }, { token: i1$3.HttpClient }, { token: SpiderlyMessageService }, { token: i0.ChangeDetectorRef }, { token: i3$2.Router }, { token: i3$2.ActivatedRoute }, { token: i1.TranslocoService }, { token: BaseFormService }, { token: AuthServiceBase }, { token: ConfigServiceBase }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2511
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: LoginComponent, isStandalone: true, selector: "app-login", usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n @if (loginFormGroup != null) {\n @if (showEmailSentDialog == false) {\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\n <!-- We are not loading anything from the server here so we don't need defer block -->\n <form [formGroup]=\"loginFormGroup\" style=\"margin-bottom: 16px;\">\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0;\">\n <spiderly-textbox [control]=\"loginFormGroup.getControl('email')\"></spiderly-textbox>\n </div>\n \n <div class=\"mb-4 gap-5\">\n <div class=\"text-center\" style=\"font-size: smaller;\">\n {{t('AgreementsOnRegister')}} <b routerLink=\"/user-agreement\" class=\"primary-color cursor-pointer\">{{t('UserAgreement')}}</b> {{t('and')}} <b routerLink=\"/privacy-policy\" class=\"primary-color cursor-pointer\">{{t('PrivacyPolicy')}}</b>.\n </div>\n </div>\n\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\n <spiderly-button [label]=\"t('Login')\" (onClick)=\"sendLoginVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\" type=\"submit\"></spiderly-button>\n </div>\n </form>\n </auth>\n }\n @else {\n <login-verification [email]=\"loginFormGroup.controls.email.getRawValue()\"></login-verification>\n }\n }\n @else {\n <!-- TODO: Add skeleton -->\n }\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: AuthComponent, selector: "auth", inputs: ["showGoogleAuth"], outputs: ["onCompanyNameChange"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }, { kind: "component", type: LoginVerificationComponent, selector: "login-verification", inputs: ["email", "userId"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
2839
2512
|
}
|
|
2840
2513
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LoginComponent, decorators: [{
|
|
2841
2514
|
type: Component,
|
|
@@ -2846,21 +2519,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
2846
2519
|
SpiderlyControlsModule,
|
|
2847
2520
|
LoginVerificationComponent,
|
|
2848
2521
|
TranslocoDirective,
|
|
2849
|
-
], template: "<ng-container *transloco=\"let t\">\
|
|
2850
|
-
}], ctorParameters: () => [{ type: i0.KeyValueDiffers }, { type: i1$
|
|
2522
|
+
], template: "<ng-container *transloco=\"let t\">\n @if (loginFormGroup != null) {\n @if (showEmailSentDialog == false) {\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\n <!-- We are not loading anything from the server here so we don't need defer block -->\n <form [formGroup]=\"loginFormGroup\" style=\"margin-bottom: 16px;\">\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0;\">\n <spiderly-textbox [control]=\"loginFormGroup.getControl('email')\"></spiderly-textbox>\n </div>\n \n <div class=\"mb-4 gap-5\">\n <div class=\"text-center\" style=\"font-size: smaller;\">\n {{t('AgreementsOnRegister')}} <b routerLink=\"/user-agreement\" class=\"primary-color cursor-pointer\">{{t('UserAgreement')}}</b> {{t('and')}} <b routerLink=\"/privacy-policy\" class=\"primary-color cursor-pointer\">{{t('PrivacyPolicy')}}</b>.\n </div>\n </div>\n\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\n <spiderly-button [label]=\"t('Login')\" (onClick)=\"sendLoginVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\" type=\"submit\"></spiderly-button>\n </div>\n </form>\n </auth>\n }\n @else {\n <login-verification [email]=\"loginFormGroup.controls.email.getRawValue()\"></login-verification>\n }\n }\n @else {\n <!-- TODO: Add skeleton -->\n }\n</ng-container>" }]
|
|
2523
|
+
}], ctorParameters: () => [{ type: i0.KeyValueDiffers }, { type: i1$3.HttpClient }, { type: SpiderlyMessageService }, { type: i0.ChangeDetectorRef }, { type: i3$2.Router }, { type: i3$2.ActivatedRoute }, { type: i1.TranslocoService }, { type: BaseFormService }, { type: AuthServiceBase }, { type: ConfigServiceBase }] });
|
|
2851
2524
|
|
|
2852
2525
|
class FooterComponent {
|
|
2853
2526
|
constructor(config) {
|
|
2854
2527
|
this.config = config;
|
|
2855
2528
|
this.companyName = this.config.companyName;
|
|
2856
2529
|
}
|
|
2857
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: FooterComponent, deps: [{ token:
|
|
2858
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: FooterComponent, isStandalone: true, selector: "footer", ngImport: i0, template: "<div class=\"layout-footer\">\
|
|
2530
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: FooterComponent, deps: [{ token: ConfigServiceBase }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2531
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: FooterComponent, isStandalone: true, selector: "footer", ngImport: i0, template: "<div class=\"layout-footer\">\n <span class=\"font-medium ml-2\">{{companyName}}</span>\n</div>\n" }); }
|
|
2859
2532
|
}
|
|
2860
2533
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: FooterComponent, decorators: [{
|
|
2861
2534
|
type: Component,
|
|
2862
|
-
args: [{ selector: 'footer', standalone: true, template: "<div class=\"layout-footer\">\
|
|
2863
|
-
}], ctorParameters: () => [{ type:
|
|
2535
|
+
args: [{ selector: 'footer', standalone: true, template: "<div class=\"layout-footer\">\n <span class=\"font-medium ml-2\">{{companyName}}</span>\n</div>\n" }]
|
|
2536
|
+
}], ctorParameters: () => [{ type: ConfigServiceBase }] });
|
|
2864
2537
|
|
|
2865
2538
|
class IndexCardComponent {
|
|
2866
2539
|
constructor(formBuilder) {
|
|
@@ -2879,14 +2552,14 @@ class IndexCardComponent {
|
|
|
2879
2552
|
this.onRemoveIconClick.next(null);
|
|
2880
2553
|
}
|
|
2881
2554
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: IndexCardComponent, deps: [{ token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2882
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: IndexCardComponent, isStandalone: true, selector: "index-card", inputs: { last: "last", index: "index", header: "header", description: "description", showRemoveIcon: "showRemoveIcon", showCrudMenu: "showCrudMenu", crudMenu: "crudMenu" }, outputs: { onMenuIconClick: "onMenuIconClick", onRemoveIconClick: "onRemoveIconClick" }, ngImport: i0, template: "<div [ngClass]=\"{\
|
|
2555
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: IndexCardComponent, isStandalone: true, selector: "index-card", inputs: { last: "last", index: "index", header: "header", description: "description", showRemoveIcon: "showRemoveIcon", showCrudMenu: "showCrudMenu", crudMenu: "crudMenu" }, outputs: { onMenuIconClick: "onMenuIconClick", onRemoveIconClick: "onRemoveIconClick" }, ngImport: i0, template: "<div [ngClass]=\"{\n\t'last-child-zero-margin': last,\n 'card-margin-bottom': true,\n\t}\">\n\t<spiderly-panel [crudMenu]=\"crudMenu\" [showCrudMenu]=\"showCrudMenu\" (onMenuIconClick)=\"menuIconClick($event)\" [showRemoveIcon]=\"showRemoveIcon\" (onRemoveIconClick)=\"removeIconClick()\" [index]=\"index\">\n\t\t<panel-header [title]=\"header\" [index]=\"index\" [showIcon]=\"false\"></panel-header>\n\t\t\n\t\t<panel-body>\n\t\t\t<ng-content>\n\t\t\t\t<!-- Custom things below description -->\n\t\t\t</ng-content>\n\t\t</panel-body>\n\t\t\n\t</spiderly-panel>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: SpiderlyPanelsModule }, { kind: "component", type: PanelHeaderComponent, selector: "panel-header", inputs: ["title", "showBigTitle", "showIcon", "icon", "index", "tabs"] }, { kind: "component", type: PanelBodyComponent, selector: "panel-body", inputs: ["normalBottomPadding"] }, { kind: "component", type: SpiderlyPanelComponent, selector: "spiderly-panel", inputs: ["isFirstMultiplePanel", "isMiddleMultiplePanel", "isLastMultiplePanel", "toggleable", "toggler", "collapsed", "crudMenu", "showCrudMenu", "showRemoveIcon", "index", "showPanelHeader"], outputs: ["onMenuIconClick", "onRemoveIconClick"] }] }); }
|
|
2883
2556
|
}
|
|
2884
2557
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: IndexCardComponent, decorators: [{
|
|
2885
2558
|
type: Component,
|
|
2886
2559
|
args: [{ selector: 'index-card', imports: [
|
|
2887
2560
|
CommonModule,
|
|
2888
2561
|
SpiderlyPanelsModule
|
|
2889
|
-
], template: "<div [ngClass]=\"{\
|
|
2562
|
+
], template: "<div [ngClass]=\"{\n\t'last-child-zero-margin': last,\n 'card-margin-bottom': true,\n\t}\">\n\t<spiderly-panel [crudMenu]=\"crudMenu\" [showCrudMenu]=\"showCrudMenu\" (onMenuIconClick)=\"menuIconClick($event)\" [showRemoveIcon]=\"showRemoveIcon\" (onRemoveIconClick)=\"removeIconClick()\" [index]=\"index\">\n\t\t<panel-header [title]=\"header\" [index]=\"index\" [showIcon]=\"false\"></panel-header>\n\t\t\n\t\t<panel-body>\n\t\t\t<ng-content>\n\t\t\t\t<!-- Custom things below description -->\n\t\t\t</ng-content>\n\t\t</panel-body>\n\t\t\n\t</spiderly-panel>\n</div>\n" }]
|
|
2890
2563
|
}], ctorParameters: () => [{ type: i3.FormBuilder }], propDecorators: { last: [{
|
|
2891
2564
|
type: Input
|
|
2892
2565
|
}], index: [{
|
|
@@ -2918,14 +2591,14 @@ class InfoCardComponent {
|
|
|
2918
2591
|
ngOnInit() {
|
|
2919
2592
|
}
|
|
2920
2593
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: InfoCardComponent, deps: [{ token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2921
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: InfoCardComponent, isStandalone: true, selector: "info-card", inputs: { header: "header", showSmallIcon: "showSmallIcon", icon: "icon", textColor: "textColor" }, ngImport: i0, template: "<div class=\"card responsive-card-padding info-card\">\
|
|
2594
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: InfoCardComponent, isStandalone: true, selector: "info-card", inputs: { header: "header", showSmallIcon: "showSmallIcon", icon: "icon", textColor: "textColor" }, ngImport: i0, template: "<div class=\"card responsive-card-padding info-card\">\n <div class=\"info-card__content\">\n <div>\n <div class=\"info-card__header\">\n <i *ngIf=\"showSmallIcon\" class=\"{{icon}} info-card__icon\"></i>\n {{header}}\n </div>\n <div class=\"info-card__body\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n\n <div class=\"info-card__background-icon\">\n <i class=\"{{icon}}\"></i>\n </div>\n</div>", styles: [".info-card{background-color:var(--p-primary-100);position:relative;overflow:hidden}.info-card__content{display:flex;align-items:center;gap:21px;position:relative;z-index:2}.info-card__icon{font-size:21px;color:var(--p-primary-color)}.info-card__header{display:flex;gap:8px;color:var(--p-primary-color);font-weight:600;text-align:left;font-size:17.5px}.info-card__body{text-align:left;margin-top:8px}.info-card__background-icon{text-align:center;transform:rotate(30deg);color:var(--p-primary-400);opacity:.2;position:absolute;overflow:hidden;right:-30px;top:-25px;z-index:1}.info-card__background-icon i{font-size:270px}::ng-deep html.dark .info-card{background-color:var(--p-primary-950)}::ng-deep html.dark .info-card__header{color:var(--p-primary-400)}::ng-deep html.dark .info-card__icon{color:var(--p-primary-400)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: SpiderlyPanelsModule }] }); }
|
|
2922
2595
|
}
|
|
2923
2596
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: InfoCardComponent, decorators: [{
|
|
2924
2597
|
type: Component,
|
|
2925
2598
|
args: [{ selector: 'info-card', imports: [
|
|
2926
2599
|
CommonModule,
|
|
2927
2600
|
SpiderlyPanelsModule
|
|
2928
|
-
], template: "<div class=\"card responsive-card-padding info-card\">\
|
|
2601
|
+
], template: "<div class=\"card responsive-card-padding info-card\">\n <div class=\"info-card__content\">\n <div>\n <div class=\"info-card__header\">\n <i *ngIf=\"showSmallIcon\" class=\"{{icon}} info-card__icon\"></i>\n {{header}}\n </div>\n <div class=\"info-card__body\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n\n <div class=\"info-card__background-icon\">\n <i class=\"{{icon}}\"></i>\n </div>\n</div>", styles: [".info-card{background-color:var(--p-primary-100);position:relative;overflow:hidden}.info-card__content{display:flex;align-items:center;gap:21px;position:relative;z-index:2}.info-card__icon{font-size:21px;color:var(--p-primary-color)}.info-card__header{display:flex;gap:8px;color:var(--p-primary-color);font-weight:600;text-align:left;font-size:17.5px}.info-card__body{text-align:left;margin-top:8px}.info-card__background-icon{text-align:center;transform:rotate(30deg);color:var(--p-primary-400);opacity:.2;position:absolute;overflow:hidden;right:-30px;top:-25px;z-index:1}.info-card__background-icon i{font-size:270px}::ng-deep html.dark .info-card{background-color:var(--p-primary-950)}::ng-deep html.dark .info-card__header{color:var(--p-primary-400)}::ng-deep html.dark .info-card__icon{color:var(--p-primary-400)}\n"] }]
|
|
2929
2602
|
}], ctorParameters: () => [{ type: i3.FormBuilder }], propDecorators: { header: [{
|
|
2930
2603
|
type: Input
|
|
2931
2604
|
}], showSmallIcon: [{
|
|
@@ -2942,20 +2615,20 @@ class NotFoundComponent {
|
|
|
2942
2615
|
this.companyName = this.config.companyName;
|
|
2943
2616
|
this.logoPath = this.config.logoPath;
|
|
2944
2617
|
}
|
|
2945
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: NotFoundComponent, deps: [{ token:
|
|
2946
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: NotFoundComponent, isStandalone: true, selector: "not-found", ngImport: i0, template: "<div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\
|
|
2618
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: NotFoundComponent, deps: [{ token: ConfigServiceBase }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2619
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: NotFoundComponent, isStandalone: true, selector: "not-found", ngImport: i0, template: "<div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\n <div class=\"flex flex-column w-full\">\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--p-primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\n <div class=\"text-center\">\n <img \n [src]=\"logoPath\" \n alt=\"{{companyName}} Logo\" \n title=\"{{companyName}} Logo\" \n height=\"60\"\n class=\"mb-4\"\n >\n </div>\n <h1 class=\"mb-4\">\n <div class=\"font-bold text-5xl lg:text-6xl spiderly-gradient-title\">404</div>\n <div class=\"font-bold text-5xl lg:text-6xl\">Page Not Found</div>\n </h1>\n <div class=\"text-600 text-lg mb-5\">\n The page you're looking for doesn't exist or has been moved. Let's get you back on track.\n </div>\n <div>\n <p-button [routerLink]=\"['/']\" label=\"Go to Homepage\"></p-button>\n </div>\n </div>\n </div>\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { 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"] }] }); }
|
|
2947
2620
|
}
|
|
2948
2621
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: NotFoundComponent, decorators: [{
|
|
2949
2622
|
type: Component,
|
|
2950
2623
|
args: [{ selector: 'not-found', imports: [
|
|
2951
2624
|
RouterModule,
|
|
2952
2625
|
ButtonModule,
|
|
2953
|
-
], template: "<div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\
|
|
2954
|
-
}], ctorParameters: () => [{ type:
|
|
2626
|
+
], template: "<div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\n <div class=\"flex flex-column w-full\">\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--p-primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\n <div class=\"text-center\">\n <img \n [src]=\"logoPath\" \n alt=\"{{companyName}} Logo\" \n title=\"{{companyName}} Logo\" \n height=\"60\"\n class=\"mb-4\"\n >\n </div>\n <h1 class=\"mb-4\">\n <div class=\"font-bold text-5xl lg:text-6xl spiderly-gradient-title\">404</div>\n <div class=\"font-bold text-5xl lg:text-6xl\">Page Not Found</div>\n </h1>\n <div class=\"text-600 text-lg mb-5\">\n The page you're looking for doesn't exist or has been moved. Let's get you back on track.\n </div>\n <div>\n <p-button [routerLink]=\"['/']\" label=\"Go to Homepage\"></p-button>\n </div>\n </div>\n </div>\n </div>\n</div>" }]
|
|
2627
|
+
}], ctorParameters: () => [{ type: ConfigServiceBase }] });
|
|
2955
2628
|
|
|
2956
2629
|
class SpiderlySplitButtonComponent extends SpiderlyButtonBaseComponent {
|
|
2957
2630
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlySplitButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
2958
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlySplitButtonComponent, isStandalone: true, selector: "spiderly-split-button", inputs: { dropdownItems: "dropdownItems" }, usesInheritance: true, ngImport: i0, template: "<p-splitButton\
|
|
2631
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlySplitButtonComponent, isStandalone: true, selector: "spiderly-split-button", inputs: { dropdownItems: "dropdownItems" }, usesInheritance: true, ngImport: i0, template: "<p-splitButton\n(onClick)=\"handleClick($event)\" \n[label]=\"label\" \n[icon]=\"icon\" \n[outlined]=\"outlined\" \n[styleClass]=\"styleClass\" \n[severity]=\"severity\" \n[rounded]=\"rounded\"\n[style]=\"style\"\n[class]=\"class\"\n[disabled]=\"disabled\"\n[model]=\"dropdownItems\"\n>\n <ng-content></ng-content>\n</p-splitButton>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: SplitButtonModule }, { kind: "component", type: i1$5.SplitButton, selector: "p-splitbutton, p-splitButton, p-split-button", inputs: ["model", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "icon", "iconPos", "label", "tooltip", "tooltipOptions", "style", "styleClass", "menuStyle", "menuStyleClass", "dropdownIcon", "appendTo", "dir", "expandAriaLabel", "showTransitionOptions", "hideTransitionOptions", "buttonProps", "menuButtonProps", "autofocus", "disabled", "tabindex", "menuButtonDisabled", "buttonDisabled"], outputs: ["onClick", "onMenuHide", "onMenuShow", "onDropdownClick"] }] }); }
|
|
2959
2632
|
}
|
|
2960
2633
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlySplitButtonComponent, decorators: [{
|
|
2961
2634
|
type: Component,
|
|
@@ -2963,7 +2636,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
2963
2636
|
CommonModule,
|
|
2964
2637
|
ButtonModule,
|
|
2965
2638
|
SplitButtonModule
|
|
2966
|
-
], template: "<p-splitButton\
|
|
2639
|
+
], template: "<p-splitButton\n(onClick)=\"handleClick($event)\" \n[label]=\"label\" \n[icon]=\"icon\" \n[outlined]=\"outlined\" \n[styleClass]=\"styleClass\" \n[severity]=\"severity\" \n[rounded]=\"rounded\"\n[style]=\"style\"\n[class]=\"class\"\n[disabled]=\"disabled\"\n[model]=\"dropdownItems\"\n>\n <ng-content></ng-content>\n</p-splitButton>" }]
|
|
2967
2640
|
}], propDecorators: { dropdownItems: [{
|
|
2968
2641
|
type: Input
|
|
2969
2642
|
}] } });
|
|
@@ -2999,7 +2672,7 @@ class SpiderlyDeleteConfirmationComponent {
|
|
|
2999
2672
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDeleteConfirmationComponent, deps: [{ token: i1$6.DynamicDialogRef }, { token: i1$6.DynamicDialogConfig }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3000
2673
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyDeleteConfirmationComponent, isStandalone: true, selector: "spiderly-delete-confirmation", providers: [
|
|
3001
2674
|
ConfirmationService
|
|
3002
|
-
], ngImport: i0, template: "<ng-container *transloco=\"let t\">\
|
|
2675
|
+
], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <p-confirmDialog \n #cd \n ></p-confirmDialog>\n <div\n class=\"border-bottom-1 surface-border text-lg\"\n style=\"display: flex; align-items: center; padding-bottom: 10px; width: 100%; gap: 10px;\"\n >\n <i class=\"pi pi-exclamation-circle text-4xl\"></i>\n <p>{{t('PleaseConfirmToProceed')}}</p>\n </div>\n \n <div style=\"display: flex; gap: 12px; justify-content: right; margin-top: 28px;\">\n <spiderly-button (onClick)=\"reject()\" icon=\"pi pi-times\" [label]=\"t('Cancel')\" severity=\"secondary\"></spiderly-button>\n <spiderly-button (onClick)=\"accept()\" icon=\"pi pi-check\" [label]=\"t('Confirm')\" styleClass=\"p-button-danger\"></spiderly-button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i2$2.ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position", "draggable"], outputs: ["onHide"] }] }); }
|
|
3003
2676
|
}
|
|
3004
2677
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDeleteConfirmationComponent, decorators: [{
|
|
3005
2678
|
type: Component,
|
|
@@ -3009,7 +2682,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
3009
2682
|
ConfirmDialogModule,
|
|
3010
2683
|
], providers: [
|
|
3011
2684
|
ConfirmationService
|
|
3012
|
-
], template: "<ng-container *transloco=\"let t\">\
|
|
2685
|
+
], template: "<ng-container *transloco=\"let t\">\n <p-confirmDialog \n #cd \n ></p-confirmDialog>\n <div\n class=\"border-bottom-1 surface-border text-lg\"\n style=\"display: flex; align-items: center; padding-bottom: 10px; width: 100%; gap: 10px;\"\n >\n <i class=\"pi pi-exclamation-circle text-4xl\"></i>\n <p>{{t('PleaseConfirmToProceed')}}</p>\n </div>\n \n <div style=\"display: flex; gap: 12px; justify-content: right; margin-top: 28px;\">\n <spiderly-button (onClick)=\"reject()\" icon=\"pi pi-times\" [label]=\"t('Cancel')\" severity=\"secondary\"></spiderly-button>\n <spiderly-button (onClick)=\"accept()\" icon=\"pi pi-check\" [label]=\"t('Confirm')\" styleClass=\"p-button-danger\"></spiderly-button>\n </div>\n</ng-container>\n" }]
|
|
3013
2686
|
}], ctorParameters: () => [{ type: i1$6.DynamicDialogRef }, { type: i1$6.DynamicDialogConfig }] });
|
|
3014
2687
|
|
|
3015
2688
|
class SpiderlyDataTableComponent {
|
|
@@ -3205,7 +2878,7 @@ class SpiderlyDataTableComponent {
|
|
|
3205
2878
|
* If not, it will navigate to the current route with the rowId.
|
|
3206
2879
|
*/
|
|
3207
2880
|
navigateToDetails(rowId) {
|
|
3208
|
-
if (
|
|
2881
|
+
if (rowId == null)
|
|
3209
2882
|
return;
|
|
3210
2883
|
if (this.rowNavigationPath) {
|
|
3211
2884
|
const cleanPath = this.rowNavigationPath.replace(/^\/|\/$/g, ''); // Remove leading and trailing slashes
|
|
@@ -3411,7 +3084,7 @@ class SpiderlyDataTableComponent {
|
|
|
3411
3084
|
}
|
|
3412
3085
|
}
|
|
3413
3086
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDataTableComponent, deps: [{ token: i3$2.Router }, { token: i1$6.DialogService }, { token: i3$2.ActivatedRoute }, { token: SpiderlyMessageService }, { token: i1.TranslocoService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3414
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyDataTableComponent, isStandalone: true, selector: "spiderly-data-table", inputs: { tableTitle: "tableTitle", tableIcon: "tableIcon", items: "items", rows: "rows", cols: "cols", showPaginator: "showPaginator", showCardWrapper: "showCardWrapper", readonly: "readonly", idField: "idField", getPaginatedListObservableMethod: "getPaginatedListObservableMethod", exportListToExcelObservableMethod: "exportListToExcelObservableMethod", deleteItemFromTableObservableMethod: "deleteItemFromTableObservableMethod", newlySelectedItems: "newlySelectedItems", unselectedItems: "unselectedItems", selectionMode: "selectionMode", selectedLazyLoadObservableMethod: "selectedLazyLoadObservableMethod", additionalFilterIdLong: "additionalFilterIdLong", showAddButton: "showAddButton", showExportToExcelButton: "showExportToExcelButton", showReloadTableButton: "showReloadTableButton", getFormArrayItems: "getFormArrayItems", hasLazyLoad: "hasLazyLoad", getAlreadySelectedItemIds: "getAlreadySelectedItemIds", getAlreadySelectedItems: "getAlreadySelectedItems", getFormControl: "getFormControl", additionalIndexes: "additionalIndexes", navigateOnRowClick: "navigateOnRowClick", rowNavigationPath: "rowNavigationPath" }, outputs: { onTotalRecordsChange: "onTotalRecordsChange", onLazyLoad: "onLazyLoad", onIsAllSelectedChange: "onIsAllSelectedChange", onRowSelect: "onRowSelect", onRowUnselect: "onRowUnselect" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["dt"], descendants: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table #dt [value]=\"items\" [rows]=\"rows\" [rowHover]=\"true\" [paginator]=\"showPaginator\" responsiveLayout=\"scroll\" [lazy]=\"hasLazyLoad\"\r\n (onLazyLoad)=\"lazyLoad($event)\" [totalRecords]=\"totalRecords\" class=\"spiderly-table\" [loading]=\"(items === undefined || loading === true)\" [selectionMode]=\"selectionMode\" dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"> \r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"table-header overflow-auto\">\r\n <div style=\"display: flex; align-items: center; gap: 8px;\">\r\n <i class=\"{{tableIcon}}\" style=\"font-size: 20px;\"></i>\r\n <div style=\"margin: 0px; font-size: 17.5px;\">{{tableTitle}}</div>\r\n </div>\r\n <div style=\"display: flex; gap: 8px;\">\r\n <button pButton [label]=\"t('ClearFilters')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-filter-slash\" (click)=\"clear(dt)\"></button>\r\n <button pButton *ngIf=\"showExportToExcelButton\" [label]=\"t('ExportToExcel')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\r\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-refresh\" (click)=\"reload()\"></button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 0rem;\" *ngIf=\"selectionMode == 'multiple'\">\r\n <div style=\"display: flex; gap: 8px;\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectAll($event.checked)\" [(ngModel)]=\"fakeIsAllSelected\" [binary]=\"true\"></p-checkbox> ({{rowsSelectedNumber}})\r\n </div>\r\n </th>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <th [style]=\"getColHeaderWidth(col.filterType)\">\r\n <div style=\"display: flex; justify-content: space-between; align-items: center;\">\r\n {{col.name}}\r\n <p-columnFilter *ngIf=\"col.filterType != null && col.filterType !== 'blob'\" [type]=\"col.filterType\" [field]=\"col.filterField ?? col.field\" display=\"menu\" [placeholder]=\"col.filterPlaceholder\" \r\n [showOperator]=\"false\" [showMatchModes]=\"col.showMatchModes\" [showAddButton]=\"col.showAddButton\" [matchModeOptions]=\"getColMatchModeOptions(col.filterType)\"\r\n [matchMode]=\"getColMatchMode(col.filterType)\"\r\n >\r\n <ng-template *ngIf=\"isDropOrMulti(col.filterType)\" pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"col.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'240px'}\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n <ng-template *ngIf=\"col.filterType == 'date'\" pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-datepicker \r\n [ngModel]=\"value\" \r\n [showTime]=\"col.showTime\"\r\n (onSelect)=\"filter($event)\"\r\n ></p-datepicker>\r\n </ng-template>\r\n </p-columnFilter>\r\n </div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-index=\"rowIndex\" let-editing=\"editing\">\r\n <tr [class.clickable]=\" navigateOnRowClick\"\r\n (click)=\"onRowClick(rowData)\">\r\n <td *ngIf=\"selectionMode == 'multiple'\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectRow(rowData[idField], rowData.index)\" [ngModel]=\"isRowSelected(rowData[idField])\" [binary]=\"true\"></p-checkbox>\r\n </td>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <td [style]=\"getStyleForBodyColumn(col)\" *ngIf=\"!col.editable\">\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 18px;\">\r\n <ng-container *ngFor=\"let action of col.actions; trackBy: actionTrackByFn\" >\r\n <span [pTooltip]=\"action.name\" [class]=\"getClassForAction(action)\" [style]=\"getStyleForAction(action)\" (click)=\"getMethodForAction(action, rowData)\"></span>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"col.filterType === 'blob'\">\r\n <img width=\"45\" [src]=\"getRowData(rowData, col)\" alt=\"\">\r\n </ng-container>\r\n <ng-container *ngIf=\"col.filterType !== 'blob'\">\r\n {{getRowData(rowData, col)}}\r\n </ng-container>\r\n </td>\r\n <td *ngIf=\"col.editable\">\r\n <spiderly-number [control]=\"getFormArrayControlByIndex(col.field, rowData.index)\" [showLabel]=\"false\"></spiderly-number>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('NoRecordsFound')}}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('Loading')}}...</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorleft\">\r\n {{t('TotalRecords')}}: {{totalRecords}}\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorright\">\r\n <div style=\"display: flex; justify-content: end; gap: 10px;\">\r\n <spiderly-button *ngIf=\"showAddButton\" [label]=\"t('AddNew')\" icon=\"pi pi-plus\" (onClick)=\"navigateToDetails(0)\"></spiderly-button>\r\n </div>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>", styles: [".table-header{display:flex;justify-content:space-between;align-items:center}@media (max-width: 640px){.table-header{display:flex;flex-direction:column;align-items:start;gap:14px}}.spiderly-table .p-paginator{padding:1rem}@media (min-width: 1400px){.spiderly-table .p-paginator-left-content{position:absolute;padding:14px;left:0}}@media (min-width: 1400px){.spiderly-table .p-paginator-right-content{position:absolute;padding:14px;right:0}}:host ::ng-deep .p-datatable-thead{position:unset!important}:host ::ng-deep .p-datatable-header{border-radius:6px 6px 0 0}:host ::ng-deep .p-datatable{border-radius:var(--p-content-border-radius);border:1px solid var(--p-datatable-border-color)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }, { kind: "component", type: SpiderlyNumberComponent, selector: "spiderly-number", inputs: ["prefix", "showButtons", "decimal", "maxFractionDigits"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i9.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: i1$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.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: ButtonModule }, { kind: "directive", type: i1$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i4$5.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", "highlightOnSelect"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i4$1.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", 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", "size", "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"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i4$2.Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["value", "name", "disabled", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "inputStyle", "styleClass", "inputClass", "indeterminate", "size", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
|
|
3087
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyDataTableComponent, isStandalone: true, selector: "spiderly-data-table", inputs: { tableTitle: "tableTitle", tableIcon: "tableIcon", items: "items", rows: "rows", cols: "cols", showPaginator: "showPaginator", showCardWrapper: "showCardWrapper", readonly: "readonly", idField: "idField", getPaginatedListObservableMethod: "getPaginatedListObservableMethod", exportListToExcelObservableMethod: "exportListToExcelObservableMethod", deleteItemFromTableObservableMethod: "deleteItemFromTableObservableMethod", newlySelectedItems: "newlySelectedItems", unselectedItems: "unselectedItems", selectionMode: "selectionMode", selectedLazyLoadObservableMethod: "selectedLazyLoadObservableMethod", additionalFilterIdLong: "additionalFilterIdLong", showAddButton: "showAddButton", showExportToExcelButton: "showExportToExcelButton", showReloadTableButton: "showReloadTableButton", getFormArrayItems: "getFormArrayItems", hasLazyLoad: "hasLazyLoad", getAlreadySelectedItemIds: "getAlreadySelectedItemIds", getAlreadySelectedItems: "getAlreadySelectedItems", getFormControl: "getFormControl", additionalIndexes: "additionalIndexes", navigateOnRowClick: "navigateOnRowClick", rowNavigationPath: "rowNavigationPath" }, outputs: { onTotalRecordsChange: "onTotalRecordsChange", onLazyLoad: "onLazyLoad", onIsAllSelectedChange: "onIsAllSelectedChange", onRowSelect: "onRowSelect", onRowUnselect: "onRowUnselect" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["dt"], descendants: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\n <p-table #dt [value]=\"items\" [rows]=\"rows\" [rowHover]=\"true\" [paginator]=\"showPaginator\" responsiveLayout=\"scroll\" [lazy]=\"hasLazyLoad\"\n (onLazyLoad)=\"lazyLoad($event)\" [totalRecords]=\"totalRecords\" class=\"spiderly-table\" [loading]=\"(items === undefined || loading === true)\" [selectionMode]=\"selectionMode\" dataKey=\"id\" \n (onFilter)=\"filter($event)\"> \n <ng-template pTemplate=\"caption\">\n <div class=\"table-header overflow-auto\">\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <i class=\"{{tableIcon}}\" style=\"font-size: 20px;\"></i>\n <div style=\"margin: 0px; font-size: 17.5px;\">{{tableTitle}}</div>\n </div>\n <div style=\"display: flex; gap: 8px;\">\n <button pButton [label]=\"t('ClearFilters')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-filter-slash\" (click)=\"clear(dt)\"></button>\n <button pButton *ngIf=\"showExportToExcelButton\" [label]=\"t('ExportToExcel')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-refresh\" (click)=\"reload()\"></button>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th style=\"width: 0rem;\" *ngIf=\"selectionMode == 'multiple'\">\n <div style=\"display: flex; gap: 8px;\">\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectAll($event.checked)\" [(ngModel)]=\"fakeIsAllSelected\" [binary]=\"true\"></p-checkbox> ({{rowsSelectedNumber}})\n </div>\n </th>\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\n <th [style]=\"getColHeaderWidth(col.filterType)\">\n <div style=\"display: flex; justify-content: space-between; align-items: center;\">\n {{col.name}}\n <p-columnFilter *ngIf=\"col.filterType != null && col.filterType !== 'blob'\" [type]=\"col.filterType\" [field]=\"col.filterField ?? col.field\" display=\"menu\" [placeholder]=\"col.filterPlaceholder\" \n [showOperator]=\"false\" [showMatchModes]=\"col.showMatchModes\" [showAddButton]=\"col.showAddButton\" [matchModeOptions]=\"getColMatchModeOptions(col.filterType)\"\n [matchMode]=\"getColMatchMode(col.filterType)\"\n >\n <ng-template *ngIf=\"isDropOrMulti(col.filterType)\" pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-multiSelect [ngModel]=\"value\" [options]=\"col.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'240px'}\">\n <ng-template let-item pTemplate=\"item\">\n <div class=\"p-multiselect-representative-option\">\n <span class=\"ml-2\">{{ item.label }}</span>\n </div>\n </ng-template>\n </p-multiSelect>\n </ng-template>\n <ng-template *ngIf=\"col.filterType == 'date'\" pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-datepicker \n [ngModel]=\"value\" \n [showTime]=\"col.showTime\"\n (onSelect)=\"filter($event)\"\n ></p-datepicker>\n </ng-template>\n </p-columnFilter>\n </div>\n </th>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-index=\"rowIndex\" let-editing=\"editing\">\n <tr [class.clickable]=\" navigateOnRowClick\"\n (click)=\"onRowClick(rowData)\">\n <td *ngIf=\"selectionMode == 'multiple'\">\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectRow(rowData[idField], rowData.index)\" [ngModel]=\"isRowSelected(rowData[idField])\" [binary]=\"true\"></p-checkbox>\n </td>\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\n <td [style]=\"getStyleForBodyColumn(col)\" *ngIf=\"!col.editable\">\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 18px;\">\n <ng-container *ngFor=\"let action of col.actions; trackBy: actionTrackByFn\" >\n <span [pTooltip]=\"action.name\" [class]=\"getClassForAction(action)\" [style]=\"getStyleForAction(action)\" (click)=\"getMethodForAction(action, rowData)\"></span>\n </ng-container>\n </div>\n <ng-container *ngIf=\"col.filterType === 'blob'\">\n <img width=\"45\" [src]=\"getRowData(rowData, col)\" alt=\"\">\n </ng-container>\n <ng-container *ngIf=\"col.filterType !== 'blob'\">\n {{getRowData(rowData, col)}}\n </ng-container>\n </td>\n <td *ngIf=\"col.editable\">\n <spiderly-number [control]=\"getFormArrayControlByIndex(col.field, rowData.index)\" [showLabel]=\"false\"></spiderly-number>\n </td>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('NoRecordsFound')}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingbody\">\n <tr>\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('Loading')}}...</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorleft\">\n {{t('TotalRecords')}}: {{totalRecords}}\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <div style=\"display: flex; justify-content: end; gap: 10px;\">\n <spiderly-button *ngIf=\"showAddButton\" [label]=\"t('AddNew')\" icon=\"pi pi-plus\" (onClick)=\"navigateToDetails(0)\"></spiderly-button>\n </div>\n </ng-template>\n </p-table>\n </div>\n</ng-container>", styles: [".table-header{display:flex;justify-content:space-between;align-items:center}@media (max-width: 640px){.table-header{display:flex;flex-direction:column;align-items:start;gap:14px}}.spiderly-table .p-paginator{padding:1rem}@media (min-width: 1400px){.spiderly-table .p-paginator-left-content{position:absolute;padding:14px;left:0}}@media (min-width: 1400px){.spiderly-table .p-paginator-right-content{position:absolute;padding:14px;right:0}}:host ::ng-deep .p-datatable-thead{position:unset!important}:host ::ng-deep .p-datatable-header{border-radius:6px 6px 0 0}:host ::ng-deep .p-datatable{border-radius:var(--p-content-border-radius);border:1px solid var(--p-datatable-border-color)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }, { kind: "component", type: SpiderlyNumberComponent, selector: "spiderly-number", inputs: ["prefix", "showButtons", "decimal", "maxFractionDigits"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i9.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: i1$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.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: ButtonModule }, { kind: "directive", type: i1$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i4$5.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", "highlightOnSelect"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i4$1.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", 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", "size", "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"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i4$2.Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["value", "name", "disabled", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "inputStyle", "styleClass", "inputClass", "indeterminate", "size", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
|
|
3415
3088
|
}
|
|
3416
3089
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDataTableComponent, decorators: [{
|
|
3417
3090
|
type: Component,
|
|
@@ -3426,7 +3099,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
3426
3099
|
DatePickerModule,
|
|
3427
3100
|
CheckboxModule,
|
|
3428
3101
|
TooltipModule,
|
|
3429
|
-
], template: "<ng-container *transloco=\"let t\">\
|
|
3102
|
+
], template: "<ng-container *transloco=\"let t\">\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\n <p-table #dt [value]=\"items\" [rows]=\"rows\" [rowHover]=\"true\" [paginator]=\"showPaginator\" responsiveLayout=\"scroll\" [lazy]=\"hasLazyLoad\"\n (onLazyLoad)=\"lazyLoad($event)\" [totalRecords]=\"totalRecords\" class=\"spiderly-table\" [loading]=\"(items === undefined || loading === true)\" [selectionMode]=\"selectionMode\" dataKey=\"id\" \n (onFilter)=\"filter($event)\"> \n <ng-template pTemplate=\"caption\">\n <div class=\"table-header overflow-auto\">\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <i class=\"{{tableIcon}}\" style=\"font-size: 20px;\"></i>\n <div style=\"margin: 0px; font-size: 17.5px;\">{{tableTitle}}</div>\n </div>\n <div style=\"display: flex; gap: 8px;\">\n <button pButton [label]=\"t('ClearFilters')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-filter-slash\" (click)=\"clear(dt)\"></button>\n <button pButton *ngIf=\"showExportToExcelButton\" [label]=\"t('ExportToExcel')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-refresh\" (click)=\"reload()\"></button>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th style=\"width: 0rem;\" *ngIf=\"selectionMode == 'multiple'\">\n <div style=\"display: flex; gap: 8px;\">\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectAll($event.checked)\" [(ngModel)]=\"fakeIsAllSelected\" [binary]=\"true\"></p-checkbox> ({{rowsSelectedNumber}})\n </div>\n </th>\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\n <th [style]=\"getColHeaderWidth(col.filterType)\">\n <div style=\"display: flex; justify-content: space-between; align-items: center;\">\n {{col.name}}\n <p-columnFilter *ngIf=\"col.filterType != null && col.filterType !== 'blob'\" [type]=\"col.filterType\" [field]=\"col.filterField ?? col.field\" display=\"menu\" [placeholder]=\"col.filterPlaceholder\" \n [showOperator]=\"false\" [showMatchModes]=\"col.showMatchModes\" [showAddButton]=\"col.showAddButton\" [matchModeOptions]=\"getColMatchModeOptions(col.filterType)\"\n [matchMode]=\"getColMatchMode(col.filterType)\"\n >\n <ng-template *ngIf=\"isDropOrMulti(col.filterType)\" pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-multiSelect [ngModel]=\"value\" [options]=\"col.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'240px'}\">\n <ng-template let-item pTemplate=\"item\">\n <div class=\"p-multiselect-representative-option\">\n <span class=\"ml-2\">{{ item.label }}</span>\n </div>\n </ng-template>\n </p-multiSelect>\n </ng-template>\n <ng-template *ngIf=\"col.filterType == 'date'\" pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-datepicker \n [ngModel]=\"value\" \n [showTime]=\"col.showTime\"\n (onSelect)=\"filter($event)\"\n ></p-datepicker>\n </ng-template>\n </p-columnFilter>\n </div>\n </th>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-index=\"rowIndex\" let-editing=\"editing\">\n <tr [class.clickable]=\" navigateOnRowClick\"\n (click)=\"onRowClick(rowData)\">\n <td *ngIf=\"selectionMode == 'multiple'\">\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectRow(rowData[idField], rowData.index)\" [ngModel]=\"isRowSelected(rowData[idField])\" [binary]=\"true\"></p-checkbox>\n </td>\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\n <td [style]=\"getStyleForBodyColumn(col)\" *ngIf=\"!col.editable\">\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 18px;\">\n <ng-container *ngFor=\"let action of col.actions; trackBy: actionTrackByFn\" >\n <span [pTooltip]=\"action.name\" [class]=\"getClassForAction(action)\" [style]=\"getStyleForAction(action)\" (click)=\"getMethodForAction(action, rowData)\"></span>\n </ng-container>\n </div>\n <ng-container *ngIf=\"col.filterType === 'blob'\">\n <img width=\"45\" [src]=\"getRowData(rowData, col)\" alt=\"\">\n </ng-container>\n <ng-container *ngIf=\"col.filterType !== 'blob'\">\n {{getRowData(rowData, col)}}\n </ng-container>\n </td>\n <td *ngIf=\"col.editable\">\n <spiderly-number [control]=\"getFormArrayControlByIndex(col.field, rowData.index)\" [showLabel]=\"false\"></spiderly-number>\n </td>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('NoRecordsFound')}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingbody\">\n <tr>\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('Loading')}}...</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorleft\">\n {{t('TotalRecords')}}: {{totalRecords}}\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <div style=\"display: flex; justify-content: end; gap: 10px;\">\n <spiderly-button *ngIf=\"showAddButton\" [label]=\"t('AddNew')\" icon=\"pi pi-plus\" (onClick)=\"navigateToDetails(0)\"></spiderly-button>\n </div>\n </ng-template>\n </p-table>\n </div>\n</ng-container>", styles: [".table-header{display:flex;justify-content:space-between;align-items:center}@media (max-width: 640px){.table-header{display:flex;flex-direction:column;align-items:start;gap:14px}}.spiderly-table .p-paginator{padding:1rem}@media (min-width: 1400px){.spiderly-table .p-paginator-left-content{position:absolute;padding:14px;left:0}}@media (min-width: 1400px){.spiderly-table .p-paginator-right-content{position:absolute;padding:14px;right:0}}:host ::ng-deep .p-datatable-thead{position:unset!important}:host ::ng-deep .p-datatable-header{border-radius:6px 6px 0 0}:host ::ng-deep .p-datatable{border-radius:var(--p-content-border-radius);border:1px solid var(--p-datatable-border-color)}\n"] }]
|
|
3430
3103
|
}], ctorParameters: () => [{ type: i3$2.Router }, { type: i1$6.DialogService }, { type: i3$2.ActivatedRoute }, { type: SpiderlyMessageService }, { type: i1.TranslocoService }, { type: undefined, decorators: [{
|
|
3431
3104
|
type: Inject,
|
|
3432
3105
|
args: [LOCALE_ID]
|
|
@@ -3652,7 +3325,7 @@ class SpiderlyDataViewComponent {
|
|
|
3652
3325
|
this.table.clear();
|
|
3653
3326
|
}
|
|
3654
3327
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDataViewComponent, deps: [{ token: i1.TranslocoService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3655
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: SpiderlyDataViewComponent, isStandalone: true, selector: "spiderly-data-view", inputs: { items: "items", rows: "rows", filters: "filters", showCardWrapper: "showCardWrapper", showPaginatorRightData: "showPaginatorRightData", showTotalRecordsNumber: "showTotalRecordsNumber", applyFiltersIcon: "applyFiltersIcon", clearFiltersIcon: "clearFiltersIcon", getPaginatedListObservableMethod: "getPaginatedListObservableMethod" }, outputs: { onLazyLoad: "onLazyLoad" }, queries: [{ propertyName: "cardBody", first: true, predicate: ["cardBody"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "table", first: true, predicate: ["dt"], descendants: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table \r\n #dt \r\n [value]=\"items\" \r\n [rows]=\"rows\" \r\n [rowHover]=\"false\" \r\n responsiveLayout=\"scroll\" \r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"lazyLoad($event)\" \r\n [totalRecords]=\"totalRecords\" class=\"spiderly-table\" \r\n [loading]=\"(items === undefined || loading === true)\" \r\n dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"\r\n [filterDelay]=\"500\"\r\n [paginator]=\"true\"\r\n > \r\n <ng-template #caption>\r\n <div *ngIf=\"filters.length !== 0\">\r\n <div class=\"data-view-grid\">\r\n @for (filter of filters; track $index) {\r\n <div>\r\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem; position: relative;\">\r\n <div>\r\n <label>\r\n {{filter.label}}\r\n </label>\r\n </div>\r\n\r\n <p-columnFilter *ngIf=\"filter.type != null\" [type]=\"filter.type\" [field]=\"filter.filterField ?? filter.field\" display=\"row\" [placeholder]=\"filter.placeholder\" \r\n [showOperator]=\"false\" [showMenu]=\"filter.showMatchModes\" [showMatchModes]=\"true\" [showClearButton]=\"false\" [matchMode]=\"getDefaultMatchMode(filter.type)\" [matchModeOptions]=\"getMatchModeOptions(filter.type)\" \r\n >\r\n <ng-container *ngIf=\"filter.type == 'multiselect'\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"filter.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'100%'}\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n </ng-container>\r\n </p-columnFilter>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <div style=\"display: flex; gap: 12px;\">\r\n <spiderly-button [label]=\"t('ApplyFilters')\" (onClick)=\"applyFilters()\" [icon]=\"applyFiltersIcon\"></spiderly-button>\r\n <spiderly-button [label]=\"t('ClearFilters')\" (onClick)=\"clearFilters()\" [icon]=\"clearFiltersIcon\"></spiderly-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #body let-rowData let-index=\"rowIndex\">\r\n <tr style=\"padding: 0; margin-bottom: 0;\">\r\n <td style=\"display: block; border: 0; padding: 0;\">\r\n <ng-container *ngTemplateOutlet=\"cardBody; context: { $implicit: rowData, item: rowData, index: index }\">\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n {{t('NoRecordsFound')}}\r\n </ng-template>\r\n <ng-template *ngIf=\"showTotalRecordsNumber\" pTemplate=\"paginatorleft\">\r\n {{t('TotalRecords')}}: {{totalRecords}}\r\n </ng-template>\r\n <ng-template *ngIf=\"showPaginatorRightData\" pTemplate=\"paginatorright\">\r\n <ng-content select=\"[PAGINATORRIGHT]\"></ng-content>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>", styles: ["::ng-deep .p-datatable-tbody{display:flex;flex-direction:column;gap:18px}::ng-deep .p-datatable-header{margin-bottom:36px;border:0!important;padding:0!important;background-color:transparent!important}::ng-deep .p-paginator{padding:18px 9px 0!important}::ng-deep .p-fluid{width:100%!important}::ng-deep .p-inputtext{width:100%!important}::ng-deep .p-inputnumber{width:100%!important}::ng-deep .p-datepicker{width:100%!important}.data-view-grid{display:grid;gap:18px;grid-template-columns:1fr 1fr 1fr;margin-bottom:18px}@media (max-width: 1080px){.data-view-grid{gap:12px;grid-template-columns:1fr 1fr}}@media (max-width: 500px){.data-view-grid{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i9.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: i1$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.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: ButtonModule }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i4$5.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", "highlightOnSelect"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: DatePickerModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: InputNumberModule }, { kind: "ngmodule", type: SelectModule }] }); }
|
|
3328
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: SpiderlyDataViewComponent, isStandalone: true, selector: "spiderly-data-view", inputs: { items: "items", rows: "rows", filters: "filters", showCardWrapper: "showCardWrapper", showPaginatorRightData: "showPaginatorRightData", showTotalRecordsNumber: "showTotalRecordsNumber", applyFiltersIcon: "applyFiltersIcon", clearFiltersIcon: "clearFiltersIcon", getPaginatedListObservableMethod: "getPaginatedListObservableMethod" }, outputs: { onLazyLoad: "onLazyLoad" }, queries: [{ propertyName: "cardBody", first: true, predicate: ["cardBody"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "table", first: true, predicate: ["dt"], descendants: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\n <p-table \n #dt \n [value]=\"items\" \n [rows]=\"rows\" \n [rowHover]=\"false\" \n responsiveLayout=\"scroll\" \n [lazy]=\"true\"\n (onLazyLoad)=\"lazyLoad($event)\" \n [totalRecords]=\"totalRecords\" class=\"spiderly-table\" \n [loading]=\"(items === undefined || loading === true)\" \n dataKey=\"id\" \n (onFilter)=\"filter($event)\"\n [filterDelay]=\"500\"\n [paginator]=\"true\"\n > \n <ng-template #caption>\n <div *ngIf=\"filters.length !== 0\">\n <div class=\"data-view-grid\">\n @for (filter of filters; track $index) {\n <div>\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem; position: relative;\">\n <div>\n <label>\n {{filter.label}}\n </label>\n </div>\n\n <p-columnFilter *ngIf=\"filter.type != null\" [type]=\"filter.type\" [field]=\"filter.filterField ?? filter.field\" display=\"row\" [placeholder]=\"filter.placeholder\" \n [showOperator]=\"false\" [showMenu]=\"filter.showMatchModes\" [showMatchModes]=\"true\" [showClearButton]=\"false\" [matchMode]=\"getDefaultMatchMode(filter.type)\" [matchModeOptions]=\"getMatchModeOptions(filter.type)\" \n >\n <ng-container *ngIf=\"filter.type == 'multiselect'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-multiSelect [ngModel]=\"value\" [options]=\"filter.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'100%'}\">\n <ng-template let-item pTemplate=\"item\">\n <div class=\"p-multiselect-representative-option\">\n <span class=\"ml-2\">{{ item.label }}</span>\n </div>\n </ng-template>\n </p-multiSelect>\n </ng-template>\n </ng-container>\n </p-columnFilter>\n </div>\n </div>\n }\n </div>\n <div style=\"display: flex; gap: 12px;\">\n <spiderly-button [label]=\"t('ApplyFilters')\" (onClick)=\"applyFilters()\" [icon]=\"applyFiltersIcon\"></spiderly-button>\n <spiderly-button [label]=\"t('ClearFilters')\" (onClick)=\"clearFilters()\" [icon]=\"clearFiltersIcon\"></spiderly-button>\n </div>\n </div>\n </ng-template>\n <ng-template #body let-rowData let-index=\"rowIndex\">\n <tr style=\"padding: 0; margin-bottom: 0;\">\n <td style=\"display: block; border: 0; padding: 0;\">\n <ng-container *ngTemplateOutlet=\"cardBody; context: { $implicit: rowData, item: rowData, index: index }\">\n </ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n {{t('NoRecordsFound')}}\n </ng-template>\n <ng-template *ngIf=\"showTotalRecordsNumber\" pTemplate=\"paginatorleft\">\n {{t('TotalRecords')}}: {{totalRecords}}\n </ng-template>\n <ng-template *ngIf=\"showPaginatorRightData\" pTemplate=\"paginatorright\">\n <ng-content select=\"[PAGINATORRIGHT]\"></ng-content>\n </ng-template>\n </p-table>\n </div>\n</ng-container>", styles: ["::ng-deep .p-datatable-tbody{display:flex;flex-direction:column;gap:18px}::ng-deep .p-datatable-header{margin-bottom:36px;border:0!important;padding:0!important;background-color:transparent!important}::ng-deep .p-paginator{padding:18px 9px 0!important}::ng-deep .p-fluid{width:100%!important}::ng-deep .p-inputtext{width:100%!important}::ng-deep .p-inputnumber{width:100%!important}::ng-deep .p-datepicker{width:100%!important}.data-view-grid{display:grid;gap:18px;grid-template-columns:1fr 1fr 1fr;margin-bottom:18px}@media (max-width: 1080px){.data-view-grid{gap:12px;grid-template-columns:1fr 1fr}}@media (max-width: 500px){.data-view-grid{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i9.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: i1$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.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: ButtonModule }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i4$5.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", "highlightOnSelect"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: DatePickerModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: InputNumberModule }, { kind: "ngmodule", type: SelectModule }] }); }
|
|
3656
3329
|
}
|
|
3657
3330
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDataViewComponent, decorators: [{
|
|
3658
3331
|
type: Component,
|
|
@@ -3670,7 +3343,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
3670
3343
|
InputTextModule,
|
|
3671
3344
|
InputNumberModule,
|
|
3672
3345
|
SelectModule,
|
|
3673
|
-
], template: "<ng-container *transloco=\"let t\">\
|
|
3346
|
+
], template: "<ng-container *transloco=\"let t\">\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\n <p-table \n #dt \n [value]=\"items\" \n [rows]=\"rows\" \n [rowHover]=\"false\" \n responsiveLayout=\"scroll\" \n [lazy]=\"true\"\n (onLazyLoad)=\"lazyLoad($event)\" \n [totalRecords]=\"totalRecords\" class=\"spiderly-table\" \n [loading]=\"(items === undefined || loading === true)\" \n dataKey=\"id\" \n (onFilter)=\"filter($event)\"\n [filterDelay]=\"500\"\n [paginator]=\"true\"\n > \n <ng-template #caption>\n <div *ngIf=\"filters.length !== 0\">\n <div class=\"data-view-grid\">\n @for (filter of filters; track $index) {\n <div>\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem; position: relative;\">\n <div>\n <label>\n {{filter.label}}\n </label>\n </div>\n\n <p-columnFilter *ngIf=\"filter.type != null\" [type]=\"filter.type\" [field]=\"filter.filterField ?? filter.field\" display=\"row\" [placeholder]=\"filter.placeholder\" \n [showOperator]=\"false\" [showMenu]=\"filter.showMatchModes\" [showMatchModes]=\"true\" [showClearButton]=\"false\" [matchMode]=\"getDefaultMatchMode(filter.type)\" [matchModeOptions]=\"getMatchModeOptions(filter.type)\" \n >\n <ng-container *ngIf=\"filter.type == 'multiselect'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-multiSelect [ngModel]=\"value\" [options]=\"filter.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'100%'}\">\n <ng-template let-item pTemplate=\"item\">\n <div class=\"p-multiselect-representative-option\">\n <span class=\"ml-2\">{{ item.label }}</span>\n </div>\n </ng-template>\n </p-multiSelect>\n </ng-template>\n </ng-container>\n </p-columnFilter>\n </div>\n </div>\n }\n </div>\n <div style=\"display: flex; gap: 12px;\">\n <spiderly-button [label]=\"t('ApplyFilters')\" (onClick)=\"applyFilters()\" [icon]=\"applyFiltersIcon\"></spiderly-button>\n <spiderly-button [label]=\"t('ClearFilters')\" (onClick)=\"clearFilters()\" [icon]=\"clearFiltersIcon\"></spiderly-button>\n </div>\n </div>\n </ng-template>\n <ng-template #body let-rowData let-index=\"rowIndex\">\n <tr style=\"padding: 0; margin-bottom: 0;\">\n <td style=\"display: block; border: 0; padding: 0;\">\n <ng-container *ngTemplateOutlet=\"cardBody; context: { $implicit: rowData, item: rowData, index: index }\">\n </ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n {{t('NoRecordsFound')}}\n </ng-template>\n <ng-template *ngIf=\"showTotalRecordsNumber\" pTemplate=\"paginatorleft\">\n {{t('TotalRecords')}}: {{totalRecords}}\n </ng-template>\n <ng-template *ngIf=\"showPaginatorRightData\" pTemplate=\"paginatorright\">\n <ng-content select=\"[PAGINATORRIGHT]\"></ng-content>\n </ng-template>\n </p-table>\n </div>\n</ng-container>", styles: ["::ng-deep .p-datatable-tbody{display:flex;flex-direction:column;gap:18px}::ng-deep .p-datatable-header{margin-bottom:36px;border:0!important;padding:0!important;background-color:transparent!important}::ng-deep .p-paginator{padding:18px 9px 0!important}::ng-deep .p-fluid{width:100%!important}::ng-deep .p-inputtext{width:100%!important}::ng-deep .p-inputnumber{width:100%!important}::ng-deep .p-datepicker{width:100%!important}.data-view-grid{display:grid;gap:18px;grid-template-columns:1fr 1fr 1fr;margin-bottom:18px}@media (max-width: 1080px){.data-view-grid{gap:12px;grid-template-columns:1fr 1fr}}@media (max-width: 500px){.data-view-grid{grid-template-columns:1fr}}\n"] }]
|
|
3674
3347
|
}], ctorParameters: () => [{ type: i1.TranslocoService }, { type: undefined, decorators: [{
|
|
3675
3348
|
type: Inject,
|
|
3676
3349
|
args: [LOCALE_ID]
|
|
@@ -3709,11 +3382,11 @@ class SpiderlyCardComponent {
|
|
|
3709
3382
|
ngOnInit() {
|
|
3710
3383
|
}
|
|
3711
3384
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3712
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyCardComponent, isStandalone: true, selector: "spiderly-card", inputs: { icon: "icon", title: "title" }, ngImport: i0, template: "<div class=\"card responsive-card-padding\">\
|
|
3385
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyCardComponent, isStandalone: true, selector: "spiderly-card", inputs: { icon: "icon", title: "title" }, ngImport: i0, template: "<div class=\"card responsive-card-padding\">\n <div style=\"display: flex; align-items: center; margin-bottom: 14px; gap: 8px;\">\n <i style=\"font-size: 21px;\" class=\"{{icon}} primary-color\"></i>\n <div style=\"margin: 0; font-size: 17.5px;\">{{title}}</div>\n </div>\n <ng-content></ng-content>\n</div>" }); }
|
|
3713
3386
|
}
|
|
3714
3387
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyCardComponent, decorators: [{
|
|
3715
3388
|
type: Component,
|
|
3716
|
-
args: [{ selector: 'spiderly-card', template: "<div class=\"card responsive-card-padding\">\
|
|
3389
|
+
args: [{ selector: 'spiderly-card', template: "<div class=\"card responsive-card-padding\">\n <div style=\"display: flex; align-items: center; margin-bottom: 14px; gap: 8px;\">\n <i style=\"font-size: 21px;\" class=\"{{icon}} primary-color\"></i>\n <div style=\"margin: 0; font-size: 17.5px;\">{{title}}</div>\n </div>\n <ng-content></ng-content>\n</div>" }]
|
|
3717
3390
|
}], ctorParameters: () => [], propDecorators: { icon: [{
|
|
3718
3391
|
type: Input
|
|
3719
3392
|
}], title: [{
|
|
@@ -3732,7 +3405,7 @@ class InitTopBarData extends BaseEntity {
|
|
|
3732
3405
|
static { this.typeName = 'InitTopBarData'; }
|
|
3733
3406
|
}
|
|
3734
3407
|
|
|
3735
|
-
class
|
|
3408
|
+
class LayoutServiceBase {
|
|
3736
3409
|
constructor(apiService, config, authService) {
|
|
3737
3410
|
this.apiService = apiService;
|
|
3738
3411
|
this.config = config;
|
|
@@ -3847,15 +3520,15 @@ class LayoutBaseService {
|
|
|
3847
3520
|
this.userSubscription.unsubscribe();
|
|
3848
3521
|
}
|
|
3849
3522
|
}
|
|
3850
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type:
|
|
3851
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type:
|
|
3523
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LayoutServiceBase, deps: [{ token: ApiSecurityService }, { token: ConfigServiceBase }, { token: AuthServiceBase }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3524
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LayoutServiceBase, providedIn: 'root' }); }
|
|
3852
3525
|
}
|
|
3853
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type:
|
|
3526
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LayoutServiceBase, decorators: [{
|
|
3854
3527
|
type: Injectable,
|
|
3855
3528
|
args: [{
|
|
3856
3529
|
providedIn: 'root',
|
|
3857
3530
|
}]
|
|
3858
|
-
}], ctorParameters: () => [{ type: ApiSecurityService }, { type:
|
|
3531
|
+
}], ctorParameters: () => [{ type: ApiSecurityService }, { type: ConfigServiceBase }, { type: AuthServiceBase }] });
|
|
3859
3532
|
|
|
3860
3533
|
class SidebarMenuService {
|
|
3861
3534
|
constructor() {
|
|
@@ -3976,8 +3649,8 @@ class MenuitemComponent {
|
|
|
3976
3649
|
this.permissionSubscription.unsubscribe();
|
|
3977
3650
|
}
|
|
3978
3651
|
}
|
|
3979
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: MenuitemComponent, deps: [{ token:
|
|
3980
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: MenuitemComponent, isStandalone: true, selector: "[menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "this.root", "class.active-menuitem": "this.activeClass" } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\
|
|
3652
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: MenuitemComponent, deps: [{ token: LayoutServiceBase }, { token: i0.ChangeDetectorRef }, { token: i3$2.Router }, { token: SidebarMenuService }, { token: AuthServiceBase }, { token: ApiSecurityService }, { token: ConfigServiceBase }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3653
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: MenuitemComponent, isStandalone: true, selector: "[menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "this.root", "class.active-menuitem": "this.activeClass" } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div *ngIf=\"root && item.visible === true\" class=\"layout-menuitem-root-text\">{{item.label}}</div>\n <a *ngIf=\"(!item.routerLink || item.items) && item.visible === true\" [attr.href]=\"item.url\" (click)=\"itemClick($event)\"\n [ngClass]=\"item.styleClass\" [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n </a>\n <a *ngIf=\"(item.routerLink && !item.items) && item.visible === true\" (click)=\"itemClick($event)\" [ngClass]=\"item.styleClass\"\n [routerLink]=\"item.routerLink\" routerLinkActive=\"active-route\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{ paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }\"\n [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" [queryParams]=\"item.queryParams\"\n [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n </a>\n\n <ul *ngIf=\"item.items && item.visible === true\" [@children]=\"submenuAnimation\">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeStyleClass\"></li>\n </ng-template>\n </ul>\n\n <!-- Delete this in the future iterations, make link to partner in /partners page -->\n <spiderly-autocomplete\n *ngIf=\"item.showPartnerDialog\"\n [control]=\"selectedPartner\"\n [options]=\"partnerOptions\"\n (onTextInput)=\"searchPartners($event)\"\n label=\"\"\n [placeholder]=\"t('SelectThePartner')\"\n [showAddon]=\"true\"\n (onButtonClick)=\"partnersAutocompleteButtonClick()\"\n addonIcon=\"pi pi-check\"\n [emptyMessage]=\"t('LeftCornerPartnersEmptyMessage')\"\n class=\"mobile-stay-open\"\n ></spiderly-autocomplete>\n \n</ng-container>", dependencies: [{ kind: "component", type: MenuitemComponent, selector: "[menuitem]", inputs: ["item", "index", "root", "parentKey"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyAutocompleteComponent, selector: "spiderly-autocomplete", inputs: ["appendTo", "showClear", "emptyMessage", "displayName"] }], animations: [
|
|
3981
3654
|
trigger('children', [
|
|
3982
3655
|
state('collapsed', style({
|
|
3983
3656
|
height: '0'
|
|
@@ -4006,8 +3679,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
4006
3679
|
RouterModule,
|
|
4007
3680
|
TranslocoDirective,
|
|
4008
3681
|
SpiderlyControlsModule,
|
|
4009
|
-
], template: "<ng-container *transloco=\"let t\">\
|
|
4010
|
-
}], ctorParameters: () => [{ type:
|
|
3682
|
+
], template: "<ng-container *transloco=\"let t\">\n <div *ngIf=\"root && item.visible === true\" class=\"layout-menuitem-root-text\">{{item.label}}</div>\n <a *ngIf=\"(!item.routerLink || item.items) && item.visible === true\" [attr.href]=\"item.url\" (click)=\"itemClick($event)\"\n [ngClass]=\"item.styleClass\" [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n </a>\n <a *ngIf=\"(item.routerLink && !item.items) && item.visible === true\" (click)=\"itemClick($event)\" [ngClass]=\"item.styleClass\"\n [routerLink]=\"item.routerLink\" routerLinkActive=\"active-route\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{ paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }\"\n [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" [queryParams]=\"item.queryParams\"\n [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n </a>\n\n <ul *ngIf=\"item.items && item.visible === true\" [@children]=\"submenuAnimation\">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeStyleClass\"></li>\n </ng-template>\n </ul>\n\n <!-- Delete this in the future iterations, make link to partner in /partners page -->\n <spiderly-autocomplete\n *ngIf=\"item.showPartnerDialog\"\n [control]=\"selectedPartner\"\n [options]=\"partnerOptions\"\n (onTextInput)=\"searchPartners($event)\"\n label=\"\"\n [placeholder]=\"t('SelectThePartner')\"\n [showAddon]=\"true\"\n (onButtonClick)=\"partnersAutocompleteButtonClick()\"\n addonIcon=\"pi pi-check\"\n [emptyMessage]=\"t('LeftCornerPartnersEmptyMessage')\"\n class=\"mobile-stay-open\"\n ></spiderly-autocomplete>\n \n</ng-container>" }]
|
|
3683
|
+
}], ctorParameters: () => [{ type: LayoutServiceBase }, { type: i0.ChangeDetectorRef }, { type: i3$2.Router }, { type: SidebarMenuService }, { type: AuthServiceBase }, { type: ApiSecurityService }, { type: ConfigServiceBase }], propDecorators: { item: [{
|
|
4011
3684
|
type: Input
|
|
4012
3685
|
}], index: [{
|
|
4013
3686
|
type: Input
|
|
@@ -4034,16 +3707,16 @@ class SidebarMenuComponent {
|
|
|
4034
3707
|
}
|
|
4035
3708
|
ngOnDestroy() {
|
|
4036
3709
|
}
|
|
4037
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SidebarMenuComponent, deps: [{ token:
|
|
4038
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SidebarMenuComponent, isStandalone: true, selector: "sidebar-menu", inputs: { menu: "menu" }, ngImport: i0, template: "<ul class=\"layout-menu\">\
|
|
3710
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SidebarMenuComponent, deps: [{ token: LayoutServiceBase }, { token: AuthServiceBase }, { token: i1.TranslocoService }, { token: ConfigServiceBase }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3711
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SidebarMenuComponent, isStandalone: true, selector: "sidebar-menu", inputs: { menu: "menu" }, ngImport: i0, template: "<ul class=\"layout-menu\">\n <ng-container *ngFor=\"let item of menu; let i = index;\">\n <li menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\n <li *ngIf=\"item.separator\" class=\"gray-separator\" style=\"margin-top: 11px;\"></li>\n </ng-container>\n</ul>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MenuitemComponent, selector: "[menuitem]", inputs: ["item", "index", "root", "parentKey"] }] }); }
|
|
4039
3712
|
}
|
|
4040
3713
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SidebarMenuComponent, decorators: [{
|
|
4041
3714
|
type: Component,
|
|
4042
3715
|
args: [{ selector: 'sidebar-menu', imports: [
|
|
4043
3716
|
CommonModule,
|
|
4044
3717
|
MenuitemComponent
|
|
4045
|
-
], template: "<ul class=\"layout-menu\">\
|
|
4046
|
-
}], ctorParameters: () => [{ type:
|
|
3718
|
+
], template: "<ul class=\"layout-menu\">\n <ng-container *ngFor=\"let item of menu; let i = index;\">\n <li menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\n <li *ngIf=\"item.separator\" class=\"gray-separator\" style=\"margin-top: 11px;\"></li>\n </ng-container>\n</ul>\n" }]
|
|
3719
|
+
}], ctorParameters: () => [{ type: LayoutServiceBase }, { type: AuthServiceBase }, { type: i1.TranslocoService }, { type: ConfigServiceBase }], propDecorators: { menu: [{
|
|
4047
3720
|
type: Input
|
|
4048
3721
|
}] } });
|
|
4049
3722
|
|
|
@@ -4054,13 +3727,13 @@ class AppSidebarComponent {
|
|
|
4054
3727
|
ngOnInit() {
|
|
4055
3728
|
}
|
|
4056
3729
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AppSidebarComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4057
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: AppSidebarComponent, isStandalone: true, selector: "sidebar", inputs: { menu: "menu" }, ngImport: i0, template: " <sidebar-menu [menu]=\"menu\"></sidebar-menu>\
|
|
3730
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: AppSidebarComponent, isStandalone: true, selector: "sidebar", inputs: { menu: "menu" }, ngImport: i0, template: " <sidebar-menu [menu]=\"menu\"></sidebar-menu>\n", dependencies: [{ kind: "component", type: SidebarMenuComponent, selector: "sidebar-menu", inputs: ["menu"] }] }); }
|
|
4058
3731
|
}
|
|
4059
3732
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AppSidebarComponent, decorators: [{
|
|
4060
3733
|
type: Component,
|
|
4061
3734
|
args: [{ selector: 'sidebar', imports: [
|
|
4062
3735
|
SidebarMenuComponent
|
|
4063
|
-
], template: " <sidebar-menu [menu]=\"menu\"></sidebar-menu>\
|
|
3736
|
+
], template: " <sidebar-menu [menu]=\"menu\"></sidebar-menu>\n" }]
|
|
4064
3737
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { menu: [{
|
|
4065
3738
|
type: Input
|
|
4066
3739
|
}] } });
|
|
@@ -4153,8 +3826,8 @@ class ProfileAvatarComponent {
|
|
|
4153
3826
|
this.initTopBarSubscription.unsubscribe();
|
|
4154
3827
|
}
|
|
4155
3828
|
}
|
|
4156
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ProfileAvatarComponent, deps: [{ token:
|
|
4157
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: ProfileAvatarComponent, isStandalone: true, selector: "spiderly-profile-avatar", inputs: { isSideMenuLayout: "isSideMenuLayout", routeOnLargeProfileAvatarClick: "routeOnLargeProfileAvatarClick", showLoginButton: "showLoginButton", routeToLoginPage: "routeToLoginPage", loginButtonOutlined: "loginButtonOutlined", loginButtonSeverity: "loginButtonSeverity", loginButtonSize: "loginButtonSize", menuItems: "menuItems" }, outputs: { onLoginButtonClick: "onLoginButtonClick" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["topbarmenu"], descendants: true }, { propertyName: "topbarProfileDropdownMenuButton", first: true, predicate: ["topbarprofiledropdownmenubutton"], descendants: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\
|
|
3829
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ProfileAvatarComponent, deps: [{ token: LayoutServiceBase }, { token: AuthServiceBase }, { token: i3$2.Router }, { token: i1.TranslocoService }, { token: ConfigServiceBase }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3830
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: ProfileAvatarComponent, isStandalone: true, selector: "spiderly-profile-avatar", inputs: { isSideMenuLayout: "isSideMenuLayout", routeOnLargeProfileAvatarClick: "routeOnLargeProfileAvatarClick", showLoginButton: "showLoginButton", routeToLoginPage: "routeToLoginPage", loginButtonOutlined: "loginButtonOutlined", loginButtonSeverity: "loginButtonSeverity", loginButtonSize: "loginButtonSize", menuItems: "menuItems" }, outputs: { onLoginButtonClick: "onLoginButtonClick" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["topbarmenu"], descendants: true }, { propertyName: "topbarProfileDropdownMenuButton", first: true, predicate: ["topbarprofiledropdownmenubutton"], descendants: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div\n *ngIf=\"this.currentUser != null\"\n #topbarmenu\n >\n <div\n #topbarprofiledropdownmenubutton\n (click)=\"layoutService.showProfileDropdownSidebar()\"\n >\n <p-avatar\n *ngIf=\"showProfileIcon\"\n [label]=\"avatarLabel\"\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'width': '34px', 'height': '34px', 'font-size': '21px' }\"\n pBadge \n [badgeStyleClass]=\"'p-badge-danger'\"\n [badgeDisabled]=\"unreadNotificationsCount == 0 || unreadNotificationsCount == null\"\n [value]=\"unreadNotificationsCount\"\n />\n </div>\n <div\n #topbarprofiledropdownmenu\n (document:click)=\"onDocumentClick($event)\"\n >\n <div \n *ngIf=\"layoutService.state.profileDropdownSidebarVisible\" \n style=\"width: 280px; position: absolute; padding: 15px; background: var(--p-content-background);\" \n class=\"card\"\n [ngClass]=\"{\n 'side-menu-profile-dialog': isSideMenuLayout,\n 'top-menu-profile-dialog': !isSideMenuLayout,\n }\n \"\n >\n <div style=\"display: flex; flex-direction: column; justify-content: center; text-align: center; gap: 10px;\">\n <p-avatar\n [label]=\"avatarLabel\"\n size=\"xlarge\"\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'margin': 'auto', 'cursor': routeOnLargeProfileAvatarClick ? 'pointer' : '' }\"\n (click)=\"routeToUserPage()\"\n />\n <div style=\"font-size: 15px;\">{{currentUser?.email}}</div>\n </div>\n <div style=\"margin-top: 15px;\">\n <div *ngFor=\"let item of menuItems\" [style]=\"item.showSeparator ? 'margin-top: 5px;' : ''\">\n <div *ngIf=\"item.showSeparator\" class=\"gray-separator\"></div>\n <div (click)=\"item.onClick()\" class=\"hover-card\" style=\"display: flex; align-items: center; gap: 8px; margin-top: 5px;\">\n <i \n class=\"pi pi-fw {{item.icon}}\" \n style=\"font-size: 16px; position: relative;\"\n >\n <span *ngIf=\"item.showNotificationBadge && unreadNotificationsCount != 0\" class=\"badge\"></span>\n </i>\n <div style=\"font-size: 15px;\"> {{item.label}} </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n <div *ngIf=\"this.currentUser == null && this.showLoginButton\">\n <spiderly-button \n [label]=\"t('Login')\" \n (onClick)=\"loginButtonClick()\" \n icon=\"pi pi-sign-in\" \n [outlined]=\"loginButtonOutlined\" \n [severity]=\"loginButtonSeverity\"\n [size]=\"loginButtonSize\"\n ></spiderly-button>\n </div>\n</ng-container>", styles: [".side-menu-profile-dialog{right:26px;top:60px}.top-menu-profile-dialog{right:0;top:40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i7.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "style", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "directive", type: i8.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button", inputs: ["type"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
4158
3831
|
}
|
|
4159
3832
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ProfileAvatarComponent, decorators: [{
|
|
4160
3833
|
type: Component,
|
|
@@ -4165,8 +3838,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
4165
3838
|
BadgeModule,
|
|
4166
3839
|
SpiderlyButtonComponent,
|
|
4167
3840
|
TranslocoDirective,
|
|
4168
|
-
], template: "<ng-container *transloco=\"let t\">\
|
|
4169
|
-
}], ctorParameters: () => [{ type:
|
|
3841
|
+
], template: "<ng-container *transloco=\"let t\">\n <div\n *ngIf=\"this.currentUser != null\"\n #topbarmenu\n >\n <div\n #topbarprofiledropdownmenubutton\n (click)=\"layoutService.showProfileDropdownSidebar()\"\n >\n <p-avatar\n *ngIf=\"showProfileIcon\"\n [label]=\"avatarLabel\"\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'width': '34px', 'height': '34px', 'font-size': '21px' }\"\n pBadge \n [badgeStyleClass]=\"'p-badge-danger'\"\n [badgeDisabled]=\"unreadNotificationsCount == 0 || unreadNotificationsCount == null\"\n [value]=\"unreadNotificationsCount\"\n />\n </div>\n <div\n #topbarprofiledropdownmenu\n (document:click)=\"onDocumentClick($event)\"\n >\n <div \n *ngIf=\"layoutService.state.profileDropdownSidebarVisible\" \n style=\"width: 280px; position: absolute; padding: 15px; background: var(--p-content-background);\" \n class=\"card\"\n [ngClass]=\"{\n 'side-menu-profile-dialog': isSideMenuLayout,\n 'top-menu-profile-dialog': !isSideMenuLayout,\n }\n \"\n >\n <div style=\"display: flex; flex-direction: column; justify-content: center; text-align: center; gap: 10px;\">\n <p-avatar\n [label]=\"avatarLabel\"\n size=\"xlarge\"\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'margin': 'auto', 'cursor': routeOnLargeProfileAvatarClick ? 'pointer' : '' }\"\n (click)=\"routeToUserPage()\"\n />\n <div style=\"font-size: 15px;\">{{currentUser?.email}}</div>\n </div>\n <div style=\"margin-top: 15px;\">\n <div *ngFor=\"let item of menuItems\" [style]=\"item.showSeparator ? 'margin-top: 5px;' : ''\">\n <div *ngIf=\"item.showSeparator\" class=\"gray-separator\"></div>\n <div (click)=\"item.onClick()\" class=\"hover-card\" style=\"display: flex; align-items: center; gap: 8px; margin-top: 5px;\">\n <i \n class=\"pi pi-fw {{item.icon}}\" \n style=\"font-size: 16px; position: relative;\"\n >\n <span *ngIf=\"item.showNotificationBadge && unreadNotificationsCount != 0\" class=\"badge\"></span>\n </i>\n <div style=\"font-size: 15px;\"> {{item.label}} </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n <div *ngIf=\"this.currentUser == null && this.showLoginButton\">\n <spiderly-button \n [label]=\"t('Login')\" \n (onClick)=\"loginButtonClick()\" \n icon=\"pi pi-sign-in\" \n [outlined]=\"loginButtonOutlined\" \n [severity]=\"loginButtonSeverity\"\n [size]=\"loginButtonSize\"\n ></spiderly-button>\n </div>\n</ng-container>", styles: [".side-menu-profile-dialog{right:26px;top:60px}.top-menu-profile-dialog{right:0;top:40px}\n"] }]
|
|
3842
|
+
}], ctorParameters: () => [{ type: LayoutServiceBase }, { type: AuthServiceBase }, { type: i3$2.Router }, { type: i1.TranslocoService }, { type: ConfigServiceBase }], propDecorators: { isSideMenuLayout: [{
|
|
4170
3843
|
type: Input
|
|
4171
3844
|
}], routeOnLargeProfileAvatarClick: [{
|
|
4172
3845
|
type: Input
|
|
@@ -4207,8 +3880,8 @@ class SideMenuTopBarComponent {
|
|
|
4207
3880
|
this.layoutService.state.profileDropdownSidebarVisible = false;
|
|
4208
3881
|
});
|
|
4209
3882
|
}
|
|
4210
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SideMenuTopBarComponent, deps: [{ token:
|
|
4211
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SideMenuTopBarComponent, isStandalone: true, selector: "spiderly-sidemenu-topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\
|
|
3883
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SideMenuTopBarComponent, deps: [{ token: LayoutServiceBase }, { token: i3$2.Router }, { token: ConfigServiceBase }, { token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3884
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SideMenuTopBarComponent, isStandalone: true, selector: "spiderly-sidemenu-topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\n <a class=\"layout-topbar-logo\" routerLink=\"/\">\n <span>{{companyName?.toLocaleUpperCase()}}</span>\n </a>\n\n <button\n #menubutton\n class=\"p-link layout-menu-button layout-topbar-button\"\n (click)=\"layoutService.onMenuToggle()\"\n >\n <i class=\"pi pi-bars\"></i>\n </button>\n\n <div class=\"profile-button\">\n <spiderly-profile-avatar\n ></spiderly-profile-avatar>\n </div>\n\n</div>\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: ProfileAvatarComponent, selector: "spiderly-profile-avatar", inputs: ["isSideMenuLayout", "routeOnLargeProfileAvatarClick", "showLoginButton", "routeToLoginPage", "loginButtonOutlined", "loginButtonSeverity", "loginButtonSize", "menuItems"], outputs: ["onLoginButtonClick"] }] }); }
|
|
4212
3885
|
}
|
|
4213
3886
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SideMenuTopBarComponent, decorators: [{
|
|
4214
3887
|
type: Component,
|
|
@@ -4218,8 +3891,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
4218
3891
|
AvatarModule,
|
|
4219
3892
|
BadgeModule,
|
|
4220
3893
|
ProfileAvatarComponent,
|
|
4221
|
-
], template: "<div class=\"layout-topbar\">\
|
|
4222
|
-
}], ctorParameters: () => [{ type:
|
|
3894
|
+
], template: "<div class=\"layout-topbar\">\n <a class=\"layout-topbar-logo\" routerLink=\"/\">\n <span>{{companyName?.toLocaleUpperCase()}}</span>\n </a>\n\n <button\n #menubutton\n class=\"p-link layout-menu-button layout-topbar-button\"\n (click)=\"layoutService.onMenuToggle()\"\n >\n <i class=\"pi pi-bars\"></i>\n </button>\n\n <div class=\"profile-button\">\n <spiderly-profile-avatar\n ></spiderly-profile-avatar>\n </div>\n\n</div>\n " }]
|
|
3895
|
+
}], ctorParameters: () => [{ type: LayoutServiceBase }, { type: i3$2.Router }, { type: ConfigServiceBase }, { type: i1.TranslocoService }], propDecorators: { menuButton: [{
|
|
4223
3896
|
type: ViewChild,
|
|
4224
3897
|
args: ['menubutton']
|
|
4225
3898
|
}] } });
|
|
@@ -4258,8 +3931,8 @@ class TopBarComponent {
|
|
|
4258
3931
|
this.permissionSubscription.unsubscribe();
|
|
4259
3932
|
}
|
|
4260
3933
|
}
|
|
4261
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: TopBarComponent, deps: [{ token:
|
|
4262
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: TopBarComponent, isStandalone: true, selector: "spiderly-topbar", inputs: { menu: "menu", showHoverBgOnRootItems: "showHoverBgOnRootItems" }, ngImport: i0, template: "<div class=\"topbar-wrapper\">\
|
|
3934
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: TopBarComponent, deps: [{ token: AuthServiceBase }, { token: ConfigServiceBase }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3935
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: TopBarComponent, isStandalone: true, selector: "spiderly-topbar", inputs: { menu: "menu", showHoverBgOnRootItems: "showHoverBgOnRootItems" }, ngImport: i0, template: "<div class=\"topbar-wrapper\">\n <nav class=\"topbar {{showHoverBgOnRootItems ? '' : 'show-hover-bg-on-root-items'}}\">\n <p-menubar [model]=\"menu\" [style]=\"{ border: '0' }\">\n <ng-template #start>\n <img style=\"margin-left: 11px; cursor: pointer;\" width=\"45\" height=\"45\" routerLink=\"/\" [src]=\"logoPath\" alt=\"Logo\">\n </ng-template>\n <ng-template #end>\n <div style=\"margin-right: 11px; display: flex; gap: 10px; align-items: center; position: relative;\">\n <div>\n <ng-content select=\"[ACTIONS]\"></ng-content>\n </div>\n <spiderly-profile-avatar [isSideMenuLayout]=\"false\"></spiderly-profile-avatar>\n </div>\n </ng-template>\n </p-menubar>\n </nav>\n</div>", styles: [".topbar-wrapper{background-color:var(--p-content-background);width:100%;border-bottom:1px solid var(--p-content-border-color);box-shadow:0 4px 6px #0000001a;position:sticky;top:0;left:0;z-index:1000}.topbar{max-width:1100px;margin:auto}::ng-deep .show-hover-bg-on-root-items .p-menubar-root-list>.p-menubar-item>.p-menubar-item-content{background-color:transparent!important}::ng-deep .p-menubar-item-link{background-color:transparent!important;padding:10px!important;font-size:15px!important}::ng-deep .p-menubar-item-link .pi{font-size:15px}::ng-deep .p-menubar-button{width:35px!important;height:35px!important}::ng-deep .p-menubar-button .p-icon{width:16px;height:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MenubarModule }, { kind: "component", type: i4$a.Menubar, selector: "p-menubar", inputs: ["model", "style", "styleClass", "autoZIndex", "baseZIndex", "autoDisplay", "autoHide", "breakpoint", "autoHideDelay", "id", "ariaLabel", "ariaLabelledBy"], outputs: ["onFocus", "onBlur"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: ProfileAvatarComponent, selector: "spiderly-profile-avatar", inputs: ["isSideMenuLayout", "routeOnLargeProfileAvatarClick", "showLoginButton", "routeToLoginPage", "loginButtonOutlined", "loginButtonSeverity", "loginButtonSize", "menuItems"], outputs: ["onLoginButtonClick"] }] }); }
|
|
4263
3936
|
}
|
|
4264
3937
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: TopBarComponent, decorators: [{
|
|
4265
3938
|
type: Component,
|
|
@@ -4269,8 +3942,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
4269
3942
|
MenubarModule,
|
|
4270
3943
|
AvatarModule,
|
|
4271
3944
|
ProfileAvatarComponent,
|
|
4272
|
-
], template: "<div class=\"topbar-wrapper\">\
|
|
4273
|
-
}], ctorParameters: () => [{ type:
|
|
3945
|
+
], template: "<div class=\"topbar-wrapper\">\n <nav class=\"topbar {{showHoverBgOnRootItems ? '' : 'show-hover-bg-on-root-items'}}\">\n <p-menubar [model]=\"menu\" [style]=\"{ border: '0' }\">\n <ng-template #start>\n <img style=\"margin-left: 11px; cursor: pointer;\" width=\"45\" height=\"45\" routerLink=\"/\" [src]=\"logoPath\" alt=\"Logo\">\n </ng-template>\n <ng-template #end>\n <div style=\"margin-right: 11px; display: flex; gap: 10px; align-items: center; position: relative;\">\n <div>\n <ng-content select=\"[ACTIONS]\"></ng-content>\n </div>\n <spiderly-profile-avatar [isSideMenuLayout]=\"false\"></spiderly-profile-avatar>\n </div>\n </ng-template>\n </p-menubar>\n </nav>\n</div>", styles: [".topbar-wrapper{background-color:var(--p-content-background);width:100%;border-bottom:1px solid var(--p-content-border-color);box-shadow:0 4px 6px #0000001a;position:sticky;top:0;left:0;z-index:1000}.topbar{max-width:1100px;margin:auto}::ng-deep .show-hover-bg-on-root-items .p-menubar-root-list>.p-menubar-item>.p-menubar-item-content{background-color:transparent!important}::ng-deep .p-menubar-item-link{background-color:transparent!important;padding:10px!important;font-size:15px!important}::ng-deep .p-menubar-item-link .pi{font-size:15px}::ng-deep .p-menubar-button{width:35px!important;height:35px!important}::ng-deep .p-menubar-button .p-icon{width:16px;height:16px}\n"] }]
|
|
3946
|
+
}], ctorParameters: () => [{ type: AuthServiceBase }, { type: ConfigServiceBase }], propDecorators: { menu: [{
|
|
4274
3947
|
type: Input
|
|
4275
3948
|
}], showHoverBgOnRootItems: [{
|
|
4276
3949
|
type: Input
|
|
@@ -4392,8 +4065,8 @@ class SpiderlyLayoutComponent {
|
|
|
4392
4065
|
}
|
|
4393
4066
|
this.onAfterNgDestroy();
|
|
4394
4067
|
}
|
|
4395
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyLayoutComponent, deps: [{ token:
|
|
4396
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyLayoutComponent, isStandalone: true, selector: "spiderly-layout", inputs: { menu: "menu", isSideMenuLayout: "isSideMenuLayout", showHoverBgOnRootTopMenuItems: "showHoverBgOnRootTopMenuItems", maxWidth: "maxWidth" }, viewQueries: [{ propertyName: "appSidebar", first: true, predicate: AppSidebarComponent, descendants: true }, { propertyName: "sidemenuTopbar", first: true, predicate: SideMenuTopBarComponent, descendants: true }, { propertyName: "topbarmenu", first: true, predicate: ["topbarmenu"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"isSideMenuLayout\" class=\"layout-wrapper\" [ngClass]=\"containerClass\">\
|
|
4068
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyLayoutComponent, deps: [{ token: LayoutServiceBase }, { token: i0.Renderer2 }, { token: i3$2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4069
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyLayoutComponent, isStandalone: true, selector: "spiderly-layout", inputs: { menu: "menu", isSideMenuLayout: "isSideMenuLayout", showHoverBgOnRootTopMenuItems: "showHoverBgOnRootTopMenuItems", maxWidth: "maxWidth" }, viewQueries: [{ propertyName: "appSidebar", first: true, predicate: AppSidebarComponent, descendants: true }, { propertyName: "sidemenuTopbar", first: true, predicate: SideMenuTopBarComponent, descendants: true }, { propertyName: "topbarmenu", first: true, predicate: ["topbarmenu"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"isSideMenuLayout\" class=\"layout-wrapper\" [ngClass]=\"containerClass\">\n <spiderly-sidemenu-topbar></spiderly-sidemenu-topbar>\n <div class=\"layout-sidebar\">\n <sidebar [menu]=\"sideMenu\"></sidebar>\n </div>\n <div class=\"layout-main-container\">\n <div class=\"layout-main\">\n <router-outlet></router-outlet>\n </div>\n <footer></footer>\n </div>\n <div class=\"layout-mask\"></div>\n</div>\n\n<div *ngIf=\"isSideMenuLayout === false\">\n <spiderly-topbar [menu]=\"topMenu\" [showHoverBgOnRootItems]=\"showHoverBgOnRootTopMenuItems\">\n <ng-content ACTIONS select=\"[ACTIONS]\"></ng-content>\n </spiderly-topbar>\n <main [style.max-width]=\"maxWidth\" style=\"margin: auto; padding: 18px;\">\n <router-outlet></router-outlet>\n </main>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3$2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: AppSidebarComponent, selector: "sidebar", inputs: ["menu"] }, { kind: "component", type: FooterComponent, selector: "footer" }, { kind: "component", type: SideMenuTopBarComponent, selector: "spiderly-sidemenu-topbar" }, { kind: "component", type: TopBarComponent, selector: "spiderly-topbar", inputs: ["menu", "showHoverBgOnRootItems"] }] }); }
|
|
4397
4070
|
}
|
|
4398
4071
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyLayoutComponent, decorators: [{
|
|
4399
4072
|
type: Component,
|
|
@@ -4404,8 +4077,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
4404
4077
|
FooterComponent,
|
|
4405
4078
|
SideMenuTopBarComponent,
|
|
4406
4079
|
TopBarComponent,
|
|
4407
|
-
], template: "<div *ngIf=\"isSideMenuLayout\" class=\"layout-wrapper\" [ngClass]=\"containerClass\">\
|
|
4408
|
-
}], ctorParameters: () => [{ type:
|
|
4080
|
+
], template: "<div *ngIf=\"isSideMenuLayout\" class=\"layout-wrapper\" [ngClass]=\"containerClass\">\n <spiderly-sidemenu-topbar></spiderly-sidemenu-topbar>\n <div class=\"layout-sidebar\">\n <sidebar [menu]=\"sideMenu\"></sidebar>\n </div>\n <div class=\"layout-main-container\">\n <div class=\"layout-main\">\n <router-outlet></router-outlet>\n </div>\n <footer></footer>\n </div>\n <div class=\"layout-mask\"></div>\n</div>\n\n<div *ngIf=\"isSideMenuLayout === false\">\n <spiderly-topbar [menu]=\"topMenu\" [showHoverBgOnRootItems]=\"showHoverBgOnRootTopMenuItems\">\n <ng-content ACTIONS select=\"[ACTIONS]\"></ng-content>\n </spiderly-topbar>\n <main [style.max-width]=\"maxWidth\" style=\"margin: auto; padding: 18px;\">\n <router-outlet></router-outlet>\n </main>\n</div>" }]
|
|
4081
|
+
}], ctorParameters: () => [{ type: LayoutServiceBase }, { type: i0.Renderer2 }, { type: i3$2.Router }], propDecorators: { menu: [{
|
|
4409
4082
|
type: Input
|
|
4410
4083
|
}], isSideMenuLayout: [{
|
|
4411
4084
|
type: Input
|
|
@@ -4471,6 +4144,23 @@ class MimeTypes {
|
|
|
4471
4144
|
}
|
|
4472
4145
|
}
|
|
4473
4146
|
|
|
4147
|
+
class Namebook extends BaseEntity {
|
|
4148
|
+
constructor({ id, displayName, } = {}) {
|
|
4149
|
+
super();
|
|
4150
|
+
this.id = id;
|
|
4151
|
+
this.displayName = displayName;
|
|
4152
|
+
}
|
|
4153
|
+
static { this.schema = {
|
|
4154
|
+
id: {
|
|
4155
|
+
type: 'any',
|
|
4156
|
+
},
|
|
4157
|
+
displayName: {
|
|
4158
|
+
type: 'string',
|
|
4159
|
+
},
|
|
4160
|
+
}; }
|
|
4161
|
+
static { this.typeName = 'Namebook'; }
|
|
4162
|
+
}
|
|
4163
|
+
|
|
4474
4164
|
class PrimengOption extends BaseEntity {
|
|
4475
4165
|
constructor({ label, code, } = {}) {
|
|
4476
4166
|
super();
|
|
@@ -4570,6 +4260,14 @@ class FilterRule {
|
|
|
4570
4260
|
class PaginatedResult {
|
|
4571
4261
|
}
|
|
4572
4262
|
|
|
4263
|
+
class IsAuthorizedForSaveEvent extends BaseEntity {
|
|
4264
|
+
constructor({ isAuthorizedForSave, } = {}) {
|
|
4265
|
+
super();
|
|
4266
|
+
this.isAuthorizedForSave = isAuthorizedForSave;
|
|
4267
|
+
}
|
|
4268
|
+
static { this.typeName = 'IsAuthorizedForSaveEvent'; }
|
|
4269
|
+
}
|
|
4270
|
+
|
|
4573
4271
|
var SecurityPermissionCodes;
|
|
4574
4272
|
(function (SecurityPermissionCodes) {
|
|
4575
4273
|
SecurityPermissionCodes["ReadUser"] = "ReadUser";
|
|
@@ -4616,7 +4314,7 @@ class AuthGuard {
|
|
|
4616
4314
|
}
|
|
4617
4315
|
}));
|
|
4618
4316
|
}
|
|
4619
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthGuard, deps: [{ token:
|
|
4317
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthGuard, deps: [{ token: AuthServiceBase }, { token: i3$2.Router }, { token: ConfigServiceBase }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4620
4318
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
|
|
4621
4319
|
}
|
|
4622
4320
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthGuard, decorators: [{
|
|
@@ -4624,7 +4322,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
4624
4322
|
args: [{
|
|
4625
4323
|
providedIn: 'root',
|
|
4626
4324
|
}]
|
|
4627
|
-
}], ctorParameters: () => [{ type:
|
|
4325
|
+
}], ctorParameters: () => [{ type: AuthServiceBase }, { type: i3$2.Router }, { type: ConfigServiceBase }] });
|
|
4628
4326
|
|
|
4629
4327
|
class NotAuthGuard {
|
|
4630
4328
|
constructor(authService) {
|
|
@@ -4644,7 +4342,7 @@ class NotAuthGuard {
|
|
|
4644
4342
|
}
|
|
4645
4343
|
}));
|
|
4646
4344
|
}
|
|
4647
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: NotAuthGuard, deps: [{ token:
|
|
4345
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: NotAuthGuard, deps: [{ token: AuthServiceBase }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4648
4346
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: NotAuthGuard, providedIn: 'root' }); }
|
|
4649
4347
|
}
|
|
4650
4348
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: NotAuthGuard, decorators: [{
|
|
@@ -4652,7 +4350,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
4652
4350
|
args: [{
|
|
4653
4351
|
providedIn: 'root',
|
|
4654
4352
|
}]
|
|
4655
|
-
}], ctorParameters: () => [{ type:
|
|
4353
|
+
}], ctorParameters: () => [{ type: AuthServiceBase }] });
|
|
4656
4354
|
|
|
4657
4355
|
class SpiderlyErrorHandler {
|
|
4658
4356
|
constructor(messageService, translocoService, config) {
|
|
@@ -4668,7 +4366,7 @@ class SpiderlyErrorHandler {
|
|
|
4668
4366
|
this.messageService.errorMessage(this.translocoService.translate('UnexpectedErrorDetails'), this.translocoService.translate('UnexpectedErrorTitle'));
|
|
4669
4367
|
}
|
|
4670
4368
|
}
|
|
4671
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyErrorHandler, deps: [{ token: SpiderlyMessageService }, { token: i1.TranslocoService }, { token:
|
|
4369
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyErrorHandler, deps: [{ token: SpiderlyMessageService }, { token: i1.TranslocoService }, { token: ConfigServiceBase }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4672
4370
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyErrorHandler, providedIn: 'root' }); }
|
|
4673
4371
|
}
|
|
4674
4372
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyErrorHandler, decorators: [{
|
|
@@ -4676,7 +4374,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
4676
4374
|
args: [{
|
|
4677
4375
|
providedIn: 'root'
|
|
4678
4376
|
}]
|
|
4679
|
-
}], ctorParameters: () => [{ type: SpiderlyMessageService }, { type: i1.TranslocoService }, { type:
|
|
4377
|
+
}], ctorParameters: () => [{ type: SpiderlyMessageService }, { type: i1.TranslocoService }, { type: ConfigServiceBase }] });
|
|
4680
4378
|
|
|
4681
4379
|
const httpLoadingInterceptor = (req, next) => {
|
|
4682
4380
|
const spinner = inject(NgxSpinnerService);
|
|
@@ -4751,7 +4449,7 @@ const convertToDate = (object, parent, key) => {
|
|
|
4751
4449
|
};
|
|
4752
4450
|
|
|
4753
4451
|
const jwtInterceptor = (req, next) => {
|
|
4754
|
-
const config = inject(
|
|
4452
|
+
const config = inject(ConfigServiceBase);
|
|
4755
4453
|
const platformId = inject(PLATFORM_ID);
|
|
4756
4454
|
let accessToken = null;
|
|
4757
4455
|
if (isPlatformBrowser(platformId)) {
|
|
@@ -4769,7 +4467,8 @@ const jwtInterceptor = (req, next) => {
|
|
|
4769
4467
|
const unauthorizedInterceptor = (req, next) => {
|
|
4770
4468
|
const messageService = inject(SpiderlyMessageService);
|
|
4771
4469
|
const translocoService = inject(TranslocoService);
|
|
4772
|
-
const config = inject(
|
|
4470
|
+
const config = inject(ConfigServiceBase);
|
|
4471
|
+
const authService = inject(AuthServiceBase);
|
|
4773
4472
|
const handleAuthError = (err, request) => {
|
|
4774
4473
|
if (!config.production) {
|
|
4775
4474
|
console.error(err);
|
|
@@ -4800,13 +4499,13 @@ const unauthorizedInterceptor = (req, next) => {
|
|
|
4800
4499
|
return of(err.message);
|
|
4801
4500
|
}
|
|
4802
4501
|
else if (err.status == 419) { // Access token expired
|
|
4502
|
+
authService.clearLocalStorage();
|
|
4803
4503
|
return of(err.message);
|
|
4804
4504
|
}
|
|
4805
4505
|
else {
|
|
4806
4506
|
messageService.errorMessage(translocoService.translate('UnexpectedErrorDetails'), translocoService.translate('UnexpectedErrorTitle'));
|
|
4807
4507
|
return of(err.message);
|
|
4808
4508
|
}
|
|
4809
|
-
return throwError(err);
|
|
4810
4509
|
};
|
|
4811
4510
|
return next(req).pipe(catchError((err) => {
|
|
4812
4511
|
return handleAuthError(err, req);
|
|
@@ -4832,7 +4531,7 @@ class SpiderlyTranslocoLoader {
|
|
|
4832
4531
|
getTranslation(lang) {
|
|
4833
4532
|
return this.http.get(`${this.config.frontendUrl}/assets/i18n/${lang}.json`);
|
|
4834
4533
|
}
|
|
4835
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTranslocoLoader, deps: [{ token: i1$
|
|
4534
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTranslocoLoader, deps: [{ token: i1$3.HttpClient }, { token: ConfigServiceBase }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4836
4535
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTranslocoLoader, providedIn: 'root' }); }
|
|
4837
4536
|
}
|
|
4838
4537
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTranslocoLoader, decorators: [{
|
|
@@ -4840,7 +4539,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
4840
4539
|
args: [{
|
|
4841
4540
|
providedIn: 'root'
|
|
4842
4541
|
}]
|
|
4843
|
-
}], ctorParameters: () => [{ type: i1$
|
|
4542
|
+
}], ctorParameters: () => [{ type: i1$3.HttpClient }, { type: ConfigServiceBase }] });
|
|
4844
4543
|
|
|
4845
4544
|
class SpiderlyTemplateTypeDirective {
|
|
4846
4545
|
static ngTemplateContextGuard(dir, ctx) {
|
|
@@ -4866,5 +4565,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
4866
4565
|
* Generated bundle index. Do not edit.
|
|
4867
4566
|
*/
|
|
4868
4567
|
|
|
4869
|
-
export { Action, AllClickEvent, ApiSecurityService, AppSidebarComponent,
|
|
4568
|
+
export { Action, AllClickEvent, ApiSecurityService, AppSidebarComponent, AuthGuard, AuthResult, AuthServiceBase, BaseAutocompleteControl, BaseControl, BaseDropdownControl, BaseEntity, BaseFormCopy, BaseFormService, CardSkeletonComponent, Codebook, Column, ConfigServiceBase, ExternalProvider, Filter, FilterRule, FilterSortMeta, FooterComponent, GoogleButtonComponent, IndexCardComponent, InfoCardComponent, InitCompanyAuthDialogDetails, InitTopBarData, IsAuthorizedForSaveEvent, LastMenuIconIndexClicked, LayoutServiceBase, LazyLoadSelectedIdsResult, Login, LoginComponent, LoginVerificationComponent, LoginVerificationToken, MatchModeCodes, MenuChangeEvent, MenuitemComponent, MimeTypes, Namebook, NotAuthGuard, NotFoundComponent, PROPS_KEY, PaginatedResult, PanelBodyComponent, PanelFooterComponent, PanelHeaderComponent, PrimengOption, ProfileAvatarComponent, ReflectProp, RefreshTokenRequest, RequiredComponent, RowClickEvent, SecurityPermissionCodes, SendLoginVerificationEmailResult, SideMenuTopBarComponent, SidebarMenuComponent, SimpleSaveResult, SpiderlyAutocompleteComponent, SpiderlyButtonBaseComponent, SpiderlyButtonComponent, SpiderlyCalendarComponent, SpiderlyCardComponent, SpiderlyCheckboxComponent, SpiderlyColorPickerComponent, SpiderlyControlsModule, SpiderlyDataTableComponent, SpiderlyDataViewComponent, SpiderlyDeleteConfirmationComponent, SpiderlyDropdownComponent, SpiderlyEditorComponent, SpiderlyErrorHandler, SpiderlyFileComponent, SpiderlyFileSelectEvent, SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup, SpiderlyLayoutComponent, SpiderlyMessageService, SpiderlyMultiAutocompleteComponent, SpiderlyMultiSelectComponent, SpiderlyNumberComponent, SpiderlyPanelComponent, SpiderlyPanelsModule, SpiderlyPasswordComponent, SpiderlyReturnButtonComponent, SpiderlySplitButtonComponent, SpiderlyTab, SpiderlyTemplateTypeDirective, SpiderlyTextareaComponent, SpiderlyTextboxComponent, SpiderlyTranslocoLoader, TopBarComponent, TranslateLabelsAbstractService, UserBase, UserRole, ValidatorAbstractService, VerificationTokenRequest, VerificationTypeCodes, VerificationWrapperComponent, adjustColor, authInitializer, capitalizeFirstChar, createFakeGoogleWrapper, deleteAction, exportListToExcel, firstCharToUpper, getFileNameFromContentDisposition, getHtmlImgDisplayString64, getMimeTypeForFileName, getMonth, getParentUrl, getPrimengAutocompleteCodebookOptions, getPrimengAutocompleteNamebookOptions, getPrimengDropdownCodebookOptions, getPrimengDropdownNamebookOptions, httpLoadingInterceptor, isExcelFileType, isImageFileType, isNullOrEmpty, jsonHttpInterceptor, jwtInterceptor, kebabToTitleCase, nameOf, nameof, primitiveArrayTypes, pushAction, selectedTab, singleOrDefault, splitPascalCase, toCommaSeparatedString, unauthorizedInterceptor, validatePrecisionScale };
|
|
4870
4569
|
//# sourceMappingURL=spiderly.mjs.map
|