@smartbit4all/ng-client 7.3.20 → 7.3.22
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/HTML-WIDGET.md +743 -710
- package/MIGRATION-7.0.md +2214 -2214
- package/README.md +206 -206
- package/WIDGETS.md +254 -254
- package/fesm2022/smartbit4all-ng-client.mjs +265 -210
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/package.json +6 -3
- package/smartbit4all-ng-client-7.3.22.tgz +0 -0
- package/src/styles/_ng-client-styles.scss +192 -0
- package/types/smartbit4all-ng-client.d.ts +18 -6
- package/smartbit4all-ng-client-7.3.20.tgz +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smartbit4all/ng-client",
|
|
3
|
-
"version": "7.3.
|
|
3
|
+
"version": "7.3.22",
|
|
4
4
|
"description": "Angular client library for the smartbit4all platform — a server-driven UI framework that renders views, pages, forms, grids, trees and dialogs from backend (ViewApi/PageApi) definitions. Provides reactive view-context state management, dynamic component layouts and OpenAPI-generated BFF clients.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"peerDependencies": {
|
|
@@ -27,9 +27,10 @@
|
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"tslib": "^2.3.0"
|
|
29
29
|
},
|
|
30
|
-
"module": "fesm2022/smartbit4all-ng-client.mjs",
|
|
31
|
-
"typings": "types/smartbit4all-ng-client.d.ts",
|
|
32
30
|
"exports": {
|
|
31
|
+
"./styles": {
|
|
32
|
+
"sass": "./src/styles/_ng-client-styles.scss"
|
|
33
|
+
},
|
|
33
34
|
"./package.json": {
|
|
34
35
|
"default": "./package.json"
|
|
35
36
|
},
|
|
@@ -38,5 +39,7 @@
|
|
|
38
39
|
"default": "./fesm2022/smartbit4all-ng-client.mjs"
|
|
39
40
|
}
|
|
40
41
|
},
|
|
42
|
+
"module": "fesm2022/smartbit4all-ng-client.mjs",
|
|
43
|
+
"typings": "types/smartbit4all-ng-client.d.ts",
|
|
41
44
|
"type": "module"
|
|
42
45
|
}
|
|
Binary file
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
@use 'sass:map';
|
|
2
|
+
|
|
3
|
+
$default-colors: (
|
|
4
|
+
primary: #4763ff,
|
|
5
|
+
secondary: #a6aabd60,
|
|
6
|
+
accent: #20b6a8,
|
|
7
|
+
warn: #d51d1d,
|
|
8
|
+
success: #16a34a,
|
|
9
|
+
accent-grey: #6b7280,
|
|
10
|
+
text: #132033,
|
|
11
|
+
text-inverted: #ffffff,
|
|
12
|
+
text-muted: #68778e,
|
|
13
|
+
) !default;
|
|
14
|
+
|
|
15
|
+
// Text color on the raised variant. A color missing from this map gets white.
|
|
16
|
+
$default-text-colors: (
|
|
17
|
+
primary: var(--text-inverted-color),
|
|
18
|
+
) !default;
|
|
19
|
+
|
|
20
|
+
$default-tokens: (
|
|
21
|
+
// Backgrounds
|
|
22
|
+
color-bg: #f6f8fb,
|
|
23
|
+
color-surface: #ffffff,
|
|
24
|
+
color-surface-alt: #f9fbff,
|
|
25
|
+
|
|
26
|
+
// Borders
|
|
27
|
+
color-border: #e4eaf2,
|
|
28
|
+
|
|
29
|
+
// Tree
|
|
30
|
+
tree-active-background: var(--accent-color),
|
|
31
|
+
|
|
32
|
+
// Semantic
|
|
33
|
+
color-danger: var(--warn-color),
|
|
34
|
+
color-teal: #20b6a8,
|
|
35
|
+
|
|
36
|
+
// UI chrome
|
|
37
|
+
color-chip: #e8f4fd,
|
|
38
|
+
color-input: #ffffff,
|
|
39
|
+
|
|
40
|
+
// Shadows
|
|
41
|
+
shadow-strong: 0 18px 50px rgba(1, 132, 228, 0.1),
|
|
42
|
+
shadow-soft: 0 8px 22px rgba(1, 132, 228, 0.07),
|
|
43
|
+
|
|
44
|
+
border-radius: 0.5rem,
|
|
45
|
+
default-padding: 0.5rem,
|
|
46
|
+
) !default;
|
|
47
|
+
|
|
48
|
+
@function -text-color($text-colors, $name) {
|
|
49
|
+
$value: map.get($text-colors, $name);
|
|
50
|
+
@if $value {
|
|
51
|
+
@return $value;
|
|
52
|
+
}
|
|
53
|
+
@return var(--text-color);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Emits CSS variables only, so the project chooses the selector.
|
|
57
|
+
// Usage: body { @include sb.tokens($colors, $text-colors, $overrides); }
|
|
58
|
+
@mixin tokens($colors: (), $text-colors: (), $overrides: ()) {
|
|
59
|
+
$all-colors: map.merge($default-colors, $colors);
|
|
60
|
+
$all-text-colors: map.merge($default-text-colors, $text-colors);
|
|
61
|
+
$all-tokens: map.merge($default-tokens, $overrides);
|
|
62
|
+
|
|
63
|
+
// One --<name>-color and one --<name>-text-color for every color
|
|
64
|
+
@each $name, $color in $all-colors {
|
|
65
|
+
--#{$name}-color: #{$color};
|
|
66
|
+
--#{$name}-text-color: #{-text-color($all-text-colors, $name)};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@each $name, $value in $all-tokens {
|
|
70
|
+
@if $name == font-family {
|
|
71
|
+
font-family: #{$value} !important;
|
|
72
|
+
} @else {
|
|
73
|
+
--#{$name}: #{$value};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// @use '@smartbit4all/ng-client/styles' as sb;
|
|
79
|
+
// @include sb.buttons;
|
|
80
|
+
// @include sb.buttons((new-color: #ff5500), (new-color: white));
|
|
81
|
+
@mixin buttons($colors: (), $text-colors: ()) {
|
|
82
|
+
$all-colors: map.merge($default-colors, $colors);
|
|
83
|
+
$all-text-colors: map.merge($default-text-colors, $text-colors);
|
|
84
|
+
|
|
85
|
+
@each $name, $color in $all-colors {
|
|
86
|
+
$text: -text-color($all-text-colors, $name);
|
|
87
|
+
$color: var(--#{$name}-color, #{$color});
|
|
88
|
+
|
|
89
|
+
.sb4-raised.sb4-#{$name} {
|
|
90
|
+
background-color: #{$color} !important;
|
|
91
|
+
color: #{$text} !important;
|
|
92
|
+
stroke: #{$text} !important;
|
|
93
|
+
border: none;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.sb4-raised.sb4-#{$name}:hover {
|
|
97
|
+
background-color: rgb(from #{$color} r g b / 0.8);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.sb4-raised.sb4-#{$name} .mdc-button__label {
|
|
101
|
+
color: #{$text};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.sb4-normal.sb4-#{$name} {
|
|
105
|
+
background-color: transparent;
|
|
106
|
+
border: 1px solid #{$color};
|
|
107
|
+
color: #{$color} !important;
|
|
108
|
+
stroke: #{$color};
|
|
109
|
+
box-shadow: none;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.sb4-flat.sb4-#{$name} {
|
|
113
|
+
background-color: transparent;
|
|
114
|
+
border: 1px solid transparent;
|
|
115
|
+
color: #{$color} !important;
|
|
116
|
+
stroke: #{$color};
|
|
117
|
+
box-shadow: none;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.sb4-flat.sb4-#{$name}.sb4-view-activated {
|
|
121
|
+
--sb4-view-activated-bg: transparent !important;
|
|
122
|
+
--sb4-view-activated-color: #{$color} !important;
|
|
123
|
+
border-bottom: 1px solid #{$color} !important;
|
|
124
|
+
border-bottom-right-radius: unset !important;
|
|
125
|
+
border-bottom-left-radius: unset !important;
|
|
126
|
+
|
|
127
|
+
.mat-icon {
|
|
128
|
+
color: #{$color} !important;
|
|
129
|
+
fill: #{$color} !important;
|
|
130
|
+
stroke: #{$color} !important;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.sb4-minifab.sb4-#{$name} {
|
|
135
|
+
background-color: transparent;
|
|
136
|
+
border: 1px solid #{$color};
|
|
137
|
+
color: #{$color};
|
|
138
|
+
box-shadow: none;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.sb4-icon.sb4-#{$name} {
|
|
142
|
+
background-color: transparent;
|
|
143
|
+
border: 1px solid transparent;
|
|
144
|
+
color: #{$color};
|
|
145
|
+
box-shadow: none;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.sb4-minifab.sb4-#{$name}:hover,
|
|
149
|
+
.sb4-normal.sb4-#{$name}:hover {
|
|
150
|
+
background-color: rgb(from #{$color} r g b / 0.1);
|
|
151
|
+
border-color: #{$color};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.sb4-flat.sb4-#{$name}:hover {
|
|
155
|
+
background-color: rgb(from #{$color} r g b / 0.1);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.sb4-minifab.sb4-#{$name}:focus,
|
|
159
|
+
.sb4-minifab.sb4-#{$name}:hover {
|
|
160
|
+
box-shadow: none;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.sb4-minifab.sb4-#{$name},
|
|
164
|
+
.sb4-normal.sb4-#{$name},
|
|
165
|
+
.sb4-flat.sb4-#{$name} {
|
|
166
|
+
.mdc-button__label {
|
|
167
|
+
color: #{$color};
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.sb4-raised.sb4-#{$name} mat-icon,
|
|
172
|
+
.sb4-raised.sb4-#{$name} .mat-icon,
|
|
173
|
+
.sb4-raised.sb4-#{$name} .pi {
|
|
174
|
+
color: #{$text} !important;
|
|
175
|
+
fill: #{$text} !important;
|
|
176
|
+
stroke: #{$text} !important;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.sb4-icon.sb4-#{$name},
|
|
180
|
+
.sb4-minifab.sb4-#{$name},
|
|
181
|
+
.sb4-normal.sb4-#{$name},
|
|
182
|
+
.sb4-flat.sb4-#{$name} {
|
|
183
|
+
mat-icon,
|
|
184
|
+
.mat-icon,
|
|
185
|
+
.pi {
|
|
186
|
+
color: #{$color} !important;
|
|
187
|
+
fill: #{$color} !important;
|
|
188
|
+
stroke: #{$color} !important;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
@@ -5,7 +5,7 @@ import { ComponentType as ComponentType$1 } from '@angular/cdk/portal';
|
|
|
5
5
|
import { ValidatorFn, UntypedFormGroup, ControlValueAccessor } from '@angular/forms';
|
|
6
6
|
import { Observable, Subject as Subject$1, Subscription } from 'rxjs';
|
|
7
7
|
import { QuillModules } from 'ngx-quill';
|
|
8
|
-
import { MatDialogRef, MatDialog } from '@angular/material/dialog';
|
|
8
|
+
import { MatDialogRef, MatDialog, MatDialogConfig } from '@angular/material/dialog';
|
|
9
9
|
import { DateFnsAdapter } from '@angular/material-date-fns-adapter';
|
|
10
10
|
import { MatDateFormats, ThemePalette } from '@angular/material/core';
|
|
11
11
|
import { Locale } from 'date-fns';
|
|
@@ -8618,6 +8618,8 @@ interface SmartTreeNode {
|
|
|
8618
8618
|
childrenNodesLoaded: boolean;
|
|
8619
8619
|
level: number;
|
|
8620
8620
|
shortDescription?: string;
|
|
8621
|
+
/** The node's tooltip; when set, it is the tooltip of the icon and of the caption. */
|
|
8622
|
+
tooltip?: string;
|
|
8621
8623
|
identifier?: string;
|
|
8622
8624
|
objectUri?: string;
|
|
8623
8625
|
nodeType: string;
|
|
@@ -8777,6 +8779,13 @@ declare class SmartTreeComponent implements OnInit, OnDestroy {
|
|
|
8777
8779
|
'padding-left': string;
|
|
8778
8780
|
};
|
|
8779
8781
|
customButtonClicked(event: any, button: SmartTreeNodeButton, close?: boolean): void;
|
|
8782
|
+
/**
|
|
8783
|
+
* The CSS hides the short description of a row edited elsewhere, so its caption tooltip carries
|
|
8784
|
+
* it under the tooltip, on a line of its own.
|
|
8785
|
+
*/
|
|
8786
|
+
getCaptionTooltipText(node: SmartTreeNode): string | null;
|
|
8787
|
+
/** The tooltip of a text, opening below like a caption's; none without a text. */
|
|
8788
|
+
createTooltip(text?: string | null): UiActionTooltip | undefined;
|
|
8780
8789
|
getClassesForTreeNode(node: SmartTreeNode): string[];
|
|
8781
8790
|
getInnerClassesForTreeNode(node: SmartTreeNode): string[];
|
|
8782
8791
|
getClassesForTreeNodeChildren(node: SmartTreeNode): string[];
|
|
@@ -9154,7 +9163,7 @@ declare abstract class SmartdialogService {
|
|
|
9154
9163
|
maxWidth: number;
|
|
9155
9164
|
minWidth: number;
|
|
9156
9165
|
};
|
|
9157
|
-
createDialog(smartDialog: SmartDialogData, component: ComponentType$1<any
|
|
9166
|
+
createDialog(smartDialog: SmartDialogData, component: ComponentType$1<any>, config?: MatDialogConfig): MatDialogRef<any, any>;
|
|
9158
9167
|
createDialogRef(smartDialog: SmartDialogData, component: ComponentType$1<any>): MatDialogRef<any, any>;
|
|
9159
9168
|
openComponentAsDialog(component: ComponentType$1<any>, viewName: string): MatDialogRef<any, any>;
|
|
9160
9169
|
handleAfterClosed(result: any): void;
|
|
@@ -9885,7 +9894,7 @@ declare class SmartKeybindingService {
|
|
|
9885
9894
|
private readonly injector;
|
|
9886
9895
|
private readonly isMac;
|
|
9887
9896
|
private readonly hosts;
|
|
9888
|
-
/** The elements of no view whose keys go to a view: a dialog's
|
|
9897
|
+
/** The elements of no view whose keys go to a view: a dialog's container to the page it shows. */
|
|
9889
9898
|
private readonly forwards;
|
|
9890
9899
|
/** The view that held the focus last; it keeps the keys after the focus fell to the body. */
|
|
9891
9900
|
private lastActive?;
|
|
@@ -9893,8 +9902,8 @@ declare class SmartKeybindingService {
|
|
|
9893
9902
|
/** Lets the view take keys; returns the function that stops it. */
|
|
9894
9903
|
register(entry: KeybindingHost): () => void;
|
|
9895
9904
|
/**
|
|
9896
|
-
* Sends the keys pressed with the focus in `from`, an element
|
|
9897
|
-
* of a dialog), to the view whose host is `to`; returns the function that stops it.
|
|
9905
|
+
* Sends the keys pressed with the focus in `from`, an element enclosing no view of its own (the
|
|
9906
|
+
* container of a dialog), to the view whose host is `to`; returns the function that stops it.
|
|
9898
9907
|
*/
|
|
9899
9908
|
forwardKeys(from: HTMLElement, to: HTMLElement): () => void;
|
|
9900
9909
|
private onFocusin;
|
|
@@ -11473,14 +11482,17 @@ declare function hasGroupEditActions(service: ISmartFilterEditorService): boolea
|
|
|
11473
11482
|
declare class SmartTooltipDirective {
|
|
11474
11483
|
private tooltip;
|
|
11475
11484
|
readonly smartTooltip: i0.InputSignal<UiActionTooltip | undefined>;
|
|
11485
|
+
/** A class the tooltip carries beside the directive's own, for a use that styles its tooltips. */
|
|
11486
|
+
readonly smartTooltipClass: i0.InputSignal<string | undefined>;
|
|
11476
11487
|
cursor: string;
|
|
11477
11488
|
mouseover(): void;
|
|
11478
11489
|
mouseleave(): void;
|
|
11490
|
+
private getTooltipClass;
|
|
11479
11491
|
getTooltipPos(pos?: UiActionTooltipTooltipPositionEnum): TooltipPosition;
|
|
11480
11492
|
getTooltipDelay(delay?: number): number;
|
|
11481
11493
|
getTooltipHideDelay(delay?: number): number;
|
|
11482
11494
|
static ɵfac: i0.ɵɵFactoryDeclaration<SmartTooltipDirective, never>;
|
|
11483
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<SmartTooltipDirective, "[smartTooltip]", never, { "smartTooltip": { "alias": "smartTooltip"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
11495
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SmartTooltipDirective, "[smartTooltip]", never, { "smartTooltip": { "alias": "smartTooltip"; "required": false; "isSignal": true; }; "smartTooltipClass": { "alias": "smartTooltipClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
11484
11496
|
}
|
|
11485
11497
|
|
|
11486
11498
|
declare class SmartDatePipe extends DatePipe implements PipeTransform {
|
|
Binary file
|