@iamproperty/components 7.2.2--beta3 → 7.4.0
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/bento-grid.global.css.map +1 -1
- package/assets/css/components/calendar.component.css +1 -0
- package/assets/css/components/calendar.component.css.map +1 -0
- package/assets/css/components/calendar.config.css +1 -0
- package/assets/css/components/calendar.config.css.map +1 -0
- 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/charts.module.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/content.component.css +1 -0
- package/assets/css/components/content.component.css.map +1 -0
- 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.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/marketing.component.css +1 -0
- package/assets/css/components/marketing.component.css.map +1 -0
- package/assets/css/components/menu.component.css +1 -1
- package/assets/css/components/menu.component.css.map +1 -1
- package/assets/css/components/menu.css +1 -1
- package/assets/css/components/menu.css.map +1 -1
- package/assets/css/components/milestone.css +1 -0
- package/assets/css/components/milestone.css.map +1 -0
- package/assets/css/components/multiselect.css +1 -1
- package/assets/css/components/multiselect.css.map +1 -1
- 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/pagination.css.map +1 -1
- package/assets/css/components/rank.component.css +1 -1
- package/assets/css/components/rank.component.css.map +1 -1
- package/assets/css/components/rankings.component.css +1 -1
- package/assets/css/components/rankings.component.css.map +1 -1
- package/assets/css/components/rankings.global.css +1 -1
- package/assets/css/components/rankings.global.css.map +1 -1
- package/assets/css/components/slider.css.map +1 -1
- package/assets/css/components/split-button.component.css +1 -0
- package/assets/css/components/split-button.component.css.map +1 -0
- package/assets/css/components/table-basic.global.css.map +1 -1
- package/assets/css/components/table.global.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.js +51 -31
- package/assets/js/components/actionbar/actionbar.component.min.js +17 -17
- 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/advanced-select/advanced-select.component.js +63 -0
- package/assets/js/components/advanced-select/advanced-select.component.min.js +23 -0
- package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -0
- 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/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/calendar/calendar.component.js +1083 -0
- package/assets/js/components/calendar/calendar.component.min.js +170 -0
- package/assets/js/components/calendar/calendar.component.min.js.map +1 -0
- package/assets/js/components/card/card.component.js +20 -8
- package/assets/js/components/card/card.component.min.js +10 -10
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.min.js +2 -2
- package/assets/js/components/collapsible-side/collapsible-side.component.js +47 -12
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +6 -5
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
- package/assets/js/components/content/content.component.js +66 -0
- package/assets/js/components/content/content.component.min.js +15 -0
- package/assets/js/components/content/content.component.min.js.map +1 -0
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
- 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 +5 -5
- package/assets/js/components/marketing/marketing.component.js +1 -1
- package/assets/js/components/marketing/marketing.component.min.js +2 -2
- package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
- package/assets/js/components/menu/menu.component.js +148 -161
- package/assets/js/components/menu/menu.component.min.js +4 -69
- package/assets/js/components/menu/menu.component.min.js.map +1 -1
- package/assets/js/components/milestone/milestone.component.js +38 -0
- package/assets/js/components/milestone/milestone.component.min.js +15 -0
- package/assets/js/components/milestone/milestone.component.min.js.map +1 -0
- package/assets/js/components/milestone-group/milestone-group.component.js +35 -0
- package/assets/js/components/milestone-group/milestone-group.component.min.js +13 -0
- package/assets/js/components/milestone-group/milestone-group.component.min.js.map +1 -0
- package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
- package/assets/js/components/multiselect/multiselect.component.js +54 -2
- package/assets/js/components/multiselect/multiselect.component.min.js +5 -5
- package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.js +19 -0
- package/assets/js/components/nav/nav.component.min.js +6 -6
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.js +17 -11
- package/assets/js/components/notification/notification.component.min.js +4 -4
- 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/rank/rank.component.js +346 -210
- package/assets/js/components/rank/rank.component.min.js +346 -211
- package/assets/js/components/rank/rank.component.min.js.map +1 -1
- package/assets/js/components/rankings/rankings.component.js +17 -8
- package/assets/js/components/rankings/rankings.component.min.js +14 -8
- package/assets/js/components/rankings/rankings.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.js +5 -3
- package/assets/js/components/search/search.component.min.js +6 -6
- 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/split-button/split-button.component.js +60 -0
- package/assets/js/components/split-button/split-button.component.min.js +34 -0
- package/assets/js/components/split-button/split-button.component.min.js.map +1 -0
- package/assets/js/components/table/table.component.js +12 -0
- package/assets/js/components/table/table.component.min.js +3 -3
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.js +12 -0
- package/assets/js/components/table-ajax/table-ajax.component.min.js +3 -3
- package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
- package/assets/js/components/table-no-submit/table-no-submit.component.js +12 -0
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js +3 -3
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
- package/assets/js/components/table-submit/table-submit.component.js +12 -0
- package/assets/js/components/table-submit/table-submit.component.min.js +3 -3
- package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +1 -1
- package/assets/js/components/video-card/video-card.component.min.js +1 -1
- package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
- package/assets/js/components.js +58 -0
- package/assets/js/modules/advanced-select.js +106 -0
- package/assets/js/modules/dialogs.js +53 -51
- package/assets/js/modules/dynamicEvents.js +7 -0
- package/assets/js/modules/milestone-group.js +30 -0
- package/assets/js/modules/milestone.js +89 -0
- package/assets/js/modules/table.js +11 -1
- package/assets/js/modules/videos.js +1 -1
- 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 +4 -0
- package/assets/sass/_components.scss +11 -0
- package/assets/sass/_functions/utility-mixins.scss +41 -0
- package/assets/sass/_functions/variables.scss +11 -8
- package/assets/sass/components/actionbar.component.scss +3 -4
- package/assets/sass/components/actionbar.global.scss +4 -4
- package/assets/sass/components/bento-grid.global.scss +0 -1
- package/assets/sass/components/calendar.component.scss +1380 -0
- package/assets/sass/components/calendar.config.scss +476 -0
- package/assets/sass/components/card.component.scss +4 -34
- package/assets/sass/components/carousel.component.scss +5 -0
- package/assets/sass/components/charts.module.scss +0 -2
- package/assets/sass/components/collapsible-side.scss +91 -95
- package/assets/sass/components/content.component.scss +18 -0
- package/assets/sass/components/inline-edit.scss +2 -0
- package/assets/sass/components/{marketing.scss → marketing.component.scss} +2 -6
- package/assets/sass/components/menu.component.scss +118 -31
- package/assets/sass/components/menu.scss +68 -7
- package/assets/sass/components/milestone.scss +207 -0
- package/assets/sass/components/multiselect.scss +3 -0
- package/assets/sass/components/nav.component.scss +1 -0
- package/assets/sass/components/nav.global.scss +30 -0
- package/assets/sass/components/rank.component.scss +197 -33
- package/assets/sass/components/rankings.component.scss +39 -35
- package/assets/sass/components/rankings.global.scss +66 -10
- package/assets/sass/components/split-button.component.scss +77 -0
- package/assets/sass/components/table-basic.global.scss +2 -4
- package/assets/sass/components/table.global.scss +4 -4
- package/assets/sass/elements/badge-tag.scss +5 -1
- package/assets/sass/elements/buttons--compact.scss +4 -0
- package/assets/sass/elements/buttons--global.scss +1 -1
- package/assets/sass/elements/details.scss +0 -1
- package/assets/sass/elements/dialog.scss +1 -3
- package/assets/sass/elements/forms.scss +148 -22
- package/assets/sass/elements/links.scss +132 -4
- package/assets/sass/elements/lists.scss +61 -0
- package/assets/sass/elements/popover.scss +64 -10
- package/assets/sass/elements/toggle-button.scss +7 -8
- package/assets/sass/elements/type.scss +7 -10
- package/assets/sass/foundations/reboot.scss +3 -3
- package/assets/sass/templates/form.scss +0 -2
- package/assets/ts/components/actionbar/actionbar.component.ts +49 -23
- package/assets/ts/components/advanced-select/advanced-select.component.ts +74 -0
- package/assets/ts/components/calendar/calendar.component.ts +1460 -0
- package/assets/ts/components/card/card.component.ts +22 -14
- package/assets/ts/components/collapsible-side/collapsible-side.component.ts +53 -12
- package/assets/ts/components/content/content.component.ts +78 -0
- package/assets/ts/components/marketing/marketing.component.ts +1 -1
- package/assets/ts/components/menu/menu.component.ts +162 -173
- package/assets/ts/components/milestone/milestone.component.ts +45 -0
- package/assets/ts/components/milestone-group/milestone-group.component.ts +41 -0
- package/assets/ts/components/multiselect/multiselect.component.ts +69 -3
- package/assets/ts/components/nav/nav.component.ts +25 -0
- package/assets/ts/components/notification/notification.component.ts +34 -11
- package/assets/ts/components/rank/rank.component.ts +345 -214
- package/assets/ts/components/rankings/rankings.component.ts +28 -15
- package/assets/ts/components/search/search.component.ts +6 -4
- package/assets/ts/components/split-button/split-button.component.ts +69 -0
- package/assets/ts/components/table/table.component.ts +14 -0
- package/assets/ts/components/table-ajax/table-ajax.component.ts +14 -0
- package/assets/ts/components/table-no-submit/table-no-submit.component.ts +14 -0
- package/assets/ts/components/table-submit/table-submit.component.ts +14 -0
- package/assets/ts/components/video-card/video-card.component.ts +2 -3
- package/assets/ts/components.ts +63 -0
- package/assets/ts/modules/advanced-select.ts +125 -0
- package/assets/ts/modules/dialogs.ts +64 -61
- package/assets/ts/modules/dynamicEvents.ts +12 -1
- package/assets/ts/modules/milestone-group.ts +42 -0
- package/assets/ts/modules/milestone.ts +122 -0
- package/assets/ts/modules/table.ts +15 -1
- package/assets/ts/modules/videos.ts +19 -37
- package/assets/ts/scripts.ts +5 -3
- package/dist/components.es.js +41 -1923
- package/dist/components.umd.js +127 -171
- package/package.json +1 -1
- package/src/components/AdvancedSelect/AdvancedSelect.vue +23 -0
- package/src/components/Calendar/Calendar.vue +26 -0
- package/src/components/Card/Card.vue +1 -1
- package/src/components/CollapsibleSideMenu/CollapsibleSideMenu.vue +7 -13
- package/src/components/Content/Content.vue +23 -0
- package/src/components/Milestones/Milestone.vue +27 -0
- package/src/components/Milestones/MilestoneGroup.vue +27 -0
- package/src/components/Rank/Rank.vue +1 -2
- package/src/components/Rankings/Rankings.vue +9 -10
- package/src/components/SplitButton/README.md +19 -0
- package/src/components/SplitButton/SplitButton.vue +26 -0
- package/src/index.js +44 -41
- package/assets/css/components/marketing.css +0 -1
- package/assets/css/components/marketing.css.map +0 -1
- package/assets/css/components/nav.old.css +0 -1
- package/assets/css/components/nav.old.css.map +0 -1
- package/assets/sass/components/nav.old.scss +0 -891
|
@@ -19,182 +19,169 @@ class iamMenu extends HTMLElement {
|
|
|
19
19
|
connectedCallback() {
|
|
20
20
|
const menuID = this.hasAttribute('id') ? this.getAttribute('id') : false;
|
|
21
21
|
const menuButton = document.querySelector(`[popovertarget="${menuID}"]`);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
let topLevelmenuItems = this.querySelectorAll(':scope > a, :scope > button, :scope > details > summary');
|
|
23
|
+
let menuItems = this.querySelectorAll('a, button');
|
|
24
|
+
if (this.closest('.menu__wrapper')) {
|
|
25
|
+
menuItems = this.shadowRoot.querySelector('slot').assignedElements({ flatten: true });
|
|
26
|
+
topLevelmenuItems = menuItems;
|
|
27
|
+
}
|
|
25
28
|
const subMenus = this.querySelectorAll('details');
|
|
26
29
|
let subNextIndex;
|
|
27
30
|
let subPrevIndex;
|
|
28
31
|
// Set the needed CSS styles to connect the ID attribute to the anchor name
|
|
29
32
|
if (menuID && menuButton) {
|
|
30
|
-
|
|
33
|
+
this.setAttribute('role', 'menu');
|
|
31
34
|
this.style['position-anchor'] = `--${menuID}`;
|
|
32
35
|
menuButton === null || menuButton === void 0 ? void 0 : menuButton.setAttribute('aria-haspopup', 'true');
|
|
33
36
|
menuButton === null || menuButton === void 0 ? void 0 : menuButton.style['anchor-name'] = `--${menuID}`;
|
|
34
37
|
menuButton === null || menuButton === void 0 ? void 0 : menuButton.setAttribute('aria-controls', menuID);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
item.setAttribute('
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
case 27: // Esc
|
|
53
|
-
if (activeItem.closest('details')) {
|
|
54
|
-
event.stopPropagation();
|
|
55
|
-
event.preventDefault();
|
|
56
|
-
activeItem.closest('details').removeAttribute('open');
|
|
57
|
-
activeItem.closest('details').querySelector(':scope summary').focus();
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
event.stopPropagation();
|
|
61
|
-
menuButton.focus();
|
|
62
|
-
}
|
|
63
|
-
break;
|
|
64
|
-
case 32: // Space
|
|
65
|
-
case 13: // Enter
|
|
66
|
-
if (activeItem.matches('summary') && !activeItem.parentElement.matches('details[open]')) {
|
|
67
|
-
activeItem.parentElement.setAttribute('open', true);
|
|
68
|
-
const subMenuItems = activeItem
|
|
69
|
-
.closest('details')
|
|
70
|
-
.querySelectorAll('a, button, :scope details > summary');
|
|
71
|
-
Array.from(subMenuItems)[0].focus();
|
|
72
|
-
}
|
|
73
|
-
break;
|
|
74
|
-
case 35: // end
|
|
75
|
-
event.stopPropagation();
|
|
76
|
-
event.preventDefault();
|
|
77
|
-
this.querySelector('details[open]').removeAttribute('open');
|
|
78
|
-
Array.from(menuItems)[menuItems.length - 1].focus();
|
|
79
|
-
break;
|
|
80
|
-
case 36: // home
|
|
81
|
-
event.stopPropagation();
|
|
82
|
-
event.preventDefault();
|
|
83
|
-
this.querySelector('details[open]').removeAttribute('open');
|
|
84
|
-
Array.from(menuItems)[0].focus();
|
|
85
|
-
break;
|
|
86
|
-
case 38: // up
|
|
38
|
+
}
|
|
39
|
+
menuItems.forEach((item, index) => {
|
|
40
|
+
item.setAttribute('role', 'menuitem');
|
|
41
|
+
item.setAttribute('tabindex', '0');
|
|
42
|
+
if (index == 0) {
|
|
43
|
+
item.setAttribute('autofocus', true);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
this.addEventListener('keydown', (event) => {
|
|
47
|
+
if (event && event.target instanceof HTMLElement && event.target.closest('a, button, summary')) {
|
|
48
|
+
const activeItem = document.activeElement;
|
|
49
|
+
const prevIndex = Array.from(topLevelmenuItems).indexOf(activeItem) - 1;
|
|
50
|
+
const nextIndex = Array.from(topLevelmenuItems).indexOf(activeItem) + 1;
|
|
51
|
+
switch (event.keyCode // change to event.key to key to use the above variable
|
|
52
|
+
) {
|
|
53
|
+
case 27: // Esc
|
|
54
|
+
if (activeItem.closest('details')) {
|
|
87
55
|
event.stopPropagation();
|
|
88
56
|
event.preventDefault();
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
Array.from(topLevelmenuItems)[topLevelmenuItems.length - 1].focus();
|
|
94
|
-
}
|
|
95
|
-
else if (activeItem.closest('details')) {
|
|
96
|
-
const subMenuItems = activeItem
|
|
97
|
-
.closest('details')
|
|
98
|
-
.querySelectorAll('a, button, :scope details > summary');
|
|
99
|
-
subPrevIndex = Array.from(subMenuItems).indexOf(activeItem) - 1;
|
|
100
|
-
if (Array.from(subMenuItems)[subPrevIndex] != undefined)
|
|
101
|
-
Array.from(subMenuItems)[subPrevIndex].focus();
|
|
102
|
-
else
|
|
103
|
-
Array.from(subMenuItems)[subMenuItems.length - 1].focus();
|
|
104
|
-
}
|
|
105
|
-
break;
|
|
106
|
-
case 40: // down
|
|
57
|
+
activeItem.closest('details').removeAttribute('open');
|
|
58
|
+
activeItem.closest('details').querySelector(':scope summary').focus();
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
107
61
|
event.stopPropagation();
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
62
|
+
menuButton.focus();
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
case 32: // Space
|
|
66
|
+
case 13: // Enter
|
|
67
|
+
break;
|
|
68
|
+
case 35: // end
|
|
69
|
+
event.stopPropagation();
|
|
70
|
+
event.preventDefault();
|
|
71
|
+
this.querySelector('details[open]').removeAttribute('open');
|
|
72
|
+
Array.from(menuItems)[menuItems.length - 1].focus();
|
|
73
|
+
break;
|
|
74
|
+
case 36: // home
|
|
75
|
+
event.stopPropagation();
|
|
76
|
+
event.preventDefault();
|
|
77
|
+
this.querySelector('details[open]').removeAttribute('open');
|
|
78
|
+
Array.from(menuItems)[0].focus();
|
|
79
|
+
break;
|
|
80
|
+
case 38: // up
|
|
81
|
+
event.stopPropagation();
|
|
82
|
+
event.preventDefault();
|
|
83
|
+
if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {
|
|
84
|
+
if (Array.from(topLevelmenuItems)[prevIndex] != undefined)
|
|
85
|
+
Array.from(topLevelmenuItems)[prevIndex].focus();
|
|
86
|
+
else
|
|
87
|
+
Array.from(topLevelmenuItems)[topLevelmenuItems.length - 1].focus();
|
|
88
|
+
}
|
|
89
|
+
else if (activeItem.closest('details')) {
|
|
90
|
+
const subMenuItems = activeItem
|
|
91
|
+
.closest('details')
|
|
92
|
+
.querySelectorAll('a, button, :scope details > summary');
|
|
93
|
+
subPrevIndex = Array.from(subMenuItems).indexOf(activeItem) - 1;
|
|
94
|
+
if (Array.from(subMenuItems)[subPrevIndex] != undefined)
|
|
95
|
+
Array.from(subMenuItems)[subPrevIndex].focus();
|
|
96
|
+
else
|
|
97
|
+
Array.from(subMenuItems)[subMenuItems.length - 1].focus();
|
|
98
|
+
}
|
|
99
|
+
break;
|
|
100
|
+
case 40: // down
|
|
101
|
+
event.stopPropagation();
|
|
102
|
+
event.preventDefault();
|
|
103
|
+
if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {
|
|
104
|
+
if (Array.from(topLevelmenuItems)[nextIndex] != undefined)
|
|
105
|
+
Array.from(topLevelmenuItems)[nextIndex].focus();
|
|
106
|
+
else
|
|
107
|
+
Array.from(topLevelmenuItems)[0].focus();
|
|
108
|
+
}
|
|
109
|
+
else if (activeItem.closest('details')) {
|
|
110
|
+
const subMenuItems = activeItem
|
|
111
|
+
.closest('details')
|
|
112
|
+
.querySelectorAll('a, button, :scope details > summary');
|
|
113
|
+
subNextIndex = Array.from(subMenuItems).indexOf(activeItem) + 1;
|
|
114
|
+
if (Array.from(subMenuItems)[subNextIndex] != undefined)
|
|
115
|
+
Array.from(subMenuItems)[subNextIndex].focus();
|
|
116
|
+
else
|
|
117
|
+
Array.from(subMenuItems)[0].focus();
|
|
118
|
+
}
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
this.addEventListener('toggle', (e) => {
|
|
124
|
+
var _a, _b, _c, _d;
|
|
125
|
+
const updateEvent = new CustomEvent(e.newState, { detail: { id: this.getAttribute('id'), target: e.target } });
|
|
126
|
+
this.dispatchEvent(updateEvent);
|
|
127
|
+
// Fix the focus
|
|
128
|
+
if (this.closest('.menu__wrapper')) {
|
|
129
|
+
menuItems[0].focus();
|
|
130
|
+
}
|
|
131
|
+
if (this.hasAttribute('popover-open')) {
|
|
132
|
+
e.preventDefault();
|
|
133
|
+
this.removeAttribute('popover-open');
|
|
134
|
+
this.hidePopover();
|
|
135
|
+
}
|
|
136
|
+
if (this.matches(':popover-open') && document.querySelector(`[popovertarget="${this.getAttribute('id')}"]`)) {
|
|
137
|
+
(_a = document.querySelector(`[popovertarget="${this.getAttribute('id')}"]`)) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-pressed', 'true');
|
|
138
|
+
(_b = document.querySelector(`[popovertarget="${this.getAttribute('id')}"]`)) === null || _b === void 0 ? void 0 : _b.classList.add('active');
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
(_c = document.querySelector(`[popovertarget="${this.getAttribute('id')}"]`)) === null || _c === void 0 ? void 0 : _c.removeAttribute('aria-pressed');
|
|
142
|
+
(_d = document.querySelector(`[popovertarget="${this.getAttribute('id')}"]`)) === null || _d === void 0 ? void 0 : _d.classList.remove('active');
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
this.addEventListener('click', (event) => {
|
|
146
|
+
if (event &&
|
|
147
|
+
event.target instanceof HTMLElement &&
|
|
148
|
+
event.target.closest('button:has(+ iam-menu:not([popover]))')) {
|
|
149
|
+
const button = event.target.closest('button:has(+ iam-menu)');
|
|
150
|
+
button === null || button === void 0 ? void 0 : button.classList.toggle('open');
|
|
151
|
+
}
|
|
152
|
+
else if (event && event.target instanceof HTMLElement && event.target.closest('button.selectable')) {
|
|
153
|
+
const button = event.target.closest('button.selectable');
|
|
154
|
+
if (this.hasAttribute('multiple')) {
|
|
155
|
+
button.classList.toggle('selected');
|
|
156
|
+
}
|
|
157
|
+
else if (button === null || button === void 0 ? void 0 : button.classList.contains('selected')) {
|
|
158
|
+
this.querySelectorAll('.selected').forEach((item) => {
|
|
159
|
+
item.classList.remove('selected');
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
this.querySelectorAll('.selected').forEach((item) => {
|
|
164
|
+
item.classList.remove('selected');
|
|
165
|
+
});
|
|
166
|
+
button.classList.add('selected');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
// safari and firefox anchor fix for cards
|
|
171
|
+
if (!CSS.supports('top', 'anchor(top)')) {
|
|
172
|
+
document.addEventListener('click', (event) => {
|
|
173
|
+
if (event.originalTarget && event.originalTarget.matches('[popovertarget]')) {
|
|
174
|
+
const button = event.originalTarget;
|
|
175
|
+
const popoverID = button.getAttribute('popovertarget');
|
|
176
|
+
const popover = document.getElementById(popoverID);
|
|
177
|
+
const viewportOffset = button.getBoundingClientRect();
|
|
178
|
+
const top = viewportOffset.top;
|
|
179
|
+
const left = viewportOffset.left;
|
|
180
|
+
popover.style.setProperty('top', top + 'px');
|
|
181
|
+
popover.style.setProperty('left', left + button.clientWidth + 'px');
|
|
127
182
|
}
|
|
128
183
|
});
|
|
129
184
|
}
|
|
130
|
-
// insert extra CSS to help style inline details and summary items to allow collapsible sub menus
|
|
131
|
-
if (this.querySelector('details') && !document.getElementById('menuGlobalStyles'))
|
|
132
|
-
document.head.insertAdjacentHTML('beforeend', `<style id="menuGlobalStyles">
|
|
133
|
-
iam-menu details > * {
|
|
134
|
-
background: unset !important;
|
|
135
|
-
border: unset !important;
|
|
136
|
-
color: inherit!important;
|
|
137
|
-
font-weight: inherit!important;
|
|
138
|
-
font-family: inherit!important;
|
|
139
|
-
font-size: 1rem!important;
|
|
140
|
-
display: block!important;
|
|
141
|
-
margin: var(--menu-item-margin, 0 0 0.25rem 0)!important;
|
|
142
|
-
padding: var(--menu-item-padding, 0)!important;
|
|
143
|
-
width: var(--menu-item-width, 100%)!important;
|
|
144
|
-
text-align: var(--menu-item-text-align, left)!important;
|
|
145
|
-
cursor: var(--menu-item-cursor, pointer)!important;
|
|
146
|
-
}
|
|
147
|
-
iam-menu details > *:after,
|
|
148
|
-
iam-menu details > *:not(summary):before {
|
|
149
|
-
display: none!important;
|
|
150
|
-
}
|
|
151
|
-
iam-menu details :is(button,a) {
|
|
152
|
-
padding-inline-start: var(--menu-dialog-offset,1rem)!important;
|
|
153
|
-
}
|
|
154
|
-
iam-menu details :is(button,a):last-child {
|
|
155
|
-
margin-block-end: var(--menu-dialog-offset,1rem)!important;
|
|
156
|
-
}
|
|
157
|
-
iam-menu details summary {
|
|
158
|
-
padding: 0 !important;
|
|
159
|
-
margin: var(--menu-item-margin, 0 0 0.25rem 0)!important;
|
|
160
|
-
}
|
|
161
|
-
iam-menu details summary:before {
|
|
162
|
-
text-align: center;
|
|
163
|
-
display: inline-block!important;
|
|
164
|
-
vertical-align: bottom;
|
|
165
|
-
float: right;
|
|
166
|
-
color: inherit;
|
|
167
|
-
height: 1em;
|
|
168
|
-
width: 1em;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
iam-menu details summary[class*="fa-"]:before {
|
|
172
|
-
font-family: var(--fa-font-family, "Font Awesome 6 Pro");
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
iam-menu details summary:not([class*="fa-"]:before {
|
|
176
|
-
--icon-arrow: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'%3e%3cpath d='M6.5,2l9,9-9,9' style='fill:none;stroke:%23000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px'/%3e%3c/svg%3e");
|
|
177
|
-
|
|
178
|
-
content: ""!important;
|
|
179
|
-
height: 1.2rem;
|
|
180
|
-
width: 1.2rem;
|
|
181
|
-
background: var(--colour-primary-theme);
|
|
182
|
-
mask-image: var(--icon, var(--icon-arrow));
|
|
183
|
-
mask-size: 50%;
|
|
184
|
-
mask-repeat: no-repeat;
|
|
185
|
-
mask-position: 50% 50%;
|
|
186
|
-
-webkit-mask-image: var(--icon, var(--icon-arrow));
|
|
187
|
-
-webkit-mask-size: 50%;
|
|
188
|
-
-webkit-mask-repeat: no-repeat;
|
|
189
|
-
-webkit-mask-position: 50% 50%;
|
|
190
|
-
z-index: 2;
|
|
191
|
-
display: inline-block;
|
|
192
|
-
vertical-align: bottom;
|
|
193
|
-
float: right;
|
|
194
|
-
rotate: 90deg;
|
|
195
|
-
color: inherit;
|
|
196
|
-
}
|
|
197
|
-
</style>`);
|
|
198
185
|
}
|
|
199
186
|
}
|
|
200
187
|
export default iamMenu;
|
|
@@ -1,77 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* iamKey v7.
|
|
2
|
+
* iamKey v7.4.0
|
|
3
3
|
* Copyright 2022-2025 iamproperty
|
|
4
|
-
*/class
|
|
4
|
+
*/class d extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const n=document.createElement("template");n.innerHTML=`
|
|
5
5
|
<style>
|
|
6
|
-
@layer components{iam-menu:defined{--menu-padding:
|
|
6
|
+
@layer components{iam-menu:defined{--menu-padding: 0.5rem;--border-color: var(--colour-border);--menu-item-margin: 0 0 0.5rem 0}iam-menu i{width:1.25rem}iam-menu>button:has(+iam-menu){position:relative}iam-menu>button:has(+iam-menu):after{content:"";height:var(--btn-line-height);width:1rem;height:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;position:absolute;top:calc(50% - .5rem);right:.5rem}iam-menu>button:has(+iam-menu:not([popover])):after{rotate:90deg}iam-menu>button.open:has(+iam-menu:not([popover])){position:relative}iam-menu>button.open:has(+iam-menu:not([popover])):after{top:calc(50% - .5rem);right:.5rem;rotate:270deg}iam-menu>button:has(+iam-menu:popover-open){position:relative}iam-menu>button:has(+iam-menu:popover-open):after{top:calc(50% - .5rem);right:.5rem;rotate:180deg}iam-menu>button:not(.open)+iam-menu:not([popover]){display:none}iam-menu>button+iam-menu:not([popover])>*:is(button,a,label){padding-left:2rem}}/*# sourceMappingURL=assets/css/components/menu.css.map */
|
|
7
7
|
|
|
8
8
|
</style>
|
|
9
9
|
<div class="menu--inner" part="inner">
|
|
10
10
|
<slot></slot>
|
|
11
|
-
</div>`,this.shadowRoot.appendChild(
|
|
12
|
-
iam-menu details > * {
|
|
13
|
-
background: unset !important;
|
|
14
|
-
border: unset !important;
|
|
15
|
-
color: inherit!important;
|
|
16
|
-
font-weight: inherit!important;
|
|
17
|
-
font-family: inherit!important;
|
|
18
|
-
font-size: 1rem!important;
|
|
19
|
-
display: block!important;
|
|
20
|
-
margin: var(--menu-item-margin, 0 0 0.25rem 0)!important;
|
|
21
|
-
padding: var(--menu-item-padding, 0)!important;
|
|
22
|
-
width: var(--menu-item-width, 100%)!important;
|
|
23
|
-
text-align: var(--menu-item-text-align, left)!important;
|
|
24
|
-
cursor: var(--menu-item-cursor, pointer)!important;
|
|
25
|
-
}
|
|
26
|
-
iam-menu details > *:after,
|
|
27
|
-
iam-menu details > *:not(summary):before {
|
|
28
|
-
display: none!important;
|
|
29
|
-
}
|
|
30
|
-
iam-menu details :is(button,a) {
|
|
31
|
-
padding-inline-start: var(--menu-dialog-offset,1rem)!important;
|
|
32
|
-
}
|
|
33
|
-
iam-menu details :is(button,a):last-child {
|
|
34
|
-
margin-block-end: var(--menu-dialog-offset,1rem)!important;
|
|
35
|
-
}
|
|
36
|
-
iam-menu details summary {
|
|
37
|
-
padding: 0 !important;
|
|
38
|
-
margin: var(--menu-item-margin, 0 0 0.25rem 0)!important;
|
|
39
|
-
}
|
|
40
|
-
iam-menu details summary:before {
|
|
41
|
-
text-align: center;
|
|
42
|
-
display: inline-block!important;
|
|
43
|
-
vertical-align: bottom;
|
|
44
|
-
float: right;
|
|
45
|
-
color: inherit;
|
|
46
|
-
height: 1em;
|
|
47
|
-
width: 1em;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
iam-menu details summary[class*="fa-"]:before {
|
|
51
|
-
font-family: var(--fa-font-family, "Font Awesome 6 Pro");
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
iam-menu details summary:not([class*="fa-"]:before {
|
|
55
|
-
--icon-arrow: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'%3e%3cpath d='M6.5,2l9,9-9,9' style='fill:none;stroke:%23000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px'/%3e%3c/svg%3e");
|
|
56
|
-
|
|
57
|
-
content: ""!important;
|
|
58
|
-
height: 1.2rem;
|
|
59
|
-
width: 1.2rem;
|
|
60
|
-
background: var(--colour-primary-theme);
|
|
61
|
-
mask-image: var(--icon, var(--icon-arrow));
|
|
62
|
-
mask-size: 50%;
|
|
63
|
-
mask-repeat: no-repeat;
|
|
64
|
-
mask-position: 50% 50%;
|
|
65
|
-
-webkit-mask-image: var(--icon, var(--icon-arrow));
|
|
66
|
-
-webkit-mask-size: 50%;
|
|
67
|
-
-webkit-mask-repeat: no-repeat;
|
|
68
|
-
-webkit-mask-position: 50% 50%;
|
|
69
|
-
z-index: 2;
|
|
70
|
-
display: inline-block;
|
|
71
|
-
vertical-align: bottom;
|
|
72
|
-
float: right;
|
|
73
|
-
rotate: 90deg;
|
|
74
|
-
color: inherit;
|
|
75
|
-
}
|
|
76
|
-
</style>`)}}export{p as default};
|
|
11
|
+
</div>`,this.shadowRoot.appendChild(n.content.cloneNode(!0))}connectedCallback(){const n=this.hasAttribute("id")?this.getAttribute("id"):!1,a=document.querySelector(`[popovertarget="${n}"]`);let r=this.querySelectorAll(":scope > a, :scope > button, :scope > details > summary"),l=this.querySelectorAll("a, button");this.closest(".menu__wrapper")&&(l=this.shadowRoot.querySelector("slot").assignedElements({flatten:!0}),r=l),this.querySelectorAll("details");let u,c;n&&a&&(this.setAttribute("role","menu"),this.style["position-anchor"]=`--${n}`,a?.setAttribute("aria-haspopup","true"),a==null||(a.style["anchor-name"]=`--${n}`),a?.setAttribute("aria-controls",n)),l.forEach((e,t)=>{e.setAttribute("role","menuitem"),e.setAttribute("tabindex","0"),t==0&&e.setAttribute("autofocus",!0)}),this.addEventListener("keydown",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("a, button, summary")){const t=document.activeElement,s=Array.from(r).indexOf(t)-1,i=Array.from(r).indexOf(t)+1;switch(e.keyCode){case 27:t.closest("details")?(e.stopPropagation(),e.preventDefault(),t.closest("details").removeAttribute("open"),t.closest("details").querySelector(":scope summary").focus()):(e.stopPropagation(),a.focus());break;case 32:case 13:break;case 35:e.stopPropagation(),e.preventDefault(),this.querySelector("details[open]").removeAttribute("open"),Array.from(l)[l.length-1].focus();break;case 36:e.stopPropagation(),e.preventDefault(),this.querySelector("details[open]").removeAttribute("open"),Array.from(l)[0].focus();break;case 38:if(e.stopPropagation(),e.preventDefault(),Array.from(r).indexOf(t)>-1)Array.from(r)[s]!=null?Array.from(r)[s].focus():Array.from(r)[r.length-1].focus();else if(t.closest("details")){const o=t.closest("details").querySelectorAll("a, button, :scope details > summary");c=Array.from(o).indexOf(t)-1,Array.from(o)[c]!=null?Array.from(o)[c].focus():Array.from(o)[o.length-1].focus()}break;case 40:if(e.stopPropagation(),e.preventDefault(),Array.from(r).indexOf(t)>-1)Array.from(r)[i]!=null?Array.from(r)[i].focus():Array.from(r)[0].focus();else if(t.closest("details")){const o=t.closest("details").querySelectorAll("a, button, :scope details > summary");u=Array.from(o).indexOf(t)+1,Array.from(o)[u]!=null?Array.from(o)[u].focus():Array.from(o)[0].focus()}break}}}),this.addEventListener("toggle",e=>{var t,s,i,o;const m=new CustomEvent(e.newState,{detail:{id:this.getAttribute("id"),target:e.target}});this.dispatchEvent(m),this.closest(".menu__wrapper")&&l[0].focus(),this.hasAttribute("popover-open")&&(e.preventDefault(),this.removeAttribute("popover-open"),this.hidePopover()),this.matches(":popover-open")&&document.querySelector(`[popovertarget="${this.getAttribute("id")}"]`)?((t=document.querySelector(`[popovertarget="${this.getAttribute("id")}"]`))===null||t===void 0||t.setAttribute("aria-pressed","true"),(s=document.querySelector(`[popovertarget="${this.getAttribute("id")}"]`))===null||s===void 0||s.classList.add("active")):((i=document.querySelector(`[popovertarget="${this.getAttribute("id")}"]`))===null||i===void 0||i.removeAttribute("aria-pressed"),(o=document.querySelector(`[popovertarget="${this.getAttribute("id")}"]`))===null||o===void 0||o.classList.remove("active"))}),this.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("button:has(+ iam-menu:not([popover]))")){const t=e.target.closest("button:has(+ iam-menu)");t?.classList.toggle("open")}else if(e&&e.target instanceof HTMLElement&&e.target.closest("button.selectable")){const t=e.target.closest("button.selectable");this.hasAttribute("multiple")?t.classList.toggle("selected"):t?.classList.contains("selected")?this.querySelectorAll(".selected").forEach(s=>{s.classList.remove("selected")}):(this.querySelectorAll(".selected").forEach(s=>{s.classList.remove("selected")}),t.classList.add("selected"))}}),CSS.supports("top","anchor(top)")||document.addEventListener("click",e=>{if(e.originalTarget&&e.originalTarget.matches("[popovertarget]")){const t=e.originalTarget,s=t.getAttribute("popovertarget"),i=document.getElementById(s),o=t.getBoundingClientRect(),m=o.top,p=o.left;i.style.setProperty("top",m+"px"),i.style.setProperty("left",p+t.clientWidth+"px")}})}}export{d as default};
|
|
77
12
|
//# sourceMappingURL=menu.component.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.component.min.js","sources":["menu.component.js"],"sourcesContent":["class iamMenu extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/menu.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${loadCSS}\n </style>\n <div class=\"menu--inner\" part=\"inner\">\n <slot></slot>\n </div>`;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n const menuID = this.hasAttribute('id') ? this.getAttribute('id') : false;\n const menuButton = document.querySelector(`[popovertarget=\"${menuID}\"]`);\n const menuInner = this.shadowRoot.querySelector('.menu--inner');\n const topLevelmenuItems = this.querySelectorAll(':scope > a, :scope > button, :scope > details > summary');\n const menuItems = this.querySelectorAll('a, button');\n const subMenus = this.querySelectorAll('details');\n let subNextIndex;\n let subPrevIndex;\n // Set the needed CSS styles to connect the ID attribute to the anchor name\n if (menuID && menuButton) {\n menuInner === null || menuInner === void 0 ? void 0 : menuInner.setAttribute('role', 'menu');\n this.style['position-anchor'] = `--${menuID}`;\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.setAttribute('aria-haspopup', 'true');\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.style['anchor-name'] = `--${menuID}`;\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.setAttribute('aria-controls', menuID);\n subMenus.forEach((item, index) => {\n item.setAttribute('role', 'menu');\n });\n menuItems.forEach((item, index) => {\n item.setAttribute('role', 'menuitem');\n item.setAttribute('tabindex', '0');\n if (index == 0) {\n item.setAttribute('autofocus', true);\n }\n });\n this.addEventListener('keydown', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('a, button, summary')) {\n const activeItem = document.activeElement;\n const prevIndex = Array.from(topLevelmenuItems).indexOf(activeItem) - 1;\n const nextIndex = Array.from(topLevelmenuItems).indexOf(activeItem) + 1;\n switch (event.keyCode // change to event.key to key to use the above variable\n ) {\n case 27: // Esc\n if (activeItem.closest('details')) {\n event.stopPropagation();\n event.preventDefault();\n activeItem.closest('details').removeAttribute('open');\n activeItem.closest('details').querySelector(':scope summary').focus();\n }\n else {\n event.stopPropagation();\n menuButton.focus();\n }\n break;\n case 32: // Space\n case 13: // Enter\n if (activeItem.matches('summary') && !activeItem.parentElement.matches('details[open]')) {\n activeItem.parentElement.setAttribute('open', true);\n const subMenuItems = activeItem\n .closest('details')\n .querySelectorAll('a, button, :scope details > summary');\n Array.from(subMenuItems)[0].focus();\n }\n break;\n case 35: // end\n event.stopPropagation();\n event.preventDefault();\n this.querySelector('details[open]').removeAttribute('open');\n Array.from(menuItems)[menuItems.length - 1].focus();\n break;\n case 36: // home\n event.stopPropagation();\n event.preventDefault();\n this.querySelector('details[open]').removeAttribute('open');\n Array.from(menuItems)[0].focus();\n break;\n case 38: // up\n event.stopPropagation();\n event.preventDefault();\n if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {\n if (Array.from(topLevelmenuItems)[prevIndex] != undefined)\n Array.from(topLevelmenuItems)[prevIndex].focus();\n else\n Array.from(topLevelmenuItems)[topLevelmenuItems.length - 1].focus();\n }\n else if (activeItem.closest('details')) {\n const subMenuItems = activeItem\n .closest('details')\n .querySelectorAll('a, button, :scope details > summary');\n subPrevIndex = Array.from(subMenuItems).indexOf(activeItem) - 1;\n if (Array.from(subMenuItems)[subPrevIndex] != undefined)\n Array.from(subMenuItems)[subPrevIndex].focus();\n else\n Array.from(subMenuItems)[subMenuItems.length - 1].focus();\n }\n break;\n case 40: // down\n event.stopPropagation();\n event.preventDefault();\n if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {\n if (Array.from(topLevelmenuItems)[nextIndex] != undefined)\n Array.from(topLevelmenuItems)[nextIndex].focus();\n else\n Array.from(topLevelmenuItems)[0].focus();\n }\n else if (activeItem.closest('details')) {\n const subMenuItems = activeItem\n .closest('details')\n .querySelectorAll('a, button, :scope details > summary');\n subNextIndex = Array.from(subMenuItems).indexOf(activeItem) + 1;\n if (Array.from(subMenuItems)[subNextIndex] != undefined)\n Array.from(subMenuItems)[subNextIndex].focus();\n else\n Array.from(subMenuItems)[0].focus();\n }\n break;\n }\n }\n });\n }\n // insert extra CSS to help style inline details and summary items to allow collapsible sub menus\n if (this.querySelector('details') && !document.getElementById('menuGlobalStyles'))\n document.head.insertAdjacentHTML('beforeend', `<style id=\"menuGlobalStyles\">\niam-menu details > * {\n background: unset !important;\n border: unset !important;\n color: inherit!important;\n font-weight: inherit!important;\n font-family: inherit!important;\n font-size: 1rem!important;\n display: block!important;\n margin: var(--menu-item-margin, 0 0 0.25rem 0)!important;\n padding: var(--menu-item-padding, 0)!important;\n width: var(--menu-item-width, 100%)!important;\n text-align: var(--menu-item-text-align, left)!important;\n cursor: var(--menu-item-cursor, pointer)!important;\n}\niam-menu details > *:after,\niam-menu details > *:not(summary):before {\n display: none!important;\n}\niam-menu details :is(button,a) {\n padding-inline-start: var(--menu-dialog-offset,1rem)!important;\n}\niam-menu details :is(button,a):last-child {\n margin-block-end: var(--menu-dialog-offset,1rem)!important;\n}\niam-menu details summary {\n padding: 0 !important;\n margin: var(--menu-item-margin, 0 0 0.25rem 0)!important;\n}\niam-menu details summary:before {\n text-align: center;\n display: inline-block!important;\n vertical-align: bottom;\n float: right;\n color: inherit;\n height: 1em;\n width: 1em;\n}\n\niam-menu details summary[class*=\"fa-\"]:before {\n font-family: var(--fa-font-family, \"Font Awesome 6 Pro\");\n}\n\niam-menu details summary:not([class*=\"fa-\"]:before {\n --icon-arrow: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'%3e%3cpath d='M6.5,2l9,9-9,9' style='fill:none;stroke:%23000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px'/%3e%3c/svg%3e\"); \n \n content: \"\"!important;\n height: 1.2rem;\n width: 1.2rem;\n background: var(--colour-primary-theme);\n mask-image: var(--icon, var(--icon-arrow));\n mask-size: 50%;\n mask-repeat: no-repeat;\n mask-position: 50% 50%;\n -webkit-mask-image: var(--icon, var(--icon-arrow));\n -webkit-mask-size: 50%;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-position: 50% 50%;\n z-index: 2;\n display: inline-block;\n vertical-align: bottom;\n float: right;\n rotate: 90deg;\n color: inherit;\n}\n</style>`);\n }\n}\nexport default iamMenu;\n"],"names":["iamMenu","template","menuID","menuButton","menuInner","topLevelmenuItems","menuItems","subMenus","subNextIndex","subPrevIndex","item","index","event","activeItem","prevIndex","nextIndex","subMenuItems"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"menu.component.min.js","sources":["menu.component.js"],"sourcesContent":["class iamMenu extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/menu.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${loadCSS}\n </style>\n <div class=\"menu--inner\" part=\"inner\">\n <slot></slot>\n </div>`;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n const menuID = this.hasAttribute('id') ? this.getAttribute('id') : false;\n const menuButton = document.querySelector(`[popovertarget=\"${menuID}\"]`);\n let topLevelmenuItems = this.querySelectorAll(':scope > a, :scope > button, :scope > details > summary');\n let menuItems = this.querySelectorAll('a, button');\n if (this.closest('.menu__wrapper')) {\n menuItems = this.shadowRoot.querySelector('slot').assignedElements({ flatten: true });\n topLevelmenuItems = menuItems;\n }\n const subMenus = this.querySelectorAll('details');\n let subNextIndex;\n let subPrevIndex;\n // Set the needed CSS styles to connect the ID attribute to the anchor name\n if (menuID && menuButton) {\n this.setAttribute('role', 'menu');\n this.style['position-anchor'] = `--${menuID}`;\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.setAttribute('aria-haspopup', 'true');\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.style['anchor-name'] = `--${menuID}`;\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.setAttribute('aria-controls', menuID);\n }\n menuItems.forEach((item, index) => {\n item.setAttribute('role', 'menuitem');\n item.setAttribute('tabindex', '0');\n if (index == 0) {\n item.setAttribute('autofocus', true);\n }\n });\n this.addEventListener('keydown', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('a, button, summary')) {\n const activeItem = document.activeElement;\n const prevIndex = Array.from(topLevelmenuItems).indexOf(activeItem) - 1;\n const nextIndex = Array.from(topLevelmenuItems).indexOf(activeItem) + 1;\n switch (event.keyCode // change to event.key to key to use the above variable\n ) {\n case 27: // Esc\n if (activeItem.closest('details')) {\n event.stopPropagation();\n event.preventDefault();\n activeItem.closest('details').removeAttribute('open');\n activeItem.closest('details').querySelector(':scope summary').focus();\n }\n else {\n event.stopPropagation();\n menuButton.focus();\n }\n break;\n case 32: // Space\n case 13: // Enter\n break;\n case 35: // end\n event.stopPropagation();\n event.preventDefault();\n this.querySelector('details[open]').removeAttribute('open');\n Array.from(menuItems)[menuItems.length - 1].focus();\n break;\n case 36: // home\n event.stopPropagation();\n event.preventDefault();\n this.querySelector('details[open]').removeAttribute('open');\n Array.from(menuItems)[0].focus();\n break;\n case 38: // up\n event.stopPropagation();\n event.preventDefault();\n if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {\n if (Array.from(topLevelmenuItems)[prevIndex] != undefined)\n Array.from(topLevelmenuItems)[prevIndex].focus();\n else\n Array.from(topLevelmenuItems)[topLevelmenuItems.length - 1].focus();\n }\n else if (activeItem.closest('details')) {\n const subMenuItems = activeItem\n .closest('details')\n .querySelectorAll('a, button, :scope details > summary');\n subPrevIndex = Array.from(subMenuItems).indexOf(activeItem) - 1;\n if (Array.from(subMenuItems)[subPrevIndex] != undefined)\n Array.from(subMenuItems)[subPrevIndex].focus();\n else\n Array.from(subMenuItems)[subMenuItems.length - 1].focus();\n }\n break;\n case 40: // down\n event.stopPropagation();\n event.preventDefault();\n if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {\n if (Array.from(topLevelmenuItems)[nextIndex] != undefined)\n Array.from(topLevelmenuItems)[nextIndex].focus();\n else\n Array.from(topLevelmenuItems)[0].focus();\n }\n else if (activeItem.closest('details')) {\n const subMenuItems = activeItem\n .closest('details')\n .querySelectorAll('a, button, :scope details > summary');\n subNextIndex = Array.from(subMenuItems).indexOf(activeItem) + 1;\n if (Array.from(subMenuItems)[subNextIndex] != undefined)\n Array.from(subMenuItems)[subNextIndex].focus();\n else\n Array.from(subMenuItems)[0].focus();\n }\n break;\n }\n }\n });\n this.addEventListener('toggle', (e) => {\n var _a, _b, _c, _d;\n const updateEvent = new CustomEvent(e.newState, { detail: { id: this.getAttribute('id'), target: e.target } });\n this.dispatchEvent(updateEvent);\n // Fix the focus\n if (this.closest('.menu__wrapper')) {\n menuItems[0].focus();\n }\n if (this.hasAttribute('popover-open')) {\n e.preventDefault();\n this.removeAttribute('popover-open');\n this.hidePopover();\n }\n if (this.matches(':popover-open') && document.querySelector(`[popovertarget=\"${this.getAttribute('id')}\"]`)) {\n (_a = document.querySelector(`[popovertarget=\"${this.getAttribute('id')}\"]`)) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-pressed', 'true');\n (_b = document.querySelector(`[popovertarget=\"${this.getAttribute('id')}\"]`)) === null || _b === void 0 ? void 0 : _b.classList.add('active');\n }\n else {\n (_c = document.querySelector(`[popovertarget=\"${this.getAttribute('id')}\"]`)) === null || _c === void 0 ? void 0 : _c.removeAttribute('aria-pressed');\n (_d = document.querySelector(`[popovertarget=\"${this.getAttribute('id')}\"]`)) === null || _d === void 0 ? void 0 : _d.classList.remove('active');\n }\n });\n this.addEventListener('click', (event) => {\n if (event &&\n event.target instanceof HTMLElement &&\n event.target.closest('button:has(+ iam-menu:not([popover]))')) {\n const button = event.target.closest('button:has(+ iam-menu)');\n button === null || button === void 0 ? void 0 : button.classList.toggle('open');\n }\n else if (event && event.target instanceof HTMLElement && event.target.closest('button.selectable')) {\n const button = event.target.closest('button.selectable');\n if (this.hasAttribute('multiple')) {\n button.classList.toggle('selected');\n }\n else if (button === null || button === void 0 ? void 0 : button.classList.contains('selected')) {\n this.querySelectorAll('.selected').forEach((item) => {\n item.classList.remove('selected');\n });\n }\n else {\n this.querySelectorAll('.selected').forEach((item) => {\n item.classList.remove('selected');\n });\n button.classList.add('selected');\n }\n }\n });\n // safari and firefox anchor fix for cards\n if (!CSS.supports('top', 'anchor(top)')) {\n document.addEventListener('click', (event) => {\n if (event.originalTarget && event.originalTarget.matches('[popovertarget]')) {\n const button = event.originalTarget;\n const popoverID = button.getAttribute('popovertarget');\n const popover = document.getElementById(popoverID);\n const viewportOffset = button.getBoundingClientRect();\n const top = viewportOffset.top;\n const left = viewportOffset.left;\n popover.style.setProperty('top', top + 'px');\n popover.style.setProperty('left', left + button.clientWidth + 'px');\n }\n });\n }\n }\n}\nexport default iamMenu;\n"],"names":["iamMenu","template","menuID","menuButton","topLevelmenuItems","menuItems","subNextIndex","subPrevIndex","item","index","event","activeItem","prevIndex","nextIndex","subMenuItems","_a","_b","_c","_d","updateEvent","button","popoverID","popover","viewportOffset","top","left"],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { trackComponent, trackComponentRegistered } from '../_global.js';
|
|
2
|
+
import milestone from '../../modules/milestone.js';
|
|
3
|
+
trackComponentRegistered('iam-milestone');
|
|
4
|
+
class iamMilestone extends HTMLElement {
|
|
5
|
+
constructor() {
|
|
6
|
+
var _a;
|
|
7
|
+
super();
|
|
8
|
+
this.attachShadow({ mode: 'open' });
|
|
9
|
+
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
10
|
+
? document.body.getAttribute('data-assets-location')
|
|
11
|
+
: '/assets';
|
|
12
|
+
const coreCSS = document.body.hasAttribute('data-core-css')
|
|
13
|
+
? document.body.getAttribute('data-core-css')
|
|
14
|
+
: `${assetLocation}/css/core.min.css`;
|
|
15
|
+
const template = document.createElement('template');
|
|
16
|
+
template.innerHTML = `
|
|
17
|
+
<style>
|
|
18
|
+
@import "${coreCSS}";
|
|
19
|
+
</style>
|
|
20
|
+
<div class="milestone-wrap" part="milestone-wrap">
|
|
21
|
+
<slot name="milestone-intro" class="milestone-intro" part="milestone-intro"></slot>
|
|
22
|
+
<slot>
|
|
23
|
+
<div class="task-wrap" part="milestone-task-wrap"></div>
|
|
24
|
+
</slot>
|
|
25
|
+
</div>
|
|
26
|
+
`;
|
|
27
|
+
(_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.appendChild(template.content.cloneNode(true));
|
|
28
|
+
}
|
|
29
|
+
connectedCallback() {
|
|
30
|
+
const milestoneComponent = this;
|
|
31
|
+
trackComponent(milestoneComponent, 'iam-milestone', [
|
|
32
|
+
'milestone-item-closed',
|
|
33
|
+
'milestone-item-opened',
|
|
34
|
+
]);
|
|
35
|
+
milestone(this);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export default iamMilestone;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* iamKey v7.4.0
|
|
3
|
+
* Copyright 2022-2025 iamproperty
|
|
4
|
+
*/const l=t=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:t})},m=(t,n,a)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:n}),a.forEach(e=>{t.addEventListener(e,function(s){const d={event:e,element:n,target:s.target};Object.keys(s.detail).forEach(o=>{const i=s.detail[o];d[o]=i}),window.dataLayer.push(d)})}),!0),p=function(t){const n=t.dataset.status;if(!n)return;const a=t.shadowRoot.querySelector(".milestone-wrap"),e=document.createElement("span");e.setAttribute("part","status"),e.classList.add("milestone-status"),e.innerHTML=`${n} Step`,n==="Current"&&t.classList.add("current"),a.insertAdjacentElement("afterbegin",e)},u=function(t){const n=t.shadowRoot.querySelector(".task-wrap"),a=t.dataset.items?JSON.parse(t.dataset.items):[];a.length&&(a.forEach(e=>{const s=document.createElement("details"),d=document.createElement("summary"),o=document.createElement("div"),i=document.createElement("p");o.classList.add("task-details"),d.innerHTML=e.name,e.date_completed&&d.classList.add("complete"),s.appendChild(d),e.description&&(i.innerHTML=e.description,o.appendChild(i)),e.actions.length&&o.appendChild(h(e.actions,d)),s.appendChild(o),n.insertAdjacentElement("beforeend",s),s.addEventListener("click",()=>{s?.hasAttribute("open")?r("milestone-item-closed",e.name,t):r("milestone-item-opened",e.name,t)})}),t.appendChild(n))},r=function(t,n,a){const e=new CustomEvent(t,{detail:{title:n}});a.dispatchEvent(e)},h=function(t,n){const a=document.createElement("ul"),e=t.length,d=t.filter(o=>o.date_completed).length||0;if(!(e<1))return n.innerHTML+=` (${d}/${e})`,t.forEach(o=>{const i=document.createElement("li"),c=document.createElement("span");o.date_completed&&(i.classList.add("complete"),c.classList.add("action-date"),c.innerHTML=o.date_completed),i.innerHTML=o.action,i.appendChild(c),a.appendChild(i)}),a},w=function(t){p(t),u(t)};l("iam-milestone");class L extends HTMLElement{constructor(){var n;super(),this.attachShadow({mode:"open"});const a=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",e=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${a}/css/core.min.css`,s=document.createElement("template");s.innerHTML=`
|
|
5
|
+
<style>
|
|
6
|
+
@import "${e}";
|
|
7
|
+
</style>
|
|
8
|
+
<div class="milestone-wrap" part="milestone-wrap">
|
|
9
|
+
<slot name="milestone-intro" class="milestone-intro" part="milestone-intro"></slot>
|
|
10
|
+
<slot>
|
|
11
|
+
<div class="task-wrap" part="milestone-task-wrap"></div>
|
|
12
|
+
</slot>
|
|
13
|
+
</div>
|
|
14
|
+
`,(n=this.shadowRoot)===null||n===void 0||n.appendChild(s.content.cloneNode(!0))}connectedCallback(){m(this,"iam-milestone",["milestone-item-closed","milestone-item-opened"]),w(this)}}export{L as default};
|
|
15
|
+
//# sourceMappingURL=milestone.component.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"milestone.component.min.js","sources":["../_global.js","../../modules/milestone.js","milestone.component.js"],"sourcesContent":["export const trackComponentRegistered = (componentName) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementRegistered',\n element: componentName,\n });\n};\nexport const trackComponent = (component, componentName, trackEvents) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementAdded',\n element: componentName,\n });\n trackEvents.forEach((eventName) => {\n component.addEventListener(eventName, function (event) {\n const eventDetails = {\n event: eventName,\n element: componentName,\n target: event.target,\n };\n Object.keys(event.detail).forEach((eventKey) => {\n const eventDetail = event.detail[eventKey];\n eventDetails[eventKey] = eventDetail;\n });\n window.dataLayer.push(eventDetails);\n });\n });\n return true;\n};\n","export const setStatus = function (milestoneElement) {\n const status = milestoneElement.dataset.status;\n if (!status) {\n return;\n }\n const milestoneWrap = milestoneElement.shadowRoot.querySelector('.milestone-wrap');\n const statusTag = document.createElement('span');\n statusTag.setAttribute('part', 'status');\n statusTag.classList.add('milestone-status');\n statusTag.innerHTML = `${status} Step`;\n if (status === 'Current') {\n milestoneElement.classList.add('current');\n }\n milestoneWrap.insertAdjacentElement('afterbegin', statusTag);\n};\nexport const getMilestoneTasks = function (milestoneElement) {\n const taskWrap = milestoneElement.shadowRoot.querySelector('.task-wrap');\n const tasks = milestoneElement.dataset.items ? JSON.parse(milestoneElement.dataset.items) : [];\n if (!tasks.length) {\n return;\n }\n tasks.forEach(task => {\n const taskItem = document.createElement('details');\n const taskName = document.createElement('summary');\n const detailsWrap = document.createElement('div');\n const taskDescription = document.createElement('p');\n detailsWrap.classList.add('task-details');\n taskName.innerHTML = task.name;\n if (task.date_completed) {\n taskName.classList.add('complete');\n }\n taskItem.appendChild(taskName);\n if (task.description) {\n taskDescription.innerHTML = task.description;\n detailsWrap.appendChild(taskDescription);\n }\n if (task.actions.length) {\n detailsWrap.appendChild(getSubtasks(task.actions, taskName));\n }\n taskItem.appendChild(detailsWrap);\n taskWrap.insertAdjacentElement('beforeend', taskItem);\n // Fire tracking events\n taskItem.addEventListener('click', () => {\n if (taskItem === null || taskItem === void 0 ? void 0 : taskItem.hasAttribute('open')) {\n itemInteractionEvent('milestone-item-closed', task.name, milestoneElement);\n }\n else {\n itemInteractionEvent('milestone-item-opened', task.name, milestoneElement);\n }\n });\n });\n milestoneElement.appendChild(taskWrap);\n};\nconst itemInteractionEvent = function (eventName, taskName, element) {\n const customEvent = new CustomEvent(eventName, {\n detail: {\n title: taskName,\n },\n });\n element.dispatchEvent(customEvent);\n};\nconst getSubtasks = function (actions, taskName) {\n const actionsWrap = document.createElement('ul');\n const totalCount = actions.length;\n const completed = actions.filter((action) => action.date_completed);\n const completedCount = completed.length || 0;\n if (totalCount < 1) {\n return;\n }\n taskName.innerHTML += ` (${completedCount}/${totalCount})`;\n actions.forEach(action => {\n const actionItem = document.createElement('li');\n const actionCompletedDate = document.createElement('span');\n if (action.date_completed) {\n actionItem.classList.add('complete');\n actionCompletedDate.classList.add('action-date');\n actionCompletedDate.innerHTML = action.date_completed;\n }\n actionItem.innerHTML = action.action;\n actionItem.appendChild(actionCompletedDate);\n actionsWrap.appendChild(actionItem);\n });\n return actionsWrap;\n};\nconst milestone = function (milestoneElement) {\n setStatus(milestoneElement);\n getMilestoneTasks(milestoneElement);\n};\nexport default milestone;\n","import { trackComponent, trackComponentRegistered } from '../_global.js';\nimport milestone from '../../modules/milestone.js';\ntrackComponentRegistered('iam-milestone');\nclass iamMilestone extends HTMLElement {\n constructor() {\n var _a;\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css')\n ? document.body.getAttribute('data-core-css')\n : `${assetLocation}/css/core.min.css`;\n const template = document.createElement('template');\n template.innerHTML = `\r\n <style>\r\n @import \"${coreCSS}\";\r\n </style>\r\n <div class=\"milestone-wrap\" part=\"milestone-wrap\">\r\n <slot name=\"milestone-intro\" class=\"milestone-intro\" part=\"milestone-intro\"></slot>\r\n <slot>\r\n <div class=\"task-wrap\" part=\"milestone-task-wrap\"></div>\r\n </slot>\r\n </div>\r\n `;\n (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n const milestoneComponent = this;\n trackComponent(milestoneComponent, 'iam-milestone', [\n 'milestone-item-closed',\n 'milestone-item-opened',\n ]);\n milestone(this);\n }\n}\nexport default iamMilestone;\n"],"names":["trackComponentRegistered","componentName","trackComponent","component","trackEvents","eventName","event","eventDetails","eventKey","eventDetail","setStatus","milestoneElement","status","milestoneWrap","statusTag","getMilestoneTasks","taskWrap","tasks","task","taskItem","taskName","detailsWrap","taskDescription","getSubtasks","itemInteractionEvent","element","customEvent","actions","actionsWrap","totalCount","completedCount","action","actionItem","actionCompletedDate","milestone","iamMilestone","_a","assetLocation","coreCSS","template"],"mappings":";;;IAAO,MAAMA,EAA4BC,GAAkB,CAEvD,OAAO,UAAY,OAAO,WAAa,CAAE,EACzC,OAAO,UAAU,KAAK,CAClB,MAAO,0BACP,QAASA,CACjB,CAAK,CACL,EACaC,EAAiB,CAACC,EAAWF,EAAeG,KAErD,OAAO,UAAY,OAAO,WAAa,CAAE,EACzC,OAAO,UAAU,KAAK,CAClB,MAAO,qBACP,QAASH,CACjB,CAAK,EACDG,EAAY,QAASC,GAAc,CAC/BF,EAAU,iBAAiBE,EAAW,SAAUC,EAAO,CACnD,MAAMC,EAAe,CACjB,MAAOF,EACP,QAASJ,EACT,OAAQK,EAAM,MACjB,EACD,OAAO,KAAKA,EAAM,MAAM,EAAE,QAASE,GAAa,CAC5C,MAAMC,EAAcH,EAAM,OAAOE,CAAQ,EACzCD,EAAaC,CAAQ,EAAIC,CACzC,CAAa,EACD,OAAO,UAAU,KAAKF,CAAY,CAC9C,CAAS,CACT,CAAK,EACM,IC7BEG,EAAY,SAAUC,EAAkB,CACjD,MAAMC,EAASD,EAAiB,QAAQ,OACxC,GAAI,CAACC,EACD,OAEJ,MAAMC,EAAgBF,EAAiB,WAAW,cAAc,iBAAiB,EAC3EG,EAAY,SAAS,cAAc,MAAM,EAC/CA,EAAU,aAAa,OAAQ,QAAQ,EACvCA,EAAU,UAAU,IAAI,kBAAkB,EAC1CA,EAAU,UAAY,GAAGF,CAAM,QAC3BA,IAAW,WACXD,EAAiB,UAAU,IAAI,SAAS,EAE5CE,EAAc,sBAAsB,aAAcC,CAAS,CAC/D,EACaC,EAAoB,SAAUJ,EAAkB,CACzD,MAAMK,EAAWL,EAAiB,WAAW,cAAc,YAAY,EACjEM,EAAQN,EAAiB,QAAQ,MAAQ,KAAK,MAAMA,EAAiB,QAAQ,KAAK,EAAI,CAAE,EACzFM,EAAM,SAGXA,EAAM,QAAQC,GAAQ,CAClB,MAAMC,EAAW,SAAS,cAAc,SAAS,EAC3CC,EAAW,SAAS,cAAc,SAAS,EAC3CC,EAAc,SAAS,cAAc,KAAK,EAC1CC,EAAkB,SAAS,cAAc,GAAG,EAClDD,EAAY,UAAU,IAAI,cAAc,EACxCD,EAAS,UAAYF,EAAK,KACtBA,EAAK,gBACLE,EAAS,UAAU,IAAI,UAAU,EAErCD,EAAS,YAAYC,CAAQ,EACzBF,EAAK,cACLI,EAAgB,UAAYJ,EAAK,YACjCG,EAAY,YAAYC,CAAe,GAEvCJ,EAAK,QAAQ,QACbG,EAAY,YAAYE,EAAYL,EAAK,QAASE,CAAQ,CAAC,EAE/DD,EAAS,YAAYE,CAAW,EAChCL,EAAS,sBAAsB,YAAaG,CAAQ,EAEpDA,EAAS,iBAAiB,QAAS,IAAM,CACmBA,GAAS,aAAa,MAAM,EAChFK,EAAqB,wBAAyBN,EAAK,KAAMP,CAAgB,EAGzEa,EAAqB,wBAAyBN,EAAK,KAAMP,CAAgB,CAEzF,CAAS,CACT,CAAK,EACDA,EAAiB,YAAYK,CAAQ,EACzC,EACMQ,EAAuB,SAAUnB,EAAWe,EAAUK,EAAS,CACjE,MAAMC,EAAc,IAAI,YAAYrB,EAAW,CAC3C,OAAQ,CACJ,MAAOe,CACV,CACT,CAAK,EACDK,EAAQ,cAAcC,CAAW,CACrC,EACMH,EAAc,SAAUI,EAASP,EAAU,CAC7C,MAAMQ,EAAc,SAAS,cAAc,IAAI,EACzCC,EAAaF,EAAQ,OAErBG,EADYH,EAAQ,OAAQI,GAAWA,EAAO,cAAc,EACjC,QAAU,EAC3C,GAAI,EAAAF,EAAa,GAGjB,OAAAT,EAAS,WAAa,KAAKU,CAAc,IAAID,CAAU,IACvDF,EAAQ,QAAQI,GAAU,CACtB,MAAMC,EAAa,SAAS,cAAc,IAAI,EACxCC,EAAsB,SAAS,cAAc,MAAM,EACrDF,EAAO,iBACPC,EAAW,UAAU,IAAI,UAAU,EACnCC,EAAoB,UAAU,IAAI,aAAa,EAC/CA,EAAoB,UAAYF,EAAO,gBAE3CC,EAAW,UAAYD,EAAO,OAC9BC,EAAW,YAAYC,CAAmB,EAC1CL,EAAY,YAAYI,CAAU,CAC1C,CAAK,EACMJ,CACX,EACMM,EAAY,SAAUvB,EAAkB,CAC1CD,EAAUC,CAAgB,EAC1BI,EAAkBJ,CAAgB,CACtC,ECrFAX,EAAyB,eAAe,EACxC,MAAMmC,UAAqB,WAAY,CACnC,aAAc,CACV,IAAIC,EACJ,MAAO,EACP,KAAK,aAAa,CAAE,KAAM,MAAM,CAAE,EAClC,MAAMC,EAAgB,SAAS,KAAK,aAAa,sBAAsB,EACjE,SAAS,KAAK,aAAa,sBAAsB,EACjD,UACAC,EAAU,SAAS,KAAK,aAAa,eAAe,EACpD,SAAS,KAAK,aAAa,eAAe,EAC1C,GAAGD,CAAa,oBAChBE,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OASbF,EAAK,KAAK,cAAgB,MAAQA,IAAO,QAAkBA,EAAG,YAAYG,EAAS,QAAQ,UAAU,EAAI,CAAC,CACnH,CACI,mBAAoB,CAEhBrC,EAD2B,KACQ,gBAAiB,CAChD,wBACA,uBACZ,CAAS,EACDgC,EAAU,IAAI,CACtB,CACA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { trackComponent, trackComponentRegistered } from '../_global.js';
|
|
2
|
+
import milestoneGroup from '../../modules/milestone-group.js';
|
|
3
|
+
trackComponentRegistered('iam-milestone-group');
|
|
4
|
+
class iamMilestoneGroup extends HTMLElement {
|
|
5
|
+
constructor() {
|
|
6
|
+
var _a;
|
|
7
|
+
super();
|
|
8
|
+
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
9
|
+
? document.body.getAttribute('data-assets-location')
|
|
10
|
+
: '/assets';
|
|
11
|
+
const coreCSS = document.body.hasAttribute('data-core-css')
|
|
12
|
+
? document.body.getAttribute('data-core-css')
|
|
13
|
+
: `${assetLocation}/css/core.min.css`;
|
|
14
|
+
const template = document.createElement('template');
|
|
15
|
+
template.innerHTML = `
|
|
16
|
+
<style>
|
|
17
|
+
@import "${coreCSS}";
|
|
18
|
+
</style>
|
|
19
|
+
<div class="milestone-group" part="milestone-group">
|
|
20
|
+
<slot>
|
|
21
|
+
</slot>
|
|
22
|
+
</div>
|
|
23
|
+
`;
|
|
24
|
+
(_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.appendChild(template.content.cloneNode(true));
|
|
25
|
+
}
|
|
26
|
+
connectedCallback() {
|
|
27
|
+
const milestoneGroupComponent = this;
|
|
28
|
+
trackComponent(milestoneGroupComponent, 'iam-milestone-group', [
|
|
29
|
+
'hide-future-items',
|
|
30
|
+
'show-future-items'
|
|
31
|
+
]);
|
|
32
|
+
milestoneGroup(this);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export default iamMilestoneGroup;
|