diff --git a/src/domain_abstract/ui/InputNumber.js b/src/domain_abstract/ui/InputNumber.ts
similarity index 88%
rename from src/domain_abstract/ui/InputNumber.js
rename to src/domain_abstract/ui/InputNumber.ts
index 03f828d76..141ad96db 100644
--- a/src/domain_abstract/ui/InputNumber.js
+++ b/src/domain_abstract/ui/InputNumber.ts
@@ -1,11 +1,14 @@
-import Backbone from 'backbone';
import { bindAll, isUndefined, indexOf } from 'underscore';
import { on, off } from '../../utils/mixins';
import Input from './Input';
-const $ = Backbone.$;
-
export default class InputNumber extends Input {
+ doc: Document;
+ unitEl?: any;
+ moved?: boolean;
+ prValue?: number;
+ current?: { y: number; val: string };
+
template() {
const ppfx = this.ppfx;
return `
@@ -35,10 +38,10 @@ export default class InputNumber extends Input {
* @param {string} value
* @param {Object} opts
*/
- setValue(value, opts) {
- var opt = opts || {};
- var valid = this.validateInputValue(value, { deepCheck: 1 });
- var validObj = { value: valid.value };
+ setValue(value: string, opts?: any) {
+ const opt = opts || {};
+ const valid = this.validateInputValue(value, { deepCheck: 1 });
+ const validObj = { value: valid.value, unit: '' };
// If found some unit value
if (valid.unit || valid.force) {
@@ -57,7 +60,7 @@ export default class InputNumber extends Input {
/**
* Handled when the view is changed
*/
- handleChange(e) {
+ handleChange(e: Event) {
e.stopPropagation();
this.setValue(this.getInputEl().value);
this.elementUpdated();
@@ -66,9 +69,9 @@ export default class InputNumber extends Input {
/**
* Handled when the view is changed
*/
- handleUnitChange(e) {
+ handleUnitChange(e: Event) {
e.stopPropagation();
- var value = this.getUnitEl().value;
+ const value = this.getUnitEl().value;
this.model.set('unit', value);
this.elementUpdated();
}
@@ -76,7 +79,7 @@ export default class InputNumber extends Input {
/**
* Handled when user uses keyboard
*/
- handleKeyDown(e) {
+ handleKeyDown(e: KeyboardEvent) {
if (e.key === 'ArrowUp') {
e.preventDefault();
this.upArrowClick();
@@ -117,7 +120,7 @@ export default class InputNumber extends Input {
if (units.length) {
const options = [''];
- units.forEach(unit => {
+ units.forEach((unit: string) => {
const selected = unit == model.get('unit') ? 'selected' : '';
options.push(``);
});
@@ -159,13 +162,13 @@ export default class InputNumber extends Input {
*
* @return void
* */
- downIncrement(e) {
+ downIncrement(e: MouseEvent) {
e.preventDefault();
- this.moved = 0;
+ this.moved = false;
var value = this.model.get('value') || 0;
value = this.normalizeValue(value);
this.current = { y: e.pageY, val: value };
- on(this.doc, 'mousemove', this.moveIncrement);
+ on(this.doc, 'mousemove', this.moveIncrement as any);
on(this.doc, 'mouseup', this.upIncrement);
}
@@ -174,11 +177,11 @@ export default class InputNumber extends Input {
*
* @return bool
* */
- moveIncrement(ev) {
- this.moved = 1;
+ moveIncrement(ev: MouseEvent) {
+ this.moved = true;
const model = this.model;
const step = model.get('step');
- const data = this.current;
+ const data = this.current!;
var pos = this.normalizeValue(data.val + (data.y - ev.pageY) * step);
const { value, unit } = this.validateInputValue(pos);
this.prValue = value;
@@ -193,16 +196,17 @@ export default class InputNumber extends Input {
const model = this.model;
const step = model.get('step');
off(this.doc, 'mouseup', this.upIncrement);
- off(this.doc, 'mousemove', this.moveIncrement);
+ off(this.doc, 'mousemove', this.moveIncrement as any);
if (this.prValue && this.moved) {
var value = this.prValue - step;
+ // @ts-ignore
model.set('value', value, { avoidStore: 1 }).set('value', value + step);
this.elementUpdated();
}
}
- normalizeValue(value, defValue = 0) {
+ normalizeValue(value: any, defValue = 0) {
const model = this.model;
const step = model.get('step');
let stepDecimals = 0;
@@ -227,7 +231,7 @@ export default class InputNumber extends Input {
* @param {Object} opts Options
* @return {Object} Validated string
*/
- validateInputValue(value, opts = {}) {
+ validateInputValue(value?: any, opts: any = {}) {
var force = 0;
var opt = opts || {};
var model = this.model;
@@ -278,12 +282,13 @@ export default class InputNumber extends Input {
Input.prototype.render.call(this);
this.unitEl = null;
const unit = this.getUnitEl();
- unit && this.$el.find(`.${this.ppfx}field-units`).get(0).appendChild(unit);
+ unit && this.$el.find(`.${this.ppfx}field-units`).get(0)!.appendChild(unit);
return this;
}
}
InputNumber.prototype.events = {
+ // @ts-ignore
'change input': 'handleChange',
'change select': 'handleUnitChange',
'click [data-arrow-up]': 'upArrowClick',