@zajno/common 1.3.0-beta → 1.3.3
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.
- package/.github/workflows/CI.yml +8 -0
- package/coverage/clover.xml +428 -360
- package/coverage/coverage-final.json +20 -19
- package/coverage/lcov-report/index.html +44 -44
- package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
- package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +2 -2
- package/coverage/lcov-report/src/async/arrays.ts.html +1 -1
- package/coverage/lcov-report/src/async/index.html +1 -1
- package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
- package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
- package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
- package/coverage/lcov-report/src/dates/format.ts.html +1 -1
- package/coverage/lcov-report/src/dates/index.html +1 -1
- package/coverage/lcov-report/src/dates/index.ts.html +1 -1
- package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
- package/coverage/lcov-report/src/dates/period.ts.html +1 -1
- package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
- package/coverage/lcov-report/src/dates/types.ts.html +1 -1
- package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
- package/coverage/lcov-report/src/enumHelper.ts.html +1 -1
- package/coverage/lcov-report/src/event.ts.html +3 -3
- package/coverage/lcov-report/src/index.html +21 -21
- package/coverage/lcov-report/src/lazy.light.ts.html +3 -3
- package/coverage/lcov-report/src/logger/batch.ts.html +107 -0
- package/coverage/lcov-report/src/logger/console.ts.html +10 -25
- package/coverage/lcov-report/src/logger/index.html +54 -39
- package/coverage/lcov-report/src/logger/index.ts.html +88 -61
- package/coverage/lcov-report/src/logger/named.ts.html +31 -31
- package/coverage/lcov-report/src/logger/proxy.ts.html +13 -13
- package/coverage/lcov-report/src/math/arrays.ts.html +293 -32
- package/coverage/lcov-report/src/math/calc.ts.html +11 -11
- package/coverage/lcov-report/src/math/distribution.ts.html +2 -2
- package/coverage/lcov-report/src/math/index.html +11 -11
- package/coverage/lcov-report/src/math/index.ts.html +6 -6
- package/coverage/lcov-report/src/transitionObserver.ts.html +5 -5
- package/coverage/lcov-report/src/types.ts.html +33 -18
- package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +1 -1
- package/coverage/lcov-report/src/validation/creditCard.ts.html +1 -1
- package/coverage/lcov-report/src/validation/helpers.ts.html +1 -1
- package/coverage/lcov-report/src/validation/index.html +1 -1
- package/coverage/lcov-report/src/validation/index.ts.html +1 -1
- package/coverage/lcov-report/src/validation/types.ts.html +1 -1
- package/coverage/lcov-report/src/validation/validators.ts.html +1 -1
- package/coverage/lcov-report/src/validation/wrappers.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +21 -18
- package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +136 -94
- package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +19 -10
- package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +19 -10
- package/coverage/lcov-report/src/viewModels/Validatable.ts.html +12 -12
- package/coverage/lcov-report/src/viewModels/index.html +45 -45
- package/coverage/lcov-report/src/viewModels/wrappers.ts.html +3 -15
- package/coverage/lcov.info +871 -720
- package/lib/event.d.ts.map +1 -1
- package/lib/event.js +1 -1
- package/lib/event.js.map +1 -1
- package/lib/logger/batch.d.ts +3 -0
- package/lib/logger/batch.d.ts.map +1 -0
- package/lib/logger/batch.js +12 -0
- package/lib/logger/batch.js.map +1 -0
- package/lib/logger/console.d.ts +0 -1
- package/lib/logger/console.d.ts.map +1 -1
- package/lib/logger/console.js +0 -3
- package/lib/logger/console.js.map +1 -1
- package/lib/logger/file.d.ts +15 -0
- package/lib/logger/file.d.ts.map +1 -0
- package/lib/logger/file.js +43 -0
- package/lib/logger/file.js.map +1 -0
- package/lib/logger/index.d.ts +7 -6
- package/lib/logger/index.d.ts.map +1 -1
- package/lib/logger/index.js +34 -21
- package/lib/logger/index.js.map +1 -1
- package/lib/logger/named.js +3 -3
- package/lib/logger/named.js.map +1 -1
- package/lib/logger/proxy.d.ts +1 -1
- package/lib/logger/proxy.d.ts.map +1 -1
- package/lib/logger/proxy.js +2 -2
- package/lib/logger/proxy.js.map +1 -1
- package/lib/math/arrays.d.ts +16 -0
- package/lib/math/arrays.d.ts.map +1 -1
- package/lib/math/arrays.js +77 -1
- package/lib/math/arrays.js.map +1 -1
- package/lib/transitionObserver.d.ts.map +1 -1
- package/lib/transitionObserver.js +2 -2
- package/lib/transitionObserver.js.map +1 -1
- package/lib/types.d.ts +4 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +6 -2
- package/lib/types.js.map +1 -1
- package/lib/viewModels/FlagModel.d.ts +4 -4
- package/lib/viewModels/FlagModel.d.ts.map +1 -1
- package/lib/viewModels/FlagModel.js +1 -0
- package/lib/viewModels/FlagModel.js.map +1 -1
- package/lib/viewModels/MultiSelectModel.d.ts +9 -3
- package/lib/viewModels/MultiSelectModel.d.ts.map +1 -1
- package/lib/viewModels/MultiSelectModel.js +16 -2
- package/lib/viewModels/MultiSelectModel.js.map +1 -1
- package/lib/viewModels/NumberModel.d.ts +4 -2
- package/lib/viewModels/NumberModel.d.ts.map +1 -1
- package/lib/viewModels/NumberModel.js +1 -0
- package/lib/viewModels/NumberModel.js.map +1 -1
- package/lib/viewModels/{PromptModalViewModel.d.ts → PromptModal.d.ts} +1 -1
- package/lib/viewModels/PromptModal.d.ts.map +1 -0
- package/lib/viewModels/{PromptModalViewModel.js → PromptModal.js} +1 -1
- package/lib/viewModels/PromptModal.js.map +1 -0
- package/lib/viewModels/SelectModel.d.ts +4 -2
- package/lib/viewModels/SelectModel.d.ts.map +1 -1
- package/lib/viewModels/SelectModel.js +1 -0
- package/lib/viewModels/SelectModel.js.map +1 -1
- package/lib/viewModels/TextModel.d.ts +4 -3
- package/lib/viewModels/TextModel.d.ts.map +1 -1
- package/lib/viewModels/TextModel.js +5 -11
- package/lib/viewModels/TextModel.js.map +1 -1
- package/lib/viewModels/ValuesCollector.d.ts +1 -3
- package/lib/viewModels/ValuesCollector.d.ts.map +1 -1
- package/lib/viewModels/ValuesCollector.js.map +1 -1
- package/lib/viewModels/index.d.ts +2 -1
- package/lib/viewModels/index.d.ts.map +1 -1
- package/lib/viewModels/index.js +2 -1
- package/lib/viewModels/index.js.map +1 -1
- package/lib/viewModels/types.d.ts +16 -0
- package/lib/viewModels/types.d.ts.map +1 -0
- package/lib/viewModels/types.js +3 -0
- package/lib/viewModels/types.js.map +1 -0
- package/lib/viewModels/wrappers.d.ts +1 -4
- package/lib/viewModels/wrappers.d.ts.map +1 -1
- package/lib/viewModels/wrappers.js.map +1 -1
- package/package.json +1 -1
- package/src/event.ts +2 -2
- package/src/logger/__tests__/{index.test.ts → logger.test.ts} +97 -41
- package/src/logger/batch.ts +9 -0
- package/src/logger/console.ts +0 -5
- package/src/logger/file.ts +46 -0
- package/src/logger/index.ts +37 -28
- package/src/logger/named.ts +3 -3
- package/src/logger/proxy.ts +2 -2
- package/src/math/__tests__/arrays.test.ts +53 -0
- package/src/math/arrays.ts +87 -0
- package/src/transitionObserver.ts +2 -2
- package/src/types.ts +6 -1
- package/src/viewModels/FlagModel.ts +5 -4
- package/src/viewModels/MultiSelectModel.ts +19 -5
- package/src/viewModels/NumberModel.ts +5 -2
- package/src/viewModels/{PromptModalViewModel.ts → PromptModal.ts} +0 -0
- package/src/viewModels/SelectModel.ts +5 -2
- package/src/viewModels/TextModel.ts +6 -6
- package/src/viewModels/ValuesCollector.ts +1 -4
- package/src/viewModels/__tests__/multiSelect.test.ts +127 -12
- package/src/viewModels/index.ts +2 -1
- package/src/viewModels/types.ts +19 -0
- package/src/viewModels/wrappers.ts +1 -5
- package/lib/viewModels/PromptModalViewModel.d.ts.map +0 -1
- package/lib/viewModels/PromptModalViewModel.js.map +0 -1
|
@@ -2,13 +2,15 @@ import { createLazy } from '../lazy.light';
|
|
|
2
2
|
import { action, computed, makeObservable, observable, reaction } from 'mobx';
|
|
3
3
|
import { FlagModel, ILabeledFlagModel } from './FlagModel';
|
|
4
4
|
import { ValidatableModel } from './Validatable';
|
|
5
|
-
import { IValueModel } from './
|
|
5
|
+
import { IValueModel } from './types';
|
|
6
6
|
import { withLabel } from './wrappers';
|
|
7
|
+
import { ICountableModel, IResetableModel } from 'viewModels';
|
|
8
|
+
import { arraysCompareDistinct } from '../math';
|
|
7
9
|
|
|
8
|
-
export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> implements IValueModel<readonly string[]
|
|
10
|
+
export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> implements IValueModel<readonly string[]>, IResetableModel, ICountableModel {
|
|
9
11
|
|
|
10
12
|
@observable
|
|
11
|
-
private _indexes = new Set<number>();
|
|
13
|
+
private readonly _indexes = new Set<number>();
|
|
12
14
|
|
|
13
15
|
public readonly opened = new FlagModel();
|
|
14
16
|
private readonly _initial: number[] = null;
|
|
@@ -54,9 +56,14 @@ export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> imp
|
|
|
54
56
|
set value(v: readonly string[]) { this.selectValues(v); }
|
|
55
57
|
|
|
56
58
|
isIndexSelected(index: number) { return this._indexes.has(index); }
|
|
57
|
-
isValueSelected(value: string) { return this.
|
|
59
|
+
isValueSelected(value: string) { return this.selectedValues.includes(value); }
|
|
58
60
|
|
|
59
|
-
get
|
|
61
|
+
get count() { return this._items.length; }
|
|
62
|
+
get selectedCount() { return this._indexes.size; }
|
|
63
|
+
get isEmpty() { return this.selectedCount === 0; }
|
|
64
|
+
|
|
65
|
+
@computed
|
|
66
|
+
get isDefault() { return arraysCompareDistinct(this.selectedIndexes, this._initial)?.diff === 0; }
|
|
60
67
|
|
|
61
68
|
protected get valueToValidate() { return this.selectedItems; }
|
|
62
69
|
|
|
@@ -114,6 +121,9 @@ export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> imp
|
|
|
114
121
|
}
|
|
115
122
|
};
|
|
116
123
|
|
|
124
|
+
selectIndex = (index: number) => this.setIndexSelected(index, true);
|
|
125
|
+
deSelectIndex = (index: number) => this.setIndexSelected(index, false);
|
|
126
|
+
|
|
117
127
|
reset = () => {
|
|
118
128
|
super.reset();
|
|
119
129
|
this.setInitialIndexes();
|
|
@@ -122,6 +132,10 @@ export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> imp
|
|
|
122
132
|
private setInitialIndexes() {
|
|
123
133
|
this._indexes.clear();
|
|
124
134
|
this._initial.forEach(i => this._indexes.add(i));
|
|
135
|
+
|
|
136
|
+
if (this._flags.hasValue) {
|
|
137
|
+
this._flags.value.forEach((flag, index) => flag.value = this._indexes.has(index));
|
|
138
|
+
}
|
|
125
139
|
}
|
|
126
140
|
|
|
127
141
|
private createFlags() {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { action, makeObservable, observable } from 'mobx';
|
|
2
|
-
import {
|
|
2
|
+
import { IResetableModel } from 'viewModels';
|
|
3
|
+
import { IValueModel } from './types';
|
|
3
4
|
|
|
4
|
-
export interface INumberModel {
|
|
5
|
+
export interface INumberModel extends IResetableModel {
|
|
5
6
|
value: number;
|
|
6
7
|
}
|
|
7
8
|
|
|
@@ -21,6 +22,8 @@ export class NumberModel implements INumberModel, IValueModel<number> {
|
|
|
21
22
|
get value() { return this._value; }
|
|
22
23
|
set value(v: number) { this._value = v; }
|
|
23
24
|
|
|
25
|
+
get isDefault() { return this._value === this._initial; }
|
|
26
|
+
|
|
24
27
|
@action
|
|
25
28
|
reset = () => {
|
|
26
29
|
this._value = this._initial;
|
|
File without changes
|
|
@@ -2,10 +2,11 @@ import { createLazy } from '../lazy.light';
|
|
|
2
2
|
import { observable, computed, makeObservable, reaction } from 'mobx';
|
|
3
3
|
import { FlagModel, ILabeledFlagModel } from './FlagModel';
|
|
4
4
|
import { ValidatableModel } from './Validatable';
|
|
5
|
-
import { IValueModel } from './
|
|
5
|
+
import { IValueModel } from './types';
|
|
6
6
|
import { withLabel } from './wrappers';
|
|
7
|
+
import { IResetableModel } from 'viewModels';
|
|
7
8
|
|
|
8
|
-
export class Select<T = any> extends ValidatableModel<T> implements IValueModel<string
|
|
9
|
+
export class Select<T = any> extends ValidatableModel<T> implements IValueModel<string>, IResetableModel {
|
|
9
10
|
@observable
|
|
10
11
|
private _index: number = undefined;
|
|
11
12
|
|
|
@@ -67,6 +68,8 @@ export class Select<T = any> extends ValidatableModel<T> implements IValueModel<
|
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
70
|
|
|
71
|
+
get isDefault() { return this._index === this._initialIndex; }
|
|
72
|
+
|
|
70
73
|
get index() {
|
|
71
74
|
return this._index;
|
|
72
75
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { observable, computed,
|
|
1
|
+
import { observable, computed, makeObservable, reaction } from 'mobx';
|
|
2
2
|
import { Getter } from '../types';
|
|
3
|
+
import { IValueModel } from './types';
|
|
3
4
|
import logger from '../logger';
|
|
4
5
|
import { ValidatableModel, ValidationConfig } from './Validatable';
|
|
5
|
-
import {
|
|
6
|
+
import { IResetableModel } from 'viewModels';
|
|
6
7
|
|
|
7
8
|
export type TextInputConfig = {
|
|
8
9
|
name?: Getter<string>;
|
|
@@ -39,7 +40,7 @@ export class Text {
|
|
|
39
40
|
get value() { return this._value; }
|
|
40
41
|
}
|
|
41
42
|
|
|
42
|
-
export class TextInputVM extends ValidatableModel implements IValueModel<string
|
|
43
|
+
export class TextInputVM extends ValidatableModel implements IValueModel<string>, IResetableModel {
|
|
43
44
|
@observable
|
|
44
45
|
private _value = '';
|
|
45
46
|
|
|
@@ -103,11 +104,10 @@ export class TextInputVM extends ValidatableModel implements IValueModel<string>
|
|
|
103
104
|
this.validate();
|
|
104
105
|
}
|
|
105
106
|
|
|
106
|
-
|
|
107
|
-
reset() {
|
|
107
|
+
reset = () => {
|
|
108
108
|
this._value = '';
|
|
109
109
|
this._focused = false;
|
|
110
110
|
super.reset();
|
|
111
|
-
}
|
|
111
|
+
};
|
|
112
112
|
|
|
113
113
|
}
|
|
@@ -1,23 +1,138 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { reaction, toJS } from 'mobx';
|
|
2
|
+
import { arrayRepeat } from '../../math';
|
|
3
|
+
import { MultiSelect, MultiSelectString } from '../MultiSelectModel';
|
|
4
|
+
|
|
5
|
+
type SetType<T> = { items: T[], selected: number[], accessor: (item: T) => string };
|
|
2
6
|
|
|
3
7
|
describe('MultiSelectModel', () => {
|
|
4
|
-
it('
|
|
8
|
+
it('creates', () => {
|
|
5
9
|
expect(() => new MultiSelect(null, null).values).toThrow();
|
|
6
10
|
expect(() => new MultiSelect([1], null).values).toThrow();
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
const sets: SetType<any>[] = [
|
|
14
|
+
{ items: [1, 2, 3], selected: [1], accessor: i => `_${i}_` },
|
|
15
|
+
{ items: [1, 2, 3], selected: [], accessor: i => `_${i}_` },
|
|
16
|
+
{ items: ['a', 'b', 'c'], selected: [2], accessor: i => i },
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
describe('consistent', () => {
|
|
20
|
+
sets.forEach((set, setIndex) => {
|
|
21
|
+
it(`variant ${setIndex + 1}`, () => {
|
|
22
|
+
const items = set.items; // [1, 2, 3];
|
|
23
|
+
const accessor = set.accessor; // (i: number) => `_${i}_`;
|
|
24
|
+
const initialSelected = set.selected; // [1];
|
|
25
|
+
const values = items.map(accessor);
|
|
26
|
+
const selectedValues = initialSelected.map(i => accessor(items[i]));
|
|
7
27
|
|
|
8
|
-
|
|
9
|
-
const accessor = (i: number) => `_${i}_`;
|
|
10
|
-
const values = items.map(accessor);
|
|
11
|
-
const initialSelected = [1];
|
|
28
|
+
const vm = new MultiSelect(items, accessor, ...initialSelected);
|
|
12
29
|
|
|
13
|
-
|
|
30
|
+
expect(vm.items).toStrictEqual(items);
|
|
31
|
+
expect(vm.values).toStrictEqual(values);
|
|
32
|
+
expect(vm.count).toBe(items.length);
|
|
33
|
+
expect(vm.selectedCount).toBe(initialSelected.length);
|
|
34
|
+
expect(vm.selectedIndexes).toStrictEqual(initialSelected);
|
|
35
|
+
expect(vm.selectedValues).toStrictEqual(selectedValues);
|
|
14
36
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
37
|
+
initialSelected.forEach(index => {
|
|
38
|
+
expect(vm.isIndexSelected(index)).toBe(initialSelected.includes(index));
|
|
39
|
+
});
|
|
18
40
|
|
|
19
|
-
|
|
20
|
-
|
|
41
|
+
values.forEach((value) => {
|
|
42
|
+
expect(vm.isValueSelected(value)).toBe(selectedValues.includes(value));
|
|
43
|
+
});
|
|
44
|
+
});
|
|
21
45
|
});
|
|
46
|
+
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('reacts', () => {
|
|
50
|
+
const vm = new MultiSelectString(['a', 'b', 'c']);
|
|
51
|
+
|
|
52
|
+
expect(vm.count).toBe(3);
|
|
53
|
+
expect(vm.selectedCount).toBe(0);
|
|
54
|
+
expect(vm.selectedIndexes).toHaveLength(0);
|
|
55
|
+
|
|
56
|
+
const mocks = arrayRepeat(() => jest.fn().mockImplementation(null), 5);
|
|
57
|
+
const [
|
|
58
|
+
onSelectedIndexes,
|
|
59
|
+
onSelectedItems,
|
|
60
|
+
onSelectedValues,
|
|
61
|
+
onIsIndexSelected,
|
|
62
|
+
onIsValueSelected,
|
|
63
|
+
] = mocks;
|
|
64
|
+
|
|
65
|
+
const wrapMock = mock => ((a: any) => mock(toJS(a)));
|
|
66
|
+
|
|
67
|
+
const expectEmptyCalls = () => {
|
|
68
|
+
expect(onSelectedIndexes).toHaveBeenCalledWith([]);
|
|
69
|
+
expect(onSelectedItems).toHaveBeenCalledWith([]);
|
|
70
|
+
expect(onSelectedValues).toHaveBeenCalledWith([]);
|
|
71
|
+
mocks.forEach(m => m.mockClear());
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
reaction(() => vm.selectedIndexes, wrapMock(onSelectedIndexes));
|
|
75
|
+
reaction(() => vm.selectedItems, wrapMock(onSelectedItems));
|
|
76
|
+
reaction(() => vm.selectedValues, wrapMock(onSelectedValues));
|
|
77
|
+
|
|
78
|
+
// initially – 'false', so expect only when 'true' should be passed
|
|
79
|
+
reaction(() => vm.isIndexSelected(0), wrapMock(onIsIndexSelected));
|
|
80
|
+
reaction(() => vm.isValueSelected('a'), wrapMock(onIsValueSelected));
|
|
81
|
+
|
|
82
|
+
vm.selectIndex(1);
|
|
83
|
+
|
|
84
|
+
expect(onSelectedIndexes).toHaveBeenCalledWith([1]);
|
|
85
|
+
expect(onSelectedItems).toHaveBeenCalledWith(['b']);
|
|
86
|
+
expect(onSelectedValues).toHaveBeenCalledWith(['b']);
|
|
87
|
+
expect(onIsIndexSelected).not.toHaveBeenCalled();
|
|
88
|
+
expect(onIsValueSelected).not.toHaveBeenCalled();
|
|
89
|
+
mocks.forEach(m => m.mockClear());
|
|
90
|
+
|
|
91
|
+
vm.deSelectIndex(1);
|
|
92
|
+
expect(onIsIndexSelected).not.toHaveBeenCalled();
|
|
93
|
+
expect(onIsValueSelected).not.toHaveBeenCalled();
|
|
94
|
+
expectEmptyCalls();
|
|
95
|
+
|
|
96
|
+
vm.selectItem('c');
|
|
97
|
+
|
|
98
|
+
expect(onSelectedIndexes).toHaveBeenCalledWith([2]);
|
|
99
|
+
expect(onSelectedItems).toHaveBeenCalledWith(['c']);
|
|
100
|
+
expect(onSelectedValues).toHaveBeenCalledWith(['c']);
|
|
101
|
+
expect(onIsIndexSelected).not.toHaveBeenCalled();
|
|
102
|
+
expect(onIsValueSelected).not.toHaveBeenCalled();
|
|
103
|
+
mocks.forEach(m => m.mockClear());
|
|
104
|
+
|
|
105
|
+
vm.deSelectItem('c');
|
|
106
|
+
expect(onIsIndexSelected).not.toHaveBeenCalled();
|
|
107
|
+
expect(onIsValueSelected).not.toHaveBeenCalled();
|
|
108
|
+
expectEmptyCalls();
|
|
109
|
+
|
|
110
|
+
vm.selectValue('a');
|
|
111
|
+
|
|
112
|
+
expect(onSelectedIndexes).toHaveBeenCalledWith([0]);
|
|
113
|
+
expect(onSelectedItems).toHaveBeenCalledWith(['a']);
|
|
114
|
+
expect(onSelectedValues).toHaveBeenCalledWith(['a']);
|
|
115
|
+
expect(onIsIndexSelected).toHaveBeenCalledWith(true);
|
|
116
|
+
expect(onIsValueSelected).toHaveBeenCalledWith(true);
|
|
117
|
+
mocks.forEach(m => m.mockClear());
|
|
118
|
+
|
|
119
|
+
vm.deSelectValue('a');
|
|
120
|
+
expect(onIsIndexSelected).toHaveBeenCalledWith(false);
|
|
121
|
+
expect(onIsValueSelected).toHaveBeenCalledWith(false);
|
|
122
|
+
expectEmptyCalls();
|
|
123
|
+
|
|
124
|
+
vm.selectItems(['a', 'b']);
|
|
125
|
+
|
|
126
|
+
expect(onSelectedIndexes).toHaveBeenCalledWith([0, 1]);
|
|
127
|
+
expect(onSelectedItems).toHaveBeenCalledWith(['a', 'b']);
|
|
128
|
+
expect(onSelectedValues).toHaveBeenCalledWith(['a', 'b']);
|
|
129
|
+
expect(onIsIndexSelected).toHaveBeenCalledWith(true);
|
|
130
|
+
expect(onIsValueSelected).toHaveBeenCalledWith(true);
|
|
131
|
+
mocks.forEach(m => m.mockClear());
|
|
132
|
+
|
|
133
|
+
vm.reset();
|
|
134
|
+
expect(onIsIndexSelected).toHaveBeenCalledWith(false);
|
|
135
|
+
expect(onIsValueSelected).toHaveBeenCalledWith(false);
|
|
136
|
+
expectEmptyCalls();
|
|
22
137
|
});
|
|
23
138
|
});
|
package/src/viewModels/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './types';
|
|
1
2
|
export * from './Validatable';
|
|
2
3
|
export * from './TextModel';
|
|
3
4
|
export * from './FlagModel';
|
|
@@ -7,4 +8,4 @@ export * from './wrappers';
|
|
|
7
8
|
export * from './SelectModel';
|
|
8
9
|
export * from './MultiSelectModel';
|
|
9
10
|
|
|
10
|
-
export * from './
|
|
11
|
+
export * from './PromptModal';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
export interface IValueModel<TValue> {
|
|
3
|
+
value: TValue;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export interface ILabel<T> {
|
|
7
|
+
readonly label: T;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface IResetableModel {
|
|
11
|
+
readonly reset: () => void;
|
|
12
|
+
readonly isDefault?: boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface ICountableModel {
|
|
16
|
+
readonly count: number;
|
|
17
|
+
readonly selectedCount?: number;
|
|
18
|
+
readonly isEmpty: boolean;
|
|
19
|
+
}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { Getter } from '../types';
|
|
2
|
-
import { IValueModel } from './
|
|
3
|
-
|
|
4
|
-
export interface ILabel<T> {
|
|
5
|
-
readonly label: T;
|
|
6
|
-
}
|
|
2
|
+
import { ILabel, IValueModel } from './types';
|
|
7
3
|
|
|
8
4
|
export function withLabel<T, TModel extends IValueModel<T>, TLabel = string>(model: TModel, label: Getter<TLabel>) {
|
|
9
5
|
const _label = label;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PromptModalViewModel.d.ts","sourceRoot":"","sources":["../../src/viewModels/PromptModalViewModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,oBAAY,eAAe,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,gBAAgB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IACrE,SAAgB,QAAQ,YAAmB;IAG3C,OAAO,CAAC,cAAc,CAAW;;IAMjC,IAAI,aAAa,MAAkC;IAG5C,SAAS,WAAY,CAAC,UAG3B;IAGK,UAAU,aAGf;IAEF,SAAS,CAAC,SAAS,OAAc,MAAM,QAAQ,IAAI,CAAC,GAAG,IAAI,2DAWzD;CACL;AAED,oBAAY,iBAAiB,GAAG,eAAe,GAAG;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,gBAAgB,CAAC,iBAAiB,CAAC;IACzE,IAAI,YAAY,WAA8C;IAE9D,IAAI,WAAW,WAA6C;IAE5D,SAAS,sBAA6F;IACtG,QAAQ,sBAA6F;CACxG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PromptModalViewModel.js","sourceRoot":"","sources":["../../src/viewModels/PromptModalViewModel.ts"],"names":[],"mappings":";;;;AAAA,+BAA0D;AAC1D,2CAAwC;AAOxC,MAAa,gBAAgB;IAMzB;QALgB,aAAQ,GAAG,IAAI,qBAAS,EAAE,CAAC;QAGnC,mBAAc,GAAM,IAAI,CAAC;QAS1B,cAAS,GAAG,CAAC,MAAS,EAAE,EAAE;YAC7B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC;QAGK,eAAU,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC;QAEQ,cAAS,GAAG,KAAK,EAAE,EAA8B,EAAE,KAAK,GAAG,IAAI,EAAE,WAAW,GAAG,KAAK,EAAE,EAAE;YAC9F,IAAI,EAAE,EAAE;gBACJ,MAAM,OAAO,GAAG,EAAE,EAAE,CAAC;gBACrB,IAAI,WAAW,EAAE;oBACb,MAAM,OAAO,CAAC;iBACjB;aACJ;YAED,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,UAAU,EAAE,CAAC;aACrB;QACL,CAAC,CAAC;QA5BE,qBAAc,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,aAAa,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;CA0BtD;AAhCG;IADC,iBAAU,CAAC,GAAG;;wDACkB;AASjC;IADC,aAAM;;mDAIL;AAGF;IADC,aAAM;;oDAIL;AAtBN,4CAoCC;AAaD,MAAa,oBAAqB,SAAQ,gBAAmC;IAA7E;;QAKI,cAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACtG,aAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACzG,CAAC;IANG,IAAI,YAAY,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IAE9D,IAAI,WAAW,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;CAI/D;AAPD,oDAOC"}
|