@fkui/i18next-translate 5.45.0 → 5.45.1

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/dist/cjs/index.js CHANGED
@@ -4417,7 +4417,7 @@ const formatter = {
4417
4417
  class FDate {
4418
4418
  value;
4419
4419
  constructor(value) {
4420
- this.value = dayjs(value, ISO8601_YYYY_MM_DD, true);
4420
+ this.value = dayjs(value, ISO8601_YYYY_MM_DD, true).startOf("day");
4421
4421
  }
4422
4422
  /**
4423
4423
  * Create {@link FDate} with an invalid state.
@@ -4721,7 +4721,7 @@ class FDate {
4721
4721
  if (typeof rhs === "string") {
4722
4722
  rhs = FDate.fromIso(rhs);
4723
4723
  }
4724
- return this.value.isBefore(rhs.value);
4724
+ return this.value.isBefore(rhs.value, "day");
4725
4725
  }
4726
4726
  /**
4727
4727
  * Returns true if this date is after given date.
@@ -4732,7 +4732,7 @@ class FDate {
4732
4732
  if (typeof rhs === "string") {
4733
4733
  rhs = FDate.fromIso(rhs);
4734
4734
  }
4735
- return this.value.isAfter(rhs.value);
4735
+ return this.value.isAfter(rhs.value, "day");
4736
4736
  }
4737
4737
  /**
4738
4738
  * Compares two {@link FDate} objects. Returns and integer indicating whenever
@@ -4771,10 +4771,10 @@ class FDate {
4771
4771
  return -1;
4772
4772
  }
4773
4773
  }
4774
- if (a.value.isSame(b.value)) {
4774
+ if (a.equals(b)) {
4775
4775
  return 0;
4776
4776
  }
4777
- else if (a.value.isBefore(b.value)) {
4777
+ else if (a.isBefore(b)) {
4778
4778
  return -1;
4779
4779
  }
4780
4780
  else {
@@ -4817,6 +4817,26 @@ class FDate {
4817
4817
  }
4818
4818
  }
4819
4819
 
4820
+ /**
4821
+ * @public
4822
+ */
4823
+ function parseDate(value) {
4824
+ if (isEmpty(value)) {
4825
+ return undefined;
4826
+ }
4827
+ const normalized = normalizeDateFormat(value);
4828
+ if (!normalized) {
4829
+ return undefined;
4830
+ }
4831
+ const date = FDate.fromIso(normalized);
4832
+ if (date.isValid()) {
4833
+ return date.toString();
4834
+ }
4835
+ else {
4836
+ return undefined;
4837
+ }
4838
+ }
4839
+
4820
4840
  /**
4821
4841
  * Strips all whitespace from the text (not only leading and trailing)
4822
4842
  *
@@ -4943,6 +4963,18 @@ function parsePersonnummerLuhn(value) {
4943
4963
  }
4944
4964
  return parsed;
4945
4965
  }
4966
+ /**
4967
+ * Formats personnummer to a 8-digit date.
4968
+ *
4969
+ * @public
4970
+ */
4971
+ function formatPersonnummerToDate(value) {
4972
+ const datePart = parseDate(parsePersonnummer(value)?.slice(0, 8) || "");
4973
+ if (!datePart) {
4974
+ return undefined;
4975
+ }
4976
+ return FDate.fromIso(datePart);
4977
+ }
4946
4978
 
4947
4979
  const PLUSGIRO_REGEXP = /^\d{1,7}[-]?\d{1}$/;
4948
4980
  function hyphenShouldBeAdded(value) {
@@ -5110,16 +5142,16 @@ function getErrorMessages() {
5110
5142
  return ValidationErrorMessageBuilder.create()
5111
5143
  .map("bankAccountNumber", "Kontonumret är inte rätt ifyllt. Kolla att det stämmer.")
5112
5144
  .mapCombined("required", "bankAccountNumber", "Fyll i ett kontonummer.")
5113
- .map("bankgiro", "Skriv bankgironumret med sju eller åtta siffror och bindestreck.")
5145
+ .map("bankgiro", "Fyll i bankgironumret med sju eller åtta siffror och bindestreck.")
5114
5146
  .mapCombined("required", "bankgiro", "Fyll i bankgironumret.")
5115
5147
  .mapCombined("maxLength", "bankgiro", "Bankgironumret kan inte ha mer än 9 tecken.")
5116
5148
  .map("clearingNumber", "Clearingnumret är inte rätt ifyllt. Kolla att det stämmer.")
5117
5149
  .mapCombined("required", "clearingNumber", "Fyll i ett clearingnummer.")
5118
5150
  .map("currency", "Fyll i ett belopp.")
5119
5151
  .mapCombined("required", "currency", "Fyll i ett belopp.")
5120
- .map("date", "Du har skrivit ett felaktigt datum.")
5152
+ .map("date", "Du har fyllt i ett felaktigt datum.")
5121
5153
  .mapCombined("required", "date", "Välj ett datum.")
5122
- .map("dateFormat", "Skriv datumet med åtta siffror.")
5154
+ .map("dateFormat", "Fyll i datumet med åtta siffror.")
5123
5155
  .map("decimal", "Fyll i ett värde med rätt antal decimaler.")
5124
5156
  .map("email", "Mejladressen är inte korrekt ifylld.")
5125
5157
  .mapCombined("required", "email", "Fyll i en mejladress.")
@@ -5146,9 +5178,9 @@ function getErrorMessages() {
5146
5178
  .mapCombined("required", "percent", "Fyll i en siffra.")
5147
5179
  .mapCombined("minValue", "percent", "Fyll i en högre siffra.")
5148
5180
  .mapCombined("maxValue", "percent", "Fyll i en lägre siffra.")
5149
- .map("personnummerFormat", "Skriv personnumret med 10 siffror.")
5150
- .mapCombined("required", "personnummerFormat", "Skriv personnumret med 10 siffror.")
5151
- .mapCombined("maxLength", "personnummerFormat", "Skriv personnumret med 10 siffror.")
5181
+ .map("personnummerFormat", "Fyll i personnumret med 10 siffror.")
5182
+ .mapCombined("required", "personnummerFormat", "Fyll i personnumret med 10 siffror.")
5183
+ .mapCombined("maxLength", "personnummerFormat", "Fyll i personnumret med 10 siffror.")
5152
5184
  .map("personnummerLuhn", "Kolla att personnumret stämmer.")
5153
5185
  .map("postalCode", "Fyll i postnumret med fem siffror.")
5154
5186
  .mapCombined("required", "postalCode", "Fyll i ett postnummer.")
@@ -5156,7 +5188,7 @@ function getErrorMessages() {
5156
5188
  .map("phoneNumber", "Telefonnumret är inte rätt ifyllt.")
5157
5189
  .mapCombined("required", "phoneNumber", "Fyll i ett telefonnummer.")
5158
5190
  .mapCombined("matches", "phoneNumber", "Kolla att telefonnumret stämmer.")
5159
- .map("plusgiro", "Skriv plusgironumret med siffror och bindestreck.")
5191
+ .map("plusgiro", "Fyll i plusgironumret med siffror och bindestreck.")
5160
5192
  .mapCombined("required", "plusgiro", "Fyll i plusgironumret.")
5161
5193
  .mapCombined("maxLength", "plusgiro", "Plusgironumret kan inte ha mer än 11 tecken.")
5162
5194
  .map("matches", "Fälten stämmer inte överens.")
@@ -5167,6 +5199,7 @@ function getErrorMessages() {
5167
5199
  .map("invalidDates", "Du kan inte välja det här datumet.")
5168
5200
  .map("invalidWeekdays", "Du kan inte välja det här datumet.")
5169
5201
  .map("whitelist", 'Fältet innehåller otillåtna tecken. Exempel på ogiltiga tecken är /, % och ".')
5202
+ .map("allowList", "Välj ett av alternativen i listan.")
5170
5203
  .build();
5171
5204
  }
5172
5205
 
@@ -5819,6 +5852,21 @@ class ValidationServiceImpl {
5819
5852
  */
5820
5853
  const ValidationService = new ValidationServiceImpl();
5821
5854
 
5855
+ /**
5856
+ * @public
5857
+ */
5858
+ const allowListValidator = {
5859
+ name: "allowList",
5860
+ validation(value, element, config) {
5861
+ if (isEmpty(value) ||
5862
+ config.list === undefined ||
5863
+ config.list.length === 0) {
5864
+ return true;
5865
+ }
5866
+ return config.list.includes(value);
5867
+ },
5868
+ };
5869
+
5822
5870
  const bankAccountNumberValidator = {
5823
5871
  name: "bankAccountNumber",
5824
5872
  validation(value) {
@@ -5833,6 +5881,26 @@ const bankgiroValidator = {
5833
5881
  },
5834
5882
  };
5835
5883
 
5884
+ function toArray(value) {
5885
+ if (Array.isArray(value)) {
5886
+ return value;
5887
+ }
5888
+ else {
5889
+ return [value];
5890
+ }
5891
+ }
5892
+ const blacklistValidator = {
5893
+ name: "blacklist",
5894
+ validation(value, _element, config) {
5895
+ if (!config.values) {
5896
+ throw new Error("config.exclude must have values");
5897
+ }
5898
+ const values = toArray(config.values);
5899
+ const found = values.some((it) => String(it) === value);
5900
+ return !found;
5901
+ },
5902
+ };
5903
+
5836
5904
  const clearingNumberValidator = {
5837
5905
  name: "clearingNumber",
5838
5906
  validation(value) {
@@ -5840,6 +5908,13 @@ const clearingNumberValidator = {
5840
5908
  },
5841
5909
  };
5842
5910
 
5911
+ const currencyValidator = {
5912
+ name: "currency",
5913
+ validation(value) {
5914
+ return isEmpty(value) || isSet(parseNumber(value));
5915
+ },
5916
+ };
5917
+
5843
5918
  const dateValidator = {
5844
5919
  name: "date",
5845
5920
  validation(value) {
@@ -5893,26 +5968,6 @@ const decimalValidator = {
5893
5968
  },
5894
5969
  };
5895
5970
 
5896
- function toArray(value) {
5897
- if (Array.isArray(value)) {
5898
- return value;
5899
- }
5900
- else {
5901
- return [value];
5902
- }
5903
- }
5904
- const blacklistValidator = {
5905
- name: "blacklist",
5906
- validation(value, _element, config) {
5907
- if (!config.values) {
5908
- throw new Error("config.exclude must have values");
5909
- }
5910
- const values = toArray(config.values);
5911
- const found = values.some((it) => String(it) === value);
5912
- return !found;
5913
- },
5914
- };
5915
-
5916
5971
  const emailValidator = {
5917
5972
  name: "email",
5918
5973
  validation(value, _element, config) {
@@ -5922,6 +5977,35 @@ const emailValidator = {
5922
5977
  },
5923
5978
  };
5924
5979
 
5980
+ /**
5981
+ * @internal
5982
+ */
5983
+ function numberValidator$1(value, config, name, compare) {
5984
+ if (value === "") {
5985
+ return true;
5986
+ }
5987
+ const limit = config[name];
5988
+ if (!isSet(limit)) {
5989
+ return false;
5990
+ }
5991
+ const limitAsNumber = parseNumber(String(config[name]));
5992
+ if (limitAsNumber === undefined) {
5993
+ throw new Error(`config.${String(name)} must be a number`);
5994
+ }
5995
+ const valueAsNumber = parseNumber(value);
5996
+ if (valueAsNumber === undefined) {
5997
+ return false;
5998
+ }
5999
+ return compare(valueAsNumber, limitAsNumber);
6000
+ }
6001
+
6002
+ const greaterThanValidator = {
6003
+ name: "greaterThan",
6004
+ validation(value, _element, config) {
6005
+ return numberValidator$1(value, config, "limit", (value, limit) => value > limit);
6006
+ },
6007
+ };
6008
+
5925
6009
  const NUMBER_REGEXP = /^([-−]?[0-9]+)?$/;
5926
6010
  const integerValidator = {
5927
6011
  name: "integer",
@@ -5979,35 +6063,6 @@ const invalidWeekdaysValidator = {
5979
6063
  },
5980
6064
  };
5981
6065
 
5982
- /**
5983
- * @internal
5984
- */
5985
- function numberValidator$1(value, config, name, compare) {
5986
- if (value === "") {
5987
- return true;
5988
- }
5989
- const limit = config[name];
5990
- if (!isSet(limit)) {
5991
- return false;
5992
- }
5993
- const limitAsNumber = parseNumber(String(config[name]));
5994
- if (limitAsNumber === undefined) {
5995
- throw new Error(`config.${String(name)} must be a number`);
5996
- }
5997
- const valueAsNumber = parseNumber(value);
5998
- if (valueAsNumber === undefined) {
5999
- return false;
6000
- }
6001
- return compare(valueAsNumber, limitAsNumber);
6002
- }
6003
-
6004
- const greaterThanValidator = {
6005
- name: "greaterThan",
6006
- validation(value, _element, config) {
6007
- return numberValidator$1(value, config, "limit", (value, limit) => value > limit);
6008
- },
6009
- };
6010
-
6011
6066
  const lessThanValidator = {
6012
6067
  name: "lessThan",
6013
6068
  validation(value, _element, config) {
@@ -6028,6 +6083,22 @@ const matchesValidator = {
6028
6083
  },
6029
6084
  };
6030
6085
 
6086
+ const maxDateValidator = {
6087
+ name: "maxDate",
6088
+ validation(value, _element, config) {
6089
+ if (isEmpty(value)) {
6090
+ return true;
6091
+ }
6092
+ const normalizedValue = normalizeDateFormat(value);
6093
+ if (!normalizedValue) {
6094
+ return false;
6095
+ }
6096
+ const parsed = FDate.fromIso(normalizedValue);
6097
+ const limit = FDate.fromIso(validLimit(config.limit));
6098
+ return parsed.equals(limit) || parsed.isBefore(limit);
6099
+ },
6100
+ };
6101
+
6031
6102
  const maxLengthValidator = {
6032
6103
  name: "maxLength",
6033
6104
  validation(value, _element, config) {
@@ -6058,22 +6129,6 @@ const minDateValidator = {
6058
6129
  },
6059
6130
  };
6060
6131
 
6061
- const maxDateValidator = {
6062
- name: "maxDate",
6063
- validation(value, _element, config) {
6064
- if (isEmpty(value)) {
6065
- return true;
6066
- }
6067
- const normalizedValue = normalizeDateFormat(value);
6068
- if (!normalizedValue) {
6069
- return false;
6070
- }
6071
- const parsed = FDate.fromIso(normalizedValue);
6072
- const limit = FDate.fromIso(validLimit(config.limit));
6073
- return parsed.equals(limit) || parsed.isBefore(limit);
6074
- },
6075
- };
6076
-
6077
6132
  const minLengthValidator = {
6078
6133
  name: "minLength",
6079
6134
  validation(value, _element, config) {
@@ -6095,13 +6150,6 @@ const numberValidator = {
6095
6150
  },
6096
6151
  };
6097
6152
 
6098
- const currencyValidator = {
6099
- name: "currency",
6100
- validation(value) {
6101
- return isEmpty(value) || isSet(parseNumber(value));
6102
- },
6103
- };
6104
-
6105
6153
  const organisationsnummerValidator = {
6106
6154
  name: "organisationsnummer",
6107
6155
  validation(value) {
@@ -6135,6 +6183,48 @@ const personnummerLuhnValidator = {
6135
6183
  },
6136
6184
  };
6137
6185
 
6186
+ const personnummerNotSame = {
6187
+ name: "personnummerNotSame",
6188
+ validation(value, _element, config) {
6189
+ const valuePnr = parsePersonnummer(String(value));
6190
+ if (!valuePnr) {
6191
+ return true;
6192
+ }
6193
+ const otherFieldPnr = parsePersonnummer(String(config.otherField));
6194
+ if (!otherFieldPnr) {
6195
+ return true;
6196
+ }
6197
+ if (valuePnr === otherFieldPnr) {
6198
+ return false;
6199
+ }
6200
+ return true;
6201
+ },
6202
+ };
6203
+
6204
+ const personnummerOlder = {
6205
+ name: "personnummerOlder",
6206
+ validation(value, _element, config) {
6207
+ const valueAsDate = formatPersonnummerToDate(value);
6208
+ const otherAsDate = formatPersonnummerToDate(String(config.otherField));
6209
+ if (!valueAsDate || !otherAsDate) {
6210
+ return true;
6211
+ }
6212
+ return FDate.compare(valueAsDate, otherAsDate) !== 1;
6213
+ },
6214
+ };
6215
+
6216
+ const personnummerYounger = {
6217
+ name: "personnummerYounger",
6218
+ validation(value, _element, config) {
6219
+ const valueAsDate = formatPersonnummerToDate(value);
6220
+ const otherAsDate = formatPersonnummerToDate(String(config.otherField));
6221
+ if (!valueAsDate || !otherAsDate) {
6222
+ return true;
6223
+ }
6224
+ return FDate.compare(valueAsDate, otherAsDate) !== -1;
6225
+ },
6226
+ };
6227
+
6138
6228
  const PHONE_NUMBER_REGEXP = /^(\+?[-_/() ]*(\d[-_/() ]*?){3,17})$/;
6139
6229
  const phoneNumberValidator = {
6140
6230
  name: "phoneNumber",
@@ -6201,32 +6291,36 @@ const whitelistValidator = {
6201
6291
  },
6202
6292
  };
6203
6293
 
6294
+ ValidationService.registerValidator(allowListValidator);
6204
6295
  ValidationService.registerValidator(bankAccountNumberValidator);
6205
6296
  ValidationService.registerValidator(bankgiroValidator);
6297
+ ValidationService.registerValidator(blacklistValidator);
6206
6298
  ValidationService.registerValidator(clearingNumberValidator);
6299
+ ValidationService.registerValidator(currencyValidator);
6207
6300
  ValidationService.registerValidator(dateFormatValidator);
6208
6301
  ValidationService.registerValidator(dateValidator);
6209
6302
  ValidationService.registerValidator(decimalValidator);
6210
- ValidationService.registerValidator(blacklistValidator);
6211
6303
  ValidationService.registerValidator(emailValidator);
6212
- ValidationService.registerValidator(integerValidator);
6213
6304
  ValidationService.registerValidator(greaterThanValidator);
6305
+ ValidationService.registerValidator(integerValidator);
6214
6306
  ValidationService.registerValidator(invalidDatesValidator);
6215
6307
  ValidationService.registerValidator(invalidWeekdaysValidator);
6216
6308
  ValidationService.registerValidator(lessThanValidator);
6217
- ValidationService.registerValidator(minLengthValidator);
6218
6309
  ValidationService.registerValidator(matchesValidator);
6310
+ ValidationService.registerValidator(maxDateValidator);
6219
6311
  ValidationService.registerValidator(maxLengthValidator);
6220
- ValidationService.registerValidator(minValueValidator);
6221
6312
  ValidationService.registerValidator(maxValueValidator);
6222
6313
  ValidationService.registerValidator(minDateValidator);
6223
- ValidationService.registerValidator(maxDateValidator);
6314
+ ValidationService.registerValidator(minLengthValidator);
6315
+ ValidationService.registerValidator(minValueValidator);
6224
6316
  ValidationService.registerValidator(numberValidator);
6225
- ValidationService.registerValidator(currencyValidator);
6226
6317
  ValidationService.registerValidator(organisationsnummerValidator);
6227
6318
  ValidationService.registerValidator(percentValidator);
6228
6319
  ValidationService.registerValidator(personnummerFormatValidator);
6229
6320
  ValidationService.registerValidator(personnummerLuhnValidator);
6321
+ ValidationService.registerValidator(personnummerNotSame);
6322
+ ValidationService.registerValidator(personnummerOlder);
6323
+ ValidationService.registerValidator(personnummerYounger);
6230
6324
  ValidationService.registerValidator(phoneNumberValidator);
6231
6325
  ValidationService.registerValidator(plusgiroValidator);
6232
6326
  ValidationService.registerValidator(postalCodeValidator);