@iamproperty/components 3.7.2 → 3.7.4

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 (75) hide show
  1. package/assets/css/components/card.css +1 -1
  2. package/assets/css/components/card.css.map +1 -1
  3. package/assets/css/components/dialog.css +1 -1
  4. package/assets/css/components/dialog.css.map +1 -1
  5. package/assets/css/components/pagination.css +1 -1
  6. package/assets/css/components/pagination.css.map +1 -1
  7. package/assets/css/components/table.css +1 -1
  8. package/assets/css/components/table.css.map +1 -1
  9. package/assets/css/components/tooltips.css +1 -1
  10. package/assets/css/components/tooltips.css.map +1 -1
  11. package/assets/css/core.min.css +1 -1
  12. package/assets/css/core.min.css.map +1 -1
  13. package/assets/css/style.min.css +1 -1
  14. package/assets/css/style.min.css.map +1 -1
  15. package/assets/js/components/accordion/accordion.component.js +5 -5
  16. package/assets/js/components/accordion/accordion.component.min.js +6 -5
  17. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  18. package/assets/js/components/applied-filters/applied-filters.component.js +10 -3
  19. package/assets/js/components/applied-filters/applied-filters.component.min.js +14 -0
  20. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -0
  21. package/assets/js/components/card/card.component.js +11 -3
  22. package/assets/js/components/card/card.component.min.js +6 -6
  23. package/assets/js/components/card/card.component.min.js.map +1 -1
  24. package/assets/js/components/filterlist/filterlist.component.js +2 -1
  25. package/assets/js/components/filterlist/filterlist.component.min.js +4 -4
  26. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  27. package/assets/js/components/header/header.component.js +3 -5
  28. package/assets/js/components/header/header.component.min.js +4 -8
  29. package/assets/js/components/header/header.component.min.js.map +1 -1
  30. package/assets/js/components/pagination/pagination.component.js +4 -1
  31. package/assets/js/components/pagination/pagination.component.min.js +20 -0
  32. package/assets/js/components/pagination/pagination.component.min.js.map +1 -0
  33. package/assets/js/components/table/table.component.js +5 -1
  34. package/assets/js/components/table/table.component.min.js +14 -12
  35. package/assets/js/components/table/table.component.min.js.map +1 -1
  36. package/assets/js/components/tabs/tabs.component.js +2 -1
  37. package/assets/js/components/tabs/tabs.component.min.js +3 -3
  38. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  39. package/assets/js/dynamic.min.js +2 -2
  40. package/assets/js/dynamic.min.js.map +1 -1
  41. package/assets/js/modules/dialogs.js +8 -1
  42. package/assets/js/modules/table.js +19 -6
  43. package/assets/js/scripts.bundle.js +37 -37
  44. package/assets/js/scripts.bundle.js.map +1 -1
  45. package/assets/js/scripts.bundle.min.js +2 -2
  46. package/assets/js/scripts.bundle.min.js.map +1 -1
  47. package/assets/sass/_corefiles.scss +1 -0
  48. package/assets/sass/components/card.scss +2 -3
  49. package/assets/sass/components/dialog.scss +49 -4
  50. package/assets/sass/components/pagination.scss +2 -1
  51. package/assets/sass/components/table.scss +26 -12
  52. package/assets/sass/components/tooltips.scss +137 -49
  53. package/assets/sass/foundations/buttons.scss +1 -1
  54. package/assets/sass/foundations/reboot.scss +32 -2
  55. package/assets/ts/components/accordion/accordion.component.ts +6 -8
  56. package/assets/ts/components/applied-filters/applied-filters.component.ts +12 -3
  57. package/assets/ts/components/card/card.component.ts +16 -4
  58. package/assets/ts/components/filterlist/filterlist.component.ts +4 -2
  59. package/assets/ts/components/header/header.component.ts +4 -5
  60. package/assets/ts/components/pagination/pagination.component.ts +4 -1
  61. package/assets/ts/components/table/table.component.ts +5 -1
  62. package/assets/ts/components/tabs/tabs.component.ts +3 -1
  63. package/assets/ts/modules/dialogs.ts +11 -4
  64. package/assets/ts/modules/table.ts +25 -8
  65. package/dist/components.es.js +1179 -1148
  66. package/dist/components.umd.js +55 -36
  67. package/package.json +1 -1
  68. package/src/components/Accordion/Accordion.vue +1 -1
  69. package/src/components/AppliedFilters/AppliedFilters.vue +1 -1
  70. package/src/components/Filterlist/Filterlist.vue +1 -1
  71. package/src/components/Header/Header.vue +9 -5
  72. package/src/components/Pagination/Pagination.vue +1 -1
  73. package/src/components/Table/Table.vue +1 -1
  74. package/src/components/Tabs/Tabs.vue +1 -1
  75. package/src/components/Header/Header.spec.js +0 -34
@@ -14,18 +14,15 @@ class iamHeader extends HTMLElement {
14
14
  this.attachShadow({ mode: 'open'});
15
15
 
16
16
  const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
17
+ const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
17
18
  const loadCSS = `@import "${assetLocation}/css/components/header.css";`;
18
19
 
19
20
  const template = document.createElement('template');
20
21
  template.innerHTML = `
21
22
  <style>
22
- @import "${assetLocation}/css/core.min.css";
23
+ @import "${coreCSS}";
23
24
  ${loadCSS}
24
25
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
25
- :host {
26
- max-width:100%!important;
27
- padding:0!important;
28
- }
29
26
  </style>
30
27
  <div class="header-banner">
31
28
  <div class="container" part="container">
@@ -47,6 +44,8 @@ class iamHeader extends HTMLElement {
47
44
 
48
45
  connectedCallback() {
49
46
 
47
+ this.classList.add('loaded');
48
+
50
49
  const picture = this.shadowRoot.querySelector('picture');
51
50
  const source = this.shadowRoot.querySelector('picture source');
52
51
 
@@ -7,11 +7,14 @@ class iamPagination extends HTMLElement {
7
7
  super();
8
8
  this.attachShadow({ mode: 'open'});
9
9
  const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
10
+ const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
10
11
 
11
12
  const template = document.createElement('template');
12
13
  template.innerHTML = `
13
14
  <style>
14
- @import "${assetLocation}/css/core.min.css";
15
+ @import "${coreCSS}";
16
+
17
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
15
18
  </style>
16
19
  <div class="pagination__wrapper d-none">
17
20
  </div>
@@ -8,6 +8,7 @@ class iamTable extends HTMLElement {
8
8
  super();
9
9
  this.attachShadow({ mode: 'open'});
10
10
  const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
11
+ const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
11
12
 
12
13
  const isCTA = this.classList.contains('table--cta');
13
14
  const isExportable = this.classList.contains('table--export');
@@ -15,11 +16,12 @@ class iamTable extends HTMLElement {
15
16
  let classList = this.classList.toString();
16
17
 
17
18
  classList = classList.replace('table--cta','');
19
+ classList = classList.replace('table--loading','');
18
20
 
19
21
  const template = document.createElement('template');
20
22
  template.innerHTML = `
21
23
  <style>
22
- @import "${assetLocation}/css/core.min.css";
24
+ @import "${coreCSS}";
23
25
 
24
26
  :host(.mh-sm){
25
27
  max-height: none!important;
@@ -30,6 +32,8 @@ class iamTable extends HTMLElement {
30
32
  :host(.mh-lg){
31
33
  max-height: none!important;
32
34
  }
35
+
36
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
33
37
  </style>
34
38
  ${isCTA ? '<div class="table--cta">' : ''}
35
39
  <div class="table__wrapper ${classList}">
@@ -15,10 +15,12 @@ class iamTabs extends HTMLElement {
15
15
  this.attachShadow({ mode: 'open'});
16
16
 
17
17
  const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
18
+ const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
19
+
18
20
  const template = document.createElement('template');
19
21
  template.innerHTML = `
20
22
  <style>
21
- @import "${assetLocation}/css/core.min.css";
23
+ @import "${coreCSS}";
22
24
 
23
25
  :host(.admin-panel){
24
26
  display: contents!important;
@@ -100,18 +100,14 @@ const extendDialogs = (body) => {
100
100
  // Popover
101
101
  if (event && event.target instanceof HTMLElement && event.target.closest('.dialog__wrapper > button')){
102
102
 
103
- // Close existing open popover
104
-
105
103
  let btn = event.target.closest('.dialog__wrapper > button');
106
104
  let parent = event.target.closest('.dialog__wrapper > button').parentNode;
107
105
  let dataEvent = "openPopover"
108
106
  let popover = parent.querySelector(':scope > dialog');
109
107
 
110
-
111
108
  if(document.querySelector('dialog[open]') && document.querySelector('dialog[open]') != popover)
112
109
  document.querySelector('dialog[open]').close();
113
110
 
114
-
115
111
  // Remove active class from exiting active buttons
116
112
  Array.from(document.querySelectorAll('.dialog__wrapper > button')).forEach((btnElement,index) => {
117
113
  btnElement.classList.remove('active');
@@ -166,6 +162,17 @@ const extendDialogs = (body) => {
166
162
  "id": btn.textContent
167
163
  });
168
164
  };
165
+
166
+ // Close popovers when clicked away
167
+ if (event && event.target instanceof HTMLElement && !event.target.closest('dialog[open]') && !event.target.closest('.dialog__wrapper > button')){
168
+
169
+ if(document.querySelector('.dialog__wrapper:not([data-keep-open]) > dialog[open]'))
170
+ document.querySelector('.dialog__wrapper:not([data-keep-open]) > dialog[open]').close();
171
+
172
+ Array.from(document.querySelectorAll('.dialog__wrapper:not([data-keep-open]) > button')).forEach((btnElement,index) => {
173
+ btnElement.classList.remove('active');
174
+ });
175
+ }
169
176
  });
170
177
 
171
178
  return null
@@ -43,20 +43,18 @@ export const getLargestLastColWidth = (table) => {
43
43
 
44
44
  let largestWidth = 0;
45
45
 
46
- Array.from(table.querySelectorAll('tr')).forEach((row, index) => {
46
+ Array.from(table.querySelectorAll('tbody tr')).forEach((row, index) => {
47
47
 
48
48
  let htmlStyles = window.getComputedStyle(document.querySelector('html'));
49
49
  let lastColChild = row.querySelector(':scope > *:last-child > *:first-child');
50
50
 
51
51
  if(lastColChild){
52
52
 
53
+ lastColChild.classList.add('text-nowrap');
53
54
  let responsiveWidth = lastColChild.offsetWidth/parseFloat(htmlStyles.fontSize);
54
- responsiveWidth += 1.5;
55
+ responsiveWidth += 1.7;
55
56
  largestWidth = largestWidth > responsiveWidth ? largestWidth : responsiveWidth;
56
57
  }
57
-
58
- let rowHeight = row.offsetHeight/parseFloat(htmlStyles.fontSize);
59
- row.style.setProperty("--row-height", `${rowHeight}rem`);
60
58
  });
61
59
 
62
60
  return largestWidth;
@@ -698,6 +696,11 @@ export const addPaginationEventListeners = function(table, form, pagination, wra
698
696
  url.searchParams.set("page", newPage);
699
697
  history.pushState({'type':'pagination','form':form.getAttribute('id'),'page':newPage}, "", url)
700
698
  }
699
+
700
+ // scroll back to the top of the table
701
+ const yOffset = -250;
702
+ const y = table.getBoundingClientRect().top + window.pageYOffset + yOffset;
703
+ window.scrollTo({top: y, behavior: 'smooth'});
701
704
  }
702
705
 
703
706
  if (event && event.target instanceof HTMLElement && event.target.closest('[data-show]')){
@@ -778,8 +781,22 @@ export const makeTableFunctional = function(table, form, pagination, wrapper){
778
781
  // Work out the largest width of the CTA's in the last column
779
782
  if(wrapper && wrapper.classList.contains('table--cta')){
780
783
 
781
- const largestWidth = getLargestLastColWidth(table);
782
- wrapper.style.setProperty("--cta-width", `${largestWidth}rem`);
784
+ if(!wrapper.hasAttribute('data-cta-width')){
785
+
786
+ const largestWidth = getLargestLastColWidth(table);
787
+ wrapper.style.setProperty("--cta-width", `${largestWidth}rem`);
788
+ wrapper.setAttribute("data-cta-width", `${largestWidth}rem`);
789
+ }
790
+
791
+ function outputsize() {
792
+
793
+ Array.from(table.querySelectorAll('tr')).forEach((row, index) => {
794
+ let rowHeight = row.offsetHeight;
795
+ row.style.setProperty("--row-height", `${rowHeight}px`);
796
+ });
797
+ }
798
+
799
+ new ResizeObserver(outputsize).observe(table)
783
800
  }
784
801
  }
785
802
 
@@ -902,7 +919,7 @@ export const loadAjaxTable = async function (table, form, pagination, wrapper){
902
919
  wrapper.setAttribute('data-page', parseInt(currentPage));
903
920
  wrapper.setAttribute('data-pages', Math.ceil(wrapper.getAttribute('data-total') / wrapper.getAttribute('data-show')));
904
921
 
905
- makeTableFunctional(table, form, pagination, wrapper);
922
+ makeTableFunctional(table, form, pagination, wrapper);
906
923
  createPaginationButttons(wrapper, pagination);
907
924
 
908
925
  if(parseInt(totalNumber) == 0){