@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.
Files changed (118) hide show
  1. package/assets/css/components/accordion.global.css.map +1 -1
  2. package/assets/css/components/card.css +1 -1
  3. package/assets/css/components/card.css.map +1 -1
  4. package/assets/css/components/carousel.css +1 -1
  5. package/assets/css/components/carousel.css.map +1 -1
  6. package/assets/css/components/component.native.css +1 -1
  7. package/assets/css/components/component.native.css.map +1 -1
  8. package/assets/css/components/component.reset.css +1 -1
  9. package/assets/css/components/component.reset.css.map +1 -1
  10. package/assets/css/components/fileupload.css +1 -1
  11. package/assets/css/components/fileupload.css.map +1 -1
  12. package/assets/css/components/header.css +1 -1
  13. package/assets/css/components/header.css.map +1 -1
  14. package/assets/css/components/marketing.css +1 -0
  15. package/assets/css/components/marketing.css.map +1 -0
  16. package/assets/css/components/nav.css +1 -1
  17. package/assets/css/components/nav.css.map +1 -1
  18. package/assets/css/components/nav.global.css +1 -1
  19. package/assets/css/components/nav.global.css.map +1 -1
  20. package/assets/css/components/pagination.css +1 -1
  21. package/assets/css/components/pagination.css.map +1 -1
  22. package/assets/css/components/slider.css.map +1 -1
  23. package/assets/css/core.min.css +1 -1
  24. package/assets/css/core.min.css.map +1 -1
  25. package/assets/css/style.min.css +1 -1
  26. package/assets/css/style.min.css.map +1 -1
  27. package/assets/img/signin-bg.png +0 -0
  28. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  29. package/assets/js/components/actionbar/actionbar.component.min.js +1 -1
  30. package/assets/js/components/address-lookup/address-lookup.component.js +17 -3
  31. package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
  32. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  33. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  34. package/assets/js/components/card/card.component.js +2 -1
  35. package/assets/js/components/card/card.component.min.js +4 -3
  36. package/assets/js/components/card/card.component.min.js.map +1 -1
  37. package/assets/js/components/carousel/carousel.component.js +61 -0
  38. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  39. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  40. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  41. package/assets/js/components/header/header.component.js +6 -12
  42. package/assets/js/components/header/header.component.min.js +8 -14
  43. package/assets/js/components/header/header.component.min.js.map +1 -1
  44. package/assets/js/components/marketing/marketing.component.js +37 -0
  45. package/assets/js/components/nav/nav.component.js +4 -36
  46. package/assets/js/components/nav/nav.component.min.js +10 -13
  47. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  48. package/assets/js/components/notification/notification.component.min.js +1 -1
  49. package/assets/js/components/pagination/pagination.component.min.js +2 -2
  50. package/assets/js/components/search/search.component.js +148 -0
  51. package/assets/js/components/search/search.component.min.js +14 -0
  52. package/assets/js/components/search/search.component.min.js.map +1 -0
  53. package/assets/js/components/table/table.component.min.js +5 -5
  54. package/assets/js/components/table/table.component.min.js.map +1 -1
  55. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  56. package/assets/js/dynamic.js +1 -1
  57. package/assets/js/dynamic.min.js +5 -4
  58. package/assets/js/dynamic.min.js.map +1 -1
  59. package/assets/js/modules/carousel.js +15 -23
  60. package/assets/js/modules/dynamicEvents.js +28 -13
  61. package/assets/js/modules/helpers.js +8 -1
  62. package/assets/js/modules/inputs.js +57 -0
  63. package/assets/js/modules/table.js +8 -6
  64. package/assets/js/scripts.bundle.js +39 -43
  65. package/assets/js/scripts.bundle.js.map +1 -1
  66. package/assets/js/scripts.bundle.min.js +2 -2
  67. package/assets/js/scripts.bundle.min.js.map +1 -1
  68. package/assets/js/vendor/hibp.js +78 -0
  69. package/assets/sass/_corefiles.scss +1 -0
  70. package/assets/sass/_elements.scss +1 -1
  71. package/assets/sass/_functions/mixins.scss +16 -0
  72. package/assets/sass/_functions/utilities.scss +0 -17
  73. package/assets/sass/_functions/variables.scss +1 -0
  74. package/assets/sass/components/card.scss +23 -3
  75. package/assets/sass/components/carousel.scss +86 -159
  76. package/assets/sass/components/component.native.scss +86 -3
  77. package/assets/sass/components/fileupload.scss +1 -1
  78. package/assets/sass/components/header.scss +53 -55
  79. package/assets/sass/components/marketing.scss +64 -0
  80. package/assets/sass/components/nav.global.scss +2 -1
  81. package/assets/sass/components/nav.scss +7 -1
  82. package/assets/sass/components/pagination.scss +4 -0
  83. package/assets/sass/elements/admin-panel.scss +9 -7
  84. package/assets/sass/elements/badge.scss +29 -0
  85. package/assets/sass/elements/dialog.scss +4 -4
  86. package/assets/sass/elements/forms.scss +23 -4
  87. package/assets/sass/elements/links.scss +2 -1
  88. package/assets/sass/foundations/reboot.scss +12 -13
  89. package/assets/sass/foundations/root.scss +11 -3
  90. package/assets/sass/helpers/max-height.scss +78 -4
  91. package/assets/sass/templates/auth.scss +112 -0
  92. package/assets/ts/components/address-lookup/address-lookup.component.ts +23 -4
  93. package/assets/ts/components/card/card.component.ts +2 -1
  94. package/assets/ts/components/carousel/README.md +39 -0
  95. package/assets/ts/components/carousel/carousel.component.ts +75 -0
  96. package/assets/ts/components/header/header.component.ts +6 -12
  97. package/assets/ts/components/marketing/marketing.component.ts +49 -0
  98. package/assets/ts/components/nav/README.md +2 -13
  99. package/assets/ts/components/nav/nav.component.ts +4 -47
  100. package/assets/ts/components/search/search.component.ts +177 -0
  101. package/assets/ts/dynamic.ts +1 -1
  102. package/assets/ts/modules/carousel.ts +21 -33
  103. package/assets/ts/modules/dynamicEvents.ts +44 -24
  104. package/assets/ts/modules/helpers.ts +13 -2
  105. package/assets/ts/modules/inputs.ts +79 -0
  106. package/assets/ts/modules/table.ts +11 -14
  107. package/assets/ts/vendor/hibp.ts +81 -0
  108. package/dist/components.es.js +744 -949
  109. package/dist/components.umd.js +107 -101
  110. package/dist/style.css +1 -1
  111. package/package.json +1 -1
  112. package/src/components/Carousel/Carousel.vue +18 -103
  113. package/src/components/Header/Header.vue +1 -3
  114. package/src/components/Marketing/Marketing.vue +39 -0
  115. package/src/components/Marketing/README.md +20 -0
  116. package/src/components/Nav/README.md +1 -12
  117. package/src/components/Search/Search.vue +25 -0
  118. 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
- if (form.querySelector(':invalid')) {
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('.table--fullwidth') && !wrapper.hasAttribute('data-expandable'))
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
- row.insertAdjacentHTML('afterbegin', `<th class="th--fixed expand-button-heading"></th>`);
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');