@coolon/angular-ui-powerups 16.1.0-aplpha.120 → 16.1.0-aplpha.122
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/esm2022/lib/animations/slide-animations.mjs +14 -14
- package/esm2022/lib/components/disposable-component.mjs +5 -2
- package/esm2022/lib/components/forms/number-input/number-input.component.mjs +41 -5
- package/fesm2022/coolon-angular-ui-powerups.mjs +57 -18
- package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
- package/lib/components/disposable-component.d.ts +1 -0
- package/lib/components/forms/number-input/number-input.component.d.ts +10 -2
- package/package.json +2 -2
|
@@ -6,25 +6,12 @@ const slideDownOnEnterDef = style({
|
|
|
6
6
|
paddingTop: '0',
|
|
7
7
|
paddingBottom: '0'
|
|
8
8
|
});
|
|
9
|
-
// TODO: params aren't getting customised in the view. Need to figure out the correct approach.
|
|
10
|
-
export const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [
|
|
11
|
-
transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
12
|
-
transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
13
|
-
]);
|
|
14
|
-
export const slideDownWhenOpenAnimation = trigger('slideDownWhenOpen', [
|
|
15
|
-
transition('closed => open', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
16
|
-
transition('open => closed', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
17
|
-
]);
|
|
18
9
|
const slideLeftOnEnterDef = style({
|
|
19
10
|
opacity: 0,
|
|
20
11
|
'width': '0',
|
|
21
12
|
paddingLeft: '0',
|
|
22
13
|
paddingRight: '0'
|
|
23
14
|
});
|
|
24
|
-
export const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [
|
|
25
|
-
transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
26
|
-
transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })
|
|
27
|
-
]);
|
|
28
15
|
const ZERO_WIDTH = {
|
|
29
16
|
opacity: 0,
|
|
30
17
|
width: '0',
|
|
@@ -37,6 +24,19 @@ const ZERO_HEIGHT = {
|
|
|
37
24
|
paddingTop: '0',
|
|
38
25
|
paddingBottom: '0',
|
|
39
26
|
};
|
|
27
|
+
// TODO: params aren't getting customised in the view. Need to figure out the correct approach.
|
|
28
|
+
export const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [
|
|
29
|
+
transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
30
|
+
transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
31
|
+
]);
|
|
32
|
+
export const slideDownWhenOpenAnimation = trigger('slideDownWhenOpen', [
|
|
33
|
+
transition('closed => open', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
34
|
+
transition('open => closed', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
35
|
+
]);
|
|
36
|
+
export const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [
|
|
37
|
+
transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
38
|
+
transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })
|
|
39
|
+
]);
|
|
40
40
|
export const slideDownAndRightOnEnterAnimation = trigger('slideDownAndRightOnEnter', [
|
|
41
41
|
transition(':enter', [
|
|
42
42
|
style({ overflow: "hidden", whiteSpace: "nowrap", ...ZERO_WIDTH, ...ZERO_HEIGHT }),
|
|
@@ -53,4 +53,4 @@ export const slideDownAndRightOnEnterAnimation = trigger('slideDownAndRightOnEnt
|
|
|
53
53
|
])
|
|
54
54
|
], { params: { duration: '100ms' } })
|
|
55
55
|
]);
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGUtYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2FuaW1hdGlvbnMvc2xpZGUtYW5pbWF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRS9FLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE9BQU8sRUFBRSxDQUFDO0lBQ1YsUUFBUSxFQUFFLEdBQUc7SUFDYixZQUFZLEVBQUUsR0FBRztJQUNqQixVQUFVLEVBQUUsR0FBRztJQUNmLGFBQWEsRUFBRSxHQUFHO0NBQ25CLENBQUMsQ0FBQztBQUVILE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE9BQU8sRUFBRSxDQUFDO0lBQ1YsT0FBTyxFQUFFLEdBQUc7SUFDWixXQUFXLEVBQUUsR0FBRztJQUNoQixZQUFZLEVBQUUsR0FBRztDQUNsQixDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsR0FBRztJQUNqQixPQUFPLEVBQUUsQ0FBQztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsV0FBVyxFQUFFLEdBQUc7SUFDaEIsWUFBWSxFQUFFLEdBQUc7Q0FDbEIsQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLE9BQU8sRUFBRSxDQUFDO0lBQ1YsTUFBTSxFQUFFLEdBQUc7SUFDWCxVQUFVLEVBQUUsR0FBRztJQUNmLGFBQWEsRUFBRSxHQUFHO0NBQ25CLENBQUM7QUFHRixnR0FBZ0c7QUFDaEcsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFO0lBQ25FLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ3ZHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0NBQ3hHLENBQUMsQ0FBQztBQUdILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtJQUNyRSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQy9HLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7Q0FDaEgsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixFQUFFO0lBQ3JFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ3ZHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0NBQ3hHLENBQUMsQ0FBQztBQUdILE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLE9BQU8sQ0FBQywwQkFBMEIsRUFBRTtJQUNuRixVQUFVLENBQUMsUUFBUSxFQUFFO1FBQ25CLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLFVBQVUsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ2xGLE9BQU8sQ0FBQyxjQUFjLENBQUM7S0FDeEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ3JDLFVBQVUsQ0FBQyxRQUFRLEVBQ2pCO1FBQ0UsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDbkQsS0FBSyxDQUFDO1lBQ0osT0FBTyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDM0MscUhBQXFIO1lBQ3JILHFIQUFxSDtZQUNySCxzR0FBc0c7WUFDdEcsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDcEMsQ0FBQztLQUNILEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztDQUN4QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FuaW1hdGUsIGdyb3VwLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmNvbnN0IHNsaWRlRG93bk9uRW50ZXJEZWYgPSBzdHlsZSh7XG4gIG9wYWNpdHk6IDAsXG4gICdoZWlnaHQnOiAnMCcsXG4gICdtYXgtaGVpZ2h0JzogJzAnLFxuICBwYWRkaW5nVG9wOiAnMCcsXG4gIHBhZGRpbmdCb3R0b206ICcwJ1xufSk7XG5cbmNvbnN0IHNsaWRlTGVmdE9uRW50ZXJEZWYgPSBzdHlsZSh7XG4gIG9wYWNpdHk6IDAsXG4gICd3aWR0aCc6ICcwJyxcbiAgcGFkZGluZ0xlZnQ6ICcwJyxcbiAgcGFkZGluZ1JpZ2h0OiAnMCdcbn0pO1xuXG5jb25zdCBaRVJPX1dJRFRIID0ge1xuICBvcGFjaXR5OiAwLFxuICB3aWR0aDogJzAnLFxuICBwYWRkaW5nTGVmdDogJzAnLFxuICBwYWRkaW5nUmlnaHQ6ICcwJyxcbn07XG5cbmNvbnN0IFpFUk9fSEVJR0hUID0ge1xuICBvcGFjaXR5OiAwLFxuICBoZWlnaHQ6ICcwJyxcbiAgcGFkZGluZ1RvcDogJzAnLFxuICBwYWRkaW5nQm90dG9tOiAnMCcsXG59O1xuXG5cbi8vIFRPRE86IHBhcmFtcyBhcmVuJ3QgZ2V0dGluZyBjdXN0b21pc2VkIGluIHRoZSB2aWV3LiAgTmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IGFwcHJvYWNoLlxuZXhwb3J0IGNvbnN0IHNsaWRlRG93bk9uRW50ZXJBbmltYXRpb24gPSB0cmlnZ2VyKCdzbGlkZURvd25PbkVudGVyJywgW1xuICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbc2xpZGVEb3duT25FbnRlckRlZiwgYW5pbWF0ZSgne3tkdXJhdGlvbn19JyldLCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzEwMG1zJyB9IH0pLFxuICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbYW5pbWF0ZSgne3tkdXJhdGlvbn19Jywgc2xpZGVEb3duT25FbnRlckRlZildLCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzEwMG1zJyB9IH0pXG5dKTtcblxuXG5leHBvcnQgY29uc3Qgc2xpZGVEb3duV2hlbk9wZW5BbmltYXRpb24gPSB0cmlnZ2VyKCdzbGlkZURvd25XaGVuT3BlbicsIFtcbiAgdHJhbnNpdGlvbignY2xvc2VkID0+IG9wZW4nLCBbc2xpZGVEb3duT25FbnRlckRlZiwgYW5pbWF0ZSgne3tkdXJhdGlvbn19JyldLCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzEwMG1zJyB9IH0pLFxuICB0cmFuc2l0aW9uKCdvcGVuID0+IGNsb3NlZCcsIFthbmltYXRlKCd7e2R1cmF0aW9ufX0nLCBzbGlkZURvd25PbkVudGVyRGVmKV0sIHsgcGFyYW1zOiB7IGR1cmF0aW9uOiAnMTAwbXMnIH0gfSlcbl0pO1xuXG5leHBvcnQgY29uc3Qgc2xpZGVSaWdodE9uRW50ZXJBbmltYXRpb24gPSB0cmlnZ2VyKCdzbGlkZVJpZ2h0T25FbnRlcicsIFtcbiAgdHJhbnNpdGlvbignOmVudGVyJywgW3NsaWRlTGVmdE9uRW50ZXJEZWYsIGFuaW1hdGUoJ3t7ZHVyYXRpb259fScpXSwgeyBwYXJhbXM6IHsgZHVyYXRpb246ICcxMDBtcycgfSB9KSxcbiAgdHJhbnNpdGlvbignOmxlYXZlJywgW2FuaW1hdGUoJ3t7ZHVyYXRpb259fScsIHNsaWRlTGVmdE9uRW50ZXJEZWYpXSwgeyBwYXJhbXM6IHsgZHVyYXRpb246ICcxMDBtcycgfSB9KVxuXSk7XG5cblxuZXhwb3J0IGNvbnN0IHNsaWRlRG93bkFuZFJpZ2h0T25FbnRlckFuaW1hdGlvbiA9IHRyaWdnZXIoJ3NsaWRlRG93bkFuZFJpZ2h0T25FbnRlcicsIFtcbiAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgIHN0eWxlKHsgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsIHdoaXRlU3BhY2U6IFwibm93cmFwXCIsIC4uLlpFUk9fV0lEVEgsIC4uLlpFUk9fSEVJR0hUIH0pLFxuICAgIGFuaW1hdGUoJ3t7ZHVyYXRpb259fScpXG4gIF0sIHsgcGFyYW1zOiB7IGR1cmF0aW9uOiAnMTAwbXMnIH0gfSksXG4gIHRyYW5zaXRpb24oJzpsZWF2ZScsXG4gICAgW1xuICAgICAgc3R5bGUoeyBvdmVyZmxvdzogXCJoaWRkZW5cIiwgd2hpdGVTcGFjZTogXCJub3dyYXBcIiB9KSxcbiAgICAgIGdyb3VwKFtcbiAgICAgICAgYW5pbWF0ZSgne3tkdXJhdGlvbn19Jywgc3R5bGUoWkVST19IRUlHSFQpKSxcbiAgICAgICAgLy8gSGFjazogMTAwbXMgaXMgdG9vIHF1aWNrIGFzIGl0IGFuaW1hdGVzIGZyb20gKiAtIDAgYXMgd2Ugb25seSBzZWUgaXQgYW5pbWF0ZSB0aGUgd2lkdGggaXMgZ3JlYXRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICAgICAgIC8vIE5vdCBzdXJlIGhvdyB0byBhbmltYXRlIGZyb20gKiB0byBuYXR1cmFsIG5ldyB3aWR0aCBvZiBwYXJlbnQuICBUaGlzIGhhY2sgd29uJ3Qgd29yayBmb3IgdGV4dCB0aGF0J3MganVzdCBhIGxpdHRsZVxuICAgICAgICAvLyBiaXQgd2lkZXIgdGhhbiB0aGUgcGFyZW50IGFzIGl0J2xsIGZhbGwgd2l0aGluIHRoZSBwYXJlbnQgYm91bmRzIHZlcnkgZWFybHkgaW4gdGhlIGFuaW1hdGlvbiBjeWNsZS5cbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMnLCBzdHlsZShaRVJPX1dJRFRIKSksXG4gICAgICBdKVxuICAgIF0sIHsgcGFyYW1zOiB7IGR1cmF0aW9uOiAnMTAwbXMnIH0gfSlcbl0pO1xuIl19
|
|
@@ -47,7 +47,10 @@ export class DisposableComponent extends GarbageCollector {
|
|
|
47
47
|
*/
|
|
48
48
|
viewStateDependsOn(...models) {
|
|
49
49
|
const { when } = Dsl.disposeWith(this);
|
|
50
|
-
when.anyOf(...models).changes(() => this.
|
|
50
|
+
when.anyOf(...models).changes(() => this.markForCheck());
|
|
51
|
+
}
|
|
52
|
+
markForCheck() {
|
|
53
|
+
this.cdr.markForCheck();
|
|
51
54
|
}
|
|
52
55
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DisposableComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
53
56
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: DisposableComponent, usesInheritance: true, ngImport: i0 });
|
|
@@ -55,4 +58,4 @@ export class DisposableComponent extends GarbageCollector {
|
|
|
55
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DisposableComponent, decorators: [{
|
|
56
59
|
type: Directive
|
|
57
60
|
}], ctorParameters: function () { return []; } });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcG9zYWJsZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFrRCxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUMsR0FBRyxFQUFFLGdCQUFnQixFQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFNBQVMsQ0FBQzs7QUFHOUIsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGdCQUFnQjtJQUU5QyxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRWxDLGdEQUFnRDtJQUNoRCxvQ0FBb0M7SUFDcEMsc0NBQXNDO0lBQ3RDLGNBQWMsR0FBbUIsRUFBRSxDQUFDO0lBQ3BDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFRixHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JDLGdCQUFnQixHQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsMkJBQTJCLEVBQUU7UUFDOUUsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDLENBQUE7SUFFRjtRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxrREFBa0Q7WUFDN0UsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1NBQ3JFO0lBQ0gsQ0FBQztJQUVTLE1BQU0sQ0FBQyxRQUFvQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsUUFBUSxFQUFFLENBQUM7U0FDWjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRVMsTUFBTSxDQUFJLEtBQXVCLEVBQUUsT0FBdUI7UUFDbEUsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDTyxrQkFBa0IsQ0FBQyxHQUFHLE1BQXVCO1FBQ3JELE1BQU0sRUFBQyxJQUFJLEVBQUMsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUE7SUFDMUQsQ0FBQztJQUVTLFlBQVk7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO3VHQXpEVSxtQkFBbUI7MkZBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbmplY3RPcHRpb25zLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUHJvdmlkZXJUb2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RzbCwgR2FyYmFnZUNvbGxlY3RvciwgSGFzVmFsdWV9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7SGlnaGxpZ2h0VGV4dE1vZGVsRGlyZWN0aXZlfSBmcm9tIFwiLi4vZGlyZWN0aXZlcy9oaWdobGlnaHQtdGV4dC1tb2RlbC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7VHJhY2t9IGZyb20gXCIuL3RyYWNrXCI7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIERpc3Bvc2FibGVDb21wb25lbnQgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHJlYWRvbmx5IHRyYWNrQnlJZCA9IFRyYWNrLmJ5SWQoKTtcblxuICAvLyAjX2xvYWRlZCQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8Ym9vbGVhbj4oKTtcbiAgLy8gI2FzeW5jTG9hZGFibGVzOiBMb2FkYWJsZVtdID0gW107XG4gIC8vICNhd2FpdGVkTG9hZGFibGVzOiBMb2FkYWJsZVtdID0gW107XG4gICNpbml0Q2FsbGJhY2tzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuICAjaW5pdGlhbGlzZWQgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2RyID0gdGhpcy5pbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGlnaGxpZ2h0Q29udGV4dD8gPSB0aGlzLmluamVjdChIaWdobGlnaHRUZXh0TW9kZWxEaXJlY3RpdmUsIHtcbiAgICBvcHRpb25hbDogdHJ1ZVxuICB9KVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0Q29udGV4dCkgeyAvLyB0aGUgY29tcG9uZW50IG1pZ2h0IGJlIHJlbmRlcmVkIG91dHNpZGUgYSB0YWJsZVxuICAgICAgdGhpcy52aWV3U3RhdGVEZXBlbmRzT24odGhpcy5oaWdobGlnaHRDb250ZXh0LmF1cEhpZ2hsaWdodFRleHRNb2RlbClcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Jbml0KGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gICAgaWYgKHRoaXMuI2luaXRpYWxpc2VkKSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNpbml0Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2luaXRDYWxsYmFja3MuZm9yRWFjaChpdCA9PiBpdCgpKTtcbiAgICB0aGlzLiNpbml0aWFsaXNlZCA9IHRydWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbmplY3Q8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG9wdGlvbnM/OiBJbmplY3RPcHRpb25zKTogVCB7XG4gICAgcmV0dXJuIGluamVjdCh0b2tlbiwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogTW9uaXRvcnMgdGhlIHNwZWNpZmllZCBtb2RlbHMgZm9yIGFueSBjaGFuZ2UgYW5kIHRyaWdnZXJzIGFuZCBhbmd1bGFyIGNoYW5nZSBkZXRlY3QgY3ljbGUuICBUaGlzIGlzIGludGVuZGVkIGZvciB1c2VcbiAgICogd2hlbiB0aGUgY29tcG9uZW50IHVzZXMgdGhlIE9OX1BVU0ggY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneSBvciB3aGVuIGl0IGlzIGNvbnRhaW5lZCB3aXRoaW4gYW5vdGhlciBjb21wb25lbnQgdGhhdFxuICAgKiBkb2VzIChlLmcuIGF1cC10YWJsZSwgYXVwLXRyZWUtdGFibGUpXG4gICAqIEBwYXJhbSBtb2RlbHNcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHZpZXdTdGF0ZURlcGVuZHNPbiguLi5tb2RlbHM6IEhhc1ZhbHVlPGFueT5bXSkge1xuICAgIGNvbnN0IHt3aGVufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB3aGVuLmFueU9mKC4uLm1vZGVscykuY2hhbmdlcygoKSA9PiB0aGlzLm1hcmtGb3JDaGVjaygpKVxuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIl19
|
|
@@ -23,21 +23,45 @@ export class NumberInputComponent extends AbstractValueInputComponent {
|
|
|
23
23
|
#max_accessor_storage = Number.MAX_SAFE_INTEGER;
|
|
24
24
|
get max() { return this.#max_accessor_storage; }
|
|
25
25
|
set max(value) { this.#max_accessor_storage = value; }
|
|
26
|
+
#significantDigits$_accessor_storage = proxify((ValueModel));
|
|
27
|
+
get significantDigits$() { return this.#significantDigits$_accessor_storage; }
|
|
28
|
+
set significantDigits$(value) { this.#significantDigits$_accessor_storage = value; }
|
|
29
|
+
#significantDigits_accessor_storage;
|
|
30
|
+
get significantDigits() { return this.#significantDigits_accessor_storage; }
|
|
31
|
+
set significantDigits(value) { this.#significantDigits_accessor_storage = value; }
|
|
26
32
|
incrementCommand;
|
|
27
33
|
decrementCommand;
|
|
34
|
+
displayValue$;
|
|
35
|
+
step$;
|
|
28
36
|
constructor() {
|
|
29
37
|
super();
|
|
30
38
|
const { chain } = Dsl.disposeWith(this);
|
|
39
|
+
this.step$ = chain(this.significantDigits$).map(v => 10 ** (-v)).otherwise(1);
|
|
40
|
+
this.displayValue$ = chain(this.value$).map(v => this.clampSignificantDigits(v), {
|
|
41
|
+
dependsOn: this.significantDigits$
|
|
42
|
+
});
|
|
31
43
|
const normalisedValue$ = chain(this.value$).otherwise(0);
|
|
32
44
|
this.incrementCommand = Command.create(() => {
|
|
33
|
-
this.value$.value =
|
|
45
|
+
this.value$.value = this.increment(this.value$.value);
|
|
34
46
|
}).enableWhile(chain.numericValue(normalisedValue$).isLessThan(this.max$).and(this.enabled$));
|
|
35
47
|
this.decrementCommand = Command.create(() => {
|
|
36
|
-
this.value$.value =
|
|
48
|
+
this.value$.value = this.decrement(this.value$.value);
|
|
37
49
|
}).enableWhile(chain.numericValue(normalisedValue$).isGreaterThan(this.min$).and(this.enabled$));
|
|
38
50
|
}
|
|
51
|
+
increment(value) {
|
|
52
|
+
return this.clampSignificantDigits((value ?? 0) + this.step$.value);
|
|
53
|
+
}
|
|
54
|
+
decrement(value) {
|
|
55
|
+
return this.clampSignificantDigits((value ?? 0) - this.step$.value);
|
|
56
|
+
}
|
|
57
|
+
clampSignificantDigits(value) {
|
|
58
|
+
return Number(value.toFixed(this.significantDigits));
|
|
59
|
+
}
|
|
60
|
+
onValueChange(value) {
|
|
61
|
+
this.value$.value = value;
|
|
62
|
+
}
|
|
39
63
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: NumberInputComponent, selector: "aup-number-input", inputs: { autocomplete: "autocomplete", min$: "min$", min: "min", max$: "max$", max: "max" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [
|
|
64
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: NumberInputComponent, selector: "aup-number-input", inputs: { autocomplete: "autocomplete", min$: "min$", min: "min", max$: "max$", max: "max", significantDigits$: "significantDigits$", significantDigits: "significantDigits" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [ngModel]=\"displayValue$.value\"\n (ngModelChange)=\"onValueChange($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [min]=\"min\"\n [max]=\"max\"\n [size]=\"4\"\n [step]=\"step$.value\"\n >\n <section matIconSuffix>\n <button [pectinCommand]=\"decrementCommand\">-</button>\n <button [pectinCommand]=\"incrementCommand\">+</button>\n </section>\n <mat-hint *ngIf=\"hint && !dense\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</mat-form-field>\n", styles: [":host{--width: 56px;--height: 42px;--margin-right: 1px;--border-radius: 3px;--border-color:#d5d5d5;--button-background: #fafafa;--button-background-hover: #efefef}:host input[type=number]{appearance:textfield}:host input[type=number]::-webkit-inner-spin-button,:host input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}:host:focus-within:has(section:not(:focus-within)){--height: 40px;--margin-right: 2px;--border-radius: 2px}:host section[maticonsuffix]{display:flex;flex-direction:row;align-items:stretch;gap:1px;background-color:var(--border-color);border-left:1px solid var(--border-color);width:var(--width);min-width:var(--width);height:var(--height);min-height:var(--height);margin-right:var(--margin-right);border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius);overflow:hidden}:host button{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;font-weight:600;border-style:none;background-color:var(--button-background)}:host button:hover{background-color:var(--button-background-hover)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: i6.FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
|
|
41
65
|
}
|
|
42
66
|
__decorate([
|
|
43
67
|
Proxify(),
|
|
@@ -55,9 +79,17 @@ __decorate([
|
|
|
55
79
|
StoreInValueModel(),
|
|
56
80
|
__metadata("design:type", Object)
|
|
57
81
|
], NumberInputComponent.prototype, "max", null);
|
|
82
|
+
__decorate([
|
|
83
|
+
Proxify(),
|
|
84
|
+
__metadata("design:type", ValueModel)
|
|
85
|
+
], NumberInputComponent.prototype, "significantDigits$", null);
|
|
86
|
+
__decorate([
|
|
87
|
+
StoreInValueModel(),
|
|
88
|
+
__metadata("design:type", Number)
|
|
89
|
+
], NumberInputComponent.prototype, "significantDigits", null);
|
|
58
90
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NumberInputComponent, decorators: [{
|
|
59
91
|
type: Component,
|
|
60
|
-
args: [{ selector: 'aup-number-input', template: "<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [
|
|
92
|
+
args: [{ selector: 'aup-number-input', template: "<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [ngModel]=\"displayValue$.value\"\n (ngModelChange)=\"onValueChange($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [min]=\"min\"\n [max]=\"max\"\n [size]=\"4\"\n [step]=\"step$.value\"\n >\n <section matIconSuffix>\n <button [pectinCommand]=\"decrementCommand\">-</button>\n <button [pectinCommand]=\"incrementCommand\">+</button>\n </section>\n <mat-hint *ngIf=\"hint && !dense\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</mat-form-field>\n", styles: [":host{--width: 56px;--height: 42px;--margin-right: 1px;--border-radius: 3px;--border-color:#d5d5d5;--button-background: #fafafa;--button-background-hover: #efefef}:host input[type=number]{appearance:textfield}:host input[type=number]::-webkit-inner-spin-button,:host input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}:host:focus-within:has(section:not(:focus-within)){--height: 40px;--margin-right: 2px;--border-radius: 2px}:host section[maticonsuffix]{display:flex;flex-direction:row;align-items:stretch;gap:1px;background-color:var(--border-color);border-left:1px solid var(--border-color);width:var(--width);min-width:var(--width);height:var(--height);min-height:var(--height);margin-right:var(--margin-right);border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius);overflow:hidden}:host button{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;font-weight:600;border-style:none;background-color:var(--button-background)}:host button:hover{background-color:var(--button-background-hover)}\n"] }]
|
|
61
93
|
}], ctorParameters: function () { return []; }, propDecorators: { autocomplete: [{
|
|
62
94
|
type: Input
|
|
63
95
|
}], min$: [{
|
|
@@ -68,5 +100,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
68
100
|
type: Input
|
|
69
101
|
}], max: [{
|
|
70
102
|
type: Input
|
|
103
|
+
}], significantDigits$: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], significantDigits: [{
|
|
106
|
+
type: Input
|
|
71
107
|
}] } });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQVMsVUFBVSxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JILE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7OztBQVE5RSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsMkJBQW1DO0lBRWxFLFlBQVksQ0FBUztJQUdyQix5QkFBMkIsT0FBTyxDQUFDLENBQUEsVUFBa0IsQ0FBQSxDQUFDLENBQUM7SUFBdkQsSUFBQSxJQUFJLDBDQUFtRDtJQUF2RCxJQUFBLElBQUksZ0RBQW1EO0lBR3ZELHdCQUFNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUE5QixJQUFBLEdBQUcseUNBQTJCO0lBQTlCLElBQUEsR0FBRywrQ0FBMkI7SUFHOUIseUJBQTJCLE9BQU8sQ0FBQyxDQUFBLFVBQWtCLENBQUEsQ0FBQyxDQUFDO0lBQXZELElBQUEsSUFBSSwwQ0FBbUQ7SUFBdkQsSUFBQSxJQUFJLGdEQUFtRDtJQUd2RCx3QkFBTSxNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFBOUIsSUFBQSxHQUFH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QixDQUFDO3VHQTlEVSxvQkFBb0I7MkZBQXBCLG9CQUFvQiwrUENWakMsaTlCQXlCQTs7QURWVztJQURDLE9BQU8sRUFBRTs4QkFDSixVQUFVO2dEQUF1QztBQUd2RDtJQURDLGlCQUFpQixFQUFFOzsrQ0FDVTtBQUc5QjtJQURDLE9BQU8sRUFBRTs4QkFDSixVQUFVO2dEQUF1QztBQUd2RDtJQURDLGlCQUFpQixFQUFFOzsrQ0FDVTtBQUc5QjtJQURDLE9BQU8sRUFBRTs4QkFDUyxVQUFVOzhEQUF1QztBQUdwRTtJQURDLGlCQUFpQixFQUFFOzs2REFDTTsyRkFwQnhCLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7MEVBTW5CLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csSUFBSTtzQkFEWixLQUFLO2dCQUlHLEdBQUc7c0JBRFgsS0FBSztnQkFJRyxJQUFJO3NCQURaLEtBQUs7Z0JBSUcsR0FBRztzQkFEWCxLQUFLO2dCQUlHLGtCQUFrQjtzQkFEMUIsS0FBSztnQkFJRyxpQkFBaUI7c0JBRHpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tYW5kLCBEc2wsIFByb3hpZnksIHByb3hpZnksIFN0b3JlSW5WYWx1ZU1vZGVsLCBUcmFjZSwgVmFsdWVNb2RlbCwgVmFsdWVNb2RlbENoYWlufSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7QWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9hYnN0cmFjdC12YWx1ZS1pbnB1dC5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1cC1udW1iZXItaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbnVtYmVyLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbnVtYmVyLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTnVtYmVySW5wdXRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdFZhbHVlSW5wdXRDb21wb25lbnQ8bnVtYmVyPiB7XG5cbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBtaW4kOiBWYWx1ZU1vZGVsPG51bWJlcj4gPSBwcm94aWZ5KFZhbHVlTW9kZWw8bnVtYmVyPik7XG5cbiAgQElucHV0KCkgQFN0b3JlSW5WYWx1ZU1vZGVsKClcbiAgYWNjZXNzb3IgbWluID0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVI7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBtYXgkOiBWYWx1ZU1vZGVsPG51bWJlcj4gPSBwcm94aWZ5KFZhbHVlTW9kZWw8bnVtYmVyPik7XG5cbiAgQElucHV0KCkgQFN0b3JlSW5WYWx1ZU1vZGVsKClcbiAgYWNjZXNzb3IgbWF4ID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBzaWduaWZpY2FudERpZ2l0cyQ6VmFsdWVNb2RlbDxudW1iZXI+ID0gcHJveGlmeShWYWx1ZU1vZGVsPG51bWJlcj4pO1xuXG4gIEBJbnB1dCgpIEBTdG9yZUluVmFsdWVNb2RlbCgpXG4gIGFjY2Vzc29yIHNpZ25pZmljYW50RGlnaXRzOiBudW1iZXI7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGluY3JlbWVudENvbW1hbmQ6IENvbW1hbmQ8dm9pZD47XG4gIHByb3RlY3RlZCByZWFkb25seSBkZWNyZW1lbnRDb21tYW5kOiBDb21tYW5kPHZvaWQ+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzcGxheVZhbHVlJDogVmFsdWVNb2RlbDxudW1iZXI+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RlcCQ6IFZhbHVlTW9kZWxDaGFpbjxudW1iZXI+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qge2NoYWlufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcblxuICAgIHRoaXMuc3RlcCQgPSBjaGFpbih0aGlzLnNpZ25pZmljYW50RGlnaXRzJCkubWFwKHYgPT4gMTAgKiogKC12KSkub3RoZXJ3aXNlKDEpXG5cbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSQgPSBjaGFpbih0aGlzLnZhbHVlJCkubWFwKHYgPT4gdGhpcy5jbGFtcFNpZ25pZmljYW50RGlnaXRzKHYpLCB7XG4gICAgICBkZXBlbmRzT246IHRoaXMuc2lnbmlmaWNhbnREaWdpdHMkXG4gICAgfSk7XG5cbiAgICBjb25zdCBub3JtYWxpc2VkVmFsdWUkID0gY2hhaW4odGhpcy52YWx1ZSQpLm90aGVyd2lzZSgwKTtcblxuICAgIHRoaXMuaW5jcmVtZW50Q29tbWFuZCA9IENvbW1hbmQuY3JlYXRlKCgpID0+IHtcbiAgICAgIHRoaXMudmFsdWUkLnZhbHVlID0gdGhpcy5pbmNyZW1lbnQodGhpcy52YWx1ZSQudmFsdWUpO1xuICAgIH0pLmVuYWJsZVdoaWxlKGNoYWluLm51bWVyaWNWYWx1ZShub3JtYWxpc2VkVmFsdWUkKS5pc0xlc3NUaGFuKHRoaXMubWF4JCkuYW5kKHRoaXMuZW5hYmxlZCQpKTtcblxuICAgIHRoaXMuZGVjcmVtZW50Q29tbWFuZCA9IENvbW1hbmQuY3JlYXRlKCgpID0+IHtcbiAgICAgIHRoaXMudmFsdWUkLnZhbHVlID0gdGhpcy5kZWNyZW1lbnQodGhpcy52YWx1ZSQudmFsdWUpO1xuICAgIH0pLmVuYWJsZVdoaWxlKGNoYWluLm51bWVyaWNWYWx1ZShub3JtYWxpc2VkVmFsdWUkKS5pc0dyZWF0ZXJUaGFuKHRoaXMubWluJCkuYW5kKHRoaXMuZW5hYmxlZCQpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5jcmVtZW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5jbGFtcFNpZ25pZmljYW50RGlnaXRzKCh2YWx1ZSA/PyAwKSArIHRoaXMuc3RlcCQudmFsdWUpXG4gIH1cblxuICBwcml2YXRlIGRlY3JlbWVudCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xhbXBTaWduaWZpY2FudERpZ2l0cygodmFsdWUgPz8gMCkgLSB0aGlzLnN0ZXAkLnZhbHVlKVxuICB9XG5cbiAgcHJpdmF0ZSBjbGFtcFNpZ25pZmljYW50RGlnaXRzKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBOdW1iZXIodmFsdWUudG9GaXhlZCh0aGlzLnNpZ25pZmljYW50RGlnaXRzKSk7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnZhbHVlJC52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cImFsd2F5c1wiPlxuICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxcIj57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICA8aW5wdXQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIlxuICAgICAgICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICAgICBbbmdNb2RlbF09XCJkaXNwbGF5VmFsdWUkLnZhbHVlXCJcbiAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICBbZGlzYWJsZWRdPVwiIWVuYWJsZWQkLnZhbHVlXCJcbiAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm5vdGlmeUVudGVyS2V5KClcIlxuICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cIm5vdGlmeUVzY2FwZUtleSgpXCJcbiAgICAgICAgIFtwZWN0aW5Gb2N1c0JpbmRpbmddPVwiZm9jdXNDb250ZXh0XCJcbiAgICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvclN0YXRlTWF0Y2hlclwiXG4gICAgICAgICBbbWluXT1cIm1pblwiXG4gICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgICBbc2l6ZV09XCI0XCJcbiAgICAgICAgIFtzdGVwXT1cInN0ZXAkLnZhbHVlXCJcbiAgPlxuICA8c2VjdGlvbiBtYXRJY29uU3VmZml4PlxuICAgIDxidXR0b24gW3BlY3RpbkNvbW1hbmRdPVwiZGVjcmVtZW50Q29tbWFuZFwiPi08L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtwZWN0aW5Db21tYW5kXT1cImluY3JlbWVudENvbW1hbmRcIj4rPC9idXR0b24+XG4gIDwvc2VjdGlvbj5cbiAgPG1hdC1oaW50ICpuZ0lmPVwiaGludCAmJiAhZGVuc2VcIj57eyBoaW50IH19PC9tYXQtaGludD5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImhhc0Vycm9yc1wiPnt7IGZpcnN0RXJyb3IgfX08L21hdC1lcnJvcj5cbjwvbWF0LWZvcm0tZmllbGQ+XG4iXX0=
|
|
@@ -280,7 +280,10 @@ class DisposableComponent extends GarbageCollector {
|
|
|
280
280
|
*/
|
|
281
281
|
viewStateDependsOn(...models) {
|
|
282
282
|
const { when } = Dsl.disposeWith(this);
|
|
283
|
-
when.anyOf(...models).changes(() => this.
|
|
283
|
+
when.anyOf(...models).changes(() => this.markForCheck());
|
|
284
|
+
}
|
|
285
|
+
markForCheck() {
|
|
286
|
+
this.cdr.markForCheck();
|
|
284
287
|
}
|
|
285
288
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DisposableComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
286
289
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: DisposableComponent, usesInheritance: true, ngImport: i0 });
|
|
@@ -2240,21 +2243,45 @@ class NumberInputComponent extends AbstractValueInputComponent {
|
|
|
2240
2243
|
#max_accessor_storage = Number.MAX_SAFE_INTEGER;
|
|
2241
2244
|
get max() { return this.#max_accessor_storage; }
|
|
2242
2245
|
set max(value) { this.#max_accessor_storage = value; }
|
|
2246
|
+
#significantDigits$_accessor_storage = proxify((ValueModel));
|
|
2247
|
+
get significantDigits$() { return this.#significantDigits$_accessor_storage; }
|
|
2248
|
+
set significantDigits$(value) { this.#significantDigits$_accessor_storage = value; }
|
|
2249
|
+
#significantDigits_accessor_storage;
|
|
2250
|
+
get significantDigits() { return this.#significantDigits_accessor_storage; }
|
|
2251
|
+
set significantDigits(value) { this.#significantDigits_accessor_storage = value; }
|
|
2243
2252
|
incrementCommand;
|
|
2244
2253
|
decrementCommand;
|
|
2254
|
+
displayValue$;
|
|
2255
|
+
step$;
|
|
2245
2256
|
constructor() {
|
|
2246
2257
|
super();
|
|
2247
2258
|
const { chain } = Dsl.disposeWith(this);
|
|
2259
|
+
this.step$ = chain(this.significantDigits$).map(v => 10 ** (-v)).otherwise(1);
|
|
2260
|
+
this.displayValue$ = chain(this.value$).map(v => this.clampSignificantDigits(v), {
|
|
2261
|
+
dependsOn: this.significantDigits$
|
|
2262
|
+
});
|
|
2248
2263
|
const normalisedValue$ = chain(this.value$).otherwise(0);
|
|
2249
2264
|
this.incrementCommand = Command.create(() => {
|
|
2250
|
-
this.value$.value =
|
|
2265
|
+
this.value$.value = this.increment(this.value$.value);
|
|
2251
2266
|
}).enableWhile(chain.numericValue(normalisedValue$).isLessThan(this.max$).and(this.enabled$));
|
|
2252
2267
|
this.decrementCommand = Command.create(() => {
|
|
2253
|
-
this.value$.value =
|
|
2268
|
+
this.value$.value = this.decrement(this.value$.value);
|
|
2254
2269
|
}).enableWhile(chain.numericValue(normalisedValue$).isGreaterThan(this.min$).and(this.enabled$));
|
|
2255
2270
|
}
|
|
2271
|
+
increment(value) {
|
|
2272
|
+
return this.clampSignificantDigits((value ?? 0) + this.step$.value);
|
|
2273
|
+
}
|
|
2274
|
+
decrement(value) {
|
|
2275
|
+
return this.clampSignificantDigits((value ?? 0) - this.step$.value);
|
|
2276
|
+
}
|
|
2277
|
+
clampSignificantDigits(value) {
|
|
2278
|
+
return Number(value.toFixed(this.significantDigits));
|
|
2279
|
+
}
|
|
2280
|
+
onValueChange(value) {
|
|
2281
|
+
this.value$.value = value;
|
|
2282
|
+
}
|
|
2256
2283
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2257
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: NumberInputComponent, selector: "aup-number-input", inputs: { autocomplete: "autocomplete", min$: "min$", min: "min", max$: "max$", max: "max" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [
|
|
2284
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: NumberInputComponent, selector: "aup-number-input", inputs: { autocomplete: "autocomplete", min$: "min$", min: "min", max$: "max$", max: "max", significantDigits$: "significantDigits$", significantDigits: "significantDigits" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [ngModel]=\"displayValue$.value\"\n (ngModelChange)=\"onValueChange($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [min]=\"min\"\n [max]=\"max\"\n [size]=\"4\"\n [step]=\"step$.value\"\n >\n <section matIconSuffix>\n <button [pectinCommand]=\"decrementCommand\">-</button>\n <button [pectinCommand]=\"incrementCommand\">+</button>\n </section>\n <mat-hint *ngIf=\"hint && !dense\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</mat-form-field>\n", styles: [":host{--width: 56px;--height: 42px;--margin-right: 1px;--border-radius: 3px;--border-color:#d5d5d5;--button-background: #fafafa;--button-background-hover: #efefef}:host input[type=number]{appearance:textfield}:host input[type=number]::-webkit-inner-spin-button,:host input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}:host:focus-within:has(section:not(:focus-within)){--height: 40px;--margin-right: 2px;--border-radius: 2px}:host section[maticonsuffix]{display:flex;flex-direction:row;align-items:stretch;gap:1px;background-color:var(--border-color);border-left:1px solid var(--border-color);width:var(--width);min-width:var(--width);height:var(--height);min-height:var(--height);margin-right:var(--margin-right);border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius);overflow:hidden}:host button{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;font-weight:600;border-style:none;background-color:var(--button-background)}:host button:hover{background-color:var(--button-background-hover)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2$4.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
|
|
2258
2285
|
}
|
|
2259
2286
|
__decorate([
|
|
2260
2287
|
Proxify(),
|
|
@@ -2272,9 +2299,17 @@ __decorate([
|
|
|
2272
2299
|
StoreInValueModel(),
|
|
2273
2300
|
__metadata("design:type", Object)
|
|
2274
2301
|
], NumberInputComponent.prototype, "max", null);
|
|
2302
|
+
__decorate([
|
|
2303
|
+
Proxify(),
|
|
2304
|
+
__metadata("design:type", ValueModel)
|
|
2305
|
+
], NumberInputComponent.prototype, "significantDigits$", null);
|
|
2306
|
+
__decorate([
|
|
2307
|
+
StoreInValueModel(),
|
|
2308
|
+
__metadata("design:type", Number)
|
|
2309
|
+
], NumberInputComponent.prototype, "significantDigits", null);
|
|
2275
2310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NumberInputComponent, decorators: [{
|
|
2276
2311
|
type: Component,
|
|
2277
|
-
args: [{ selector: 'aup-number-input', template: "<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [
|
|
2312
|
+
args: [{ selector: 'aup-number-input', template: "<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [ngModel]=\"displayValue$.value\"\n (ngModelChange)=\"onValueChange($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [min]=\"min\"\n [max]=\"max\"\n [size]=\"4\"\n [step]=\"step$.value\"\n >\n <section matIconSuffix>\n <button [pectinCommand]=\"decrementCommand\">-</button>\n <button [pectinCommand]=\"incrementCommand\">+</button>\n </section>\n <mat-hint *ngIf=\"hint && !dense\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</mat-form-field>\n", styles: [":host{--width: 56px;--height: 42px;--margin-right: 1px;--border-radius: 3px;--border-color:#d5d5d5;--button-background: #fafafa;--button-background-hover: #efefef}:host input[type=number]{appearance:textfield}:host input[type=number]::-webkit-inner-spin-button,:host input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}:host:focus-within:has(section:not(:focus-within)){--height: 40px;--margin-right: 2px;--border-radius: 2px}:host section[maticonsuffix]{display:flex;flex-direction:row;align-items:stretch;gap:1px;background-color:var(--border-color);border-left:1px solid var(--border-color);width:var(--width);min-width:var(--width);height:var(--height);min-height:var(--height);margin-right:var(--margin-right);border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius);overflow:hidden}:host button{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;font-weight:600;border-style:none;background-color:var(--button-background)}:host button:hover{background-color:var(--button-background-hover)}\n"] }]
|
|
2278
2313
|
}], ctorParameters: function () { return []; }, propDecorators: { autocomplete: [{
|
|
2279
2314
|
type: Input
|
|
2280
2315
|
}], min$: [{
|
|
@@ -2285,6 +2320,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
2285
2320
|
type: Input
|
|
2286
2321
|
}], max: [{
|
|
2287
2322
|
type: Input
|
|
2323
|
+
}], significantDigits$: [{
|
|
2324
|
+
type: Input
|
|
2325
|
+
}], significantDigits: [{
|
|
2326
|
+
type: Input
|
|
2288
2327
|
}] } });
|
|
2289
2328
|
|
|
2290
2329
|
class PasswordInputComponent extends AbstractValueInputComponent {
|
|
@@ -10867,25 +10906,12 @@ const slideDownOnEnterDef = style({
|
|
|
10867
10906
|
paddingTop: '0',
|
|
10868
10907
|
paddingBottom: '0'
|
|
10869
10908
|
});
|
|
10870
|
-
// TODO: params aren't getting customised in the view. Need to figure out the correct approach.
|
|
10871
|
-
const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [
|
|
10872
|
-
transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
10873
|
-
transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
10874
|
-
]);
|
|
10875
|
-
const slideDownWhenOpenAnimation = trigger('slideDownWhenOpen', [
|
|
10876
|
-
transition('closed => open', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
10877
|
-
transition('open => closed', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
10878
|
-
]);
|
|
10879
10909
|
const slideLeftOnEnterDef = style({
|
|
10880
10910
|
opacity: 0,
|
|
10881
10911
|
'width': '0',
|
|
10882
10912
|
paddingLeft: '0',
|
|
10883
10913
|
paddingRight: '0'
|
|
10884
10914
|
});
|
|
10885
|
-
const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [
|
|
10886
|
-
transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
10887
|
-
transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })
|
|
10888
|
-
]);
|
|
10889
10915
|
const ZERO_WIDTH = {
|
|
10890
10916
|
opacity: 0,
|
|
10891
10917
|
width: '0',
|
|
@@ -10898,6 +10924,19 @@ const ZERO_HEIGHT = {
|
|
|
10898
10924
|
paddingTop: '0',
|
|
10899
10925
|
paddingBottom: '0',
|
|
10900
10926
|
};
|
|
10927
|
+
// TODO: params aren't getting customised in the view. Need to figure out the correct approach.
|
|
10928
|
+
const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [
|
|
10929
|
+
transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
10930
|
+
transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
10931
|
+
]);
|
|
10932
|
+
const slideDownWhenOpenAnimation = trigger('slideDownWhenOpen', [
|
|
10933
|
+
transition('closed => open', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
10934
|
+
transition('open => closed', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
10935
|
+
]);
|
|
10936
|
+
const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [
|
|
10937
|
+
transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
10938
|
+
transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })
|
|
10939
|
+
]);
|
|
10901
10940
|
const slideDownAndRightOnEnterAnimation = trigger('slideDownAndRightOnEnter', [
|
|
10902
10941
|
transition(':enter', [
|
|
10903
10942
|
style({ overflow: "hidden", whiteSpace: "nowrap", ...ZERO_WIDTH, ...ZERO_HEIGHT }),
|