@smartbit4all/ng-client 7.3.50 → 7.3.51

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartbit4all/ng-client",
3
- "version": "7.3.50",
3
+ "version": "7.3.51",
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": {
@@ -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
+ }
@@ -882,6 +882,10 @@ interface UiActionDescriptor {
882
882
  input2Dialog?: UiActionDialogDescriptor;
883
883
  feedbackType?: UiActionFeedbackType;
884
884
  feedbackText?: string;
885
+ /**
886
+ * Optional text of the snackbar the client shows when the form validation of a submitting action fails. The placeholder {fields} is replaced by the client with the names of the invalid fields, separated by commas. If it is missing the client shows its default text.
887
+ */
888
+ invalidFieldsText?: string;
885
889
  badge?: BadgeDescriptor;
886
890
  upload?: UiActionUploadDescriptor;
887
891
  tooltip?: UiActionTooltip;
@@ -7043,6 +7047,8 @@ declare class SmartViewContextService implements OnDestroy {
7043
7047
  private actionDescriptors?;
7044
7048
  private moduleUrlsByModule?;
7045
7049
  commonFeedbackText?: string;
7050
+ /** Default text of the invalid fields snackbar, used when the action's descriptor has none. */
7051
+ commonInvalidFieldsText?: string;
7046
7052
  smartApiClients: Map<string, Subject$1<any>>;
7047
7053
  constructor();
7048
7054
  ngOnDestroy(): void;
@@ -9805,7 +9811,11 @@ declare class UiActionService implements OnDestroy {
9805
9811
  private handleInputTypeUserSelect;
9806
9812
  private performAction;
9807
9813
  showSavedSnackbar(uiAction: UiAction): void;
9808
- showInvalidFieldsSnackbar(invalidFields: SmartFormInvalidFields): void;
9814
+ /**
9815
+ * @param uiAction the submitting action: its descriptor may carry the text of the snackbar
9816
+ * (`invalidFieldsText`). Without it the default text is shown.
9817
+ */
9818
+ showInvalidFieldsSnackbar(invalidFields: SmartFormInvalidFields, uiAction?: UiAction): void;
9809
9819
  static ɵfac: i0.ɵɵFactoryDeclaration<UiActionService, never>;
9810
9820
  static ɵprov: i0.ɵɵInjectableDeclaration<UiActionService>;
9811
9821
  }
Binary file