@iamproperty/components 5.1.0-beta → 5.1.0-beta10

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 (114) hide show
  1. package/assets/css/components/accordion.global.css.map +1 -1
  2. package/assets/css/components/card.css +1 -1
  3. package/assets/css/components/card.css.map +1 -1
  4. package/assets/css/components/carousel.css +1 -1
  5. package/assets/css/components/carousel.css.map +1 -1
  6. package/assets/css/components/component.native.css +1 -1
  7. package/assets/css/components/component.native.css.map +1 -1
  8. package/assets/css/components/component.reset.css +1 -1
  9. package/assets/css/components/component.reset.css.map +1 -1
  10. package/assets/css/components/fileupload.css +1 -1
  11. package/assets/css/components/fileupload.css.map +1 -1
  12. package/assets/css/components/header.css +1 -1
  13. package/assets/css/components/header.css.map +1 -1
  14. package/assets/css/components/marketing.css +1 -0
  15. package/assets/css/components/marketing.css.map +1 -0
  16. package/assets/css/components/nav.css +1 -1
  17. package/assets/css/components/nav.css.map +1 -1
  18. package/assets/css/components/nav.global.css +1 -1
  19. package/assets/css/components/nav.global.css.map +1 -1
  20. package/assets/css/components/pagination.css +1 -1
  21. package/assets/css/components/pagination.css.map +1 -1
  22. package/assets/css/components/slider.css.map +1 -1
  23. package/assets/css/core.min.css +1 -1
  24. package/assets/css/core.min.css.map +1 -1
  25. package/assets/css/style.min.css +1 -1
  26. package/assets/css/style.min.css.map +1 -1
  27. package/assets/img/signin-bg.png +0 -0
  28. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  29. package/assets/js/components/actionbar/actionbar.component.min.js +1 -1
  30. package/assets/js/components/address-lookup/address-lookup.component.js +17 -3
  31. package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
  32. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  33. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  34. package/assets/js/components/card/card.component.js +2 -1
  35. package/assets/js/components/card/card.component.min.js +4 -3
  36. package/assets/js/components/card/card.component.min.js.map +1 -1
  37. package/assets/js/components/carousel/carousel.component.js +61 -0
  38. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  39. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  40. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  41. package/assets/js/components/header/header.component.js +6 -12
  42. package/assets/js/components/header/header.component.min.js +8 -14
  43. package/assets/js/components/header/header.component.min.js.map +1 -1
  44. package/assets/js/components/marketing/marketing.component.js +37 -0
  45. package/assets/js/components/nav/nav.component.js +4 -36
  46. package/assets/js/components/nav/nav.component.min.js +10 -13
  47. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  48. package/assets/js/components/notification/notification.component.min.js +1 -1
  49. package/assets/js/components/pagination/pagination.component.min.js +2 -2
  50. package/assets/js/components/search/search.component.js +148 -0
  51. package/assets/js/components/search/search.component.min.js +14 -0
  52. package/assets/js/components/search/search.component.min.js.map +1 -0
  53. package/assets/js/components/table/table.component.min.js +5 -5
  54. package/assets/js/components/table/table.component.min.js.map +1 -1
  55. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  56. package/assets/js/dynamic.js +1 -1
  57. package/assets/js/dynamic.min.js +3 -3
  58. package/assets/js/dynamic.min.js.map +1 -1
  59. package/assets/js/modules/carousel.js +15 -23
  60. package/assets/js/modules/dynamicEvents.js +28 -13
  61. package/assets/js/modules/helpers.js +3 -0
  62. package/assets/js/modules/table.js +8 -6
  63. package/assets/js/scripts.bundle.js +20 -25
  64. package/assets/js/scripts.bundle.js.map +1 -1
  65. package/assets/js/scripts.bundle.min.js +2 -2
  66. package/assets/js/scripts.bundle.min.js.map +1 -1
  67. package/assets/sass/_corefiles.scss +1 -0
  68. package/assets/sass/_elements.scss +1 -1
  69. package/assets/sass/_functions/mixins.scss +16 -0
  70. package/assets/sass/_functions/utilities.scss +0 -17
  71. package/assets/sass/_functions/variables.scss +1 -0
  72. package/assets/sass/components/card.scss +23 -3
  73. package/assets/sass/components/carousel.scss +86 -159
  74. package/assets/sass/components/component.native.scss +86 -3
  75. package/assets/sass/components/fileupload.scss +1 -1
  76. package/assets/sass/components/header.scss +53 -55
  77. package/assets/sass/components/marketing.scss +64 -0
  78. package/assets/sass/components/nav.global.scss +2 -1
  79. package/assets/sass/components/nav.scss +7 -1
  80. package/assets/sass/components/pagination.scss +4 -0
  81. package/assets/sass/elements/admin-panel.scss +9 -7
  82. package/assets/sass/elements/badge.scss +29 -0
  83. package/assets/sass/elements/dialog.scss +4 -4
  84. package/assets/sass/elements/forms.scss +4 -4
  85. package/assets/sass/elements/links.scss +2 -1
  86. package/assets/sass/foundations/reboot.scss +12 -13
  87. package/assets/sass/foundations/root.scss +11 -3
  88. package/assets/sass/helpers/max-height.scss +78 -4
  89. package/assets/sass/templates/auth.scss +112 -0
  90. package/assets/ts/components/address-lookup/address-lookup.component.ts +23 -4
  91. package/assets/ts/components/card/card.component.ts +2 -1
  92. package/assets/ts/components/carousel/README.md +39 -0
  93. package/assets/ts/components/carousel/carousel.component.ts +75 -0
  94. package/assets/ts/components/header/header.component.ts +6 -12
  95. package/assets/ts/components/marketing/marketing.component.ts +49 -0
  96. package/assets/ts/components/nav/README.md +2 -13
  97. package/assets/ts/components/nav/nav.component.ts +4 -47
  98. package/assets/ts/components/search/search.component.ts +177 -0
  99. package/assets/ts/dynamic.ts +1 -1
  100. package/assets/ts/modules/carousel.ts +21 -33
  101. package/assets/ts/modules/dynamicEvents.ts +44 -24
  102. package/assets/ts/modules/helpers.ts +7 -1
  103. package/assets/ts/modules/table.ts +11 -14
  104. package/dist/components.es.js +744 -949
  105. package/dist/components.umd.js +107 -101
  106. package/dist/style.css +1 -1
  107. package/package.json +1 -1
  108. package/src/components/Carousel/Carousel.vue +18 -103
  109. package/src/components/Header/Header.vue +1 -3
  110. package/src/components/Marketing/Marketing.vue +39 -0
  111. package/src/components/Marketing/README.md +20 -0
  112. package/src/components/Nav/README.md +1 -12
  113. package/src/components/Search/Search.vue +25 -0
  114. package/src/components/Carousel/Carousel.spec.js +0 -45
@@ -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 itemCount = carouselElement.querySelectorAll('.carousel__item').length;
8
- let cols = carouselElement.getAttribute('data-cols');
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 = carouselElement.querySelector('.carousel__item:last-child').offsetLeft;
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 a')).forEach((link, index) => {
26
- link.removeAttribute('aria-current');
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(carouselInner.scrollLeft + scrollArea > lastItemOffset)
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
- carouselElement.addEventListener('click', function(e){
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('.carousel__controls a')) {
50
+ if (typeof target.matches == "function" && target.matches('button')) {
52
51
 
53
52
  e.preventDefault();
54
53
 
55
- Array.from(carouselElement.querySelectorAll('.carousel__controls a')).forEach((link, index) => {
56
- link.removeAttribute('aria-current');
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 = document.querySelector(target.getAttribute('href'));
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
@@ -77,43 +77,63 @@ const runEvent = (element,event,eventType) => {
77
77
  switch (event[eventType]){
78
78
  case "hide":
79
79
 
80
- let hideElement = document.querySelector(event['target'])
81
- hideElement.classList.add('js-hide');
82
-
83
- Array.from(hideElement.querySelectorAll('[data-required]')).forEach((input, index) => {
84
-
85
- input.removeAttribute('required');
86
- });
80
+ if(document.querySelector(event['target'])){
81
+
82
+ let hideElement = document.querySelector(event['target']);
83
+ hideElement.classList.add('js-hide');
84
+
85
+ Array.from(hideElement.querySelectorAll('[data-required]')).forEach((input, index) => {
86
+
87
+ input.removeAttribute('required');
88
+ });
89
+ }
87
90
  break;
88
91
  case "show":
89
92
 
90
- let showElement = document.querySelector(event['target'])
91
- showElement.classList.remove('js-hide');
92
-
93
- Array.from(showElement.querySelectorAll('[data-required]')).forEach((input, index) => {
94
-
95
- if(!input.closest('.js-hide'))
96
- input.setAttribute('required','true');
97
- });
93
+ if(document.querySelector(event['target'])){
94
+
95
+ let showElement = document.querySelector(event['target']);
96
+ showElement.classList.remove('js-hide');
97
+
98
+ Array.from(showElement.querySelectorAll('[data-required]')).forEach((input, index) => {
99
+
100
+ if(!input.closest('.js-hide'))
101
+ input.setAttribute('required','true');
102
+ });
103
+ }
104
+ break;
105
+ case "populate-form":
106
+ populateForm(element,event);
107
+ break;
108
+ case "dispatchEvent":
109
+ let theEvent = new Event(event['value']);
110
+ document.querySelector(`${event['target']}`).dispatchEvent(theEvent);
98
111
  break;
99
- case "populate-form":
100
- populateForm(element,event);
101
- break;
102
- case "dispatchEvent":
103
- let theEvent = new Event(event['value']);
104
- document.querySelector(`${event['target']}`).dispatchEvent(theEvent);
105
- break;
106
112
  case "setAttribute":
107
- document.querySelector(`${event['target']}`).setAttribute(event['attribute'],event['value']);
113
+
114
+ Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function(element,index){
115
+ element.setAttribute(event['attribute'],event['value']);
116
+ });
108
117
  break;
109
118
  case "removeAttribute":
110
- document.querySelector(`${event['target']}`).removeAttribute(event['attribute']);
119
+ Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function(element,index){
120
+ element.removeAttribute(event['attribute']);
121
+ });
111
122
  break;
112
123
  case "updateValue":
113
124
  document.querySelector(`${event['target']}`).value = event['value'] ? event['value'] : "";
114
125
 
115
126
  let changeEvent = new Event('change');
116
127
  document.querySelector(`${event['target']}`).dispatchEvent(changeEvent);
128
+ break;
129
+ case "submitForm":
130
+ document.querySelector(`${event['target']}`).submit();
131
+ break;
132
+ case "openLink":
133
+
134
+ if(document.querySelector(`${event['target']}`).value)
135
+ window.location.href = document.querySelector(`${event['target']}`).value;
136
+
117
137
  break;
118
138
  default:
119
139
  break;
@@ -97,4 +97,10 @@ export const safeID = function(str){
97
97
  str = str.replace(/\W/g,'');
98
98
 
99
99
  return str;
100
- }
100
+ }
101
+
102
+ // Used to get values from nested json objects
103
+ export const resolvePath = (object, path, defaultValue) => path.split(/[\.\[\]\'\"]/).filter(p => p).reduce((o, p) => o ? o[p] : defaultValue, object);
104
+
105
+
106
+ export const isTraversable = o => Array.isArray(o) || o !== null && ['function', 'object'].includes(typeof o);
@@ -1,5 +1,5 @@
1
1
  // @ts-nocheck
2
- import { zeroPad, isNumeric, ucfirst } from "./helpers";
2
+ import { zeroPad, isNumeric, ucfirst, resolvePath } from "./helpers";
3
3
 
4
4
  // Basic functionality needed
5
5
  export const addDataAttributes = (table) => {
@@ -61,20 +61,20 @@ export const getLargestLastColWidth = (table) => {
61
61
 
62
62
  export const createMobileButton = (table, wrapper) => {
63
63
 
64
-
65
- if(wrapper.classList.contains('.table--fullwidth') && !wrapper.hasAttribute('data-expandable'))
64
+ if(wrapper.classList.contains('table--fullwidth') && !wrapper.hasAttribute('data-expandable'))
66
65
  return false;
67
66
 
68
67
  if(table.querySelectorAll('thead tr th').length < 4 && !wrapper.hasAttribute('data-expandable'))
69
68
  return false;
70
69
 
71
-
70
+ //If the expand column already exists we don't need to add a new one.
72
71
  Array.from(table.querySelectorAll('thead tr')).forEach((row,index) => {
73
-
74
- row.insertAdjacentHTML(
75
- 'afterbegin',
76
- `<th class="th--fixed expand-button-heading"></th>`
77
- );
72
+ if(!table.querySelectorAll('thead tr th.expand-button-heading').length){
73
+ row.insertAdjacentHTML(
74
+ 'afterbegin',
75
+ `<th class="th--fixed expand-button-heading"></th>`
76
+ );
77
+ }
78
78
  });
79
79
 
80
80
  Array.from(table.querySelectorAll('tbody tr')).forEach((row,index) => {
@@ -690,7 +690,7 @@ export const populateDataQueries = (table,form,wrapper) => {
690
690
  dataQueries.forEach((queryElement, index) => {
691
691
 
692
692
  let query = queryElement.getAttribute('data-query');
693
- let numberOfMatchedRows: 0;
693
+ let numberOfMatchedRows = 0;
694
694
 
695
695
  if(query == 'total'){
696
696
  if(wrapper.hasAttribute('data-total'))
@@ -903,11 +903,9 @@ const filterFilters = function(form){
903
903
 
904
904
  export const loadAjaxTable = async function (table, form, pagination, wrapper){
905
905
 
906
- const resolvePath = (object, path, defaultValue) => path.split(/[\.\[\]\'\"]/).filter(p => p).reduce((o, p) => o ? o[p] : defaultValue, object);
907
-
908
906
  let formData = new FormData(form);
909
907
  let queryString = new URLSearchParams(formData).toString();
910
- let columns = table.querySelectorAll('thead tr th');
908
+ let columns = table.querySelectorAll('thead tr th:not(.expand-button-heading)');
911
909
  let tbody = table.querySelector('tbody');
912
910
  let ajaxURL = form.getAttribute('data-ajax');
913
911
 
@@ -985,7 +983,6 @@ export const loadAjaxTable = async function (table, form, pagination, wrapper){
985
983
  var table_row = document.createElement('tr');
986
984
 
987
985
  columns.forEach((col, index) => {
988
-
989
986
  let cellOutput = '';
990
987
  var table_cell = document.createElement('td');
991
988
  // Add some data to help with the mobile layout design