@stemy/ngx-utils 19.6.3 → 19.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/stemy-ngx-utils.mjs +107 -62
- package/fesm2022/stemy-ngx-utils.mjs.map +1 -1
- package/ngx-utils/common-types.d.ts +1 -0
- package/ngx-utils/components/btn/btn.component.d.ts +3 -0
- package/ngx-utils/components/btn-default/btn-default.component.d.ts +1 -0
- package/ngx-utils/components/close-btn/close-btn.component.d.ts +5 -0
- package/ngx-utils/components/upload/upload.component.d.ts +11 -7
- package/ngx-utils/ngx-utils.imports.d.ts +2 -2
- package/ngx-utils/ngx-utils.module.d.ts +18 -17
- package/ngx-utils/utils/misc.d.ts +6 -0
- package/package.json +1 -1
- package/public_api.d.ts +2 -1
|
@@ -2017,6 +2017,17 @@ class MathUtils {
|
|
|
2017
2017
|
function isBrowser() {
|
|
2018
2018
|
return typeof window !== "undefined";
|
|
2019
2019
|
}
|
|
2020
|
+
/**
|
|
2021
|
+
* Returns an elements root
|
|
2022
|
+
* @param {HTMLElement} elem The element which root we need
|
|
2023
|
+
* @return {DocumentOrShadowRoot} The document or the elements shadow root
|
|
2024
|
+
*/
|
|
2025
|
+
function getRoot(elem) {
|
|
2026
|
+
if (!isBrowser())
|
|
2027
|
+
return null;
|
|
2028
|
+
const root = elem?.getRootNode();
|
|
2029
|
+
return root || document;
|
|
2030
|
+
}
|
|
2020
2031
|
/**
|
|
2021
2032
|
* Returns a hash code from anything
|
|
2022
2033
|
* @param {string} obj The object to hash.
|
|
@@ -6685,6 +6696,7 @@ class BtnComponent {
|
|
|
6685
6696
|
this.type = input("primary");
|
|
6686
6697
|
this.size = input("normal");
|
|
6687
6698
|
this.buttonType = inject(BUTTON_TYPE);
|
|
6699
|
+
this.element = inject(ElementRef);
|
|
6688
6700
|
this.buttonProps = computed(() => {
|
|
6689
6701
|
return {
|
|
6690
6702
|
label: this.label(),
|
|
@@ -6696,12 +6708,15 @@ class BtnComponent {
|
|
|
6696
6708
|
};
|
|
6697
6709
|
});
|
|
6698
6710
|
}
|
|
6711
|
+
contains(target) {
|
|
6712
|
+
return !(target instanceof HTMLElement) || this.element.nativeElement?.contains(target);
|
|
6713
|
+
}
|
|
6699
6714
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6700
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.14", type: BtnComponent, isStandalone: false, selector: "btn", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container [ngComponentOutlet]=\"buttonType\"\n [ngComponentOutletInputs]=\"buttonProps()\"></ng-container>\n", dependencies: [{ kind: "directive", type: i1$3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6715
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.14", type: BtnComponent, isStandalone: false, selector: "btn", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container [ngComponentOutlet]=\"buttonType\"\n [ngComponentOutletInputs]=\"$any(buttonProps())\"></ng-container>\n", dependencies: [{ kind: "directive", type: i1$3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6701
6716
|
}
|
|
6702
6717
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BtnComponent, decorators: [{
|
|
6703
6718
|
type: Component,
|
|
6704
|
-
args: [{ standalone: false, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: "btn", template: "<ng-container [ngComponentOutlet]=\"buttonType\"\n [ngComponentOutletInputs]=\"buttonProps()\"></ng-container>\n" }]
|
|
6719
|
+
args: [{ standalone: false, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: "btn", template: "<ng-container [ngComponentOutlet]=\"buttonType\"\n [ngComponentOutletInputs]=\"$any(buttonProps())\"></ng-container>\n" }]
|
|
6705
6720
|
}] });
|
|
6706
6721
|
|
|
6707
6722
|
class IconComponent {
|
|
@@ -6725,12 +6740,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
6725
6740
|
}] });
|
|
6726
6741
|
|
|
6727
6742
|
class BtnDefaultComponent {
|
|
6743
|
+
get bsSize() {
|
|
6744
|
+
return this.size === "small" ? "btn-sm" : "btn-md";
|
|
6745
|
+
}
|
|
6728
6746
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BtnDefaultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6729
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: BtnDefaultComponent, isStandalone: false, selector: "btn-default", inputs: { label: "label", tooltip: "tooltip", icon: "icon", disabled: "disabled", type: "type", size: "size" }, ngImport: i0, template: "<
|
|
6747
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: BtnDefaultComponent, isStandalone: false, selector: "btn-default", inputs: { label: "label", tooltip: "tooltip", icon: "icon", disabled: "disabled", type: "type", size: "size" }, ngImport: i0, template: "<button class=\"default-btn btn\"\n type=\"button\"\n async-method-target\n [title]=\"!tooltip ? '' : tooltip | translate\"\n [ngClass]=\"['btn-' + type, bsSize]\">\n <icon [name]=\"icon\" *ngIf=\"icon\"></icon>\n <span *ngIf=\"label\">{{ label | translate }}</span>\n</button>\n", styles: [".default-btn{display:flex;gap:5px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: AsyncMethodTargetDirective, selector: "[async-method-target]" }, { kind: "component", type: IconComponent, selector: "icon", inputs: ["name"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
6730
6748
|
}
|
|
6731
6749
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BtnDefaultComponent, decorators: [{
|
|
6732
6750
|
type: Component,
|
|
6733
|
-
args: [{ standalone: false, encapsulation: ViewEncapsulation.None, selector: "btn-default", template: "<
|
|
6751
|
+
args: [{ standalone: false, encapsulation: ViewEncapsulation.None, selector: "btn-default", template: "<button class=\"default-btn btn\"\n type=\"button\"\n async-method-target\n [title]=\"!tooltip ? '' : tooltip | translate\"\n [ngClass]=\"['btn-' + type, bsSize]\">\n <icon [name]=\"icon\" *ngIf=\"icon\"></icon>\n <span *ngIf=\"label\">{{ label | translate }}</span>\n</button>\n", styles: [".default-btn{display:flex;gap:5px}\n"] }]
|
|
6734
6752
|
}], propDecorators: { label: [{
|
|
6735
6753
|
type: Input
|
|
6736
6754
|
}], tooltip: [{
|
|
@@ -6745,6 +6763,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
6745
6763
|
type: Input
|
|
6746
6764
|
}] } });
|
|
6747
6765
|
|
|
6766
|
+
class CloseBtnComponent {
|
|
6767
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CloseBtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6768
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: CloseBtnComponent, isStandalone: false, selector: "close-btn", ngImport: i0, template: "", isInline: true, styles: ["close-btn{--close-bg: var(--primary-color, rgba(0, 0, 0, .3));--close-color: #ffffff;--close-size: 18px;--close-distance: 4px;--close-spacing: 8px;position:relative;display:block;width:var(--close-size);height:var(--close-size);cursor:pointer;transition:.2s ease;background-color:var(--close-bg);border-radius:50%}close-btn:before,close-btn:after{--rotation: 45deg;content:\"\";position:absolute;top:50%;left:50%;width:calc(100% - var(--close-spacing));transform:translate(-50%,-50%) rotate(var(--rotation));height:1px;background:var(--close-color);transition:.2s ease}close-btn:after{--rotation: -45deg}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
6769
|
+
}
|
|
6770
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CloseBtnComponent, decorators: [{
|
|
6771
|
+
type: Component,
|
|
6772
|
+
args: [{ standalone: false, selector: "close-btn", template: "", encapsulation: ViewEncapsulation.None, styles: ["close-btn{--close-bg: var(--primary-color, rgba(0, 0, 0, .3));--close-color: #ffffff;--close-size: 18px;--close-distance: 4px;--close-spacing: 8px;position:relative;display:block;width:var(--close-size);height:var(--close-size);cursor:pointer;transition:.2s ease;background-color:var(--close-bg);border-radius:50%}close-btn:before,close-btn:after{--rotation: 45deg;content:\"\";position:absolute;top:50%;left:50%;width:calc(100% - var(--close-spacing));transform:translate(-50%,-50%) rotate(var(--rotation));height:1px;background:var(--close-color);transition:.2s ease}close-btn:after{--rotation: -45deg}\n"] }]
|
|
6773
|
+
}] });
|
|
6774
|
+
|
|
6748
6775
|
class ChipsComponent {
|
|
6749
6776
|
constructor(cdr) {
|
|
6750
6777
|
this.cdr = cdr;
|
|
@@ -6935,13 +6962,13 @@ class ChipsComponent {
|
|
|
6935
6962
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ChipsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6936
6963
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ChipsComponent, isStandalone: false, selector: "chips", inputs: { value: "value", multiple: "multiple", disabled: "disabled", type: "type", min: "min", max: "max", minLength: "minLength", maxLength: "maxLength", step: "step", placeholder: "placeholder", unique: "unique", options: "options" }, outputs: { valueChange: "valueChange" }, providers: [
|
|
6937
6964
|
{ provide: NG_VALUE_ACCESSOR, useExisting: ChipsComponent, multi: true }
|
|
6938
|
-
], viewQueries: [{ propertyName: "chipContainer", first: true, predicate: ["chipContainer"], descendants: true }, { propertyName: "chipButtons", first: true, predicate: ["chipButtons"], descendants: true }, { propertyName: "chipInput", first: true, predicate: ["chipInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"chips\" [ngClass]=\"{disabled: disabled}\" #chipContainer>\n <input class=\"chips-input\"\n [type]=\"type == 'number' ? 'number': 'text'\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [placeholder]=\"valueOptions.length == 0 && placeholder | translate\"\n [ngStyle]=\"inputStyles\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onInput($event)\"\n #chipInput/>\n <div class=\"chips-buttons\" #chipButtons [ngClass]=\"{disabled: disabled}\" (resize)=\"onResize()\">\n <ng-container *ngFor=\"let item of valueOptions; let ix = index; trackBy:trackBy\">\n <a class=\"chips-button\" [ngClass]=\"'chips-' + statuses[ix]\" (dblclick)=\"removeItem($event, ix)\">\n <span *ngIf=\"item.picture\" class=\"chip-picture\">\n <img [src]=\"item.picture | safe:'url'\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"item.label\">\n </span>\n <span class=\"chips-label\">{{ item.label }} </span>\n <
|
|
6965
|
+
], viewQueries: [{ propertyName: "chipContainer", first: true, predicate: ["chipContainer"], descendants: true }, { propertyName: "chipButtons", first: true, predicate: ["chipButtons"], descendants: true }, { propertyName: "chipInput", first: true, predicate: ["chipInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"chips\" [ngClass]=\"{disabled: disabled}\" #chipContainer>\n <input class=\"chips-input\"\n [type]=\"type == 'number' ? 'number': 'text'\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [placeholder]=\"valueOptions.length == 0 && placeholder | translate\"\n [ngStyle]=\"inputStyles\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onInput($event)\"\n #chipInput/>\n <div class=\"chips-buttons\" #chipButtons [ngClass]=\"{disabled: disabled}\" (resize)=\"onResize()\">\n <ng-container *ngFor=\"let item of valueOptions; let ix = index; trackBy:trackBy\">\n <a class=\"chips-button\" [ngClass]=\"'chips-' + statuses[ix]\" (dblclick)=\"removeItem($event, ix)\">\n <span *ngIf=\"item.picture\" class=\"chip-picture\">\n <img [src]=\"item.picture | safe:'url'\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"item.label\">\n </span>\n <span class=\"chips-label\">{{ item.label }} </span>\n <close-btn class=\"chips-remove\" (click)=\"removeItem($event, ix)\" *ngIf=\"!disabled\"></close-btn>\n </a>\n </ng-container>\n </div>\n</div>\n", styles: [".chips{--chips-border-size: var(--border-size, 1px);--chips-border-radius: var(--border-radius, 5px);--chips-bg-color: var(--bg-color, #ffffff);--chips-border-color: var(--border-color, #ced4da);--chips-text-color: var(--text-color, #151515);--chips-text-size: var(--text-size, 16px);--chips-padding-vertical: 6px;--chips-padding-horizontal: 12px;--chips-padding: var(--chips-padding-vertical) var(--chips-padding-horizontal);--chips-btn-padding: 12px;--chips-btn-gap: calc(var(--chips-btn-padding) / 2);--chips-btn-color: white;--chips-btn-valid-color: rgba(200, 255, 200, .7);--chips-btn-invalid-color: rgba(255, 200, 200, .7);position:relative;margin:5px 0;font-size:var(--chips-text-size);padding:var(--chips-padding);background:var(--chips-bg-color);color:var(--chips-text-color);border:var(--chips-border-size) solid var(--chips-border-color);border-radius:var(--chips-border-radius)}.chips *{box-sizing:border-box}.chips .chips-input{background:var(--chips-bg-color);padding:var(--chips-padding);font-size:var(--chips-text-size);outline:none;border:none;width:100%;-webkit-user-select:none;user-select:none;font-weight:400}.chips .chips-buttons{position:absolute;top:var(--chips-padding-vertical);left:var(--chips-padding-horizontal);max-width:calc(100% - var(--chips-padding-horizontal) * 2);display:flex;gap:5px;overflow:auto;border-radius:var(--chips-border-radius)}.chips .chips-button{background:var(--chipd-btn-color);color:var(--chips-text-color);border:var(--chips-border-size) solid rgba(0,0,0,.2);border-radius:var(--chips-border-radius);padding:var(--chips-padding-vertical) var(--chips-btn-gap) var(--chips-padding-vertical) var(--chips-btn-padding);-webkit-user-select:none;user-select:none;font-weight:400;outline:none;display:flex;gap:var(--chips-btn-gap);justify-content:center;align-items:center;line-height:1.2rem;text-decoration:none}.chips .chips-button.chips-valid{--chipd-btn-color: var(--chips-btn-valid-color) }.chips .chips-button.chips-invalid{--chipd-btn-color: var(--chips-btn-invalid-color) }.chips .chips-picture{width:28px;height:28px;overflow:hidden;margin-right:5px}.chips .chips-picture img{max-height:100%}.chips .chips-label{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chips.disabled{opacity:.75}.chips.disabled .chips-button{padding-right:var(--chips-btn-padding)}.select-option{display:flex;gap:8px;align-items:center;justify-content:center}.select-option .select-option-picture{width:32px;height:32px;overflow:hidden}.select-option .select-option-picture img{max-height:100%}.select-option .select-option-label{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CloseBtnComponent, selector: "close-btn" }, { kind: "pipe", type: SafeHtmlPipe, name: "safe" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
6939
6966
|
}
|
|
6940
6967
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ChipsComponent, decorators: [{
|
|
6941
6968
|
type: Component,
|
|
6942
6969
|
args: [{ standalone: false, encapsulation: ViewEncapsulation.None, selector: "chips", providers: [
|
|
6943
6970
|
{ provide: NG_VALUE_ACCESSOR, useExisting: ChipsComponent, multi: true }
|
|
6944
|
-
], template: "<div class=\"chips\" [ngClass]=\"{disabled: disabled}\" #chipContainer>\n <input class=\"chips-input\"\n [type]=\"type == 'number' ? 'number': 'text'\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [placeholder]=\"valueOptions.length == 0 && placeholder | translate\"\n [ngStyle]=\"inputStyles\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onInput($event)\"\n #chipInput/>\n <div class=\"chips-buttons\" #chipButtons [ngClass]=\"{disabled: disabled}\" (resize)=\"onResize()\">\n <ng-container *ngFor=\"let item of valueOptions; let ix = index; trackBy:trackBy\">\n <a class=\"chips-button\" [ngClass]=\"'chips-' + statuses[ix]\" (dblclick)=\"removeItem($event, ix)\">\n <span *ngIf=\"item.picture\" class=\"chip-picture\">\n <img [src]=\"item.picture | safe:'url'\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"item.label\">\n </span>\n <span class=\"chips-label\">{{ item.label }} </span>\n <
|
|
6971
|
+
], template: "<div class=\"chips\" [ngClass]=\"{disabled: disabled}\" #chipContainer>\n <input class=\"chips-input\"\n [type]=\"type == 'number' ? 'number': 'text'\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [placeholder]=\"valueOptions.length == 0 && placeholder | translate\"\n [ngStyle]=\"inputStyles\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onInput($event)\"\n #chipInput/>\n <div class=\"chips-buttons\" #chipButtons [ngClass]=\"{disabled: disabled}\" (resize)=\"onResize()\">\n <ng-container *ngFor=\"let item of valueOptions; let ix = index; trackBy:trackBy\">\n <a class=\"chips-button\" [ngClass]=\"'chips-' + statuses[ix]\" (dblclick)=\"removeItem($event, ix)\">\n <span *ngIf=\"item.picture\" class=\"chip-picture\">\n <img [src]=\"item.picture | safe:'url'\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"item.label\">\n </span>\n <span class=\"chips-label\">{{ item.label }} </span>\n <close-btn class=\"chips-remove\" (click)=\"removeItem($event, ix)\" *ngIf=\"!disabled\"></close-btn>\n </a>\n </ng-container>\n </div>\n</div>\n", styles: [".chips{--chips-border-size: var(--border-size, 1px);--chips-border-radius: var(--border-radius, 5px);--chips-bg-color: var(--bg-color, #ffffff);--chips-border-color: var(--border-color, #ced4da);--chips-text-color: var(--text-color, #151515);--chips-text-size: var(--text-size, 16px);--chips-padding-vertical: 6px;--chips-padding-horizontal: 12px;--chips-padding: var(--chips-padding-vertical) var(--chips-padding-horizontal);--chips-btn-padding: 12px;--chips-btn-gap: calc(var(--chips-btn-padding) / 2);--chips-btn-color: white;--chips-btn-valid-color: rgba(200, 255, 200, .7);--chips-btn-invalid-color: rgba(255, 200, 200, .7);position:relative;margin:5px 0;font-size:var(--chips-text-size);padding:var(--chips-padding);background:var(--chips-bg-color);color:var(--chips-text-color);border:var(--chips-border-size) solid var(--chips-border-color);border-radius:var(--chips-border-radius)}.chips *{box-sizing:border-box}.chips .chips-input{background:var(--chips-bg-color);padding:var(--chips-padding);font-size:var(--chips-text-size);outline:none;border:none;width:100%;-webkit-user-select:none;user-select:none;font-weight:400}.chips .chips-buttons{position:absolute;top:var(--chips-padding-vertical);left:var(--chips-padding-horizontal);max-width:calc(100% - var(--chips-padding-horizontal) * 2);display:flex;gap:5px;overflow:auto;border-radius:var(--chips-border-radius)}.chips .chips-button{background:var(--chipd-btn-color);color:var(--chips-text-color);border:var(--chips-border-size) solid rgba(0,0,0,.2);border-radius:var(--chips-border-radius);padding:var(--chips-padding-vertical) var(--chips-btn-gap) var(--chips-padding-vertical) var(--chips-btn-padding);-webkit-user-select:none;user-select:none;font-weight:400;outline:none;display:flex;gap:var(--chips-btn-gap);justify-content:center;align-items:center;line-height:1.2rem;text-decoration:none}.chips .chips-button.chips-valid{--chipd-btn-color: var(--chips-btn-valid-color) }.chips .chips-button.chips-invalid{--chipd-btn-color: var(--chips-btn-invalid-color) }.chips .chips-picture{width:28px;height:28px;overflow:hidden;margin-right:5px}.chips .chips-picture img{max-height:100%}.chips .chips-label{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chips.disabled{opacity:.75}.chips.disabled .chips-button{padding-right:var(--chips-btn-padding)}.select-option{display:flex;gap:8px;align-items:center;justify-content:center}.select-option .select-option-picture{width:32px;height:32px;overflow:hidden}.select-option .select-option-picture img{max-height:100%}.select-option .select-option-label{flex:1}\n"] }]
|
|
6945
6972
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { value: [{
|
|
6946
6973
|
type: Input
|
|
6947
6974
|
}], multiple: [{
|
|
@@ -7071,7 +7098,7 @@ class DropListComponent {
|
|
|
7071
7098
|
provide: NG_VALUE_ACCESSOR,
|
|
7072
7099
|
useExisting: forwardRef(() => DropListComponent),
|
|
7073
7100
|
multi: true,
|
|
7074
|
-
}], queries: [{ propertyName: "itemTemplate", first: true, predicate: ["itemTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultTemplate let-item=\"item\">\n <div class=\"drop-list-item-label\">\n {{ item | getValue:labelField }}\n </div>\n</ng-template>\n<div class=\"drop-list\"\n #list\n (dragenter)=\"onDragEnter($event, list, this)\"\n (dragleave)=\"onDragLeave($event, list)\"\n (drop)=\"onDrop($event, list)\">\n <div class=\"drop-list-message\"\n [ngClass]=\"{'has-value': value?.length}\"\n [innerHTML]=\"message | translate | safe:'html'\"\n *ngIf=\"message\">\n </div>\n <ng-container *ngFor=\"let id of value; let ix = index\">\n <div class=\"drop-list-item\">\n <ng-template #noItemTemplate>\n <div class=\"drop-list-item-label just-id\">\n {{ id }}\n </div>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"itemTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{item: valueMap[id], id: id, remove: remove}\"\n *ngIf=\"valueMap[id]; else noItemTemplate\"></ng-container>\n <a class=\"remove-item-btn\" (click)=\"remove(ix)\"></a>\n </div>\n </ng-container>\n</div>\n", styles: [".drop-list{--message-size: 20px;--message-color: #7e7e7e;--message-drop-color: #efefef;--remove-bg: var(--primary-color, rgba(0, 0, 0, .2));--remove-color: #ffffff;--remove-size: 18px;--
|
|
7101
|
+
}], queries: [{ propertyName: "itemTemplate", first: true, predicate: ["itemTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultTemplate let-item=\"item\">\n <div class=\"drop-list-item-label\">\n {{ item | getValue:labelField }}\n </div>\n</ng-template>\n<div class=\"drop-list\"\n #list\n (dragenter)=\"onDragEnter($event, list, this)\"\n (dragleave)=\"onDragLeave($event, list)\"\n (drop)=\"onDrop($event, list)\">\n <div class=\"drop-list-message\"\n [ngClass]=\"{'has-value': value?.length}\"\n [innerHTML]=\"message | translate | safe:'html'\"\n *ngIf=\"message\">\n </div>\n <ng-container *ngFor=\"let id of value; let ix = index\">\n <div class=\"drop-list-item\">\n <ng-template #noItemTemplate>\n <div class=\"drop-list-item-label just-id\">\n {{ id }}\n </div>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"itemTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{item: valueMap[id], id: id, remove: remove}\"\n *ngIf=\"valueMap[id]; else noItemTemplate\"></ng-container>\n <a class=\"remove-item-btn\" (click)=\"remove(ix)\"></a>\n </div>\n </ng-container>\n</div>\n", styles: [".drop-list{--message-size: 20px;--message-color: #7e7e7e;--message-drop-color: #efefef;--remove-bg: var(--primary-color, rgba(0, 0, 0, .2));--remove-color: #ffffff;--remove-size: 18px;--btn-distance: 4px;--remove-spacing: 8px;--btn-top-distance: var(--btn-distance);--btn-right-distance: var(--btn-distance);min-height:100px;border:2px #bfbfbf dashed;border-radius:10px;padding:10px;position:relative;display:flex;align-items:flex-start;justify-content:left;gap:10px;background-color:#0000000d;transition:.2s;flex-wrap:wrap}.drop-list .drop-list-message{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;top:0;left:0;pointer-events:none;font-size:var(--message-size);color:var(--message-color);transition:.2s}.drop-list .drop-list-message.has-value{display:none}.drop-list .drop-list-item{position:relative;background:#0003;padding:7px 23px 7px 10px;border-radius:5px;-webkit-user-select:none;user-select:none}.drop-list .drop-list-item-label:not(.just-id){min-width:50px;text-align:center}.drop-list .drop-list-item-label.just-id{max-width:100px;overflow:hidden;text-overflow:ellipsis;color:gray}.drop-list .drop-list-item-delete{font-size:14px;line-height:14px;text-align:center;cursor:pointer;background:#fff;border-radius:2px;height:14px;width:15px;position:absolute;top:4px;right:4px}.drop-list.drop-allowed{background-color:#0003;border-color:gray}.drop-list.drop-allowed .drop-list-message{color:var(--message-drop-color)}.drop-list a.remove-item-btn{--rotation: 45deg;position:absolute;top:var(--btn-top-distance);right:var(--btn-right-distance);width:var(--remove-size);height:var(--remove-size);cursor:pointer;transition:.2s ease;background-color:var(--remove-bg);border-radius:50%}.drop-list a.remove-item-btn:before,.drop-list a.remove-item-btn:after{content:\"\";position:absolute;top:50%;left:50%;width:calc(100% - var(--remove-spacing));transform:translate(-50%,-50%) rotate(var(--rotation));height:1px;background:var(--remove-color);transition:.2s ease}.drop-list a.remove-item-btn:after{--rotation: -45deg}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: GetValuePipe, name: "getValue" }, { kind: "pipe", type: SafeHtmlPipe, name: "safe" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
7075
7102
|
}
|
|
7076
7103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DropListComponent, decorators: [{
|
|
7077
7104
|
type: Component,
|
|
@@ -7079,7 +7106,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
7079
7106
|
provide: NG_VALUE_ACCESSOR,
|
|
7080
7107
|
useExisting: forwardRef(() => DropListComponent),
|
|
7081
7108
|
multi: true,
|
|
7082
|
-
}], template: "<ng-template #defaultTemplate let-item=\"item\">\n <div class=\"drop-list-item-label\">\n {{ item | getValue:labelField }}\n </div>\n</ng-template>\n<div class=\"drop-list\"\n #list\n (dragenter)=\"onDragEnter($event, list, this)\"\n (dragleave)=\"onDragLeave($event, list)\"\n (drop)=\"onDrop($event, list)\">\n <div class=\"drop-list-message\"\n [ngClass]=\"{'has-value': value?.length}\"\n [innerHTML]=\"message | translate | safe:'html'\"\n *ngIf=\"message\">\n </div>\n <ng-container *ngFor=\"let id of value; let ix = index\">\n <div class=\"drop-list-item\">\n <ng-template #noItemTemplate>\n <div class=\"drop-list-item-label just-id\">\n {{ id }}\n </div>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"itemTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{item: valueMap[id], id: id, remove: remove}\"\n *ngIf=\"valueMap[id]; else noItemTemplate\"></ng-container>\n <a class=\"remove-item-btn\" (click)=\"remove(ix)\"></a>\n </div>\n </ng-container>\n</div>\n", styles: [".drop-list{--message-size: 20px;--message-color: #7e7e7e;--message-drop-color: #efefef;--remove-bg: var(--primary-color, rgba(0, 0, 0, .2));--remove-color: #ffffff;--remove-size: 18px;--
|
|
7109
|
+
}], template: "<ng-template #defaultTemplate let-item=\"item\">\n <div class=\"drop-list-item-label\">\n {{ item | getValue:labelField }}\n </div>\n</ng-template>\n<div class=\"drop-list\"\n #list\n (dragenter)=\"onDragEnter($event, list, this)\"\n (dragleave)=\"onDragLeave($event, list)\"\n (drop)=\"onDrop($event, list)\">\n <div class=\"drop-list-message\"\n [ngClass]=\"{'has-value': value?.length}\"\n [innerHTML]=\"message | translate | safe:'html'\"\n *ngIf=\"message\">\n </div>\n <ng-container *ngFor=\"let id of value; let ix = index\">\n <div class=\"drop-list-item\">\n <ng-template #noItemTemplate>\n <div class=\"drop-list-item-label just-id\">\n {{ id }}\n </div>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"itemTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{item: valueMap[id], id: id, remove: remove}\"\n *ngIf=\"valueMap[id]; else noItemTemplate\"></ng-container>\n <a class=\"remove-item-btn\" (click)=\"remove(ix)\"></a>\n </div>\n </ng-container>\n</div>\n", styles: [".drop-list{--message-size: 20px;--message-color: #7e7e7e;--message-drop-color: #efefef;--remove-bg: var(--primary-color, rgba(0, 0, 0, .2));--remove-color: #ffffff;--remove-size: 18px;--btn-distance: 4px;--remove-spacing: 8px;--btn-top-distance: var(--btn-distance);--btn-right-distance: var(--btn-distance);min-height:100px;border:2px #bfbfbf dashed;border-radius:10px;padding:10px;position:relative;display:flex;align-items:flex-start;justify-content:left;gap:10px;background-color:#0000000d;transition:.2s;flex-wrap:wrap}.drop-list .drop-list-message{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;top:0;left:0;pointer-events:none;font-size:var(--message-size);color:var(--message-color);transition:.2s}.drop-list .drop-list-message.has-value{display:none}.drop-list .drop-list-item{position:relative;background:#0003;padding:7px 23px 7px 10px;border-radius:5px;-webkit-user-select:none;user-select:none}.drop-list .drop-list-item-label:not(.just-id){min-width:50px;text-align:center}.drop-list .drop-list-item-label.just-id{max-width:100px;overflow:hidden;text-overflow:ellipsis;color:gray}.drop-list .drop-list-item-delete{font-size:14px;line-height:14px;text-align:center;cursor:pointer;background:#fff;border-radius:2px;height:14px;width:15px;position:absolute;top:4px;right:4px}.drop-list.drop-allowed{background-color:#0003;border-color:gray}.drop-list.drop-allowed .drop-list-message{color:var(--message-drop-color)}.drop-list a.remove-item-btn{--rotation: 45deg;position:absolute;top:var(--btn-top-distance);right:var(--btn-right-distance);width:var(--remove-size);height:var(--remove-size);cursor:pointer;transition:.2s ease;background-color:var(--remove-bg);border-radius:50%}.drop-list a.remove-item-btn:before,.drop-list a.remove-item-btn:after{content:\"\";position:absolute;top:50%;left:50%;width:calc(100% - var(--remove-spacing));transform:translate(-50%,-50%) rotate(var(--rotation));height:1px;background:var(--remove-color);transition:.2s ease}.drop-list a.remove-item-btn:after{--rotation: -45deg}\n"] }]
|
|
7083
7110
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { disabled: [{
|
|
7084
7111
|
type: Input
|
|
7085
7112
|
}], unique: [{
|
|
@@ -7214,11 +7241,11 @@ class PaginationMenuComponent {
|
|
|
7214
7241
|
this.pages = pages;
|
|
7215
7242
|
}
|
|
7216
7243
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PaginationMenuComponent, deps: [{ token: StateService }, { token: PaginationDirective }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7217
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PaginationMenuComponent, isStandalone: false, selector: "pagination-menu", inputs: { maxSize: "maxSize", urlParam: "urlParam", directionLinks: "directionLinks", boundaryLinks: "boundaryLinks" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"
|
|
7244
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PaginationMenuComponent, isStandalone: false, selector: "pagination-menu", inputs: { maxSize: "maxSize", urlParam: "urlParam", directionLinks: "directionLinks", boundaryLinks: "boundaryLinks" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pg-menu\" *ngIf=\"pagination.total > pagination.itemsPerPage\">\n <ul class=\"pg-list\">\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"boundaryLinks\">\n <a class=\"page-link boundary-link previous\" (click)=\"paginate(1)\"></a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"directionLinks\">\n <a class=\"page-link direction-link previous\" (click)=\"paginate(pagination.page - 1)\"></a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{active: pagination.page == page}\" *ngFor=\"let page of pages\">\n <a class=\"page-link\" [ngClass]=\"{active: pagination.page == page}\" (click)=\"paginate(page)\">{{ page }}</a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"directionLinks\">\n <a class=\"page-link direction-link\" (click)=\"paginate(pagination.page + 1)\"></a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"boundaryLinks\">\n <a class=\"page-link boundary-link\" (click)=\"paginate(pagination.maxPage)\"></a>\n </li>\n </ul>\n</div>\n", styles: [".pg-menu{--pg-border-size: var(--border-size, 1px);--pg-bg-color: var(--bg-color, #ffffff);--pg-border-color: var(--border-color, #ced4da);--pg-border-radius: var(--border-radius, 5px);--pg-highlight-color: var(--highlight-color, var(--primary-color, #888888));--pg-highlight-text-color: var(--highlight-text-color, #ffffff);--pg-text-color: var(--text-color, #151515);--pg-arrow-content: \"\";--pg-arrow-size: var(--arrow-size, 6px);--pg-arrow-space: calc(var(--pg-arrow-size) * .5 + 1px);--pg-arrow-color: currentColor;display:flex;align-items:center;justify-content:center;min-width:fit-content;margin:10px}.pg-menu *{box-sizing:border-box}.pg-menu ul.pg-list{margin:0;padding:0;list-style:none;border:var(--pg-border-size) solid var(--pg-border-color);background:var(--pg-bg-color);border-radius:var(--pg-border-radius);overflow:hidden;min-width:fit-content;display:flex}.pg-menu li{color:var(--pg-text-color);font-weight:400;text-align:left;min-width:fit-content;cursor:pointer;border-right:var(--pg-border-size) solid var(--pg-border-color);display:flex;align-items:center}.pg-menu li:last-child{border-right:none}.pg-menu li:not(.disabled):hover,.pg-menu li.active{background-color:var(--pg-highlight-color);color:var(--pg-highlight-text-color)}.pg-menu li.disabled a{cursor:default}.pg-menu a{display:block;min-width:36px;min-height:36px;height:auto;line-height:24px;text-align:center;vertical-align:top;padding:6px 12px;color:inherit}.pg-menu a.boundary-link,.pg-menu a.direction-link{position:relative}.pg-menu a.boundary-link:before,.pg-menu a.boundary-link:after,.pg-menu a.direction-link:before,.pg-menu a.direction-link:after{content:var(--pg-arrow-content);position:absolute;left:50%;top:calc(50% - var(--pg-arrow-size));border-top:var(--pg-arrow-size) solid transparent;border-bottom:var(--pg-arrow-size) solid transparent;border-left:var(--pg-arrow-size) solid var(--pg-arrow-color)}.pg-menu a.direction-link:before{display:none}.pg-menu a.direction-link:after{translate:-50% 0}.pg-menu a.boundary-link:before{translate:-100% 0}.pg-menu a.boundary-link.previous:before,.pg-menu a.boundary-link.previous:after,.pg-menu a.direction-link.previous:before,.pg-menu a.direction-link.previous:after{rotate:180deg}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
7218
7245
|
}
|
|
7219
7246
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PaginationMenuComponent, decorators: [{
|
|
7220
7247
|
type: Component,
|
|
7221
|
-
args: [{ standalone: false, encapsulation: ViewEncapsulation.None, selector: "pagination-menu", template: "<div class=\"
|
|
7248
|
+
args: [{ standalone: false, encapsulation: ViewEncapsulation.None, selector: "pagination-menu", template: "<div class=\"pg-menu\" *ngIf=\"pagination.total > pagination.itemsPerPage\">\n <ul class=\"pg-list\">\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"boundaryLinks\">\n <a class=\"page-link boundary-link previous\" (click)=\"paginate(1)\"></a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"directionLinks\">\n <a class=\"page-link direction-link previous\" (click)=\"paginate(pagination.page - 1)\"></a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{active: pagination.page == page}\" *ngFor=\"let page of pages\">\n <a class=\"page-link\" [ngClass]=\"{active: pagination.page == page}\" (click)=\"paginate(page)\">{{ page }}</a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"directionLinks\">\n <a class=\"page-link direction-link\" (click)=\"paginate(pagination.page + 1)\"></a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"boundaryLinks\">\n <a class=\"page-link boundary-link\" (click)=\"paginate(pagination.maxPage)\"></a>\n </li>\n </ul>\n</div>\n", styles: [".pg-menu{--pg-border-size: var(--border-size, 1px);--pg-bg-color: var(--bg-color, #ffffff);--pg-border-color: var(--border-color, #ced4da);--pg-border-radius: var(--border-radius, 5px);--pg-highlight-color: var(--highlight-color, var(--primary-color, #888888));--pg-highlight-text-color: var(--highlight-text-color, #ffffff);--pg-text-color: var(--text-color, #151515);--pg-arrow-content: \"\";--pg-arrow-size: var(--arrow-size, 6px);--pg-arrow-space: calc(var(--pg-arrow-size) * .5 + 1px);--pg-arrow-color: currentColor;display:flex;align-items:center;justify-content:center;min-width:fit-content;margin:10px}.pg-menu *{box-sizing:border-box}.pg-menu ul.pg-list{margin:0;padding:0;list-style:none;border:var(--pg-border-size) solid var(--pg-border-color);background:var(--pg-bg-color);border-radius:var(--pg-border-radius);overflow:hidden;min-width:fit-content;display:flex}.pg-menu li{color:var(--pg-text-color);font-weight:400;text-align:left;min-width:fit-content;cursor:pointer;border-right:var(--pg-border-size) solid var(--pg-border-color);display:flex;align-items:center}.pg-menu li:last-child{border-right:none}.pg-menu li:not(.disabled):hover,.pg-menu li.active{background-color:var(--pg-highlight-color);color:var(--pg-highlight-text-color)}.pg-menu li.disabled a{cursor:default}.pg-menu a{display:block;min-width:36px;min-height:36px;height:auto;line-height:24px;text-align:center;vertical-align:top;padding:6px 12px;color:inherit}.pg-menu a.boundary-link,.pg-menu a.direction-link{position:relative}.pg-menu a.boundary-link:before,.pg-menu a.boundary-link:after,.pg-menu a.direction-link:before,.pg-menu a.direction-link:after{content:var(--pg-arrow-content);position:absolute;left:50%;top:calc(50% - var(--pg-arrow-size));border-top:var(--pg-arrow-size) solid transparent;border-bottom:var(--pg-arrow-size) solid transparent;border-left:var(--pg-arrow-size) solid var(--pg-arrow-color)}.pg-menu a.direction-link:before{display:none}.pg-menu a.direction-link:after{translate:-50% 0}.pg-menu a.boundary-link:before{translate:-100% 0}.pg-menu a.boundary-link.previous:before,.pg-menu a.boundary-link.previous:after,.pg-menu a.direction-link.previous:before,.pg-menu a.direction-link.previous:after{rotate:180deg}\n"] }]
|
|
7222
7249
|
}], ctorParameters: () => [{ type: StateService }, { type: PaginationDirective }], propDecorators: { maxSize: [{
|
|
7223
7250
|
type: Input
|
|
7224
7251
|
}], urlParam: [{
|
|
@@ -8164,8 +8191,13 @@ class UploadComponent {
|
|
|
8164
8191
|
get http() {
|
|
8165
8192
|
return this.api.client;
|
|
8166
8193
|
}
|
|
8167
|
-
|
|
8194
|
+
get root() {
|
|
8195
|
+
this.rootElem = this.rootElem || getRoot(this.element.nativeElement);
|
|
8196
|
+
return this.rootElem;
|
|
8197
|
+
}
|
|
8198
|
+
constructor(cdr, element, api, toaster) {
|
|
8168
8199
|
this.cdr = cdr;
|
|
8200
|
+
this.element = element;
|
|
8169
8201
|
this.api = api;
|
|
8170
8202
|
this.toaster = toaster;
|
|
8171
8203
|
this.value = null;
|
|
@@ -8179,40 +8211,46 @@ class UploadComponent {
|
|
|
8179
8211
|
};
|
|
8180
8212
|
this.onTouched = () => {
|
|
8181
8213
|
};
|
|
8182
|
-
this.remove = index => {
|
|
8183
|
-
if (this.multiple) {
|
|
8184
|
-
const current = Array.from(this.value || []);
|
|
8185
|
-
current.splice(index, 1);
|
|
8186
|
-
this.writeValue(current);
|
|
8187
|
-
this.onRemove.emit(current);
|
|
8188
|
-
}
|
|
8189
|
-
this.writeValue(null);
|
|
8190
|
-
this.onRemove.emit([]);
|
|
8191
|
-
};
|
|
8192
8214
|
}
|
|
8193
8215
|
onDragEnter(ev) {
|
|
8194
|
-
|
|
8195
|
-
.filter(t => t.kind == "file")
|
|
8196
|
-
.map(t => t.type.toLowerCase());
|
|
8197
|
-
types.push(...Array.from(ev.dataTransfer.files || []).map(f => f.type.toLowerCase()));
|
|
8198
|
-
if (!types.some(type => ArrayUtils.has(this.acceptTypes, type))) {
|
|
8216
|
+
if (this.disabled) {
|
|
8199
8217
|
ev.preventDefault();
|
|
8200
8218
|
return;
|
|
8201
8219
|
}
|
|
8202
|
-
ev.dataTransfer
|
|
8203
|
-
|
|
8204
|
-
|
|
8220
|
+
const transfer = ev.dataTransfer;
|
|
8221
|
+
let length = transfer.items?.length ?? 0;
|
|
8222
|
+
for (let i = 0; i < length; i++) {
|
|
8223
|
+
const item = transfer.items[i];
|
|
8224
|
+
if (this.checkType(item.type)) {
|
|
8225
|
+
ev.dataTransfer.effectAllowed = "copy";
|
|
8226
|
+
ev.dataTransfer.dropEffect = "copy";
|
|
8227
|
+
this.dropAllowed = true;
|
|
8228
|
+
return;
|
|
8229
|
+
}
|
|
8230
|
+
}
|
|
8231
|
+
length = transfer.files?.length ?? 0;
|
|
8232
|
+
for (let i = 0; i < length; i++) {
|
|
8233
|
+
const file = transfer.files[i];
|
|
8234
|
+
if (this.checkType(file.type)) {
|
|
8235
|
+
ev.dataTransfer.effectAllowed = "copy";
|
|
8236
|
+
ev.dataTransfer.dropEffect = "copy";
|
|
8237
|
+
this.dropAllowed = true;
|
|
8238
|
+
return;
|
|
8239
|
+
}
|
|
8240
|
+
}
|
|
8241
|
+
ev.preventDefault();
|
|
8205
8242
|
}
|
|
8206
8243
|
onDrop() {
|
|
8207
8244
|
this.dropAllowed = false;
|
|
8208
8245
|
}
|
|
8209
8246
|
ngOnChanges() {
|
|
8210
8247
|
this.accept = this.accept || "";
|
|
8211
|
-
this.acceptTypes = ObjectUtils.
|
|
8212
|
-
? this.accept.
|
|
8248
|
+
this.acceptTypes = ObjectUtils.isStringWithValue(this.accept)
|
|
8249
|
+
? this.accept.split(",")
|
|
8213
8250
|
: (ObjectUtils.isArray(this.accept) ? this.accept : []);
|
|
8214
|
-
this.
|
|
8215
|
-
this.
|
|
8251
|
+
this.acceptTypes = this.acceptTypes.map(t => t.split("/").pop().replace(/\./, ""));
|
|
8252
|
+
this.acceptAttr = this.acceptTypes.map(t => `.${t}`).join(",");
|
|
8253
|
+
this.isImage = ArrayUtils.has(this.acceptTypes, "png", "jpg", "jpeg", "webp", "gif");
|
|
8216
8254
|
this.cdr.markForCheck();
|
|
8217
8255
|
}
|
|
8218
8256
|
registerOnChange(fn) {
|
|
@@ -8231,9 +8269,19 @@ class UploadComponent {
|
|
|
8231
8269
|
this.disabled = val === true;
|
|
8232
8270
|
this.cdr.markForCheck();
|
|
8233
8271
|
}
|
|
8272
|
+
removeItem(index) {
|
|
8273
|
+
if (this.multiple) {
|
|
8274
|
+
const current = Array.from(this.value || []);
|
|
8275
|
+
current.splice(index, 1);
|
|
8276
|
+
this.writeValue(current);
|
|
8277
|
+
this.onRemove.emit(current);
|
|
8278
|
+
return;
|
|
8279
|
+
}
|
|
8280
|
+
this.writeValue(null);
|
|
8281
|
+
this.onRemove.emit([]);
|
|
8282
|
+
}
|
|
8234
8283
|
onInputClick(ev) {
|
|
8235
|
-
|
|
8236
|
-
if (ev.target !== top && !this.processing)
|
|
8284
|
+
if (this.uploadBtn.contains(this.root.activeElement) && !this.processing)
|
|
8237
8285
|
return;
|
|
8238
8286
|
ev.preventDefault();
|
|
8239
8287
|
}
|
|
@@ -8251,15 +8299,9 @@ class UploadComponent {
|
|
|
8251
8299
|
const files = [];
|
|
8252
8300
|
for (let i = 0; i < length; i++) {
|
|
8253
8301
|
const file = input.files.item(i);
|
|
8254
|
-
if (this.
|
|
8302
|
+
if (this.checkType(file.type)) {
|
|
8255
8303
|
files.push(file);
|
|
8256
|
-
continue;
|
|
8257
8304
|
}
|
|
8258
|
-
const type = file.type.toLowerCase();
|
|
8259
|
-
const ext = FileUtils.getExtension(file);
|
|
8260
|
-
if (!ArrayUtils.has(this.acceptTypes, type, ext))
|
|
8261
|
-
continue;
|
|
8262
|
-
files.push(file);
|
|
8263
8305
|
}
|
|
8264
8306
|
if (files.length == 0) {
|
|
8265
8307
|
this.toaster.error("message.invalid-files.error");
|
|
@@ -8267,7 +8309,9 @@ class UploadComponent {
|
|
|
8267
8309
|
}
|
|
8268
8310
|
this.processFiles(this.multiple ? files : files.slice(0, 1)).then(results => {
|
|
8269
8311
|
const ids = results.map(t => t.file || t._id || t.id);
|
|
8270
|
-
this.writeValue(this.multiple
|
|
8312
|
+
this.writeValue(this.multiple
|
|
8313
|
+
? Array.from(this.value).concat(ids)
|
|
8314
|
+
: (ids[0] || this.value));
|
|
8271
8315
|
this.onUploaded.emit(results);
|
|
8272
8316
|
});
|
|
8273
8317
|
input.value = "";
|
|
@@ -8284,16 +8328,10 @@ class UploadComponent {
|
|
|
8284
8328
|
return null;
|
|
8285
8329
|
if (url.startsWith("data:"))
|
|
8286
8330
|
return url;
|
|
8287
|
-
const baseUrl = this.baseUrl;
|
|
8331
|
+
const baseUrl = this.baseUrl || this.api.url("assets");
|
|
8288
8332
|
const query = this.isImage ? `?type=preview` : ``;
|
|
8289
|
-
if (!baseUrl) {
|
|
8290
|
-
return `${url}${query}`;
|
|
8291
|
-
}
|
|
8292
8333
|
return `${baseUrl}/${url}${query}`;
|
|
8293
8334
|
}
|
|
8294
|
-
getBgUrl(image) {
|
|
8295
|
-
return `url('${this.getUrl(image)}')`;
|
|
8296
|
-
}
|
|
8297
8335
|
async processFiles(files) {
|
|
8298
8336
|
if (this.processing)
|
|
8299
8337
|
return null;
|
|
@@ -8312,7 +8350,7 @@ class UploadComponent {
|
|
|
8312
8350
|
progress: 0
|
|
8313
8351
|
};
|
|
8314
8352
|
process.promise = FileUtils.getFilePreview(file).then(preview => {
|
|
8315
|
-
process.preview =
|
|
8353
|
+
process.preview = preview;
|
|
8316
8354
|
this.fileImageCache.set(file, preview);
|
|
8317
8355
|
this.cdr.detectChanges();
|
|
8318
8356
|
});
|
|
@@ -8353,12 +8391,18 @@ class UploadComponent {
|
|
|
8353
8391
|
this.cdr.detectChanges();
|
|
8354
8392
|
return results.filter(r => r !== null);
|
|
8355
8393
|
}
|
|
8356
|
-
|
|
8357
|
-
|
|
8394
|
+
checkType(type) {
|
|
8395
|
+
if (this.acceptTypes.length == 0)
|
|
8396
|
+
return true;
|
|
8397
|
+
type = type.split("/").pop().replace(/\./g, "");
|
|
8398
|
+
return this.acceptTypes.includes(type);
|
|
8399
|
+
}
|
|
8400
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UploadComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: API_SERVICE }, { token: TOASTER_SERVICE }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8401
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: UploadComponent, isStandalone: false, selector: "upload", inputs: { value: "value", disabled: "disabled", inline: "inline", accept: "accept", baseUrl: "baseUrl", message: "message", multiple: "multiple", buttonText: "buttonText", makeUpload: "makeUpload", preProcess: "preProcess" }, outputs: { onUploaded: "onUploaded", onRemove: "onRemove" }, providers: [{
|
|
8358
8402
|
provide: NG_VALUE_ACCESSOR,
|
|
8359
8403
|
useExisting: forwardRef(() => UploadComponent),
|
|
8360
8404
|
multi: true,
|
|
8361
|
-
}],
|
|
8405
|
+
}], viewQueries: [{ propertyName: "uploadBtn", first: true, predicate: ["uploadBtn"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #itemBgTemplate let-bg=\"bg\">\n @if (bg) {\n <div class=\"upload-item-bg\" [ngStyle]=\"{backgroundImage: `url('${bg}')`}\">\n <div>\n <img alt=\"item image\" [src]=\"bg | safe: 'url'\" />\n </div>\n </div>\n }\n</ng-template>\n<ng-template #itemTemplate let-item=\"item\" let-index=\"index\">\n <div class=\"upload-item\">\n <ng-container [ngTemplateOutlet]=\"itemBgTemplate\"\n [ngTemplateOutletContext]=\"{bg: isImage || (item | isType: 'file') ? getUrl(item) : null}\">\n </ng-container>\n @if (!disabled) {\n <close-btn class=\"remove-item-btn\" (click)=\"removeItem(index)\"></close-btn>\n }\n<!-- <btn size=\"small\" class=\"download-item-btn\" icon=\"download\"></btn>-->\n </div>\n</ng-template>\n\n<div class=\"upload\" [ngClass]=\"{disabled: disabled}\">\n <div class=\"upload-input\" [ngClass]=\"{'drop-allowed': dropAllowed}\">\n <input type=\"file\"\n #input\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [accept]=\"acceptAttr\"\n (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDrop()\"\n (drop)=\"onDrop()\"\n (click)=\"onInputClick($event)\"\n (blur)=\"onTouched($event)\"\n (change)=\"onInputChange($event)\"/>\n @if (message) {\n <div class=\"upload-message\"\n [ngClass]=\"{'has-value': $any(value)?.length}\"\n [innerHTML]=\"message | translate | safe:'html'\">\n </div>\n }\n <div class=\"upload-container\">\n\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: value, index: 0}\"\n *ngIf=\"!multiple && value\">\n </ng-container>\n <ng-container *ngIf=\"multiple\">\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: item, index: ix}\"\n *ngFor=\"let item of $any(value); let ix = index\">\n </ng-container>\n </ng-container>\n\n <div class=\"upload-item\" *ngFor=\"let proc of processing\">\n <ng-container [ngTemplateOutlet]=\"itemBgTemplate\"\n [ngTemplateOutletContext]=\"{bg: proc.preview}\">\n </ng-container>\n <div class=\"upload-progress\">\n <div class=\"upload-progress-num\">{{ proc.progress }}%</div>\n <div class=\"upload-progress-bar\" [ngStyle]=\"{width: proc.progress + '%'}\">\n\n </div>\n </div>\n </div>\n\n </div>\n @if (!disabled) {\n <btn class=\"upload-btn\" #uploadBtn [label]=\"buttonText\" (click)=\"input.click()\"></btn>\n }\n </div>\n</div>\n", styles: [".upload{--progress-bg: var(--primary-color, var(--mat-sys-primary, black));--progress-text: var(--text-color, var(--mat-sys-on-primary, white));--bg-lightness: 85%;--item-size: 120px;--item-radius: 5px;--message-size: 20px;--message-color: #7e7e7e;--message-drop-color: #474747;--btn-distance: 3px;--btn-top-distance: var(--btn-distance);--btn-left-distance: var(--btn-distance);--btn-right-distance: var(--btn-distance);margin:5px 0}.upload.disabled{--bg-lightness: 75%}.upload input[type=file]{display:block;position:absolute;inset:0;opacity:0}.upload input[type=file]::file-selector-button{width:100%;height:100%}.upload .upload-input{width:100%;border:2px rgba(0,0,0,.25) dashed;border-radius:var(--item-radius);background-color:hsl(0,0%,var(--bg-lightness));transition:.2s;flex-wrap:wrap;position:relative;padding:5px}.upload .upload-input .upload-message{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;top:0;left:0;pointer-events:none;font-size:var(--message-size);color:var(--message-color);transition:.2s}.upload .upload-input .upload-message.has-value{display:none}.upload .upload-input .upload-container{position:relative;pointer-events:none;min-height:var(--item-size);display:flex;gap:10px;flex-wrap:wrap;margin-bottom:8px}.upload .upload-input .upload-item{position:relative;pointer-events:auto;width:var(--item-size);height:var(--item-size);border-radius:var(--item-radius);border:2px solid white;overflow:hidden;display:flex;align-items:center;justify-content:center}.upload .upload-input .upload-item-bg{background:#fff center center no-repeat;background-size:cover;position:absolute;inset:0}.upload .upload-input .upload-item-bg div{width:100%;height:100%;display:flex;justify-content:center;align-items:center;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}.upload .upload-input .upload-item-bg img{max-width:100%;max-height:100%;object-fit:contain;background:#ffffffbf}.upload .upload-input .upload-progress{position:relative;width:90%;height:15px;border:1px solid darkgrey;background:#ffffff80}.upload .upload-input .upload-progress-bar{position:absolute;height:15px;background:var(--progress-bg);top:0}.upload .upload-input .upload-progress-num{position:relative;z-index:1;font-size:12px;line-height:15px;text-align:center;color:var(--progress-text)}.upload .upload-input.drop-allowed{--bg-lightness: 95%}.upload .upload-input.drop-allowed .upload-message{color:var(--message-drop-color)}.upload .upload-btn{position:relative;margin-top:5px;width:fit-content;display:block}.upload .remove-item-btn{position:absolute;top:var(--btn-top-distance);right:var(--btn-right-distance)}.upload .download-item-btn{position:absolute;top:var(--btn-top-distance);left:var(--btn-left-distance)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: BtnComponent, selector: "btn", inputs: ["label", "tooltip", "icon", "disabled", "type", "size"] }, { kind: "component", type: CloseBtnComponent, selector: "close-btn" }, { kind: "pipe", type: IsTypePipe, name: "isType" }, { kind: "pipe", type: SafeHtmlPipe, name: "safe" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
8362
8406
|
}
|
|
8363
8407
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UploadComponent, decorators: [{
|
|
8364
8408
|
type: Component,
|
|
@@ -8366,8 +8410,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
8366
8410
|
provide: NG_VALUE_ACCESSOR,
|
|
8367
8411
|
useExisting: forwardRef(() => UploadComponent),
|
|
8368
8412
|
multi: true,
|
|
8369
|
-
}], template: "<ng-template #
|
|
8370
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
8413
|
+
}], template: "<ng-template #itemBgTemplate let-bg=\"bg\">\n @if (bg) {\n <div class=\"upload-item-bg\" [ngStyle]=\"{backgroundImage: `url('${bg}')`}\">\n <div>\n <img alt=\"item image\" [src]=\"bg | safe: 'url'\" />\n </div>\n </div>\n }\n</ng-template>\n<ng-template #itemTemplate let-item=\"item\" let-index=\"index\">\n <div class=\"upload-item\">\n <ng-container [ngTemplateOutlet]=\"itemBgTemplate\"\n [ngTemplateOutletContext]=\"{bg: isImage || (item | isType: 'file') ? getUrl(item) : null}\">\n </ng-container>\n @if (!disabled) {\n <close-btn class=\"remove-item-btn\" (click)=\"removeItem(index)\"></close-btn>\n }\n<!-- <btn size=\"small\" class=\"download-item-btn\" icon=\"download\"></btn>-->\n </div>\n</ng-template>\n\n<div class=\"upload\" [ngClass]=\"{disabled: disabled}\">\n <div class=\"upload-input\" [ngClass]=\"{'drop-allowed': dropAllowed}\">\n <input type=\"file\"\n #input\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [accept]=\"acceptAttr\"\n (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDrop()\"\n (drop)=\"onDrop()\"\n (click)=\"onInputClick($event)\"\n (blur)=\"onTouched($event)\"\n (change)=\"onInputChange($event)\"/>\n @if (message) {\n <div class=\"upload-message\"\n [ngClass]=\"{'has-value': $any(value)?.length}\"\n [innerHTML]=\"message | translate | safe:'html'\">\n </div>\n }\n <div class=\"upload-container\">\n\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: value, index: 0}\"\n *ngIf=\"!multiple && value\">\n </ng-container>\n <ng-container *ngIf=\"multiple\">\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: item, index: ix}\"\n *ngFor=\"let item of $any(value); let ix = index\">\n </ng-container>\n </ng-container>\n\n <div class=\"upload-item\" *ngFor=\"let proc of processing\">\n <ng-container [ngTemplateOutlet]=\"itemBgTemplate\"\n [ngTemplateOutletContext]=\"{bg: proc.preview}\">\n </ng-container>\n <div class=\"upload-progress\">\n <div class=\"upload-progress-num\">{{ proc.progress }}%</div>\n <div class=\"upload-progress-bar\" [ngStyle]=\"{width: proc.progress + '%'}\">\n\n </div>\n </div>\n </div>\n\n </div>\n @if (!disabled) {\n <btn class=\"upload-btn\" #uploadBtn [label]=\"buttonText\" (click)=\"input.click()\"></btn>\n }\n </div>\n</div>\n", styles: [".upload{--progress-bg: var(--primary-color, var(--mat-sys-primary, black));--progress-text: var(--text-color, var(--mat-sys-on-primary, white));--bg-lightness: 85%;--item-size: 120px;--item-radius: 5px;--message-size: 20px;--message-color: #7e7e7e;--message-drop-color: #474747;--btn-distance: 3px;--btn-top-distance: var(--btn-distance);--btn-left-distance: var(--btn-distance);--btn-right-distance: var(--btn-distance);margin:5px 0}.upload.disabled{--bg-lightness: 75%}.upload input[type=file]{display:block;position:absolute;inset:0;opacity:0}.upload input[type=file]::file-selector-button{width:100%;height:100%}.upload .upload-input{width:100%;border:2px rgba(0,0,0,.25) dashed;border-radius:var(--item-radius);background-color:hsl(0,0%,var(--bg-lightness));transition:.2s;flex-wrap:wrap;position:relative;padding:5px}.upload .upload-input .upload-message{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;top:0;left:0;pointer-events:none;font-size:var(--message-size);color:var(--message-color);transition:.2s}.upload .upload-input .upload-message.has-value{display:none}.upload .upload-input .upload-container{position:relative;pointer-events:none;min-height:var(--item-size);display:flex;gap:10px;flex-wrap:wrap;margin-bottom:8px}.upload .upload-input .upload-item{position:relative;pointer-events:auto;width:var(--item-size);height:var(--item-size);border-radius:var(--item-radius);border:2px solid white;overflow:hidden;display:flex;align-items:center;justify-content:center}.upload .upload-input .upload-item-bg{background:#fff center center no-repeat;background-size:cover;position:absolute;inset:0}.upload .upload-input .upload-item-bg div{width:100%;height:100%;display:flex;justify-content:center;align-items:center;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}.upload .upload-input .upload-item-bg img{max-width:100%;max-height:100%;object-fit:contain;background:#ffffffbf}.upload .upload-input .upload-progress{position:relative;width:90%;height:15px;border:1px solid darkgrey;background:#ffffff80}.upload .upload-input .upload-progress-bar{position:absolute;height:15px;background:var(--progress-bg);top:0}.upload .upload-input .upload-progress-num{position:relative;z-index:1;font-size:12px;line-height:15px;text-align:center;color:var(--progress-text)}.upload .upload-input.drop-allowed{--bg-lightness: 95%}.upload .upload-input.drop-allowed .upload-message{color:var(--message-drop-color)}.upload .upload-btn{position:relative;margin-top:5px;width:fit-content;display:block}.upload .remove-item-btn{position:absolute;top:var(--btn-top-distance);right:var(--btn-right-distance)}.upload .download-item-btn{position:absolute;top:var(--btn-top-distance);left:var(--btn-left-distance)}\n"] }]
|
|
8414
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
8371
8415
|
type: Inject,
|
|
8372
8416
|
args: [API_SERVICE]
|
|
8373
8417
|
}] }, { type: undefined, decorators: [{
|
|
@@ -8397,9 +8441,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
8397
8441
|
type: Output
|
|
8398
8442
|
}], onRemove: [{
|
|
8399
8443
|
type: Output
|
|
8400
|
-
}],
|
|
8401
|
-
type:
|
|
8402
|
-
args: ["
|
|
8444
|
+
}], uploadBtn: [{
|
|
8445
|
+
type: ViewChild,
|
|
8446
|
+
args: ["uploadBtn"]
|
|
8403
8447
|
}] } });
|
|
8404
8448
|
|
|
8405
8449
|
// --- Pipes ---
|
|
@@ -8463,6 +8507,7 @@ const components = [
|
|
|
8463
8507
|
BtnComponent,
|
|
8464
8508
|
BtnDefaultComponent,
|
|
8465
8509
|
ChipsComponent,
|
|
8510
|
+
CloseBtnComponent,
|
|
8466
8511
|
DropListComponent,
|
|
8467
8512
|
DropdownBoxComponent,
|
|
8468
8513
|
DynamicTableComponent,
|
|
@@ -8861,8 +8906,8 @@ class NgxUtilsModule {
|
|
|
8861
8906
|
constructor() {
|
|
8862
8907
|
}
|
|
8863
8908
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NgxUtilsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8864
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: NgxUtilsModule, declarations: [ChunkPipe, EntriesPipe, ExtraItemPropertiesPipe, FilterPipe, FindPipe, FormatNumberPipe, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplatePipe, GroupByPipe, IncludesPipe, IsTypePipe, JoinPipe, KeysPipe, MapPipe, MaxPipe, MinPipe, PopPipe, ReducePipe, RemapPipe, ReplacePipe, ReversePipe, RoundPipe, SafeHtmlPipe, ShiftPipe, SplitPipe, TranslatePipe, ValuesPipe, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, BackgroundDirective, ComponentLoaderDirective, DynamicTableTemplateDirective, GlobalTemplateDirective, IconDirective, NgxTemplateOutletDirective, PaginationDirective, PaginationItemDirective, ResourceIfDirective, StickyDirective, StickyClassDirective, DropdownDirective, DropdownContentDirective, DropdownToggleDirective, TabsItemDirective, TabsTemplateDirective, UnorderedListItemDirective, UnorderedListTemplateDirective, BtnComponent, BtnDefaultComponent, ChipsComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent], imports: [CommonModule,
|
|
8865
|
-
FormsModule], exports: [ChunkPipe, EntriesPipe, ExtraItemPropertiesPipe, FilterPipe, FindPipe, FormatNumberPipe, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplatePipe, GroupByPipe, IncludesPipe, IsTypePipe, JoinPipe, KeysPipe, MapPipe, MaxPipe, MinPipe, PopPipe, ReducePipe, RemapPipe, ReplacePipe, ReversePipe, RoundPipe, SafeHtmlPipe, ShiftPipe, SplitPipe, TranslatePipe, ValuesPipe, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, BackgroundDirective, ComponentLoaderDirective, DynamicTableTemplateDirective, GlobalTemplateDirective, IconDirective, NgxTemplateOutletDirective, PaginationDirective, PaginationItemDirective, ResourceIfDirective, StickyDirective, StickyClassDirective, DropdownDirective, DropdownContentDirective, DropdownToggleDirective, TabsItemDirective, TabsTemplateDirective, UnorderedListItemDirective, UnorderedListTemplateDirective, BtnComponent, BtnDefaultComponent, ChipsComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent, FormsModule] }); }
|
|
8909
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: NgxUtilsModule, declarations: [ChunkPipe, EntriesPipe, ExtraItemPropertiesPipe, FilterPipe, FindPipe, FormatNumberPipe, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplatePipe, GroupByPipe, IncludesPipe, IsTypePipe, JoinPipe, KeysPipe, MapPipe, MaxPipe, MinPipe, PopPipe, ReducePipe, RemapPipe, ReplacePipe, ReversePipe, RoundPipe, SafeHtmlPipe, ShiftPipe, SplitPipe, TranslatePipe, ValuesPipe, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, BackgroundDirective, ComponentLoaderDirective, DynamicTableTemplateDirective, GlobalTemplateDirective, IconDirective, NgxTemplateOutletDirective, PaginationDirective, PaginationItemDirective, ResourceIfDirective, StickyDirective, StickyClassDirective, DropdownDirective, DropdownContentDirective, DropdownToggleDirective, TabsItemDirective, TabsTemplateDirective, UnorderedListItemDirective, UnorderedListTemplateDirective, BtnComponent, BtnDefaultComponent, ChipsComponent, CloseBtnComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent], imports: [CommonModule,
|
|
8910
|
+
FormsModule], exports: [ChunkPipe, EntriesPipe, ExtraItemPropertiesPipe, FilterPipe, FindPipe, FormatNumberPipe, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplatePipe, GroupByPipe, IncludesPipe, IsTypePipe, JoinPipe, KeysPipe, MapPipe, MaxPipe, MinPipe, PopPipe, ReducePipe, RemapPipe, ReplacePipe, ReversePipe, RoundPipe, SafeHtmlPipe, ShiftPipe, SplitPipe, TranslatePipe, ValuesPipe, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, BackgroundDirective, ComponentLoaderDirective, DynamicTableTemplateDirective, GlobalTemplateDirective, IconDirective, NgxTemplateOutletDirective, PaginationDirective, PaginationItemDirective, ResourceIfDirective, StickyDirective, StickyClassDirective, DropdownDirective, DropdownContentDirective, DropdownToggleDirective, TabsItemDirective, TabsTemplateDirective, UnorderedListItemDirective, UnorderedListTemplateDirective, BtnComponent, BtnDefaultComponent, ChipsComponent, CloseBtnComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent, FormsModule] }); }
|
|
8866
8911
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NgxUtilsModule, providers: pipes, imports: [CommonModule,
|
|
8867
8912
|
FormsModule, FormsModule] }); }
|
|
8868
8913
|
}
|
|
@@ -8892,5 +8937,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
8892
8937
|
* Generated bundle index. Do not edit.
|
|
8893
8938
|
*/
|
|
8894
8939
|
|
|
8895
|
-
export { API_SERVICE, APP_BASE_URL, AUTH_SERVICE, AclService, AjaxRequestHandler, ApiService, ArrayUtils, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, AuthGuard, BASE_CONFIG, BUTTON_TYPE, BackgroundDirective, BaseDialogService, BaseHttpClient, BaseHttpService, BaseToasterService, BtnComponent, BtnDefaultComponent, CONFIG_SERVICE, CacheService, CanvasColor, CanvasUtils, ChipsComponent, ChunkPipe, Circle, ComponentLoaderDirective, ComponentLoaderService, ConfigService, DIALOG_SERVICE, DateUtils, DragDropEventPlugin, DropListComponent, DropdownBoxComponent, DropdownContentDirective, DropdownDirective, DropdownToggleDirective, DynamicTableComponent, DynamicTableTemplateDirective, ERROR_HANDLER, EXPRESS_REQUEST, EntriesPipe, ErrorHandlerService, EventsService, ExtraItemPropertiesPipe, FactoryDependencies, FakeModuleComponent, FileSystemEntry, FileUtils, FilterPipe, FindPipe, ForbiddenZone, FormatNumberPipe, FormatterService, GenericValue, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplateDirective, GlobalTemplatePipe, GlobalTemplateService, GroupByPipe, ICON_MAP, ICON_SERVICE, ICON_TYPE, IConfiguration, IconComponent, IconDefaultComponent, IconDirective, IconService, IncludesPipe, Initializer, InteractiveCanvasComponent, InteractiveCircleComponent, InteractiveItemComponent, InteractiveRectComponent, IsTypePipe, JSONfn, JoinPipe, KeysPipe, LANGUAGE_SERVICE, LanguageService, LoaderUtils, LocalHttpService, MapPipe, MathUtils, MaxPipe, MinPipe, NgxTemplateOutletDirective, NgxUtilsModule, OPTIONS_TOKEN, ObjectType, ObjectUtils, ObservableUtils, OpenApiService, PROMISE_SERVICE, PaginationDirective, PaginationItemContext, PaginationItemDirective, PaginationMenuComponent, Point, PopPipe, PromiseService, RESIZE_DELAY, RESIZE_STRATEGY, ROOT_ELEMENT, Rect, ReducePipe, ReflectUtils, RemapPipe, ReplacePipe, ResizeEventPlugin, ResourceIfContext, ResourceIfDirective, ReversePipe, RoundPipe, SCRIPT_PARAMS, SafeHtmlPipe, ScrollEventPlugin, SetUtils, ShiftPipe, SocketClient, SocketService, SplitPipe, StateService, StaticAuthService, StaticLanguageService, StickyClassDirective, StickyDirective, StorageMode, StorageService, StringUtils, TOASTER_SERVICE, TabsComponent, TabsItemDirective, TabsTemplateDirective, TimerUtils, TranslatePipe, TranslatedUrlSerializer, UniqueUtils, UniversalService, UnorderedListComponent, UnorderedListItemDirective, UnorderedListTemplateDirective, UploadComponent, ValuedPromise, ValuesPipe, Vector, WASI_IMPLEMENTATION, WasmService, cachedFactory, cancelablePromise, checkTransitions, computedPrevious, cssStyles, cssVariables, getComponentDef, getCssVariables, hashCode, impatientPromise, isBrowser, parseSelector, provideEntryComponents, provideWithOptions, selectorMatchesList, switchClass };
|
|
8940
|
+
export { API_SERVICE, APP_BASE_URL, AUTH_SERVICE, AclService, AjaxRequestHandler, ApiService, ArrayUtils, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, AuthGuard, BASE_CONFIG, BUTTON_TYPE, BackgroundDirective, BaseDialogService, BaseHttpClient, BaseHttpService, BaseToasterService, BtnComponent, BtnDefaultComponent, CONFIG_SERVICE, CacheService, CanvasColor, CanvasUtils, ChipsComponent, ChunkPipe, Circle, CloseBtnComponent, ComponentLoaderDirective, ComponentLoaderService, ConfigService, DIALOG_SERVICE, DateUtils, DragDropEventPlugin, DropListComponent, DropdownBoxComponent, DropdownContentDirective, DropdownDirective, DropdownToggleDirective, DynamicTableComponent, DynamicTableTemplateDirective, ERROR_HANDLER, EXPRESS_REQUEST, EntriesPipe, ErrorHandlerService, EventsService, ExtraItemPropertiesPipe, FactoryDependencies, FakeModuleComponent, FileSystemEntry, FileUtils, FilterPipe, FindPipe, ForbiddenZone, FormatNumberPipe, FormatterService, GenericValue, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplateDirective, GlobalTemplatePipe, GlobalTemplateService, GroupByPipe, ICON_MAP, ICON_SERVICE, ICON_TYPE, IConfiguration, IconComponent, IconDefaultComponent, IconDirective, IconService, IncludesPipe, Initializer, InteractiveCanvasComponent, InteractiveCircleComponent, InteractiveItemComponent, InteractiveRectComponent, IsTypePipe, JSONfn, JoinPipe, KeysPipe, LANGUAGE_SERVICE, LanguageService, LoaderUtils, LocalHttpService, MapPipe, MathUtils, MaxPipe, MinPipe, NgxTemplateOutletDirective, NgxUtilsModule, OPTIONS_TOKEN, ObjectType, ObjectUtils, ObservableUtils, OpenApiService, PROMISE_SERVICE, PaginationDirective, PaginationItemContext, PaginationItemDirective, PaginationMenuComponent, Point, PopPipe, PromiseService, RESIZE_DELAY, RESIZE_STRATEGY, ROOT_ELEMENT, Rect, ReducePipe, ReflectUtils, RemapPipe, ReplacePipe, ResizeEventPlugin, ResourceIfContext, ResourceIfDirective, ReversePipe, RoundPipe, SCRIPT_PARAMS, SafeHtmlPipe, ScrollEventPlugin, SetUtils, ShiftPipe, SocketClient, SocketService, SplitPipe, StateService, StaticAuthService, StaticLanguageService, StickyClassDirective, StickyDirective, StorageMode, StorageService, StringUtils, TOASTER_SERVICE, TabsComponent, TabsItemDirective, TabsTemplateDirective, TimerUtils, TranslatePipe, TranslatedUrlSerializer, UniqueUtils, UniversalService, UnorderedListComponent, UnorderedListItemDirective, UnorderedListTemplateDirective, UploadComponent, ValuedPromise, ValuesPipe, Vector, WASI_IMPLEMENTATION, WasmService, cachedFactory, cancelablePromise, checkTransitions, computedPrevious, cssStyles, cssVariables, getComponentDef, getCssVariables, getRoot, hashCode, impatientPromise, isBrowser, parseSelector, provideEntryComponents, provideWithOptions, selectorMatchesList, switchClass };
|
|
8896
8941
|
//# sourceMappingURL=stemy-ngx-utils.mjs.map
|