@iamproperty/components 7.5.1--beta2 → 7.5.1--beta4

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 (152) hide show
  1. package/assets/css/components/actionbar.component.css +1 -1
  2. package/assets/css/components/actionbar.component.css.map +1 -1
  3. package/assets/css/components/address-lookup.component.css +1 -1
  4. package/assets/css/components/address-lookup.component.css.map +1 -1
  5. package/assets/css/components/address-lookup.preload.css +1 -0
  6. package/assets/css/components/address-lookup.preload.css.map +1 -0
  7. package/assets/css/components/barchart.component.css +1 -1
  8. package/assets/css/components/barchart.component.css.map +1 -1
  9. package/assets/css/components/calendar.component.css +1 -1
  10. package/assets/css/components/calendar.component.css.map +1 -1
  11. package/assets/css/components/card.component.css +1 -1
  12. package/assets/css/components/card.component.css.map +1 -1
  13. package/assets/css/components/carousel.component.css +1 -1
  14. package/assets/css/components/carousel.component.css.map +1 -1
  15. package/assets/css/components/collapsible-side.css +1 -1
  16. package/assets/css/components/collapsible-side.css.map +1 -1
  17. package/assets/css/components/content.component.css +1 -1
  18. package/assets/css/components/content.component.css.map +1 -1
  19. package/assets/css/components/doughnutchart.component.css +1 -1
  20. package/assets/css/components/doughnutchart.component.css.map +1 -1
  21. package/assets/css/components/fileupload.css +1 -1
  22. package/assets/css/components/fileupload.css.map +1 -1
  23. package/assets/css/components/inline-edit.css +1 -1
  24. package/assets/css/components/inline-edit.css.map +1 -1
  25. package/assets/css/components/multiselect.css +1 -1
  26. package/assets/css/components/multiselect.css.map +1 -1
  27. package/assets/css/components/nav.component.css +1 -1
  28. package/assets/css/components/nav.component.css.map +1 -1
  29. package/assets/css/components/pagination.css +1 -1
  30. package/assets/css/components/pagination.css.map +1 -1
  31. package/assets/css/components/slider.css +1 -1
  32. package/assets/css/components/slider.css.map +1 -1
  33. package/assets/css/components/split-button.component.css +1 -1
  34. package/assets/css/components/split-button.component.css.map +1 -1
  35. package/assets/css/components/table-basic.global.css +1 -1
  36. package/assets/css/components/table-basic.global.css.map +1 -1
  37. package/assets/css/components/table.global.css +1 -1
  38. package/assets/css/components/table.global.css.map +1 -1
  39. package/assets/css/components/tabs.component.css +1 -1
  40. package/assets/css/components/tabs.component.css.map +1 -1
  41. package/assets/css/core.min.css +1 -1
  42. package/assets/css/core.min.css.map +1 -1
  43. package/assets/css/mobile-core.min.css +1 -1
  44. package/assets/css/mobile-core.min.css.map +1 -1
  45. package/assets/css/mobile.min.css +1 -1
  46. package/assets/css/mobile.min.css.map +1 -1
  47. package/assets/css/style.min.css +1 -1
  48. package/assets/css/style.min.css.map +1 -1
  49. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  50. package/assets/js/components/actionbar/actionbar.component.min.js +4 -4
  51. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  52. package/assets/js/components/address-lookup/address-lookup.component.js +336 -102
  53. package/assets/js/components/address-lookup/address-lookup.component.min.js +32 -14
  54. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  55. package/assets/js/components/advanced-select/advanced-select.component.min.js +3 -3
  56. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
  57. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  58. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  59. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  60. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  61. package/assets/js/components/calendar/calendar.component.min.js +5 -5
  62. package/assets/js/components/calendar/calendar.component.min.js.map +1 -1
  63. package/assets/js/components/card/card.component.min.js +2 -2
  64. package/assets/js/components/carousel/carousel.component.min.js +2 -2
  65. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
  66. package/assets/js/components/content/content.component.min.js +2 -2
  67. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  68. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
  69. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
  70. package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
  71. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  72. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  73. package/assets/js/components/header/header.component.min.js +1 -1
  74. package/assets/js/components/inline-edit/inline-edit.component.min.js +3 -3
  75. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  76. package/assets/js/components/menu/menu.component.min.js +1 -1
  77. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  78. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  79. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  80. package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
  81. package/assets/js/components/nav/nav.component.min.js +5 -5
  82. package/assets/js/components/notification/notification.component.min.js +1 -1
  83. package/assets/js/components/pagination/pagination.component.min.js +3 -3
  84. package/assets/js/components/password-indicator/password-indicator.component.min.js +1 -1
  85. package/assets/js/components/rank/rank.component.min.js +1 -1
  86. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  87. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  88. package/assets/js/components/search/search.component.js +65 -25
  89. package/assets/js/components/search/search.component.min.js +5 -5
  90. package/assets/js/components/search/search.component.min.js.map +1 -1
  91. package/assets/js/components/slider/slider.component.min.js +3 -3
  92. package/assets/js/components/split-button/split-button.component.min.js +3 -3
  93. package/assets/js/components/std-address-lookup/std-address-lookup.component.js +1715 -0
  94. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +172 -0
  95. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -0
  96. package/assets/js/components/table/table.component.min.js +2 -2
  97. package/assets/js/components/table/table.component.min.js.map +1 -1
  98. package/assets/js/components/table-ajax/table-ajax.component.min.js +2 -2
  99. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  100. package/assets/js/components/table-basic/table-basic.component.min.js +4 -4
  101. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
  102. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +5 -5
  103. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  104. package/assets/js/components/table-submit/table-submit.component.min.js +2 -2
  105. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  106. package/assets/js/components/tabs/tabs.component.min.js +2 -2
  107. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  108. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  109. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  110. package/assets/js/modules/advanced-select.js +35 -26
  111. package/assets/js/modules/helpers.js +19 -3
  112. package/assets/js/scripts.bundle.js +3 -3
  113. package/assets/js/scripts.bundle.js.map +1 -1
  114. package/assets/js/scripts.bundle.min.js +2 -2
  115. package/assets/js/scripts.bundle.min.js.map +1 -1
  116. package/assets/js/tests/helpers.spec.js +26 -0
  117. package/assets/sass/_components.scss +6 -0
  118. package/assets/sass/components/address-lookup.component.scss +91 -5
  119. package/assets/sass/components/address-lookup.preload.scss +81 -0
  120. package/assets/sass/components/table-basic.global.scss +175 -0
  121. package/assets/sass/components/table.global.scss +0 -163
  122. package/assets/sass/elements/buttons--action.scss +26 -0
  123. package/assets/sass/elements/buttons--global.scss +1 -4
  124. package/assets/sass/elements/forms.scss +182 -37
  125. package/assets/ts/components/address-lookup/address-lookup.component.ts +432 -109
  126. package/assets/ts/components/advanced-select/advanced-select.component.ts +1 -0
  127. package/assets/ts/components/search/search.component.ts +86 -27
  128. package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +1757 -0
  129. package/assets/ts/modules/advanced-select.ts +55 -27
  130. package/assets/ts/modules/helpers.ts +25 -3
  131. package/assets/ts/tests/helpers.spec.ts +38 -0
  132. package/dist/components.es.js +144 -144
  133. package/dist/components.umd.js +376 -191
  134. package/package.json +2 -1
  135. package/src/components/STDAddressLookup/STDAddressLookup.vue +22 -0
  136. /package/assets/js/{tests → ui-tests}/card.spec.js +0 -0
  137. /package/assets/js/{tests → ui-tests}/carousel.spec.js +0 -0
  138. /package/assets/js/{tests → ui-tests}/chart.spec.js +0 -0
  139. /package/assets/js/{tests → ui-tests}/fileupload.spec.js +0 -0
  140. /package/assets/js/{tests → ui-tests}/filterlist.spec.js +0 -0
  141. /package/assets/js/{tests → ui-tests}/multistep.spec.js +0 -0
  142. /package/assets/js/{tests → ui-tests}/slider.spec.js +0 -0
  143. /package/assets/js/{tests → ui-tests}/table.spec.js +0 -0
  144. /package/assets/ts/{tests → ui-tests}/card.spec.ts +0 -0
  145. /package/assets/ts/{tests → ui-tests}/carousel.spec.ts +0 -0
  146. /package/assets/ts/{tests → ui-tests}/chart.spec.ts +0 -0
  147. /package/assets/ts/{tests → ui-tests}/data-layer.spec.js +0 -0
  148. /package/assets/ts/{tests → ui-tests}/fileupload.spec.ts +0 -0
  149. /package/assets/ts/{tests → ui-tests}/filterlist.spec.ts +0 -0
  150. /package/assets/ts/{tests → ui-tests}/multistep.spec.ts +0 -0
  151. /package/assets/ts/{tests → ui-tests}/slider.spec.ts +0 -0
  152. /package/assets/ts/{tests → ui-tests}/table.spec.ts +0 -0
@@ -1,50 +1,53 @@
1
1
  function advancedSelect(advancedSelect, displayInputField, datalist, isSearch = false): boolean | void {
2
2
  let currentFocus = -1;
3
3
 
4
- if (!isSearch) {
5
- displayInputField.addEventListener('focus', function () {
4
+ const datalistWrapper = datalist.closest('.datalist__wrapper') ? datalist.closest('.datalist__wrapper') : datalist;
5
+
6
+ // Hide the default datalist
7
+ displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));
8
+ displayInputField.setAttribute('list', '');
9
+
10
+ if(displayInputField.hasAttribute('placeholder'))
11
+ displayInputField.setAttribute('data-placeholder', displayInputField.getAttribute('placeholder'));
12
+
13
+ if(displayInputField.hasAttribute('placeholder'))
14
+ displayInputField.setAttribute('data-original-placeholder', displayInputField.getAttribute('placeholder'));
15
+
16
+ displayInputField.addEventListener('focus', function () {
17
+
18
+ if(displayInputField.value != ""){
19
+
6
20
  displayInputField.setAttribute('placeholder', displayInputField.value);
7
21
  displayInputField.setAttribute('data-value', displayInputField.value);
8
- displayInputField.value = '';
9
-
10
- displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));
11
- displayInputField.setAttribute('list', '');
22
+ }
23
+ displayInputField.value = '';
12
24
 
13
- datalist.style.display = 'block';
14
- });
15
- } else {
16
- displayInputField.addEventListener('focus', function () {
17
- displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));
18
- displayInputField.setAttribute('list', '');
25
+ });
19
26
 
20
- datalist.style.display = 'block';
21
- });
22
- }
27
+
23
28
 
24
29
  displayInputField.addEventListener('blur', function () {
25
30
  if (displayInputField.hasAttribute('data-value')) {
26
31
  displayInputField.value = displayInputField.getAttribute('data-value');
27
32
  }
28
33
 
29
- setTimeout(() => {
30
- datalist.style.display = 'none';
31
- }, 500);
34
+ if(displayInputField.hasAttribute('data-placeholder'))
35
+ displayInputField.setAttribute('placeholder',displayInputField.getAttribute('data-placeholder'));
32
36
  });
33
37
 
34
38
  for (const option of datalist.options) {
35
39
  if (option.innerHTML == '') option.innerHTML = option.value;
36
40
  }
37
41
 
38
- advancedSelect.addEventListener('click', function () {
39
- if (event && event.target instanceof HTMLElement && event.target.closest('datalist option')) {
40
- const option = event.target.closest('datalist option');
42
+ datalist.addEventListener('click', function (event) {
43
+
44
+ if (event && event.target instanceof HTMLElement && event.target.closest('option')) {
45
+ const option = event.target.closest('option');
41
46
 
42
47
  displayInputField.value = option.value;
43
48
 
44
49
  if (typeof window.triggerDynamicEvent == 'function') window.triggerDynamicEvent(displayInputField);
45
50
 
46
- datalist.style.display = 'none';
47
-
48
51
  for (const optionInner of datalist.options) {
49
52
  optionInner.classList.remove('active');
50
53
  }
@@ -60,13 +63,16 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
60
63
  for (const option of datalist.options) {
61
64
  if (option.value.toUpperCase().indexOf(text) > -1) {
62
65
  option.style.display = 'block';
66
+ option.classList.remove('hide');
63
67
  } else {
64
68
  option.style.display = 'none';
69
+ option.classList.add('hide');
65
70
  }
66
71
  }
67
72
  });
68
73
 
69
- displayInputField.addEventListener('keydown', function (e) {
74
+ advancedSelect.addEventListener('keydown', function (e) {
75
+
70
76
  if (e.keyCode == 40) {
71
77
  currentFocus++;
72
78
  addActive(datalist.options);
@@ -91,6 +97,7 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
91
97
  }
92
98
 
93
99
  function removeActive(x): void {
100
+ if (!x) return false;
94
101
  for (let i = 0; i < x.length; i++) {
95
102
  x[i].classList.remove('active');
96
103
  }
@@ -103,10 +110,13 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
103
110
  'beforeend',
104
111
  '<button class="empty btn btn-action"><i class="fa-light fa-times me-0"></i></button>'
105
112
  );
106
- const closeBtn = advancedSelect.querySelector('.empty');
107
113
 
108
- closeBtn.addEventListener('click', function (e) {
109
- displayInputField.removeAttribute('placeholder');
114
+
115
+ const emptyField = () => {
116
+ if(displayInputField.hasAttribute('data-original-placeholder'))
117
+ displayInputField.setAttribute('placeholder', displayInputField.getAttribute('data-original-placeholder'));
118
+
119
+
110
120
  displayInputField.removeAttribute('data-value');
111
121
  displayInputField.value = '';
112
122
 
@@ -114,6 +124,24 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
114
124
  optionInner.classList.remove('active');
115
125
  optionInner.removeAttribute('style');
116
126
  }
127
+
128
+ const updateEvent = new CustomEvent('close-button-pressed');
129
+ advancedSelect.dispatchEvent(updateEvent);
130
+ }
131
+
132
+
133
+
134
+
135
+ const closeBtn = advancedSelect.querySelector('.empty') ? advancedSelect.querySelector('.empty') : advancedSelect.shadowRoot.querySelector('.empty');
136
+
137
+ closeBtn.addEventListener('click', function (e) {
138
+
139
+ emptyField();
140
+ });
141
+
142
+ advancedSelect.addEventListener('empty', function (e) {
143
+
144
+ emptyField();
117
145
  });
118
146
  }
119
147
 
@@ -54,9 +54,22 @@ export const addGlobalEvents = (body): void => {
54
54
  }
55
55
  });
56
56
 
57
- document.addEventListener('submit', (event) => {
58
- if (event && event.target instanceof HTMLElement && event.target.matches('form')) {
59
- const form = event.target;
57
+ Array.from(document.querySelectorAll('form')).forEach((form) => {
58
+ form.addEventListener('submit', (event) => {
59
+ if (
60
+ form.querySelector(':invalid')
61
+ ) {
62
+ form.classList.add('was-validated');
63
+ form?.querySelector('input:invalid')?.scrollIntoView();
64
+ event.preventDefault();
65
+ }
66
+ });
67
+ });
68
+
69
+ document.addEventListener('click', (event) => {
70
+
71
+ if (event && event.target instanceof HTMLElement && event.target.matches('form button:not([type=button])')) {
72
+ const form = event.target.closest('form');
60
73
 
61
74
  // Reset password types
62
75
  Array.from(form.querySelectorAll('[data-password-type]')).forEach((input) => {
@@ -69,6 +82,7 @@ export const addGlobalEvents = (body): void => {
69
82
  form.querySelector('.pwd-checker[data-strength="2"]')
70
83
  ) {
71
84
  form.classList.add('was-validated');
85
+ form?.querySelector('input:invalid')?.scrollIntoView();
72
86
  event.preventDefault();
73
87
  }
74
88
 
@@ -183,3 +197,11 @@ export const uniqueID = (index = 1): number => {
183
197
 
184
198
  return ID;
185
199
  };
200
+
201
+
202
+ export const isValidPostcode = (searchValue: string): boolean => {
203
+
204
+ const regexp = /^([A-Z][A-HJ-Y]?[0-9][A-Z0-9]? ?[0-9][A-Z]{2}|GIR ?0A{2})$/gmi;
205
+
206
+ return regexp.test(searchValue.trim());
207
+ };
@@ -0,0 +1,38 @@
1
+ // @ts-nocheck
2
+ import { isValidPostcode } from '../modules/helpers';
3
+
4
+ describe('The postcode helper function', () => {
5
+
6
+ test('should return true when testing the postcode "ne33hd"', () => {
7
+
8
+ expect(isValidPostcode("ne33hd")).toBe(true);
9
+ });
10
+ test('should return true when testing the postcode "ne3 3hd"', () => {
11
+
12
+ expect(isValidPostcode("ne3 3hd")).toBe(true);
13
+ });
14
+ test('should return true when testing the postcode "NE3 3HD"', () => {
15
+
16
+ expect(isValidPostcode("NE3 3HD")).toBe(true);
17
+ });
18
+ test('should return true when testing the postcode "NE33HD"', () => {
19
+
20
+ expect(isValidPostcode("NE33HD")).toBe(true);
21
+ });
22
+
23
+ test('should return true when testing the postcode " NE33HD"', () => {
24
+
25
+ expect(isValidPostcode(" NE33HD")).toBe(true);
26
+ });
27
+
28
+ test('should return true when testing the postcode " NE33HD "', () => {
29
+
30
+ expect(isValidPostcode(" NE33HD ")).toBe(true);
31
+ });
32
+
33
+ // false results
34
+ test('should return false when testing the postcode "NE3"', () => {
35
+
36
+ expect(isValidPostcode("NE3")).toBe(false);
37
+ });
38
+ });