novo-elements 13.2.0-next.1 → 13.2.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/elements/breadcrumbs/Breadcrumb.scss +1 -1
- package/elements/button/styles/button-dialogue.scss +12 -0
- package/elements/button/styles/button-icon.scss +20 -0
- package/elements/button/styles/button-primary.scss +16 -1
- package/elements/button/styles/button-secondary.scss +14 -0
- package/elements/button/styles/button-standard.scss +14 -0
- package/elements/button/styles/button.scss +11 -0
- package/elements/card/Card.scss +69 -16
- package/elements/card/CardContent.scss +3 -0
- package/elements/card/CardHeader.scss +23 -0
- package/elements/card/index.d.ts +5 -3
- package/elements/common/index.d.ts +14 -4
- package/elements/common/option/option.component.scss +11 -0
- package/elements/data-table/data-table.component.scss +79 -3
- package/elements/dropdown/Dropdown.scss +15 -0
- package/elements/field/field.scss +10 -6
- package/elements/field/hint/hint.scss +6 -0
- package/elements/form/ControlGroup.scss +13 -0
- package/elements/form/Form.scss +46 -0
- package/elements/header/Header.scss +16 -3
- package/elements/list/list-item-content.scss +13 -4
- package/elements/picker/extras/picker-results/PickerResults.scss +28 -0
- package/elements/progress/Progress.scss +8 -0
- package/elements/progress/ProgressBar.scss +4 -1
- package/elements/search/SearchBox.scss +34 -0
- package/elements/search/index.d.ts +11 -6
- package/elements/simple-table/table.scss +1 -1
- package/elements/stepper/stepper.component.scss +4 -4
- package/elements/tabbed-group-picker/TabbedGroupPicker.scss +41 -0
- package/elements/tabs/tab.scss +9 -8
- package/elements/tiles/Tiles.scss +18 -10
- package/elements/toolbar/toolbar.component.scss +2 -2
- package/fesm2022/novo-elements-elements-breadcrumbs.mjs +3 -3
- package/fesm2022/novo-elements-elements-breadcrumbs.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-button.mjs +2 -2
- package/fesm2022/novo-elements-elements-button.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-card.mjs +27 -21
- package/fesm2022/novo-elements-elements-card.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-common.mjs +47 -16
- package/fesm2022/novo-elements-elements-common.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-data-table.mjs +2 -2
- package/fesm2022/novo-elements-elements-data-table.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-dropdown.mjs +2 -2
- package/fesm2022/novo-elements-elements-dropdown.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-field.mjs +4 -4
- package/fesm2022/novo-elements-elements-field.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-form.mjs +6 -6
- package/fesm2022/novo-elements-elements-form.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-header.mjs +2 -2
- package/fesm2022/novo-elements-elements-header.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-list.mjs +2 -2
- package/fesm2022/novo-elements-elements-list.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-picker.mjs +4 -4
- package/fesm2022/novo-elements-elements-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-progress.mjs +4 -4
- package/fesm2022/novo-elements-elements-progress.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-search.mjs +36 -9
- package/fesm2022/novo-elements-elements-search.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-simple-table.mjs +4 -4
- package/fesm2022/novo-elements-elements-simple-table.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-stepper.mjs +6 -6
- package/fesm2022/novo-elements-elements-stepper.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tabbed-group-picker.mjs +2 -2
- package/fesm2022/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tabs.mjs +4 -4
- package/fesm2022/novo-elements-elements-tabs.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tiles.mjs +2 -2
- package/fesm2022/novo-elements-elements-tiles.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-toolbar.mjs +2 -2
- package/package.json +1 -1
- package/styles/content/links.scss +4 -0
- package/styles/themes/bh2026.scss +110 -60
|
@@ -39,3 +39,23 @@
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
+
|
|
43
|
+
:host-context([data-theme='bh2026']) {
|
|
44
|
+
&[theme="icon"] {
|
|
45
|
+
height: var(--button-height);
|
|
46
|
+
width: var(--button-height);
|
|
47
|
+
border-radius: var(--border-radius-sm);
|
|
48
|
+
color: var(--color-text-subtle);
|
|
49
|
+
box-shadow: none;
|
|
50
|
+
|
|
51
|
+
&:focus,
|
|
52
|
+
&:hover {
|
|
53
|
+
background: var(--color-background-subtle);
|
|
54
|
+
box-shadow: none;
|
|
55
|
+
}
|
|
56
|
+
&:active {
|
|
57
|
+
background: var(--color-background-subtle-hover);
|
|
58
|
+
box-shadow: none;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
|
|
12
12
|
&:hover,
|
|
13
13
|
&:focus {
|
|
14
|
-
|
|
15
14
|
filter: brightness(1.15);
|
|
16
15
|
box-shadow: var(--shadow-2), var(--shadow-1);
|
|
17
16
|
}
|
|
@@ -41,3 +40,19 @@
|
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
42
|
}
|
|
43
|
+
|
|
44
|
+
:host-context([data-theme='bh2026']) {
|
|
45
|
+
&[theme="primary"] {
|
|
46
|
+
&:hover,
|
|
47
|
+
&:focus {
|
|
48
|
+
filter: none;
|
|
49
|
+
background: var(--button-primary-background-hover);
|
|
50
|
+
box-shadow: var(--button-shadow-hover);
|
|
51
|
+
}
|
|
52
|
+
&:active {
|
|
53
|
+
filter: none;
|
|
54
|
+
background: var(--button-primary-background-hover);
|
|
55
|
+
box-shadow: var(--button-shadow-active);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -49,3 +49,17 @@
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
+
|
|
53
|
+
:host-context([data-theme='bh2026']) {
|
|
54
|
+
&[theme="secondary"] {
|
|
55
|
+
&:hover,
|
|
56
|
+
&:focus {
|
|
57
|
+
border: var(--button-secondary-border-hover);
|
|
58
|
+
box-shadow: var(--button-shadow-hover);
|
|
59
|
+
}
|
|
60
|
+
&:active {
|
|
61
|
+
border: var(--button-secondary-border-hover);
|
|
62
|
+
box-shadow: var(--button-shadow-active);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -15,3 +15,17 @@
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
+
|
|
19
|
+
:host-context([data-theme='bh2026']) {
|
|
20
|
+
&[theme="standard"] {
|
|
21
|
+
background: var(--button-background);
|
|
22
|
+
&:hover {
|
|
23
|
+
background: var(--button-hover-background);
|
|
24
|
+
box-shadow: var(--button-shadow-hover);
|
|
25
|
+
}
|
|
26
|
+
&:active {
|
|
27
|
+
background: var(--button-hover-background);
|
|
28
|
+
box-shadow: var(--button-shadow-active);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -115,3 +115,14 @@
|
|
|
115
115
|
transform: rotate(360deg);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
+
|
|
119
|
+
:host-context([data-theme='bh2026']) {
|
|
120
|
+
box-shadow: var(--button-shadow);
|
|
121
|
+
|
|
122
|
+
&:hover {
|
|
123
|
+
box-shadow: var(--button-shadow-hover);
|
|
124
|
+
}
|
|
125
|
+
&:active {
|
|
126
|
+
box-shadow: var(--button-shadow-active);
|
|
127
|
+
}
|
|
128
|
+
}
|
package/elements/card/Card.scss
CHANGED
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
border-radius: var(--border-radius-round);
|
|
9
9
|
position: relative;
|
|
10
10
|
overflow-x: hidden;
|
|
11
|
+
:root[data-theme=bh2026] & {
|
|
12
|
+
--spacing-md: var(--spacing-padding-md);
|
|
13
|
+
}
|
|
11
14
|
|
|
12
15
|
&.loading {
|
|
13
16
|
min-height: 200px;
|
|
@@ -57,11 +60,11 @@
|
|
|
57
60
|
text-overflow: ellipsis;
|
|
58
61
|
i {
|
|
59
62
|
font-size: 1.2em;
|
|
60
|
-
&.bhi-info {
|
|
61
|
-
color: $light;
|
|
62
|
-
}
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
+
:root:not([data-theme='bh2026']) & i.bhi-info {
|
|
66
|
+
color: $light;
|
|
67
|
+
}
|
|
65
68
|
}
|
|
66
69
|
.actions {
|
|
67
70
|
color: brightenLive('--color-dark', 15);
|
|
@@ -119,43 +122,93 @@
|
|
|
119
122
|
|
|
120
123
|
// bh2026: rounder card, grippy on hover
|
|
121
124
|
:host-context([data-theme='bh2026']) {
|
|
122
|
-
border-radius: var(--border-radius-md
|
|
123
|
-
border: 1px solid var(--color-border-default
|
|
124
|
-
box-shadow: 0 1px 2px
|
|
125
|
+
border-radius: var(--border-radius-md);
|
|
126
|
+
border: 1px solid var(--color-border-default);
|
|
127
|
+
box-shadow: 0 1px 2px var(--color-transparency-black-10);
|
|
125
128
|
|
|
126
129
|
div.card-loading-container {
|
|
127
|
-
border-radius: var(--border-radius-md
|
|
130
|
+
border-radius: var(--border-radius-md);
|
|
128
131
|
}
|
|
129
132
|
|
|
130
133
|
header {
|
|
131
|
-
padding: var(--spacing-
|
|
132
|
-
border-bottom: 1px solid var(--color-border-default
|
|
134
|
+
padding: var(--spacing-padding-md) var(--spacing-padding-lg) var(--spacing-padding-md) 0;
|
|
135
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
133
136
|
|
|
134
137
|
.title {
|
|
138
|
+
padding-inline: var(--spacing-gutter);
|
|
135
139
|
h1,
|
|
136
140
|
h2,
|
|
137
141
|
h3 {
|
|
138
|
-
font-size: var(--typography-card-header-font-size,
|
|
139
|
-
font-weight: var(--typography-card-header-font-weight, 500);
|
|
142
|
+
font-size: var(--typography-card-header-font-size, var(--typography-font-size-18));
|
|
143
|
+
font-weight: var(--typography-card-header-font-weight, var(--typography-font-weight-500));
|
|
144
|
+
::ng-deep .card-flag-icon {
|
|
145
|
+
font-size: var(--font-size-lg);
|
|
146
|
+
vertical-align: 10%;
|
|
147
|
+
}
|
|
140
148
|
}
|
|
141
149
|
|
|
142
|
-
::ng-deep i
|
|
143
|
-
|
|
150
|
+
::ng-deep i {
|
|
151
|
+
margin: 0;
|
|
144
152
|
}
|
|
145
153
|
}
|
|
146
154
|
|
|
147
|
-
|
|
148
|
-
|
|
155
|
+
.card-move-handle {
|
|
156
|
+
position: absolute;
|
|
157
|
+
left: var(--spacing-padding-xxsm);
|
|
158
|
+
color: var(--color-content-icon, #89909A);
|
|
149
159
|
}
|
|
150
160
|
|
|
151
161
|
.actions {
|
|
152
162
|
display: flex;
|
|
153
163
|
align-items: center;
|
|
154
|
-
gap: var(--spacing-
|
|
164
|
+
gap: var(--spacing-gap-sm);
|
|
155
165
|
}
|
|
156
166
|
|
|
157
167
|
novo-button {
|
|
168
|
+
color: var(--color-text-subtle);
|
|
169
|
+
}
|
|
170
|
+
::ng-deep .novo-card-header-text {
|
|
171
|
+
padding-inline-start: var(--spacing-padding-sm);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
:host {
|
|
175
|
+
::ng-deep .card-flag-icon {
|
|
158
176
|
color: var(--color-content-subtle, #5d7798);
|
|
159
177
|
}
|
|
178
|
+
&.icon-color-auto header .title ::ng-deep .card-flag-icon {
|
|
179
|
+
color: var(--page-entity-color, var(--color-content-subtle, #5d7798));
|
|
180
|
+
@each $entity, $color in $entity-colors {
|
|
181
|
+
&.bhi-#{$entity} {
|
|
182
|
+
@if ($entity == 'person') {
|
|
183
|
+
color: var(--color-entity-contact);
|
|
184
|
+
} @else if ($entity == 'notes') {
|
|
185
|
+
color: var(--color-entity-note);
|
|
186
|
+
} @else {
|
|
187
|
+
color: var(--color-entity-#{$entity});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
&.icon-color-parent ::ng-deep .card-flag-icon {
|
|
193
|
+
color: var(--page-entity-color);
|
|
194
|
+
}
|
|
195
|
+
.novo-card-header {
|
|
196
|
+
padding-inline-start: var(--spacing-gutter);
|
|
197
|
+
}
|
|
198
|
+
// ng-deep in case this is declared within title bar implementation.
|
|
199
|
+
::ng-deep .card-move-handle {
|
|
200
|
+
position: absolute;
|
|
201
|
+
left: var(--spacing-padding-xxsm);
|
|
202
|
+
color: var(--color-content-icon, #89909A);
|
|
203
|
+
transition: color 0.3s ease-in-out;
|
|
204
|
+
}
|
|
205
|
+
header ::ng-deep, ::ng-deep .novo-card-header {
|
|
206
|
+
&:not(:hover) .card-move-handle {
|
|
207
|
+
color: transparent;
|
|
208
|
+
}
|
|
209
|
+
.novo-icon.card-move-handle i {
|
|
210
|
+
color: inherit;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
160
213
|
}
|
|
161
214
|
}
|
|
@@ -7,8 +7,31 @@
|
|
|
7
7
|
flex-direction: row;
|
|
8
8
|
align-items: center;
|
|
9
9
|
gap: var(--spacing-md);
|
|
10
|
+
:root[data-theme=bh2026] & {
|
|
11
|
+
padding: var(--spacing-padding-md) var(--spacing-padding-md) 0 var(--spacing-gutter);
|
|
12
|
+
gap: 0;
|
|
13
|
+
.card-move-handle {
|
|
14
|
+
transition: color 0.3s ease-in-out;
|
|
15
|
+
}
|
|
16
|
+
&:not(:hover) {
|
|
17
|
+
.card-move-handle {
|
|
18
|
+
color: transparent;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
.novo-card-header-text {
|
|
22
|
+
font-size: var(--typography-card-header-font-size, 1.8rem);
|
|
23
|
+
font-weight: var(--typography-card-header-font-weight, 500);
|
|
24
|
+
::ng-deep novo-title {
|
|
25
|
+
font: inherit;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
10
30
|
|
|
11
31
|
.novo-card-header-text {
|
|
12
32
|
flex: 1 1 0px;
|
|
33
|
+
:root[data-theme=bh2026] & {
|
|
34
|
+
padding-inline-start: var(--spacing-padding-sm);
|
|
35
|
+
}
|
|
13
36
|
}
|
|
14
37
|
}
|
package/elements/card/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import * as i3 from 'novo-elements/elements/icon';
|
|
|
6
6
|
import * as i4 from 'novo-elements/elements/button';
|
|
7
7
|
import * as i5 from 'novo-elements/elements/loading';
|
|
8
8
|
import * as i6 from 'novo-elements/elements/tooltip';
|
|
9
|
+
import * as i7 from 'novo-elements/elements/common';
|
|
9
10
|
|
|
10
11
|
declare class CardActionsElement {
|
|
11
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<CardActionsElement, never>;
|
|
@@ -37,6 +38,7 @@ declare class CardElement implements OnChanges, OnInit {
|
|
|
37
38
|
message: string;
|
|
38
39
|
messageIcon: string;
|
|
39
40
|
icon: string;
|
|
41
|
+
iconColorClass: 'icon-color-auto' | 'icon-color-parent' | undefined;
|
|
40
42
|
iconTooltip: string;
|
|
41
43
|
refresh: boolean;
|
|
42
44
|
close: boolean;
|
|
@@ -44,7 +46,7 @@ declare class CardElement implements OnChanges, OnInit {
|
|
|
44
46
|
loading: boolean;
|
|
45
47
|
inline: boolean;
|
|
46
48
|
inset: string;
|
|
47
|
-
get
|
|
49
|
+
get cardClass(): string;
|
|
48
50
|
onClose: EventEmitter<void>;
|
|
49
51
|
onRefresh: EventEmitter<void>;
|
|
50
52
|
cardAutomationId: string;
|
|
@@ -57,12 +59,12 @@ declare class CardElement implements OnChanges, OnInit {
|
|
|
57
59
|
toggleClose(): void;
|
|
58
60
|
toggleRefresh(): void;
|
|
59
61
|
static ɵfac: i0.ɵɵFactoryDeclaration<CardElement, never>;
|
|
60
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CardElement, "novo-card", never, { "padding": { "alias": "padding"; "required": false; }; "config": { "alias": "config"; "required": false; }; "title": { "alias": "title"; "required": false; }; "message": { "alias": "message"; "required": false; }; "messageIcon": { "alias": "messageIcon"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconTooltip": { "alias": "iconTooltip"; "required": false; }; "refresh": { "alias": "refresh"; "required": false; }; "close": { "alias": "close"; "required": false; }; "move": { "alias": "move"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "inset": { "alias": "inset"; "required": false; }; }, { "onClose": "onClose"; "onRefresh": "onRefresh"; }, never, ["novo-card-actions", "*", "footer,novo-card-footer,[novo-card-footer],[novoCardFooter]"], false, never>;
|
|
62
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CardElement, "novo-card", never, { "padding": { "alias": "padding"; "required": false; }; "config": { "alias": "config"; "required": false; }; "title": { "alias": "title"; "required": false; }; "message": { "alias": "message"; "required": false; }; "messageIcon": { "alias": "messageIcon"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconColorClass": { "alias": "iconColorClass"; "required": false; }; "iconTooltip": { "alias": "iconTooltip"; "required": false; }; "refresh": { "alias": "refresh"; "required": false; }; "close": { "alias": "close"; "required": false; }; "move": { "alias": "move"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "inset": { "alias": "inset"; "required": false; }; }, { "onClose": "onClose"; "onRefresh": "onRefresh"; }, never, ["novo-card-actions", "*", "footer,novo-card-footer,[novo-card-footer],[novoCardFooter]"], false, never>;
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
declare class NovoCardModule {
|
|
64
66
|
static ɵfac: i0.ɵɵFactoryDeclaration<NovoCardModule, never>;
|
|
65
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<NovoCardModule, [typeof CardElement, typeof CardActionsElement, typeof CardContentElement, typeof CardHeaderElement, typeof CardFooterElement], [typeof i2.CommonModule, typeof i3.NovoIconModule, typeof i4.NovoButtonModule, typeof i5.NovoLoadingModule, typeof i6.NovoTooltipModule], [typeof CardElement, typeof CardActionsElement, typeof CardContentElement, typeof CardHeaderElement, typeof CardFooterElement]>;
|
|
67
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NovoCardModule, [typeof CardElement, typeof CardActionsElement, typeof CardContentElement, typeof CardHeaderElement, typeof CardFooterElement], [typeof i2.CommonModule, typeof i3.NovoIconModule, typeof i4.NovoButtonModule, typeof i5.NovoLoadingModule, typeof i6.NovoTooltipModule, typeof i7.NovoCommonModule], [typeof CardElement, typeof CardActionsElement, typeof CardContentElement, typeof CardHeaderElement, typeof CardFooterElement]>;
|
|
66
68
|
static ɵinj: i0.ɵɵInjectorDeclaration<NovoCardModule>;
|
|
67
69
|
}
|
|
68
70
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { TemplateRef, ElementRef, OnInit,
|
|
2
|
+
import { TemplateRef, ElementRef, OnInit, OnDestroy, ChangeDetectorRef, Renderer2, DoCheck, ViewContainerRef, PipeTransform, InjectionToken, AfterViewChecked, EventEmitter, QueryList, NgZone } from '@angular/core';
|
|
3
3
|
import { Observable, Subject, Subscription } from 'rxjs';
|
|
4
4
|
import * as i3 from '@angular/common';
|
|
5
5
|
import { NgSwitch } from '@angular/common';
|
|
@@ -247,11 +247,14 @@ interface ThemeChangeEvent {
|
|
|
247
247
|
declare class NovoTheme {
|
|
248
248
|
private _defaultTheme;
|
|
249
249
|
private _currentTheme;
|
|
250
|
-
|
|
250
|
+
currentTheme: i0.Signal<NovoThemeOptions>;
|
|
251
|
+
onThemeChange: Observable<ThemeChangeEvent>;
|
|
252
|
+
document: Document;
|
|
251
253
|
/** Name of the theme being used. defaults to `bh2022-light`. */
|
|
252
254
|
get themeName(): string;
|
|
253
255
|
set themeName(value: string);
|
|
254
256
|
use(options: NovoThemeOptions): Observable<any>;
|
|
257
|
+
isBh2026: i0.Signal<boolean>;
|
|
255
258
|
/**
|
|
256
259
|
* Changes the current theme
|
|
257
260
|
*/
|
|
@@ -325,6 +328,13 @@ declare class VisibleDirective {
|
|
|
325
328
|
static ɵdir: i0.ɵɵDirectiveDeclaration<VisibleDirective, "[visible]", never, { "visible": { "alias": "visible"; "required": false; }; }, {}, never, never, false, never>;
|
|
326
329
|
}
|
|
327
330
|
|
|
331
|
+
declare class If2026ThemePipe implements PipeTransform {
|
|
332
|
+
theme: NovoTheme;
|
|
333
|
+
transform(value: any, elseVal?: any): any;
|
|
334
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<If2026ThemePipe, never>;
|
|
335
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<If2026ThemePipe, "ifBh2026Theme", false>;
|
|
336
|
+
}
|
|
337
|
+
|
|
328
338
|
/** @docs-private */
|
|
329
339
|
type Constructor<T> = new (...args: any[]) => T;
|
|
330
340
|
/**
|
|
@@ -568,7 +578,7 @@ declare class NovoOptionModule {
|
|
|
568
578
|
|
|
569
579
|
declare class NovoCommonModule {
|
|
570
580
|
static ɵfac: i0.ɵɵFactoryDeclaration<NovoCommonModule, never>;
|
|
571
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<NovoCommonModule, [typeof NovoTemplate, typeof NovoText, typeof NovoTitle, typeof NovoCaption, typeof NovoLabel, typeof NovoLink, typeof MarginDirective, typeof PaddingDirective, typeof BackgroundColorDirective, typeof TextColorDirective, typeof BorderDirective, typeof GapDirective, typeof AccentColorDirective, typeof FillColorDirective, typeof FlexDirective, typeof ThemeColorDirective, typeof SwitchCasesDirective, typeof VisibleDirective], [typeof i3.CommonModule, typeof NovoOptionModule], [typeof NovoTemplate, typeof NovoText, typeof NovoTitle, typeof NovoCaption, typeof NovoLabel, typeof NovoLink, typeof MarginDirective, typeof PaddingDirective, typeof BackgroundColorDirective, typeof TextColorDirective, typeof BorderDirective, typeof GapDirective, typeof AccentColorDirective, typeof FillColorDirective, typeof FlexDirective, typeof ThemeColorDirective, typeof SwitchCasesDirective, typeof VisibleDirective]>;
|
|
581
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NovoCommonModule, [typeof NovoTemplate, typeof NovoText, typeof NovoTitle, typeof NovoCaption, typeof NovoLabel, typeof NovoLink, typeof MarginDirective, typeof PaddingDirective, typeof BackgroundColorDirective, typeof TextColorDirective, typeof BorderDirective, typeof GapDirective, typeof AccentColorDirective, typeof FillColorDirective, typeof FlexDirective, typeof ThemeColorDirective, typeof SwitchCasesDirective, typeof VisibleDirective, typeof If2026ThemePipe], [typeof i3.CommonModule, typeof NovoOptionModule], [typeof NovoTemplate, typeof NovoText, typeof NovoTitle, typeof NovoCaption, typeof NovoLabel, typeof NovoLink, typeof MarginDirective, typeof PaddingDirective, typeof BackgroundColorDirective, typeof TextColorDirective, typeof BorderDirective, typeof GapDirective, typeof AccentColorDirective, typeof FillColorDirective, typeof FlexDirective, typeof ThemeColorDirective, typeof SwitchCasesDirective, typeof VisibleDirective, typeof If2026ThemePipe]>;
|
|
572
582
|
static ɵinj: i0.ɵɵInjectorDeclaration<NovoCommonModule>;
|
|
573
583
|
}
|
|
574
584
|
|
|
@@ -749,5 +759,5 @@ type HasTabIndexCtor = Constructor<HasTabIndex>;
|
|
|
749
759
|
/** Mixin to augment a directive with a `tabIndex` property. */
|
|
750
760
|
declare function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(base: T, defaultTabIndex?: number): HasTabIndexCtor & T;
|
|
751
761
|
|
|
752
|
-
export { AccentColorDirective, BackgroundColorDirective, BorderDirective, DEFAULT_THEME, ErrorStateMatcher, FillColorDirective, FlexDirective, GapDirective, MarginDirective, NOVO_OPTGROUP, NOVO_OPTION_PARENT_COMPONENT, NOVO_OVERLAY_CONTAINER, NovoBaseTextElement, NovoCaption, NovoCommonModule, NovoLabel, NovoLink, NovoOptgroup, NovoOptgroupBase, NovoOptgroupMixinBase, NovoOption, NovoOptionBase, NovoOptionModule, NovoOptionSelectionChange, NovoOverlayModule, NovoOverlayTemplateComponent, NovoPseudoCheckbox, NovoPseudoCheckboxModule, NovoTemplate, NovoText, NovoTheme, NovoThemeOptions, NovoTitle, PaddingDirective, ShowOnDirtyErrorStateMatcher, SwitchCasesDirective, TextColorDirective, ThemeColorDirective, VisibleDirective, _countGroupLabelsBeforeOption, _getOptionScrollPosition, getSpacingToken, mixinColor, mixinDisabled, mixinErrorState, mixinOverlay, mixinRequired, mixinSize, mixinTabIndex, normalizeThemeName };
|
|
762
|
+
export { AccentColorDirective, BackgroundColorDirective, BorderDirective, DEFAULT_THEME, ErrorStateMatcher, FillColorDirective, FlexDirective, GapDirective, If2026ThemePipe, MarginDirective, NOVO_OPTGROUP, NOVO_OPTION_PARENT_COMPONENT, NOVO_OVERLAY_CONTAINER, NovoBaseTextElement, NovoCaption, NovoCommonModule, NovoLabel, NovoLink, NovoOptgroup, NovoOptgroupBase, NovoOptgroupMixinBase, NovoOption, NovoOptionBase, NovoOptionModule, NovoOptionSelectionChange, NovoOverlayModule, NovoOverlayTemplateComponent, NovoPseudoCheckbox, NovoPseudoCheckboxModule, NovoTemplate, NovoText, NovoTheme, NovoThemeOptions, NovoTitle, PaddingDirective, ShowOnDirtyErrorStateMatcher, SwitchCasesDirective, TextColorDirective, ThemeColorDirective, VisibleDirective, _countGroupLabelsBeforeOption, _getOptionScrollPosition, getSpacingToken, mixinColor, mixinDisabled, mixinErrorState, mixinOverlay, mixinRequired, mixinSize, mixinTabIndex, normalizeThemeName };
|
|
753
763
|
export type { AbstractConstructor, CanColor, CanColorCtor, CanDisable, CanDisableCtor, CanRequire, CanRequireCtor, CanSize, CanSizeCtor, CanUpdateErrorState, CanUpdateErrorStateCtor, Constructor, ElementSize, HasElementRef, HasErrorState, HasOverlay, HasOverlayCtor, HasTabIndex, HasTabIndexCtor, NovoOptionParentComponent, NovoPseudoCheckboxShape, NovoPseudoCheckboxState, ThemeChangeEvent, ThemeName, ThemePalette, TypographyLength, TypographySize, TypographyWeight };
|
|
@@ -83,3 +83,14 @@
|
|
|
83
83
|
.novo-option-pseudo-checkbox {
|
|
84
84
|
margin-inline-end: calc(var(--menu-side-padding) / 2);
|
|
85
85
|
}
|
|
86
|
+
|
|
87
|
+
// bh2026: white dropdown bg needs explicit hover — --background-main resolves to white
|
|
88
|
+
[data-theme='bh2026'] .novo-option {
|
|
89
|
+
&:hover:not(.novo-option-inert) {
|
|
90
|
+
background: var(--color-background-subtle);
|
|
91
|
+
}
|
|
92
|
+
&:active:not(.novo-option-inert),
|
|
93
|
+
&.novo-active:not(.novo-option-inert) {
|
|
94
|
+
background: var(--color-background-subtle-hover);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -618,11 +618,87 @@ novo-data-table {
|
|
|
618
618
|
}
|
|
619
619
|
}
|
|
620
620
|
|
|
621
|
-
// bh2026:
|
|
621
|
+
// bh2026: banded rows, horizontal borders, modern spacing
|
|
622
622
|
[data-theme='bh2026'] {
|
|
623
623
|
.novo-data-table-header-cell,
|
|
624
624
|
.novo-data-table-header-cell > label {
|
|
625
|
-
font-weight: 600;
|
|
626
|
-
|
|
625
|
+
font-weight: var(--typography-font-weight-600);
|
|
626
|
+
font-size: var(--font-size-caption);
|
|
627
|
+
color: var(--color-text-subtle);
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
.novo-data-table-row,
|
|
631
|
+
.novo-data-table-header-row {
|
|
632
|
+
border-bottom: var(--border-width-border-default) solid var(--color-border-subtle);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
.novo-data-table-cell,
|
|
636
|
+
.novo-data-table-header-cell {
|
|
637
|
+
padding: var(--spacing-padding-sm) var(--spacing-padding-md);
|
|
638
|
+
color: var(--color-text-body);
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
// Restore zero vertical padding on action/control cells — the general rule above overrides
|
|
642
|
+
// the base .button-cell / .dropdown-cell padding: 0 5px, putting 8px above/below the button.
|
|
643
|
+
.novo-data-table-cell {
|
|
644
|
+
&.button-cell,
|
|
645
|
+
&.dropdown-cell,
|
|
646
|
+
&.expand-cell,
|
|
647
|
+
&.checkbox-cell {
|
|
648
|
+
padding-top: 0;
|
|
649
|
+
padding-bottom: 0;
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
.novo-data-table-cell.clickable {
|
|
654
|
+
color: var(--color-text-link);
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
cdk-table {
|
|
658
|
+
> .novo-data-table-row:nth-of-type(odd) {
|
|
659
|
+
.novo-data-table-cell,
|
|
660
|
+
.novo-data-table-button-cell,
|
|
661
|
+
.novo-data-table-dropdown-cell,
|
|
662
|
+
.novo-data-table-expand-cell,
|
|
663
|
+
.novo-data-table-checkbox-cell {
|
|
664
|
+
background-color: var(--color-background-muted);
|
|
665
|
+
}
|
|
666
|
+
+ .novo-data-table-detail-row {
|
|
667
|
+
background-color: var(--color-background-muted);
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
> .novo-data-table-row:nth-of-type(even) {
|
|
671
|
+
.novo-data-table-cell,
|
|
672
|
+
.novo-data-table-button-cell,
|
|
673
|
+
.novo-data-table-dropdown-cell,
|
|
674
|
+
.novo-data-table-expand-cell,
|
|
675
|
+
.novo-data-table-checkbox-cell {
|
|
676
|
+
background-color: var(--background-body);
|
|
677
|
+
}
|
|
678
|
+
+ .novo-data-table-detail-row {
|
|
679
|
+
background-color: var(--background-body);
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
> .novo-data-table-row:hover {
|
|
683
|
+
.novo-data-table-cell,
|
|
684
|
+
.novo-data-table-button-cell,
|
|
685
|
+
.novo-data-table-dropdown-cell,
|
|
686
|
+
.novo-data-table-expand-cell,
|
|
687
|
+
.novo-data-table-checkbox-cell {
|
|
688
|
+
background-color: var(--color-background-subtle);
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
> .novo-data-table-row.active {
|
|
692
|
+
.novo-data-table-cell,
|
|
693
|
+
.novo-data-table-button-cell,
|
|
694
|
+
.novo-data-table-dropdown-cell,
|
|
695
|
+
.novo-data-table-expand-cell,
|
|
696
|
+
.novo-data-table-checkbox-cell {
|
|
697
|
+
background-color: var(--color-utility-blue-100);
|
|
698
|
+
}
|
|
699
|
+
+ .novo-data-table-detail-row {
|
|
700
|
+
background-color: var(--color-utility-blue-100);
|
|
701
|
+
}
|
|
702
|
+
}
|
|
627
703
|
}
|
|
628
704
|
}
|
|
@@ -21,6 +21,21 @@
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
// bh2026: swap out the collapse icon for the sort-desc icon and style to ensure proper placement
|
|
25
|
+
:host-context([data-theme='bh2026']) {
|
|
26
|
+
::ng-deep .novo-button-icon {
|
|
27
|
+
font-size: 1em !important;
|
|
28
|
+
}
|
|
29
|
+
::ng-deep i.bhi-collapse {
|
|
30
|
+
display: inline-flex !important;
|
|
31
|
+
align-items: center;
|
|
32
|
+
justify-content: center;
|
|
33
|
+
}
|
|
34
|
+
::ng-deep i.bhi-collapse::before {
|
|
35
|
+
content: "\f226"; // bhi-sort-desc - all code points are fixed in bullhorn-icons
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
24
39
|
.dropdown-container {
|
|
25
40
|
background-color: var(--background-bright, $color-bright);
|
|
26
41
|
border-radius: var(--border-radius-sm);
|
|
@@ -109,15 +109,19 @@
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
// bh2026:
|
|
112
|
+
// bh2026: uppercase label + tighter value typography per Figma "Value - Finalized" spec
|
|
113
113
|
:host-context([data-theme='bh2026']) {
|
|
114
114
|
.novo-field-label {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
text-transform: var(--typography-input-label-sm-text-transform);
|
|
116
|
+
::ng-deep novo-label {
|
|
117
|
+
font-weight: var(--typography-input-label-sm-font-weight);
|
|
118
|
+
font-size: var(--typography-input-label-sm-font-size);
|
|
119
|
+
letter-spacing: var(--typography-input-label-sm-letter-spacing);
|
|
120
|
+
color: var(--color-text-body);
|
|
121
|
+
}
|
|
118
122
|
}
|
|
119
123
|
.novo-field-input ::ng-deep .novo-input-element {
|
|
120
|
-
font-size:
|
|
121
|
-
font-weight:
|
|
124
|
+
font-size: var(--typography-input-value-default-font-size);
|
|
125
|
+
font-weight: var(--typography-input-value-default-font-weight);
|
|
122
126
|
}
|
|
123
127
|
}
|
|
@@ -50,6 +50,19 @@ novo-control-group {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
// bh2026: description text and column-header labels match decoration weight/size of hint and field-message
|
|
54
|
+
[data-theme='bh2026'] & {
|
|
55
|
+
.novo-section-header label.novo-control-group-description {
|
|
56
|
+
font-size: var(--typography-input-value-sm-font-size);
|
|
57
|
+
font-weight: var(--typography-input-value-sm-font-weight);
|
|
58
|
+
color: var(--color-text-subtle);
|
|
59
|
+
}
|
|
60
|
+
.novo-control-group-labels .novo-control-group-control-label > span {
|
|
61
|
+
font-size: var(--typography-input-value-sm-font-size);
|
|
62
|
+
font-weight: var(--typography-input-value-sm-font-weight);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
53
66
|
.novo-control-group-controls {
|
|
54
67
|
display: flex;
|
|
55
68
|
flex-wrap: nowrap;
|
package/elements/form/Form.scss
CHANGED
|
@@ -819,3 +819,49 @@ control-prompt-modal {
|
|
|
819
819
|
min-width: 110px;
|
|
820
820
|
}
|
|
821
821
|
}
|
|
822
|
+
|
|
823
|
+
// bh2026: uppercase label + tighter value typography per Figma "Value - Finalized" spec
|
|
824
|
+
// ViewEncapsulation.None: use plain selectors (not :host-context which is Shadow DOM only)
|
|
825
|
+
:root[data-theme='bh2026'] {
|
|
826
|
+
label.novo-control-label {
|
|
827
|
+
&.novo-control-filled,
|
|
828
|
+
&.novo-control-focused,
|
|
829
|
+
&.novo-control-always-active {
|
|
830
|
+
font-weight: var(--typography-input-label-sm-font-weight) !important;
|
|
831
|
+
font-size: var(--typography-input-label-sm-font-size) !important;
|
|
832
|
+
letter-spacing: var(--typography-input-label-sm-letter-spacing);
|
|
833
|
+
text-transform: var(--typography-input-label-sm-text-transform);
|
|
834
|
+
color: var(--color-text-body) !important;
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
.novo-form-control-label {
|
|
838
|
+
font-weight: var(--typography-input-label-sm-font-weight) !important;
|
|
839
|
+
font-size: var(--typography-input-label-sm-font-size) !important;
|
|
840
|
+
letter-spacing: var(--typography-input-label-sm-letter-spacing);
|
|
841
|
+
text-transform: var(--typography-input-label-sm-text-transform);
|
|
842
|
+
color: var(--color-text-body) !important;
|
|
843
|
+
}
|
|
844
|
+
.novo-control-outer-container input:not([type='checkbox']):not([type='radio']) {
|
|
845
|
+
font-size: var(--typography-input-value-default-font-size) !important;
|
|
846
|
+
font-weight: var(--typography-input-value-default-font-weight) !important;
|
|
847
|
+
}
|
|
848
|
+
.field-message,
|
|
849
|
+
novo-tip-well.active {
|
|
850
|
+
font-size: var(--typography-input-value-sm-font-size);
|
|
851
|
+
font-weight: var(--typography-input-value-sm-font-weight);
|
|
852
|
+
color: var(--color-text-subtle);
|
|
853
|
+
|
|
854
|
+
// $grey is a compile-time SCSS variable — explicit selectors required to override
|
|
855
|
+
.character-count,
|
|
856
|
+
.record-count {
|
|
857
|
+
font-size: var(--typography-input-value-sm-font-size);
|
|
858
|
+
color: var(--color-text-subtle);
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
.error-message {
|
|
862
|
+
.character-count {
|
|
863
|
+
font-size: var(--typography-input-value-sm-font-size);
|
|
864
|
+
color: var(--color-text-subtle);
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
}
|