@massimo-cassandro/minimo 1.41.3 → 1.41.5

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 (133) hide show
  1. package/README.md +12 -12
  2. package/charts/src/node-helpers/create-svg-canvas-node.mjs +2 -2
  3. package/charts/src/node-helpers/svg-text-to-path.js +9 -9
  4. package/charts/src/rating-display/index.js +1 -1
  5. package/charts/src/rating-display/ratindDisplayAnimation.js +3 -3
  6. package/design-tokens/README.md +2 -2
  7. package/design-tokens/_src/_readme.md +26 -26
  8. package/dev-tools/README.md +16 -16
  9. package/dev-tools/create-favicons/README.md +31 -31
  10. package/dev-tools/create-favicons/src/create-ico.mjs +2 -2
  11. package/dev-tools/create-favicons/src/default-params.mjs +1 -1
  12. package/dev-tools/create-favicons/src/init.mjs +1 -1
  13. package/dev-tools/design-tokens-builder/README.md +102 -102
  14. package/dev-tools/design-tokens-builder/build-tokens-src/build-source-modes.mjs +85 -73
  15. package/dev-tools/design-tokens-builder/build-tokens-src/config.mjs +109 -85
  16. package/dev-tools/design-tokens-builder/build-tokens-src/formats/css.mjs +113 -90
  17. package/dev-tools/design-tokens-builder/build-tokens-src/formats/json.mjs +107 -95
  18. package/dev-tools/design-tokens-builder/build-tokens-src/legacy-tokens-parser.mjs +71 -64
  19. package/dev-tools/design-tokens-builder/build-tokens-src/light-dark.mjs +75 -65
  20. package/dev-tools/design-tokens-builder/build-tokens-src/merge-css.mjs +113 -102
  21. package/dev-tools/design-tokens-builder/build-tokens-src/platforms.mjs +36 -30
  22. package/dev-tools/design-tokens-builder/build-tokens-src/resolve-source-paths.mjs +15 -13
  23. package/dev-tools/design-tokens-builder/build-tokens-src/source-prefixes.mjs +44 -42
  24. package/dev-tools/design-tokens-builder/build-tokens-src/source-transforms.mjs +89 -83
  25. package/dev-tools/design-tokens-builder/build-tokens-src/token-rename-parser.mjs +99 -86
  26. package/dev-tools/design-tokens-builder/build-tokens-src/transforms.mjs +64 -48
  27. package/dev-tools/design-tokens-builder/build-tokens.mjs +80 -68
  28. package/dev-tools/design-tokens-builder/check-unresolved-custom-props.mjs +103 -77
  29. package/dev-tools/design-tokens-builder/tokens-config-sample.mjs +275 -238
  30. package/dev-tools/find-orphan-css-classes/find-orphan-css-classes.mjs +2 -2
  31. package/dev-tools/starter-kit/source_files/app/CLAUDE.md +4 -2
  32. package/dev-tools/starter-kit/source_files/app/index.css +10 -0
  33. package/dev-tools/starter-kit/source_files/app/index.js +1 -1
  34. package/dev-tools/starter-kit/source_files/root/_sf/controller/ImgViewerController.php +3 -3
  35. package/dev-tools/starter-kit/source_files/root/_sf/controller/ViewerController.php +2 -2
  36. package/dev-tools/starter-kit/source_files/root/stylelint.config.mjs +1 -1
  37. package/dev-tools/starter-kit/source_files/root/webpack-config-modules/css-rules.mjs +1 -1
  38. package/dev-tools/starter-kit/starter-install.sh +2 -2
  39. package/dev-tools/stylelint-config/README.md +7 -7
  40. package/dev-tools/svg-icons-tools/README.md +32 -32
  41. package/dev-tools/svg-icons-tools/src/config-manager.mjs +1 -1
  42. package/dev-tools/svg-icons-tools/src/default-config.mjs +118 -118
  43. package/dev-tools/svg-icons-tools/src/jsx-icon-file-builder.mjs +24 -24
  44. package/dev-tools/svg-icons-tools/src/parse-svg-filename.mjs +3 -3
  45. package/dev-tools/svg-icons-tools/src/parse-svg-files.mjs +1 -1
  46. package/dev-tools/svg-icons-tools/src/parse-svg-markup.mjs +4 -4
  47. package/dev-tools/svg-icons-tools/src/svg-to-jsx.mjs +2 -2
  48. package/dev-tools/svg-icons-tools/src/svg-to-optimized.mjs +2 -2
  49. package/dev-tools/svg-icons-tools/src/svg-to-symbols.mjs +2 -2
  50. package/dev-tools/upd@m/README.md +1 -1
  51. package/dev-tools/upd@m/index.mjs +1 -1
  52. package/dev-tools/update-version/README.md +9 -9
  53. package/index.js +1 -0
  54. package/package.json +3 -1
  55. package/snippets/unsplash-browser-app/README.md +1 -1
  56. package/snippets/unsplash-browser-app/unsplash-utilities.js +9 -9
  57. package/src/components/autocomplete/README.md +3 -3
  58. package/src/components/autocomplete/autocomplete-engine.js +75 -63
  59. package/src/components/autocomplete/check-autocomplete.js +3 -3
  60. package/src/components/dismiss-alerts.js +3 -3
  61. package/src/components/form-reset-submit.js +6 -6
  62. package/src/components/inner-nav/inner-nav.js +2 -2
  63. package/src/components/modal-alert/modal-alert.js +67 -65
  64. package/src/components/modal-alert/modal-alert.minimo.tokens.mjs +1 -1
  65. package/src/components/modal-popup/modal-popup.js +56 -56
  66. package/src/components/overlay/overlay.js +3 -3
  67. package/src/components/sf-macro/readme.md +1 -1
  68. package/src/components/sf-macro/sf-macro.js +27 -23
  69. package/src/components/slide-up-down-toggle/slide-up-down-toggle.js +83 -79
  70. package/src/components/slide-up-down-toggle/slide-up-down-toggle.module.css +44 -44
  71. package/src/components/snackbar/snackbar.js +19 -19
  72. package/src/components/spinner/spinner.js +3 -3
  73. package/src/components/unsplash-page/README.md +8 -8
  74. package/src/components/unsplash-page/fetch-unsplash-data.js +3 -3
  75. package/src/components/unsplash-page/unsplash-page.js +33 -33
  76. package/src/components/unsplash-page/unsplash-page.module.css +1 -1
  77. package/src/css/alerts.css +2 -2
  78. package/src/css/forms/forms.css +4 -4
  79. package/src/css/forms/validation.css +1 -1
  80. package/src/css/margin-padding-media.css +4 -4
  81. package/src/css/margin-padding.css +4 -4
  82. package/src/css/reset.css +11 -11
  83. package/src/icons/read-me.md +1 -1
  84. package/src/minimo.css +3 -9
  85. package/src/utilities/better-text-with-places.js +105 -105
  86. package/src/utilities/better-text.js +42 -35
  87. package/src/utilities/classnames.js +8 -8
  88. package/src/utilities/cookies.js +6 -6
  89. package/src/utilities/create-id.js +3 -3
  90. package/src/utilities/disable-btns-on-submit.js +2 -2
  91. package/src/utilities/dom-builder/dom-builder.js +89 -86
  92. package/src/utilities/dom-builder/domBuilderBasicSetup.js +9 -9
  93. package/src/utilities/dom-builder/parseDomString.js +23 -23
  94. package/src/utilities/dom-builder-helpers/README.md +2 -2
  95. package/src/utilities/dom-builder-helpers/form-tags.js +100 -100
  96. package/src/utilities/dom-builder-helpers/picture-tag.js +39 -39
  97. package/src/utilities/enable-submit-btns.js +1 -1
  98. package/src/utilities/escape-html.js +2 -2
  99. package/src/utilities/generate-pwd.js +4 -4
  100. package/src/utilities/linked-dates.js +13 -13
  101. package/src/utilities/parse-file-size.js +6 -6
  102. package/src/utilities/random-id.js +3 -3
  103. package/src/utilities/relative-date.js +40 -40
  104. package/src/utilities/sentence-case.js +1 -1
  105. package/src/utilities/strip-tags.js +1 -1
  106. package/src/utilities/title-case.js +1 -1
  107. package/src/utilities/truncate-string.js +5 -5
  108. package/src/utilities/validation-error-class.js +12 -12
  109. package/src/web-components/json-table/json-table-component.js +123 -121
  110. package/src/web-components/json-table/json-table-component.module.css +6 -6
  111. package/src/web-components/json-table/json-table.minimo.tokens.mjs +6 -6
  112. package/src/web-components/json-table/readme.md +76 -110
  113. package/src/web-components/json-table/src/cell-content.js +25 -25
  114. package/src/web-components/json-table/src/content-utils.js +21 -21
  115. package/src/web-components/json-table/src/data-types.js +32 -32
  116. package/src/web-components/json-table/src/defaults.js +230 -191
  117. package/src/web-components/json-table/src/get-data.js +55 -38
  118. package/src/web-components/json-table/src/icons.js +17 -17
  119. package/src/web-components/json-table/src/info-section.js +18 -18
  120. package/src/web-components/json-table/src/main-builder.js +45 -45
  121. package/src/web-components/json-table/src/pagination.js +32 -32
  122. package/src/web-components/json-table/src/parse-cols.js +18 -18
  123. package/src/web-components/json-table/src/parse-rows.js +17 -17
  124. package/src/web-components/json-table/src/resolve-params.js +53 -41
  125. package/src/web-components/json-table/src/search.js +13 -13
  126. package/src/web-components/json-table/src/sorting.js +20 -20
  127. package/src/web-components/json-table/src/table-body.js +13 -13
  128. package/src/web-components/json-table/src/table-builder.js +34 -34
  129. package/src/web-components/json-table/src/table-tfoot.js +8 -8
  130. package/src/web-components/json-table/src/table-thead.js +21 -21
  131. package/src/web-components/json-table/src/update-info.js +11 -11
  132. package/types/classes.d.ts +2 -2
  133. package/types/global.d.ts +18 -12
@@ -1,52 +1,52 @@
1
1
  // @ts-check
2
2
  /*! minimo - Relative Date */
3
3
 
4
- // Displays a date in relative form to the current date if within the set limits.
5
- // Relative dates are automatically updated every minute.
4
+ // Mostra una data in forma relativa rispetto alla data corrente, se entro i limiti impostati.
5
+ // Le date relative vengono aggiornate automaticamente ogni minuto.
6
6
 
7
7
  /**
8
8
  * @typedef {object} RelativeDateOptions
9
- * @property {boolean} [useRelativeTime=true] - Show times near the date as "in xx minutes" (before) or "now" (within `relativeTimeMinutesAfter`) (default: true)
10
- * @property {string} [nowString] - String to display when the date is right now (default: 'adesso')
11
- * @property {number} [relativeTimeMinutesBefore] - Minutes before the date within which to show "in xx minutes" (default: 30)
12
- * @property {number} [relativeTimeMinutesAfter] - Minutes after the date within which to show the now string (default: 30)
13
- * @property {boolean} [relativeTimeShowTime] - Show the actual time alongside relative date labels (default: true)
14
- * @property {string} [relativeTimeShowTimeMarkup] - HTML markup for the time portion; `@@time@@` is replaced with the localized time string (default: ' <span class="time-info">(alle @@time@@)</span>')
15
- * @property {boolean} [firstLetterUpperCase] - Capitalize the first letter of the returned string (default: true)
16
- * @property {Intl.DateTimeFormatOptions} [dateFormat] - Format for non-relative dates (beyond day after tomorrow) (default: { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric', hour12: false, hour: '2-digit', minute: '2-digit' })
17
- * @property {Intl.DateTimeFormatOptions} [timeFormat] - Format for time displayed in relative date labels (default: { hour12: false, hour: '2-digit', minute: '2-digit' })
18
- * @property {string[]} [relativeStrings] - Labels for yesterday / today / tomorrow / day after tomorrow (in chronological order) (default: ['ieri alle', 'oggi alle', 'domani alle', 'dopodomani alle'])
19
- * @property {string} [locale] - Locale string for date/time formatting (default: 'it-IT')
9
+ * @property {boolean} [useRelativeTime=true] - Mostra gli orari vicini alla data come "tra xx minuti" (prima) o "adesso" (entro `relativeTimeMinutesAfter`) (default: true)
10
+ * @property {string} [nowString] - Stringa da mostrare quando la data è proprio adesso (default: 'adesso')
11
+ * @property {number} [relativeTimeMinutesBefore] - Minuti prima della data entro i quali mostrare "tra xx minuti" (default: 30)
12
+ * @property {number} [relativeTimeMinutesAfter] - Minuti dopo la data entro i quali mostrare la stringa "adesso" (default: 30)
13
+ * @property {boolean} [relativeTimeShowTime] - Mostra l'orario effettivo accanto alle etichette delle date relative (default: true)
14
+ * @property {string} [relativeTimeShowTimeMarkup] - Markup HTML per la parte dell'orario; `@@time@@` viene sostituito dall'orario localizzato (default: ' <span class="time-info">(alle @@time@@)</span>')
15
+ * @property {boolean} [firstLetterUpperCase] - Mette in maiuscolo la prima lettera della stringa restituita (default: true)
16
+ * @property {Intl.DateTimeFormatOptions} [dateFormat] - Formato per le date non relative (oltre dopodomani) (default: { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric', hour12: false, hour: '2-digit', minute: '2-digit' })
17
+ * @property {Intl.DateTimeFormatOptions} [timeFormat] - Formato dell'orario mostrato nelle etichette delle date relative (default: { hour12: false, hour: '2-digit', minute: '2-digit' })
18
+ * @property {string[]} [relativeStrings] - Etichette per ieri / oggi / domani / dopodomani (in ordine cronologico) (default: ['ieri alle', 'oggi alle', 'domani alle', 'dopodomani alle'])
19
+ * @property {string} [locale] - Stringa locale per la formattazione di data/ora (default: 'it-IT')
20
20
  */
21
21
 
22
22
  /**
23
- * Returns an HTML `<time>` element string displaying the date in relative or absolute form.
24
- * Relative dates are auto-refreshed every minute via a shared `setInterval`.
23
+ * Restituisce la stringa di un elemento HTML `<time>` che mostra la data in forma relativa o assoluta.
24
+ * Le date relative vengono aggiornate automaticamente ogni minuto tramite un `setInterval` condiviso.
25
25
  *
26
- * The base param type below is intentionally `object` (not `RelativeDateOptions`): TypeScript only
27
- * expands dotted `@param` properties (needed for editor IntelliSense to list each property) when
28
- * the base type is the literal `object`; a named typedef there would error (TS8032).
29
- * @param {Date | string} date - Date to display (Date object or ISO string)
26
+ * Il tipo base del parametro qui sotto è volutamente `object` (non `RelativeDateOptions`): TypeScript
27
+ * espande le proprietà `@param` con notazione puntata (necessarie perché IntelliSense dell'editor elenchi
28
+ * ogni proprietà) solo quando il tipo base è il letterale `object`; un typedef con nome darebbe errore (TS8032).
29
+ * @param {Date | string} date - Data da mostrare (oggetto Date o stringa ISO)
30
30
  * @param {object} [options={}] (default: {})
31
- * @param {boolean} [options.useRelativeTime=true] - Show times near the date as "in xx minutes" (before) or "now" (within `relativeTimeMinutesAfter`) (default: true)
32
- * @param {string} [options.nowString] - String to display when the date is right now (default: 'adesso')
33
- * @param {number} [options.relativeTimeMinutesBefore] - Minutes before the date within which to show "in xx minutes" (default: 30)
34
- * @param {number} [options.relativeTimeMinutesAfter] - Minutes after the date within which to show the now string (default: 30)
35
- * @param {boolean} [options.relativeTimeShowTime] - Show the actual time alongside relative date labels (default: true)
36
- * @param {string} [options.relativeTimeShowTimeMarkup] - HTML markup for the time portion; `@@time@@` is replaced with the localized time string (default: ' <span class="time-info">(alle @@time@@)</span>')
37
- * @param {boolean} [options.firstLetterUpperCase] - Capitalize the first letter of the returned string (default: true)
38
- * @param {Intl.DateTimeFormatOptions} [options.dateFormat] - Format for non-relative dates (beyond day after tomorrow) (default: { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric', hour12: false, hour: '2-digit', minute: '2-digit' })
39
- * @param {Intl.DateTimeFormatOptions} [options.timeFormat] - Format for time displayed in relative date labels (default: { hour12: false, hour: '2-digit', minute: '2-digit' })
40
- * @param {string[]} [options.relativeStrings] - Labels for yesterday / today / tomorrow / day after tomorrow (in chronological order) (default: ['ieri alle', 'oggi alle', 'domani alle', 'dopodomani alle'])
41
- * @param {string} [options.locale] - Locale string for date/time formatting (default: 'it-IT')
42
- * @returns {string} HTML `<time>` element as a string
31
+ * @param {boolean} [options.useRelativeTime=true] - Mostra gli orari vicini alla data come "tra xx minuti" (prima) o "adesso" (entro `relativeTimeMinutesAfter`) (default: true)
32
+ * @param {string} [options.nowString] - Stringa da mostrare quando la data è proprio adesso (default: 'adesso')
33
+ * @param {number} [options.relativeTimeMinutesBefore] - Minuti prima della data entro i quali mostrare "tra xx minuti" (default: 30)
34
+ * @param {number} [options.relativeTimeMinutesAfter] - Minuti dopo la data entro i quali mostrare la stringa "adesso" (default: 30)
35
+ * @param {boolean} [options.relativeTimeShowTime] - Mostra l'orario effettivo accanto alle etichette delle date relative (default: true)
36
+ * @param {string} [options.relativeTimeShowTimeMarkup] - Markup HTML per la parte dell'orario; `@@time@@` viene sostituito dall'orario localizzato (default: ' <span class="time-info">(alle @@time@@)</span>')
37
+ * @param {boolean} [options.firstLetterUpperCase] - Mette in maiuscolo la prima lettera della stringa restituita (default: true)
38
+ * @param {Intl.DateTimeFormatOptions} [options.dateFormat] - Formato per le date non relative (oltre dopodomani) (default: { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric', hour12: false, hour: '2-digit', minute: '2-digit' })
39
+ * @param {Intl.DateTimeFormatOptions} [options.timeFormat] - Formato dell'orario mostrato nelle etichette delle date relative (default: { hour12: false, hour: '2-digit', minute: '2-digit' })
40
+ * @param {string[]} [options.relativeStrings] - Etichette per ieri / oggi / domani / dopodomani (in ordine cronologico) (default: ['ieri alle', 'oggi alle', 'domani alle', 'dopodomani alle'])
41
+ * @param {string} [options.locale] - Stringa locale per la formattazione di data/ora (default: 'it-IT')
42
+ * @returns {string} Elemento HTML `<time>` come stringa
43
43
  *
44
44
  * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat
45
45
  */
46
46
 
47
- // TODO: Add option to include start time in relative dates
48
- // TODO: alternative solution in place of `@@time@@` placeholder
49
- // TODO reconsider and evaluate the use of Intl.RelativeTimeFormat Intl.RelativeTimeFormat
47
+ // TODO: aggiungere un'opzione per includere l'ora di inizio nelle date relative
48
+ // TODO: soluzione alternativa al segnaposto `@@time@@`
49
+ // TODO rivalutare l'uso di Intl.RelativeTimeFormat
50
50
 
51
51
  export function relativeDate(date, options = {}) {
52
52
 
@@ -73,7 +73,7 @@ export function relativeDate(date, options = {}) {
73
73
  hour: '2-digit',
74
74
  minute: '2-digit'
75
75
  },
76
- relativeStrings: [ // NB: in chronological order
76
+ relativeStrings: [ // NB: in ordine cronologico
77
77
  'ieri alle', 'oggi alle', 'domani alle', 'dopodomani alle'
78
78
  ],
79
79
  locale: 'it-IT'
@@ -92,7 +92,7 @@ export function relativeDate(date, options = {}) {
92
92
 
93
93
  const d = typeof dateInput === 'string' ? new Date(dateInput) : dateInput
94
94
  , now = new Date()
95
- , minutesDiff = (d.getTime() - now.getTime()) / 60000 // difference between the two dates in minutes
95
+ , minutesDiff = (d.getTime() - now.getTime()) / 60000 // differenza tra le due date in minuti
96
96
  , daysDiff = (
97
97
  new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0).getTime() -
98
98
  new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0).getTime()
@@ -113,10 +113,10 @@ export function relativeDate(date, options = {}) {
113
113
  (minutesDiff > 0 && minutesDiff <= opts.relativeTimeMinutesBefore)
114
114
  )) {
115
115
 
116
- // formatToParts + reduce needed to strip decimal fractions from the value
116
+ // formatToParts + reduce necessari per eliminare le frazioni decimali dal valore
117
117
  const parts = rtf.formatToParts(minutesDiff, 'minute').reduce((acc, curr) => {
118
- if (curr.type !== 'decimal') { // decimal separator
119
- if (curr.type === 'fraction') { // fractional part
118
+ if (curr.type !== 'decimal') { // separatore decimale
119
+ if (curr.type === 'fraction') { // parte frazionaria
120
120
  const intPart = acc.find(i => i.type === 'integer');
121
121
  if (intPart) intPart.value += `.${curr.value}`;
122
122
  } else {
@@ -131,7 +131,7 @@ export function relativeDate(date, options = {}) {
131
131
 
132
132
  isRelative = true;
133
133
 
134
- // between -1 day and +2 days
134
+ // tra -1 giorno e +2 giorni
135
135
  } else if (daysDiff >= -1 && daysDiff <= 2) {
136
136
 
137
137
  result = opts.relativeStrings[daysDiff + 1] + ' ' + d.toLocaleString(opts.locale, opts.timeFormat);
@@ -1,6 +1,6 @@
1
1
  /*! minimo - Sentence Case */
2
2
  /**
3
- * Converts a string to sentence case (first letter uppercase, rest lowercase).
3
+ * Converte una stringa in sentence case (prima lettera maiuscola, il resto minuscolo).
4
4
  * @param {string | null | undefined} str
5
5
  * @returns {string | null | undefined}
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /*! minimo - Strip Tags */
2
2
  /**
3
- * Strips HTML tags from a string.
3
+ * Rimuove i tag HTML da una stringa.
4
4
  * @param {string | null | undefined} str
5
5
  * @returns {string}
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /*! minimo - Title Case */
2
2
  /**
3
- * Converts a string to title case (first letter of each word uppercase, rest lowercase).
3
+ * Converte una stringa in title case (prima lettera di ogni parola maiuscola, il resto minuscolo).
4
4
  * @param {string | null | undefined} str
5
5
  * @returns {string | null | undefined}
6
6
  */
@@ -3,13 +3,13 @@
3
3
  /*! minimo - Truncate String */
4
4
 
5
5
  /**
6
- * Truncates a string to the desired length adding an option suffix
7
- * from https://www.codegrepper.com/code-examples/javascript/javascript+truncate+string+full+word
6
+ * Tronca una stringa alla lunghezza desiderata aggiungendo un suffisso opzionale
7
+ * da https://www.codegrepper.com/code-examples/javascript/javascript+truncate+string+full+word
8
8
  *
9
- * @param {string} str - string yo be truncated
10
- * @param {number} maxLength - truncated string max length
9
+ * @param {string} str - stringa da troncare
10
+ * @param {number} maxLength - lunghezza massima della stringa troncata
11
11
  * @param {string} suffix (default: '…')
12
- * @returns {string|undefined} truncated string, or undefined if str is falsy
12
+ * @returns {string|undefined} stringa troncata, oppure undefined se str è falsy
13
13
  *
14
14
  */
15
15
 
@@ -1,13 +1,13 @@
1
1
  /*! minimo - Validation Error */
2
2
  /*
3
- usage:
3
+ utilizzo:
4
4
  throw new ValidationError('Duplicate values found');
5
5
  throw new ValidationError('Duplicate values found', errorFields);
6
6
  throw new ValidationError('Duplicate values found', errorFields, 'Each value can be used only once');
7
7
  */
8
8
 
9
9
  /*
10
- example:
10
+ esempio:
11
11
 
12
12
  const form = document.getElementById('form-__xxxx___');
13
13
  form.addEventListener('submit', e => {
@@ -21,7 +21,7 @@ form.addEventListener('submit', e => {
21
21
  form.classList.add('was-validated');
22
22
  try {
23
23
  if( ... ) {
24
- throw new ValidationError('__message__', [errorFields, ...] ); // errorFields is optional
24
+ throw new ValidationError('__message__', [errorFields, ...] ); // errorFields è opzionale
25
25
  }
26
26
  } catch( error ) {
27
27
  e.preventDefault();
@@ -38,7 +38,7 @@ form.addEventListener('submit', e => {
38
38
  field.setCustomValidity('');
39
39
  field.classList.remove('is-invalid');
40
40
 
41
- // rimuove la classe che attiva la visualizzaione
41
+ // rimuove la classe che attiva la visualizzazione
42
42
  form.classList.remove('was-validated');
43
43
  }, {once: true});
44
44
  });
@@ -54,25 +54,25 @@ form.addEventListener('submit', e => {
54
54
  */
55
55
 
56
56
  /**
57
- * Custom error class for form validation failures.
58
- * Extends the native Error with an optional array of invalid form fields
59
- * and an optional extended description.
57
+ * Classe di errore personalizzata per i fallimenti di validazione dei form.
58
+ * Estende l'Error nativo con un array opzionale di campi del form non validi
59
+ * e una descrizione estesa opzionale.
60
60
  *
61
61
  * @example
62
62
  * throw new ValidationError('Duplicate values found', [field1, field2], 'Each value can be used only once');
63
63
  *
64
- * // parameters with default values
64
+ * // parametri con i valori di default
65
65
  * throw new ValidationError(
66
- * 'Duplicate values found', // message (required)
66
+ * 'Duplicate values found', // message (obbligatorio)
67
67
  * null, // fields (default: null)
68
68
  * null // description (default: null)
69
69
  * );
70
70
  */
71
71
  export class ValidationError extends Error {
72
72
  /**
73
- * @param {string} message - Error message.
74
- * @param {Element[]|null} [fields] - Array of invalid form field elements (default: null)
75
- * @param {string|null} [description] - Extended description of the error (default: null)
73
+ * @param {string} message - Messaggio di errore.
74
+ * @param {Element[]|null} [fields] - Array di elementi dei campi del form non validi (default: null)
75
+ * @param {string|null} [description] - Descrizione estesa dell'errore (default: null)
76
76
  */
77
77
  constructor(message, fields = null, description = null) {
78
78
  super(message);