@iamproperty/components 5.5.0 → 5.5.1-beta-2

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 (96) hide show
  1. package/assets/css/components/actionbar.css +1 -1
  2. package/assets/css/components/actionbar.css.map +1 -1
  3. package/assets/css/components/applied-filters.css +1 -1
  4. package/assets/css/components/applied-filters.css.map +1 -1
  5. package/assets/css/components/card.css +1 -1
  6. package/assets/css/components/card.css.map +1 -1
  7. package/assets/css/components/card.global.css +1 -1
  8. package/assets/css/components/card.global.css.map +1 -1
  9. package/assets/css/components/charts.css +1 -1
  10. package/assets/css/components/charts.css.map +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/nav.css.map +1 -1
  15. package/assets/css/components/slider.css.map +1 -1
  16. package/assets/css/components/tabs.css +1 -1
  17. package/assets/css/components/tabs.css.map +1 -1
  18. package/assets/css/core.min.css +1 -1
  19. package/assets/css/core.min.css.map +1 -1
  20. package/assets/css/style.min.css +1 -1
  21. package/assets/css/style.min.css.map +1 -1
  22. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  23. package/assets/js/components/actionbar/actionbar.component.js +12 -3
  24. package/assets/js/components/actionbar/actionbar.component.min.js +6 -6
  25. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  26. package/assets/js/components/address-lookup/address-lookup.component.js +7 -0
  27. package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
  28. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  29. package/assets/js/components/applied-filters/applied-filters.component.min.js +6 -6
  30. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  31. package/assets/js/components/card/card.component.min.js +3 -3
  32. package/assets/js/components/chart/chart.component.js +71 -0
  33. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  34. package/assets/js/components/fileupload/fileupload.component.js +1 -1
  35. package/assets/js/components/fileupload/fileupload.component.min.js +5 -5
  36. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  37. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  38. package/assets/js/components/header/header.component.min.js +2 -2
  39. package/assets/js/components/nav/nav.component.min.js +1 -1
  40. package/assets/js/components/notification/notification.component.min.js +1 -1
  41. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  42. package/assets/js/components/search/search.component.min.js +1 -1
  43. package/assets/js/components/search/search.component.min.js.map +1 -1
  44. package/assets/js/components/table/table.component.js +2 -2
  45. package/assets/js/components/table/table.component.min.js +6 -6
  46. package/assets/js/components/table/table.component.min.js.map +1 -1
  47. package/assets/js/components/tabs/tabs.component.min.js +2 -2
  48. package/assets/js/dynamic.min.js +1 -1
  49. package/assets/js/dynamic.min.js.map +1 -1
  50. package/assets/js/modules/applied-filters.js +39 -7
  51. package/assets/js/modules/chart.js +613 -111
  52. package/assets/js/modules/fileupload.js +11 -0
  53. package/assets/js/modules/helpers.js +16 -0
  54. package/assets/js/modules/table.js +62 -11
  55. package/assets/js/scripts.bundle.js +31 -31
  56. package/assets/js/scripts.bundle.js.map +1 -1
  57. package/assets/js/scripts.bundle.min.js +2 -2
  58. package/assets/js/scripts.bundle.min.js.map +1 -1
  59. package/assets/sass/_elements.scss +1 -1
  60. package/assets/sass/_functions/variables.scss +80 -0
  61. package/assets/sass/_utilities.scss +1 -0
  62. package/assets/sass/components/actionbar.scss +16 -0
  63. package/assets/sass/components/applied-filters.scss +6 -48
  64. package/assets/sass/components/card.global.scss +4 -0
  65. package/assets/sass/components/card.scss +1 -1
  66. package/assets/sass/components/charts.scss +981 -234
  67. package/assets/sass/components/header.scss +8 -1
  68. package/assets/sass/components/tabs.scss +10 -1
  69. package/assets/sass/elements/badge-tag.scss +82 -0
  70. package/assets/sass/elements/buttons.scss +13 -1
  71. package/assets/sass/elements/details.scss +94 -5
  72. package/assets/sass/elements/dialog.scss +2 -0
  73. package/assets/sass/elements/forms.scss +26 -22
  74. package/assets/sass/elements/tooltips.scss +4 -3
  75. package/assets/sass/foundations/root.scss +11 -0
  76. package/assets/sass/helpers/wider-colours.scss +11 -0
  77. package/assets/ts/components/actionbar/actionbar.component.ts +14 -3
  78. package/assets/ts/components/address-lookup/address-lookup.component.ts +9 -0
  79. package/assets/ts/components/chart/README.md +37 -0
  80. package/assets/ts/components/chart/chart.component.ts +98 -0
  81. package/assets/ts/components/fileupload/fileupload.component.ts +1 -1
  82. package/assets/ts/components/table/table.component.ts +2 -2
  83. package/assets/ts/modules/applied-filters.ts +61 -7
  84. package/assets/ts/modules/chart.ts +808 -119
  85. package/assets/ts/modules/fileupload.ts +19 -0
  86. package/assets/ts/modules/helpers.ts +23 -1
  87. package/assets/ts/modules/table.ts +86 -12
  88. package/dist/components.es.js +397 -381
  89. package/dist/components.umd.js +60 -78
  90. package/dist/style.css +1 -1
  91. package/package.json +1 -1
  92. package/src/components/AppliedFilters/AppliedFilters.vue +1 -1
  93. package/src/components/Chart/Chart.vue +26 -96
  94. package/src/components/Header/Header.vue +1 -1
  95. package/src/components/Table/Table.vue +2 -2
  96. package/assets/sass/elements/badge.scss +0 -29
@@ -0,0 +1,98 @@
1
+ // @ts-nocheck
2
+ import {setupChart,setEventObservers,setEventHandlers} from "../../modules/chart";
3
+
4
+ class iamChart extends HTMLElement {
5
+
6
+ constructor(){
7
+ super();
8
+ this.attachShadow({ mode: 'open'});
9
+
10
+ const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
11
+ const loadCSS = `@import "${assetLocation}/css/components/charts.css";`;
12
+ const chartID = `chart-${Date.now()+(Math.floor(Math.random() * 100) + 1)}`;
13
+ const chartType = this.hasAttribute('data-type') ? this.getAttribute('data-type') : 'column';
14
+ const availableTypes = this.hasAttribute('data-types') ? this.getAttribute('data-types').split(',') : [];
15
+
16
+ const template = document.createElement('template');
17
+ template.innerHTML = `
18
+ <style>
19
+ @import "${assetLocation}/css/core.min.css";
20
+ ${loadCSS}
21
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
22
+ </style>
23
+ <div class="chart__outer">
24
+ <div class="chart__key"></div>
25
+
26
+ <div class="chart__options">
27
+ <span>Chart Type</span>
28
+ </div>
29
+
30
+ <div class="chart__wrapper">
31
+ <div class="chart__yaxis"></div>
32
+ <div class="chart">
33
+ <div class="chart__lines"></div>
34
+ <div class="chart__guidelines"></div>
35
+ </div>
36
+ </div>
37
+ </div>`;
38
+
39
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
40
+ }
41
+
42
+ connectedCallback() {
43
+
44
+ const element = this;
45
+ const orginalTable = this.querySelector('table');
46
+ const newTable = orginalTable.cloneNode(true);
47
+ const chart = this.shadowRoot.querySelector('.chart');
48
+ const chartOuter = this.shadowRoot.querySelector('.chart__outer');
49
+
50
+
51
+ chart.appendChild(newTable);
52
+
53
+ if(!this.classList.contains('chart--no-animate'))
54
+ chartOuter.classList.add('chart--animate');
55
+
56
+ setupChart(this,chartOuter,newTable);
57
+ setEventObservers(this,chartOuter);
58
+
59
+
60
+ const options = {
61
+ rootMargin: '50px',
62
+ threshold: 0.1
63
+ }
64
+
65
+ let callback = (entries:any) => {
66
+
67
+ entries.forEach((entry:any) => {
68
+
69
+ if(entry.intersectionRatio > 0){
70
+
71
+
72
+ chartOuter.classList.add('animating');
73
+ chartOuter.classList.add('inview');
74
+ intObserver.unobserve(entry.target);
75
+
76
+ let rowCount = entry.target.querySelectorAll('tbody tr').length;
77
+ let animationTime = 2000 + (rowCount*100);
78
+
79
+
80
+ setTimeout(function() {
81
+ chartOuter.classList.remove('animating');
82
+ }, animationTime);
83
+
84
+ }
85
+ });
86
+ };
87
+
88
+ const intObserver = new IntersectionObserver(callback, options);
89
+ intObserver.observe(element);
90
+ }
91
+
92
+ attributeChangedCallback(attrName, oldVal, newVal) {
93
+
94
+
95
+ }
96
+ }
97
+
98
+ export default iamChart;
@@ -32,7 +32,7 @@ class iamFileupload extends HTMLElement {
32
32
  <div class="drop-area"></div>
33
33
  <hr/>
34
34
  <slot></slot>
35
- <div class="files"></div>
35
+ <div class="files"><slot name="files"></slot></div>
36
36
  </div>
37
37
  `;
38
38
  this.shadowRoot.appendChild(template.content.cloneNode(true));
@@ -122,10 +122,10 @@ class iamTable extends HTMLElement {
122
122
  tableModule.createSearchDataList(this.table, this.form);
123
123
 
124
124
  if(!this.form.querySelector('[data-pagination]')){
125
- this.form.innerHTML += `<input name="page" type="hidden" value="${this.getAttribute('data-page')}" data-pagination="true" />`
125
+ this.form.insertAdjacentHTML('beforeend',`<input name="page" type="hidden" value="${this.getAttribute('data-page')}" data-pagination="true" />`);
126
126
  }
127
127
  if(!this.form.querySelector('[data-show]')){
128
- this.form.innerHTML += `<input name="show" type="hidden" value="${this.getAttribute('data-show')}" data-show="true" />`
128
+ this.form.insertAdjacentHTML('beforeend',`<input name="show" type="hidden" value="${this.getAttribute('data-show')}" data-show="true" />`);
129
129
  }
130
130
 
131
131
  // Event listeners
@@ -2,7 +2,7 @@
2
2
  function createAppliedFilters(container,filters) {
3
3
 
4
4
 
5
- function addFilterButton (filters, input){
5
+ function addFilterButton (filters, input,notSet=true){
6
6
 
7
7
  let shouldRemoveFilter = false;
8
8
  let inputName = input.getAttribute('name');
@@ -24,6 +24,11 @@ function createAppliedFilters(container,filters) {
24
24
 
25
25
  filter.setAttribute('type','button')
26
26
  filter.classList.add('filter');
27
+ filter.classList.add('tag');
28
+
29
+ if(notSet)
30
+ filter.classList.add('tag--not-set');
31
+
27
32
  filter.setAttribute('data-name',inputName);
28
33
 
29
34
  filter.innerHTML = filterText.replace('$value', input.value);
@@ -55,6 +60,11 @@ function createAppliedFilters(container,filters) {
55
60
  let childFilter = document.createElement('button');
56
61
  childFilter.setAttribute('type','button')
57
62
  childFilter.classList.add('filter');
63
+ childFilter.classList.add('tag');
64
+
65
+ if(notSet)
66
+ filter.classList.add('tag--not-set');
67
+
58
68
  childFilter.setAttribute('data-name',name);
59
69
  childFilter.innerHTML = filterText.replace('$value', element.value);
60
70
  filters.appendChild(childFilter);
@@ -63,9 +73,11 @@ function createAppliedFilters(container,filters) {
63
73
  allValuesSet = false;
64
74
  });
65
75
 
76
+
66
77
  if(filters.querySelector(`[data-name="${inputName}"]`))
67
78
  filters.querySelector(`[data-name="${inputName}"]`).remove();
68
79
 
80
+
69
81
  if(allValuesSet){
70
82
 
71
83
  let newFilterText = parent.getAttribute('data-filter-text');
@@ -83,6 +95,11 @@ function createAppliedFilters(container,filters) {
83
95
  let parentFilter = document.createElement('button');
84
96
  parentFilter.setAttribute('type','button')
85
97
  parentFilter.classList.add('filter');
98
+ parentFilter.classList.add('tag');
99
+
100
+ if(notSet)
101
+ filter.classList.add('tag--not-set');
102
+
86
103
  parentFilter.setAttribute('data-name',inputName);
87
104
  parentFilter.innerHTML = newFilterText;
88
105
  filters.appendChild(parentFilter);
@@ -94,17 +111,48 @@ function createAppliedFilters(container,filters) {
94
111
  }
95
112
 
96
113
  // check for inputs on load
97
- Array.from(container.querySelectorAll('input[type="checkbox"]:checked')).forEach((input, index) => {
98
- addFilterButton(filters, input)
114
+ Array.from(container.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach((input, index) => {
115
+
116
+ addFilterButton(filters, input, false)
117
+ });
118
+
119
+ let dialog = container.closest('dialog')
120
+
121
+ if(dialog){
122
+
123
+ let observer = new MutationObserver(function(event) {
124
+ if (event[0].attributeName == 'open') {
125
+ Array.from(container.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach((input, index) => {
126
+
127
+ addFilterButton(filters, input, false)
128
+ });
129
+ }
130
+ });
131
+
132
+ observer.observe(dialog, { attributes: true });
133
+ }
134
+
135
+
136
+
137
+
138
+ container.addEventListener('tags-set', function(event){
139
+
140
+ filters.innerHTML = '';
141
+ Array.from(container.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach((input, index) => {
142
+
143
+ addFilterButton(filters, input, false)
144
+ });
99
145
  });
100
146
 
101
147
 
102
148
  // check for change in displayed inputs
103
- Array.from(container.querySelectorAll('input[data-filter-text]')).forEach((input, index) => {
149
+ Array.from(container.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach((input, index) => {
104
150
 
105
151
  input.addEventListener('change', function(event){
106
152
 
107
- addFilterButton(filters, input);
153
+ if(!container.hasAttribute('data-keep-same'))
154
+ addFilterButton(filters, input);
155
+
108
156
  event.stopPropagation(); // Don't allow the below event handler to trigger
109
157
  });
110
158
  });
@@ -114,7 +162,8 @@ function createAppliedFilters(container,filters) {
114
162
 
115
163
  if (event && event.target instanceof HTMLElement && event.target.closest('input[data-filter-text]')){
116
164
  let input = event.target.closest('input[data-filter-text]');
117
- addFilterButton(filters, input);
165
+ if(!container.hasAttribute('data-keep-same'))
166
+ addFilterButton(filters, input);
118
167
  }
119
168
  });
120
169
 
@@ -140,8 +189,13 @@ function createAppliedFilters(container,filters) {
140
189
  let input = inputs[i];
141
190
 
142
191
 
143
- if(input.getAttribute('type') != 'radio' && input.getAttribute('type') != 'checkbox')
192
+ if(input.getAttribute('type') != 'radio' && input.getAttribute('type') != 'checkbox'){
144
193
  input.value = "";
194
+
195
+ var event = new Event('force');
196
+ if(!container.hasAttribute('data-nosubmit'))
197
+ input.closest('form').dispatchEvent(event);
198
+ }
145
199
  else {
146
200
  input.checked = false;
147
201