@iamproperty/components 5.7.1-beta6 → 6.1.0--beta
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/bootstrap/README.md +8 -7
- package/assets/bootstrap/js/index.esm.js +19 -0
- package/assets/bootstrap/js/index.umd.js +34 -0
- package/assets/bootstrap/js/src/alert.js +1 -1
- package/assets/bootstrap/js/src/base-component.js +2 -2
- package/assets/bootstrap/js/src/button.js +1 -1
- package/assets/bootstrap/js/src/carousel.js +1 -1
- package/assets/bootstrap/js/src/collapse.js +1 -1
- package/assets/bootstrap/js/src/dom/data.js +1 -1
- package/assets/bootstrap/js/src/dom/event-handler.js +1 -1
- package/assets/bootstrap/js/src/dom/manipulator.js +1 -1
- package/assets/bootstrap/js/src/dom/selector-engine.js +1 -1
- package/assets/bootstrap/js/src/dropdown.js +3 -12
- package/assets/bootstrap/js/src/modal.js +13 -17
- package/assets/bootstrap/js/src/offcanvas.js +1 -1
- package/assets/bootstrap/js/src/popover.js +1 -1
- package/assets/bootstrap/js/src/scrollspy.js +10 -14
- package/assets/bootstrap/js/src/tab.js +4 -2
- package/assets/bootstrap/js/src/toast.js +4 -9
- package/assets/bootstrap/js/src/tooltip.js +50 -32
- package/assets/bootstrap/js/src/util/backdrop.js +1 -1
- package/assets/bootstrap/js/src/util/component-functions.js +1 -1
- package/assets/bootstrap/js/src/util/config.js +1 -1
- package/assets/bootstrap/js/src/util/focustrap.js +1 -1
- package/assets/bootstrap/js/src/util/index.js +1 -1
- package/assets/bootstrap/js/src/util/sanitizer.js +1 -1
- package/assets/bootstrap/js/src/util/scrollbar.js +1 -1
- package/assets/bootstrap/js/src/util/swipe.js +1 -1
- package/assets/bootstrap/js/src/util/template-factory.js +1 -1
- package/assets/bootstrap/package.json +27 -28
- package/assets/bootstrap/scss/_accordion.scss +4 -7
- package/assets/bootstrap/scss/_button-group.scss +1 -1
- package/assets/bootstrap/scss/_buttons.scss +7 -28
- package/assets/bootstrap/scss/_carousel.scss +3 -0
- package/assets/bootstrap/scss/_dropdown.scss +1 -2
- package/assets/bootstrap/scss/_functions.scss +2 -2
- package/assets/bootstrap/scss/_list-group.scss +5 -6
- package/assets/bootstrap/scss/_modal.scss +1 -1
- package/assets/bootstrap/scss/_nav.scss +2 -2
- package/assets/bootstrap/scss/_navbar.scss +0 -2
- package/assets/bootstrap/scss/_offcanvas.scss +4 -5
- package/assets/bootstrap/scss/_pagination.scss +1 -1
- package/assets/bootstrap/scss/_popover.scss +5 -5
- package/assets/bootstrap/scss/_toasts.scss +2 -5
- package/assets/bootstrap/scss/_variables-dark.scss +87 -0
- package/assets/bootstrap/scss/_variables.scss +17 -18
- package/assets/bootstrap/scss/bootstrap-utilities.scss +0 -3
- package/assets/bootstrap/scss/forms/_floating-labels.scss +0 -1
- package/assets/bootstrap/scss/forms/_input-group.scss +4 -7
- package/assets/bootstrap/scss/helpers/_focus-ring.scss +5 -0
- package/assets/bootstrap/scss/helpers/_icon-link.scss +25 -0
- package/assets/bootstrap/scss/mixins/_banner.scss +2 -2
- package/assets/bootstrap/scss/mixins/_color-mode.scss +21 -0
- package/assets/bootstrap/scss/mixins/_forms.scss +10 -10
- package/assets/bootstrap/scss/mixins/_table-variants.scss +2 -2
- package/assets/bootstrap/scss/mixins/_utilities.scss +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 -0
- package/assets/css/components/card.component.css.map +1 -0
- package/assets/css/components/card.module.css +1 -0
- package/assets/css/components/card.module.css.map +1 -0
- package/assets/css/components/charts.config.css +1 -1
- package/assets/css/components/charts.config.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/charts.module.css +1 -1
- package/assets/css/components/charts.module.css.map +1 -1
- package/assets/css/components/filter-card.component.css +1 -0
- package/assets/css/components/filter-card.component.css.map +1 -0
- package/assets/css/components/multiselect.preload.css +1 -1
- package/assets/css/components/multiselect.preload.css.map +1 -1
- package/assets/css/components/record-card.component.css +1 -0
- package/assets/css/components/record-card.component.css.map +1 -0
- package/assets/css/components/timeline.css +1 -1
- package/assets/css/components/timeline.css.map +1 -1
- package/assets/css/components/video-card.component.css +1 -0
- package/assets/css/components/video-card.component.css.map +1 -0
- 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/_global.js +32 -0
- package/assets/js/components/accordion/accordion.component.min.js +1 -1
- package/assets/js/components/actionbar/actionbar.component.min.js +5 -5
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
- 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 +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
- package/assets/js/components/barchart/barchart.component.js +8 -7
- package/assets/js/components/barchart/barchart.component.min.js +6 -4
- package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
- package/assets/js/components/card/card.component.js +92 -154
- package/assets/js/components/card/card.component.min.js +26 -31
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.min.js +1 -1
- package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
- package/assets/js/components/filter-card/filter-card.component.js +71 -0
- package/assets/js/components/filter-card/filter-card.component.min.js +27 -0
- package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -0
- 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/header/header.component.min.js.map +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
- package/assets/js/components/marketing/marketing.component.min.js +1 -1
- package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
- package/assets/js/components/multiselect/multiselect.component.min.js +1 -1
- package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.min.js +1 -1
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.min.js +1 -1
- package/assets/js/components/notification/notification.component.min.js.map +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
- package/assets/js/components/record-card/record-card.component.js +69 -0
- package/assets/js/components/record-card/record-card.component.min.js +27 -0
- package/assets/js/components/record-card/record-card.component.min.js.map +1 -0
- package/assets/js/components/search/search.component.min.js +1 -1
- package/assets/js/components/slider/slider.component.min.js +1 -1
- package/assets/js/components/slider/slider.component.min.js.map +1 -1
- package/assets/js/components/table/table.component.min.js +2 -2
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +1 -1
- package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
- package/assets/js/components/video-card/video-card.component.js +176 -0
- package/assets/js/components/video-card/video-card.component.min.js +30 -0
- package/assets/js/components/video-card/video-card.component.min.js.map +1 -0
- package/assets/js/components.bundle.js +5 -0
- package/assets/js/components.bundle.js.map +1 -0
- package/assets/js/components.js +30 -0
- package/assets/js/modules/card.module.js +33 -0
- package/assets/js/modules/chart.js +2 -2
- package/assets/js/modules/chart.module.js +25 -60
- package/assets/js/modules/dialogs.js +0 -6
- package/assets/js/modules/table.js +1 -1
- package/assets/js/scripts.bundle.js +3 -194
- 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 +17 -0
- package/assets/js/tests/chart.spec.js +57 -0
- package/assets/js/tests/filterlist.spec.js +1 -1
- package/assets/sass/_components.scss +81 -1
- package/assets/sass/_corefiles.scss +4 -10
- package/assets/sass/_elements.scss +2 -0
- package/assets/sass/components/card.component.scss +229 -0
- package/assets/sass/components/card.module.scss +154 -0
- package/assets/sass/components/charts.config.scss +3 -0
- package/assets/sass/components/charts.module.scss +18 -7
- package/assets/sass/components/filter-card.component.scss +106 -0
- package/assets/sass/components/multiselect.preload.scss +7 -0
- package/assets/sass/components/record-card.component.scss +204 -0
- package/assets/sass/components/video-card.component.scss +80 -0
- package/assets/sass/components.reset.scss +5 -43
- package/assets/sass/elements/badge-tag.scss +5 -1
- package/assets/sass/elements/buttons.scss +3 -0
- package/assets/sass/elements/dialog.scss +2 -744
- package/assets/sass/elements/forms.scss +5 -0
- package/assets/sass/elements/media.scss +0 -38
- package/assets/sass/elements/modal.scss +553 -0
- package/assets/sass/elements/popover.scss +207 -0
- package/assets/sass/foundations/reboot.scss +2 -2
- package/assets/sass/foundations/root.scss +0 -1
- package/assets/ts/components/_global.ts +40 -0
- package/assets/ts/components/barchart/barchart.component.ts +9 -17
- package/assets/ts/components/card/card.component.ts +94 -192
- package/assets/ts/components/filter-card/filter-card.component.ts +81 -0
- package/assets/ts/components/record-card/record-card.component.ts +82 -0
- package/assets/ts/components/video-card/video-card.component.ts +227 -0
- package/assets/ts/components.ts +38 -0
- package/assets/ts/modules/card.module.ts +43 -0
- package/assets/ts/modules/chart.module.ts +25 -74
- package/assets/ts/modules/dialogs.ts +0 -8
- package/assets/ts/modules/table.ts +1 -1
- package/assets/ts/scripts.ts +22 -0
- package/assets/ts/tests/chart.spec.ts +77 -0
- package/assets/ts/tests/filterlist.spec.ts +1 -1
- package/dist/components.es.js +201 -201
- package/dist/components.umd.js +76 -81
- package/package.json +8 -7
- package/src/components/BarChart/BarChart.vue +2 -2
- package/src/components/FilterCard/FilterCard.vue +25 -0
- package/src/components/RecordCard/RecordCard.vue +25 -0
- package/src/components/VideoCard/VideoCard.vue +25 -0
- package/assets/css/components/card.css +0 -1
- package/assets/css/components/card.css.map +0 -1
- package/assets/css/components/card.global.css +0 -1
- package/assets/css/components/card.global.css.map +0 -1
- package/assets/css/components/card.preload.css +0 -1
- package/assets/css/components/card.preload.css.map +0 -1
- package/assets/js/bundle.js +0 -74
- package/assets/js/dynamic.js +0 -80
- package/assets/js/dynamic.min.js +0 -18
- package/assets/js/dynamic.min.js.map +0 -1
- package/assets/js/flat-components.js +0 -84
- package/assets/js/modules/youtubevideo.js +0 -106
- package/assets/sass/components/card.global.scss +0 -102
- package/assets/sass/components/card.preload.scss +0 -8
- package/assets/sass/components/card.scss +0 -606
- package/assets/ts/bundle.ts +0 -94
- package/assets/ts/components/barchart/README.md +0 -37
- package/assets/ts/components/card/README.md +0 -39
- package/assets/ts/dynamic.ts +0 -107
- package/assets/ts/flat-components.ts +0 -106
- package/assets/ts/modules/youtubevideo.ts +0 -141
- package/src/foundations/YoutubeVideo/README.md +0 -11
- package/src/foundations/YoutubeVideo/YoutubeVideo.vue +0 -24
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
+
import {trackComponent, trackComponentRegistered} from "../_global";
|
|
3
|
+
import {cardHTML,setupCard} from "../../modules/card.module";
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
window.dataLayer = window.dataLayer || [];
|
|
5
|
-
window.dataLayer.push({
|
|
6
|
-
"event": "customElementRegistered",
|
|
7
|
-
"element": "Card"
|
|
8
|
-
});
|
|
9
|
-
|
|
5
|
+
trackComponentRegistered("iam-card");
|
|
10
6
|
|
|
11
7
|
class iamCard extends HTMLElement {
|
|
12
8
|
|
|
@@ -14,218 +10,136 @@ class iamCard extends HTMLElement {
|
|
|
14
10
|
super();
|
|
15
11
|
this.attachShadow({ mode: 'open'});
|
|
16
12
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
let classList = this.classList.toString();
|
|
13
|
+
const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
|
|
14
|
+
const loadCSS = `@import "${assetLocation}/css/components/card.component.css";`;
|
|
21
15
|
|
|
22
|
-
const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets'
|
|
23
|
-
const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
|
|
24
|
-
const loadCSS = `@import "${assetLocation}/css/components/card.css";`;
|
|
25
|
-
const loadExtraCSS = `@import "${assetLocation}/css/components/card.global.css";`;
|
|
26
|
-
|
|
27
16
|
const template = document.createElement('template');
|
|
28
17
|
template.innerHTML = `
|
|
29
18
|
<style>
|
|
30
|
-
@import "${coreCSS}";
|
|
31
|
-
${loadCSS}
|
|
32
19
|
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
20
|
+
|
|
21
|
+
${loadCSS}
|
|
33
22
|
</style>
|
|
34
|
-
|
|
35
|
-
<
|
|
36
|
-
${this.createCardConent()}
|
|
37
|
-
</div>
|
|
23
|
+
${cardHTML}
|
|
24
|
+
<slot name="primary-action"></slot>
|
|
38
25
|
`;
|
|
39
|
-
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
40
|
-
|
|
41
|
-
// insert extra CSS
|
|
42
|
-
if(!document.getElementById('cardGlobal'))
|
|
43
|
-
document.head.insertAdjacentHTML('beforeend',`<style id="cardGlobal">${loadExtraCSS}</style>`);
|
|
44
|
-
}
|
|
45
26
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
// TODO split this out a bit
|
|
49
|
-
return `${this.hasAttribute('data-image') || this.hasAttribute('data-record') ? `<div class="card__head">${this.hasAttribute('data-image') ? `<img src="${this.getAttribute('data-image')}" alt="" loading="lazy" />` : ``} <div class="card__badges"><slot name="badges"></slot></div></div>` : ''}
|
|
50
|
-
<div class="card__body" part="body">
|
|
51
|
-
${!this.hasAttribute('data-image') && this.querySelector('[slot="badges"]') && this.querySelector('[slot="checkbox"]') ? `<div class="card__badges card__badges--inline"><slot name="badges"></slot></div>` : ''}
|
|
52
|
-
${!this.hasAttribute('data-image') && !this.hasAttribute('data-record') && this.querySelector('[slot="badges"]') ? `<div class="card__badges"><slot name="badges"></slot></div>` : ''}
|
|
53
|
-
${this.hasAttribute('data-illustration') ? `<div class="card__illustration"><img src="${this.getAttribute('data-illustration')}" alt="" loading="lazy" /></div>` : ''}
|
|
54
|
-
<slot></slot>
|
|
55
|
-
${this.hasAttribute('data-total') ? `<div class="card__total">${this.getAttribute('data-total')}</div>` : ''}
|
|
56
|
-
</div>
|
|
57
|
-
${this.hasAttribute('data-add-link') ? `<button class="btn btn-compact btn-secondary fa-plus">Add property</button>` : ''}
|
|
58
|
-
<slot name="checkbox"></slot>
|
|
59
|
-
<slot name="primary-action"></slot>
|
|
60
|
-
<div class="dialog__wrapper d-none">
|
|
61
|
-
<button class="btn btn-secondary btn-compact fa-ellipsis-vertical" popovertarget="actions" title="${this.hasAttribute('data-menu-title') ? this.getAttribute('data-menu-title') : 'Further actions'}">Lorum ipsum</button>
|
|
62
|
-
<dialog class="dialog--fix dialog--list" id="actions" popover>
|
|
63
|
-
<slot name="actions"></slot>
|
|
64
|
-
</dialog>
|
|
65
|
-
</div>
|
|
66
|
-
<div class="card__footer" part="footer">
|
|
67
|
-
<slot name="footer"></slot>
|
|
68
|
-
<slot name="btns"></slot>
|
|
69
|
-
${this.hasAttribute('data-cta') ? `<span class="link d-inline-block pt-0 mb-0">${this.getAttribute('data-cta')}</span>` : ''}
|
|
70
|
-
</div>`;
|
|
27
|
+
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
71
28
|
}
|
|
72
29
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// Mimic clicking the parent node so the focus and target events can be on the card
|
|
77
|
-
const component = this;
|
|
78
|
-
const parentNode = component.parentNode.closest('a, button, label, router-link');
|
|
79
|
-
const card = this.shadowRoot.querySelector('.card')
|
|
80
|
-
const btnCompact = this.shadowRoot.querySelector('.btn-compact');
|
|
81
|
-
const recordType = this.hasAttribute('data-record') ? this.getAttribute('data-record') : '';
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
// Add the actions slot to the buttons and links to move them into a dialog warpper
|
|
85
|
-
const actionsWrapper = this.shadowRoot.querySelector('.dialog__wrapper');
|
|
86
|
-
let buttons = component.querySelectorAll('button[slot="actions"],a[slot="actions"]');
|
|
87
|
-
if(buttons.length){
|
|
88
|
-
|
|
89
|
-
const actionsWrapper = this.shadowRoot.querySelector('.dialog__wrapper');
|
|
90
|
-
const actionsDialog = this.shadowRoot.querySelector('.dialog__wrapper dialog');
|
|
91
|
-
const actionsBtn = actionsWrapper.querySelector('button');
|
|
30
|
+
|
|
31
|
+
async connectedCallback() {
|
|
92
32
|
|
|
93
|
-
|
|
33
|
+
const cardComponent = this;
|
|
34
|
+
const cardHead = cardComponent.shadowRoot.querySelector('.card__head');
|
|
35
|
+
const cardBody = cardComponent.shadowRoot.querySelector('.card__body');
|
|
36
|
+
const cardMenu = cardComponent.shadowRoot.querySelector('.dialog__wrapper');
|
|
37
|
+
const btn = cardComponent.shadowRoot.querySelector('.dialog__wrapper button');
|
|
94
38
|
|
|
95
|
-
|
|
39
|
+
setupCard(cardComponent);
|
|
96
40
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
})
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
actionsWrapper.remove();
|
|
41
|
+
// Add Illustration HTML
|
|
42
|
+
if(cardComponent.hasAttribute('data-illustration')){
|
|
43
|
+
cardBody.insertAdjacentHTML('afterbegin',`<div class="card__illustration"><img src="${this.getAttribute('data-illustration')}" alt="" loading="lazy" /></div>`)
|
|
103
44
|
}
|
|
104
45
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
*/
|
|
109
|
-
if (!parentNode) {
|
|
110
|
-
return false;
|
|
46
|
+
// Add class that shows the right arrow icon
|
|
47
|
+
if(!cardComponent.querySelector('[slot="btns"]') && !cardComponent.querySelector('[slot="secondary"]')){
|
|
48
|
+
cardComponent.classList.add('show-icon');
|
|
111
49
|
}
|
|
112
50
|
|
|
113
|
-
|
|
114
|
-
parentNode.setAttribute('tabindex','-1');
|
|
115
|
-
|
|
51
|
+
// Secondary buttons and actions
|
|
116
52
|
|
|
117
|
-
|
|
53
|
+
// Add the dialog wrapper HTML
|
|
54
|
+
if(cardComponent.querySelector('[slot="btns"]')){
|
|
118
55
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
56
|
+
cardComponent.shadowRoot.innerHTML += `<div class="dialog__wrapper">
|
|
57
|
+
<button class="btn btn-secondary btn-compact fa-ellipsis-vertical" popovertarget="actions" title="Further actions" type="button">Open further actions</button>
|
|
58
|
+
<div class="dialog--fix dialog--list" id="actions" popover>
|
|
59
|
+
<slot name="btns"></slot>
|
|
60
|
+
</div>
|
|
61
|
+
</div>`;
|
|
125
62
|
}
|
|
63
|
+
|
|
64
|
+
// Make sure slotted buttons and links have correct button classes
|
|
65
|
+
Array.from(cardComponent.querySelectorAll('[slot="btns"]')).forEach((button,index)=>{
|
|
126
66
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
let clickEvent = new Event('click');
|
|
131
|
-
card.dispatchEvent(clickEvent);
|
|
67
|
+
button.classList.add('btn');
|
|
68
|
+
button.classList.add('btn-action');
|
|
132
69
|
});
|
|
133
70
|
|
|
134
|
-
|
|
71
|
+
// Hide the default hover and focus states when interacting with the checkbox, dialog wrapper or secondary button
|
|
72
|
+
if(cardComponent.querySelector('[slot="checkbox"],[slot="secondary"]')){
|
|
135
73
|
|
|
136
|
-
|
|
74
|
+
const element = cardComponent.querySelector('[slot="checkbox"],[slot="secondary"]');
|
|
137
75
|
|
|
138
|
-
|
|
139
|
-
|
|
76
|
+
element.addEventListener('mouseenter', (event) => {
|
|
77
|
+
cardComponent.classList.add('prevent-hover');
|
|
78
|
+
});
|
|
140
79
|
|
|
141
|
-
|
|
80
|
+
element.addEventListener('mouseleave', (event) => {
|
|
81
|
+
cardComponent.classList.remove('prevent-hover');
|
|
82
|
+
});
|
|
83
|
+
}
|
|
142
84
|
|
|
143
|
-
|
|
144
|
-
const inputID = input.getAttribute('id');
|
|
85
|
+
if(cardComponent.shadowRoot.querySelector('.dialog__wrapper')){
|
|
145
86
|
|
|
146
|
-
|
|
147
|
-
const inputs = Array.from(document.querySelectorAll(`[name="${inputName}"][type="radio"]:not([id="${inputID}"])`));
|
|
148
|
-
inputs.forEach((input, index) => {
|
|
149
|
-
|
|
150
|
-
const otherCard = document.querySelector(`[for="${input.getAttribute('id')}"] iam-card`);
|
|
151
|
-
|
|
152
|
-
otherCard.dispatchEvent(new Event('inactive'));
|
|
153
|
-
});
|
|
87
|
+
const element = cardComponent.shadowRoot.querySelector('.dialog__wrapper');
|
|
154
88
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
if(isChecked)
|
|
159
|
-
card.classList.add('checked');
|
|
160
|
-
else
|
|
161
|
-
card.classList.remove('checked');
|
|
89
|
+
element.addEventListener('mouseenter', (event) => {
|
|
90
|
+
cardComponent.classList.add('prevent-hover');
|
|
91
|
+
});
|
|
162
92
|
|
|
163
|
-
|
|
164
|
-
|
|
93
|
+
element.addEventListener('mouseleave', (event) => {
|
|
94
|
+
cardComponent.classList.remove('prevent-hover');
|
|
95
|
+
});
|
|
96
|
+
}
|
|
165
97
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
98
|
+
// Dispatch events of selecting checkboxes
|
|
99
|
+
const checkbox = cardComponent.querySelector('input[type="checkbox"]');
|
|
100
|
+
if(checkbox){
|
|
101
|
+
checkbox.addEventListener('change', (event) => {
|
|
169
102
|
|
|
170
|
-
card.addEventListener('keydown', (event) => {
|
|
171
103
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
104
|
+
if(checkbox.checked){
|
|
105
|
+
const customEvent = new CustomEvent("select-card", { detail: { 'Card value': checkbox.value, 'input name': checkbox.getAttribute('name') } });
|
|
106
|
+
cardComponent.dispatchEvent(customEvent);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
|
|
110
|
+
const customEvent = new CustomEvent("unselect-card", { detail: { 'Card value': checkbox.value, 'input name': checkbox.getAttribute('name') } });
|
|
111
|
+
cardComponent.dispatchEvent(customEvent);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
177
115
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
const inputName = input.getAttribute('name');
|
|
184
|
-
const inputID = input.getAttribute('id');
|
|
185
|
-
|
|
186
|
-
const inputs = Array.from(document.querySelectorAll(`[name="${inputName}"]:not([id="${inputID}"])`));
|
|
187
|
-
|
|
188
|
-
inputs.forEach((input, index) => {
|
|
189
|
-
|
|
190
|
-
const otherCard = document.querySelector(`[for="${input.getAttribute('id')}"] iam-card`);
|
|
191
|
-
|
|
192
|
-
otherCard.dispatchEvent(new Event('inactive'));
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
parentNode.click();
|
|
196
|
-
let isChecked = input.checked
|
|
197
|
-
|
|
198
|
-
if(isChecked)
|
|
199
|
-
card.classList.add('checked');
|
|
200
|
-
else
|
|
201
|
-
card.classList.remove('checked');
|
|
202
|
-
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
parentNode.click();
|
|
206
|
-
}
|
|
207
|
-
break;
|
|
208
|
-
default:
|
|
209
|
-
break;
|
|
210
|
-
}
|
|
211
|
-
});
|
|
116
|
+
// Dispatch events of click onto secondary buttons
|
|
117
|
+
const secondaryBtn = cardComponent.querySelector('[slot="secondary"]');
|
|
118
|
+
if(secondaryBtn){
|
|
119
|
+
secondaryBtn.addEventListener('click', (event) => {
|
|
212
120
|
|
|
213
|
-
|
|
121
|
+
const customEvent = new CustomEvent("secondary-button-clicked", { detail: { 'Title': secondaryBtn.getAttribute('title') } });
|
|
122
|
+
cardComponent.dispatchEvent(customEvent);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
214
125
|
|
|
215
|
-
|
|
126
|
+
// Dispatch events of click onto action buttons
|
|
127
|
+
const actionBtns = cardComponent.querySelectorAll('[slot="btns"]');
|
|
128
|
+
Array.from(actionBtns).forEach((button,index)=>{
|
|
216
129
|
|
|
217
|
-
|
|
130
|
+
button.addEventListener('click', (event) => {
|
|
218
131
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
window.location = addLocation;
|
|
132
|
+
const customEvent = new CustomEvent("action-button-clicked", { detail: { 'Title': button.getAttribute('title') } });
|
|
133
|
+
cardComponent.dispatchEvent(customEvent);
|
|
222
134
|
});
|
|
223
|
-
}
|
|
135
|
+
});
|
|
224
136
|
|
|
137
|
+
|
|
138
|
+
trackComponent(cardComponent,"iam-card",['select-card','unselect-card','secondary-button-clicked','action-button-clicked']);
|
|
225
139
|
}
|
|
226
140
|
|
|
227
141
|
static get observedAttributes() {
|
|
228
|
-
return ["data-
|
|
142
|
+
return ["data-image"];
|
|
229
143
|
}
|
|
230
144
|
|
|
231
145
|
attributeChangedCallback(attrName, oldVal, newVal) {
|
|
@@ -235,26 +149,14 @@ class iamCard extends HTMLElement {
|
|
|
235
149
|
this.shadowRoot.querySelector('.card__total').innerHTML = newVal;
|
|
236
150
|
break;
|
|
237
151
|
}
|
|
238
|
-
case "class": {
|
|
239
|
-
|
|
240
|
-
if(oldVal != newVal){
|
|
241
|
-
let classList = this.classList.toString();
|
|
242
|
-
|
|
243
|
-
if(this.querySelector('*:not(.badge):not(small):not(.btn):not(button) > [class*="fa-"]:not(.btn)'))
|
|
244
|
-
classList += ' card--has-icon';
|
|
245
|
-
|
|
246
|
-
this.shadowRoot.querySelector('.card').setAttribute('class',`card ${classList}`);
|
|
247
|
-
|
|
248
|
-
this.shadowRoot.querySelector('.card').innerHTML = this.createCardConent();
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
break;
|
|
252
|
-
}
|
|
253
152
|
case "data-image": {
|
|
254
153
|
|
|
255
154
|
if(oldVal != newVal){
|
|
256
155
|
|
|
257
|
-
this.shadowRoot.querySelector('.
|
|
156
|
+
const cardHeadImg = this.shadowRoot.querySelector('.card__head img');
|
|
157
|
+
|
|
158
|
+
if(cardHeadImg)
|
|
159
|
+
cardHeadImg.setAttribute('src',newVal);
|
|
258
160
|
}
|
|
259
161
|
break;
|
|
260
162
|
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import {trackComponent, trackComponentRegistered} from "../_global";
|
|
3
|
+
import {cardHTML,setupCard} from "../../modules/card.module";
|
|
4
|
+
|
|
5
|
+
trackComponentRegistered("iam-filter-card");
|
|
6
|
+
|
|
7
|
+
class iamFilerCard extends HTMLElement {
|
|
8
|
+
|
|
9
|
+
constructor(){
|
|
10
|
+
super();
|
|
11
|
+
this.attachShadow({ mode: 'open'});
|
|
12
|
+
|
|
13
|
+
const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
|
|
14
|
+
const loadCSS = `@import "${assetLocation}/css/components/filter-card.component.css";`;
|
|
15
|
+
|
|
16
|
+
const template = document.createElement('template');
|
|
17
|
+
template.innerHTML = `
|
|
18
|
+
<style>
|
|
19
|
+
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
20
|
+
|
|
21
|
+
${loadCSS}
|
|
22
|
+
</style>
|
|
23
|
+
${cardHTML}
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async connectedCallback() {
|
|
30
|
+
|
|
31
|
+
const cardComponent = this;
|
|
32
|
+
const cardHead = cardComponent.shadowRoot.querySelector('.card__head');
|
|
33
|
+
|
|
34
|
+
setupCard(cardComponent);
|
|
35
|
+
|
|
36
|
+
// Dispatch events of selecting checkboxes
|
|
37
|
+
const checkbox = cardComponent.parentElement.querySelector('input[type="checkbox"]');
|
|
38
|
+
if(checkbox){
|
|
39
|
+
checkbox.addEventListener('change', (event) => {
|
|
40
|
+
|
|
41
|
+
if(checkbox.checked){
|
|
42
|
+
const customEvent = new CustomEvent("select-card", { detail: { 'Card value': checkbox.value, 'input name': checkbox.getAttribute('name') } });
|
|
43
|
+
cardComponent.dispatchEvent(customEvent);
|
|
44
|
+
cardComponent.classList.add('active');
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
|
|
48
|
+
const customEvent = new CustomEvent("unselect-card", { detail: { 'Card value': checkbox.value, 'input name': checkbox.getAttribute('name') } });
|
|
49
|
+
cardComponent.dispatchEvent(customEvent);
|
|
50
|
+
cardComponent.classList.remove('active');
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if(cardComponent.parentElement.matches('button')){
|
|
56
|
+
|
|
57
|
+
const button = cardComponent.parentElement;
|
|
58
|
+
|
|
59
|
+
button.addEventListener('click', (event) => {
|
|
60
|
+
|
|
61
|
+
if(!cardComponent.classList.contains('active')){
|
|
62
|
+
const customEvent = new CustomEvent("select-card", { detail: { 'button name': button.getAttribute('name') } });
|
|
63
|
+
cardComponent.dispatchEvent(customEvent);
|
|
64
|
+
cardComponent.classList.add('active');
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
|
|
68
|
+
const customEvent = new CustomEvent("unselect-card", { detail: { 'button name': button.getAttribute('name') } });
|
|
69
|
+
cardComponent.dispatchEvent(customEvent);
|
|
70
|
+
cardComponent.classList.remove('active');
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
trackComponent(cardComponent,"iam-filter-card",['select-card','unselect-card']);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export default iamFilerCard;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import {trackComponent, trackComponentRegistered} from "../_global";
|
|
3
|
+
import {cardHTML,setupCard} from "../../modules/card.module";
|
|
4
|
+
|
|
5
|
+
trackComponentRegistered("iam-record-card");
|
|
6
|
+
|
|
7
|
+
class iamRecordCard extends HTMLElement {
|
|
8
|
+
|
|
9
|
+
constructor(){
|
|
10
|
+
super();
|
|
11
|
+
this.attachShadow({ mode: 'open'});
|
|
12
|
+
|
|
13
|
+
const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
|
|
14
|
+
const loadCSS = `@import "${assetLocation}/css/components/record-card.component.css";`;
|
|
15
|
+
|
|
16
|
+
const template = document.createElement('template');
|
|
17
|
+
template.innerHTML = `
|
|
18
|
+
<style>
|
|
19
|
+
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
20
|
+
|
|
21
|
+
${loadCSS}
|
|
22
|
+
</style>
|
|
23
|
+
${cardHTML}
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async connectedCallback() {
|
|
30
|
+
|
|
31
|
+
const cardComponent = this;
|
|
32
|
+
const cardHead = cardComponent.shadowRoot.querySelector('.card__head');
|
|
33
|
+
setupCard(cardComponent);
|
|
34
|
+
|
|
35
|
+
Array.from(cardComponent.querySelectorAll(':scope > *:not([slot])')).forEach((element,index)=>{
|
|
36
|
+
|
|
37
|
+
element.setAttribute('slot','details');
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
if(cardComponent.hasAttribute('data-avatar')){
|
|
41
|
+
|
|
42
|
+
cardHead.innerHTML += `<img src="${cardComponent.getAttribute('data-avatar')}" alt="" loading="lazy" class="card__avatar" part="avatar" />`;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
trackComponent(cardComponent,"iam-record-card",[]);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
static get observedAttributes() {
|
|
50
|
+
return ["data-image"];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
attributeChangedCallback(attrName, oldVal, newVal) {
|
|
54
|
+
switch (attrName) {
|
|
55
|
+
case "data-image": {
|
|
56
|
+
|
|
57
|
+
if(oldVal != newVal){
|
|
58
|
+
|
|
59
|
+
const cardHeadImg = this.shadowRoot.querySelector('.card__head img');
|
|
60
|
+
|
|
61
|
+
if(cardHeadImg)
|
|
62
|
+
cardHeadImg.setAttribute('src',newVal);
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case "data-avatar": {
|
|
67
|
+
|
|
68
|
+
if(oldVal != newVal){
|
|
69
|
+
|
|
70
|
+
const cardHeadImg = this.shadowRoot.querySelector('.card__avatar');
|
|
71
|
+
|
|
72
|
+
if(cardHeadImg)
|
|
73
|
+
cardHeadImg.setAttribute('src',newVal);
|
|
74
|
+
}
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export default iamRecordCard;
|