@iamproperty/components 5.1.0-beta11 → 5.1.0-beta13

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 (43) hide show
  1. package/assets/css/components/component.native.css +1 -1
  2. package/assets/css/components/component.native.css.map +1 -1
  3. package/assets/css/components/component.reset.css +1 -1
  4. package/assets/css/components/component.reset.css.map +1 -1
  5. package/assets/css/core.min.css +1 -1
  6. package/assets/css/core.min.css.map +1 -1
  7. package/assets/css/style.min.css +1 -1
  8. package/assets/css/style.min.css.map +1 -1
  9. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  10. package/assets/js/components/actionbar/actionbar.component.min.js +1 -1
  11. package/assets/js/components/address-lookup/address-lookup.component.js +5 -4
  12. package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
  13. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  14. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  15. package/assets/js/components/card/card.component.min.js +1 -1
  16. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  17. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  18. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  19. package/assets/js/components/header/header.component.min.js +1 -1
  20. package/assets/js/components/nav/nav.component.min.js +1 -1
  21. package/assets/js/components/notification/notification.component.min.js +1 -1
  22. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  23. package/assets/js/components/search/search.component.js +29 -15
  24. package/assets/js/components/search/search.component.min.js +13 -7
  25. package/assets/js/components/search/search.component.min.js.map +1 -1
  26. package/assets/js/components/table/table.component.min.js +1 -1
  27. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  28. package/assets/js/dynamic.min.js +2 -2
  29. package/assets/js/dynamic.min.js.map +1 -1
  30. package/assets/js/modules/inputs.js +4 -0
  31. package/assets/js/scripts.bundle.js +8 -8
  32. package/assets/js/scripts.bundle.js.map +1 -1
  33. package/assets/js/scripts.bundle.min.js +2 -2
  34. package/assets/js/scripts.bundle.min.js.map +1 -1
  35. package/assets/sass/_func.scss +1 -0
  36. package/assets/sass/components/component.native.scss +4 -0
  37. package/assets/sass/elements/forms.scss +16 -4
  38. package/assets/ts/components/address-lookup/address-lookup.component.ts +6 -6
  39. package/assets/ts/components/search/search.component.ts +35 -19
  40. package/assets/ts/modules/inputs.ts +5 -0
  41. package/dist/components.es.js +12 -12
  42. package/dist/components.umd.js +16 -16
  43. package/package.json +1 -1
@@ -2,6 +2,7 @@ $compatible: 'false'!default;
2
2
  $mobileOnly: 'false'!default;
3
3
  $darkMode: 'true'!default;
4
4
  $layers: 'true'!default;
5
+ $optionalText: 'true'!default;
5
6
 
6
7
  // Declare global vars variable
7
8
  $vars: ()!default;
@@ -72,6 +72,10 @@ iam-carousel {
72
72
  }
73
73
  }
74
74
 
75
+ // Search
76
+ iam-search input:not(.is-invalid):not(:invalid) {
77
+ background: none!important;
78
+ }
75
79
 
76
80
 
77
81
 
@@ -12,11 +12,23 @@ $icon-tick: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' view
12
12
  font-weight: normal;
13
13
  color: var(--colour-heading);
14
14
  display: block;
15
+ }
16
+ // #endregion
17
+
18
+ // #region Optional text
19
+ :is(label,.label) {
15
20
 
16
- &:has(+ input:not(:disabled):not([readonly]):not(:required):not([type='radio']):not([type='checkbox']):not([type='file'])):after {
21
+ @if $optionalText == "true" {
22
+ &:has(+ input:not(:disabled):not([readonly]):not(:required):not([type='radio']):not([type='checkbox']):not([type='file'])):after {
23
+ content: " (Optional)";
24
+ }
25
+ }
26
+
27
+ &:has(input:not(:disabled):not([readonly]):not(:required):not([type='radio']):not([type='checkbox']):not([type='file'])) .optional-text:before {
17
28
  content: " (Optional)";
18
29
  }
19
30
  }
31
+
20
32
  // #endregion
21
33
 
22
34
  // #region input field
@@ -375,7 +387,7 @@ input[maxlength] + span {
375
387
  border-color: var(--colour-complete);
376
388
  }
377
389
 
378
- .was-validated input:is(:valid, .is-valid) {
390
+ .was-validated input:is(:valid, .is-valid):not(:is(:invalid, .is-invalid)) {
379
391
 
380
392
  background-image: escape-svg($icon-tick);
381
393
  background-repeat: no-repeat;
@@ -887,7 +899,7 @@ iam-fileupload {
887
899
 
888
900
  margin-bottom: 1.5rem;
889
901
 
890
- &:has(:invalid):after {
902
+ &:has(:is(:invalid,.is-invalid)):after {
891
903
  content: "This field is required";
892
904
  color: var(--colour-danger);
893
905
  margin-top: rem(8);
@@ -902,7 +914,7 @@ iam-fileupload {
902
914
  line-height: 1.2;
903
915
  }
904
916
 
905
- &[data-error]:has(:invalid):after {
917
+ &[data-error]:has(:is(:invalid,.is-invalid)):after {
906
918
  content: attr(data-error)!important;
907
919
  }
908
920
 
@@ -84,15 +84,15 @@ class iamAddressLookup extends HTMLElement {
84
84
  preFilledAddress.innerHTML = "";
85
85
 
86
86
  Array.from(component.querySelectorAll('input[required],input[data-required],select[required],select[data-required]')).forEach((input, index) => {
87
+ const value = input.value;
87
88
 
88
- if(!input.value)
89
+ if(!value)
89
90
  preFilled = false;
90
91
  else
91
- preFilledAddress.innerHTML += ', '+input.value;
92
-
92
+ preFilledAddress.innerHTML += value+(/^-?\d+$/.test(value) ? ' ' : ', ');
93
93
  });
94
94
 
95
- preFilledAddress.innerHTML = preFilledAddress.innerHTML.slice(1);
95
+ preFilledAddress.innerHTML = preFilledAddress.innerHTML.slice(0, -2);
96
96
 
97
97
  if(preFilled){
98
98
  preFilledWrapper.classList.remove('js-hide');
@@ -266,9 +266,9 @@ class iamAddressLookup extends HTMLElement {
266
266
  if(key == "address_number_name")
267
267
  itemString += `${value} `;
268
268
  else if(key != "postcode" && key != "address_title")
269
- itemString += `${value}, `;
269
+ itemString += `${value}${(/^-?\d+$/.test(value)?'':',')} `;
270
270
  }
271
-
271
+
272
272
  listString += `<option value="${itemString}${postcode}" data-values='${values}'></option>`;
273
273
  }
274
274
 
@@ -22,7 +22,13 @@ class iamSearch extends HTMLElement {
22
22
  template.innerHTML = `
23
23
  <style>
24
24
  @import "${coreCSS}";
25
-
25
+ input {
26
+ background: red;
27
+ }
28
+ input:not(.is-invalid):not(:invalid) {
29
+ background: none!important;
30
+ }
31
+
26
32
  </style>
27
33
  <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous" />
28
34
  <slot></slot>
@@ -62,36 +68,43 @@ class iamSearch extends HTMLElement {
62
68
  displayInputField.setAttribute('list',listID);
63
69
  }
64
70
 
65
- // on change update oringinal field with the actual value and use displayed input for the nice display text
66
- displayInputField.addEventListener('change', (event) => {
67
-
68
- let match = datalist.querySelector(`option[value="${displayInputField.value}"]`);
69
-
70
- if(match){
71
- inputField.value = match.getAttribute('data-value');
72
- }
73
- });
74
-
75
71
  // Search the endpoint when 3 characters has been added
76
72
  if(searchWrapper.hasAttribute('data-url')){
77
73
 
78
- displayInputField.addEventListener('keyup', (event) => {
74
+ displayInputField.addEventListener('input', (event) => {
79
75
 
80
76
  if(displayInputField.value.length == 3 && !searched.includes(displayInputField.value)){
81
77
  search(displayInputField.value);
82
78
  searched.push(displayInputField.value);
83
79
  }
84
80
  });
81
+ }
85
82
 
86
- displayInputField.addEventListener('change', (event) => {
83
+ function checkMatch(){
84
+
85
+ let match = datalist.querySelector(`option[value="${displayInputField.value}"]`);
86
+ let subMatch = datalist.querySelector(`option[value*='${displayInputField.value}' i]`);
87
87
 
88
- if(displayInputField.value.length >= 3 && !searched.includes(displayInputField.value.substring(0,3))){
89
- search(displayInputField.value.substring(0,3));
90
- searched.push(displayInputField.value.substring(0,3));
91
- }
92
- });
88
+ if(match){
89
+ inputField.value = match.getAttribute('data-value');
90
+ }
91
+ else if (displayInputField.value.length > 0 && !subMatch){
92
+ displayInputField.classList.add('is-invalid');
93
+ displayInputField.closest('label').setAttribute('data-error','No results returned');
94
+ }
95
+ else {
96
+ displayInputField.classList.remove('is-invalid');
97
+ displayInputField.closest('label').removeAttribute('data-error');
98
+ }
93
99
  }
94
-
100
+
101
+ // on change update oringinal field with the actual value and use displayed input for the nice display text
102
+ displayInputField.addEventListener('input', (event) => {
103
+
104
+ checkMatch();
105
+ });
106
+
107
+
95
108
  const search = async (searchterm) => {
96
109
 
97
110
  let ajaxURL = searchWrapper.getAttribute('data-url');
@@ -154,6 +167,9 @@ class iamSearch extends HTMLElement {
154
167
 
155
168
  datalist.innerHTML += listString;
156
169
 
170
+ displayInputField.closest('form').classList.add('was-validated');
171
+ checkMatch();
172
+
157
173
  return response;
158
174
  });
159
175
 
@@ -10,6 +10,11 @@ const extendInputs = (body) => {
10
10
  setMaxlengthVars(input,wrapper);
11
11
  });
12
12
 
13
+ Array.from(document.querySelectorAll('label input')).forEach((input,index) => {
14
+ if(!input.closest('label').querySelector('.optional-text') && !input.hasAttribute('required'))
15
+ input.insertAdjacentHTML("beforebegin", `<span class="optional-text"></span>`);
16
+ });
17
+
13
18
  // Date restrictions
14
19
  if(document.querySelector('input[type="date"]')){
15
20
 
@@ -48,7 +48,7 @@ function vt(e, a, t, i, s, o) {
48
48
  }
49
49
  const Li = /* @__PURE__ */ y(gt, [["render", vt]]);
50
50
  /*!
51
- * iamKey v5.1.0-beta11
51
+ * iamKey v5.1.0-beta13
52
52
  * Copyright 2022-2023 iamproperty
53
53
  */
54
54
  const _t = function(e) {
@@ -557,7 +557,7 @@ class Mt extends HTMLElement {
557
557
  }
558
558
  }
559
559
  /*!
560
- * iamKey v5.1.0-beta11
560
+ * iamKey v5.1.0-beta13
561
561
  * Copyright 2022-2023 iamproperty
562
562
  */
563
563
  class ot extends HTMLElement {
@@ -1152,7 +1152,7 @@ const be = {
1152
1152
  props: {},
1153
1153
  mounted() {
1154
1154
  this.$nextTick(function() {
1155
- N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/accordion/accordion.component.js": () => import("./accordion.component-bd9af0d7.mjs"), "../../../assets/js/components/accordion/accordion.component.min.js": () => import("./accordion.component.min-915d29dd.mjs") }), "../../../assets/js/components/accordion/accordion.component.js").then((e) => {
1155
+ N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/accordion/accordion.component.js": () => import("./accordion.component-bd9af0d7.mjs"), "../../../assets/js/components/accordion/accordion.component.min.js": () => import("./accordion.component.min-7c16a7a4.mjs") }), "../../../assets/js/components/accordion/accordion.component.js").then((e) => {
1156
1156
  window.customElements.get("iam-accordion") || window.customElements.define("iam-accordion", e.default);
1157
1157
  }).catch((e) => {
1158
1158
  console.log(e.message);
@@ -1263,7 +1263,7 @@ const Ei = /* @__PURE__ */ y(xe, [["render", Ee]]), Te = {
1263
1263
  name: "Card",
1264
1264
  mounted() {
1265
1265
  this.$nextTick(function() {
1266
- N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/card/card.component.js": () => import("./card.component-3bb86b22.mjs"), "../../../assets/js/components/card/card.component.min.js": () => import("./card.component.min-fd3b7162.mjs") }), "../../../assets/js/components/card/card.component.js").then((e) => {
1266
+ N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/card/card.component.js": () => import("./card.component-3bb86b22.mjs"), "../../../assets/js/components/card/card.component.min.js": () => import("./card.component.min-b2893b36.mjs") }), "../../../assets/js/components/card/card.component.js").then((e) => {
1267
1267
  window.customElements.get("iam-card") || window.customElements.define("iam-card", e.default);
1268
1268
  }).catch((e) => {
1269
1269
  console.log(e.message);
@@ -1317,7 +1317,7 @@ const Hi = /* @__PURE__ */ y(Me, [["render", je]]), Ce = {
1317
1317
  },
1318
1318
  mounted() {
1319
1319
  this.$nextTick(function() {
1320
- N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/header/header.component.js": () => import("./header.component-cc8263fb.mjs"), "../../../assets/js/components/header/header.component.min.js": () => import("./header.component.min-e7e9db8c.mjs") }), "../../../assets/js/components/header/header.component.js").then((e) => {
1320
+ N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/header/header.component.js": () => import("./header.component-cc8263fb.mjs"), "../../../assets/js/components/header/header.component.min.js": () => import("./header.component.min-4f13b848.mjs") }), "../../../assets/js/components/header/header.component.js").then((e) => {
1321
1321
  window.customElements.get("iam-header") || window.customElements.define("iam-header", e.default);
1322
1322
  }).catch((e) => {
1323
1323
  console.log(e.message);
@@ -1713,7 +1713,7 @@ const Di = /* @__PURE__ */ y(oa, [["render", ya]]), wa = {
1713
1713
  name: "Nav",
1714
1714
  mounted() {
1715
1715
  this.$nextTick(function() {
1716
- N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/nav/nav.component.js": () => import("./nav.component-ff8d1484.mjs"), "../../../assets/js/components/nav/nav.component.min.js": () => import("./nav.component.min-b6b9ead5.mjs") }), "../../../assets/js/components/nav/nav.component.js").then((e) => {
1716
+ N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/nav/nav.component.js": () => import("./nav.component-ff8d1484.mjs"), "../../../assets/js/components/nav/nav.component.min.js": () => import("./nav.component.min-b8d9ee0f.mjs") }), "../../../assets/js/components/nav/nav.component.js").then((e) => {
1717
1717
  window.customElements.get("iam-nav") || window.customElements.define("iam-nav", e.default);
1718
1718
  }).catch((e) => {
1719
1719
  console.log(e.message);
@@ -1833,7 +1833,7 @@ const Pa = {
1833
1833
  name: "Tabs",
1834
1834
  mounted() {
1835
1835
  this.$nextTick(function() {
1836
- N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/tabs/tabs.component.js": () => import("./tabs.component-1dfbdb3b.mjs"), "../../../assets/js/components/tabs/tabs.component.min.js": () => import("./tabs.component.min-d390ff06.mjs") }), "../../../assets/js/components/tabs/tabs.component.js").then((e) => {
1836
+ N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/tabs/tabs.component.js": () => import("./tabs.component-1dfbdb3b.mjs"), "../../../assets/js/components/tabs/tabs.component.min.js": () => import("./tabs.component.min-ba1ee1c0.mjs") }), "../../../assets/js/components/tabs/tabs.component.js").then((e) => {
1837
1837
  window.customElements.get("iam-tabs") || window.customElements.define("iam-tabs", e.default);
1838
1838
  }).catch((e) => {
1839
1839
  console.log(e.message);
@@ -1963,7 +1963,7 @@ function Za(e, a, t, i, s, o) {
1963
1963
  }
1964
1964
  const Oi = /* @__PURE__ */ y(Ka, [["render", Za]]);
1965
1965
  /*!
1966
- * iamKey v5.1.0-beta11
1966
+ * iamKey v5.1.0-beta13
1967
1967
  * Copyright 2022-2023 iamproperty
1968
1968
  */
1969
1969
  function ti(e, a) {
@@ -2059,7 +2059,7 @@ function ii(e, a, t, i, s, o) {
2059
2059
  }
2060
2060
  const Bi = /* @__PURE__ */ y(ai, [["render", ii]]);
2061
2061
  /*!
2062
- * iamKey v5.1.0-beta11
2062
+ * iamKey v5.1.0-beta13
2063
2063
  * Copyright 2022-2023 iamproperty
2064
2064
  */
2065
2065
  function ni(e, a) {
@@ -2229,7 +2229,7 @@ const Vi = /* @__PURE__ */ y(mi, [["render", hi]]), pi = {
2229
2229
  props: {},
2230
2230
  mounted() {
2231
2231
  this.$nextTick(function() {
2232
- N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/actionbar/actionbar.component.js": () => import("./actionbar.component-3f2c98c0.mjs"), "../../../assets/js/components/actionbar/actionbar.component.min.js": () => import("./actionbar.component.min-9c9e2e41.mjs") }), "../../../assets/js/components/actionbar/actionbar.component.js").then((e) => {
2232
+ N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/actionbar/actionbar.component.js": () => import("./actionbar.component-3f2c98c0.mjs"), "../../../assets/js/components/actionbar/actionbar.component.min.js": () => import("./actionbar.component.min-6cb16be8.mjs") }), "../../../assets/js/components/actionbar/actionbar.component.js").then((e) => {
2233
2233
  window.customElements.get("iam-actionbar") || window.customElements.define("iam-actionbar", e.default);
2234
2234
  }).catch((e) => {
2235
2235
  console.log(e.message);
@@ -2261,7 +2261,7 @@ const Ki = /* @__PURE__ */ y(fi, [["render", gi]]), yi = {
2261
2261
  name: "Address Lookup",
2262
2262
  mounted() {
2263
2263
  this.$nextTick(function() {
2264
- N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/address-lookup/address-lookup.component.js": () => import("./address-lookup.component-53821bfb.mjs"), "../../../assets/js/components/address-lookup/address-lookup.component.min.js": () => import("./address-lookup.component.min-4ceee9e9.mjs") }), "../../../assets/js/components/address-lookup/address-lookup.component.js").then((e) => {
2264
+ N(/* @__PURE__ */ Object.assign({ "../../../assets/js/components/address-lookup/address-lookup.component.js": () => import("./address-lookup.component-6bae4154.mjs"), "../../../assets/js/components/address-lookup/address-lookup.component.min.js": () => import("./address-lookup.component.min-54ce7f2f.mjs") }), "../../../assets/js/components/address-lookup/address-lookup.component.js").then((e) => {
2265
2265
  window.customElements.get("iam-address-lookup") || window.customElements.define("iam-address-lookup", e.default);
2266
2266
  }).catch((e) => {
2267
2267
  console.log(e.message);
@@ -2276,7 +2276,7 @@ function wi(e, a, t, i, s, o) {
2276
2276
  }
2277
2277
  const Gi = /* @__PURE__ */ y(yi, [["render", wi]]);
2278
2278
  /*!
2279
- * iamKey v5.1.0-beta11
2279
+ * iamKey v5.1.0-beta13
2280
2280
  * Copyright 2022-2023 iamproperty
2281
2281
  */
2282
2282
  window.dataLayer = window.dataLayer || [], window.dataLayer.push({ event: "customElementRegistered", element: "collapsible side menu" });