@iamproperty/components 7.6.3--beta3 → 7.6.3

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 (137) 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/barchart.component.css +1 -1
  6. package/assets/css/components/barchart.component.css.map +1 -1
  7. package/assets/css/components/calendar.component.css +1 -1
  8. package/assets/css/components/calendar.component.css.map +1 -1
  9. package/assets/css/components/card.component.css +1 -1
  10. package/assets/css/components/card.component.css.map +1 -1
  11. package/assets/css/components/carousel.component.css +1 -1
  12. package/assets/css/components/carousel.component.css.map +1 -1
  13. package/assets/css/components/collapsible-side.css +1 -1
  14. package/assets/css/components/collapsible-side.css.map +1 -1
  15. package/assets/css/components/content.component.css +1 -1
  16. package/assets/css/components/content.component.css.map +1 -1
  17. package/assets/css/components/doughnutchart.component.css +1 -1
  18. package/assets/css/components/doughnutchart.component.css.map +1 -1
  19. package/assets/css/components/fileupload.css +1 -1
  20. package/assets/css/components/fileupload.css.map +1 -1
  21. package/assets/css/components/modal.component.css +1 -1
  22. package/assets/css/components/modal.component.css.map +1 -1
  23. package/assets/css/components/multi-step-modal.component.css +1 -1
  24. package/assets/css/components/multi-step-modal.component.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/rating.component.css +1 -0
  32. package/assets/css/components/rating.component.css.map +1 -0
  33. package/assets/css/components/slider.css +1 -1
  34. package/assets/css/components/slider.css.map +1 -1
  35. package/assets/css/components/split-button.component.css +1 -1
  36. package/assets/css/components/split-button.component.css.map +1 -1
  37. package/assets/css/components/tabs.component.css +1 -1
  38. package/assets/css/components/tabs.component.css.map +1 -1
  39. package/assets/css/components/tag.component.css +1 -1
  40. package/assets/css/components/tag.component.css.map +1 -1
  41. package/assets/css/components/video-modal.component.css +1 -1
  42. package/assets/css/components/video-modal.component.css.map +1 -1
  43. package/assets/css/core.min.css +1 -1
  44. package/assets/css/core.min.css.map +1 -1
  45. package/assets/css/style.min.css +1 -1
  46. package/assets/css/style.min.css.map +1 -1
  47. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  48. package/assets/js/components/actionbar/actionbar.component.min.js +2 -2
  49. package/assets/js/components/address-lookup/address-lookup.component.js +91 -66
  50. package/assets/js/components/address-lookup/address-lookup.component.min.js +5 -6
  51. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  52. package/assets/js/components/advanced-select/advanced-select.component.min.js +3 -3
  53. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
  54. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  55. package/assets/js/components/barchart/barchart.component.min.js +4 -4
  56. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  57. package/assets/js/components/calendar/calendar.component.min.js +4 -4
  58. package/assets/js/components/card/card.component.min.js +2 -2
  59. package/assets/js/components/carousel/carousel.component.min.js +3 -3
  60. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
  61. package/assets/js/components/content/content.component.min.js +2 -2
  62. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  63. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +3 -3
  64. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  65. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  66. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  67. package/assets/js/components/header/header.component.min.js +1 -1
  68. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  69. package/assets/js/components/input/input.component.min.js +1 -1
  70. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  71. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  72. package/assets/js/components/menu/menu.component.min.js +1 -1
  73. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  74. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  75. package/assets/js/components/modal/modal.component.js +47 -24
  76. package/assets/js/components/modal/modal.component.min.js +10 -11
  77. package/assets/js/components/modal/modal.component.min.js.map +1 -1
  78. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  79. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +3 -3
  80. package/assets/js/components/multiselect/multiselect.component.min.js +2 -2
  81. package/assets/js/components/nav/nav.component.min.js +2 -2
  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/password.component.min.js +1 -1
  85. package/assets/js/components/popover/popover.component.min.js +1 -1
  86. package/assets/js/components/rank/rank.component.min.js +1 -1
  87. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  88. package/assets/js/components/rating/rating.component.js +66 -0
  89. package/assets/js/components/rating/rating.component.min.js +15 -0
  90. package/assets/js/components/rating/rating.component.min.js.map +1 -0
  91. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  92. package/assets/js/components/search/search.component.min.js +5 -5
  93. package/assets/js/components/search/search.component.min.js.map +1 -1
  94. package/assets/js/components/slider/slider.component.min.js +2 -2
  95. package/assets/js/components/split-button/split-button.component.min.js +2 -2
  96. package/assets/js/components/std-address-lookup/std-address-lookup.component.js +383 -383
  97. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +18 -19
  98. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  99. package/assets/js/components/table/table.component.min.js +1 -1
  100. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  101. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  102. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  103. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  104. package/assets/js/components/tabs/tabs.component.min.js +3 -3
  105. package/assets/js/components/tag/tag.component.min.js +2 -2
  106. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  107. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  108. package/assets/js/components/video-modal/video-modal.component.min.js +2 -2
  109. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  110. package/assets/js/modules/advanced-select.js +11 -9
  111. package/assets/js/scripts.bundle.js +2 -2
  112. package/assets/js/scripts.bundle.js.map +1 -1
  113. package/assets/js/scripts.bundle.min.js +2 -2
  114. package/assets/js/scripts.bundle.min.js.map +1 -1
  115. package/assets/js/scripts.js +2 -4
  116. package/assets/sass/components/modal.component.scss +179 -198
  117. package/assets/sass/components/rating.component.css +212 -0
  118. package/assets/sass/elements/button__group.css +25 -4
  119. package/assets/sass/elements/buttons--compact.scss +12 -3
  120. package/assets/sass/elements/buttons--special.scss +2 -1
  121. package/assets/sass/elements/forms.scss +33 -21
  122. package/assets/sass/elements/highlight.css +7 -0
  123. package/assets/sass/elements/label.scss +17 -0
  124. package/assets/sass/foundations/colours.scss +10 -0
  125. package/assets/sass/utilities/colours.scss +4 -3
  126. package/assets/sass/utilities/font-awesome-iso-fallbacks.scss +6 -0
  127. package/assets/sass/utilities/wider-colours.scss +1 -0
  128. package/assets/ts/components/address-lookup/address-lookup.component.ts +154 -190
  129. package/assets/ts/components/modal/modal.component.ts +63 -26
  130. package/assets/ts/components/rating/rating.component.ts +86 -0
  131. package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +383 -383
  132. package/assets/ts/modules/advanced-select.ts +13 -9
  133. package/assets/ts/scripts.ts +2 -2
  134. package/dist/components.es.js +88 -88
  135. package/dist/components.umd.js +214 -204
  136. package/package.json +1 -1
  137. package/src/components/Rating/Rating.vue +22 -0
@@ -24,14 +24,11 @@ class iamModal extends HTMLElement {
24
24
  <dialog>
25
25
  ${closeButtonHtml}
26
26
  <div class="scroll">
27
- <i class="fa-light fa-circle" aria-hidden="true">
28
- <i class="fa-regular fa-${this.hasAttribute('data-icon') ? this.getAttribute('data-icon') : 'info'}" aria-hidden="true"></i>
29
- </i>
30
27
  <slot></slot>
31
- <div class="btn-group">
32
- <button class="btn btn-secondary" data-cancel>Cancel</button>
28
+ <div class="btn__group">
29
+ <button class="btn btn-secondary" data-cancel>${this.hasAttribute('data-cancel-text') ? this.getAttribute('data-cancel-text') : 'Cancel'}</button>
33
30
  <slot name="agreed-button">
34
- <button class="btn btn-primary" data-agreed>${this.hasAttribute('data-agreed-text') ? this.getAttribute('data-agreed-text') : 'Ok'}</button>
31
+ <button class="btn btn-primary" data-agreed>${this.hasAttribute('data-agreed-text') ? this.getAttribute('data-agreed-text') : 'Submit'}</button>
35
32
  </slot>
36
33
  </div>
37
34
  </div>
@@ -49,10 +46,18 @@ class iamModal extends HTMLElement {
49
46
  const dialog = this.shadowRoot?.querySelector('dialog');
50
47
  const closeButton = this.shadowRoot?.querySelector('[data-close]');
51
48
  const cancelButton = this.shadowRoot?.querySelector('[data-cancel]');
52
- const agreedButton = this.shadowRoot?.querySelector('[data-agreed]');
53
- const slottedAgreedButton = this.querySelector('button[slot="agreed-button"]');
49
+ const agreedButton = this.querySelector('button[slot="agreed-button"]') ? this.querySelector('button[slot="agreed-button"]') : this.shadowRoot?.querySelector('[data-agreed]');
54
50
  const modalType = this.hasAttribute('data-type') ? this.getAttribute('data-type') : 'passive';
55
51
 
52
+ const agreed = () => {
53
+ const agreedEvent = new CustomEvent('agreed', {
54
+ detail: { modalId: id },
55
+ });
56
+
57
+ this.dispatchEvent(agreedEvent);
58
+
59
+ closeModal(id, this);
60
+ }
56
61
 
57
62
  document.addEventListener('click', (e) => {
58
63
 
@@ -60,6 +65,13 @@ class iamModal extends HTMLElement {
60
65
  openModal(id, this);
61
66
  }
62
67
  });
68
+
69
+ document.addEventListener('click', (e) => {
70
+
71
+ if(e.target.matches(`[command="close"][commandfor="${id}"]`)){
72
+ closeModal(id, this);
73
+ }
74
+ });
63
75
 
64
76
  // Disable the original event
65
77
  originalDialog?.addEventListener('command', (e) => {
@@ -71,6 +83,8 @@ class iamModal extends HTMLElement {
71
83
 
72
84
  originalDialog?.addEventListener('command', (e) => {
73
85
 
86
+ e.preventDefault();
87
+
74
88
  if (event.command == "close") {
75
89
  closeModal(id, this);
76
90
  }
@@ -78,13 +92,17 @@ class iamModal extends HTMLElement {
78
92
 
79
93
  originalDialog?.addEventListener('close', (e) => {
80
94
 
95
+ e.preventDefault();
96
+
81
97
  closeModal(id, this);
82
98
  });
83
99
 
84
100
  // Move the submit button so that the slot functionality works
85
- Array.from(originalDialog?.querySelectorAll('[slot]')).forEach((element) => {
86
- this.moveBefore(element, originalDialog);
87
- });
101
+ if(originalDialog) {
102
+ Array.from(originalDialog?.querySelectorAll('[slot]')).forEach((element) => {
103
+ this.moveBefore(element, originalDialog);
104
+ });
105
+ }
88
106
 
89
107
  closeButton?.addEventListener('click', () => {
90
108
  closeModal(id, this);
@@ -96,30 +114,39 @@ class iamModal extends HTMLElement {
96
114
 
97
115
  agreedButton?.addEventListener('click', () => {
98
116
 
99
- const agreedEvent = new CustomEvent('agreed', {
100
- detail: { modalId: id },
101
- });
102
-
103
- this.dispatchEvent(agreedEvent);
104
-
105
- closeModal(id, this);
117
+ agreed();
106
118
  });
107
119
 
108
- slottedAgreedButton?.addEventListener('click', () => {
109
120
 
110
- const agreedEvent = new CustomEvent('agreed', {
111
- detail: { modalId: id },
112
- });
121
+ this.addEventListener('close-modal', () => {
122
+ closeModal(id, this);
123
+ });
113
124
 
114
- this.dispatchEvent(agreedEvent);
125
+ // Hijack the default form submission
126
+ originalDialog?.addEventListener('submit', (e) => {
115
127
 
116
- closeModal(id, this);
128
+ if(e.submitter && e.submitter.hasAttribute('formmethod') && e.submitter.getAttribute('formmethod') =="dialog"){
129
+
130
+ closeModal(id, this);
131
+ }
132
+ else {
133
+ agreed();
134
+ }
117
135
  });
118
136
 
119
- this.addEventListener('close-modal', () => {
120
- closeModal(id, this);
137
+ Array.from(this.querySelectorAll('button[type="submit"]')).forEach((button)=> {
138
+
139
+ button.addEventListener('click', (e) => {
140
+
141
+ if(!button.closest('form') && !button.hasAttribute('formmethod')){
142
+
143
+ agreed();
144
+ }
145
+ });
121
146
  });
122
147
 
148
+
149
+ // Add click event on backdrop
123
150
  this.addEventListener('click', (event) => {
124
151
 
125
152
  // Small fix to make sure the dialog isn't a dialog inside of a dialog.
@@ -141,6 +168,16 @@ class iamModal extends HTMLElement {
141
168
  }
142
169
  }
143
170
  });
171
+
172
+
173
+ if (modalType == 'transactional'){
174
+ this.shadowRoot?.querySelector('.scroll')?.insertAdjacentHTML('afterbegin',
175
+ `<i class="fa-light fa-circle" aria-hidden="true">
176
+ <i class="fa-regular fa-${this.hasAttribute('data-icon') ? this.getAttribute('data-icon') : 'info'}" aria-hidden="true"></i>
177
+ </i>`
178
+ );
179
+ }
180
+
144
181
  }
145
182
  }
146
183
 
@@ -0,0 +1,86 @@
1
+ import { trackComponent, trackComponentRegistered } from '../_global';
2
+
3
+ trackComponentRegistered('iam-rating');
4
+
5
+ class iamRating extends HTMLElement {
6
+ constructor() {
7
+ super();
8
+ this.attachShadow({ mode: 'open' });
9
+
10
+ const assetLocation = document.body.hasAttribute('data-assets-location')
11
+ ? document.body.getAttribute('data-assets-location')
12
+ : '/assets';
13
+ const loadCSS = `@import "${assetLocation}/css/components/rating.component.css";`;
14
+
15
+ const template = document.createElement('template');
16
+ template.innerHTML = `
17
+ <style>
18
+
19
+ ${loadCSS}
20
+ </style>
21
+ <div class="wrapper">
22
+ <input name="rating-component" type="range" />
23
+ </div>
24
+ <slot></slot>
25
+ `;
26
+
27
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
28
+ }
29
+
30
+ connectedCallback(): void {
31
+ const wrapper = this.shadowRoot?.querySelector('.wrapper');
32
+ const rating = this.shadowRoot?.querySelector('input');
33
+ const input = this.querySelector('input[type="number"],input[type="range"],select');
34
+
35
+ if(!input)
36
+ return false;
37
+
38
+ wrapper?.classList.add('show');
39
+ input?.classList.add('visually-hidden');
40
+ input?.setAttribute('tabindex',"-1");
41
+
42
+ rating?.setAttribute('min', input?.hasAttribute('min') ? input?.getAttribute('min') : '0');
43
+ rating?.setAttribute('max', input?.hasAttribute('max') ? input?.getAttribute('max') : '5');
44
+ rating?.setAttribute('step', input?.hasAttribute('step') ? input?.getAttribute('step') : '1');
45
+
46
+ if(input?.hasAttribute('disabled')){
47
+ rating?.setAttribute('disabled', 'disabled');
48
+ }
49
+
50
+ rating.value = input.value ? input.value : rating?.getAttribute('min');
51
+
52
+ rating?.addEventListener('input', () => {
53
+
54
+ input.value = rating.value;
55
+
56
+ const changeEvent = new Event('change');
57
+ input.dispatchEvent(changeEvent);
58
+ const inputEvent = new Event('input');
59
+ input.dispatchEvent(inputEvent);
60
+ });
61
+
62
+ input?.addEventListener('input', () => {
63
+
64
+ rating.value = input.value;
65
+ });
66
+
67
+ /* Watch for any changes to the inputs attributes */
68
+ const observer = new MutationObserver((mutations) => {
69
+ mutations.forEach((mutation) => {
70
+ if(mutation.type == "attributes"){
71
+ rating?.setAttribute(mutation.attributeName, input?.getAttribute(mutation.attributeName));
72
+ }
73
+ });
74
+ });
75
+
76
+ observer.observe(input, {
77
+ attributes: true,
78
+ childList: false,
79
+ subtree: false,
80
+ });
81
+
82
+
83
+ }
84
+ }
85
+
86
+ export default iamRating;