@mmlogic/components 0.3.4 → 0.3.6
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/{collection/utils/cell-renderer.js → mosterdcomponents/cell-renderer-CbRwLOo8.js} +9 -3
- package/dist/mosterdcomponents/cell-renderer-CbRwLOo8.js.map +1 -0
- package/dist/{esm/index.js → mosterdcomponents/client-layout-D88nn5zf.js} +4 -1
- package/dist/mosterdcomponents/client-layout-D88nn5zf.js.map +1 -0
- package/dist/{collection/utils/format.js → mosterdcomponents/format-BAfsQfy1.js} +12 -7
- package/dist/mosterdcomponents/format-BAfsQfy1.js.map +1 -0
- package/dist/{collection/utils/i18n.js → mosterdcomponents/i18n-hoGGKbKU.js} +6 -1
- package/dist/mosterdcomponents/i18n-hoGGKbKU.js.map +1 -0
- package/dist/mosterdcomponents/index-B_tPFIvS.js +4585 -0
- package/dist/mosterdcomponents/index-B_tPFIvS.js.map +1 -0
- package/dist/mosterdcomponents/index-I5SuYv7a.js +4 -0
- package/dist/mosterdcomponents/index-I5SuYv7a.js.map +1 -0
- package/dist/mosterdcomponents/index.esm.js +5 -1
- package/dist/mosterdcomponents/index.esm.js.map +1 -0
- package/dist/mosterdcomponents/mosterdcomponents.css +180 -1
- package/dist/mosterdcomponents/mosterdcomponents.esm.js +50 -1
- package/dist/mosterdcomponents/mosterdcomponents.esm.js.map +1 -0
- package/dist/mosterdcomponents/mrd-boolean-field.entry.js +37 -0
- package/dist/mosterdcomponents/mrd-boolean-field.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-currency-field.entry.js +67 -0
- package/dist/mosterdcomponents/mrd-currency-field.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-date-field.entry.js +46 -0
- package/dist/mosterdcomponents/mrd-date-field.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-datetime-field.entry.js +78 -0
- package/dist/mosterdcomponents/mrd-datetime-field.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-email-field.entry.js +50 -0
- package/dist/mosterdcomponents/mrd-email-field.entry.js.map +1 -0
- package/dist/{collection/components/mrd-field/mrd-field.js → mosterdcomponents/mrd-field.entry.js} +28 -179
- package/dist/mosterdcomponents/mrd-field.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-file-field.entry.js +108 -0
- package/dist/mosterdcomponents/mrd-file-field.entry.js.map +1 -0
- package/dist/{collection/components/mrd-form/mrd-form.js → mosterdcomponents/mrd-form.entry.js} +82 -280
- package/dist/mosterdcomponents/mrd-form.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-hyperlink-field.entry.js +87 -0
- package/dist/mosterdcomponents/mrd-hyperlink-field.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-image-field.entry.js +122 -0
- package/dist/mosterdcomponents/mrd-image-field.entry.js.map +1 -0
- package/dist/{collection/components/mrd-layout-section/mrd-layout-section.js → mosterdcomponents/mrd-layout-section.entry.js} +31 -418
- package/dist/mosterdcomponents/mrd-layout-section.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-list-field.entry.js +107 -0
- package/dist/mosterdcomponents/mrd-list-field.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-longtext-field.entry.js +47 -0
- package/dist/mosterdcomponents/mrd-longtext-field.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-number-field.entry.js +87 -0
- package/dist/mosterdcomponents/mrd-number-field.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-relation-field.entry.js +267 -0
- package/dist/mosterdcomponents/mrd-relation-field.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-secret-field.entry.js +49 -0
- package/dist/mosterdcomponents/mrd-secret-field.entry.js.map +1 -0
- package/dist/{collection/components/mrd-table/mrd-table.js → mosterdcomponents/mrd-table.entry.js} +67 -398
- package/dist/mosterdcomponents/mrd-table.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-text-field.entry.js +47 -0
- package/dist/mosterdcomponents/mrd-text-field.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-textarea-field.entry.js +86 -0
- package/dist/mosterdcomponents/mrd-textarea-field.entry.js.map +1 -0
- package/dist/mosterdcomponents/mrd-time-field.entry.js +46 -0
- package/dist/mosterdcomponents/mrd-time-field.entry.js.map +1 -0
- package/dist/{esm/quill-CiuCgGz_.js → mosterdcomponents/quill-C9pgw_k-.js} +16282 -1397
- package/dist/mosterdcomponents/quill-C9pgw_k-.js.map +1 -0
- package/dist/{collection/utils/validation.js → mosterdcomponents/validation-ixb43cqU.js} +12 -5
- package/dist/mosterdcomponents/validation-ixb43cqU.js.map +1 -0
- package/dist/types/components/mrd-form/mrd-form.d.ts +13 -1
- package/dist/types/components/mrd-relation-field/mrd-relation-field.d.ts +3 -0
- package/dist/types/components/mrd-table/mrd-table.d.ts +4 -0
- package/dist/types/components.d.ts +19 -9
- package/package.json +1 -1
- package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -5
- package/dist/cjs/index-BPj2cBXs.js +0 -1570
- package/dist/cjs/index.cjs.js +0 -66
- package/dist/cjs/loader.cjs.js +0 -13
- package/dist/cjs/mosterdcomponents.cjs.js +0 -25
- package/dist/cjs/mrd-boolean-field_20.cjs.entry.js +0 -3848
- package/dist/cjs/quill-DmFfnC1f.js +0 -16272
- package/dist/collection/collection-manifest.json +0 -32
- package/dist/collection/components/mrd-boolean-field/mrd-boolean-field.js +0 -199
- package/dist/collection/components/mrd-boolean-field/mrd-boolean-field.scss +0 -77
- package/dist/collection/components/mrd-currency-field/mrd-currency-field.js +0 -248
- package/dist/collection/components/mrd-currency-field/mrd-currency-field.scss +0 -100
- package/dist/collection/components/mrd-date-field/mrd-date-field.js +0 -206
- package/dist/collection/components/mrd-date-field/mrd-date-field.scss +0 -66
- package/dist/collection/components/mrd-datetime-field/mrd-datetime-field.js +0 -240
- package/dist/collection/components/mrd-datetime-field/mrd-datetime-field.scss +0 -66
- package/dist/collection/components/mrd-email-field/mrd-email-field.js +0 -230
- package/dist/collection/components/mrd-email-field/mrd-email-field.scss +0 -69
- package/dist/collection/components/mrd-field/mrd-field.scss +0 -118
- package/dist/collection/components/mrd-file-field/mrd-file-field.js +0 -341
- package/dist/collection/components/mrd-file-field/mrd-file-field.scss +0 -153
- package/dist/collection/components/mrd-form/mrd-form.scss +0 -148
- package/dist/collection/components/mrd-hyperlink-field/mrd-hyperlink-field.js +0 -291
- package/dist/collection/components/mrd-hyperlink-field/mrd-hyperlink-field.scss +0 -91
- package/dist/collection/components/mrd-image-field/mrd-image-field.js +0 -356
- package/dist/collection/components/mrd-image-field/mrd-image-field.scss +0 -190
- package/dist/collection/components/mrd-layout-section/mrd-layout-section.scss +0 -445
- package/dist/collection/components/mrd-list-field/mrd-list-field.js +0 -313
- package/dist/collection/components/mrd-list-field/mrd-list-field.scss +0 -109
- package/dist/collection/components/mrd-longtext-field/mrd-longtext-field.js +0 -227
- package/dist/collection/components/mrd-longtext-field/mrd-longtext-field.scss +0 -78
- package/dist/collection/components/mrd-number-field/mrd-number-field.js +0 -316
- package/dist/collection/components/mrd-number-field/mrd-number-field.scss +0 -77
- package/dist/collection/components/mrd-relation-field/mrd-relation-field.js +0 -678
- package/dist/collection/components/mrd-relation-field/mrd-relation-field.scss +0 -266
- package/dist/collection/components/mrd-secret-field/mrd-secret-field.js +0 -229
- package/dist/collection/components/mrd-secret-field/mrd-secret-field.scss +0 -73
- package/dist/collection/components/mrd-table/mrd-table.scss +0 -742
- package/dist/collection/components/mrd-text-field/mrd-text-field.js +0 -227
- package/dist/collection/components/mrd-text-field/mrd-text-field.scss +0 -69
- package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.js +0 -267
- package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.scss +0 -79
- package/dist/collection/components/mrd-time-field/mrd-time-field.js +0 -206
- package/dist/collection/components/mrd-time-field/mrd-time-field.scss +0 -66
- package/dist/collection/dev/api.js +0 -136
- package/dist/collection/dev/app.js +0 -868
- package/dist/collection/dev/auth.js +0 -156
- package/dist/collection/dev/example-data.js +0 -403
- package/dist/collection/dev/sprites.svg +0 -55
- package/dist/collection/index.js +0 -1
- package/dist/collection/types/client-layout.js +0 -64
- package/dist/collection/types/index.js +0 -1
- package/dist/components/client-layout.js +0 -1
- package/dist/components/format.js +0 -1
- package/dist/components/i18n.js +0 -1
- package/dist/components/index.js +0 -1
- package/dist/components/mrd-boolean-field.js +0 -1
- package/dist/components/mrd-boolean-field2.js +0 -1
- package/dist/components/mrd-currency-field.js +0 -1
- package/dist/components/mrd-currency-field2.js +0 -1
- package/dist/components/mrd-date-field.js +0 -1
- package/dist/components/mrd-date-field2.js +0 -1
- package/dist/components/mrd-datetime-field.js +0 -1
- package/dist/components/mrd-datetime-field2.js +0 -1
- package/dist/components/mrd-email-field.js +0 -1
- package/dist/components/mrd-email-field2.js +0 -1
- package/dist/components/mrd-field.js +0 -1
- package/dist/components/mrd-field2.js +0 -1
- package/dist/components/mrd-file-field.js +0 -1
- package/dist/components/mrd-file-field2.js +0 -1
- package/dist/components/mrd-form.js +0 -1
- package/dist/components/mrd-hyperlink-field.js +0 -1
- package/dist/components/mrd-hyperlink-field2.js +0 -1
- package/dist/components/mrd-image-field.js +0 -1
- package/dist/components/mrd-image-field2.js +0 -1
- package/dist/components/mrd-layout-section.js +0 -1
- package/dist/components/mrd-list-field.js +0 -1
- package/dist/components/mrd-list-field2.js +0 -1
- package/dist/components/mrd-longtext-field.js +0 -1
- package/dist/components/mrd-longtext-field2.js +0 -1
- package/dist/components/mrd-number-field.js +0 -1
- package/dist/components/mrd-number-field2.js +0 -1
- package/dist/components/mrd-relation-field.js +0 -1
- package/dist/components/mrd-relation-field2.js +0 -1
- package/dist/components/mrd-secret-field.js +0 -1
- package/dist/components/mrd-secret-field2.js +0 -1
- package/dist/components/mrd-table.js +0 -1
- package/dist/components/mrd-table2.js +0 -1
- package/dist/components/mrd-text-field.js +0 -1
- package/dist/components/mrd-text-field2.js +0 -1
- package/dist/components/mrd-textarea-field.js +0 -1
- package/dist/components/mrd-textarea-field2.js +0 -1
- package/dist/components/mrd-time-field.js +0 -1
- package/dist/components/mrd-time-field2.js +0 -1
- package/dist/components/quill.js +0 -1
- package/dist/components/validation.js +0 -1
- package/dist/esm/app-globals-DQuL1Twl.js +0 -3
- package/dist/esm/index-_tsCCkAi.js +0 -1561
- package/dist/esm/loader.js +0 -11
- package/dist/esm/mosterdcomponents.js +0 -21
- package/dist/esm/mrd-boolean-field_20.entry.js +0 -3827
- package/dist/index.cjs.js +0 -1
- package/dist/index.js +0 -1
- package/dist/mosterdcomponents/p-CiuCgGz_.js +0 -1
- package/dist/mosterdcomponents/p-DQuL1Twl.js +0 -1
- package/dist/mosterdcomponents/p-_tsCCkAi.js +0 -2
- package/dist/mosterdcomponents/p-c9839596.entry.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"mrd-layout-section.entry.js","mappings":"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","names":[],"sources":["src/components/mrd-layout-section/mrd-layout-section.scss?tag=mrd-layout-section&encapsulation=scoped","src/components/mrd-layout-section/mrd-layout-section.tsx"],"sourcesContent":[".mrd-layout-section {\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-base);\n color: var(--mrd-color-neutral-800);\n}\n\n.mrd-layout-section__field {\n display: grid;\n grid-template-columns: 200px 1fr;\n align-items: baseline;\n gap: 0 var(--mrd-space-2);\n padding: var(--mrd-space-1) 0;\n}\n\n.mrd-layout-section__field-label {\n font-size: var(--mrd-font-size-xs);\n font-weight: var(--mrd-font-weight-normal);\n color: var(--mrd-color-neutral-500);\n padding-top: 1px;\n}\n\n.mrd-layout-section__field-value {\n font-size: var(--mrd-font-size-sm);\n font-weight: var(--mrd-font-weight-medium);\n color: var(--mrd-color-neutral-800);\n word-break: break-word;\n display: inline-flex;\n align-items: center;\n gap: var(--mrd-space-1);\n}\n\n.mrd-layout-section__history-wrap {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.mrd-layout-section__history-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.25rem;\n height: 1.25rem;\n padding: 0;\n background: transparent;\n border: none;\n border-radius: var(--mrd-border-radius-sm);\n color: var(--mrd-color-neutral-400);\n cursor: pointer;\n flex-shrink: 0;\n transition: color var(--mrd-transition-fast), background-color var(--mrd-transition-fast);\n}\n\n.mrd-layout-section__history-btn:hover {\n color: var(--mrd-color-neutral-700);\n background-color: var(--mrd-color-neutral-100);\n}\n\n.mrd-layout-section__history-btn:focus {\n outline: none;\n box-shadow: var(--mrd-shadow-focus);\n}\n\n.mrd-layout-section__history-icon {\n width: 0.875rem;\n height: 0.875rem;\n}\n\n.mrd-layout-section__history-popover {\n position: absolute;\n top: calc(100% + 0.25rem);\n left: 0;\n min-width: 24rem;\n max-width: 24rem;\n background-color: var(--mrd-color-white);\n border: var(--mrd-border-width) solid var(--mrd-border-color);\n border-radius: var(--mrd-border-radius-md);\n box-shadow: var(--mrd-shadow-md);\n padding: var(--mrd-space-1) 0;\n z-index: var(--mrd-z-dropdown);\n}\n\n.mrd-layout-section__history-entry {\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-sm);\n font-weight: var(--mrd-font-weight-normal);\n color: var(--mrd-color-neutral-700);\n padding: var(--mrd-space-2) var(--mrd-space-3);\n line-height: var(--mrd-line-height-normal);\n}\n\n.mrd-layout-section__history-entry:not(:last-child) {\n border-bottom: var(--mrd-border-width) solid var(--mrd-color-neutral-100);\n}\n\n.mrd-layout-section__field-header {\n font-size: var(--mrd-font-size-2xl);\n font-weight: var(--mrd-font-weight-bold);\n color: var(--mrd-color-neutral-900);\n margin: 0 0 var(--mrd-space-4) 0;\n padding: 0;\n}\n\n.mrd-layout-section__header {\n font-size: var(--mrd-font-size-xl);\n font-weight: var(--mrd-font-weight-semibold);\n color: var(--mrd-color-neutral-800);\n margin: var(--mrd-space-4) 0 var(--mrd-space-2) 0;\n padding: 0;\n}\n\n.mrd-layout-section__text {\n font-size: var(--mrd-font-size-base);\n color: var(--mrd-color-neutral-700);\n line-height: var(--mrd-line-height-relaxed);\n margin: var(--mrd-space-2) 0;\n}\n\n.mrd-layout-section__navigate {\n display: inline-flex;\n align-items: center;\n gap: var(--mrd-space-2);\n padding: var(--mrd-space-2) var(--mrd-space-3);\n background: none;\n border: 1px solid var(--mrd-color-neutral-300);\n border-radius: var(--mrd-border-radius);\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-sm);\n color: var(--mrd-color-primary);\n cursor: pointer;\n margin: var(--mrd-space-2) 0;\n}\n\n.mrd-layout-section__navigate:hover {\n background-color: var(--mrd-color-primary-light);\n border-color: var(--mrd-color-primary);\n}\n\n.mrd-layout-section__link {\n color: var(--mrd-color-primary);\n text-decoration: none;\n}\n\n.mrd-layout-section__link:hover {\n text-decoration: underline;\n}\n\n.mrd-layout-section__relation-link {\n background: none;\n border: none;\n padding: 0;\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-sm);\n font-weight: var(--mrd-font-weight-semibold);\n color: var(--mrd-color-primary);\n cursor: pointer;\n text-align: left;\n}\n\n.mrd-layout-section__relation-link:hover {\n text-decoration: underline;\n}\n\n.mrd-layout-section__download-link {\n display: inline-flex;\n align-items: center;\n gap: var(--mrd-space-1);\n background: none;\n border: none;\n padding: 0;\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-sm);\n color: var(--mrd-color-primary);\n cursor: pointer;\n text-align: left;\n}\n\n.mrd-layout-section__download-link:hover {\n text-decoration: underline;\n color: var(--mrd-color-primary-dark);\n}\n\n.mrd-layout-section__file-icon {\n flex-shrink: 0;\n width: 1rem;\n height: 1rem;\n}\n\n.mrd-layout-section__boolean--true {\n color: var(--mrd-color-success);\n font-weight: var(--mrd-font-weight-semibold);\n}\n\n.mrd-layout-section__boolean--false {\n color: var(--mrd-color-neutral-400);\n}\n\n.mrd-layout-section__field--block {\n grid-template-columns: 1fr;\n}\n\n.mrd-layout-section__badge {\n display: inline-block;\n font-size: var(--mrd-font-size-xs);\n font-weight: var(--mrd-font-weight-medium);\n padding: 2px var(--mrd-space-3);\n border-radius: 10px;\n}\n\n.mrd-layout-section__badge-dot-row {\n display: inline-flex;\n align-items: center;\n gap: var(--mrd-space-2);\n}\n\n.mrd-layout-section__badge-dot {\n display: inline-block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.mrd-layout-section__secret-masked {\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-base);\n color: var(--mrd-label-color);\n letter-spacing: 0.15em;\n user-select: none;\n pointer-events: none;\n}\n\n.mrd-layout-section__pre {\n font-family: var(--mrd-font-family-mono);\n font-size: var(--mrd-font-size-xs);\n background-color: var(--mrd-color-neutral-50);\n border: 1px solid var(--mrd-color-neutral-200);\n border-radius: var(--mrd-border-radius);\n padding: var(--mrd-space-3);\n margin: 0;\n max-height: calc(10 * 1.5 * var(--mrd-font-size-xs));\n overflow-x: auto;\n overflow-y: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.mrd-layout-section__group {\n margin: var(--mrd-space-4) 0;\n}\n\n.mrd-layout-section__group-title {\n font-size: var(--mrd-font-size-sm);\n font-weight: var(--mrd-font-weight-semibold);\n color: var(--mrd-color-neutral-500);\n margin: 0 0 var(--mrd-space-2) 0;\n padding-bottom: 0;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n}\n\n.mrd-layout-section__related-view {\n margin: var(--mrd-space-4) 0;\n}\n\n.mrd-layout-section__related-view-title {\n font-size: var(--mrd-font-size-lg);\n font-weight: var(--mrd-font-weight-semibold);\n color: var(--mrd-color-neutral-800);\n margin: 0 0 var(--mrd-space-3) 0;\n}\n\n.mrd-layout-section__search {\n position: relative;\n margin: var(--mrd-space-2) 0;\n}\n\n.mrd-layout-section__search-wrap {\n position: relative;\n}\n\n.mrd-layout-section__search-icon {\n position: absolute;\n left: var(--mrd-input-padding-x);\n top: 50%;\n transform: translateY(-50%);\n width: 1rem;\n height: 1rem;\n color: var(--mrd-color-neutral-400);\n pointer-events: none;\n}\n\n.mrd-layout-section__search-input {\n display: block;\n width: 100%;\n height: var(--mrd-input-height);\n padding: var(--mrd-input-padding-y) var(--mrd-input-padding-x) var(--mrd-input-padding-y) calc(var(--mrd-input-padding-x) + 1rem + var(--mrd-space-2));\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-base);\n color: var(--mrd-input-color);\n background-color: var(--mrd-input-bg);\n border: var(--mrd-border-width) solid var(--mrd-border-color);\n border-radius: var(--mrd-border-radius);\n outline: none;\n appearance: none;\n box-sizing: border-box;\n}\n\n.mrd-layout-section__search-input:focus {\n border-color: var(--mrd-border-color-focus);\n box-shadow: var(--mrd-shadow-focus);\n}\n\n.mrd-layout-section__search-input::placeholder {\n color: var(--mrd-input-placeholder-color);\n}\n\n.mrd-layout-section__search-results {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n background-color: var(--mrd-color-white);\n border: 1px solid var(--mrd-color-neutral-300);\n border-top: none;\n border-radius: 0 0 var(--mrd-border-radius) var(--mrd-border-radius);\n box-shadow: var(--mrd-shadow-sm);\n z-index: 100;\n max-height: 300px;\n overflow-y: auto;\n list-style: none;\n margin: 0;\n padding: var(--mrd-space-1) 0;\n}\n\n.mrd-layout-section__search-result {\n margin: 0;\n padding: 0;\n}\n\n.mrd-layout-section__search-result-btn {\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: var(--mrd-space-2) var(--mrd-space-3);\n background: none;\n border: none;\n text-align: left;\n cursor: pointer;\n font-family: var(--mrd-font-family);\n}\n\n.mrd-layout-section__search-result-btn:hover {\n background-color: var(--mrd-color-primary-light);\n}\n\n.mrd-layout-section__search-result-label {\n font-size: var(--mrd-font-size-sm);\n font-weight: var(--mrd-font-weight-medium);\n color: var(--mrd-color-neutral-800);\n}\n\n.mrd-layout-section__search-result-desc {\n font-size: var(--mrd-font-size-xs);\n color: var(--mrd-color-neutral-500);\n margin-top: var(--mrd-space-1);\n}\n\n.mrd-layout-section__image-thumb-btn {\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n display: inline-block;\n border-radius: var(--mrd-border-radius);\n overflow: hidden;\n line-height: 0;\n}\n\n.mrd-layout-section__image-thumb-btn:hover .mrd-layout-section__image-thumb {\n opacity: 0.85;\n}\n\n.mrd-layout-section__image-thumb {\n display: block;\n max-width: 160px;\n max-height: 100px;\n border-radius: var(--mrd-border-radius);\n object-fit: cover;\n transition: opacity 0.15s;\n}\n\n.mrd-layout-section__modal-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.6);\n z-index: 300;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mrd-layout-section__modal {\n position: relative;\n background: #fff;\n border-radius: var(--mrd-border-radius);\n padding: var(--mrd-space-3);\n max-width: min(90vw, 900px);\n max-height: 90vh;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: var(--mrd-shadow-lg);\n}\n\n.mrd-layout-section__modal-close {\n position: absolute;\n top: var(--mrd-space-2);\n right: var(--mrd-space-2);\n background: rgba(0, 0, 0, 0.5);\n border: none;\n border-radius: 50%;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n cursor: pointer;\n font-size: var(--mrd-font-size-sm);\n line-height: 1;\n z-index: 1;\n}\n\n.mrd-layout-section__modal-close:hover {\n background: rgba(0, 0, 0, 0.8);\n}\n\n.mrd-layout-section__modal-image {\n display: block;\n max-width: 100%;\n max-height: calc(90vh - 2rem);\n border-radius: var(--mrd-border-radius);\n object-fit: contain;\n}\n","import { Component, Host, h, Prop, State, Watch, Event, EventEmitter, Method, Element } from '@stencil/core';\nimport {\n ClientLayoutItem,\n ClientLayoutItemType,\n ClientLayoutItemFieldDataType,\n ClientLayoutItemNavigate,\n ClientViewMetadata,\n RelationSearchResult,\n DataObjectLink,\n} from '../../types/client-layout';\nimport { CellRenderer } from '../../utils/cell-renderer';\nimport { t } from '../../utils/i18n';\nimport { formatDate } from '../../utils/format';\n\n@Component({\n tag: 'mrd-layout-section',\n styleUrl: 'mrd-layout-section.scss',\n scoped: true,\n})\nexport class MrdLayoutSection {\n @Element() el!: HTMLElement;\n\n /** Items from one layout entry in ClientDashboardMetadata.layouts[]. */\n @Prop() items: ClientLayoutItem[] = [];\n /** Record data object; keys are field names, _links holds relation and related-view links. */\n @Prop() data: Record<string, unknown> = {};\n /** Legacy: view metadata map (ClientDashboardMetadata.views). Not needed in new flat format. */\n @Prop() views: Record<string, ClientViewMetadata> = {};\n /** Legacy: top-level _links from ClientDashboardMetadata. Not needed in new flat format. */\n @Prop() links: Record<string, { href: string }> = {};\n @Prop() locale: string = navigator.language;\n\n @State() private searchQueryMap: Record<string, string> = {};\n @State() private searchResultsMap: Record<string, RelationSearchResult[]> = {};\n @State() private imagePreviewUrl: string | null = null;\n @State() private imagePreviews: Record<string, string> = {};\n @State() private openHistoryField: string | null = null;\n\n private historyClickOutside: ((e: MouseEvent) => void) | null = null;\n\n @Event() mrdNavigate!: EventEmitter<{ href?: string; label: string; navigate?: ClientLayoutItemNavigate }>;\n @Event() mrdSearch!: EventEmitter<{ query: string; dataClass: string }>;\n @Event() mrdDownload!: EventEmitter<{ href: string; fileName: string }>;\n /** Re-emitted from an embedded mrd-table's mrdLoadPage; host fetches the next page and calls setViewPage(). */\n @Event() mrdLoadViewPage!: EventEmitter<{ name: string; page: number; sort: string; path: string; qs: string }>;\n /** Fired once on load for each IMAGE field that has an href; host resolves the URL and calls setImagePreview(). */\n @Event() mrdLoadImage!: EventEmitter<{ fieldName: string; href: string }>;\n /** Re-emitted from an embedded mrd-table's mrdAction; host builds the target URL from dataClass. */\n @Event() mrdViewAction!: EventEmitter<{ name: string; action: string; dataClass: string; path?: string; qs?: string; parentPath?: string | null; basicType?: string }>;\n /** Re-emitted from an embedded mrd-table's mrdLoadAggregations; host calls setViewAggregations() with the result. */\n @Event() mrdLoadViewAggregations!: EventEmitter<{ name: string; dataClass: string; path: string; qs: string; aggQs: string }>;\n\n private searchTimers: Record<string, ReturnType<typeof setTimeout>> = {};\n\n componentDidLoad() {\n setTimeout(() => {\n this.initEmbeddedTables();\n this.emitLoadImages();\n }, 0);\n this.historyClickOutside = (e: MouseEvent) => {\n if (!this.el.contains(e.target as Node)) this.openHistoryField = null;\n };\n document.addEventListener('mousedown', this.historyClickOutside);\n }\n\n disconnectedCallback() {\n if (this.historyClickOutside) {\n document.removeEventListener('mousedown', this.historyClickOutside);\n this.historyClickOutside = null;\n }\n }\n\n @Watch('data')\n dataChanged(newVal: Record<string, unknown>) {\n if (newVal && Object.keys(newVal).length > 0) {\n setTimeout(() => this.initEmbeddedTables(), 0);\n }\n }\n\n private async initEmbeddedTables(): Promise<void> {\n const tables = this.el.querySelectorAll<any>('mrd-table[data-view]');\n for (const table of Array.from(tables)) {\n if (typeof table.init === 'function') {\n await table.init();\n }\n }\n }\n\n private viewKeyFor(item: ClientLayoutItem): string {\n if (item.type === ClientLayoutItemType.RELATED_VIEW) return item.relatedClass ?? item.name ?? '';\n return item.dataClass ?? item.name ?? '';\n }\n\n private emitLoadImages() {\n for (const item of this.flattenItems(this.items)) {\n if (item.type === ClientLayoutItemType.FIELD && item.dataType === ClientLayoutItemFieldDataType.IMAGE) {\n const fieldName = item.name!;\n const raw = (this.data as Record<string, unknown>)[fieldName] as any;\n const href = raw?.href;\n if (href) this.mrdLoadImage.emit({ fieldName, href });\n }\n }\n }\n\n private flattenItems(items: ClientLayoutItem[]): ClientLayoutItem[] {\n const result: ClientLayoutItem[] = [];\n for (const item of items) {\n result.push(item);\n if (item.items) result.push(...this.flattenItems(item.items));\n }\n return result;\n }\n\n /** Inject search results. Pass dataClass to target a specific SEARCH item; omit when there is only one. */\n @Method()\n async setSearchResults(results: RelationSearchResult[], dataClass?: string): Promise<void> {\n const key = dataClass ?? this.resolveSearchKey();\n if (key) {\n this.searchResultsMap = { ...this.searchResultsMap, [key]: results };\n }\n }\n\n /**\n * Inject data into an embedded mrd-table for a RELATED_VIEW or VIEW item.\n * Pass totalElements to update the pagination total (safe to pass on every page).\n * Pass hasNext (from _links.next presence) so the table can decide whether to emit aggregations.\n */\n @Method()\n async setViewPage(name: string, page: number, rows: any[], totalElements?: number, hasNext?: boolean): Promise<void> {\n const table = this.el.querySelector(`mrd-table[data-view=\"${name}\"]`) as any;\n if (!table) return;\n if (totalElements !== undefined) {\n table.totalElements = totalElements;\n }\n await table.setPage(page, rows, hasNext);\n }\n\n /** Inject aggregation totals into an embedded mrd-table for a VIEW or RELATED_VIEW item. */\n @Method()\n async setViewAggregations(name: string, data: any): Promise<void> {\n const table = this.el.querySelector(`mrd-table[data-view=\"${name}\"]`) as any;\n if (!table) return;\n await table.setAggregations(data);\n }\n\n /** Provide a resolved URL for an IMAGE field. Shows as thumbnail; clicking opens the lightbox. */\n @Method()\n async setImagePreview(fieldName: string, url: string): Promise<void> {\n this.imagePreviews = { ...this.imagePreviews, [fieldName]: url };\n }\n\n /** Open the lightbox directly with a URL (e.g. after mrdDownload on a FILE field). */\n @Method()\n async openImagePreview(url: string): Promise<void> {\n this.imagePreviewUrl = url;\n }\n\n private resolveSearchKey(): string | null {\n const items = this.flattenItems(this.items).filter(i => i.type === ClientLayoutItemType.SEARCH);\n if (items.length === 1) return items[0].dataClass ?? null;\n return null;\n }\n\n private handleViewLoadPage = (e: CustomEvent<{ page: number; sort: string; path: string; qs: string }>, name: string) => {\n e.stopPropagation();\n this.mrdLoadViewPage.emit({ name, page: e.detail.page, sort: e.detail.sort, path: e.detail.path, qs: e.detail.qs });\n };\n\n private handleSearchInput = (dataClass: string, query: string) => {\n this.searchQueryMap = { ...this.searchQueryMap, [dataClass]: query };\n if (this.searchTimers[dataClass]) clearTimeout(this.searchTimers[dataClass]);\n if (query.length < 2) {\n this.searchResultsMap = { ...this.searchResultsMap, [dataClass]: [] };\n return;\n }\n this.searchTimers[dataClass] = setTimeout(() => {\n this.mrdSearch.emit({ query, dataClass });\n }, 300);\n };\n\n private renderSingleFieldValue(item: ClientLayoutItem, value: unknown): any {\n const dt = item.dataType!;\n\n switch (dt) {\n case ClientLayoutItemFieldDataType.HYPERLINK: {\n const v = value as any;\n const href = v?.href ?? String(value);\n const label = v?.name ?? v?.text ?? v?.label ?? href;\n return (\n <a class=\"mrd-layout-section__link\" href={href} target=\"_blank\" rel=\"noopener noreferrer\">\n {label}\n </a>\n );\n }\n case ClientLayoutItemFieldDataType.TEXTBLOCK:\n return <span innerHTML={String(value)} />;\n case ClientLayoutItemFieldDataType.LONGTEXT:\n return <pre class=\"mrd-layout-section__pre\">{String(value)}</pre>;\n case ClientLayoutItemFieldDataType.JSON:\n return <pre class=\"mrd-layout-section__pre\" innerHTML={CellRenderer.formatJson(value)} />;\n case ClientLayoutItemFieldDataType.FILE: {\n const v = value as any;\n const fileName = v?.fileName ?? String(value);\n const href = v?.href ?? '';\n return (\n <button class=\"mrd-layout-section__download-link\" onClick={() => href && this.mrdDownload.emit({ href, fileName })}>\n <svg class=\"mrd-layout-section__file-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path fill=\"currentColor\" d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13zm-3 8l-3-3 1.41-1.41L10 14.17l4.59-4.58L16 11l-6 6z\"/>\n </svg>\n {t('download', this.locale)}\n </button>\n );\n }\n case ClientLayoutItemFieldDataType.IMAGE: {\n const v = value as any;\n const href = v?.href ?? '';\n const fileName = v?.fileName ?? '';\n const previewUrl = this.imagePreviews[item.name!];\n if (previewUrl) {\n return (\n <button\n class=\"mrd-layout-section__image-thumb-btn\"\n onClick={() => { this.imagePreviewUrl = previewUrl; }}\n title={fileName || undefined}\n >\n <img class=\"mrd-layout-section__image-thumb\" src={previewUrl} alt={fileName} />\n </button>\n );\n }\n return (\n <button class=\"mrd-layout-section__download-link\" onClick={() => href && this.mrdDownload.emit({ href, fileName })}>\n <svg class=\"mrd-layout-section__file-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path fill=\"currentColor\" d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13zm-3 8l-3-3 1.41-1.41L10 14.17l4.59-4.58L16 11l-6 6z\"/>\n </svg>\n {fileName || href}\n </button>\n );\n }\n case ClientLayoutItemFieldDataType.BOOLEAN:\n return (\n <span class={`mrd-layout-section__boolean mrd-layout-section__boolean--${value ? 'true' : 'false'}`}>\n {value ? t('yes', this.locale) : t('no', this.locale)}\n </span>\n );\n case ClientLayoutItemFieldDataType.LIST: {\n const listItem = (item.listItems ?? []).find(li => li.key === String(value));\n const label = listItem?.label ?? String(value);\n const color = listItem?.color;\n const bg = listItem?.backgroundColor;\n if (color && bg) {\n return (\n <span class=\"mrd-layout-section__badge\" style={{ color, backgroundColor: bg }}>\n {label}\n </span>\n );\n }\n if (color) {\n return (\n <span class=\"mrd-layout-section__badge-dot-row\">\n <span class=\"mrd-layout-section__badge-dot\" style={{ backgroundColor: color }} />\n {label}\n </span>\n );\n }\n return label;\n }\n case ClientLayoutItemFieldDataType.SECRET:\n return value ? <span class=\"mrd-layout-section__secret-masked\">{'••••••••'}</span> : null;\n default: {\n const text = CellRenderer.renderValue(dt, value, item.listItems ?? [], this.locale);\n return text || null;\n }\n }\n }\n\n private renderFieldValue(item: ClientLayoutItem, rawValue: unknown): any {\n if (rawValue == null || rawValue === '') return null;\n\n if (item.multiple && Array.isArray(rawValue)) {\n const rendered = rawValue.map(v => this.renderSingleFieldValue(item, v));\n if (rendered.every(r => typeof r === 'string' || r == null)) {\n return (rendered.filter(Boolean) as string[]).join(', ') || null;\n }\n return (\n <span>\n {rendered.map((r, i) => (\n <span key={String(i)}>\n {r}\n {i < rendered.length - 1 ? ', ' : ''}\n </span>\n ))}\n </span>\n );\n }\n\n return this.renderSingleFieldValue(item, rawValue);\n }\n\n private renderHistoryBadge(item: ClientLayoutItem, raw: unknown): any {\n const hist = item.historyEnabled ?? item.field?.historyEnabled;\n if (!hist || !item.name) return null;\n const history: Array<{ value: string; until: string }> = (raw as any)?.history ?? [];\n if (!history.length) return null;\n const sorted = [...history].sort((a, b) => b.until.localeCompare(a.until));\n const isOpen = this.openHistoryField === item.name;\n const { locale } = this;\n return (\n <span class=\"mrd-layout-section__history-wrap\">\n <button\n type=\"button\"\n class=\"mrd-layout-section__history-btn\"\n title={t('history_badge_tooltip', locale)}\n aria-label={t('history_badge_tooltip', locale)}\n onClick={(e) => {\n e.stopPropagation();\n this.openHistoryField = isOpen ? null : item.name!;\n }}\n >\n <svg class=\"mrd-layout-section__history-icon\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm.75-13a.75.75 0 00-1.5 0v5c0 .207.085.394.22.53l2.5 2.5a.75.75 0 101.06-1.06L10.75 9.69V5z\" clip-rule=\"evenodd\"/>\n </svg>\n </button>\n {isOpen && (\n <div class=\"mrd-layout-section__history-popover\" role=\"listbox\">\n {sorted.map((entry, i) => (\n <div key={String(i)} class=\"mrd-layout-section__history-entry\">\n {entry.value} ({t('history_until', locale)} {formatDate(entry.until, locale)})\n </div>\n ))}\n </div>\n )}\n </span>\n );\n }\n\n private renderField(item: ClientLayoutItem): any {\n if (!item.name) return null;\n const raw = (this.data as Record<string, unknown>)[item.name];\n const hist = item.historyEnabled ?? item.field?.historyEnabled;\n const rawValue = hist && raw !== null && typeof raw === 'object' && 'current' in (raw as object)\n ? (raw as any).current\n : raw;\n const renderedValue = this.renderFieldValue(item, rawValue);\n\n if (item.header) {\n return (\n <h1 class=\"mrd-layout-section__field-header\" key={item.name}>\n {typeof renderedValue === 'string' ? renderedValue : rawValue != null ? String(rawValue) : item.label}\n </h1>\n );\n }\n\n if (renderedValue == null) return null;\n\n const isBlock = item.dataType === ClientLayoutItemFieldDataType.TEXTBLOCK\n || item.dataType === ClientLayoutItemFieldDataType.LONGTEXT\n || item.dataType === ClientLayoutItemFieldDataType.JSON;\n\n return (\n <div class={`mrd-layout-section__field${isBlock ? ' mrd-layout-section__field--block' : ''}`} key={item.name}>\n <span class=\"mrd-layout-section__field-label\">{item.label}</span>\n <span class=\"mrd-layout-section__field-value\">\n {renderedValue}\n {this.renderHistoryBadge(item, raw)}\n </span>\n </div>\n );\n }\n\n private renderRelation(item: ClientLayoutItem): any {\n if (!item.name) return null;\n const links = ((this.data as any)?._links ?? {}) as Record<string, DataObjectLink>;\n const link = links[item.name];\n if (!link) return null;\n\n const makeBtn = (href: string, name: string) => (\n <button key={href} class=\"mrd-layout-section__relation-link\" onClick={() => this.mrdNavigate.emit({ href, label: name })}>\n {name}\n </button>\n );\n\n let valueContent: any;\n if (link.values?.length) {\n valueContent = link.values.map(v => makeBtn(v.href, v.name));\n } else if (link.name) {\n valueContent = makeBtn(link.href, link.name);\n }\n\n if (!valueContent) return null;\n\n return (\n <div class=\"mrd-layout-section__field\" key={item.name}>\n <span class=\"mrd-layout-section__field-label\">{item.label}</span>\n <span class=\"mrd-layout-section__field-value\">{valueContent}</span>\n </div>\n );\n }\n\n private renderSearch(item: ClientLayoutItem): any {\n if (!item.dataClass) return null;\n const dataClass = item.dataClass;\n const query = this.searchQueryMap[dataClass] ?? '';\n const results = this.searchResultsMap[dataClass] ?? [];\n\n return (\n <div class=\"mrd-layout-section__search\" key={`search-${dataClass}`}>\n <div class=\"mrd-layout-section__search-wrap\">\n <svg class=\"mrd-layout-section__search-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" clip-rule=\"evenodd\" />\n </svg>\n <input\n class=\"mrd-layout-section__search-input\"\n type=\"text\"\n value={query}\n placeholder={item.label ?? ''}\n onInput={e => this.handleSearchInput(dataClass, (e.target as HTMLInputElement).value)}\n />\n </div>\n {results.length > 0 && (\n <ul class=\"mrd-layout-section__search-results\">\n {results.map(r => (\n <li key={r.id} class=\"mrd-layout-section__search-result\">\n <button class=\"mrd-layout-section__search-result-btn\" onClick={() => this.mrdNavigate.emit({ href: r.id, label: r.label })}>\n <span class=\"mrd-layout-section__search-result-label\">{r.label}</span>\n {r.description && <span class=\"mrd-layout-section__search-result-desc\">{r.description}</span>}\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n }\n\n private renderRelatedView(item: ClientLayoutItem): any {\n const key = this.viewKeyFor(item);\n if (!key) return null;\n if (!item.view) return null;\n\n const showTitle = item.showTitle ?? false;\n\n // Extract parentId from data._links.self.href for RELATED_VIEW path construction\n const selfHref: string = (this.data as any)?._links?.self?.href ?? '';\n const parentId = selfHref.split('/').filter(Boolean).pop() ?? '';\n\n return (\n <div class=\"mrd-layout-section__related-view\" key={`view-${key}`}>\n {showTitle && item.label && <h3 class=\"mrd-layout-section__related-view-title\">{item.label}</h3>}\n <mrd-table\n data-view={key}\n item={item}\n parentId={parentId}\n locale={this.locale}\n onMrdLoadPage={(e: CustomEvent<{ page: number; sort: string; path: string; qs: string }>) => this.handleViewLoadPage(e, key)}\n onMrdLoadAggregations={(e: CustomEvent<{ path: string; qs: string; aggQs: string }>) => {\n e.stopPropagation();\n this.mrdLoadViewAggregations.emit({\n name: key,\n dataClass: item.dataClass ?? key,\n ...e.detail,\n });\n }}\n onMrdRowClick={(e: CustomEvent<Record<string, any>>) => {\n e.stopPropagation();\n const row = e.detail;\n this.mrdNavigate.emit({ href: row?._links?.self?.href, label: row?.name ?? '' });\n }}\n onMrdAction={(e: CustomEvent<{ action: string; path?: string; qs?: string; dataClass?: string; parentPath?: string | null; basicType?: string }>) => {\n e.stopPropagation();\n this.mrdViewAction.emit({\n name: key,\n action: e.detail.action,\n dataClass: item.dataClass ?? key,\n path: e.detail.path,\n qs: e.detail.qs,\n parentPath: e.detail.parentPath,\n basicType: e.detail.basicType,\n });\n }}\n />\n </div>\n );\n }\n\n private renderItem(item: ClientLayoutItem): any {\n switch (item.type) {\n case ClientLayoutItemType.FIELD:\n return this.renderField(item);\n case ClientLayoutItemType.RELATION:\n return this.renderRelation(item);\n case ClientLayoutItemType.HEADER:\n return (\n <h2 class=\"mrd-layout-section__header\" key={`header-${item.label}`}>\n {item.label}\n </h2>\n );\n case ClientLayoutItemType.TEXT:\n return <div class=\"mrd-layout-section__text\" key={`text-${item.label}`} innerHTML={item.label ?? ''} />;\n case ClientLayoutItemType.NAVIGATE:\n return (\n <button\n class=\"mrd-layout-section__navigate\"\n key={`nav-${item.label}`}\n onClick={() => this.mrdNavigate.emit({ label: item.label ?? '', navigate: item.navigate ?? { dataClass: item.dataClass ?? '', icon: item.icon, navigationType: item.navigationType } })}\n >\n {item.label}\n </button>\n );\n case ClientLayoutItemType.SEARCH:\n return this.renderSearch(item);\n case ClientLayoutItemType.SECTION:\n case ClientLayoutItemType.GROUP:\n return (\n <div class=\"mrd-layout-section__group\" key={`group-${item.label}`}>\n {item.label && <h3 class=\"mrd-layout-section__group-title\">{item.label}</h3>}\n {(item.items ?? []).map(child => this.renderItem(child))}\n </div>\n );\n case ClientLayoutItemType.RELATED_VIEW:\n case ClientLayoutItemType.VIEW:\n return this.renderRelatedView(item);\n default:\n return null;\n }\n }\n\n private renderImageModal() {\n if (!this.imagePreviewUrl) return null;\n return (\n <div class=\"mrd-layout-section__modal-backdrop\" onClick={() => { this.imagePreviewUrl = null; }}>\n <div class=\"mrd-layout-section__modal\" onClick={(e) => e.stopPropagation()}>\n <button class=\"mrd-layout-section__modal-close\" onClick={() => { this.imagePreviewUrl = null; }}>✕</button>\n <img class=\"mrd-layout-section__modal-image\" src={this.imagePreviewUrl} alt=\"\" />\n </div>\n </div>\n );\n }\n\n render() {\n return (\n <Host>\n <div class=\"mrd-layout-section\">{this.items.map(item => this.renderItem(item))}</div>\n {this.renderImageModal()}\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { r as registerInstance, a as createEvent, h, d as Host } from './index-B_tPFIvS.js';
|
|
2
|
+
import { t } from './i18n-hoGGKbKU.js';
|
|
3
|
+
import { v as validateRequired } from './validation-ixb43cqU.js';
|
|
4
|
+
import './index-I5SuYv7a.js';
|
|
5
|
+
import './client-layout-D88nn5zf.js';
|
|
6
|
+
|
|
7
|
+
const mrdListFieldScss = () => `.sc-mrd-list-field-h{display:block}.mrd-list-field.sc-mrd-list-field{display:flex;flex-direction:column;gap:var(--mrd-space-1);width:100%}.mrd-list-field__label.sc-mrd-list-field{display:block;font-family:var(--mrd-font-family);font-size:var(--mrd-label-font-size);font-weight:var(--mrd-label-font-weight);color:var(--mrd-label-color)}.mrd-list-field__label--required.sc-mrd-list-field::after{content:' *';color:var(--mrd-color-danger)}.mrd-list-field__select.sc-mrd-list-field{display:block;width:100%;height:var(--mrd-input-height);padding:var(--mrd-input-padding-y) var(--mrd-input-padding-x);padding-right:calc(var(--mrd-input-padding-x) + 1.5rem);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-input-color);background-color:var(--mrd-input-bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--mrd-space-3) center;border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);transition:border-color var(--mrd-transition), box-shadow var(--mrd-transition);outline:none;appearance:none;cursor:pointer;box-sizing:border-box}.mrd-list-field__select.sc-mrd-list-field:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-list-field__select.sc-mrd-list-field:disabled{background-color:var(--mrd-input-bg-disabled);cursor:not-allowed;opacity:0.7}.mrd-list-field__select--error.sc-mrd-list-field{border-color:var(--mrd-border-color-error)}.mrd-list-field__select--error.sc-mrd-list-field:focus{box-shadow:var(--mrd-shadow-focus-error)}.mrd-list-field__checkbox-list.sc-mrd-list-field{display:flex;flex-direction:column;gap:var(--mrd-space-2);padding:var(--mrd-space-3);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);background-color:var(--mrd-input-bg)}.mrd-list-field__checkbox-list--error.sc-mrd-list-field{border-color:var(--mrd-border-color-error)}.mrd-list-field__checkbox-item.sc-mrd-list-field{display:flex;align-items:center;gap:var(--mrd-space-2);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-input-color);cursor:pointer}.mrd-list-field__checkbox-item.sc-mrd-list-field input[type='checkbox'].sc-mrd-list-field{width:1rem;height:1rem;cursor:pointer;accent-color:var(--mrd-color-primary)}.mrd-list-field__color-dot.sc-mrd-list-field{display:inline-block;width:12px;height:12px;border-radius:50%;flex-shrink:0}.mrd-list-field__error.sc-mrd-list-field{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}`;
|
|
8
|
+
|
|
9
|
+
const MrdListField = class {
|
|
10
|
+
constructor(hostRef) {
|
|
11
|
+
registerInstance(this, hostRef);
|
|
12
|
+
this.mrdChange = createEvent(this, "mrdChange", 7);
|
|
13
|
+
this.mrdBlur = createEvent(this, "mrdBlur", 7);
|
|
14
|
+
this.name = '';
|
|
15
|
+
this.label = '';
|
|
16
|
+
this.value = '';
|
|
17
|
+
this.required = false;
|
|
18
|
+
this.disabled = false;
|
|
19
|
+
this.multiple = false;
|
|
20
|
+
this.locale = navigator.language;
|
|
21
|
+
/** List items from the API. Each item has a `key` (stored value) and `label`. */
|
|
22
|
+
this.listItems = [];
|
|
23
|
+
this.error = '';
|
|
24
|
+
this.selected = [];
|
|
25
|
+
this.handleSelectChange = (e) => {
|
|
26
|
+
const select = e.target;
|
|
27
|
+
if (this.multiple) {
|
|
28
|
+
const vals = Array.from(select.selectedOptions).map(o => o.value);
|
|
29
|
+
this.selected = vals;
|
|
30
|
+
if (this.required && !validateRequired(vals)) {
|
|
31
|
+
this.error = t('required', this.locale);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.error = '';
|
|
35
|
+
}
|
|
36
|
+
this.mrdChange.emit({ name: this.name, value: vals });
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const val = select.value;
|
|
40
|
+
if (this.required && !validateRequired(val)) {
|
|
41
|
+
this.error = t('required', this.locale);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.error = '';
|
|
45
|
+
}
|
|
46
|
+
this.mrdChange.emit({ name: this.name, value: val });
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
this.handleBlur = () => {
|
|
50
|
+
const val = this.multiple ? this.selected : this.value;
|
|
51
|
+
this.mrdBlur.emit({ name: this.name, value: val });
|
|
52
|
+
};
|
|
53
|
+
this.toggleCheckbox = (key) => {
|
|
54
|
+
if (this.selected.includes(key)) {
|
|
55
|
+
this.selected = this.selected.filter(v => v !== key);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this.selected = [...this.selected, key];
|
|
59
|
+
}
|
|
60
|
+
if (this.required && !validateRequired(this.selected)) {
|
|
61
|
+
this.error = t('required', this.locale);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this.error = '';
|
|
65
|
+
}
|
|
66
|
+
this.mrdChange.emit({ name: this.name, value: this.selected });
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
componentWillLoad() {
|
|
70
|
+
if (this.multiple) {
|
|
71
|
+
this.selected = Array.isArray(this.value) ? this.value : this.value ? [this.value] : [];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
getContrastColor(bgColor) {
|
|
75
|
+
if (!bgColor)
|
|
76
|
+
return '#000000';
|
|
77
|
+
const hex = bgColor.replace('#', '');
|
|
78
|
+
const r = parseInt(hex.substr(0, 2), 16);
|
|
79
|
+
const g = parseInt(hex.substr(2, 2), 16);
|
|
80
|
+
const b = parseInt(hex.substr(4, 2), 16);
|
|
81
|
+
const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
|
|
82
|
+
return luminance > 0.5 ? '#000000' : '#ffffff';
|
|
83
|
+
}
|
|
84
|
+
render() {
|
|
85
|
+
var _a, _b;
|
|
86
|
+
const hasError = !!this.error;
|
|
87
|
+
const currentValue = Array.isArray(this.value) ? ((_a = this.value[0]) !== null && _a !== void 0 ? _a : '') : ((_b = this.value) !== null && _b !== void 0 ? _b : '');
|
|
88
|
+
if (this.multiple) {
|
|
89
|
+
return (h(Host, null, h("div", { class: "mrd-list-field" }, this.label && (h("label", { class: `mrd-list-field__label${this.required ? ' mrd-list-field__label--required' : ''}` }, this.label)), h("div", { class: `mrd-list-field__checkbox-list${hasError ? ' mrd-list-field__checkbox-list--error' : ''}` }, this.listItems.map(lv => {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
return (h("label", { key: lv.key, class: "mrd-list-field__checkbox-item" }, h("input", { type: "checkbox", checked: this.selected.includes(lv.key), disabled: this.disabled, onChange: () => this.toggleCheckbox(lv.key) }), (lv.color || lv.backgroundColor) && (h("span", { class: "mrd-list-field__color-dot", style: { backgroundColor: (_b = (_a = lv.backgroundColor) !== null && _a !== void 0 ? _a : lv.color) !== null && _b !== void 0 ? _b : '' } })), h("span", null, lv.label)));
|
|
92
|
+
})), hasError && h("span", { class: "mrd-list-field__error" }, this.error))));
|
|
93
|
+
}
|
|
94
|
+
return (h(Host, null, h("div", { class: "mrd-list-field" }, this.label && (h("label", { class: `mrd-list-field__label${this.required ? ' mrd-list-field__label--required' : ''}` }, this.label)), h("select", { class: `mrd-list-field__select${hasError ? ' mrd-list-field__select--error' : ''}`, name: this.name, required: this.required, disabled: this.disabled, onChange: this.handleSelectChange, onBlur: this.handleBlur }, h("option", { value: "" }, t('select_placeholder', this.locale)), this.listItems.map(lv => {
|
|
95
|
+
var _a, _b;
|
|
96
|
+
const bg = (_b = (_a = lv.backgroundColor) !== null && _a !== void 0 ? _a : lv.color) !== null && _b !== void 0 ? _b : null;
|
|
97
|
+
const style = bg ? { backgroundColor: bg, color: this.getContrastColor(bg) } : {};
|
|
98
|
+
return (h("option", { key: lv.key, value: lv.key, selected: lv.key === currentValue, style: style }, lv.label));
|
|
99
|
+
})), hasError && h("span", { class: "mrd-list-field__error" }, this.error))));
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
MrdListField.style = mrdListFieldScss();
|
|
103
|
+
|
|
104
|
+
export { MrdListField as mrd_list_field };
|
|
105
|
+
//# sourceMappingURL=mrd-list-field.entry.esm.js.map
|
|
106
|
+
|
|
107
|
+
//# sourceMappingURL=mrd-list-field.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"mrd-list-field.entry.js","mappings":"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","names":[],"sources":["src/components/mrd-list-field/mrd-list-field.scss?tag=mrd-list-field&encapsulation=scoped","src/components/mrd-list-field/mrd-list-field.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.mrd-list-field {\n display: flex;\n flex-direction: column;\n gap: var(--mrd-space-1);\n width: 100%;\n}\n\n.mrd-list-field__label {\n display: block;\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-label-font-size);\n font-weight: var(--mrd-label-font-weight);\n color: var(--mrd-label-color);\n}\n\n.mrd-list-field__label--required::after {\n content: ' *';\n color: var(--mrd-color-danger);\n}\n\n.mrd-list-field__select {\n display: block;\n width: 100%;\n height: var(--mrd-input-height);\n padding: var(--mrd-input-padding-y) var(--mrd-input-padding-x);\n padding-right: calc(var(--mrd-input-padding-x) + 1.5rem);\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-base);\n color: var(--mrd-input-color);\n background-color: var(--mrd-input-bg);\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right var(--mrd-space-3) center;\n border: var(--mrd-border-width) solid var(--mrd-border-color);\n border-radius: var(--mrd-border-radius);\n transition: border-color var(--mrd-transition), box-shadow var(--mrd-transition);\n outline: none;\n appearance: none;\n cursor: pointer;\n box-sizing: border-box;\n}\n\n.mrd-list-field__select:focus {\n border-color: var(--mrd-border-color-focus);\n box-shadow: var(--mrd-shadow-focus);\n}\n\n.mrd-list-field__select:disabled {\n background-color: var(--mrd-input-bg-disabled);\n cursor: not-allowed;\n opacity: 0.7;\n}\n\n.mrd-list-field__select--error {\n border-color: var(--mrd-border-color-error);\n}\n\n.mrd-list-field__select--error:focus {\n box-shadow: var(--mrd-shadow-focus-error);\n}\n\n.mrd-list-field__checkbox-list {\n display: flex;\n flex-direction: column;\n gap: var(--mrd-space-2);\n padding: var(--mrd-space-3);\n border: var(--mrd-border-width) solid var(--mrd-border-color);\n border-radius: var(--mrd-border-radius);\n background-color: var(--mrd-input-bg);\n}\n\n.mrd-list-field__checkbox-list--error {\n border-color: var(--mrd-border-color-error);\n}\n\n.mrd-list-field__checkbox-item {\n display: flex;\n align-items: center;\n gap: var(--mrd-space-2);\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-base);\n color: var(--mrd-input-color);\n cursor: pointer;\n}\n\n.mrd-list-field__checkbox-item input[type='checkbox'] {\n width: 1rem;\n height: 1rem;\n cursor: pointer;\n accent-color: var(--mrd-color-primary);\n}\n\n.mrd-list-field__color-dot {\n display: inline-block;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.mrd-list-field__error {\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-error-font-size);\n color: var(--mrd-error-color);\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter } from '@stencil/core';\nimport { t } from '../../utils/i18n';\nimport { validateRequired } from '../../utils/validation';\nimport { ClientListValue } from '../../types';\n\n@Component({\n tag: 'mrd-list-field',\n styleUrl: 'mrd-list-field.scss',\n scoped: true,\n})\nexport class MrdListField {\n @Prop() name: string = '';\n @Prop() label: string = '';\n @Prop() value: string | string[] = '';\n @Prop() required: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() multiple: boolean = false;\n @Prop() locale: string = navigator.language;\n /** List items from the API. Each item has a `key` (stored value) and `label`. */\n @Prop() listItems: ClientListValue[] = [];\n\n @State() error: string = '';\n @State() selected: string[] = [];\n\n @Event() mrdChange!: EventEmitter<{ name: string; value: string | string[] }>;\n @Event() mrdBlur!: EventEmitter<{ name: string; value: string | string[] }>;\n\n componentWillLoad() {\n if (this.multiple) {\n this.selected = Array.isArray(this.value) ? this.value : this.value ? [this.value as string] : [];\n }\n }\n\n private handleSelectChange = (e: Event) => {\n const select = e.target as HTMLSelectElement;\n if (this.multiple) {\n const vals = Array.from(select.selectedOptions).map(o => o.value);\n this.selected = vals;\n if (this.required && !validateRequired(vals)) {\n this.error = t('required', this.locale);\n } else {\n this.error = '';\n }\n this.mrdChange.emit({ name: this.name, value: vals });\n } else {\n const val = select.value;\n if (this.required && !validateRequired(val)) {\n this.error = t('required', this.locale);\n } else {\n this.error = '';\n }\n this.mrdChange.emit({ name: this.name, value: val });\n }\n };\n\n private handleBlur = () => {\n const val = this.multiple ? this.selected : (this.value as string);\n this.mrdBlur.emit({ name: this.name, value: val });\n };\n\n private toggleCheckbox = (key: string) => {\n if (this.selected.includes(key)) {\n this.selected = this.selected.filter(v => v !== key);\n } else {\n this.selected = [...this.selected, key];\n }\n if (this.required && !validateRequired(this.selected)) {\n this.error = t('required', this.locale);\n } else {\n this.error = '';\n }\n this.mrdChange.emit({ name: this.name, value: this.selected });\n };\n\n private getContrastColor(bgColor: string): string {\n if (!bgColor) return '#000000';\n const hex = bgColor.replace('#', '');\n const r = parseInt(hex.substr(0, 2), 16);\n const g = parseInt(hex.substr(2, 2), 16);\n const b = parseInt(hex.substr(4, 2), 16);\n const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n return luminance > 0.5 ? '#000000' : '#ffffff';\n }\n\n render() {\n const hasError = !!this.error;\n const currentValue = Array.isArray(this.value) ? (this.value[0] ?? '') : (this.value ?? '');\n\n if (this.multiple) {\n return (\n <Host>\n <div class=\"mrd-list-field\">\n {this.label && (\n <label class={`mrd-list-field__label${this.required ? ' mrd-list-field__label--required' : ''}`}>\n {this.label}\n </label>\n )}\n <div class={`mrd-list-field__checkbox-list${hasError ? ' mrd-list-field__checkbox-list--error' : ''}`}>\n {this.listItems.map(lv => (\n <label key={lv.key} class=\"mrd-list-field__checkbox-item\">\n <input\n type=\"checkbox\"\n checked={this.selected.includes(lv.key)}\n disabled={this.disabled}\n onChange={() => this.toggleCheckbox(lv.key)}\n />\n {(lv.color || lv.backgroundColor) && (\n <span\n class=\"mrd-list-field__color-dot\"\n style={{ backgroundColor: lv.backgroundColor ?? lv.color ?? '' }}\n ></span>\n )}\n <span>{lv.label}</span>\n </label>\n ))}\n </div>\n {hasError && <span class=\"mrd-list-field__error\">{this.error}</span>}\n </div>\n </Host>\n );\n }\n\n return (\n <Host>\n <div class=\"mrd-list-field\">\n {this.label && (\n <label class={`mrd-list-field__label${this.required ? ' mrd-list-field__label--required' : ''}`}>\n {this.label}\n </label>\n )}\n <select\n class={`mrd-list-field__select${hasError ? ' mrd-list-field__select--error' : ''}`}\n name={this.name}\n required={this.required}\n disabled={this.disabled}\n onChange={this.handleSelectChange}\n onBlur={this.handleBlur}\n >\n <option value=\"\">{t('select_placeholder', this.locale)}</option>\n {this.listItems.map(lv => {\n const bg = lv.backgroundColor ?? lv.color ?? null;\n const style = bg ? { backgroundColor: bg, color: this.getContrastColor(bg) } : {};\n return (\n <option\n key={lv.key}\n value={lv.key}\n selected={lv.key === currentValue}\n style={style}\n >\n {lv.label}\n </option>\n );\n })}\n </select>\n {hasError && <span class=\"mrd-list-field__error\">{this.error}</span>}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { r as registerInstance, a as createEvent, h, d as Host } from './index-B_tPFIvS.js';
|
|
2
|
+
import { t } from './i18n-hoGGKbKU.js';
|
|
3
|
+
import { v as validateRequired } from './validation-ixb43cqU.js';
|
|
4
|
+
import './index-I5SuYv7a.js';
|
|
5
|
+
import './client-layout-D88nn5zf.js';
|
|
6
|
+
|
|
7
|
+
const mrdLongtextFieldScss = () => `.sc-mrd-longtext-field-h{display:block}.mrd-longtext-field.sc-mrd-longtext-field{display:flex;flex-direction:column;gap:var(--mrd-space-1);width:100%}.mrd-longtext-field__label.sc-mrd-longtext-field{display:block;font-family:var(--mrd-font-family);font-size:var(--mrd-label-font-size);font-weight:var(--mrd-label-font-weight);color:var(--mrd-label-color)}.mrd-longtext-field__label--required.sc-mrd-longtext-field::after{content:' *';color:var(--mrd-color-danger)}.mrd-longtext-field__input.sc-mrd-longtext-field{display:block;width:100%;min-height:calc(var(--mrd-input-height) * 5);padding:var(--mrd-input-padding-y) var(--mrd-input-padding-x);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-input-color);background-color:var(--mrd-input-bg);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);transition:border-color var(--mrd-transition), box-shadow var(--mrd-transition);outline:none;resize:vertical;box-sizing:border-box;line-height:1.5}.mrd-longtext-field__input.sc-mrd-longtext-field::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-longtext-field__input.sc-mrd-longtext-field:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-longtext-field__input--error.sc-mrd-longtext-field{border-color:var(--mrd-border-color-error)}.mrd-longtext-field__input--error.sc-mrd-longtext-field:focus{box-shadow:var(--mrd-shadow-focus-error)}.mrd-longtext-field__content.sc-mrd-longtext-field{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-input-color);white-space:pre-wrap;word-break:break-word;margin:0;padding:var(--mrd-input-padding-y) var(--mrd-input-padding-x);background-color:var(--mrd-input-bg-disabled);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);line-height:1.5}.mrd-longtext-field__error.sc-mrd-longtext-field{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}`;
|
|
8
|
+
|
|
9
|
+
const MrdLongtextField = class {
|
|
10
|
+
constructor(hostRef) {
|
|
11
|
+
registerInstance(this, hostRef);
|
|
12
|
+
this.mrdChange = createEvent(this, "mrdChange", 7);
|
|
13
|
+
this.mrdBlur = createEvent(this, "mrdBlur", 7);
|
|
14
|
+
this.name = '';
|
|
15
|
+
this.label = '';
|
|
16
|
+
this.value = '';
|
|
17
|
+
this.placeholder = '';
|
|
18
|
+
this.required = false;
|
|
19
|
+
this.disabled = false;
|
|
20
|
+
this.locale = navigator.language;
|
|
21
|
+
this.error = '';
|
|
22
|
+
this.handleInput = (e) => {
|
|
23
|
+
const val = e.target.value;
|
|
24
|
+
this.mrdChange.emit({ name: this.name, value: val });
|
|
25
|
+
};
|
|
26
|
+
this.handleBlur = (e) => {
|
|
27
|
+
const val = e.target.value;
|
|
28
|
+
if (this.required && !validateRequired(val)) {
|
|
29
|
+
this.error = t('required', this.locale);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.error = '';
|
|
33
|
+
}
|
|
34
|
+
this.mrdBlur.emit({ name: this.name, value: val });
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
render() {
|
|
38
|
+
const hasError = !!this.error;
|
|
39
|
+
return (h(Host, { key: '10d998b80f54cf7b10be26bf451d808c78579e69' }, h("div", { key: 'af45fe94a41f668bf6ddca670b42e065ee83ef23', class: "mrd-longtext-field" }, this.label && (h("label", { key: '31a08490d695ac9f4bbe5dff6a1ae3bb2a94337d', class: `mrd-longtext-field__label${this.required ? ' mrd-longtext-field__label--required' : ''}` }, this.label)), this.disabled ? (h("pre", { class: "mrd-longtext-field__content" }, this.value)) : (h("textarea", { class: `mrd-longtext-field__input${hasError ? ' mrd-longtext-field__input--error' : ''}`, name: this.name, placeholder: this.placeholder, required: this.required, rows: 10, onInput: this.handleInput, onBlur: this.handleBlur }, this.value)), hasError && h("span", { key: '7f133e72a882a8aaf33245445829754da1e6377b', class: "mrd-longtext-field__error" }, this.error))));
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
MrdLongtextField.style = mrdLongtextFieldScss();
|
|
43
|
+
|
|
44
|
+
export { MrdLongtextField as mrd_longtext_field };
|
|
45
|
+
//# sourceMappingURL=mrd-longtext-field.entry.esm.js.map
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=mrd-longtext-field.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"mrd-longtext-field.entry.js","mappings":";;;;;;AAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,4/DAA4/D,CAAC;;MCSphE,gBAAgB,GAAA,MAAA;AAL7B,IAAA,WAAA,CAAA,OAAA,EAAA;;;;AAMU,QAAA,IAAA,CAAA,IAAI,GAAW,EAAE;AACjB,QAAA,IAAA,CAAA,KAAK,GAAW,EAAE;AAClB,QAAA,IAAA,CAAA,KAAK,GAAW,EAAE;AAClB,QAAA,IAAA,CAAA,WAAW,GAAW,EAAE;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAY,KAAK;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAY,KAAK;AACzB,QAAA,IAAA,CAAA,MAAM,GAAW,SAAS,CAAC,QAAQ;AAElC,QAAA,IAAA,CAAA,KAAK,GAAW,EAAE;AAKnB,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,CAAQ,KAAI;AACjC,YAAA,MAAM,GAAG,GAAI,CAAC,CAAC,MAA8B,CAAC,KAAK;AACnD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACtD,SAAC;AAEO,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,CAAQ,KAAI;AAChC,YAAA,MAAM,GAAG,GAAI,CAAC,CAAC,MAA8B,CAAC,KAAK;YACnD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;gBAC3C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;;iBAClC;AACL,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;AAEjB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACpD,SAAC;AA8BF;IA5BC,MAAM,GAAA;AACJ,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;AAC7B,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,oBAAoB,EAAA,EAC5B,IAAI,CAAC,KAAK,KACT,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAO,KAAK,EAAE,CAAA,yBAAA,EAA4B,IAAI,CAAC,QAAQ,GAAG,sCAAsC,GAAG,EAAE,CAAA,CAAE,EAAA,EACpG,IAAI,CAAC,KAAK,CACL,CACT,EACA,IAAI,CAAC,QAAQ,IACZ,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,6BAA6B,EAAA,EAAE,IAAI,CAAC,KAAK,CAAO,KAE3D,CAAA,CAAA,UAAA,EAAA,EACE,KAAK,EAAE,CAAA,yBAAA,EAA4B,QAAQ,GAAG,mCAAmC,GAAG,EAAE,CAAA,CAAE,EACxF,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,IAAI,EAAE,EAAE,EACR,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAA,EACvB,IAAI,CAAC,KAAK,CAAY,CACzB,EACA,QAAQ,IAAI,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,2BAA2B,EAAA,EAAE,IAAI,CAAC,KAAK,CAAQ,CACpE,CACD;;;;;;;","names":[],"sources":["src/components/mrd-longtext-field/mrd-longtext-field.scss?tag=mrd-longtext-field&encapsulation=scoped","src/components/mrd-longtext-field/mrd-longtext-field.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.mrd-longtext-field {\n display: flex;\n flex-direction: column;\n gap: var(--mrd-space-1);\n width: 100%;\n}\n\n.mrd-longtext-field__label {\n display: block;\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-label-font-size);\n font-weight: var(--mrd-label-font-weight);\n color: var(--mrd-label-color);\n}\n\n.mrd-longtext-field__label--required::after {\n content: ' *';\n color: var(--mrd-color-danger);\n}\n\n.mrd-longtext-field__input {\n display: block;\n width: 100%;\n min-height: calc(var(--mrd-input-height) * 5);\n padding: var(--mrd-input-padding-y) var(--mrd-input-padding-x);\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-base);\n color: var(--mrd-input-color);\n background-color: var(--mrd-input-bg);\n border: var(--mrd-border-width) solid var(--mrd-border-color);\n border-radius: var(--mrd-border-radius);\n transition: border-color var(--mrd-transition), box-shadow var(--mrd-transition);\n outline: none;\n resize: vertical;\n box-sizing: border-box;\n line-height: 1.5;\n}\n\n.mrd-longtext-field__input::placeholder {\n color: var(--mrd-input-placeholder-color);\n}\n\n.mrd-longtext-field__input:focus {\n border-color: var(--mrd-border-color-focus);\n box-shadow: var(--mrd-shadow-focus);\n}\n\n.mrd-longtext-field__input--error {\n border-color: var(--mrd-border-color-error);\n}\n\n.mrd-longtext-field__input--error:focus {\n box-shadow: var(--mrd-shadow-focus-error);\n}\n\n.mrd-longtext-field__content {\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-base);\n color: var(--mrd-input-color);\n white-space: pre-wrap;\n word-break: break-word;\n margin: 0;\n padding: var(--mrd-input-padding-y) var(--mrd-input-padding-x);\n background-color: var(--mrd-input-bg-disabled);\n border: var(--mrd-border-width) solid var(--mrd-border-color);\n border-radius: var(--mrd-border-radius);\n line-height: 1.5;\n}\n\n.mrd-longtext-field__error {\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-error-font-size);\n color: var(--mrd-error-color);\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter } from '@stencil/core';\nimport { t } from '../../utils/i18n';\nimport { validateRequired } from '../../utils/validation';\n\n@Component({\n tag: 'mrd-longtext-field',\n styleUrl: 'mrd-longtext-field.scss',\n scoped: true,\n})\nexport class MrdLongtextField {\n @Prop() name: string = '';\n @Prop() label: string = '';\n @Prop() value: string = '';\n @Prop() placeholder: string = '';\n @Prop() required: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() locale: string = navigator.language;\n\n @State() error: string = '';\n\n @Event() mrdChange!: EventEmitter<{ name: string; value: string }>;\n @Event() mrdBlur!: EventEmitter<{ name: string; value: string }>;\n\n private handleInput = (e: Event) => {\n const val = (e.target as HTMLTextAreaElement).value;\n this.mrdChange.emit({ name: this.name, value: val });\n };\n\n private handleBlur = (e: Event) => {\n const val = (e.target as HTMLTextAreaElement).value;\n if (this.required && !validateRequired(val)) {\n this.error = t('required', this.locale);\n } else {\n this.error = '';\n }\n this.mrdBlur.emit({ name: this.name, value: val });\n };\n\n render() {\n const hasError = !!this.error;\n return (\n <Host>\n <div class=\"mrd-longtext-field\">\n {this.label && (\n <label class={`mrd-longtext-field__label${this.required ? ' mrd-longtext-field__label--required' : ''}`}>\n {this.label}\n </label>\n )}\n {this.disabled ? (\n <pre class=\"mrd-longtext-field__content\">{this.value}</pre>\n ) : (\n <textarea\n class={`mrd-longtext-field__input${hasError ? ' mrd-longtext-field__input--error' : ''}`}\n name={this.name}\n placeholder={this.placeholder}\n required={this.required}\n rows={10}\n onInput={this.handleInput}\n onBlur={this.handleBlur}\n >{this.value}</textarea>\n )}\n {hasError && <span class=\"mrd-longtext-field__error\">{this.error}</span>}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { r as registerInstance, a as createEvent, h, d as Host } from './index-B_tPFIvS.js';
|
|
2
|
+
import { t } from './i18n-hoGGKbKU.js';
|
|
3
|
+
import { c as validateNumber, v as validateRequired } from './validation-ixb43cqU.js';
|
|
4
|
+
import { p as parseLocalizedNumber, a as formatNumber } from './format-BAfsQfy1.js';
|
|
5
|
+
import './index-I5SuYv7a.js';
|
|
6
|
+
import { b as ClientLayoutItemFieldDataType } from './client-layout-D88nn5zf.js';
|
|
7
|
+
|
|
8
|
+
const mrdNumberFieldScss = () => `.sc-mrd-number-field-h{display:block}.mrd-number-field.sc-mrd-number-field{display:flex;flex-direction:column;gap:var(--mrd-space-1);width:100%}.mrd-number-field__label.sc-mrd-number-field{display:block;font-family:var(--mrd-font-family);font-size:var(--mrd-label-font-size);font-weight:var(--mrd-label-font-weight);color:var(--mrd-label-color)}.mrd-number-field__label--required.sc-mrd-number-field::after{content:' *';color:var(--mrd-color-danger)}.mrd-number-field__input-wrapper.sc-mrd-number-field{position:relative;display:flex;align-items:center}.mrd-number-field__input.sc-mrd-number-field{display:block;width:100%;height:var(--mrd-input-height);padding:var(--mrd-input-padding-y) var(--mrd-input-padding-x);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-input-color);background-color:var(--mrd-input-bg);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);transition:border-color var(--mrd-transition), box-shadow var(--mrd-transition);outline:none;appearance:none;box-sizing:border-box;text-align:right}.mrd-number-field__input.sc-mrd-number-field::placeholder{color:var(--mrd-input-placeholder-color);text-align:left}.mrd-number-field__input.sc-mrd-number-field:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-number-field__input.sc-mrd-number-field:disabled{background-color:var(--mrd-input-bg-disabled);cursor:not-allowed;opacity:0.7}.mrd-number-field__input--error.sc-mrd-number-field{border-color:var(--mrd-border-color-error)}.mrd-number-field__input--error.sc-mrd-number-field:focus{box-shadow:var(--mrd-shadow-focus-error)}.mrd-number-field__error.sc-mrd-number-field{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}`;
|
|
9
|
+
|
|
10
|
+
const MrdNumberField = class {
|
|
11
|
+
constructor(hostRef) {
|
|
12
|
+
registerInstance(this, hostRef);
|
|
13
|
+
this.mrdChange = createEvent(this, "mrdChange", 7);
|
|
14
|
+
this.mrdBlur = createEvent(this, "mrdBlur", 7);
|
|
15
|
+
this.name = '';
|
|
16
|
+
this.label = '';
|
|
17
|
+
this.value = null;
|
|
18
|
+
this.placeholder = '';
|
|
19
|
+
this.required = false;
|
|
20
|
+
this.disabled = false;
|
|
21
|
+
this.locale = navigator.language;
|
|
22
|
+
this.dataType = ClientLayoutItemFieldDataType.INTEGER;
|
|
23
|
+
this.decimalPrecision = 2;
|
|
24
|
+
this.displayValue = '';
|
|
25
|
+
this.error = '';
|
|
26
|
+
this.handleInput = (e) => {
|
|
27
|
+
this.displayValue = e.target.value;
|
|
28
|
+
};
|
|
29
|
+
this.handleBlur = (e) => {
|
|
30
|
+
const raw = e.target.value;
|
|
31
|
+
const parsed = parseLocalizedNumber(raw, this.locale);
|
|
32
|
+
if (this.required && (parsed === null || raw === '')) {
|
|
33
|
+
this.error = t('required', this.locale);
|
|
34
|
+
}
|
|
35
|
+
else if (raw !== '' && !validateNumber(parsed, this.dataType)) {
|
|
36
|
+
this.error = t('invalid_number', this.locale);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.error = '';
|
|
40
|
+
}
|
|
41
|
+
if (parsed !== null && validateRequired(raw)) {
|
|
42
|
+
this.displayValue = this.formatForDisplay(parsed);
|
|
43
|
+
}
|
|
44
|
+
this.mrdChange.emit({ name: this.name, value: parsed });
|
|
45
|
+
this.mrdBlur.emit({ name: this.name, value: parsed });
|
|
46
|
+
};
|
|
47
|
+
this.handleFocus = () => {
|
|
48
|
+
// Show raw number on focus
|
|
49
|
+
if (this.value !== null && this.value !== undefined) {
|
|
50
|
+
const str = String(this.value);
|
|
51
|
+
this.displayValue = str;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
componentWillLoad() {
|
|
56
|
+
if (this.value !== null && this.value !== undefined) {
|
|
57
|
+
this.displayValue = this.formatForDisplay(this.value);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
formatForDisplay(val) {
|
|
61
|
+
if (this.dataType === ClientLayoutItemFieldDataType.PERCENTAGE) {
|
|
62
|
+
return formatNumber(val, this.locale, {
|
|
63
|
+
minimumFractionDigits: 0,
|
|
64
|
+
maximumFractionDigits: this.decimalPrecision,
|
|
65
|
+
}) + '%';
|
|
66
|
+
}
|
|
67
|
+
if (this.dataType === ClientLayoutItemFieldDataType.DECIMAL) {
|
|
68
|
+
return formatNumber(val, this.locale, {
|
|
69
|
+
minimumFractionDigits: this.decimalPrecision,
|
|
70
|
+
maximumFractionDigits: this.decimalPrecision,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return formatNumber(val, this.locale, { maximumFractionDigits: 0 });
|
|
74
|
+
}
|
|
75
|
+
render() {
|
|
76
|
+
const hasError = !!this.error;
|
|
77
|
+
const suffix = this.dataType === ClientLayoutItemFieldDataType.PERCENTAGE ? '%' :
|
|
78
|
+
this.dataType === ClientLayoutItemFieldDataType.DECIMAL ? '' : '';
|
|
79
|
+
return (h(Host, { key: '195beed4d6453597320b79654feaabe8f742eff2' }, h("div", { key: 'c641d7a4d27ba28dd34acda98d38f245945d20bb', class: "mrd-number-field" }, this.label && (h("label", { key: '2a5f6eb48889a3ab0aa76d6b2ca5d59b20625bb2', class: `mrd-number-field__label${this.required ? ' mrd-number-field__label--required' : ''}` }, this.label)), h("div", { key: 'a844b89e6a278629a8aefa4ac72e5e18e5904cab', class: "mrd-number-field__input-wrapper" }, h("input", { key: '1ce9c3d67b458601a0de95b3b8478ef05df73069', class: `mrd-number-field__input${hasError ? ' mrd-number-field__input--error' : ''}`, 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 })), hasError && h("span", { key: '4226614a65a8d27543d1287e2c1f61f67c427e63', class: "mrd-number-field__error" }, this.error))));
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
MrdNumberField.style = mrdNumberFieldScss();
|
|
83
|
+
|
|
84
|
+
export { MrdNumberField as mrd_number_field };
|
|
85
|
+
//# sourceMappingURL=mrd-number-field.entry.esm.js.map
|
|
86
|
+
|
|
87
|
+
//# sourceMappingURL=mrd-number-field.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"mrd-number-field.entry.js","mappings":"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","names":[],"sources":["src/components/mrd-number-field/mrd-number-field.scss?tag=mrd-number-field&encapsulation=scoped","src/components/mrd-number-field/mrd-number-field.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.mrd-number-field {\n display: flex;\n flex-direction: column;\n gap: var(--mrd-space-1);\n width: 100%;\n}\n\n.mrd-number-field__label {\n display: block;\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-label-font-size);\n font-weight: var(--mrd-label-font-weight);\n color: var(--mrd-label-color);\n}\n\n.mrd-number-field__label--required::after {\n content: ' *';\n color: var(--mrd-color-danger);\n}\n\n.mrd-number-field__input-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.mrd-number-field__input {\n display: block;\n width: 100%;\n height: var(--mrd-input-height);\n padding: var(--mrd-input-padding-y) var(--mrd-input-padding-x);\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-base);\n color: var(--mrd-input-color);\n background-color: var(--mrd-input-bg);\n border: var(--mrd-border-width) solid var(--mrd-border-color);\n border-radius: var(--mrd-border-radius);\n transition: border-color var(--mrd-transition), box-shadow var(--mrd-transition);\n outline: none;\n appearance: none;\n box-sizing: border-box;\n text-align: right;\n}\n\n.mrd-number-field__input::placeholder {\n color: var(--mrd-input-placeholder-color);\n text-align: left;\n}\n\n.mrd-number-field__input:focus {\n border-color: var(--mrd-border-color-focus);\n box-shadow: var(--mrd-shadow-focus);\n}\n\n.mrd-number-field__input:disabled {\n background-color: var(--mrd-input-bg-disabled);\n cursor: not-allowed;\n opacity: 0.7;\n}\n\n.mrd-number-field__input--error {\n border-color: var(--mrd-border-color-error);\n}\n\n.mrd-number-field__input--error:focus {\n box-shadow: var(--mrd-shadow-focus-error);\n}\n\n.mrd-number-field__error {\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-error-font-size);\n color: var(--mrd-error-color);\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter } from '@stencil/core';\nimport { t } from '../../utils/i18n';\nimport { validateRequired, validateNumber } from '../../utils/validation';\nimport { formatNumber, parseLocalizedNumber } from '../../utils/format';\nimport { ClientLayoutItemFieldDataType } from '../../types';\n\n@Component({\n tag: 'mrd-number-field',\n styleUrl: 'mrd-number-field.scss',\n scoped: true,\n})\nexport class MrdNumberField {\n @Prop() name: string = '';\n @Prop() label: string = '';\n @Prop() value: number | null = null;\n @Prop() placeholder: string = '';\n @Prop() required: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() locale: string = navigator.language;\n @Prop() dataType: ClientLayoutItemFieldDataType = ClientLayoutItemFieldDataType.INTEGER;\n @Prop() decimalPrecision: number = 2;\n\n @State() displayValue: string = '';\n @State() error: string = '';\n\n @Event() mrdChange!: EventEmitter<{ name: string; value: number | null }>;\n @Event() mrdBlur!: EventEmitter<{ name: string; value: number | null }>;\n\n componentWillLoad() {\n if (this.value !== null && this.value !== undefined) {\n this.displayValue = this.formatForDisplay(this.value);\n }\n }\n\n private formatForDisplay(val: number): string {\n if (this.dataType === ClientLayoutItemFieldDataType.PERCENTAGE) {\n return formatNumber(val, this.locale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: this.decimalPrecision,\n }) + '%';\n }\n if (this.dataType === ClientLayoutItemFieldDataType.DECIMAL) {\n return formatNumber(val, this.locale, {\n minimumFractionDigits: this.decimalPrecision,\n maximumFractionDigits: this.decimalPrecision,\n });\n }\n return formatNumber(val, this.locale, { maximumFractionDigits: 0 });\n }\n\n private handleInput = (e: Event) => {\n this.displayValue = (e.target as HTMLInputElement).value;\n };\n\n private handleBlur = (e: Event) => {\n const raw = (e.target as HTMLInputElement).value;\n const parsed = parseLocalizedNumber(raw, this.locale);\n\n if (this.required && (parsed === null || raw === '')) {\n this.error = t('required', this.locale);\n } else if (raw !== '' && !validateNumber(parsed, this.dataType)) {\n this.error = t('invalid_number', this.locale);\n } else {\n this.error = '';\n }\n\n if (parsed !== null && validateRequired(raw)) {\n this.displayValue = this.formatForDisplay(parsed);\n }\n\n this.mrdChange.emit({ name: this.name, value: parsed });\n this.mrdBlur.emit({ name: this.name, value: parsed });\n };\n\n private handleFocus = () => {\n // Show raw number on focus\n if (this.value !== null && this.value !== undefined) {\n const str = String(this.value);\n this.displayValue = str;\n }\n };\n\n render() {\n const hasError = !!this.error;\n const suffix =\n this.dataType === ClientLayoutItemFieldDataType.PERCENTAGE ? '%' :\n this.dataType === ClientLayoutItemFieldDataType.DECIMAL ? '' : '';\n\n return (\n <Host>\n <div class=\"mrd-number-field\">\n {this.label && (\n <label class={`mrd-number-field__label${this.required ? ' mrd-number-field__label--required' : ''}`}>\n {this.label}\n </label>\n )}\n <div class=\"mrd-number-field__input-wrapper\">\n <input\n class={`mrd-number-field__input${hasError ? ' mrd-number-field__input--error' : ''}`}\n type=\"text\"\n inputMode=\"decimal\"\n name={this.name}\n value={this.displayValue}\n placeholder={this.placeholder || (suffix ? `0${suffix}` : '0')}\n required={this.required}\n disabled={this.disabled}\n onInput={this.handleInput}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n />\n </div>\n {hasError && <span class=\"mrd-number-field__error\">{this.error}</span>}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|