@iamproperty/components 7.4.0 → 7.5.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/README.md +1 -1
- 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/address-lookup.component.css +1 -0
- package/assets/css/components/address-lookup.component.css.map +1 -0
- package/assets/css/components/barchart.component.css +1 -1
- package/assets/css/components/barchart.component.css.map +1 -1
- package/assets/css/components/calendar.component.css +1 -1
- package/assets/css/components/calendar.component.css.map +1 -1
- package/assets/css/components/calendar.config.css.map +1 -1
- package/assets/css/components/card.component.css +1 -1
- package/assets/css/components/card.component.css.map +1 -1
- package/assets/css/components/carousel.component.css +1 -1
- package/assets/css/components/carousel.component.css.map +1 -1
- package/assets/css/components/charts.css +1 -1
- package/assets/css/components/charts.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 -1
- package/assets/css/components/content.component.css.map +1 -1
- package/assets/css/components/darkmode.component.css +1 -0
- package/assets/css/components/darkmode.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/inline-edit.css.map +1 -1
- package/assets/css/components/{menu.css → menu.global.css} +1 -1
- package/assets/css/components/menu.global.css.map +1 -0
- package/assets/css/components/milestone.css +1 -1
- package/assets/css/components/milestone.css.map +1 -1
- package/assets/css/components/multi-step.component.css +1 -1
- package/assets/css/components/multi-step.component.css.map +1 -1
- package/assets/css/components/multiselect.css.map +1 -1
- package/assets/css/components/multiselect.preload.css +1 -1
- package/assets/css/components/multiselect.preload.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/notification.css +1 -1
- package/assets/css/components/notification.css.map +1 -1
- package/assets/css/components/pagination.css.map +1 -1
- package/assets/css/components/property-searchbar.css +1 -1
- package/assets/css/components/property-searchbar.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/word-count.component.css +1 -0
- package/assets/css/components/word-count.component.css.map +1 -0
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/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.js +40 -19
- package/assets/js/components/accordion/accordion.component.min.js +15 -15
- package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
- package/assets/js/components/actionbar/actionbar.component.js +8 -0
- package/assets/js/components/actionbar/actionbar.component.min.js +6 -5
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +6 -8
- package/assets/js/components/address-lookup/address-lookup.component.min.js +10 -12
- 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 +1 -1
- 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/applied-filters/applied-filters.component.min.js.map +1 -1
- package/assets/js/components/barchart/barchart.component.min.js +2 -2
- package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/bento-grid/bento-grid.component.min.js.map +1 -1
- package/assets/js/components/calendar/calendar.component.js +153 -136
- package/assets/js/components/calendar/calendar.component.min.js +3 -3
- package/assets/js/components/calendar/calendar.component.min.js.map +1 -1
- package/assets/js/components/card/card.component.js +3 -9
- package/assets/js/components/card/card.component.min.js +13 -7
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.js +17 -19
- package/assets/js/components/carousel/carousel.component.min.js +17 -19
- package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
- package/assets/js/components/content/content.component.min.js +2 -2
- package/assets/js/components/content/content.component.min.js.map +1 -1
- package/assets/js/components/darkmode/darkmode.component.js +70 -0
- package/assets/js/components/darkmode/darkmode.component.min.js +10 -0
- package/assets/js/components/darkmode/darkmode.component.min.js.map +1 -0
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
- package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
- package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
- package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
- package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
- package/assets/js/components/header/header.component.min.js +1 -1
- package/assets/js/components/header/header.component.min.js.map +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
- package/assets/js/components/marketing/marketing.component.min.js +1 -1
- package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
- package/assets/js/components/menu/menu.component.js +2 -2
- package/assets/js/components/menu/menu.component.min.js +4 -5
- package/assets/js/components/menu/menu.component.min.js.map +1 -1
- package/assets/js/components/milestone/milestone.component.js +12 -14
- package/assets/js/components/milestone/milestone.component.min.js +1 -1
- package/assets/js/components/milestone/milestone.component.min.js.map +1 -1
- package/assets/js/components/milestone-group/milestone-group.component.js +10 -12
- package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
- package/assets/js/components/milestone-group/milestone-group.component.min.js.map +1 -1
- package/assets/js/components/multi-step/multi-step.component.min.js +3 -3
- package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -1
- package/assets/js/components/multiselect/multiselect.component.js +2 -2
- package/assets/js/components/multiselect/multiselect.component.min.js +1 -1
- package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.js +2 -3
- package/assets/js/components/nav/nav.component.min.js +5 -5
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.js +1 -3
- package/assets/js/components/notification/notification.component.min.js +5 -5
- package/assets/js/components/notification/notification.component.min.js.map +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
- package/assets/js/components/rank/rank.component.min.js +1 -1
- package/assets/js/components/rank/rank.component.min.js.map +1 -1
- package/assets/js/components/rankings/rankings.component.min.js +1 -1
- 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/record-card/record-card.component.min.js.map +1 -1
- package/assets/js/components/search/search.component.min.js +1 -1
- package/assets/js/components/search/search.component.min.js.map +1 -1
- package/assets/js/components/slider/slider.component.min.js +1 -1
- package/assets/js/components/slider/slider.component.min.js.map +1 -1
- package/assets/js/components/split-button/split-button.component.js +1 -3
- package/assets/js/components/split-button/split-button.component.min.js +8 -11
- package/assets/js/components/split-button/split-button.component.min.js.map +1 -1
- package/assets/js/components/table/table.component.min.js +1 -1
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
- 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.min.js +1 -1
- 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.min.js +1 -1
- 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/tabs/tabs.component.min.js.map +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/word-count/word-count.component.js +81 -0
- package/assets/js/components/word-count/word-count.component.min.js +12 -0
- package/assets/js/components/word-count/word-count.component.min.js.map +1 -0
- package/assets/js/components.js +1 -0
- package/assets/js/modules/advanced-select.js +1 -1
- package/assets/js/modules/dynamicEvents.js +3 -3
- package/assets/js/modules/inputs.js +0 -18
- package/assets/js/modules/milestone.js +2 -2
- 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 +2 -1
- package/assets/sass/_components.scss +4 -4
- package/assets/sass/_example.scss +1 -1
- package/assets/sass/_functions/utility-mixins.scss +0 -1
- package/assets/sass/components/actionbar.component.scss +22 -0
- package/assets/sass/components/actionbar.global.scss +1 -1
- package/assets/sass/components/{address-lookup.scss → address-lookup.component.scss} +10 -0
- package/assets/sass/components/calendar.component.scss +163 -271
- package/assets/sass/components/calendar.config.scss +69 -122
- package/assets/sass/components/darkmode.component.scss +22 -0
- package/assets/sass/components/milestone.scss +69 -60
- package/assets/sass/components/multi-step.component.scss +1 -1
- package/assets/sass/components/multiselect.preload.scss +1 -1
- package/assets/sass/components/multiselect.scss +1 -2
- package/assets/sass/components/nav.component.scss +16 -6
- package/assets/sass/components/nav.global.scss +8 -12
- package/assets/sass/components/notification.scss +32 -13
- package/assets/sass/components/split-button.component.scss +3 -1
- package/assets/sass/components/table-basic.global.scss +32 -32
- package/assets/sass/components/word-count.component.scss +26 -0
- package/assets/sass/elements/admin-panel.scss +1 -1
- package/assets/sass/elements/buttons--compact.scss +1 -1
- package/assets/sass/elements/details.scss +33 -6
- package/assets/sass/elements/forms.scss +18 -33
- package/assets/sass/elements/lists.scss +1 -1
- package/assets/sass/elements/toggle-button.scss +1 -0
- package/assets/sass/foundations/colours.scss +0 -0
- package/assets/sass/foundations/reboot.scss +8 -1
- package/assets/sass/foundations/root.scss +41 -51
- package/assets/ts/components/accordion/accordion.component.ts +47 -26
- package/assets/ts/components/actionbar/actionbar.component.ts +10 -0
- package/assets/ts/components/address-lookup/address-lookup.component.ts +6 -8
- package/assets/ts/components/calendar/calendar.component.ts +368 -498
- package/assets/ts/components/card/card.component.ts +2 -9
- package/assets/ts/components/carousel/carousel.component.ts +17 -19
- package/assets/ts/components/darkmode/darkmode.component.ts +85 -0
- package/assets/ts/components/menu/menu.component.ts +2 -2
- package/assets/ts/components/milestone/milestone.component.ts +43 -45
- package/assets/ts/components/milestone-group/milestone-group.component.ts +39 -41
- package/assets/ts/components/multiselect/multiselect.component.ts +6 -15
- package/assets/ts/components/nav/nav.component.ts +8 -15
- package/assets/ts/components/notification/notification.component.ts +1 -5
- package/assets/ts/components/split-button/split-button.component.ts +1 -3
- package/assets/ts/components/word-count/word-count.component.ts +91 -0
- package/assets/ts/components.ts +1 -0
- package/assets/ts/modules/advanced-select.ts +11 -16
- package/assets/ts/modules/data-layer.md +0 -5
- package/assets/ts/modules/dynamicEvents.ts +6 -7
- package/assets/ts/modules/inputs.ts +0 -25
- package/assets/ts/modules/milestone-group.ts +39 -42
- package/assets/ts/modules/milestone.ts +119 -122
- package/assets/ts/scripts.ts +2 -1
- package/dist/components.es.js +1693 -41
- package/dist/components.umd.js +1032 -221
- package/package.json +6 -6
- package/src/components/Accordion/Accordion.vue +14 -23
- package/src/components/Accordion/AccordionItem.vue +27 -43
- package/src/components/Actionbar/Actionbar.vue +17 -19
- package/src/components/AddressLookup/AddressLookup.vue +17 -18
- package/src/components/AdvancedSelect/AdvancedSelect.vue +17 -18
- package/src/components/AppliedFilters/AppliedFilters.vue +16 -18
- package/src/components/Banner/Banner.vue +18 -21
- package/src/components/BarChart/BarChart.vue +17 -18
- package/src/components/Calendar/Calendar.vue +14 -20
- package/src/components/Card/Card.vue +17 -17
- package/src/components/Carousel/Carousel.vue +17 -20
- package/src/components/Content/Content.vue +17 -18
- package/src/components/DarkMode/DarkMode.vue +19 -0
- package/src/components/DoughnutChart/DoughnutChart.vue +17 -18
- package/src/components/FileUpload/FileUpload.vue +22 -28
- package/src/components/FilterCard/FilterCard.vue +17 -18
- package/src/components/Filterlist/Filterlist.vue +17 -0
- package/src/components/Header/Header.vue +28 -29
- package/src/components/InlineEdit/InlineEdit.vue +11 -19
- package/src/components/Menu/Menu.vue +17 -17
- package/src/components/Milestones/Milestone.vue +22 -27
- package/src/components/Milestones/MilestoneGroup.vue +24 -27
- package/src/components/Multiselect/Multiselect.vue +17 -18
- package/src/components/Nav/Nav.vue +17 -19
- package/src/components/Notification/Notification.vue +17 -15
- package/src/components/Pagination/Pagination.vue +16 -16
- package/src/components/Rank/Rank.vue +17 -18
- package/src/components/Rankings/Rankings.vue +17 -27
- package/src/components/RecordCard/RecordCard.vue +17 -18
- package/src/components/Search/Search.vue +17 -17
- package/src/components/Slider/Slider.vue +17 -17
- package/src/components/SplitButton/SplitButton.vue +17 -20
- package/src/components/Tabs/Tabs.vue +17 -17
- package/src/components/VideoCard/VideoCard.vue +17 -18
- package/src/components/WordCount/WordCount.vue +22 -0
- package/src/index.js +43 -44
- package/assets/css/components/address-lookup.css +0 -1
- package/assets/css/components/address-lookup.css.map +0 -1
- package/assets/css/components/menu.css.map +0 -1
- /package/assets/sass/components/{menu.scss → menu.global.scss} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function advancedSelect(advancedSelect, displayInputField, datalist, isSearch = false): boolean | void {
|
|
2
2
|
let currentFocus = -1;
|
|
3
3
|
|
|
4
|
-
if(!isSearch){
|
|
4
|
+
if (!isSearch) {
|
|
5
5
|
displayInputField.addEventListener('focus', function () {
|
|
6
6
|
displayInputField.setAttribute('placeholder', displayInputField.value);
|
|
7
7
|
displayInputField.setAttribute('data-value', displayInputField.value);
|
|
@@ -12,10 +12,8 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
|
|
|
12
12
|
|
|
13
13
|
datalist.style.display = 'block';
|
|
14
14
|
});
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
15
|
+
} else {
|
|
17
16
|
displayInputField.addEventListener('focus', function () {
|
|
18
|
-
|
|
19
17
|
displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));
|
|
20
18
|
displayInputField.setAttribute('list', '');
|
|
21
19
|
|
|
@@ -37,29 +35,24 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
|
|
|
37
35
|
if (option.innerHTML == '') option.innerHTML = option.value;
|
|
38
36
|
}
|
|
39
37
|
|
|
40
|
-
|
|
41
38
|
advancedSelect.addEventListener('click', function () {
|
|
42
|
-
|
|
43
39
|
if (event && event.target instanceof HTMLElement && event.target.closest('datalist option')) {
|
|
44
40
|
const option = event.target.closest('datalist option');
|
|
45
|
-
|
|
41
|
+
|
|
46
42
|
displayInputField.value = option.value;
|
|
47
43
|
|
|
48
|
-
if(typeof window.triggerDynamicEvent ==
|
|
49
|
-
window.triggerDynamicEvent(displayInputField);
|
|
44
|
+
if (typeof window.triggerDynamicEvent == 'function') window.triggerDynamicEvent(displayInputField);
|
|
50
45
|
|
|
51
46
|
datalist.style.display = 'none';
|
|
52
47
|
|
|
53
48
|
for (const optionInner of datalist.options) {
|
|
54
|
-
optionInner.classList.remove('active')
|
|
49
|
+
optionInner.classList.remove('active');
|
|
55
50
|
}
|
|
56
51
|
|
|
57
52
|
option.classList.add('active');
|
|
58
53
|
}
|
|
59
|
-
|
|
60
54
|
});
|
|
61
55
|
|
|
62
|
-
|
|
63
56
|
displayInputField.addEventListener('input', function () {
|
|
64
57
|
displayInputField.removeAttribute('data-value');
|
|
65
58
|
currentFocus = -1;
|
|
@@ -103,20 +96,22 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
|
|
|
103
96
|
}
|
|
104
97
|
}
|
|
105
98
|
|
|
106
|
-
|
|
107
99
|
// Add the empty button
|
|
108
100
|
displayInputField
|
|
109
101
|
.closest('label')
|
|
110
|
-
.insertAdjacentHTML(
|
|
102
|
+
.insertAdjacentHTML(
|
|
103
|
+
'beforeend',
|
|
104
|
+
'<button class="empty btn btn-action"><i class="fa-light fa-times me-0"></i></button>'
|
|
105
|
+
);
|
|
111
106
|
const closeBtn = advancedSelect.querySelector('.empty');
|
|
112
107
|
|
|
113
108
|
closeBtn.addEventListener('click', function (e) {
|
|
114
109
|
displayInputField.removeAttribute('placeholder');
|
|
115
110
|
displayInputField.removeAttribute('data-value');
|
|
116
111
|
displayInputField.value = '';
|
|
117
|
-
|
|
112
|
+
|
|
118
113
|
for (const optionInner of datalist.options) {
|
|
119
|
-
optionInner.classList.remove('active')
|
|
114
|
+
optionInner.classList.remove('active');
|
|
120
115
|
optionInner.removeAttribute('style');
|
|
121
116
|
}
|
|
122
117
|
});
|
|
@@ -13,28 +13,24 @@ The `createDataLayer()` function should be called in the JavaScript code of the
|
|
|
13
13
|
## Events Tracked
|
|
14
14
|
|
|
15
15
|
1. **"Pageview" Event**
|
|
16
|
-
|
|
17
16
|
- Description: This event is automatically pushed to the `window.dataLayer` array during the function's execution, representing the initial pageview with the current document title.
|
|
18
17
|
- Event Data:
|
|
19
18
|
- `event`: "Pageview"
|
|
20
19
|
- `pageTitle`: The title of the current document.
|
|
21
20
|
|
|
22
21
|
2. **"closeDetails" Event**
|
|
23
|
-
|
|
24
22
|
- Description: This event is triggered when a click occurs on an element with the attribute `[open] summary`, indicating that a summary element with the `[open]` attribute is being closed.
|
|
25
23
|
- Event Data:
|
|
26
24
|
- `event`: "closeDetails"
|
|
27
25
|
- `detailsTitle`: The text content of the `summary` element associated with the clicked element. If the `summary` element doesn't have any text content, an empty string is used.
|
|
28
26
|
|
|
29
27
|
3. **"openDetails" Event**
|
|
30
|
-
|
|
31
28
|
- Description: This event is triggered when a click occurs on a `summary` element (not associated with `[open]` attribute), indicating that a summary element is being opened.
|
|
32
29
|
- Event Data:
|
|
33
30
|
- `event`: "openDetails"
|
|
34
31
|
- `detailsTitle`: The text content of the clicked `summary` element. If the `summary` element doesn't have any text content, an empty string is used.
|
|
35
32
|
|
|
36
33
|
4. **"linkClicked" Event**
|
|
37
|
-
|
|
38
34
|
- Description: This event is triggered when a click occurs on an `a` (anchor) element.
|
|
39
35
|
- Event Data:
|
|
40
36
|
- `event`: "linkClicked"
|
|
@@ -43,7 +39,6 @@ The `createDataLayer()` function should be called in the JavaScript code of the
|
|
|
43
39
|
- `href`: The value of the `href` attribute of the `a` element. If the `a` element doesn't have an `href` attribute, an empty string is used.
|
|
44
40
|
|
|
45
41
|
5. **"buttonClicked" Event**
|
|
46
|
-
|
|
47
42
|
- Description: This event is triggered when a click occurs on a `button` element.
|
|
48
43
|
- Event Data:
|
|
49
44
|
- `event`: "buttonClicked"
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// Create the event listeners
|
|
2
|
-
window.triggerDynamicEvent = (element, event =
|
|
2
|
+
window.triggerDynamicEvent = (element, event = 'change'): void => {
|
|
3
3
|
console.log('event');
|
|
4
4
|
|
|
5
|
-
if(element.hasAttribute('data-change-events') && event ==
|
|
5
|
+
if (element.hasAttribute('data-change-events') && event == 'change')
|
|
6
6
|
splitEvents(element, element.getAttribute('data-change-events'));
|
|
7
|
-
|
|
8
|
-
if(element.hasAttribute('data-click-events') && event ==
|
|
7
|
+
|
|
8
|
+
if (element.hasAttribute('data-click-events') && event == 'click')
|
|
9
9
|
splitEvents(element, element.getAttribute('data-click-events'));
|
|
10
|
-
}
|
|
10
|
+
};
|
|
11
11
|
|
|
12
12
|
const createDynamicEvents = (): void => {
|
|
13
13
|
// Change event
|
|
@@ -56,8 +56,7 @@ const checkConditions = (element, event): void | boolean => {
|
|
|
56
56
|
|
|
57
57
|
if (document.querySelector(`${event['in-list']} option[value="${element.value}"]`)) {
|
|
58
58
|
runEvent(match, event, 'if');
|
|
59
|
-
}
|
|
60
|
-
else runEvent(match, event, 'else');
|
|
59
|
+
} else runEvent(match, event, 'else');
|
|
61
60
|
|
|
62
61
|
return false;
|
|
63
62
|
} else if ('event' in event) {
|
|
@@ -2,12 +2,6 @@ import hibpCheck from '../vendor/hibp.js';
|
|
|
2
2
|
|
|
3
3
|
const extendInputs = (body): void => {
|
|
4
4
|
function loadInput(): void {
|
|
5
|
-
// maxlength counter init
|
|
6
|
-
Array.from(document.querySelectorAll('input[maxlength],textarea[maxlength]')).forEach((input) => {
|
|
7
|
-
const wrapper = input.parentElement;
|
|
8
|
-
setMaxlengthVars(input, wrapper);
|
|
9
|
-
});
|
|
10
|
-
|
|
11
5
|
Array.from(document.querySelectorAll('label input')).forEach((input) => {
|
|
12
6
|
if (!input.closest('label').querySelector('.optional-text') && !input.hasAttribute('required')) {
|
|
13
7
|
if (input.parentNode.tagName.toLowerCase() == 'span')
|
|
@@ -76,9 +70,6 @@ const extendInputs = (body): void => {
|
|
|
76
70
|
if (input.hasAttribute('type') && input.getAttribute('type') == 'color')
|
|
77
71
|
input.nextElementSibling.value = input.value;
|
|
78
72
|
|
|
79
|
-
if (input.hasAttribute('maxlength') && input.nextElementSibling)
|
|
80
|
-
input.nextElementSibling.setAttribute('data-count', input.value.length);
|
|
81
|
-
|
|
82
73
|
if (input.hasAttribute('data-strength-checker')) checkPWDStrength(input);
|
|
83
74
|
}
|
|
84
75
|
});
|
|
@@ -129,22 +120,6 @@ const extendInputs = (body): void => {
|
|
|
129
120
|
});
|
|
130
121
|
};
|
|
131
122
|
|
|
132
|
-
export const setMaxlengthVars = (input): void => {
|
|
133
|
-
const wrapper = input.parentElement;
|
|
134
|
-
const maxlength = input.getAttribute('maxlength');
|
|
135
|
-
|
|
136
|
-
wrapper.style.setProperty('--maxlength', maxlength);
|
|
137
|
-
|
|
138
|
-
let span = input.nextElementSibling;
|
|
139
|
-
|
|
140
|
-
if (!span || (span && span.classList.contains('invalid-feedback'))) {
|
|
141
|
-
span = document.createElement('span');
|
|
142
|
-
wrapper.insertBefore(span, input.nextSibling);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
span.setAttribute('data-count', input.value.length);
|
|
146
|
-
};
|
|
147
|
-
|
|
148
123
|
export const changeType = (input, type): void => {
|
|
149
124
|
if (input.hasAttribute('type') && input.getAttribute('type') == 'password')
|
|
150
125
|
input.setAttribute('data-password-type', true);
|
|
@@ -1,42 +1,39 @@
|
|
|
1
|
-
export const showFuture = function (milestoneGroupElement: Element): void {
|
|
2
|
-
const futureToggle = milestoneGroupElement.dataset.showAllToggle;
|
|
3
|
-
|
|
4
|
-
if (!futureToggle) {
|
|
5
|
-
return;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
const toggleBtn = document.createElement('button');
|
|
9
|
-
toggleBtn.innerHTML = 'Show next steps';
|
|
10
|
-
toggleBtn.classList.add('btn', 'btn-tertiary', 'show-all-toggle');
|
|
11
|
-
|
|
12
|
-
milestoneGroupElement.appendChild(toggleBtn)
|
|
13
|
-
|
|
14
|
-
toggleBtn.addEventListener('click', () => {
|
|
15
|
-
if(milestoneGroupElement.classList.contains('show-all')) {
|
|
16
|
-
toggleBtn.innerHTML = 'Show next steps';
|
|
17
|
-
|
|
18
|
-
milestoneGroupElement.classList.remove('show-all');
|
|
19
|
-
toggleInteractionEvent('hide-future-items', milestoneGroupElement)
|
|
20
|
-
} else {
|
|
21
|
-
toggleBtn.innerHTML = 'Hide next steps';
|
|
22
|
-
|
|
23
|
-
milestoneGroupElement.classList.add('show-all');
|
|
24
|
-
toggleInteractionEvent('show-future-items', milestoneGroupElement)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
export default milestoneGroup;
|
|
1
|
+
export const showFuture = function (milestoneGroupElement: Element): void {
|
|
2
|
+
const futureToggle = milestoneGroupElement.dataset.showAllToggle;
|
|
3
|
+
|
|
4
|
+
if (!futureToggle) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const toggleBtn = document.createElement('button');
|
|
9
|
+
toggleBtn.innerHTML = 'Show next steps';
|
|
10
|
+
toggleBtn.classList.add('btn', 'btn-tertiary', 'show-all-toggle');
|
|
11
|
+
|
|
12
|
+
milestoneGroupElement.appendChild(toggleBtn);
|
|
13
|
+
|
|
14
|
+
toggleBtn.addEventListener('click', () => {
|
|
15
|
+
if (milestoneGroupElement.classList.contains('show-all')) {
|
|
16
|
+
toggleBtn.innerHTML = 'Show next steps';
|
|
17
|
+
|
|
18
|
+
milestoneGroupElement.classList.remove('show-all');
|
|
19
|
+
toggleInteractionEvent('hide-future-items', milestoneGroupElement);
|
|
20
|
+
} else {
|
|
21
|
+
toggleBtn.innerHTML = 'Hide next steps';
|
|
22
|
+
|
|
23
|
+
milestoneGroupElement.classList.add('show-all');
|
|
24
|
+
toggleInteractionEvent('show-future-items', milestoneGroupElement);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const toggleInteractionEvent = function (eventName: string, element: Element): void {
|
|
30
|
+
const customEvent = new CustomEvent(eventName, {});
|
|
31
|
+
|
|
32
|
+
element.dispatchEvent(customEvent);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const milestoneGroup = function (milestoneGroupElement: Element): void {
|
|
36
|
+
showFuture(milestoneGroupElement);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default milestoneGroup;
|
|
@@ -1,122 +1,119 @@
|
|
|
1
|
-
export const setStatus = function (milestoneElement: Element): void {
|
|
2
|
-
const status = milestoneElement.dataset.status;
|
|
3
|
-
|
|
4
|
-
if(!status) {
|
|
5
|
-
return;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
const milestoneWrap = milestoneElement.shadowRoot.querySelector('.milestone-wrap')
|
|
9
|
-
const statusTag = document.createElement('span');
|
|
10
|
-
statusTag.setAttribute('part', 'status');
|
|
11
|
-
statusTag.classList.add('milestone-status');
|
|
12
|
-
statusTag.innerHTML = `${status} Step`;
|
|
13
|
-
|
|
14
|
-
if(status === 'Current') {
|
|
15
|
-
milestoneElement.classList.add('current');
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
milestoneWrap.insertAdjacentElement('afterbegin', statusTag)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export const getMilestoneTasks = function (milestoneElement: Element): void {
|
|
22
|
-
const taskWrap = milestoneElement.shadowRoot.querySelector('.task-wrap');
|
|
23
|
-
const tasks = milestoneElement.dataset.items ? JSON.parse(milestoneElement.dataset.items) : [];
|
|
24
|
-
|
|
25
|
-
if(!tasks.length) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
tasks.forEach(task => {
|
|
30
|
-
const taskItem = document.createElement('details');
|
|
31
|
-
const taskName = document.createElement('summary');
|
|
32
|
-
const detailsWrap = document.createElement('div');
|
|
33
|
-
const taskDescription = document.createElement('p');
|
|
34
|
-
|
|
35
|
-
detailsWrap.classList.add('task-details');
|
|
36
|
-
|
|
37
|
-
taskName.innerHTML = task.name;
|
|
38
|
-
|
|
39
|
-
if (task.date_completed) {
|
|
40
|
-
taskName.classList.add('complete');
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
taskItem.appendChild(taskName);
|
|
44
|
-
|
|
45
|
-
if (task.description) {
|
|
46
|
-
taskDescription.innerHTML = task.description;
|
|
47
|
-
detailsWrap.appendChild(taskDescription)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (task.actions.length) {
|
|
51
|
-
detailsWrap.appendChild(getSubtasks(task.actions, taskName));
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
taskItem.appendChild(detailsWrap);
|
|
55
|
-
|
|
56
|
-
taskWrap.insertAdjacentElement('beforeend', taskItem)
|
|
57
|
-
|
|
58
|
-
// Fire tracking events
|
|
59
|
-
taskItem.addEventListener('click', () => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
export default milestone;
|
|
1
|
+
export const setStatus = function (milestoneElement: Element): void {
|
|
2
|
+
const status = milestoneElement.dataset.status;
|
|
3
|
+
|
|
4
|
+
if (!status) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const milestoneWrap = milestoneElement.shadowRoot.querySelector('.milestone-wrap');
|
|
9
|
+
const statusTag = document.createElement('span');
|
|
10
|
+
statusTag.setAttribute('part', 'status');
|
|
11
|
+
statusTag.classList.add('milestone-status');
|
|
12
|
+
statusTag.innerHTML = `${status} Step`;
|
|
13
|
+
|
|
14
|
+
if (status === 'Current') {
|
|
15
|
+
milestoneElement.classList.add('current');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
milestoneWrap.insertAdjacentElement('afterbegin', statusTag);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const getMilestoneTasks = function (milestoneElement: Element): void {
|
|
22
|
+
const taskWrap = milestoneElement.shadowRoot.querySelector('.task-wrap');
|
|
23
|
+
const tasks = milestoneElement.dataset.items ? JSON.parse(milestoneElement.dataset.items) : [];
|
|
24
|
+
|
|
25
|
+
if (!tasks.length) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
tasks.forEach((task) => {
|
|
30
|
+
const taskItem = document.createElement('details');
|
|
31
|
+
const taskName = document.createElement('summary');
|
|
32
|
+
const detailsWrap = document.createElement('div');
|
|
33
|
+
const taskDescription = document.createElement('p');
|
|
34
|
+
|
|
35
|
+
detailsWrap.classList.add('task-details');
|
|
36
|
+
|
|
37
|
+
taskName.innerHTML = task.name;
|
|
38
|
+
|
|
39
|
+
if (task.date_completed) {
|
|
40
|
+
taskName.classList.add('complete');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
taskItem.appendChild(taskName);
|
|
44
|
+
|
|
45
|
+
if (task.description) {
|
|
46
|
+
taskDescription.innerHTML = task.description;
|
|
47
|
+
detailsWrap.appendChild(taskDescription);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (task.actions.length) {
|
|
51
|
+
detailsWrap.appendChild(getSubtasks(task.actions, taskName));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
taskItem.appendChild(detailsWrap);
|
|
55
|
+
|
|
56
|
+
taskWrap.insertAdjacentElement('beforeend', taskItem);
|
|
57
|
+
|
|
58
|
+
// Fire tracking events
|
|
59
|
+
taskItem.addEventListener('click', () => {
|
|
60
|
+
if (taskItem?.hasAttribute('open')) {
|
|
61
|
+
itemInteractionEvent('milestone-item-closed', task.name, milestoneElement);
|
|
62
|
+
} else {
|
|
63
|
+
itemInteractionEvent('milestone-item-opened', task.name, milestoneElement);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
milestoneElement.appendChild(taskWrap);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const itemInteractionEvent = function (eventName: string, taskName: string, element: Element): void {
|
|
72
|
+
const customEvent = new CustomEvent(eventName, {
|
|
73
|
+
detail: {
|
|
74
|
+
title: taskName,
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
element.dispatchEvent(customEvent);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const getSubtasks = function (actions: Array, taskName: Element): void {
|
|
82
|
+
const actionsWrap = document.createElement('ul');
|
|
83
|
+
const totalCount = actions.length;
|
|
84
|
+
const completed = actions.filter((action) => action.date_completed);
|
|
85
|
+
const completedCount = completed.length || 0;
|
|
86
|
+
|
|
87
|
+
if (totalCount < 1) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
taskName.innerHTML += ` (${completedCount}/${totalCount})`;
|
|
92
|
+
|
|
93
|
+
actions.forEach((action) => {
|
|
94
|
+
const actionItem = document.createElement('li');
|
|
95
|
+
const actionCompletedDate = document.createElement('span');
|
|
96
|
+
|
|
97
|
+
if (action.date_completed) {
|
|
98
|
+
actionItem.classList.add('complete');
|
|
99
|
+
|
|
100
|
+
actionCompletedDate.classList.add('action-date');
|
|
101
|
+
actionCompletedDate.innerHTML = action.date_completed;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
actionItem.innerHTML = action.action;
|
|
105
|
+
|
|
106
|
+
actionItem.appendChild(actionCompletedDate);
|
|
107
|
+
|
|
108
|
+
actionsWrap.appendChild(actionItem);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
return actionsWrap;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const milestone = function (milestoneElement: Element): void {
|
|
115
|
+
setStatus(milestoneElement);
|
|
116
|
+
getMilestoneTasks(milestoneElement);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export default milestone;
|