@yoozsoft/yoozsoft-ng 3.1.4 → 4.0.0
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 +11 -4
- package/assets/js/UTIF.js-master/LICENSE +21 -0
- package/assets/js/UTIF.js-master/README.md +72 -0
- package/assets/js/UTIF.js-master/UTIF.js +1763 -0
- package/assets/js/UTIF.js-master/package-lock.json +13 -0
- package/assets/styles/ys-layout.scss +21 -47
- package/assets/styles/ys-preloader.scss +12 -12
- package/datepicker/src/models/date-time-format.d.ts +0 -1
- package/datepicker/src/ys-datepicker/ys-datepicker.component.d.ts +7 -1
- package/directives/src/password-match/ys-password-match.directive.d.ts +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-datepicker.mjs +172 -162
- package/fesm2022/yoozsoft-yoozsoft-ng-datepicker.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-directives.mjs +6 -10
- package/fesm2022/yoozsoft-yoozsoft-ng-directives.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-file-upload.mjs +145 -0
- package/fesm2022/yoozsoft-yoozsoft-ng-file-upload.mjs.map +1 -0
- package/fesm2022/yoozsoft-yoozsoft-ng-footer.mjs +8 -15
- package/fesm2022/yoozsoft-yoozsoft-ng-footer.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-loading.mjs +16 -9
- package/fesm2022/yoozsoft-yoozsoft-ng-loading.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-navbar.mjs +36 -31
- package/fesm2022/yoozsoft-yoozsoft-ng-navbar.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-overlay.mjs +6 -8
- package/fesm2022/yoozsoft-yoozsoft-ng-overlay.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-password-strength.mjs +90 -62
- package/fesm2022/yoozsoft-yoozsoft-ng-password-strength.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-progress.mjs +17 -17
- package/fesm2022/yoozsoft-yoozsoft-ng-progress.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-select.mjs +64 -23
- package/fesm2022/yoozsoft-yoozsoft-ng-select.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-sidebar.mjs +50 -57
- package/fesm2022/yoozsoft-yoozsoft-ng-sidebar.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-tiff-viewer.mjs +150 -0
- package/fesm2022/yoozsoft-yoozsoft-ng-tiff-viewer.mjs.map +1 -0
- package/fesm2022/yoozsoft-yoozsoft-ng-toast.mjs +106 -0
- package/fesm2022/yoozsoft-yoozsoft-ng-toast.mjs.map +1 -0
- package/{toasts → file-upload}/index.d.ts +1 -1
- package/file-upload/public-api.d.ts +1 -0
- package/file-upload/src/ys-file-upload/ys-file-upload.component.d.ts +51 -0
- package/loading/src/ys-loading-mask/ys-loading-mask.component.d.ts +5 -2
- package/navbar/src/models/navbar-brand.d.ts +2 -0
- package/navbar/src/models/navbar-item.d.ts +1 -0
- package/navbar/src/ys-navbar/ys-navbar.component.d.ts +13 -12
- package/overlay/src/ys-overlay/ys-overlay.component.d.ts +1 -1
- package/package.json +26 -46
- package/password-strength/public-api.d.ts +1 -0
- package/password-strength/src/directives/index.d.ts +1 -0
- package/password-strength/src/directives/ys-password-strength.directive.d.ts +18 -0
- package/password-strength/src/models/strength-validation-feedback.d.ts +2 -0
- package/password-strength/src/ys-password-strength/ys-password-strength.component.d.ts +4 -5
- package/select/src/ys-select/ys-select.component.d.ts +14 -4
- package/sidebar/src/models/index.d.ts +0 -1
- package/sidebar/src/models/sidebar-item-active.d.ts +1 -0
- package/sidebar/src/services/sidebar.service.d.ts +7 -10
- package/sidebar/src/ys-sidebar/ys-sidebar.component.d.ts +13 -15
- package/tiff-viewer/index.d.ts +5 -0
- package/tiff-viewer/public-api.d.ts +1 -0
- package/tiff-viewer/src/ys-tiff-viewer/ys-tiff-viewer.component.d.ts +48 -0
- package/{layout → toast}/index.d.ts +1 -1
- package/toast/public-api.d.ts +3 -0
- package/{toasts/src/ys-toasts/ys-toasts.component.d.ts → toast/src/ys-toast/ys-toast.component.d.ts} +4 -4
- package/assets/images/user.jpg +0 -0
- package/assets/styles/ys-layout-pin.scss +0 -153
- package/esm2022/datepicker/public-api.mjs +0 -12
- package/esm2022/datepicker/src/models/date-range.mjs +0 -2
- package/esm2022/datepicker/src/models/date-time-format.mjs +0 -4
- package/esm2022/datepicker/src/models/index.mjs +0 -4
- package/esm2022/datepicker/src/models/jalali-date.mjs +0 -74
- package/esm2022/datepicker/src/services/index.mjs +0 -3
- package/esm2022/datepicker/src/services/ys-date-parser-formatter.service.mjs +0 -32
- package/esm2022/datepicker/src/services/ys-datepicker-i18n.service.mjs +0 -66
- package/esm2022/datepicker/src/ys-datepicker/ys-datepicker.component.mjs +0 -108
- package/esm2022/datepicker/src/ys-datepicker-persian/ys-datepicker-persian.component.mjs +0 -127
- package/esm2022/datepicker/src/ys-datepicker-popup/ys-datepicker-popup.component.mjs +0 -130
- package/esm2022/datepicker/src/ys-datepicker-popup-persian/ys-datepicker-popup-persian.component.mjs +0 -136
- package/esm2022/datepicker/src/ys-datepicker-range-popup/ys-datepicker-range-popup.component.mjs +0 -157
- package/esm2022/datepicker/src/ys-datepicker-range-popup-persian/ys-datepicker-range-popup-persian.component.mjs +0 -167
- package/esm2022/datepicker/yoozsoft-yoozsoft-ng-datepicker.mjs +0 -5
- package/esm2022/directives/public-api.mjs +0 -6
- package/esm2022/directives/src/password-match/ys-password-match.directive.mjs +0 -49
- package/esm2022/directives/yoozsoft-yoozsoft-ng-directives.mjs +0 -5
- package/esm2022/footer/public-api.mjs +0 -6
- package/esm2022/footer/src/models/footer-brand.mjs +0 -2
- package/esm2022/footer/src/models/index.mjs +0 -3
- package/esm2022/footer/src/models/social-network.mjs +0 -2
- package/esm2022/footer/src/ys-footer/ys-footer.component.mjs +0 -32
- package/esm2022/footer/yoozsoft-yoozsoft-ng-footer.mjs +0 -5
- package/esm2022/layout/public-api.mjs +0 -5
- package/esm2022/layout/src/ys-layout/ys-layout.component.mjs +0 -72
- package/esm2022/layout/yoozsoft-yoozsoft-ng-layout.mjs +0 -5
- package/esm2022/loading/public-api.mjs +0 -5
- package/esm2022/loading/src/ys-loading-mask/ys-loading-mask.component.mjs +0 -20
- package/esm2022/loading/yoozsoft-yoozsoft-ng-loading.mjs +0 -5
- package/esm2022/navbar/public-api.mjs +0 -6
- package/esm2022/navbar/src/models/index.mjs +0 -3
- package/esm2022/navbar/src/models/navbar-brand.mjs +0 -2
- package/esm2022/navbar/src/models/navbar-item.mjs +0 -2
- package/esm2022/navbar/src/ys-navbar/ys-navbar.component.mjs +0 -86
- package/esm2022/navbar/yoozsoft-yoozsoft-ng-navbar.mjs +0 -5
- package/esm2022/overlay/public-api.mjs +0 -5
- package/esm2022/overlay/src/ys-overlay/ys-overlay.component.mjs +0 -20
- package/esm2022/overlay/yoozsoft-yoozsoft-ng-overlay.mjs +0 -5
- package/esm2022/password-strength/public-api.mjs +0 -6
- package/esm2022/password-strength/src/models/index.mjs +0 -5
- package/esm2022/password-strength/src/models/regx.mjs +0 -7
- package/esm2022/password-strength/src/models/strength-validation-control.mjs +0 -2
- package/esm2022/password-strength/src/models/strength-validation-feedback.mjs +0 -25
- package/esm2022/password-strength/src/models/strength-validation-option.mjs +0 -25
- package/esm2022/password-strength/src/ys-password-strength/ys-password-strength.component.mjs +0 -69
- package/esm2022/password-strength/yoozsoft-yoozsoft-ng-password-strength.mjs +0 -5
- package/esm2022/progress/public-api.mjs +0 -6
- package/esm2022/progress/src/services/index.mjs +0 -2
- package/esm2022/progress/src/services/progress.service.mjs +0 -18
- package/esm2022/progress/src/ys-progress/ys-progress.component.mjs +0 -32
- package/esm2022/progress/yoozsoft-yoozsoft-ng-progress.mjs +0 -5
- package/esm2022/public-api.mjs +0 -5
- package/esm2022/select/public-api.mjs +0 -5
- package/esm2022/select/src/ys-select/ys-select.component.mjs +0 -63
- package/esm2022/select/yoozsoft-yoozsoft-ng-select.mjs +0 -5
- package/esm2022/sidebar/public-api.mjs +0 -8
- package/esm2022/sidebar/src/models/index.mjs +0 -6
- package/esm2022/sidebar/src/models/sidebar-item-active.mjs +0 -2
- package/esm2022/sidebar/src/models/sidebar-item.mjs +0 -2
- package/esm2022/sidebar/src/models/sidebar-state.mjs +0 -2
- package/esm2022/sidebar/src/models/user-image.mjs +0 -2
- package/esm2022/sidebar/src/models/user-profile.mjs +0 -2
- package/esm2022/sidebar/src/services/index.mjs +0 -2
- package/esm2022/sidebar/src/services/sidebar.service.mjs +0 -39
- package/esm2022/sidebar/src/ys-sidebar/ys-sidebar.component.mjs +0 -68
- package/esm2022/sidebar/yoozsoft-yoozsoft-ng-sidebar.mjs +0 -5
- package/esm2022/toasts/public-api.mjs +0 -7
- package/esm2022/toasts/src/models/index.mjs +0 -3
- package/esm2022/toasts/src/models/toast-info.mjs +0 -2
- package/esm2022/toasts/src/models/toast-type.mjs +0 -8
- package/esm2022/toasts/src/services/index.mjs +0 -2
- package/esm2022/toasts/src/services/toast.service.mjs +0 -44
- package/esm2022/toasts/src/ys-toasts/ys-toasts.component.mjs +0 -53
- package/esm2022/toasts/yoozsoft-yoozsoft-ng-toasts.mjs +0 -5
- package/esm2022/yoozsoft-yoozsoft-ng.mjs +0 -5
- package/fesm2022/yoozsoft-yoozsoft-ng-layout.mjs +0 -83
- package/fesm2022/yoozsoft-yoozsoft-ng-layout.mjs.map +0 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-toasts.mjs +0 -111
- package/fesm2022/yoozsoft-yoozsoft-ng-toasts.mjs.map +0 -1
- package/layout/public-api.d.ts +0 -1
- package/layout/src/ys-layout/ys-layout.component.d.ts +0 -24
- package/sidebar/src/models/sidebar-state.d.ts +0 -4
- package/toasts/public-api.d.ts +0 -3
- /package/{toasts → toast}/src/models/index.d.ts +0 -0
- /package/{toasts → toast}/src/models/toast-info.d.ts +0 -0
- /package/{toasts → toast}/src/models/toast-type.d.ts +0 -0
- /package/{toasts → toast}/src/services/index.d.ts +0 -0
- /package/{toasts → toast}/src/services/toast.service.d.ts +0 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { NgIf, NgFor, NgClass } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { EventEmitter, Component, Input, Output } from '@angular/core';
|
|
4
|
+
|
|
5
|
+
class YsFileUploadComponent {
|
|
6
|
+
fileList;
|
|
7
|
+
files = [];
|
|
8
|
+
selectedFile;
|
|
9
|
+
multiple = false;
|
|
10
|
+
accept = '*/*';
|
|
11
|
+
/**Label of upload button */
|
|
12
|
+
uploadLabel = 'Choose File';
|
|
13
|
+
/**Style class of upload button */
|
|
14
|
+
uploadStyleClass;
|
|
15
|
+
/**Icon class of upload button */
|
|
16
|
+
uploadIconClass = 'fa fa-paperclip';
|
|
17
|
+
/**Icon of remove item button */
|
|
18
|
+
removeIconClass = 'fa fa-times';
|
|
19
|
+
/**Files display style */
|
|
20
|
+
isHorizontal = false;
|
|
21
|
+
/**Display remove button */
|
|
22
|
+
isRemove = true;
|
|
23
|
+
/**Message displayed before choosen file */
|
|
24
|
+
message = "No file chosen";
|
|
25
|
+
/**Value of progress element */
|
|
26
|
+
progressValue;
|
|
27
|
+
/**Max value of progress element */
|
|
28
|
+
progressValueMax = 100;
|
|
29
|
+
/**Display cancel upload button */
|
|
30
|
+
isCancel = false;
|
|
31
|
+
/**Event to get choosed files */
|
|
32
|
+
choosed = new EventEmitter();
|
|
33
|
+
/**Event of selected file */
|
|
34
|
+
selected = new EventEmitter();
|
|
35
|
+
/**Event of cancel upload button */
|
|
36
|
+
cancel = new EventEmitter();
|
|
37
|
+
/**Disable elements */
|
|
38
|
+
disabled = false;
|
|
39
|
+
onChange = () => { };
|
|
40
|
+
onTouched = () => { };
|
|
41
|
+
constructor() { }
|
|
42
|
+
writeValue(obj) {
|
|
43
|
+
if (!obj) {
|
|
44
|
+
this.files = [];
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
this.files = obj;
|
|
48
|
+
}
|
|
49
|
+
registerOnChange(fn) {
|
|
50
|
+
this.onChange = fn;
|
|
51
|
+
}
|
|
52
|
+
registerOnTouched(fn) {
|
|
53
|
+
this.onTouched = fn;
|
|
54
|
+
}
|
|
55
|
+
setDisabledState(isDisabled) {
|
|
56
|
+
this.disabled = isDisabled;
|
|
57
|
+
}
|
|
58
|
+
onChoosedFiles(event) {
|
|
59
|
+
this.fileList = event.target.files;
|
|
60
|
+
if (this.fileList?.length) {
|
|
61
|
+
if (!this.multiple) {
|
|
62
|
+
this.files = [];
|
|
63
|
+
}
|
|
64
|
+
for (let i = 0; i < this.fileList.length; i++) {
|
|
65
|
+
const file = this.fileList.item(i);
|
|
66
|
+
this.files.push(file);
|
|
67
|
+
}
|
|
68
|
+
this.files.sort((a, b) => a.name > b.name ? -1 : 1);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this.files = [];
|
|
72
|
+
}
|
|
73
|
+
this.onChange(this.files);
|
|
74
|
+
this.onTouched(this.files);
|
|
75
|
+
this.choosed.emit(this.files);
|
|
76
|
+
event.target.value = null;
|
|
77
|
+
}
|
|
78
|
+
removeFile(file) {
|
|
79
|
+
const index = this.files.indexOf(file);
|
|
80
|
+
this.files.splice(index, 1);
|
|
81
|
+
this.onChange(this.files);
|
|
82
|
+
this.onTouched(this.files);
|
|
83
|
+
this.choosed.emit(this.files);
|
|
84
|
+
if (this.selectedFile == file) {
|
|
85
|
+
this.selectedFile = undefined;
|
|
86
|
+
this.selected.emit(undefined);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
onSelectFile(file) {
|
|
90
|
+
this.selectedFile = file;
|
|
91
|
+
this.selected.emit(this.selectedFile);
|
|
92
|
+
}
|
|
93
|
+
cancelUpload() {
|
|
94
|
+
this.cancel.emit();
|
|
95
|
+
}
|
|
96
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: YsFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
97
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.3", type: YsFileUploadComponent, isStandalone: true, selector: "ys-file-upload", inputs: { multiple: "multiple", accept: "accept", uploadLabel: "uploadLabel", uploadStyleClass: "uploadStyleClass", uploadIconClass: "uploadIconClass", removeIconClass: "removeIconClass", isHorizontal: "isHorizontal", isRemove: "isRemove", message: "message", progressValue: "progressValue", progressValueMax: "progressValueMax", isCancel: "isCancel", disabled: "disabled" }, outputs: { choosed: "choosed", selected: "selected", cancel: "cancel" }, ngImport: i0, template: "<input class=\"form-control d-none file-upload\" type=\"file\" id=\"ysFileUpload\" #ysFileUpload [multiple]=\"multiple\"\r\n [accept]=\"accept\" [disabled]=\"disabled\" (change)=\"onChoosedFiles($event)\">\r\n\r\n<div class=\"file-upload\">\r\n <div class=\"row\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary btn-upload {{uploadStyleClass}}\" (click)=\"ysFileUpload.click()\"\r\n [disabled]=\"disabled\">\r\n <i [ngClass]=\"uploadIconClass\"></i>\r\n <span class=\"ms-2\" *ngIf=\"uploadLabel\">{{uploadLabel}}</span>\r\n </button>\r\n\r\n <span class=\"ms-2\">{{files.length ? '' : message}}</span>\r\n\r\n <ul *ngIf=\"files.length\" class=\"file-upload-list list-group mt-2\"\r\n [ngClass]=\"{'list-group-horizontal': isHorizontal}\">\r\n <a class=\"file-upload-item list-group-item d-flex align-items-center\" role=\"button\"\r\n *ngFor=\"let file of files\" (click)=\"onSelectFile(file)\"\r\n [ngClass]=\"{'active': file == selectedFile, 'disabled': disabled}\">\r\n <span class=\"me-2\">{{file.name}}</span>\r\n <button *ngIf=\"isRemove\" class=\"btn btn-outline-danger btn-sm ms-auto\" type=\"button\"\r\n id=\"removeFileButton\" (click)=\"removeFile(file); $event.stopPropagation();\"\r\n [disabled]=\"disabled\">\r\n <i [ngClass]=\"removeIconClass\"></i>\r\n </button>\r\n </a>\r\n </ul>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"progress mt-2\" style=\"height: 20px;\" *ngIf=\"progressValue\">\r\n <div class=\"progress-bar\" role=\"progressbar\" [style.width.%]=\"progressValue\" [attr.aria-valuenow]=\"progressValue\"\r\n aria-valuemin=\"0\" [attr.aria-valuemax]=\"progressValueMax\"></div>\r\n\r\n <button *ngIf=\"isCancel && progressValue < progressValueMax\" class=\"btn btn-danger btn-sm btn-upload-cancel d-flex\"\r\n (click)=\"cancelUpload()\">\r\n <i class=\"fa fa-times\" (click)=\"cancelUpload()\"></i>\r\n </button>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
98
|
+
}
|
|
99
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: YsFileUploadComponent, decorators: [{
|
|
100
|
+
type: Component,
|
|
101
|
+
args: [{ selector: 'ys-file-upload', imports: [NgIf, NgFor, NgClass], template: "<input class=\"form-control d-none file-upload\" type=\"file\" id=\"ysFileUpload\" #ysFileUpload [multiple]=\"multiple\"\r\n [accept]=\"accept\" [disabled]=\"disabled\" (change)=\"onChoosedFiles($event)\">\r\n\r\n<div class=\"file-upload\">\r\n <div class=\"row\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary btn-upload {{uploadStyleClass}}\" (click)=\"ysFileUpload.click()\"\r\n [disabled]=\"disabled\">\r\n <i [ngClass]=\"uploadIconClass\"></i>\r\n <span class=\"ms-2\" *ngIf=\"uploadLabel\">{{uploadLabel}}</span>\r\n </button>\r\n\r\n <span class=\"ms-2\">{{files.length ? '' : message}}</span>\r\n\r\n <ul *ngIf=\"files.length\" class=\"file-upload-list list-group mt-2\"\r\n [ngClass]=\"{'list-group-horizontal': isHorizontal}\">\r\n <a class=\"file-upload-item list-group-item d-flex align-items-center\" role=\"button\"\r\n *ngFor=\"let file of files\" (click)=\"onSelectFile(file)\"\r\n [ngClass]=\"{'active': file == selectedFile, 'disabled': disabled}\">\r\n <span class=\"me-2\">{{file.name}}</span>\r\n <button *ngIf=\"isRemove\" class=\"btn btn-outline-danger btn-sm ms-auto\" type=\"button\"\r\n id=\"removeFileButton\" (click)=\"removeFile(file); $event.stopPropagation();\"\r\n [disabled]=\"disabled\">\r\n <i [ngClass]=\"removeIconClass\"></i>\r\n </button>\r\n </a>\r\n </ul>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"progress mt-2\" style=\"height: 20px;\" *ngIf=\"progressValue\">\r\n <div class=\"progress-bar\" role=\"progressbar\" [style.width.%]=\"progressValue\" [attr.aria-valuenow]=\"progressValue\"\r\n aria-valuemin=\"0\" [attr.aria-valuemax]=\"progressValueMax\"></div>\r\n\r\n <button *ngIf=\"isCancel && progressValue < progressValueMax\" class=\"btn btn-danger btn-sm btn-upload-cancel d-flex\"\r\n (click)=\"cancelUpload()\">\r\n <i class=\"fa fa-times\" (click)=\"cancelUpload()\"></i>\r\n </button>\r\n</div>" }]
|
|
102
|
+
}], ctorParameters: () => [], propDecorators: { multiple: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], accept: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], uploadLabel: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], uploadStyleClass: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], uploadIconClass: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], removeIconClass: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], isHorizontal: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], isRemove: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], message: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], progressValue: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], progressValueMax: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], isCancel: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], choosed: [{
|
|
127
|
+
type: Output
|
|
128
|
+
}], selected: [{
|
|
129
|
+
type: Output
|
|
130
|
+
}], cancel: [{
|
|
131
|
+
type: Output
|
|
132
|
+
}], disabled: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}] } });
|
|
135
|
+
|
|
136
|
+
/*
|
|
137
|
+
* Public API Surface of ys-select
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Generated bundle index. Do not edit.
|
|
142
|
+
*/
|
|
143
|
+
|
|
144
|
+
export { YsFileUploadComponent };
|
|
145
|
+
//# sourceMappingURL=yoozsoft-yoozsoft-ng-file-upload.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yoozsoft-yoozsoft-ng-file-upload.mjs","sources":["../../../../projects/yoozsoft/yoozsoft-ng/file-upload/src/ys-file-upload/ys-file-upload.component.ts","../../../../projects/yoozsoft/yoozsoft-ng/file-upload/src/ys-file-upload/ys-file-upload.component.html","../../../../projects/yoozsoft/yoozsoft-ng/file-upload/public-api.ts","../../../../projects/yoozsoft/yoozsoft-ng/file-upload/yoozsoft-yoozsoft-ng-file-upload.ts"],"sourcesContent":["import { NgClass, NgFor, NgIf } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'ys-file-upload',\r\n imports: [NgIf, NgFor, NgClass],\r\n templateUrl: './ys-file-upload.component.html',\r\n styleUrl: './ys-file-upload.component.scss'\r\n})\r\nexport class YsFileUploadComponent implements ControlValueAccessor {\r\n\r\n private fileList?: FileList;\r\n files: File[] = [];\r\n selectedFile?: File;\r\n\r\n @Input() multiple: boolean = false;\r\n @Input() accept: string = '*/*';\r\n /**Label of upload button */\r\n @Input() uploadLabel?: string = 'Choose File';\r\n /**Style class of upload button */\r\n @Input() uploadStyleClass?: string;\r\n /**Icon class of upload button */\r\n @Input() uploadIconClass: string = 'fa fa-paperclip';\r\n /**Icon of remove item button */\r\n @Input() removeIconClass: string = 'fa fa-times';\r\n /**Files display style */\r\n @Input() isHorizontal: boolean = false;\r\n /**Display remove button */\r\n @Input() isRemove: boolean = true;\r\n\r\n /**Message displayed before choosen file */\r\n @Input() message: string = \"No file chosen\";\r\n\r\n /**Value of progress element */\r\n @Input() progressValue?: number;\r\n /**Max value of progress element */\r\n @Input() progressValueMax: number = 100;\r\n /**Display cancel upload button */\r\n @Input() isCancel: boolean = false;\r\n\r\n /**Event to get choosed files */\r\n @Output() choosed: EventEmitter<File[]> = new EventEmitter();\r\n /**Event of selected file */\r\n @Output() selected: EventEmitter<File | undefined> = new EventEmitter();\r\n /**Event of cancel upload button */\r\n @Output() cancel: EventEmitter<void> = new EventEmitter();\r\n\r\n /**Disable elements */\r\n @Input() disabled: boolean = false;\r\n onChange: any = () => { }\r\n onTouched: any = () => { }\r\n\r\n constructor() { }\r\n\r\n writeValue(obj: any): void {\r\n if (!obj) {\r\n this.files = [];\r\n return;\r\n }\r\n\r\n this.files = obj;\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onChoosedFiles(event: any) {\r\n this.fileList = event.target.files;\r\n\r\n if (this.fileList?.length) {\r\n\r\n if (!this.multiple) {\r\n this.files = [];\r\n }\r\n\r\n for (let i = 0; i < this.fileList.length; i++) {\r\n const file: File = this.fileList.item(i)!;\r\n this.files.push(file);\r\n }\r\n\r\n this.files.sort((a, b) => a.name > b.name ? -1 : 1);\r\n\r\n } else {\r\n this.files = [];\r\n }\r\n\r\n this.onChange(this.files);\r\n this.onTouched(this.files);\r\n\r\n this.choosed.emit(this.files);\r\n\r\n event.target.value = null;\r\n\r\n }\r\n\r\n removeFile(file: File) {\r\n const index = this.files.indexOf(file);\r\n this.files.splice(index, 1);\r\n\r\n this.onChange(this.files);\r\n this.onTouched(this.files);\r\n\r\n this.choosed.emit(this.files);\r\n\r\n if (this.selectedFile == file) {\r\n this.selectedFile = undefined;\r\n this.selected.emit(undefined);\r\n }\r\n }\r\n\r\n onSelectFile(file: File) {\r\n this.selectedFile = file;\r\n this.selected.emit(this.selectedFile);\r\n }\r\n\r\n cancelUpload() {\r\n this.cancel.emit();\r\n }\r\n\r\n}\r\n","<input class=\"form-control d-none file-upload\" type=\"file\" id=\"ysFileUpload\" #ysFileUpload [multiple]=\"multiple\"\r\n [accept]=\"accept\" [disabled]=\"disabled\" (change)=\"onChoosedFiles($event)\">\r\n\r\n<div class=\"file-upload\">\r\n <div class=\"row\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary btn-upload {{uploadStyleClass}}\" (click)=\"ysFileUpload.click()\"\r\n [disabled]=\"disabled\">\r\n <i [ngClass]=\"uploadIconClass\"></i>\r\n <span class=\"ms-2\" *ngIf=\"uploadLabel\">{{uploadLabel}}</span>\r\n </button>\r\n\r\n <span class=\"ms-2\">{{files.length ? '' : message}}</span>\r\n\r\n <ul *ngIf=\"files.length\" class=\"file-upload-list list-group mt-2\"\r\n [ngClass]=\"{'list-group-horizontal': isHorizontal}\">\r\n <a class=\"file-upload-item list-group-item d-flex align-items-center\" role=\"button\"\r\n *ngFor=\"let file of files\" (click)=\"onSelectFile(file)\"\r\n [ngClass]=\"{'active': file == selectedFile, 'disabled': disabled}\">\r\n <span class=\"me-2\">{{file.name}}</span>\r\n <button *ngIf=\"isRemove\" class=\"btn btn-outline-danger btn-sm ms-auto\" type=\"button\"\r\n id=\"removeFileButton\" (click)=\"removeFile(file); $event.stopPropagation();\"\r\n [disabled]=\"disabled\">\r\n <i [ngClass]=\"removeIconClass\"></i>\r\n </button>\r\n </a>\r\n </ul>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"progress mt-2\" style=\"height: 20px;\" *ngIf=\"progressValue\">\r\n <div class=\"progress-bar\" role=\"progressbar\" [style.width.%]=\"progressValue\" [attr.aria-valuenow]=\"progressValue\"\r\n aria-valuemin=\"0\" [attr.aria-valuemax]=\"progressValueMax\"></div>\r\n\r\n <button *ngIf=\"isCancel && progressValue < progressValueMax\" class=\"btn btn-danger btn-sm btn-upload-cancel d-flex\"\r\n (click)=\"cancelUpload()\">\r\n <i class=\"fa fa-times\" (click)=\"cancelUpload()\"></i>\r\n </button>\r\n</div>","/*\r\n * Public API Surface of ys-select\r\n */\r\n\r\nexport * from './src/ys-file-upload/ys-file-upload.component';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAUa,qBAAqB,CAAA;AAExB,IAAA,QAAQ;IAChB,KAAK,GAAW,EAAE;AAClB,IAAA,YAAY;IAEH,QAAQ,GAAY,KAAK;IACzB,MAAM,GAAW,KAAK;;IAEtB,WAAW,GAAY,aAAa;;AAEpC,IAAA,gBAAgB;;IAEhB,eAAe,GAAW,iBAAiB;;IAE3C,eAAe,GAAW,aAAa;;IAEvC,YAAY,GAAY,KAAK;;IAE7B,QAAQ,GAAY,IAAI;;IAGxB,OAAO,GAAW,gBAAgB;;AAGlC,IAAA,aAAa;;IAEb,gBAAgB,GAAW,GAAG;;IAE9B,QAAQ,GAAY,KAAK;;AAGxB,IAAA,OAAO,GAAyB,IAAI,YAAY,EAAE;;AAElD,IAAA,QAAQ,GAAmC,IAAI,YAAY,EAAE;;AAE7D,IAAA,MAAM,GAAuB,IAAI,YAAY,EAAE;;IAGhD,QAAQ,GAAY,KAAK;AAClC,IAAA,QAAQ,GAAQ,MAAK,GAAI;AACzB,IAAA,SAAS,GAAQ,MAAK,GAAI;AAE1B,IAAA,WAAA,GAAA;AAEA,IAAA,UAAU,CAAC,GAAQ,EAAA;QACjB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;YACf;;AAGF,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG;;AAElB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAEpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAErB,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;AAG5B,IAAA,cAAc,CAAC,KAAU,EAAA;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;AAElC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AAEzB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;AAGjB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,MAAM,IAAI,GAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE;AACzC,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGvB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;;aAE9C;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;AAGjB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAE7B,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI;;AAI3B,IAAA,UAAU,CAAC,IAAU,EAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAE3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAE7B,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE;AAC7B,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;;;AAIjC,IAAA,YAAY,CAAC,IAAU,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;;IAGvC,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;uGAjHT,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,2gBCVlC,+rEAwCM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlCM,IAAI,EAAE,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAK,mHAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAInB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,+rEAAA,EAAA;wDAUtB,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;gBAEQ,YAAY,EAAA,CAAA;sBAApB;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBAGQ,OAAO,EAAA,CAAA;sBAAf;gBAGQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBAGS,OAAO,EAAA,CAAA;sBAAhB;gBAES,QAAQ,EAAA,CAAA;sBAAjB;gBAES,MAAM,EAAA,CAAA;sBAAf;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;;;AEjDH;;AAEG;;ACFH;;AAEG;;;;"}
|
|
@@ -4,23 +4,16 @@ import { Component, Input } from '@angular/core';
|
|
|
4
4
|
import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';
|
|
5
5
|
|
|
6
6
|
class YsFooterComponent {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: YsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: YsFooterComponent, isStandalone: true, selector: "ys-footer", inputs: { styleClass: "styleClass", brand: "brand", copyright: "copyright", socialNetworks: "socialNetworks" }, ngImport: i0, template: "<footer class=\"d-flex justify-content-between align-items-center py-3 my-4 border-top\" [ngClass]=\"styleClass\">\r\n <div *ngIf=\"brand || copyright\" class=\"d-flex align-items-center\">\r\n <a *ngIf=\"brand\" href=\"{{brand.href}}\" class=\"px-2 text-muted text-decoration-none\">\r\n <img src=\"{{brand.src}}\" alt=\"{{brand.alt}}\" width=\"30\" height=\"24\" class=\"d-inline-block align-text-top\">\r\n </a>\r\n <span *ngIf=\"copyright\" class=\"text-muted\">{{copyright}}</span>\r\n </div>\r\n\r\n <ul *ngIf=\"socialNetworks.length > 0\" class=\"nav d-flex justify-content-end\">\r\n <li class=\"px-2\" *ngFor=\"let item of socialNetworks\">\r\n <a class=\"text-muted social-icon\" href=\"{{item.href}}\" [ngbTooltip]=\"item.tooltip\">\r\n <em class=\"{{item.iconClass}}\"></em>\r\n </a>\r\n </li>\r\n </ul>\r\n</footer>", styles: [".social-icon:hover{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1))!important}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] }); }
|
|
7
|
+
styleClass = null;
|
|
8
|
+
brand = null;
|
|
9
|
+
copyright = null;
|
|
10
|
+
socialNetworks = [];
|
|
11
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: YsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.3", type: YsFooterComponent, isStandalone: true, selector: "ys-footer", inputs: { styleClass: "styleClass", brand: "brand", copyright: "copyright", socialNetworks: "socialNetworks" }, ngImport: i0, template: "<footer class=\"d-flex justify-content-between align-items-center py-3 my-4 border-top\" [ngClass]=\"styleClass\">\r\n <div *ngIf=\"brand || copyright\" class=\"d-flex align-items-center\">\r\n <a *ngIf=\"brand\" href=\"{{brand.href}}\" class=\"px-2 text-muted text-decoration-none\">\r\n <img src=\"{{brand.src}}\" alt=\"{{brand.alt}}\" class=\"brand-logo d-inline-block align-text-top\">\r\n </a>\r\n <span *ngIf=\"copyright\" class=\"text-muted\">{{copyright}}</span>\r\n </div>\r\n\r\n <ul *ngIf=\"socialNetworks.length\" class=\"nav d-flex justify-content-end\">\r\n <li class=\"px-2\" *ngFor=\"let item of socialNetworks\">\r\n <a class=\"text-muted social-icon\" href=\"{{item.href}}\" [ngbTooltip]=\"item.tooltip\">\r\n <em class=\"{{item.iconClass}}\"></em>\r\n </a>\r\n </li>\r\n </ul>\r\n</footer>", styles: [".social-icon:hover{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1))!important}.brand-logo{width:30px;height:30px}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] });
|
|
15
13
|
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: YsFooterComponent, decorators: [{
|
|
17
15
|
type: Component,
|
|
18
|
-
args: [{ selector: 'ys-footer',
|
|
19
|
-
NgFor,
|
|
20
|
-
NgIf,
|
|
21
|
-
NgClass,
|
|
22
|
-
NgbTooltip
|
|
23
|
-
], template: "<footer class=\"d-flex justify-content-between align-items-center py-3 my-4 border-top\" [ngClass]=\"styleClass\">\r\n <div *ngIf=\"brand || copyright\" class=\"d-flex align-items-center\">\r\n <a *ngIf=\"brand\" href=\"{{brand.href}}\" class=\"px-2 text-muted text-decoration-none\">\r\n <img src=\"{{brand.src}}\" alt=\"{{brand.alt}}\" width=\"30\" height=\"24\" class=\"d-inline-block align-text-top\">\r\n </a>\r\n <span *ngIf=\"copyright\" class=\"text-muted\">{{copyright}}</span>\r\n </div>\r\n\r\n <ul *ngIf=\"socialNetworks.length > 0\" class=\"nav d-flex justify-content-end\">\r\n <li class=\"px-2\" *ngFor=\"let item of socialNetworks\">\r\n <a class=\"text-muted social-icon\" href=\"{{item.href}}\" [ngbTooltip]=\"item.tooltip\">\r\n <em class=\"{{item.iconClass}}\"></em>\r\n </a>\r\n </li>\r\n </ul>\r\n</footer>", styles: [".social-icon:hover{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1))!important}\n"] }]
|
|
16
|
+
args: [{ selector: 'ys-footer', imports: [NgFor, NgIf, NgClass, NgbTooltip], template: "<footer class=\"d-flex justify-content-between align-items-center py-3 my-4 border-top\" [ngClass]=\"styleClass\">\r\n <div *ngIf=\"brand || copyright\" class=\"d-flex align-items-center\">\r\n <a *ngIf=\"brand\" href=\"{{brand.href}}\" class=\"px-2 text-muted text-decoration-none\">\r\n <img src=\"{{brand.src}}\" alt=\"{{brand.alt}}\" class=\"brand-logo d-inline-block align-text-top\">\r\n </a>\r\n <span *ngIf=\"copyright\" class=\"text-muted\">{{copyright}}</span>\r\n </div>\r\n\r\n <ul *ngIf=\"socialNetworks.length\" class=\"nav d-flex justify-content-end\">\r\n <li class=\"px-2\" *ngFor=\"let item of socialNetworks\">\r\n <a class=\"text-muted social-icon\" href=\"{{item.href}}\" [ngbTooltip]=\"item.tooltip\">\r\n <em class=\"{{item.iconClass}}\"></em>\r\n </a>\r\n </li>\r\n </ul>\r\n</footer>", styles: [".social-icon:hover{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1))!important}.brand-logo{width:30px;height:30px}\n"] }]
|
|
24
17
|
}], propDecorators: { styleClass: [{
|
|
25
18
|
type: Input
|
|
26
19
|
}], brand: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yoozsoft-yoozsoft-ng-footer.mjs","sources":["../../../../projects/yoozsoft/yoozsoft-ng/footer/src/ys-footer/ys-footer.component.ts","../../../../projects/yoozsoft/yoozsoft-ng/footer/src/ys-footer/ys-footer.component.html","../../../../projects/yoozsoft/yoozsoft-ng/footer/public-api.ts","../../../../projects/yoozsoft/yoozsoft-ng/footer/yoozsoft-yoozsoft-ng-footer.ts"],"sourcesContent":["import { NgClass, NgFor, NgIf } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { FooterBrand, SocialNetwork } from '../models';\r\n\r\n@Component({\r\n selector: 'ys-footer',\r\n
|
|
1
|
+
{"version":3,"file":"yoozsoft-yoozsoft-ng-footer.mjs","sources":["../../../../projects/yoozsoft/yoozsoft-ng/footer/src/ys-footer/ys-footer.component.ts","../../../../projects/yoozsoft/yoozsoft-ng/footer/src/ys-footer/ys-footer.component.html","../../../../projects/yoozsoft/yoozsoft-ng/footer/public-api.ts","../../../../projects/yoozsoft/yoozsoft-ng/footer/yoozsoft-yoozsoft-ng-footer.ts"],"sourcesContent":["import { NgClass, NgFor, NgIf } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { FooterBrand, SocialNetwork } from '../models';\r\n\r\n@Component({\r\n selector: 'ys-footer',\r\n imports: [NgFor, NgIf, NgClass, NgbTooltip],\r\n templateUrl: './ys-footer.component.html',\r\n styleUrl: './ys-footer.component.scss'\r\n})\r\nexport class YsFooterComponent {\r\n\r\n @Input() styleClass: string | null = null;\r\n @Input() brand: FooterBrand | null = null;\r\n @Input() copyright: string | null = null;\r\n @Input() socialNetworks: SocialNetwork[] = [];\r\n\r\n}\r\n","<footer class=\"d-flex justify-content-between align-items-center py-3 my-4 border-top\" [ngClass]=\"styleClass\">\r\n <div *ngIf=\"brand || copyright\" class=\"d-flex align-items-center\">\r\n <a *ngIf=\"brand\" href=\"{{brand.href}}\" class=\"px-2 text-muted text-decoration-none\">\r\n <img src=\"{{brand.src}}\" alt=\"{{brand.alt}}\" class=\"brand-logo d-inline-block align-text-top\">\r\n </a>\r\n <span *ngIf=\"copyright\" class=\"text-muted\">{{copyright}}</span>\r\n </div>\r\n\r\n <ul *ngIf=\"socialNetworks.length\" class=\"nav d-flex justify-content-end\">\r\n <li class=\"px-2\" *ngFor=\"let item of socialNetworks\">\r\n <a class=\"text-muted social-icon\" href=\"{{item.href}}\" [ngbTooltip]=\"item.tooltip\">\r\n <em class=\"{{item.iconClass}}\"></em>\r\n </a>\r\n </li>\r\n </ul>\r\n</footer>","/*\r\n * Public API Surface of ys-footer\r\n */\r\n\r\nexport * from './src/models';\r\nexport * from './src/ys-footer/ys-footer.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAWa,iBAAiB,CAAA;IAEnB,UAAU,GAAkB,IAAI;IAChC,KAAK,GAAuB,IAAI;IAChC,SAAS,GAAkB,IAAI;IAC/B,cAAc,GAAoB,EAAE;uGALlC,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX9B,y4BAeS,EDRG,MAAA,EAAA,CAAA,mIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAK,mHAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAI/B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,y4BAAA,EAAA,MAAA,EAAA,CAAA,mIAAA,CAAA,EAAA;8BAMlC,UAAU,EAAA,CAAA;sBAAlB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;;;AEhBH;;AAEG;;ACFH;;AAEG;;;;"}
|
|
@@ -3,19 +3,26 @@ import * as i0 from '@angular/core';
|
|
|
3
3
|
import { Component, Input } from '@angular/core';
|
|
4
4
|
|
|
5
5
|
class YsLoadingMaskComponent {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
static
|
|
6
|
+
loading = false;
|
|
7
|
+
message = 'Loading ...';
|
|
8
|
+
backgroundStyleclass = null;
|
|
9
|
+
spinnerStyleclass = null;
|
|
10
|
+
messageStyleclass = null;
|
|
11
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: YsLoadingMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.3", type: YsLoadingMaskComponent, isStandalone: true, selector: "ys-loading-mask", inputs: { loading: "loading", message: "message", backgroundStyleclass: "backgroundStyleclass", spinnerStyleclass: "spinnerStyleclass", messageStyleclass: "messageStyleclass" }, ngImport: i0, template: "<div *ngIf=\"loading\"\r\n class=\"loading-wrapper d-flex flex-column align-items-center justify-content-center h-100 w-100 position-absolute\">\r\n <div class=\"loading-mask bg-secondary position-absolute h-100 w-100\" [ngClass]=\"backgroundStyleclass\">\r\n </div>\r\n <div class=\"loading-content d-flex flex-column align-items-center justify-content-center\">\r\n <div class=\"loading-spinner spinner-border text-primary\" [ngClass]=\"spinnerStyleclass\" role=\"status\"></div>\r\n <strong *ngIf=\"message\" class=\"badge bg-primary mt-4 p-3\" [ngClass]=\"messageStyleclass\">\r\n {{message}}\r\n </strong>\r\n </div>\r\n</div>", styles: [".loading-wrapper{top:0;left:0;z-index:1001}.loading-wrapper .loading-mask{opacity:.3}.loading-wrapper .loading-content{z-index:1}.loading-wrapper .loading-content .loading-spinner{width:3rem;height:3rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
12
13
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: YsLoadingMaskComponent, decorators: [{
|
|
14
15
|
type: Component,
|
|
15
|
-
args: [{ selector: 'ys-loading-mask',
|
|
16
|
+
args: [{ selector: 'ys-loading-mask', imports: [NgIf, NgClass], template: "<div *ngIf=\"loading\"\r\n class=\"loading-wrapper d-flex flex-column align-items-center justify-content-center h-100 w-100 position-absolute\">\r\n <div class=\"loading-mask bg-secondary position-absolute h-100 w-100\" [ngClass]=\"backgroundStyleclass\">\r\n </div>\r\n <div class=\"loading-content d-flex flex-column align-items-center justify-content-center\">\r\n <div class=\"loading-spinner spinner-border text-primary\" [ngClass]=\"spinnerStyleclass\" role=\"status\"></div>\r\n <strong *ngIf=\"message\" class=\"badge bg-primary mt-4 p-3\" [ngClass]=\"messageStyleclass\">\r\n {{message}}\r\n </strong>\r\n </div>\r\n</div>", styles: [".loading-wrapper{top:0;left:0;z-index:1001}.loading-wrapper .loading-mask{opacity:.3}.loading-wrapper .loading-content{z-index:1}.loading-wrapper .loading-content .loading-spinner{width:3rem;height:3rem}\n"] }]
|
|
16
17
|
}], propDecorators: { loading: [{
|
|
17
18
|
type: Input
|
|
18
|
-
}],
|
|
19
|
+
}], message: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}], backgroundStyleclass: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], spinnerStyleclass: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], messageStyleclass: [{
|
|
19
26
|
type: Input
|
|
20
27
|
}] } });
|
|
21
28
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yoozsoft-yoozsoft-ng-loading.mjs","sources":["../../../../projects/yoozsoft/yoozsoft-ng/loading/src/ys-loading-mask/ys-loading-mask.component.ts","../../../../projects/yoozsoft/yoozsoft-ng/loading/src/ys-loading-mask/ys-loading-mask.component.html","../../../../projects/yoozsoft/yoozsoft-ng/loading/public-api.ts","../../../../projects/yoozsoft/yoozsoft-ng/loading/yoozsoft-yoozsoft-ng-loading.ts"],"sourcesContent":["import { NgClass, NgIf } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ys-loading-mask',\r\n
|
|
1
|
+
{"version":3,"file":"yoozsoft-yoozsoft-ng-loading.mjs","sources":["../../../../projects/yoozsoft/yoozsoft-ng/loading/src/ys-loading-mask/ys-loading-mask.component.ts","../../../../projects/yoozsoft/yoozsoft-ng/loading/src/ys-loading-mask/ys-loading-mask.component.html","../../../../projects/yoozsoft/yoozsoft-ng/loading/public-api.ts","../../../../projects/yoozsoft/yoozsoft-ng/loading/yoozsoft-yoozsoft-ng-loading.ts"],"sourcesContent":["import { NgClass, NgIf } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ys-loading-mask',\r\n imports: [NgIf, NgClass],\r\n templateUrl: './ys-loading-mask.component.html',\r\n styleUrl: './ys-loading-mask.component.scss'\r\n})\r\nexport class YsLoadingMaskComponent {\r\n\r\n @Input() loading: boolean = false;\r\n @Input() message: string | null = 'Loading ...';\r\n @Input() backgroundStyleclass: string | null = null;\r\n @Input() spinnerStyleclass: string | null = null;\r\n @Input() messageStyleclass: string | null = null;\r\n\r\n}\r\n","<div *ngIf=\"loading\"\r\n class=\"loading-wrapper d-flex flex-column align-items-center justify-content-center h-100 w-100 position-absolute\">\r\n <div class=\"loading-mask bg-secondary position-absolute h-100 w-100\" [ngClass]=\"backgroundStyleclass\">\r\n </div>\r\n <div class=\"loading-content d-flex flex-column align-items-center justify-content-center\">\r\n <div class=\"loading-spinner spinner-border text-primary\" [ngClass]=\"spinnerStyleclass\" role=\"status\"></div>\r\n <strong *ngIf=\"message\" class=\"badge bg-primary mt-4 p-3\" [ngClass]=\"messageStyleclass\">\r\n {{message}}\r\n </strong>\r\n </div>\r\n</div>","/*\r\n * Public API Surface of ys-loading-mask\r\n */\r\n\r\nexport * from './src/ys-loading-mask/ys-loading-mask.component';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MASa,sBAAsB,CAAA;IAExB,OAAO,GAAY,KAAK;IACxB,OAAO,GAAkB,aAAa;IACtC,oBAAoB,GAAkB,IAAI;IAC1C,iBAAiB,GAAkB,IAAI;IACvC,iBAAiB,GAAkB,IAAI;uGANrC,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,ECTnC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,wqBAUM,EDLM,MAAA,EAAA,CAAA,+MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,6FAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIZ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA,CAAC,IAAI,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,wqBAAA,EAAA,MAAA,EAAA,CAAA,+MAAA,CAAA,EAAA;8BAMf,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;;;AEfH;;AAEG;;ACFH;;AAEG;;;;"}
|
|
@@ -8,43 +8,48 @@ import * as i2 from '@ng-bootstrap/ng-bootstrap';
|
|
|
8
8
|
import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
|
|
9
9
|
|
|
10
10
|
class YsNavbarComponent {
|
|
11
|
+
formBuilder;
|
|
12
|
+
searchForm;
|
|
13
|
+
id = 'mainNavbar';
|
|
14
|
+
theme = 'dark';
|
|
15
|
+
styleClass;
|
|
16
|
+
brand = null;
|
|
17
|
+
items = [];
|
|
18
|
+
endItems = [];
|
|
19
|
+
isSearch = false;
|
|
20
|
+
searchLabel = 'Search';
|
|
21
|
+
searchIconClass;
|
|
22
|
+
searchPlaceholder = 'Search';
|
|
23
|
+
isSidebarToggler = false;
|
|
24
|
+
isSidebarToggled = true;
|
|
25
|
+
sidebarTogglerIconClass = "fa-solid fa-angle-right";
|
|
26
|
+
toggleSidebar = new EventEmitter();
|
|
27
|
+
search = new EventEmitter();
|
|
11
28
|
constructor(formBuilder) {
|
|
12
29
|
this.formBuilder = formBuilder;
|
|
13
|
-
this.id = 'navbar01';
|
|
14
|
-
this.theme = 'dark';
|
|
15
|
-
this.styleClass = 'navbar-expand-lg bg-primary';
|
|
16
|
-
this.items = [];
|
|
17
|
-
this.sideItems = [];
|
|
18
|
-
this.search = false;
|
|
19
|
-
this.searchLabel = 'Search';
|
|
20
|
-
this.searchPlaceholder = 'Search';
|
|
21
|
-
this.brand = null;
|
|
22
|
-
this.sidebarToggler = false;
|
|
23
|
-
this.sidebarToggled = false;
|
|
24
|
-
// @Input() sidebarPinnerIconClass: string = "fa-solid fa-angle-left";
|
|
25
|
-
this.sidebarTogglerIconClass = "fa-solid fa-angle-right";
|
|
26
|
-
this.toggleSidebar = new EventEmitter();
|
|
27
|
-
this.onSearch = new EventEmitter();
|
|
28
30
|
this.searchForm = this.formBuilder.group({
|
|
29
31
|
searchValue: ['']
|
|
30
32
|
});
|
|
31
33
|
}
|
|
34
|
+
ngOnInit() {
|
|
35
|
+
// this.toggleSidebar.emit(this.isSidebarToggled);
|
|
36
|
+
}
|
|
32
37
|
onToggleSidebar() {
|
|
33
|
-
this.
|
|
34
|
-
this.toggleSidebar.emit(this.
|
|
38
|
+
this.isSidebarToggled = !this.isSidebarToggled;
|
|
39
|
+
this.toggleSidebar.emit(this.isSidebarToggled);
|
|
35
40
|
}
|
|
36
41
|
submitSearch() {
|
|
37
|
-
this.
|
|
42
|
+
this.search.emit(this.searchForm.get('searchValue')?.value);
|
|
38
43
|
}
|
|
39
44
|
isDropdown(item) {
|
|
40
|
-
return item.items?.length
|
|
45
|
+
return item.items?.length;
|
|
41
46
|
}
|
|
42
|
-
static
|
|
43
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: YsNavbarComponent, isStandalone: true, selector: "ys-navbar", inputs: { id: "id", theme: "theme", styleClass: "styleClass", items: "items", sideItems: "sideItems", search: "search", searchLabel: "searchLabel", searchIconClass: "searchIconClass", searchPlaceholder: "searchPlaceholder", brand: "brand", sidebarToggler: "sidebarToggler", sidebarToggled: "sidebarToggled", sidebarTogglerIconClass: "sidebarTogglerIconClass" }, outputs: { toggleSidebar: "toggleSidebar", onSearch: "onSearch" }, ngImport: i0, template: "<nav class=\"navbar\" [ngClass]=\"styleClass\" [attr.data-bs-theme]=\"theme\">\r\n <div class=\"container-fluid\">\r\n <button *ngIf=\"sidebarToggler\" class=\"sidebar-toggler me-2\" type=\"button\" (click)=\"onToggleSidebar()\">\r\n <i class=\"{{sidebarTogglerIconClass}} sidebar-toggler-icon p-1\" [ngClass]=\"{'toggled': sidebarToggled}\"></i>\r\n </button>\r\n\r\n <a class=\"navbar-brand\" [ngClass]=\"{'me-auto': items.length <= 0}\" href=\"{{brand?.href}}\">\r\n <img *ngIf=\"brand?.src\" src=\"{{brand?.src}}\" alt=\"{{brand?.alt}}\" width=\"30\" height=\"24\">\r\n {{brand?.label}}\r\n </a>\r\n <button *ngIf=\"items.length > 0 || sideItems.length > 0 || search\" class=\"navbar-toggler ms-auto\" type=\"button\"\r\n data-bs-toggle=\"collapse\" [attr.data-bs-target]=\"'#' + id\" [attr.aria-controls]=\"id\" aria-expanded=\"false\"\r\n aria-label=\"Toggle navigation\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n\r\n <div class=\"collapse navbar-collapse\" [id]=\"id\">\r\n\r\n <ul *ngIf=\"items.length > 0\" class=\"navbar-nav me-auto\">\r\n <ng-container *ngFor=\"let navItem of items\">\r\n <li *ngIf=\"!isDropdown(navItem)\" class=\"nav-item\">\r\n <a class=\"nav-link\" [routerLink]=\"navItem.routerLink\" [routerLinkActive]=\"['active']\"\r\n ngbTooltip=\"{{navItem.tooltipLabel}}\">\r\n <i *ngIf=\"navItem.iconClass\" class=\"pe-2 {{navItem.iconClass}}\"></i>\r\n {{navItem.label}}\r\n <span class=\"visually-hidden\">(current)</span>\r\n </a>\r\n </li>\r\n\r\n <li *ngIf=\"isDropdown(navItem)\" class=\"nav-item dropdown\">\r\n <a class=\"nav-link dropdown-toggle\" ngbTooltip=\"{{navItem.tooltipLabel}}\" data-bs-toggle=\"dropdown\"\r\n role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <i *ngIf=\"navItem.iconClass\" class=\"pe-2 {{navItem.iconClass}}\"></i>\r\n <span *ngIf=\"navItem.label\">{{navItem.label}}</span>\r\n </a>\r\n <div class=\"dropdown-menu px-2\">\r\n <ng-container *ngFor=\"let navSubItem of navItem.items\">\r\n\r\n <a *ngIf=\"!navSubItem.isDivider\" class=\"dropdown-item rounded\" [routerLink]=\"navSubItem.routerLink\"\r\n [routerLinkActive]=\"['active']\" ngbTooltip=\"{{navSubItem.tooltipLabel}}\">\r\n <i *ngIf=\"navSubItem.iconClass\" class=\"me-2 {{navSubItem.iconClass}}\"></i>\r\n <span *ngIf=\"navSubItem.label\">{{navSubItem.label}}</span>\r\n </a>\r\n\r\n <div *ngIf=\"navSubItem.isDivider\" class=\"dropdown-divider\"></div>\r\n\r\n </ng-container>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n\r\n <ul *ngIf=\"sideItems.length > 0\" class=\"navbar-nav flex-row ms-auto nav-side\" [ngClass]=\"{'me-md-2': search}\">\r\n <ng-container *ngFor=\"let sideItem of sideItems\">\r\n\r\n <li *ngIf=\"!isDropdown(sideItem)\" class=\"nav-item\">\r\n <a class=\"nav-link\" [routerLink]=\"sideItem.routerLink\" [routerLinkActive]=\"['active']\"\r\n (click)=\"sideItem.onClick && sideItem.onClick($event)\" role=\"button\"\r\n ngbTooltip=\"{{sideItem.tooltipLabel}}\">\r\n <i *ngIf=\"sideItem.iconClass\" class=\"pe-2 {{sideItem.iconClass}}\"></i>\r\n <span *ngIf=\"sideItem.label\">{{sideItem.label}}</span>\r\n </a>\r\n </li>\r\n\r\n <li *ngIf=\"isDropdown(sideItem)\" class=\"nav-item dropdown\">\r\n <a class=\"nav-link dropdown-toggle\" ngbTooltip=\"{{sideItem.tooltipLabel}}\" data-bs-toggle=\"dropdown\"\r\n data-bs-display=\"static\" aria-expanded=\"false\" role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <i *ngIf=\"sideItem.iconClass\" class=\"pe-2 {{sideItem.iconClass}}\"></i>\r\n <span *ngIf=\"sideItem.label\">{{sideItem.label}}</span>\r\n </a>\r\n <div class=\"dropdown-menu px-2 dropdown-menu-end\">\r\n <ng-container *ngFor=\"let sideItemSubItem of sideItem.items\">\r\n\r\n <a *ngIf=\"!sideItemSubItem.isDivider\" class=\"dropdown-item text-center rounded\"\r\n [routerLink]=\"sideItemSubItem.routerLink\" [routerLinkActive]=\"['active']\"\r\n (click)=\"sideItemSubItem.onClick && sideItemSubItem.onClick($event)\" role=\"button\"\r\n ngbTooltip=\"{{sideItemSubItem.tooltipLabel}}\">\r\n <i *ngIf=\"sideItemSubItem.iconClass\" class=\"me-2 {{sideItemSubItem.iconClass}}\"></i>\r\n <span *ngIf=\"sideItemSubItem.label\">{{sideItemSubItem.label}}</span>\r\n </a>\r\n\r\n <div *ngIf=\"sideItemSubItem.isDivider\" class=\"dropdown-divider\"></div>\r\n\r\n </ng-container>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <form *ngIf=\"search\" class=\"d-flex mt-2 mt-md-0\" [ngClass]=\"{'ms-auto': sideItems.length <= 0}\"\r\n [formGroup]=\"searchForm\" (submit)=\"submitSearch()\">\r\n <input class=\"form-control me-sm-2\" type=\"search\" placeholder=\"{{searchPlaceholder}}\"\r\n formControlName=\"searchValue\">\r\n <button class=\"btn btn-secondary my-2 my-sm-0\" type=\"submit\">\r\n <i *ngIf=\"searchIconClass\" class=\"{{searchIconClass}}\"></i>\r\n <span *ngIf=\"searchLabel\">{{searchLabel}}</span>\r\n </button>\r\n </form>\r\n </div>\r\n </div>\r\n</nav>", styles: [".sidebar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}.sidebar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}.sidebar-toggler-icon.toggled{-webkit-transform:scaleX(-1);transform:scaleX(-1)}@media (max-width: 768px){.nav-side .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}}::ng-deep html[dir=rtl] .sidebar-toggler-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}::ng-deep html[dir=rtl] .sidebar-toggler-icon.toggled{-webkit-transform:scaleX(1);transform:scaleX(1)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] }); }
|
|
47
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: YsNavbarComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
48
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.3", type: YsNavbarComponent, isStandalone: true, selector: "ys-navbar", inputs: { id: "id", theme: "theme", styleClass: "styleClass", brand: "brand", items: "items", endItems: "endItems", isSearch: "isSearch", searchLabel: "searchLabel", searchIconClass: "searchIconClass", searchPlaceholder: "searchPlaceholder", isSidebarToggler: "isSidebarToggler", isSidebarToggled: "isSidebarToggled", sidebarTogglerIconClass: "sidebarTogglerIconClass" }, outputs: { toggleSidebar: "toggleSidebar", search: "search" }, ngImport: i0, template: "<nav class=\"navbar navbar-expand-lg bg-primary\" [ngClass]=\"styleClass\" [attr.data-bs-theme]=\"theme\">\r\n <div class=\"container-fluid\">\r\n\r\n <button *ngIf=\"isSidebarToggler\" class=\"sidebar-toggler me-2\" type=\"button\" (click)=\"onToggleSidebar()\"\r\n aria-expanded=\"false\" aria-label=\"Toggle sidebar\" [ngClass]=\"{'toggled': isSidebarToggled}\">\r\n <i class=\"{{sidebarTogglerIconClass}} sidebar-toggler-icon p-1\"></i>\r\n </button>\r\n\r\n <a class=\"navbar-brand\" [ngClass]=\"{'me-auto': !items.length}\" href=\"{{brand?.href}}\">\r\n <img *ngIf=\"brand?.src\" src=\"{{brand?.src}}\" alt=\"{{brand?.alt}}\" width=\"{{brand?.width}}\"\r\n height=\"{{brand?.height}}\">\r\n {{brand?.label}}\r\n </a>\r\n\r\n <button *ngIf=\"items.length || endItems.length || search\" class=\"navbar-toggler ms-auto\" type=\"button\"\r\n data-bs-toggle=\"collapse\" [attr.data-bs-target]=\"'#' + id\" [attr.aria-controls]=\"id\" aria-expanded=\"false\"\r\n aria-label=\"Toggle navigation\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n\r\n <div class=\"collapse navbar-collapse\" [id]=\"id\">\r\n\r\n <ul *ngIf=\"items.length\" class=\"navbar-nav me-auto\" [ngClass]=\"{'mb-2': isSearch}\">\r\n <ng-container *ngFor=\"let navItem of items\">\r\n\r\n <li *ngIf=\"!isDropdown(navItem)\" class=\"nav-item\">\r\n <a class=\"nav-link\" [ngClass]=\"{'disabled': navItem.disabled}\"\r\n (click)=\"navItem.onClick && navItem.onClick($event)\" [attr.aria-disabled]=\"navItem.disabled\"\r\n [routerLink]=\"navItem.routerLink\" [routerLinkActive]=\"['active']\"\r\n ngbTooltip=\"{{navItem.tooltipLabel}}\" aria-current=\"page\">\r\n\r\n <i *ngIf=\"navItem.iconClass\" class=\"pe-2 {{navItem.iconClass}}\"></i>\r\n\r\n {{navItem.label}}\r\n\r\n </a>\r\n </li>\r\n\r\n <li *ngIf=\"isDropdown(navItem)\" class=\"nav-item dropdown\">\r\n <a class=\"nav-link dropdown-toggle\" [ngClass]=\"{'disabled': navItem.disabled}\"\r\n [attr.aria-disabled]=\"navItem.disabled\" ngbTooltip=\"{{navItem.tooltipLabel}}\"\r\n data-bs-toggle=\"dropdown\" role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n\r\n <i *ngIf=\"navItem.iconClass\" class=\"pe-2 {{navItem.iconClass}}\"></i>\r\n\r\n <span *ngIf=\"navItem.label\">{{navItem.label}}</span>\r\n\r\n </a>\r\n <ul class=\"dropdown-menu px-2\">\r\n <li *ngFor=\"let navSubItem of navItem.items\">\r\n\r\n <a *ngIf=\"!navSubItem.isDivider\" class=\"dropdown-item rounded\"\r\n (click)=\"navSubItem.onClick && navSubItem.onClick($event)\"\r\n [ngClass]=\"{'disabled': navSubItem.disabled}\"\r\n [attr.aria-disabled]=\"navItem.disabled\" [routerLink]=\"navSubItem.routerLink\"\r\n [routerLinkActive]=\"['active']\" ngbTooltip=\"{{navSubItem.tooltipLabel}}\">\r\n\r\n <i *ngIf=\"navSubItem.iconClass\" class=\"me-2 {{navSubItem.iconClass}}\"></i>\r\n\r\n <span *ngIf=\"navSubItem.label\">{{navSubItem.label}}</span>\r\n\r\n </a>\r\n\r\n <hr *ngIf=\"navSubItem.isDivider\" class=\"dropdown-divider\">\r\n\r\n </li>\r\n </ul>\r\n </li>\r\n\r\n </ng-container>\r\n\r\n </ul>\r\n\r\n <ul *ngIf=\"endItems.length > 0\" class=\"navbar-nav flex-row ms-auto nav-end me-2\" [ngClass]=\"{'nav-end-me-0': search}\">\r\n <ng-container *ngFor=\"let endItem of endItems\">\r\n\r\n <li *ngIf=\"!isDropdown(endItem)\" class=\"nav-item\">\r\n <a class=\"nav-link\" [routerLink]=\"endItem.routerLink\" [routerLinkActive]=\"['active']\"\r\n (click)=\"endItem.onClick && endItem.onClick($event)\" role=\"button\"\r\n ngbTooltip=\"{{endItem.tooltipLabel}}\">\r\n <i *ngIf=\"endItem.iconClass\" class=\"pe-2 {{endItem.iconClass}}\"></i>\r\n <span *ngIf=\"endItem.label\">{{endItem.label}}</span>\r\n </a>\r\n </li>\r\n\r\n <li *ngIf=\"isDropdown(endItem)\" class=\"nav-item dropdown\">\r\n <a class=\"nav-link dropdown-toggle\" ngbTooltip=\"{{endItem.tooltipLabel}}\"\r\n data-bs-toggle=\"dropdown\" data-bs-display=\"static\" aria-expanded=\"false\" role=\"button\"\r\n aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <i *ngIf=\"endItem.iconClass\" class=\"pe-2 {{endItem.iconClass}}\"></i>\r\n <span *ngIf=\"endItem.label\">{{endItem.label}}</span>\r\n </a>\r\n <div class=\"dropdown-menu px-2 dropdown-menu-end\">\r\n <ng-container *ngFor=\"let endItemSubItem of endItem.items\">\r\n\r\n <a *ngIf=\"!endItemSubItem.isDivider\" class=\"dropdown-item text-center rounded\"\r\n [routerLink]=\"endItemSubItem.routerLink\" [routerLinkActive]=\"['active']\"\r\n (click)=\"endItemSubItem.onClick && endItemSubItem.onClick($event)\" role=\"button\"\r\n ngbTooltip=\"{{endItemSubItem.tooltipLabel}}\">\r\n <i *ngIf=\"endItemSubItem.iconClass\" class=\"me-2 {{endItemSubItem.iconClass}}\"></i>\r\n <span *ngIf=\"endItemSubItem.label\">{{endItemSubItem.label}}</span>\r\n </a>\r\n\r\n <div *ngIf=\"endItemSubItem.isDivider\" class=\"dropdown-divider\"></div>\r\n\r\n </ng-container>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n\r\n <form *ngIf=\"isSearch\" class=\"search-form d-flex\" role=\"search\" [ngClass]=\"{'ms-auto': !endItems.length}\"\r\n [formGroup]=\"searchForm\" (submit)=\"submitSearch()\">\r\n <input name=\"searchValue\" id=\"searchValue\" formControlName=\"searchValue\" class=\"form-control me-2\" type=\"search\"\r\n placeholder=\"{{searchPlaceholder}}\" aria-label=\"Search\">\r\n <button name=\"submitBtn\" class=\"btn btn-outline-success\" type=\"submit\">\r\n <i *ngIf=\"searchIconClass\" class=\"{{searchIconClass}}\"></i>\r\n <span *ngIf=\"searchLabel\">{{searchLabel}}</span>\r\n </button>\r\n </form>\r\n\r\n <!-- <form *ngIf=\"search\" class=\"d-flex mt-2 mt-md-0\" [ngClass]=\"{'ms-auto': endItems.length <= 0}\"\r\n [formGroup]=\"searchForm\" (submit)=\"submitSearch()\">\r\n <input class=\"form-control me-sm-2\" type=\"search\" placeholder=\"{{searchPlaceholder}}\"\r\n formControlName=\"searchValue\">\r\n <button class=\"btn btn-secondary my-2 my-sm-0\" type=\"submit\">\r\n <i *ngIf=\"searchIconClass\" class=\"{{searchIconClass}}\"></i>\r\n <span *ngIf=\"searchLabel\">{{searchLabel}}</span>\r\n </button>\r\n </form> -->\r\n </div>\r\n </div>\r\n</nav>", styles: [".sidebar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}.sidebar-toggler.toggled .sidebar-toggler-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}@media (prefers-reduced-motion: reduce){.sidebar-toggler{transition:none}}.sidebar-toggler:hover{text-decoration:none}.sidebar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.sidebar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}::ng-deep html[dir=rtl] .sidebar-toggler{-webkit-transform:scaleX(-1);transform:scaleX(-1)}::ng-deep html[dir=rtl] .sidebar-toggler.toggled .sidebar-toggler-icon{-webkit-transform:scaleX(1);transform:scaleX(1)}::ng-deep html[dir=rtl] .nav-end .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:0!important}::ng-deep html[dir=rtl] .nav-end.nav-end-me-0{margin-left:0!important}@media (max-width: 576px){.navbar-expand-sm .search-form{margin-top:.5rem!important}.navbar-expand-sm .nav-end .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .nav-end.nav-end-me-0{margin-right:0!important}}@media (max-width: 768px){.navbar-expand-md .search-form{margin-top:.5rem!important}.navbar-expand-md .nav-end .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .nav-end.nav-end-me-0{margin-right:0!important}}@media (max-width: 992px){.navbar-expand-lg .search-form{margin-top:.5rem!important}.navbar-expand-lg .nav-end .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .nav-end.nav-end-me-0{margin-right:0!important}}@media (max-width: 1200px){.navbar-expand-xlg .search-form{margin-top:.5rem!important}.navbar-expand-xlg .nav-end .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xlg .nav-end.nav-end-me-0{margin-right:0!important}}@media (max-width: 1400px){.navbar-expand-xxlg .search-form{margin-top:.5rem!important}.navbar-expand-xxlg .nav-end .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxlg .nav-end.nav-end-me-0{margin-right:0!important}}@media (min-width: 576px){.navbar-expand-sm .navbar-nav{margin-bottom:0!important}}@media (min-width: 768px){.navbar-expand-md .navbar-nav{margin-bottom:0!important}}@media (min-width: 992px){.navbar-expand-lg .navbar-nav{margin-bottom:0!important}}@media (min-width: 1200px){.navbar-expand-xlg .navbar-nav{margin-bottom:0!important}}@media (min-width: 1400px){.navbar-expand-xxlg .navbar-nav{margin-bottom:0!important}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] });
|
|
44
49
|
}
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: YsNavbarComponent, decorators: [{
|
|
46
51
|
type: Component,
|
|
47
|
-
args: [{ selector: 'ys-navbar',
|
|
52
|
+
args: [{ selector: 'ys-navbar', imports: [
|
|
48
53
|
NgIf,
|
|
49
54
|
NgFor,
|
|
50
55
|
NgClass,
|
|
@@ -52,18 +57,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
52
57
|
RouterLinkActive,
|
|
53
58
|
ReactiveFormsModule,
|
|
54
59
|
NgbTooltipModule
|
|
55
|
-
], template: "<nav class=\"navbar\" [ngClass]=\"styleClass\" [attr.data-bs-theme]=\"theme\">\r\n <div class=\"container-fluid\">\r\n <button *ngIf=\"sidebarToggler\" class=\"sidebar-toggler me-2\" type=\"button\" (click)=\"onToggleSidebar()\">\r\n <i class=\"{{sidebarTogglerIconClass}} sidebar-toggler-icon p-1\" [ngClass]=\"{'toggled': sidebarToggled}\"></i>\r\n </button>\r\n\r\n <a class=\"navbar-brand\" [ngClass]=\"{'me-auto': items.length <= 0}\" href=\"{{brand?.href}}\">\r\n <img *ngIf=\"brand?.src\" src=\"{{brand?.src}}\" alt=\"{{brand?.alt}}\" width=\"30\" height=\"24\">\r\n {{brand?.label}}\r\n </a>\r\n <button *ngIf=\"items.length > 0 || sideItems.length > 0 || search\" class=\"navbar-toggler ms-auto\" type=\"button\"\r\n data-bs-toggle=\"collapse\" [attr.data-bs-target]=\"'#' + id\" [attr.aria-controls]=\"id\" aria-expanded=\"false\"\r\n aria-label=\"Toggle navigation\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n\r\n <div class=\"collapse navbar-collapse\" [id]=\"id\">\r\n\r\n <ul *ngIf=\"items.length > 0\" class=\"navbar-nav me-auto\">\r\n <ng-container *ngFor=\"let navItem of items\">\r\n <li *ngIf=\"!isDropdown(navItem)\" class=\"nav-item\">\r\n <a class=\"nav-link\" [routerLink]=\"navItem.routerLink\" [routerLinkActive]=\"['active']\"\r\n ngbTooltip=\"{{navItem.tooltipLabel}}\">\r\n <i *ngIf=\"navItem.iconClass\" class=\"pe-2 {{navItem.iconClass}}\"></i>\r\n {{navItem.label}}\r\n <span class=\"visually-hidden\">(current)</span>\r\n </a>\r\n </li>\r\n\r\n <li *ngIf=\"isDropdown(navItem)\" class=\"nav-item dropdown\">\r\n <a class=\"nav-link dropdown-toggle\" ngbTooltip=\"{{navItem.tooltipLabel}}\" data-bs-toggle=\"dropdown\"\r\n role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <i *ngIf=\"navItem.iconClass\" class=\"pe-2 {{navItem.iconClass}}\"></i>\r\n <span *ngIf=\"navItem.label\">{{navItem.label}}</span>\r\n </a>\r\n <div class=\"dropdown-menu px-2\">\r\n <ng-container *ngFor=\"let navSubItem of navItem.items\">\r\n\r\n <a *ngIf=\"!navSubItem.isDivider\" class=\"dropdown-item rounded\" [routerLink]=\"navSubItem.routerLink\"\r\n [routerLinkActive]=\"['active']\" ngbTooltip=\"{{navSubItem.tooltipLabel}}\">\r\n <i *ngIf=\"navSubItem.iconClass\" class=\"me-2 {{navSubItem.iconClass}}\"></i>\r\n <span *ngIf=\"navSubItem.label\">{{navSubItem.label}}</span>\r\n </a>\r\n\r\n <div *ngIf=\"navSubItem.isDivider\" class=\"dropdown-divider\"></div>\r\n\r\n </ng-container>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n\r\n <ul *ngIf=\"sideItems.length > 0\" class=\"navbar-nav flex-row ms-auto nav-side\" [ngClass]=\"{'me-md-2': search}\">\r\n <ng-container *ngFor=\"let sideItem of sideItems\">\r\n\r\n <li *ngIf=\"!isDropdown(sideItem)\" class=\"nav-item\">\r\n <a class=\"nav-link\" [routerLink]=\"sideItem.routerLink\" [routerLinkActive]=\"['active']\"\r\n (click)=\"sideItem.onClick && sideItem.onClick($event)\" role=\"button\"\r\n ngbTooltip=\"{{sideItem.tooltipLabel}}\">\r\n <i *ngIf=\"sideItem.iconClass\" class=\"pe-2 {{sideItem.iconClass}}\"></i>\r\n <span *ngIf=\"sideItem.label\">{{sideItem.label}}</span>\r\n </a>\r\n </li>\r\n\r\n <li *ngIf=\"isDropdown(sideItem)\" class=\"nav-item dropdown\">\r\n <a class=\"nav-link dropdown-toggle\" ngbTooltip=\"{{sideItem.tooltipLabel}}\" data-bs-toggle=\"dropdown\"\r\n data-bs-display=\"static\" aria-expanded=\"false\" role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <i *ngIf=\"sideItem.iconClass\" class=\"pe-2 {{sideItem.iconClass}}\"></i>\r\n <span *ngIf=\"sideItem.label\">{{sideItem.label}}</span>\r\n </a>\r\n <div class=\"dropdown-menu px-2 dropdown-menu-end\">\r\n <ng-container *ngFor=\"let sideItemSubItem of sideItem.items\">\r\n\r\n <a *ngIf=\"!sideItemSubItem.isDivider\" class=\"dropdown-item text-center rounded\"\r\n [routerLink]=\"sideItemSubItem.routerLink\" [routerLinkActive]=\"['active']\"\r\n (click)=\"sideItemSubItem.onClick && sideItemSubItem.onClick($event)\" role=\"button\"\r\n ngbTooltip=\"{{sideItemSubItem.tooltipLabel}}\">\r\n <i *ngIf=\"sideItemSubItem.iconClass\" class=\"me-2 {{sideItemSubItem.iconClass}}\"></i>\r\n <span *ngIf=\"sideItemSubItem.label\">{{sideItemSubItem.label}}</span>\r\n </a>\r\n\r\n <div *ngIf=\"sideItemSubItem.isDivider\" class=\"dropdown-divider\"></div>\r\n\r\n </ng-container>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <form *ngIf=\"search\" class=\"d-flex mt-2 mt-md-0\" [ngClass]=\"{'ms-auto': sideItems.length <= 0}\"\r\n [formGroup]=\"searchForm\" (submit)=\"submitSearch()\">\r\n <input class=\"form-control me-sm-2\" type=\"search\" placeholder=\"{{searchPlaceholder}}\"\r\n formControlName=\"searchValue\">\r\n <button class=\"btn btn-secondary my-2 my-sm-0\" type=\"submit\">\r\n <i *ngIf=\"searchIconClass\" class=\"{{searchIconClass}}\"></i>\r\n <span *ngIf=\"searchLabel\">{{searchLabel}}</span>\r\n </button>\r\n </form>\r\n </div>\r\n </div>\r\n</nav>", styles: [".sidebar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}.sidebar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}.sidebar-toggler-icon.toggled{-webkit-transform:scaleX(-1);transform:scaleX(-1)}@media (max-width: 768px){.nav-side .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}}::ng-deep html[dir=rtl] .sidebar-toggler-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}::ng-deep html[dir=rtl] .sidebar-toggler-icon.toggled{-webkit-transform:scaleX(1);transform:scaleX(1)}\n"] }]
|
|
60
|
+
], template: "<nav class=\"navbar navbar-expand-lg bg-primary\" [ngClass]=\"styleClass\" [attr.data-bs-theme]=\"theme\">\r\n <div class=\"container-fluid\">\r\n\r\n <button *ngIf=\"isSidebarToggler\" class=\"sidebar-toggler me-2\" type=\"button\" (click)=\"onToggleSidebar()\"\r\n aria-expanded=\"false\" aria-label=\"Toggle sidebar\" [ngClass]=\"{'toggled': isSidebarToggled}\">\r\n <i class=\"{{sidebarTogglerIconClass}} sidebar-toggler-icon p-1\"></i>\r\n </button>\r\n\r\n <a class=\"navbar-brand\" [ngClass]=\"{'me-auto': !items.length}\" href=\"{{brand?.href}}\">\r\n <img *ngIf=\"brand?.src\" src=\"{{brand?.src}}\" alt=\"{{brand?.alt}}\" width=\"{{brand?.width}}\"\r\n height=\"{{brand?.height}}\">\r\n {{brand?.label}}\r\n </a>\r\n\r\n <button *ngIf=\"items.length || endItems.length || search\" class=\"navbar-toggler ms-auto\" type=\"button\"\r\n data-bs-toggle=\"collapse\" [attr.data-bs-target]=\"'#' + id\" [attr.aria-controls]=\"id\" aria-expanded=\"false\"\r\n aria-label=\"Toggle navigation\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n\r\n <div class=\"collapse navbar-collapse\" [id]=\"id\">\r\n\r\n <ul *ngIf=\"items.length\" class=\"navbar-nav me-auto\" [ngClass]=\"{'mb-2': isSearch}\">\r\n <ng-container *ngFor=\"let navItem of items\">\r\n\r\n <li *ngIf=\"!isDropdown(navItem)\" class=\"nav-item\">\r\n <a class=\"nav-link\" [ngClass]=\"{'disabled': navItem.disabled}\"\r\n (click)=\"navItem.onClick && navItem.onClick($event)\" [attr.aria-disabled]=\"navItem.disabled\"\r\n [routerLink]=\"navItem.routerLink\" [routerLinkActive]=\"['active']\"\r\n ngbTooltip=\"{{navItem.tooltipLabel}}\" aria-current=\"page\">\r\n\r\n <i *ngIf=\"navItem.iconClass\" class=\"pe-2 {{navItem.iconClass}}\"></i>\r\n\r\n {{navItem.label}}\r\n\r\n </a>\r\n </li>\r\n\r\n <li *ngIf=\"isDropdown(navItem)\" class=\"nav-item dropdown\">\r\n <a class=\"nav-link dropdown-toggle\" [ngClass]=\"{'disabled': navItem.disabled}\"\r\n [attr.aria-disabled]=\"navItem.disabled\" ngbTooltip=\"{{navItem.tooltipLabel}}\"\r\n data-bs-toggle=\"dropdown\" role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n\r\n <i *ngIf=\"navItem.iconClass\" class=\"pe-2 {{navItem.iconClass}}\"></i>\r\n\r\n <span *ngIf=\"navItem.label\">{{navItem.label}}</span>\r\n\r\n </a>\r\n <ul class=\"dropdown-menu px-2\">\r\n <li *ngFor=\"let navSubItem of navItem.items\">\r\n\r\n <a *ngIf=\"!navSubItem.isDivider\" class=\"dropdown-item rounded\"\r\n (click)=\"navSubItem.onClick && navSubItem.onClick($event)\"\r\n [ngClass]=\"{'disabled': navSubItem.disabled}\"\r\n [attr.aria-disabled]=\"navItem.disabled\" [routerLink]=\"navSubItem.routerLink\"\r\n [routerLinkActive]=\"['active']\" ngbTooltip=\"{{navSubItem.tooltipLabel}}\">\r\n\r\n <i *ngIf=\"navSubItem.iconClass\" class=\"me-2 {{navSubItem.iconClass}}\"></i>\r\n\r\n <span *ngIf=\"navSubItem.label\">{{navSubItem.label}}</span>\r\n\r\n </a>\r\n\r\n <hr *ngIf=\"navSubItem.isDivider\" class=\"dropdown-divider\">\r\n\r\n </li>\r\n </ul>\r\n </li>\r\n\r\n </ng-container>\r\n\r\n </ul>\r\n\r\n <ul *ngIf=\"endItems.length > 0\" class=\"navbar-nav flex-row ms-auto nav-end me-2\" [ngClass]=\"{'nav-end-me-0': search}\">\r\n <ng-container *ngFor=\"let endItem of endItems\">\r\n\r\n <li *ngIf=\"!isDropdown(endItem)\" class=\"nav-item\">\r\n <a class=\"nav-link\" [routerLink]=\"endItem.routerLink\" [routerLinkActive]=\"['active']\"\r\n (click)=\"endItem.onClick && endItem.onClick($event)\" role=\"button\"\r\n ngbTooltip=\"{{endItem.tooltipLabel}}\">\r\n <i *ngIf=\"endItem.iconClass\" class=\"pe-2 {{endItem.iconClass}}\"></i>\r\n <span *ngIf=\"endItem.label\">{{endItem.label}}</span>\r\n </a>\r\n </li>\r\n\r\n <li *ngIf=\"isDropdown(endItem)\" class=\"nav-item dropdown\">\r\n <a class=\"nav-link dropdown-toggle\" ngbTooltip=\"{{endItem.tooltipLabel}}\"\r\n data-bs-toggle=\"dropdown\" data-bs-display=\"static\" aria-expanded=\"false\" role=\"button\"\r\n aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <i *ngIf=\"endItem.iconClass\" class=\"pe-2 {{endItem.iconClass}}\"></i>\r\n <span *ngIf=\"endItem.label\">{{endItem.label}}</span>\r\n </a>\r\n <div class=\"dropdown-menu px-2 dropdown-menu-end\">\r\n <ng-container *ngFor=\"let endItemSubItem of endItem.items\">\r\n\r\n <a *ngIf=\"!endItemSubItem.isDivider\" class=\"dropdown-item text-center rounded\"\r\n [routerLink]=\"endItemSubItem.routerLink\" [routerLinkActive]=\"['active']\"\r\n (click)=\"endItemSubItem.onClick && endItemSubItem.onClick($event)\" role=\"button\"\r\n ngbTooltip=\"{{endItemSubItem.tooltipLabel}}\">\r\n <i *ngIf=\"endItemSubItem.iconClass\" class=\"me-2 {{endItemSubItem.iconClass}}\"></i>\r\n <span *ngIf=\"endItemSubItem.label\">{{endItemSubItem.label}}</span>\r\n </a>\r\n\r\n <div *ngIf=\"endItemSubItem.isDivider\" class=\"dropdown-divider\"></div>\r\n\r\n </ng-container>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n\r\n <form *ngIf=\"isSearch\" class=\"search-form d-flex\" role=\"search\" [ngClass]=\"{'ms-auto': !endItems.length}\"\r\n [formGroup]=\"searchForm\" (submit)=\"submitSearch()\">\r\n <input name=\"searchValue\" id=\"searchValue\" formControlName=\"searchValue\" class=\"form-control me-2\" type=\"search\"\r\n placeholder=\"{{searchPlaceholder}}\" aria-label=\"Search\">\r\n <button name=\"submitBtn\" class=\"btn btn-outline-success\" type=\"submit\">\r\n <i *ngIf=\"searchIconClass\" class=\"{{searchIconClass}}\"></i>\r\n <span *ngIf=\"searchLabel\">{{searchLabel}}</span>\r\n </button>\r\n </form>\r\n\r\n <!-- <form *ngIf=\"search\" class=\"d-flex mt-2 mt-md-0\" [ngClass]=\"{'ms-auto': endItems.length <= 0}\"\r\n [formGroup]=\"searchForm\" (submit)=\"submitSearch()\">\r\n <input class=\"form-control me-sm-2\" type=\"search\" placeholder=\"{{searchPlaceholder}}\"\r\n formControlName=\"searchValue\">\r\n <button class=\"btn btn-secondary my-2 my-sm-0\" type=\"submit\">\r\n <i *ngIf=\"searchIconClass\" class=\"{{searchIconClass}}\"></i>\r\n <span *ngIf=\"searchLabel\">{{searchLabel}}</span>\r\n </button>\r\n </form> -->\r\n </div>\r\n </div>\r\n</nav>", styles: [".sidebar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}.sidebar-toggler.toggled .sidebar-toggler-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}@media (prefers-reduced-motion: reduce){.sidebar-toggler{transition:none}}.sidebar-toggler:hover{text-decoration:none}.sidebar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.sidebar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}::ng-deep html[dir=rtl] .sidebar-toggler{-webkit-transform:scaleX(-1);transform:scaleX(-1)}::ng-deep html[dir=rtl] .sidebar-toggler.toggled .sidebar-toggler-icon{-webkit-transform:scaleX(1);transform:scaleX(1)}::ng-deep html[dir=rtl] .nav-end .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:0!important}::ng-deep html[dir=rtl] .nav-end.nav-end-me-0{margin-left:0!important}@media (max-width: 576px){.navbar-expand-sm .search-form{margin-top:.5rem!important}.navbar-expand-sm .nav-end .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .nav-end.nav-end-me-0{margin-right:0!important}}@media (max-width: 768px){.navbar-expand-md .search-form{margin-top:.5rem!important}.navbar-expand-md .nav-end .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .nav-end.nav-end-me-0{margin-right:0!important}}@media (max-width: 992px){.navbar-expand-lg .search-form{margin-top:.5rem!important}.navbar-expand-lg .nav-end .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .nav-end.nav-end-me-0{margin-right:0!important}}@media (max-width: 1200px){.navbar-expand-xlg .search-form{margin-top:.5rem!important}.navbar-expand-xlg .nav-end .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xlg .nav-end.nav-end-me-0{margin-right:0!important}}@media (max-width: 1400px){.navbar-expand-xxlg .search-form{margin-top:.5rem!important}.navbar-expand-xxlg .nav-end .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxlg .nav-end.nav-end-me-0{margin-right:0!important}}@media (min-width: 576px){.navbar-expand-sm .navbar-nav{margin-bottom:0!important}}@media (min-width: 768px){.navbar-expand-md .navbar-nav{margin-bottom:0!important}}@media (min-width: 992px){.navbar-expand-lg .navbar-nav{margin-bottom:0!important}}@media (min-width: 1200px){.navbar-expand-xlg .navbar-nav{margin-bottom:0!important}}@media (min-width: 1400px){.navbar-expand-xxlg .navbar-nav{margin-bottom:0!important}}\n"] }]
|
|
56
61
|
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { id: [{
|
|
57
62
|
type: Input
|
|
58
63
|
}], theme: [{
|
|
59
64
|
type: Input
|
|
60
65
|
}], styleClass: [{
|
|
61
66
|
type: Input
|
|
67
|
+
}], brand: [{
|
|
68
|
+
type: Input
|
|
62
69
|
}], items: [{
|
|
63
70
|
type: Input
|
|
64
|
-
}],
|
|
71
|
+
}], endItems: [{
|
|
65
72
|
type: Input
|
|
66
|
-
}],
|
|
73
|
+
}], isSearch: [{
|
|
67
74
|
type: Input
|
|
68
75
|
}], searchLabel: [{
|
|
69
76
|
type: Input
|
|
@@ -71,17 +78,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
71
78
|
type: Input
|
|
72
79
|
}], searchPlaceholder: [{
|
|
73
80
|
type: Input
|
|
74
|
-
}],
|
|
75
|
-
type: Input
|
|
76
|
-
}], sidebarToggler: [{
|
|
81
|
+
}], isSidebarToggler: [{
|
|
77
82
|
type: Input
|
|
78
|
-
}],
|
|
83
|
+
}], isSidebarToggled: [{
|
|
79
84
|
type: Input
|
|
80
85
|
}], sidebarTogglerIconClass: [{
|
|
81
86
|
type: Input
|
|
82
87
|
}], toggleSidebar: [{
|
|
83
88
|
type: Output
|
|
84
|
-
}],
|
|
89
|
+
}], search: [{
|
|
85
90
|
type: Output
|
|
86
91
|
}] } });
|
|
87
92
|
|