@db-ux/core-components 4.0.4 → 4.2.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/CHANGELOG.md +25 -0
- package/build/assets/fonts/OpenSans-Bold-EU.woff2 +0 -0
- package/build/assets/fonts/OpenSans-ExtraBold-EU.woff2 +0 -0
- package/build/assets/fonts/OpenSans-Light-EU.woff2 +0 -0
- package/build/assets/fonts/OpenSans-Medium-EU.woff2 +0 -0
- package/build/assets/fonts/OpenSans-Regular-EU.woff2 +0 -0
- package/build/assets/fonts/OpenSans-SemiBold-EU.woff2 +0 -0
- package/build/assets/fonts/generate-eu-fonts.ts +1 -1
- package/build/assets/fonts/unicode-eu.txt +1 -0
- package/build/components/badge/badge.css +2 -1
- package/build/components/button/button.css +10 -5
- package/build/components/button/button.scss +10 -5
- package/build/components/custom-select/custom-select.css +47 -4
- package/build/components/custom-select/custom-select.scss +4 -0
- package/build/components/input/input.css +46 -5
- package/build/components/notification/notification-grid-default.scss +50 -0
- package/build/components/notification/notification-grid-non-overlay.scss +71 -57
- package/build/components/notification/notification-grid-overlay.scss +153 -52
- package/build/components/notification/notification-grid-shared.css +1 -0
- package/build/components/notification/notification-grid-shared.scss +80 -0
- package/build/components/notification/notification.css +165 -67
- package/build/components/notification/notification.scss +54 -66
- package/build/components/select/select.css +44 -4
- package/build/components/tag/tag.css +2 -1
- package/build/components/textarea/textarea.css +44 -4
- package/build/styles/absolute.css +6 -6
- package/build/styles/index.css +6 -6
- package/build/styles/internal/_button-components.scss +2 -1
- package/build/styles/internal/_form-components.scss +14 -1
- package/build/styles/relative.css +6 -6
- package/build/styles/rollup.css +6 -6
- package/build/styles/webpack.css +6 -6
- package/package.json +5 -5
- package/build/assets/icons/check-circle.svg +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @db-ux/core-components
|
|
2
2
|
|
|
3
|
+
## 4.2.0
|
|
4
|
+
|
|
5
|
+
_version bump_
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## 4.1.0
|
|
9
|
+
|
|
10
|
+
### Minor Changes
|
|
11
|
+
|
|
12
|
+
- refactor(notification): update and simplify grid layout for block link variant - [see commit cb83f96](https://github.com/db-ux-design-system/core-web/commit/cb83f966eaf29c85b4cf0079750bdd563f216d6e)
|
|
13
|
+
|
|
14
|
+
- fix(DBCustomSelect): properly announce selected options - [see commit 773edeb](https://github.com/db-ux-design-system/core-web/commit/773edeb943a085eb79e1c8d59059137b2830fbf0):
|
|
15
|
+
- feat(DBCustomSelect): introduce new property `selectedPrefix`
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- fix(DBCustomSelect): automatically handle form reset events - [see commit 6af5246](https://github.com/db-ux-design-system/core-web/commit/6af5246b3b2e6febdc6ff6342ba1a8eb10184d14):
|
|
20
|
+
- An event listener is now added for every form component (input, custom-select, etc.) when a `form` property is passed.
|
|
21
|
+
- This listener detects form resets and updates the component's internal value/checked state accordingly.
|
|
22
|
+
- > **Note**: This does not work for `ngModel` in Angular.
|
|
23
|
+
|
|
24
|
+
- fix(button): Replace fixed height with min-height for buttons to allow dynamic height adjustment when text wraps - [see commit d1fd2c4](https://github.com/db-ux-design-system/core-web/commit/d1fd2c4e58a5ed6f75fab44700cd2d93c7232474)
|
|
25
|
+
|
|
26
|
+
- fix(input): Date or time types – initial value gets displayed as placeholder [see commit e3c7ce7](e3c7ce7718803624557bc8fc66f7b662b42ff0be)
|
|
27
|
+
|
|
3
28
|
## 4.0.4
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -27,7 +27,7 @@ const generateFonts = async () => {
|
|
|
27
27
|
try {
|
|
28
28
|
const files = await glob(`${__dirname}/*.ttf`);
|
|
29
29
|
|
|
30
|
-
for (const file of files) {
|
|
30
|
+
for (const file of files.map(f=> f.replaceAll('\\', '/'))) {
|
|
31
31
|
// Security: Validate that the file is within the expected directory
|
|
32
32
|
// and has the expected extension to prevent path traversal attacks
|
|
33
33
|
if (!file.startsWith(__dirname) || !file.endsWith('.ttf')) {
|
|
@@ -12,3 +12,4 @@ U+010C, U+010D, U+010E, U+010F, U+011A, U+011B, U+0147, U+0148, U+0158, U+0159,
|
|
|
12
12
|
U+00E9, U+00E8, U+00EB, U+00E4, U+00FC, U+00F6, U+00EF, U+00C9, U+00C8, U+00CB, U+00C4, U+00DC, U+00D6, U+00CF # Netherlands characters
|
|
13
13
|
U+0391-03A9, U+03B1-03C9 # Greek characters
|
|
14
14
|
U+0410-042F, U+0430-044F # Cyrillic characters
|
|
15
|
+
U+0404,U+0406-0407,U+0456-0457,U+0413-0419,U+0433-0439,U+041A-041F,U+043A-043F,U+0420-0429,U+0440-0449,U+0490-0491 # Ukrainian characters
|
|
@@ -131,7 +131,8 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
|
|
|
131
131
|
/* Use for headline tags like <h1> */
|
|
132
132
|
.db-badge {
|
|
133
133
|
font-weight: 700;
|
|
134
|
-
|
|
134
|
+
overflow-wrap: break-word;
|
|
135
|
+
white-space: pre-line;
|
|
135
136
|
justify-content: center;
|
|
136
137
|
text-align: center;
|
|
137
138
|
align-items: center;
|
|
@@ -143,7 +143,8 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
|
|
|
143
143
|
|
|
144
144
|
.db-button {
|
|
145
145
|
font-weight: 700;
|
|
146
|
-
|
|
146
|
+
overflow-wrap: break-word;
|
|
147
|
+
white-space: pre-line;
|
|
147
148
|
justify-content: center;
|
|
148
149
|
text-align: center;
|
|
149
150
|
align-items: center;
|
|
@@ -154,16 +155,19 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
|
|
|
154
155
|
}
|
|
155
156
|
|
|
156
157
|
.db-button {
|
|
158
|
+
max-inline-size: 100%;
|
|
157
159
|
color: var(--db-adaptive-on-bg-basic-emphasis-100-default);
|
|
158
|
-
block-size: var(--db-sizing-md);
|
|
160
|
+
min-block-size: var(--db-sizing-md);
|
|
161
|
+
block-size: max-content;
|
|
159
162
|
inline-size: fit-content;
|
|
160
|
-
padding: var(--db-spacing-fixed-
|
|
163
|
+
padding: var(--db-spacing-fixed-2xs) var(--db-spacing-fixed-md);
|
|
161
164
|
text-decoration: none;
|
|
162
165
|
}
|
|
163
166
|
.db-button[data-no-text=true] {
|
|
164
167
|
font-size: 0 !important;
|
|
165
168
|
/* stylelint-disable-next-line at-rule-empty-line-before */
|
|
166
169
|
padding: 0;
|
|
170
|
+
aspect-ratio: 1;
|
|
167
171
|
inline-size: var(--db-sizing-md);
|
|
168
172
|
}
|
|
169
173
|
.db-button[data-no-text=true]::before {
|
|
@@ -174,10 +178,10 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
|
|
|
174
178
|
}
|
|
175
179
|
.db-button[data-size=small] {
|
|
176
180
|
font-weight: 700;
|
|
177
|
-
block-size: var(--db-sizing-sm);
|
|
181
|
+
min-block-size: var(--db-sizing-sm);
|
|
178
182
|
}
|
|
179
183
|
.db-button[data-size=small]:not([data-no-text=true]) {
|
|
180
|
-
padding:
|
|
184
|
+
padding: 1px var(--db-spacing-fixed-sm);
|
|
181
185
|
}
|
|
182
186
|
.db-button[data-size=small]:not([data-no-text=true])::before {
|
|
183
187
|
margin-inline-end: var(--db-spacing-fixed-2xs);
|
|
@@ -270,6 +274,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
|
|
|
270
274
|
.db-button:has(> .db-button) {
|
|
271
275
|
margin: 0;
|
|
272
276
|
padding: 0;
|
|
277
|
+
block-size: var(--db-sizing-md);
|
|
273
278
|
}
|
|
274
279
|
.db-button:has(> .db-button)::before {
|
|
275
280
|
content: none;
|
|
@@ -7,15 +7,18 @@
|
|
|
7
7
|
@use "../../styles/internal/component";
|
|
8
8
|
@use "../../styles/internal/button-components";
|
|
9
9
|
|
|
10
|
+
// generic styles can be found in _button-components.scss
|
|
10
11
|
.db-button {
|
|
11
12
|
@extend %default-interactive-component;
|
|
12
13
|
@extend %default-button;
|
|
13
14
|
@extend %db-overwrite-font-size-md;
|
|
14
15
|
|
|
16
|
+
max-inline-size: 100%;
|
|
15
17
|
color: colors.$db-adaptive-on-bg-basic-emphasis-100-default;
|
|
16
|
-
block-size: variables.$db-sizing-md;
|
|
18
|
+
min-block-size: variables.$db-sizing-md;
|
|
19
|
+
block-size: max-content;
|
|
17
20
|
inline-size: fit-content;
|
|
18
|
-
padding: variables.$db-spacing-fixed-
|
|
21
|
+
padding: variables.$db-spacing-fixed-2xs variables.$db-spacing-fixed-md;
|
|
19
22
|
|
|
20
23
|
// disable text-decoration if someone wants to use the button for an <a> tag
|
|
21
24
|
text-decoration: none;
|
|
@@ -25,6 +28,7 @@
|
|
|
25
28
|
@include icons.is-icon-text-replace;
|
|
26
29
|
|
|
27
30
|
padding: 0;
|
|
31
|
+
aspect-ratio: 1;
|
|
28
32
|
inline-size: variables.$db-sizing-md;
|
|
29
33
|
|
|
30
34
|
&::before {
|
|
@@ -36,11 +40,11 @@
|
|
|
36
40
|
@extend %db-overwrite-font-size-sm;
|
|
37
41
|
|
|
38
42
|
font-weight: 700;
|
|
39
|
-
block-size: variables.$db-sizing-sm;
|
|
43
|
+
min-block-size: variables.$db-sizing-sm;
|
|
40
44
|
|
|
41
45
|
&:not([data-no-text="true"]) {
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
// stylelint-disable-next-line db-ux/use-spacings
|
|
47
|
+
padding: 1px variables.$db-spacing-fixed-sm;
|
|
44
48
|
|
|
45
49
|
&::before {
|
|
46
50
|
margin-inline-end: variables.$db-spacing-fixed-2xs;
|
|
@@ -113,6 +117,7 @@
|
|
|
113
117
|
&:has(> .db-button) {
|
|
114
118
|
margin: 0;
|
|
115
119
|
padding: 0;
|
|
120
|
+
block-size: variables.$db-sizing-md;
|
|
116
121
|
|
|
117
122
|
&::before {
|
|
118
123
|
content: none;
|
|
@@ -869,7 +869,17 @@ dialog:not([data-backdrop=none])[data-backdrop=weak]::backdrop, dialog:not([data
|
|
|
869
869
|
[type=datetime-local],
|
|
870
870
|
[type=month],
|
|
871
871
|
[type=week],
|
|
872
|
-
[type=time]):not(:user-valid
|
|
872
|
+
[type=time]):not(:user-valid,
|
|
873
|
+
[value*="1"],
|
|
874
|
+
[value*="2"],
|
|
875
|
+
[value*="3"],
|
|
876
|
+
[value*="4"],
|
|
877
|
+
[value*="5"],
|
|
878
|
+
[value*="6"],
|
|
879
|
+
[value*="7"],
|
|
880
|
+
[value*="8"],
|
|
881
|
+
[value*="9"],
|
|
882
|
+
[value*="0"])::-webkit-datetime-edit {
|
|
873
883
|
transition: none;
|
|
874
884
|
opacity: 0;
|
|
875
885
|
}
|
|
@@ -924,7 +934,17 @@ input[type=radio]:checked) summary:is([type=date],
|
|
|
924
934
|
[type=datetime-local],
|
|
925
935
|
[type=month],
|
|
926
936
|
[type=week],
|
|
927
|
-
[type=time]):not(:user-valid
|
|
937
|
+
[type=time]):not(:user-valid,
|
|
938
|
+
[value*="1"],
|
|
939
|
+
[value*="2"],
|
|
940
|
+
[value*="3"],
|
|
941
|
+
[value*="4"],
|
|
942
|
+
[value*="5"],
|
|
943
|
+
[value*="6"],
|
|
944
|
+
[value*="7"],
|
|
945
|
+
[value*="8"],
|
|
946
|
+
[value*="9"],
|
|
947
|
+
[value*="0"])::-webkit-datetime-edit {
|
|
928
948
|
opacity: var(--db-opacity-xl);
|
|
929
949
|
font-family: var(--db-font-family-sans);
|
|
930
950
|
font-style: italic;
|
|
@@ -940,7 +960,17 @@ input[type=radio]:checked) summary:is([type=date],
|
|
|
940
960
|
[type=datetime-local],
|
|
941
961
|
[type=month],
|
|
942
962
|
[type=week],
|
|
943
|
-
[type=time]):not(:user-valid
|
|
963
|
+
[type=time]):not(:user-valid,
|
|
964
|
+
[value*="1"],
|
|
965
|
+
[value*="2"],
|
|
966
|
+
[value*="3"],
|
|
967
|
+
[value*="4"],
|
|
968
|
+
[value*="5"],
|
|
969
|
+
[value*="6"],
|
|
970
|
+
[value*="7"],
|
|
971
|
+
[value*="8"],
|
|
972
|
+
[value*="9"],
|
|
973
|
+
[value*="0"])::-webkit-datetime-edit {
|
|
944
974
|
transition: opacity var(--db-transition-straight-emotional);
|
|
945
975
|
}
|
|
946
976
|
}
|
|
@@ -1060,7 +1090,17 @@ input[type=radio]:checked) summary:is([type=date],
|
|
|
1060
1090
|
[type=datetime-local],
|
|
1061
1091
|
[type=month],
|
|
1062
1092
|
[type=week],
|
|
1063
|
-
[type=time]):not(:user-valid
|
|
1093
|
+
[type=time]):not(:user-valid,
|
|
1094
|
+
[value*="1"],
|
|
1095
|
+
[value*="2"],
|
|
1096
|
+
[value*="3"],
|
|
1097
|
+
[value*="4"],
|
|
1098
|
+
[value*="5"],
|
|
1099
|
+
[value*="6"],
|
|
1100
|
+
[value*="7"],
|
|
1101
|
+
[value*="8"],
|
|
1102
|
+
[value*="9"],
|
|
1103
|
+
[value*="0"])::-webkit-datetime-edit {
|
|
1064
1104
|
opacity: var(--db-opacity-xl);
|
|
1065
1105
|
font-family: var(--db-font-family-sans);
|
|
1066
1106
|
font-style: italic;
|
|
@@ -1202,6 +1242,9 @@ summary[aria-disabled=true]) {
|
|
|
1202
1242
|
opacity: var(--db-opacity-lg);
|
|
1203
1243
|
}
|
|
1204
1244
|
}
|
|
1245
|
+
.db-custom-select > details[open] > summary > span > span::after {
|
|
1246
|
+
content: ": ";
|
|
1247
|
+
}
|
|
1205
1248
|
.db-custom-select[data-variant=floating] .db-custom-select-form-field > span {
|
|
1206
1249
|
/* stylelint-disable-next-line db-ux/use-spacings */
|
|
1207
1250
|
padding-block-start: calc(var(--db-type-body-font-size-2xs) + var(--db-spacing-fixed-3xs));
|
|
@@ -570,7 +570,8 @@ input[type=radio]:checked) > label {
|
|
|
570
570
|
|
|
571
571
|
.db-input input::file-selector-button {
|
|
572
572
|
font-weight: 700;
|
|
573
|
-
|
|
573
|
+
overflow-wrap: break-word;
|
|
574
|
+
white-space: pre-line;
|
|
574
575
|
justify-content: center;
|
|
575
576
|
text-align: center;
|
|
576
577
|
align-items: center;
|
|
@@ -642,7 +643,17 @@ input[type=radio]:checked) > label {
|
|
|
642
643
|
[type=datetime-local],
|
|
643
644
|
[type=month],
|
|
644
645
|
[type=week],
|
|
645
|
-
[type=time]):not(:user-valid
|
|
646
|
+
[type=time]):not(:user-valid,
|
|
647
|
+
[value*="1"],
|
|
648
|
+
[value*="2"],
|
|
649
|
+
[value*="3"],
|
|
650
|
+
[value*="4"],
|
|
651
|
+
[value*="5"],
|
|
652
|
+
[value*="6"],
|
|
653
|
+
[value*="7"],
|
|
654
|
+
[value*="8"],
|
|
655
|
+
[value*="9"],
|
|
656
|
+
[value*="0"])::-webkit-datetime-edit {
|
|
646
657
|
transition: none;
|
|
647
658
|
opacity: 0;
|
|
648
659
|
}
|
|
@@ -695,7 +706,17 @@ input[type=radio]:checked) input:is([type=date],
|
|
|
695
706
|
[type=datetime-local],
|
|
696
707
|
[type=month],
|
|
697
708
|
[type=week],
|
|
698
|
-
[type=time]):not(:user-valid
|
|
709
|
+
[type=time]):not(:user-valid,
|
|
710
|
+
[value*="1"],
|
|
711
|
+
[value*="2"],
|
|
712
|
+
[value*="3"],
|
|
713
|
+
[value*="4"],
|
|
714
|
+
[value*="5"],
|
|
715
|
+
[value*="6"],
|
|
716
|
+
[value*="7"],
|
|
717
|
+
[value*="8"],
|
|
718
|
+
[value*="9"],
|
|
719
|
+
[value*="0"])::-webkit-datetime-edit {
|
|
699
720
|
opacity: var(--db-opacity-xl);
|
|
700
721
|
font-family: var(--db-font-family-sans);
|
|
701
722
|
font-style: italic;
|
|
@@ -709,7 +730,17 @@ input[type=radio]:checked) input:is([type=date],
|
|
|
709
730
|
[type=datetime-local],
|
|
710
731
|
[type=month],
|
|
711
732
|
[type=week],
|
|
712
|
-
[type=time]):not(:user-valid
|
|
733
|
+
[type=time]):not(:user-valid,
|
|
734
|
+
[value*="1"],
|
|
735
|
+
[value*="2"],
|
|
736
|
+
[value*="3"],
|
|
737
|
+
[value*="4"],
|
|
738
|
+
[value*="5"],
|
|
739
|
+
[value*="6"],
|
|
740
|
+
[value*="7"],
|
|
741
|
+
[value*="8"],
|
|
742
|
+
[value*="9"],
|
|
743
|
+
[value*="0"])::-webkit-datetime-edit {
|
|
713
744
|
transition: opacity var(--db-transition-straight-emotional);
|
|
714
745
|
}
|
|
715
746
|
}
|
|
@@ -844,7 +875,17 @@ input[type=radio]:checked) input:is([type=date],
|
|
|
844
875
|
[type=datetime-local],
|
|
845
876
|
[type=month],
|
|
846
877
|
[type=week],
|
|
847
|
-
[type=time]):not(:user-valid
|
|
878
|
+
[type=time]):not(:user-valid,
|
|
879
|
+
[value*="1"],
|
|
880
|
+
[value*="2"],
|
|
881
|
+
[value*="3"],
|
|
882
|
+
[value*="4"],
|
|
883
|
+
[value*="5"],
|
|
884
|
+
[value*="6"],
|
|
885
|
+
[value*="7"],
|
|
886
|
+
[value*="8"],
|
|
887
|
+
[value*="9"],
|
|
888
|
+
[value*="0"])::-webkit-datetime-edit {
|
|
848
889
|
opacity: var(--db-opacity-xl);
|
|
849
890
|
font-family: var(--db-font-family-sans);
|
|
850
891
|
font-style: italic;
|
|
@@ -3,9 +3,21 @@
|
|
|
3
3
|
grid-template-areas: "content";
|
|
4
4
|
grid-template-columns: 1fr;
|
|
5
5
|
|
|
6
|
+
// Add a layout for inline links
|
|
7
|
+
&[data-link-variant="inline"] {
|
|
8
|
+
grid-template-columns: 1fr min-content;
|
|
9
|
+
grid-template-areas: "content timestamp";
|
|
10
|
+
}
|
|
11
|
+
|
|
6
12
|
&:has(.db-button) {
|
|
7
13
|
grid-template-columns: 1fr min-content;
|
|
8
14
|
grid-template-areas: "content close";
|
|
15
|
+
|
|
16
|
+
// Inline link + close button
|
|
17
|
+
&[data-link-variant="inline"] {
|
|
18
|
+
grid-template-columns: 1fr min-content min-content;
|
|
19
|
+
grid-template-areas: "content timestamp close";
|
|
20
|
+
}
|
|
9
21
|
}
|
|
10
22
|
|
|
11
23
|
// 2. headline
|
|
@@ -15,11 +27,25 @@
|
|
|
15
27
|
"head"
|
|
16
28
|
"content";
|
|
17
29
|
|
|
30
|
+
&[data-link-variant="inline"] {
|
|
31
|
+
grid-template-columns: 1fr min-content;
|
|
32
|
+
grid-template-areas:
|
|
33
|
+
"head timestamp"
|
|
34
|
+
"content content";
|
|
35
|
+
}
|
|
36
|
+
|
|
18
37
|
&:has(.db-button) {
|
|
19
38
|
grid-template-columns: 1fr min-content;
|
|
20
39
|
grid-template-areas:
|
|
21
40
|
"head close"
|
|
22
41
|
"content content";
|
|
42
|
+
|
|
43
|
+
&[data-link-variant="inline"] {
|
|
44
|
+
grid-template-columns: 1fr min-content min-content;
|
|
45
|
+
grid-template-areas:
|
|
46
|
+
"head timestamp close"
|
|
47
|
+
"content content ."; // Empty cell aligns content column with head row
|
|
48
|
+
}
|
|
23
49
|
}
|
|
24
50
|
}
|
|
25
51
|
|
|
@@ -30,9 +56,19 @@
|
|
|
30
56
|
grid-template-areas: "icon content";
|
|
31
57
|
grid-template-columns: min-content 1fr;
|
|
32
58
|
|
|
59
|
+
&[data-link-variant="inline"] {
|
|
60
|
+
grid-template-columns: min-content 1fr min-content;
|
|
61
|
+
grid-template-areas: "icon content timestamp";
|
|
62
|
+
}
|
|
63
|
+
|
|
33
64
|
&:has(.db-button) {
|
|
34
65
|
grid-template-columns: min-content 1fr min-content;
|
|
35
66
|
grid-template-areas: "icon content close";
|
|
67
|
+
|
|
68
|
+
&[data-link-variant="inline"] {
|
|
69
|
+
grid-template-columns: min-content 1fr min-content min-content;
|
|
70
|
+
grid-template-areas: "icon content timestamp close";
|
|
71
|
+
}
|
|
36
72
|
}
|
|
37
73
|
|
|
38
74
|
&:has(header) {
|
|
@@ -41,11 +77,25 @@
|
|
|
41
77
|
"icon head"
|
|
42
78
|
"icon content";
|
|
43
79
|
|
|
80
|
+
&[data-link-variant="inline"] {
|
|
81
|
+
grid-template-columns: min-content 1fr min-content;
|
|
82
|
+
grid-template-areas:
|
|
83
|
+
"icon head timestamp"
|
|
84
|
+
"icon content content";
|
|
85
|
+
}
|
|
86
|
+
|
|
44
87
|
&:has(.db-button) {
|
|
45
88
|
grid-template-columns: min-content 1fr min-content;
|
|
46
89
|
grid-template-areas:
|
|
47
90
|
"icon head close"
|
|
48
91
|
"icon content content";
|
|
92
|
+
|
|
93
|
+
&[data-link-variant="inline"] {
|
|
94
|
+
grid-template-columns: min-content 1fr min-content min-content;
|
|
95
|
+
grid-template-areas:
|
|
96
|
+
"icon head timestamp close"
|
|
97
|
+
"icon content content ."; // Empty cell aligns content column with head row
|
|
98
|
+
}
|
|
49
99
|
}
|
|
50
100
|
}
|
|
51
101
|
}
|
|
@@ -1,66 +1,80 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
@use "notification-grid-shared" as shared;
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
// Wrapper mixins for non-overlay variants that use shared grid logic
|
|
5
|
+
@mixin non-overlay-base-grid($areas, $columns) {
|
|
6
|
+
@include shared.shared-base-grid($areas, $columns);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@mixin non-overlay-with-close($areas, $columns) {
|
|
10
|
+
@include shared.shared-with-close($areas, $columns);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@mixin non-overlay-with-header($areas, $columns) {
|
|
14
|
+
@include shared.shared-with-header($areas, $columns);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@mixin non-overlay-with-header-close($areas, $columns) {
|
|
18
|
+
@include shared.shared-with-header-close($areas, $columns);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@mixin non-overlay-with-icon($areas, $columns) {
|
|
22
|
+
@include shared.shared-with-icon($areas, $columns);
|
|
23
|
+
}
|
|
5
24
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
grid-template-columns: 1fr;
|
|
25
|
+
@mixin non-overlay-with-icon-close($areas, $columns) {
|
|
26
|
+
@include shared.shared-with-icon-close($areas, $columns);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@mixin non-overlay-with-icon-header($areas, $columns) {
|
|
30
|
+
@include shared.shared-with-icon-header($areas, $columns);
|
|
31
|
+
}
|
|
14
32
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"content close"
|
|
19
|
-
"link link";
|
|
20
|
-
}
|
|
33
|
+
@mixin non-overlay-with-icon-header-close($areas, $columns) {
|
|
34
|
+
@include shared.shared-with-icon-header-close($areas, $columns);
|
|
35
|
+
}
|
|
21
36
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
37
|
+
@mixin non-overlay-block-link-layouts() {
|
|
38
|
+
// 1. Base: content + block link (no additional elements)
|
|
39
|
+
@include non-overlay-base-grid("content" "link", 1fr);
|
|
40
|
+
@include non-overlay-with-close(
|
|
41
|
+
"content close" "link link",
|
|
42
|
+
1fr min-content
|
|
43
|
+
);
|
|
29
44
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
}
|
|
45
|
+
// 2. Adds: headline
|
|
46
|
+
@include non-overlay-with-header("head" "content" "link", 1fr);
|
|
47
|
+
@include non-overlay-with-header-close(
|
|
48
|
+
"head close" "content content" "link link",
|
|
49
|
+
1fr min-content
|
|
50
|
+
);
|
|
38
51
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
52
|
+
// 3. Adds: icon or image
|
|
53
|
+
@include non-overlay-with-icon("icon content" "icon link", min-content 1fr);
|
|
54
|
+
@include non-overlay-with-icon-close(
|
|
55
|
+
"icon content close" "icon link link",
|
|
56
|
+
min-content 1fr min-content
|
|
57
|
+
);
|
|
58
|
+
@include non-overlay-with-icon-header(
|
|
59
|
+
"icon head" "icon content" "icon link",
|
|
60
|
+
min-content 1fr
|
|
61
|
+
);
|
|
62
|
+
@include non-overlay-with-icon-header-close(
|
|
63
|
+
"icon head close" "icon content content" "icon link link",
|
|
64
|
+
min-content 1fr min-content
|
|
65
|
+
);
|
|
66
|
+
}
|
|
47
67
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"icon link";
|
|
68
|
+
%grid-layout-variant-not-overlay {
|
|
69
|
+
// Hide timestamp for non-overlay variants only
|
|
70
|
+
span {
|
|
71
|
+
display: none;
|
|
72
|
+
}
|
|
54
73
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
"icon link link";
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
74
|
+
// Apply block link layout when linkVariant is "block" (explicit or default)
|
|
75
|
+
// Only applies to non-overlay variants with block links
|
|
76
|
+
&[data-link-variant="block"],
|
|
77
|
+
&:not([data-link-variant]):has(a) {
|
|
78
|
+
@include non-overlay-block-link-layouts;
|
|
65
79
|
}
|
|
66
80
|
}
|