78 lines
1.9 KiB
TypeScript
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;
|
|
}
|
|
}
|