@everymatrix/cashier-method-details 1.29.2 → 1.29.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@everymatrix/cashier-method-details",
3
- "version": "1.29.2",
3
+ "version": "1.29.4",
4
4
  "main": "index.js",
5
5
  "svelte": "src/index.ts",
6
6
  "scripts": {
@@ -35,5 +35,5 @@
35
35
  "publishConfig": {
36
36
  "access": "public"
37
37
  },
38
- "gitHead": "c087893467746da9175249cc7606294b6d261671"
38
+ "gitHead": "70873f2feed3be9c071d9ad09343a833b236b4fc"
39
39
  }
@@ -15,7 +15,10 @@
15
15
  import flatpickr from "flatpickr";
16
16
  import "flatpickr/dist/flatpickr.min.css";
17
17
  import FlatpickrLanguages from "flatpickr/dist/l10n";
18
-
18
+ import dayjs from 'dayjs';
19
+ import customParseFormat from 'dayjs/plugin/customParseFormat';
20
+ import isSameOrBefore from 'dayjs/plugin/isSameOrBefore';
21
+ import isSameOrAfter from 'dayjs/plugin/isSameOrAfter';
19
22
  import type {PaymentMethod} from "./CashierMethodDetails.types";
20
23
  export class PaymentMethodDetails {
21
24
  name: string;
@@ -279,7 +282,19 @@
279
282
  if(!el) {
280
283
  return;
281
284
  }
282
- flatpickr(flatpickrEl, {...dateOptions[el.dataset.type], maxDate: el.dataset.maxvalue, minDate: el.dataset.minvalue})
285
+ const field = JSON.parse(el.dataset.field);
286
+ flatpickr(el, {...dateOptions[field.type], maxDate: field.maxValue, minDate: field.minValue, defaultDate: field.defaultValue,
287
+ onReady: (selectedDates, dateStr) => {
288
+ prepareFields[field.name] = dateStr;
289
+ },
290
+ onClose: (selectedDates, dateStr, instance) => {
291
+ if(!fieldValidation[field.name]) {
292
+ prepareFields[field.name] = dateStr;
293
+ } else {
294
+ prepareFields[field.name] = '';
295
+ }
296
+ }
297
+ })
283
298
  });
284
299
  }
285
300
  const setActiveLanguage = ():void => {
@@ -377,7 +392,10 @@
377
392
  window.addEventListener('closeIframe', closeIframe, false);
378
393
  window.addEventListener('notificationButtonClick', retryRedirect, false);
379
394
  window.addEventListener('closeCashierReceiptPage', closeReceiptPage, false);
380
- document.addEventListener('click',closeAllLookups)
395
+ document.addEventListener('click',closeAllLookups);
396
+ dayjs.extend(customParseFormat);
397
+ dayjs.extend(isSameOrBefore);
398
+ dayjs.extend(isSameOrAfter);
381
399
 
382
400
  return () => {
383
401
  window.removeEventListener('closeModal', closeModal);
@@ -678,6 +696,19 @@
678
696
  amountIntError() || amountDecimalError();
679
697
  }
680
698
 
699
+ const dateTimeValidation = (field) => {
700
+ const value = prepareFields[field.name];
701
+ const format = field.placeholder;
702
+ const inputValue = dayjs(value, format);
703
+ const maxValue = dayjs(field.maxValue, format);
704
+ const minValue = dayjs(field.minValue, format);
705
+ if (inputValue.isSameOrBefore(minValue) || inputValue.isSameOrAfter(maxValue)) {
706
+ fieldValidation[field.name] = $_('invalidFieldError',{ values: { field: field.label }})
707
+ return;
708
+ }
709
+ fieldValidation[field.name] = showField(field) ? (emptyFieldError(field, value) || patternMatchesError(field, value)) : '';
710
+ }
711
+
681
712
  const validateField = (field) => {
682
713
  const value = prepareFields[field.name]
683
714
  fieldValidation[field.name] = showField(field) ? (emptyFieldError(field, value) || patternMatchesError(field, value)) : '';
@@ -763,12 +794,11 @@
763
794
  on:blur="{() => { showError[field.name] = true; validateField(field) }}">
764
795
  {:else if field.type === FieldTypes.Time || field.type === FieldTypes.Date || field.type === FieldTypes.DateTime}
765
796
  <input type="text" bind:value={ prepareFields[field.name] } pattern={field.format}
766
- data-type={field.type}
767
- data-maxvalue={field.maxValue}
768
- data-minvalue={field.minValue}
797
+ data-field={JSON.stringify(field)}
769
798
  placeholder={field.placeholder}
770
- on:input={() => { validateField(field) }}
771
- on:change={() => { showError[field.name] = true; validateField(field) }}
799
+ on:input={() => { showError[field.name] = true; dateTimeValidation(field) }}
800
+ on:change={() => { showError[field.name] = true; dateTimeValidation(field) }}
801
+ on:blur={() => { showError[field.name] = true; dateTimeValidation(field) }}
772
802
  bind:this={flatpickrEl[flatpickrEl.length]}
773
803
  >
774
804
  {:else if field.type === FieldTypes.Number || field.type === FieldTypes.Money}
@@ -786,7 +816,7 @@
786
816
 
787
817
  {:else if field.type === FieldTypes.Lookup}
788
818
  <div class="CustomSelect">
789
- <div class="Selected" id="{index}" on:click="{(e) => showLookup(e, field.name)}"> {getValueByFieldName(field.values, prepareFields[field.name])}</div>
819
+ <div class="Selected" id="{index}" on:click="{(e) => showLookup(e, field.name)}"> <span class="SelectedValue">{getValueByFieldName(field.values, prepareFields[field.name])}</span></div>
790
820
  <div class="OptionList"
791
821
  class:Opened={openedLookup === field.name}
792
822
  class:Top={openLookupTop}
@@ -952,6 +982,8 @@
952
982
  .CashierMethodDetails {
953
983
  width: 100%;
954
984
  height: 100%;
985
+ container-name: method-details;
986
+ container-type: inline-size;
955
987
  }
956
988
  .ReceiptPage {
957
989
  background-color: var(--emw--color-gray-transparency-100, rgb(255, 255, 255));
@@ -1256,6 +1288,9 @@
1256
1288
  display: flex;
1257
1289
  align-items: center;
1258
1290
  cursor: pointer;
1291
+ .SelectedValue {
1292
+ max-width: 95%;
1293
+ }
1259
1294
  &:after {
1260
1295
  position: absolute;
1261
1296
  content: "";
@@ -1296,4 +1331,21 @@
1296
1331
  display: block;
1297
1332
  }
1298
1333
  }
1334
+ @container method-details (width < 699px) {
1335
+ .FormLogo .SelectedLogoDescription {
1336
+ font-size: var(--emw--font-size-x-small, 12px);
1337
+ display: -webkit-box;
1338
+ -webkit-line-clamp: 2;
1339
+ -webkit-box-orient: vertical;
1340
+ overflow: hidden;
1341
+ text-overflow: ellipsis;
1342
+ }
1343
+
1344
+ label, input, .Description, .FormLogo .ChangePaymeth {
1345
+ font-size: var(--emw--font-size-x-small, 12px);
1346
+ }
1347
+ .SelectedMethodDescription, .AmountLimits {
1348
+ font-size: var(--emw--font-size-2x-small, 10px);
1349
+ }
1350
+ }
1299
1351
  </style>
@@ -2,8 +2,8 @@ export const TRANSLATIONS = {
2
2
  "en": {
3
3
  "loading": "Loading...",
4
4
  "amountLabel": "Amount",
5
- "redirectTitle": "You are redirected to the payment\'s provider page",
6
- "redirectMessage": "Please complete your transaction on the payment\'s provider page.",
5
+ "redirectTitle": "You are redirected to the payment's provider page",
6
+ "redirectMessage": "Please complete your transaction on the payment's provider page.",
7
7
  "backToPayment": "Close",
8
8
  "retryText": "Please note that your popup blocker may prevent the payment window from appearing",
9
9
  "retryButton": "RETRY",
@@ -23,13 +23,13 @@ export const TRANSLATIONS = {
23
23
  "backToMethodList": "BACK TO PAYMENT METHODS",
24
24
  "deposit": {
25
25
  "makeTxnButton": "DEPOSIT",
26
- "confirmText": "You\'re going to deposit {amount} {currency} to your account",
27
- "confirmButton": "Ok",
26
+ "confirmText": "You're going to deposit {amount} {currency} to your account",
27
+ "confirmButton": "Ok"
28
28
  },
29
29
  "withdraw": {
30
30
  "makeTxnButton": "WITHDRAW",
31
- "confirmText": "You\'re going to withdraw {amount} {currency} from your account",
32
- "confirmButton": "Ok",
31
+ "confirmText": "You're going to withdraw {amount} {currency} from your account",
32
+ "confirmButton": "Ok"
33
33
  }
34
34
  }
35
- };
35
+ }