novo-elements 13.2.0 → 13.3.0
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 -1
- package/elements/button/styles/button-standard.scss +14 -0
- package/elements/button/styles/button.scss +11 -0
- package/elements/card/Card.scss +80 -19
- package/elements/card/CardContent.scss +3 -0
- package/elements/card/CardHeader.scss +23 -0
- package/elements/card/index.d.ts +5 -3
- package/elements/category-dropdown/CategoryDropdown.scss +1 -1
- package/elements/checkbox/CheckList.scss +69 -0
- package/elements/checkbox/Checkbox.scss +104 -0
- package/elements/chips/Chip.scss +3 -1
- 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 +81 -3
- package/elements/data-table/pagination/data-table-pagination.component.scss +73 -0
- package/elements/date-picker/DatePicker.scss +1 -6
- package/elements/date-time-picker/_DateTimePicker.scss +1 -1
- package/elements/dropdown/Dropdown.scss +17 -1
- 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 +45 -3
- package/elements/layout/index.d.ts +10 -2
- package/elements/list/list-item-content.scss +11 -10
- package/elements/menu/menu-content.component.scss +1 -0
- package/elements/modal/modal.component.scss +3 -13
- package/elements/modal/notification.component.scss +1 -6
- package/elements/picker/extras/picker-results/PickerResults.scss +51 -0
- package/elements/progress/Progress.scss +8 -0
- package/elements/progress/ProgressBar.scss +4 -1
- package/elements/search/SearchBox.scss +53 -0
- package/elements/search/index.d.ts +19 -9
- package/elements/select/Select.scss +1 -0
- package/elements/simple-table/table.scss +1 -1
- package/elements/stepper/stepper.component.scss +4 -4
- package/elements/switch/Switch.scss +39 -3
- package/elements/tabbed-group-picker/TabbedGroupPicker.scss +47 -0
- package/elements/tabs/tab.scss +17 -14
- package/elements/tiles/Tiles.scss +24 -2
- package/elements/time-picker/TimePicker.scss +2 -2
- package/elements/tip-well/TipWell.scss +34 -0
- package/elements/tip-well/index.d.ts +5 -1
- package/elements/toolbar/toolbar.component.scss +15 -0
- package/elements/tooltip/Tooltip.scss +1 -6
- 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-category-dropdown.mjs +2 -2
- package/fesm2022/novo-elements-elements-category-dropdown.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-checkbox.mjs +4 -4
- package/fesm2022/novo-elements-elements-checkbox.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-chips.mjs +2 -2
- package/fesm2022/novo-elements-elements-chips.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-common.mjs +48 -17
- package/fesm2022/novo-elements-elements-common.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-data-table.mjs +4 -4
- package/fesm2022/novo-elements-elements-data-table.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-date-picker.mjs +2 -2
- package/fesm2022/novo-elements-elements-date-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-date-time-picker.mjs +2 -2
- package/fesm2022/novo-elements-elements-date-time-picker.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 +7 -7
- 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-layout.mjs +29 -13
- package/fesm2022/novo-elements-elements-layout.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-menu.mjs +2 -2
- package/fesm2022/novo-elements-elements-menu.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-modal.mjs +4 -4
- package/fesm2022/novo-elements-elements-modal.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 +63 -17
- package/fesm2022/novo-elements-elements-search.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-select.mjs +2 -2
- package/fesm2022/novo-elements-elements-select.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-switch.mjs +2 -2
- package/fesm2022/novo-elements-elements-switch.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-time-picker.mjs +2 -2
- package/fesm2022/novo-elements-elements-time-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tip-well.mjs +26 -6
- package/fesm2022/novo-elements-elements-tip-well.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-toolbar.mjs +2 -2
- package/fesm2022/novo-elements-elements-toolbar.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tooltip.mjs +2 -2
- package/fesm2022/novo-elements-elements-tooltip.mjs.map +1 -1
- package/fesm2022/novo-elements-utils.mjs +4822 -364
- package/fesm2022/novo-elements-utils.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/content/links.scss +4 -0
- package/styles/themes/bh2026.scss +131 -53
- package/utils/index.d.ts +2 -2
|
@@ -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
|
+
min-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
|
+
}
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
background: var(--color-white);
|
|
12
12
|
color: var(--button-secondary-text, var(--color-positive));
|
|
13
13
|
border: var(--button-secondary-border, 1px solid $positive);
|
|
14
|
-
padding: 0 calc(#{var(--spacing-md)} - 1px);
|
|
15
14
|
|
|
16
15
|
i.loading {
|
|
17
16
|
margin-left: 0.8rem;
|
|
@@ -50,3 +49,17 @@
|
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
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);
|
|
@@ -117,37 +120,95 @@
|
|
|
117
120
|
}
|
|
118
121
|
}
|
|
119
122
|
|
|
120
|
-
// bh2026:
|
|
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-md
|
|
132
|
-
|
|
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 {
|
|
135
|
-
|
|
136
|
-
display: none;
|
|
137
|
-
}
|
|
138
|
-
|
|
138
|
+
padding-inline: var(--spacing-gutter);
|
|
139
139
|
h1,
|
|
140
140
|
h2,
|
|
141
141
|
h3 {
|
|
142
|
-
font-size:
|
|
143
|
-
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
|
+
}
|
|
144
148
|
}
|
|
149
|
+
|
|
150
|
+
::ng-deep i {
|
|
151
|
+
margin: 0;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.card-move-handle {
|
|
156
|
+
position: absolute;
|
|
157
|
+
left: var(--spacing-padding-xxsm);
|
|
158
|
+
color: var(--color-content-icon, #89909A);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.actions {
|
|
162
|
+
display: flex;
|
|
163
|
+
align-items: center;
|
|
164
|
+
gap: var(--spacing-gap-sm);
|
|
145
165
|
}
|
|
146
166
|
|
|
147
167
|
novo-button {
|
|
148
|
-
color:
|
|
149
|
-
|
|
150
|
-
|
|
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 {
|
|
176
|
+
color: var(--color-content-subtle, #5d7798);
|
|
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
|
+
}
|
|
151
212
|
}
|
|
152
213
|
}
|
|
153
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
|
|
|
@@ -88,3 +88,72 @@
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
+
|
|
92
|
+
// bh2026: CSS-based checkbox rendering — replaces icon font glyphs
|
|
93
|
+
:host-context([data-theme='bh2026']) {
|
|
94
|
+
.novo-checkbox-group {
|
|
95
|
+
label i.bhi-checkbox-empty,
|
|
96
|
+
label i.bhi-checkbox-filled {
|
|
97
|
+
font-size: 0;
|
|
98
|
+
display: inline-flex;
|
|
99
|
+
align-self: center;
|
|
100
|
+
width: 16px;
|
|
101
|
+
height: 16px;
|
|
102
|
+
position: relative;
|
|
103
|
+
flex-shrink: 0;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
label i.bhi-checkbox-empty {
|
|
107
|
+
&::before {
|
|
108
|
+
content: '';
|
|
109
|
+
position: absolute;
|
|
110
|
+
inset: 0;
|
|
111
|
+
border: 1px solid var(--color-border-control);
|
|
112
|
+
border-radius: 2px;
|
|
113
|
+
background: white;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
label i.bhi-checkbox-filled {
|
|
118
|
+
&::before {
|
|
119
|
+
content: '';
|
|
120
|
+
position: absolute;
|
|
121
|
+
inset: 0;
|
|
122
|
+
background: var(--color-background-utility-positive);
|
|
123
|
+
border: 1px solid var(--color-utility-blue-600);
|
|
124
|
+
border-radius: 2px;
|
|
125
|
+
}
|
|
126
|
+
&::after {
|
|
127
|
+
content: '';
|
|
128
|
+
position: absolute;
|
|
129
|
+
left: 3px;
|
|
130
|
+
top: 4px;
|
|
131
|
+
width: 9px;
|
|
132
|
+
height: 5px;
|
|
133
|
+
border-left: 2px solid var(--color-utility-blue-600);
|
|
134
|
+
border-bottom: 2px solid var(--color-utility-blue-600);
|
|
135
|
+
transform: rotate(-45deg);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
&.disabled {
|
|
140
|
+
label {
|
|
141
|
+
opacity: 1;
|
|
142
|
+
}
|
|
143
|
+
label i.bhi-checkbox-empty {
|
|
144
|
+
&::before {
|
|
145
|
+
background: var(--color-background-utility-positive);
|
|
146
|
+
border-color: var(--color-border-input-disabled);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
label i.bhi-checkbox-filled {
|
|
150
|
+
&::before {
|
|
151
|
+
border-color: var(--color-border-input-disabled);
|
|
152
|
+
}
|
|
153
|
+
&::after {
|
|
154
|
+
border-color: var(--color-border-input-disabled);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
@@ -91,3 +91,107 @@
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
+
|
|
95
|
+
// bh2026: CSS-based checkbox rendering — replaces icon font glyphs
|
|
96
|
+
:host-context([data-theme='bh2026']) {
|
|
97
|
+
.novo-checkbox-group {
|
|
98
|
+
// Suppress glyph and establish box dimensions for all box-style states
|
|
99
|
+
label i.bhi-checkbox-empty,
|
|
100
|
+
label i.bhi-checkbox-filled,
|
|
101
|
+
label i.bhi-checkbox-indeterminate {
|
|
102
|
+
font-size: 0;
|
|
103
|
+
display: inline-flex;
|
|
104
|
+
align-self: center;
|
|
105
|
+
width: 16px;
|
|
106
|
+
height: 16px;
|
|
107
|
+
position: relative;
|
|
108
|
+
flex-shrink: 0;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Unchecked: white box with gray border
|
|
112
|
+
label i.bhi-checkbox-empty {
|
|
113
|
+
&::before {
|
|
114
|
+
content: '';
|
|
115
|
+
position: absolute;
|
|
116
|
+
inset: 0;
|
|
117
|
+
border: 1px solid var(--color-border-control);
|
|
118
|
+
border-radius: 2px;
|
|
119
|
+
background: white;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Checked: light-blue box with brand-blue border and checkmark
|
|
124
|
+
label i.bhi-checkbox-filled {
|
|
125
|
+
&::before {
|
|
126
|
+
content: '';
|
|
127
|
+
position: absolute;
|
|
128
|
+
inset: 0;
|
|
129
|
+
background: var(--color-background-utility-positive);
|
|
130
|
+
border: 1px solid var(--color-utility-blue-600);
|
|
131
|
+
border-radius: 2px;
|
|
132
|
+
}
|
|
133
|
+
&::after {
|
|
134
|
+
content: '';
|
|
135
|
+
position: absolute;
|
|
136
|
+
left: 3px;
|
|
137
|
+
top: 4px;
|
|
138
|
+
width: 9px;
|
|
139
|
+
height: 5px;
|
|
140
|
+
border-left: 2px solid var(--color-utility-blue-600);
|
|
141
|
+
border-bottom: 2px solid var(--color-utility-blue-600);
|
|
142
|
+
transform: rotate(-45deg);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Indeterminate: light-blue box with brand-blue border and dash
|
|
147
|
+
label i.bhi-checkbox-indeterminate {
|
|
148
|
+
&::before {
|
|
149
|
+
content: '';
|
|
150
|
+
position: absolute;
|
|
151
|
+
inset: 0;
|
|
152
|
+
background: var(--color-background-utility-positive);
|
|
153
|
+
border: 1px solid var(--color-utility-blue-600);
|
|
154
|
+
border-radius: 2px;
|
|
155
|
+
}
|
|
156
|
+
&::after {
|
|
157
|
+
content: '';
|
|
158
|
+
position: absolute;
|
|
159
|
+
left: 4px;
|
|
160
|
+
top: 50%;
|
|
161
|
+
transform: translateY(-50%);
|
|
162
|
+
width: 8px;
|
|
163
|
+
height: 2px;
|
|
164
|
+
background: var(--color-utility-blue-600);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Disabled: override the base opacity:0.4 and use explicit muted colors
|
|
169
|
+
&.disabled {
|
|
170
|
+
label {
|
|
171
|
+
opacity: 1;
|
|
172
|
+
}
|
|
173
|
+
label i.bhi-checkbox-empty {
|
|
174
|
+
&::before {
|
|
175
|
+
background: var(--color-background-utility-positive);
|
|
176
|
+
border-color: var(--color-border-input-disabled);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
label i.bhi-checkbox-filled {
|
|
180
|
+
&::before {
|
|
181
|
+
border-color: var(--color-border-input-disabled);
|
|
182
|
+
}
|
|
183
|
+
&::after {
|
|
184
|
+
border-color: var(--color-border-input-disabled);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
label i.bhi-checkbox-indeterminate {
|
|
188
|
+
&::before {
|
|
189
|
+
border-color: var(--color-border-input-disabled);
|
|
190
|
+
}
|
|
191
|
+
&::after {
|
|
192
|
+
background: var(--color-border-input-disabled);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
package/elements/chips/Chip.scss
CHANGED
|
@@ -46,7 +46,9 @@ $chip-spacing: (
|
|
|
46
46
|
@include novo-body-text();
|
|
47
47
|
background: var(--background-main);
|
|
48
48
|
border: 1px solid transparent;
|
|
49
|
-
transition:
|
|
49
|
+
transition-duration: 0.2s;
|
|
50
|
+
transition-timing-function: ease-in-out;
|
|
51
|
+
transition-property: color, opacity, border-color, border-width, background-color;
|
|
50
52
|
display: inline-flex;
|
|
51
53
|
align-items: center;
|
|
52
54
|
cursor: default;
|
|
@@ -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
|
+
}
|