@iamproperty/components 3.4.5 → 3.4.7
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.css +1 -0
- package/assets/css/components/accordion.css.map +1 -0
- package/assets/css/components/alert.css +1 -0
- package/assets/css/components/alert.css.map +1 -0
- package/assets/css/components/applied-filters.css +1 -0
- package/assets/css/components/applied-filters.css.map +1 -0
- package/assets/css/components/buttons.css +1 -0
- package/assets/css/components/buttons.css.map +1 -0
- package/assets/css/components/card.css +1 -0
- package/assets/css/components/card.css.map +1 -0
- package/assets/css/components/carousel.css +1 -0
- package/assets/css/components/carousel.css.map +1 -0
- package/assets/css/components/charts.css +1 -0
- package/assets/css/components/charts.css.map +1 -0
- package/assets/css/components/container.css +1 -0
- package/assets/css/components/container.css.map +1 -0
- package/assets/css/components/dialog.css +1 -0
- package/assets/css/components/dialog.css.map +1 -0
- package/assets/css/components/forms.css +1 -0
- package/assets/css/components/forms.css.map +1 -0
- package/assets/css/components/header.css +1 -0
- package/assets/css/components/header.css.map +1 -0
- package/assets/css/components/lists.css +1 -0
- package/assets/css/components/lists.css.map +1 -0
- package/assets/css/components/nav.css +1 -0
- package/assets/css/components/nav.css.map +1 -0
- package/assets/css/components/pagination.css +1 -0
- package/assets/css/components/pagination.css.map +1 -0
- package/assets/css/components/panel.css +1 -0
- package/assets/css/components/panel.css.map +1 -0
- package/assets/css/components/property-searchbar.css +1 -0
- package/assets/css/components/property-searchbar.css.map +1 -0
- package/assets/css/components/snapshot.css +1 -0
- package/assets/css/components/snapshot.css.map +1 -0
- package/assets/css/components/stepper.css +1 -0
- package/assets/css/components/stepper.css.map +1 -0
- package/assets/css/components/table.css +1 -0
- package/assets/css/components/table.css.map +1 -0
- package/assets/css/components/tabs.css +1 -0
- package/assets/css/components/tabs.css.map +1 -0
- package/assets/css/components/testimonial.css +1 -0
- package/assets/css/components/testimonial.css.map +1 -0
- package/assets/css/components/timeline.css +1 -0
- package/assets/css/components/timeline.css.map +1 -0
- package/assets/css/components/tooltips.css +1 -0
- package/assets/css/components/tooltips.css.map +1 -0
- 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/fonts/qanelas-bold-webfont.woff +0 -0
- package/assets/fonts/qanelas-bold-webfont.woff2 +0 -0
- package/assets/js/bundle.js +68 -0
- package/assets/js/components/accordion/accordion.component.js +33 -0
- package/assets/js/components/accordion/accordion.component.min.js +14 -0
- package/assets/js/components/accordion/accordion.component.min.js.map +1 -0
- package/assets/js/components/applied-filters/applied-filters.component.js +26 -0
- package/assets/js/components/card/card.component.js +91 -0
- package/assets/js/components/card/card.component.min.js +21 -0
- package/assets/js/components/card/card.component.min.js.map +1 -0
- package/assets/js/components/filterlist/filterlist.component.js +49 -0
- package/assets/js/components/filterlist/filterlist.component.min.js +23 -0
- package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -0
- package/assets/js/components/header/header.component.js +51 -0
- package/assets/js/components/header/header.component.min.js +30 -0
- package/assets/js/components/header/header.component.min.js.map +1 -0
- package/assets/js/components/pagination/pagination.component.js +34 -0
- package/assets/js/components/table/table.component.js +104 -0
- package/assets/js/components/table/table.component.min.js +24 -0
- package/assets/js/components/table/table.component.min.js.map +1 -0
- package/assets/js/components/tabs/tabs.component.js +34 -0
- package/assets/js/components/tabs/tabs.component.min.js +17 -0
- package/assets/js/components/tabs/tabs.component.min.js.map +1 -0
- package/assets/js/dynamic.js +74 -0
- package/assets/js/dynamic.min.js +5 -0
- package/assets/js/dynamic.min.js.map +1 -0
- package/assets/js/flat-components.js +79 -0
- package/assets/js/modules/accordion.js +11 -14
- package/assets/js/modules/applied-filters.js +100 -0
- package/assets/js/modules/data-layer.js +45 -0
- package/assets/js/modules/filterlist.js +32 -0
- package/assets/js/modules/helpers.js +80 -47
- package/assets/js/modules/pagination.js +33 -0
- package/assets/js/modules/table.js +507 -420
- package/assets/js/modules/tabs.js +97 -0
- package/assets/js/modules/youtubevideo.js +53 -61
- package/assets/js/scripts.bundle.js +111 -984
- package/assets/js/scripts.bundle.js.map +1 -1
- package/assets/js/scripts.bundle.min.js +3 -4
- package/assets/js/scripts.bundle.min.js.map +1 -1
- package/assets/js/tests/filterlist.spec.js +22 -0
- package/assets/js/tests/pagination.spec.js +15 -0
- package/assets/js/tests/table.spec.js +147 -0
- package/assets/sass/_components.scss +1 -2
- package/assets/sass/_corefiles.scss +5 -4
- package/assets/sass/_fonts.scss +4 -4
- package/assets/sass/_func.scss +1 -0
- package/assets/sass/_functions/functions.scss +6 -0
- package/assets/sass/_functions/mixins.scss +9 -9
- package/assets/sass/_functions/utilities.scss +16 -0
- package/assets/sass/_functions/variables.scss +128 -86
- package/assets/sass/_tests/colours.spec.scss +1 -1
- package/assets/sass/_tests/mixins.spec.scss +1 -1
- package/assets/sass/_tests/typography.spec.scss +2 -2
- package/assets/sass/components/accordion.scss +9 -6
- package/assets/sass/components/applied-filters.scss +65 -0
- package/assets/sass/components/card.scss +178 -227
- package/assets/sass/components/charts.scss +4 -0
- package/assets/sass/components/container.scss +13 -8
- package/assets/sass/components/dialog.scss +202 -0
- package/assets/sass/components/forms.scss +39 -5
- package/assets/sass/components/header.scss +34 -11
- package/assets/sass/components/lists.scss +15 -0
- package/assets/sass/components/nav.scss +5 -1
- package/assets/sass/components/pagination.scss +140 -0
- package/assets/sass/components/panel.scss +3 -4
- package/assets/sass/components/snapshot.scss +1 -1
- package/assets/sass/components/table.scss +419 -0
- package/assets/sass/components/tabs.scss +52 -36
- package/assets/sass/components/timeline.scss +2 -2
- package/assets/sass/foundations/icons.scss +1 -1
- package/assets/sass/{components → foundations}/links.scss +29 -2
- package/assets/sass/foundations/reboot.scss +21 -15
- package/assets/sass/foundations/root.scss +12 -5
- package/assets/sass/foundations/type.scss +90 -66
- package/assets/svg/illustrations/table.svg +165 -0
- package/assets/ts/README.md +12 -0
- package/assets/ts/bundle.ts +87 -0
- package/assets/ts/components/accordion/README.md +17 -0
- package/assets/ts/components/accordion/accordion.component.ts +43 -0
- package/assets/ts/components/applied-filters/README.md +5 -0
- package/assets/ts/components/applied-filters/applied-filters.component.ts +33 -0
- package/assets/ts/components/card/README.md +22 -0
- package/assets/ts/components/card/card.component.ts +117 -0
- package/assets/ts/components/filterlist/README.md +17 -0
- package/assets/ts/components/filterlist/filterlist.component.ts +60 -0
- package/assets/ts/components/header/README.md +26 -0
- package/assets/ts/components/header/header.component.ts +61 -0
- package/assets/ts/components/pagination/README.md +11 -0
- package/assets/ts/components/pagination/pagination.component.ts +45 -0
- package/assets/ts/components/table/README.md +23 -0
- package/assets/ts/components/table/table.component.ts +128 -0
- package/assets/ts/components/tabs/README.md +18 -0
- package/assets/ts/components/tabs/tabs.component.ts +41 -0
- package/assets/ts/dynamic.ts +98 -0
- package/assets/ts/flat-components.ts +100 -0
- package/assets/ts/html.d.ts +4 -0
- package/assets/ts/modules/accordion.ts +15 -21
- package/assets/ts/modules/applied-filters.ts +146 -0
- package/assets/ts/modules/data-layer.ts +58 -0
- package/assets/ts/modules/filterlist.ts +46 -0
- package/assets/ts/modules/helpers.ts +93 -55
- package/assets/ts/modules/pagination.ts +44 -0
- package/assets/ts/modules/table.ts +598 -433
- package/assets/ts/modules/tabs.ts +136 -0
- package/assets/ts/modules/youtubevideo.ts +58 -63
- package/assets/ts/tests/filterlist.spec.ts +29 -0
- package/assets/ts/tests/pagination.spec.ts +21 -0
- package/assets/ts/tests/table.spec.ts +191 -0
- package/dist/components.es.js +1359 -1356
- package/dist/components.umd.js +103 -54
- package/dist/style.css +1 -1
- package/package.json +20 -12
- package/src/components/Accordion/Accordion.spec.js +1 -1
- package/src/components/Accordion/Accordion.vue +7 -5
- package/src/components/Accordion/AccordionItem.vue +3 -6
- package/src/components/Accordion/README.md +0 -2
- package/src/components/AppliedFilters/AppliedFilters.vue +20 -0
- package/src/components/AppliedFilters/README.md +5 -0
- package/src/components/Card/Card.vue +11 -112
- package/src/components/Card/README.md +16 -18
- package/src/components/Carousel/Carousel.vue +49 -10
- package/src/components/Chart/Chart.vue +46 -4
- package/src/components/Filterlist/Filterlist.vue +20 -0
- package/src/components/Filterlist/README.md +17 -0
- package/src/components/Header/Header.spec.js +5 -4
- package/src/components/Header/Header.vue +14 -20
- package/src/components/Pagination/Pagination.vue +30 -0
- package/src/components/Pagination/README.md +11 -0
- package/src/components/Snapshot/Snapshot.vue +1 -1
- package/src/components/Table/README.md +29 -44
- package/src/components/Table/Table.spec.js +5 -37
- package/src/components/Table/Table.vue +16 -91
- package/src/components/Tabs/README.md +0 -2
- package/src/components/Tabs/Tab.vue +3 -2
- package/src/components/Tabs/Tabs.vue +8 -64
- package/src/foundations/YoutubeVideo/YoutubeVideo.vue +1 -1
- package/src/index.js +3 -2
- package/assets/fonts/qanelassoft-extrabold-webfont.woff +0 -0
- package/assets/fonts/qanelassoft-extrabold-webfont.woff2 +0 -0
- package/assets/js/main.js +0 -57
- package/assets/js/modules/modal.js +0 -69
- package/assets/sass/components/cardDeck.scss +0 -108
- package/assets/sass/components/modal.scss +0 -136
- package/assets/sass/components/tables.scss +0 -291
- package/assets/ts/main.ts +0 -68
- package/assets/ts/modules/modal.ts +0 -91
- package/src/components/CardDeck/CardDeck.spec.js +0 -99
- package/src/components/CardDeck/CardDeck.vue +0 -77
- package/src/components/CardDeck/README.md +0 -25
- package/src/components/Modal/Modal.spec.js +0 -22
- package/src/components/Modal/Modal.vue +0 -43
- package/src/components/Modal/README.md +0 -20
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
+
import { createEmbed } from "./youtubevideo";
|
|
3
|
+
|
|
2
4
|
/**
|
|
3
5
|
* Global helper functions to help maintain and enhance framework elements.
|
|
4
6
|
* @module Helpers
|
|
@@ -8,7 +10,7 @@
|
|
|
8
10
|
* Add global classes used by the CSS and later JavaScript.
|
|
9
11
|
* @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.
|
|
10
12
|
*/
|
|
11
|
-
|
|
13
|
+
export const addBodyClasses = (body) => {
|
|
12
14
|
|
|
13
15
|
body.classList.add("js-enabled");
|
|
14
16
|
|
|
@@ -26,77 +28,113 @@
|
|
|
26
28
|
*/
|
|
27
29
|
export const addGlobalEvents = (body) => {
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
const checkElements = function(hash){
|
|
30
32
|
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const
|
|
33
|
+
const label = document.querySelector(`label[for="${hash.replace('#','')}"]`);
|
|
34
|
+
const summary = document.querySelector(hash+' summary');
|
|
35
|
+
const dialog = document.querySelector(`dialog${hash}`);
|
|
34
36
|
|
|
35
|
-
if(label)
|
|
37
|
+
if(label instanceof HTMLElement)
|
|
36
38
|
label.click();
|
|
37
|
-
else if(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
else if(summary instanceof HTMLElement)
|
|
40
|
+
summary.click();
|
|
41
|
+
else if(dialog instanceof HTMLElement)
|
|
42
|
+
dialog.showModal();
|
|
43
|
+
}
|
|
41
44
|
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
if(location.hash)
|
|
46
|
+
checkElements(location.hash);
|
|
44
47
|
|
|
45
|
-
|
|
46
|
-
* Check if an element contains certain elements that needs enhancing with the JavaScript helpers, it is recommended to do this on the page body after the dom is loaded. Elements that are loaded via ajax should also run this function.
|
|
47
|
-
* @param {HTMLElement} element Dom element, this doesn't have to be the body but it is recommended.
|
|
48
|
-
*/
|
|
49
|
-
export const checkElements = (element) => {
|
|
48
|
+
window.addEventListener('hashchange', function() { checkElements(location.hash); }, false);
|
|
50
49
|
|
|
51
|
-
|
|
52
|
-
Array.from(element.querySelectorAll('table')).forEach((table, index) => {
|
|
50
|
+
addEventListener("popstate", (event) => {
|
|
53
51
|
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
if(event.state.type == "pagination"){
|
|
53
|
+
let form = document.querySelector(`#${event.state.form}`);
|
|
54
|
+
let pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);
|
|
55
|
+
|
|
56
|
+
if(pageInput)
|
|
57
|
+
pageInput.value = event.state.page;
|
|
58
|
+
else
|
|
59
|
+
form.innerHTML += `<input name="page" type="hidden" data-pagination="true" value="${event.state.page}" />`
|
|
60
|
+
|
|
61
|
+
form.dispatchEvent(new Event("submit"));
|
|
62
|
+
}
|
|
56
63
|
});
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Wrap tables with a table wrapper div to help maintain its responsive design.
|
|
61
|
-
* @param {HTMLElement} table Dom table element
|
|
62
|
-
*/
|
|
63
|
-
export const tableWrap = (table) => {
|
|
64
|
-
|
|
65
|
-
if(!table.parentNode.classList.contains('table__wrapper')){
|
|
66
64
|
|
|
67
|
-
|
|
65
|
+
// Dialogs/modals
|
|
66
|
+
document.addEventListener('click', (event) => {
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Creates data attributes to be used by the CSS for mobile views.
|
|
75
|
-
* @param {HTMLElement} table Dom table element
|
|
76
|
-
*/
|
|
77
|
-
export const tableStacked = (table) => {
|
|
68
|
+
// Modal
|
|
69
|
+
if (event && event.target instanceof HTMLElement && event.target.closest('[data-modal]')){
|
|
78
70
|
|
|
79
|
-
|
|
80
|
-
|
|
71
|
+
const button = event.target.closest('[data-modal]');
|
|
72
|
+
const modalID = button.getAttribute('data-modal');
|
|
73
|
+
const dialog = document.querySelector(`dialog#${modalID}`);
|
|
74
|
+
|
|
75
|
+
// Create close button is needed
|
|
76
|
+
if(dialog.parentNode.closest('form') && !dialog.querySelector(':scope > .dialog__close:first-child'))
|
|
77
|
+
dialog.innerHTML = `<button class="dialog__close" formmethod="dialog">Close</button>${dialog.innerHTML}`;
|
|
78
|
+
else if(!dialog.parentNode.closest('form') && !dialog.querySelector(':scope > form:first-child'))
|
|
79
|
+
dialog.innerHTML = `<form><button class="dialog__close" formmethod="dialog">Close</button></form>${dialog.innerHTML}`;
|
|
81
80
|
|
|
82
|
-
colRows.forEach((row, index) => {
|
|
83
81
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
cells.forEach((cell, cellIndex) => {
|
|
82
|
+
let videoButton = dialog.querySelector('.youtube-embed a');
|
|
87
83
|
|
|
88
|
-
|
|
89
|
-
|
|
84
|
+
if (videoButton){
|
|
85
|
+
createEmbed(videoButton)
|
|
86
|
+
}
|
|
90
87
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
88
|
+
dialog.showModal();
|
|
89
|
+
|
|
90
|
+
window.dataLayer = window.dataLayer || [];
|
|
91
|
+
window.dataLayer.push({
|
|
92
|
+
"event": "openModal",
|
|
93
|
+
"id": modalID
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
// Close modal
|
|
97
|
+
if (event && event.target instanceof HTMLElement && event.target.closest('dialog[open]')){
|
|
98
|
+
const dialog = event.target.closest('dialog[open]');
|
|
99
|
+
const dialogDimensions = dialog.getBoundingClientRect()
|
|
100
|
+
if (event.clientX < dialogDimensions.left || event.clientX > dialogDimensions.right || event.clientY < dialogDimensions.top || event.clientY > dialogDimensions.bottom) {
|
|
101
|
+
dialog.close()
|
|
102
|
+
|
|
103
|
+
window.dataLayer = window.dataLayer || [];
|
|
104
|
+
window.dataLayer.push({
|
|
105
|
+
"event": "closeModal",
|
|
106
|
+
"id": dialog.getAttribute('id')
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Popover
|
|
112
|
+
if (event && event.target instanceof HTMLElement && event.target.closest('.dialog__wrapper > button')){
|
|
113
|
+
|
|
114
|
+
let btn = event.target.closest('.dialog__wrapper > button');
|
|
115
|
+
let parent = event.target.closest('.dialog__wrapper > button').parentNode;
|
|
116
|
+
let dataEvent = "openPopover"
|
|
117
|
+
let popover = parent.querySelector(':scope > dialog');
|
|
118
|
+
|
|
119
|
+
if(popover.hasAttribute('open')){
|
|
120
|
+
|
|
121
|
+
popover.close();
|
|
122
|
+
dataEvent = "closePopover"
|
|
95
123
|
}
|
|
96
|
-
|
|
124
|
+
else
|
|
125
|
+
popover.show();
|
|
126
|
+
|
|
127
|
+
window.dataLayer = window.dataLayer || [];
|
|
128
|
+
|
|
129
|
+
window.dataLayer.push({
|
|
130
|
+
"event": dataEvent,
|
|
131
|
+
"id": btn.textContent
|
|
132
|
+
});
|
|
133
|
+
};
|
|
97
134
|
});
|
|
98
|
-
}
|
|
99
135
|
|
|
136
|
+
return null
|
|
137
|
+
}
|
|
100
138
|
|
|
101
139
|
export const isNumeric = function(str) {
|
|
102
140
|
if (typeof str != "string") return false // we only process strings!
|
|
@@ -117,4 +155,4 @@ export const safeID = function(str){
|
|
|
117
155
|
str = str.replace(/\W/g,'');
|
|
118
156
|
|
|
119
157
|
return str;
|
|
120
|
-
}
|
|
158
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
const createPaginationButttons = function(controller: any,pagination: any){
|
|
2
|
+
|
|
3
|
+
if(!controller.getAttribute('data-pages'))
|
|
4
|
+
return false;
|
|
5
|
+
|
|
6
|
+
if(!controller.getAttribute('data-page'))
|
|
7
|
+
controller.setAttribute('data-page', 1);
|
|
8
|
+
|
|
9
|
+
let currentPage = controller.getAttribute('data-page');
|
|
10
|
+
let numberPages = controller.getAttribute('data-pages');
|
|
11
|
+
let numberRows = controller.getAttribute('data-total');
|
|
12
|
+
let showRows = controller.getAttribute('data-show');
|
|
13
|
+
let addRows = controller.getAttribute('data-increment');
|
|
14
|
+
|
|
15
|
+
if(numberPages <= 1){
|
|
16
|
+
|
|
17
|
+
pagination.innerHTML = '';
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let strButtons = '';
|
|
22
|
+
|
|
23
|
+
for (let i = 1; i <= numberPages; i++) {
|
|
24
|
+
|
|
25
|
+
if(i == currentPage)
|
|
26
|
+
strButtons += `<li class="page-item active" aria-current="page"><span class="page-link">${i}</span></li>`;
|
|
27
|
+
else
|
|
28
|
+
strButtons += `<li class="page-item"><a href="?page=${i}" class="page-link" data-page="${i}">${i}</a></li>`;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
pagination.innerHTML = `<ul class="pagination mb-0 d-none d-sm-flex">
|
|
32
|
+
${currentPage == 1 ? `<li class="page-item disabled"><span class="page-link">Previous</span></li>` : `<li class="page-item"><a href="?page=${parseInt(currentPage)-1}" class="page-link" data-page="${parseInt(currentPage)-1}">Previous</a></li>`}
|
|
33
|
+
${strButtons}
|
|
34
|
+
${currentPage == numberPages ? `<li class="page-item disabled"><span class="page-link">Next</span></li>` : `<li class="page-item"><a href="?page=${parseInt(currentPage)+1}" class="page-link" data-page="${parseInt(currentPage)+1}">Next</a></li>`}
|
|
35
|
+
</ul>`;
|
|
36
|
+
pagination.innerHTML += `<div class="d-sm-none text-center">
|
|
37
|
+
<span class="d-block pb-2">You've viewed ${showRows} of ${numberRows} results</span>
|
|
38
|
+
<a href="?show=${parseInt(showRows)+parseInt(addRows)}" class="btn btn-primary w-100 m-0" data-show="${parseInt(showRows)+parseInt(addRows)}">Load more results</a>
|
|
39
|
+
</div>`;
|
|
40
|
+
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export default createPaginationButttons;
|