@swisspost/design-system-styles 6.5.1 → 6.6.1

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.
@@ -1,36 +1,21 @@
1
1
  @forward './../variables/options';
2
2
 
3
+ @use './../mixins/accordion' as accordion-mx;
3
4
  @use './../mixins/button' as button-mx;
4
- @use './../mixins/color' as color-mx;
5
5
  @use './../mixins/focus' as focus-mx;
6
6
  @use './../mixins/icons' as icon-mx;
7
7
  @use './../mixins/type' as type-mx;
8
8
  @use './../mixins/utilities' as utility-mx;
9
9
 
10
- @use './../functions/contrast';
11
- @use './../variables/color';
12
10
  @use './../variables/components/accordion';
13
11
 
14
12
  .accordion-item {
13
+ @include accordion-mx.background-color;
15
14
  border-block: accordion.$accordion-border-width solid accordion.$accordion-border-color;
16
15
 
17
16
  & + & {
18
17
  border-block-start: 0;
19
18
  }
20
-
21
- // make the accordion gray
22
- @include color-mx.colored-background(color.$gray-background);
23
-
24
- // make the accordion white on background colors close to the gray above (making sure it remains gray on a white background)
25
- $accordion-contrast-on-white: contrast.contrast-ratio(color.$white, color.$gray-background);
26
- @each $name, $color in color.$background-colors {
27
- $accordion-contrast-on-color: contrast.contrast-ratio($color, color.$gray-background);
28
- @if ($accordion-contrast-on-color < $accordion-contrast-on-white) {
29
- .bg-#{$name} & {
30
- @include color-mx.colored-background(color.$white);
31
- }
32
- }
33
- }
34
19
  }
35
20
 
36
21
  .accordion-header {
@@ -58,10 +58,13 @@
58
58
 
59
59
  .link-icon {
60
60
  text-decoration: none;
61
- }
62
61
 
63
- .link-icon .pi {
64
- margin-right: 0.5rem;
62
+ .pi,
63
+ post-icon {
64
+ width: 1.5rem;
65
+ height: 1.5rem;
66
+ margin-right: 0.5rem;
67
+ }
65
68
  }
66
69
 
67
70
  > .list-group + .card-footer,
@@ -94,6 +94,8 @@
94
94
  }
95
95
 
96
96
  .datatable-button {
97
+ display: flex;
98
+ align-items: center;
97
99
  @include button-mixins.reset-button;
98
100
  width: datatable.$datatable-button-width;
99
101
  height: datatable.$datatable-button-height;
@@ -4,12 +4,14 @@
4
4
  @forward './../variables/options';
5
5
 
6
6
  @use './../lic/bootstrap-license';
7
+ @use './../themes/bootstrap/core' as b;
7
8
  @use './../themes/bootstrap/forms/floating-labels' as bffl;
8
9
  @use './../themes/bootstrap/forms/form-control' as bffc;
9
10
  @use './../mixins/forms' as forms-mx;
10
11
  @use './../mixins/utilities' as utilities-mx;
11
12
 
12
13
  @use './../variables/type';
14
+ @use './../variables/spacing';
13
15
  @use './../variables/components/forms';
14
16
  @use './../variables/components/form-validation';
15
17
 
@@ -51,6 +53,7 @@
51
53
  padding-bottom: forms.$form-floating-input-padding-b;
52
54
 
53
55
  ~ label {
56
+ color: forms.$form-floating-label-color;
54
57
  padding-top: 0.7rem;
55
58
  max-width: calc(
56
59
  (100% * #{forms.$form-floating-label-upscale}) - #{forms.$form-floating-label-translate-x *
@@ -67,6 +70,39 @@
67
70
  padding-top: forms.$form-floating-input-padding-t * 1.33;
68
71
  }
69
72
  }
73
+
74
+ &[type='week'],
75
+ &[type='month'],
76
+ &[type='date'],
77
+ &[type='time'] {
78
+ background-position: right b.$input-height-inner-quarter bottom 0.5rem;
79
+ }
80
+
81
+ &.form-control-sm {
82
+ &[type='date']::-webkit-calendar-picker-indicator {
83
+ margin-top: -(spacing.$size-small-regular);
84
+ }
85
+ font-size: forms.$form-floating-label-font-size-placeholder-sm;
86
+ height: forms.$form-floating-label-height-sm;
87
+ min-height: forms.$form-floating-label-height-sm;
88
+ padding-inline: forms.$form-floating-padding-x-sm;
89
+
90
+ ~ label {
91
+ font-size: forms.$form-floating-label-font-size-placeholder-sm;
92
+ padding-top: forms.$form-floating-label-padding-t-sm;
93
+ padding-inline: calc(#{forms.$form-floating-padding-x-sm} - #{forms.$input-border-width});
94
+ }
95
+
96
+ &:focus,
97
+ &:not(:placeholder-shown) {
98
+ padding-top: forms.$form-floating-padding-y-sm * 2;
99
+
100
+ ~ label {
101
+ padding-top: forms.$form-floating-padding-y-sm;
102
+ font-size: forms.$form-floating-label-font-size-sm;
103
+ }
104
+ }
105
+ }
70
106
  }
71
107
 
72
108
  > .form-select {
@@ -106,8 +142,31 @@
106
142
  }
107
143
  }
108
144
 
145
+ &.form-select-sm {
146
+ padding-inline: forms.$form-floating-padding-x-sm;
147
+ padding-top: forms.$form-floating-padding-y-sm * 2;
148
+ font-size: forms.$form-floating-label-font-size-placeholder-sm;
149
+ height: forms.$form-floating-label-height-sm;
150
+ min-height: forms.$form-floating-label-height-sm;
151
+
152
+ ~ label {
153
+ padding-top: forms.$form-floating-padding-y-sm;
154
+ font-size: forms.$form-floating-label-font-size-sm;
155
+ padding-inline: forms.$form-floating-padding-x-sm;
156
+ }
157
+
158
+ // TODO: replace with :has
159
+ &:empty,
160
+ &.form-select-empty {
161
+ ~ label {
162
+ padding-top: forms.$form-floating-label-padding-t-sm;
163
+ font-size: forms.$form-floating-label-font-size-placeholder-sm;
164
+ }
165
+ }
166
+ }
167
+
109
168
  &[multiple] {
110
- padding-top: forms.$form-floating-input-padding-t * 1.5;
169
+ padding-top: spacing.$size-big;
111
170
  padding-bottom: 0;
112
171
  height: auto;
113
172
 
@@ -120,7 +179,21 @@
120
179
  2} - #{forms.$form-floating-padding-x * forms.$form-floating-label-upscale}
121
180
  );
122
181
  height: auto;
123
- background: forms.$input-bg;
182
+ left: forms.$input-border-width * 3;
183
+ }
184
+
185
+ &.form-select-sm {
186
+ padding-top: forms.$form-floating-input-padding-t;
187
+
188
+ ~ label {
189
+ left: forms.$input-border-width * 2;
190
+ }
191
+ }
192
+
193
+ &:not(:disabled) {
194
+ ~ label {
195
+ background: forms.$input-bg;
196
+ }
124
197
  }
125
198
 
126
199
  &:empty {
@@ -134,33 +207,10 @@
134
207
  }
135
208
  }
136
209
  }
137
-
138
- &.form-select-sm {
139
- padding-inline: forms.$form-floating-padding-x-sm;
140
- padding-top: forms.$form-floating-padding-y-sm * 2;
141
- font-size: forms.$form-floating-label-font-size-placeholder-sm;
142
- height: forms.$form-floating-label-height-sm;
143
- min-height: forms.$form-floating-label-height-sm;
144
-
145
- ~ label {
146
- padding-top: forms.$form-floating-padding-y-sm;
147
- font-size: forms.$form-floating-label-font-size-sm;
148
- padding-inline: calc(#{forms.$form-floating-padding-x-sm} - #{forms.$input-border-width});
149
- }
150
-
151
- // TODO: replace with :has
152
- &:empty,
153
- &.form-select-empty {
154
- ~ label {
155
- padding-top: forms.$form-floating-label-padding-t-sm;
156
- font-size: forms.$form-floating-label-font-size-placeholder-sm;
157
- }
158
- }
159
- }
160
210
  }
161
211
 
162
212
  > textarea.form-control {
163
- padding-top: forms.$input-padding-y-lg * 1.5;
213
+ padding-top: forms.$input-padding-y-lg * 2;
164
214
  padding-bottom: forms.$input-padding-y-lg;
165
215
  height: auto;
166
216
 
@@ -173,7 +223,7 @@
173
223
 
174
224
  &:focus,
175
225
  &:not(:placeholder-shown) {
176
- padding-top: forms.$input-padding-y-lg * 1.5;
226
+ padding-top: forms.$input-padding-y-lg * 2;
177
227
  padding-bottom: forms.$input-padding-y-lg;
178
228
 
179
229
  ~ label {
@@ -9,18 +9,6 @@
9
9
  @use './../variables/components/forms';
10
10
  @use './../variables/components/form-select' as form-select;
11
11
 
12
- .form-select-rg {
13
- @include forms-mixins.form-control-rg;
14
- }
15
-
16
- .form-select-lg {
17
- background-size: form-select.$form-select-bg-size;
18
- }
19
-
20
- .form-select-sm {
21
- background-size: form-select.$form-select-bg-size-sm;
22
- }
23
-
24
12
  .form-select {
25
13
  &:not(:disabled) {
26
14
  &:hover {
@@ -28,33 +16,51 @@
28
16
  }
29
17
  }
30
18
 
31
- &.success,
32
- &.is-invalid {
33
- background-position:
34
- right b.$form-select-padding-x * 2.5 center,
35
- b.$form-select-bg-position;
19
+ &:not([multiple]) {
20
+ &:disabled {
21
+ background-image: b.escape-svg(form-select.$form-select-indicator-disabled),
22
+ var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
23
+ }
36
24
 
37
- &.form-select-lg {
25
+ &.is-valid,
26
+ &.is-invalid {
38
27
  background-position:
39
- right b.$form-select-padding-x * 3 center,
28
+ right b.$form-select-padding-x * 2.5 center,
40
29
  b.$form-select-bg-position;
30
+
31
+ &.form-select-lg {
32
+ background-position:
33
+ right b.$form-select-padding-x * 3 center,
34
+ b.$form-select-bg-position;
35
+ }
41
36
  }
42
- }
43
37
 
44
- &:disabled {
45
- background-image: b.escape-svg(form-select.$form-select-indicator-disabled),
46
- var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
47
- }
38
+ &.is-valid {
39
+ background-image: b.escape-svg(form-select.$form-select-indicator-success),
40
+ var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
41
+ }
48
42
 
49
- &.success {
50
- border-color: var(--post-success-green);
51
- background-image: b.escape-svg(form-select.$form-select-indicator-success),
52
- var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
43
+ &.is-invalid {
44
+ background-image: b.escape-svg(form-select.$form-select-indicator-error),
45
+ var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
46
+ }
53
47
  }
54
48
 
55
- &.is-invalid {
56
- background-image: b.escape-svg(form-select.$form-select-indicator-error),
57
- var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
49
+ &[multiple] {
50
+ &.is-valid,
51
+ &.is-invalid {
52
+ background-position: right b.$form-select-padding-x * 1.5 center;
53
+ }
54
+
55
+ &.is-valid {
56
+ background-image: b.escape-svg(form-select.$form-select-indicator-success),
57
+ var(--bs-form-select-bg-icon, none);
58
+ }
59
+
60
+ &.is-invalid {
61
+ background-image: b.escape-svg(form-select.$form-select-indicator-error),
62
+ var(--bs-form-select-bg-icon, none);
63
+ }
58
64
  }
59
65
 
60
66
  @include utilities.high-contrast-mode() {
@@ -73,3 +79,18 @@
73
79
  }
74
80
  }
75
81
  }
82
+
83
+ .form-select-rg {
84
+ @include forms-mixins.form-rg;
85
+ background-size: forms.$form-bg-size; // Set arrow size. Duplicated rule in form-validation for is-valid/is-invalid icon.
86
+ }
87
+
88
+ .form-select-sm {
89
+ @include forms-mixins.form-sm;
90
+ background-size: forms.$form-bg-size-sm; // Set arrow size. Duplicated rule in form-validation for is-valid/is-invalid icon.
91
+ }
92
+
93
+ .form-select-lg {
94
+ @include forms-mixins.form-lg;
95
+ background-size: forms.$form-bg-size; // Set arrow size. Duplicated rule in form-validation for is-valid/is-invalid icon.
96
+ }
@@ -3,7 +3,7 @@
3
3
  @use 'sass:map';
4
4
 
5
5
  @use './../lic/bootstrap-license';
6
- @use './../themes/bootstrap/core' as *;
6
+ @use './../themes/bootstrap/core' as b;
7
7
  @use './../themes/bootstrap/forms/validation' as bfv;
8
8
 
9
9
  @use './../mixins/color' as color-mx;
@@ -12,6 +12,7 @@
12
12
  @use './../variables/color';
13
13
  @use './../variables/components/form-validation';
14
14
  @use './../variables/components/forms';
15
+ @use './../variables/spacing';
15
16
 
16
17
  .invalid-feedback,
17
18
  .valid-feedback {
@@ -43,10 +44,10 @@
43
44
  color: form-validation.$form-feedback-custom-text;
44
45
  }
45
46
 
46
- @each $state, $data in $form-validation-states {
47
+ @each $state, $data in b.$form-validation-states {
47
48
  $icon: map.get($data, 'icon');
48
49
 
49
- @include form-validation-state-selector($state) {
50
+ @include b.form-validation-state-selector($state) {
50
51
  ~ .#{$state}-feedback,
51
52
  ~ .#{$state}-tooltip {
52
53
  display: block;
@@ -54,19 +55,27 @@
54
55
  }
55
56
 
56
57
  .form-control {
57
- @include form-validation-state-selector($state) {
58
- padding-right: $input-height-inner;
59
- background-image: escape-svg($icon);
58
+ @include b.form-validation-state-selector($state) {
59
+ padding-right: b.$input-height-inner;
60
+ background-image: b.escape-svg($icon);
60
61
  background-repeat: no-repeat;
61
- background-position: right $input-height-inner-quarter center;
62
+ background-position: right b.$input-height-inner-quarter center;
62
63
  background-size: form-validation.$form-feedback-icon-size;
64
+
65
+ &.form-control-sm {
66
+ background-size: forms.$form-bg-size-sm;
67
+ }
68
+
69
+ &.form-control-lg {
70
+ background-size: forms.$form-bg-size;
71
+ }
63
72
  }
64
73
  }
65
74
 
66
75
  textarea.form-control {
67
- @include form-validation-state-selector($state) {
68
- padding-right: $input-height-inner;
69
- background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
76
+ @include b.form-validation-state-selector($state) {
77
+ padding-right: b.$input-height-inner;
78
+ background-position: top b.$input-height-inner-quarter right b.$input-height-inner-quarter;
70
79
  }
71
80
  }
72
81
 
@@ -74,7 +83,7 @@
74
83
  > .form-control:not(:focus),
75
84
  > .form-select:not(:focus),
76
85
  > .form-floating:not(:focus-within) {
77
- @include form-validation-state-selector($state) {
86
+ @include b.form-validation-state-selector($state) {
78
87
  @if $state == 'valid' {
79
88
  z-index: 3;
80
89
  } @else if $state == 'invalid' {
@@ -92,14 +101,45 @@
92
101
 
93
102
  .form-control,
94
103
  .form-select {
95
- @include form-validation-mx.form-validation-state-selector(invalid) {
104
+ &.is-invalid {
96
105
  border-color: form-validation.$form-feedback-invalid-color;
106
+ background-image: b.escape-svg(form-validation.$form-feedback-icon-invalid);
97
107
 
98
108
  &:focus {
99
109
  border-color: form-validation.$form-feedback-invalid-color;
100
110
  box-shadow: form-validation.$form-feedback-invalid-box-shadow;
101
111
  }
102
112
  }
113
+
114
+ &.is-valid {
115
+ border-color: var(--post-success-green);
116
+ background-image: b.escape-svg(form-validation.$form-feedback-icon-valid);
117
+
118
+ &:focus {
119
+ border-color: form-validation.$form-feedback-valid-color;
120
+ box-shadow: form-validation.$form-feedback-valid-box-shadow;
121
+ }
122
+ }
123
+
124
+ &.is-invalid,
125
+ &.is-valid {
126
+ padding-right: spacing.$size-small-huge; // For deprecated form-control-rg
127
+ background-repeat: no-repeat;
128
+ background-size: forms.$form-bg-size; // Duplicated rule in form-select for arrow size.
129
+ background-position: right b.$input-height-inner-quarter center;
130
+
131
+ &.form-select-sm,
132
+ &.form-control-sm {
133
+ padding-right: spacing.$size-bigger-big; // Included in bootstrap and prevent native icon (e.g. with input[type=date]) to stack over success icon
134
+ background-size: forms.$form-bg-size-sm; // Add space between background icons (ours and the one from bootstrap). Duplicated rule in form-select for arrow size.
135
+ }
136
+
137
+ &.form-select-lg,
138
+ &.form-control-lg {
139
+ padding-right: spacing.$size-small-huge; // Included in bootstrap and prevent native icon (e.g. with input[type=date]) to stack over success icon
140
+ background-size: forms.$form-bg-size; // Add space between background icons (ours and the one from bootstrap). Duplicated rule in form-select for arrow size.
141
+ }
142
+ }
103
143
  }
104
144
 
105
145
  .form-check-input {
@@ -13,7 +13,15 @@
13
13
  @use './../themes/bootstrap/forms/input-group' as bfig;
14
14
 
15
15
  .form-control-rg {
16
- @include form-mixins.form-control-rg;
16
+ @include form-mixins.form-rg;
17
+ }
18
+
19
+ .form-control-sm {
20
+ @include form-mixins.form-sm;
21
+ }
22
+
23
+ .form-control-lg {
24
+ @include form-mixins.form-lg;
17
25
  }
18
26
 
19
27
  select.form-control-rg:not([size]):not([multiple]) {
@@ -35,11 +43,6 @@ select.form-control-rg:not([size]):not([multiple]) {
35
43
  &[type='file'] {
36
44
  position: relative;
37
45
 
38
- min-height: calc(
39
- (1rem * forms.$input-line-height) + (forms.$input-padding-y * 2) +
40
- (forms.$input-border-width * 2)
41
- );
42
-
43
46
  &::file-selector-button {
44
47
  display: block;
45
48
  position: absolute;
@@ -108,11 +111,6 @@ select.form-control-rg:not([size]):not([multiple]) {
108
111
  }
109
112
 
110
113
  &.form-control-sm {
111
- min-height: calc(
112
- (1rem * forms.$input-line-height-sm) + (forms.$input-padding-y-sm * 2) +
113
- (forms.$input-border-width * 2)
114
- );
115
-
116
114
  &::after {
117
115
  padding-inline: forms.$input-padding-y-sm;
118
116
  }
@@ -130,11 +128,6 @@ select.form-control-rg:not([size]):not([multiple]) {
130
128
  }
131
129
 
132
130
  &.form-control-lg {
133
- min-height: calc(
134
- (1rem * forms.$input-line-height-lg) + (forms.$input-padding-y-lg * 2) +
135
- (forms.$input-border-width * 2)
136
- );
137
-
138
131
  &::after {
139
132
  padding-inline: forms.$input-padding-y-lg;
140
133
  }
@@ -88,8 +88,9 @@ $gutter-x-cache: 0;
88
88
  }
89
89
  }
90
90
 
91
- // legacy code
91
+ //the following classes are all deprecated and wil be removed in next major version
92
92
 
93
+ //deprecated
93
94
  .vertical-gutters {
94
95
  margin-bottom: grid.$grid-gutter-width * -1;
95
96
 
@@ -99,6 +100,7 @@ $gutter-x-cache: 0;
99
100
  }
100
101
  }
101
102
 
103
+ //deprecated
102
104
  // border-gutters class is used to manipulate border collapse
103
105
  .row.border-gutters {
104
106
  margin-right: -(commons.$border-width);
@@ -113,8 +115,10 @@ $gutter-x-cache: 0;
113
115
  }
114
116
  }
115
117
 
118
+ //deprecated
116
119
  $container-cache: 0;
117
120
 
121
+ //deprecated
118
122
  @each $breakpoint in grid.$grid-breakpoints-list {
119
123
  $container-padding: map.get(grid.$grid-container-padding, $breakpoint);
120
124
 
@@ -153,6 +157,7 @@ $container-cache: 0;
153
157
  }
154
158
  }
155
159
 
160
+ //deprecated
156
161
  // Container fluid responsive needs to be written every time
157
162
  .container-fluid-#{$breakpoint} {
158
163
  @include media-breakpoint-only($breakpoint) {
@@ -161,5 +166,6 @@ $container-cache: 0;
161
166
  }
162
167
  }
163
168
 
169
+ //deprecated
164
170
  $container-cache: $container-padding;
165
171
  }
@@ -0,0 +1,8 @@
1
+ // Fix a regression after new version of grid
2
+ sp-intranet-header ~ .container-fluid {
3
+ padding-left: 0;
4
+
5
+ > .row {
6
+ margin-left: 0;
7
+ }
8
+ }
@@ -7,6 +7,7 @@
7
7
 
8
8
  @use 'scaffolding';
9
9
 
10
+ @use 'layout';
10
11
  @use 'top-navigation';
11
12
  @use 'sidebar';
12
13
  @use 'nav-overflow';
@@ -6,7 +6,7 @@
6
6
  @use './../../variables/spacing';
7
7
  @use './../../variables/components/nav';
8
8
 
9
- .tab-title[role=tab]{
9
+ .tab-title[role='tab'] {
10
10
  display: inline-block;
11
11
  position: relative;
12
12
  box-sizing: border-box;
@@ -76,7 +76,7 @@
76
76
  }
77
77
 
78
78
  .form-control {
79
- @include form-mixins.form-control-rg;
79
+ @include form-mixins.form-rg;
80
80
  }
81
81
  }
82
82