@iamproperty/components 5.1.0-beta7 → 5.1.0-beta8
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/assets/css/components/accordion.global.css.map +1 -1
- package/assets/css/components/card.css +1 -1
- package/assets/css/components/card.css.map +1 -1
- package/assets/css/components/carousel.css +1 -1
- package/assets/css/components/carousel.css.map +1 -1
- package/assets/css/components/component.native.css +1 -1
- package/assets/css/components/component.native.css.map +1 -1
- package/assets/css/components/component.reset.css +1 -1
- package/assets/css/components/component.reset.css.map +1 -1
- package/assets/css/components/fileupload.css +1 -1
- package/assets/css/components/fileupload.css.map +1 -1
- package/assets/css/components/header.css +1 -1
- package/assets/css/components/header.css.map +1 -1
- package/assets/css/components/marketing.css +1 -0
- package/assets/css/components/marketing.css.map +1 -0
- package/assets/css/components/nav.css +1 -1
- package/assets/css/components/nav.css.map +1 -1
- package/assets/css/components/nav.global.css +1 -1
- package/assets/css/components/nav.global.css.map +1 -1
- package/assets/css/components/slider.css.map +1 -1
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/style.min.css +1 -1
- package/assets/css/style.min.css.map +1 -1
- package/assets/img/signin-bg.png +0 -0
- package/assets/js/components/accordion/accordion.component.min.js +1 -1
- package/assets/js/components/actionbar/actionbar.component.min.js +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
- package/assets/js/components/card/card.component.js +2 -1
- package/assets/js/components/card/card.component.min.js +4 -3
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.js +61 -0
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
- package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
- package/assets/js/components/header/header.component.js +6 -12
- package/assets/js/components/header/header.component.min.js +8 -14
- package/assets/js/components/header/header.component.min.js.map +1 -1
- package/assets/js/components/marketing/marketing.component.js +37 -0
- package/assets/js/components/nav/nav.component.min.js +3 -3
- package/assets/js/components/notification/notification.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +1 -1
- package/assets/js/components/search/search.component.min.js +1 -1
- package/assets/js/components/table/table.component.min.js +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +1 -1
- package/assets/js/dynamic.js +1 -1
- package/assets/js/dynamic.min.js +3 -3
- package/assets/js/dynamic.min.js.map +1 -1
- package/assets/js/modules/carousel.js +15 -23
- package/assets/js/scripts.bundle.js +11 -16
- package/assets/js/scripts.bundle.js.map +1 -1
- package/assets/js/scripts.bundle.min.js +2 -2
- package/assets/js/scripts.bundle.min.js.map +1 -1
- package/assets/sass/_corefiles.scss +1 -0
- package/assets/sass/_elements.scss +1 -1
- package/assets/sass/_functions/mixins.scss +16 -0
- package/assets/sass/_functions/utilities.scss +0 -17
- package/assets/sass/_functions/variables.scss +1 -0
- package/assets/sass/components/card.scss +23 -3
- package/assets/sass/components/carousel.scss +86 -159
- package/assets/sass/components/component.native.scss +86 -3
- package/assets/sass/components/fileupload.scss +1 -1
- package/assets/sass/components/header.scss +53 -55
- package/assets/sass/components/marketing.scss +64 -0
- package/assets/sass/components/nav.global.scss +1 -0
- package/assets/sass/components/nav.scss +7 -1
- package/assets/sass/elements/admin-panel.scss +9 -7
- package/assets/sass/elements/badge.scss +29 -0
- package/assets/sass/elements/forms.scss +3 -3
- package/assets/sass/elements/links.scss +2 -1
- package/assets/sass/foundations/reboot.scss +12 -13
- package/assets/sass/foundations/root.scss +11 -3
- package/assets/sass/helpers/max-height.scss +78 -4
- package/assets/sass/templates/auth.scss +112 -0
- package/assets/ts/components/card/card.component.ts +2 -1
- package/assets/ts/components/carousel/README.md +39 -0
- package/assets/ts/components/carousel/carousel.component.ts +75 -0
- package/assets/ts/components/header/header.component.ts +6 -12
- package/assets/ts/components/marketing/marketing.component.ts +49 -0
- package/assets/ts/dynamic.ts +1 -1
- package/assets/ts/modules/carousel.ts +21 -33
- package/dist/components.es.js +459 -663
- package/dist/components.umd.js +95 -83
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/components/Carousel/Carousel.vue +18 -103
- package/src/components/Header/Header.vue +1 -3
- package/src/components/Marketing/Marketing.vue +39 -0
- package/src/components/Marketing/README.md +20 -0
- package/src/components/Carousel/Carousel.spec.js +0 -45
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import carousel from "../../modules/carousel";
|
|
3
|
+
|
|
4
|
+
// Data layer Web component created
|
|
5
|
+
window.dataLayer = window.dataLayer || [];
|
|
6
|
+
window.dataLayer.push({
|
|
7
|
+
"event": "customElementRegistered",
|
|
8
|
+
"element": "carousel"
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
class iamCarousel extends HTMLElement {
|
|
12
|
+
|
|
13
|
+
constructor(){
|
|
14
|
+
super();
|
|
15
|
+
this.attachShadow({ mode: 'open'});
|
|
16
|
+
|
|
17
|
+
const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
|
|
18
|
+
const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
|
|
19
|
+
const loadCSS = `@import "${assetLocation}/css/components/carousel.css";`;
|
|
20
|
+
|
|
21
|
+
const template = document.createElement('template');
|
|
22
|
+
template.innerHTML = `
|
|
23
|
+
<style>
|
|
24
|
+
@import "${coreCSS}";
|
|
25
|
+
${loadCSS}
|
|
26
|
+
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
27
|
+
</style>
|
|
28
|
+
<div class="carousel" :id="'carousel'+id">
|
|
29
|
+
<div class="carousel__wrapper">
|
|
30
|
+
<div class="carousel__inner">
|
|
31
|
+
|
|
32
|
+
<slot></slot>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div class="carousel__controls">
|
|
36
|
+
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<button class="btn btn-prev" data-go="0" disabled>Prev</button>
|
|
40
|
+
<button class="btn btn-next" data-go="2">Next</button>
|
|
41
|
+
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
`;
|
|
45
|
+
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
connectedCallback() {
|
|
49
|
+
|
|
50
|
+
const carouselElement = this.shadowRoot.querySelector('.carousel');
|
|
51
|
+
const row = this.querySelector('.row');
|
|
52
|
+
const carouselControls = this.shadowRoot.querySelector('.carousel__controls');
|
|
53
|
+
|
|
54
|
+
let itemCount = this.querySelectorAll(':scope > .row > .col').length
|
|
55
|
+
|
|
56
|
+
carouselElement.setAttribute('data-row-class',row.className);
|
|
57
|
+
|
|
58
|
+
if(this.classList.contains('hide-btns'))
|
|
59
|
+
carouselElement.classList.add('hide-btns');
|
|
60
|
+
|
|
61
|
+
if(this.classList.contains('hide-controls'))
|
|
62
|
+
carouselElement.classList.add('hide-controls');
|
|
63
|
+
|
|
64
|
+
// populate the pips
|
|
65
|
+
let pips = "";
|
|
66
|
+
for (let i = 1; i <= itemCount; i++) {
|
|
67
|
+
pips += `<button class="control-${i}" data-slide="${i}" ${i == 1 ? "aria-current":""}>Slide ${i}</button>`;
|
|
68
|
+
}
|
|
69
|
+
carouselControls.innerHTML = pips;
|
|
70
|
+
|
|
71
|
+
carousel(carouselElement,row);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export default iamCarousel;
|
|
@@ -25,18 +25,12 @@ class iamHeader extends HTMLElement {
|
|
|
25
25
|
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
26
26
|
</style>
|
|
27
27
|
<div class="header-banner">
|
|
28
|
-
<div class="container" part="container">
|
|
29
|
-
<slot name="breadcrumb"></slot>
|
|
30
|
-
<div class="header-banner__inner">
|
|
31
|
-
<slot></slot>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
28
|
<picture>
|
|
35
|
-
<!-- Actual image only loaded on desktops -->
|
|
36
|
-
<source srcset="" media="(min-width: 62em)">
|
|
37
|
-
<!-- Placeholder image -->
|
|
38
29
|
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="" lazy="" />
|
|
39
30
|
</picture>
|
|
31
|
+
<div class="container">
|
|
32
|
+
<slot></slot>
|
|
33
|
+
</div>
|
|
40
34
|
</div>
|
|
41
35
|
`;
|
|
42
36
|
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
@@ -44,13 +38,13 @@ class iamHeader extends HTMLElement {
|
|
|
44
38
|
|
|
45
39
|
connectedCallback() {
|
|
46
40
|
|
|
47
|
-
this.classList.add('
|
|
41
|
+
this.classList.add('bg-primary');
|
|
48
42
|
|
|
49
43
|
const picture = this.shadowRoot.querySelector('picture');
|
|
50
|
-
const source = this.shadowRoot.querySelector('picture
|
|
44
|
+
const source = this.shadowRoot.querySelector('picture img');
|
|
51
45
|
|
|
52
46
|
if(this.hasAttribute('image'))
|
|
53
|
-
source.setAttribute('
|
|
47
|
+
source.setAttribute('src', this.getAttribute('image'));
|
|
54
48
|
else
|
|
55
49
|
picture.remove();
|
|
56
50
|
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
|
|
3
|
+
// Data layer Web component created
|
|
4
|
+
window.dataLayer = window.dataLayer || [];
|
|
5
|
+
window.dataLayer.push({
|
|
6
|
+
"event": "customElementRegistered",
|
|
7
|
+
"element": "Marketing"
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
class iamMarketing extends HTMLElement {
|
|
11
|
+
|
|
12
|
+
constructor(){
|
|
13
|
+
super();
|
|
14
|
+
this.attachShadow({ mode: 'open'});
|
|
15
|
+
|
|
16
|
+
const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets'
|
|
17
|
+
const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
|
|
18
|
+
const loadCSS = `@import "${assetLocation}/css/components/marketing.css";`;
|
|
19
|
+
|
|
20
|
+
const template = document.createElement('template');
|
|
21
|
+
template.innerHTML = `
|
|
22
|
+
<style>
|
|
23
|
+
@import "${coreCSS}";
|
|
24
|
+
${loadCSS}
|
|
25
|
+
|
|
26
|
+
</style>
|
|
27
|
+
<link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous" />
|
|
28
|
+
<div class="marketing">
|
|
29
|
+
|
|
30
|
+
<slot></slot>
|
|
31
|
+
</div>
|
|
32
|
+
`;
|
|
33
|
+
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
connectedCallback() {
|
|
37
|
+
|
|
38
|
+
this.classList.add('invert-colours');
|
|
39
|
+
|
|
40
|
+
if(this.hasAttribute('data-img')){
|
|
41
|
+
this.shadowRoot.querySelector('.marketing').insertAdjacentHTML(
|
|
42
|
+
'afterbegin',
|
|
43
|
+
`<figure><img src="${this.getAttribute('data-img')}" alt="" /></figure>`,
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export default iamMarketing;
|
package/assets/ts/dynamic.ts
CHANGED
|
@@ -14,7 +14,7 @@ import youtubeVideo from '../js/modules/youtubevideo'
|
|
|
14
14
|
|
|
15
15
|
import iamNotification from './components/notification/notification.component'
|
|
16
16
|
|
|
17
|
-
const components = ['accordion','header','tabs', 'table','card','pagination','filterlist', 'applied-filters'];
|
|
17
|
+
const components = ['accordion','header','tabs', 'table','card','pagination','filterlist', 'applied-filters', 'nav', 'marketing'];
|
|
18
18
|
const prefix = "iam"
|
|
19
19
|
const options = {
|
|
20
20
|
rootMargin: '50px',
|
|
@@ -1,33 +1,32 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
function carousel(carouselElement) {
|
|
2
|
+
function carousel(carouselElement, row) {
|
|
3
3
|
|
|
4
4
|
var scrollTimeout;
|
|
5
5
|
|
|
6
6
|
let carouselInner = carouselElement.querySelector('.carousel__inner');
|
|
7
|
-
let
|
|
8
|
-
let
|
|
9
|
-
let smCols = carouselElement.getAttribute('data-sm-cols');
|
|
10
|
-
let mdCols = carouselElement.getAttribute('data-md-cols');
|
|
11
|
-
|
|
12
|
-
carouselElement.querySelector('.carousel__controls a').setAttribute('aria-current', true);
|
|
7
|
+
let carouselControls = carouselElement.querySelector('.carousel__controls');
|
|
8
|
+
let itemCount = row.querySelectorAll('.col').length;
|
|
13
9
|
|
|
14
10
|
// On scroll we need to make sure the buttons get corrected and the next testimonial is shown
|
|
15
11
|
carouselInner.addEventListener('scroll', function(e){
|
|
16
12
|
clearTimeout(scrollTimeout);
|
|
17
|
-
scrollTimeout = setTimeout(function(){
|
|
13
|
+
scrollTimeout = setTimeout(function(){
|
|
18
14
|
|
|
19
15
|
let scrollArea = carouselInner.clientWidth;
|
|
20
16
|
let scrollWidth = carouselInner.scrollWidth;
|
|
21
17
|
let scrollLeft = carouselInner.scrollLeft;
|
|
22
18
|
let targetSlide = Math.round((scrollLeft / scrollWidth) * itemCount) + 1;
|
|
23
|
-
let lastItemOffset =
|
|
19
|
+
let lastItemOffset = row.querySelector('.col:last-child').offsetLeft + 50;
|
|
20
|
+
|
|
21
|
+
if(carouselInner.scrollLeft + scrollArea >= lastItemOffset)
|
|
22
|
+
targetSlide = itemCount;
|
|
24
23
|
|
|
25
|
-
Array.from(carouselElement.querySelectorAll('.carousel__controls
|
|
26
|
-
|
|
24
|
+
Array.from(carouselElement.querySelectorAll('.carousel__controls button')).forEach((button, index) => {
|
|
25
|
+
button.removeAttribute('aria-current');
|
|
27
26
|
});
|
|
28
27
|
|
|
29
28
|
carouselElement.querySelector('.control-'+targetSlide).setAttribute('aria-current', true);
|
|
30
|
-
|
|
29
|
+
|
|
31
30
|
// Disable the previous button
|
|
32
31
|
if(targetSlide == 1)
|
|
33
32
|
carouselElement.querySelector('.btn-prev').setAttribute('disabled','disabled');
|
|
@@ -35,29 +34,29 @@ function carousel(carouselElement) {
|
|
|
35
34
|
carouselElement.querySelector('.btn-prev').removeAttribute('disabled');
|
|
36
35
|
|
|
37
36
|
// Disable the next button if the last item is in view
|
|
38
|
-
if(
|
|
37
|
+
if(targetSlide == itemCount)
|
|
39
38
|
carouselElement.querySelector('.btn-next').setAttribute('disabled','disabled');
|
|
40
39
|
else
|
|
41
40
|
carouselElement.querySelector('.btn-next').removeAttribute('disabled');
|
|
42
|
-
|
|
41
|
+
|
|
43
42
|
}, 100);
|
|
44
43
|
|
|
45
44
|
}, false);
|
|
46
45
|
|
|
47
46
|
// when the buttons are used we need to make sure the carousel scrolls to the correct place
|
|
48
|
-
|
|
47
|
+
carouselControls.addEventListener('click', function(e){
|
|
49
48
|
|
|
50
49
|
for (var target = e.target; target && target != this; target = target.parentNode) {
|
|
51
|
-
if (target.matches('
|
|
50
|
+
if (typeof target.matches == "function" && target.matches('button')) {
|
|
52
51
|
|
|
53
52
|
e.preventDefault();
|
|
54
53
|
|
|
55
|
-
Array.from(
|
|
56
|
-
|
|
54
|
+
Array.from(carouselControls.querySelectorAll('button')).forEach((button, index) => {
|
|
55
|
+
button.removeAttribute('aria-current');
|
|
57
56
|
});
|
|
58
57
|
target.setAttribute('aria-current', true);
|
|
59
|
-
|
|
60
|
-
const el =
|
|
58
|
+
|
|
59
|
+
const el = row.querySelector(`*:nth-child(${target.getAttribute('data-slide')})`);
|
|
61
60
|
|
|
62
61
|
carouselInner.scroll({
|
|
63
62
|
top: 0,
|
|
@@ -69,11 +68,11 @@ function carousel(carouselElement) {
|
|
|
69
68
|
}
|
|
70
69
|
}
|
|
71
70
|
}, false);
|
|
72
|
-
|
|
71
|
+
|
|
73
72
|
carouselElement.addEventListener('click', function(e){
|
|
74
73
|
|
|
75
74
|
for (var target = e.target; target && target != this; target = target.parentNode) {
|
|
76
|
-
if (target.matches('.btn-next, .btn-prev')) {
|
|
75
|
+
if (typeof target.matches == "function" && target.matches('.btn-next, .btn-prev')) {
|
|
77
76
|
|
|
78
77
|
e.preventDefault();
|
|
79
78
|
let scrollTo = target.classList.contains('btn-prev') ? carouselInner.scrollLeft - carouselInner.clientWidth : carouselInner.scrollLeft + carouselInner.clientWidth;
|
|
@@ -87,17 +86,6 @@ function carousel(carouselElement) {
|
|
|
87
86
|
}
|
|
88
87
|
}
|
|
89
88
|
}, false);
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
// Add responsive hide button classes
|
|
93
|
-
if(itemCount == 1)
|
|
94
|
-
carouselElement.classList.add('hide-btns');
|
|
95
|
-
|
|
96
|
-
if(smCols >= itemCount)
|
|
97
|
-
carouselElement.classList.add('hide-sm-btns');
|
|
98
|
-
|
|
99
|
-
if(mdCols >= itemCount)
|
|
100
|
-
carouselElement.classList.add('hide-md-btns');
|
|
101
89
|
}
|
|
102
90
|
|
|
103
91
|
export default carousel
|