@bonniernews/dn-design-system-web 4.2.1 → 4.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/components/group-header/group-header.njk +1 -1
- package/components/group-header/group-header.scss +2 -0
- package/components/icon-button/icon-button.njk +47 -39
- package/components/icon-button/icon-button.scss +20 -16
- package/components/icon-button-toggle/README.md +1 -1
- package/components/icon-button-toggle/icon-button-toggle.js +3 -3
- package/components/icon-button-toggle/icon-button-toggle.njk +2 -52
- package/components/icon-button-toggle/icon-button-toggle.scss +9 -154
- package/components/teaser-list-swipe/teaser-list-swipe.scss +4 -0
- package/components/teaser-swipe-card/teaser-swipe-card.scss +3 -0
- package/components/text-input/text-input.scss +5 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,24 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 4.2.3 (2023-09-07)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **web:** refactor icon buttons ([#984](https://github.com/BonnierNews/dn-design-system/issues/984)) ([a17b3bf](https://github.com/BonnierNews/dn-design-system/commit/a17b3bf340605e75171b5da973ff5da1df254c97))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## 4.2.2 (2023-09-07)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* **web:** add focus states for swipe and groupheader and fix link param in groupheader ([#987](https://github.com/BonnierNews/dn-design-system/issues/987)) ([95104c8](https://github.com/BonnierNews/dn-design-system/commit/95104c8066ca58a606f12ff2d179465a4803809e))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
6
24
|
## 4.2.1 (2023-09-07)
|
|
7
25
|
|
|
8
26
|
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
|
|
32
32
|
<div class="{{ classes }}" {{ attributes | safe }}>
|
|
33
33
|
{% if params.href %}
|
|
34
|
-
<a class="{{ componentClassName + '__href'}}" href="{{ params.
|
|
34
|
+
<a class="{{ componentClassName + '__href'}}" href="{{ params.href }}">
|
|
35
35
|
{{ groupHeaderInner | safe }}
|
|
36
36
|
</a>
|
|
37
37
|
{% else %}
|
|
@@ -1,64 +1,72 @@
|
|
|
1
1
|
{% from '@bonniernews/dn-design-system-web/components/icon-sprite/icon-sprite.njk' import IconUse %}
|
|
2
2
|
{% from '@bonniernews/dn-design-system-web/foundations/a11y/visually-hidden.njk' import VisuallyHidden %}
|
|
3
3
|
{% from '@bonniernews/dn-design-system-web/components/spinner/spinner.njk' import Spinner %}
|
|
4
|
+
{% from '@bonniernews/dn-design-system-web/njk-helpers/attributes.njk' import getAttributes %}
|
|
4
5
|
|
|
5
|
-
{% macro IconButton(params) %}
|
|
6
|
-
{
|
|
7
|
-
{
|
|
8
|
-
{
|
|
9
|
-
{
|
|
10
|
-
{% for attribute, value in params.attributes %}
|
|
11
|
-
{{attribute}}="{{value}}"
|
|
12
|
-
{% endfor %}
|
|
13
|
-
{% endset %}
|
|
6
|
+
{% macro IconButton(params, isToggle) %}
|
|
7
|
+
{%- set componentClassName = "ds-icon-btn" %}
|
|
8
|
+
{%- set classNamePrefix = componentClassName + "--" %}
|
|
9
|
+
{%- set additionalClasses = [] %}
|
|
10
|
+
{%- set attributes = getAttributes(params.attributes) %}
|
|
14
11
|
|
|
15
|
-
{
|
|
16
|
-
{% set
|
|
12
|
+
{%- if params.forcePx %}
|
|
13
|
+
{% set additionalClasses = (additionalClasses.push("ds-force-px"), additionalClasses) %}
|
|
17
14
|
{% endif %}
|
|
18
15
|
|
|
19
|
-
{
|
|
20
|
-
{% set
|
|
16
|
+
{%- if params.variant %}
|
|
17
|
+
{% set additionalClasses = (additionalClasses.push(classNamePrefix + params.variant), additionalClasses) %}
|
|
21
18
|
{% else %}
|
|
22
|
-
{% set
|
|
23
|
-
{% endif %}
|
|
24
|
-
|
|
25
|
-
{% if params.size and params.size != "default" %}
|
|
26
|
-
{% set variant = (variant.push(classNamePrefix + params.size), variant) %}
|
|
19
|
+
{% set additionalClasses = (additionalClasses.push(classNamePrefix + "outlined"), additionalClasses) %}
|
|
27
20
|
{% endif %}
|
|
28
21
|
|
|
29
|
-
{
|
|
30
|
-
{% set
|
|
22
|
+
{%- if params.size and params.size != "default" %}
|
|
23
|
+
{% set additionalClasses = (additionalClasses.push(classNamePrefix + params.size), additionalClasses) %}
|
|
31
24
|
{% endif %}
|
|
32
25
|
|
|
33
|
-
{
|
|
34
|
-
{{ Spinner({ size: "small",
|
|
26
|
+
{%- set loadingHtml %}
|
|
27
|
+
{{ Spinner({ size: "small", additionalClasses: "primary", forcePx: params.forcePx }) }}
|
|
35
28
|
{% endset %}
|
|
36
29
|
|
|
37
|
-
{
|
|
38
|
-
{% set
|
|
30
|
+
{%- if params.loading %}
|
|
31
|
+
{% set additionalClasses = (additionalClasses.push("ds-loading"), additionalClasses) %}
|
|
39
32
|
{% endif %}
|
|
40
33
|
|
|
41
|
-
{
|
|
34
|
+
{%- if params.a11y and params.a11y.visuallyHidden %}
|
|
42
35
|
{% set visuallyHidden = VisuallyHidden({ text: params.a11y.visuallyHidden }) %}
|
|
43
36
|
{% endif %}
|
|
44
37
|
|
|
45
|
-
{
|
|
46
|
-
{% set
|
|
38
|
+
{%- if params.classNames %}
|
|
39
|
+
{% set additionalClasses = (additionalClasses.push(params.classNames), additionalClasses) %}
|
|
47
40
|
{% endif%}
|
|
48
41
|
|
|
49
|
-
{
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
42
|
+
{%- if isToggle %}
|
|
43
|
+
{%- if params.selected %}
|
|
44
|
+
{% set additionalClasses = (additionalClasses.push(classNamePrefix + "selected"), additionalClasses) %}
|
|
45
|
+
{% endif %}
|
|
46
|
+
{% set additionalClasses = (additionalClasses.push(classNamePrefix + "toggle"), additionalClasses) %}
|
|
47
|
+
{%- set classes = componentClassName + " " + additionalClasses | join(" ") %}
|
|
48
|
+
<button type="button" role="switch" aria-checked="{{ "true" if params.selected else "false" }}" class="{{ classes }}" {{ "disabled" if params.disabled }} {{- attributes | safe }}>
|
|
53
49
|
{{- visuallyHidden | safe if visuallyHidden -}}
|
|
54
|
-
<span class="{{ componentClassName + '__inner' }}"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
{{- visuallyHidden | safe if visuallyHidden -}}
|
|
60
|
-
<span class="{{ componentClassName + '__inner' }}">{{- iconSvg | safe if iconSvg -}}</span>
|
|
61
|
-
{{ loadingHtml | safe }}
|
|
50
|
+
<span class="{{ componentClassName + '__inner' }}" aria-hidden="true">
|
|
51
|
+
<span class="{{ componentClassName + '__off' }}">{{ IconUse({ icon: params.iconName }) }}</span>
|
|
52
|
+
<span class="{{ componentClassName + '__on' }}">{{ IconUse({ icon: params.selectedIconName }) }}</span>
|
|
53
|
+
{{ loadingHtml | safe }}
|
|
54
|
+
</span>
|
|
62
55
|
</button>
|
|
56
|
+
{% else %}
|
|
57
|
+
{%- set classes = componentClassName + " " + additionalClasses | join(" ") %}
|
|
58
|
+
{% if params.href %}
|
|
59
|
+
<a href="{{ params.href | default('#', true) }}" class="{{ classes }}" {{- attributes | safe }}>
|
|
60
|
+
{{- visuallyHidden | safe if visuallyHidden -}}
|
|
61
|
+
<span class="{{ componentClassName + '__inner' }}">{{IconUse({ icon: params.iconName, attributes: { "aria-hidden": "true" } }) }}</span>
|
|
62
|
+
{{ loadingHtml | safe }}
|
|
63
|
+
</a>
|
|
64
|
+
{% else %}
|
|
65
|
+
<button type="button" class="{{ classes }}" {{ "disabled" if params.disabled }} {{- attributes | safe }}>
|
|
66
|
+
{{- visuallyHidden | safe if visuallyHidden -}}
|
|
67
|
+
<span class="{{ componentClassName + '__inner' }}">{{IconUse({ icon: params.iconName, attributes: { "aria-hidden": "true" } }) }}</span>
|
|
68
|
+
{{ loadingHtml | safe }}
|
|
69
|
+
</button>
|
|
70
|
+
{% endif %}
|
|
63
71
|
{% endif %}
|
|
64
72
|
{% endmacro %}
|
|
@@ -3,10 +3,26 @@
|
|
|
3
3
|
@use "../spinner/spinner.scss" as *;
|
|
4
4
|
|
|
5
5
|
$ds-icon-btn__border-radius: 50%;
|
|
6
|
-
$ds-icon-btn__icon-size: 24px;
|
|
7
6
|
$ds-icon-btn__min-clickable-area: 48px;
|
|
8
7
|
$ds-btn-outlined__border-width: ds-metrics-border-width(x1);
|
|
9
8
|
|
|
9
|
+
.ds-icon-btn {
|
|
10
|
+
--ds-icon-btn__inner-padding: #{ds-spacing-component($ds-sc-x2)-$ds-btn-outlined__border-width};
|
|
11
|
+
--ds-icon-btn__icon-size: #{ds-px-to-rem(24px)};
|
|
12
|
+
|
|
13
|
+
&.ds-force-px {
|
|
14
|
+
--ds-icon-btn__icon-size: 24px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
&.ds-icon-btn--small {
|
|
18
|
+
--ds-icon-btn__inner-padding: #{2px - $ds-btn-outlined__border-width};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
&.ds-icon-btn--large {
|
|
22
|
+
--ds-icon-btn__inner-padding: #{ds-spacing-component($ds-sc-x3)-$ds-btn-outlined__border-width};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
10
26
|
.ds-icon-btn {
|
|
11
27
|
cursor: pointer;
|
|
12
28
|
background-color: transparent;
|
|
@@ -32,7 +48,7 @@ $ds-btn-outlined__border-width: ds-metrics-border-width(x1);
|
|
|
32
48
|
align-items: center;
|
|
33
49
|
justify-content: center;
|
|
34
50
|
position: relative;
|
|
35
|
-
padding: ds-
|
|
51
|
+
padding: var(--ds-icon-btn__inner-padding);
|
|
36
52
|
|
|
37
53
|
&::before {
|
|
38
54
|
content: "";
|
|
@@ -48,13 +64,9 @@ $ds-btn-outlined__border-width: ds-metrics-border-width(x1);
|
|
|
48
64
|
.ds-icon {
|
|
49
65
|
position: relative;
|
|
50
66
|
display: flex;
|
|
51
|
-
height:
|
|
52
|
-
width:
|
|
67
|
+
height: var(--ds-icon-btn__icon-size);
|
|
68
|
+
width: var(--ds-icon-btn__icon-size);
|
|
53
69
|
margin: 0;
|
|
54
|
-
@at-root .ds-force-px#{&} {
|
|
55
|
-
height: $ds-icon-btn__icon-size;
|
|
56
|
-
width: $ds-icon-btn__icon-size;
|
|
57
|
-
}
|
|
58
70
|
svg {
|
|
59
71
|
fill: currentColor;
|
|
60
72
|
}
|
|
@@ -69,14 +81,6 @@ $ds-btn-outlined__border-width: ds-metrics-border-width(x1);
|
|
|
69
81
|
background-color: $ds-color-component-primary-overlay-02;
|
|
70
82
|
}
|
|
71
83
|
|
|
72
|
-
&.ds-icon-btn--small .ds-icon-btn__inner {
|
|
73
|
-
padding: ds-spacing-component($ds-sc-x1)-$ds-btn-outlined__border-width;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
&.ds-icon-btn--large .ds-icon-btn__inner {
|
|
77
|
-
padding: ds-spacing-component($ds-sc-x3)-$ds-btn-outlined__border-width;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
84
|
&:focus-visible {
|
|
81
85
|
outline: none;
|
|
82
86
|
.ds-icon-btn__inner {
|
|
@@ -48,6 +48,6 @@ These are copy paste friendly examples to quickliy get started using a component
|
|
|
48
48
|
|
|
49
49
|
```javascript
|
|
50
50
|
import dsIconButtonToggle from '@bonniernews/dn-design-system-web/components/icon-button-toggle/icon-button-toggle.js'
|
|
51
|
-
const toggleElements = Array.from(document.getElementsByClassName("ds-icon-btn
|
|
51
|
+
const toggleElements = Array.from(document.getElementsByClassName("ds-icon-btn--toggle"));
|
|
52
52
|
dsIconButtonToggle(toggleElements);
|
|
53
53
|
```
|
|
@@ -7,8 +7,8 @@ function dsIconButtonToggle(toggleElements = []) {
|
|
|
7
7
|
if (!toggleElements.length) return;
|
|
8
8
|
toggleElements.forEach((toggleEl) => {
|
|
9
9
|
toggleEl.addEventListener("click", () => {
|
|
10
|
-
if (toggleEl.classList.contains("ds-icon-btn
|
|
11
|
-
toggleEl.classList.toggle("ds-icon-btn
|
|
10
|
+
if (toggleEl.classList.contains("ds-icon-btn--disabled")) return;
|
|
11
|
+
toggleEl.classList.toggle("ds-icon-btn--selected");
|
|
12
12
|
const ariaChecked = toggleEl.getAttribute("aria-checked") === "true" ? "false" : "true";
|
|
13
13
|
toggleEl.setAttribute("aria-checked", ariaChecked);
|
|
14
14
|
});
|
|
@@ -16,6 +16,6 @@ function dsIconButtonToggle(toggleElements = []) {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
function dsIconButtonToggleAll() {
|
|
19
|
-
const toggleElements = Array.from(document.getElementsByClassName("ds-icon-btn
|
|
19
|
+
const toggleElements = Array.from(document.getElementsByClassName("ds-icon-btn--toggle"));
|
|
20
20
|
dsIconButtonToggle(toggleElements);
|
|
21
21
|
}
|
|
@@ -1,55 +1,5 @@
|
|
|
1
|
-
{% from '@bonniernews/dn-design-system-web/components/icon-
|
|
2
|
-
{% from '@bonniernews/dn-design-system-web/foundations/a11y/visually-hidden.njk' import VisuallyHidden %}
|
|
3
|
-
{% from '@bonniernews/dn-design-system-web/components/spinner/spinner.njk' import Spinner %}
|
|
4
|
-
{% from '@bonniernews/dn-design-system-web/njk-helpers/attributes.njk' import getAttributes %}
|
|
1
|
+
{% from '@bonniernews/dn-design-system-web/components/icon-button/icon-button.njk' import IconButton %}
|
|
5
2
|
|
|
6
3
|
{% macro IconButtonToggle(params) %}
|
|
7
|
-
{
|
|
8
|
-
{%- set classNamePrefix = componentClassName + "--" %}
|
|
9
|
-
{%- set additionalClasses = [] %}
|
|
10
|
-
{%- set attributes = getAttributes(params.attributes) %}
|
|
11
|
-
|
|
12
|
-
{%- if params.selected %}
|
|
13
|
-
{% set additionalClasses = (additionalClasses.push(classNamePrefix + "selected"), additionalClasses) %}
|
|
14
|
-
{% endif %}
|
|
15
|
-
|
|
16
|
-
{%- if params.forcePx %}
|
|
17
|
-
{% set additionalClasses = (additionalClasses.push("ds-force-px"), additionalClasses) %}
|
|
18
|
-
{% endif %}
|
|
19
|
-
|
|
20
|
-
{%- if params.variant %}
|
|
21
|
-
{% set additionalClasses = (additionalClasses.push(classNamePrefix + params.variant), additionalClasses) %}
|
|
22
|
-
{% else %}
|
|
23
|
-
{% set additionalClasses = (additionalClasses.push(classNamePrefix + "outlined"), additionalClasses) %}
|
|
24
|
-
{% endif %}
|
|
25
|
-
|
|
26
|
-
{%- if params.size and params.size != "default" %}
|
|
27
|
-
{% set additionalClasses = (additionalClasses.push(classNamePrefix + params.size), additionalClasses) %}
|
|
28
|
-
{% endif %}
|
|
29
|
-
|
|
30
|
-
{%- set loadingHtml %}
|
|
31
|
-
{{ Spinner({ size: "small", additionalClasses: "primary", forcePx: params.forcePx }) }}
|
|
32
|
-
{% endset %}
|
|
33
|
-
|
|
34
|
-
{%- if params.loading %}
|
|
35
|
-
{% set additionalClasses = (additionalClasses.push("ds-loading"), additionalClasses) %}
|
|
36
|
-
{% endif %}
|
|
37
|
-
|
|
38
|
-
{%- if params.a11y and params.a11y.visuallyHidden %}
|
|
39
|
-
{% set visuallyHidden = VisuallyHidden({ text: params.a11y.visuallyHidden }) %}
|
|
40
|
-
{% endif %}
|
|
41
|
-
|
|
42
|
-
{%- if params.classNames %}
|
|
43
|
-
{% set additionalClasses = (additionalClasses.push(params.classNames), additionalClasses) %}
|
|
44
|
-
{% endif%}
|
|
45
|
-
|
|
46
|
-
{%- set classes = componentClassName + " " + additionalClasses | join(" ") %}
|
|
47
|
-
<button type="button" role="switch" aria-checked="{{ "true" if params.selected else "false" }}" class="{{ classes }}" {{ "disabled" if params.disabled }} {{- attributes | safe }}>
|
|
48
|
-
{{- visuallyHidden | safe if visuallyHidden -}}
|
|
49
|
-
<span class="{{ componentClassName + '__inner' }}" aria-hidden="true">
|
|
50
|
-
<span class="{{ componentClassName + '__off' }}">{{ IconUse({ icon: params.iconName }) }}</span>
|
|
51
|
-
<span class="{{ componentClassName + '__on' }}">{{ IconUse({ icon: params.selectedIconName }) }}</span>
|
|
52
|
-
{{ loadingHtml | safe }}
|
|
53
|
-
</span>
|
|
54
|
-
</button>
|
|
4
|
+
{{ IconButton(params, true) }}
|
|
55
5
|
{% endmacro %}
|
|
@@ -1,164 +1,19 @@
|
|
|
1
1
|
@use "../../foundations/helpers/forward.helpers.scss" as *;
|
|
2
|
-
@use "../icon-
|
|
3
|
-
@use "../spinner/spinner.scss" as *;
|
|
2
|
+
@use "../icon-button/icon-button.scss";
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
$ds-btn-toggle-outlined__border-width: ds-metrics-border-width(x1);
|
|
9
|
-
|
|
10
|
-
.ds-icon-btn-toggle {
|
|
11
|
-
cursor: pointer;
|
|
12
|
-
background-color: transparent;
|
|
13
|
-
border: 0;
|
|
14
|
-
min-width: $ds-icon-btn-toggle__min-clickable-area;
|
|
15
|
-
min-height: $ds-icon-btn-toggle__min-clickable-area;
|
|
16
|
-
display: inline-flex;
|
|
17
|
-
align-items: center;
|
|
18
|
-
justify-content: center;
|
|
19
|
-
padding: 0;
|
|
20
|
-
position: relative;
|
|
21
|
-
|
|
22
|
-
span {
|
|
23
|
-
pointer-events: none;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.ds-icon-btn-toggle__inner {
|
|
27
|
-
box-sizing: border-box;
|
|
28
|
-
border-radius: $ds-icon-btn-toggle__border-radius;
|
|
29
|
-
border: $ds-btn-toggle-outlined__border-width solid;
|
|
30
|
-
margin: 0;
|
|
31
|
-
display: inline-flex;
|
|
32
|
-
align-items: center;
|
|
33
|
-
justify-content: center;
|
|
34
|
-
position: relative;
|
|
35
|
-
padding: ds-spacing-component($ds-sc-x2)-$ds-btn-toggle-outlined__border-width;
|
|
36
|
-
|
|
37
|
-
.ds-icon-btn-toggle__on {
|
|
4
|
+
.ds-icon-btn--toggle {
|
|
5
|
+
.ds-icon-btn__inner {
|
|
6
|
+
.ds-icon-btn__on {
|
|
38
7
|
display: none;
|
|
39
8
|
}
|
|
40
|
-
|
|
41
|
-
&::before {
|
|
42
|
-
content: "";
|
|
43
|
-
border-radius: inherit;
|
|
44
|
-
pointer-events: none;
|
|
45
|
-
position: absolute;
|
|
46
|
-
top: -$ds-btn-toggle-outlined__border-width;
|
|
47
|
-
left: -$ds-btn-toggle-outlined__border-width;
|
|
48
|
-
bottom: -$ds-btn-toggle-outlined__border-width;
|
|
49
|
-
right: -$ds-btn-toggle-outlined__border-width;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
.ds-icon {
|
|
53
|
-
position: relative;
|
|
54
|
-
display: flex;
|
|
55
|
-
height: ds-px-to-rem($ds-icon-btn-toggle__icon-size);
|
|
56
|
-
width: ds-px-to-rem($ds-icon-btn-toggle__icon-size);
|
|
57
|
-
margin: 0;
|
|
58
|
-
@at-root .ds-force-px#{&} {
|
|
59
|
-
height: $ds-icon-btn-toggle__icon-size;
|
|
60
|
-
width: $ds-icon-btn-toggle__icon-size;
|
|
61
|
-
}
|
|
62
|
-
svg {
|
|
63
|
-
fill: currentColor;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
@include ds-hover() {
|
|
68
|
-
&:hover:not(.ds-loading) .ds-icon-btn-toggle__inner::before {
|
|
69
|
-
background-color: $ds-color-component-primary-overlay;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
&:active:not(.ds-loading) .ds-icon-btn-toggle__inner::before {
|
|
73
|
-
background-color: $ds-color-component-primary-overlay-02;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
&.ds-icon-btn-toggle--small .ds-icon-btn-toggle__inner {
|
|
77
|
-
padding: ds-spacing-component($ds-sc-x1)-$ds-btn-toggle-outlined__border-width;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
&.ds-icon-btn-toggle--large .ds-icon-btn-toggle__inner {
|
|
81
|
-
padding: ds-spacing-component($ds-sc-x3)-$ds-btn-toggle-outlined__border-width;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
&:focus-visible {
|
|
85
|
-
outline: none;
|
|
86
|
-
.ds-icon-btn-toggle__inner {
|
|
87
|
-
outline: ds-metrics-border-width(x2) solid $ds-color-border-focus-02;
|
|
88
|
-
outline-offset: 2px;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
&:disabled:not(.ds-loading) {
|
|
92
|
-
cursor: not-allowed;
|
|
93
|
-
.ds-icon-btn-toggle__inner {
|
|
94
|
-
color: $ds-color-icon-disabled;
|
|
95
|
-
outline: none;
|
|
96
|
-
&::before {
|
|
97
|
-
background-color: transparent;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
9
|
}
|
|
101
10
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
text-decoration: none;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
@include ds-loading();
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.ds-icon-btn-toggle--selected .ds-icon-btn-toggle__inner {
|
|
112
|
-
.ds-icon-btn-toggle__on {
|
|
113
|
-
display: flex;
|
|
114
|
-
}
|
|
115
|
-
.ds-icon-btn-toggle__off {
|
|
116
|
-
display: none;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
.ds-icon-btn-toggle--transparent {
|
|
121
|
-
.ds-icon-btn-toggle__inner {
|
|
122
|
-
border-color: transparent;
|
|
123
|
-
color: $ds-color-icon-primary;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
.ds-icon-btn-toggle--outlined {
|
|
128
|
-
.ds-icon-btn-toggle__inner {
|
|
129
|
-
background-color: $ds-color-component-secondary;
|
|
130
|
-
border-color: $ds-color-border-primary-02;
|
|
131
|
-
color: $ds-color-icon-primary;
|
|
132
|
-
}
|
|
133
|
-
&:disabled .ds-icon-btn-toggle__inner {
|
|
134
|
-
border-color: $ds-color-border-primary;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
.ds-icon-btn-toggle--on-media {
|
|
139
|
-
.ds-icon-btn-toggle__inner {
|
|
140
|
-
background-color: $ds-color-static-transparent-black;
|
|
141
|
-
border-color: transparent;
|
|
142
|
-
color: $ds-color-static-white;
|
|
143
|
-
}
|
|
144
|
-
&:disabled .ds-icon-btn-toggle__inner {
|
|
145
|
-
border-color: $ds-color-border-primary;
|
|
146
|
-
}
|
|
147
|
-
@include ds-hover() {
|
|
148
|
-
&:hover:not(.ds-loading) .ds-icon-btn-toggle__inner::before {
|
|
149
|
-
background-color: $ds-color-static-transparent-white-10;
|
|
11
|
+
&.ds-icon-btn--selected .ds-icon-btn__inner {
|
|
12
|
+
.ds-icon-btn__on {
|
|
13
|
+
display: flex;
|
|
150
14
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
background-color: $ds-color-static-transparent-white-10;
|
|
154
|
-
}
|
|
155
|
-
&:disabled:not(.ds-loading) .ds-icon-btn-toggle__inner {
|
|
156
|
-
color: $ds-color-static-white;
|
|
157
|
-
&::before {
|
|
158
|
-
background-color: transparent;
|
|
15
|
+
.ds-icon-btn__off {
|
|
16
|
+
display: none;
|
|
159
17
|
}
|
|
160
18
|
}
|
|
161
|
-
&:focus-visible .ds-icon-btn-toggle__inner {
|
|
162
|
-
outline-color: $ds-color-static-white;
|
|
163
|
-
}
|
|
164
19
|
}
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
max-width: 100%;
|
|
9
9
|
color: $ds-color-text-primary;
|
|
10
10
|
|
|
11
|
+
@include ds-teaser-focus(2px);
|
|
12
|
+
|
|
11
13
|
.ds-teaser__carousel {
|
|
12
14
|
padding: ds-spacing-component(0 $ds-sc-x4);
|
|
13
15
|
padding-bottom: ds-spacing-component($ds-sc-x3);
|
|
@@ -16,6 +18,8 @@
|
|
|
16
18
|
grid-auto-columns: max-content;
|
|
17
19
|
grid-auto-flow: column;
|
|
18
20
|
gap: ds-spacing-component($ds-sc-x2);
|
|
21
|
+
|
|
22
|
+
@include ds-teaser-focus(2px);
|
|
19
23
|
}
|
|
20
24
|
|
|
21
25
|
@include ds-mq-only-breakpoint(desktop) {
|
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
border: ds-metrics-border-width(x1) solid $ds-color-border-primary;
|
|
15
15
|
border-radius: ds-metrics-border-radius(x2);
|
|
16
16
|
overflow: hidden; // ensure media doesn't overflow the border-radius
|
|
17
|
+
margin-bottom: 0;
|
|
18
|
+
|
|
19
|
+
@include ds-teaser-focus(-2px);
|
|
17
20
|
|
|
18
21
|
.ds-teaser__text {
|
|
19
22
|
display: flex;
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
@use "../../assets/form-field/form-field.scss";
|
|
3
3
|
@use "../icon-button/icon-button.scss";
|
|
4
4
|
|
|
5
|
-
$ds-text-input-toggle-btn__width:
|
|
5
|
+
$ds-text-input-toggle-btn__width: 28px;
|
|
6
|
+
$ds-text-input-toggle-btn__top: 22px;
|
|
6
7
|
$ds-text-input-toggle-btn__area: (
|
|
7
8
|
$ds-text-input-toggle-btn__width + ds-spacing-component($ds-sc-x2)
|
|
8
9
|
);
|
|
@@ -102,7 +103,7 @@ $ds-text-input-toggle-btn__area: (
|
|
|
102
103
|
|
|
103
104
|
.ds-icon-btn.ds-text-input__password-toggle {
|
|
104
105
|
position: absolute;
|
|
105
|
-
top: ds-px-to-rem(ds-
|
|
106
|
+
top: ds-px-to-rem($ds-text-input-toggle-btn__top);
|
|
106
107
|
right: ds-spacing-component($ds-sc-x1);
|
|
107
108
|
z-index: 1;
|
|
108
109
|
min-width: 0;
|
|
@@ -112,6 +113,7 @@ $ds-text-input-toggle-btn__area: (
|
|
|
112
113
|
.ds-force-px {
|
|
113
114
|
&.ds-text-input {
|
|
114
115
|
padding-top: ds-spacing-component($ds-sc-x2);
|
|
116
|
+
font-size: 16px;
|
|
115
117
|
}
|
|
116
118
|
|
|
117
119
|
.ds-text-input__input {
|
|
@@ -148,6 +150,6 @@ $ds-text-input-toggle-btn__area: (
|
|
|
148
150
|
}
|
|
149
151
|
|
|
150
152
|
.ds-text-input__password-toggle {
|
|
151
|
-
top: ds-
|
|
153
|
+
top: $ds-text-input-toggle-btn__top;
|
|
152
154
|
}
|
|
153
155
|
}
|
package/package.json
CHANGED