@mmlogic/components 0.5.5 → 0.5.7

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 (84) hide show
  1. package/dist/cjs/{cell-renderer-Mx3pwONr.js → cell-renderer-pwUGEDql.js} +8 -261
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/mosterdcomponents.cjs.js +1 -1
  4. package/dist/cjs/mrd-boolean-field_25.cjs.entry.js +234 -262
  5. package/dist/cjs/mrd-merge-view.cjs.entry.js +3 -3
  6. package/dist/collection/components/fields/mrd-date-field/mrd-date-field.css +4 -55
  7. package/dist/collection/components/fields/mrd-date-field/mrd-date-field.js +8 -118
  8. package/dist/collection/components/fields/mrd-datetime-field/mrd-datetime-field.css +4 -55
  9. package/dist/collection/components/fields/mrd-datetime-field/mrd-datetime-field.js +15 -117
  10. package/dist/collection/components/fields/mrd-email-field/mrd-email-field.js +1 -1
  11. package/dist/collection/components/fields/mrd-file-field/mrd-file-field.js +1 -1
  12. package/dist/collection/components/fields/mrd-image-field/mrd-image-field.js +1 -1
  13. package/dist/collection/components/fields/mrd-longtext-field/mrd-longtext-field.js +1 -1
  14. package/dist/collection/components/fields/mrd-number-field/mrd-number-field.js +1 -1
  15. package/dist/collection/components/fields/mrd-secret-field/mrd-secret-field.js +2 -2
  16. package/dist/collection/components/fields/mrd-text-field/mrd-text-field.js +1 -1
  17. package/dist/collection/components/fields/mrd-textarea-field/mrd-textarea-field.js +1 -1
  18. package/dist/collection/components/fields/mrd-time-field/mrd-time-field.js +1 -1
  19. package/dist/collection/components/form/mrd-field/mrd-field.js +11 -11
  20. package/dist/collection/components/invoice/mrd-invoice-view/mrd-invoice-view.js +1 -1
  21. package/dist/collection/components/layout/mrd-layout-section/mrd-layout-section.js +1 -1
  22. package/dist/collection/components/merge/mrd-merge-view/mrd-merge-view.js +2 -2
  23. package/dist/collection/components/table/mrd-table/mrd-table.css +52 -22
  24. package/dist/collection/components/table/mrd-table/mrd-table.js +175 -45
  25. package/dist/collection/components/table/mrd-table/table-parts.js +6 -3
  26. package/dist/collection/components/table/mrd-table/virtual-scroll.js +8 -3
  27. package/dist/collection/utils/format.js +0 -160
  28. package/dist/collection/utils/i18n.js +8 -96
  29. package/dist/components/cell-renderer.js +1 -1
  30. package/dist/components/format.js +1 -1
  31. package/dist/components/i18n.js +1 -1
  32. package/dist/components/mrd-date-field2.js +1 -1
  33. package/dist/components/mrd-datetime-field2.js +1 -1
  34. package/dist/components/mrd-document-list2.js +1 -1
  35. package/dist/components/mrd-document-view2.js +1 -1
  36. package/dist/components/mrd-email-field2.js +1 -1
  37. package/dist/components/mrd-email-view2.js +1 -1
  38. package/dist/components/mrd-field2.js +1 -1
  39. package/dist/components/mrd-file-field2.js +1 -1
  40. package/dist/components/mrd-image-field2.js +1 -1
  41. package/dist/components/mrd-invoice-view2.js +1 -1
  42. package/dist/components/mrd-layout-section.js +1 -1
  43. package/dist/components/mrd-longtext-field2.js +1 -1
  44. package/dist/components/mrd-merge-view.js +1 -1
  45. package/dist/components/mrd-number-field2.js +1 -1
  46. package/dist/components/mrd-secret-field2.js +1 -1
  47. package/dist/components/mrd-table2.js +1 -1
  48. package/dist/components/mrd-text-field2.js +1 -1
  49. package/dist/components/mrd-textarea-field2.js +1 -1
  50. package/dist/components/mrd-time-field2.js +1 -1
  51. package/dist/esm/{cell-renderer-UQOYlDv7.js → cell-renderer-B8rJpnq8.js} +9 -257
  52. package/dist/esm/loader.js +1 -1
  53. package/dist/esm/mosterdcomponents.js +1 -1
  54. package/dist/esm/mrd-boolean-field_25.entry.js +234 -262
  55. package/dist/esm/mrd-merge-view.entry.js +3 -3
  56. package/dist/mosterdcomponents/cell-renderer-B8u5BCK-.js.map +1 -0
  57. package/dist/mosterdcomponents/client-layout-Bc42CfJB.js.map +1 -0
  58. package/dist/mosterdcomponents/document-attachments-BufPmMRv.js.map +1 -0
  59. package/dist/mosterdcomponents/field-helpers-CUJsHr1V.js.map +1 -0
  60. package/dist/mosterdcomponents/file-upload-common-DdTDuxEU.js.map +1 -0
  61. package/dist/mosterdcomponents/format-gcecItcD.js.map +1 -0
  62. package/dist/mosterdcomponents/i18n-Ba7_jO9I.js.map +1 -0
  63. package/dist/mosterdcomponents/index-1ayBojyN.js.map +1 -0
  64. package/dist/mosterdcomponents/index-DhffneUF.js.map +1 -0
  65. package/dist/mosterdcomponents/index.esm.js.map +1 -0
  66. package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
  67. package/dist/mosterdcomponents/mosterdcomponents.esm.js.map +1 -0
  68. package/dist/mosterdcomponents/p-5614d8f5.entry.js +3 -0
  69. package/dist/mosterdcomponents/{p-d31b71d9.entry.js → p-e540de6a.entry.js} +1 -1
  70. package/dist/mosterdcomponents/p-rTM1tU_M.js +1 -0
  71. package/dist/mosterdcomponents/purify.es-_duHfPgC.js.map +1 -0
  72. package/dist/mosterdcomponents/query-params-BZbQoeYF.js.map +1 -0
  73. package/dist/mosterdcomponents/quill-C9pgw_k-.js.map +1 -0
  74. package/dist/mosterdcomponents/validation-CjjTt66G.js.map +1 -0
  75. package/dist/types/components/fields/mrd-date-field/mrd-date-field.d.ts +1 -22
  76. package/dist/types/components/fields/mrd-datetime-field/mrd-datetime-field.d.ts +2 -21
  77. package/dist/types/components/table/mrd-table/mrd-table.d.ts +47 -5
  78. package/dist/types/components/table/mrd-table/table-parts.d.ts +0 -2
  79. package/dist/types/components/table/mrd-table/virtual-scroll.d.ts +6 -1
  80. package/dist/types/components.d.ts +0 -26
  81. package/dist/types/utils/format.d.ts +0 -34
  82. package/package.json +1 -1
  83. package/dist/mosterdcomponents/p-8cc374e0.entry.js +0 -3
  84. package/dist/mosterdcomponents/p-CF--ScWr.js +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  var index = require('./index-DVbdkYO3.js');
4
4
  var clientLayout = require('./client-layout-CqVuJumR.js');
5
- var cellRenderer = require('./cell-renderer-Mx3pwONr.js');
5
+ var cellRenderer = require('./cell-renderer-pwUGEDql.js');
6
6
 
7
7
  /**
8
8
  * Whether a layout item can appear in the merge diff at all. m-n relations
@@ -257,14 +257,14 @@ const MrdMergeView = class {
257
257
  var _a, _b;
258
258
  let stepContent;
259
259
  if (this.step === 'search') {
260
- stepContent = (index.h(MergeSearchStep, { key: 'b965c21176faf7844e58cb156958fa1305d07cdc', locale: this.locale, searchQuery: this.searchQuery, searchResults: this.searchResults, isLoading: this.isLoading, onSearchInput: this.handleSearchInput, onSelect: this.handleSelect }));
260
+ stepContent = (index.h(MergeSearchStep, { key: '3adb36fb46aa7260641a46a2cf27cc0ef320876f', locale: this.locale, searchQuery: this.searchQuery, searchResults: this.searchResults, isLoading: this.isLoading, onSearchInput: this.handleSearchInput, onSelect: this.handleSelect }));
261
261
  }
262
262
  else {
263
263
  const diff = diffFields(this.fields, this.currentRecord, this.candidate);
264
264
  const bLabel = candidateLabel(this.candidate);
265
265
  stepContent = this.step === 'compare' ? (index.h(MergeCompareStep, { locale: this.locale, currentLabel: this.currentLabel, candidateLabel: bLabel, conflicts: diff.conflicts, autoFilled: diff.autoFilled, recordA: this.currentRecord, recordB: (_a = this.candidate) !== null && _a !== void 0 ? _a : {}, resolutions: this.resolutions, openHistoryKey: this.openHistoryKey, onResolve: this.handleResolve, onToggleHistory: this.handleToggleHistory, onChangeCandidate: this.handleChangeCandidate, onContinue: this.handleContinue })) : (index.h(MergeConfirmStep, { locale: this.locale, candidateLabel: bLabel, conflicts: diff.conflicts, autoFilled: diff.autoFilled, resolutions: this.resolutions, recordB: (_b = this.candidate) !== null && _b !== void 0 ? _b : {}, openHistoryKey: this.openHistoryKey, onToggleHistory: this.handleToggleHistory, onBack: this.handleBack, onConfirm: this.handleConfirm }));
266
266
  }
267
- return (index.h(index.Host, { key: 'e9cffda6c5cff51f802b044f3d8e417df83b7846' }, index.h("div", { key: '26690ef2db7489cbf7994191ad19491a0fdd7002', class: "mrd-merge-view" }, stepContent)));
267
+ return (index.h(index.Host, { key: 'e33a6d66a220b28cc9533da78dc274e2d7ec5c4a' }, index.h("div", { key: 'b5fb1390d86192f9f6f15e3ccb89e2d21d9c7c8b', class: "mrd-merge-view" }, stepContent)));
268
268
  }
269
269
  get el() { return index.getElement(this); }
270
270
  };
@@ -19,10 +19,6 @@
19
19
  content: " *";
20
20
  color: var(--mrd-color-danger);
21
21
  }
22
- .mrd-date-field__control {
23
- position: relative;
24
- display: block;
25
- }
26
22
  .mrd-date-field__input {
27
23
  display: block;
28
24
  width: 100%;
@@ -57,59 +53,12 @@
57
53
  .mrd-date-field__input--error:focus {
58
54
  box-shadow: var(--mrd-shadow-focus-error);
59
55
  }
60
- .mrd-date-field__input {
61
- padding-inline-end: calc(var(--mrd-input-padding-x) + 1.75rem);
62
- }
63
- .mrd-date-field__picker {
64
- position: absolute;
65
- inset-inline-end: var(--mrd-space-1);
66
- top: 50%;
67
- transform: translateY(-50%);
68
- width: 1.75rem;
69
- height: 1.75rem;
70
- }
71
- .mrd-date-field__picker-button {
72
- display: inline-flex;
73
- align-items: center;
74
- justify-content: center;
75
- width: 100%;
76
- height: 100%;
77
- padding: 0;
78
- border: 0;
79
- border-radius: var(--mrd-border-radius-sm);
80
- background: transparent;
81
- color: var(--mrd-color-neutral-500);
82
- cursor: pointer;
83
- transition: color var(--mrd-transition), background-color var(--mrd-transition);
84
- }
85
- .mrd-date-field__picker-button svg {
86
- width: 1.125rem;
87
- height: 1.125rem;
88
- }
89
- .mrd-date-field__picker-button:hover:not(:disabled) {
90
- color: var(--mrd-color-primary);
91
- background-color: var(--mrd-color-neutral-100);
92
- }
93
- .mrd-date-field__picker-button:focus-visible {
94
- outline: 2px solid var(--mrd-border-color-focus);
95
- outline-offset: 1px;
96
- }
97
- .mrd-date-field__picker-button:disabled {
98
- cursor: not-allowed;
99
- opacity: 0.5;
100
- }
101
- .mrd-date-field__picker-native {
102
- position: absolute;
103
- inset: 0;
104
- width: 100%;
105
- height: 100%;
106
- padding: 0;
107
- border: 0;
108
- opacity: 0;
109
- pointer-events: none;
110
- }
111
56
  .mrd-date-field__error {
112
57
  font-family: var(--mrd-font-family);
113
58
  font-size: var(--mrd-error-font-size);
114
59
  color: var(--mrd-error-color);
60
+ }
61
+
62
+ .mrd-date-field__input {
63
+ cursor: pointer;
115
64
  }
@@ -1,106 +1,26 @@
1
1
  import { Host, h } from "@stencil/core";
2
- import { t } from "../../../utils/i18n";
3
- import { formatIsoDate, localeDatePattern, parseLocalizedDate } from "../../../utils/format";
4
2
  import { FieldLabel, FieldError, controlClass, requiredError } from "../field-helpers";
5
3
  export class MrdDateField {
6
4
  constructor() {
7
5
  this.name = '';
8
6
  this.label = '';
9
- /** ISO date, 'YYYY-MM-DD'. */
10
7
  this.value = '';
11
- /** Overrides the locale-derived pattern placeholder (e.g. 'dd-mm-jjjj'). */
12
- this.placeholder = '';
13
8
  this.required = false;
14
9
  this.disabled = false;
15
10
  this.locale = navigator.language;
16
- /** What the user sees: the value formatted for `locale`, or their raw typing. */
17
- this.displayValue = '';
18
11
  this.error = '';
19
- /** While focused the user owns the text; prop updates must not overwrite it. */
20
- this.focused = false;
21
- this.handleFocus = () => {
22
- this.focused = true;
23
- };
24
- this.handleInput = (e) => {
25
- this.displayValue = e.target.value;
12
+ this.handleChange = (e) => {
13
+ const val = e.target.value;
14
+ this.error = requiredError(val, this.required, this.locale);
15
+ this.mrdChange.emit({ name: this.name, value: val });
26
16
  };
27
17
  this.handleBlur = (e) => {
28
- this.focused = false;
29
- const value = this.commit(e.target.value);
30
- this.mrdChange.emit({ name: this.name, value });
31
- this.mrdBlur.emit({ name: this.name, value });
32
- };
33
- this.handleKeyDown = (e) => {
34
- // Submitting with Enter never fires blur, so commit the typed text here too.
35
- if (e.key !== 'Enter')
36
- return;
37
- const value = this.commit(e.target.value);
38
- this.mrdChange.emit({ name: this.name, value });
39
- };
40
- this.openPicker = () => {
41
- const native = this.nativeInput;
42
- if (!native || this.disabled)
43
- return;
44
- // The blur commit that precedes this click re-renders asynchronously, so sync by hand first.
45
- native.value = this.currentIso();
46
- try {
47
- native.showPicker();
48
- }
49
- catch (_a) {
50
- // Browsers without showPicker(): focusing at least surfaces the platform control.
51
- native.focus();
52
- }
18
+ const val = e.target.value;
19
+ this.mrdBlur.emit({ name: this.name, value: val });
53
20
  };
54
- this.handlePickerChange = (e) => {
55
- const iso = e.target.value; // native inputs always yield 'YYYY-MM-DD'
56
- this.displayValue = formatIsoDate(iso, this.locale);
57
- this.error = requiredError(iso, this.required, this.locale);
58
- this.mrdChange.emit({ name: this.name, value: iso });
59
- this.mrdBlur.emit({ name: this.name, value: iso });
60
- };
61
- }
62
- componentWillLoad() {
63
- this.displayValue = formatIsoDate(this.value, this.locale);
64
- }
65
- valueChanged(newValue) {
66
- if (!this.focused)
67
- this.displayValue = formatIsoDate(newValue, this.locale);
68
- }
69
- localeChanged() {
70
- if (!this.focused)
71
- this.displayValue = formatIsoDate(this.value, this.locale);
72
- }
73
- patternPlaceholder() {
74
- if (this.placeholder)
75
- return this.placeholder;
76
- return localeDatePattern(this.locale, {
77
- day: t('date_token_day', this.locale),
78
- month: t('date_token_month', this.locale),
79
- year: t('date_token_year', this.locale),
80
- });
81
- }
82
- /** Parse the typed text, reformat it, and emit the ISO value. */
83
- commit(raw) {
84
- const trimmed = raw.trim();
85
- const iso = trimmed ? parseLocalizedDate(trimmed, this.locale) : '';
86
- if (trimmed && iso === null) {
87
- // Keep the raw text so the user can correct it instead of retyping.
88
- this.error = t('invalid_date', this.locale);
89
- this.displayValue = trimmed;
90
- }
91
- else {
92
- this.error = requiredError(iso, this.required, this.locale);
93
- this.displayValue = iso ? formatIsoDate(iso, this.locale) : '';
94
- }
95
- return iso !== null && iso !== void 0 ? iso : '';
96
- }
97
- /** The ISO value currently shown, so the picker opens on the right date. */
98
- currentIso() {
99
- var _a;
100
- return (_a = (this.displayValue ? parseLocalizedDate(this.displayValue, this.locale) : '')) !== null && _a !== void 0 ? _a : '';
101
21
  }
102
22
  render() {
103
- return (h(Host, { key: '06ba48bd538ee4c8de4e071285535451f783c259' }, h("div", { key: '73ea6ea23c85fe3325bb151afb755cc11a13cf58', class: "mrd-date-field" }, h(FieldLabel, { key: '527848cf72323aef176fc7d5bcd47dcf2f7e46f6', base: "mrd-date-field", label: this.label, required: this.required }), h("div", { key: '2ff7586f4e6298d1f9b9b131106044533de82c6d', class: "mrd-date-field__control" }, h("input", { key: '68fdf2f1f7961ca049ab6493494c8c0707e6a4af', class: controlClass('mrd-date-field', !!this.error), type: "text", name: this.name, value: this.displayValue, placeholder: this.patternPlaceholder(), autocomplete: "off", required: this.required, disabled: this.disabled, onFocus: this.handleFocus, onInput: this.handleInput, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown }), h("span", { key: '9557b7a3f6780b8a05030ab8e7c941c44df9f4a5', class: "mrd-date-field__picker" }, h("button", { key: '586973e0440ed0b74e1fa0affae9e462257024c3', type: "button", class: "mrd-date-field__picker-button", title: t('open_calendar', this.locale), "aria-label": t('open_calendar', this.locale), disabled: this.disabled, onClick: this.openPicker }, h("svg", { key: '144319d3a50d0d38c75c59dd3321d4b9097322a6', viewBox: "0 0 20 20", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "aria-hidden": "true" }, h("rect", { key: 'aec01ca5c620bf3116705b7a28052eb3bc210cfd', x: "3", y: "4.5", width: "14", height: "12", rx: "2" }), h("path", { key: 'a0e13dd3a2005bfbee40f5a071b6760270d0d58d', d: "M3 8.5h14M7 2.5v3M13 2.5v3", "stroke-linecap": "round" }))), h("input", { key: 'be02df44f31a59a26ce166ab9a9eab9db2635d89', class: "mrd-date-field__picker-native", type: "date", ref: el => (this.nativeInput = el), value: this.currentIso(), disabled: this.disabled, tabIndex: -1, "aria-hidden": "true", onChange: this.handlePickerChange }))), h(FieldError, { key: '2f8b2072bee32170a35f98ec5c962018774c7e8c', base: "mrd-date-field", error: this.error }))));
23
+ return (h(Host, { key: 'd83beef11c2b9402e251a50885b92e7a057f02ee' }, h("div", { key: '6a26e4969e9bde8c5c87771d7b8c7b4d6c1dd942', class: "mrd-date-field" }, h(FieldLabel, { key: 'a7bc1b1c56e933a51f6b1b1feb794a4678d9d334', base: "mrd-date-field", label: this.label, required: this.required }), h("input", { key: '82e3855654f3b3c554f80d647e783234cca8dae1', class: controlClass('mrd-date-field', !!this.error), type: "date", name: this.name, value: this.value, required: this.required, disabled: this.disabled, onChange: this.handleChange, onBlur: this.handleBlur }), h(FieldError, { key: '294b3cdc1004725267aa8265366f5009ab324203', base: "mrd-date-field", error: this.error }))));
104
24
  }
105
25
  static get is() { return "mrd-date-field"; }
106
26
  static get encapsulation() { return "scoped"; }
@@ -168,7 +88,7 @@ export class MrdDateField {
168
88
  "optional": false,
169
89
  "docs": {
170
90
  "tags": [],
171
- "text": "ISO date, 'YYYY-MM-DD'."
91
+ "text": ""
172
92
  },
173
93
  "getter": false,
174
94
  "setter": false,
@@ -176,26 +96,6 @@ export class MrdDateField {
176
96
  "attribute": "value",
177
97
  "defaultValue": "''"
178
98
  },
179
- "placeholder": {
180
- "type": "string",
181
- "mutable": false,
182
- "complexType": {
183
- "original": "string",
184
- "resolved": "string",
185
- "references": {}
186
- },
187
- "required": false,
188
- "optional": false,
189
- "docs": {
190
- "tags": [],
191
- "text": "Overrides the locale-derived pattern placeholder (e.g. 'dd-mm-jjjj')."
192
- },
193
- "getter": false,
194
- "setter": false,
195
- "reflect": false,
196
- "attribute": "placeholder",
197
- "defaultValue": "''"
198
- },
199
99
  "required": {
200
100
  "type": "boolean",
201
101
  "mutable": false,
@@ -260,7 +160,6 @@ export class MrdDateField {
260
160
  }
261
161
  static get states() {
262
162
  return {
263
- "displayValue": {},
264
163
  "error": {}
265
164
  };
266
165
  }
@@ -297,13 +196,4 @@ export class MrdDateField {
297
196
  }
298
197
  }];
299
198
  }
300
- static get watchers() {
301
- return [{
302
- "propName": "value",
303
- "methodName": "valueChanged"
304
- }, {
305
- "propName": "locale",
306
- "methodName": "localeChanged"
307
- }];
308
- }
309
199
  }
@@ -19,10 +19,6 @@
19
19
  content: " *";
20
20
  color: var(--mrd-color-danger);
21
21
  }
22
- .mrd-datetime-field__control {
23
- position: relative;
24
- display: block;
25
- }
26
22
  .mrd-datetime-field__input {
27
23
  display: block;
28
24
  width: 100%;
@@ -57,59 +53,12 @@
57
53
  .mrd-datetime-field__input--error:focus {
58
54
  box-shadow: var(--mrd-shadow-focus-error);
59
55
  }
60
- .mrd-datetime-field__input {
61
- padding-inline-end: calc(var(--mrd-input-padding-x) + 1.75rem);
62
- }
63
- .mrd-datetime-field__picker {
64
- position: absolute;
65
- inset-inline-end: var(--mrd-space-1);
66
- top: 50%;
67
- transform: translateY(-50%);
68
- width: 1.75rem;
69
- height: 1.75rem;
70
- }
71
- .mrd-datetime-field__picker-button {
72
- display: inline-flex;
73
- align-items: center;
74
- justify-content: center;
75
- width: 100%;
76
- height: 100%;
77
- padding: 0;
78
- border: 0;
79
- border-radius: var(--mrd-border-radius-sm);
80
- background: transparent;
81
- color: var(--mrd-color-neutral-500);
82
- cursor: pointer;
83
- transition: color var(--mrd-transition), background-color var(--mrd-transition);
84
- }
85
- .mrd-datetime-field__picker-button svg {
86
- width: 1.125rem;
87
- height: 1.125rem;
88
- }
89
- .mrd-datetime-field__picker-button:hover:not(:disabled) {
90
- color: var(--mrd-color-primary);
91
- background-color: var(--mrd-color-neutral-100);
92
- }
93
- .mrd-datetime-field__picker-button:focus-visible {
94
- outline: 2px solid var(--mrd-border-color-focus);
95
- outline-offset: 1px;
96
- }
97
- .mrd-datetime-field__picker-button:disabled {
98
- cursor: not-allowed;
99
- opacity: 0.5;
100
- }
101
- .mrd-datetime-field__picker-native {
102
- position: absolute;
103
- inset: 0;
104
- width: 100%;
105
- height: 100%;
106
- padding: 0;
107
- border: 0;
108
- opacity: 0;
109
- pointer-events: none;
110
- }
111
56
  .mrd-datetime-field__error {
112
57
  font-family: var(--mrd-font-family);
113
58
  font-size: var(--mrd-error-font-size);
114
59
  color: var(--mrd-error-color);
60
+ }
61
+
62
+ .mrd-datetime-field__input {
63
+ cursor: pointer;
115
64
  }
@@ -1,77 +1,33 @@
1
1
  import { Host, h } from "@stencil/core";
2
- import { t } from "../../../utils/i18n";
3
- import { formatLocalDateTime, localeDatePattern, parseLocalizedDateTime } from "../../../utils/format";
4
2
  import { FieldLabel, FieldError, controlClass, requiredError } from "../field-helpers";
5
3
  export class MrdDatetimeField {
6
4
  constructor() {
7
5
  this.name = '';
8
6
  this.label = '';
9
- /** UTC ISO string, e.g. '2026-07-06T12:30:00Z'. */
10
7
  this.value = '';
11
- /** Overrides the locale-derived pattern placeholder (e.g. 'dd-mm-jjjj uu:mm'). */
12
- this.placeholder = '';
13
8
  this.required = false;
14
9
  this.disabled = false;
15
10
  this.locale = navigator.language;
16
- /** What the user sees: the value formatted for `locale`, or their raw typing. */
17
- this.displayValue = '';
18
11
  this.error = '';
19
- /** While focused the user owns the text; prop updates must not overwrite it. */
20
- this.focused = false;
21
- this.handleFocus = () => {
22
- this.focused = true;
23
- };
24
- this.handleInput = (e) => {
25
- this.displayValue = e.target.value;
12
+ this.localValue = '';
13
+ this.handleChange = (e) => {
14
+ const localVal = e.target.value;
15
+ this.localValue = localVal;
16
+ this.error = requiredError(localVal, this.required, this.locale);
17
+ this.mrdChange.emit({ name: this.name, value: this.localToUtc(localVal) });
26
18
  };
27
19
  this.handleBlur = (e) => {
28
- this.focused = false;
29
- const value = this.commit(e.target.value);
30
- this.mrdChange.emit({ name: this.name, value });
31
- this.mrdBlur.emit({ name: this.name, value });
32
- };
33
- this.handleKeyDown = (e) => {
34
- // Submitting with Enter never fires blur, so commit the typed text here too.
35
- if (e.key !== 'Enter')
36
- return;
37
- const value = this.commit(e.target.value);
38
- this.mrdChange.emit({ name: this.name, value });
39
- };
40
- this.openPicker = () => {
41
- const native = this.nativeInput;
42
- if (!native || this.disabled)
43
- return;
44
- // The blur commit that precedes this click re-renders asynchronously, so sync by hand first.
45
- native.value = this.currentLocal();
46
- try {
47
- native.showPicker();
48
- }
49
- catch (_a) {
50
- // Browsers without showPicker(): focusing at least surfaces the platform control.
51
- native.focus();
52
- }
53
- };
54
- this.handlePickerChange = (e) => {
55
- const local = e.target.value; // native inputs always yield 'YYYY-MM-DDTHH:mm'
56
- this.displayValue = formatLocalDateTime(local, this.locale);
57
- this.error = requiredError(local, this.required, this.locale);
58
- const value = this.localToUtc(local);
59
- this.mrdChange.emit({ name: this.name, value });
60
- this.mrdBlur.emit({ name: this.name, value });
20
+ const localVal = e.target.value;
21
+ this.mrdBlur.emit({ name: this.name, value: this.localToUtc(localVal) });
61
22
  };
62
23
  }
63
24
  componentWillLoad() {
64
- this.displayValue = this.toDisplay(this.value);
25
+ this.localValue = this.utcToLocal(this.value);
65
26
  }
66
27
  valueChanged(newVal) {
67
- if (!this.focused)
68
- this.displayValue = this.toDisplay(newVal);
28
+ this.localValue = this.utcToLocal(newVal);
69
29
  }
70
- localeChanged() {
71
- if (!this.focused)
72
- this.displayValue = this.toDisplay(this.value);
73
- }
74
- // UTC ISO string → "YYYY-MM-DDTHH:mm" in local timezone
30
+ // UTC ISO string → "YYYY-MM-DDTHH:mm" in local timezone (for datetime-local input)
75
31
  utcToLocal(utcStr) {
76
32
  if (!utcStr)
77
33
  return '';
@@ -90,43 +46,8 @@ export class MrdDatetimeField {
90
46
  return '';
91
47
  return d.toISOString().replace(/\.\d{3}Z$/, 'Z');
92
48
  }
93
- // UTC ISO string → locale-formatted text for the input
94
- toDisplay(utcStr) {
95
- return formatLocalDateTime(this.utcToLocal(utcStr), this.locale);
96
- }
97
- patternPlaceholder() {
98
- if (this.placeholder)
99
- return this.placeholder;
100
- return localeDatePattern(this.locale, {
101
- day: t('date_token_day', this.locale),
102
- month: t('date_token_month', this.locale),
103
- year: t('date_token_year', this.locale),
104
- hour: t('time_token_hour', this.locale),
105
- minute: t('time_token_minute', this.locale),
106
- });
107
- }
108
- /** Parse the typed text, reformat it, and return the UTC value to emit. */
109
- commit(raw) {
110
- const trimmed = raw.trim();
111
- const local = trimmed ? parseLocalizedDateTime(trimmed, this.locale) : '';
112
- if (trimmed && local === null) {
113
- // Keep the raw text so the user can correct it instead of retyping.
114
- this.error = t('invalid_datetime', this.locale);
115
- this.displayValue = trimmed;
116
- return '';
117
- }
118
- const localValue = local !== null && local !== void 0 ? local : '';
119
- this.error = requiredError(localValue, this.required, this.locale);
120
- this.displayValue = localValue ? formatLocalDateTime(localValue, this.locale) : '';
121
- return this.localToUtc(localValue);
122
- }
123
- /** The local 'YYYY-MM-DDTHH:mm' currently shown, so the picker opens on the right moment. */
124
- currentLocal() {
125
- var _a;
126
- return (_a = (this.displayValue ? parseLocalizedDateTime(this.displayValue, this.locale) : '')) !== null && _a !== void 0 ? _a : '';
127
- }
128
49
  render() {
129
- return (h(Host, { key: 'e075e65c76a627a8f19db488c07704e2b1a7270b' }, h("div", { key: 'a6b5a5df3168272f1f775933dfc372e1b2ccbd95', class: "mrd-datetime-field" }, h(FieldLabel, { key: '39e232c066b8c354eeda7df9bcba4e3f95c18ee5', base: "mrd-datetime-field", label: this.label, required: this.required }), h("div", { key: '4ffac4089cbb9e5506aa0854c8b1f15862bc8456', class: "mrd-datetime-field__control" }, h("input", { key: 'd33400133173c7f3e8b045339f44fbeba7f0b35a', class: controlClass('mrd-datetime-field', !!this.error), type: "text", name: this.name, value: this.displayValue, placeholder: this.patternPlaceholder(), autocomplete: "off", required: this.required, disabled: this.disabled, onFocus: this.handleFocus, onInput: this.handleInput, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown }), h("span", { key: '54d8d3b1f508d6226d1341d87c1fec19d5914a10', class: "mrd-datetime-field__picker" }, h("button", { key: '27cd3977984eedd9e3471dd039fc73798f1c7abc', type: "button", class: "mrd-datetime-field__picker-button", title: t('open_calendar', this.locale), "aria-label": t('open_calendar', this.locale), disabled: this.disabled, onClick: this.openPicker }, h("svg", { key: '634ca817fa001263933795e35e1a215a06da7a77', viewBox: "0 0 20 20", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "aria-hidden": "true" }, h("rect", { key: '66eadf6b2cfee53376f6ea0f50dbd2ec04fc5663', x: "3", y: "4.5", width: "14", height: "12", rx: "2" }), h("path", { key: '4bb61793e0501bd18bb16c4e203b20f509692970', d: "M3 8.5h14M7 2.5v3M13 2.5v3", "stroke-linecap": "round" }))), h("input", { key: '8877da44e4dc527e7c05244359a0caf9d2e81fdd', class: "mrd-datetime-field__picker-native", type: "datetime-local", ref: el => (this.nativeInput = el), value: this.currentLocal(), disabled: this.disabled, tabIndex: -1, "aria-hidden": "true", onChange: this.handlePickerChange }))), h(FieldError, { key: '4ee97180614972c4dd334d68873a9fb7f91e48f5', base: "mrd-datetime-field", error: this.error }))));
50
+ return (h(Host, { key: '6f8020590ac879992058aa9547b90c11250fa303' }, h("div", { key: '76abff48cae58d156540181a6577729a449bb888', class: "mrd-datetime-field" }, h(FieldLabel, { key: 'a8c3688980347a27d6467987f11a3c4135ac5234', base: "mrd-datetime-field", label: this.label, required: this.required }), h("input", { key: '1bb1aa7536a6a82313f51240030c828028cafd76', class: controlClass('mrd-datetime-field', !!this.error), type: "datetime-local", name: this.name, value: this.localValue, required: this.required, disabled: this.disabled, onChange: this.handleChange, onBlur: this.handleBlur }), h(FieldError, { key: 'c97301640980bf04311751124fc8e87023d59f87', base: "mrd-datetime-field", error: this.error }))));
130
51
  }
131
52
  static get is() { return "mrd-datetime-field"; }
132
53
  static get encapsulation() { return "scoped"; }
@@ -194,7 +115,7 @@ export class MrdDatetimeField {
194
115
  "optional": false,
195
116
  "docs": {
196
117
  "tags": [],
197
- "text": "UTC ISO string, e.g. '2026-07-06T12:30:00Z'."
118
+ "text": ""
198
119
  },
199
120
  "getter": false,
200
121
  "setter": false,
@@ -202,26 +123,6 @@ export class MrdDatetimeField {
202
123
  "attribute": "value",
203
124
  "defaultValue": "''"
204
125
  },
205
- "placeholder": {
206
- "type": "string",
207
- "mutable": false,
208
- "complexType": {
209
- "original": "string",
210
- "resolved": "string",
211
- "references": {}
212
- },
213
- "required": false,
214
- "optional": false,
215
- "docs": {
216
- "tags": [],
217
- "text": "Overrides the locale-derived pattern placeholder (e.g. 'dd-mm-jjjj uu:mm')."
218
- },
219
- "getter": false,
220
- "setter": false,
221
- "reflect": false,
222
- "attribute": "placeholder",
223
- "defaultValue": "''"
224
- },
225
126
  "required": {
226
127
  "type": "boolean",
227
128
  "mutable": false,
@@ -286,8 +187,8 @@ export class MrdDatetimeField {
286
187
  }
287
188
  static get states() {
288
189
  return {
289
- "displayValue": {},
290
- "error": {}
190
+ "error": {},
191
+ "localValue": {}
291
192
  };
292
193
  }
293
194
  static get events() {
@@ -327,9 +228,6 @@ export class MrdDatetimeField {
327
228
  return [{
328
229
  "propName": "value",
329
230
  "methodName": "valueChanged"
330
- }, {
331
- "propName": "locale",
332
- "methodName": "localeChanged"
333
231
  }];
334
232
  }
335
233
  }
@@ -24,7 +24,7 @@ export class MrdEmailField {
24
24
  };
25
25
  }
26
26
  render() {
27
- return (h(Host, { key: 'e185145e628e3a23dd338d93dd8e42bf11569728' }, h("div", { key: '7d77dd982543a8add5fa1f47aa7985cc15079080', class: "mrd-email-field" }, h(FieldLabel, { key: '14eb00a535a052ebe3cb2793cc7dfc05168c402b', base: "mrd-email-field", label: this.label, required: this.required }), h("input", { key: '11fb9856144f7da30a054b4433350d80d316de64', class: controlClass('mrd-email-field', !!this.error), type: "email", name: this.name, value: this.value, placeholder: this.placeholder || 'name@example.com', required: this.required, disabled: this.disabled, onInput: this.handleInput, onBlur: this.handleBlur }), h(FieldError, { key: 'be33c0a43cd99a7152c1d10b7067ea5e52834742', base: "mrd-email-field", error: this.error }))));
27
+ return (h(Host, { key: '3253124dadc7f0b3f120c11f8c35604a2f671b0a' }, h("div", { key: 'db820652452145c30f21b41a65942c0a4c6f45f1', class: "mrd-email-field" }, h(FieldLabel, { key: '8b1c5a84afce9fd18c3f644e5c92f07363e116d4', base: "mrd-email-field", label: this.label, required: this.required }), h("input", { key: 'dc4bada3208aa6cb7585b1872f53605177371493', class: controlClass('mrd-email-field', !!this.error), type: "email", name: this.name, value: this.value, placeholder: this.placeholder || 'name@example.com', required: this.required, disabled: this.disabled, onInput: this.handleInput, onBlur: this.handleBlur }), h(FieldError, { key: 'c44377d1b6a4a4c468b080b23eecd4ba9ca326e1', base: "mrd-email-field", error: this.error }))));
28
28
  }
29
29
  static get is() { return "mrd-email-field"; }
30
30
  static get encapsulation() { return "scoped"; }
@@ -112,7 +112,7 @@ export class MrdFileField {
112
112
  error: hasError,
113
113
  disabled: this.disabled || this.zoneBusy,
114
114
  });
115
- return (h(Host, { key: '36f9660fd297e7b2e7b2ac1816f4dcbc70d5cfcb' }, h("div", { key: 'a33534d3fedae04bad0eefc9d2d297ea148c5784', class: "mrd-file-field" }, h(FieldLabel, { key: '833f8ff178ec259c8066ddf542bdd1930bac486f', base: "mrd-file-field", label: this.label, required: this.required }), h("div", { key: 'd3bd00b25329b8cc716c5fcc526919d8f2c14bce', class: zoneClass, onClick: this.handleZoneClick, onDragOver: this.drag.onDragOver, onDragLeave: this.drag.onDragLeave, onDrop: this.drag.onDrop }, h("input", { key: '4b98ee338e8a5e4e6f94e5b5614ca88c90f802ee', ref: el => (this.fileInputRef = el), class: "mrd-file-field__input", type: "file", name: this.name, accept: this.accept, multiple: this.multiple, disabled: this.disabled || this.zoneBusy, required: this.required && !hasEntries, onChange: this.handleInputChange }), hasEntries && !this.multiple ? (h("div", { class: "mrd-file-field__selected" }, this.renderEntry(this.entries[0], 0))) : (h("div", { class: "mrd-file-field__prompt" }, h("svg", { class: "mrd-file-field__upload-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("polyline", { points: "16 16 12 12 8 16" }), h("line", { x1: "12", y1: "12", x2: "12", y2: "21" }), h("path", { d: "M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3" })), h("span", null, t('drop_file_here', this.locale), ' ', h("span", { class: "mrd-file-field__browse" }, t('browse', this.locale)))))), this.multiple && hasEntries && (h("ul", { key: '6e6e1d62738d0a824eb86e0dbb01b63a0227580d', class: "mrd-file-field__list" }, this.entries.map((entry, index) => (h("li", { class: "mrd-file-field__item", key: `${index}-${entryLabel(entry)}` }, this.renderEntry(entry, index)))))), h(FieldError, { key: 'df6427015d3f813a72e8998f9fa6152f6caef90e', base: "mrd-file-field", error: this.error }))));
115
+ return (h(Host, { key: '2e740a0857b069740a6a13616d0a0dfee2b945be' }, h("div", { key: '069b25ced3b2f1ce547819086dadbd53ade2378c', class: "mrd-file-field" }, h(FieldLabel, { key: 'd13f3cb0af766d6328772dab865b2079c85ec075', base: "mrd-file-field", label: this.label, required: this.required }), h("div", { key: '9ffdbb508e3934854034c46e6f719a88d4175920', class: zoneClass, onClick: this.handleZoneClick, onDragOver: this.drag.onDragOver, onDragLeave: this.drag.onDragLeave, onDrop: this.drag.onDrop }, h("input", { key: 'c5d6954b8fa050889b5b65e15fde229dd64d7cc7', ref: el => (this.fileInputRef = el), class: "mrd-file-field__input", type: "file", name: this.name, accept: this.accept, multiple: this.multiple, disabled: this.disabled || this.zoneBusy, required: this.required && !hasEntries, onChange: this.handleInputChange }), hasEntries && !this.multiple ? (h("div", { class: "mrd-file-field__selected" }, this.renderEntry(this.entries[0], 0))) : (h("div", { class: "mrd-file-field__prompt" }, h("svg", { class: "mrd-file-field__upload-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("polyline", { points: "16 16 12 12 8 16" }), h("line", { x1: "12", y1: "12", x2: "12", y2: "21" }), h("path", { d: "M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3" })), h("span", null, t('drop_file_here', this.locale), ' ', h("span", { class: "mrd-file-field__browse" }, t('browse', this.locale)))))), this.multiple && hasEntries && (h("ul", { key: '910a3e89f74d93ab16fb9f677a4276d5ad88897d', class: "mrd-file-field__list" }, this.entries.map((entry, index) => (h("li", { class: "mrd-file-field__item", key: `${index}-${entryLabel(entry)}` }, this.renderEntry(entry, index)))))), h(FieldError, { key: '4f0f071b0a1460ea1d6067a8fa4f588ebc620f2a', base: "mrd-file-field", error: this.error }))));
116
116
  }
117
117
  static get is() { return "mrd-file-field"; }
118
118
  static get encapsulation() { return "scoped"; }
@@ -130,7 +130,7 @@ export class MrdImageField {
130
130
  error: hasError,
131
131
  disabled: this.disabled || this.zoneBusy,
132
132
  });
133
- return (h(Host, { key: '5009b2db845c8f85f395c7230e2d5c464c56ea14' }, h("div", { key: 'fcae7821876ee3d71aac576cdea44c3c4f169890', class: "mrd-image-field" }, h(FieldLabel, { key: '834638e3f7b2073508d98b6dd5ecb437b0bb52ad', base: "mrd-image-field", label: this.label, required: this.required }), h("div", { key: '50e9bdaa1ebb3ec87f36e0d37dc6c2f8dc79848d', class: zoneClass, onClick: this.handleZoneClick, onDragOver: this.drag.onDragOver, onDragLeave: this.drag.onDragLeave, onDrop: this.drag.onDrop }, h("input", { key: '38e115fae5b3e2c3371857d284fbd54ea23812df', ref: el => (this.fileInputRef = el), class: "mrd-image-field__input", type: "file", name: this.name, accept: this.accept, multiple: this.multiple, disabled: this.disabled || this.zoneBusy, required: this.required && !hasEntries, onChange: this.handleInputChange }), hasEntries && !this.multiple ? (this.renderSingle(this.entries[0])) : (h("div", { class: "mrd-image-field__prompt" }, h("svg", { class: "mrd-image-field__upload-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", ry: "2" }), h("circle", { cx: "8.5", cy: "8.5", r: "1.5" }), h("polyline", { points: "21 15 16 10 5 21" })), h("span", null, t('drop_file_here', this.locale), ' ', h("span", { class: "mrd-image-field__browse" }, t('browse', this.locale)))))), this.multiple && hasEntries && (h("ul", { key: '67bad2f2142f78d7f25b8f35819b6adba48ea597', class: "mrd-image-field__grid" }, this.entries.map((entry, index) => this.renderGridItem(entry, index)))), h(FieldError, { key: 'ef07863946f0b4c94aa30b97d0ecb9616303e793', base: "mrd-image-field", error: this.error }))));
133
+ return (h(Host, { key: '51d39ea80195565a5dc780ff6a7923a976cfb0a7' }, h("div", { key: 'd76edb7ac9f1efea8c7c3d5b04e906ad4ab4c761', class: "mrd-image-field" }, h(FieldLabel, { key: 'b46a67a76188047677c40ce3f406daed7d8de141', base: "mrd-image-field", label: this.label, required: this.required }), h("div", { key: '0156a9722ea48d84e3ea1a829e4266425a594a6a', class: zoneClass, onClick: this.handleZoneClick, onDragOver: this.drag.onDragOver, onDragLeave: this.drag.onDragLeave, onDrop: this.drag.onDrop }, h("input", { key: '1b8e41da71bb57254bfd2e5527b05e1aeb32eb2f', ref: el => (this.fileInputRef = el), class: "mrd-image-field__input", type: "file", name: this.name, accept: this.accept, multiple: this.multiple, disabled: this.disabled || this.zoneBusy, required: this.required && !hasEntries, onChange: this.handleInputChange }), hasEntries && !this.multiple ? (this.renderSingle(this.entries[0])) : (h("div", { class: "mrd-image-field__prompt" }, h("svg", { class: "mrd-image-field__upload-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", ry: "2" }), h("circle", { cx: "8.5", cy: "8.5", r: "1.5" }), h("polyline", { points: "21 15 16 10 5 21" })), h("span", null, t('drop_file_here', this.locale), ' ', h("span", { class: "mrd-image-field__browse" }, t('browse', this.locale)))))), this.multiple && hasEntries && (h("ul", { key: '9211b5212eae0629f7c9b2b49d80e2b658a9ddd3', class: "mrd-image-field__grid" }, this.entries.map((entry, index) => this.renderGridItem(entry, index)))), h(FieldError, { key: '5f49c03156ed18e7c8307adff679b149658ca4a6', base: "mrd-image-field", error: this.error }))));
134
134
  }
135
135
  static get is() { return "mrd-image-field"; }
136
136
  static get encapsulation() { return "scoped"; }
@@ -21,7 +21,7 @@ export class MrdLongtextField {
21
21
  };
22
22
  }
23
23
  render() {
24
- return (h(Host, { key: 'a43ce67cb05e96853193e56c175d99e51d07cbab' }, h("div", { key: 'eb7d09bcae010736dd17b5f17bcb1cb32a6b1c4e', class: "mrd-longtext-field" }, h(FieldLabel, { key: 'd3a47993cc977c06b845eda4575b93d238eaf15a', base: "mrd-longtext-field", label: this.label, required: this.required }), this.disabled ? (h("pre", { class: "mrd-longtext-field__content" }, this.value)) : (h("textarea", { class: controlClass('mrd-longtext-field', !!this.error), name: this.name, placeholder: this.placeholder, required: this.required, rows: 10, onInput: this.handleInput, onBlur: this.handleBlur }, this.value)), h(FieldError, { key: '89f801af61fc0b874db44dbfca6eb33ffe285a84', base: "mrd-longtext-field", error: this.error }))));
24
+ return (h(Host, { key: 'e53fec4d4eafbd68d9cffb1f064d8e0c4c37839c' }, h("div", { key: '8843a23e42b0545c269fc6c924e7ae295770064e', class: "mrd-longtext-field" }, h(FieldLabel, { key: '8767676dd35f25f9bf5ebdb26887edc0882582e0', base: "mrd-longtext-field", label: this.label, required: this.required }), this.disabled ? (h("pre", { class: "mrd-longtext-field__content" }, this.value)) : (h("textarea", { class: controlClass('mrd-longtext-field', !!this.error), name: this.name, placeholder: this.placeholder, required: this.required, rows: 10, onInput: this.handleInput, onBlur: this.handleBlur }, this.value)), h(FieldError, { key: '54dc790173575e8a02764e5b14040b900c2eb609', base: "mrd-longtext-field", error: this.error }))));
25
25
  }
26
26
  static get is() { return "mrd-longtext-field"; }
27
27
  static get encapsulation() { return "scoped"; }
@@ -86,7 +86,7 @@ export class MrdNumberField {
86
86
  const hasError = !!this.error;
87
87
  const suffix = this.dataType === ClientLayoutItemFieldDataType.PERCENTAGE ? '%' :
88
88
  this.dataType === ClientLayoutItemFieldDataType.DECIMAL ? '' : '';
89
- return (h(Host, { key: 'bd5eb25cf7b97ef2ddb67a6bc6d6d96c9bff7510' }, h("div", { key: '68b15887a045f743a7f177e7a178146a9f4e0400', class: "mrd-number-field" }, h(FieldLabel, { key: '72e88a34a390e36ee11f5840d87dedd9d4d7fb12', base: "mrd-number-field", label: this.label, required: this.required }), h("div", { key: 'd97dae69eedf4c0ed1c872065754327dbffb5ba7', class: "mrd-number-field__input-wrapper" }, h("input", { key: '5767f6c34a08f503a1a157390c679382c857ff01', class: controlClass('mrd-number-field', hasError), type: "text", inputMode: "decimal", name: this.name, value: this.displayValue, placeholder: this.placeholder || (suffix ? `0${suffix}` : '0'), required: this.required, disabled: this.disabled, onInput: this.handleInput, onBlur: this.handleBlur, onFocus: this.handleFocus })), h(FieldError, { key: '1d4f8ffd3fcdf2ae2e8eb1eb68c051619d66c954', base: "mrd-number-field", error: this.error }))));
89
+ return (h(Host, { key: '7343dbca882b5054f22de17672ac748a8e3eca11' }, h("div", { key: 'cef10b39515b48fc9c44e651910c6a0c2a847628', class: "mrd-number-field" }, h(FieldLabel, { key: '66f178cf20f1f2f0587bd9614db150d6ae63023e', base: "mrd-number-field", label: this.label, required: this.required }), h("div", { key: 'c57c22e663a570f6e5a70b07b817970f135e850c', class: "mrd-number-field__input-wrapper" }, h("input", { key: '388b20ac11fa4aaf78df124c858b579e12f53619', class: controlClass('mrd-number-field', hasError), type: "text", inputMode: "decimal", name: this.name, value: this.displayValue, placeholder: this.placeholder || (suffix ? `0${suffix}` : '0'), required: this.required, disabled: this.disabled, onInput: this.handleInput, onBlur: this.handleBlur, onFocus: this.handleFocus })), h(FieldError, { key: 'f99bb85668b047a97162ffee2582eb45dc0589ae', base: "mrd-number-field", error: this.error }))));
90
90
  }
91
91
  static get is() { return "mrd-number-field"; }
92
92
  static get encapsulation() { return "scoped"; }
@@ -21,9 +21,9 @@ export class MrdSecretField {
21
21
  };
22
22
  }
23
23
  render() {
24
- return (h(Host, { key: 'd3d204242898c1f258b088e7b5428421cde8d7a7' }, h("div", { key: '11d284625cdd1e0def58cc31eab9bbe59346649d', class: "mrd-secret-field" }, h(FieldLabel, { key: '333e5b23d2379125a393f555b936be7bc521fdb4', base: "mrd-secret-field", label: this.label, required: this.required }), this.disabled
24
+ return (h(Host, { key: 'e06d04fdae34b42441976e21605fe94ad935382e' }, h("div", { key: '2889e1eb1b6d0887ae531523a0b9b43c49ef6f99', class: "mrd-secret-field" }, h(FieldLabel, { key: 'c40907905292cdef8bb0b8b9b0c03e05650bef37', base: "mrd-secret-field", label: this.label, required: this.required }), this.disabled
25
25
  ? (h("span", { class: "mrd-secret-field__masked", "aria-label": this.label }, this.value ? '••••••••' : ''))
26
- : (h("input", { class: controlClass('mrd-secret-field', !!this.error), type: "password", name: this.name, value: this.value, placeholder: this.placeholder, required: this.required, autocomplete: "new-password", onInput: this.handleInput, onBlur: this.handleBlur })), h(FieldError, { key: 'cc202197fdab62da7b5083e078e69efd86e673ca', base: "mrd-secret-field", error: this.error }))));
26
+ : (h("input", { class: controlClass('mrd-secret-field', !!this.error), type: "password", name: this.name, value: this.value, placeholder: this.placeholder, required: this.required, autocomplete: "new-password", onInput: this.handleInput, onBlur: this.handleBlur })), h(FieldError, { key: '6353e4b40566852dbc1994c7c9c409d0d0aa1b37', base: "mrd-secret-field", error: this.error }))));
27
27
  }
28
28
  static get is() { return "mrd-secret-field"; }
29
29
  static get encapsulation() { return "scoped"; }
@@ -21,7 +21,7 @@ export class MrdTextField {
21
21
  };
22
22
  }
23
23
  render() {
24
- return (h(Host, { key: '145aa80d06459fe85650702ced893e102762afa8' }, h("div", { key: '8f08af9acff56e704d216dc185a5d344b5b9f671', class: "mrd-text-field" }, h(FieldLabel, { key: '4e0204ffe7e8460eaf9a4be1535252cc11d0bab7', base: "mrd-text-field", label: this.label, required: this.required }), h("input", { key: '4d519077ad96c121ede51e188a2151efe72811db', class: controlClass('mrd-text-field', !!this.error), type: "text", name: this.name, value: this.value, placeholder: this.placeholder, required: this.required, disabled: this.disabled, onInput: this.handleInput, onBlur: this.handleBlur }), h(FieldError, { key: '3c5af47037f6d6851503d769429d6c0f786d389d', base: "mrd-text-field", error: this.error }))));
24
+ return (h(Host, { key: '3153f0c6f8ab4d9dae93306f7507399aeda75eaf' }, h("div", { key: '5d9c28023fdfb5472fc115c66bc3df509506e10f', class: "mrd-text-field" }, h(FieldLabel, { key: '1e21139aae0cc1ae95aa3297271b618a40043e77', base: "mrd-text-field", label: this.label, required: this.required }), h("input", { key: '46f98d5e39bb834075449fac7096b077a1ae7bb3', class: controlClass('mrd-text-field', !!this.error), type: "text", name: this.name, value: this.value, placeholder: this.placeholder, required: this.required, disabled: this.disabled, onInput: this.handleInput, onBlur: this.handleBlur }), h(FieldError, { key: '10b6ddae9cd9f36dc9d7176167d79df8e4102c03', base: "mrd-text-field", error: this.error }))));
25
25
  }
26
26
  static get is() { return "mrd-text-field"; }
27
27
  static get encapsulation() { return "scoped"; }