@iamproperty/components 5.1.0-beta → 5.1.0-beta11
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/accordion.global.css.map +1 -1
- package/assets/css/components/card.css +1 -1
- package/assets/css/components/card.css.map +1 -1
- package/assets/css/components/carousel.css +1 -1
- package/assets/css/components/carousel.css.map +1 -1
- package/assets/css/components/component.native.css +1 -1
- package/assets/css/components/component.native.css.map +1 -1
- package/assets/css/components/component.reset.css +1 -1
- package/assets/css/components/component.reset.css.map +1 -1
- package/assets/css/components/fileupload.css +1 -1
- package/assets/css/components/fileupload.css.map +1 -1
- package/assets/css/components/header.css +1 -1
- package/assets/css/components/header.css.map +1 -1
- package/assets/css/components/marketing.css +1 -0
- package/assets/css/components/marketing.css.map +1 -0
- package/assets/css/components/nav.css +1 -1
- package/assets/css/components/nav.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 +1 -1
- package/assets/css/components/pagination.css.map +1 -1
- package/assets/css/components/slider.css.map +1 -1
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/style.min.css +1 -1
- package/assets/css/style.min.css.map +1 -1
- package/assets/img/signin-bg.png +0 -0
- package/assets/js/components/accordion/accordion.component.min.js +1 -1
- package/assets/js/components/actionbar/actionbar.component.min.js +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +17 -3
- package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
- package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
- package/assets/js/components/card/card.component.js +2 -1
- package/assets/js/components/card/card.component.min.js +4 -3
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.js +61 -0
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
- package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
- package/assets/js/components/header/header.component.js +6 -12
- package/assets/js/components/header/header.component.min.js +8 -14
- package/assets/js/components/header/header.component.min.js.map +1 -1
- package/assets/js/components/marketing/marketing.component.js +37 -0
- package/assets/js/components/nav/nav.component.js +4 -36
- package/assets/js/components/nav/nav.component.min.js +10 -13
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +2 -2
- package/assets/js/components/search/search.component.js +148 -0
- package/assets/js/components/search/search.component.min.js +14 -0
- package/assets/js/components/search/search.component.min.js.map +1 -0
- package/assets/js/components/table/table.component.min.js +5 -5
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +1 -1
- package/assets/js/dynamic.js +1 -1
- package/assets/js/dynamic.min.js +5 -4
- package/assets/js/dynamic.min.js.map +1 -1
- package/assets/js/modules/carousel.js +15 -23
- package/assets/js/modules/dynamicEvents.js +28 -13
- package/assets/js/modules/helpers.js +8 -1
- package/assets/js/modules/inputs.js +57 -0
- package/assets/js/modules/table.js +8 -6
- package/assets/js/scripts.bundle.js +39 -43
- 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/vendor/hibp.js +78 -0
- package/assets/sass/_corefiles.scss +1 -0
- package/assets/sass/_elements.scss +1 -1
- package/assets/sass/_functions/mixins.scss +16 -0
- package/assets/sass/_functions/utilities.scss +0 -17
- package/assets/sass/_functions/variables.scss +1 -0
- package/assets/sass/components/card.scss +23 -3
- package/assets/sass/components/carousel.scss +86 -159
- package/assets/sass/components/component.native.scss +86 -3
- package/assets/sass/components/fileupload.scss +1 -1
- package/assets/sass/components/header.scss +53 -55
- package/assets/sass/components/marketing.scss +64 -0
- package/assets/sass/components/nav.global.scss +2 -1
- package/assets/sass/components/nav.scss +7 -1
- package/assets/sass/components/pagination.scss +4 -0
- package/assets/sass/elements/admin-panel.scss +9 -7
- package/assets/sass/elements/badge.scss +29 -0
- package/assets/sass/elements/dialog.scss +4 -4
- package/assets/sass/elements/forms.scss +23 -4
- package/assets/sass/elements/links.scss +2 -1
- package/assets/sass/foundations/reboot.scss +12 -13
- package/assets/sass/foundations/root.scss +11 -3
- package/assets/sass/helpers/max-height.scss +78 -4
- package/assets/sass/templates/auth.scss +112 -0
- package/assets/ts/components/address-lookup/address-lookup.component.ts +23 -4
- package/assets/ts/components/card/card.component.ts +2 -1
- package/assets/ts/components/carousel/README.md +39 -0
- package/assets/ts/components/carousel/carousel.component.ts +75 -0
- package/assets/ts/components/header/header.component.ts +6 -12
- package/assets/ts/components/marketing/marketing.component.ts +49 -0
- package/assets/ts/components/nav/README.md +2 -13
- package/assets/ts/components/nav/nav.component.ts +4 -47
- package/assets/ts/components/search/search.component.ts +177 -0
- package/assets/ts/dynamic.ts +1 -1
- package/assets/ts/modules/carousel.ts +21 -33
- package/assets/ts/modules/dynamicEvents.ts +44 -24
- package/assets/ts/modules/helpers.ts +13 -2
- package/assets/ts/modules/inputs.ts +79 -0
- package/assets/ts/modules/table.ts +11 -14
- package/assets/ts/vendor/hibp.ts +81 -0
- package/dist/components.es.js +744 -949
- package/dist/components.umd.js +107 -101
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/components/Carousel/Carousel.vue +18 -103
- package/src/components/Header/Header.vue +1 -3
- package/src/components/Marketing/Marketing.vue +39 -0
- package/src/components/Marketing/README.md +20 -0
- package/src/components/Nav/README.md +1 -12
- package/src/components/Search/Search.vue +25 -0
- package/src/components/Carousel/Carousel.spec.js +0 -45
|
@@ -47,7 +47,11 @@ export const addGlobalEvents = (body) => {
|
|
|
47
47
|
document.addEventListener("submit", (event) => {
|
|
48
48
|
if (event && event.target instanceof HTMLElement && event.target.matches('form')) {
|
|
49
49
|
let form = event.target;
|
|
50
|
-
|
|
50
|
+
// Reset password types
|
|
51
|
+
Array.from(form.querySelectorAll('[data-password-type]')).forEach((input, index) => {
|
|
52
|
+
input.setAttribute('type', 'password');
|
|
53
|
+
});
|
|
54
|
+
if (form.querySelector(':invalid') || form.querySelector('.pwd-checker[data-strength="1"]') || form.querySelector('.pwd-checker[data-strength="2"]')) {
|
|
51
55
|
form.classList.add('was-validated');
|
|
52
56
|
event.preventDefault();
|
|
53
57
|
}
|
|
@@ -72,3 +76,6 @@ export const safeID = function (str) {
|
|
|
72
76
|
str = str.replace(/\W/g, '');
|
|
73
77
|
return str;
|
|
74
78
|
};
|
|
79
|
+
// Used to get values from nested json objects
|
|
80
|
+
export const resolvePath = (object, path, defaultValue) => path.split(/[\.\[\]\'\"]/).filter(p => p).reduce((o, p) => o ? o[p] : defaultValue, object);
|
|
81
|
+
export const isTraversable = o => Array.isArray(o) || o !== null && ['function', 'object'].includes(typeof o);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
+
import hibpCheck from '../vendor/hibp.js';
|
|
2
3
|
const extendInputs = (body) => {
|
|
3
4
|
function loadInput() {
|
|
4
5
|
// maxlength counter init
|
|
@@ -57,6 +58,8 @@ const extendInputs = (body) => {
|
|
|
57
58
|
input.nextElementSibling.value = input.value;
|
|
58
59
|
if (input.hasAttribute('maxlength') && input.nextElementSibling)
|
|
59
60
|
input.nextElementSibling.setAttribute("data-count", input.value.length);
|
|
61
|
+
if (input.hasAttribute('data-strength-checker'))
|
|
62
|
+
checkPWDStrength(input);
|
|
60
63
|
}
|
|
61
64
|
});
|
|
62
65
|
body.addEventListener('change', (event) => {
|
|
@@ -106,6 +109,60 @@ export const setMaxlengthVars = (input) => {
|
|
|
106
109
|
span.setAttribute('data-count', input.value.length);
|
|
107
110
|
};
|
|
108
111
|
export const changeType = (input, type) => {
|
|
112
|
+
if (input.hasAttribute('type') && input.getAttribute('type') == 'password')
|
|
113
|
+
input.setAttribute('data-password-type', true);
|
|
109
114
|
input.setAttribute('type', type);
|
|
110
115
|
};
|
|
116
|
+
export const checkPWDStrength = (input, check = 'no') => {
|
|
117
|
+
const pwdChecker = document.getElementById(input.getAttribute('data-strength-checker'));
|
|
118
|
+
const password = input.value;
|
|
119
|
+
const minChars = input.hasAttribute('minlength') ? input.getAttribute('minlength') : 12;
|
|
120
|
+
let strength = 1;
|
|
121
|
+
let strengthName = ['Very weak', 'Weak', 'Average', 'Strong', 'Very strong'];
|
|
122
|
+
let extraMsg = '';
|
|
123
|
+
//has number
|
|
124
|
+
if (password.match(/(?=.*[0-9])/))
|
|
125
|
+
strength += 1;
|
|
126
|
+
// has special character
|
|
127
|
+
if (password.match(/(?=.*[!,%,&,#,$,^,*,?,_,~,<,>,])/))
|
|
128
|
+
strength += 1;
|
|
129
|
+
// has lowercase alpha
|
|
130
|
+
if (password.match(/(?=.*[a-z])/))
|
|
131
|
+
strength += 1;
|
|
132
|
+
// has uppercase alpha
|
|
133
|
+
if (password.match(/(?=.*[A-Z])/))
|
|
134
|
+
strength += 1;
|
|
135
|
+
if (password.length < minChars) {
|
|
136
|
+
strength = 1;
|
|
137
|
+
extraMsg = `(must be at least ${minChars} characters.)`;
|
|
138
|
+
}
|
|
139
|
+
// if the strength is above weak and above the minimum length do some kind of api call to check if its in a list of passwords
|
|
140
|
+
if (strength >= 3 && check == 'no') {
|
|
141
|
+
hibpCheck(password, input);
|
|
142
|
+
input.addEventListener('hibpCheck', function (event) {
|
|
143
|
+
checkhibpCheck(event, input);
|
|
144
|
+
});
|
|
145
|
+
function checkhibpCheck(event, input) {
|
|
146
|
+
if (event.detail) { // found
|
|
147
|
+
checkPWDStrength(input, 'danger');
|
|
148
|
+
}
|
|
149
|
+
else { // not found
|
|
150
|
+
checkPWDStrength(input, 'success');
|
|
151
|
+
}
|
|
152
|
+
input.removeEventListener("hibpCheck", checkhibpCheck); // Succeeds
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else if (strength >= 3 && check == 'danger') {
|
|
156
|
+
strength = 3;
|
|
157
|
+
extraMsg = `(this password is very common)`;
|
|
158
|
+
}
|
|
159
|
+
if (pwdChecker) {
|
|
160
|
+
if (strength <= 3)
|
|
161
|
+
pwdChecker.classList.add('invalid-feedback');
|
|
162
|
+
else
|
|
163
|
+
pwdChecker.classList.remove('invalid-feedback');
|
|
164
|
+
pwdChecker.setAttribute('data-strength', strength);
|
|
165
|
+
pwdChecker.innerHTML = `Password strength: ${strengthName[strength - 1]} ${extraMsg}`;
|
|
166
|
+
}
|
|
167
|
+
};
|
|
111
168
|
export default extendInputs;
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
// @ts-nocheck
|
|
11
|
-
import { zeroPad, isNumeric, ucfirst } from "./helpers.js";
|
|
11
|
+
import { zeroPad, isNumeric, ucfirst, resolvePath } from "./helpers.js";
|
|
12
12
|
// Basic functionality needed
|
|
13
13
|
export const addDataAttributes = (table) => {
|
|
14
14
|
const colHeadings = Array.from(table.querySelectorAll('thead th'));
|
|
@@ -51,12 +51,15 @@ export const getLargestLastColWidth = (table) => {
|
|
|
51
51
|
return largestWidth;
|
|
52
52
|
};
|
|
53
53
|
export const createMobileButton = (table, wrapper) => {
|
|
54
|
-
if (wrapper.classList.contains('
|
|
54
|
+
if (wrapper.classList.contains('table--fullwidth') && !wrapper.hasAttribute('data-expandable'))
|
|
55
55
|
return false;
|
|
56
56
|
if (table.querySelectorAll('thead tr th').length < 4 && !wrapper.hasAttribute('data-expandable'))
|
|
57
57
|
return false;
|
|
58
|
+
//If the expand column already exists we don't need to add a new one.
|
|
58
59
|
Array.from(table.querySelectorAll('thead tr')).forEach((row, index) => {
|
|
59
|
-
|
|
60
|
+
if (!table.querySelectorAll('thead tr th.expand-button-heading').length) {
|
|
61
|
+
row.insertAdjacentHTML('afterbegin', `<th class="th--fixed expand-button-heading"></th>`);
|
|
62
|
+
}
|
|
60
63
|
});
|
|
61
64
|
Array.from(table.querySelectorAll('tbody tr')).forEach((row, index) => {
|
|
62
65
|
const preExpanded = row.getAttribute('data-view') === 'full' ? 'aria-expanded' : '';
|
|
@@ -493,7 +496,7 @@ export const populateDataQueries = (table, form, wrapper) => {
|
|
|
493
496
|
const dataQueries = Array.from(form.querySelectorAll('[data-query]'));
|
|
494
497
|
dataQueries.forEach((queryElement, index) => {
|
|
495
498
|
let query = queryElement.getAttribute('data-query');
|
|
496
|
-
let numberOfMatchedRows;
|
|
499
|
+
let numberOfMatchedRows = 0;
|
|
497
500
|
if (query == 'total') {
|
|
498
501
|
if (wrapper.hasAttribute('data-total'))
|
|
499
502
|
numberOfMatchedRows = wrapper.getAttribute('data-total');
|
|
@@ -648,10 +651,9 @@ const filterFilters = function (form) {
|
|
|
648
651
|
};
|
|
649
652
|
export const loadAjaxTable = function (table, form, pagination, wrapper) {
|
|
650
653
|
return __awaiter(this, void 0, void 0, function* () {
|
|
651
|
-
const resolvePath = (object, path, defaultValue) => path.split(/[\.\[\]\'\"]/).filter(p => p).reduce((o, p) => o ? o[p] : defaultValue, object);
|
|
652
654
|
let formData = new FormData(form);
|
|
653
655
|
let queryString = new URLSearchParams(formData).toString();
|
|
654
|
-
let columns = table.querySelectorAll('thead tr th');
|
|
656
|
+
let columns = table.querySelectorAll('thead tr th:not(.expand-button-heading)');
|
|
655
657
|
let tbody = table.querySelector('tbody');
|
|
656
658
|
let ajaxURL = form.getAttribute('data-ajax');
|
|
657
659
|
wrapper.classList.add('table--loading');
|