@danske/sapphire-css 48.0.1 → 49.0.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/components/accordion/accordion.module.css +11 -4
- package/components/accordion/accordion.module.css.d.ts +2 -0
- package/components/breadcrumbs/breadcrumbs.module.css +6 -5
- package/components/button/button.module.css +21 -4
- package/components/button/button.module.css.d.ts +2 -0
- package/components/buttonGroup/buttonGroup.module.css +5 -0
- package/components/list/list.module.css +6 -4
- package/components/listbox/listbox.module.css +3 -1
- package/components/panel/panel.module.css +4 -0
- package/components/panel/panel.module.css.d.ts +1 -0
- package/components/passwordField/passwordField.module.css +67 -0
- package/components/passwordField/passwordField.module.css.d.ts +11 -0
- package/components/separator/separator.module.css +14 -0
- package/components/separator/separator.module.css.d.ts +5 -0
- package/components/sidebar/sidebar.module.css +204 -0
- package/components/sidebar/sidebar.module.css.d.ts +18 -0
- package/components/textField/textField.module.css +10 -0
- package/package.json +4 -4
|
@@ -146,6 +146,10 @@
|
|
|
146
146
|
.sapphire-accordion__item-content-wrapper {
|
|
147
147
|
display: grid;
|
|
148
148
|
grid-template-rows: 0fr;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/* React sets height as css variable for transition, Angular does not */
|
|
152
|
+
.sapphire-accordion__item-content-wrapper--with-transition {
|
|
149
153
|
transition: grid-template-rows var(--sapphire-semantic-time-motion-quick)
|
|
150
154
|
var(--sapphire-semantic-transitions-dynamic);
|
|
151
155
|
}
|
|
@@ -158,10 +162,8 @@
|
|
|
158
162
|
opacity: 0;
|
|
159
163
|
transition: opacity var(--sapphire-semantic-time-fade-default)
|
|
160
164
|
var(--sapphire-semantic-transitions-fade),
|
|
161
|
-
|
|
165
|
+
height var(--sapphire-semantic-time-motion-quick)
|
|
162
166
|
var(--sapphire-semantic-transitions-fade);
|
|
163
|
-
padding-right: var(--sapphire-semantic-size-spacing-lg);
|
|
164
|
-
padding-left: var(--sapphire-semantic-size-spacing-lg);
|
|
165
167
|
}
|
|
166
168
|
|
|
167
169
|
.sapphire-accordion__item--open > .sapphire-accordion__item-content-wrapper {
|
|
@@ -172,7 +174,6 @@
|
|
|
172
174
|
> .sapphire-accordion__item-content-wrapper
|
|
173
175
|
> .sapphire-accordion__item-content {
|
|
174
176
|
opacity: 1;
|
|
175
|
-
padding-bottom: var(--sapphire-semantic-size-spacing-lg);
|
|
176
177
|
visibility: visible;
|
|
177
178
|
}
|
|
178
179
|
|
|
@@ -180,3 +181,9 @@
|
|
|
180
181
|
margin-left: calc(var(--sapphire-semantic-size-spacing-lg) * -1);
|
|
181
182
|
width: calc(100% + (var(--sapphire-semantic-size-spacing-lg) * 2));
|
|
182
183
|
}
|
|
184
|
+
|
|
185
|
+
.sapphire-accordion__item-content-inner {
|
|
186
|
+
padding-right: var(--sapphire-semantic-size-spacing-lg);
|
|
187
|
+
padding-left: var(--sapphire-semantic-size-spacing-lg);
|
|
188
|
+
padding-bottom: var(--sapphire-semantic-size-spacing-lg);
|
|
189
|
+
}
|
|
@@ -10,8 +10,10 @@ declare const styles: {
|
|
|
10
10
|
readonly "sapphire-accordion__item--open": string;
|
|
11
11
|
readonly "sapphire-accordion__item-heading": string;
|
|
12
12
|
readonly "sapphire-accordion__item-arrow": string;
|
|
13
|
+
readonly "sapphire-accordion__item-content-wrapper--with-transition": string;
|
|
13
14
|
readonly "sapphire-accordion__item-content": string;
|
|
14
15
|
readonly "sapphire-accordion--negative-margin-self": string;
|
|
16
|
+
readonly "sapphire-accordion__item-content-inner": string;
|
|
15
17
|
};
|
|
16
18
|
export = styles;
|
|
17
19
|
|
|
@@ -12,10 +12,6 @@
|
|
|
12
12
|
white-space: nowrap;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
.sapphire-breadcrumbs__item * {
|
|
16
|
-
max-width: var(--sapphire-global-size-generic-480);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
15
|
.sapphire-breadcrumbs__item--static {
|
|
20
16
|
/* typography */
|
|
21
17
|
font-family: var(--sapphire-semantic-font-name-default);
|
|
@@ -28,10 +24,13 @@
|
|
|
28
24
|
padding: 0 var(--sapphire-global-size-generic-50);
|
|
29
25
|
height: var(--sapphire-semantic-size-height-control-md);
|
|
30
26
|
min-width: var(--sapphire-global-size-generic-100);
|
|
31
|
-
max-width: fit-content; /* When part of flex layout the button will otherwise expand to full width of container when container has flex-direction 'column' */
|
|
32
27
|
flex-shrink: 0; /* When part of flex layout the button will otherwise be squashed */
|
|
33
28
|
|
|
34
29
|
align-content: center;
|
|
30
|
+
|
|
31
|
+
max-width: calc(10 * var(--sapphire-semantic-size-height-control-md));
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
text-overflow: ellipsis;
|
|
35
34
|
}
|
|
36
35
|
|
|
37
36
|
.sapphire-breadcrumbs .sapphire-breadcrumbs__item:last-child {
|
|
@@ -53,6 +52,7 @@
|
|
|
53
52
|
padding: 0 var(--sapphire-semantic-size-spacing-md);
|
|
54
53
|
font-size: var(--sapphire-semantic-size-font-control-sm);
|
|
55
54
|
border-radius: var(--sapphire-semantic-size-height-control-sm);
|
|
55
|
+
max-width: calc(10 * var(--sapphire-semantic-size-height-control-sm));
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
.sapphire-breadcrumbs.sapphire-breadcrumbs--lg
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
padding: 0 var(--sapphire-semantic-size-spacing-xl);
|
|
71
71
|
font-size: var(--sapphire-semantic-size-font-control-lg);
|
|
72
72
|
border-radius: var(--sapphire-semantic-size-height-control-lg);
|
|
73
|
+
max-width: calc(10 * var(--sapphire-semantic-size-height-control-lg));
|
|
73
74
|
}
|
|
74
75
|
|
|
75
76
|
/**
|
|
@@ -38,8 +38,9 @@
|
|
|
38
38
|
padding: 0 var(--sapphire-semantic-size-spacing-md);
|
|
39
39
|
height: var(--sapphire-semantic-size-height-control-md);
|
|
40
40
|
min-width: var(--sapphire-global-size-generic-200);
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
width: fit-content;
|
|
42
|
+
max-width: 100%;
|
|
43
|
+
flex-shrink: 1;
|
|
43
44
|
|
|
44
45
|
/* shape */
|
|
45
46
|
border-radius: var(--sapphire-semantic-size-height-control-md);
|
|
@@ -56,9 +57,7 @@
|
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
.sapphire-button__content {
|
|
59
|
-
display: inline-flex;
|
|
60
60
|
align-items: center;
|
|
61
|
-
justify-content: center;
|
|
62
61
|
vertical-align: middle;
|
|
63
62
|
white-space: nowrap;
|
|
64
63
|
user-select: none;
|
|
@@ -68,6 +67,20 @@
|
|
|
68
67
|
margin: 0;
|
|
69
68
|
width: 100%;
|
|
70
69
|
padding: 0 var(--sapphire-semantic-size-spacing-xs);
|
|
70
|
+
max-width: calc(10 * var(--sapphire-semantic-size-height-control-md));
|
|
71
|
+
overflow: hidden;
|
|
72
|
+
text-overflow: ellipsis;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.sapphire-button--stretch,
|
|
76
|
+
.sapphire-button--stretch-left-align {
|
|
77
|
+
max-width: 100%;
|
|
78
|
+
min-width: fit-content;
|
|
79
|
+
flex-grow: 1;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.sapphire-button--stretch-left-align .sapphire-button__content {
|
|
83
|
+
text-align: start;
|
|
71
84
|
}
|
|
72
85
|
|
|
73
86
|
a.sapphire-button {
|
|
@@ -491,6 +504,9 @@ a.sapphire-button {
|
|
|
491
504
|
padding: 0;
|
|
492
505
|
border-radius: var(--sapphire-semantic-size-radius-xs);
|
|
493
506
|
}
|
|
507
|
+
.sapphire-button--lg .sapphire-button__content {
|
|
508
|
+
max-width: calc(10 * var(--sapphire-semantic-size-height-control-lg));
|
|
509
|
+
}
|
|
494
510
|
|
|
495
511
|
/**
|
|
496
512
|
* SMALL
|
|
@@ -510,4 +526,5 @@ a.sapphire-button {
|
|
|
510
526
|
|
|
511
527
|
.sapphire-button--sm .sapphire-button__content {
|
|
512
528
|
padding: 0 var(--sapphire-semantic-size-spacing-2xs);
|
|
529
|
+
max-width: calc(10 * var(--sapphire-semantic-size-height-control-sm));
|
|
513
530
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
declare const styles: {
|
|
2
2
|
readonly "sapphire-button": string;
|
|
3
3
|
readonly "sapphire-button__content": string;
|
|
4
|
+
readonly "sapphire-button--stretch": string;
|
|
5
|
+
readonly "sapphire-button--stretch-left-align": string;
|
|
4
6
|
readonly "is-disabled": string;
|
|
5
7
|
readonly "is-focus": string;
|
|
6
8
|
readonly "js-focus": string;
|
|
@@ -51,6 +51,11 @@
|
|
|
51
51
|
flex-wrap: nowrap;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
.sapphire-button-group--stretch.sapphire-button-group--stretch-auto-vertical
|
|
55
|
+
> * {
|
|
56
|
+
width: auto !important;
|
|
57
|
+
}
|
|
58
|
+
|
|
54
59
|
.sapphire-button-group--stretch.sapphire-button-group--stretch-auto-vertical.sapphire-button-group:has(
|
|
55
60
|
> *:nth-child(3)
|
|
56
61
|
) {
|
|
@@ -165,14 +165,14 @@ instead of being applied on the list item itself */
|
|
|
165
165
|
.sapphire-list__item--interactive.is-hover:not(.is-active):not(:has(.is-hover)),
|
|
166
166
|
.sapphire-list__item--interactive:not(.js-hover):not(
|
|
167
167
|
[aria-disabled='true']
|
|
168
|
-
):not(:disabled):not(:active):not(:has(:
|
|
168
|
+
):not(:disabled):not(:active):not(:has(:focus-within)):hover {
|
|
169
169
|
background: var(--sapphire-semantic-color-background-action-tertiary-hover);
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
.sapphire-list__item--selected.is-hover:not(.is-active):not(:has(.is-hover)),
|
|
173
173
|
.sapphire-list__item--selected:not(.js-hover):not([aria-disabled='true']):not(
|
|
174
174
|
:disabled
|
|
175
|
-
):not(:active):not(:has(:
|
|
175
|
+
):not(:active):not(:has(:focus-within)):hover {
|
|
176
176
|
background: var(
|
|
177
177
|
--sapphire-semantic-color-background-action-select-secondary-hover
|
|
178
178
|
);
|
|
@@ -197,12 +197,14 @@ instead of being applied on the list item itself */
|
|
|
197
197
|
|
|
198
198
|
/* Active */
|
|
199
199
|
|
|
200
|
+
/* The 2 instances of button[aria-expanded='true'] below is a hack to accomodate the scenario where
|
|
201
|
+
the contentRight button, when it triggers a menu, does not get the active state. */
|
|
200
202
|
.sapphire-list__item--interactive:not(.is-disabled).is-active:not(
|
|
201
203
|
:has(.is-active)
|
|
202
204
|
),
|
|
203
205
|
.sapphire-list__item--interactive:not([aria-disabled='true']):not(
|
|
204
206
|
:disabled
|
|
205
|
-
):not(:has(:
|
|
207
|
+
):not(:has(:focus-within, button[aria-expanded='true'])):active {
|
|
206
208
|
background-color: var(
|
|
207
209
|
--sapphire-semantic-color-background-action-secondary-hover
|
|
208
210
|
);
|
|
@@ -212,7 +214,7 @@ instead of being applied on the list item itself */
|
|
|
212
214
|
:has(.is-active)
|
|
213
215
|
),
|
|
214
216
|
.sapphire-list__item--selected:not([aria-disabled='true']):not(:disabled):not(
|
|
215
|
-
:has(:
|
|
217
|
+
:has(:focus-within, button[aria-expanded='true'])
|
|
216
218
|
):active {
|
|
217
219
|
background-color: var(
|
|
218
220
|
--sapphire-semantic-color-background-action-select-secondary-active
|
|
@@ -199,7 +199,9 @@ Hence a separate class for checkmark icon to be used in the alignment styles */
|
|
|
199
199
|
);
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
.sapphire-listbox__separator
|
|
202
|
+
.sapphire-listbox__separator,
|
|
203
|
+
.sapphire-listbox__separator.sapphire-listbox__separator {
|
|
204
|
+
width: auto;
|
|
203
205
|
height: var(--sapphire-semantic-size-border-sm);
|
|
204
206
|
background: var(--sapphire-semantic-color-border-secondary);
|
|
205
207
|
margin: var(--sapphire-listbox-items-gap)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
.sapphire-password-field__button {
|
|
2
|
+
box-sizing: border-box;
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
vertical-align: middle;
|
|
7
|
+
white-space: nowrap;
|
|
8
|
+
/* In Safari buttons get a 2px border
|
|
9
|
+
* https://github.com/necolas/normalize.css/blob/master/normalize.css#L160-L169
|
|
10
|
+
*/
|
|
11
|
+
margin: 0;
|
|
12
|
+
padding: 0;
|
|
13
|
+
/* height: var(--sapphire-dateField-icon-size);
|
|
14
|
+
width: var(--sapphire-dateField-icon-size); */
|
|
15
|
+
background: transparent;
|
|
16
|
+
color: var(--sapphire-semantic-color-foreground-secondary);
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
|
|
19
|
+
/* shape */
|
|
20
|
+
border-radius: var(--sapphire-semantic-size-radius-xs);
|
|
21
|
+
border-style: solid;
|
|
22
|
+
border-width: 0;
|
|
23
|
+
border-color: transparent;
|
|
24
|
+
|
|
25
|
+
/* transition for color */
|
|
26
|
+
transition-property: color;
|
|
27
|
+
transition-duration: var(--sapphire-semantic-time-fade-quick);
|
|
28
|
+
transition-timing-function: var(--sapphire-semantic-transitions-fade);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Hover
|
|
33
|
+
*/
|
|
34
|
+
.sapphire-password-field__button:not(:disabled):not(.is-disabled):not(
|
|
35
|
+
:active
|
|
36
|
+
):not(.is-active):not(.js-hover):hover,
|
|
37
|
+
.sapphire-password-field__button:not(:disabled):not(.is-disabled):not(
|
|
38
|
+
:active
|
|
39
|
+
):not(.is-active).is-hover {
|
|
40
|
+
color: var(--sapphire-semantic-color-foreground-primary);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Active
|
|
45
|
+
*/
|
|
46
|
+
.sapphire-password-field__button:not(:disabled):not(.is-disabled).is-active,
|
|
47
|
+
.sapphire-password-field__button:not(:disabled):not(.is-disabled):active,
|
|
48
|
+
.sapphire-password-field__button:not(:disabled):not(
|
|
49
|
+
.is-disabled
|
|
50
|
+
):focus-visible:active {
|
|
51
|
+
color: var(--sapphire-semantic-color-foreground-primary);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Focus
|
|
55
|
+
*/
|
|
56
|
+
.sapphire-password-field__button.is-focus,
|
|
57
|
+
.sapphire-password-field__button:not(.js-focus):focus-visible {
|
|
58
|
+
outline: var(--sapphire-semantic-size-focus-ring) solid
|
|
59
|
+
var(--sapphire-semantic-color-focus-ring);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Disabled
|
|
63
|
+
*/
|
|
64
|
+
.sapphire-password-field__button:disabled,
|
|
65
|
+
.sapphire-password-field__button.is-disabled {
|
|
66
|
+
cursor: not-allowed;
|
|
67
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare const styles: {
|
|
2
|
+
readonly "sapphire-password-field__button": string;
|
|
3
|
+
readonly "is-disabled": string;
|
|
4
|
+
readonly "is-active": string;
|
|
5
|
+
readonly "js-hover": string;
|
|
6
|
+
readonly "is-hover": string;
|
|
7
|
+
readonly "is-focus": string;
|
|
8
|
+
readonly "js-focus": string;
|
|
9
|
+
};
|
|
10
|
+
export = styles;
|
|
11
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
.sapphire-separator {
|
|
2
|
+
height: 1px;
|
|
3
|
+
background-color: var(--sapphire-semantic-color-border-secondary);
|
|
4
|
+
border: none;
|
|
5
|
+
width: 100%;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.sapphire-separator[aria-orientation='vertical'] {
|
|
9
|
+
width: 1px;
|
|
10
|
+
height: auto;
|
|
11
|
+
min-height: 100%;
|
|
12
|
+
flex-direction: column;
|
|
13
|
+
align-self: stretch;
|
|
14
|
+
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
@keyframes slide-in {
|
|
2
|
+
0% {
|
|
3
|
+
transform: translate(-7%);
|
|
4
|
+
opacity: 0;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
100% {
|
|
8
|
+
transform: translate(0%);
|
|
9
|
+
opacity: 1;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@keyframes slide-out {
|
|
14
|
+
0% {
|
|
15
|
+
transform: translate(0%);
|
|
16
|
+
opacity: 1;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
100% {
|
|
20
|
+
transform: translate(-7%);
|
|
21
|
+
opacity: 0;
|
|
22
|
+
display: none;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.sapphire-sidebar {
|
|
27
|
+
box-sizing: border-box;
|
|
28
|
+
/* the secondary sidebar is relative to this */
|
|
29
|
+
position: relative;
|
|
30
|
+
font-family: var(--sapphire-semantic-font-name-default);
|
|
31
|
+
|
|
32
|
+
--sapphire-sidebar-spacing-horizontal: var(
|
|
33
|
+
--sapphire-semantic-size-spacing-md
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
/* The below is meant to address a font rendering quirk in OSX where the text
|
|
37
|
+
* looks bolder than intended due to subpixel rendering. This quirk generally
|
|
38
|
+
* occurs for bold fonts on dark backgrounds but depending on the font, it
|
|
39
|
+
* can happen in other contexts as well.
|
|
40
|
+
*
|
|
41
|
+
* These do not do anything except in webkit browsers & firefox on OSX.
|
|
42
|
+
*
|
|
43
|
+
* For more details see:
|
|
44
|
+
* - https://azuredevops/Main/WCCJ/_git/sapphire/pullRequest/212710?path=%2Fpackages%2Fcss%2Fcomponents%2Fbutton%2Fbutton.module.css&discussionId=1507702&_a=files
|
|
45
|
+
* - https://usabilitypost.com/2012/11/05/stop-fixing-font-smoothing/
|
|
46
|
+
*/
|
|
47
|
+
-webkit-font-smoothing: antialiased;
|
|
48
|
+
-moz-osx-font-smoothing: grayscale;
|
|
49
|
+
|
|
50
|
+
display: flex;
|
|
51
|
+
flex-direction: column;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Normally the background and foreground belong to the `surface`
|
|
55
|
+
* but the sidebar is a little bit special. Part of what a sidebar is, is
|
|
56
|
+
* that it has the surface background color. Similar to popovers.
|
|
57
|
+
*/
|
|
58
|
+
background: var(--sapphire-semantic-color-background-surface);
|
|
59
|
+
padding-left: var(--sapphire-sidebar-spacing-horizontal);
|
|
60
|
+
padding-right: var(--sapphire-sidebar-spacing-horizontal);
|
|
61
|
+
|
|
62
|
+
min-width: var(--sapphire-global-size-generic-600);
|
|
63
|
+
max-width: fit-content;
|
|
64
|
+
height: 100%;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Applied on secondary sidebar for transition
|
|
69
|
+
*/
|
|
70
|
+
.sapphire-sidebar--slide-in {
|
|
71
|
+
animation: slide-in var(--sapphire-semantic-time-fade-default)
|
|
72
|
+
var(--sapphire-semantic-transitions-dynamic);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.sapphire-sidebar--slide-out {
|
|
76
|
+
animation: slide-out var(--sapphire-semantic-time-fade-default)
|
|
77
|
+
var(--sapphire-semantic-transitions-dynamic) forwards;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.sapphire-sidebar__secondary-container {
|
|
81
|
+
position: absolute;
|
|
82
|
+
top: 0;
|
|
83
|
+
left: 100%;
|
|
84
|
+
height: 100%;
|
|
85
|
+
border-right: var(--sapphire-semantic-size-border-sm) solid
|
|
86
|
+
var(--sapphire-semantic-color-border-secondary);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* Header */
|
|
90
|
+
.sapphire-sidebar__header {
|
|
91
|
+
display: flex;
|
|
92
|
+
justify-content: space-between;
|
|
93
|
+
align-items: center;
|
|
94
|
+
gap: var(--sapphire-semantic-size-spacing-sm);
|
|
95
|
+
|
|
96
|
+
padding-top: var(--sapphire-semantic-size-spacing-xl);
|
|
97
|
+
padding-bottom: var(--sapphire-semantic-size-spacing-xl);
|
|
98
|
+
padding-left: var(--sapphire-semantic-size-spacing-lg);
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Need a min height to avoid moving the heading in case it contains a
|
|
102
|
+
* regular icon button, like it will always do in the secondary heading
|
|
103
|
+
*/
|
|
104
|
+
box-sizing: content-box;
|
|
105
|
+
min-height: var(--sapphire-semantic-size-height-control-md);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* Body (main content) */
|
|
109
|
+
.sapphire-sidebar__body {
|
|
110
|
+
flex-grow: 1;
|
|
111
|
+
overflow: auto;
|
|
112
|
+
margin-left: calc(-1 * var(--sapphire-sidebar-spacing-horizontal));
|
|
113
|
+
margin-right: calc(-1 * var(--sapphire-sidebar-spacing-horizontal));
|
|
114
|
+
padding-left: var(--sapphire-sidebar-spacing-horizontal);
|
|
115
|
+
padding-right: var(--sapphire-sidebar-spacing-horizontal);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* Modifier for when list has scrolled. Needs JS control. */
|
|
119
|
+
.sapphire-sidebar__body--scrolled {
|
|
120
|
+
border-top: var(--sapphire-semantic-size-border-sm) solid
|
|
121
|
+
var(--sapphire-semantic-color-border-secondary);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* Nav list (usually a <ul> or <ol>) */
|
|
125
|
+
.sapphire-sidebar__nav-list {
|
|
126
|
+
--sapphire-sidebar-item-gap: var(--sapphire-semantic-size-spacing-3xs);
|
|
127
|
+
--sapphire-sidebar-spacing-separator-horizontal: var(
|
|
128
|
+
--sapphire-semantic-size-spacing-3xs
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
margin: 0;
|
|
132
|
+
list-style: none;
|
|
133
|
+
display: flex;
|
|
134
|
+
flex-direction: column;
|
|
135
|
+
gap: var(--sapphire-sidebar-item-gap);
|
|
136
|
+
padding-left: 0;
|
|
137
|
+
padding-right: 0;
|
|
138
|
+
padding-top: var(--sapphire-semantic-size-spacing-xs);
|
|
139
|
+
padding-bottom: var(--sapphire-semantic-size-spacing-xl);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.sapphire-sidebar__nav-item {
|
|
143
|
+
display: flex;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Custom increase of clickable area of the button
|
|
148
|
+
*/
|
|
149
|
+
.sapphire-sidebar__nav-item > [role='button'] {
|
|
150
|
+
position: relative;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.sapphire-sidebar__nav-item > [role='button']::before {
|
|
154
|
+
content: '';
|
|
155
|
+
position: absolute;
|
|
156
|
+
top: calc(-1 * (var(--sapphire-sidebar-item-gap) / 2));
|
|
157
|
+
bottom: calc(-1 * (var(--sapphire-sidebar-item-gap) / 2));
|
|
158
|
+
left: 0;
|
|
159
|
+
right: 0;
|
|
160
|
+
background: transparent;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* Sections */
|
|
164
|
+
.sapphire-sidebar__separator {
|
|
165
|
+
height: var(--sapphire-semantic-size-border-sm);
|
|
166
|
+
background: var(--sapphire-semantic-color-border-secondary);
|
|
167
|
+
margin: var(--sapphire-semantic-size-spacing-3xs)
|
|
168
|
+
calc(
|
|
169
|
+
var(--sapphire-semantic-size-spacing-lg) -
|
|
170
|
+
var(--sapphire-sidebar-spacing-separator-horizontal)
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.sapphire-sidebar__nav-list > .sapphire-sidebar__separator:first-child {
|
|
175
|
+
display: none;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.sapphire-sidebar__section {
|
|
179
|
+
padding: 0;
|
|
180
|
+
margin: 0;
|
|
181
|
+
list-style: none;
|
|
182
|
+
display: flex;
|
|
183
|
+
flex-direction: column;
|
|
184
|
+
gap: var(--sapphire-sidebar-item-gap);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.sapphire-sidebar__section-header {
|
|
188
|
+
font-size: var(--sapphire-semantic-size-font-body-xs);
|
|
189
|
+
color: var(--sapphire-semantic-color-foreground-primary);
|
|
190
|
+
font-weight: var(--sapphire-semantic-font-weight-default-medium);
|
|
191
|
+
padding: calc(
|
|
192
|
+
var(--sapphire-semantic-size-spacing-md) -
|
|
193
|
+
var(--sapphire-sidebar-item-gap)
|
|
194
|
+
)
|
|
195
|
+
calc(
|
|
196
|
+
var(--sapphire-semantic-size-spacing-sm) +
|
|
197
|
+
var(--sapphire-sidebar-spacing-separator-horizontal)
|
|
198
|
+
)
|
|
199
|
+
var(--sapphire-semantic-size-spacing-2xs)
|
|
200
|
+
calc(
|
|
201
|
+
var(--sapphire-semantic-size-spacing-sm) +
|
|
202
|
+
var(--sapphire-sidebar-spacing-separator-horizontal)
|
|
203
|
+
);
|
|
204
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare const styles: {
|
|
2
|
+
readonly "sapphire-sidebar": string;
|
|
3
|
+
readonly "sapphire-sidebar--slide-in": string;
|
|
4
|
+
readonly "slide-in": string;
|
|
5
|
+
readonly "sapphire-sidebar--slide-out": string;
|
|
6
|
+
readonly "slide-out": string;
|
|
7
|
+
readonly "sapphire-sidebar__secondary-container": string;
|
|
8
|
+
readonly "sapphire-sidebar__header": string;
|
|
9
|
+
readonly "sapphire-sidebar__body": string;
|
|
10
|
+
readonly "sapphire-sidebar__body--scrolled": string;
|
|
11
|
+
readonly "sapphire-sidebar__nav-list": string;
|
|
12
|
+
readonly "sapphire-sidebar__nav-item": string;
|
|
13
|
+
readonly "sapphire-sidebar__separator": string;
|
|
14
|
+
readonly "sapphire-sidebar__section": string;
|
|
15
|
+
readonly "sapphire-sidebar__section-header": string;
|
|
16
|
+
};
|
|
17
|
+
export = styles;
|
|
18
|
+
|
|
@@ -225,6 +225,16 @@
|
|
|
225
225
|
outline-offset: calc(0px - var(--sapphire-semantic-size-focus-ring));
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
+
/**
|
|
229
|
+
* Focus override in the case of password visibility toggle being focused.
|
|
230
|
+
(sapphire-password-field__button)
|
|
231
|
+
*/
|
|
232
|
+
.sapphire-text-field:has(button:focus) {
|
|
233
|
+
outline: solid var(--sapphire-semantic-size-border-sm)
|
|
234
|
+
var(--sapphire-semantic-color-border-field-default);
|
|
235
|
+
outline-offset: calc(0px - var(--sapphire-semantic-size-border-sm));
|
|
236
|
+
}
|
|
237
|
+
|
|
228
238
|
.sapphire-text-field.is-focus .sapphire-text-field__input:autofill,
|
|
229
239
|
.sapphire-text-field:focus-within .sapphire-text-field__input:autofill {
|
|
230
240
|
/*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@danske/sapphire-css",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "49.0.0",
|
|
4
4
|
"description": "CSS implementation of the Sapphire Design System from Danske Bank A/S",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"build:storybook": "cross-env NODE_OPTIONS=--openssl-legacy-provider build-storybook --docs -o dist",
|
|
37
37
|
"build:types": "tcm -p /**/*.module.css",
|
|
38
38
|
"build:themes": "yarn build:themes:esm && yarn build:themes:cjs",
|
|
39
|
-
"build:themes:esm": "tsc --module ES2020 --outDir build/themes/esm && tsc --module ES2020 --outDir themes",
|
|
40
|
-
"build:themes:cjs": "tsc --module CommonJS --outDir build/themes/cjs && tsc --module CommonJS",
|
|
39
|
+
"build:themes:esm": "tsc -p tsconfig.themes.json --module ES2020 --outDir build/themes/esm && tsc -p tsconfig.themes.json --module ES2020 --outDir themes",
|
|
40
|
+
"build:themes:cjs": "tsc -p tsconfig.themes.json --module CommonJS --outDir build/themes/cjs && tsc -p tsconfig.themes.json --module CommonJS",
|
|
41
41
|
"prepare": "yarn run build"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"dependencies": {
|
|
70
70
|
"@danske/sapphire-design-tokens": "^42.2.1"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "95e11ee77650ba6158811bcc5969bc7c7aaab530"
|
|
73
73
|
}
|