@smartbit4all/ng-client 7.3.35 → 7.3.37
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 -743
- package/MIGRATION-7.0.md +2280 -2280
- package/README.md +206 -206
- package/WIDGETS.md +254 -254
- package/fesm2022/smartbit4all-ng-client.mjs +233 -189
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/package.json +1 -1
- package/smartbit4all-ng-client-7.3.37.tgz +0 -0
- package/src/styles/_ng-client-styles.scss +188 -188
- package/types/smartbit4all-ng-client.d.ts +17 -0
- package/smartbit4all-ng-client-7.3.35.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.37",
|
|
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": {
|
|
Binary file
|
|
@@ -1,188 +1,188 @@
|
|
|
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: #ffffff,
|
|
23
|
-
color-surface: #f6f8fb,
|
|
24
|
-
color-surface-alt: #f9fbff,
|
|
25
|
-
|
|
26
|
-
// Borders
|
|
27
|
-
color-border: #e4eaf2,
|
|
28
|
-
|
|
29
|
-
// Tree
|
|
30
|
-
tree-active-background: var(--accent-color),
|
|
31
|
-
// Semantic
|
|
32
|
-
color-danger: var(--warn-color),
|
|
33
|
-
// UI chrome
|
|
34
|
-
color-chip: #e8f4fd,
|
|
35
|
-
color-input: #ffffff,
|
|
36
|
-
|
|
37
|
-
// Shadows
|
|
38
|
-
shadow-strong: 0 18px 50px rgba(1, 132, 228, 0.1),
|
|
39
|
-
shadow-soft: 0 8px 22px rgba(1, 132, 228, 0.07),
|
|
40
|
-
border-radius: 0.5rem,
|
|
41
|
-
default-padding: 0.5rem
|
|
42
|
-
) !default;
|
|
43
|
-
|
|
44
|
-
@function -text-color($text-colors, $name) {
|
|
45
|
-
$value: map.get($text-colors, $name);
|
|
46
|
-
@if $value {
|
|
47
|
-
@return $value;
|
|
48
|
-
}
|
|
49
|
-
@return var(--text-color);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Emits CSS variables only, so the project chooses the selector.
|
|
53
|
-
// Usage: body { @include sb.tokens($colors, $text-colors, $overrides); }
|
|
54
|
-
@mixin tokens($colors: (), $text-colors: (), $overrides: ()) {
|
|
55
|
-
$all-colors: map.merge($default-colors, $colors);
|
|
56
|
-
$all-text-colors: map.merge($default-text-colors, $text-colors);
|
|
57
|
-
$all-tokens: map.merge($default-tokens, $overrides);
|
|
58
|
-
|
|
59
|
-
// One --<name>-color and one --<name>-text-color for every color
|
|
60
|
-
@each $name, $color in $all-colors {
|
|
61
|
-
--#{$name}-color: #{$color};
|
|
62
|
-
--#{$name}-text-color: #{-text-color($all-text-colors, $name)};
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
@each $name, $value in $all-tokens {
|
|
66
|
-
@if $name == font-family {
|
|
67
|
-
font-family: #{$value} !important;
|
|
68
|
-
} @else {
|
|
69
|
-
--#{$name}: #{$value};
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// @use '@smartbit4all/ng-client/styles' as sb;
|
|
75
|
-
// @include sb.buttons;
|
|
76
|
-
// @include sb.buttons((new-color: #ff5500), (new-color: white));
|
|
77
|
-
@mixin buttons($colors: (), $text-colors: ()) {
|
|
78
|
-
$all-colors: map.merge($default-colors, $colors);
|
|
79
|
-
$all-text-colors: map.merge($default-text-colors, $text-colors);
|
|
80
|
-
|
|
81
|
-
@each $name, $color in $all-colors {
|
|
82
|
-
$text: -text-color($all-text-colors, $name);
|
|
83
|
-
$color: var(--#{$name}-color, #{$color});
|
|
84
|
-
|
|
85
|
-
.sb4-raised.sb4-#{$name} {
|
|
86
|
-
background-color: #{$color} !important;
|
|
87
|
-
color: #{$text} !important;
|
|
88
|
-
stroke: #{$text} !important;
|
|
89
|
-
border: none;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
.sb4-raised.sb4-#{$name}:hover {
|
|
93
|
-
background-color: rgb(from #{$color} r g b / 0.8);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.sb4-raised.sb4-#{$name} .mdc-button__label {
|
|
97
|
-
color: #{$text};
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
.sb4-normal.sb4-#{$name} {
|
|
101
|
-
background-color: transparent;
|
|
102
|
-
border: 1px solid #{$color};
|
|
103
|
-
color: #{$color} !important;
|
|
104
|
-
stroke: #{$color};
|
|
105
|
-
box-shadow: none;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
.sb4-flat.sb4-#{$name} {
|
|
109
|
-
background-color: transparent;
|
|
110
|
-
border: 1px solid transparent;
|
|
111
|
-
color: #{$color} !important;
|
|
112
|
-
stroke: #{$color};
|
|
113
|
-
box-shadow: none;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.sb4-flat.sb4-#{$name}.sb4-view-activated {
|
|
117
|
-
--sb4-view-activated-bg: transparent !important;
|
|
118
|
-
--sb4-view-activated-color: #{$color} !important;
|
|
119
|
-
border-bottom: 1px solid #{$color} !important;
|
|
120
|
-
border-bottom-right-radius: unset !important;
|
|
121
|
-
border-bottom-left-radius: unset !important;
|
|
122
|
-
|
|
123
|
-
.mat-icon {
|
|
124
|
-
color: #{$color} !important;
|
|
125
|
-
fill: #{$color} !important;
|
|
126
|
-
stroke: #{$color} !important;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
.sb4-minifab.sb4-#{$name} {
|
|
131
|
-
background-color: transparent;
|
|
132
|
-
border: 1px solid #{$color};
|
|
133
|
-
color: #{$color};
|
|
134
|
-
box-shadow: none;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
.sb4-icon.sb4-#{$name} {
|
|
138
|
-
background-color: transparent;
|
|
139
|
-
border: 1px solid transparent;
|
|
140
|
-
color: #{$color};
|
|
141
|
-
box-shadow: none;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
.sb4-minifab.sb4-#{$name}:hover,
|
|
145
|
-
.sb4-normal.sb4-#{$name}:hover {
|
|
146
|
-
background-color: rgb(from #{$color} r g b / 0.1);
|
|
147
|
-
border-color: #{$color};
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
.sb4-flat.sb4-#{$name}:hover {
|
|
151
|
-
background-color: rgb(from #{$color} r g b / 0.1);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
.sb4-minifab.sb4-#{$name}:focus,
|
|
155
|
-
.sb4-minifab.sb4-#{$name}:hover {
|
|
156
|
-
box-shadow: none;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
.sb4-minifab.sb4-#{$name},
|
|
160
|
-
.sb4-normal.sb4-#{$name},
|
|
161
|
-
.sb4-flat.sb4-#{$name} {
|
|
162
|
-
.mdc-button__label {
|
|
163
|
-
color: #{$color};
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
.sb4-raised.sb4-#{$name} mat-icon,
|
|
168
|
-
.sb4-raised.sb4-#{$name} .mat-icon,
|
|
169
|
-
.sb4-raised.sb4-#{$name} .pi {
|
|
170
|
-
color: #{$text} !important;
|
|
171
|
-
fill: #{$text} !important;
|
|
172
|
-
stroke: #{$text} !important;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
.sb4-icon.sb4-#{$name},
|
|
176
|
-
.sb4-minifab.sb4-#{$name},
|
|
177
|
-
.sb4-normal.sb4-#{$name},
|
|
178
|
-
.sb4-flat.sb4-#{$name} {
|
|
179
|
-
mat-icon,
|
|
180
|
-
.mat-icon,
|
|
181
|
-
.pi {
|
|
182
|
-
color: #{$color} !important;
|
|
183
|
-
fill: #{$color} !important;
|
|
184
|
-
stroke: #{$color} !important;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
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: #ffffff,
|
|
23
|
+
color-surface: #f6f8fb,
|
|
24
|
+
color-surface-alt: #f9fbff,
|
|
25
|
+
|
|
26
|
+
// Borders
|
|
27
|
+
color-border: #e4eaf2,
|
|
28
|
+
|
|
29
|
+
// Tree
|
|
30
|
+
tree-active-background: var(--accent-color),
|
|
31
|
+
// Semantic
|
|
32
|
+
color-danger: var(--warn-color),
|
|
33
|
+
// UI chrome
|
|
34
|
+
color-chip: #e8f4fd,
|
|
35
|
+
color-input: #ffffff,
|
|
36
|
+
|
|
37
|
+
// Shadows
|
|
38
|
+
shadow-strong: 0 18px 50px rgba(1, 132, 228, 0.1),
|
|
39
|
+
shadow-soft: 0 8px 22px rgba(1, 132, 228, 0.07),
|
|
40
|
+
border-radius: 0.5rem,
|
|
41
|
+
default-padding: 0.5rem
|
|
42
|
+
) !default;
|
|
43
|
+
|
|
44
|
+
@function -text-color($text-colors, $name) {
|
|
45
|
+
$value: map.get($text-colors, $name);
|
|
46
|
+
@if $value {
|
|
47
|
+
@return $value;
|
|
48
|
+
}
|
|
49
|
+
@return var(--text-color);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Emits CSS variables only, so the project chooses the selector.
|
|
53
|
+
// Usage: body { @include sb.tokens($colors, $text-colors, $overrides); }
|
|
54
|
+
@mixin tokens($colors: (), $text-colors: (), $overrides: ()) {
|
|
55
|
+
$all-colors: map.merge($default-colors, $colors);
|
|
56
|
+
$all-text-colors: map.merge($default-text-colors, $text-colors);
|
|
57
|
+
$all-tokens: map.merge($default-tokens, $overrides);
|
|
58
|
+
|
|
59
|
+
// One --<name>-color and one --<name>-text-color for every color
|
|
60
|
+
@each $name, $color in $all-colors {
|
|
61
|
+
--#{$name}-color: #{$color};
|
|
62
|
+
--#{$name}-text-color: #{-text-color($all-text-colors, $name)};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@each $name, $value in $all-tokens {
|
|
66
|
+
@if $name == font-family {
|
|
67
|
+
font-family: #{$value} !important;
|
|
68
|
+
} @else {
|
|
69
|
+
--#{$name}: #{$value};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// @use '@smartbit4all/ng-client/styles' as sb;
|
|
75
|
+
// @include sb.buttons;
|
|
76
|
+
// @include sb.buttons((new-color: #ff5500), (new-color: white));
|
|
77
|
+
@mixin buttons($colors: (), $text-colors: ()) {
|
|
78
|
+
$all-colors: map.merge($default-colors, $colors);
|
|
79
|
+
$all-text-colors: map.merge($default-text-colors, $text-colors);
|
|
80
|
+
|
|
81
|
+
@each $name, $color in $all-colors {
|
|
82
|
+
$text: -text-color($all-text-colors, $name);
|
|
83
|
+
$color: var(--#{$name}-color, #{$color});
|
|
84
|
+
|
|
85
|
+
.sb4-raised.sb4-#{$name} {
|
|
86
|
+
background-color: #{$color} !important;
|
|
87
|
+
color: #{$text} !important;
|
|
88
|
+
stroke: #{$text} !important;
|
|
89
|
+
border: none;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.sb4-raised.sb4-#{$name}:hover {
|
|
93
|
+
background-color: rgb(from #{$color} r g b / 0.8);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.sb4-raised.sb4-#{$name} .mdc-button__label {
|
|
97
|
+
color: #{$text};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.sb4-normal.sb4-#{$name} {
|
|
101
|
+
background-color: transparent;
|
|
102
|
+
border: 1px solid #{$color};
|
|
103
|
+
color: #{$color} !important;
|
|
104
|
+
stroke: #{$color};
|
|
105
|
+
box-shadow: none;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.sb4-flat.sb4-#{$name} {
|
|
109
|
+
background-color: transparent;
|
|
110
|
+
border: 1px solid transparent;
|
|
111
|
+
color: #{$color} !important;
|
|
112
|
+
stroke: #{$color};
|
|
113
|
+
box-shadow: none;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.sb4-flat.sb4-#{$name}.sb4-view-activated {
|
|
117
|
+
--sb4-view-activated-bg: transparent !important;
|
|
118
|
+
--sb4-view-activated-color: #{$color} !important;
|
|
119
|
+
border-bottom: 1px solid #{$color} !important;
|
|
120
|
+
border-bottom-right-radius: unset !important;
|
|
121
|
+
border-bottom-left-radius: unset !important;
|
|
122
|
+
|
|
123
|
+
.mat-icon {
|
|
124
|
+
color: #{$color} !important;
|
|
125
|
+
fill: #{$color} !important;
|
|
126
|
+
stroke: #{$color} !important;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.sb4-minifab.sb4-#{$name} {
|
|
131
|
+
background-color: transparent;
|
|
132
|
+
border: 1px solid #{$color};
|
|
133
|
+
color: #{$color};
|
|
134
|
+
box-shadow: none;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.sb4-icon.sb4-#{$name} {
|
|
138
|
+
background-color: transparent;
|
|
139
|
+
border: 1px solid transparent;
|
|
140
|
+
color: #{$color};
|
|
141
|
+
box-shadow: none;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.sb4-minifab.sb4-#{$name}:hover,
|
|
145
|
+
.sb4-normal.sb4-#{$name}:hover {
|
|
146
|
+
background-color: rgb(from #{$color} r g b / 0.1);
|
|
147
|
+
border-color: #{$color};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.sb4-flat.sb4-#{$name}:hover {
|
|
151
|
+
background-color: rgb(from #{$color} r g b / 0.1);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.sb4-minifab.sb4-#{$name}:focus,
|
|
155
|
+
.sb4-minifab.sb4-#{$name}:hover {
|
|
156
|
+
box-shadow: none;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.sb4-minifab.sb4-#{$name},
|
|
160
|
+
.sb4-normal.sb4-#{$name},
|
|
161
|
+
.sb4-flat.sb4-#{$name} {
|
|
162
|
+
.mdc-button__label {
|
|
163
|
+
color: #{$color};
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.sb4-raised.sb4-#{$name} mat-icon,
|
|
168
|
+
.sb4-raised.sb4-#{$name} .mat-icon,
|
|
169
|
+
.sb4-raised.sb4-#{$name} .pi {
|
|
170
|
+
color: #{$text} !important;
|
|
171
|
+
fill: #{$text} !important;
|
|
172
|
+
stroke: #{$text} !important;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.sb4-icon.sb4-#{$name},
|
|
176
|
+
.sb4-minifab.sb4-#{$name},
|
|
177
|
+
.sb4-normal.sb4-#{$name},
|
|
178
|
+
.sb4-flat.sb4-#{$name} {
|
|
179
|
+
mat-icon,
|
|
180
|
+
.mat-icon,
|
|
181
|
+
.pi {
|
|
182
|
+
color: #{$color} !important;
|
|
183
|
+
fill: #{$color} !important;
|
|
184
|
+
stroke: #{$color} !important;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -1989,6 +1989,10 @@ interface FileUploaderProperties {
|
|
|
1989
1989
|
changeAction?: UiAction;
|
|
1990
1990
|
undoIcon?: ImageResource;
|
|
1991
1991
|
uploadDescriptor?: UiActionUploadDescriptor;
|
|
1992
|
+
/**
|
|
1993
|
+
* Whether the editor offers the clear of the file; a page whose save needs a file sets it to false.
|
|
1994
|
+
*/
|
|
1995
|
+
clearEnabled?: boolean;
|
|
1992
1996
|
}
|
|
1993
1997
|
|
|
1994
1998
|
/**
|
|
@@ -7393,8 +7397,15 @@ declare class SmartFileEditorComponent implements ControlValueAccessor {
|
|
|
7393
7397
|
uploadDescriptor?: UiActionUploadDescriptor;
|
|
7394
7398
|
}>;
|
|
7395
7399
|
fileToChange?: any;
|
|
7400
|
+
/**
|
|
7401
|
+
* The file before a clear, held for the undo until an upload, a newly written value or the end
|
|
7402
|
+
* of editing.
|
|
7403
|
+
*/
|
|
7404
|
+
clearedFile?: any;
|
|
7396
7405
|
private clone;
|
|
7397
7406
|
upload(event: any): void;
|
|
7407
|
+
clear(): void;
|
|
7408
|
+
undoClear(): void;
|
|
7398
7409
|
change(file: any): void;
|
|
7399
7410
|
cancelChange(): void;
|
|
7400
7411
|
isTypeSupported(value: any): boolean;
|
|
@@ -7413,13 +7424,18 @@ declare class SmartFileEditorComponent implements ControlValueAccessor {
|
|
|
7413
7424
|
};
|
|
7414
7425
|
onChange: (value: any) => void;
|
|
7415
7426
|
onTouched: () => void;
|
|
7427
|
+
/** The editor's disabled state: the widget's at creation, then the form control's. */
|
|
7416
7428
|
isDisabled: boolean;
|
|
7417
7429
|
writeValue(value: any): void;
|
|
7418
7430
|
registerOnChange(fn: any): void;
|
|
7419
7431
|
registerOnTouched(fn: any): void;
|
|
7420
7432
|
setDisabledState?(isDisabled: boolean): void;
|
|
7433
|
+
/** An absent clearEnabled offers the clear, as its default in the form definition. */
|
|
7434
|
+
get isClearEnabled(): boolean;
|
|
7421
7435
|
get fileIcon(): string;
|
|
7422
7436
|
get changeButton(): UiActionDescriptor;
|
|
7437
|
+
/** The delete icon's own descriptor: nothing of the change or upload action, so no tooltip. */
|
|
7438
|
+
get deleteButton(): UiActionDescriptor;
|
|
7423
7439
|
get removeButton(): UiActionDescriptor;
|
|
7424
7440
|
get errorIcon(): string;
|
|
7425
7441
|
static ɵfac: i0.ɵɵFactoryDeclaration<SmartFileEditorComponent, never>;
|
|
@@ -7461,6 +7477,7 @@ declare class SmartMultiFileEditorComponent implements ControlValueAccessor {
|
|
|
7461
7477
|
};
|
|
7462
7478
|
onChange: (value: any) => void;
|
|
7463
7479
|
onTouched: () => void;
|
|
7480
|
+
/** The editor's disabled state: the widget's at creation, then the form control's. */
|
|
7464
7481
|
isDisabled: boolean;
|
|
7465
7482
|
writeValue(value: any): void;
|
|
7466
7483
|
registerOnChange(fn: any): void;
|
|
Binary file
|