Files
bbq/src/app/shared/widget/noun/noun.widget.ts
2021-11-26 16:34:35 +08:00

78 lines
1.9 KiB
TypeScript

import { Component } from '@angular/core';
import { ControlWidget } from '@delon/form';
@Component({
selector: 'sl-noun',
template: `
<sf-item-wrap [id]="id" [schema]="schema" [ui]="ui" [showError]="showError" [error]="error" [showTitle]="schema.title">
<nz-input-group nzCompact>
<nz-input-number
nzPlaceHolder="从"
class="number-input"
[nzMin]="ui.min || 0"
[nzMax]="ui.max || 100000"
[nzStep]="ui.step || 1"
[ngModel]="min"
(ngModelChange)="_change($event, 0)"
></nz-input-number>
<input
type="text"
disabled
nz-input
placeholder="~"
style="width: 30px; text-align: center; pointer-events: none; background-color: rgb(255, 255, 255);"
/>
<nz-input-number
nzPlaceHolder="到"
class="number-input"
[nzMin]="ui.min || 0"
[nzMax]="ui.max || 100000"
[nzStep]="ui.step || 1"
[ngModel]="max"
(ngModelChange)="_change($event, 1)"
></nz-input-number>
</nz-input-group>
</sf-item-wrap>
`,
preserveWhitespaces: false,
styles: [
`
.number-input {
width: calc(50% - 15px);
}
`,
],
})
// tslint:disable-next-line: component-class-suffix
export class NounWidget extends ControlWidget {
static readonly KEY = 'noun';
min!: number | null;
max!: number | null;
val: any[] = [];
_change(value: any, index: number) {
if (value.toString().trim() === '') {
value = null;
}
if (index === 0) {
this.min = value;
}
if (index === 1) {
this.max = value;
}
this.val[index] = value;
if (this.val.length === 2 && this.val[0] !== null && this.val[1] !== null) {
this.setValue(this.val);
} else {
this.setValue(null);
}
}
reset(value: string) {
this.min = null;
this.max = null;
}
}