barsa-develop-components 0.0.2 → 0.0.3
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/esm2020/lib/accept-reject/accept-reject.component.mjs +69 -0
- package/esm2020/lib/avatar/avatar.component.mjs +3 -3
- package/esm2020/lib/barcode-reader/barcode-reader.component.mjs +1 -1
- package/esm2020/lib/barcode-reader-dialog/barcode-reader-dialog.component.mjs +1 -1
- package/esm2020/lib/barcode-reader-video/barcode-reader-video.component.mjs +1 -1
- package/esm2020/lib/barsa-develop-components.module.mjs +36 -4
- package/esm2020/lib/barsa-document-list-item/barsa-document-list-item.component.mjs +104 -0
- package/esm2020/lib/barsa-documents/barsa-documents.component.mjs +173 -0
- package/esm2020/lib/card-content-image-and-title/card-content-image-and-title.component.mjs +3 -3
- package/esm2020/lib/card-content-line-chart/card-content-line-chart.component.mjs +3 -3
- package/esm2020/lib/card-header-kpi/card-header-kpi.component.mjs +3 -3
- package/esm2020/lib/card-header-logo-title-subtitle/card-header-logo-title-subtitle.component.mjs +1 -1
- package/esm2020/lib/checkbox-button/checkbox-button.component.mjs +3 -3
- package/esm2020/lib/enum-info-micro-proccess-flow/enum-info-micro-proccess-flow.component.mjs +3 -3
- package/esm2020/lib/footer/footer.component.mjs +41 -0
- package/esm2020/lib/form-chart-content/form-chart-content.component.mjs +3 -3
- package/esm2020/lib/form-content-quick-view/form-content-quick-view.component.mjs +14 -5
- package/esm2020/lib/g4b-details/g4b-details.component.mjs +3 -3
- package/esm2020/lib/g4b-estelam/g4b-estelam.component.mjs +3 -3
- package/esm2020/lib/login-form/login-form.component.mjs +17 -12
- package/esm2020/lib/login-social-conncetions/login-social-conncetions.component.mjs +3 -3
- package/esm2020/lib/master-detail-card-form/master-detail-card-form.component.mjs +17 -0
- package/esm2020/lib/media-file-uploader/media-file-uploader.component.mjs +238 -0
- package/esm2020/lib/micro-proccess-flow/micro-proccess-flow.component.mjs +12 -7
- package/esm2020/lib/micro-process-flow-view/micro-process-flow-view.component.mjs +1 -1
- package/esm2020/lib/mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component.mjs +3 -3
- package/esm2020/lib/models/document-item.mjs +2 -0
- package/esm2020/lib/models/documents-setting.mjs +2 -0
- package/esm2020/lib/models/index.mjs +7 -0
- package/esm2020/lib/models/micro-process-flow-view-setting.mjs +2 -0
- package/esm2020/lib/models/service-desk-view-of-services-setting.mjs +2 -0
- package/esm2020/lib/models/tab-process-view-setting.mjs +2 -0
- package/esm2020/lib/pipes/datasource-to-flow-item.mjs +1 -1
- package/esm2020/lib/pipes/index.mjs +1 -1
- package/esm2020/lib/pipes/mo-list-to-flow-item.pipe.mjs +1 -1
- package/esm2020/lib/query-string-form-observable/query-string-form-observable.component.mjs +1 -1
- package/esm2020/lib/query-string-observable/query-string-observable.component.mjs +1 -1
- package/esm2020/lib/report-button-view/report-button-view.component.mjs +38 -0
- package/esm2020/lib/report-line-chart-view/report-line-chart-view.component.mjs +3 -3
- package/esm2020/lib/report-tab-view/report-tab-view.component.mjs +3 -3
- package/esm2020/lib/resend-verification-code/resend-verification-code.component.mjs +3 -3
- package/esm2020/lib/service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component.mjs +1 -1
- package/esm2020/lib/service-desk-header/service-desk-header.component.mjs +7 -6
- package/esm2020/lib/service-desk-servcie-detail/service-desk-servcie-detail.component.mjs +3 -3
- package/esm2020/lib/service-desk-view-of-services/service-desk-view-of-services.component.mjs +3 -3
- package/esm2020/lib/setting-form/setting-form.component.mjs +3 -3
- package/esm2020/lib/subform-in-row-report/subform-in-row-report.component.mjs +24 -0
- package/esm2020/lib/tab-process-view/tab-process-view.component.mjs +1 -1
- package/esm2020/lib/table-view-vertical-columns/table-view-vertical-columns.component.mjs +4 -3
- package/esm2020/lib/timer-count-down/timer-count-down.component.mjs +6 -6
- package/esm2020/lib/ui-enum-segmented-button/ui-enum-segmented-button.component.mjs +1 -1
- package/esm2020/lib/ui-num-rate/ui-num-rate.component.mjs +3 -3
- package/esm2020/lib/ui-person/ui-person.component.mjs +1 -1
- package/esm2020/lib/ui-pictures-carousel/ui-pictures-carousel.component.mjs +3 -3
- package/esm2020/lib/ui-text-field-search/ui-text-field-search.component.mjs +16 -5
- package/esm2020/lib/ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component.mjs +1 -1
- package/esm2020/public-api.mjs +9 -1
- package/fesm2015/barsa-develop-components.mjs +812 -116
- package/fesm2015/barsa-develop-components.mjs.map +1 -1
- package/fesm2020/barsa-develop-components.mjs +803 -114
- package/fesm2020/barsa-develop-components.mjs.map +1 -1
- package/lib/accept-reject/accept-reject.component.d.ts +28 -0
- package/lib/barsa-develop-components.module.d.ts +30 -18
- package/lib/barsa-document-list-item/barsa-document-list-item.component.d.ts +39 -0
- package/lib/barsa-documents/barsa-documents.component.d.ts +47 -0
- package/lib/footer/footer.component.d.ts +15 -0
- package/lib/form-content-quick-view/form-content-quick-view.component.d.ts +1 -0
- package/lib/login-form/login-form.component.d.ts +3 -1
- package/lib/master-detail-card-form/master-detail-card-form.component.d.ts +8 -0
- package/lib/media-file-uploader/media-file-uploader.component.d.ts +52 -0
- package/lib/micro-proccess-flow/micro-proccess-flow.component.d.ts +7 -1
- package/lib/micro-process-flow-view/micro-process-flow-view.component.d.ts +1 -1
- package/lib/models/document-item.d.ts +19 -0
- package/lib/models/documents-setting.d.ts +11 -0
- package/lib/models/index.d.ts +6 -0
- package/lib/models/micro-process-flow-view-setting.d.ts +8 -0
- package/lib/models/service-desk-view-of-services-setting.d.ts +6 -0
- package/lib/models/tab-process-view-setting.d.ts +7 -0
- package/lib/report-button-view/report-button-view.component.d.ts +12 -0
- package/lib/service-desk-header/service-desk-header.component.d.ts +2 -1
- package/lib/service-desk-view-of-services/service-desk-view-of-services.component.d.ts +1 -1
- package/lib/subform-in-row-report/subform-in-row-report.component.d.ts +10 -0
- package/lib/tab-process-view/tab-process-view.component.d.ts +1 -1
- package/lib/ui-text-field-search/ui-text-field-search.component.d.ts +3 -0
- package/package.json +1 -1
- package/public-api.d.ts +8 -0
- package/esm2020/lib/models/models.mjs +0 -2
- package/lib/models/models.d.ts +0 -19
|
@@ -22,9 +22,9 @@ export class G4bEstelamComponent extends BaseItemContentPropsComponent {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
G4bEstelamComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: G4bEstelamComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
-
G4bEstelamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: G4bEstelamComponent, selector: "bdc-g4b-estelam", usesInheritance: true, ngImport: i0, template: "<div fd-form-item class=\"textarea\">\n <label fd-form-label for=\"input-2\">\u067E\u0627\u0633\u062E \u0627\u0633\u062A\u0639\u0644\u0627\u0645</label>\n <textarea fd-form-control style=\"height: 1.8rem\"></textarea>\n</div>\n\n<div fd-form-item>\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\n <fd-segmented-button [(ngModel)]=\"natijeh\" (click)=\"onClick($event)\">\n <button fd-button [label]=\"'\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u067E\u0627\u0633\u062E'\" value=\"1\" [fdType]=\"'standard'\"></button>\n <button fd-button [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"2\" [fdType]=\"'positive'\"></button>\n <button fd-button [label]=\"'\u0631\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"3\" [fdType]=\"'negative'\"></button>\n </fd-segmented-button>\n</div>\n<!-- <div fd-form-item>\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\n <fd-select placeholder=\"Select value\" stateMessage=\"Success message\" state=\"success\">\n <li fd-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</div> -->\n", styles: [":host{display:flex;column-gap:1rem;padding:1rem 0}fd-segmented-button{margin:.1875rem 0}.textarea{flex-grow:1}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i3.TextareaFormControlDirective, selector: "textarea[fd-form-control]" }, { kind: "component", type: i3.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i3.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i4.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
25
|
+
G4bEstelamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: G4bEstelamComponent, selector: "bdc-g4b-estelam", usesInheritance: true, ngImport: i0, template: "<div fd-form-item class=\"textarea\">\r\n <label fd-form-label for=\"input-2\">\u067E\u0627\u0633\u062E \u0627\u0633\u062A\u0639\u0644\u0627\u0645</label>\r\n <textarea fd-form-control style=\"height: 1.8rem\"></textarea>\r\n</div>\r\n\r\n<div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-segmented-button [(ngModel)]=\"natijeh\" (click)=\"onClick($event)\">\r\n <button fd-button [label]=\"'\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u067E\u0627\u0633\u062E'\" value=\"1\" [fdType]=\"'standard'\"></button>\r\n <button fd-button [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"2\" [fdType]=\"'positive'\"></button>\r\n <button fd-button [label]=\"'\u0631\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"3\" [fdType]=\"'negative'\"></button>\r\n </fd-segmented-button>\r\n</div>\r\n<!-- <div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-select placeholder=\"Select value\" stateMessage=\"Success message\" state=\"success\">\r\n <li fd-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</li>\r\n </fd-select>\r\n</div> -->\r\n", styles: [":host{display:flex;column-gap:1rem;padding:1rem 0}fd-segmented-button{margin:.1875rem 0}.textarea{flex-grow:1}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i3.TextareaFormControlDirective, selector: "textarea[fd-form-control]" }, { kind: "component", type: i3.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i3.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i4.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
26
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: G4bEstelamComponent, decorators: [{
|
|
27
27
|
type: Component,
|
|
28
|
-
args: [{ selector: 'bdc-g4b-estelam', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div fd-form-item class=\"textarea\">\n <label fd-form-label for=\"input-2\">\u067E\u0627\u0633\u062E \u0627\u0633\u062A\u0639\u0644\u0627\u0645</label>\n <textarea fd-form-control style=\"height: 1.8rem\"></textarea>\n</div>\n\n<div fd-form-item>\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\n <fd-segmented-button [(ngModel)]=\"natijeh\" (click)=\"onClick($event)\">\n <button fd-button [label]=\"'\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u067E\u0627\u0633\u062E'\" value=\"1\" [fdType]=\"'standard'\"></button>\n <button fd-button [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"2\" [fdType]=\"'positive'\"></button>\n <button fd-button [label]=\"'\u0631\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"3\" [fdType]=\"'negative'\"></button>\n </fd-segmented-button>\n</div>\n<!-- <div fd-form-item>\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\n <fd-select placeholder=\"Select value\" stateMessage=\"Success message\" state=\"success\">\n <li fd-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</div> -->\n", styles: [":host{display:flex;column-gap:1rem;padding:1rem 0}fd-segmented-button{margin:.1875rem 0}.textarea{flex-grow:1}\n"] }]
|
|
28
|
+
args: [{ selector: 'bdc-g4b-estelam', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div fd-form-item class=\"textarea\">\r\n <label fd-form-label for=\"input-2\">\u067E\u0627\u0633\u062E \u0627\u0633\u062A\u0639\u0644\u0627\u0645</label>\r\n <textarea fd-form-control style=\"height: 1.8rem\"></textarea>\r\n</div>\r\n\r\n<div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-segmented-button [(ngModel)]=\"natijeh\" (click)=\"onClick($event)\">\r\n <button fd-button [label]=\"'\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u067E\u0627\u0633\u062E'\" value=\"1\" [fdType]=\"'standard'\"></button>\r\n <button fd-button [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"2\" [fdType]=\"'positive'\"></button>\r\n <button fd-button [label]=\"'\u0631\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"3\" [fdType]=\"'negative'\"></button>\r\n </fd-segmented-button>\r\n</div>\r\n<!-- <div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-select placeholder=\"Select value\" stateMessage=\"Success message\" state=\"success\">\r\n <li fd-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</li>\r\n </fd-select>\r\n</div> -->\r\n", styles: [":host{display:flex;column-gap:1rem;padding:1rem 0}fd-segmented-button{margin:.1875rem 0}.textarea{flex-grow:1}\n"] }]
|
|
29
29
|
}] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZzRiLWVzdGVsYW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvZzRiLWVzdGVsYW0vZzRiLWVzdGVsYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvZzRiLWVzdGVsYW0vZzRiLWVzdGVsYW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNkJBQTZCLEVBQTJCLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVE5RixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsNkJBQXNEO0lBTi9GOztRQU9JLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFDWixZQUFPLEdBQUcsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUM7S0FVL0Q7SUFURyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztRQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQzs7Z0hBWFEsbUJBQW1CO29HQUFuQixtQkFBbUIsOEVDVGhDLG13Q0FtQkE7MkZEVmEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNJLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhc2VJdGVtQ29udGVudFByb3BzQ29tcG9uZW50LCBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZyB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiZGMtZzRiLWVzdGVsYW0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2c0Yi1lc3RlbGFtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2c0Yi1lc3RlbGFtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRzRiRXN0ZWxhbUNvbXBvbmVudCBleHRlbmRzIEJhc2VJdGVtQ29udGVudFByb3BzQ29tcG9uZW50PFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBuYXRpamVoID0gMTtcclxuICAgIG9wdGlvbnMgPSBbJ9ix2K8g2KfYs9iq2LnZhNin2YUnLCAn2KrYp9uM24zYryDYp9iz2KrYudmE2KfZhScsICfYr9ixINin2YbYqti42KfYsSDZvtin2LPYriddO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIH1cclxuICAgIG9uQ2xpY2soZSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tlZCkge1xyXG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgZmQtZm9ybS1pdGVtIGNsYXNzPVwidGV4dGFyZWFcIj5cclxuICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsIGZvcj1cImlucHV0LTJcIj7Zvtin2LPYriDYp9iz2KrYudmE2KfZhTwvbGFiZWw+XHJcbiAgICA8dGV4dGFyZWEgZmQtZm9ybS1jb250cm9sIHN0eWxlPVwiaGVpZ2h0OiAxLjhyZW1cIj48L3RleHRhcmVhPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgZmQtZm9ybS1pdGVtPlxyXG4gICAgPGxhYmVsIGZkLWZvcm0tbGFiZWwgZm9yPVwiaW5wdXQtMlwiPtmI2LbYuduM2Ko8L2xhYmVsPlxyXG4gICAgPGZkLXNlZ21lbnRlZC1idXR0b24gWyhuZ01vZGVsKV09XCJuYXRpamVoXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtsYWJlbF09XCIn2K/YsSDYp9mG2KrYuNin2LEg2b7Yp9iz2K4nXCIgdmFsdWU9XCIxXCIgW2ZkVHlwZV09XCInc3RhbmRhcmQnXCI+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gW2xhYmVsXT1cIifYqtin24zbjNivINin2LPYqti52YTYp9mFJ1wiIHZhbHVlPVwiMlwiIFtmZFR5cGVdPVwiJ3Bvc2l0aXZlJ1wiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtsYWJlbF09XCIn2LHYryDYp9iz2KrYudmE2KfZhSdcIiB2YWx1ZT1cIjNcIiBbZmRUeXBlXT1cIiduZWdhdGl2ZSdcIj48L2J1dHRvbj5cclxuICAgIDwvZmQtc2VnbWVudGVkLWJ1dHRvbj5cclxuPC9kaXY+XHJcbjwhLS0gPGRpdiBmZC1mb3JtLWl0ZW0+XHJcbiAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbCBmb3I9XCJpbnB1dC0yXCI+2YjYtti524zYqjwvbGFiZWw+XHJcbiAgICA8ZmQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiU2VsZWN0IHZhbHVlXCIgc3RhdGVNZXNzYWdlPVwiU3VjY2VzcyBtZXNzYWdlXCIgc3RhdGU9XCJzdWNjZXNzXCI+XHJcbiAgICAgICAgPGxpIGZkLW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+e3sgb3B0aW9uIH19PC9saT5cclxuICAgIDwvZmQtc2VsZWN0PlxyXG48L2Rpdj4gLS0+XHJcbiJdfQ==
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, HostListener } from '@angular/core';
|
|
2
|
-
import { map } from 'rxjs/operators';
|
|
3
|
-
import { FormBaseComponent, FormPanelService } from 'barsa-novin-ray-core';
|
|
2
|
+
import { map, takeUntil } from 'rxjs/operators';
|
|
3
|
+
import { BarsaApi, FormBaseComponent, FormPanelService } from 'barsa-novin-ray-core';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "barsa-novin-ray-core";
|
|
6
|
-
import * as i2 from "@angular/
|
|
7
|
-
import * as i3 from "
|
|
8
|
-
import * as i4 from "
|
|
9
|
-
import * as i5 from "@fundamental-ngx/core/
|
|
6
|
+
import * as i2 from "@angular/router";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
import * as i4 from "barsa-sap-ui";
|
|
9
|
+
import * as i5 from "@fundamental-ngx/core/dynamic-side-content";
|
|
10
|
+
import * as i6 from "@fundamental-ngx/core/layout-grid";
|
|
10
11
|
export class LoginFormComponent extends FormBaseComponent {
|
|
11
|
-
constructor(_controlUiPipe, _portalService, _formPanelService) {
|
|
12
|
+
constructor(_controlUiPipe, _portalService, _formPanelService, _activatedRoute) {
|
|
12
13
|
super(_formPanelService);
|
|
13
14
|
this._controlUiPipe = _controlUiPipe;
|
|
14
15
|
this._portalService = _portalService;
|
|
15
16
|
this._formPanelService = _formPanelService;
|
|
17
|
+
this._activatedRoute = _activatedRoute;
|
|
16
18
|
this.onKeyEnter = (_) => {
|
|
17
19
|
const layoutItem = this._controlUiPipe.transform(' ورود', this.layout94);
|
|
18
20
|
if (layoutItem) {
|
|
@@ -21,6 +23,9 @@ export class LoginFormComponent extends FormBaseComponent {
|
|
|
21
23
|
};
|
|
22
24
|
}
|
|
23
25
|
ngOnInit() {
|
|
26
|
+
this._activatedRoute.queryParams.pipe(takeUntil(this._onDestroy$)).subscribe((params) => {
|
|
27
|
+
BarsaApi.Bw.SetCultureByDisplayName(params.culture);
|
|
28
|
+
});
|
|
24
29
|
super.ngOnInit();
|
|
25
30
|
this.layout94$.subscribe((layout94) => {
|
|
26
31
|
this.layout94 = layout94;
|
|
@@ -37,13 +42,13 @@ export class LoginFormComponent extends FormBaseComponent {
|
|
|
37
42
|
}));
|
|
38
43
|
}
|
|
39
44
|
}
|
|
40
|
-
LoginFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginFormComponent, deps: [{ token: i1.ControlUiPipe }, { token: i1.PortalService }, { token: i1.FormPanelService }], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
-
LoginFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: LoginFormComponent, selector: "bdc-login-form", host: { listeners: { "keydown.enter": "onKeyEnter($event)" } }, providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mo$ | async as mo\">\n <bsu-mask *ngIf=\"mo.IsLogging\"></bsu-mask>\n <fd-layout-grid *ngIf=\"(size$ | async) === 'sm'; else sideContent\">\n <div [fdLayoutGridCol]=\"1\"></div>\n\n <div [fdLayoutGridCol]=\"10\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </div>\n\n <div [fdLayoutGridCol]=\"1\"></div>\n </fd-layout-grid>\n <ng-template #sideContent>\n <fd-dynamic-side-content [size]=\"(size$ | async)!!\">\n <fd-dynamic-side-content-side>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </fd-dynamic-side-content-side>\n <fd-dynamic-side-content-main>\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\n <bsu-layout-control\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\n [config]=\"layoutConfig\"\n [showLabel]=\"false\"\n [inlineEdit]=\"true\"\n \n ></bsu-layout-control>\n </ng-container> -->\n <div\n *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\"\n id=\"bgLogin\"\n [style.backgroundImage]=\"\n 'url(' +\n (mo.Background
|
|
45
|
+
LoginFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginFormComponent, deps: [{ token: i1.ControlUiPipe }, { token: i1.PortalService }, { token: i1.FormPanelService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
46
|
+
LoginFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: LoginFormComponent, selector: "bdc-login-form", host: { listeners: { "keydown.enter": "onKeyEnter($event)" } }, providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mo$ | async as mo\">\n <bsu-mask *ngIf=\"mo.IsLogging\"></bsu-mask>\n <fd-layout-grid *ngIf=\"(size$ | async) === 'sm'; else sideContent\">\n <div [fdLayoutGridCol]=\"1\"></div>\n\n <div [fdLayoutGridCol]=\"10\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </div>\n\n <div [fdLayoutGridCol]=\"1\"></div>\n </fd-layout-grid>\n <ng-template #sideContent>\n <fd-dynamic-side-content [size]=\"(size$ | async)!!\">\n <fd-dynamic-side-content-side>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </fd-dynamic-side-content-side>\n <fd-dynamic-side-content-main>\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\n <bsu-layout-control\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\n [config]=\"layoutConfig\"\n [showLabel]=\"false\"\n [inlineEdit]=\"true\"\n \n ></bsu-layout-control>\n </ng-container> -->\n <div\n *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\"\n id=\"bgLogin\"\n [style.backgroundImage]=\"\n 'url(' +\n (mo.Background?.FileId\n | picFieldSrc: 'PictureFileInfo':null:layoutConfig.FieldUi.Setting.FieldDefId) +\n ')'\n \"\n ></div>\n </fd-dynamic-side-content-main>\n </fd-dynamic-side-content>\n </ng-template>\n</ng-container>\n", styles: [":host{display:block;background-color:#fff}:host ::ng-deep bsu-ly-simple-label{text-align:center}:host ::ng-deep bsu-ly-simple-label:nth-of-type(1){margin-top:15px}:host ::ng-deep bsu-ui-picture-file{text-align:center}:host ::ng-deep .wrap-content>.container-field{max-width:100%!important}fd-dynamic-side-content{min-height:99vh}fd-dynamic-side-content-side{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}bsu-ly-layout-container-of-root{padding:0 1rem;box-sizing:border-box;display:flex;align-items:center;height:100%}#bgLogin{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}@media (max-width: 599px){:host ::ng-deep bsu-layout-control{min-width:auto!important}:host ::ng-deep bsu-ly-layout-container-of-root{padding:0}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i4.MaskComponent, selector: "bsu-mask", inputs: ["size", "marginTop"] }, { kind: "component", type: i5.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i5.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i5.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "component", type: i6.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i6.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
42
47
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginFormComponent, decorators: [{
|
|
43
48
|
type: Component,
|
|
44
|
-
args: [{ selector: 'bdc-login-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "<ng-container *ngIf=\"mo$ | async as mo\">\n <bsu-mask *ngIf=\"mo.IsLogging\"></bsu-mask>\n <fd-layout-grid *ngIf=\"(size$ | async) === 'sm'; else sideContent\">\n <div [fdLayoutGridCol]=\"1\"></div>\n\n <div [fdLayoutGridCol]=\"10\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </div>\n\n <div [fdLayoutGridCol]=\"1\"></div>\n </fd-layout-grid>\n <ng-template #sideContent>\n <fd-dynamic-side-content [size]=\"(size$ | async)!!\">\n <fd-dynamic-side-content-side>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </fd-dynamic-side-content-side>\n <fd-dynamic-side-content-main>\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\n <bsu-layout-control\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\n [config]=\"layoutConfig\"\n [showLabel]=\"false\"\n [inlineEdit]=\"true\"\n \n ></bsu-layout-control>\n </ng-container> -->\n <div\n *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\"\n id=\"bgLogin\"\n [style.backgroundImage]=\"\n 'url(' +\n (mo.Background
|
|
45
|
-
}], ctorParameters: function () { return [{ type: i1.ControlUiPipe }, { type: i1.PortalService }, { type: i1.FormPanelService }]; }, propDecorators: { onKeyEnter: [{
|
|
49
|
+
args: [{ selector: 'bdc-login-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "<ng-container *ngIf=\"mo$ | async as mo\">\n <bsu-mask *ngIf=\"mo.IsLogging\"></bsu-mask>\n <fd-layout-grid *ngIf=\"(size$ | async) === 'sm'; else sideContent\">\n <div [fdLayoutGridCol]=\"1\"></div>\n\n <div [fdLayoutGridCol]=\"10\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </div>\n\n <div [fdLayoutGridCol]=\"1\"></div>\n </fd-layout-grid>\n <ng-template #sideContent>\n <fd-dynamic-side-content [size]=\"(size$ | async)!!\">\n <fd-dynamic-side-content-side>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </fd-dynamic-side-content-side>\n <fd-dynamic-side-content-main>\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\n <bsu-layout-control\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\n [config]=\"layoutConfig\"\n [showLabel]=\"false\"\n [inlineEdit]=\"true\"\n \n ></bsu-layout-control>\n </ng-container> -->\n <div\n *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\"\n id=\"bgLogin\"\n [style.backgroundImage]=\"\n 'url(' +\n (mo.Background?.FileId\n | picFieldSrc: 'PictureFileInfo':null:layoutConfig.FieldUi.Setting.FieldDefId) +\n ')'\n \"\n ></div>\n </fd-dynamic-side-content-main>\n </fd-dynamic-side-content>\n </ng-template>\n</ng-container>\n", styles: [":host{display:block;background-color:#fff}:host ::ng-deep bsu-ly-simple-label{text-align:center}:host ::ng-deep bsu-ly-simple-label:nth-of-type(1){margin-top:15px}:host ::ng-deep bsu-ui-picture-file{text-align:center}:host ::ng-deep .wrap-content>.container-field{max-width:100%!important}fd-dynamic-side-content{min-height:99vh}fd-dynamic-side-content-side{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}bsu-ly-layout-container-of-root{padding:0 1rem;box-sizing:border-box;display:flex;align-items:center;height:100%}#bgLogin{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}@media (max-width: 599px){:host ::ng-deep bsu-layout-control{min-width:auto!important}:host ::ng-deep bsu-ly-layout-container-of-root{padding:0}}\n"] }]
|
|
50
|
+
}], ctorParameters: function () { return [{ type: i1.ControlUiPipe }, { type: i1.PortalService }, { type: i1.FormPanelService }, { type: i2.ActivatedRoute }]; }, propDecorators: { onKeyEnter: [{
|
|
46
51
|
type: HostListener,
|
|
47
52
|
args: ['keydown.enter', ['$event']]
|
|
48
53
|
}] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1kZXZlbG9wLWNvbXBvbmVudHMvc3JjL2xpYi9sb2dpbi1mb3JtL2xvZ2luLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvbG9naW4tZm9ybS9sb2dpbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFFBQVEsRUFBaUIsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQWlCLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7O0FBU25ILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFTckQsWUFDYyxjQUE2QixFQUM3QixjQUE2QixFQUM3QixpQkFBbUMsRUFDbkMsZUFBK0I7UUFFekMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFMZixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQVg3QyxlQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQVEsRUFBRTtZQUNyQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pFLElBQUksVUFBVSxFQUFFO2dCQUNaLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDN0Q7UUFDTCxDQUFDLENBQUM7SUFTRixDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEYsUUFBUSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUM3QyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNmLFFBQVEsVUFBVSxFQUFFO2dCQUNoQixLQUFLLEdBQUc7b0JBQ0osT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLEtBQUssR0FBRztvQkFDSixPQUFPLElBQUksQ0FBQztnQkFDaEI7b0JBQ0ksT0FBTyxJQUFJLENBQUM7YUFDbkI7UUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQzs7K0dBckNRLGtCQUFrQjttR0FBbEIsa0JBQWtCLHlHQUZoQixDQUFDLGdCQUFnQixDQUFDLGlEQ1hqQyxxcEVBZ0RBOzJGRG5DYSxrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0ksZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxnQkFBZ0IsQ0FBQzs0TEFJN0IsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQmFyc2FBcGksIENvbnRyb2xVaVBpcGUsIEZvcm1CYXNlQ29tcG9uZW50LCBGb3JtUGFuZWxTZXJ2aWNlLCBQb3J0YWxTZXJ2aWNlIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiZGMtbG9naW4tZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2xvZ2luLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtGb3JtUGFuZWxTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbkZvcm1Db21wb25lbnQgZXh0ZW5kcyBGb3JtQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXG4gICAgb25LZXlFbnRlciA9IChfKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IGxheW91dEl0ZW0gPSB0aGlzLl9jb250cm9sVWlQaXBlLnRyYW5zZm9ybSgnINmI2LHZiNivJywgdGhpcy5sYXlvdXQ5NCk7XG4gICAgICAgIGlmIChsYXlvdXRJdGVtKSB7XG4gICAgICAgICAgICBsYXlvdXRJdGVtLkZpZWxkVWkuZmlyZUV2ZW50KCdjbGljaycsIGxheW91dEl0ZW0uRmllbGRVaSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHNpemUkOiBPYnNlcnZhYmxlPCd4bCcgfCAnbWQnIHwgJ3NtJz47XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfY29udHJvbFVpUGlwZTogQ29udHJvbFVpUGlwZSxcbiAgICAgICAgcHJvdGVjdGVkIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX2Zvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9mb3JtUGFuZWxTZXJ2aWNlKTtcbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgQmFyc2FBcGkuQncuU2V0Q3VsdHVyZUJ5RGlzcGxheU5hbWUocGFyYW1zLmN1bHR1cmUpO1xuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5sYXlvdXQ5NCQuc3Vic2NyaWJlKChsYXlvdXQ5NCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXQ5NCA9IGxheW91dDk0O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zaXplJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQucGlwZShcbiAgICAgICAgICAgIG1hcCgoZGV2aWNlU2l6ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZGV2aWNlU2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnc20nO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnbWQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd4bCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibW8kIHwgYXN5bmMgYXMgbW9cIj5cbiAgICA8YnN1LW1hc2sgKm5nSWY9XCJtby5Jc0xvZ2dpbmdcIj48L2JzdS1tYXNrPlxuICAgIDxmZC1sYXlvdXQtZ3JpZCAqbmdJZj1cIihzaXplJCB8IGFzeW5jKSA9PT0gJ3NtJzsgZWxzZSBzaWRlQ29udGVudFwiPlxuICAgICAgICA8ZGl2IFtmZExheW91dEdyaWRDb2xdPVwiMVwiPjwvZGl2PlxuXG4gICAgICAgIDxkaXYgW2ZkTGF5b3V0R3JpZENvbF09XCIxMFwiPlxuICAgICAgICAgICAgPGJzdS1seS1sYXlvdXQtY29udGFpbmVyLW9mLXJvb3RcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cImxheW91dDk0JCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbaXNQYW5lbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW2lzUm9vdF09XCJ0cnVlXCJcbiAgICAgICAgICAgID48L2JzdS1seS1sYXlvdXQtY29udGFpbmVyLW9mLXJvb3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgW2ZkTGF5b3V0R3JpZENvbF09XCIxXCI+PC9kaXY+XG4gICAgPC9mZC1sYXlvdXQtZ3JpZD5cbiAgICA8bmctdGVtcGxhdGUgI3NpZGVDb250ZW50PlxuICAgICAgICA8ZmQtZHluYW1pYy1zaWRlLWNvbnRlbnQgW3NpemVdPVwiKHNpemUkIHwgYXN5bmMpISFcIj5cbiAgICAgICAgICAgIDxmZC1keW5hbWljLXNpZGUtY29udGVudC1zaWRlPlxuICAgICAgICAgICAgICAgIDxic3UtbHktbGF5b3V0LWNvbnRhaW5lci1vZi1yb290XG4gICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwibGF5b3V0OTQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICBbaXNQYW5lbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc1Jvb3RdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvYnN1LWx5LWxheW91dC1jb250YWluZXItb2Ytcm9vdD5cbiAgICAgICAgICAgIDwvZmQtZHluYW1pYy1zaWRlLWNvbnRlbnQtc2lkZT5cbiAgICAgICAgICAgIDxmZC1keW5hbWljLXNpZGUtY29udGVudC1tYWluPlxuICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cIifYudqp2LMg2b7YsyDYstmF24zZhtmHJyB8IGNvbnRyb2xVaTogbGF5b3V0OTQgYXMgbGF5b3V0Q29uZmlnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxic3UtbGF5b3V0LWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIifYudqp2LMg2b7YsyDYstmF24zZhtmHJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImxheW91dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVFZGl0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPjwvYnN1LWxheW91dC1jb250cm9sPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiJ9i52qnYsyDZvtizINiy2YXbjNmG2YcnIHwgY29udHJvbFVpOiBsYXlvdXQ5NCBhcyBsYXlvdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImJnTG9naW5cIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZEltYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCgnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIChtby5CYWNrZ3JvdW5kPy5GaWxlSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBpY0ZpZWxkU3JjOiAnUGljdHVyZUZpbGVJbmZvJzpudWxsOmxheW91dENvbmZpZy5GaWVsZFVpLlNldHRpbmcuRmllbGREZWZJZCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJyknXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgPC9mZC1keW5hbWljLXNpZGUtY29udGVudC1tYWluPlxuICAgICAgICA8L2ZkLWR5bmFtaWMtc2lkZS1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -19,12 +19,12 @@ export class LoginSocialConncetionsComponent extends ReportBaseComponent {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
LoginSocialConncetionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginSocialConncetionsComponent, deps: [{ token: i1.UlvMainService }, { token: i1.PortalService }, { token: i1.MoReportValuePipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
-
LoginSocialConncetionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: LoginSocialConncetionsComponent, selector: "bdc-login-social-conncetions", host: { properties: { "attr.rtl": "this.rtl" } }, usesInheritance: true, ngImport: i0, template: "<button\n *ngFor=\"let mo of moDataList$ | async\"\n fd-button\n [label]=\"'Display Text' | rval: mo:allColumns\"\n [fdType]=\"'FdType' | rval: mo:allColumns:true\"\n (click)=\"onClick(mo)\"\n>\n <img\n style=\"max-width: 28px\"\n [src]=\"('Logo' | rval: mo:allColumns)?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\n />\n</button>\n", styles: [":host{display:flex;flex-wrap:wrap;width:100%;justify-content:stretch;margin-top:1rem;column-gap:5px;row-gap:5px}button{flex-grow:1;flex-direction:row-reverse}button img{padding:5px}fd-toolbar{width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
22
|
+
LoginSocialConncetionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: LoginSocialConncetionsComponent, selector: "bdc-login-social-conncetions", host: { properties: { "attr.rtl": "this.rtl" } }, usesInheritance: true, ngImport: i0, template: "<button\r\n *ngFor=\"let mo of moDataList$ | async\"\r\n fd-button\r\n [label]=\"'Display Text' | rval: mo:allColumns\"\r\n [fdType]=\"'FdType' | rval: mo:allColumns:true\"\r\n (click)=\"onClick(mo)\"\r\n>\r\n <img\r\n style=\"max-width: 28px\"\r\n [src]=\"('Logo' | rval: mo:allColumns)?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n />\r\n</button>\r\n", styles: [":host{display:flex;flex-wrap:wrap;width:100%;justify-content:stretch;margin-top:1rem;column-gap:5px;row-gap:5px}button{flex-grow:1;flex-direction:row-reverse}button img{padding:5px}fd-toolbar{width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
23
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginSocialConncetionsComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
|
-
args: [{ selector: 'bdc-login-social-conncetions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngFor=\"let mo of moDataList$ | async\"\n fd-button\n [label]=\"'Display Text' | rval: mo:allColumns\"\n [fdType]=\"'FdType' | rval: mo:allColumns:true\"\n (click)=\"onClick(mo)\"\n>\n <img\n style=\"max-width: 28px\"\n [src]=\"('Logo' | rval: mo:allColumns)?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\n />\n</button>\n", styles: [":host{display:flex;flex-wrap:wrap;width:100%;justify-content:stretch;margin-top:1rem;column-gap:5px;row-gap:5px}button{flex-grow:1;flex-direction:row-reverse}button img{padding:5px}fd-toolbar{width:100%}\n"] }]
|
|
25
|
+
args: [{ selector: 'bdc-login-social-conncetions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n *ngFor=\"let mo of moDataList$ | async\"\r\n fd-button\r\n [label]=\"'Display Text' | rval: mo:allColumns\"\r\n [fdType]=\"'FdType' | rval: mo:allColumns:true\"\r\n (click)=\"onClick(mo)\"\r\n>\r\n <img\r\n style=\"max-width: 28px\"\r\n [src]=\"('Logo' | rval: mo:allColumns)?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n />\r\n</button>\r\n", styles: [":host{display:flex;flex-wrap:wrap;width:100%;justify-content:stretch;margin-top:1rem;column-gap:5px;row-gap:5px}button{flex-grow:1;flex-direction:row-reverse}button img{padding:5px}fd-toolbar{width:100%}\n"] }]
|
|
26
26
|
}], ctorParameters: function () { return [{ type: i1.UlvMainService }, { type: i1.PortalService }, { type: i1.MoReportValuePipe }]; }, propDecorators: { rtl: [{
|
|
27
27
|
type: HostBinding,
|
|
28
28
|
args: ['attr.rtl']
|
|
29
29
|
}] } });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tc29jaWFsLWNvbm5jZXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLWRldmVsb3AtY29tcG9uZW50cy9zcmMvbGliL2xvZ2luLXNvY2lhbC1jb25uY2V0aW9ucy9sb2dpbi1zb2NpYWwtY29ubmNldGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvbG9naW4tc29jaWFsLWNvbm5jZXRpb25zL2xvZ2luLXNvY2lhbC1jb25uY2V0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLFFBQVEsRUFLWCxNQUFNLHNCQUFzQixDQUFDOzs7OztBQU85QixNQUFNLE9BQU8sK0JBQWdDLFNBQVEsbUJBQW1CO0lBRXBFLFlBQ2MsZUFBK0IsRUFDL0IsY0FBNkIsRUFDL0IsZUFBa0M7UUFFMUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUo3QixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDL0Isb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBSnJCLFFBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQU81RCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEVBQXVCO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVuRixNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELFFBQVEsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLCtCQUErQixRQUFRLGNBQWMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM3RixDQUFDOzs0SEFkUSwrQkFBK0I7Z0hBQS9CLCtCQUErQiw2SUNoQjVDLG1aQVlBOzJGRElhLCtCQUErQjtrQkFOM0MsU0FBUzsrQkFDSSw4QkFBOEIsbUJBR3ZCLHVCQUF1QixDQUFDLE1BQU07aUtBR3RCLEdBQUc7c0JBQTNCLFdBQVc7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgUmVwb3J0QmFzZUNvbXBvbmVudCxcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgVWx2TWFpblNlcnZpY2UsXHJcbiAgICBNb1JlcG9ydFZhbHVlUGlwZSxcclxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXHJcbiAgICBQb3J0YWxTZXJ2aWNlXHJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmRjLWxvZ2luLXNvY2lhbC1jb25uY2V0aW9ucycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbG9naW4tc29jaWFsLWNvbm5jZXRpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2xvZ2luLXNvY2lhbC1jb25uY2V0aW9ucy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIExvZ2luU29jaWFsQ29ubmNldGlvbnNDb21wb25lbnQgZXh0ZW5kcyBSZXBvcnRCYXNlQ29tcG9uZW50IHtcclxuICAgIEBIb3N0QmluZGluZygnYXR0ci5ydGwnKSBydGwgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzUnRsO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF91bHZNYWluU2VydmljZTogVWx2TWFpblNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVwb3J0VmFsdWVQaXBlOiBNb1JlcG9ydFZhbHVlUGlwZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX3BvcnRhbFNlcnZpY2UsIF91bHZNYWluU2VydmljZSk7XHJcbiAgICB9XHJcbiAgICBvbkNsaWNrKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnJlcG9ydFZhbHVlUGlwZS50cmFuc2Zvcm0oJ05hbWUnLCBtbywgdGhpcy5hbGxDb2x1bW5zLCB0cnVlKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmV0dXJuVXJsID0gZW5jb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgICBCYXJzYUFwaS5Cdy5OYXZpZ2F0ZVRvKGAvYXBpL29wZW5JZC9zaWduaW4/cHJvdmlkZXI9JHtwcm92aWRlcn0mcmV0dXJuVXJsPSR7cmV0dXJuVXJsfWApO1xyXG4gICAgfVxyXG59XHJcbiIsIjxidXR0b25cclxuICAgICpuZ0Zvcj1cImxldCBtbyBvZiBtb0RhdGFMaXN0JCB8IGFzeW5jXCJcclxuICAgIGZkLWJ1dHRvblxyXG4gICAgW2xhYmVsXT1cIidEaXNwbGF5IFRleHQnIHwgcnZhbDogbW86YWxsQ29sdW1uc1wiXHJcbiAgICBbZmRUeXBlXT1cIidGZFR5cGUnIHwgcnZhbDogbW86YWxsQ29sdW1uczp0cnVlXCJcclxuICAgIChjbGljayk9XCJvbkNsaWNrKG1vKVwiXHJcbj5cclxuICAgIDxpbWdcclxuICAgICAgICBzdHlsZT1cIm1heC13aWR0aDogMjhweFwiXHJcbiAgICAgICAgW3NyY109XCIoJ0xvZ28nIHwgcnZhbDogbW86YWxsQ29sdW1ucyk/LkZpbGVJZCB8IHBpY0ZpZWxkU3JjOiAnR2V0UGljdHVyZUZyb21GaWxlSW5mbyc6bnVsbFwiXHJcbiAgICAvPlxyXG48L2J1dHRvbj5cclxuIl19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
+
import { FormPropsBaseComponent } from 'barsa-novin-ray-core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "barsa-sap-ui";
|
|
5
|
+
import * as i2 from "@fundamental-ngx/core/card";
|
|
6
|
+
export class MasterDetailCardFormComponent extends FormPropsBaseComponent {
|
|
7
|
+
ngOnInit() {
|
|
8
|
+
super.ngOnInit();
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
MasterDetailCardFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MasterDetailCardFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
MasterDetailCardFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MasterDetailCardFormComponent, selector: "bdc-master-detail-card-form", usesInheritance: true, ngImport: i0, template: "<fd-card class=\"master-tab\">\n <bsu-ly-tab-page [config]=\"modernTabs[0]\"></bsu-ly-tab-page>\n</fd-card>\n<fd-card class=\"details-tab\">\n <bsu-ly-tab-page [config]=\"modernTabs[1]\"></bsu-ly-tab-page>\n</fd-card>\n", styles: [":host{display:flex;width:100%;height:100%;column-gap:.525rem}fd-card.master-tab,fd-card.details-tab{height:100%}.master-tab{max-width:400px}.details-tab{width:100%}\n"], dependencies: [{ kind: "component", type: i1.LyTabPageComponent, selector: "bsu-ly-tab-page", inputs: ["renderItems", "tablist"] }, { kind: "component", type: i2.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MasterDetailCardFormComponent, decorators: [{
|
|
14
|
+
type: Component,
|
|
15
|
+
args: [{ selector: 'bdc-master-detail-card-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card class=\"master-tab\">\n <bsu-ly-tab-page [config]=\"modernTabs[0]\"></bsu-ly-tab-page>\n</fd-card>\n<fd-card class=\"details-tab\">\n <bsu-ly-tab-page [config]=\"modernTabs[1]\"></bsu-ly-tab-page>\n</fd-card>\n", styles: [":host{display:flex;width:100%;height:100%;column-gap:.525rem}fd-card.master-tab,fd-card.details-tab{height:100%}.master-tab{max-width:400px}.details-tab{width:100%}\n"] }]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLWRldGFpbC1jYXJkLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvbWFzdGVyLWRldGFpbC1jYXJkLWZvcm0vbWFzdGVyLWRldGFpbC1jYXJkLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvbWFzdGVyLWRldGFpbC1jYXJkLWZvcm0vbWFzdGVyLWRldGFpbC1jYXJkLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQVE5RCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsc0JBQXNCO0lBQ3JFLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQzs7MEhBSFEsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsMEZDVDFDLG1PQU1BOzJGREdhLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDSSw2QkFBNkIsbUJBR3RCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Qcm9wc0Jhc2VDb21wb25lbnQgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYmRjLW1hc3Rlci1kZXRhaWwtY2FyZC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWFzdGVyLWRldGFpbC1jYXJkLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21hc3Rlci1kZXRhaWwtY2FyZC1mb3JtLmNvbXBvbmVudC5jc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNYXN0ZXJEZXRhaWxDYXJkRm9ybUNvbXBvbmVudCBleHRlbmRzIEZvcm1Qcm9wc0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cbn1cbiIsIjxmZC1jYXJkIGNsYXNzPVwibWFzdGVyLXRhYlwiPlxuICAgIDxic3UtbHktdGFiLXBhZ2UgW2NvbmZpZ109XCJtb2Rlcm5UYWJzWzBdXCI+PC9ic3UtbHktdGFiLXBhZ2U+XG48L2ZkLWNhcmQ+XG48ZmQtY2FyZCBjbGFzcz1cImRldGFpbHMtdGFiXCI+XG4gICAgPGJzdS1seS10YWItcGFnZSBbY29uZmlnXT1cIm1vZGVyblRhYnNbMV1cIj48L2JzdS1seS10YWItcGFnZT5cbjwvZmQtY2FyZD5cbiJdfQ==
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
+
import { AudioRecordingService, BarsaApi, UploadService, VideoRecordingService } from 'barsa-novin-ray-core';
|
|
3
|
+
import { UiPdfViewerComponent } from 'barsa-sap-ui';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@fundamental-ngx/core/button";
|
|
7
|
+
import * as i3 from "@fundamental-ngx/core/card";
|
|
8
|
+
import * as i4 from "@fundamental-ngx/core/nested-list";
|
|
9
|
+
import * as i5 from "@fundamental-ngx/core/progress-indicator";
|
|
10
|
+
import * as i6 from "barsa-novin-ray-core";
|
|
11
|
+
export class MediaFileUploaderComponent extends UiPdfViewerComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.isPlaying = false;
|
|
15
|
+
this.displayControls = true;
|
|
16
|
+
this.isRecording = false;
|
|
17
|
+
this.audioConf = { audio: true };
|
|
18
|
+
this.videoConf = { video: { facingMode: 'user', width: 320 }, audio: true };
|
|
19
|
+
this.recordType = 'audio';
|
|
20
|
+
}
|
|
21
|
+
get video() {
|
|
22
|
+
return this.videoElement?.nativeElement;
|
|
23
|
+
}
|
|
24
|
+
get fileInput() {
|
|
25
|
+
return this.photoElement?.nativeElement;
|
|
26
|
+
}
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
super.ngOnInit();
|
|
29
|
+
this._videoRecoder.recordingFailed().subscribe(() => {
|
|
30
|
+
this.isRecording = false;
|
|
31
|
+
this._cdr.detectChanges();
|
|
32
|
+
});
|
|
33
|
+
this._videoRecoder.getRecordedTime().subscribe((time) => {
|
|
34
|
+
this.recordedTime = time;
|
|
35
|
+
this._cdr.detectChanges();
|
|
36
|
+
});
|
|
37
|
+
this._videoRecoder.getStream().subscribe((stream) => {
|
|
38
|
+
this.videoStream = stream;
|
|
39
|
+
this._cdr.detectChanges();
|
|
40
|
+
});
|
|
41
|
+
this._videoRecoder.getRecordedBlob().subscribe((data) => {
|
|
42
|
+
this.fileBlob = data.blob;
|
|
43
|
+
this.fileName = data.title;
|
|
44
|
+
this.valueUrl = this._domSanitizer.bypassSecurityTrustUrl(data.url);
|
|
45
|
+
this._cdr.detectChanges();
|
|
46
|
+
});
|
|
47
|
+
this._audioRecorder.recordingFailed().subscribe(() => {
|
|
48
|
+
this.isRecording = false;
|
|
49
|
+
this._cdr.detectChanges();
|
|
50
|
+
});
|
|
51
|
+
this._audioRecorder.getRecordedTime().subscribe((time) => {
|
|
52
|
+
this.recordedTime = time;
|
|
53
|
+
this._cdr.detectChanges();
|
|
54
|
+
});
|
|
55
|
+
this._audioRecorder.getRecordedBlob().subscribe((data) => {
|
|
56
|
+
this.fileBlob = data.blob;
|
|
57
|
+
this.fileName = data.title;
|
|
58
|
+
this.valueUrl = this._domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(data.blob));
|
|
59
|
+
this._cdr.detectChanges();
|
|
60
|
+
});
|
|
61
|
+
let glyph = '';
|
|
62
|
+
switch (this.recordType) {
|
|
63
|
+
case 'audio':
|
|
64
|
+
glyph = 'attachment-audio';
|
|
65
|
+
break;
|
|
66
|
+
case 'video':
|
|
67
|
+
glyph = 'attachment-video';
|
|
68
|
+
break;
|
|
69
|
+
default:
|
|
70
|
+
glyph = 'attachment-photo';
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
this.glyph = glyph;
|
|
74
|
+
this.fileName = this.value?.FileName;
|
|
75
|
+
this.recordType = this.parameters?.MediaType$Caption || 'audio';
|
|
76
|
+
}
|
|
77
|
+
onDelete() {
|
|
78
|
+
super.onDelete();
|
|
79
|
+
this.onClearRecord();
|
|
80
|
+
}
|
|
81
|
+
onClearRecord() {
|
|
82
|
+
this.abortVideoRecording();
|
|
83
|
+
this.abortAudioRecording();
|
|
84
|
+
this.fileBlob = null;
|
|
85
|
+
this.valueUrl = null;
|
|
86
|
+
this._cdr.detectChanges();
|
|
87
|
+
}
|
|
88
|
+
onToggleRecord() {
|
|
89
|
+
if (this.recordType === 'audio') {
|
|
90
|
+
if (this.isRecording) {
|
|
91
|
+
this.stopAudioRecording();
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.startAudioRecording();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else if (this.recordType === 'video') {
|
|
98
|
+
this.video.hidden = false;
|
|
99
|
+
if (this.isRecording) {
|
|
100
|
+
this.stopVideoRecording();
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
this.startVideoRecording();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (this.recordType === 'photo') {
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
onTakePhoto() {
|
|
110
|
+
if (this.fileInput?.files?.length) {
|
|
111
|
+
const file = this.fileInput.files.item(0);
|
|
112
|
+
if (file) {
|
|
113
|
+
this.fileName = file.name;
|
|
114
|
+
this._uploadFile([file]).subscribe();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
onUpload() {
|
|
119
|
+
const videoFile = new File([this.fileBlob], this.fileName);
|
|
120
|
+
this._uploadFile([videoFile]).subscribe();
|
|
121
|
+
}
|
|
122
|
+
startVideoRecording() {
|
|
123
|
+
if (!this.isRecording) {
|
|
124
|
+
this.video.controls = false;
|
|
125
|
+
this.isRecording = true;
|
|
126
|
+
this._videoRecoder
|
|
127
|
+
.startRecording(this.videoConf)
|
|
128
|
+
.then((stream) => {
|
|
129
|
+
// this.video.src = window.URL.createObjectURL(stream);
|
|
130
|
+
this.video.srcObject = stream;
|
|
131
|
+
this.video.play();
|
|
132
|
+
})
|
|
133
|
+
.catch(function (err) {
|
|
134
|
+
console.log(err.name + ': ' + err.message);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
abortVideoRecording() {
|
|
139
|
+
if (this.isRecording && this.recordType === 'video') {
|
|
140
|
+
this.isRecording = false;
|
|
141
|
+
this._videoRecoder.abortRecording();
|
|
142
|
+
}
|
|
143
|
+
if (this.video) {
|
|
144
|
+
const video = this.video;
|
|
145
|
+
video.controls = false;
|
|
146
|
+
video.hidden = true;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
stopVideoRecording() {
|
|
150
|
+
if (this.isRecording && this.recordType === 'video') {
|
|
151
|
+
this._videoRecoder.stopRecording();
|
|
152
|
+
const video = this.video;
|
|
153
|
+
video.srcObject = this.valueUrl;
|
|
154
|
+
video.controls = true;
|
|
155
|
+
this.isRecording = false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
clearVideoRecordedData() {
|
|
159
|
+
this.valueUrl = null;
|
|
160
|
+
const video = this.video;
|
|
161
|
+
video.srcObject = null;
|
|
162
|
+
video.controls = false;
|
|
163
|
+
this._cdr.detectChanges();
|
|
164
|
+
}
|
|
165
|
+
downloadVideoRecordedData() {
|
|
166
|
+
this._downloadFile(this.fileBlob, 'video/mp4', this.fileName);
|
|
167
|
+
}
|
|
168
|
+
startAudioRecording() {
|
|
169
|
+
if (!this.isRecording) {
|
|
170
|
+
this.isRecording = true;
|
|
171
|
+
this._audioRecorder.startRecording();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
abortAudioRecording() {
|
|
175
|
+
if (this.isRecording && this.recordType === 'audio') {
|
|
176
|
+
this.isRecording = false;
|
|
177
|
+
this._audioRecorder.abortRecording();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
stopAudioRecording() {
|
|
181
|
+
if (this.isRecording && this.recordType === 'audio') {
|
|
182
|
+
this._audioRecorder.stopRecording();
|
|
183
|
+
this.isRecording = false;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
clearAudioRecordedData() {
|
|
187
|
+
this.valueUrl = null;
|
|
188
|
+
}
|
|
189
|
+
downloadAudioRecordedData() {
|
|
190
|
+
this._downloadFile(this.fileBlob, 'audio/mp3', this.fileName);
|
|
191
|
+
}
|
|
192
|
+
ngOnDestroy() {
|
|
193
|
+
this.abortAudioRecording();
|
|
194
|
+
}
|
|
195
|
+
_downloadFile(data, type, filename) {
|
|
196
|
+
const blob = new Blob([data], { type });
|
|
197
|
+
const url = window.URL.createObjectURL(blob);
|
|
198
|
+
// this.video.srcObject = stream;
|
|
199
|
+
// const url = data;
|
|
200
|
+
const anchor = document.createElement('a');
|
|
201
|
+
anchor.download = filename;
|
|
202
|
+
anchor.href = url;
|
|
203
|
+
document.body.appendChild(anchor);
|
|
204
|
+
anchor.click();
|
|
205
|
+
document.body.removeChild(anchor);
|
|
206
|
+
}
|
|
207
|
+
_downloadFileIdCompleted(response) {
|
|
208
|
+
super._downloadFileIdCompleted(response);
|
|
209
|
+
if (this.valueUrl) {
|
|
210
|
+
if (this.recordType === 'video') {
|
|
211
|
+
this.video.controls = true;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
_refresh(_) {
|
|
216
|
+
if (BarsaApi.Ext.isEmpty(this.value)) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
const fileId = this.value.Id;
|
|
220
|
+
this.DownloadFileId(fileId, true, '', null, false);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
MediaFileUploaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MediaFileUploaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
224
|
+
MediaFileUploaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MediaFileUploaderComponent, selector: "bdc-media-file-uploader", providers: [AudioRecordingService, VideoRecordingService, UploadService], viewQueries: [{ propertyName: "videoElement", first: true, predicate: ["videoElement"], descendants: true }, { propertyName: "photoElement", first: true, predicate: ["photoElement"], descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["container"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<fd-card class=\"upload\" [ngClass]=\"recordType\">\r\n <fd-card-content class=\"file-content\">\r\n <div [class.no-recording]=\"!isRecording && valueUrl\" [ngClass]=\"recordType\" class=\"media-wrapper\">\r\n <div class=\"icon\">\r\n <i\r\n style=\"left: 45%; position: absolute\"\r\n fd-nested-list-icon\r\n [glyph]=\"glyph\"\r\n *ngIf=\"!value && !valueUrl && !isRecording\"\r\n ></i>\r\n </div>\r\n <video #videoElement *ngIf=\"recordType === 'video'\" [class.video-novalue]=\"!valueUrl\">\r\n <source *ngIf=\"!isRecording && valueUrl\" [src]=\"valueUrl\" />\r\n <i\r\n style=\"left: 45%; position: absolute\"\r\n fd-nested-list-icon\r\n [glyph]=\"glyph\"\r\n *ngIf=\"!value && !valueUrl && !isRecording\"\r\n ></i>\r\n </video>\r\n <audio *ngIf=\"!isRecording && valueUrl && recordType === 'audio'\" controls>\r\n <source [src]=\"valueUrl\" type=\"audio/mp3\" />\r\n </audio>\r\n <input\r\n #photoElement\r\n *ngIf=\"recordType === 'photo'\"\r\n type=\"file\"\r\n accept=\"image/*\"\r\n id=\"file-input\"\r\n capture=\"environment\"\r\n (change)=\"onTakePhoto()\"\r\n />\r\n </div>\r\n <div *ngIf=\"isRecording || valueUrl\" class=\"media-info\">\r\n <div>\r\n {{ !isRecording ? '' : ('Recording' | bbbTranslate) }} <strong>{{ recordedTime }}</strong>\r\n </div>\r\n <div>{{ fileName }}</div>\r\n </div>\r\n <div class=\"progress\" *ngIf=\"uploadingState$ | async as uploadingState\">\r\n <div>\r\n <fd-progress-indicator\r\n state=\"informative\"\r\n [valueNow]=\"uploadingState?.progress\"\r\n ></fd-progress-indicator>\r\n </div>\r\n </div>\r\n <div class=\"btn-wrapper\">\r\n <button\r\n class=\"btn-record\"\r\n *ngIf=\"!value && !valueUrl\"\r\n fd-button\r\n [glyph]=\"isRecording ? 'stop' : 'record'\"\r\n [fdType]=\"isRecording ? 'attention' : 'ghost'\"\r\n (click)=\"onToggleRecord()\"\r\n ></button>\r\n <div *ngIf=\"!value && valueUrl\" class=\"btn-toolbar\">\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onClearRecord()\"></button>\r\n <button fd-button [label]=\"'Upload' | bbbTranslate\" [glyph]=\"'upload'\" (click)=\"onUpload()\"></button>\r\n </div>\r\n <div *ngIf=\"value\" class=\"btn-toolbar\">\r\n <button *ngIf=\"value\" fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onDelete()\"></button>\r\n <button *ngIf=\"value\" fd-button [glyph]=\"'download'\" fdType=\"standard\" (click)=\"onDownload()\"></button>\r\n </div>\r\n </div>\r\n </fd-card-content>\r\n</fd-card>\r\n", styles: [":host .upload{display:flex;justify-content:center;align-items:center;flex-direction:column;max-width:380px;position:relative}:host .upload .file-content{width:100%}:host .upload i:before{color:#0a6ed1!important;font-size:2rem}fd-card.audio{min-height:120px;max-height:120px}fd-card.video{min-height:340px;max-height:340px}.icon{display:flex;align-items:center;justify-content:center;position:absolute;top:45%;left:45%}.video-novalue{border:1px dashed var(--sapObjectHeader_BorderColor);min-height:240px}audio,video{width:100%}.progress{position:absolute;width:100%;height:100%;background-color:#e4e4e4c7;z-index:4;display:flex;justify-content:center;align-items:center;top:0;left:0}.progress div{flex:.5}.file-content{width:100%;height:100%;display:flex;flex-direction:column;padding:1rem}.media-wrapper{flex-grow:1}.btn-wrapper{align-self:center}.btn-record{flex-shrink:1}.btn-toolbar{flex-grow:1;display:flex;column-gap:1rem}.media-info{flex-shrink:1;display:flex;width:100%;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i3.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i4.NestedListIconDirective, selector: "[fdNestedDirectivesIcon], [fd-nested-list-icon]", inputs: ["class", "glyph", "role"] }, { kind: "component", type: i5.ProgressIndicatorComponent, selector: "fd-progress-indicator", inputs: ["valueText", "unit", "valueMin", "valueMax", "valueNow", "state", "animate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
225
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MediaFileUploaderComponent, decorators: [{
|
|
226
|
+
type: Component,
|
|
227
|
+
args: [{ selector: 'bdc-media-file-uploader', changeDetection: ChangeDetectionStrategy.OnPush, providers: [AudioRecordingService, VideoRecordingService, UploadService], template: "<fd-card class=\"upload\" [ngClass]=\"recordType\">\r\n <fd-card-content class=\"file-content\">\r\n <div [class.no-recording]=\"!isRecording && valueUrl\" [ngClass]=\"recordType\" class=\"media-wrapper\">\r\n <div class=\"icon\">\r\n <i\r\n style=\"left: 45%; position: absolute\"\r\n fd-nested-list-icon\r\n [glyph]=\"glyph\"\r\n *ngIf=\"!value && !valueUrl && !isRecording\"\r\n ></i>\r\n </div>\r\n <video #videoElement *ngIf=\"recordType === 'video'\" [class.video-novalue]=\"!valueUrl\">\r\n <source *ngIf=\"!isRecording && valueUrl\" [src]=\"valueUrl\" />\r\n <i\r\n style=\"left: 45%; position: absolute\"\r\n fd-nested-list-icon\r\n [glyph]=\"glyph\"\r\n *ngIf=\"!value && !valueUrl && !isRecording\"\r\n ></i>\r\n </video>\r\n <audio *ngIf=\"!isRecording && valueUrl && recordType === 'audio'\" controls>\r\n <source [src]=\"valueUrl\" type=\"audio/mp3\" />\r\n </audio>\r\n <input\r\n #photoElement\r\n *ngIf=\"recordType === 'photo'\"\r\n type=\"file\"\r\n accept=\"image/*\"\r\n id=\"file-input\"\r\n capture=\"environment\"\r\n (change)=\"onTakePhoto()\"\r\n />\r\n </div>\r\n <div *ngIf=\"isRecording || valueUrl\" class=\"media-info\">\r\n <div>\r\n {{ !isRecording ? '' : ('Recording' | bbbTranslate) }} <strong>{{ recordedTime }}</strong>\r\n </div>\r\n <div>{{ fileName }}</div>\r\n </div>\r\n <div class=\"progress\" *ngIf=\"uploadingState$ | async as uploadingState\">\r\n <div>\r\n <fd-progress-indicator\r\n state=\"informative\"\r\n [valueNow]=\"uploadingState?.progress\"\r\n ></fd-progress-indicator>\r\n </div>\r\n </div>\r\n <div class=\"btn-wrapper\">\r\n <button\r\n class=\"btn-record\"\r\n *ngIf=\"!value && !valueUrl\"\r\n fd-button\r\n [glyph]=\"isRecording ? 'stop' : 'record'\"\r\n [fdType]=\"isRecording ? 'attention' : 'ghost'\"\r\n (click)=\"onToggleRecord()\"\r\n ></button>\r\n <div *ngIf=\"!value && valueUrl\" class=\"btn-toolbar\">\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onClearRecord()\"></button>\r\n <button fd-button [label]=\"'Upload' | bbbTranslate\" [glyph]=\"'upload'\" (click)=\"onUpload()\"></button>\r\n </div>\r\n <div *ngIf=\"value\" class=\"btn-toolbar\">\r\n <button *ngIf=\"value\" fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onDelete()\"></button>\r\n <button *ngIf=\"value\" fd-button [glyph]=\"'download'\" fdType=\"standard\" (click)=\"onDownload()\"></button>\r\n </div>\r\n </div>\r\n </fd-card-content>\r\n</fd-card>\r\n", styles: [":host .upload{display:flex;justify-content:center;align-items:center;flex-direction:column;max-width:380px;position:relative}:host .upload .file-content{width:100%}:host .upload i:before{color:#0a6ed1!important;font-size:2rem}fd-card.audio{min-height:120px;max-height:120px}fd-card.video{min-height:340px;max-height:340px}.icon{display:flex;align-items:center;justify-content:center;position:absolute;top:45%;left:45%}.video-novalue{border:1px dashed var(--sapObjectHeader_BorderColor);min-height:240px}audio,video{width:100%}.progress{position:absolute;width:100%;height:100%;background-color:#e4e4e4c7;z-index:4;display:flex;justify-content:center;align-items:center;top:0;left:0}.progress div{flex:.5}.file-content{width:100%;height:100%;display:flex;flex-direction:column;padding:1rem}.media-wrapper{flex-grow:1}.btn-wrapper{align-self:center}.btn-record{flex-shrink:1}.btn-toolbar{flex-grow:1;display:flex;column-gap:1rem}.media-info{flex-shrink:1;display:flex;width:100%;justify-content:space-between}\n"] }]
|
|
228
|
+
}], propDecorators: { videoElement: [{
|
|
229
|
+
type: ViewChild,
|
|
230
|
+
args: ['videoElement']
|
|
231
|
+
}], photoElement: [{
|
|
232
|
+
type: ViewChild,
|
|
233
|
+
args: ['photoElement']
|
|
234
|
+
}], dialogContainer: [{
|
|
235
|
+
type: ViewChild,
|
|
236
|
+
args: ['container', { read: TemplateRef }]
|
|
237
|
+
}] } });
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtZmlsZS11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1kZXZlbG9wLWNvbXBvbmVudHMvc3JjL2xpYi9tZWRpYS1maWxlLXVwbG9hZGVyL21lZGlhLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvbWVkaWEtZmlsZS11cGxvYWRlci9tZWRpYS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFTcEQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLG9CQUFvQjtJQVBwRTs7UUFhSSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBTXBCLGNBQVMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1QixjQUFTLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFdkUsZUFBVSxHQUFHLE9BQU8sQ0FBQztLQXlOeEI7SUF2TkcsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztJQUM1QyxD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eUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxDQUFDOzhCQUc3QyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0UsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUV6QixlQUFlO3NCQURkLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXVkaW9SZWNvcmRpbmdTZXJ2aWNlLCBCYXJzYUFwaSwgVXBsb2FkU2VydmljZSwgVmlkZW9SZWNvcmRpbmdTZXJ2aWNlIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgVWlQZGZWaWV3ZXJDb21wb25lbnQgfSBmcm9tICdiYXJzYS1zYXAtdWknO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JkYy1tZWRpYS1maWxlLXVwbG9hZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEtZmlsZS11cGxvYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbWVkaWEtZmlsZS11cGxvYWRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW0F1ZGlvUmVjb3JkaW5nU2VydmljZSwgVmlkZW9SZWNvcmRpbmdTZXJ2aWNlLCBVcGxvYWRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBNZWRpYUZpbGVVcGxvYWRlckNvbXBvbmVudCBleHRlbmRzIFVpUGRmVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCd2aWRlb0VsZW1lbnQnKSB2aWRlb0VsZW1lbnQ6IGFueTtcbiAgICBAVmlld0NoaWxkKCdwaG90b0VsZW1lbnQnKSBwaG90b0VsZW1lbnQ6IGFueTtcbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgZGlhbG9nQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgaXNQbGF5aW5nID0gZmFsc2U7XG4gICAgZGlzcGxheUNvbnRyb2xzID0gdHJ1ZTtcbiAgICBpc1JlY29yZGluZyA9IGZhbHNlO1xuICAgIHJlY29yZGVkVGltZTtcbiAgICBmaWxlQmxvYjtcbiAgICBmaWxlTmFtZTtcbiAgICBhdWRpb1N0cmVhbTtcbiAgICB2aWRlb1N0cmVhbTogTWVkaWFTdHJlYW07XG4gICAgYXVkaW9Db25mID0geyBhdWRpbzogdHJ1ZSB9O1xuICAgIHZpZGVvQ29uZiA9IHsgdmlkZW86IHsgZmFjaW5nTW9kZTogJ3VzZXInLCB3aWR0aDogMzIwIH0sIGF1ZGlvOiB0cnVlIH07XG4gICAgZ2x5cGg6IHN0cmluZztcbiAgICByZWNvcmRUeXBlID0gJ2F1ZGlvJztcblxuICAgIGdldCB2aWRlbygpOiBIVE1MTWVkaWFFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlkZW9FbGVtZW50Py5uYXRpdmVFbGVtZW50O1xuICAgIH1cbiAgICBnZXQgZmlsZUlucHV0KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5waG90b0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLl92aWRlb1JlY29kZXIucmVjb3JkaW5nRmFpbGVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3ZpZGVvUmVjb2Rlci5nZXRSZWNvcmRlZFRpbWUoKS5zdWJzY3JpYmUoKHRpbWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVjb3JkZWRUaW1lID0gdGltZTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3ZpZGVvUmVjb2Rlci5nZXRTdHJlYW0oKS5zdWJzY3JpYmUoKHN0cmVhbSkgPT4ge1xuICAgICAgICAgICAgdGhpcy52aWRlb1N0cmVhbSA9IHN0cmVhbTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3ZpZGVvUmVjb2Rlci5nZXRSZWNvcmRlZEJsb2IoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUJsb2IgPSBkYXRhLmJsb2I7XG4gICAgICAgICAgICB0aGlzLmZpbGVOYW1lID0gZGF0YS50aXRsZTtcbiAgICAgICAgICAgIHRoaXMudmFsdWVVcmwgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChkYXRhLnVybCk7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9hdWRpb1JlY29yZGVyLnJlY29yZGluZ0ZhaWxlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9hdWRpb1JlY29yZGVyLmdldFJlY29yZGVkVGltZSgpLnN1YnNjcmliZSgodGltZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWNvcmRlZFRpbWUgPSB0aW1lO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fYXVkaW9SZWNvcmRlci5nZXRSZWNvcmRlZEJsb2IoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUJsb2IgPSBkYXRhLmJsb2I7XG4gICAgICAgICAgICB0aGlzLmZpbGVOYW1lID0gZGF0YS50aXRsZTtcbiAgICAgICAgICAgIHRoaXMudmFsdWVVcmwgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChVUkwuY3JlYXRlT2JqZWN0VVJMKGRhdGEuYmxvYikpO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBnbHlwaCA9ICcnO1xuICAgICAgICBzd2l0Y2ggKHRoaXMucmVjb3JkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICAgICAgICAgIGdseXBoID0gJ2F0dGFjaG1lbnQtYXVkaW8nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICAgICAgICAgIGdseXBoID0gJ2F0dGFjaG1lbnQtdmlkZW8nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBnbHlwaCA9ICdhdHRhY2htZW50LXBob3RvJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdseXBoID0gZ2x5cGg7XG4gICAgICAgIHRoaXMuZmlsZU5hbWUgPSB0aGlzLnZhbHVlPy5GaWxlTmFtZTtcbiAgICAgICAgdGhpcy5yZWNvcmRUeXBlID0gdGhpcy5wYXJhbWV0ZXJzPy5NZWRpYVR5cGUkQ2FwdGlvbiB8fCAnYXVkaW8nO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5vbkRlbGV0ZSgpO1xuICAgICAgICB0aGlzLm9uQ2xlYXJSZWNvcmQoKTtcbiAgICB9XG4gICAgb25DbGVhclJlY29yZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hYm9ydFZpZGVvUmVjb3JkaW5nKCk7XG4gICAgICAgIHRoaXMuYWJvcnRBdWRpb1JlY29yZGluZygpO1xuICAgICAgICB0aGlzLmZpbGVCbG9iID0gbnVsbDtcbiAgICAgICAgdGhpcy52YWx1ZVVybCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIG9uVG9nZ2xlUmVjb3JkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZWNvcmRUeXBlID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1JlY29yZGluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcEF1ZGlvUmVjb3JkaW5nKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRBdWRpb1JlY29yZGluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVjb3JkVHlwZSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgdGhpcy52aWRlby5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVjb3JkaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVmlkZW9SZWNvcmRpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFZpZGVvUmVjb3JkaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWNvcmRUeXBlID09PSAncGhvdG8nKSB7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25UYWtlUGhvdG8oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZpbGVJbnB1dD8uZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuZmlsZUlucHV0LmZpbGVzLml0ZW0oMCk7XG4gICAgICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZU5hbWUgPSBmaWxlLm5hbWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBsb2FkRmlsZShbZmlsZV0pLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG9uVXBsb2FkKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2aWRlb0ZpbGU6IEZpbGUgPSBuZXcgRmlsZShbdGhpcy5maWxlQmxvYl0sIHRoaXMuZmlsZU5hbWUpO1xuICAgICAgICB0aGlzLl91cGxvYWRGaWxlKFt2aWRlb0ZpbGVdKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgc3RhcnRWaWRlb1JlY29yZGluZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzUmVjb3JkaW5nKSB7XG4gICAgICAgICAgICB0aGlzLnZpZGVvLmNvbnRyb2xzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3ZpZGVvUmVjb2RlclxuICAgICAgICAgICAgICAgIC5zdGFydFJlY29yZGluZyh0aGlzLnZpZGVvQ29uZilcbiAgICAgICAgICAgICAgICAudGhlbigoc3RyZWFtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMudmlkZW8uc3JjID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoc3RyZWFtKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWRlby5zcmNPYmplY3QgPSBzdHJlYW07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlkZW8ucGxheSgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyLm5hbWUgKyAnOiAnICsgZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWJvcnRWaWRlb1JlY29yZGluZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWNvcmRpbmcgJiYgdGhpcy5yZWNvcmRUeXBlID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWRlb1JlY29kZXIuYWJvcnRSZWNvcmRpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52aWRlbykge1xuICAgICAgICAgICAgY29uc3QgdmlkZW8gPSB0aGlzLnZpZGVvO1xuICAgICAgICAgICAgdmlkZW8uY29udHJvbHMgPSBmYWxzZTtcbiAgICAgICAgICAgIHZpZGVvLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdG9wVmlkZW9SZWNvcmRpbmcoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVjb3JkaW5nICYmIHRoaXMucmVjb3JkVHlwZSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgdGhpcy5fdmlkZW9SZWNvZGVyLnN0b3BSZWNvcmRpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IHZpZGVvOiBhbnkgPSB0aGlzLnZpZGVvO1xuICAgICAgICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gdGhpcy52YWx1ZVVybDtcbiAgICAgICAgICAgIHZpZGVvLmNvbnRyb2xzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyVmlkZW9SZWNvcmRlZERhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWVVcmwgPSBudWxsO1xuICAgICAgICBjb25zdCB2aWRlbyA9IHRoaXMudmlkZW87XG4gICAgICAgIHZpZGVvLnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgIHZpZGVvLmNvbnRyb2xzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgZG93bmxvYWRWaWRlb1JlY29yZGVkRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZG93bmxvYWRGaWxlKHRoaXMuZmlsZUJsb2IsICd2aWRlby9tcDQnLCB0aGlzLmZpbGVOYW1lKTtcbiAgICB9XG5cbiAgICBzdGFydEF1ZGlvUmVjb3JkaW5nKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNSZWNvcmRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fYXVkaW9SZWNvcmRlci5zdGFydFJlY29yZGluZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWJvcnRBdWRpb1JlY29yZGluZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWNvcmRpbmcgJiYgdGhpcy5yZWNvcmRUeXBlID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9hdWRpb1JlY29yZGVyLmFib3J0UmVjb3JkaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdG9wQXVkaW9SZWNvcmRpbmcoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVjb3JkaW5nICYmIHRoaXMucmVjb3JkVHlwZSA9PT0gJ2F1ZGlvJykge1xuICAgICAgICAgICAgdGhpcy5fYXVkaW9SZWNvcmRlci5zdG9wUmVjb3JkaW5nKCk7XG4gICAgICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckF1ZGlvUmVjb3JkZWREYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlVXJsID0gbnVsbDtcbiAgICB9XG5cbiAgICBkb3dubG9hZEF1ZGlvUmVjb3JkZWREYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kb3dubG9hZEZpbGUodGhpcy5maWxlQmxvYiwgJ2F1ZGlvL21wMycsIHRoaXMuZmlsZU5hbWUpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFib3J0QXVkaW9SZWNvcmRpbmcoKTtcbiAgICB9XG5cbiAgICBfZG93bmxvYWRGaWxlKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtkYXRhXSwgeyB0eXBlIH0pO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgLy8gdGhpcy52aWRlby5zcmNPYmplY3QgPSBzdHJlYW07XG4gICAgICAgIC8vIGNvbnN0IHVybCA9IGRhdGE7XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgYW5jaG9yLmRvd25sb2FkID0gZmlsZW5hbWU7XG4gICAgICAgIGFuY2hvci5ocmVmID0gdXJsO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFuY2hvcik7XG4gICAgICAgIGFuY2hvci5jbGljaygpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGFuY2hvcik7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZG93bmxvYWRGaWxlSWRDb21wbGV0ZWQocmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuX2Rvd25sb2FkRmlsZUlkQ29tcGxldGVkKHJlc3BvbnNlKTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVVcmwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlY29yZFR5cGUgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZGVvLmNvbnRyb2xzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2goXz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKEJhcnNhQXBpLkV4dC5pc0VtcHR5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsZUlkID0gdGhpcy52YWx1ZS5JZDtcbiAgICAgICAgdGhpcy5Eb3dubG9hZEZpbGVJZChmaWxlSWQsIHRydWUsICcnLCBudWxsLCBmYWxzZSk7XG4gICAgfVxufVxuIiwiPGZkLWNhcmQgY2xhc3M9XCJ1cGxvYWRcIiBbbmdDbGFzc109XCJyZWNvcmRUeXBlXCI+XHJcbiAgICA8ZmQtY2FyZC1jb250ZW50IGNsYXNzPVwiZmlsZS1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBbY2xhc3Mubm8tcmVjb3JkaW5nXT1cIiFpc1JlY29yZGluZyAmJiB2YWx1ZVVybFwiIFtuZ0NsYXNzXT1cInJlY29yZFR5cGVcIiBjbGFzcz1cIm1lZGlhLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJsZWZ0OiA0NSU7IHBvc2l0aW9uOiBhYnNvbHV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtbmVzdGVkLWxpc3QtaWNvblxyXG4gICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJnbHlwaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhdmFsdWUgJiYgIXZhbHVlVXJsICYmICFpc1JlY29yZGluZ1wiXHJcbiAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHZpZGVvICN2aWRlb0VsZW1lbnQgKm5nSWY9XCJyZWNvcmRUeXBlID09PSAndmlkZW8nXCIgW2NsYXNzLnZpZGVvLW5vdmFsdWVdPVwiIXZhbHVlVXJsXCI+XHJcbiAgICAgICAgICAgICAgICA8c291cmNlICpuZ0lmPVwiIWlzUmVjb3JkaW5nICYmIHZhbHVlVXJsXCIgW3NyY109XCJ2YWx1ZVVybFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibGVmdDogNDUlOyBwb3NpdGlvbjogYWJzb2x1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZkLW5lc3RlZC1saXN0LWljb25cclxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiZ2x5cGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXZhbHVlICYmICF2YWx1ZVVybCAmJiAhaXNSZWNvcmRpbmdcIlxyXG4gICAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgPC92aWRlbz5cclxuICAgICAgICAgICAgPGF1ZGlvICpuZ0lmPVwiIWlzUmVjb3JkaW5nICYmIHZhbHVlVXJsICYmIHJlY29yZFR5cGUgPT09ICdhdWRpbydcIiBjb250cm9scz5cclxuICAgICAgICAgICAgICAgIDxzb3VyY2UgW3NyY109XCJ2YWx1ZVVybFwiIHR5cGU9XCJhdWRpby9tcDNcIiAvPlxyXG4gICAgICAgICAgICA8L2F1ZGlvPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICNwaG90b0VsZW1lbnRcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVjb3JkVHlwZSA9PT0gJ3Bob3RvJ1wiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAgICAgICBhY2NlcHQ9XCJpbWFnZS8qXCJcclxuICAgICAgICAgICAgICAgIGlkPVwiZmlsZS1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICBjYXB0dXJlPVwiZW52aXJvbm1lbnRcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblRha2VQaG90bygpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNSZWNvcmRpbmcgfHwgdmFsdWVVcmxcIiBjbGFzcz1cIm1lZGlhLWluZm9cIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIHt7ICFpc1JlY29yZGluZyA/ICcnIDogKCdSZWNvcmRpbmcnIHwgYmJiVHJhbnNsYXRlKSB9fSA8c3Ryb25nPnt7IHJlY29yZGVkVGltZSB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj57eyBmaWxlTmFtZSB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiICpuZ0lmPVwidXBsb2FkaW5nU3RhdGUkIHwgYXN5bmMgYXMgdXBsb2FkaW5nU3RhdGVcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxmZC1wcm9ncmVzcy1pbmRpY2F0b3JcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZT1cImluZm9ybWF0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVOb3ddPVwidXBsb2FkaW5nU3RhdGU/LnByb2dyZXNzXCJcclxuICAgICAgICAgICAgICAgID48L2ZkLXByb2dyZXNzLWluZGljYXRvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLXJlY29yZFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiF2YWx1ZSAmJiAhdmFsdWVVcmxcIlxyXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiaXNSZWNvcmRpbmcgPyAnc3RvcCcgOiAncmVjb3JkJ1wiXHJcbiAgICAgICAgICAgICAgICBbZmRUeXBlXT1cImlzUmVjb3JkaW5nID8gJ2F0dGVudGlvbicgOiAnZ2hvc3QnXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRvZ2dsZVJlY29yZCgpXCJcclxuICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXZhbHVlICYmIHZhbHVlVXJsXCIgY2xhc3M9XCJidG4tdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gW2dseXBoXT1cIidkZWxldGUnXCIgZmRUeXBlPVwibmVnYXRpdmVcIiAoY2xpY2spPVwib25DbGVhclJlY29yZCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBbbGFiZWxdPVwiJ1VwbG9hZCcgfCBiYmJUcmFuc2xhdGVcIiBbZ2x5cGhdPVwiJ3VwbG9hZCdcIiAoY2xpY2spPVwib25VcGxvYWQoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZhbHVlXCIgY2xhc3M9XCJidG4tdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInZhbHVlXCIgZmQtYnV0dG9uIFtnbHlwaF09XCInZGVsZXRlJ1wiIGZkVHlwZT1cIm5lZ2F0aXZlXCIgKGNsaWNrKT1cIm9uRGVsZXRlKClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ2YWx1ZVwiIGZkLWJ1dHRvbiBbZ2x5cGhdPVwiJ2Rvd25sb2FkJ1wiIGZkVHlwZT1cInN0YW5kYXJkXCIgKGNsaWNrKT1cIm9uRG93bmxvYWQoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZmQtY2FyZC1jb250ZW50PlxyXG48L2ZkLWNhcmQ+XHJcbiJdfQ==
|