novo-elements 13.2.0 → 13.4.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/addons/ckeditor/CKEditor.scss +8 -0
- package/elements/agenda/week/AgendaWeekView.scss +1 -1
- 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 +12 -1
- 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 +47 -1
- package/elements/chips/Chips.scss +9 -0
- package/elements/common/index.d.ts +14 -4
- package/elements/common/option/option.component.scss +11 -0
- package/elements/common/typography/text.mixins.scss +1 -1
- 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-picker/DatePickerInput.scss +5 -0
- 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 +260 -1
- package/elements/form/extras/address/Address.scss +77 -0
- package/elements/form/fieldset-header.scss +32 -0
- package/elements/form/index.d.ts +14 -4
- package/elements/header/Header.scss +45 -3
- package/elements/layout/index.d.ts +28 -4
- 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/Picker.scss +26 -5
- package/elements/picker/extras/picker-results/PickerResults.scss +52 -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 -1
- 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 +53 -14
- package/elements/tiles/Tiles.scss +24 -2
- package/elements/time-picker/TimePicker.scss +2 -2
- package/elements/time-picker/TimePickerInput.scss +7 -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 +19 -22
- package/elements/tooltip/index.d.ts +2 -1
- package/fesm2022/novo-elements-addons-ckeditor.mjs +2 -2
- package/fesm2022/novo-elements-addons-ckeditor.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-agenda.mjs +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-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 +6 -6
- package/fesm2022/novo-elements-elements-chips.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-common.mjs +52 -21
- 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 +4 -4
- 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 +135 -78
- 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 +73 -14
- 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-multi-picker.mjs +2 -2
- package/fesm2022/novo-elements-elements-multi-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-picker.mjs +6 -6
- 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 +4 -4
- 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 +8 -4
- 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/styles/typography.scss +6 -0
- package/styles/variables.scss +2 -0
- package/utils/index.d.ts +2 -2
|
@@ -148,3 +148,80 @@
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
|
+
|
|
152
|
+
:host-context([data-theme='bh2026']) {
|
|
153
|
+
gap: var(--field-spacing-gap);
|
|
154
|
+
|
|
155
|
+
// Take out the space that the overlay template takes up between the fields
|
|
156
|
+
novo-overlay-template {
|
|
157
|
+
display: none;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Each sub-field gets its own bordered input treatment
|
|
161
|
+
.street-address,
|
|
162
|
+
.apt,
|
|
163
|
+
.city,
|
|
164
|
+
.state,
|
|
165
|
+
.zip,
|
|
166
|
+
.country-name {
|
|
167
|
+
border: var(--field-border-width-default) solid var(--field-color-border-default);
|
|
168
|
+
border-radius: var(--field-border-radius-default);
|
|
169
|
+
background: var(--field-color-background-default);
|
|
170
|
+
padding: var(--field-spacing-padding-vertical) var(--field-spacing-padding-horizontal) !important;
|
|
171
|
+
min-height: 4rem;
|
|
172
|
+
box-sizing: border-box;
|
|
173
|
+
gap: var(--field-spacing-gap);
|
|
174
|
+
|
|
175
|
+
&:hover {
|
|
176
|
+
border-color: var(--field-color-border-hover);
|
|
177
|
+
}
|
|
178
|
+
&:focus-within {
|
|
179
|
+
border-width: var(--field-border-width-focus);
|
|
180
|
+
border-color: var(--field-color-border-focus);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
input,
|
|
184
|
+
novo-picker > ::ng-deep input {
|
|
185
|
+
border: none !important;
|
|
186
|
+
border-bottom: none !important;
|
|
187
|
+
&:hover,
|
|
188
|
+
&:focus {
|
|
189
|
+
border: none !important;
|
|
190
|
+
border-bottom: none !important;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
div[type="button"] {
|
|
194
|
+
border-bottom: none !important;
|
|
195
|
+
padding: 0 !important;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
&.disabled {
|
|
199
|
+
border-color: var(--field-color-border-disabled);
|
|
200
|
+
border-style: dashed;
|
|
201
|
+
background: var(--field-color-background-disabled);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
&.invalid {
|
|
205
|
+
border-color: var(--field-color-border-negative);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
i {
|
|
209
|
+
border-bottom: none !important;
|
|
210
|
+
|
|
211
|
+
&.required-indicator.bhi-circle {
|
|
212
|
+
line-height: 1rem;
|
|
213
|
+
}
|
|
214
|
+
&.required-indicator.bhi-check {
|
|
215
|
+
line-height: 1.8rem;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// address1 full width on its own row; address2 full width on the row below
|
|
221
|
+
.street-address {
|
|
222
|
+
flex: 0 0 100%;
|
|
223
|
+
}
|
|
224
|
+
.apt {
|
|
225
|
+
flex: 0 0 100%;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
@@ -15,3 +15,35 @@
|
|
|
15
15
|
display: none;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
+
|
|
19
|
+
:host-context([data-theme='bh2026'] .card-section) {
|
|
20
|
+
padding: var(--card-spacing-header-padding-vertical) var(--card-spacing-header-padding-horizontal);
|
|
21
|
+
margin: 0 0 var(--card-spacing-header-padding-vertical);
|
|
22
|
+
background: var(--background-bright);
|
|
23
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
24
|
+
align-items: center;
|
|
25
|
+
gap: var(--spacing-gap-sm);
|
|
26
|
+
font-size: var(--typography-title-small-font-size, 1.8rem);
|
|
27
|
+
font-weight: 600;
|
|
28
|
+
line-height: var(--typography-title-small-line-height, 2.4rem);
|
|
29
|
+
letter-spacing: var(--typography-title-small-letter-spacing, 0);
|
|
30
|
+
text-transform: capitalize;
|
|
31
|
+
color: var(--color-text-body);
|
|
32
|
+
> span {
|
|
33
|
+
flex: 1 0 0;
|
|
34
|
+
min-width: 0;
|
|
35
|
+
}
|
|
36
|
+
::ng-deep novo-icon {
|
|
37
|
+
font-size: 1.6rem;
|
|
38
|
+
width: 1.6rem;
|
|
39
|
+
height: 1.6rem;
|
|
40
|
+
flex-shrink: 0;
|
|
41
|
+
color: var(--color-content-icon);
|
|
42
|
+
margin: 0;
|
|
43
|
+
i {
|
|
44
|
+
font-size: 1.6rem;
|
|
45
|
+
width: 1.6rem;
|
|
46
|
+
height: 1.6rem;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
package/elements/form/index.d.ts
CHANGED
|
@@ -945,8 +945,10 @@ declare class NovoControlTemplates implements AfterViewInit {
|
|
|
945
945
|
declare class NovoFieldsetHeaderElement {
|
|
946
946
|
title: string;
|
|
947
947
|
icon: string;
|
|
948
|
+
cardSection: boolean;
|
|
949
|
+
get cardIcon(): string;
|
|
948
950
|
static ɵfac: i0.ɵɵFactoryDeclaration<NovoFieldsetHeaderElement, never>;
|
|
949
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NovoFieldsetHeaderElement, "novo-fieldset-header", never, { "title": { "alias": "title"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
951
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NovoFieldsetHeaderElement, "novo-fieldset-header", never, { "title": { "alias": "title"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "cardSection": { "alias": "cardSection"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
950
952
|
}
|
|
951
953
|
declare class NovoFieldsetElement {
|
|
952
954
|
controls: Array<any>;
|
|
@@ -958,8 +960,9 @@ declare class NovoFieldsetElement {
|
|
|
958
960
|
isEmbedded: boolean;
|
|
959
961
|
isInlineEmbedded: boolean;
|
|
960
962
|
hidden: boolean;
|
|
963
|
+
cardSection: boolean;
|
|
961
964
|
static ɵfac: i0.ɵɵFactoryDeclaration<NovoFieldsetElement, never>;
|
|
962
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NovoFieldsetElement, "novo-fieldset", never, { "controls": { "alias": "controls"; "required": false; }; "form": { "alias": "form"; "required": false; }; "title": { "alias": "title"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "index": { "alias": "index"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "isEmbedded": { "alias": "isEmbedded"; "required": false; }; "isInlineEmbedded": { "alias": "isInlineEmbedded"; "required": false; }; "hidden": { "alias": "hidden"; "required": false; }; }, {}, never, never, false, never>;
|
|
965
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NovoFieldsetElement, "novo-fieldset", never, { "controls": { "alias": "controls"; "required": false; }; "form": { "alias": "form"; "required": false; }; "title": { "alias": "title"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "index": { "alias": "index"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "isEmbedded": { "alias": "isEmbedded"; "required": false; }; "isInlineEmbedded": { "alias": "isInlineEmbedded"; "required": false; }; "hidden": { "alias": "hidden"; "required": false; }; "cardSection": { "alias": "cardSection"; "required": false; }; }, {}, never, never, false, never>;
|
|
963
966
|
}
|
|
964
967
|
declare class NovoDynamicFormElement implements OnChanges, OnInit, AfterContentInit {
|
|
965
968
|
private element;
|
|
@@ -970,6 +973,7 @@ declare class NovoDynamicFormElement implements OnChanges, OnInit, AfterContentI
|
|
|
970
973
|
layout: string;
|
|
971
974
|
hideNonRequiredFields: boolean;
|
|
972
975
|
autoFocusFirstField: boolean;
|
|
976
|
+
readonly hasCardSections: i0.InputSignal<boolean>;
|
|
973
977
|
customTemplates: QueryList<NovoTemplate>;
|
|
974
978
|
private fieldsAlreadyHidden;
|
|
975
979
|
allFieldsRequired: boolean;
|
|
@@ -977,10 +981,14 @@ declare class NovoDynamicFormElement implements OnChanges, OnInit, AfterContentI
|
|
|
977
981
|
showingAllFields: boolean;
|
|
978
982
|
showingRequiredFields: boolean;
|
|
979
983
|
numControls: number;
|
|
984
|
+
private readonly theme;
|
|
985
|
+
readonly effectiveCardSections: i0.Signal<boolean>;
|
|
986
|
+
get visibleFieldsets(): NovoFieldset[];
|
|
980
987
|
constructor(element: ElementRef, templates: NovoTemplateService);
|
|
981
988
|
ngOnInit(): void;
|
|
982
989
|
ngOnChanges(changes?: SimpleChanges): void;
|
|
983
990
|
ngAfterContentInit(): void;
|
|
991
|
+
hasVisibleControls(fieldset: NovoFieldset): boolean;
|
|
984
992
|
showAllFields(): void;
|
|
985
993
|
showOnlyRequired(hideRequiredWithValue: any): void;
|
|
986
994
|
get values(): any;
|
|
@@ -988,7 +996,7 @@ declare class NovoDynamicFormElement implements OnChanges, OnInit, AfterContentI
|
|
|
988
996
|
updatedValues(): any;
|
|
989
997
|
forceValidation(): void;
|
|
990
998
|
static ɵfac: i0.ɵɵFactoryDeclaration<NovoDynamicFormElement, never>;
|
|
991
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NovoDynamicFormElement, "novo-dynamic-form", never, { "controls": { "alias": "controls"; "required": false; }; "fieldsets": { "alias": "fieldsets"; "required": false; }; "form": { "alias": "form"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "hideNonRequiredFields": { "alias": "hideNonRequiredFields"; "required": false; }; "autoFocusFirstField": { "alias": "autoFocusFirstField"; "required": false; }; }, {}, ["customTemplates"], ["form-title", "form-subtitle"], false, never>;
|
|
999
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NovoDynamicFormElement, "novo-dynamic-form", never, { "controls": { "alias": "controls"; "required": false; }; "fieldsets": { "alias": "fieldsets"; "required": false; }; "form": { "alias": "form"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "hideNonRequiredFields": { "alias": "hideNonRequiredFields"; "required": false; }; "autoFocusFirstField": { "alias": "autoFocusFirstField"; "required": false; }; "hasCardSections": { "alias": "hasCardSections"; "required": false; "isSignal": true; }; }, {}, ["customTemplates"], ["form-title", "form-subtitle"], false, never>;
|
|
992
1000
|
}
|
|
993
1001
|
|
|
994
1002
|
interface AddressLookupResult {
|
|
@@ -1301,6 +1309,8 @@ declare class NovoFormElement implements AfterContentInit, OnInit {
|
|
|
1301
1309
|
form: NovoFormGroup;
|
|
1302
1310
|
layout: string;
|
|
1303
1311
|
hideHeader: boolean;
|
|
1312
|
+
readonly hasCardSections: i0.InputSignal<boolean>;
|
|
1313
|
+
readonly effectiveCardSections: i0.Signal<boolean>;
|
|
1304
1314
|
customTemplates: QueryList<NovoTemplate>;
|
|
1305
1315
|
showingAllFields: boolean;
|
|
1306
1316
|
showingRequiredFields: boolean;
|
|
@@ -1313,7 +1323,7 @@ declare class NovoFormElement implements AfterContentInit, OnInit {
|
|
|
1313
1323
|
showOnlyRequired(hideRequiredWithValue: any): void;
|
|
1314
1324
|
forceValidation(): void;
|
|
1315
1325
|
static ɵfac: i0.ɵɵFactoryDeclaration<NovoFormElement, never>;
|
|
1316
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NovoFormElement, "novo-form", never, { "form": { "alias": "form"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "hideHeader": { "alias": "hideHeader"; "required": false; }; }, {}, ["customTemplates"], ["form-title", "form-subtitle", "*"], false, never>;
|
|
1326
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NovoFormElement, "novo-form", never, { "form": { "alias": "form"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "hideHeader": { "alias": "hideHeader"; "required": false; }; "hasCardSections": { "alias": "hasCardSections"; "required": false; "isSignal": true; }; }, {}, ["customTemplates"], ["form-title", "form-subtitle", "*"], false, never>;
|
|
1317
1327
|
}
|
|
1318
1328
|
|
|
1319
1329
|
declare class NovoFormModule {
|
|
@@ -152,9 +152,51 @@
|
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
-
// bh2026:
|
|
155
|
+
// bh2026: frosted translucent header + entity squircle icon
|
|
156
156
|
:host-context([data-theme='bh2026']) {
|
|
157
|
-
&
|
|
158
|
-
|
|
157
|
+
& > section {
|
|
158
|
+
gap: var(--spacing-gap-lg);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.header-actions {
|
|
162
|
+
gap: var(--spacing-gap-sm);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
::ng-deep utils,
|
|
166
|
+
::ng-deep novo-utils {
|
|
167
|
+
gap: var(--spacing-gap-sm);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
&[class*='novo-accent-'] {
|
|
171
|
+
background: var(--header-background, var(--color-transparency-white-90));
|
|
172
|
+
backdrop-filter: blur(12px);
|
|
173
|
+
box-shadow: 0 1px 2px var(--color-transparency-charcoal-08);
|
|
174
|
+
padding-top: var(--spacing-md);
|
|
175
|
+
padding-left: var(--spacing-lg);
|
|
176
|
+
padding-right: var(--spacing-lg);
|
|
177
|
+
|
|
178
|
+
& > section:first-of-type {
|
|
179
|
+
border-bottom: none;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
utils {
|
|
183
|
+
color: var(--color-text-subtle);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
@each $entity, $color in $entity-colors {
|
|
188
|
+
&.novo-accent-#{$entity} {
|
|
189
|
+
::ng-deep .header-icon i {
|
|
190
|
+
color: var(--color-white);
|
|
191
|
+
background: $color;
|
|
192
|
+
border-radius: var(--border-radius-sm);
|
|
193
|
+
width: var(--typography-font-size-40);
|
|
194
|
+
height: var(--typography-font-size-40);
|
|
195
|
+
display: flex;
|
|
196
|
+
align-items: center;
|
|
197
|
+
justify-content: center;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
159
200
|
}
|
|
201
|
+
background-color: transparent;
|
|
160
202
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { AfterContentInit, ChangeDetectorRef,
|
|
2
|
+
import { ElementRef, AfterContentInit, ChangeDetectorRef, NgZone, DestroyRef, InjectionToken, AfterContentChecked, OnDestroy, EventEmitter, DoCheck, QueryList } from '@angular/core';
|
|
3
3
|
import { Directionality } from '@angular/cdk/bidi';
|
|
4
4
|
import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
|
|
5
5
|
import { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/overlay';
|
|
@@ -9,6 +9,14 @@ import { FocusTrapFactory, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';
|
|
|
9
9
|
import { Platform } from '@angular/cdk/platform';
|
|
10
10
|
import * as i6 from '@angular/common';
|
|
11
11
|
|
|
12
|
+
type NavTransitionState = 'collapsed' | 'expanding' | 'expanded' | 'collapsing';
|
|
13
|
+
declare class CollapsibleNavExpansionEvent extends Event {
|
|
14
|
+
srcEvent: Event;
|
|
15
|
+
private _expandPrevented;
|
|
16
|
+
get expandPrevented(): boolean;
|
|
17
|
+
constructor(srcEvent: Event);
|
|
18
|
+
preventExpand(): void;
|
|
19
|
+
}
|
|
12
20
|
/**
|
|
13
21
|
* A slide-out navigation panel that expands to a full-width panel or collapses to a narrow icon rail.
|
|
14
22
|
* Generic building block: consumers project their own header, body, and footer content.
|
|
@@ -20,10 +28,22 @@ declare class NovoCollapsibleNavComponent {
|
|
|
20
28
|
expandedWidth: i0.InputSignal<string>;
|
|
21
29
|
/** Width of the panel when collapsed to the icon rail. */
|
|
22
30
|
collapsedWidth: i0.InputSignal<string>;
|
|
31
|
+
/** Time in ms to delay between the user entering the nav region, and expanding it */
|
|
32
|
+
expandDelay: i0.ModelSignal<number>;
|
|
23
33
|
/** When true, hovering a collapsed panel temporarily expands it as an overlay without affecting layout. */
|
|
24
34
|
overlayOnHover: i0.InputSignal<boolean>;
|
|
35
|
+
hoveredChange: i0.OutputEmitterRef<boolean>;
|
|
36
|
+
transitionChange: i0.OutputEmitterRef<NavTransitionState>;
|
|
37
|
+
manualExpand: i0.OutputEmitterRef<CollapsibleNavExpansionEvent>;
|
|
38
|
+
readonly element: ElementRef<any>;
|
|
39
|
+
private readonly destroyRef;
|
|
25
40
|
private readonly isHovered;
|
|
41
|
+
private readonly isHoveredDebounced$;
|
|
42
|
+
private readonly isEffectiveHovered;
|
|
26
43
|
private readonly effectiveCollapsed;
|
|
44
|
+
private readonly clicked$;
|
|
45
|
+
private readonly activationKeyPressed$;
|
|
46
|
+
private readonly manualExpandUnprevented$;
|
|
27
47
|
constructor();
|
|
28
48
|
onMouseEnter(): void;
|
|
29
49
|
onMouseLeave(): void;
|
|
@@ -34,12 +54,16 @@ declare class NovoCollapsibleNavComponent {
|
|
|
34
54
|
collapsedWidth: string;
|
|
35
55
|
};
|
|
36
56
|
};
|
|
57
|
+
transitionStart(event: any): void;
|
|
58
|
+
transitionEnd(event: any): void;
|
|
59
|
+
private debounceHover;
|
|
60
|
+
private setupExpandFromActivation;
|
|
37
61
|
get isCollapsed(): boolean;
|
|
38
62
|
toggle(): void;
|
|
39
63
|
expand(): void;
|
|
40
64
|
collapse(): void;
|
|
41
65
|
static ɵfac: i0.ɵɵFactoryDeclaration<NovoCollapsibleNavComponent, never>;
|
|
42
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NovoCollapsibleNavComponent, "novo-collapsible-nav", ["novoCollapsibleNav"], { "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "overlayOnHover": { "alias": "overlayOnHover"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["[novo-collapsible-nav-header]", "[novo-collapsible-nav-body]", "[novo-collapsible-nav-footer]"], false, never>;
|
|
66
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NovoCollapsibleNavComponent, "novo-collapsible-nav", ["novoCollapsibleNav"], { "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "expandDelay": { "alias": "expandDelay"; "required": false; "isSignal": true; }; "overlayOnHover": { "alias": "overlayOnHover"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "expandDelay": "expandDelayChange"; "hoveredChange": "hoveredChange"; "transitionChange": "transitionChange"; "manualExpand": "manualExpand"; }, never, ["[novo-collapsible-nav-header]", "[novo-collapsible-nav-body]", "[novo-collapsible-nav-footer]"], false, never>;
|
|
43
67
|
}
|
|
44
68
|
|
|
45
69
|
declare class NovoLayoutContent extends CdkScrollable implements AfterContentInit {
|
|
@@ -335,5 +359,5 @@ declare class NovoLayoutModule {
|
|
|
335
359
|
static ɵinj: i0.ɵɵInjectorDeclaration<NovoLayoutModule>;
|
|
336
360
|
}
|
|
337
361
|
|
|
338
|
-
export { NOVO_LAYOUT_CONTAINER, NOVO_LAYOUT_DEFAULT_AUTOSIZE, NOVO_LAYOUT_DEFAULT_AUTOSIZE_FACTORY, NovoCollapsibleNavComponent, NovoLayoutContainer, NovoLayoutContent, NovoLayoutModule, NovoRailComponent, NovoSidenavComponent, throwNovoDuplicatedSidenavError };
|
|
339
|
-
export type { NovoSidenavMode, NovoSidenavToggleResult };
|
|
362
|
+
export { CollapsibleNavExpansionEvent, NOVO_LAYOUT_CONTAINER, NOVO_LAYOUT_DEFAULT_AUTOSIZE, NOVO_LAYOUT_DEFAULT_AUTOSIZE_FACTORY, NovoCollapsibleNavComponent, NovoLayoutContainer, NovoLayoutContent, NovoLayoutModule, NovoRailComponent, NovoSidenavComponent, throwNovoDuplicatedSidenavError };
|
|
363
|
+
export type { NavTransitionState, NovoSidenavMode, NovoSidenavToggleResult };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
@import "../../styles/variables.scss";
|
|
2
2
|
|
|
3
3
|
@include theme-colors() using ($name, $color, $contrast, $tint, $shade, $pale) {
|
|
4
|
-
:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
// Wonky deprecation: For 2026, stringently avoid using * selectors to apply font/color changes - prefer inherit functionality
|
|
5
|
+
// This setup made it very hard to provide overrides.
|
|
6
|
+
:host-context([theme="#{$name}"]).novo-item-content {
|
|
7
|
+
color: rgba(#fff, 0.65);
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -15,13 +15,14 @@
|
|
|
15
15
|
:host {
|
|
16
16
|
display: flex;
|
|
17
17
|
margin-left: 0.2em;
|
|
18
|
-
|
|
18
|
+
|
|
19
|
+
&.novo-item-content {
|
|
19
20
|
color: rgba(#434343, 0.85);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
::ng-deep i {
|
|
22
|
+
@include theme-colors() using ($name, $color, $contrast, $tint, $shade, $pale) {
|
|
23
|
+
&.#{$name} {
|
|
24
|
+
color: getCssVarname($name);
|
|
25
|
+
}
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
:host {
|
|
4
4
|
display: block;
|
|
5
5
|
background-color: var(--background-bright);
|
|
6
|
-
border-radius: var(--border-radius-
|
|
6
|
+
border-radius: var(--border-radius-md, 4px);
|
|
7
7
|
box-shadow: 0 1px 7px rgba(0, 0, 0, 0.09), 0 1px 3px rgba(0, 0, 0, 0.2);
|
|
8
8
|
z-index: z(modal);
|
|
9
9
|
position: relative;
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
> ::ng-deep header {
|
|
20
|
-
border-top-left-radius: 4px;
|
|
21
|
-
border-top-right-radius: 4px;
|
|
20
|
+
border-top-left-radius: var(--border-radius-md, 4px);
|
|
21
|
+
border-top-right-radius: var(--border-radius-md, 4px);
|
|
22
22
|
overflow: hidden;
|
|
23
23
|
|
|
24
24
|
h1,
|
|
@@ -44,13 +44,3 @@
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
// bh2026: rounded modal and header top corners.
|
|
49
|
-
:host-context([data-theme='bh2026']) {
|
|
50
|
-
border-radius: var(--border-radius-md, 1.6rem);
|
|
51
|
-
|
|
52
|
-
> ::ng-deep header {
|
|
53
|
-
border-top-left-radius: var(--border-radius-md, 1.6rem);
|
|
54
|
-
border-top-right-radius: var(--border-radius-md, 1.6rem);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
text-align: center;
|
|
5
5
|
display: block;
|
|
6
6
|
background-color: var(--background-bright);
|
|
7
|
-
border-radius: var(--border-radius-
|
|
7
|
+
border-radius: var(--border-radius-md, 4px);
|
|
8
8
|
box-shadow: 0 1px 7px rgba(0, 0, 0, 0.09), 0 1px 3px rgba(0, 0, 0, 0.2);
|
|
9
9
|
z-index: z(modal);
|
|
10
10
|
position: relative;
|
|
@@ -106,8 +106,3 @@
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
-
|
|
110
|
-
// bh2026: rounded notifications
|
|
111
|
-
:host-context([data-theme='bh2026']) {
|
|
112
|
-
border-radius: var(--border-radius-md, 1.6rem);
|
|
113
|
-
}
|
|
@@ -6,16 +6,17 @@ novo-picker {
|
|
|
6
6
|
align-items: center;
|
|
7
7
|
flex-wrap: wrap;
|
|
8
8
|
justify-content: flex-start;
|
|
9
|
-
padding-bottom:
|
|
9
|
+
padding-bottom: 0;
|
|
10
10
|
transition: all 200ms ease-in-out;
|
|
11
11
|
position: relative;
|
|
12
|
+
|
|
12
13
|
&.selected,
|
|
13
14
|
&.selected:hover {
|
|
14
15
|
& + i {
|
|
15
16
|
color: var(--color-positive);
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
|
-
|
|
19
|
+
|
|
19
20
|
&.ng-touched.ng-invalid:not(.ng-pristine) {
|
|
20
21
|
> input,
|
|
21
22
|
> input:hover,
|
|
@@ -23,6 +24,7 @@ novo-picker {
|
|
|
23
24
|
border-bottom-color: transparent !important;
|
|
24
25
|
}
|
|
25
26
|
}
|
|
27
|
+
|
|
26
28
|
input {
|
|
27
29
|
font-size: 1em;
|
|
28
30
|
background: transparent !important;
|
|
@@ -38,26 +40,33 @@ novo-picker {
|
|
|
38
40
|
box-sizing: content-box;
|
|
39
41
|
transition: all 300ms;
|
|
40
42
|
color: #26282b;
|
|
43
|
+
|
|
41
44
|
&:hover {
|
|
42
45
|
border-bottom: 1px solid brightenLive('--color-dark', 15);
|
|
43
46
|
}
|
|
47
|
+
|
|
44
48
|
&:focus {
|
|
45
49
|
border-bottom: 1px solid var(--color-positive);
|
|
46
50
|
}
|
|
51
|
+
|
|
47
52
|
&:invalid {
|
|
48
53
|
border-bottom: 1px solid #da4453;
|
|
49
54
|
}
|
|
55
|
+
|
|
50
56
|
&.entity-picker {
|
|
51
57
|
padding-left: 2em;
|
|
52
58
|
}
|
|
59
|
+
|
|
53
60
|
&.entity-selected {
|
|
54
61
|
padding-left: 2.5em;
|
|
55
62
|
background: var(--background-main) !important;
|
|
56
63
|
}
|
|
64
|
+
|
|
57
65
|
&:disabled {
|
|
58
66
|
border-bottom: 1px dashed brightenLive('--color-dark', 45) !important;
|
|
59
67
|
}
|
|
60
68
|
}
|
|
69
|
+
|
|
61
70
|
i.bhi-more {
|
|
62
71
|
position: absolute;
|
|
63
72
|
left: 0;
|
|
@@ -67,6 +76,7 @@ novo-picker {
|
|
|
67
76
|
border-radius: var(--border-radius-sm, 3px);
|
|
68
77
|
padding: 3px;
|
|
69
78
|
}
|
|
79
|
+
|
|
70
80
|
i.entity-icon {
|
|
71
81
|
position: absolute;
|
|
72
82
|
left: 5px;
|
|
@@ -76,28 +86,39 @@ novo-picker {
|
|
|
76
86
|
padding: 3px;
|
|
77
87
|
color: $white;
|
|
78
88
|
|
|
79
|
-
@include theme-colors() using
|
|
89
|
+
@include theme-colors() using($name, $color, $contrast, $tint, $shade, $pale) {
|
|
80
90
|
&.#{$name} {
|
|
81
91
|
background: getCssVarname($name);
|
|
82
92
|
}
|
|
83
93
|
}
|
|
84
94
|
}
|
|
95
|
+
|
|
85
96
|
i.bhi-search,
|
|
86
97
|
i.bhi-times {
|
|
87
98
|
position: absolute;
|
|
88
99
|
right: 0;
|
|
89
100
|
color: var(--font-color-base);
|
|
101
|
+
|
|
90
102
|
&.entity-selected {
|
|
91
103
|
right: 5px;
|
|
92
104
|
}
|
|
93
105
|
}
|
|
106
|
+
|
|
94
107
|
i.bhi-search {
|
|
95
|
-
top:
|
|
108
|
+
top: 0;
|
|
96
109
|
font-size: var(--font-size-sm);
|
|
97
110
|
}
|
|
111
|
+
|
|
98
112
|
i.bhi-times {
|
|
99
|
-
top:
|
|
113
|
+
top: 0;
|
|
100
114
|
cursor: pointer;
|
|
101
115
|
font-size: var(--font-size-sm);
|
|
102
116
|
}
|
|
117
|
+
|
|
118
|
+
[data-theme='bh2026'] & {
|
|
119
|
+
i {
|
|
120
|
+
font-size: var(--typography-body-lg-font-size);
|
|
121
|
+
line-height: normal;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
103
124
|
}
|
|
@@ -44,6 +44,10 @@ entity-picker-results {
|
|
|
44
44
|
color: black;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
> p {
|
|
48
|
+
margin: 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
47
51
|
picker-error,
|
|
48
52
|
picker-loader,
|
|
49
53
|
picker-null-recent-results,
|
|
@@ -167,6 +171,7 @@ entity-picker-results {
|
|
|
167
171
|
background: $white;
|
|
168
172
|
width: 100%;
|
|
169
173
|
min-width: 250px;
|
|
174
|
+
display: block;
|
|
170
175
|
novo-list {
|
|
171
176
|
background: $white;
|
|
172
177
|
min-width: 30rem;
|
|
@@ -300,3 +305,50 @@ distribution-list-picker-results {
|
|
|
300
305
|
}
|
|
301
306
|
}
|
|
302
307
|
|
|
308
|
+
// bh2026: border belongs on the host (border is not clipped by overflow:hidden),
|
|
309
|
+
// not on children (where overflow:hidden + border-radius clips the corners)
|
|
310
|
+
:root[data-theme='bh2026'] {
|
|
311
|
+
picker-results,
|
|
312
|
+
entity-picker-results,
|
|
313
|
+
skill-specialty-picker-results {
|
|
314
|
+
border: 1px solid var(--color-border-default);
|
|
315
|
+
margin-block: var(--spacing-gap-sm);
|
|
316
|
+
background: var(--background-bright);
|
|
317
|
+
|
|
318
|
+
.novo-list,
|
|
319
|
+
novo-list,
|
|
320
|
+
ul {
|
|
321
|
+
border: none;
|
|
322
|
+
box-shadow: none;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
picker-error,
|
|
326
|
+
picker-loader,
|
|
327
|
+
picker-null-recent-results,
|
|
328
|
+
picker-null-results,
|
|
329
|
+
.picker-error,
|
|
330
|
+
.picker-loader,
|
|
331
|
+
.picker-null-recent-results,
|
|
332
|
+
.picker-null-results {
|
|
333
|
+
border: none;
|
|
334
|
+
box-shadow: none;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
> p {
|
|
338
|
+
margin: 0;
|
|
339
|
+
padding: var(--spacing-padding-md) var(--spacing-padding-lg);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
workers-comp-codes-picker-results,
|
|
344
|
+
distribution-list-picker-results {
|
|
345
|
+
color: var(--text-secondary);
|
|
346
|
+
background: var(--background-body);
|
|
347
|
+
border-radius: var(--border-radius-sm);
|
|
348
|
+
|
|
349
|
+
.novo-list-item {
|
|
350
|
+
border-radius: var(--border-radius-sm);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
@@ -106,8 +106,11 @@
|
|
|
106
106
|
100% { transform: translateX(0%) }
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
// bh2026: pill
|
|
109
|
+
// bh2026: pill ends; default fill uses primary blue only when no explicit color is set
|
|
110
110
|
:host-context([data-theme='bh2026']) {
|
|
111
|
+
&.linear:not([color]) {
|
|
112
|
+
background-color: var(--button-primary-background);
|
|
113
|
+
}
|
|
111
114
|
&.linear:first-child {
|
|
112
115
|
border-radius: 999px 0 0 999px;
|
|
113
116
|
}
|