@iamproperty/components 7.2.0 → 7.2.1--beta2
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.component.css +1 -1
- package/assets/css/components/actionbar.component.css.map +1 -1
- package/assets/css/components/actionbar.global.css +1 -1
- package/assets/css/components/actionbar.global.css.map +1 -1
- package/assets/css/components/barchart.component.css +1 -1
- package/assets/css/components/barchart.component.css.map +1 -1
- package/assets/css/components/card.component.css +1 -1
- package/assets/css/components/card.component.css.map +1 -1
- package/assets/css/components/carousel.component.css +1 -1
- package/assets/css/components/carousel.component.css.map +1 -1
- package/assets/css/components/doughnutchart.component.css +1 -1
- package/assets/css/components/doughnutchart.component.css.map +1 -1
- package/assets/css/components/pagination.css +1 -1
- package/assets/css/components/pagination.css.map +1 -1
- package/assets/css/components/table-basic.component.css +1 -0
- package/assets/css/components/table-basic.component.css.map +1 -0
- package/assets/css/components/table-basic.global.css +1 -0
- package/assets/css/components/table-basic.global.css.map +1 -0
- package/assets/css/components/table.component.css +1 -1
- package/assets/css/components/table.component.css.map +1 -1
- package/assets/css/components/table.global.css +1 -1
- package/assets/css/components/table.global.css.map +1 -1
- package/assets/css/components/tabs.config.css +1 -0
- package/assets/css/components/tabs.config.css.map +1 -0
- 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/mobile-core.min.css +1 -1
- package/assets/css/mobile-core.min.css.map +1 -1
- package/assets/css/mobile.min.css +1 -1
- package/assets/css/mobile.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.min.js +4 -4
- package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
- package/assets/js/components/barchart/barchart.component.min.js +2 -2
- package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/card/card.component.min.js +2 -2
- package/assets/js/components/carousel/carousel.component.min.js +2 -2
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
- package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
- package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
- package/assets/js/components/header/header.component.min.js +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
- package/assets/js/components/marketing/marketing.component.min.js +1 -1
- package/assets/js/components/menu/menu.component.min.js +1 -1
- package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
- package/assets/js/components/multiselect/multiselect.component.min.js +1 -1
- 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.js +11 -4
- package/assets/js/components/pagination/pagination.component.min.js +5 -5
- package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
- package/assets/js/components/record-card/record-card.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/slider/slider.component.min.js +1 -1
- package/assets/js/components/table/table.component.js +36 -198
- package/assets/js/components/table/table.component.min.js +13 -23
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.js +46 -0
- package/assets/js/components/table-ajax/table-ajax.component.min.js +22 -0
- package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -0
- package/assets/js/components/table-basic/table-basic.component.js +46 -0
- package/assets/js/components/table-basic/table-basic.component.min.js +22 -0
- package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -0
- package/assets/js/components/table-no-submit/table-no-submit.component.js +77 -0
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js +22 -0
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -0
- package/assets/js/components/table-submit/table-submit.component.js +55 -0
- package/assets/js/components/table-submit/table-submit.component.min.js +22 -0
- package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -0
- package/assets/js/components/tabs/tabs.component.js +2 -0
- package/assets/js/components/tabs/tabs.component.min.js +6 -4
- package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
- package/assets/js/components/video-card/video-card.component.min.js +1 -1
- package/assets/js/modules/helpers.js +4 -0
- package/assets/js/modules/table.js +544 -294
- package/assets/js/modules/tabs.js +43 -13
- package/assets/js/scripts.bundle.js +3 -3
- 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/js/scripts.js +31 -24
- package/assets/js/tests/table.spec.js +0 -31
- package/assets/sass/_components.scss +3 -0
- package/assets/sass/components/actionbar.component.scss +1 -0
- package/assets/sass/components/actionbar.global.scss +0 -70
- package/assets/sass/components/pagination.scss +2 -1
- package/assets/sass/components/table-basic.component.scss +132 -0
- package/assets/sass/components/table-basic.global.scss +365 -0
- package/assets/sass/components/table.component.scss +2 -133
- package/assets/sass/components/table.global.scss +175 -434
- package/assets/sass/components/tabs.config.scss +27 -0
- package/assets/sass/components/tabs.scss +33 -1
- package/assets/sass/elements/buttons--global.scss +2 -1
- package/assets/sass/elements/table.element.scss +9 -7
- package/assets/sass/foundations/root.scss +1 -1
- package/assets/ts/components/pagination/pagination.component.ts +17 -4
- package/assets/ts/components/table/table.component.ts +49 -243
- package/assets/ts/components/table-ajax/table-ajax.component.ts +64 -0
- package/assets/ts/components/table-basic/README.md +40 -0
- package/assets/ts/components/table-basic/table-basic.component.ts +56 -0
- package/assets/ts/components/table-no-submit/table-no-submit.component.ts +134 -0
- package/assets/ts/components/table-submit/table-submit.component.ts +64 -0
- package/assets/ts/components/tabs/tabs.component.ts +2 -0
- package/assets/ts/modules/helpers.ts +6 -0
- package/assets/ts/modules/table.ts +656 -328
- package/assets/ts/modules/tabs.ts +54 -12
- package/assets/ts/scripts.ts +5 -3
- package/assets/ts/tests/table.spec.ts +0 -38
- package/dist/components.es.js +138 -136
- package/dist/components.umd.js +108 -116
- package/package.json +1 -1
- package/src/components/Table/TableAjax.vue +34 -0
- package/src/components/Table/TableBasic.vue +34 -0
- package/src/components/Table/TableNoSubmit.vue +34 -0
- package/src/components/Table/TableSubmit.vue +34 -0
- package/src/components/Table/Table.spec.js +0 -47
|
@@ -3,6 +3,7 @@ import { getSwipeDirection } from './helpers';
|
|
|
3
3
|
export const createTabsLinks = function (tabsElement: Element): void {
|
|
4
4
|
const detailsORLinks = tabsElement.querySelectorAll(':scope > details, :scope > a');
|
|
5
5
|
let tabLinks = tabsElement.querySelector(':scope > .tabs__links');
|
|
6
|
+
let tabDropdown = tabsElement.querySelector(':scope .tabs__dropdown');
|
|
6
7
|
|
|
7
8
|
if (tabsElement.shadowRoot && tabsElement.shadowRoot.querySelector('.tabs__links'))
|
|
8
9
|
tabLinks = tabsElement.shadowRoot.querySelector('.tabs__links');
|
|
@@ -18,10 +19,19 @@ export const createTabsLinks = function (tabsElement: Element): void {
|
|
|
18
19
|
tabsElement.prepend(tabLinksWrapper);
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
if (!tabDropdown) {
|
|
23
|
+
tabDropdown = document.createElement('select');
|
|
24
|
+
|
|
25
|
+
tabDropdown.classList.add('tabs__dropdown');
|
|
26
|
+
|
|
27
|
+
tabsElement.prepend(tabDropdown);
|
|
28
|
+
}
|
|
29
|
+
|
|
21
30
|
// Create the tab buttons from the summary titles
|
|
22
31
|
let tabindex = 0;
|
|
23
32
|
detailsORLinks.forEach((element) => {
|
|
24
33
|
let button = document.createElement('button');
|
|
34
|
+
const dropdownOpt = document.createElement('option');
|
|
25
35
|
|
|
26
36
|
if (element.matches('details')) {
|
|
27
37
|
const summary = element.querySelector(':scope > summary');
|
|
@@ -38,6 +48,11 @@ export const createTabsLinks = function (tabsElement: Element): void {
|
|
|
38
48
|
button.classList.add('link');
|
|
39
49
|
button.setAttribute('data-index', tabindex);
|
|
40
50
|
button.setAttribute('part', 'tab-link');
|
|
51
|
+
|
|
52
|
+
dropdownOpt.innerHTML = `${summary.innerText}`;
|
|
53
|
+
dropdownOpt.value = summary.innerText.replace(/\s+/g, '-').toLowerCase();
|
|
54
|
+
dropdownOpt.setAttribute('data-index', tabindex);
|
|
55
|
+
|
|
41
56
|
element.setAttribute('tabindex', '-1');
|
|
42
57
|
|
|
43
58
|
if (isDisabled) {
|
|
@@ -51,6 +66,8 @@ export const createTabsLinks = function (tabsElement: Element): void {
|
|
|
51
66
|
|
|
52
67
|
button.classList.add('link');
|
|
53
68
|
tabLinks.appendChild(button);
|
|
69
|
+
|
|
70
|
+
tabDropdown.appendChild(dropdownOpt);
|
|
54
71
|
});
|
|
55
72
|
};
|
|
56
73
|
|
|
@@ -59,6 +76,7 @@ export const setTabsEventHandlers = function (tabsElement: Element): void {
|
|
|
59
76
|
const summaries = tabsElement.querySelectorAll(':scope > details > summary');
|
|
60
77
|
let buttonWrapper = tabsElement.querySelector(':scope .tabs__links');
|
|
61
78
|
let buttons = tabsElement.querySelectorAll(':scope .tabs__links > button');
|
|
79
|
+
const tabDropdown = tabsElement.querySelector(':scope .tabs__dropdown');
|
|
62
80
|
|
|
63
81
|
let nextButton = tabsElement.querySelector(':scope .tabs__next');
|
|
64
82
|
|
|
@@ -69,7 +87,7 @@ export const setTabsEventHandlers = function (tabsElement: Element): void {
|
|
|
69
87
|
if (tabsElement.shadowRoot) {
|
|
70
88
|
buttons = tabsElement.shadowRoot.querySelectorAll('.tabs__links > button');
|
|
71
89
|
buttonWrapper = tabsElement.shadowRoot.querySelector('.tabs__links');
|
|
72
|
-
nextButton = tabsElement.shadowRoot.querySelector('
|
|
90
|
+
nextButton = tabsElement.shadowRoot.querySelector('.tabs__next');
|
|
73
91
|
}
|
|
74
92
|
|
|
75
93
|
// Set the on click for the tab buttons, these will open the details box it matches too
|
|
@@ -92,11 +110,14 @@ export const setTabsEventHandlers = function (tabsElement: Element): void {
|
|
|
92
110
|
behavior: 'smooth',
|
|
93
111
|
});
|
|
94
112
|
|
|
95
|
-
|
|
96
|
-
|
|
113
|
+
//Handles showing correct content
|
|
114
|
+
toggleTab(details, button);
|
|
97
115
|
|
|
98
|
-
|
|
99
|
-
|
|
116
|
+
// Data layer Open Event
|
|
117
|
+
window.dataLayer = window.dataLayer || [];
|
|
118
|
+
window.dataLayer.push({
|
|
119
|
+
event: 'openTab',
|
|
120
|
+
tabTitle: button.textContent,
|
|
100
121
|
});
|
|
101
122
|
|
|
102
123
|
if (button.matches(':last-child')) {
|
|
@@ -104,14 +125,9 @@ export const setTabsEventHandlers = function (tabsElement: Element): void {
|
|
|
104
125
|
} else {
|
|
105
126
|
nextButton?.removeAttribute('disabled');
|
|
106
127
|
}
|
|
107
|
-
|
|
108
|
-
// Data layer Open Event
|
|
109
|
-
window.dataLayer = window.dataLayer || [];
|
|
110
|
-
window.dataLayer.push({
|
|
111
|
-
event: 'openTab',
|
|
112
|
-
tabTitle: button.textContent,
|
|
113
|
-
});
|
|
114
128
|
});
|
|
129
|
+
|
|
130
|
+
dropdownTabSelector(details, tabDropdown);
|
|
115
131
|
});
|
|
116
132
|
|
|
117
133
|
buttonWrapper.addEventListener('scrollend', () => {
|
|
@@ -151,6 +167,7 @@ export const setTabsEventHandlers = function (tabsElement: Element): void {
|
|
|
151
167
|
|
|
152
168
|
const currentTab = buttonWrapper.querySelector('[aria-pressed="true"]');
|
|
153
169
|
const nextTab = currentTab.nextSibling;
|
|
170
|
+
|
|
154
171
|
if (nextTab) nextTab.click();
|
|
155
172
|
});
|
|
156
173
|
|
|
@@ -192,6 +209,31 @@ export const setTabsEventHandlers = function (tabsElement: Element): void {
|
|
|
192
209
|
}
|
|
193
210
|
};
|
|
194
211
|
|
|
212
|
+
export const toggleTab = function (details: Array, button: Element): boolean | void {
|
|
213
|
+
details.forEach((detail, detailsIndex) => {
|
|
214
|
+
const detailsOpen = button.getAttribute('data-index') == detailsIndex ? true : false;
|
|
215
|
+
|
|
216
|
+
if (detailsOpen) detail.setAttribute('open', detailsOpen);
|
|
217
|
+
else detail.removeAttribute('open');
|
|
218
|
+
});
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
export const dropdownTabSelector = function (details: Array, dropdown: Element): boolean | void {
|
|
222
|
+
dropdown.addEventListener('change', (e) => {
|
|
223
|
+
e.preventDefault();
|
|
224
|
+
const selected = dropdown.options[dropdown.selectedIndex];
|
|
225
|
+
|
|
226
|
+
toggleTab(details, selected);
|
|
227
|
+
|
|
228
|
+
// Data layer Open Event
|
|
229
|
+
window.dataLayer = window.dataLayer || [];
|
|
230
|
+
window.dataLayer.push({
|
|
231
|
+
event: 'openTab',
|
|
232
|
+
tabTitle: selected.innerText,
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
};
|
|
236
|
+
|
|
195
237
|
export const openFirstTab = function (tabsElement: Element): boolean | void {
|
|
196
238
|
if (!tabsElement.querySelector(':scope > details')) return false;
|
|
197
239
|
|
package/assets/ts/scripts.ts
CHANGED
|
@@ -9,6 +9,8 @@ const components = [
|
|
|
9
9
|
'accordion',
|
|
10
10
|
'header',
|
|
11
11
|
'table',
|
|
12
|
+
'table-basic',
|
|
13
|
+
'table-no-submit',
|
|
12
14
|
'tabs',
|
|
13
15
|
'card',
|
|
14
16
|
'filter-card',
|
|
@@ -47,7 +49,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
|
47
49
|
|
|
48
50
|
extendDialogs(document.body);
|
|
49
51
|
extendInputs(document.body);
|
|
50
|
-
|
|
52
|
+
/*
|
|
51
53
|
const prefix = 'iam';
|
|
52
54
|
const options = {
|
|
53
55
|
rootMargin: '50px',
|
|
@@ -62,9 +64,8 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
|
62
64
|
const callback = (entries: any): void => {
|
|
63
65
|
entries.forEach((entry: any) => {
|
|
64
66
|
if (entry.intersectionRatio > 0) {
|
|
65
|
-
console.log(component);
|
|
66
67
|
|
|
67
|
-
import(
|
|
68
|
+
import(`../js/components/${component}/${component}${componentExt}`)
|
|
68
69
|
.then((module) => {
|
|
69
70
|
if (!window.customElements.get(`${prefix}-${component}`))
|
|
70
71
|
window.customElements.define(`${prefix}-${component}`, module.default);
|
|
@@ -81,4 +82,5 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
|
81
82
|
const intObserver = new IntersectionObserver(callback, options);
|
|
82
83
|
intObserver.observe(document.getElementsByTagName(`${prefix}-${component}`)[0]);
|
|
83
84
|
});
|
|
85
|
+
*/
|
|
84
86
|
});
|
|
@@ -66,30 +66,6 @@ describe('addDataAttributes', () => {
|
|
|
66
66
|
});
|
|
67
67
|
});
|
|
68
68
|
|
|
69
|
-
describe('createSearchDataList', () => {
|
|
70
|
-
const table = document.createElement('table');
|
|
71
|
-
table.innerHTML = basicTable;
|
|
72
|
-
const form = document.createElement('form');
|
|
73
|
-
form.innerHTML += `<div><input name="search" id="search" type="text" class="form-control" data-search="Heading 1"></div>`;
|
|
74
|
-
|
|
75
|
-
tableModule.addDataAttributes(table);
|
|
76
|
-
tableModule.createSearchDataList(table, form);
|
|
77
|
-
|
|
78
|
-
test('should create a datalist populated by the defined columns in the data-search ', () => {
|
|
79
|
-
expect(form.querySelectorAll('datalist').length).toEqual(1);
|
|
80
|
-
expect(form.querySelectorAll('datalist option').length).toEqual(2);
|
|
81
|
-
expect(form.querySelector('datalist option:nth-child(1)').value).toEqual('Cell 1');
|
|
82
|
-
expect(form.querySelector('datalist option:nth-child(2)').value).toEqual('Different Cell 1');
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
test('should set the autocomplete attribute to off', () => {
|
|
86
|
-
expect(form.querySelectorAll('datalist').length).toEqual(1);
|
|
87
|
-
expect(form.querySelectorAll('datalist option').length).toEqual(2);
|
|
88
|
-
expect(form.querySelector('datalist option:nth-child(1)').value).toEqual('Cell 1');
|
|
89
|
-
expect(form.querySelector('input').getAttribute('autocomplete')).toEqual('off');
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
|
|
93
69
|
describe('sortTable', () => {
|
|
94
70
|
const table = document.createElement('table');
|
|
95
71
|
table.innerHTML = basicTable;
|
|
@@ -107,20 +83,6 @@ describe('sortTable', () => {
|
|
|
107
83
|
});
|
|
108
84
|
});
|
|
109
85
|
|
|
110
|
-
describe('filterTable', () => {
|
|
111
|
-
const table = document.createElement('table');
|
|
112
|
-
table.innerHTML = basicTable;
|
|
113
|
-
const form = document.createElement('form');
|
|
114
|
-
form.innerHTML += `<div><input type="text" name="filter" id="filter" data-filter="Heading 2" value="High" /></div>`;
|
|
115
|
-
|
|
116
|
-
tableModule.addDataAttributes(table);
|
|
117
|
-
tableModule.filterTable(table, form, document.createElement('div'));
|
|
118
|
-
|
|
119
|
-
test('should filter the table to only show high values', () => {
|
|
120
|
-
expect(table.querySelectorAll('tbody tr.filtered--matched').length).toEqual(1);
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
|
|
124
86
|
describe('formatCell', () => {
|
|
125
87
|
test('should format the text correctly', () => {
|
|
126
88
|
expect(tableModule.formatCell('date', '2023-05-15 12:10:45.000000')).toEqual('15 May 23');
|