ng-devui
Version:
DevUI components based on Angular
125 lines • 14.5 kB
JavaScript
import { ChangeDetectionStrategy, Component, Directive, ElementRef, Host, HostBinding, Input, Optional, Renderer2 } from '@angular/core';
import { fromEvent, Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { FormDirective } from './form.directive';
import * as i0 from "@angular/core";
import * as i1 from "./form.directive";
export class FormOperationComponent {
constructor(elementRef, renderer) {
renderer.addClass(elementRef.nativeElement, 'devui-form-operation');
}
ngOnInit() { }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormOperationComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormOperationComponent, selector: "d-form-operation", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".devui-form-horizontal :host.devui-form-operation{display:block;margin-left:96px}.devui-form-vertical :host.devui-form-operation{display:block}.devui-form-columns :host.devui-form-operation{display:block;padding:8px 0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormOperationComponent, decorators: [{
type: Component,
args: [{ selector: 'd-form-operation', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, styles: [".devui-form-horizontal :host.devui-form-operation{display:block;margin-left:96px}.devui-form-vertical :host.devui-form-operation{display:block}.devui-form-columns :host.devui-form-operation{display:block;padding:8px 0}\n"] }]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
export class DFormSubmitDirective {
set eventName(eventName) {
if (eventName) {
this._eventName = eventName;
this.registerEvent();
}
}
// TODO:这里是否需要接管如果所关联的表单校验不通过,切换到disabled状态
constructor(elementRef, _dForm) {
this.elementRef = elementRef;
this._dForm = _dForm;
this.default = true;
this._eventName = 'click';
this.destroy$ = new Subject();
}
ngAfterViewInit() {
this.registerEvent();
}
ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}
registerEvent() {
this.destroy$.next();
fromEvent(this.elementRef.nativeElement, this._eventName)
.pipe(takeUntil(this.destroy$))
.subscribe(($event) => {
if (this._dForm) {
this._dForm.updateOnSubmit($event, this.data);
}
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DFormSubmitDirective, deps: [{ token: i0.ElementRef }, { token: i1.FormDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DFormSubmitDirective, selector: "[dFormSubmit]", inputs: { eventName: ["dFormSubmit", "eventName"], data: ["dFormSubmitData", "data"] }, host: { properties: { "class.devui-form-submit": "this.default" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DFormSubmitDirective, decorators: [{
type: Directive,
args: [{
selector: '[dFormSubmit]',
}]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FormDirective, decorators: [{
type: Optional
}, {
type: Host
}] }], propDecorators: { default: [{
type: HostBinding,
args: ['class.devui-form-submit']
}], eventName: [{
type: Input,
args: ['dFormSubmit']
}], data: [{
type: Input,
args: ['dFormSubmitData']
}] } });
export class DFormResetDirective {
set eventName(eventName) {
if (eventName) {
this._eventName = eventName;
this.registerEvent();
}
}
constructor(elementRef, _dForm) {
this.elementRef = elementRef;
this._dForm = _dForm;
this.default = true;
// TODO: emit now form
// TODO: Abstract a parent class
this._eventName = 'click';
this.destroy$ = new Subject();
}
ngAfterViewInit() {
this.registerEvent();
}
ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}
registerEvent() {
this.destroy$.next();
fromEvent(this.elementRef.nativeElement, this._eventName)
.pipe(takeUntil(this.destroy$))
.subscribe(() => {
if (this._dForm) {
this._dForm.updateOnReset();
}
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DFormResetDirective, deps: [{ token: i0.ElementRef }, { token: i1.FormDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DFormResetDirective, selector: "[dFormReset]", inputs: { eventName: ["dFormReset", "eventName"] }, host: { properties: { "class.devui-form-reset": "this.default" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DFormResetDirective, decorators: [{
type: Directive,
args: [{
selector: '[dFormReset]',
}]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FormDirective, decorators: [{
type: Optional
}, {
type: Host
}] }], propDecorators: { default: [{
type: HostBinding,
args: ['class.devui-form-reset']
}], eventName: [{
type: Input,
args: ['dFormReset']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1vcGVyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2dWkvZm9ybS9mb3JtLW9wZXJhdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixJQUFJLEVBQ0osV0FBVyxFQUNYLEtBQUssRUFHTCxRQUFRLEVBQ1IsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQXVCakQsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUFZLFVBQXNCLEVBQUUsUUFBbUI7UUFDckQsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELFFBQVEsS0FBSSxDQUFDOytHQUxGLHNCQUFzQjttR0FBdEIsc0JBQXNCLHdEQW5CdkIsMkJBQTJCOzs0RkFtQjFCLHNCQUFzQjtrQkFyQmxDLFNBQVM7K0JBQ0Usa0JBQWtCLFlBQ2xCLDJCQUEyQixtQkFnQnBCLHVCQUF1QixDQUFDLE1BQU0sdUJBQzFCLEtBQUs7O0FBYTVCLE1BQU0sT0FBTyxvQkFBb0I7SUFJL0IsSUFDSSxTQUFTLENBQUMsU0FBUztRQUNyQixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBTUQsMkNBQTJDO0lBRTNDLFlBQW9CLFVBQXNCLEVBQThCLE1BQXFCO1FB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OzswQkFpQjhDLFFBQVE7OzBCQUFJLElBQUk7eUNBZnRCLE9BQU87c0JBQTdDLFdBQVc7dUJBQUMsd0JBQXdCO2dCQU1qQyxTQUFTO3NCQURaLEtBQUs7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4vZm9ybS5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkLWZvcm0tb3BlcmF0aW9uJyxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLmRldnVpLWZvcm0taG9yaXpvbnRhbCA6aG9zdC5kZXZ1aS1mb3JtLW9wZXJhdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tbGVmdDogOTZweDtcbiAgICAgIH1cbiAgICAgIC5kZXZ1aS1mb3JtLXZlcnRpY2FsIDpob3N0LmRldnVpLWZvcm0tb3BlcmF0aW9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAuZGV2dWktZm9ybS1jb2x1bW5zIDpob3N0LmRldnVpLWZvcm0tb3BlcmF0aW9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDhweCAwO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybU9wZXJhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICByZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkZXZ1aS1mb3JtLW9wZXJhdGlvbicpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZEZvcm1TdWJtaXRdJyxcbn0pXG5leHBvcnQgY2xhc3MgREZvcm1TdWJtaXREaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRldnVpLWZvcm0tc3VibWl0JykgZGVmYXVsdCA9IHRydWU7XG5cbiAgX2V2ZW50TmFtZSA9ICdjbGljayc7XG4gIEBJbnB1dCgnZEZvcm1TdWJtaXQnKVxuICBzZXQgZXZlbnROYW1lKGV2ZW50TmFtZSkge1xuICAgIGlmIChldmVudE5hbWUpIHtcbiAgICAgIHRoaXMuX2V2ZW50TmFtZSA9IGV2ZW50TmFtZTtcbiAgICAgIHRoaXMucmVnaXN0ZXJFdmVudCgpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgnZEZvcm1TdWJtaXREYXRhJykgZGF0YTogYW55O1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vIFRPRE/vvJrov5nph4zmmK/lkKbpnIDopoHmjqXnrqHlpoLmnpzmiYDlhbPogZTnmoTooajljZXmoKHpqozkuI3pgJrov4fvvIzliIfmjaLliLBkaXNhYmxlZOeKtuaAgVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgQE9wdGlvbmFsKCkgQEhvc3QoKSBwcml2YXRlIF9kRm9ybTogRm9ybURpcmVjdGl2ZSkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5yZWdpc3RlckV2ZW50KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICByZWdpc3RlckV2ZW50KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5fZXZlbnROYW1lKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9kRm9ybSkge1xuICAgICAgICAgIHRoaXMuX2RGb3JtLnVwZGF0ZU9uU3VibWl0KCRldmVudCwgdGhpcy5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2RGb3JtUmVzZXRdJyxcbn0pXG5leHBvcnQgY2xhc3MgREZvcm1SZXNldERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGV2dWktZm9ybS1yZXNldCcpIGRlZmF1bHQgPSB0cnVlO1xuXG4gIC8vIFRPRE86IGVtaXQgbm93IGZvcm1cbiAgLy8gVE9ETzogQWJzdHJhY3QgYSBwYXJlbnQgY2xhc3NcbiAgX2V2ZW50TmFtZSA9ICdjbGljayc7XG4gIEBJbnB1dCgnZEZvcm1SZXNldCcpXG4gIHNldCBldmVudE5hbWUoZXZlbnROYW1lKSB7XG4gICAgaWYgKGV2ZW50TmFtZSkge1xuICAgICAgdGhpcy5fZXZlbnROYW1lID0gZXZlbnROYW1lO1xuICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBAT3B0aW9uYWwoKSBASG9zdCgpIHByaXZhdGUgX2RGb3JtOiBGb3JtRGlyZWN0aXZlKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyRXZlbnQoKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgZnJvbUV2ZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLl9ldmVudE5hbWUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2RGb3JtKSB7XG4gICAgICAgICAgdGhpcy5fZEZvcm0udXBkYXRlT25SZXNldCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIl19