@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.
Files changed (203) hide show
  1. package/assets/css/components/accordion.css +1 -0
  2. package/assets/css/components/accordion.css.map +1 -0
  3. package/assets/css/components/alert.css +1 -0
  4. package/assets/css/components/alert.css.map +1 -0
  5. package/assets/css/components/applied-filters.css +1 -0
  6. package/assets/css/components/applied-filters.css.map +1 -0
  7. package/assets/css/components/buttons.css +1 -0
  8. package/assets/css/components/buttons.css.map +1 -0
  9. package/assets/css/components/card.css +1 -0
  10. package/assets/css/components/card.css.map +1 -0
  11. package/assets/css/components/carousel.css +1 -0
  12. package/assets/css/components/carousel.css.map +1 -0
  13. package/assets/css/components/charts.css +1 -0
  14. package/assets/css/components/charts.css.map +1 -0
  15. package/assets/css/components/container.css +1 -0
  16. package/assets/css/components/container.css.map +1 -0
  17. package/assets/css/components/dialog.css +1 -0
  18. package/assets/css/components/dialog.css.map +1 -0
  19. package/assets/css/components/forms.css +1 -0
  20. package/assets/css/components/forms.css.map +1 -0
  21. package/assets/css/components/header.css +1 -0
  22. package/assets/css/components/header.css.map +1 -0
  23. package/assets/css/components/lists.css +1 -0
  24. package/assets/css/components/lists.css.map +1 -0
  25. package/assets/css/components/nav.css +1 -0
  26. package/assets/css/components/nav.css.map +1 -0
  27. package/assets/css/components/pagination.css +1 -0
  28. package/assets/css/components/pagination.css.map +1 -0
  29. package/assets/css/components/panel.css +1 -0
  30. package/assets/css/components/panel.css.map +1 -0
  31. package/assets/css/components/property-searchbar.css +1 -0
  32. package/assets/css/components/property-searchbar.css.map +1 -0
  33. package/assets/css/components/snapshot.css +1 -0
  34. package/assets/css/components/snapshot.css.map +1 -0
  35. package/assets/css/components/stepper.css +1 -0
  36. package/assets/css/components/stepper.css.map +1 -0
  37. package/assets/css/components/table.css +1 -0
  38. package/assets/css/components/table.css.map +1 -0
  39. package/assets/css/components/tabs.css +1 -0
  40. package/assets/css/components/tabs.css.map +1 -0
  41. package/assets/css/components/testimonial.css +1 -0
  42. package/assets/css/components/testimonial.css.map +1 -0
  43. package/assets/css/components/timeline.css +1 -0
  44. package/assets/css/components/timeline.css.map +1 -0
  45. package/assets/css/components/tooltips.css +1 -0
  46. package/assets/css/components/tooltips.css.map +1 -0
  47. package/assets/css/core.min.css +1 -1
  48. package/assets/css/core.min.css.map +1 -1
  49. package/assets/css/style.min.css +1 -1
  50. package/assets/css/style.min.css.map +1 -1
  51. package/assets/fonts/qanelas-bold-webfont.woff +0 -0
  52. package/assets/fonts/qanelas-bold-webfont.woff2 +0 -0
  53. package/assets/js/bundle.js +68 -0
  54. package/assets/js/components/accordion/accordion.component.js +33 -0
  55. package/assets/js/components/accordion/accordion.component.min.js +14 -0
  56. package/assets/js/components/accordion/accordion.component.min.js.map +1 -0
  57. package/assets/js/components/applied-filters/applied-filters.component.js +26 -0
  58. package/assets/js/components/card/card.component.js +91 -0
  59. package/assets/js/components/card/card.component.min.js +21 -0
  60. package/assets/js/components/card/card.component.min.js.map +1 -0
  61. package/assets/js/components/filterlist/filterlist.component.js +49 -0
  62. package/assets/js/components/filterlist/filterlist.component.min.js +23 -0
  63. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -0
  64. package/assets/js/components/header/header.component.js +51 -0
  65. package/assets/js/components/header/header.component.min.js +30 -0
  66. package/assets/js/components/header/header.component.min.js.map +1 -0
  67. package/assets/js/components/pagination/pagination.component.js +34 -0
  68. package/assets/js/components/table/table.component.js +104 -0
  69. package/assets/js/components/table/table.component.min.js +24 -0
  70. package/assets/js/components/table/table.component.min.js.map +1 -0
  71. package/assets/js/components/tabs/tabs.component.js +34 -0
  72. package/assets/js/components/tabs/tabs.component.min.js +17 -0
  73. package/assets/js/components/tabs/tabs.component.min.js.map +1 -0
  74. package/assets/js/dynamic.js +74 -0
  75. package/assets/js/dynamic.min.js +5 -0
  76. package/assets/js/dynamic.min.js.map +1 -0
  77. package/assets/js/flat-components.js +79 -0
  78. package/assets/js/modules/accordion.js +11 -14
  79. package/assets/js/modules/applied-filters.js +100 -0
  80. package/assets/js/modules/data-layer.js +45 -0
  81. package/assets/js/modules/filterlist.js +32 -0
  82. package/assets/js/modules/helpers.js +80 -47
  83. package/assets/js/modules/pagination.js +33 -0
  84. package/assets/js/modules/table.js +507 -420
  85. package/assets/js/modules/tabs.js +97 -0
  86. package/assets/js/modules/youtubevideo.js +53 -61
  87. package/assets/js/scripts.bundle.js +111 -984
  88. package/assets/js/scripts.bundle.js.map +1 -1
  89. package/assets/js/scripts.bundle.min.js +3 -4
  90. package/assets/js/scripts.bundle.min.js.map +1 -1
  91. package/assets/js/tests/filterlist.spec.js +22 -0
  92. package/assets/js/tests/pagination.spec.js +15 -0
  93. package/assets/js/tests/table.spec.js +147 -0
  94. package/assets/sass/_components.scss +1 -2
  95. package/assets/sass/_corefiles.scss +5 -4
  96. package/assets/sass/_fonts.scss +4 -4
  97. package/assets/sass/_func.scss +1 -0
  98. package/assets/sass/_functions/functions.scss +6 -0
  99. package/assets/sass/_functions/mixins.scss +9 -9
  100. package/assets/sass/_functions/utilities.scss +16 -0
  101. package/assets/sass/_functions/variables.scss +128 -86
  102. package/assets/sass/_tests/colours.spec.scss +1 -1
  103. package/assets/sass/_tests/mixins.spec.scss +1 -1
  104. package/assets/sass/_tests/typography.spec.scss +2 -2
  105. package/assets/sass/components/accordion.scss +9 -6
  106. package/assets/sass/components/applied-filters.scss +65 -0
  107. package/assets/sass/components/card.scss +178 -227
  108. package/assets/sass/components/charts.scss +4 -0
  109. package/assets/sass/components/container.scss +13 -8
  110. package/assets/sass/components/dialog.scss +202 -0
  111. package/assets/sass/components/forms.scss +39 -5
  112. package/assets/sass/components/header.scss +34 -11
  113. package/assets/sass/components/lists.scss +15 -0
  114. package/assets/sass/components/nav.scss +5 -1
  115. package/assets/sass/components/pagination.scss +140 -0
  116. package/assets/sass/components/panel.scss +3 -4
  117. package/assets/sass/components/snapshot.scss +1 -1
  118. package/assets/sass/components/table.scss +419 -0
  119. package/assets/sass/components/tabs.scss +52 -36
  120. package/assets/sass/components/timeline.scss +2 -2
  121. package/assets/sass/foundations/icons.scss +1 -1
  122. package/assets/sass/{components → foundations}/links.scss +29 -2
  123. package/assets/sass/foundations/reboot.scss +21 -15
  124. package/assets/sass/foundations/root.scss +12 -5
  125. package/assets/sass/foundations/type.scss +90 -66
  126. package/assets/svg/illustrations/table.svg +165 -0
  127. package/assets/ts/README.md +12 -0
  128. package/assets/ts/bundle.ts +87 -0
  129. package/assets/ts/components/accordion/README.md +17 -0
  130. package/assets/ts/components/accordion/accordion.component.ts +43 -0
  131. package/assets/ts/components/applied-filters/README.md +5 -0
  132. package/assets/ts/components/applied-filters/applied-filters.component.ts +33 -0
  133. package/assets/ts/components/card/README.md +22 -0
  134. package/assets/ts/components/card/card.component.ts +117 -0
  135. package/assets/ts/components/filterlist/README.md +17 -0
  136. package/assets/ts/components/filterlist/filterlist.component.ts +60 -0
  137. package/assets/ts/components/header/README.md +26 -0
  138. package/assets/ts/components/header/header.component.ts +61 -0
  139. package/assets/ts/components/pagination/README.md +11 -0
  140. package/assets/ts/components/pagination/pagination.component.ts +45 -0
  141. package/assets/ts/components/table/README.md +23 -0
  142. package/assets/ts/components/table/table.component.ts +128 -0
  143. package/assets/ts/components/tabs/README.md +18 -0
  144. package/assets/ts/components/tabs/tabs.component.ts +41 -0
  145. package/assets/ts/dynamic.ts +98 -0
  146. package/assets/ts/flat-components.ts +100 -0
  147. package/assets/ts/html.d.ts +4 -0
  148. package/assets/ts/modules/accordion.ts +15 -21
  149. package/assets/ts/modules/applied-filters.ts +146 -0
  150. package/assets/ts/modules/data-layer.ts +58 -0
  151. package/assets/ts/modules/filterlist.ts +46 -0
  152. package/assets/ts/modules/helpers.ts +93 -55
  153. package/assets/ts/modules/pagination.ts +44 -0
  154. package/assets/ts/modules/table.ts +598 -433
  155. package/assets/ts/modules/tabs.ts +136 -0
  156. package/assets/ts/modules/youtubevideo.ts +58 -63
  157. package/assets/ts/tests/filterlist.spec.ts +29 -0
  158. package/assets/ts/tests/pagination.spec.ts +21 -0
  159. package/assets/ts/tests/table.spec.ts +191 -0
  160. package/dist/components.es.js +1359 -1356
  161. package/dist/components.umd.js +103 -54
  162. package/dist/style.css +1 -1
  163. package/package.json +20 -12
  164. package/src/components/Accordion/Accordion.spec.js +1 -1
  165. package/src/components/Accordion/Accordion.vue +7 -5
  166. package/src/components/Accordion/AccordionItem.vue +3 -6
  167. package/src/components/Accordion/README.md +0 -2
  168. package/src/components/AppliedFilters/AppliedFilters.vue +20 -0
  169. package/src/components/AppliedFilters/README.md +5 -0
  170. package/src/components/Card/Card.vue +11 -112
  171. package/src/components/Card/README.md +16 -18
  172. package/src/components/Carousel/Carousel.vue +49 -10
  173. package/src/components/Chart/Chart.vue +46 -4
  174. package/src/components/Filterlist/Filterlist.vue +20 -0
  175. package/src/components/Filterlist/README.md +17 -0
  176. package/src/components/Header/Header.spec.js +5 -4
  177. package/src/components/Header/Header.vue +14 -20
  178. package/src/components/Pagination/Pagination.vue +30 -0
  179. package/src/components/Pagination/README.md +11 -0
  180. package/src/components/Snapshot/Snapshot.vue +1 -1
  181. package/src/components/Table/README.md +29 -44
  182. package/src/components/Table/Table.spec.js +5 -37
  183. package/src/components/Table/Table.vue +16 -91
  184. package/src/components/Tabs/README.md +0 -2
  185. package/src/components/Tabs/Tab.vue +3 -2
  186. package/src/components/Tabs/Tabs.vue +8 -64
  187. package/src/foundations/YoutubeVideo/YoutubeVideo.vue +1 -1
  188. package/src/index.js +3 -2
  189. package/assets/fonts/qanelassoft-extrabold-webfont.woff +0 -0
  190. package/assets/fonts/qanelassoft-extrabold-webfont.woff2 +0 -0
  191. package/assets/js/main.js +0 -57
  192. package/assets/js/modules/modal.js +0 -69
  193. package/assets/sass/components/cardDeck.scss +0 -108
  194. package/assets/sass/components/modal.scss +0 -136
  195. package/assets/sass/components/tables.scss +0 -291
  196. package/assets/ts/main.ts +0 -68
  197. package/assets/ts/modules/modal.ts +0 -91
  198. package/src/components/CardDeck/CardDeck.spec.js +0 -99
  199. package/src/components/CardDeck/CardDeck.vue +0 -77
  200. package/src/components/CardDeck/README.md +0 -25
  201. package/src/components/Modal/Modal.spec.js +0 -22
  202. package/src/components/Modal/Modal.vue +0 -43
  203. 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
- export const addBodyClasses = (body) => {
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
- window.addEventListener('hashchange', function() {
31
+ const checkElements = function(hash){
30
32
 
31
- const hash = location.hash.replace('#','');
32
- const label = document.querySelector(`label[for="${hash}"]`);
33
- const detail = document.querySelector(`details[id="${hash}"]:not([open])`);
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(detail)
38
- detail.setAttribute('open','open');
39
-
40
- }, false);
39
+ else if(summary instanceof HTMLElement)
40
+ summary.click();
41
+ else if(dialog instanceof HTMLElement)
42
+ dialog.showModal();
43
+ }
41
44
 
42
- return null
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
- // Tables
52
- Array.from(element.querySelectorAll('table')).forEach((table, index) => {
50
+ addEventListener("popstate", (event) => {
53
51
 
54
- tableStacked(table);
55
- tableWrap(table);
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
- const tableHTML = table.outerHTML;
65
+ // Dialogs/modals
66
+ document.addEventListener('click', (event) => {
68
67
 
69
- table.outerHTML = `<div class="table__wrapper">${tableHTML}</div>`;
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
- const colHeadings = Array.from(table.querySelectorAll('thead th'));
80
- const colRows = Array.from(table.querySelectorAll('tbody tr'));
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
- const cells = Array.from(row.querySelectorAll('th, td'));
85
-
86
- cells.forEach((cell, cellIndex) => {
82
+ let videoButton = dialog.querySelector('.youtube-embed a');
87
83
 
88
- const heading = colHeadings[cellIndex];
89
- if(typeof heading != "undefined"){
84
+ if (videoButton){
85
+ createEmbed(videoButton)
86
+ }
90
87
 
91
- let tempDiv = document.createElement("div");
92
- tempDiv.innerHTML = heading.innerHTML;
93
- let headingText = tempDiv.textContent || tempDiv.innerText || "";
94
- cell.setAttribute('data-label',headingText);
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;