import { __assign, __decorate, __metadata } from "tslib";
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { NzMessageService } from 'ng-zorro-antd/message';
import { TranslateService } from '@ngx-translate/core';
import { API, DEF } from '../../../../api';
import { IdentityResourceVO } from '../../vo/identity-resource.vo';
var IdentityApiResourceUpdateComponent = /** @class */ (function () {
    function IdentityApiResourceUpdateComponent(nzMessageService, translateService) {
        this.nzMessageService = nzMessageService;
        this.translateService = translateService;
        this.visible = false;
        this.visibleChange = new EventEmitter();
        this.apiResource = new IdentityResourceVO();
        this.ok = new EventEmitter();
        this.apiResourceUpdating = false;
        this.apiResourceFetching = false;
        this.identityApiResourceUpdateSecretComponentProp = {
            visible: false,
        };
        this.identityApiResourceUpdateScopeComponentProp = {
            visible: false,
        };
        this.formGroup = new FormGroup({
            name: new FormControl('', {
                validators: Validators.required,
            }),
            displayName: new FormControl(''),
            description: new FormControl(''),
            enabled: new FormControl(true),
            userClaims: new FormControl([]),
        });
    }
    Object.defineProperty(IdentityApiResourceUpdateComponent.prototype, "userClaimsControl", {
        get: function () {
            return this.formGroup.get('userClaims');
        },
        enumerable: true,
        configurable: true
    });
    IdentityApiResourceUpdateComponent.prototype.fetchApiResource = function () {
        var _this = this;
        this.apiResourceFetching = true;
        API.Identity.ApiResourceController.Details({
            resource: this.apiResource.name,
        }).subscribe({
            next: function (data) {
                _this.formGroup.patchValue(data);
                _this.apiResourceFetching = false;
            },
            error: function () {
                _this.apiResourceFetching = false;
            },
        });
    };
    IdentityApiResourceUpdateComponent.prototype.openIdentityApiResourceUpdateSecretComponent = function () {
        this.identityApiResourceUpdateSecretComponentProp.visible = true;
    };
    IdentityApiResourceUpdateComponent.prototype.openIdentityApiResourceUpdateScopeComponent = function () {
        this.identityApiResourceUpdateScopeComponentProp.visible = true;
    };
    IdentityApiResourceUpdateComponent.prototype.handleOk = function () {
        var _this = this;
        if (this.formGroup.invalid) {
            return;
        }
        this.apiResourceUpdating = true;
        API.Identity.ApiResourceController.Update({
            resource: this.apiResource.name,
        }, new DEF.Identity.ApiResource(__assign({}, this.formGroup.getRawValue()))).subscribe({
            next: function () {
                _this.apiResourceUpdating = false;
                _this.visibleChange.emit(false);
                _this.ok.emit();
                _this.nzMessageService.success(_this.translateService.instant('projects/fe-ng/src/lib/page/identity/api-resource/update/identity--api-resource--update.update_successfully'));
            },
            error: function () {
                _this.apiResourceUpdating = false;
            },
        });
    };
    IdentityApiResourceUpdateComponent.prototype.handleCancel = function () {
        this.visibleChange.emit(false);
    };
    IdentityApiResourceUpdateComponent.prototype.handleAfterOpen = function () {
        this.fetchApiResource();
    };
    IdentityApiResourceUpdateComponent.prototype.handleAfterClose = function () {
        this.formGroup.reset({
            enabled: true,
            userClaims: [],
        });
    };
    IdentityApiResourceUpdateComponent.ctorParameters = function () { return [
        { type: NzMessageService },
        { type: TranslateService }
    ]; };
    __decorate([
        Input(),
        __metadata("design:type", Boolean)
    ], IdentityApiResourceUpdateComponent.prototype, "visible", void 0);
    __decorate([
        Output(),
        __metadata("design:type", EventEmitter)
    ], IdentityApiResourceUpdateComponent.prototype, "visibleChange", void 0);
    __decorate([
        Input(),
        __metadata("design:type", IdentityResourceVO)
    ], IdentityApiResourceUpdateComponent.prototype, "apiResource", void 0);
    __decorate([
        Output(),
        __metadata("design:type", EventEmitter)
    ], IdentityApiResourceUpdateComponent.prototype, "ok", void 0);
    IdentityApiResourceUpdateComponent = __decorate([
        Component({
            selector: 'kg---identity--api-resource--update',
            template: "<nz-modal\r\n  (nzAfterClose)=\"handleAfterClose()\"\r\n  (nzAfterOpen)=\"handleAfterOpen()\"\r\n  (nzOnCancel)=\"handleCancel()\"\r\n  [nzBodyStyle]=\"{\r\n    padding: '12px 16px 6px 16px'\r\n  }\"\r\n  [nzCancelDisabled]=\"apiResourceUpdating\"\r\n  [nzClosable]=\"!apiResourceUpdating\"\r\n  [nzKeyboard]=\"false\"\r\n  [nzMaskClosable]=\"false\"\r\n  [nzTitle]=\"'projects/fe-ng/src/lib/page/identity/api-resource/update/identity--api-resource--update.title' | i18n\"\r\n  [nzVisible]=\"visible\"\r\n  nzWidth=\"748px\"\r\n>\r\n  <ng-template #nzIndicatorTpl><i nz-icon nzType=\"loading\" style=\"font-size: 24px;\"></i> </ng-template>\r\n\r\n  <nz-spin [nzIndicator]=\"nzIndicatorTpl\" [nzSpinning]=\"apiResourceFetching\">\r\n    <form (ngSubmit)=\"handleOk()\" [formGroup]=\"formGroup\" nz-form nzLayout=\"vertical\">\r\n      <nz-form-item>\r\n        <nz-form-label [nzFor]=\"'name'\" [nzRequired]=\"true\">{{ 'app.common.name' | i18n }}:</nz-form-label>\r\n        <nz-form-control [nzErrorTip]=\"'app.common.required' | i18n\">\r\n          <input nz-input [formControlName]=\"'name'\" [attr.id]=\"'name'\" />\r\n        </nz-form-control>\r\n      </nz-form-item>\r\n\r\n      <nz-form-item>\r\n        <nz-form-label [nzFor]=\"'displayName'\">\r\n          {{\r\n            'projects/fe-ng/src/lib/page/identity/api-resource/update/identity--api-resource--update.display_name'\r\n              | i18n\r\n          }}:\r\n        </nz-form-label>\r\n        <nz-form-control>\r\n          <input nz-input [formControlName]=\"'displayName'\" [attr.id]=\"'displayName'\" />\r\n        </nz-form-control>\r\n      </nz-form-item>\r\n\r\n      <nz-form-item>\r\n        <nz-form-label [nzFor]=\"'description'\">{{ 'app.common.description' | i18n }}:</nz-form-label>\r\n        <nz-form-control>\r\n          <input nz-input [formControlName]=\"'description'\" [attr.id]=\"'description'\" />\r\n        </nz-form-control>\r\n      </nz-form-item>\r\n\r\n      <nz-form-item>\r\n        <nz-form-label [nzFor]=\"'enabled'\">\r\n          {{\r\n            'projects/fe-ng/src/lib/page/identity/api-resource/update/identity--api-resource--update.enabled' | i18n\r\n          }}:\r\n        </nz-form-label>\r\n        <nz-form-control>\r\n          <nz-switch [formControlName]=\"'enabled'\" [attr.id]=\"'enabled'\"></nz-switch>\r\n        </nz-form-control>\r\n      </nz-form-item>\r\n\r\n      <nz-form-item>\r\n        <nz-form-label [nzFor]=\"'userClaims'\">\r\n          {{\r\n            'projects/fe-ng/src/lib/page/identity/api-resource/update/identity--api-resource--update.user_claims'\r\n              | i18n\r\n          }}:\r\n        </nz-form-label>\r\n        <nz-form-control>\r\n          <nz-select [formControlName]=\"'userClaims'\" [attr.id]=\"'userClaims'\" nzMode=\"tags\">\r\n            <nz-option *ngFor=\"let item of userClaimsControl.value\" [nzLabel]=\"item\" [nzValue]=\"item\"></nz-option>\r\n          </nz-select>\r\n        </nz-form-control>\r\n      </nz-form-item>\r\n\r\n      <div nz-row [nzGutter]=\"32\">\r\n        <div nz-col [nzSpan]=\"8\">\r\n          <nz-form-item>\r\n            <nz-form-label>\r\n              {{\r\n                'projects/fe-ng/src/lib/page/identity/api-resource/update/identity--api-resource--update.api_secrets'\r\n                  | i18n\r\n              }}:\r\n            </nz-form-label>\r\n            <nz-form-control>\r\n              <button (click)=\"openIdentityApiResourceUpdateSecretComponent()\" nz-button nzType=\"primary\" type=\"button\">\r\n                {{\r\n                  'projects/fe-ng/src/lib/page/identity/api-resource/update/identity--api-resource--update.api_secrets'\r\n                    | i18n\r\n                }}\r\n              </button>\r\n            </nz-form-control>\r\n          </nz-form-item>\r\n        </div>\r\n\r\n        <div nz-col [nzSpan]=\"8\">\r\n          <nz-form-item>\r\n            <nz-form-label>\r\n              {{\r\n                'projects/fe-ng/src/lib/page/identity/api-resource/update/identity--api-resource--update.api_scopes'\r\n                  | i18n\r\n              }}:\r\n            </nz-form-label>\r\n            <nz-form-control>\r\n              <button (click)=\"openIdentityApiResourceUpdateScopeComponent()\" nz-button nzType=\"primary\" type=\"button\">\r\n                {{\r\n                  'projects/fe-ng/src/lib/page/identity/api-resource/update/identity--api-resource--update.api_scopes'\r\n                    | i18n\r\n                }}\r\n              </button>\r\n            </nz-form-control>\r\n          </nz-form-item>\r\n        </div>\r\n      </div>\r\n\r\n      <button [hidden]=\"true\"></button>\r\n    </form>\r\n  </nz-spin>\r\n\r\n  <div *nzModalFooter>\r\n    <button (click)=\"handleCancel()\" [disabled]=\"apiResourceUpdating\" nz-button nzType=\"default\">\r\n      <i nz-icon nzType=\"stop\" nzTheme=\"outline\"></i>\r\n      {{ 'app.common.cancel' | i18n }}\r\n    </button>\r\n\r\n    <button\r\n      (click)=\"handleOk()\"\r\n      [disabled]=\"apiResourceFetching || formGroup.invalid\"\r\n      [nzLoading]=\"apiResourceUpdating\"\r\n      nz-button\r\n      nzType=\"primary\"\r\n    >\r\n      <i nz-icon nzType=\"check\" nzTheme=\"outline\"></i>\r\n      {{ 'app.common.ok' | i18n }}\r\n    </button>\r\n  </div>\r\n</nz-modal>\r\n\r\n<kg---identity--api-resource--update--secret\r\n  [(visible)]=\"identityApiResourceUpdateSecretComponentProp.visible\"\r\n  [apiResourceName]=\"apiResource.name\"\r\n></kg---identity--api-resource--update--secret>\r\n\r\n<kg---identity--api-resource--update--scope\r\n  [(visible)]=\"identityApiResourceUpdateScopeComponentProp.visible\"\r\n  [apiResourceName]=\"apiResource.name\"\r\n></kg---identity--api-resource--update--scope>\r\n"
        }),
        __metadata("design:paramtypes", [NzMessageService, TranslateService])
    ], IdentityApiResourceUpdateComponent);
    return IdentityApiResourceUpdateComponent;
}());
export { IdentityApiResourceUpdateComponent };
//# sourceMappingURL=data:application/json;base64, 