@iamproperty/components 7.8.2--beta6 → 7.8.2--beta7
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/address-lookup.component.css +1 -1
- package/assets/css/components/address-lookup.component.css.map +1 -1
- package/assets/css/components/advanced-select.component.css +1 -1
- package/assets/css/components/advanced-select.component.css.map +1 -1
- package/assets/css/components/banner.component.css +1 -1
- package/assets/css/components/banner.component.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/branch-selector.css +1 -0
- package/assets/css/components/branch-selector.css.map +1 -0
- package/assets/css/components/calendar.component.css +1 -1
- package/assets/css/components/calendar.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/card.module.css +1 -1
- package/assets/css/components/card.module.css.map +1 -1
- package/assets/css/components/card.preload.css +1 -1
- package/assets/css/components/card.preload.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/charts.config.css +1 -1
- package/assets/css/components/charts.config.css.map +1 -1
- package/assets/css/components/collapsible-side.css +1 -1
- package/assets/css/components/collapsible-side.css.map +1 -1
- package/assets/css/components/config.component.css +1 -1
- package/assets/css/components/config.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/fileupload.css +1 -1
- package/assets/css/components/fileupload.css.map +1 -1
- package/assets/css/components/filter-card.component.css +1 -1
- package/assets/css/components/filter-card.component.css.map +1 -1
- package/assets/css/components/inline-edit.css +1 -1
- package/assets/css/components/inline-edit.css.map +1 -1
- package/assets/css/components/menu.component.css +1 -1
- package/assets/css/components/menu.component.css.map +1 -1
- package/assets/css/components/modal.component.css +1 -1
- package/assets/css/components/modal.component.css.map +1 -1
- package/assets/css/components/multi-step-modal.component.css +1 -1
- package/assets/css/components/multi-step-modal.component.css.map +1 -1
- package/assets/css/components/multiselect.css +1 -1
- package/assets/css/components/multiselect.css.map +1 -1
- package/assets/css/components/nav-standalone.component.css +1 -0
- package/assets/css/components/nav-standalone.component.css.map +1 -0
- package/assets/css/components/nav.component.css +1 -1
- package/assets/css/components/nav.component.css.map +1 -1
- package/assets/css/components/nav.global.css +1 -1
- package/assets/css/components/nav.global.css.map +1 -1
- package/assets/css/components/nav.preload.css +1 -1
- package/assets/css/components/nav.preload.css.map +1 -1
- package/assets/css/components/notification.css +1 -1
- package/assets/css/components/notification.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/record-card.component.css +1 -1
- package/assets/css/components/record-card.component.css.map +1 -1
- package/assets/css/components/search.component.css +1 -1
- package/assets/css/components/search.component.css.map +1 -1
- package/assets/css/components/slider.css +1 -1
- package/assets/css/components/slider.css.map +1 -1
- package/assets/css/components/split-button.component.css +1 -1
- package/assets/css/components/split-button.component.css.map +1 -1
- package/assets/css/components/tabs.component.css +1 -1
- package/assets/css/components/tabs.component.css.map +1 -1
- package/assets/css/components/tag.component.css +1 -1
- package/assets/css/components/tag.component.css.map +1 -1
- package/assets/css/components/video-card.component.css +1 -1
- package/assets/css/components/video-card.component.css.map +1 -1
- package/assets/css/components/video-modal.component.css +1 -1
- package/assets/css/components/video-modal.component.css.map +1 -1
- package/assets/css/components/video.component.css +1 -1
- package/assets/css/components/video.component.css.map +1 -1
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/elements/buttons--action.css +1 -1
- package/assets/css/elements/buttons--action.css.map +1 -1
- package/assets/css/elements/buttons--compact.css +1 -1
- package/assets/css/elements/buttons--compact.css.map +1 -1
- package/assets/css/elements/buttons--global.css +1 -1
- package/assets/css/elements/buttons--global.css.map +1 -1
- package/assets/css/elements/buttons--secondary.css +1 -1
- package/assets/css/elements/buttons--secondary.css.map +1 -1
- package/assets/css/elements/buttons--tertiary.css +1 -1
- package/assets/css/elements/buttons--tertiary.css.map +1 -1
- package/assets/css/elements/buttons.css +1 -1
- package/assets/css/elements/buttons.css.map +1 -1
- package/assets/css/elements/dropdown.css +1 -1
- package/assets/css/elements/dropdown.css.map +1 -1
- package/assets/css/elements/forms.css +1 -1
- package/assets/css/elements/forms.css.map +1 -1
- package/assets/css/elements/links--global.css +1 -1
- package/assets/css/elements/links--global.css.map +1 -1
- package/assets/css/elements/links.css +1 -1
- package/assets/css/elements/links.css.map +1 -1
- package/assets/css/elements/popover.css +1 -1
- package/assets/css/elements/popover.css.map +1 -1
- package/assets/css/elements/select.css +1 -1
- package/assets/css/elements/select.css.map +1 -1
- package/assets/css/elements/tooltips.css +1 -1
- package/assets/css/elements/tooltips.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 +3 -3
- package/assets/js/components/address-lookup/address-lookup.component.js +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.min.js +5 -5
- package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
- package/assets/js/components/advanced-select/advanced-select.component.min.js +4 -4
- package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
- package/assets/js/components/banner/banner.component.min.js +2 -2
- package/assets/js/components/barchart/barchart.component.min.js +2 -2
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/bone/bone.component.min.js +1 -1
- package/assets/js/components/branch-selector/branch-selector.component.js +69 -0
- package/assets/js/components/branch-selector/branch-selector.component.min.js +22 -0
- package/assets/js/components/branch-selector/branch-selector.component.min.js.map +1 -0
- package/assets/js/components/button/button.component.min.js +1 -1
- package/assets/js/components/calendar/calendar.component.min.js +2 -2
- package/assets/js/components/card/card.component.min.js +3 -3
- package/assets/js/components/carousel/carousel.component.min.js +3 -3
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
- package/assets/js/components/config/config.component.min.js +3 -3
- package/assets/js/components/config/config.component.min.js.map +1 -1
- package/assets/js/components/content/content.component.min.js +1 -1
- package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +4 -4
- package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
- package/assets/js/components/filter-card/filter-card.component.min.js +5 -5
- package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
- package/assets/js/components/form/form.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 +2 -2
- package/assets/js/components/input/input.component.min.js +1 -1
- package/assets/js/components/input-range/input-range.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 +2 -2
- package/assets/js/components/milestone/milestone.component.min.js +1 -1
- package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
- package/assets/js/components/modal/modal.component.js +2 -0
- package/assets/js/components/modal/modal.component.min.js +4 -4
- package/assets/js/components/modal/modal.component.min.js.map +1 -1
- package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
- package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +4 -4
- package/assets/js/components/multiselect/multiselect.component.js +14 -18
- package/assets/js/components/multiselect/multiselect.component.min.js +14 -14
- package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.js +30 -255
- package/assets/js/components/nav/nav.component.min.js +46 -30
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/nav-standalone/nav-standalone.component.js +51 -0
- package/assets/js/components/nav-standalone/nav-standalone.component.min.js +80 -0
- package/assets/js/components/nav-standalone/nav-standalone.component.min.js.map +1 -0
- package/assets/js/components/notification/notification.component.min.js +2 -2
- package/assets/js/components/pagination/pagination.component.min.js +2 -2
- package/assets/js/components/password/password.component.min.js +1 -1
- package/assets/js/components/popover/popover.component.min.js +1 -1
- package/assets/js/components/rank/rank.component.min.js +1 -1
- package/assets/js/components/rankings/rankings.component.min.js +1 -1
- package/assets/js/components/rating/rating.component.min.js +1 -1
- package/assets/js/components/record-card/record-card.component.min.js +6 -6
- package/assets/js/components/search/search.component.min.js +2 -2
- package/assets/js/components/skeleton/skeleton.component.min.js +1 -1
- package/assets/js/components/slider/slider.component.min.js +2 -2
- package/assets/js/components/split-button/split-button.component.min.js +4 -4
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +5 -5
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
- package/assets/js/components/std-nav/std-nav.component.js +32 -58
- package/assets/js/components/std-nav/std-nav.component.min.js +9 -54
- package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -1
- package/assets/js/components/table/table.component.min.js +2 -2
- package/assets/js/components/table-ajax/table-ajax.component.min.js +2 -2
- package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js +2 -2
- package/assets/js/components/table-submit/table-submit.component.min.js +2 -2
- package/assets/js/components/tabs/tabs.component.min.js +2 -2
- package/assets/js/components/tag/tag.component.min.js +4 -4
- package/assets/js/components/tag/tag.component.min.js.map +1 -1
- package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
- package/assets/js/components/video/video.component.min.js +2 -2
- package/assets/js/components/video-card/video-card.component.min.js +6 -6
- package/assets/js/components/video-modal/video-modal.component.min.js +5 -5
- package/assets/js/components/word-count/word-count.component.min.js +1 -1
- package/assets/js/modules/advanced-select.js +13 -5
- package/assets/js/modules/nav.js +183 -64
- package/assets/js/modules/nav.test.js +4 -1
- package/assets/js/scripts.bundle.js +1 -1
- package/assets/js/scripts.bundle.min.js +1 -1
- package/assets/sass/components/branch-selector.scss +112 -0
- package/assets/sass/components/card.module.scss +11 -1
- package/assets/sass/components/card.preload.scss +0 -15
- package/assets/sass/components/charts.config.scss +3 -3
- package/assets/sass/components/menu.component.scss +2 -1
- package/assets/sass/components/multiselect.scss +0 -1
- package/assets/sass/components/nav-standalone.component.scss +50 -0
- package/assets/sass/components/nav.component.scss +142 -116
- package/assets/sass/components/nav.global.scss +26 -198
- package/assets/sass/components/nav.preload.scss +1 -7
- package/assets/sass/elements/buttons--action.css +1 -1
- package/assets/sass/elements/buttons--compact.css +8 -4
- package/assets/sass/elements/buttons--global.css +3 -6
- package/assets/sass/elements/buttons--secondary.css +1 -1
- package/assets/sass/elements/buttons--tertiary.css +1 -1
- package/assets/sass/elements/dropdown.css +16 -2
- package/assets/sass/elements/links--global.scss +29 -3
- package/assets/sass/elements/popover.scss +1 -0
- package/assets/sass/elements/select.scss +1 -1
- package/assets/sass/elements/tooltips.scss +54 -0
- package/assets/sass/foundations/root.scss +4 -0
- package/assets/sass/templates/form.scss +26 -3
- package/assets/ts/components/address-lookup/address-lookup.component.ts +2 -1
- package/assets/ts/components/branch-selector/branch-selector.component.ts +93 -0
- package/assets/ts/components/modal/modal.component.ts +3 -0
- package/assets/ts/components/multiselect/multiselect.component.ts +20 -23
- package/assets/ts/components/nav/nav.component.ts +30 -285
- package/assets/ts/components/nav-standalone/nav-standalone.component.ts +69 -0
- package/assets/ts/components/std-nav/std-nav.component.ts +38 -81
- package/assets/ts/modules/advanced-select.ts +12 -11
- package/assets/ts/modules/nav.test.ts +4 -1
- package/assets/ts/modules/nav.ts +221 -78
- package/dist/components.es.js +1130 -1095
- package/dist/components.umd.js +290 -242
- package/package.json +2 -2
- package/src/components/BranchSelector/BranchSelector.vue +20 -0
- package/src/components/{STDNavStandalone/STDNavStandalone.vue → NavStandalone/NavStandalone.vue} +3 -3
- package/src/index.js +1 -0
- package/assets/css/components/nav.docs.css +0 -1
- package/assets/css/components/nav.docs.css.map +0 -1
- package/assets/css/components/std-nav-standalone.component.css +0 -1
- package/assets/css/components/std-nav-standalone.component.css.map +0 -1
- package/assets/js/components/std-nav-standalone/std-nav-standalone.component.js +0 -70
- package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js +0 -20
- package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js.map +0 -1
- package/assets/sass/components/nav.docs.scss +0 -54
- package/assets/sass/components/std-nav-standalone.component.scss +0 -229
- package/assets/ts/components/std-nav-standalone/std-nav-standalone.component.ts +0 -94
|
@@ -14,6 +14,7 @@ window.dataLayer.push({
|
|
|
14
14
|
element: 'Address Lookup',
|
|
15
15
|
});
|
|
16
16
|
|
|
17
|
+
|
|
17
18
|
class iamAddressLookup extends HTMLElement {
|
|
18
19
|
constructor() {
|
|
19
20
|
super();
|
|
@@ -56,7 +57,7 @@ class iamAddressLookup extends HTMLElement {
|
|
|
56
57
|
|
|
57
58
|
<div class="datalist__wrapper dropdown ${this.hasAttribute('data-list-class') ? this.getAttribute('data-list-class') : ''}" tabindex="0" part="list-wrapper">
|
|
58
59
|
<slot name="beforeList"></slot>
|
|
59
|
-
|
|
60
|
+
|
|
60
61
|
<datalist id="address-lookup__addressess" class=""></datalist>
|
|
61
62
|
<div id="paginationWrapper"></div>
|
|
62
63
|
<slot name="afterList"></slot>
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
|
|
2
|
+
class iamBranchSelector extends HTMLElement {
|
|
3
|
+
constructor() {
|
|
4
|
+
super();
|
|
5
|
+
this.attachShadow({ mode: 'open' });
|
|
6
|
+
|
|
7
|
+
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
8
|
+
? document.body.getAttribute('data-assets-location')
|
|
9
|
+
: '/assets';
|
|
10
|
+
const loadCSS = `@import "${assetLocation}/css/components/branch-selector.component.css";`;
|
|
11
|
+
|
|
12
|
+
const template = document.createElement('template');
|
|
13
|
+
template.innerHTML = /* HTML */ `
|
|
14
|
+
<style>
|
|
15
|
+
${loadCSS}
|
|
16
|
+
</style>
|
|
17
|
+
<link rel="stylesheet" href="https://kit.fontawesome.com/8bd0fca975.css" crossorigin="anonymous">
|
|
18
|
+
<div class="wrapper">
|
|
19
|
+
|
|
20
|
+
<button id="menuButton" class="btn btn-action" popovertarget="branches" aria-haspopup="true" aria-controls="branches" style="anchor-name: --branches;">
|
|
21
|
+
<i class="fa-regular fa-building-circle-check"></i>
|
|
22
|
+
<span class="indicator"></span>
|
|
23
|
+
<span class="selected">Branch</span>
|
|
24
|
+
</button>
|
|
25
|
+
<div class="dropdown" part="dropdown" id="branches" style="position-anchor: --branches;" role="menu" popover="auto">
|
|
26
|
+
<slot></slot>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
`;
|
|
30
|
+
this.shadowRoot?.appendChild(template.content.cloneNode(true));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
connectedCallback(): void {
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
const menuButton = this.shadowRoot?.querySelector('#menuButton');
|
|
38
|
+
|
|
39
|
+
let selected = this.querySelector('input:checked') ? this.querySelector('input:checked') : this.querySelector('input'); // By default the first input is checked if an input hasn't been checked on load
|
|
40
|
+
selected.checked = true;
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
menuButton?.querySelector('span.selected').textContent = selected?.closest('label').textContent;
|
|
44
|
+
menuButton?.setAttribute('data-checked-count',this.querySelectorAll('input:checked').length - 1);
|
|
45
|
+
|
|
46
|
+
if(this.hasAttribute('data-indicator'))
|
|
47
|
+
menuButton?.querySelector('span.indicator').setAttribute('data-indicator',this.getAttribute('data-indicator'));
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
// Make sure the correct classes and attributes are set on each item
|
|
52
|
+
Array.from(this.querySelectorAll(':scope > label:has(input)')).forEach(item => {
|
|
53
|
+
item.classList.add('dropdown__option');
|
|
54
|
+
item.setAttribute('title',item.textContent);// Set a title on all labels
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
// If all of the inputs are disabled then disable the button
|
|
60
|
+
if(this.querySelectorAll('input:disabled').length && !this.querySelectorAll('input:not(:disabled)').length)
|
|
61
|
+
menuButton?.setAttribute('disabled', 'disabled');
|
|
62
|
+
|
|
63
|
+
this.addEventListener('change', ():void => {
|
|
64
|
+
|
|
65
|
+
selected = this.querySelector('input:checked') ? this.querySelector('input:checked') : this.querySelector('input');
|
|
66
|
+
selected.checked = true;
|
|
67
|
+
|
|
68
|
+
menuButton?.querySelector('span.selected').innerHTML = selected?.closest('label').textContent;
|
|
69
|
+
menuButton?.setAttribute('data-checked-count',this.querySelectorAll('input:checked').length - 1);
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
if(this.querySelectorAll('input[type="checkbox"]:checked').length == 1){
|
|
73
|
+
selected?.closest('label').classList.add('pe-none');
|
|
74
|
+
}
|
|
75
|
+
else if(this.querySelectorAll('input[type="checkbox"]:checked').length > 1){
|
|
76
|
+
this.querySelector('label.pe-none')?.classList.remove('pe-none');
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// Desktop menu button
|
|
82
|
+
menuButton?.addEventListener('click', (e) => {
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
if(this.hasAttribute('slot') && this.getAttribute('slot') == "account"){
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
this.classList.toggle('branch-selector-inline');
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export default iamBranchSelector;
|
|
@@ -106,6 +106,9 @@ class iamModal extends HTMLElement {
|
|
|
106
106
|
|
|
107
107
|
// Move the submit button so that the slot functionality works
|
|
108
108
|
if(originalDialog) {
|
|
109
|
+
if(originalDialog.hasAttribute('open'))
|
|
110
|
+
dialog?.showModal();
|
|
111
|
+
|
|
109
112
|
Array.from(originalDialog?.querySelectorAll('[slot]')).forEach((element) => {
|
|
110
113
|
this.moveBefore(element, originalDialog);
|
|
111
114
|
});
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import { searchAjax, filterList, addKeyboardEvents } from '../../modules/dropdown';
|
|
2
2
|
|
|
3
|
-
// Data layer Web component created
|
|
4
|
-
window.dataLayer = window.dataLayer || [];
|
|
5
|
-
window.dataLayer.push({
|
|
6
|
-
event: 'customElementRegistered',
|
|
7
|
-
element: 'mutliselect',
|
|
8
|
-
});
|
|
9
|
-
|
|
10
3
|
class iamMultiselect extends HTMLElement {
|
|
11
4
|
constructor() {
|
|
12
5
|
super();
|
|
@@ -15,28 +8,28 @@ class iamMultiselect extends HTMLElement {
|
|
|
15
8
|
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
16
9
|
? document.body.getAttribute('data-assets-location')
|
|
17
10
|
: '/assets';
|
|
18
|
-
|
|
11
|
+
|
|
19
12
|
const loadCSS = `@import "${assetLocation}/css/components/multiselect.css";`;
|
|
20
13
|
|
|
21
14
|
const template = document.createElement('template');
|
|
22
15
|
template.innerHTML = `
|
|
23
16
|
<style>
|
|
24
|
-
|
|
17
|
+
|
|
25
18
|
${loadCSS}
|
|
26
19
|
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
27
20
|
</style>
|
|
28
21
|
<label for="search" class="mb-0"><span class="inner-label label"></span> <slot name="feedback"></slot>
|
|
29
22
|
<div class="outer">
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
23
|
+
<div class="wrapper">
|
|
24
|
+
|
|
25
|
+
<slot name="checked"></slot>
|
|
26
|
+
<input name="search" id="search" autocomplete="off" required part="search-input"/>
|
|
27
|
+
<span class="admin-panel feedback">This field is required</span>
|
|
28
|
+
<div class="admin-panel dropdown" part="dropdown">
|
|
29
|
+
<slot></slot>
|
|
30
|
+
</div>
|
|
31
|
+
<button id="clear" class="btn btn-action "><span class="visually-hidden">Clear</span></button>
|
|
37
32
|
</div>
|
|
38
|
-
<button id="clear" class="btn btn-action "><span class="visually-hidden">Clear</span></button>
|
|
39
|
-
</div>
|
|
40
33
|
</div>
|
|
41
34
|
</label>
|
|
42
35
|
`;
|
|
@@ -49,7 +42,7 @@ class iamMultiselect extends HTMLElement {
|
|
|
49
42
|
const form = this.closest('form');
|
|
50
43
|
const wrapper = this.shadowRoot.querySelector('.wrapper');
|
|
51
44
|
const search = multiselect.shadowRoot.querySelector('#search');
|
|
52
|
-
const
|
|
45
|
+
const clearButton = multiselect.shadowRoot.querySelector('#clear');
|
|
53
46
|
let order = 0;
|
|
54
47
|
const innerLabel = multiselect.shadowRoot.querySelector('label .inner-label');
|
|
55
48
|
const ajaxURL = this.getAttribute('data-url');
|
|
@@ -139,10 +132,10 @@ class iamMultiselect extends HTMLElement {
|
|
|
139
132
|
search.addEventListener('input', () => {
|
|
140
133
|
|
|
141
134
|
if (multiselect.hasAttribute('data-url') && search.value.length == minLength) {
|
|
142
|
-
|
|
135
|
+
|
|
143
136
|
searchAjax(multiselect, search, filterList);
|
|
144
137
|
} else {
|
|
145
|
-
|
|
138
|
+
|
|
146
139
|
filterList(multiselect, search);
|
|
147
140
|
}
|
|
148
141
|
});
|
|
@@ -218,7 +211,7 @@ class iamMultiselect extends HTMLElement {
|
|
|
218
211
|
});
|
|
219
212
|
|
|
220
213
|
// Clear all
|
|
221
|
-
|
|
214
|
+
clearButton.addEventListener('click', () => {
|
|
222
215
|
Array.from(multiselect.querySelectorAll(`label input[type="checkbox"]`)).forEach((checkbox) => {
|
|
223
216
|
checkbox.checked = false;
|
|
224
217
|
|
|
@@ -226,6 +219,10 @@ class iamMultiselect extends HTMLElement {
|
|
|
226
219
|
});
|
|
227
220
|
|
|
228
221
|
search.focus();
|
|
222
|
+
|
|
223
|
+
const clearEvent = new CustomEvent('clear');
|
|
224
|
+
|
|
225
|
+
this.dispatchEvent(clearEvent);
|
|
229
226
|
});
|
|
230
227
|
|
|
231
228
|
// Add some keyboard features to keep it accessible
|
|
@@ -295,7 +292,7 @@ class iamMultiselect extends HTMLElement {
|
|
|
295
292
|
});
|
|
296
293
|
}
|
|
297
294
|
else {
|
|
298
|
-
|
|
295
|
+
|
|
299
296
|
setItem(activeElement);
|
|
300
297
|
}
|
|
301
298
|
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
window.dataLayer = window.dataLayer || [];
|
|
3
|
-
window.dataLayer.push({
|
|
4
|
-
event: 'customElementRegistered',
|
|
5
|
-
element: 'nav',
|
|
6
|
-
});
|
|
1
|
+
import { navTemplate, branchSelector, menuEvents, megaMenuTitles, megaMenusEvents, accountMenuEvents, backdropEvents } from '../../modules/nav';
|
|
7
2
|
|
|
8
3
|
class iamNav extends HTMLElement {
|
|
9
4
|
constructor() {
|
|
@@ -13,42 +8,17 @@ class iamNav extends HTMLElement {
|
|
|
13
8
|
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
14
9
|
? document.body.getAttribute('data-assets-location')
|
|
15
10
|
: '/assets';
|
|
16
|
-
const
|
|
11
|
+
const navCSS = `@import "${assetLocation}/css/components/nav.component.css";`;
|
|
17
12
|
const loadExtraCSS = `@import "${assetLocation}/css/components/nav.global.css";`;
|
|
18
13
|
|
|
19
14
|
const template = document.createElement('template');
|
|
20
|
-
template.innerHTML =
|
|
15
|
+
template.innerHTML = /* HTML */`
|
|
21
16
|
<style class="styles">
|
|
22
|
-
|
|
23
|
-
${loadCSS}
|
|
24
|
-
</style>
|
|
25
|
-
<style class="doc-styles">
|
|
17
|
+
${navCSS}
|
|
26
18
|
</style>
|
|
27
|
-
<link rel="stylesheet" href="https://kit.fontawesome.com/8bd0fca975.css" crossorigin="anonymous">
|
|
28
|
-
<div class="container">
|
|
29
|
-
<slot name="logo"></slot>
|
|
30
|
-
<div class="buttons-holder"></div>
|
|
31
|
-
<button class="btn-menu" part="btn-menu">Menu<i class="fa-regular fa-bars"></i><i class="fa-regular fa-xmark-large"></i></button>
|
|
32
|
-
|
|
33
|
-
<div class="menu__outer">
|
|
34
|
-
<div class="menu closed">
|
|
35
19
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
<slot name="dual"></slot>
|
|
39
|
-
</div>
|
|
40
|
-
<div class="dialog__wrapper d-none" id="search-wrapper"></div>
|
|
41
|
-
<slot name="actions"></slot>
|
|
42
|
-
<div class="menu__secondary bg-light">
|
|
43
|
-
<div class="container">
|
|
44
|
-
<slot name="secondary"></slot>
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
|
47
|
-
</div>
|
|
48
|
-
<slot name="menus"></slot>
|
|
49
|
-
</div>
|
|
50
|
-
</div>
|
|
51
|
-
<div class="backdrop" part="backdrop"></div>
|
|
20
|
+
<link rel="stylesheet" href="https://kit.fontawesome.com/8bd0fca975.css" crossorigin="anonymous">
|
|
21
|
+
${navTemplate}
|
|
52
22
|
`;
|
|
53
23
|
|
|
54
24
|
shadowRoot.appendChild(template.content.cloneNode(true));
|
|
@@ -59,255 +29,45 @@ class iamNav extends HTMLElement {
|
|
|
59
29
|
}
|
|
60
30
|
|
|
61
31
|
connectedCallback(): void {
|
|
62
|
-
// Load external CSS if needed
|
|
63
|
-
if (this.hasAttribute('data-css'))
|
|
64
|
-
this.shadowRoot
|
|
65
|
-
.querySelector('.doc-styles')
|
|
66
|
-
.insertAdjacentHTML('beforeend', `@import "${this.getAttribute('data-css')}";`);
|
|
67
32
|
|
|
68
|
-
const menuButton = this.shadowRoot.querySelector('.btn-menu');
|
|
69
|
-
const menu = this.shadowRoot.querySelector('.menu');
|
|
70
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
71
|
-
const iamNav = this;
|
|
72
33
|
const backdrop = this.shadowRoot.querySelector('.backdrop');
|
|
73
|
-
const buttonsHolder = this.shadowRoot.querySelector('.buttons-holder');
|
|
74
|
-
|
|
75
|
-
// Check the content
|
|
76
|
-
const createNavMenu = (component) => {
|
|
77
|
-
|
|
78
|
-
buttonsHolder.innerHTML = '';
|
|
79
|
-
component.querySelectorAll(':scope > *').forEach(function (element) {
|
|
80
|
-
const tagname = element.tagName;
|
|
81
|
-
|
|
82
|
-
switch (tagname) {
|
|
83
|
-
case 'BUTTON':
|
|
84
|
-
if (!element.hasAttribute('slot')) {
|
|
85
|
-
element.setAttribute('slot', 'actions');
|
|
86
|
-
menu.classList.add('has-actions');
|
|
87
|
-
}
|
|
88
|
-
break;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
34
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
) {
|
|
98
|
-
const title = element.getAttribute('data-title');
|
|
99
|
-
const iconClass = element.getAttribute('data-icon');
|
|
100
|
-
|
|
101
|
-
// Create the menu button that sits seperately to the menu
|
|
102
|
-
const button = document.createElement('button');
|
|
103
|
-
button.setAttribute('slot', title);
|
|
104
|
-
button.classList.add('btn-menu');
|
|
105
|
-
button.setAttribute('part', 'btn-menu');
|
|
106
|
-
button.innerHTML = `<span class="btn btn-primary"><span>${title}</span><i class="${iconClass}"></i><i class="fa-regular fa-xmark-large"></i></span>`;
|
|
107
|
-
buttonsHolder.insertAdjacentElement('beforeend', button);
|
|
108
|
-
|
|
109
|
-
const mdButton = button.querySelector('.btn-primary');
|
|
110
|
-
|
|
111
|
-
// Make sure the menu is added to the right part of the component
|
|
112
|
-
element.setAttribute('slot', 'menus');
|
|
113
|
-
|
|
114
|
-
// If open we need to make sure the main mobile menu is closed, the new button has the right state and the backdrop is shown
|
|
115
|
-
if (element.classList.contains('open')) {
|
|
116
|
-
button.setAttribute('aria-expanded', true);
|
|
117
|
-
mdButton.classList.toggle('active');
|
|
118
|
-
component.classList.add('open');
|
|
119
|
-
backdrop.classList.add('show');
|
|
120
|
-
} else {
|
|
121
|
-
element.classList.add('closed'); // closed class is added to prevent the elements being tabbed into, this causes visual issues
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// Click event
|
|
125
|
-
button.addEventListener(
|
|
126
|
-
'click',
|
|
127
|
-
function (e) {
|
|
128
|
-
e.preventDefault();
|
|
129
|
-
button.toggleAttribute('aria-expanded');
|
|
130
|
-
|
|
131
|
-
console.log(element);
|
|
132
|
-
element.classList.toggle('open');
|
|
133
|
-
mdButton.classList.toggle('active');
|
|
134
|
-
|
|
135
|
-
// Close desktop menus
|
|
136
|
-
const openMenu = component.querySelector(':scope > details[open]');
|
|
137
|
-
|
|
138
|
-
if (openMenu) openMenu.removeAttribute('open');
|
|
139
|
-
|
|
140
|
-
// Close the main menu and fix states on the button, iamNav component and backdrop
|
|
141
|
-
if (element.classList.contains('open')) {
|
|
142
|
-
menu.classList.remove('open');
|
|
143
|
-
menuButton.removeAttribute('aria-expanded');
|
|
144
|
-
setTimeout(function () {
|
|
145
|
-
menu.classList.add('closed');
|
|
146
|
-
}, 1000); // Delay until its close so the animation is broken
|
|
147
|
-
component.classList.add('open');
|
|
148
|
-
backdrop.classList.add('show');
|
|
149
|
-
element.classList.remove('closed');
|
|
150
|
-
} else {
|
|
151
|
-
component.classList.remove('open');
|
|
152
|
-
backdrop.classList.remove('show');
|
|
153
|
-
setTimeout(function () {
|
|
154
|
-
element.classList.add('closed');
|
|
155
|
-
}, 1000);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Close any open menus
|
|
159
|
-
component.querySelectorAll('.nav--menu.open').forEach(function (openmenu) {
|
|
160
|
-
if (openmenu != element) {
|
|
161
|
-
openmenu.classList.remove('open');
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
component.shadowRoot
|
|
166
|
-
.querySelectorAll('.buttons-holder .btn-menu[aria-expanded]')
|
|
167
|
-
.forEach(function (selectedButton) {
|
|
168
|
-
if (selectedButton != button) {
|
|
169
|
-
selectedButton.removeAttribute('aria-expanded');
|
|
170
|
-
const innerBtn = selectedButton.querySelector('.btn-primary');
|
|
171
|
-
innerBtn.classList.remove('active');
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
},
|
|
175
|
-
false
|
|
176
|
-
);
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
component.querySelectorAll('details').forEach(function (element) {
|
|
181
|
-
element.classList.add('details--revert');
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
createNavMenu(this);
|
|
185
|
-
|
|
186
|
-
this.addEventListener('rebuilt', () => {
|
|
187
|
-
console.log('rebuilt nav');
|
|
188
|
-
createNavMenu(this);
|
|
189
|
-
});
|
|
35
|
+
const menuButton = this.shadowRoot.querySelector('#btn-menu');
|
|
36
|
+
const menu = this.shadowRoot.querySelector('.menu');
|
|
37
|
+
const accountMenuButton = this.shadowRoot.querySelector('#btn-menu-account');
|
|
38
|
+
const accountMenu = this.shadowRoot.querySelector('.nav--menu');
|
|
39
|
+
const accountBtnTitle = this.shadowRoot?.querySelector('#account-btn-title');
|
|
190
40
|
|
|
41
|
+
// #region Add Helper classes
|
|
191
42
|
// Has secondary link
|
|
192
43
|
if (this.querySelector('[slot="secondary"]')) {
|
|
193
|
-
|
|
44
|
+
this.classList.add('has-secondary');
|
|
194
45
|
}
|
|
46
|
+
// #endregion
|
|
195
47
|
|
|
196
|
-
|
|
197
|
-
menuButton.addEventListener(
|
|
198
|
-
'click',
|
|
199
|
-
function (e) {
|
|
200
|
-
e.preventDefault();
|
|
201
|
-
//menuButton.toggleAttribute('aria-expanded');
|
|
202
|
-
menu.classList.toggle('open');
|
|
48
|
+
accountBtnTitle.innerHTML = this.hasAttribute('data-account-btn-title') ? this.getAttribute('data-account-btn-title') : 'My account';
|
|
203
49
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}, 1000);
|
|
210
|
-
});
|
|
211
|
-
iamNav.shadowRoot.querySelectorAll('.buttons-holder .btn-menu[aria-expanded]').forEach(function (element) {
|
|
212
|
-
element.removeAttribute('aria-expanded');
|
|
213
|
-
const innerBtn = element.querySelector('.btn-primary');
|
|
214
|
-
innerBtn.classList.remove('active');
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
if (menu.classList.contains('open')) {
|
|
218
|
-
iamNav.classList.add('open');
|
|
219
|
-
menu.classList.remove('closed');
|
|
220
|
-
} else {
|
|
221
|
-
iamNav.classList.remove('open');
|
|
222
|
-
setTimeout(function () {
|
|
223
|
-
menu.classList.add('closed');
|
|
224
|
-
}, 1000);
|
|
225
|
-
}
|
|
226
|
-
},
|
|
227
|
-
false
|
|
228
|
-
);
|
|
50
|
+
if(!this.querySelector('[slot="account"]')){
|
|
51
|
+
accountMenuButton?.remove();
|
|
52
|
+
accountMenu?.remove();
|
|
53
|
+
accountBtnTitle?.remove();
|
|
54
|
+
}
|
|
229
55
|
|
|
230
56
|
// Allow outside JS to close the menu
|
|
231
57
|
this.addEventListener('request-close', () => {
|
|
232
58
|
menuButton.removeAttribute('aria-expanded');
|
|
233
59
|
menu.classList.remove('open');
|
|
234
|
-
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
// Close the menu on the click of the backdrop on desktop
|
|
238
|
-
backdrop.addEventListener('click', () => {
|
|
239
|
-
const openMenu = this.querySelector('details[open] summary');
|
|
240
|
-
|
|
241
|
-
if (openMenu) openMenu.click();
|
|
242
|
-
|
|
243
|
-
iamNav.classList.toggle('open');
|
|
244
|
-
iamNav.querySelectorAll('.nav--menu.open').forEach(function (element) {
|
|
245
|
-
element.classList.remove('open');
|
|
246
|
-
});
|
|
247
|
-
iamNav.shadowRoot.querySelectorAll('.buttons-holder .btn-menu[aria-expanded]').forEach(function (element) {
|
|
248
|
-
element.removeAttribute('aria-expanded');
|
|
249
|
-
const innerBtn = element.querySelector('.btn-primary');
|
|
250
|
-
innerBtn.classList.remove('active');
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
backdrop.classList.remove('show');
|
|
60
|
+
this.classList.remove('open');
|
|
254
61
|
});
|
|
255
62
|
|
|
256
|
-
|
|
257
|
-
this
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
const wrapper = details.parentNode;
|
|
263
|
-
|
|
264
|
-
if (details.hasAttribute('open')) details.removeAttribute('open');
|
|
265
|
-
else details.setAttribute('open', 'true');
|
|
63
|
+
menuEvents(this,menu,menuButton,accountMenu,accountMenuButton);
|
|
64
|
+
megaMenuTitles(this);
|
|
65
|
+
megaMenusEvents(this,menu,menuButton,accountMenu,accountMenuButton,backdrop);
|
|
66
|
+
accountMenuEvents(this,menu,menuButton,accountMenu,accountMenuButton,backdrop);
|
|
67
|
+
backdropEvents(this,menu,menuButton,accountMenu,accountMenuButton,backdrop);
|
|
68
|
+
branchSelector(this);
|
|
266
69
|
|
|
267
|
-
|
|
268
|
-
iamNav.querySelectorAll('.nav--menu.open').forEach(function (element) {
|
|
269
|
-
element.classList.remove('open');
|
|
270
|
-
setTimeout(function () {
|
|
271
|
-
menu.classList.add('closed');
|
|
272
|
-
}, 1000);
|
|
273
|
-
});
|
|
274
|
-
iamNav.shadowRoot.querySelectorAll('.buttons-holder .btn-menu[aria-expanded]').forEach(function (element) {
|
|
275
|
-
element.removeAttribute('aria-expanded');
|
|
276
|
-
const innerBtn = element.querySelector('.btn-primary');
|
|
277
|
-
innerBtn.classList.remove('active');
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
// Close any other dropdowns on the same level
|
|
281
|
-
Array.from(wrapper.querySelectorAll(':scope > details')).forEach((detailsArrayElement) => {
|
|
282
|
-
if (detailsArrayElement != details) detailsArrayElement.removeAttribute('open');
|
|
283
|
-
});
|
|
284
|
-
|
|
285
|
-
if (this.querySelectorAll(':scope > details[open]').length) {
|
|
286
|
-
backdrop.classList.add('show');
|
|
287
|
-
iamNav.classList.add('open');
|
|
288
|
-
|
|
289
|
-
if(this.querySelectorAll(':scope > details[open][slot="secondary"]').length)
|
|
290
|
-
iamNav.classList.add('open-secondary');
|
|
291
|
-
} else {
|
|
292
|
-
backdrop.classList.remove('show');
|
|
293
|
-
iamNav.classList.remove('open');
|
|
294
|
-
iamNav.classList.remove('open-secondary');
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
event.preventDefault();
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
});
|
|
301
|
-
|
|
302
|
-
// Mega menu title
|
|
303
|
-
this.querySelectorAll('details').forEach((detailsElement) => {
|
|
304
|
-
const summary = detailsElement.querySelector('summary');
|
|
305
|
-
const containerDiv = detailsElement.querySelector(':Scope > div');
|
|
306
|
-
|
|
307
|
-
containerDiv.setAttribute('data-title', summary.textContent);
|
|
308
|
-
});
|
|
309
|
-
|
|
310
|
-
// Search
|
|
70
|
+
// #region Search
|
|
311
71
|
if (this.querySelector('[slot="search"]')) {
|
|
312
72
|
menu.classList.add('has-search');
|
|
313
73
|
const searchWrapper = this.shadowRoot.querySelector('#search-wrapper');
|
|
@@ -355,25 +115,10 @@ class iamNav extends HTMLElement {
|
|
|
355
115
|
searchButton.removeAttribute('aria-expanded');
|
|
356
116
|
});
|
|
357
117
|
}
|
|
118
|
+
// #endregion
|
|
358
119
|
|
|
359
|
-
if (this.classList.contains('nav--sticky')) {
|
|
360
|
-
let oldScrollY = window.scrollY;
|
|
361
|
-
window.onscroll = function (e): void {
|
|
362
|
-
if (oldScrollY < window.scrollY) {
|
|
363
|
-
document.body.setAttribute('data-direction', 'down');
|
|
364
|
-
} else {
|
|
365
|
-
document.body.setAttribute('data-direction', 'up');
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
if (window.scrollY > 100) {
|
|
369
|
-
document.body.classList.add('past100');
|
|
370
|
-
} else {
|
|
371
|
-
document.body.classList.remove('past100');
|
|
372
|
-
}
|
|
373
|
-
oldScrollY = window.scrollY;
|
|
374
|
-
};
|
|
375
|
-
}
|
|
376
120
|
}
|
|
377
121
|
}
|
|
378
122
|
|
|
123
|
+
|
|
379
124
|
export default iamNav;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import iamNav from "../nav/nav.component";
|
|
2
|
+
|
|
3
|
+
class iamNavStandalone extends HTMLElement {
|
|
4
|
+
constructor() {
|
|
5
|
+
super();
|
|
6
|
+
const shadowRoot = this.attachShadow({ mode: 'open' });
|
|
7
|
+
|
|
8
|
+
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
9
|
+
? document.body.getAttribute('data-assets-location')
|
|
10
|
+
: '/assets';
|
|
11
|
+
const loadCSS = `@import "${assetLocation}/css/components/nav-standalone.component.css";`;
|
|
12
|
+
//const loadExtraCSS = `@import "${assetLocation}/css/components/nav.global.css";`;
|
|
13
|
+
|
|
14
|
+
const template = document.createElement('template');
|
|
15
|
+
template.innerHTML = /* HTML */`
|
|
16
|
+
<style class="styles">
|
|
17
|
+
${loadCSS}
|
|
18
|
+
</style>
|
|
19
|
+
|
|
20
|
+
<link rel="stylesheet" href="https://kit.fontawesome.com/8bd0fca975.css" crossorigin="anonymous">
|
|
21
|
+
<div class="wrapper">
|
|
22
|
+
<iam-nav class="iam-nav">
|
|
23
|
+
<slot></slot>
|
|
24
|
+
<slot name="account"></slot>
|
|
25
|
+
<slot name="secondary"></slot>
|
|
26
|
+
</iam-nav>
|
|
27
|
+
</div>
|
|
28
|
+
`;
|
|
29
|
+
|
|
30
|
+
shadowRoot.appendChild(template.content.cloneNode(true));
|
|
31
|
+
|
|
32
|
+
// insert extra CSS
|
|
33
|
+
if (!document.getElementById('navGlobal'))
|
|
34
|
+
document.head.insertAdjacentHTML('beforeend', `<style id="navGlobal">${loadExtraCSS}</style>`);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
connectedCallback(): void {
|
|
38
|
+
|
|
39
|
+
if (!window.customElements.get(`iam-nav`))
|
|
40
|
+
window.customElements.define(`iam-nav`, iamNav);
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
const wrapper = this.shadowRoot.querySelector('.wrapper');
|
|
44
|
+
|
|
45
|
+
wrapper?.innerHTML = `<iam-nav class="iam-nav">${this.innerHTML}</iam-nav>`;
|
|
46
|
+
|
|
47
|
+
const iamNavElement = wrapper?.querySelector(':scope > iam-nav');
|
|
48
|
+
|
|
49
|
+
if (iamNavElement.querySelector('[slot="secondary"]')) {
|
|
50
|
+
iamNavElement.classList.add('has-secondary');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
wrapper?.addEventListener('change', (e) => {
|
|
54
|
+
|
|
55
|
+
const event = new CustomEvent("change", e);
|
|
56
|
+
this.dispatchEvent(event)
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
wrapper?.addEventListener('click', (e) => {
|
|
60
|
+
|
|
61
|
+
console.log(e);
|
|
62
|
+
const event = new CustomEvent("click", e);
|
|
63
|
+
this.dispatchEvent(event)
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
export default iamNavStandalone;
|