keevo-components 1.5.190 → 1.5.192
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/api/base-components/base-component-crud-form.mjs +3 -2
- package/esm2020/lib/api/base-components/base-component-crud-list.mjs +3 -2
- package/esm2020/lib/menu/menu.component.mjs +2 -2
- package/esm2020/lib/table/table.component.mjs +3 -3
- package/fesm2015/keevo-components.mjs +33 -33
- package/fesm2015/keevo-components.mjs.map +1 -1
- package/fesm2020/keevo-components.mjs +33 -33
- package/fesm2020/keevo-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@ import { FormGroup } from "@angular/forms";
|
|
|
3
3
|
import { combineLatest, filter, finalize } from "rxjs";
|
|
4
4
|
import { BaseComponentCrud } from "./base-component-crud";
|
|
5
5
|
import { FormService } from "../services/form.service";
|
|
6
|
+
import { loading } from "../../loader/loader.service";
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "primeng/dynamicdialog";
|
|
8
9
|
import * as i2 from "../services/notification.service";
|
|
@@ -137,7 +138,7 @@ export class BaseComponentCrudForm extends BaseComponentCrud {
|
|
|
137
138
|
*/
|
|
138
139
|
loadData(obs) {
|
|
139
140
|
obs
|
|
140
|
-
|
|
141
|
+
.pipe(loading())
|
|
141
142
|
.subscribe((data) => {
|
|
142
143
|
this.isNewRegistry = false;
|
|
143
144
|
this.registry = data;
|
|
@@ -266,4 +267,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
|
|
|
266
267
|
template: ''
|
|
267
268
|
}]
|
|
268
269
|
}], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.NotificationService }, { type: i3.ActivatedRoute }, { type: i1.DynamicDialogRef }, { type: i1.DynamicDialogConfig }, { type: i3.Router }]; } });
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtY3J1ZC1mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtY3J1ZC1mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxTQUFTLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQWF2RCxNQUFNLE9BQWdCLHFCQUFzQixTQUFRLGlCQUFpQjtJQWdCbkUsWUFDRSxhQUE0QixFQUM1QixtQkFBd0MsRUFDOUIsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLG1CQUF3QyxFQUN4QyxNQUFjO1FBQ3hCLEtBQUssQ0FFRCxhQUFhLEVBQ2IsbUJBQW1CLENBQ3BCLENBQUM7UUFSTSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFwQmhCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsY0FBUyxHQUFjLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLFlBQU8sR0FBaUIsRUFBRSxDQUFDO1FB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QGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tIFwicHJpbWVuZy9keW5hbWljZGlhbG9nXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIGZpbmFsaXplIH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3RhYmxlL2FjdGlvbi1pdGVtXCI7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50Q3J1ZCB9IGZyb20gXCIuL2Jhc2UtY29tcG9uZW50LWNydWRcIjtcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2Zvcm0uc2VydmljZVwiO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhZG9zVGVsYSB7XG4gIHN1YlRpdHVsb0Zvcm06IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdGl0dWxvRm9ybTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByb3RhTGlzdGFyOiBzdHJpbmc7XG4gIG1lbnNhZ2VtVmFsaWRhY2FvOiBib29sZWFuXG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudENydWRGb3JtIGV4dGVuZHMgQmFzZUNvbXBvbmVudENydWQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIGlzQWNjb3JkaW9uRXhwYW5kZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGlzTmV3UmVnaXN0cnkgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGlzU2F2ZUxvYWRpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGlzVmlldyA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBwcm90ZWN0ZWQgYWN0aW9uczogQWN0aW9uSXRlbVtdID0gW107XG5cbiAgcHJvdGVjdGVkIGRhZG9zVGVsYTogRGFkb3NUZWxhIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgcG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHJlZ2lzdHJ5OiBhbnkgPSBudWxsO1xuXG4gIHByaXZhdGUgb25TZXRGb3JtVmFsdWVzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJvdGVjdGVkIGR5bmFtaWNEaWFsb2dSZWY6IER5bmFtaWNEaWFsb2dSZWYsXG4gICAgcHJvdGVjdGVkIGR5bmFtaWNEaWFsb2dDb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyKSB7XG4gICAgc3VwZXJcbiAgICAgIChcbiAgICAgICAgZGlhbG9nU2VydmljZSxcbiAgICAgICAgbm90aWZpY2F0aW9uU2VydmljZVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBwYXJhIGNvbmZpZ3VyYcOnw6NvIGRvIGZvcm1cbiAgICovXG4gIGFic3RyYWN0IGNvbmZpZ3VyZUZvcm0oKTogdm9pZDtcblxuICAvKipcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBvIGNhcnJlZ2FtZW50byBkbyBmb3JtXG4gICAqIEBwYXJhbSBpZFxuICAgKi9cbiAgYWJzdHJhY3QgbG9hZEZvcm0oaWQ6IGFueSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgc2FsdmFtZW50byBkb3MgZGFkb3NcbiAgICovXG4gIGFic3RyYWN0IHNhdmUoKTogdm9pZDtcblxuICAvKipcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSB0cmF0YW1lbnRvIGRhcyBub3RpZmljYcOnw7VlcyBkbyBiYWNrZW5kXG4gICAqIEBwYXJhbSBlcnIgLSBOb3RpZmljYcOnw6NvXG4gICAqL1xuICBwcm90ZWN0ZWQgYmFja2VuZEVycm9yKGVycjogYW55KTogdm9pZCB7XG4gICAgaWYgKGVycikge1xuICAgICAgaWYgKGVyci5zdGF0dXMgPT0gNDA0KSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdEVycm9yKGVyci5lcnJvci5pdGVtMlswXS5tZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZXJyLnN0YXR1cyA9PSA0MDApIHtcbiAgICAgICAgLy8gRXJyb3MgZGUgdmFsaWRhw6fDo28gZGUgZG9tw61uaW8gZG8gYmFja2VuZFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlcnIuZXJyb3IpKSB7XG4gICAgICAgICAgaWYgKGVyci5lcnJvcj8ubGVuZ3RoKSB7XG5cbiAgICAgICAgICAgIGlmIChlcnIuZXJyb3IubGVuZ3RoID09IDEgJiYgZXJyLmVycm9yWzBdLmtleSA9PSAnJykge1xuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihlcnIuZXJyb3JbMF0ubWVzc2FnZSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkRm9ybShlcnIuZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChlcnIuZXJyb3I/LnRpdGxlKSB7XG4gICAgICAgICAgLy8gRXJybyBkZSBqc29uIG5vIGJhY2tlbmRcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihlcnIuZXJyb3IudGl0bGUpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZXJyLnN0YXR1cyA9PSA0MTUpIHtcbiAgICAgICAgaWYgKGVyci5lcnJvcj8udGl0bGUpIHtcbiAgICAgICAgICAvLyBFcnJvIGRlIGpzb24gbm8gYmFja2VuZFxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdEVycm9yKGVyci5lcnJvci50aXRsZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFF1YWxxdWVyIG91dHJvIHRpcG8gZGUgZXJybyBxdWUgdGVuaGEgbWVuc2FnZW1cbiAgICAgIGlmIChlcnIubWVzc2FnZSkge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihlcnIubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIGFvIGNsaWNhciBubyBib3TDo28gZGUgY2FuY2VsYW1lbnRvXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FuY2VsKCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5xdWVzdGlvbih7XG4gICAgICB0eXBlOiAncXVlc3Rpb24nLFxuICAgICAgbWVzc2FnZTogJ0Rlc2VqYSBjYW5jZWxhciBhIG9wZXJhw6fDo28/JyxcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICB0aGlzLm5hdmlnYXRlTGlzdCgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzZSBob3V2ZXJhbSBhbHRlcmHDp8O1ZXMgbm9zIGNvbXBvbmVudGVzIGRvIGZvcm1Db250cm9sXG4gICAqIEBwYXJhbSBjb250cm9scyAtIE5vbWVzIGRvIGNvbnRyb2xlcyBubyBmb3JtR3JvdXBcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZVxuICAgKi9cbiAgcHJvdGVjdGVkIGRldGVjdEZvcm1Db250cm9sQ2hhbmdlcyhjb250cm9sczogQXJyYXk8c3RyaW5nPik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgY29udHJvbExpc3Q6IE9ic2VydmFibGU8YW55PltdID0gW107XG4gICAgY29udHJvbHMuZm9yRWFjaChjb250cm9sTmFtZSA9PiBjb250cm9sTGlzdC5wdXNoKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXS52YWx1ZUNoYW5nZXMpKTtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChjb250cm9sTGlzdCkucGlwZShmaWx0ZXIoKCkgPT4gIXRoaXMub25TZXRGb3JtVmFsdWVzKSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIGRlc2FiaWxpdGFyIHVtIGNvbXBvbmVudGVcbiAgICogQHBhcmFtIGNvbnRyb2xOYW1lIC0gTm9tZSBkbyBjb250cm9sZSBubyBmb3JtR3JvdXBcbiAgICovXG4gIHByb3RlY3RlZCBkaXNhYmxlQ29tcG9uZW50KGNvbnRyb2xOYW1lOiBzdHJpbmcpIHtcbiAgICBGb3JtU2VydmljZS5kaXNhYmxlQ29udHJvbCh0aGlzLmZvcm1Hcm91cCwgY29udHJvbE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBsaW1wYXIgZSBkZXNhYmlsaXRhciB1bSBjb21wb25lbnRlXG4gICAqIEBwYXJhbSBjb250cm9sTmFtZSAtIE5vbWUgZG8gY29udHJvbGUgbm8gZm9ybUdyb3VwXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGRlZmF1bHRcbiAgICovXG4gIHByb3RlY3RlZCBkaXNhYmxlQW5kQ2xlYXJDb21wb25lbnQoY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU/OiBhbnkpIHtcbiAgICBGb3JtU2VydmljZS5kaXNhYmxlQW5kQ2xlYXJDb250cm9sKHRoaXMuZm9ybUdyb3VwLCBjb250cm9sTmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBoYWJpbGl0YXIgdW0gY29tcG9uZW50ZVxuICAgKiBAcGFyYW0gY29udHJvbE5hbWUgLSBOb21lIGRvIGNvbnRyb2xlIG5vIGZvcm1Hcm91cFxuICAgKi9cbiAgcHJvdGVjdGVkIGVuYWJsZUNvbXBvbmVudChjb250cm9OYW1lOiBzdHJpbmcpIHtcbiAgICBGb3JtU2VydmljZS5lbmFibGVDb250cm9sKHRoaXMuZm9ybUdyb3VwLCBjb250cm9OYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSByZXRvcm5hIG8gdmFsb3IgZGUgdW0gY29tcG9uZW50ZVxuICAgKiBAcGFyYW0gY29udHJvbE5hbWUgLSBOb21lIGRvIGNvbnRyb2xlIG5vIGZvcm1Hcm91cFxuICAgKiBAcmV0dXJucyAtIFZhbG9yXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Rm9ybVZhbHVlPFQ+KGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBUIHtcbiAgICByZXR1cm4gRm9ybVNlcnZpY2UuZ2V0Rm9ybVZhbHVlPFQ+KHRoaXMuZm9ybUdyb3VwLCBjb250cm9sTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2UgbyBjb21wb25lbnRlIHBvc3N1aSBlcnJvXG4gICAqIEBwYXJhbSBjb250cm9sTmFtZSAtIE5vbWUgZG8gY29udHJvbGUgbm8gZm9ybUdyb3VwXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFzQ29udHJvbEVycm9yKGNvbnRyb2xOYW1lOiBzdHJpbmcsIGVycm9yQ29kZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGb3JtU2VydmljZS5oYXNDb250cm9sRXJyb3IodGhpcy5mb3JtR3JvdXAsIGNvbnRyb2xOYW1lLCBlcnJvckNvZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldGEgaW5jb25zaXN0w6puY2lhcyBwYXJhIG8gZm9tdWzDoXJpb1xuICAgKiBAcGFyYW0gbm90aWZpY2F0aW9uIC0gTGlzdGEgZGUgbm90aWZpY2HDp8O1ZXNcbiAgICovXG4gIHByb3RlY3RlZCBpbnZhbGlkRm9ybShub3RpZmljYXRpb24/OiBhbnkpIHtcbiAgICBGb3JtU2VydmljZS5pbnZhbGlkRm9ybSh0aGlzLmZvcm1Hcm91cCwgbm90aWZpY2F0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwZWxvIGNhcnJlZ2FtZW50byBkYSB0ZWxhXG4gICAqIEBwYXJhbSBvYnMgLSBPYnNlcnZhYmxlIHJlc3BvbnPDoXZlbCBwZWxvIHNhbHZhbWVudG8gZG9zIGRhZG9zXG4gICAqL1xuICBwdWJsaWMgbG9hZERhdGE8VD4ob2JzOiBPYnNlcnZhYmxlPGFueT4pIHtcbiAgICBvYnNcbiAgICAgIC8vLnBpcGUobG9hZGluZygpKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNOZXdSZWdpc3RyeSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlZ2lzdHJ5ID0gZGF0YSBhcyBUO1xuICAgICAgICB0aGlzLnNldEZvcm1WYWx1ZXModGhpcy5yZWdpc3RyeSk7XG4gICAgICAgIHRoaXMubG9hZEdyaWRzKCk7XG4gICAgICAgIHRoaXMuc2V0VGl0bGVQb3B1cCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbG9hZEdyaWRzKCkgeyB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgcmV0b3JuYXIgYSBsaXN0YVxuICAgKi9cbiAgcHJvdGVjdGVkIG5hdmlnYXRlTGlzdChpZDogYW55ID0gbnVsbCkge1xuICAgIGlmICh0aGlzLnBvcHVwKSB7XG4gICAgICB0aGlzLmR5bmFtaWNEaWFsb2dSZWYuY2xvc2UoaWQpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLmRhZG9zVGVsYT8ucm90YUxpc3Rhcikge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuZGFkb3NUZWxhLnJvdGFMaXN0YXJdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZHluYW1pY0RpYWxvZ1JlZikge1xuICAgICAgdGhpcy5keW5hbWljRGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uZmlndXJlRm9ybSgpO1xuXG4gICAgdGhpcy5wb3B1cCA9IHRoaXMuZHluYW1pY0RpYWxvZ0NvbmZpZz8uZGF0YT8ucG9wdXAgfHwgZmFsc2U7XG5cbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtczogYW55KSA9PiB7XG4gICAgICBpZiAocGFyYW1zWydpZCddKSB7XG4gICAgICAgIHRoaXMubG9hZEZvcm0ocGFyYW1zWydpZCddKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMuZHluYW1pY0RpYWxvZ0NvbmZpZz8uZGF0YT8uaWQpIHtcbiAgICAgICAgdGhpcy5sb2FkRm9ybSh0aGlzLmR5bmFtaWNEaWFsb2dDb25maWcuZGF0YS5pZCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5pc05ld1JlZ2lzdHJ5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkR3JpZHMoKTtcbiAgICAgICAgdGhpcy5zZXRUaXRsZVBvcHVwKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBzYWx2YXIgZGFkb3NcbiAgICogQHBhcmFtIG9icyAtIE9ic2VydmFibGUgcmVzcG9uc8OhdmVsIHBlbG8gc2FsdmFtZW50byBkb3MgZGFkb3NcbiAgICovXG4gIHByb3RlY3RlZCBzYXZlRGF0YShvYnM6IE9ic2VydmFibGU8YW55Pikge1xuICAgIG9ic1xuICAgICAgLnBpcGUoKHNyYzogT2JzZXJ2YWJsZTxhbnk+KSA9PiB7XG4gICAgICAgIHRoaXMuaXNTYXZlTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHJldHVybiBzcmMucGlwZShmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1NhdmVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0U3VjY2VzcyhyZXMuaXRlbTJbMF0ubWVzc2FnZSk7XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZUxpc3QocmVzLml0ZW0xKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgICAgdGhpcy5iYWNrZW5kRXJyb3IoZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHNlIGF0dWFsaXphIG8gdmFsb3IgZGUgdW0gY29tcG9uZW50ZSBkbyBmb3JtR3JvdXBcbiAgICogQHBhcmFtIGNvbnRyb05hbWUgLSBOb21lIGRvIGNvbnRyb2xlXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIHBhcmEgYXR1YWxpemHDp8Ojb1xuICAgKi9cbiAgcHJvdGVjdGVkIHNldENvbnRyb2xWYWx1ZShjb250cm9OYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBGb3JtU2VydmljZS5zZXRDb250cm9sVmFsdWUodGhpcy5mb3JtR3JvdXAsIGNvbnRyb05hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHVhbGl6YSB2YWxvcmVzIGRvcyBjb21wb25lbnRlcyBkbyBmb3JtR3JvdXBcbiAgICogQHBhcmFtIHZhbHVlcyAtIFZhbG9yZXMgcGFyYSBhdHVhbGl6YcOnw6NvXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyh2YWx1ZXM6IGFueSkge1xuICAgIHRoaXMub25TZXRGb3JtVmFsdWVzID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHZhbHVlcywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIHRoaXMub25TZXRGb3JtVmFsdWVzID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogU2V0YSBvIHTDrXR1bG8gZG8gcG9wdXBcbiAgICovXG4gIHByaXZhdGUgc2V0VGl0bGVQb3B1cCgpIHtcbiAgICBpZiAodGhpcy5wb3B1cCkge1xuICAgICAgaWYgKHRoaXMuZHluYW1pY0RpYWxvZ0NvbmZpZylcbiAgICAgICAgdGhpcy5keW5hbWljRGlhbG9nQ29uZmlnLmhlYWRlciA9IHRoaXMuZGFkb3NUZWxhPy50aXR1bG9Gb3JtO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHVhbGl6YSBvIHZhbGlkYWRvciBkZSB1bSBjb21wb25lbnRlIGRvIGZvcm1Hcm91cFxuICAgKiBAcGFyYW0gY29udHJvTmFtZSAtIE5vbWUgZG8gY29udHJvbGVcbiAgICogQHBhcmFtIHZhbGlkYXRvcnMgLSBSZWdyYSBkZSB2YWxpZGHDp8Ojb1xuICAgKi9cbiAgcHJvdGVjdGVkIHNldFZhbGlkYXRvcnMoY29udHJvTmFtZTogc3RyaW5nLCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW10gfCBudWxsKSB7XG4gICAgRm9ybVNlcnZpY2Uuc2V0VmFsaWRhdG9ycyh0aGlzLmZvcm1Hcm91cCwgY29udHJvTmFtZSwgdmFsaWRhdG9ycyk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGFyYSBvcyBtw6l0b2RvcyBkZSB2YWxpZGHDp8O1ZXMgZG8gZm9ybXVsw6FyaW9cbiAgICogQHJldHVybnMgLSBUcnVlL0ZhbHNlXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGVGb3JtKCk6IGJvb2xlYW4ge1xuICAgIGxldCB2YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwICYmIHRoaXMuZm9ybUdyb3VwLnZhbGlkKSB7XG4gICAgICB2YWxpZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNBY2NvcmRpb25FeHBhbmRlZCA9IHRydWU7XG4gICAgICB0aGlzLmludmFsaWRGb3JtKCk7XG5cbiAgICAgIGlmICh0aGlzLmRhZG9zVGVsYT8ubWVuc2FnZW1WYWxpZGFjYW8pIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmRpYWxvZyh7XG4gICAgICAgICAgdHlwZTogJ2FsZXJ0JyxcbiAgICAgICAgICBtZXNzYWdlOiAnVmVyaWZpcXVlIG9zIGNhbXBvcyBvYnJpZ2F0w7NyaW9zLicsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxufVxuIl19
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtY3J1ZC1mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtY3J1ZC1mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxTQUFTLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7QUFZdEQsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSxpQkFBaUI7SUFnQm5FLFlBQ0UsYUFBNEIsRUFDNUIsbUJBQXdDLEVBQzlCLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxtQkFBd0MsRUFDeEMsTUFBYztRQUN4QixLQUFLLENBRUQsYUFBYSxFQUNiLG1CQUFtQixDQUNwQixDQUFDO1FBUk0sbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBcEJoQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLGNBQVMsR0FBYyxJQUFJLFNBQVMsQ0FBQyxF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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tIFwicHJpbWVuZy9keW5hbWljZGlhbG9nXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIGZpbmFsaXplIH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3RhYmxlL2FjdGlvbi1pdGVtXCI7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50Q3J1ZCB9IGZyb20gXCIuL2Jhc2UtY29tcG9uZW50LWNydWRcIjtcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2Zvcm0uc2VydmljZVwiO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHsgbG9hZGluZyB9IGZyb20gXCIuLi8uLi9sb2FkZXIvbG9hZGVyLnNlcnZpY2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYWRvc1RlbGEge1xuICBzdWJUaXR1bG9Gb3JtOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHRpdHVsb0Zvcm06IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcm90YUxpc3Rhcjogc3RyaW5nO1xuICBtZW5zYWdlbVZhbGlkYWNhbzogYm9vbGVhblxufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21wb25lbnRDcnVkRm9ybSBleHRlbmRzIEJhc2VDb21wb25lbnRDcnVkIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByb3RlY3RlZCBpc0FjY29yZGlvbkV4cGFuZGVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc05ld1JlZ2lzdHJ5ID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc1NhdmVMb2FkaW5nID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc1ZpZXcgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgcHJvdGVjdGVkIGFjdGlvbnM6IEFjdGlvbkl0ZW1bXSA9IFtdO1xuXG4gIHByb3RlY3RlZCBkYWRvc1RlbGE6IERhZG9zVGVsYSB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHBvcHVwOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCByZWdpc3RyeTogYW55ID0gbnVsbDtcblxuICBwcml2YXRlIG9uU2V0Rm9ybVZhbHVlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByb3RlY3RlZCBkeW5hbWljRGlhbG9nUmVmOiBEeW5hbWljRGlhbG9nUmVmLFxuICAgIHByb3RlY3RlZCBkeW5hbWljRGlhbG9nQ29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcikge1xuICAgIHN1cGVyXG4gICAgICAoXG4gICAgICAgIGRpYWxvZ1NlcnZpY2UsXG4gICAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2VcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBjb25maWd1cmHDp8OjbyBkbyBmb3JtXG4gICAqL1xuICBhYnN0cmFjdCBjb25maWd1cmVGb3JtKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgbyBjYXJyZWdhbWVudG8gZG8gZm9ybVxuICAgKiBAcGFyYW0gaWRcbiAgICovXG4gIGFic3RyYWN0IGxvYWRGb3JtKGlkOiBhbnkpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBwYXJhIHNhbHZhbWVudG8gZG9zIGRhZG9zXG4gICAqL1xuICBhYnN0cmFjdCBzYXZlKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgdHJhdGFtZW50byBkYXMgbm90aWZpY2HDp8O1ZXMgZG8gYmFja2VuZFxuICAgKiBAcGFyYW0gZXJyIC0gTm90aWZpY2HDp8Ojb1xuICAgKi9cbiAgcHJvdGVjdGVkIGJhY2tlbmRFcnJvcihlcnI6IGFueSk6IHZvaWQge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGlmIChlcnIuc3RhdHVzID09IDQwNCkge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihlcnIuZXJyb3IuaXRlbTJbMF0ubWVzc2FnZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGVyci5zdGF0dXMgPT0gNDAwKSB7XG4gICAgICAgIC8vIEVycm9zIGRlIHZhbGlkYcOnw6NvIGRlIGRvbcOtbmlvIGRvIGJhY2tlbmRcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyLmVycm9yKSkge1xuICAgICAgICAgIGlmIChlcnIuZXJyb3I/Lmxlbmd0aCkge1xuXG4gICAgICAgICAgICBpZiAoZXJyLmVycm9yLmxlbmd0aCA9PSAxICYmIGVyci5lcnJvclswXS5rZXkgPT0gJycpIHtcbiAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0RXJyb3IoZXJyLmVycm9yWzBdLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW52YWxpZEZvcm0oZXJyLmVycm9yKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXJyLmVycm9yPy50aXRsZSkge1xuICAgICAgICAgIC8vIEVycm8gZGUganNvbiBubyBiYWNrZW5kXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0RXJyb3IoZXJyLmVycm9yLnRpdGxlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGVyci5zdGF0dXMgPT0gNDE1KSB7XG4gICAgICAgIGlmIChlcnIuZXJyb3I/LnRpdGxlKSB7XG4gICAgICAgICAgLy8gRXJybyBkZSBqc29uIG5vIGJhY2tlbmRcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihlcnIuZXJyb3IudGl0bGUpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBRdWFscXVlciBvdXRybyB0aXBvIGRlIGVycm8gcXVlIHRlbmhhIG1lbnNhZ2VtXG4gICAgICBpZiAoZXJyLm1lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0RXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBhbyBjbGljYXIgbm8gYm90w6NvIGRlIGNhbmNlbGFtZW50b1xuICAgKi9cbiAgcHJvdGVjdGVkIGNhbmNlbCgpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UucXVlc3Rpb24oe1xuICAgICAgdHlwZTogJ3F1ZXN0aW9uJyxcbiAgICAgIG1lc3NhZ2U6ICdEZXNlamEgY2FuY2VsYXIgYSBvcGVyYcOnw6NvPycsXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUxpc3QoKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2UgaG91dmVyYW0gYWx0ZXJhw6fDtWVzIG5vcyBjb21wb25lbnRlcyBkbyBmb3JtQ29udHJvbFxuICAgKiBAcGFyYW0gY29udHJvbHMgLSBOb21lcyBkbyBjb250cm9sZXMgbm8gZm9ybUdyb3VwXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGVcbiAgICovXG4gIHByb3RlY3RlZCBkZXRlY3RGb3JtQ29udHJvbENoYW5nZXMoY29udHJvbHM6IEFycmF5PHN0cmluZz4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGNvbnRyb2xMaXN0OiBPYnNlcnZhYmxlPGFueT5bXSA9IFtdO1xuICAgIGNvbnRyb2xzLmZvckVhY2goY29udHJvbE5hbWUgPT4gY29udHJvbExpc3QucHVzaCh0aGlzLmZvcm1Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV0udmFsdWVDaGFuZ2VzKSk7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoY29udHJvbExpc3QpLnBpcGUoZmlsdGVyKCgpID0+ICF0aGlzLm9uU2V0Rm9ybVZhbHVlcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBkZXNhYmlsaXRhciB1bSBjb21wb25lbnRlXG4gICAqIEBwYXJhbSBjb250cm9sTmFtZSAtIE5vbWUgZG8gY29udHJvbGUgbm8gZm9ybUdyb3VwXG4gICAqL1xuICBwcm90ZWN0ZWQgZGlzYWJsZUNvbXBvbmVudChjb250cm9sTmFtZTogc3RyaW5nKSB7XG4gICAgRm9ybVNlcnZpY2UuZGlzYWJsZUNvbnRyb2wodGhpcy5mb3JtR3JvdXAsIGNvbnRyb2xOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgbGltcGFyIGUgZGVzYWJpbGl0YXIgdW0gY29tcG9uZW50ZVxuICAgKiBAcGFyYW0gY29udHJvbE5hbWUgLSBOb21lIGRvIGNvbnRyb2xlIG5vIGZvcm1Hcm91cFxuICAgKiBAcGFyYW0gdmFsdWUgLSBWYWxvciBkZWZhdWx0XG4gICAqL1xuICBwcm90ZWN0ZWQgZGlzYWJsZUFuZENsZWFyQ29tcG9uZW50KGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlPzogYW55KSB7XG4gICAgRm9ybVNlcnZpY2UuZGlzYWJsZUFuZENsZWFyQ29udHJvbCh0aGlzLmZvcm1Hcm91cCwgY29udHJvbE5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgaGFiaWxpdGFyIHVtIGNvbXBvbmVudGVcbiAgICogQHBhcmFtIGNvbnRyb2xOYW1lIC0gTm9tZSBkbyBjb250cm9sZSBubyBmb3JtR3JvdXBcbiAgICovXG4gIHByb3RlY3RlZCBlbmFibGVDb21wb25lbnQoY29udHJvTmFtZTogc3RyaW5nKSB7XG4gICAgRm9ybVNlcnZpY2UuZW5hYmxlQ29udHJvbCh0aGlzLmZvcm1Hcm91cCwgY29udHJvTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBxdWUgcmV0b3JuYSBvIHZhbG9yIGRlIHVtIGNvbXBvbmVudGVcbiAgICogQHBhcmFtIGNvbnRyb2xOYW1lIC0gTm9tZSBkbyBjb250cm9sZSBubyBmb3JtR3JvdXBcbiAgICogQHJldHVybnMgLSBWYWxvclxuICAgKi9cbiAgcHJvdGVjdGVkIGdldEZvcm1WYWx1ZTxUPihjb250cm9sTmFtZTogc3RyaW5nKTogVCB7XG4gICAgcmV0dXJuIEZvcm1TZXJ2aWNlLmdldEZvcm1WYWx1ZTxUPih0aGlzLmZvcm1Hcm91cCwgY29udHJvbE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNlIG8gY29tcG9uZW50ZSBwb3NzdWkgZXJyb1xuICAgKiBAcGFyYW0gY29udHJvbE5hbWUgLSBOb21lIGRvIGNvbnRyb2xlIG5vIGZvcm1Hcm91cFxuICAgKi9cbiAgcHJvdGVjdGVkIGhhc0NvbnRyb2xFcnJvcihjb250cm9sTmFtZTogc3RyaW5nLCBlcnJvckNvZGU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRm9ybVNlcnZpY2UuaGFzQ29udHJvbEVycm9yKHRoaXMuZm9ybUdyb3VwLCBjb250cm9sTmFtZSwgZXJyb3JDb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRhIGluY29uc2lzdMOqbmNpYXMgcGFyYSBvIGZvbXVsw6FyaW9cbiAgICogQHBhcmFtIG5vdGlmaWNhdGlvbiAtIExpc3RhIGRlIG5vdGlmaWNhw6fDtWVzXG4gICAqL1xuICBwcm90ZWN0ZWQgaW52YWxpZEZvcm0obm90aWZpY2F0aW9uPzogYW55KSB7XG4gICAgRm9ybVNlcnZpY2UuaW52YWxpZEZvcm0odGhpcy5mb3JtR3JvdXAsIG5vdGlmaWNhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcGVsbyBjYXJyZWdhbWVudG8gZGEgdGVsYVxuICAgKiBAcGFyYW0gb2JzIC0gT2JzZXJ2YWJsZSByZXNwb25zw6F2ZWwgcGVsbyBzYWx2YW1lbnRvIGRvcyBkYWRvc1xuICAgKi9cbiAgcHVibGljIGxvYWREYXRhPFQ+KG9iczogT2JzZXJ2YWJsZTxhbnk+KSB7XG4gICAgb2JzXG4gICAgICAucGlwZShsb2FkaW5nKCkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc05ld1JlZ2lzdHJ5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVnaXN0cnkgPSBkYXRhIGFzIFQ7XG4gICAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlcyh0aGlzLnJlZ2lzdHJ5KTtcbiAgICAgICAgdGhpcy5sb2FkR3JpZHMoKTtcbiAgICAgICAgdGhpcy5zZXRUaXRsZVBvcHVwKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkR3JpZHMoKSB7IH1cblxuICAvKipcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSByZXRvcm5hciBhIGxpc3RhXG4gICAqL1xuICBwcm90ZWN0ZWQgbmF2aWdhdGVMaXN0KGlkOiBhbnkgPSBudWxsKSB7XG4gICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgIHRoaXMuZHluYW1pY0RpYWxvZ1JlZi5jbG9zZShpZCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuZGFkb3NUZWxhPy5yb3RhTGlzdGFyKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5kYWRvc1RlbGEucm90YUxpc3Rhcl0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5keW5hbWljRGlhbG9nUmVmKSB7XG4gICAgICB0aGlzLmR5bmFtaWNEaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb25maWd1cmVGb3JtKCk7XG5cbiAgICB0aGlzLnBvcHVwID0gdGhpcy5keW5hbWljRGlhbG9nQ29uZmlnPy5kYXRhPy5wb3B1cCB8fCBmYWxzZTtcblxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgIGlmIChwYXJhbXNbJ2lkJ10pIHtcbiAgICAgICAgdGhpcy5sb2FkRm9ybShwYXJhbXNbJ2lkJ10pO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodGhpcy5keW5hbWljRGlhbG9nQ29uZmlnPy5kYXRhPy5pZCkge1xuICAgICAgICB0aGlzLmxvYWRGb3JtKHRoaXMuZHluYW1pY0RpYWxvZ0NvbmZpZy5kYXRhLmlkKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmlzTmV3UmVnaXN0cnkgPSB0cnVlO1xuICAgICAgICB0aGlzLmxvYWRHcmlkcygpO1xuICAgICAgICB0aGlzLnNldFRpdGxlUG9wdXAoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBwYXJhIHNhbHZhciBkYWRvc1xuICAgKiBAcGFyYW0gb2JzIC0gT2JzZXJ2YWJsZSByZXNwb25zw6F2ZWwgcGVsbyBzYWx2YW1lbnRvIGRvcyBkYWRvc1xuICAgKi9cbiAgcHJvdGVjdGVkIHNhdmVEYXRhKG9iczogT2JzZXJ2YWJsZTxhbnk+KSB7XG4gICAgb2JzXG4gICAgICAucGlwZSgoc3JjOiBPYnNlcnZhYmxlPGFueT4pID0+IHtcbiAgICAgICAgdGhpcy5pc1NhdmVMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHNyYy5waXBlKGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzU2F2ZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSkpO1xuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RTdWNjZXNzKHJlcy5pdGVtMlswXS5tZXNzYWdlKTtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlTGlzdChyZXMuaXRlbTEpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGUpID0+IHtcbiAgICAgICAgICB0aGlzLmJhY2tlbmRFcnJvcihlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gc2UgYXR1YWxpemEgbyB2YWxvciBkZSB1bSBjb21wb25lbnRlIGRvIGZvcm1Hcm91cFxuICAgKiBAcGFyYW0gY29udHJvTmFtZSAtIE5vbWUgZG8gY29udHJvbGVcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsb3IgcGFyYSBhdHVhbGl6YcOnw6NvXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0Q29udHJvbFZhbHVlKGNvbnRyb05hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIEZvcm1TZXJ2aWNlLnNldENvbnRyb2xWYWx1ZSh0aGlzLmZvcm1Hcm91cCwgY29udHJvTmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dWFsaXphIHZhbG9yZXMgZG9zIGNvbXBvbmVudGVzIGRvIGZvcm1Hcm91cFxuICAgKiBAcGFyYW0gdmFsdWVzIC0gVmFsb3JlcyBwYXJhIGF0dWFsaXphw6fDo29cbiAgICovXG4gIHByb3RlY3RlZCBzZXRGb3JtVmFsdWVzKHZhbHVlczogYW55KSB7XG4gICAgdGhpcy5vblNldEZvcm1WYWx1ZXMgPSB0cnVlO1xuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUodmFsdWVzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgdGhpcy5vblNldEZvcm1WYWx1ZXMgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRhIG8gdMOtdHVsbyBkbyBwb3B1cFxuICAgKi9cbiAgcHJpdmF0ZSBzZXRUaXRsZVBvcHVwKCkge1xuICAgIGlmICh0aGlzLnBvcHVwKSB7XG4gICAgICBpZiAodGhpcy5keW5hbWljRGlhbG9nQ29uZmlnKVxuICAgICAgICB0aGlzLmR5bmFtaWNEaWFsb2dDb25maWcuaGVhZGVyID0gdGhpcy5kYWRvc1RlbGE/LnRpdHVsb0Zvcm07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF0dWFsaXphIG8gdmFsaWRhZG9yIGRlIHVtIGNvbXBvbmVudGUgZG8gZm9ybUdyb3VwXG4gICAqIEBwYXJhbSBjb250cm9OYW1lIC0gTm9tZSBkbyBjb250cm9sZVxuICAgKiBAcGFyYW0gdmFsaWRhdG9ycyAtIFJlZ3JhIGRlIHZhbGlkYcOnw6NvXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0VmFsaWRhdG9ycyhjb250cm9OYW1lOiBzdHJpbmcsIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSB8IG51bGwpIHtcbiAgICBGb3JtU2VydmljZS5zZXRWYWxpZGF0b3JzKHRoaXMuZm9ybUdyb3VwLCBjb250cm9OYW1lLCB2YWxpZGF0b3JzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwYXJhIG9zIG3DqXRvZG9zIGRlIHZhbGlkYcOnw7VlcyBkbyBmb3JtdWzDoXJpb1xuICAgKiBAcmV0dXJucyAtIFRydWUvRmFsc2VcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZUZvcm0oKTogYm9vbGVhbiB7XG4gICAgbGV0IHZhbGlkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5mb3JtR3JvdXAgJiYgdGhpcy5mb3JtR3JvdXAudmFsaWQpIHtcbiAgICAgIHZhbGlkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0FjY29yZGlvbkV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaW52YWxpZEZvcm0oKTtcblxuICAgICAgaWYgKHRoaXMuZGFkb3NUZWxhPy5tZW5zYWdlbVZhbGlkYWNhbykge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZGlhbG9nKHtcbiAgICAgICAgICB0eXBlOiAnYWxlcnQnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdWZXJpZmlxdWUgb3MgY2FtcG9zIG9icmlnYXTDs3Jpb3MuJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkO1xuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Component } from "@angular/core";
|
|
2
2
|
import { BaseComponentCrud } from "./base-component-crud";
|
|
3
3
|
import { TablePaginate } from "../components/table/table.paginate";
|
|
4
|
+
import { loading } from "../../loader/loader.service";
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "primeng/dynamicdialog";
|
|
6
7
|
import * as i2 from "../services/notification.service";
|
|
@@ -32,7 +33,7 @@ export class BaseComponentCrudList extends BaseComponentCrud {
|
|
|
32
33
|
*/
|
|
33
34
|
loadData(obs) {
|
|
34
35
|
obs
|
|
35
|
-
|
|
36
|
+
.pipe(loading())
|
|
36
37
|
.subscribe({
|
|
37
38
|
next: (res) => {
|
|
38
39
|
this.totalRecords = res.item1;
|
|
@@ -64,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
|
|
|
64
65
|
template: ''
|
|
65
66
|
}]
|
|
66
67
|
}], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.NotificationService }, { type: i3.Router }]; } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtY3J1ZC1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtY3J1ZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBS25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7QUFLdEQsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSxpQkFBaUI7SUFRbkUsWUFDRSxhQUE0QixFQUM1QixtQkFBd0MsRUFDakMsTUFBYztRQUNyQixLQUFLLENBRUQsYUFBYSxFQUNiLG1CQUFtQixDQUNwQixDQUFDO1FBTEcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQU52QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixvQkFBZSxHQUFpQixFQUFFLENBQUM7SUFXbkMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUE4QkQ7OztPQUdHO0lBQ08sVUFBVSxDQUFDLEtBQVU7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFFBQVEsQ0FBQyxHQUFvQjtRQUNyQyxHQUFHO2FBQ0EsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2YsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFBO1lBQzdCLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxRQUFRLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNPLE9BQU87UUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDOztrSEE5Rm1CLHFCQUFxQjtzR0FBckIscUJBQXFCLDJFQUYvQixFQUFFOzJGQUVRLHFCQUFxQjtrQkFIMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tIFwicHJpbWVuZy9keW5hbWljZGlhbG9nXCI7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5cbmltcG9ydCB7IEJhc2VDb21wb25lbnRDcnVkIH0gZnJvbSBcIi4vYmFzZS1jb21wb25lbnQtY3J1ZFwiO1xuaW1wb3J0IHsgVGFibGVQYWdpbmF0ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLnBhZ2luYXRlXCI7XG5pbXBvcnQgeyBUYWJsZUNvbmZpZyB9IGZyb20gXCIuLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZ1wiO1xuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3RhYmxlL2FjdGlvbi1pdGVtXCI7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGxvYWRpbmcgfSBmcm9tIFwiLi4vLi4vbG9hZGVyL2xvYWRlci5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudENydWRMaXN0IGV4dGVuZHMgQmFzZUNvbXBvbmVudENydWQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGRhdGFTb3VyY2U6IGFueTtcbiAgc2VsZWN0ZWRJdGVtOiBhbnk7XG4gIHRhYmxlQ29uZmlnITogVGFibGVDb25maWc7XG4gIHRvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcbiAgYWN0aW9uc1BhZ2VMaXN0OiBBY3Rpb25JdGVtW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyKSB7XG4gICAgc3VwZXJcbiAgICAgIChcbiAgICAgICAgZGlhbG9nU2VydmljZSxcbiAgICAgICAgbm90aWZpY2F0aW9uU2VydmljZVxuICAgICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZEZpbHRlcnMoKTtcbiAgICB0aGlzLmNvbmZpZ3VyZVRhYmxlKCk7XG5cbiAgICAvLyBUYWJlbGEgbsOjbyBjb25maWd1cmFkYSBwYXJhIHBhZ2luYcOnw6NvXG4gICAgaWYgKCF0aGlzLnRhYmxlQ29uZmlnLmxhenkpXG4gICAgICB0aGlzLmxvYWRUYWJsZShuZXcgVGFibGVQYWdpbmF0ZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBwYXJhIGNvbmZpZ3VyYcOnw6NvIGRhcyB0YWJlbGFzIGRvIGNvbXBvbmVudGUgZGUgbGlzdGFcbiAgICovXG4gIGFic3RyYWN0IGNvbmZpZ3VyZVRhYmxlKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgZWRpw6fDo28gZGUgcmVnaXN0cm9zXG4gICAqIEBwYXJhbSByZWdpc3RyeSAtIFJlZ2lzdHJvIHF1ZSBlc3TDoSBzZW5kbyBlZGl0YWRvXG4gICAqXG4gICAqL1xuICBhYnN0cmFjdCBlZGl0KHJlZ2lzdHJ5OiBhbnkpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBwYXJhIGNhcnJlZ2FtZW50byBkb3MgZmlsdHJvcyBkYSB0ZWxhXG4gICAqL1xuICBhYnN0cmFjdCBsb2FkRmlsdGVycygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBwYXJhIGNhcnJlZ2FyIGEgdGFiZWxhIGRvIGNvbXBvbmVudGUgZGUgbGlzdGFcbiAgICogQHBhcmFtIHRhYmxlUGFnaW5hdGUgLSBDbGFzc2UgZG9zIGRhZG9zIGRhIHBhZ2luYcOnw6NvIGRhIHRhYmVsYVxuICAgKi9cbiAgYWJzdHJhY3QgbG9hZFRhYmxlKHRhYmxlUGFnaW5hdGU6IFRhYmxlUGFnaW5hdGUpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBhbyBjbGljYXIgbm8gYm90w6NvIGRlIG5vdm8gcmVnaXN0cm9cbiAgICovXG4gIGFic3RyYWN0IG5ld1JlZ2lzdHJ5KCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIHNldGEgbyByZWdpc3RybyBzZWxlY2lvbmFkbyBuYSB0YWJlbGFcbiAgICogQHBhcmFtIGV2ZW50IC0gUmVnaXN0cm9cbiAgICovXG4gIHByb3RlY3RlZCBhY3RpdmVJdGVtKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGV2ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGRpc3BhcmEgbyBjYXJyZWdhbWVudG8gZGEgdGFiZWxhXG4gICAqIEBwYXJhbSBvYnMgLSBPYnNlcnZhYmxlIGRlIGNhcnJlZ2FtZW50byBkb3MgZGFkb3NcbiAgICovXG4gIHByb3RlY3RlZCBsb2FkRGF0YShvYnM6IE9ic2VydmFibGU8YW55Pikge1xuICAgIG9ic1xuICAgICAgLnBpcGUobG9hZGluZygpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzLml0ZW0xO1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IHJlcy5pdGVtMlxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGUpID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0RXJyb3IoZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBkaXNwYXJhIGEgcGFnaW5hw6fDo29cbiAgICovXG4gIHByb3RlY3RlZCBwYWdpbmF0ZShldmVudDogYW55KSB7XG4gICAgdGhpcy5sb2FkVGFibGUoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGRpc3BhcmEgYSBhdHVhbGl6YcOnw6NvIGRhIHDDoWdpbmEgaW50ZWlyYVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlZnJlc2goKSB7XG4gICAgdGhpcy5sb2FkVGFibGUobmV3IFRhYmxlUGFnaW5hdGUoKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -195,10 +195,10 @@ export class MenuComponent {
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
MenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
198
|
-
MenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: MenuComponent, selector: "kv-menu", inputs: { menuCompleto: "menuCompleto", licencas: "licencas", licencaSelecionada: "licencaSelecionada", logoImage: "logoImage", nomeUsuario: "nomeUsuario", breadCrumbs: "breadCrumbs" }, outputs: { licencaChange: "licencaChange", gerenciarKeePassEvent: "gerenciarKeePassEvent", sairEvent: "sairEvent", expandMenuEmit: "expandMenuEmit", trocarLicencaEmit: "trocarLicencaEmit" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, viewQueries: [{ propertyName: "sidebarRef", first: true, predicate: ["sidebarRef"], descendants: true }, { propertyName: "sistemasPanel", first: true, predicate: ["sistemasPanel"], descendants: true }, { propertyName: "meusDadosPanel", first: true, predicate: ["meusDadosPanel"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row overflow-y-hidden w- full-container\">\n\n <div [style]=\"{minWidth: expandMenu ? '300px' : '60px'}\"></div>\n\n <p-sidebar\n #sidebarRef\n [visible]=\"true\"\n [showCloseIcon]=\"false\"\n [modal]=\"false\"\n [style]=\"{width: expandMenu ? '300px' : '60px'}\"\n >\n <ng-template pTemplate=\"headless\">\n <div class=\"flex flex-column {{expandMenu ? 'mx-1' : 'mx-1'}}\">\n <div class=\"flex flex-column gap-2 justify-content-between flex-shrink-0 mx-2\">\n <div\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}} py-3\"\n >\n <img\n *ngIf=\"expandMenu\"\n alt=\"Card\"\n [src]=\"logoImage\"\n width=\"150\"\n />\n\n <button\n pButton\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\n (click)=\"toggleMenu()\"\n [pTooltip]=\"expandMenu ? 'Ocutar Menu' : 'Expandir Menu'\"\n [tooltipPosition]=\"'right'\"\n >\n <i class=\"material-symbols-outlined\">\n menu\n </i>\n </button>\n </div>\n\n <div\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}}\"\n >\n <div\n class=\"flex flex-column cursor-pointer\"\n *ngIf=\"expandMenu\"\n (click)=\"trocarLicenca()\"\n >\n <span\n class=\"text-sm font-semibold mr-2\"\n [pTooltip]=\"this.licencaSelecionada.nome\"\n [tooltipPosition]=\"'right'\"\n >\n {{MascaraNomeLicenca(this.licencaSelecionada.nome)}}\n </span>\n <span class=\"text-sm mt-1\">{{MascaraCnpj(this.licencaSelecionada.cpfcnpj)}}</span>\n </div>\n\n <button\n pButton\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\n (click)=\"trocarLicenca()\"\n [pTooltip]=\"'Alterar workspace'\"\n [tooltipPosition]=\"'right'\"\n >\n <i class=\"material-symbols-outlined\">\n sync_alt\n </i>\n </button>\n\n </div>\n <p-divider type=\"solid\"></p-divider>\n </div>\n\n <div\n class=\"list-none m-0 card-container {{expandMenu ? 'mx-1' : ''}}\"\n [style.max-height]=\"(heigthCard - 220) + 'px'\"\n style=\"overflow-y: auto;\"\n >\n <!-- menus -->\n <li *ngFor=\"let menu of menus; let i = index\">\n <!-- menu que n\u00E3o tem filho -->\n <a\n (mouseenter)=\"onMouseEnter(i)\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n (click)=\"callRoute(menu.link)\"\n *ngIf=\"!menu.menupai && menu.idmenupai == 0\"\n pRipple\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\n [tooltipPosition]=\"'right'\"\n class=\"{{verificarPaginaSelecionada(menu.link) ? 'bg-green-600' : ''}} menu-option flex align-items-center no-underline {{!expandMenu ? 'justify-content-center' : ''}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\n >\n\n <i\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}} icon-hover-color {{verificarPaginaSelecionada(menu.link) ? 'text-white' : ''}}\"\n *ngIf=\"menu.icone && menu.icone !== ''\"\n >\n {{ menu.icone }}\n </i>\n <span\n class=\"text-base text-blue-900 font-medium {{verificarPaginaSelecionada(menu.link) ? 'text-white' : ''}}\"\n *ngIf=\"expandMenu\"\n >{{ menu.descricaomenu }}</span>\n </a>\n <!-- menu com filho -->\n <div *ngIf=\"menu.menupai\">\n <a\n (mouseenter)=\"onMouseEnter(i)\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n pRipple\n pStyleClass=\"@next\"\n enterClass=\"hidden\"\n enterActiveClass=\"slidedown\"\n leaveToClass=\"hidden\"\n leaveActiveClass=\"slideup\"\n class=\"menu-option flex align-items-center {{!expandMenu ? 'justify-content-center' : 'justify-content-between'}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\n [tooltipPosition]=\"'right'\"\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\n (click)=\"!expandMenu ? expandMenu = !expandMenu : ''\"\n >\n <div class=\"flex flex-row align-items-center\">\n\n <i\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}} icon-hover-color\"\n *ngIf=\"menu.icone && menu.icone !== ''\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n >\n {{ menu.icone }}\n </i>\n <span\n class=\"text-base text-blue-900 font-medium\"\n *ngIf=\"expandMenu\"\n >{{ menu.descricaomenu }}</span>\n </div>\n <i\n class=\"pi pi-chevron-down text-blue-900 mr-1 icon-hover-color\"\n *ngIf=\"expandMenu\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n ></i>\n </a>\n\n <!-- filhos -->\n <div\n class=\"list-none py-0 pl-3 pr-0 m-0 hidden overflow-y-hidden transition-all transition-duration-400 transition-ease-in-out\"\n >\n <li *ngFor=\"\n let filho of retornarMenuFilhos(menu.idsistema, menu.idmenu); let iFilho = index\n \">\n <a\n (mouseenter)=\"onMouseFilhoEnter(filho.idmenu)\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"{'hover-color': mouseOverFilhoIndex === filho.idmenu}\"\n *ngIf=\"expandMenu\"\n (click)=\"callRoute(filho.link)\"\n pRipple\n class=\"{{verificarPaginaSelecionada(filho.link) ? 'bg-green-600' : ''}} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 transition-duration-150 transition-colors p-ripple p-2\"\n >\n <i\n class=\"pi pi-chart-line mr-2 ml-1 adjust-icon-menu\"\n *ngIf=\"filho.icone && filho.icone !== ''\"\n ></i>\n <span\n class=\"text-base text-blue-900 ml-4 {{verificarPaginaSelecionada(filho.link) ? 'text-white' : ''}}\"\n *ngIf=\"expandMenu\"\n >{{ filho.descricaomenu }}</span>\n </a>\n </li>\n </div>\n </div>\n</div>\n</div>\n</ng-template>\n</p-sidebar>\n\n\n<div\n class=\"w-auto h-screen page-content overflow-y-hidden\"\n id=\"page-content\"\n>\n\n <div class=\"flex flex-row align-items-center justify-content-between m-3\">\n <div *ngIf=\"breadCrumbs\">\n <p class=\"text-xl font-semibold text-blue-900 breadcrumb-title\">{{breadCrumbItems[breadCrumbItems.length -\n 1]?.label}}</p>\n <p-breadcrumb\n *ngIf=\"widthCard > 400\"\n styleClass=\"border-none p-0 flex align-items-center h-2rem !important;\"\n [model]=\"breadCrumbItems\"\n [style]=\"{backgroundColor: '#d4d3d3'}\"\n (onItemClick)=\"callRoute($event.item.routerLink, true)\"\n ></p-breadcrumb>\n </div>\n\n <div *ngIf=\"!breadCrumbs\"></div>\n\n <div class=\"w-auto flex flex-row align-items-center gap-2\">\n <button\n pButton\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\n (click)=\"sistemasPanel.toggle($event)\"\n [pTooltip]=\"'Sistemas'\"\n [tooltipPosition]=\"'left'\"\n >\n <i class=\"material-symbols-outlined\">\n apps\n </i>\n </button>\n <button\n pButton\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\n (click)=\"meusDadosPanel.toggle($event)\"\n [pTooltip]=\"'Menu do Usu\u00E1rio'\"\n [tooltipPosition]=\"'left'\"\n >\n <i class=\"material-symbols-outlined\">\n person\n </i>\n </button>\n </div>\n </div>\n\n\n <p-card\n class=\"card-container\"\n styleClass=\"m-3 border-noround overflow-y-auto card-container\"\n [style]=\"{height: heigthCard - ajustarHeigthCard() + 'px'}\"\n >\n <div class=\"card-container w-full\">\n <ng-content></ng-content>\n </div>\n </p-card>\n\n</div>\n\n\n</div>\n\n<p-overlayPanel\n #sistemasPanel\n [showTransitionOptions]=\"'350ms ease-out'\"\n [hideTransitionOptions]=\"'250ms ease-in'\"\n>\n\n <ng-template pTemplate=\"container\">\n\n <p class=\"title-style mt-3\">Sistemas</p>\n <div\n class=\"flex flex-row flex-wrap gap-2 align-items-center justify-content-center mt-5 mb-3\"\n style=\"width: 250px; height: 100%;\"\n >\n <button\n *ngFor=\"let menu of menuCompleto\"\n pButton\n pRipple\n class=\"btn-sistema-2 btn-sistema hover-btn-cor-padrao remove-focus h-4rem w-4rem\"\n (click)=\"definirMenusPorSistema(menu.sistema.idsistema)\"\n [pTooltip]=\"menu.sistema.descricaosistema\"\n [tooltipPosition]=\"'left'\"\n >\n <!-- <img\n alt=\"logo\"\n style=\"width: 2rem; height: 2rem;\"\n /> -->\n {{ menu.sistema.nomesistema.charAt(0).toUpperCase() }}\n\n </button>\n\n\n <!-- <p-button styleClass=\"p-button-outlined\">\n <img alt=\"logo\" src=\"https://primefaces.org/cdn/primeng/images/primeng-icon.svg\" style=\"width: 1.5rem\" />\n <span class=\"ml-2 font-bold\">PrimeNG</span>\n </p-button> -->\n\n </div>\n </ng-template>\n</p-overlayPanel>\n\n<p-overlayPanel\n #meusDadosPanel\n [showTransitionOptions]=\"'350ms ease-out'\"\n [hideTransitionOptions]=\"'250ms ease-in'\"\n>\n\n <ng-template pTemplate=\"container\">\n\n <p class=\"title-style mt-3\">Ol\u00E1, {{nomeUsuario ? nomeUsuario.split(' ')[0] : 'Usu\u00E1rio'}} !</p>\n <div class=\"mt-5 mb-3\">\n\n </div>\n\n <p-button\n icon=\"pi pi-lock\"\n label=\"Ger\u00EAnciar KeevoPass\"\n (onClick)=\"gerenciarKeePass($event)\"\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\n [disabled]=\"true\"\n ></p-button>\n <p-button\n icon=\"pi pi-sign-out\"\n label=\"Sair\"\n (onClick)=\"sair($event)\"\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\n ></p-button>\n </ng-template>\n\n</p-overlayPanel>\n\n<p-dialog\n [(visible)]=\"visibleDialogLicenca\"\n [modal]=\"true\"\n [draggable]=\"false\"\n header=\"Trocar Licen\u00E7a\"\n [style]=\"{width: '50vh' }\"\n>\n <div class=\"flex flex-column align-items-end\">\n\n <div class=\"w-full\">\n <p-dropdown\n styleClass=\"w-full\"\n [options]=\"licencasOptions\"\n [(ngModel)]=\"licencaSelected\"\n optionLabel=\"descricao\"\n ></p-dropdown>\n </div>\n\n <kv-button-success\n [label]=\"'Salvar'\"\n class=\"mt-2\"\n (onClick)=\"setLicenca()\"\n ></kv-button-success>\n\n </div>\n\n</p-dialog>\n\n<!-- <p-confirmDialog\n [style]=\"{width: '40vw'}\"\n [baseZIndex]=\"10000\"\n rejectButtonStyleClass=\"p-button-text\"\n>\n</p-confirmDialog>\n\n<p-toast></p-toast> -->", styles: [".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:1em;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}::ng-deep .p-button:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}::ng-deep .p-overlaypanel .p-overlaypanel-content{padding:0}::ng-deep .hover-btn-cor-padrao.p-button:enabled:hover{background:#0c3e66;border-color:#002542}.p-button.p-button-icon-only.p-button-rounded{background:#0c3e66;border-color:#002542}::ng-deep .remove-focus:focus{border:none}::ng-deep .p-sidebar .p-sidebar-content{padding:0}::ng-deep .sidebar-header-sistema.p-sidebar .p-sidebar-header{padding-top:.5rem;padding-right:0;padding-bottom:0;padding-left:0;display:block}.btn-sistema{display:flex;align-items:center;justify-content:center;background-color:#0c3e66;font-size:20px}::ng-deep .p-sidebar .p-sidebar-header{padding:0rem!important}::ng-deep body{margin:0!important}::ng-deep .p-breadcrumb ul li.p-breadcrumb-chevron{position:relative;top:3px;color:#0c3e66!important}.page-content{background:linear-gradient(to bottom,#d4d3d3 16%,#ffffff 19%)}*{margin:0}p .item-menu{color:#0c3e66;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .p-breadcrumb ul li:last-child .p-menuitem-text{color:#0c3e66!important;font-weight:700;font-size:.8rem!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#0c3e66!important;font-weight:500;font-size:.8rem!important}span,.breadcrumb-title{font-size:14px!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .card-container{overflow-x:hidden}::ng-deep .card-container::-webkit-scrollbar{width:6px}::ng-deep .card-container::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .card-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .card-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .card-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.title-style{position:relative;top:10px;margin-left:20px;font-size:25px;color:#002542;border-bottom:2px solid green;font-weight:600;display:inline}::ng-deep p-sidebar .p-sidebar-content{overflow-y:hidden}::ng-deep p-dialog .p-dialog-content{overflow-y:unset}.icon-menu{color:#002542;display:flex;justify-content:center;align-items:center}::ng-deep .padding-style{padding:15px!important}::ng-deep .menu-option{padding:15px 5px!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#183462!important;opacity:.95;font-weight:500;font-size:.8rem!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text:hover{opacity:.7}.pl-3{padding-left:0rem!important}::ng-deep svg.p-icon{width:.7rem;height:1rem}.hover-color .text-base,.hover-color .icon-hover-color{color:#fff!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i5.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i7.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i8.Divider, selector: "p-divider", inputs: ["styleClass", "style", "layout", "type", "align"] }, { kind: "component", type: i9.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i10.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i11.Ripple, selector: "[pRipple]" }, { kind: "component", type: i12.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i13.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterClass", "enterActiveClass", "enterToClass", "leaveClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape"] }, { kind: "component", type: i14.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i15.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i15.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i16.ButtonSuccessComponent, selector: "kv-button-success" }] });
|
|
198
|
+
MenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: MenuComponent, selector: "kv-menu", inputs: { menuCompleto: "menuCompleto", licencas: "licencas", licencaSelecionada: "licencaSelecionada", logoImage: "logoImage", nomeUsuario: "nomeUsuario", breadCrumbs: "breadCrumbs" }, outputs: { licencaChange: "licencaChange", gerenciarKeePassEvent: "gerenciarKeePassEvent", sairEvent: "sairEvent", expandMenuEmit: "expandMenuEmit", trocarLicencaEmit: "trocarLicencaEmit" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, viewQueries: [{ propertyName: "sidebarRef", first: true, predicate: ["sidebarRef"], descendants: true }, { propertyName: "sistemasPanel", first: true, predicate: ["sistemasPanel"], descendants: true }, { propertyName: "meusDadosPanel", first: true, predicate: ["meusDadosPanel"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row overflow-y-hidden w- full-container\">\n\n <div [style]=\"{minWidth: expandMenu ? '300px' : '60px'}\"></div>\n\n <p-sidebar\n #sidebarRef\n [visible]=\"true\"\n [showCloseIcon]=\"false\"\n [modal]=\"false\"\n [style]=\"{width: expandMenu ? '300px' : '60px'}\"\n >\n <ng-template pTemplate=\"headless\">\n <div class=\"flex flex-column {{expandMenu ? 'mx-1' : 'mx-1'}}\">\n <div class=\"flex flex-column gap-2 justify-content-between flex-shrink-0 mx-2\">\n <div\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}} py-3\"\n >\n <img\n *ngIf=\"expandMenu\"\n alt=\"Card\"\n [src]=\"logoImage\"\n width=\"150\"\n />\n\n <button\n pButton\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\n (click)=\"toggleMenu()\"\n [pTooltip]=\"expandMenu ? 'Ocutar Menu' : 'Expandir Menu'\"\n [tooltipPosition]=\"'right'\"\n >\n <i class=\"material-symbols-outlined\">\n menu\n </i>\n </button>\n </div>\n\n <div\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}}\"\n >\n <div\n class=\"flex flex-column cursor-pointer\"\n *ngIf=\"expandMenu\"\n (click)=\"trocarLicenca()\"\n >\n <span\n class=\"text-sm font-semibold mr-2\"\n [pTooltip]=\"this.licencaSelecionada.nome\"\n [tooltipPosition]=\"'right'\"\n >\n {{MascaraNomeLicenca(this.licencaSelecionada.nome)}}\n </span>\n <span class=\"text-sm mt-1\">{{MascaraCnpj(this.licencaSelecionada.cpfcnpj)}}</span>\n </div>\n\n <button\n pButton\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\n (click)=\"trocarLicenca()\"\n [pTooltip]=\"'Alterar workspace'\"\n [tooltipPosition]=\"'right'\"\n >\n <i class=\"material-symbols-outlined\">\n sync_alt\n </i>\n </button>\n\n </div>\n <p-divider type=\"solid\"></p-divider>\n </div>\n\n <div\n class=\"list-none m-0 card-container {{expandMenu ? 'mx-1' : ''}}\"\n [style.max-height]=\"(heigthCard - 220) + 'px'\"\n style=\"overflow-y: auto;\"\n >\n <!-- menus -->\n <li *ngFor=\"let menu of menus; let i = index\">\n <!-- menu que n\u00E3o tem filho -->\n <a\n (mouseenter)=\"onMouseEnter(i)\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n (click)=\"callRoute(menu.link)\"\n *ngIf=\"!menu.menupai && menu.idmenupai == 0\"\n pRipple\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\n [tooltipPosition]=\"'right'\"\n class=\"{{verificarPaginaSelecionada(menu.link) ? 'bg-green-600' : ''}} menu-option flex align-items-center no-underline {{!expandMenu ? 'justify-content-center' : ''}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\n >\n\n <i\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}} icon-hover-color {{verificarPaginaSelecionada(menu.link) ? 'text-white' : ''}}\"\n *ngIf=\"menu.icone && menu.icone !== ''\"\n >\n {{ menu.icone }}\n </i>\n <span\n class=\"text-base text-blue-900 font-medium {{verificarPaginaSelecionada(menu.link) ? 'text-white' : ''}}\"\n *ngIf=\"expandMenu\"\n >{{ menu.descricaomenu }}</span>\n </a>\n <!-- menu com filho -->\n <div *ngIf=\"menu.menupai\">\n <a\n (mouseenter)=\"onMouseEnter(i)\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n pRipple\n pStyleClass=\"@next\"\n enterClass=\"hidden\"\n enterActiveClass=\"slidedown\"\n leaveToClass=\"hidden\"\n leaveActiveClass=\"slideup\"\n class=\"menu-option flex align-items-center {{!expandMenu ? 'justify-content-center' : 'justify-content-between'}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\n [tooltipPosition]=\"'right'\"\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\n (click)=\"!expandMenu ? expandMenu = !expandMenu : ''\"\n >\n <div class=\"flex flex-row align-items-center\">\n\n <i\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}} icon-hover-color\"\n *ngIf=\"menu.icone && menu.icone !== ''\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n >\n {{ menu.icone }}\n </i>\n <span\n class=\"text-base text-blue-900 font-medium\"\n *ngIf=\"expandMenu\"\n >{{ menu.descricaomenu }}</span>\n </div>\n <i\n class=\"pi pi-chevron-down text-blue-900 mr-1 icon-hover-color\"\n *ngIf=\"expandMenu\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n ></i>\n </a>\n\n <!-- filhos -->\n <div\n class=\"list-none py-0 pl-3 pr-0 m-0 hidden overflow-y-hidden transition-all transition-duration-400 transition-ease-in-out\"\n >\n <li *ngFor=\"\n let filho of retornarMenuFilhos(menu.idsistema, menu.idmenu); let iFilho = index\n \">\n <a\n (mouseenter)=\"onMouseFilhoEnter(filho.idmenu)\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"{'hover-color': mouseOverFilhoIndex === filho.idmenu}\"\n *ngIf=\"expandMenu\"\n (click)=\"callRoute(filho.link)\"\n pRipple\n class=\"{{verificarPaginaSelecionada(filho.link) ? 'bg-green-600' : ''}} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 transition-duration-150 transition-colors p-ripple p-2\"\n >\n <i\n class=\"pi pi-chart-line mr-2 ml-1 adjust-icon-menu\"\n *ngIf=\"filho.icone && filho.icone !== ''\"\n ></i>\n <span\n class=\"text-base text-blue-900 ml-4 {{verificarPaginaSelecionada(filho.link) ? 'text-white' : ''}}\"\n *ngIf=\"expandMenu\"\n >{{ filho.descricaomenu }}</span>\n </a>\n </li>\n </div>\n </div>\n</div>\n</div>\n</ng-template>\n</p-sidebar>\n\n\n<div\n class=\"w-auto h-screen page-content overflow-y-hidden\"\n id=\"page-content\"\n>\n\n <div class=\"flex flex-row align-items-center justify-content-between m-3\">\n <div *ngIf=\"breadCrumbs\">\n <p class=\"text-xl font-semibold text-blue-900 breadcrumb-title\">{{breadCrumbItems[breadCrumbItems.length -\n 1]?.label}}</p>\n <p-breadcrumb\n *ngIf=\"widthCard > 400\"\n styleClass=\"border-none p-0 flex align-items-center h-2rem !important;\"\n [model]=\"breadCrumbItems\"\n [style]=\"{backgroundColor: '#d4d3d3'}\"\n (onItemClick)=\"callRoute($event.item.routerLink, true)\"\n ></p-breadcrumb>\n </div>\n\n <div *ngIf=\"!breadCrumbs\"></div>\n\n <div class=\"w-auto flex flex-row align-items-center gap-2\">\n <button\n pButton\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\n (click)=\"sistemasPanel.toggle($event)\"\n [pTooltip]=\"'Sistemas'\"\n [tooltipPosition]=\"'left'\"\n >\n <i class=\"material-symbols-outlined\">\n apps\n </i>\n </button>\n <button\n pButton\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\n (click)=\"meusDadosPanel.toggle($event)\"\n [pTooltip]=\"'Menu do Usu\u00E1rio'\"\n [tooltipPosition]=\"'left'\"\n >\n <i class=\"material-symbols-outlined\">\n person\n </i>\n </button>\n </div>\n </div>\n\n\n <p-card\n class=\"card-container\"\n styleClass=\"m-3 border-noround overflow-y-auto card-container\"\n [style]=\"{height: heigthCard - ajustarHeigthCard() + 'px'}\"\n >\n <div class=\"card-container w-full\">\n <ng-content></ng-content>\n </div>\n </p-card>\n\n</div>\n\n\n</div>\n\n<p-overlayPanel\n #sistemasPanel\n [showTransitionOptions]=\"'350ms ease-out'\"\n [hideTransitionOptions]=\"'250ms ease-in'\"\n>\n\n <ng-template pTemplate=\"container\">\n\n <p class=\"title-style mt-3\">Sistemas</p>\n <div\n class=\"flex flex-row flex-wrap gap-2 align-items-center justify-content-center mt-5 mb-3\"\n style=\"width: 250px; height: 100%;\"\n >\n <button\n *ngFor=\"let menu of menuCompleto\"\n pButton\n pRipple\n class=\"btn-sistema-2 btn-sistema hover-btn-cor-padrao remove-focus h-4rem w-4rem\"\n (click)=\"definirMenusPorSistema(menu.sistema.idsistema)\"\n [pTooltip]=\"menu.sistema.descricaosistema\"\n [tooltipPosition]=\"'left'\"\n >\n <!-- <img\n alt=\"logo\"\n style=\"width: 2rem; height: 2rem;\"\n /> -->\n {{ menu.sistema.nomesistema.charAt(0).toUpperCase() }}\n\n </button>\n\n\n <!-- <p-button styleClass=\"p-button-outlined\">\n <img alt=\"logo\" src=\"https://primefaces.org/cdn/primeng/images/primeng-icon.svg\" style=\"width: 1.5rem\" />\n <span class=\"ml-2 font-bold\">PrimeNG</span>\n </p-button> -->\n\n </div>\n </ng-template>\n</p-overlayPanel>\n\n<p-overlayPanel\n #meusDadosPanel\n [showTransitionOptions]=\"'350ms ease-out'\"\n [hideTransitionOptions]=\"'250ms ease-in'\"\n>\n\n <ng-template pTemplate=\"container\">\n\n <p class=\"title-style mt-3\">Ol\u00E1, {{nomeUsuario ? nomeUsuario.split(' ')[0] : 'Usu\u00E1rio'}} !</p>\n <div class=\"mt-5 mb-3\">\n\n </div>\n\n <p-button\n icon=\"pi pi-lock\"\n label=\"Ger\u00EAnciar KeevoPass\"\n (onClick)=\"gerenciarKeePass($event)\"\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\n [disabled]=\"true\"\n ></p-button>\n <p-button\n icon=\"pi pi-sign-out\"\n label=\"Sair\"\n (onClick)=\"sair($event)\"\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\n ></p-button>\n </ng-template>\n\n</p-overlayPanel>\n\n<p-dialog\n [(visible)]=\"visibleDialogLicenca\"\n [modal]=\"true\"\n [draggable]=\"false\"\n header=\"Trocar Licen\u00E7a\"\n [style]=\"{width: '50vh' }\"\n>\n <div class=\"flex flex-column align-items-end\">\n\n <div class=\"w-full\">\n <p-dropdown\n styleClass=\"w-full\"\n [options]=\"licencasOptions\"\n [(ngModel)]=\"licencaSelected\"\n optionLabel=\"descricao\"\n ></p-dropdown>\n </div>\n\n <kv-button-success\n [label]=\"'Salvar'\"\n class=\"mt-2\"\n (onClick)=\"setLicenca()\"\n ></kv-button-success>\n\n </div>\n\n</p-dialog>\n\n<!-- <p-confirmDialog\n [style]=\"{width: '40vw'}\"\n [baseZIndex]=\"10000\"\n rejectButtonStyleClass=\"p-button-text\"\n>\n</p-confirmDialog>\n\n<p-toast></p-toast> -->", styles: [".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:1em;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}::ng-deep .p-button:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}::ng-deep .p-overlaypanel .p-overlaypanel-content{padding:0}::ng-deep .hover-btn-cor-padrao.p-button:enabled:hover{background:#0c3e66;border-color:#002542}.p-button.p-button-icon-only.p-button-rounded{background:#0c3e66;border-color:#002542}::ng-deep .remove-focus:focus{border:none}::ng-deep .p-sidebar .p-sidebar-content{padding:0}::ng-deep .sidebar-header-sistema.p-sidebar .p-sidebar-header{padding-top:.5rem;padding-right:0;padding-bottom:0;padding-left:0;display:block}.btn-sistema{display:flex;align-items:center;justify-content:center;background-color:#0c3e66;font-size:20px}::ng-deep .p-sidebar .p-sidebar-header{padding:0rem!important}::ng-deep body{margin:0!important}::ng-deep .p-breadcrumb ul li.p-breadcrumb-chevron{position:relative;top:3px;color:#0c3e66!important}.page-content{background:linear-gradient(to bottom,#d4d3d3 16%,#ffffff 19%)}*{margin:0}p .item-menu{color:#0c3e66;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .p-breadcrumb ul li:last-child .p-menuitem-text{color:#0c3e66!important;font-weight:700;font-size:.8rem!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#0c3e66!important;font-weight:500;font-size:.8rem!important}span,.breadcrumb-title{font-size:14px!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .card-container{overflow-x:hidden}::ng-deep .card-container::-webkit-scrollbar{width:6px}::ng-deep .card-container::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .card-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .card-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .card-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.title-style{position:relative;top:10px;margin-left:20px;font-size:25px;color:#002542;border-bottom:2px solid green;font-weight:600;display:inline}::ng-deep p-sidebar .p-sidebar-content{overflow-y:hidden}::ng-deep p-dialog .p-dialog-content{overflow-y:unset}.icon-menu{color:#002542;display:flex;justify-content:center;align-items:center}::ng-deep .padding-style{padding:15px!important}::ng-deep .menu-option{padding:15px 5px!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#183462!important;opacity:.95;font-weight:500;font-size:.8rem!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text:hover{opacity:.7}.pl-3{padding-left:0rem!important}::ng-deep svg.p-icon{width:.7rem;height:1rem}.hover-color .text-base,.hover-color .icon-hover-color{color:#fff!important}::ng-deep .p-card .p-card-content{padding:0rem!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i5.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i7.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i8.Divider, selector: "p-divider", inputs: ["styleClass", "style", "layout", "type", "align"] }, { kind: "component", type: i9.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i10.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i11.Ripple, selector: "[pRipple]" }, { kind: "component", type: i12.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i13.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterClass", "enterActiveClass", "enterToClass", "leaveClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape"] }, { kind: "component", type: i14.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i15.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i15.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i16.ButtonSuccessComponent, selector: "kv-button-success" }] });
|
|
199
199
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MenuComponent, decorators: [{
|
|
200
200
|
type: Component,
|
|
201
|
-
args: [{ selector: 'kv-menu', template: "<div class=\"flex flex-row overflow-y-hidden w- full-container\">\n\n <div [style]=\"{minWidth: expandMenu ? '300px' : '60px'}\"></div>\n\n <p-sidebar\n #sidebarRef\n [visible]=\"true\"\n [showCloseIcon]=\"false\"\n [modal]=\"false\"\n [style]=\"{width: expandMenu ? '300px' : '60px'}\"\n >\n <ng-template pTemplate=\"headless\">\n <div class=\"flex flex-column {{expandMenu ? 'mx-1' : 'mx-1'}}\">\n <div class=\"flex flex-column gap-2 justify-content-between flex-shrink-0 mx-2\">\n <div\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}} py-3\"\n >\n <img\n *ngIf=\"expandMenu\"\n alt=\"Card\"\n [src]=\"logoImage\"\n width=\"150\"\n />\n\n <button\n pButton\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\n (click)=\"toggleMenu()\"\n [pTooltip]=\"expandMenu ? 'Ocutar Menu' : 'Expandir Menu'\"\n [tooltipPosition]=\"'right'\"\n >\n <i class=\"material-symbols-outlined\">\n menu\n </i>\n </button>\n </div>\n\n <div\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}}\"\n >\n <div\n class=\"flex flex-column cursor-pointer\"\n *ngIf=\"expandMenu\"\n (click)=\"trocarLicenca()\"\n >\n <span\n class=\"text-sm font-semibold mr-2\"\n [pTooltip]=\"this.licencaSelecionada.nome\"\n [tooltipPosition]=\"'right'\"\n >\n {{MascaraNomeLicenca(this.licencaSelecionada.nome)}}\n </span>\n <span class=\"text-sm mt-1\">{{MascaraCnpj(this.licencaSelecionada.cpfcnpj)}}</span>\n </div>\n\n <button\n pButton\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\n (click)=\"trocarLicenca()\"\n [pTooltip]=\"'Alterar workspace'\"\n [tooltipPosition]=\"'right'\"\n >\n <i class=\"material-symbols-outlined\">\n sync_alt\n </i>\n </button>\n\n </div>\n <p-divider type=\"solid\"></p-divider>\n </div>\n\n <div\n class=\"list-none m-0 card-container {{expandMenu ? 'mx-1' : ''}}\"\n [style.max-height]=\"(heigthCard - 220) + 'px'\"\n style=\"overflow-y: auto;\"\n >\n <!-- menus -->\n <li *ngFor=\"let menu of menus; let i = index\">\n <!-- menu que n\u00E3o tem filho -->\n <a\n (mouseenter)=\"onMouseEnter(i)\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n (click)=\"callRoute(menu.link)\"\n *ngIf=\"!menu.menupai && menu.idmenupai == 0\"\n pRipple\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\n [tooltipPosition]=\"'right'\"\n class=\"{{verificarPaginaSelecionada(menu.link) ? 'bg-green-600' : ''}} menu-option flex align-items-center no-underline {{!expandMenu ? 'justify-content-center' : ''}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\n >\n\n <i\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}} icon-hover-color {{verificarPaginaSelecionada(menu.link) ? 'text-white' : ''}}\"\n *ngIf=\"menu.icone && menu.icone !== ''\"\n >\n {{ menu.icone }}\n </i>\n <span\n class=\"text-base text-blue-900 font-medium {{verificarPaginaSelecionada(menu.link) ? 'text-white' : ''}}\"\n *ngIf=\"expandMenu\"\n >{{ menu.descricaomenu }}</span>\n </a>\n <!-- menu com filho -->\n <div *ngIf=\"menu.menupai\">\n <a\n (mouseenter)=\"onMouseEnter(i)\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n pRipple\n pStyleClass=\"@next\"\n enterClass=\"hidden\"\n enterActiveClass=\"slidedown\"\n leaveToClass=\"hidden\"\n leaveActiveClass=\"slideup\"\n class=\"menu-option flex align-items-center {{!expandMenu ? 'justify-content-center' : 'justify-content-between'}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\n [tooltipPosition]=\"'right'\"\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\n (click)=\"!expandMenu ? expandMenu = !expandMenu : ''\"\n >\n <div class=\"flex flex-row align-items-center\">\n\n <i\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}} icon-hover-color\"\n *ngIf=\"menu.icone && menu.icone !== ''\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n >\n {{ menu.icone }}\n </i>\n <span\n class=\"text-base text-blue-900 font-medium\"\n *ngIf=\"expandMenu\"\n >{{ menu.descricaomenu }}</span>\n </div>\n <i\n class=\"pi pi-chevron-down text-blue-900 mr-1 icon-hover-color\"\n *ngIf=\"expandMenu\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n ></i>\n </a>\n\n <!-- filhos -->\n <div\n class=\"list-none py-0 pl-3 pr-0 m-0 hidden overflow-y-hidden transition-all transition-duration-400 transition-ease-in-out\"\n >\n <li *ngFor=\"\n let filho of retornarMenuFilhos(menu.idsistema, menu.idmenu); let iFilho = index\n \">\n <a\n (mouseenter)=\"onMouseFilhoEnter(filho.idmenu)\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"{'hover-color': mouseOverFilhoIndex === filho.idmenu}\"\n *ngIf=\"expandMenu\"\n (click)=\"callRoute(filho.link)\"\n pRipple\n class=\"{{verificarPaginaSelecionada(filho.link) ? 'bg-green-600' : ''}} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 transition-duration-150 transition-colors p-ripple p-2\"\n >\n <i\n class=\"pi pi-chart-line mr-2 ml-1 adjust-icon-menu\"\n *ngIf=\"filho.icone && filho.icone !== ''\"\n ></i>\n <span\n class=\"text-base text-blue-900 ml-4 {{verificarPaginaSelecionada(filho.link) ? 'text-white' : ''}}\"\n *ngIf=\"expandMenu\"\n >{{ filho.descricaomenu }}</span>\n </a>\n </li>\n </div>\n </div>\n</div>\n</div>\n</ng-template>\n</p-sidebar>\n\n\n<div\n class=\"w-auto h-screen page-content overflow-y-hidden\"\n id=\"page-content\"\n>\n\n <div class=\"flex flex-row align-items-center justify-content-between m-3\">\n <div *ngIf=\"breadCrumbs\">\n <p class=\"text-xl font-semibold text-blue-900 breadcrumb-title\">{{breadCrumbItems[breadCrumbItems.length -\n 1]?.label}}</p>\n <p-breadcrumb\n *ngIf=\"widthCard > 400\"\n styleClass=\"border-none p-0 flex align-items-center h-2rem !important;\"\n [model]=\"breadCrumbItems\"\n [style]=\"{backgroundColor: '#d4d3d3'}\"\n (onItemClick)=\"callRoute($event.item.routerLink, true)\"\n ></p-breadcrumb>\n </div>\n\n <div *ngIf=\"!breadCrumbs\"></div>\n\n <div class=\"w-auto flex flex-row align-items-center gap-2\">\n <button\n pButton\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\n (click)=\"sistemasPanel.toggle($event)\"\n [pTooltip]=\"'Sistemas'\"\n [tooltipPosition]=\"'left'\"\n >\n <i class=\"material-symbols-outlined\">\n apps\n </i>\n </button>\n <button\n pButton\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\n (click)=\"meusDadosPanel.toggle($event)\"\n [pTooltip]=\"'Menu do Usu\u00E1rio'\"\n [tooltipPosition]=\"'left'\"\n >\n <i class=\"material-symbols-outlined\">\n person\n </i>\n </button>\n </div>\n </div>\n\n\n <p-card\n class=\"card-container\"\n styleClass=\"m-3 border-noround overflow-y-auto card-container\"\n [style]=\"{height: heigthCard - ajustarHeigthCard() + 'px'}\"\n >\n <div class=\"card-container w-full\">\n <ng-content></ng-content>\n </div>\n </p-card>\n\n</div>\n\n\n</div>\n\n<p-overlayPanel\n #sistemasPanel\n [showTransitionOptions]=\"'350ms ease-out'\"\n [hideTransitionOptions]=\"'250ms ease-in'\"\n>\n\n <ng-template pTemplate=\"container\">\n\n <p class=\"title-style mt-3\">Sistemas</p>\n <div\n class=\"flex flex-row flex-wrap gap-2 align-items-center justify-content-center mt-5 mb-3\"\n style=\"width: 250px; height: 100%;\"\n >\n <button\n *ngFor=\"let menu of menuCompleto\"\n pButton\n pRipple\n class=\"btn-sistema-2 btn-sistema hover-btn-cor-padrao remove-focus h-4rem w-4rem\"\n (click)=\"definirMenusPorSistema(menu.sistema.idsistema)\"\n [pTooltip]=\"menu.sistema.descricaosistema\"\n [tooltipPosition]=\"'left'\"\n >\n <!-- <img\n alt=\"logo\"\n style=\"width: 2rem; height: 2rem;\"\n /> -->\n {{ menu.sistema.nomesistema.charAt(0).toUpperCase() }}\n\n </button>\n\n\n <!-- <p-button styleClass=\"p-button-outlined\">\n <img alt=\"logo\" src=\"https://primefaces.org/cdn/primeng/images/primeng-icon.svg\" style=\"width: 1.5rem\" />\n <span class=\"ml-2 font-bold\">PrimeNG</span>\n </p-button> -->\n\n </div>\n </ng-template>\n</p-overlayPanel>\n\n<p-overlayPanel\n #meusDadosPanel\n [showTransitionOptions]=\"'350ms ease-out'\"\n [hideTransitionOptions]=\"'250ms ease-in'\"\n>\n\n <ng-template pTemplate=\"container\">\n\n <p class=\"title-style mt-3\">Ol\u00E1, {{nomeUsuario ? nomeUsuario.split(' ')[0] : 'Usu\u00E1rio'}} !</p>\n <div class=\"mt-5 mb-3\">\n\n </div>\n\n <p-button\n icon=\"pi pi-lock\"\n label=\"Ger\u00EAnciar KeevoPass\"\n (onClick)=\"gerenciarKeePass($event)\"\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\n [disabled]=\"true\"\n ></p-button>\n <p-button\n icon=\"pi pi-sign-out\"\n label=\"Sair\"\n (onClick)=\"sair($event)\"\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\n ></p-button>\n </ng-template>\n\n</p-overlayPanel>\n\n<p-dialog\n [(visible)]=\"visibleDialogLicenca\"\n [modal]=\"true\"\n [draggable]=\"false\"\n header=\"Trocar Licen\u00E7a\"\n [style]=\"{width: '50vh' }\"\n>\n <div class=\"flex flex-column align-items-end\">\n\n <div class=\"w-full\">\n <p-dropdown\n styleClass=\"w-full\"\n [options]=\"licencasOptions\"\n [(ngModel)]=\"licencaSelected\"\n optionLabel=\"descricao\"\n ></p-dropdown>\n </div>\n\n <kv-button-success\n [label]=\"'Salvar'\"\n class=\"mt-2\"\n (onClick)=\"setLicenca()\"\n ></kv-button-success>\n\n </div>\n\n</p-dialog>\n\n<!-- <p-confirmDialog\n [style]=\"{width: '40vw'}\"\n [baseZIndex]=\"10000\"\n rejectButtonStyleClass=\"p-button-text\"\n>\n</p-confirmDialog>\n\n<p-toast></p-toast> -->", styles: [".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:1em;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}::ng-deep .p-button:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}::ng-deep .p-overlaypanel .p-overlaypanel-content{padding:0}::ng-deep .hover-btn-cor-padrao.p-button:enabled:hover{background:#0c3e66;border-color:#002542}.p-button.p-button-icon-only.p-button-rounded{background:#0c3e66;border-color:#002542}::ng-deep .remove-focus:focus{border:none}::ng-deep .p-sidebar .p-sidebar-content{padding:0}::ng-deep .sidebar-header-sistema.p-sidebar .p-sidebar-header{padding-top:.5rem;padding-right:0;padding-bottom:0;padding-left:0;display:block}.btn-sistema{display:flex;align-items:center;justify-content:center;background-color:#0c3e66;font-size:20px}::ng-deep .p-sidebar .p-sidebar-header{padding:0rem!important}::ng-deep body{margin:0!important}::ng-deep .p-breadcrumb ul li.p-breadcrumb-chevron{position:relative;top:3px;color:#0c3e66!important}.page-content{background:linear-gradient(to bottom,#d4d3d3 16%,#ffffff 19%)}*{margin:0}p .item-menu{color:#0c3e66;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .p-breadcrumb ul li:last-child .p-menuitem-text{color:#0c3e66!important;font-weight:700;font-size:.8rem!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#0c3e66!important;font-weight:500;font-size:.8rem!important}span,.breadcrumb-title{font-size:14px!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .card-container{overflow-x:hidden}::ng-deep .card-container::-webkit-scrollbar{width:6px}::ng-deep .card-container::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .card-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .card-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .card-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.title-style{position:relative;top:10px;margin-left:20px;font-size:25px;color:#002542;border-bottom:2px solid green;font-weight:600;display:inline}::ng-deep p-sidebar .p-sidebar-content{overflow-y:hidden}::ng-deep p-dialog .p-dialog-content{overflow-y:unset}.icon-menu{color:#002542;display:flex;justify-content:center;align-items:center}::ng-deep .padding-style{padding:15px!important}::ng-deep .menu-option{padding:15px 5px!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#183462!important;opacity:.95;font-weight:500;font-size:.8rem!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text:hover{opacity:.7}.pl-3{padding-left:0rem!important}::ng-deep svg.p-icon{width:.7rem;height:1rem}.hover-color .text-base,.hover-color .icon-hover-color{color:#fff!important}\n"] }]
|
|
201
|
+
args: [{ selector: 'kv-menu', template: "<div class=\"flex flex-row overflow-y-hidden w- full-container\">\n\n <div [style]=\"{minWidth: expandMenu ? '300px' : '60px'}\"></div>\n\n <p-sidebar\n #sidebarRef\n [visible]=\"true\"\n [showCloseIcon]=\"false\"\n [modal]=\"false\"\n [style]=\"{width: expandMenu ? '300px' : '60px'}\"\n >\n <ng-template pTemplate=\"headless\">\n <div class=\"flex flex-column {{expandMenu ? 'mx-1' : 'mx-1'}}\">\n <div class=\"flex flex-column gap-2 justify-content-between flex-shrink-0 mx-2\">\n <div\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}} py-3\"\n >\n <img\n *ngIf=\"expandMenu\"\n alt=\"Card\"\n [src]=\"logoImage\"\n width=\"150\"\n />\n\n <button\n pButton\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\n (click)=\"toggleMenu()\"\n [pTooltip]=\"expandMenu ? 'Ocutar Menu' : 'Expandir Menu'\"\n [tooltipPosition]=\"'right'\"\n >\n <i class=\"material-symbols-outlined\">\n menu\n </i>\n </button>\n </div>\n\n <div\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}}\"\n >\n <div\n class=\"flex flex-column cursor-pointer\"\n *ngIf=\"expandMenu\"\n (click)=\"trocarLicenca()\"\n >\n <span\n class=\"text-sm font-semibold mr-2\"\n [pTooltip]=\"this.licencaSelecionada.nome\"\n [tooltipPosition]=\"'right'\"\n >\n {{MascaraNomeLicenca(this.licencaSelecionada.nome)}}\n </span>\n <span class=\"text-sm mt-1\">{{MascaraCnpj(this.licencaSelecionada.cpfcnpj)}}</span>\n </div>\n\n <button\n pButton\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\n (click)=\"trocarLicenca()\"\n [pTooltip]=\"'Alterar workspace'\"\n [tooltipPosition]=\"'right'\"\n >\n <i class=\"material-symbols-outlined\">\n sync_alt\n </i>\n </button>\n\n </div>\n <p-divider type=\"solid\"></p-divider>\n </div>\n\n <div\n class=\"list-none m-0 card-container {{expandMenu ? 'mx-1' : ''}}\"\n [style.max-height]=\"(heigthCard - 220) + 'px'\"\n style=\"overflow-y: auto;\"\n >\n <!-- menus -->\n <li *ngFor=\"let menu of menus; let i = index\">\n <!-- menu que n\u00E3o tem filho -->\n <a\n (mouseenter)=\"onMouseEnter(i)\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n (click)=\"callRoute(menu.link)\"\n *ngIf=\"!menu.menupai && menu.idmenupai == 0\"\n pRipple\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\n [tooltipPosition]=\"'right'\"\n class=\"{{verificarPaginaSelecionada(menu.link) ? 'bg-green-600' : ''}} menu-option flex align-items-center no-underline {{!expandMenu ? 'justify-content-center' : ''}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\n >\n\n <i\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}} icon-hover-color {{verificarPaginaSelecionada(menu.link) ? 'text-white' : ''}}\"\n *ngIf=\"menu.icone && menu.icone !== ''\"\n >\n {{ menu.icone }}\n </i>\n <span\n class=\"text-base text-blue-900 font-medium {{verificarPaginaSelecionada(menu.link) ? 'text-white' : ''}}\"\n *ngIf=\"expandMenu\"\n >{{ menu.descricaomenu }}</span>\n </a>\n <!-- menu com filho -->\n <div *ngIf=\"menu.menupai\">\n <a\n (mouseenter)=\"onMouseEnter(i)\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n pRipple\n pStyleClass=\"@next\"\n enterClass=\"hidden\"\n enterActiveClass=\"slidedown\"\n leaveToClass=\"hidden\"\n leaveActiveClass=\"slideup\"\n class=\"menu-option flex align-items-center {{!expandMenu ? 'justify-content-center' : 'justify-content-between'}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\n [tooltipPosition]=\"'right'\"\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\n (click)=\"!expandMenu ? expandMenu = !expandMenu : ''\"\n >\n <div class=\"flex flex-row align-items-center\">\n\n <i\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}} icon-hover-color\"\n *ngIf=\"menu.icone && menu.icone !== ''\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n >\n {{ menu.icone }}\n </i>\n <span\n class=\"text-base text-blue-900 font-medium\"\n *ngIf=\"expandMenu\"\n >{{ menu.descricaomenu }}</span>\n </div>\n <i\n class=\"pi pi-chevron-down text-blue-900 mr-1 icon-hover-color\"\n *ngIf=\"expandMenu\"\n [ngClass]=\"{'hover-color': mouseOverIndex === i}\"\n ></i>\n </a>\n\n <!-- filhos -->\n <div\n class=\"list-none py-0 pl-3 pr-0 m-0 hidden overflow-y-hidden transition-all transition-duration-400 transition-ease-in-out\"\n >\n <li *ngFor=\"\n let filho of retornarMenuFilhos(menu.idsistema, menu.idmenu); let iFilho = index\n \">\n <a\n (mouseenter)=\"onMouseFilhoEnter(filho.idmenu)\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"{'hover-color': mouseOverFilhoIndex === filho.idmenu}\"\n *ngIf=\"expandMenu\"\n (click)=\"callRoute(filho.link)\"\n pRipple\n class=\"{{verificarPaginaSelecionada(filho.link) ? 'bg-green-600' : ''}} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 transition-duration-150 transition-colors p-ripple p-2\"\n >\n <i\n class=\"pi pi-chart-line mr-2 ml-1 adjust-icon-menu\"\n *ngIf=\"filho.icone && filho.icone !== ''\"\n ></i>\n <span\n class=\"text-base text-blue-900 ml-4 {{verificarPaginaSelecionada(filho.link) ? 'text-white' : ''}}\"\n *ngIf=\"expandMenu\"\n >{{ filho.descricaomenu }}</span>\n </a>\n </li>\n </div>\n </div>\n</div>\n</div>\n</ng-template>\n</p-sidebar>\n\n\n<div\n class=\"w-auto h-screen page-content overflow-y-hidden\"\n id=\"page-content\"\n>\n\n <div class=\"flex flex-row align-items-center justify-content-between m-3\">\n <div *ngIf=\"breadCrumbs\">\n <p class=\"text-xl font-semibold text-blue-900 breadcrumb-title\">{{breadCrumbItems[breadCrumbItems.length -\n 1]?.label}}</p>\n <p-breadcrumb\n *ngIf=\"widthCard > 400\"\n styleClass=\"border-none p-0 flex align-items-center h-2rem !important;\"\n [model]=\"breadCrumbItems\"\n [style]=\"{backgroundColor: '#d4d3d3'}\"\n (onItemClick)=\"callRoute($event.item.routerLink, true)\"\n ></p-breadcrumb>\n </div>\n\n <div *ngIf=\"!breadCrumbs\"></div>\n\n <div class=\"w-auto flex flex-row align-items-center gap-2\">\n <button\n pButton\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\n (click)=\"sistemasPanel.toggle($event)\"\n [pTooltip]=\"'Sistemas'\"\n [tooltipPosition]=\"'left'\"\n >\n <i class=\"material-symbols-outlined\">\n apps\n </i>\n </button>\n <button\n pButton\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\n (click)=\"meusDadosPanel.toggle($event)\"\n [pTooltip]=\"'Menu do Usu\u00E1rio'\"\n [tooltipPosition]=\"'left'\"\n >\n <i class=\"material-symbols-outlined\">\n person\n </i>\n </button>\n </div>\n </div>\n\n\n <p-card\n class=\"card-container\"\n styleClass=\"m-3 border-noround overflow-y-auto card-container\"\n [style]=\"{height: heigthCard - ajustarHeigthCard() + 'px'}\"\n >\n <div class=\"card-container w-full\">\n <ng-content></ng-content>\n </div>\n </p-card>\n\n</div>\n\n\n</div>\n\n<p-overlayPanel\n #sistemasPanel\n [showTransitionOptions]=\"'350ms ease-out'\"\n [hideTransitionOptions]=\"'250ms ease-in'\"\n>\n\n <ng-template pTemplate=\"container\">\n\n <p class=\"title-style mt-3\">Sistemas</p>\n <div\n class=\"flex flex-row flex-wrap gap-2 align-items-center justify-content-center mt-5 mb-3\"\n style=\"width: 250px; height: 100%;\"\n >\n <button\n *ngFor=\"let menu of menuCompleto\"\n pButton\n pRipple\n class=\"btn-sistema-2 btn-sistema hover-btn-cor-padrao remove-focus h-4rem w-4rem\"\n (click)=\"definirMenusPorSistema(menu.sistema.idsistema)\"\n [pTooltip]=\"menu.sistema.descricaosistema\"\n [tooltipPosition]=\"'left'\"\n >\n <!-- <img\n alt=\"logo\"\n style=\"width: 2rem; height: 2rem;\"\n /> -->\n {{ menu.sistema.nomesistema.charAt(0).toUpperCase() }}\n\n </button>\n\n\n <!-- <p-button styleClass=\"p-button-outlined\">\n <img alt=\"logo\" src=\"https://primefaces.org/cdn/primeng/images/primeng-icon.svg\" style=\"width: 1.5rem\" />\n <span class=\"ml-2 font-bold\">PrimeNG</span>\n </p-button> -->\n\n </div>\n </ng-template>\n</p-overlayPanel>\n\n<p-overlayPanel\n #meusDadosPanel\n [showTransitionOptions]=\"'350ms ease-out'\"\n [hideTransitionOptions]=\"'250ms ease-in'\"\n>\n\n <ng-template pTemplate=\"container\">\n\n <p class=\"title-style mt-3\">Ol\u00E1, {{nomeUsuario ? nomeUsuario.split(' ')[0] : 'Usu\u00E1rio'}} !</p>\n <div class=\"mt-5 mb-3\">\n\n </div>\n\n <p-button\n icon=\"pi pi-lock\"\n label=\"Ger\u00EAnciar KeevoPass\"\n (onClick)=\"gerenciarKeePass($event)\"\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\n [disabled]=\"true\"\n ></p-button>\n <p-button\n icon=\"pi pi-sign-out\"\n label=\"Sair\"\n (onClick)=\"sair($event)\"\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\n ></p-button>\n </ng-template>\n\n</p-overlayPanel>\n\n<p-dialog\n [(visible)]=\"visibleDialogLicenca\"\n [modal]=\"true\"\n [draggable]=\"false\"\n header=\"Trocar Licen\u00E7a\"\n [style]=\"{width: '50vh' }\"\n>\n <div class=\"flex flex-column align-items-end\">\n\n <div class=\"w-full\">\n <p-dropdown\n styleClass=\"w-full\"\n [options]=\"licencasOptions\"\n [(ngModel)]=\"licencaSelected\"\n optionLabel=\"descricao\"\n ></p-dropdown>\n </div>\n\n <kv-button-success\n [label]=\"'Salvar'\"\n class=\"mt-2\"\n (onClick)=\"setLicenca()\"\n ></kv-button-success>\n\n </div>\n\n</p-dialog>\n\n<!-- <p-confirmDialog\n [style]=\"{width: '40vw'}\"\n [baseZIndex]=\"10000\"\n rejectButtonStyleClass=\"p-button-text\"\n>\n</p-confirmDialog>\n\n<p-toast></p-toast> -->", styles: [".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:1em;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}::ng-deep .p-button:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}::ng-deep .p-overlaypanel .p-overlaypanel-content{padding:0}::ng-deep .hover-btn-cor-padrao.p-button:enabled:hover{background:#0c3e66;border-color:#002542}.p-button.p-button-icon-only.p-button-rounded{background:#0c3e66;border-color:#002542}::ng-deep .remove-focus:focus{border:none}::ng-deep .p-sidebar .p-sidebar-content{padding:0}::ng-deep .sidebar-header-sistema.p-sidebar .p-sidebar-header{padding-top:.5rem;padding-right:0;padding-bottom:0;padding-left:0;display:block}.btn-sistema{display:flex;align-items:center;justify-content:center;background-color:#0c3e66;font-size:20px}::ng-deep .p-sidebar .p-sidebar-header{padding:0rem!important}::ng-deep body{margin:0!important}::ng-deep .p-breadcrumb ul li.p-breadcrumb-chevron{position:relative;top:3px;color:#0c3e66!important}.page-content{background:linear-gradient(to bottom,#d4d3d3 16%,#ffffff 19%)}*{margin:0}p .item-menu{color:#0c3e66;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .p-breadcrumb ul li:last-child .p-menuitem-text{color:#0c3e66!important;font-weight:700;font-size:.8rem!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#0c3e66!important;font-weight:500;font-size:.8rem!important}span,.breadcrumb-title{font-size:14px!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .card-container{overflow-x:hidden}::ng-deep .card-container::-webkit-scrollbar{width:6px}::ng-deep .card-container::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .card-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .card-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .card-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.title-style{position:relative;top:10px;margin-left:20px;font-size:25px;color:#002542;border-bottom:2px solid green;font-weight:600;display:inline}::ng-deep p-sidebar .p-sidebar-content{overflow-y:hidden}::ng-deep p-dialog .p-dialog-content{overflow-y:unset}.icon-menu{color:#002542;display:flex;justify-content:center;align-items:center}::ng-deep .padding-style{padding:15px!important}::ng-deep .menu-option{padding:15px 5px!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#183462!important;opacity:.95;font-weight:500;font-size:.8rem!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text:hover{opacity:.7}.pl-3{padding-left:0rem!important}::ng-deep svg.p-icon{width:.7rem;height:1rem}.hover-color .text-base,.hover-color .icon-hover-color{color:#fff!important}::ng-deep .p-card .p-card-content{padding:0rem!important}\n"] }]
|
|
202
202
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Router }, { type: i1.ActivatedRoute }]; }, propDecorators: { menuCompleto: [{
|
|
203
203
|
type: Input
|
|
204
204
|
}], licencas: [{
|