@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.
- package/assets/css/components/actionbar.css +1 -1
- package/assets/css/components/actionbar.css.map +1 -1
- package/assets/css/components/applied-filters.css +1 -1
- package/assets/css/components/applied-filters.css.map +1 -1
- package/assets/css/components/card.css +1 -1
- package/assets/css/components/card.css.map +1 -1
- package/assets/css/components/card.global.css +1 -1
- package/assets/css/components/card.global.css.map +1 -1
- package/assets/css/components/charts.css +1 -1
- package/assets/css/components/charts.css.map +1 -1
- package/assets/css/components/fileupload.css.map +1 -1
- package/assets/css/components/header.css +1 -1
- package/assets/css/components/header.css.map +1 -1
- package/assets/css/components/nav.css.map +1 -1
- package/assets/css/components/slider.css.map +1 -1
- package/assets/css/components/tabs.css +1 -1
- package/assets/css/components/tabs.css.map +1 -1
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/style.min.css +1 -1
- package/assets/css/style.min.css.map +1 -1
- package/assets/js/components/accordion/accordion.component.min.js +1 -1
- package/assets/js/components/actionbar/actionbar.component.js +12 -3
- package/assets/js/components/actionbar/actionbar.component.min.js +6 -6
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +7 -0
- package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
- package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +6 -6
- package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
- package/assets/js/components/card/card.component.min.js +3 -3
- package/assets/js/components/chart/chart.component.js +71 -0
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
- package/assets/js/components/fileupload/fileupload.component.js +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +5 -5
- package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
- package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
- package/assets/js/components/header/header.component.min.js +2 -2
- package/assets/js/components/nav/nav.component.min.js +1 -1
- package/assets/js/components/notification/notification.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +1 -1
- package/assets/js/components/search/search.component.min.js +1 -1
- package/assets/js/components/search/search.component.min.js.map +1 -1
- package/assets/js/components/table/table.component.js +2 -2
- package/assets/js/components/table/table.component.min.js +6 -6
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +2 -2
- package/assets/js/dynamic.min.js +1 -1
- package/assets/js/dynamic.min.js.map +1 -1
- package/assets/js/modules/applied-filters.js +39 -7
- package/assets/js/modules/chart.js +613 -111
- package/assets/js/modules/fileupload.js +11 -0
- package/assets/js/modules/helpers.js +16 -0
- package/assets/js/modules/table.js +62 -11
- package/assets/js/scripts.bundle.js +31 -31
- package/assets/js/scripts.bundle.js.map +1 -1
- package/assets/js/scripts.bundle.min.js +2 -2
- package/assets/js/scripts.bundle.min.js.map +1 -1
- package/assets/sass/_elements.scss +1 -1
- package/assets/sass/_functions/variables.scss +80 -0
- package/assets/sass/_utilities.scss +1 -0
- package/assets/sass/components/actionbar.scss +16 -0
- package/assets/sass/components/applied-filters.scss +6 -48
- package/assets/sass/components/card.global.scss +4 -0
- package/assets/sass/components/card.scss +1 -1
- package/assets/sass/components/charts.scss +981 -234
- package/assets/sass/components/header.scss +8 -1
- package/assets/sass/components/tabs.scss +10 -1
- package/assets/sass/elements/badge-tag.scss +82 -0
- package/assets/sass/elements/buttons.scss +13 -1
- package/assets/sass/elements/details.scss +94 -5
- package/assets/sass/elements/dialog.scss +2 -0
- package/assets/sass/elements/forms.scss +26 -22
- package/assets/sass/elements/tooltips.scss +4 -3
- package/assets/sass/foundations/root.scss +11 -0
- package/assets/sass/helpers/wider-colours.scss +11 -0
- package/assets/ts/components/actionbar/actionbar.component.ts +14 -3
- package/assets/ts/components/address-lookup/address-lookup.component.ts +9 -0
- package/assets/ts/components/chart/README.md +37 -0
- package/assets/ts/components/chart/chart.component.ts +98 -0
- package/assets/ts/components/fileupload/fileupload.component.ts +1 -1
- package/assets/ts/components/table/table.component.ts +2 -2
- package/assets/ts/modules/applied-filters.ts +61 -7
- package/assets/ts/modules/chart.ts +808 -119
- package/assets/ts/modules/fileupload.ts +19 -0
- package/assets/ts/modules/helpers.ts +23 -1
- package/assets/ts/modules/table.ts +86 -12
- package/dist/components.es.js +397 -381
- package/dist/components.umd.js +60 -78
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/components/AppliedFilters/AppliedFilters.vue +1 -1
- package/src/components/Chart/Chart.vue +26 -96
- package/src/components/Header/Header.vue +1 -1
- package/src/components/Table/Table.vue +2 -2
- 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.
|
|
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.
|
|
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
|
-
|
|
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[
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|