@ng-nest/ui 19.0.8 → 19.0.9

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.
@@ -184,9 +184,13 @@ class XInputNumberComponent extends XInputNumberProperty {
184
184
  this.valueChange.next(this.value());
185
185
  });
186
186
  }
187
- change(value) {
188
- this.verify(value);
189
- this.valueChange.next(this.value());
187
+ writeValue(value) {
188
+ this.value.set(value);
189
+ this.verify(Number(value));
190
+ this.setDisplayValue(this.value());
191
+ }
192
+ ngOnInit() {
193
+ this.setDisplayValue(this.value());
190
194
  }
191
195
  down(event, limit, increase = true) {
192
196
  if (this.disabledComputed())
@@ -257,6 +261,10 @@ class XInputNumberComponent extends XInputNumberProperty {
257
261
  this.inputValue.next(value);
258
262
  }
259
263
  setDisplayValue(value) {
264
+ if (XIsEmpty(value)) {
265
+ this.displayValue.set('');
266
+ return;
267
+ }
260
268
  let displayValue = '';
261
269
  const formatter = this.formatter();
262
270
  if (!XIsEmpty(value) && !formatter) {
@@ -272,11 +280,11 @@ class XInputNumberComponent extends XInputNumberProperty {
272
280
  this.displayValue.set(displayValue);
273
281
  }
274
282
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: XInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
275
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: XInputNumberComponent, isStandalone: true, selector: "x-input-number", providers: [XValueAccessor(XInputNumberComponent)], viewQueries: [{ propertyName: "inputNumber", first: true, predicate: ["inputNumber"], descendants: true, isSignal: true }, { propertyName: "inputEleRef", first: true, predicate: ["inputEleRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div #inputNumber class=\"x-input-number\" [class.x-input-number-hidden-button]=\"hiddenButton()\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || minDisabled()\"\r\n (click)=\"!minDisabled() && plus($event, step(), false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled() && down($event, step(), false)\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"clearable()\"\r\n [ngModel]=\"displayValue()\"\r\n (ngModelChange)=\"change($event)\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContext()\"\r\n [size]=\"size()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"hiddenButton() ? '' : beforeButtonTpl\"\r\n [after]=\"hiddenButton() ? '' : afterButtonTpl\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n (xInput)=\"onInput($event); formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || maxDisabled()\"\r\n (click)=\"!maxDisabled() && plus($event, step()); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled() && down($event, step())\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n @if (invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-input-number{display:inline-block;width:12rem}.x-input-number{margin:0;padding:0}.x-input-number,.x-input-number-input{width:100%}.x-input-number-input input{text-align:center}.x-input-number-hidden-button .x-input-number-input input{text-align:left}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XInputComponent, selector: "x-input" }, { kind: "component", type: XButtonComponent, selector: "x-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
283
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: XInputNumberComponent, isStandalone: true, selector: "x-input-number", providers: [XValueAccessor(XInputNumberComponent)], viewQueries: [{ propertyName: "inputNumber", first: true, predicate: ["inputNumber"], descendants: true, isSignal: true }, { propertyName: "inputEleRef", first: true, predicate: ["inputEleRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div #inputNumber class=\"x-input-number\" [class.x-input-number-hidden-button]=\"hiddenButton()\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || minDisabled()\"\r\n (click)=\"!minDisabled() && plus($event, step(), false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled() && down($event, step(), false)\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"clearable()\"\r\n [ngModel]=\"displayValue()\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContext()\"\r\n [size]=\"size()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"hiddenButton() ? '' : beforeButtonTpl\"\r\n [after]=\"hiddenButton() ? '' : afterButtonTpl\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n (xInput)=\"onInput($event); formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || maxDisabled()\"\r\n (click)=\"!maxDisabled() && plus($event, step()); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled() && down($event, step())\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n @if (invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-input-number{display:inline-block;width:12rem}.x-input-number{margin:0;padding:0}.x-input-number,.x-input-number-input{width:100%}.x-input-number-input input{text-align:center}.x-input-number-hidden-button .x-input-number-input input{text-align:left}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XInputComponent, selector: "x-input" }, { kind: "component", type: XButtonComponent, selector: "x-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
276
284
  }
277
285
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: XInputNumberComponent, decorators: [{
278
286
  type: Component,
279
- args: [{ selector: `${XInputNumberPrefix}`, imports: [FormsModule, ReactiveFormsModule, XInputComponent, XButtonComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XInputNumberComponent)], template: "<div #inputNumber class=\"x-input-number\" [class.x-input-number-hidden-button]=\"hiddenButton()\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || minDisabled()\"\r\n (click)=\"!minDisabled() && plus($event, step(), false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled() && down($event, step(), false)\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"clearable()\"\r\n [ngModel]=\"displayValue()\"\r\n (ngModelChange)=\"change($event)\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContext()\"\r\n [size]=\"size()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"hiddenButton() ? '' : beforeButtonTpl\"\r\n [after]=\"hiddenButton() ? '' : afterButtonTpl\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n (xInput)=\"onInput($event); formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || maxDisabled()\"\r\n (click)=\"!maxDisabled() && plus($event, step()); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled() && down($event, step())\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n @if (invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-input-number{display:inline-block;width:12rem}.x-input-number{margin:0;padding:0}.x-input-number,.x-input-number-input{width:100%}.x-input-number-input input{text-align:center}.x-input-number-hidden-button .x-input-number-input input{text-align:left}\n"] }]
287
+ args: [{ selector: `${XInputNumberPrefix}`, imports: [FormsModule, ReactiveFormsModule, XInputComponent, XButtonComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XInputNumberComponent)], template: "<div #inputNumber class=\"x-input-number\" [class.x-input-number-hidden-button]=\"hiddenButton()\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || minDisabled()\"\r\n (click)=\"!minDisabled() && plus($event, step(), false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled() && down($event, step(), false)\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"clearable()\"\r\n [ngModel]=\"displayValue()\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContext()\"\r\n [size]=\"size()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"hiddenButton() ? '' : beforeButtonTpl\"\r\n [after]=\"hiddenButton() ? '' : afterButtonTpl\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n (xInput)=\"onInput($event); formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || maxDisabled()\"\r\n (click)=\"!maxDisabled() && plus($event, step()); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled() && down($event, step())\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n @if (invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-input-number{display:inline-block;width:12rem}.x-input-number{margin:0;padding:0}.x-input-number,.x-input-number-input{width:100%}.x-input-number-input input{text-align:center}.x-input-number-hidden-button .x-input-number-input input{text-align:left}\n"] }]
280
288
  }], ctorParameters: () => [] });
281
289
 
282
290
  class XInputNumberModule {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-input-number.mjs","sources":["../../../../lib/ng-nest/ui/input-number/input-number.property.ts","../../../../lib/ng-nest/ui/input-number/input-number.component.ts","../../../../lib/ng-nest/ui/input-number/input-number.component.html","../../../../lib/ng-nest/ui/input-number/input-number.module.ts","../../../../lib/ng-nest/ui/input-number/ng-nest-ui-input-number.ts"],"sourcesContent":["import {\r\n XAlign,\r\n XBoolean,\r\n XDirection,\r\n XJustify,\r\n XNumber,\r\n XSize,\r\n XToBoolean,\r\n XToCssPixelValue,\r\n XToNumber\r\n} from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * InputNumber\r\n * @selector x-input-number\r\n * @decorator component\r\n */\r\nexport const XInputNumberPrefix = 'x-input-number';\r\nconst X_INPUT_NUMBER_CONFIG_NAME = 'inputNumber';\r\n\r\n/**\r\n * InputNumber Property\r\n */\r\n@Component({ selector: `${XInputNumberPrefix}-property`, template: '' })\r\nexport class XInputNumberProperty extends XFormControlFunction(X_INPUT_NUMBER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Minimum\r\n */\r\n readonly min = input<number, XNumber>(Number.MIN_SAFE_INTEGER, { transform: XToNumber });\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n */\r\n readonly max = input<number, XNumber>(Number.MAX_SAFE_INTEGER, { transform: XToNumber });\r\n /**\r\n * @zh_CN 步数\r\n * @en_US Step count\r\n */\r\n readonly step = input<number, XNumber>(1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 按住后步进速度\r\n * @en_US Stepping speed after pressing\r\n */\r\n readonly debounce = input<number, XNumber>(40, { transform: XToNumber });\r\n /**\r\n * @zh_CN 精度\r\n * @en_US Precision\r\n */\r\n readonly precision = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 数字格式化\r\n * @en_US Display Formatter\r\n */\r\n readonly formatter = input<(value: number) => XNumber>();\r\n /**\r\n * @zh_CN 隐藏步进按钮\r\n * @en_US Hide step button\r\n */\r\n readonly hiddenButton = input<boolean, XBoolean>(this.config?.hiddenButton ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n override readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<string>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n override readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n override readonly valueTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n override readonly valueTplContext = input();\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n override readonly pattern = input<RegExp | RegExp[] | any>(null);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n override readonly message = input<string | string[]>([]);\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n override readonly inputValidator = input<(value: any) => boolean>();\r\n}\r\n\r\n/**\r\n * InputNumber Option\r\n */\r\nexport interface XInputNumberOption extends XFormOption {\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Minimum\r\n */\r\n min?: number;\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n */\r\n max?: number;\r\n /**\r\n * @zh_CN 步数\r\n * @en_US Step count\r\n */\r\n step?: number;\r\n /**\r\n * @zh_CN 按住后步进速度\r\n * @en_US Stepping speed after pressing\r\n */\r\n debounce?: number;\r\n /**\r\n * @zh_CN 精度\r\n * @en_US Precision\r\n */\r\n precision?: number;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n bordered?: boolean;\r\n /**\r\n * @zh_CN 数字格式化\r\n * @en_US Display Formatter\r\n */\r\n formatter?: (value: number) => XNumber;\r\n /**\r\n * @zh_CN 隐藏步进按钮\r\n * @en_US Hide step button\r\n */\r\n hiddenButton?: boolean;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n size?: XSize;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n placeholder?: string;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly?: boolean;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n valueTplContext?: any;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n}\r\n","import { Subject, Subscription, debounceTime, distinctUntilChanged, fromEvent, interval, takeUntil } from 'rxjs';\r\nimport {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n inject,\r\n viewChild,\r\n signal\r\n} from '@angular/core';\r\nimport { XIsEmpty, XNumber, XIsNotNil, XIsFunction, XIsString } from '@ng-nest/ui/core';\r\nimport { XInputNumberPrefix, XInputNumberProperty } from './input-number.property';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XInputNumberPrefix}`,\r\n imports: [FormsModule, ReactiveFormsModule, XInputComponent, XButtonComponent],\r\n templateUrl: './input-number.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XInputNumberComponent)]\r\n})\r\nexport class XInputNumberComponent extends XInputNumberProperty {\r\n inputNumber = viewChild.required<ElementRef<HTMLElement>>('inputNumber');\r\n inputEleRef = viewChild.required<XInputComponent>('inputEleRef');\r\n\r\n displayValue = signal<string>('');\r\n minDisabled = signal(false);\r\n maxDisabled = signal(false);\r\n mousedown$!: Subscription;\r\n mouseup$!: Subscription;\r\n timer: any;\r\n icon = signal('');\r\n iconSpin = signal(false);\r\n clearable = signal(false);\r\n isDown = signal(false);\r\n valueChange = new Subject<any>();\r\n\r\n document = inject(DOCUMENT);\r\n private unSubject = new Subject<void>();\r\n\r\n inputValue = new Subject<string>();\r\n\r\n constructor() {\r\n super();\r\n this.valueChange.pipe(distinctUntilChanged(), takeUntil(this.unSubject)).subscribe((x) => {\r\n this.onChange && this.onChange(x);\r\n });\r\n\r\n this.inputValue.pipe(debounceTime(500), takeUntil(this.unSubject)).subscribe((value) => {\r\n if (XIsFunction(this.formatter())) {\r\n value = value.replace(/[^0-9]/g, '');\r\n }\r\n if (value === '') {\r\n this.value.set(null);\r\n } else {\r\n this.verify(Number(value));\r\n this.setDisplayValue(this.value());\r\n }\r\n this.valueChange.next(this.value());\r\n });\r\n }\r\n\r\n change(value: any) {\r\n this.verify(value);\r\n this.valueChange.next(this.value());\r\n }\r\n\r\n down(event: Event, limit: XNumber, increase: boolean = true): void {\r\n if (this.disabledComputed()) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDown.set(true);\r\n this.timer = setTimeout(() => {\r\n this.mousedown$ = interval(Number(this.debounce()))\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.plus(event, limit, increase);\r\n });\r\n this.mouseup$ = fromEvent(this.document.documentElement, 'mouseup')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe((event: Event) => {\r\n this.up(event);\r\n });\r\n }, 150);\r\n }\r\n\r\n up(event: Event) {\r\n if (this.disabledComputed()) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDown.set(false);\r\n if (this.mousedown$) this.mousedown$.unsubscribe();\r\n if (this.mouseup$) this.mouseup$.unsubscribe();\r\n }\r\n\r\n plus(event: Event, limit: XNumber, increase: boolean = true) {\r\n if (this.disabledComputed()) return;\r\n limit = Number(limit);\r\n if (!increase) limit = -limit;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.timer) clearTimeout(this.timer);\r\n if (Number.isNaN(+this.value())) this.value.set(0);\r\n let value = Number(this.value()) + limit;\r\n this.verify(value);\r\n this.setDisplayValue(value);\r\n this.valueChange.next(this.value());\r\n }\r\n\r\n verify(value: string | number) {\r\n if (XIsString(value) && Number(value).toString() !== value) {\r\n return;\r\n }\r\n value = Number(Number(value).toFixed(Number(this.precision())));\r\n const oldValue: number = this.value();\r\n this.value.set(value);\r\n if (Number.isNaN(+this.value())) {\r\n this.value.set(oldValue);\r\n } else {\r\n this.maxDisabled.set(value >= this.max());\r\n this.minDisabled.set(value <= this.min());\r\n this.value.set(this.maxDisabled() ? this.max() : this.minDisabled() ? this.min() : value);\r\n }\r\n }\r\n\r\n onInput(x: Event) {\r\n const input = x.target as HTMLInputElement;\r\n let value = input.value;\r\n this.inputValue.next(value);\r\n }\r\n\r\n setDisplayValue(value: string | number) {\r\n let displayValue = '';\r\n const formatter = this.formatter();\r\n if (!XIsEmpty(value) && !formatter) {\r\n displayValue = Number(value).toFixed(this.precision());\r\n } else if (formatter) {\r\n const valueFormatter = formatter(Number(this.value()));\r\n const val = XIsNotNil(valueFormatter) ? valueFormatter : '';\r\n if (XIsNotNil(val)) {\r\n displayValue = val.toString();\r\n }\r\n }\r\n this.displayValue.set(displayValue);\r\n }\r\n}\r\n","<div #inputNumber class=\"x-input-number\" [class.x-input-number-hidden-button]=\"hiddenButton()\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || minDisabled()\"\r\n (click)=\"!minDisabled() && plus($event, step(), false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled() && down($event, step(), false)\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"clearable()\"\r\n [ngModel]=\"displayValue()\"\r\n (ngModelChange)=\"change($event)\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContext()\"\r\n [size]=\"size()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"hiddenButton() ? '' : beforeButtonTpl\"\r\n [after]=\"hiddenButton() ? '' : afterButtonTpl\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n (xInput)=\"onInput($event); formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || maxDisabled()\"\r\n (click)=\"!maxDisabled() && plus($event, step()); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled() && down($event, step())\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n @if (invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XInputNumberComponent } from './input-number.component';\r\n\r\n@NgModule({\r\n exports: [XInputNumberComponent],\r\n imports: [XInputNumberComponent]\r\n})\r\nexport class XInputNumberModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-input-number.mjs","sources":["../../../../lib/ng-nest/ui/input-number/input-number.property.ts","../../../../lib/ng-nest/ui/input-number/input-number.component.ts","../../../../lib/ng-nest/ui/input-number/input-number.component.html","../../../../lib/ng-nest/ui/input-number/input-number.module.ts","../../../../lib/ng-nest/ui/input-number/ng-nest-ui-input-number.ts"],"sourcesContent":["import {\r\n XAlign,\r\n XBoolean,\r\n XDirection,\r\n XJustify,\r\n XNumber,\r\n XSize,\r\n XToBoolean,\r\n XToCssPixelValue,\r\n XToNumber\r\n} from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * InputNumber\r\n * @selector x-input-number\r\n * @decorator component\r\n */\r\nexport const XInputNumberPrefix = 'x-input-number';\r\nconst X_INPUT_NUMBER_CONFIG_NAME = 'inputNumber';\r\n\r\n/**\r\n * InputNumber Property\r\n */\r\n@Component({ selector: `${XInputNumberPrefix}-property`, template: '' })\r\nexport class XInputNumberProperty extends XFormControlFunction(X_INPUT_NUMBER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Minimum\r\n */\r\n readonly min = input<number, XNumber>(Number.MIN_SAFE_INTEGER, { transform: XToNumber });\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n */\r\n readonly max = input<number, XNumber>(Number.MAX_SAFE_INTEGER, { transform: XToNumber });\r\n /**\r\n * @zh_CN 步数\r\n * @en_US Step count\r\n */\r\n readonly step = input<number, XNumber>(1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 按住后步进速度\r\n * @en_US Stepping speed after pressing\r\n */\r\n readonly debounce = input<number, XNumber>(40, { transform: XToNumber });\r\n /**\r\n * @zh_CN 精度\r\n * @en_US Precision\r\n */\r\n readonly precision = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 数字格式化\r\n * @en_US Display Formatter\r\n */\r\n readonly formatter = input<(value: number) => XNumber>();\r\n /**\r\n * @zh_CN 隐藏步进按钮\r\n * @en_US Hide step button\r\n */\r\n readonly hiddenButton = input<boolean, XBoolean>(this.config?.hiddenButton ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n override readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<string>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n override readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n override readonly valueTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n override readonly valueTplContext = input();\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n override readonly pattern = input<RegExp | RegExp[] | any>(null);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n override readonly message = input<string | string[]>([]);\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n override readonly inputValidator = input<(value: any) => boolean>();\r\n}\r\n\r\n/**\r\n * InputNumber Option\r\n */\r\nexport interface XInputNumberOption extends XFormOption {\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Minimum\r\n */\r\n min?: number;\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n */\r\n max?: number;\r\n /**\r\n * @zh_CN 步数\r\n * @en_US Step count\r\n */\r\n step?: number;\r\n /**\r\n * @zh_CN 按住后步进速度\r\n * @en_US Stepping speed after pressing\r\n */\r\n debounce?: number;\r\n /**\r\n * @zh_CN 精度\r\n * @en_US Precision\r\n */\r\n precision?: number;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n bordered?: boolean;\r\n /**\r\n * @zh_CN 数字格式化\r\n * @en_US Display Formatter\r\n */\r\n formatter?: (value: number) => XNumber;\r\n /**\r\n * @zh_CN 隐藏步进按钮\r\n * @en_US Hide step button\r\n */\r\n hiddenButton?: boolean;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n size?: XSize;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n placeholder?: string;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly?: boolean;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n valueTplContext?: any;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n}\r\n","import { Subject, Subscription, debounceTime, distinctUntilChanged, fromEvent, interval, takeUntil } from 'rxjs';\r\nimport {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n inject,\r\n viewChild,\r\n signal\r\n} from '@angular/core';\r\nimport { XIsEmpty, XNumber, XIsNotNil, XIsFunction, XIsString } from '@ng-nest/ui/core';\r\nimport { XInputNumberPrefix, XInputNumberProperty } from './input-number.property';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XInputNumberPrefix}`,\r\n imports: [FormsModule, ReactiveFormsModule, XInputComponent, XButtonComponent],\r\n templateUrl: './input-number.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XInputNumberComponent)]\r\n})\r\nexport class XInputNumberComponent extends XInputNumberProperty {\r\n inputNumber = viewChild.required<ElementRef<HTMLElement>>('inputNumber');\r\n inputEleRef = viewChild.required<XInputComponent>('inputEleRef');\r\n\r\n displayValue = signal<string>('');\r\n minDisabled = signal(false);\r\n maxDisabled = signal(false);\r\n mousedown$!: Subscription;\r\n mouseup$!: Subscription;\r\n timer: any;\r\n icon = signal('');\r\n iconSpin = signal(false);\r\n clearable = signal(false);\r\n isDown = signal(false);\r\n valueChange = new Subject<any>();\r\n\r\n document = inject(DOCUMENT);\r\n private unSubject = new Subject<void>();\r\n\r\n inputValue = new Subject<string>();\r\n\r\n constructor() {\r\n super();\r\n this.valueChange.pipe(distinctUntilChanged(), takeUntil(this.unSubject)).subscribe((x) => {\r\n this.onChange && this.onChange(x);\r\n });\r\n\r\n this.inputValue.pipe(debounceTime(500), takeUntil(this.unSubject)).subscribe((value) => {\r\n if (XIsFunction(this.formatter())) {\r\n value = value.replace(/[^0-9]/g, '');\r\n }\r\n if (value === '') {\r\n this.value.set(null);\r\n } else {\r\n this.verify(Number(value));\r\n this.setDisplayValue(this.value());\r\n }\r\n this.valueChange.next(this.value());\r\n });\r\n }\r\n\r\n override writeValue(value: any): void {\r\n this.value.set(value);\r\n this.verify(Number(value));\r\n this.setDisplayValue(this.value());\r\n }\r\n\r\n ngOnInit() {\r\n this.setDisplayValue(this.value());\r\n }\r\n\r\n down(event: Event, limit: XNumber, increase: boolean = true): void {\r\n if (this.disabledComputed()) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDown.set(true);\r\n this.timer = setTimeout(() => {\r\n this.mousedown$ = interval(Number(this.debounce()))\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.plus(event, limit, increase);\r\n });\r\n this.mouseup$ = fromEvent(this.document.documentElement, 'mouseup')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe((event: Event) => {\r\n this.up(event);\r\n });\r\n }, 150);\r\n }\r\n\r\n up(event: Event) {\r\n if (this.disabledComputed()) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDown.set(false);\r\n if (this.mousedown$) this.mousedown$.unsubscribe();\r\n if (this.mouseup$) this.mouseup$.unsubscribe();\r\n }\r\n\r\n plus(event: Event, limit: XNumber, increase: boolean = true) {\r\n if (this.disabledComputed()) return;\r\n limit = Number(limit);\r\n if (!increase) limit = -limit;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.timer) clearTimeout(this.timer);\r\n if (Number.isNaN(+this.value())) this.value.set(0);\r\n let value = Number(this.value()) + limit;\r\n this.verify(value);\r\n this.setDisplayValue(value);\r\n this.valueChange.next(this.value());\r\n }\r\n\r\n verify(value: string | number) {\r\n if (XIsString(value) && Number(value).toString() !== value) {\r\n return;\r\n }\r\n value = Number(Number(value).toFixed(Number(this.precision())));\r\n const oldValue: number = this.value();\r\n this.value.set(value);\r\n if (Number.isNaN(+this.value())) {\r\n this.value.set(oldValue);\r\n } else {\r\n this.maxDisabled.set(value >= this.max());\r\n this.minDisabled.set(value <= this.min());\r\n this.value.set(this.maxDisabled() ? this.max() : this.minDisabled() ? this.min() : value);\r\n }\r\n }\r\n\r\n onInput(x: Event) {\r\n const input = x.target as HTMLInputElement;\r\n let value = input.value;\r\n this.inputValue.next(value);\r\n }\r\n\r\n setDisplayValue(value: string | number) {\r\n if (XIsEmpty(value)) {\r\n this.displayValue.set('');\r\n return;\r\n }\r\n let displayValue = '';\r\n const formatter = this.formatter();\r\n if (!XIsEmpty(value) && !formatter) {\r\n displayValue = Number(value).toFixed(this.precision());\r\n } else if (formatter) {\r\n const valueFormatter = formatter(Number(this.value()));\r\n const val = XIsNotNil(valueFormatter) ? valueFormatter : '';\r\n if (XIsNotNil(val)) {\r\n displayValue = val.toString();\r\n }\r\n }\r\n this.displayValue.set(displayValue);\r\n }\r\n}\r\n","<div #inputNumber class=\"x-input-number\" [class.x-input-number-hidden-button]=\"hiddenButton()\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || minDisabled()\"\r\n (click)=\"!minDisabled() && plus($event, step(), false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled() && down($event, step(), false)\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"clearable()\"\r\n [ngModel]=\"displayValue()\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContext()\"\r\n [size]=\"size()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"hiddenButton() ? '' : beforeButtonTpl\"\r\n [after]=\"hiddenButton() ? '' : afterButtonTpl\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n (xInput)=\"onInput($event); formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || maxDisabled()\"\r\n (click)=\"!maxDisabled() && plus($event, step()); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled() && down($event, step())\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n ></x-button>\r\n </ng-template>\r\n @if (invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XInputNumberComponent } from './input-number.component';\r\n\r\n@NgModule({\r\n exports: [XInputNumberComponent],\r\n imports: [XInputNumberComponent]\r\n})\r\nexport class XInputNumberModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;AAcA;;;;AAIG;AACI,MAAM,kBAAkB,GAAG;AAClC,MAAM,0BAA0B,GAAG,aAAa;AAEhD;;AAEG;MAEU,oBAAqB,SAAQ,oBAAoB,CAAC,0BAA0B,CAAC,CAAA;AAD1F,IAAA,WAAA,GAAA;;AAEE;;;AAGG;AACM,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAkB,MAAM,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACxF;;;AAGG;AACM,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAkB,MAAM,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACxF;;;AAGG;QACM,IAAI,CAAA,IAAA,GAAG,KAAK,CAAkB,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACnE;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACxE;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAkB,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACxE;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAoB,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACtG;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,EAA8B;AACxD;;;AAGG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAoB,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC/G;;;AAGG;QACe,IAAI,CAAA,IAAA,GAAG,KAAK,CAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAC;AACpE;;;AAGG;AACe,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AAC3C;;;AAGG;QACe,IAAU,CAAA,UAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAC1F;;;AAGG;AACe,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,OAAO,CAAC;AACrD;;;AAGG;AACe,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,OAAO,CAAC;AACpD;;;AAGG;AACe,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,OAAO,CAAC;AAChD;;;AAGG;AACe,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAa,QAAQ,CAAC;AACzD;;;AAGG;AACe,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAoB,EAAE,CAAC;AAC5D;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACvF;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACvF;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACvF;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAoB;AACtD;;;AAGG;QACe,IAAe,CAAA,eAAA,GAAG,KAAK,EAAE;AAC3C;;;AAGG;AACe,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA0B,IAAI,CAAC;AAChE;;;AAGG;AACe,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,CAAC;AACxD;;;AAGG;QACe,IAAc,CAAA,cAAA,GAAG,KAAK,EAA2B;AACpE;iIAzHY,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,8oGADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FACxD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAG,EAAA,kBAAkB,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;;;ACEjE,MAAO,qBAAsB,SAAQ,oBAAoB,CAAA;AAqB7D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AArBT,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAA0B,aAAa,CAAC;AACxE,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAkB,aAAa,CAAC;AAEhE,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAS,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAI3B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;AACjB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;AACxB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AACtB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAO;AAEhC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACnB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAEvC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAU;QAIhC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YACvF,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnC,SAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YACrF,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;gBACjC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;;AAEtC,YAAA,IAAI,KAAK,KAAK,EAAE,EAAE;AAChB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;iBACf;gBACL,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;YAEpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACrC,SAAC,CAAC;;AAGK,IAAA,UAAU,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;IAGpC,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAGpC,IAAA,IAAI,CAAC,KAAY,EAAE,KAAc,EAAE,WAAoB,IAAI,EAAA;QACzD,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE;QAC7B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/C,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC9B,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;AACnC,aAAC,CAAC;AACJ,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS;AAC/D,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,iBAAA,SAAS,CAAC,CAAC,KAAY,KAAI;AAC1B,gBAAA,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAChB,aAAC,CAAC;SACL,EAAE,GAAG,CAAC;;AAGT,IAAA,EAAE,CAAC,KAAY,EAAA;QACb,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE;QAC7B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,IAAI,CAAC,UAAU;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;QAClD,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;;AAGhD,IAAA,IAAI,CAAC,KAAY,EAAE,KAAc,EAAE,WAAoB,IAAI,EAAA;QACzD,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE;AAC7B,QAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ;YAAE,KAAK,GAAG,CAAC,KAAK;QAC7B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,IAAI,CAAC,KAAK;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAAE,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAGrC,IAAA,MAAM,CAAC,KAAsB,EAAA;AAC3B,QAAA,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;YAC1D;;AAEF,QAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC/D,QAAA,MAAM,QAAQ,GAAW,IAAI,CAAC,KAAK,EAAE;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACrB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;;aACnB;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACzC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACzC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;;;AAI7F,IAAA,OAAO,CAAC,CAAQ,EAAA;AACd,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,MAA0B;AAC1C,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG7B,IAAA,eAAe,CAAC,KAAsB,EAAA;AACpC,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB;;QAEF,IAAI,YAAY,GAAG,EAAE;AACrB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;;aACjD,IAAI,SAAS,EAAE;AACpB,YAAA,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACtD,YAAA,MAAM,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,GAAG,cAAc,GAAG,EAAE;AAC3D,YAAA,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;AAClB,gBAAA,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE;;;AAGjC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;;iIAnI1B,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,6DAFrB,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBpD,qpFAuEA,EAAA,MAAA,EAAA,CAAA,mRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnDY,WAAW,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,oDAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAOlE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;+BACE,CAAG,EAAA,kBAAkB,CAAE,CAAA,EAAA,OAAA,EACxB,CAAC,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,CAAC,iBAG/D,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,cAAc,CAAA,qBAAA,CAAuB,CAAC,EAAA,QAAA,EAAA,qpFAAA,EAAA,MAAA,EAAA,CAAA,mRAAA,CAAA,EAAA;;;MElBvC,kBAAkB,CAAA;iIAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAlB,kBAAkB,EAAA,OAAA,EAAA,CAFnB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CADrB,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAGpB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAFnB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAEpB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,OAAO,EAAE,CAAC,qBAAqB;AAChC,iBAAA;;;ACND;;AAEG;;;;"}
@@ -22,7 +22,8 @@ export declare class XInputNumberComponent extends XInputNumberProperty {
22
22
  private unSubject;
23
23
  inputValue: Subject<string>;
24
24
  constructor();
25
- change(value: any): void;
25
+ writeValue(value: any): void;
26
+ ngOnInit(): void;
26
27
  down(event: Event, limit: XNumber, increase?: boolean): void;
27
28
  up(event: Event): void;
28
29
  plus(event: Event, limit: XNumber, increase?: boolean): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-nest/ui",
3
- "version": "19.0.8",
3
+ "version": "19.0.9",
4
4
  "license": "MIT",
5
5
  "homepage": "https://www.ngnest.com",
6
6
  "author": "ng-nest",
@@ -41,14 +41,18 @@
41
41
  "types": "./alert/index.d.ts",
42
42
  "default": "./fesm2022/ng-nest-ui-alert.mjs"
43
43
  },
44
- "./api": {
45
- "types": "./api/index.d.ts",
46
- "default": "./fesm2022/ng-nest-ui-api.mjs"
44
+ "./auto-complete": {
45
+ "types": "./auto-complete/index.d.ts",
46
+ "default": "./fesm2022/ng-nest-ui-auto-complete.mjs"
47
47
  },
48
48
  "./anchor": {
49
49
  "types": "./anchor/index.d.ts",
50
50
  "default": "./fesm2022/ng-nest-ui-anchor.mjs"
51
51
  },
52
+ "./api": {
53
+ "types": "./api/index.d.ts",
54
+ "default": "./fesm2022/ng-nest-ui-api.mjs"
55
+ },
52
56
  "./back-top": {
53
57
  "types": "./back-top/index.d.ts",
54
58
  "default": "./fesm2022/ng-nest-ui-back-top.mjs"
@@ -57,10 +61,6 @@
57
61
  "types": "./badge/index.d.ts",
58
62
  "default": "./fesm2022/ng-nest-ui-badge.mjs"
59
63
  },
60
- "./auto-complete": {
61
- "types": "./auto-complete/index.d.ts",
62
- "default": "./fesm2022/ng-nest-ui-auto-complete.mjs"
63
- },
64
64
  "./avatar": {
65
65
  "types": "./avatar/index.d.ts",
66
66
  "default": "./fesm2022/ng-nest-ui-avatar.mjs"
@@ -69,10 +69,6 @@
69
69
  "types": "./base-form/index.d.ts",
70
70
  "default": "./fesm2022/ng-nest-ui-base-form.mjs"
71
71
  },
72
- "./button": {
73
- "types": "./button/index.d.ts",
74
- "default": "./fesm2022/ng-nest-ui-button.mjs"
75
- },
76
72
  "./calendar": {
77
73
  "types": "./calendar/index.d.ts",
78
74
  "default": "./fesm2022/ng-nest-ui-calendar.mjs"
@@ -81,13 +77,17 @@
81
77
  "types": "./card/index.d.ts",
82
78
  "default": "./fesm2022/ng-nest-ui-card.mjs"
83
79
  },
80
+ "./cascade": {
81
+ "types": "./cascade/index.d.ts",
82
+ "default": "./fesm2022/ng-nest-ui-cascade.mjs"
83
+ },
84
84
  "./carousel": {
85
85
  "types": "./carousel/index.d.ts",
86
86
  "default": "./fesm2022/ng-nest-ui-carousel.mjs"
87
87
  },
88
- "./cascade": {
89
- "types": "./cascade/index.d.ts",
90
- "default": "./fesm2022/ng-nest-ui-cascade.mjs"
88
+ "./button": {
89
+ "types": "./button/index.d.ts",
90
+ "default": "./fesm2022/ng-nest-ui-button.mjs"
91
91
  },
92
92
  "./checkbox": {
93
93
  "types": "./checkbox/index.d.ts",
@@ -101,26 +101,26 @@
101
101
  "types": "./color/index.d.ts",
102
102
  "default": "./fesm2022/ng-nest-ui-color.mjs"
103
103
  },
104
- "./color-picker": {
105
- "types": "./color-picker/index.d.ts",
106
- "default": "./fesm2022/ng-nest-ui-color-picker.mjs"
107
- },
108
104
  "./comment": {
109
105
  "types": "./comment/index.d.ts",
110
106
  "default": "./fesm2022/ng-nest-ui-comment.mjs"
111
107
  },
108
+ "./color-picker": {
109
+ "types": "./color-picker/index.d.ts",
110
+ "default": "./fesm2022/ng-nest-ui-color-picker.mjs"
111
+ },
112
112
  "./container": {
113
113
  "types": "./container/index.d.ts",
114
114
  "default": "./fesm2022/ng-nest-ui-container.mjs"
115
115
  },
116
- "./core": {
117
- "types": "./core/index.d.ts",
118
- "default": "./fesm2022/ng-nest-ui-core.mjs"
119
- },
120
116
  "./crumb": {
121
117
  "types": "./crumb/index.d.ts",
122
118
  "default": "./fesm2022/ng-nest-ui-crumb.mjs"
123
119
  },
120
+ "./core": {
121
+ "types": "./core/index.d.ts",
122
+ "default": "./fesm2022/ng-nest-ui-core.mjs"
123
+ },
124
124
  "./date-picker": {
125
125
  "types": "./date-picker/index.d.ts",
126
126
  "default": "./fesm2022/ng-nest-ui-date-picker.mjs"
@@ -181,34 +181,34 @@
181
181
  "types": "./image/index.d.ts",
182
182
  "default": "./fesm2022/ng-nest-ui-image.mjs"
183
183
  },
184
- "./input": {
185
- "types": "./input/index.d.ts",
186
- "default": "./fesm2022/ng-nest-ui-input.mjs"
187
- },
188
- "./keyword": {
189
- "types": "./keyword/index.d.ts",
190
- "default": "./fesm2022/ng-nest-ui-keyword.mjs"
191
- },
192
184
  "./inner": {
193
185
  "types": "./inner/index.d.ts",
194
186
  "default": "./fesm2022/ng-nest-ui-inner.mjs"
195
187
  },
188
+ "./input": {
189
+ "types": "./input/index.d.ts",
190
+ "default": "./fesm2022/ng-nest-ui-input.mjs"
191
+ },
196
192
  "./input-number": {
197
193
  "types": "./input-number/index.d.ts",
198
194
  "default": "./fesm2022/ng-nest-ui-input-number.mjs"
199
195
  },
196
+ "./keyword": {
197
+ "types": "./keyword/index.d.ts",
198
+ "default": "./fesm2022/ng-nest-ui-keyword.mjs"
199
+ },
200
200
  "./layout": {
201
201
  "types": "./layout/index.d.ts",
202
202
  "default": "./fesm2022/ng-nest-ui-layout.mjs"
203
203
  },
204
- "./list": {
205
- "types": "./list/index.d.ts",
206
- "default": "./fesm2022/ng-nest-ui-list.mjs"
207
- },
208
204
  "./link": {
209
205
  "types": "./link/index.d.ts",
210
206
  "default": "./fesm2022/ng-nest-ui-link.mjs"
211
207
  },
208
+ "./list": {
209
+ "types": "./list/index.d.ts",
210
+ "default": "./fesm2022/ng-nest-ui-list.mjs"
211
+ },
212
212
  "./loading": {
213
213
  "types": "./loading/index.d.ts",
214
214
  "default": "./fesm2022/ng-nest-ui-loading.mjs"
@@ -221,26 +221,26 @@
221
221
  "types": "./message/index.d.ts",
222
222
  "default": "./fesm2022/ng-nest-ui-message.mjs"
223
223
  },
224
+ "./message-box": {
225
+ "types": "./message-box/index.d.ts",
226
+ "default": "./fesm2022/ng-nest-ui-message-box.mjs"
227
+ },
224
228
  "./notification": {
225
229
  "types": "./notification/index.d.ts",
226
230
  "default": "./fesm2022/ng-nest-ui-notification.mjs"
227
231
  },
232
+ "./outlet": {
233
+ "types": "./outlet/index.d.ts",
234
+ "default": "./fesm2022/ng-nest-ui-outlet.mjs"
235
+ },
228
236
  "./page-header": {
229
237
  "types": "./page-header/index.d.ts",
230
238
  "default": "./fesm2022/ng-nest-ui-page-header.mjs"
231
239
  },
232
- "./message-box": {
233
- "types": "./message-box/index.d.ts",
234
- "default": "./fesm2022/ng-nest-ui-message-box.mjs"
235
- },
236
240
  "./pagination": {
237
241
  "types": "./pagination/index.d.ts",
238
242
  "default": "./fesm2022/ng-nest-ui-pagination.mjs"
239
243
  },
240
- "./outlet": {
241
- "types": "./outlet/index.d.ts",
242
- "default": "./fesm2022/ng-nest-ui-outlet.mjs"
243
- },
244
244
  "./pattern": {
245
245
  "types": "./pattern/index.d.ts",
246
246
  "default": "./fesm2022/ng-nest-ui-pattern.mjs"
@@ -273,14 +273,14 @@
273
273
  "types": "./resizable/index.d.ts",
274
274
  "default": "./fesm2022/ng-nest-ui-resizable.mjs"
275
275
  },
276
- "./ripple": {
277
- "types": "./ripple/index.d.ts",
278
- "default": "./fesm2022/ng-nest-ui-ripple.mjs"
279
- },
280
276
  "./result": {
281
277
  "types": "./result/index.d.ts",
282
278
  "default": "./fesm2022/ng-nest-ui-result.mjs"
283
279
  },
280
+ "./ripple": {
281
+ "types": "./ripple/index.d.ts",
282
+ "default": "./fesm2022/ng-nest-ui-ripple.mjs"
283
+ },
284
284
  "./select": {
285
285
  "types": "./select/index.d.ts",
286
286
  "default": "./fesm2022/ng-nest-ui-select.mjs"
@@ -313,14 +313,14 @@
313
313
  "types": "./table/index.d.ts",
314
314
  "default": "./fesm2022/ng-nest-ui-table.mjs"
315
315
  },
316
- "./tag": {
317
- "types": "./tag/index.d.ts",
318
- "default": "./fesm2022/ng-nest-ui-tag.mjs"
319
- },
320
316
  "./tabs": {
321
317
  "types": "./tabs/index.d.ts",
322
318
  "default": "./fesm2022/ng-nest-ui-tabs.mjs"
323
319
  },
320
+ "./tag": {
321
+ "types": "./tag/index.d.ts",
322
+ "default": "./fesm2022/ng-nest-ui-tag.mjs"
323
+ },
324
324
  "./text-retract": {
325
325
  "types": "./text-retract/index.d.ts",
326
326
  "default": "./fesm2022/ng-nest-ui-text-retract.mjs"