mp-design-system 0.6.4 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/build/js/app.js +6 -4
- package/dist/build/js/app.js.map +1 -1
- package/dist/build/scss/library.css +1 -1
- package/dist/build/scss/library.css.map +1 -1
- package/dist/build/scss/main.css +1 -1
- package/dist/build/scss/main.css.map +1 -1
- package/package.json +1 -1
- package/src/_includes/components/campaign/campaign.config.js +3 -3
- package/src/_includes/components/comparison-table/comparison-table.scss +5 -0
- package/src/_includes/includes/related-events.njk +1 -1
- package/src/_includes/includes/resources.njk +1 -1
- package/src/_includes/layout.njk +28 -4
- package/src/assets/js/app.js +2 -0
- package/src/assets/js/imports/scrollbar-width.js +15 -0
- package/src/assets/js/imports/utilities.js +10 -0
- package/src/assets/scss/components/gallery.scss +16 -18
- package/src/assets/scss/library.scss +6 -2
- package/src/assets/scss/tools/breakout.scss +2 -0
- package/src/assets/scss/utilities/hr.scss +4 -0
- package/src/components/utilities.md +47 -4
- package/src/prototype/index.njk +1 -1
package/package.json
CHANGED
@@ -24,19 +24,19 @@ module.exports = {
|
|
24
24
|
{
|
25
25
|
title: 'Petrol',
|
26
26
|
context: {
|
27
|
-
classes: 'c-
|
27
|
+
classes: 'c-campaign--petrol'
|
28
28
|
}
|
29
29
|
},
|
30
30
|
{
|
31
31
|
title: 'Blue',
|
32
32
|
context: {
|
33
|
-
classes: 'c-
|
33
|
+
classes: 'c-campaign--blue'
|
34
34
|
}
|
35
35
|
},
|
36
36
|
{
|
37
37
|
title: 'Orange',
|
38
38
|
context: {
|
39
|
-
classes: 'c-
|
39
|
+
classes: 'c-campaign--orange'
|
40
40
|
}
|
41
41
|
}
|
42
42
|
],
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<aside class="c-slat c-slat--grey c-slat--padded">
|
4
4
|
<div class="u-wrap u-flow">
|
5
5
|
<h3 class="c-h c-h--upper">Related events</h3>
|
6
|
-
<div class="o-grid o-grid--of-three">
|
6
|
+
<div class="o-grid o-grid--of-three o-grid--swipeable">
|
7
7
|
{{ card({
|
8
8
|
theme: {
|
9
9
|
layout: 'single',
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<aside class="mp c-slat c-slat--grey c-slat--padded">
|
4
4
|
<div class="u-wrap u-flow--xl">
|
5
5
|
<h2 class="c-h c-h--step-3">Related resources</h2>
|
6
|
-
<div class="o-grid o-grid--of-three">
|
6
|
+
<div class="o-grid o-grid--of-three o-grid--swipeable">
|
7
7
|
{{ card({
|
8
8
|
theme: {
|
9
9
|
layout: 'single',
|
package/src/_includes/layout.njk
CHANGED
@@ -14,10 +14,31 @@
|
|
14
14
|
<meta property="og:image:alt" content="{{ config.name }}" />
|
15
15
|
<meta name="twitter:image" content="{{ config.openGraphImage }}" />
|
16
16
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
17
|
-
<script>
|
18
|
-
document.documentElement
|
19
|
-
|
20
|
-
|
17
|
+
<script>
|
18
|
+
if(document.documentElement){
|
19
|
+
document.documentElement.classList.add('has-js');
|
20
|
+
document.documentElement.classList.remove('no-js');
|
21
|
+
}
|
22
|
+
// Calculate the height of the sidebar so it doesn't cause double scrollbars
|
23
|
+
function debounce(func, wait, immediate) {
|
24
|
+
var timeout;
|
25
|
+
return function() {
|
26
|
+
var context = this, args = arguments;
|
27
|
+
var later = function() {
|
28
|
+
timeout = null;
|
29
|
+
if (!immediate) func.apply(context, args);
|
30
|
+
};
|
31
|
+
var callNow = immediate && !timeout;
|
32
|
+
clearTimeout(timeout);
|
33
|
+
timeout = setTimeout(later, wait);
|
34
|
+
if (callNow) func.apply(context, args);
|
35
|
+
};
|
36
|
+
};
|
37
|
+
var resizeSidebar = debounce(function() {
|
38
|
+
var headerHeight = document.querySelector('.c-library__header').offsetHeight + 'px';
|
39
|
+
document.documentElement.style.setProperty('--headerHeight', headerHeight)
|
40
|
+
}, 250);
|
41
|
+
</script>
|
21
42
|
<link rel="icon" type="image/png" sizes="32x32" href="/static/img/favicon-32x32.png">
|
22
43
|
<link rel="stylesheet" href="/build/scss/main.css" />
|
23
44
|
<script>window.MSInputMethodContext && document.documentMode && document.write('<script src="https://cdn.jsdelivr.net/gh/nuxodin/ie11CustomProperties@4.1.0/ie11CustomProperties.min.js"><\/script>');</script>
|
@@ -30,12 +51,15 @@
|
|
30
51
|
<script src="/build/js/app.js"></script>
|
31
52
|
<script>
|
32
53
|
(function() {
|
54
|
+
// Prevent empty links from jumping to the top of page when clicked
|
33
55
|
var links = document.querySelectorAll('a[href=""],a[href="#"]');
|
34
56
|
for(var i = 0; links.length > i; i++) {
|
35
57
|
links[i].addEventListener('click', function(event) {
|
36
58
|
event.preventDefault();
|
37
59
|
})
|
38
60
|
}
|
61
|
+
window.addEventListener('resize', resizeSidebar);
|
62
|
+
resizeSidebar();
|
39
63
|
})();
|
40
64
|
</script>
|
41
65
|
</body>
|
package/src/assets/js/app.js
CHANGED
@@ -5,6 +5,7 @@ import Gallery from './imports/gallery';
|
|
5
5
|
import HeroPattern from './imports/hero-pattern';
|
6
6
|
import ResponsiveTable from './imports/responsive-table';
|
7
7
|
import ScrollSpy from './imports/scroll-spy';
|
8
|
+
import ScrollbarWidth from './imports/scrollbar-width';
|
8
9
|
import Tabs from './imports/tabs';
|
9
10
|
|
10
11
|
(() => {
|
@@ -23,4 +24,5 @@ import Tabs from './imports/tabs';
|
|
23
24
|
Tabs();
|
24
25
|
ScrollSpy();
|
25
26
|
ResponsiveTable();
|
27
|
+
ScrollbarWidth();
|
26
28
|
})();
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { debounce } from './utilities';
|
2
|
+
|
3
|
+
function ScrollbarWidth() {
|
4
|
+
setScrollbarWidth();
|
5
|
+
window.addEventListener('resize', debounce(setScrollbarWidth, 250));
|
6
|
+
}
|
7
|
+
|
8
|
+
function setScrollbarWidth() {
|
9
|
+
document.documentElement.style.setProperty(
|
10
|
+
'--scrollbarWidth',
|
11
|
+
window.innerWidth - document.body.clientWidth + 'px'
|
12
|
+
);
|
13
|
+
}
|
14
|
+
|
15
|
+
export default ScrollbarWidth;
|
@@ -15,6 +15,16 @@ export function userPrefersReducedMotion() {
|
|
15
15
|
return prefersReducedMotion;
|
16
16
|
}
|
17
17
|
|
18
|
+
export const debounce = (func, limit) => {
|
19
|
+
let wait = false;
|
20
|
+
return () => {
|
21
|
+
if (wait) return;
|
22
|
+
func();
|
23
|
+
wait = true;
|
24
|
+
setTimeout(() => wait = false, limit);
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
18
28
|
export const lerp = (x, y, a) => x * (1 - a) + y * a;
|
19
29
|
export const clamp = (a, min = 0, max = 1) => Math.min(max, Math.max(min, a));
|
20
30
|
export const invlerp = (x, y, a) => clamp((a - x) / (y - x));
|
@@ -10,8 +10,13 @@
|
|
10
10
|
width: 100%;
|
11
11
|
|
12
12
|
img {
|
13
|
-
margin: 0 auto;
|
14
13
|
display: block;
|
14
|
+
margin: 0 auto;
|
15
|
+
|
16
|
+
@supports (object-fit:contain) {
|
17
|
+
max-height: 500px;
|
18
|
+
object-fit: contain;
|
19
|
+
}
|
15
20
|
}
|
16
21
|
|
17
22
|
&:not(.active) {
|
@@ -24,29 +29,22 @@
|
|
24
29
|
@include padding-bottom('s');
|
25
30
|
display: flex;
|
26
31
|
flex-direction: row;
|
27
|
-
flex-wrap:
|
28
|
-
|
29
|
-
|
30
|
-
scroll-snap-type: x mandatory;
|
31
|
-
overflow-x: auto;
|
32
|
+
flex-wrap: wrap;
|
33
|
+
gap: 2%;
|
34
|
+
gap: max(8px, 2%);
|
32
35
|
|
33
36
|
& > * {
|
34
37
|
background: color('grey', 'step-3');
|
35
|
-
|
36
|
-
max-height
|
37
|
-
min-width
|
38
|
-
|
39
|
-
width: auto;
|
40
|
-
scroll-snap-align: start;
|
41
|
-
|
42
|
-
& + * {
|
43
|
-
margin-left: var(--space-xs-s);
|
44
|
-
}
|
38
|
+
@include space('min-height', 'l');
|
39
|
+
@include space('max-height', '2xl');
|
40
|
+
@include space('min-width', 'l');
|
41
|
+
max-width: 10.75%;
|
45
42
|
|
46
43
|
img {
|
47
|
-
|
48
|
-
opacity: 0.
|
44
|
+
height: 100%;
|
45
|
+
opacity: 0.8;
|
49
46
|
object-fit: cover;
|
47
|
+
width: 100%;
|
50
48
|
}
|
51
49
|
|
52
50
|
&.active img {
|
@@ -71,7 +71,7 @@
|
|
71
71
|
@media only screen and (min-width: 600px) {
|
72
72
|
&--components &__body > * {
|
73
73
|
overflow-y: scroll;
|
74
|
-
height: calc(100vh -
|
74
|
+
height: calc( 100vh - var(--headerHeight) - 1px );
|
75
75
|
}
|
76
76
|
}
|
77
77
|
|
@@ -212,7 +212,11 @@
|
|
212
212
|
}
|
213
213
|
|
214
214
|
&__main {
|
215
|
-
overflow-y:
|
215
|
+
overflow-y: auto;
|
216
|
+
|
217
|
+
@media only screen and (min-width: 600px) {
|
218
|
+
overflow-y: scroll;
|
219
|
+
}
|
216
220
|
}
|
217
221
|
|
218
222
|
&__frame {
|
@@ -3,9 +3,11 @@
|
|
3
3
|
|
4
4
|
@mixin breakout($pad: 0) {
|
5
5
|
left: 50%;
|
6
|
+
left: calc( 50% + var(--scrollbarWidth)/2.0001 );
|
6
7
|
position: relative;
|
7
8
|
transform: translateX(-50vw);
|
8
9
|
width: 100vw;
|
10
|
+
width: calc( 100vw - var(--scrollbarWidth) );
|
9
11
|
padding-left: safe-space($pad);
|
10
12
|
padding-right: safe-space($pad);
|
11
13
|
}
|
@@ -63,17 +63,60 @@ More typography utility classes are documented on the [typography page](/compone
|
|
63
63
|
```
|
64
64
|
|
65
65
|
```html
|
66
|
-
<
|
66
|
+
<p class="u-sticky">This will "stick" to the top of the screen while scrolling</p>
|
67
67
|
```
|
68
68
|
|
69
69
|
```html
|
70
|
-
<div class="u-sticky--gutter">Sticky positioning with
|
70
|
+
<div class="u-sticky--gutter">Sticky positioning, with a gap above</div>
|
71
71
|
```
|
72
72
|
|
73
73
|
```html
|
74
74
|
<div class="u-split">
|
75
|
-
<
|
76
|
-
<a
|
75
|
+
<p>Split: aligned left</p>
|
76
|
+
<a class="u-link">Aligned right</a>
|
77
77
|
</div>
|
78
78
|
The two child items will be aligned in a horizontal row
|
79
|
+
```
|
80
|
+
<div class="u-split u-pad-s u-border">
|
81
|
+
<p>Split: aligned left</p>
|
82
|
+
<a class="u-link">Aligned right</a>
|
83
|
+
</div>
|
84
|
+
|
85
|
+
## Padding and margins
|
86
|
+
|
87
|
+
More padding and margin utility classes are documented on the [space page](/components/space).
|
88
|
+
|
89
|
+
#### Syntax:
|
90
|
+
`u`-`(pad or margin)`-`(optional direction)`-`(size)`-`(optional flex size)`
|
91
|
+
|
92
|
+
Sizes | Directions
|
93
|
+
------|-----------
|
94
|
+
3xs | top
|
95
|
+
2xs | bottom
|
96
|
+
xs | left
|
97
|
+
s | right
|
98
|
+
m | y
|
99
|
+
l | x
|
100
|
+
xl |
|
101
|
+
2xl |
|
102
|
+
3xl |
|
103
|
+
4xl |
|
104
|
+
|
105
|
+
N.B. Not all permutations are available in the existing CSS, as that would amount to over 4800 extra lines of code. Currently we've only implemented a handful - but we can add more as needed.
|
106
|
+
|
107
|
+
```html
|
108
|
+
<div class="u-pad-s">Small padding on all sides</div>
|
109
|
+
```
|
110
|
+
|
111
|
+
```html
|
112
|
+
<div class="u-margin-y-xl">Extra large margin on top and bottom</div>
|
113
|
+
```
|
114
|
+
|
115
|
+
```html
|
116
|
+
<div class="u-margin-left-m">Medium margin on left side only</div>
|
117
|
+
```
|
118
|
+
|
119
|
+
```html
|
120
|
+
<div class="u-pad-x-s-xl">Flexible (small to XL) padding on left and right</div>
|
121
|
+
Grows from small padding on small screens, to xl padding on large screens
|
79
122
|
```
|
package/src/prototype/index.njk
CHANGED