@iamproperty/components 5.6.1-beta17 → 5.6.1-beta19

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 (42) hide show
  1. package/assets/css/components/carousel.css +1 -1
  2. package/assets/css/components/carousel.css.map +1 -1
  3. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  4. package/assets/js/components/actionbar/actionbar.component.min.js +3 -3
  5. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  6. package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
  7. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  8. package/assets/js/components/card/card.component.min.js +1 -1
  9. package/assets/js/components/carousel/carousel.component.js +14 -1
  10. package/assets/js/components/carousel/carousel.component.min.js +5 -5
  11. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  12. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  13. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  14. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  15. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  16. package/assets/js/components/header/header.component.min.js +1 -1
  17. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  18. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  19. package/assets/js/components/multiselect/multiselect.component.min.js +1 -1
  20. package/assets/js/components/nav/nav.component.min.js +1 -1
  21. package/assets/js/components/notification/notification.component.min.js +1 -1
  22. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  23. package/assets/js/components/search/search.component.min.js +1 -1
  24. package/assets/js/components/slider/slider.component.min.js +1 -1
  25. package/assets/js/components/table/table.component.min.js +1 -1
  26. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  27. package/assets/js/dynamic.min.js +5 -5
  28. package/assets/js/dynamic.min.js.map +1 -1
  29. package/assets/js/modules/dialogs.js +6 -0
  30. package/assets/js/modules/fileupload.js +1 -1
  31. package/assets/js/scripts.bundle.js +10 -10
  32. package/assets/js/scripts.bundle.js.map +1 -1
  33. package/assets/js/scripts.bundle.min.js +2 -2
  34. package/assets/js/scripts.bundle.min.js.map +1 -1
  35. package/assets/sass/components/carousel.scss +32 -7
  36. package/assets/ts/components/carousel/carousel.component.ts +17 -1
  37. package/assets/ts/modules/dialogs.ts +8 -0
  38. package/assets/ts/modules/fileupload.ts +1 -1
  39. package/dist/components.es.js +179 -173
  40. package/dist/components.umd.js +34 -34
  41. package/package.json +1 -1
  42. package/src/components/Carousel/Carousel.vue +5 -1
@@ -130,18 +130,40 @@
130
130
 
131
131
  // #region carousel controls/pips
132
132
  .carousel .carousel__controls {
133
-
134
- text-align: center;
135
- width: 10rem;
136
- max-height: 1rem;
137
133
  overflow: hidden;
138
134
  margin-inline: auto;
139
135
 
136
+ &:not(.thumbnails){
137
+ max-height: 1rem;
138
+ width: 10rem;
139
+ text-align: center;
140
+ }
141
+
142
+ &.thumbnails {
143
+ margin-block-start: 2rem;
144
+ }
145
+
140
146
  @include media-breakpoint-up(sm) {
141
147
  width: 100%;
142
148
  }
143
149
 
144
150
  button {
151
+ padding: 0;
152
+ margin: 0 0.2rem 0.2rem;
153
+ border: 3px solid var(--colour-canvas);
154
+ border-radius: 4px;
155
+
156
+ &.has-thumbnail {
157
+ height: 4.625rem;
158
+
159
+ img {
160
+ height: 100%;
161
+ width: auto;
162
+ }
163
+ }
164
+ }
165
+
166
+ button:not(.has-thumbnail) {
145
167
  width: 1rem;
146
168
  height: 1rem;
147
169
  min-height: 1rem;
@@ -149,10 +171,9 @@
149
171
  text-indent: -50rem;
150
172
  overflow: hidden;
151
173
  background: var(--colour-primary-theme);
152
- padding: 0;
153
174
  margin: 0 0.5rem 0.5rem 0.5rem;
154
175
  border: none;
155
-
176
+
156
177
  &:before {
157
178
  display: none;
158
179
  }
@@ -164,8 +185,12 @@
164
185
  }
165
186
 
166
187
  .carousel__controls > button[aria-current] {
188
+ --colour-active-thumbnail: var(--colour-info);
189
+ border-color: var(--colour-active-thumbnail);
167
190
 
168
- background: var(--colour-success);
191
+ &:not(.has-thumbnail) {
192
+ background: var(--colour-success);
193
+ }
169
194
  }
170
195
 
171
196
  // #endregion
@@ -49,6 +49,8 @@ class iamCarousel extends HTMLElement {
49
49
 
50
50
  const carouselElement = this.shadowRoot.querySelector('.carousel');
51
51
  const row = this.querySelector('.row');
52
+ const thumbnailImages = JSON.parse(this.dataset.thumbnails);
53
+
52
54
  const carouselControls = this.shadowRoot.querySelector('.carousel__controls');
53
55
 
54
56
  let itemCount = this.querySelectorAll(':scope > .row > .col').length
@@ -61,10 +63,24 @@ class iamCarousel extends HTMLElement {
61
63
  if(this.classList.contains('hide-controls'))
62
64
  carouselElement.classList.add('hide-controls');
63
65
 
66
+ if (thumbnailImages?.length) {
67
+ carouselControls.classList.add('thumbnails');
68
+ }
69
+
64
70
  // populate the pips
65
71
  let pips = "";
66
72
  for (let i = 1; i <= itemCount; i++) {
67
- pips += `<button class="control-${i}" data-slide="${i}" ${i == 1 ? "aria-current":""}>Slide ${i}</button>`;
73
+ let pipContent = null;
74
+ let pipClass = '';
75
+
76
+ if (thumbnailImages.length) {
77
+ pipClass = 'has-thumbnail';
78
+ pipContent = `<img src="${thumbnailImages[i - 1].src}" alt="Slide ${i}" height="148"/>`;
79
+ } else {
80
+ pipContent = `Slide ${i}`;
81
+ }
82
+
83
+ pips += `<button class="control-${i} ${pipClass}" data-slide="${i}" ${i == 1 ? "aria-current":""}>${pipContent}</button>`;
68
84
  }
69
85
  carouselControls.innerHTML = pips;
70
86
 
@@ -72,6 +72,14 @@ const extendDialogs = (body) => {
72
72
  btnElement.classList.remove('active');
73
73
  });
74
74
 
75
+ let closeEvent = new CustomEvent('dialog-closed', {
76
+ bubbles: true,
77
+ cancelable: true,
78
+ detail: { modalId: dialog.id }
79
+ });
80
+
81
+ event.target.dispatchEvent(closeEvent);
82
+
75
83
  window.dataLayer = window.dataLayer || [];
76
84
  window.dataLayer.push({
77
85
  "event": "closeModal",
@@ -166,7 +166,7 @@ function fileupload(fileupload: Element, wrapper: Element) {
166
166
  let filename = fileupload.getAttribute('data-filename');
167
167
 
168
168
  if(filename)
169
- filesWrapper.innerHTML += `<span class="file">${filename} <button data-file="${filename}">Remove</button></span>`;
169
+ filesWrapper.innerHTML = `<span class="file">${filename} <button data-file="${filename}">Remove</button></span>`;
170
170
  }
171
171
  }
172
172