@ebuilding/form 2.1.3 → 2.1.5

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.
@@ -24,25 +24,34 @@ class DeonNzFieldNumber extends FieldType {
24
24
  get password() {
25
25
  return this.props?.["password"] === true;
26
26
  }
27
- //<input nz-input [formControl]="formControl" [type]="'text'" [formlyAttributes]="field" />
28
27
  constructor() {
29
28
  super();
30
29
  }
31
30
  ngOnInit() { }
32
- /**
33
- * 防止 nz-input-number 的 formatter 报错(如 toFixed 报错)
34
- */
35
31
  formatNumber = (value) => {
36
- const val = Number(value);
37
- return isNaN(val) ? '' : val.toFixed(this.precision);
32
+ if (value === null || value === undefined || value === '')
33
+ return '';
34
+ return String(value); // 不要 format,小数位留给 blur 处理
38
35
  };
39
- /**
40
- * 解析输入值为数字,NaN 返回 0
41
- */
42
36
  parseNumber = (value) => {
43
37
  const parsed = parseFloat(value);
44
- return isNaN(parsed) ? 0 : parsed;
38
+ return isNaN(parsed) ? null : parsed;
45
39
  };
40
+ onFormatPrecision() {
41
+ let value = this.formControl.value;
42
+ // 空值直接跳过,不格式化
43
+ if (value === null || value === undefined || value === '')
44
+ return;
45
+ // 强制转成数字
46
+ const num = Number(value);
47
+ if (isNaN(num))
48
+ return;
49
+ // 设置精度
50
+ const fixed = num.toFixed(this.precision);
51
+ // ⚠ 注意:toFixed 返回 string,但 formControl 可能希望是 number
52
+ // 所以统一再转 number 避免下游报错
53
+ this.formControl.setValue(this.precision > 0 ? Number(fixed) : parseInt(fixed), { emitEvent: false });
54
+ }
46
55
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeonNzFieldNumber, deps: [], target: i0.ɵɵFactoryTarget.Component });
47
56
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DeonNzFieldNumber, isStandalone: true, selector: "deon-nz-field-number", usesInheritance: true, ngImport: i0, template: `
48
57
  <ng-container *ngIf="!password; else tmpPwd">
@@ -56,6 +65,7 @@ class DeonNzFieldNumber extends FieldType {
56
65
  [nzStep]="0"
57
66
  [nzFormatter]="formatNumber"
58
67
  [nzParser]="parseNumber"
68
+ (nzBlur)="onFormatPrecision()"
59
69
  ></nz-input-number>
60
70
  </nz-input-group>
61
71
  </ng-container>
@@ -68,6 +78,7 @@ class DeonNzFieldNumber extends FieldType {
68
78
  [nzStep]="precision == 0 ? 1 : 0.1"
69
79
  [nzFormatter]="formatNumber"
70
80
  [nzParser]="parseNumber"
81
+ (nzBlur)="onFormatPrecision()"
71
82
  ></nz-input-number>
72
83
  </ng-template>
73
84
  </ng-container>
@@ -91,6 +102,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
91
102
  [nzStep]="0"
92
103
  [nzFormatter]="formatNumber"
93
104
  [nzParser]="parseNumber"
105
+ (nzBlur)="onFormatPrecision()"
94
106
  ></nz-input-number>
95
107
  </nz-input-group>
96
108
  </ng-container>
@@ -103,6 +115,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
103
115
  [nzStep]="precision == 0 ? 1 : 0.1"
104
116
  [nzFormatter]="formatNumber"
105
117
  [nzParser]="parseNumber"
118
+ (nzBlur)="onFormatPrecision()"
106
119
  ></nz-input-number>
107
120
  </ng-template>
108
121
  </ng-container>
@@ -1 +1 @@
1
- {"version":3,"file":"type.number.mjs","sources":["../../../../packages/form/number/src/number.type.ts","../../../../packages/form/number/src/number_rate.type.ts","../../../../packages/form/number/src/number.module.ts","../../../../packages/form/number/type.number.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\nimport { FormlyModule, FieldType, FieldTypeConfig } from '@kre-form/core';\n\n@Component({\n selector: 'deon-nz-field-number',\n template: `\n <ng-container *ngIf=\"!password; else tmpPwd\">\n <ng-container *ngIf=\"props['unit']; else tmpNumber\">\n <nz-input-group [nzAddOnAfter]=\"props['unit']\">\n <nz-input-number\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [nzDisabled]=\"!editor\"\n [nzPrecision]=\"precision\"\n [nzStep]=\"0\" \n [nzFormatter]=\"formatNumber\"\n [nzParser]=\"parseNumber\"\n ></nz-input-number>\n </nz-input-group>\n </ng-container>\n <ng-template #tmpNumber>\n <nz-input-number\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [nzDisabled]=\"!editor\"\n [nzPrecision]=\"precision\"\n [nzStep]=\"precision == 0 ? 1 : 0.1\" \n [nzFormatter]=\"formatNumber\"\n [nzParser]=\"parseNumber\"\n ></nz-input-number>\n </ng-template>\n </ng-container>\n\n <ng-template #tmpPwd> *** </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NzInputModule,\n NzInputNumberModule,\n FormlyModule\n ]\n})\nexport class DeonNzFieldNumber extends FieldType<FieldTypeConfig> implements OnInit {\n get precision() {\n if (this.props[\"precision\"] && this.props[\"precision\"] > 0) {\n return this.props[\"precision\"];\n }\n return 0;\n }\n\n get password() {\n return this.props?.[\"password\"] === true;\n }\n\n\n //<input nz-input [formControl]=\"formControl\" [type]=\"'text'\" [formlyAttributes]=\"field\" /> \n\n constructor() {\n super();\n }\n\n ngOnInit() { }\n\n /**\n * 防止 nz-input-number 的 formatter 报错(如 toFixed 报错)\n */\n formatNumber = (value: number | string | null | undefined): string => {\n const val = Number(value);\n return isNaN(val) ? '' : val.toFixed(this.precision);\n };\n\n /**\n * 解析输入值为数字,NaN 返回 0\n */\n parseNumber = (value: string): number => {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? 0 : parsed;\n };\n}\n","import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NzRateModule } from 'ng-zorro-antd/rate';\nimport { FormlyModule, FieldType, FieldTypeConfig } from '@kre-form/core';\nimport _ from 'lodash';\n@Component({\n selector: 'deon-nz-field-number',\n template: ` <nz-rate [formControl]=\"formControl\" [formlyAttributes]=\"field\" [nzDisabled]=\"!editor\" [nzAllowClear]=\"to?.required==true?false:true\"> </nz-rate> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n NzRateModule,\n FormlyModule\n ]\n})\nexport class DeonNzFieldNumberRate extends FieldType<FieldTypeConfig> implements OnInit {\n constructor() {\n super();\n }\n ngOnInit() { }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@kre-form/core';\n\nimport { DeonNzFormFieldModule } from '@ebuilding/form/form-field';\nimport { DeonNzFieldNumber } from './number.type';\nimport { DeonNzFieldNumberRate } from './number_rate.type';\n\n@NgModule({\n imports: [\n CommonModule,\n DeonNzFormFieldModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'number',\n component: DeonNzFieldNumber,\n wrappers: ['formly-form-field'],\n },\n { name: 'eval_number', extends: 'number' },\n { name: 'finish_number', extends: 'number' },\n {\n name: 'rate_number',\n component: DeonNzFieldNumberRate,\n wrappers: ['formly-form-field'],\n },\n ],\n }),\n ],\n})\nexport class DeonNzNumberModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3"],"mappings":"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"}
1
+ {"version":3,"file":"type.number.mjs","sources":["../../../../packages/form/number/src/number.type.ts","../../../../packages/form/number/src/number_rate.type.ts","../../../../packages/form/number/src/number.module.ts","../../../../packages/form/number/type.number.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\nimport { FormlyModule, FieldType, FieldTypeConfig } from '@kre-form/core';\n\n@Component({\n selector: 'deon-nz-field-number',\n template: `\n <ng-container *ngIf=\"!password; else tmpPwd\">\n <ng-container *ngIf=\"props['unit']; else tmpNumber\">\n <nz-input-group [nzAddOnAfter]=\"props['unit']\">\n <nz-input-number\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [nzDisabled]=\"!editor\"\n [nzPrecision]=\"precision\"\n [nzStep]=\"0\" \n [nzFormatter]=\"formatNumber\"\n [nzParser]=\"parseNumber\"\n (nzBlur)=\"onFormatPrecision()\"\n ></nz-input-number>\n </nz-input-group>\n </ng-container>\n <ng-template #tmpNumber>\n <nz-input-number\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [nzDisabled]=\"!editor\"\n [nzPrecision]=\"precision\"\n [nzStep]=\"precision == 0 ? 1 : 0.1\" \n [nzFormatter]=\"formatNumber\"\n [nzParser]=\"parseNumber\"\n (nzBlur)=\"onFormatPrecision()\"\n ></nz-input-number>\n </ng-template>\n </ng-container>\n\n <ng-template #tmpPwd> *** </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NzInputModule,\n NzInputNumberModule,\n FormlyModule\n ]\n})\nexport class DeonNzFieldNumber extends FieldType<FieldTypeConfig> implements OnInit {\n get precision() {\n if (this.props[\"precision\"] && this.props[\"precision\"] > 0) {\n return this.props[\"precision\"];\n }\n return 0;\n }\n\n get password() {\n return this.props?.[\"password\"] === true;\n }\n\n constructor() {\n super();\n }\n\n ngOnInit() { }\n\n formatNumber = (value: number | string | null | undefined): string => {\n if (value === null || value === undefined || value === '') return '';\n return String(value); // 不要 format,小数位留给 blur 处理\n };\n\n parseNumber = (value: string): number | null => {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? null : parsed;\n };\n\n onFormatPrecision() {\n let value = this.formControl.value;\n // 空值直接跳过,不格式化\n if (value === null || value === undefined || value === '') return;\n\n // 强制转成数字\n const num = Number(value);\n\n if (isNaN(num)) return;\n\n // 设置精度\n const fixed = num.toFixed(this.precision);\n\n // ⚠ 注意:toFixed 返回 string,但 formControl 可能希望是 number\n // 所以统一再转 number 避免下游报错\n this.formControl.setValue(\n this.precision > 0 ? Number(fixed) : parseInt(fixed),\n { emitEvent: false }\n );\n }\n\n\n}\n","import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NzRateModule } from 'ng-zorro-antd/rate';\nimport { FormlyModule, FieldType, FieldTypeConfig } from '@kre-form/core';\nimport _ from 'lodash';\n@Component({\n selector: 'deon-nz-field-number',\n template: ` <nz-rate [formControl]=\"formControl\" [formlyAttributes]=\"field\" [nzDisabled]=\"!editor\" [nzAllowClear]=\"to?.required==true?false:true\"> </nz-rate> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n NzRateModule,\n FormlyModule\n ]\n})\nexport class DeonNzFieldNumberRate extends FieldType<FieldTypeConfig> implements OnInit {\n constructor() {\n super();\n }\n ngOnInit() { }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@kre-form/core';\n\nimport { DeonNzFormFieldModule } from '@ebuilding/form/form-field';\nimport { DeonNzFieldNumber } from './number.type';\nimport { DeonNzFieldNumberRate } from './number_rate.type';\n\n@NgModule({\n imports: [\n CommonModule,\n DeonNzFormFieldModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'number',\n component: DeonNzFieldNumber,\n wrappers: ['formly-form-field'],\n },\n { name: 'eval_number', extends: 'number' },\n { name: 'finish_number', extends: 'number' },\n {\n name: 'rate_number',\n component: DeonNzFieldNumberRate,\n wrappers: ['formly-form-field'],\n },\n ],\n }),\n ],\n})\nexport class DeonNzNumberModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3"],"mappings":"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"}
@@ -6,14 +6,9 @@ export declare class DeonNzFieldNumber extends FieldType<FieldTypeConfig> implem
6
6
  get password(): boolean;
7
7
  constructor();
8
8
  ngOnInit(): void;
9
- /**
10
- * 防止 nz-input-number 的 formatter 报错(如 toFixed 报错)
11
- */
12
9
  formatNumber: (value: number | string | null | undefined) => string;
13
- /**
14
- * 解析输入值为数字,NaN 返回 0
15
- */
16
- parseNumber: (value: string) => number;
10
+ parseNumber: (value: string) => number | null;
11
+ onFormatPrecision(): void;
17
12
  static ɵfac: i0.ɵɵFactoryDeclaration<DeonNzFieldNumber, never>;
18
13
  static ɵcmp: i0.ɵɵComponentDeclaration<DeonNzFieldNumber, "deon-nz-field-number", never, {}, {}, never, never, true, never>;
19
14
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ebuilding/form",
3
- "version": "2.1.3",
3
+ "version": "2.1.5",
4
4
  "dependencies": {
5
5
  "extend": "undefined",
6
6
  "tslib": "^2.3.0"
@@ -23,10 +23,6 @@
23
23
  "types": "./checkboxgroup/index.d.ts",
24
24
  "default": "./fesm2022/type.checkboxgroup.mjs"
25
25
  },
26
- "./colors": {
27
- "types": "./colors/index.d.ts",
28
- "default": "./fesm2022/type.colors.mjs"
29
- },
30
26
  "./datetime": {
31
27
  "types": "./datetime/index.d.ts",
32
28
  "default": "./fesm2022/type.datetime.mjs"
@@ -35,6 +31,10 @@
35
31
  "types": "./desc/index.d.ts",
36
32
  "default": "./fesm2022/type.desc.mjs"
37
33
  },
34
+ "./colors": {
35
+ "types": "./colors/index.d.ts",
36
+ "default": "./fesm2022/type.colors.mjs"
37
+ },
38
38
  "./dim-indicator": {
39
39
  "types": "./dim-indicator/index.d.ts",
40
40
  "default": "./fesm2022/type.dim-indicator.mjs"
@@ -51,62 +51,58 @@
51
51
  "types": "./grid/index.d.ts",
52
52
  "default": "./fesm2022/type.grid.mjs"
53
53
  },
54
- "./group": {
55
- "types": "./group/index.d.ts",
56
- "default": "./fesm2022/type.group.mjs"
57
- },
58
54
  "./html": {
59
55
  "types": "./html/index.d.ts",
60
56
  "default": "./fesm2022/type.html.mjs"
61
57
  },
62
- "./icon": {
63
- "types": "./icon/index.d.ts",
64
- "default": "./fesm2022/type.icon.mjs"
65
- },
66
58
  "./label": {
67
59
  "types": "./label/index.d.ts",
68
60
  "default": "./fesm2022/type.label.mjs"
69
61
  },
70
- "./list": {
71
- "types": "./list/index.d.ts",
72
- "default": "./fesm2022/type.list.mjs"
62
+ "./group": {
63
+ "types": "./group/index.d.ts",
64
+ "default": "./fesm2022/type.group.mjs"
73
65
  },
74
- "./number": {
75
- "types": "./number/index.d.ts",
76
- "default": "./fesm2022/type.number.mjs"
66
+ "./icon": {
67
+ "types": "./icon/index.d.ts",
68
+ "default": "./fesm2022/type.icon.mjs"
77
69
  },
78
70
  "./line": {
79
71
  "types": "./line/index.d.ts",
80
72
  "default": "./fesm2022/type.line.mjs"
81
73
  },
82
- "./panel": {
83
- "types": "./panel/index.d.ts",
84
- "default": "./fesm2022/type.panel.mjs"
85
- },
86
- "./radio": {
87
- "types": "./radio/index.d.ts",
88
- "default": "./fesm2022/type.radio.mjs"
74
+ "./list": {
75
+ "types": "./list/index.d.ts",
76
+ "default": "./fesm2022/type.list.mjs"
89
77
  },
90
78
  "./overtime": {
91
79
  "types": "./overtime/index.d.ts",
92
80
  "default": "./fesm2022/type.overtime.mjs"
93
81
  },
82
+ "./number": {
83
+ "types": "./number/index.d.ts",
84
+ "default": "./fesm2022/type.number.mjs"
85
+ },
94
86
  "./radiogroup": {
95
87
  "types": "./radiogroup/index.d.ts",
96
88
  "default": "./fesm2022/type.radiogroup.mjs"
97
89
  },
98
- "./reform": {
99
- "types": "./reform/index.d.ts",
100
- "default": "./fesm2022/type.reform.mjs"
90
+ "./radio": {
91
+ "types": "./radio/index.d.ts",
92
+ "default": "./fesm2022/type.radio.mjs"
101
93
  },
102
- "./repeat-card": {
103
- "types": "./repeat-card/index.d.ts",
104
- "default": "./fesm2022/type.repeat-card.mjs"
94
+ "./panel": {
95
+ "types": "./panel/index.d.ts",
96
+ "default": "./fesm2022/type.panel.mjs"
105
97
  },
106
98
  "./repeat": {
107
99
  "types": "./repeat/index.d.ts",
108
100
  "default": "./fesm2022/type.repeat.mjs"
109
101
  },
102
+ "./reform": {
103
+ "types": "./reform/index.d.ts",
104
+ "default": "./fesm2022/type.reform.mjs"
105
+ },
110
106
  "./select": {
111
107
  "types": "./select/index.d.ts",
112
108
  "default": "./fesm2022/type.select.mjs"
@@ -115,18 +111,22 @@
115
111
  "types": "./switch/index.d.ts",
116
112
  "default": "./fesm2022/type.switch.mjs"
117
113
  },
114
+ "./repeat-card": {
115
+ "types": "./repeat-card/index.d.ts",
116
+ "default": "./fesm2022/type.repeat-card.mjs"
117
+ },
118
118
  "./tabs": {
119
119
  "types": "./tabs/index.d.ts",
120
120
  "default": "./fesm2022/type.tabs.mjs"
121
121
  },
122
- "./text": {
123
- "types": "./text/index.d.ts",
124
- "default": "./fesm2022/type.text.mjs"
125
- },
126
122
  "./textcode": {
127
123
  "types": "./textcode/index.d.ts",
128
124
  "default": "./fesm2022/type.textcode.mjs"
129
125
  },
126
+ "./text": {
127
+ "types": "./text/index.d.ts",
128
+ "default": "./fesm2022/type.text.mjs"
129
+ },
130
130
  "./textarea": {
131
131
  "types": "./textarea/index.d.ts",
132
132
  "default": "./fesm2022/type.textarea.mjs"