@mmlogic/components 0.5.15 → 0.5.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/mosterdcomponents.cjs.js +1 -1
- package/dist/cjs/mrd-boolean-field_28.cjs.entry.js +209 -42
- package/dist/collection/components/form/mrd-field/mrd-field.css +69 -0
- package/dist/collection/components/form/mrd-field/mrd-field.js +95 -25
- package/dist/collection/components/layout/mrd-layout-section/field-value.js +19 -2
- package/dist/collection/components/layout/mrd-layout-section/layout-helpers.js +10 -0
- package/dist/collection/components/layout/mrd-layout-section/mrd-layout-section.css +4 -3
- package/dist/collection/components/layout/mrd-layout-section/mrd-layout-section.js +48 -10
- package/dist/collection/components/memo/mrd-memo-container/mrd-memo-container.js +78 -3
- package/dist/collection/components/memo/mrd-memo-list/mrd-memo-list.css +14 -0
- package/dist/collection/components/memo/mrd-memo-list/mrd-memo-list.js +50 -2
- package/dist/collection/dev/app.js +13 -15
- package/dist/collection/dev/example-data.js +15 -1
- package/dist/components/mrd-field2.js +1 -1
- package/dist/components/mrd-layout-section.js +1 -1
- package/dist/components/mrd-memo-container2.js +1 -1
- package/dist/components/mrd-memo-list2.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/mosterdcomponents.js +1 -1
- package/dist/esm/mrd-boolean-field_28.entry.js +209 -42
- package/dist/mosterdcomponents/cell-renderer-CMUxFREW.js.map +1 -0
- package/dist/mosterdcomponents/client-layout-BJkVeSq6.js.map +1 -0
- package/dist/mosterdcomponents/document-attachments-BufPmMRv.js.map +1 -0
- package/dist/mosterdcomponents/field-helpers-BWAp5fD8.js.map +1 -0
- package/dist/mosterdcomponents/file-upload-common-DDWuC9-3.js.map +1 -0
- package/dist/mosterdcomponents/format-gcecItcD.js.map +1 -0
- package/dist/mosterdcomponents/i18n-OzbszktW.js.map +1 -0
- package/dist/mosterdcomponents/index-1ayBojyN.js.map +1 -0
- package/dist/mosterdcomponents/index-CkcFwdPc.js.map +1 -0
- package/dist/mosterdcomponents/index.esm.js.map +1 -0
- package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
- package/dist/mosterdcomponents/mosterdcomponents.esm.js.map +1 -0
- package/dist/mosterdcomponents/p-8a7fa81d.entry.js +3 -0
- package/dist/mosterdcomponents/purify.es-_duHfPgC.js.map +1 -0
- package/dist/mosterdcomponents/query-params-3TXd5CUO.js.map +1 -0
- package/dist/mosterdcomponents/quill-C9pgw_k-.js.map +1 -0
- package/dist/mosterdcomponents/table-query-DJq1uKqJ.js.map +1 -0
- package/dist/mosterdcomponents/validation-B_0Lx9DE.js.map +1 -0
- package/dist/types/components/form/mrd-field/mrd-field.d.ts +16 -0
- package/dist/types/components/layout/mrd-layout-section/field-value.d.ts +4 -0
- package/dist/types/components/layout/mrd-layout-section/layout-helpers.d.ts +3 -0
- package/dist/types/components/layout/mrd-layout-section/mrd-layout-section.d.ts +5 -0
- package/dist/types/components/memo/mrd-memo-container/mrd-memo-container.d.ts +22 -1
- package/dist/types/components/memo/mrd-memo-list/mrd-memo-list.d.ts +12 -0
- package/dist/types/components.d.ts +43 -0
- package/package.json +1 -1
- package/dist/mosterdcomponents/p-d64ba1f2.entry.js +0 -3
|
@@ -4081,7 +4081,7 @@ const MrdEmailView = class {
|
|
|
4081
4081
|
};
|
|
4082
4082
|
MrdEmailView.style = mrdEmailViewCss();
|
|
4083
4083
|
|
|
4084
|
-
const mrdFieldCss = () => `.sc-mrd-field-h{display:block}.mrd-field__inner.sc-mrd-field{display:block;width:100%}.mrd-field__history-editor.sc-mrd-field{margin-top:var(--mrd-space-2);display:flex;flex-direction:column;gap:var(--mrd-space-1)}.mrd-field__history-editor-label.sc-mrd-field{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-500)}.mrd-field__history-editor-row.sc-mrd-field{display:flex;align-items:center;gap:var(--mrd-space-2)}.mrd-field__history-editor-sep.sc-mrd-field{flex-shrink:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500)}.mrd-field__history-editor-value.sc-mrd-field{flex:1 1 0;min-width:0;height:var(--mrd-input-height);padding:0 var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800);background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);outline:none;transition:border-color var(--mrd-transition-fast), box-shadow var(--mrd-transition-fast)}.mrd-field__history-editor-value.sc-mrd-field:focus{border-color:var(--mrd-color-primary);box-shadow:var(--mrd-shadow-focus)}.mrd-field__history-editor-until.sc-mrd-field{flex:0 0 10rem;height:var(--mrd-input-height);padding:0 var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800);background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);outline:none;transition:border-color var(--mrd-transition-fast), box-shadow var(--mrd-transition-fast)}.mrd-field__history-editor-until.sc-mrd-field:focus{border-color:var(--mrd-color-primary);box-shadow:var(--mrd-shadow-focus)}.mrd-field__history-editor-remove.sc-mrd-field{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:2rem;height:2rem;padding:0;background:transparent;border:none;border-radius:var(--mrd-border-radius-sm);color:var(--mrd-color-neutral-400);cursor:pointer;transition:color var(--mrd-transition-fast), background-color var(--mrd-transition-fast)}.mrd-field__history-editor-remove.sc-mrd-field:hover{color:var(--mrd-color-danger);background-color:var(--mrd-color-danger-light)}.mrd-field__history-editor-remove.sc-mrd-field svg.sc-mrd-field{width:1rem;height:1rem}.mrd-field__history-editor-add.sc-mrd-field{align-self:flex-start;padding:var(--mrd-space-1) var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-primary);background:transparent;border:var(--mrd-border-width) solid var(--mrd-color-primary);border-radius:var(--mrd-border-radius-md);cursor:pointer;transition:background-color var(--mrd-transition-fast), color var(--mrd-transition-fast)}.mrd-field__history-editor-add.sc-mrd-field:hover{background-color:var(--mrd-color-primary-light)}`;
|
|
4084
|
+
const mrdFieldCss = () => `.sc-mrd-field-h{display:block}.mrd-field__inner.sc-mrd-field{display:block;width:100%}.mrd-field__history-editor.sc-mrd-field{margin-top:var(--mrd-space-2);display:flex;flex-direction:column;gap:var(--mrd-space-1)}.mrd-field__history-editor-label.sc-mrd-field{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-500)}.mrd-field__history-editor-row.sc-mrd-field{display:flex;align-items:center;gap:var(--mrd-space-2)}.mrd-field__history-editor-sep.sc-mrd-field{flex-shrink:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500)}.mrd-field__history-editor-value.sc-mrd-field{flex:1 1 0;min-width:0;height:var(--mrd-input-height);padding:0 var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800);background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);outline:none;transition:border-color var(--mrd-transition-fast), box-shadow var(--mrd-transition-fast)}.mrd-field__history-editor-value.sc-mrd-field:focus{border-color:var(--mrd-color-primary);box-shadow:var(--mrd-shadow-focus)}.mrd-field__history-editor-until.sc-mrd-field{flex:0 0 10rem;height:var(--mrd-input-height);padding:0 var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800);background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);outline:none;transition:border-color var(--mrd-transition-fast), box-shadow var(--mrd-transition-fast)}.mrd-field__history-editor-until.sc-mrd-field:focus{border-color:var(--mrd-color-primary);box-shadow:var(--mrd-shadow-focus)}.mrd-field__history-editor-remove.sc-mrd-field{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:2rem;height:2rem;padding:0;background:transparent;border:none;border-radius:var(--mrd-border-radius-sm);color:var(--mrd-color-neutral-400);cursor:pointer;transition:color var(--mrd-transition-fast), background-color var(--mrd-transition-fast)}.mrd-field__history-editor-remove.sc-mrd-field:hover{color:var(--mrd-color-danger);background-color:var(--mrd-color-danger-light)}.mrd-field__history-editor-remove.sc-mrd-field svg.sc-mrd-field{width:1rem;height:1rem}.mrd-field__history-editor-add.sc-mrd-field{align-self:flex-start;padding:var(--mrd-space-1) var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-primary);background:transparent;border:var(--mrd-border-width) solid var(--mrd-color-primary);border-radius:var(--mrd-border-radius-md);cursor:pointer;transition:background-color var(--mrd-transition-fast), color var(--mrd-transition-fast)}.mrd-field__history-editor-add.sc-mrd-field:hover{background-color:var(--mrd-color-primary-light)}.mrd-field__multi.sc-mrd-field{display:flex;flex-direction:column;gap:var(--mrd-space-1)}.mrd-field__multi__label.sc-mrd-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-field__multi__label--required.sc-mrd-field::after{content:" *";color:var(--mrd-color-danger)}.mrd-field__multi__error.sc-mrd-field{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}.mrd-field__multi-row.sc-mrd-field{display:flex;align-items:flex-start;gap:var(--mrd-space-2)}.mrd-field__multi-row-input.sc-mrd-field{flex:1 1 0;min-width:0}.mrd-field__multi-remove.sc-mrd-field{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:2rem;height:var(--mrd-input-height);padding:0;background:transparent;border:none;border-radius:var(--mrd-border-radius-sm);color:var(--mrd-color-neutral-400);cursor:pointer;transition:color var(--mrd-transition-fast), background-color var(--mrd-transition-fast)}.mrd-field__multi-remove.sc-mrd-field:hover{color:var(--mrd-color-danger);background-color:var(--mrd-color-danger-light)}.mrd-field__multi-remove.sc-mrd-field svg.sc-mrd-field{width:1rem;height:1rem}.mrd-field__multi-add.sc-mrd-field{align-self:flex-start;padding:var(--mrd-space-1) var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-primary);background:transparent;border:var(--mrd-border-width) solid var(--mrd-color-primary);border-radius:var(--mrd-border-radius-md);cursor:pointer;transition:background-color var(--mrd-transition-fast), color var(--mrd-transition-fast)}.mrd-field__multi-add.sc-mrd-field:hover{background-color:var(--mrd-color-primary-light)}`;
|
|
4085
4085
|
|
|
4086
4086
|
const MrdField = class {
|
|
4087
4087
|
constructor(hostRef) {
|
|
@@ -4094,6 +4094,13 @@ const MrdField = class {
|
|
|
4094
4094
|
this.locale = navigator.language;
|
|
4095
4095
|
this.historyEntries = [];
|
|
4096
4096
|
this.currentValue = undefined;
|
|
4097
|
+
this.multiValues = [];
|
|
4098
|
+
this.multiError = '';
|
|
4099
|
+
this.handleMultiRowBlur = () => {
|
|
4100
|
+
var _a;
|
|
4101
|
+
this.multiError = requiredError(this.multiValues, (_a = this.item.required) !== null && _a !== void 0 ? _a : false, this.locale);
|
|
4102
|
+
this.mrdBlur.emit({ name: this.item.name, value: this.multiValues });
|
|
4103
|
+
};
|
|
4097
4104
|
this.handleChange = (e) => {
|
|
4098
4105
|
var _a, _b, _c, _d;
|
|
4099
4106
|
e.stopPropagation();
|
|
@@ -4138,9 +4145,11 @@ const MrdField = class {
|
|
|
4138
4145
|
}
|
|
4139
4146
|
componentWillLoad() {
|
|
4140
4147
|
this.initHistoryState();
|
|
4148
|
+
this.initMultiState();
|
|
4141
4149
|
}
|
|
4142
4150
|
valueChanged() {
|
|
4143
4151
|
this.initHistoryState();
|
|
4152
|
+
this.initMultiState();
|
|
4144
4153
|
}
|
|
4145
4154
|
initHistoryState() {
|
|
4146
4155
|
var _a, _b, _c, _d, _e;
|
|
@@ -4151,6 +4160,43 @@ const MrdField = class {
|
|
|
4151
4160
|
this.currentValue = (_e = raw === null || raw === void 0 ? void 0 : raw.current) !== null && _e !== void 0 ? _e : raw;
|
|
4152
4161
|
this.historyEntries = Array.isArray(raw === null || raw === void 0 ? void 0 : raw.history) ? [...raw.history] : [];
|
|
4153
4162
|
}
|
|
4163
|
+
/** LIST/FILE/IMAGE already own their multiple-value UI end to end; every
|
|
4164
|
+
* other scalar dataType routes through the generic repeater below instead
|
|
4165
|
+
* of each leaf field re-implementing add/remove itself (FINDING-0149). */
|
|
4166
|
+
isMultiScalar() {
|
|
4167
|
+
var _a, _b;
|
|
4168
|
+
if (((_a = this.item) === null || _a === void 0 ? void 0 : _a.type) !== clientLayout.ClientLayoutItemType.FIELD || !((_b = this.item) === null || _b === void 0 ? void 0 : _b.multiple))
|
|
4169
|
+
return false;
|
|
4170
|
+
const dt = this.item.dataType;
|
|
4171
|
+
return dt !== clientLayout.ClientLayoutItemFieldDataType.LIST
|
|
4172
|
+
&& dt !== clientLayout.ClientLayoutItemFieldDataType.FILE
|
|
4173
|
+
&& dt !== clientLayout.ClientLayoutItemFieldDataType.IMAGE;
|
|
4174
|
+
}
|
|
4175
|
+
initMultiState() {
|
|
4176
|
+
if (!this.isMultiScalar())
|
|
4177
|
+
return;
|
|
4178
|
+
const v = this.value;
|
|
4179
|
+
this.multiValues = Array.isArray(v) ? [...v] : (v != null && v !== '' ? [v] : []);
|
|
4180
|
+
}
|
|
4181
|
+
emptyRowValue() {
|
|
4182
|
+
var _a;
|
|
4183
|
+
switch (this.item.dataType) {
|
|
4184
|
+
case clientLayout.ClientLayoutItemFieldDataType.INTEGER:
|
|
4185
|
+
case clientLayout.ClientLayoutItemFieldDataType.DECIMAL:
|
|
4186
|
+
case clientLayout.ClientLayoutItemFieldDataType.PERCENTAGE:
|
|
4187
|
+
return null;
|
|
4188
|
+
case clientLayout.ClientLayoutItemFieldDataType.CURRENCY:
|
|
4189
|
+
return { amount: null, currency: (_a = this.item.currencyCode) !== null && _a !== void 0 ? _a : 'EUR' };
|
|
4190
|
+
case clientLayout.ClientLayoutItemFieldDataType.BOOLEAN:
|
|
4191
|
+
return false;
|
|
4192
|
+
default:
|
|
4193
|
+
return '';
|
|
4194
|
+
}
|
|
4195
|
+
}
|
|
4196
|
+
emitMultiChange(values) {
|
|
4197
|
+
this.multiValues = values;
|
|
4198
|
+
this.mrdChange.emit({ name: this.item.name, value: values });
|
|
4199
|
+
}
|
|
4154
4200
|
getDisplayValue() {
|
|
4155
4201
|
var _a, _b, _c, _d;
|
|
4156
4202
|
const hist = (_b = (_a = this.item) === null || _a === void 0 ? void 0 : _a.historyEnabled) !== null && _b !== void 0 ? _b : (_d = (_c = this.item) === null || _c === void 0 ? void 0 : _c.field) === null || _d === void 0 ? void 0 : _d.historyEnabled;
|
|
@@ -4179,6 +4225,9 @@ const MrdField = class {
|
|
|
4179
4225
|
value: { current: this.currentValue, history: entries },
|
|
4180
4226
|
});
|
|
4181
4227
|
}
|
|
4228
|
+
renderRemoveIcon() {
|
|
4229
|
+
return (index.h("svg", { viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true" }, index.h("path", { "fill-rule": "evenodd", d: "M8.75 1A2.75 2.75 0 006 3.75v.443c-.795.077-1.584.176-2.365.298a.75.75 0 10.23 1.482l.149-.022.841 10.518A2.75 2.75 0 007.596 19h4.807a2.75 2.75 0 002.742-2.53l.841-10.52.149.023a.75.75 0 00.23-1.482A41.03 41.03 0 0014 4.193V3.75A2.75 2.75 0 0011.25 1h-2.5zM10 4c.84 0 1.673.025 2.5.075V3.75c0-.69-.56-1.25-1.25-1.25h-2.5c-.69 0-1.25.56-1.25 1.25v.325C8.327 4.025 9.16 4 10 4zM8.58 7.72a.75.75 0 00-1.5.06l.3 7.5a.75.75 0 101.5-.06l-.3-7.5zm4.34.06a.75.75 0 10-1.5-.06l-.3 7.5a.75.75 0 101.5.06l.3-7.5z", "clip-rule": "evenodd" })));
|
|
4230
|
+
}
|
|
4182
4231
|
renderHistoryEditor() {
|
|
4183
4232
|
var _a, _b, _c, _d;
|
|
4184
4233
|
const hist = (_b = (_a = this.item) === null || _a === void 0 ? void 0 : _a.historyEnabled) !== null && _b !== void 0 ? _b : (_d = (_c = this.item) === null || _c === void 0 ? void 0 : _c.field) === null || _d === void 0 ? void 0 : _d.historyEnabled;
|
|
@@ -4196,62 +4245,80 @@ const MrdField = class {
|
|
|
4196
4245
|
const addEntry = () => {
|
|
4197
4246
|
this.emitHistoryChange([...this.historyEntries, { value: '', until: '' }]);
|
|
4198
4247
|
};
|
|
4199
|
-
return (index.h("div", { class: "mrd-field__history-editor" }, this.historyEntries.length > 0 && (index.h("span", { class: "mrd-field__history-editor-label" }, cellRenderer.t('history_badge_tooltip', locale))), this.historyEntries.map((entry, i) => (index.h("div", { key: String(i), class: "mrd-field__history-editor-row" }, index.h("input", { class: "mrd-field__history-editor-value", type: valueType, value: entry.value, onInput: (e) => updateEntry(i, 'value', e.target.value) }), index.h("span", { class: "mrd-field__history-editor-sep" }, cellRenderer.t('history_until', locale)), index.h("input", { class: "mrd-field__history-editor-until", type: "date", value: entry.until, onInput: (e) => updateEntry(i, 'until', e.target.value) }), index.h("button", { type: "button", class: "mrd-field__history-editor-remove", onClick: () => removeEntry(i), "aria-label": cellRenderer.t('remove', locale) },
|
|
4248
|
+
return (index.h("div", { class: "mrd-field__history-editor" }, this.historyEntries.length > 0 && (index.h("span", { class: "mrd-field__history-editor-label" }, cellRenderer.t('history_badge_tooltip', locale))), this.historyEntries.map((entry, i) => (index.h("div", { key: String(i), class: "mrd-field__history-editor-row" }, index.h("input", { class: "mrd-field__history-editor-value", type: valueType, value: entry.value, onInput: (e) => updateEntry(i, 'value', e.target.value) }), index.h("span", { class: "mrd-field__history-editor-sep" }, cellRenderer.t('history_until', locale)), index.h("input", { class: "mrd-field__history-editor-until", type: "date", value: entry.until, onInput: (e) => updateEntry(i, 'until', e.target.value) }), index.h("button", { type: "button", class: "mrd-field__history-editor-remove", onClick: () => removeEntry(i), "aria-label": cellRenderer.t('remove', locale) }, this.renderRemoveIcon())))), index.h("button", { type: "button", class: "mrd-field__history-editor-add", onClick: addEntry }, "+ ", cellRenderer.t('add', locale))));
|
|
4200
4249
|
}
|
|
4201
|
-
renderLeafField(displayValue) {
|
|
4202
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6;
|
|
4250
|
+
renderLeafField(displayValue, onChange = this.handleChange, onBlur = this.handleBlur, overrides = {}) {
|
|
4251
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8;
|
|
4203
4252
|
const { item, locale } = this;
|
|
4204
4253
|
const commonProps = {
|
|
4205
4254
|
name: item.name,
|
|
4206
|
-
label: item.label,
|
|
4207
|
-
required: item.required,
|
|
4208
|
-
disabled: (
|
|
4255
|
+
label: (_a = overrides.label) !== null && _a !== void 0 ? _a : item.label,
|
|
4256
|
+
required: (_b = overrides.required) !== null && _b !== void 0 ? _b : item.required,
|
|
4257
|
+
disabled: (_c = item.disabled) !== null && _c !== void 0 ? _c : false,
|
|
4209
4258
|
locale,
|
|
4210
|
-
onMrdChange:
|
|
4211
|
-
onMrdBlur:
|
|
4259
|
+
onMrdChange: onChange,
|
|
4260
|
+
onMrdBlur: onBlur,
|
|
4212
4261
|
};
|
|
4213
4262
|
switch (item.dataType) {
|
|
4214
4263
|
case clientLayout.ClientLayoutItemFieldDataType.TEXT:
|
|
4215
|
-
return (index.h("mrd-text-field", Object.assign({}, commonProps, { value: (
|
|
4264
|
+
return (index.h("mrd-text-field", Object.assign({}, commonProps, { value: (_d = displayValue) !== null && _d !== void 0 ? _d : '', placeholder: (_e = item.placeholder) !== null && _e !== void 0 ? _e : '' })));
|
|
4216
4265
|
case clientLayout.ClientLayoutItemFieldDataType.TEXTBLOCK:
|
|
4217
|
-
return (index.h("mrd-textarea-field", Object.assign({}, commonProps, { value: (
|
|
4266
|
+
return (index.h("mrd-textarea-field", Object.assign({}, commonProps, { value: (_f = displayValue) !== null && _f !== void 0 ? _f : '', placeholder: (_g = item.placeholder) !== null && _g !== void 0 ? _g : '' })));
|
|
4218
4267
|
case clientLayout.ClientLayoutItemFieldDataType.INTEGER:
|
|
4219
4268
|
case clientLayout.ClientLayoutItemFieldDataType.DECIMAL:
|
|
4220
4269
|
case clientLayout.ClientLayoutItemFieldDataType.PERCENTAGE:
|
|
4221
|
-
return (index.h("mrd-number-field", Object.assign({}, commonProps, { value: (
|
|
4270
|
+
return (index.h("mrd-number-field", Object.assign({}, commonProps, { value: (_h = displayValue) !== null && _h !== void 0 ? _h : null, dataType: item.dataType, decimalPrecision: (_j = item.decimalPrecision) !== null && _j !== void 0 ? _j : 2, placeholder: (_k = item.placeholder) !== null && _k !== void 0 ? _k : '' })));
|
|
4222
4271
|
case clientLayout.ClientLayoutItemFieldDataType.CURRENCY:
|
|
4223
4272
|
return (index.h("mrd-currency-field", Object.assign({}, commonProps, {
|
|
4224
4273
|
// Input-only fallback: it preselects the layout's currencyCode in the dropdown
|
|
4225
4274
|
// before an amount exists. The field never emits this shape back — an empty
|
|
4226
4275
|
// amount emits null (FINDING-0141).
|
|
4227
|
-
value: (
|
|
4276
|
+
value: (_l = displayValue) !== null && _l !== void 0 ? _l : { amount: null, currency: (_m = item.currencyCode) !== null && _m !== void 0 ? _m : 'EUR' }
|
|
4228
4277
|
})));
|
|
4229
4278
|
case clientLayout.ClientLayoutItemFieldDataType.BOOLEAN:
|
|
4230
|
-
return (index.h("mrd-boolean-field", Object.assign({}, commonProps, { value: (
|
|
4279
|
+
return (index.h("mrd-boolean-field", Object.assign({}, commonProps, { value: (_o = displayValue) !== null && _o !== void 0 ? _o : false })));
|
|
4231
4280
|
case clientLayout.ClientLayoutItemFieldDataType.DATE:
|
|
4232
|
-
return (index.h("mrd-date-field", Object.assign({}, commonProps, { value: (
|
|
4281
|
+
return (index.h("mrd-date-field", Object.assign({}, commonProps, { value: (_p = displayValue) !== null && _p !== void 0 ? _p : '' })));
|
|
4233
4282
|
case clientLayout.ClientLayoutItemFieldDataType.DATETIME:
|
|
4234
|
-
return (index.h("mrd-datetime-field", Object.assign({}, commonProps, { value: (
|
|
4283
|
+
return (index.h("mrd-datetime-field", Object.assign({}, commonProps, { value: (_q = displayValue) !== null && _q !== void 0 ? _q : '' })));
|
|
4235
4284
|
case clientLayout.ClientLayoutItemFieldDataType.TIME:
|
|
4236
|
-
return (index.h("mrd-time-field", Object.assign({}, commonProps, { value: (
|
|
4285
|
+
return (index.h("mrd-time-field", Object.assign({}, commonProps, { value: (_r = displayValue) !== null && _r !== void 0 ? _r : '' })));
|
|
4237
4286
|
case clientLayout.ClientLayoutItemFieldDataType.EMAIL:
|
|
4238
|
-
return (index.h("mrd-email-field", Object.assign({}, commonProps, { value: (
|
|
4287
|
+
return (index.h("mrd-email-field", Object.assign({}, commonProps, { value: (_s = displayValue) !== null && _s !== void 0 ? _s : '', placeholder: (_t = item.placeholder) !== null && _t !== void 0 ? _t : '' })));
|
|
4239
4288
|
case clientLayout.ClientLayoutItemFieldDataType.HYPERLINK:
|
|
4240
|
-
return (index.h("mrd-hyperlink-field", Object.assign({}, commonProps, { value: (
|
|
4289
|
+
return (index.h("mrd-hyperlink-field", Object.assign({}, commonProps, { value: (_u = displayValue) !== null && _u !== void 0 ? _u : '', placeholder: (_v = item.placeholder) !== null && _v !== void 0 ? _v : '' })));
|
|
4241
4290
|
case clientLayout.ClientLayoutItemFieldDataType.LIST:
|
|
4242
|
-
return (index.h("mrd-list-field", Object.assign({}, commonProps, { value: (
|
|
4291
|
+
return (index.h("mrd-list-field", Object.assign({}, commonProps, { value: (_w = displayValue) !== null && _w !== void 0 ? _w : '', multiple: (_x = item.multiple) !== null && _x !== void 0 ? _x : false, listItems: (_y = item.listItems) !== null && _y !== void 0 ? _y : [] })));
|
|
4243
4292
|
case clientLayout.ClientLayoutItemFieldDataType.FILE:
|
|
4244
|
-
return (index.h("mrd-file-field", Object.assign({}, commonProps, { value: displayValue, accept: (
|
|
4293
|
+
return (index.h("mrd-file-field", Object.assign({}, commonProps, { value: displayValue, accept: (_z = item.accept) !== null && _z !== void 0 ? _z : '', maxSize: (_0 = item.maxSize) !== null && _0 !== void 0 ? _0 : 0, multiple: (_1 = item.multiple) !== null && _1 !== void 0 ? _1 : false, onMrdUpload: this.handleUpload })));
|
|
4245
4294
|
case clientLayout.ClientLayoutItemFieldDataType.IMAGE:
|
|
4246
|
-
return (index.h("mrd-image-field", Object.assign({}, commonProps, { value: displayValue, accept: (
|
|
4295
|
+
return (index.h("mrd-image-field", Object.assign({}, commonProps, { value: displayValue, accept: (_2 = item.accept) !== null && _2 !== void 0 ? _2 : 'image/*', maxSize: (_3 = item.maxSize) !== null && _3 !== void 0 ? _3 : 0, multiple: (_4 = item.multiple) !== null && _4 !== void 0 ? _4 : false, onMrdUpload: this.handleUpload })));
|
|
4247
4296
|
case clientLayout.ClientLayoutItemFieldDataType.LONGTEXT:
|
|
4248
|
-
return (index.h("mrd-longtext-field", Object.assign({}, commonProps, { value: (
|
|
4297
|
+
return (index.h("mrd-longtext-field", Object.assign({}, commonProps, { value: (_5 = displayValue) !== null && _5 !== void 0 ? _5 : '', placeholder: (_6 = item.placeholder) !== null && _6 !== void 0 ? _6 : '' })));
|
|
4249
4298
|
case clientLayout.ClientLayoutItemFieldDataType.SECRET:
|
|
4250
|
-
return (index.h("mrd-secret-field", Object.assign({}, commonProps, { value: (
|
|
4299
|
+
return (index.h("mrd-secret-field", Object.assign({}, commonProps, { value: (_7 = displayValue) !== null && _7 !== void 0 ? _7 : '', placeholder: (_8 = item.placeholder) !== null && _8 !== void 0 ? _8 : '' })));
|
|
4251
4300
|
default:
|
|
4252
4301
|
return null;
|
|
4253
4302
|
}
|
|
4254
4303
|
}
|
|
4304
|
+
/** Repeatable-row UI for a scalar dataType with multiple: true — mirrors the
|
|
4305
|
+
* add/remove pattern already established by renderHistoryEditor(), reusing
|
|
4306
|
+
* the single-row renderLeafField() per entry instead of duplicating repeat
|
|
4307
|
+
* UI into every leaf field component (FINDING-0149). */
|
|
4308
|
+
renderMultiScalarField() {
|
|
4309
|
+
var _a, _b;
|
|
4310
|
+
const { item, locale } = this;
|
|
4311
|
+
const updateRow = (i, val) => {
|
|
4312
|
+
this.emitMultiChange(this.multiValues.map((v, idx) => (idx === i ? val : v)));
|
|
4313
|
+
};
|
|
4314
|
+
const removeRow = (i) => {
|
|
4315
|
+
this.emitMultiChange(this.multiValues.filter((_, idx) => idx !== i));
|
|
4316
|
+
};
|
|
4317
|
+
const addRow = () => {
|
|
4318
|
+
this.emitMultiChange([...this.multiValues, this.emptyRowValue()]);
|
|
4319
|
+
};
|
|
4320
|
+
return (index.h("div", { class: "mrd-field__multi" }, index.h(FieldLabel, { base: "mrd-field__multi", label: (_a = item.label) !== null && _a !== void 0 ? _a : '', required: (_b = item.required) !== null && _b !== void 0 ? _b : false }), this.multiValues.map((v, i) => (index.h("div", { key: String(i), class: "mrd-field__multi-row" }, index.h("div", { class: "mrd-field__multi-row-input" }, this.renderLeafField(v, (e) => { e.stopPropagation(); updateRow(i, e.detail.value); }, (e) => { e.stopPropagation(); this.handleMultiRowBlur(); }, { label: '', required: false })), index.h("button", { type: "button", class: "mrd-field__multi-remove", onClick: () => removeRow(i), "aria-label": cellRenderer.t('remove', locale) }, this.renderRemoveIcon())))), index.h("button", { type: "button", class: "mrd-field__multi-add", onClick: addRow }, "+ ", cellRenderer.t('add', locale)), index.h(FieldError, { base: "mrd-field__multi", error: this.multiError })));
|
|
4321
|
+
}
|
|
4255
4322
|
render() {
|
|
4256
4323
|
var _a, _b, _c, _d, _e, _f;
|
|
4257
4324
|
const { item, locale, value } = this;
|
|
@@ -4262,7 +4329,7 @@ const MrdField = class {
|
|
|
4262
4329
|
return index.h(index.Host, null);
|
|
4263
4330
|
}
|
|
4264
4331
|
const displayValue = this.getDisplayValue();
|
|
4265
|
-
return (index.h(index.Host, null, index.h("div", { class: "mrd-field__inner" }, this.renderLeafField(displayValue), this.renderHistoryEditor())));
|
|
4332
|
+
return (index.h(index.Host, null, index.h("div", { class: "mrd-field__inner" }, this.isMultiScalar() ? this.renderMultiScalarField() : this.renderLeafField(displayValue), this.renderHistoryEditor())));
|
|
4266
4333
|
}
|
|
4267
4334
|
get el() { return index.getElement(this); }
|
|
4268
4335
|
static get watchers() { return {
|
|
@@ -5201,6 +5268,16 @@ function showsEmpty(item) {
|
|
|
5201
5268
|
var _a, _b, _c, _d, _e;
|
|
5202
5269
|
return (_e = (_c = (_a = item.showEmpty) !== null && _a !== void 0 ? _a : (_b = item.field) === null || _b === void 0 ? void 0 : _b.showEmpty) !== null && _c !== void 0 ? _c : (_d = item.relation) === null || _d === void 0 ? void 0 : _d.showEmpty) !== null && _e !== void 0 ? _e : false;
|
|
5203
5270
|
}
|
|
5271
|
+
/** Whether a RELATION item has a resolvable link value (`_links[item.name]`
|
|
5272
|
+
* carries either a multi-value `values[]` or a single `name`). */
|
|
5273
|
+
function hasRelationValue(item, data) {
|
|
5274
|
+
var _a, _b;
|
|
5275
|
+
if (!item.name)
|
|
5276
|
+
return false;
|
|
5277
|
+
const links = ((_a = data === null || data === void 0 ? void 0 : data._links) !== null && _a !== void 0 ? _a : {});
|
|
5278
|
+
const link = links[item.name];
|
|
5279
|
+
return !!(((_b = link === null || link === void 0 ? void 0 : link.values) === null || _b === void 0 ? void 0 : _b.length) || (link === null || link === void 0 ? void 0 : link.name));
|
|
5280
|
+
}
|
|
5204
5281
|
/** Depth-first flatten of the SECTION/GROUP tree. */
|
|
5205
5282
|
function flattenItems(items) {
|
|
5206
5283
|
const result = [];
|
|
@@ -5313,7 +5390,7 @@ function renderHistoryBadge(ctx, item, raw) {
|
|
|
5313
5390
|
ctx.on.toggleHistory(isOpen ? null : item.name);
|
|
5314
5391
|
} }, index.h("svg", { class: "mrd-layout-section__history-icon", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true" }, index.h("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" }))), isOpen && (index.h("div", { class: "mrd-layout-section__history-popover", role: "listbox" }, sorted.map((entry, i) => (index.h("div", { key: String(i), class: "mrd-layout-section__history-entry" }, entry.value, " (", cellRenderer.t('history_until', ctx.locale), " ", cellRenderer.formatDate(entry.until, ctx.locale), ")")))))));
|
|
5315
5392
|
}
|
|
5316
|
-
function
|
|
5393
|
+
function fieldRenderState(ctx, item) {
|
|
5317
5394
|
var _a, _b;
|
|
5318
5395
|
if (!item.name)
|
|
5319
5396
|
return null;
|
|
@@ -5323,10 +5400,27 @@ function renderField(ctx, item) {
|
|
|
5323
5400
|
? raw.current
|
|
5324
5401
|
: raw;
|
|
5325
5402
|
const renderedValue = renderFieldValue(ctx, item, rawValue);
|
|
5403
|
+
return { raw, rawValue, renderedValue, isEmpty: renderedValue == null };
|
|
5404
|
+
}
|
|
5405
|
+
/** Whether a FIELD item would render anything at all (value, or a showEmpty
|
|
5406
|
+
* placeholder). A `header` field always renders. Used by mrd-layout-section
|
|
5407
|
+
* to decide whether a preceding HEADER item's block is entirely empty. */
|
|
5408
|
+
function isFieldVisible(ctx, item) {
|
|
5409
|
+
if (item.header)
|
|
5410
|
+
return true;
|
|
5411
|
+
const state = fieldRenderState(ctx, item);
|
|
5412
|
+
if (!state)
|
|
5413
|
+
return false;
|
|
5414
|
+
return !state.isEmpty || showsEmpty(item);
|
|
5415
|
+
}
|
|
5416
|
+
function renderField(ctx, item) {
|
|
5417
|
+
const state = fieldRenderState(ctx, item);
|
|
5418
|
+
if (!state)
|
|
5419
|
+
return null;
|
|
5420
|
+
const { raw, rawValue, renderedValue, isEmpty } = state;
|
|
5326
5421
|
if (item.header) {
|
|
5327
5422
|
return (index.h("h1", { class: "mrd-layout-section__field-header", key: item.name }, typeof renderedValue === 'string' ? renderedValue : rawValue != null ? String(rawValue) : item.label));
|
|
5328
5423
|
}
|
|
5329
|
-
const isEmpty = renderedValue == null;
|
|
5330
5424
|
if (isEmpty && !showsEmpty(item))
|
|
5331
5425
|
return null;
|
|
5332
5426
|
const isBlock = item.dataType === clientLayout.ClientLayoutItemFieldDataType.TEXTBLOCK
|
|
@@ -5335,7 +5429,7 @@ function renderField(ctx, item) {
|
|
|
5335
5429
|
return (index.h("div", { class: `mrd-layout-section__field${isBlock ? ' mrd-layout-section__field--block' : ''}${isEmpty ? ' mrd-layout-section__field--empty' : ''}`, key: item.name }, index.h("span", { class: "mrd-layout-section__field-label" }, item.label), index.h("span", { class: "mrd-layout-section__field-value" }, isEmpty ? cellRenderer.t('value_empty', ctx.locale) : renderedValue, renderHistoryBadge(ctx, item, raw))));
|
|
5336
5430
|
}
|
|
5337
5431
|
|
|
5338
|
-
const mrdLayoutSectionCss = () => `.sc-mrd-layout-section-h{display:block;width:100%}.mrd-layout-section.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-800)}.mrd-layout-section__field.sc-mrd-layout-section{display:grid;grid-template-columns:200px 1fr;align-items:baseline;gap:0 var(--mrd-space-2);padding:var(--mrd-space-1) 0}.mrd-layout-section__field--block.sc-mrd-layout-section{grid-template-columns:1fr}.mrd-layout-section__field-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-normal);color:var(--mrd-color-neutral-500);padding-top:1px}.mrd-layout-section__field-value.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800);word-break:break-word;display:inline-flex;align-items:center;gap:var(--mrd-space-1)}.mrd-layout-section__field--empty.sc-mrd-layout-section .mrd-layout-section__field-value.sc-mrd-layout-section{color:var(--mrd-color-neutral-400);font-weight:var(--mrd-font-weight-normal)}.mrd-layout-section__history-wrap.sc-mrd-layout-section{position:relative;display:inline-flex;align-items:center}.mrd-layout-section__history-btn.sc-mrd-layout-section{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;padding:0;background:transparent;border:none;border-radius:var(--mrd-border-radius-sm);color:var(--mrd-color-neutral-400);cursor:pointer;flex-shrink:0;transition:color var(--mrd-transition-fast), background-color var(--mrd-transition-fast)}.mrd-layout-section__history-btn.sc-mrd-layout-section:hover{color:var(--mrd-color-neutral-700);background-color:var(--mrd-color-neutral-100)}.mrd-layout-section__history-btn.sc-mrd-layout-section:focus{outline:none;box-shadow:var(--mrd-shadow-focus)}.mrd-layout-section__history-icon.sc-mrd-layout-section{width:0.875rem;height:0.875rem}.mrd-layout-section__history-popover.sc-mrd-layout-section{position:absolute;top:calc(100% + 0.25rem);left:0;min-width:24rem;max-width:24rem;background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);box-shadow:var(--mrd-shadow-md);padding:var(--mrd-space-1) 0;z-index:var(--mrd-z-dropdown)}.mrd-layout-section__history-entry.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-normal);color:var(--mrd-color-neutral-700);padding:var(--mrd-space-2) var(--mrd-space-3);line-height:var(--mrd-line-height-normal)}.mrd-layout-section__history-entry.sc-mrd-layout-section:not(:last-child){border-bottom:var(--mrd-border-width) solid var(--mrd-color-neutral-100)}.mrd-layout-section__field-header.sc-mrd-layout-section{font-size:var(--mrd-font-size-2xl);font-weight:var(--mrd-font-weight-bold);color:var(--mrd-color-neutral-900);margin:0 0 var(--mrd-space-4) 0;padding:0}.mrd-layout-section__header.sc-mrd-layout-section{font-size:var(--mrd-font-size-xl);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-800);margin:var(--mrd-space-4) 0 var(--mrd-space-2) 0;padding:0}.mrd-layout-section__text.sc-mrd-layout-section{font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-700);line-height:var(--mrd-line-height-relaxed);margin:var(--mrd-space-2) 0}.mrd-layout-section__navigate.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-2);padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:1px solid var(--mrd-color-neutral-300);border-radius:var(--mrd-border-radius);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary);cursor:pointer;margin:var(--mrd-space-2) 0}.mrd-layout-section__navigate.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light);border-color:var(--mrd-color-primary)}.mrd-layout-section__link.sc-mrd-layout-section{color:var(--mrd-color-primary);text-decoration:none}.mrd-layout-section__link.sc-mrd-layout-section:hover{text-decoration:underline}.mrd-layout-section__relation-link.sc-mrd-layout-section{background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-primary);cursor:pointer;text-align:left}.mrd-layout-section__relation-link.sc-mrd-layout-section:hover{text-decoration:underline}.mrd-layout-section__download-link.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-1);background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary);cursor:pointer;text-align:left}.mrd-layout-section__download-link.sc-mrd-layout-section:hover{text-decoration:underline;color:var(--mrd-color-primary-dark)}.mrd-layout-section__file-icon.sc-mrd-layout-section{flex-shrink:0;width:1rem;height:1rem}.mrd-layout-section__file-list.sc-mrd-layout-section{display:flex;flex-direction:column;align-items:flex-start;gap:var(--mrd-space-1)}.mrd-layout-section__file-list-item.sc-mrd-layout-section{min-width:0;max-width:100%}.mrd-layout-section__boolean--true.sc-mrd-layout-section{color:var(--mrd-color-success);font-weight:var(--mrd-font-weight-semibold)}.mrd-layout-section__boolean--false.sc-mrd-layout-section{color:var(--mrd-color-neutral-400)}.mrd-layout-section__badge.sc-mrd-layout-section{display:inline-block;font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);padding:2px var(--mrd-space-3);border-radius:10px}.mrd-layout-section__badge-dot-row.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-2)}.mrd-layout-section__badge-dot.sc-mrd-layout-section{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0}.mrd-layout-section__secret-masked.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-label-color);letter-spacing:0.15em;user-select:none;pointer-events:none}.mrd-layout-section__pre.sc-mrd-layout-section{font-family:var(--mrd-font-family-mono);font-size:var(--mrd-font-size-xs);background-color:var(--mrd-color-neutral-50);border:1px solid var(--mrd-color-neutral-200);border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);margin:0;max-height:calc(15 * var(--mrd-font-size-xs));overflow-x:auto;overflow-y:auto;white-space:pre-wrap;word-break:break-word}.mrd-layout-section__group.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__group-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-500);margin:0 0 var(--mrd-space-2) 0;padding-bottom:0;letter-spacing:0.01em}.mrd-layout-section__related-view.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__related-view-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-lg);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-800);margin:0 0 var(--mrd-space-3) 0}.mrd-layout-section__search.sc-mrd-layout-section{position:relative;margin:var(--mrd-space-2) 0}.mrd-layout-section__search-wrap.sc-mrd-layout-section{position:relative}.mrd-layout-section__search-icon.sc-mrd-layout-section{position:absolute;left:var(--mrd-input-padding-x);top:50%;transform:translateY(-50%);width:1rem;height:1rem;color:var(--mrd-color-neutral-400);pointer-events:none}.mrd-layout-section__search-input.sc-mrd-layout-section{display:block;width:100%;height:var(--mrd-input-height);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));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);outline:none;appearance:none;box-sizing:border-box}.mrd-layout-section__search-input.sc-mrd-layout-section:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-layout-section__search-input.sc-mrd-layout-section::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-layout-section__search-results.sc-mrd-layout-section{position:absolute;top:100%;left:0;right:0;background-color:var(--mrd-color-white);border:1px solid var(--mrd-color-neutral-300);border-top:none;border-radius:0 0 var(--mrd-border-radius) var(--mrd-border-radius);box-shadow:var(--mrd-shadow-sm);z-index:100;max-height:300px;overflow-y:auto;list-style:none;margin:0;padding:var(--mrd-space-1) 0}.mrd-layout-section__search-result.sc-mrd-layout-section{margin:0;padding:0}.mrd-layout-section__search-result-btn.sc-mrd-layout-section{display:flex;flex-direction:column;width:100%;padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:none;text-align:left;cursor:pointer;font-family:var(--mrd-font-family)}.mrd-layout-section__search-result-btn.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light)}.mrd-layout-section__search-result-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800)}.mrd-layout-section__search-result-desc.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);margin-top:var(--mrd-space-1)}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section{background:none;border:none;padding:0;cursor:pointer;display:inline-block;border-radius:var(--mrd-border-radius);overflow:hidden;line-height:0}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section:hover .mrd-layout-section__image-thumb.sc-mrd-layout-section{opacity:0.85}.mrd-layout-section__image-thumb.sc-mrd-layout-section{display:block;max-width:160px;max-height:100px;border-radius:var(--mrd-border-radius);object-fit:cover;transition:opacity 0.15s}.mrd-layout-section__modal-backdrop.sc-mrd-layout-section{position:fixed;inset:0;background:rgba(0, 0, 0, 0.6);z-index:300;display:flex;align-items:center;justify-content:center}.mrd-layout-section__modal.sc-mrd-layout-section{position:relative;background:var(--mrd-color-white);border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);max-width:min(90vw, 900px);max-height:90vh;display:flex;align-items:center;justify-content:center;box-shadow:var(--mrd-shadow-lg)}.mrd-layout-section__modal-close.sc-mrd-layout-section{position:absolute;top:var(--mrd-space-2);right:var(--mrd-space-2);background:rgba(0, 0, 0, 0.5);border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:var(--mrd-color-white);cursor:pointer;font-size:var(--mrd-font-size-sm);line-height:1;z-index:1}.mrd-layout-section__modal-close.sc-mrd-layout-section:hover{background:rgba(0, 0, 0, 0.8)}.mrd-layout-section__modal-image.sc-mrd-layout-section{display:block;max-width:100%;max-height:calc(90vh - 2rem);border-radius:var(--mrd-border-radius);object-fit:contain}`;
|
|
5432
|
+
const mrdLayoutSectionCss = () => `.sc-mrd-layout-section-h{display:block;width:100%}.mrd-layout-section.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-800)}.mrd-layout-section__field.sc-mrd-layout-section{display:grid;grid-template-columns:200px 1fr;align-items:baseline;gap:0 var(--mrd-space-2);padding:var(--mrd-space-1) 0}.mrd-layout-section__field--block.sc-mrd-layout-section{grid-template-columns:1fr}.mrd-layout-section__field-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-normal);color:var(--mrd-color-neutral-500);padding-top:1px}.mrd-layout-section__field-value.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800);word-break:break-word;display:inline-flex;align-items:center;gap:var(--mrd-space-1)}.mrd-layout-section__field--empty.sc-mrd-layout-section .mrd-layout-section__field-value.sc-mrd-layout-section{color:var(--mrd-color-neutral-400);font-weight:var(--mrd-font-weight-normal)}.mrd-layout-section__history-wrap.sc-mrd-layout-section{position:relative;display:inline-flex;align-items:center}.mrd-layout-section__history-btn.sc-mrd-layout-section{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;padding:0;background:transparent;border:none;border-radius:var(--mrd-border-radius-sm);color:var(--mrd-color-neutral-400);cursor:pointer;flex-shrink:0;transition:color var(--mrd-transition-fast), background-color var(--mrd-transition-fast)}.mrd-layout-section__history-btn.sc-mrd-layout-section:hover{color:var(--mrd-color-neutral-700);background-color:var(--mrd-color-neutral-100)}.mrd-layout-section__history-btn.sc-mrd-layout-section:focus{outline:none;box-shadow:var(--mrd-shadow-focus)}.mrd-layout-section__history-icon.sc-mrd-layout-section{width:0.875rem;height:0.875rem}.mrd-layout-section__history-popover.sc-mrd-layout-section{position:absolute;top:calc(100% + 0.25rem);left:0;min-width:24rem;max-width:24rem;background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);box-shadow:var(--mrd-shadow-md);padding:var(--mrd-space-1) 0;z-index:var(--mrd-z-dropdown)}.mrd-layout-section__history-entry.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-normal);color:var(--mrd-color-neutral-700);padding:var(--mrd-space-2) var(--mrd-space-3);line-height:var(--mrd-line-height-normal)}.mrd-layout-section__history-entry.sc-mrd-layout-section:not(:last-child){border-bottom:var(--mrd-border-width) solid var(--mrd-color-neutral-100)}.mrd-layout-section__field-header.sc-mrd-layout-section{font-size:var(--mrd-font-size-2xl);font-weight:var(--mrd-font-weight-bold);color:var(--mrd-color-neutral-900);margin:0 0 var(--mrd-space-4) 0;padding:0}.mrd-layout-section__header.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-500);letter-spacing:0.01em;margin:var(--mrd-space-5) 0 var(--mrd-space-2) 0;padding:0}.mrd-layout-section__text.sc-mrd-layout-section{font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-700);line-height:var(--mrd-line-height-relaxed);margin:var(--mrd-space-2) 0}.mrd-layout-section__navigate.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-2);padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:1px solid var(--mrd-color-neutral-300);border-radius:var(--mrd-border-radius);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary);cursor:pointer;margin:var(--mrd-space-2) 0}.mrd-layout-section__navigate.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light);border-color:var(--mrd-color-primary)}.mrd-layout-section__link.sc-mrd-layout-section{color:var(--mrd-color-primary);text-decoration:none}.mrd-layout-section__link.sc-mrd-layout-section:hover{text-decoration:underline}.mrd-layout-section__relation-link.sc-mrd-layout-section{background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-primary);cursor:pointer;text-align:left}.mrd-layout-section__relation-link.sc-mrd-layout-section:hover{text-decoration:underline}.mrd-layout-section__download-link.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-1);background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary);cursor:pointer;text-align:left}.mrd-layout-section__download-link.sc-mrd-layout-section:hover{text-decoration:underline;color:var(--mrd-color-primary-dark)}.mrd-layout-section__file-icon.sc-mrd-layout-section{flex-shrink:0;width:1rem;height:1rem}.mrd-layout-section__file-list.sc-mrd-layout-section{display:flex;flex-direction:column;align-items:flex-start;gap:var(--mrd-space-1)}.mrd-layout-section__file-list-item.sc-mrd-layout-section{min-width:0;max-width:100%}.mrd-layout-section__boolean--true.sc-mrd-layout-section{color:var(--mrd-color-success);font-weight:var(--mrd-font-weight-semibold)}.mrd-layout-section__boolean--false.sc-mrd-layout-section{color:var(--mrd-color-neutral-400)}.mrd-layout-section__badge.sc-mrd-layout-section{display:inline-block;font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);padding:2px var(--mrd-space-3);border-radius:10px}.mrd-layout-section__badge-dot-row.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-2)}.mrd-layout-section__badge-dot.sc-mrd-layout-section{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0}.mrd-layout-section__secret-masked.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-label-color);letter-spacing:0.15em;user-select:none;pointer-events:none}.mrd-layout-section__pre.sc-mrd-layout-section{font-family:var(--mrd-font-family-mono);font-size:var(--mrd-font-size-xs);background-color:var(--mrd-color-neutral-50);border:1px solid var(--mrd-color-neutral-200);border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);margin:0;max-height:calc(15 * var(--mrd-font-size-xs));overflow-x:auto;overflow-y:auto;white-space:pre-wrap;word-break:break-word}.mrd-layout-section__group.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__group-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-500);margin:0 0 var(--mrd-space-2) 0;padding-bottom:0;letter-spacing:0.01em}.mrd-layout-section__related-view.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__related-view-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-lg);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-800);margin:0 0 var(--mrd-space-3) 0}.mrd-layout-section__search.sc-mrd-layout-section{position:relative;margin:var(--mrd-space-2) 0}.mrd-layout-section__search-wrap.sc-mrd-layout-section{position:relative}.mrd-layout-section__search-icon.sc-mrd-layout-section{position:absolute;left:var(--mrd-input-padding-x);top:50%;transform:translateY(-50%);width:1rem;height:1rem;color:var(--mrd-color-neutral-400);pointer-events:none}.mrd-layout-section__search-input.sc-mrd-layout-section{display:block;width:100%;height:var(--mrd-input-height);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));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);outline:none;appearance:none;box-sizing:border-box}.mrd-layout-section__search-input.sc-mrd-layout-section:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-layout-section__search-input.sc-mrd-layout-section::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-layout-section__search-results.sc-mrd-layout-section{position:absolute;top:100%;left:0;right:0;background-color:var(--mrd-color-white);border:1px solid var(--mrd-color-neutral-300);border-top:none;border-radius:0 0 var(--mrd-border-radius) var(--mrd-border-radius);box-shadow:var(--mrd-shadow-sm);z-index:100;max-height:300px;overflow-y:auto;list-style:none;margin:0;padding:var(--mrd-space-1) 0}.mrd-layout-section__search-result.sc-mrd-layout-section{margin:0;padding:0}.mrd-layout-section__search-result-btn.sc-mrd-layout-section{display:flex;flex-direction:column;width:100%;padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:none;text-align:left;cursor:pointer;font-family:var(--mrd-font-family)}.mrd-layout-section__search-result-btn.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light)}.mrd-layout-section__search-result-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800)}.mrd-layout-section__search-result-desc.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);margin-top:var(--mrd-space-1)}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section{background:none;border:none;padding:0;cursor:pointer;display:inline-block;border-radius:var(--mrd-border-radius);overflow:hidden;line-height:0}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section:hover .mrd-layout-section__image-thumb.sc-mrd-layout-section{opacity:0.85}.mrd-layout-section__image-thumb.sc-mrd-layout-section{display:block;max-width:160px;max-height:100px;border-radius:var(--mrd-border-radius);object-fit:cover;transition:opacity 0.15s}.mrd-layout-section__modal-backdrop.sc-mrd-layout-section{position:fixed;inset:0;background:rgba(0, 0, 0, 0.6);z-index:300;display:flex;align-items:center;justify-content:center}.mrd-layout-section__modal.sc-mrd-layout-section{position:relative;background:var(--mrd-color-white);border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);max-width:min(90vw, 900px);max-height:90vh;display:flex;align-items:center;justify-content:center;box-shadow:var(--mrd-shadow-lg)}.mrd-layout-section__modal-close.sc-mrd-layout-section{position:absolute;top:var(--mrd-space-2);right:var(--mrd-space-2);background:rgba(0, 0, 0, 0.5);border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:var(--mrd-color-white);cursor:pointer;font-size:var(--mrd-font-size-sm);line-height:1;z-index:1}.mrd-layout-section__modal-close.sc-mrd-layout-section:hover{background:rgba(0, 0, 0, 0.8)}.mrd-layout-section__modal-image.sc-mrd-layout-section{display:block;max-width:100%;max-height:calc(90vh - 2rem);border-radius:var(--mrd-border-radius);object-fit:contain}`;
|
|
5339
5433
|
|
|
5340
5434
|
const MrdLayoutSection = class {
|
|
5341
5435
|
constructor(hostRef) {
|
|
@@ -5560,7 +5654,7 @@ const MrdLayoutSection = class {
|
|
|
5560
5654
|
else if (link === null || link === void 0 ? void 0 : link.name) {
|
|
5561
5655
|
valueContent = makeBtn(link.href, link.name);
|
|
5562
5656
|
}
|
|
5563
|
-
const isEmpty = !
|
|
5657
|
+
const isEmpty = !hasRelationValue(item, this.data);
|
|
5564
5658
|
if (isEmpty && !showsEmpty(item))
|
|
5565
5659
|
return null;
|
|
5566
5660
|
return (index.h("div", { class: `mrd-layout-section__field${isEmpty ? ' mrd-layout-section__field--empty' : ''}`, key: item.name }, index.h("span", { class: "mrd-layout-section__field-label" }, item.label), index.h("span", { class: "mrd-layout-section__field-value" }, isEmpty ? cellRenderer.t('value_empty', this.locale) : valueContent)));
|
|
@@ -5575,7 +5669,7 @@ const MrdLayoutSection = class {
|
|
|
5575
5669
|
return (index.h("div", { class: "mrd-layout-section__search", key: `search-${dataClass}` }, index.h("div", { class: "mrd-layout-section__search-wrap" }, index.h("svg", { class: "mrd-layout-section__search-icon", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true" }, index.h("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" })), index.h("input", { class: "mrd-layout-section__search-input", type: "text", value: query, placeholder: (_c = item.label) !== null && _c !== void 0 ? _c : '', onInput: e => this.handleSearchInput(dataClass, e.target.value) })), results.length > 0 && (index.h("ul", { class: "mrd-layout-section__search-results" }, results.map(r => (index.h("li", { key: r.id, class: "mrd-layout-section__search-result" }, index.h("button", { class: "mrd-layout-section__search-result-btn", onClick: () => this.mrdNavigate.emit({ href: r.id, label: r.label }) }, index.h("span", { class: "mrd-layout-section__search-result-label" }, r.label), r.description && index.h("span", { class: "mrd-layout-section__search-result-desc" }, r.description)))))))));
|
|
5576
5670
|
}
|
|
5577
5671
|
renderRelatedView(item) {
|
|
5578
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
5672
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
5579
5673
|
const key = viewKeyFor(item);
|
|
5580
5674
|
if (!key)
|
|
5581
5675
|
return null;
|
|
@@ -5593,7 +5687,20 @@ const MrdLayoutSection = class {
|
|
|
5593
5687
|
// fromClass (base class) rather than the route class, so polymorphic subtypes
|
|
5594
5688
|
// resolve to the same container the documents actually reference.
|
|
5595
5689
|
const containerHref = buildContainerHref(item, selfHref, parentId);
|
|
5596
|
-
|
|
5690
|
+
// A memo RELATED_VIEW isn't necessarily scoped by the container relation —
|
|
5691
|
+
// e.g. a person's dashboard can show "memos I authored" via the author
|
|
5692
|
+
// relation instead. inverseRelation names which relation on the memo points
|
|
5693
|
+
// back to this parent; only when it matches the container slot does the
|
|
5694
|
+
// parent's own href double as the memo's container.
|
|
5695
|
+
const memoContainerRelated = item.type !== clientLayout.ClientLayoutItemType.RELATED_VIEW
|
|
5696
|
+
|| item.inverseRelation === ((_l = memoArchetype === null || memoArchetype === void 0 ? void 0 : memoArchetype.slots) === null || _l === void 0 ? void 0 : _l.container);
|
|
5697
|
+
const memoContainerHref = memoContainerRelated ? containerHref : '';
|
|
5698
|
+
// Distinct from memoContainerRelated: only a genuine container-scoped
|
|
5699
|
+
// RELATED_VIEW (a company's own memo tab) makes every card's container
|
|
5700
|
+
// obvious from the page itself. A top-level VIEW or an author-scoped
|
|
5701
|
+
// RELATED_VIEW both still need the per-card container link.
|
|
5702
|
+
const memoContainerImplied = item.type === clientLayout.ClientLayoutItemType.RELATED_VIEW && memoContainerRelated;
|
|
5703
|
+
return (index.h("div", { class: "mrd-layout-section__related-view", key: `view-${key}` }, showTitle && item.label && index.h("h3", { class: "mrd-layout-section__related-view-title" }, item.label), docArchetype && this.renderDocumentContainer(item, key, parentId, docArchetype, containerHref), memoArchetype && this.renderMemoContainer(item, key, parentId, memoArchetype, memoContainerHref, memoContainerRelated, !memoContainerImplied), !docArchetype && !memoArchetype && this.renderTable(item, key, parentId)));
|
|
5597
5704
|
}
|
|
5598
5705
|
/** Document collection view: owns the view-switch + collection actions and
|
|
5599
5706
|
* swaps between the folder tree and the flat table. Events are re-emitted to
|
|
@@ -5633,10 +5740,14 @@ const MrdLayoutSection = class {
|
|
|
5633
5740
|
}
|
|
5634
5741
|
/** Memo collection view: owns the view-switch + "New memo" and swaps between
|
|
5635
5742
|
* the card list and the flat table, mirroring renderDocumentContainer(). */
|
|
5636
|
-
renderMemoContainer(item, key, parentId, archetype, containerHref) {
|
|
5743
|
+
renderMemoContainer(item, key, parentId, archetype, containerHref, containerRelated, showContainerLink) {
|
|
5637
5744
|
var _a, _b, _c, _d;
|
|
5638
5745
|
const labelsListItems = (_d = (_c = (_b = (_a = item.view) === null || _a === void 0 ? void 0 : _a.values) === null || _b === void 0 ? void 0 : _b.find(v => { var _a; return v.name === ((_a = archetype.slots) === null || _a === void 0 ? void 0 : _a.labels); })) === null || _c === void 0 ? void 0 : _c.listItems) !== null && _d !== void 0 ? _d : null;
|
|
5639
|
-
return (index.h("mrd-memo-container", { "data-view": key, item: item, archetype: archetype, parentId: parentId, containerHref: containerHref, viewKey: key, locale: this.locale, readOnly: this.readOnly, me: this.me, labelsListItems: labelsListItems,
|
|
5746
|
+
return (index.h("mrd-memo-container", { "data-view": key, item: item, archetype: archetype, parentId: parentId, containerHref: containerHref, containerRelated: containerRelated, showContainerLink: showContainerLink, viewKey: key, locale: this.locale, readOnly: this.readOnly, me: this.me, labelsListItems: labelsListItems, onMrdNavigate: (e) => {
|
|
5747
|
+
var _a;
|
|
5748
|
+
e.stopPropagation();
|
|
5749
|
+
this.mrdNavigate.emit(Object.assign(Object.assign({}, e.detail), { navigateBehaviour: (_a = item.navigateBehaviour) !== null && _a !== void 0 ? _a : clientLayout.ClientLayoutNavigateBehaviour.PAGE }));
|
|
5750
|
+
}, onMrdLoadPage: (e) => {
|
|
5640
5751
|
e.stopPropagation();
|
|
5641
5752
|
this.mrdLoadViewPage.emit(Object.assign({ name: key }, e.detail));
|
|
5642
5753
|
}, onMrdLoadAggregations: (e) => {
|
|
@@ -5687,7 +5798,26 @@ const MrdLayoutSection = class {
|
|
|
5687
5798
|
});
|
|
5688
5799
|
} }));
|
|
5689
5800
|
}
|
|
5690
|
-
|
|
5801
|
+
/** Whether every FIELD/RELATION item following a HEADER (up to the next
|
|
5802
|
+
* HEADER/SECTION/GROUP or the end of `siblings`) would itself render
|
|
5803
|
+
* nothing — i.e. the HEADER would introduce an empty block. Other item
|
|
5804
|
+
* types (VIEW, NAVIGATE, TEXT, ...) always count as visible. */
|
|
5805
|
+
isHeaderBlockEmpty(siblings, index) {
|
|
5806
|
+
const ctx = this.fieldCtx();
|
|
5807
|
+
for (let i = index + 1; i < siblings.length; i++) {
|
|
5808
|
+
const sib = siblings[i];
|
|
5809
|
+
if (sib.type === clientLayout.ClientLayoutItemType.HEADER || sib.type === clientLayout.ClientLayoutItemType.SECTION || sib.type === clientLayout.ClientLayoutItemType.GROUP)
|
|
5810
|
+
break;
|
|
5811
|
+
if (sib.type === clientLayout.ClientLayoutItemType.FIELD && isFieldVisible(ctx, sib))
|
|
5812
|
+
return false;
|
|
5813
|
+
if (sib.type === clientLayout.ClientLayoutItemType.RELATION && (hasRelationValue(sib, this.data) || showsEmpty(sib)))
|
|
5814
|
+
return false;
|
|
5815
|
+
if (sib.type !== clientLayout.ClientLayoutItemType.FIELD && sib.type !== clientLayout.ClientLayoutItemType.RELATION)
|
|
5816
|
+
return false;
|
|
5817
|
+
}
|
|
5818
|
+
return true;
|
|
5819
|
+
}
|
|
5820
|
+
renderItem(item, siblings = this.items, index$1 = -1) {
|
|
5691
5821
|
var _a, _b;
|
|
5692
5822
|
switch (item.type) {
|
|
5693
5823
|
case clientLayout.ClientLayoutItemType.FIELD:
|
|
@@ -5695,6 +5825,8 @@ const MrdLayoutSection = class {
|
|
|
5695
5825
|
case clientLayout.ClientLayoutItemType.RELATION:
|
|
5696
5826
|
return this.renderRelation(item);
|
|
5697
5827
|
case clientLayout.ClientLayoutItemType.HEADER:
|
|
5828
|
+
if (index$1 >= 0 && this.isHeaderBlockEmpty(siblings, index$1))
|
|
5829
|
+
return null;
|
|
5698
5830
|
return (index.h("h2", { class: "mrd-layout-section__header", key: `header-${item.label}` }, item.label));
|
|
5699
5831
|
case clientLayout.ClientLayoutItemType.TEXT:
|
|
5700
5832
|
return index.h("div", { class: "mrd-layout-section__text", key: `text-${item.label}`, innerHTML: (_a = item.label) !== null && _a !== void 0 ? _a : '' });
|
|
@@ -5704,7 +5836,7 @@ const MrdLayoutSection = class {
|
|
|
5704
5836
|
return this.renderSearch(item);
|
|
5705
5837
|
case clientLayout.ClientLayoutItemType.SECTION:
|
|
5706
5838
|
case clientLayout.ClientLayoutItemType.GROUP:
|
|
5707
|
-
return (index.h("div", { class: "mrd-layout-section__group", key: `group-${item.label}` }, item.label && index.h("h3", { class: "mrd-layout-section__group-title" }, item.label), ((_b = item.items) !== null && _b !== void 0 ? _b : []).map(child => this.renderItem(child))));
|
|
5839
|
+
return (index.h("div", { class: "mrd-layout-section__group", key: `group-${item.label}` }, item.label && index.h("h3", { class: "mrd-layout-section__group-title" }, item.label), ((_b = item.items) !== null && _b !== void 0 ? _b : []).map((child, i) => { var _a; return this.renderItem(child, (_a = item.items) !== null && _a !== void 0 ? _a : [], i); })));
|
|
5708
5840
|
case clientLayout.ClientLayoutItemType.RELATED_VIEW:
|
|
5709
5841
|
case clientLayout.ClientLayoutItemType.VIEW:
|
|
5710
5842
|
return this.renderRelatedView(item);
|
|
@@ -5776,7 +5908,7 @@ const MrdLayoutSection = class {
|
|
|
5776
5908
|
const emailArchetype = !docArchetype && !invoiceArchetype ? clientLayout.resolveArchetype(this.archetypes, clientLayout.ARCHETYPE_EMAIL) : undefined;
|
|
5777
5909
|
const memoArchetype = !docArchetype && !invoiceArchetype && !emailArchetype ? clientLayout.resolveArchetype(this.archetypes, clientLayout.ARCHETYPE_MEMO) : undefined;
|
|
5778
5910
|
const anyArchetype = docArchetype || invoiceArchetype || emailArchetype || memoArchetype;
|
|
5779
|
-
return (index.h(index.Host, { key: '
|
|
5911
|
+
return (index.h(index.Host, { key: '057d145da172e68f84b6ff34f71ae649d6d6bf92' }, index.h("div", { key: 'e03a1761dc6bcd9ff54b264fee56130270bddc2f', class: "mrd-layout-section" }, docArchetype && this.renderDocumentObject(docArchetype), invoiceArchetype && this.renderInvoiceObject(invoiceArchetype), emailArchetype && this.renderEmailObject(emailArchetype), memoArchetype && this.renderMemoObject(memoArchetype), !anyArchetype && this.items.map((item, i) => this.renderItem(item, this.items, i))), this.renderImageModal()));
|
|
5780
5912
|
}
|
|
5781
5913
|
get el() { return index.getElement(this); }
|
|
5782
5914
|
static get watchers() { return {
|
|
@@ -5907,6 +6039,7 @@ const MrdMemoContainer = class {
|
|
|
5907
6039
|
index.registerInstance(this, hostRef);
|
|
5908
6040
|
this.mrdLoadPage = index.createEvent(this, "mrdLoadPage");
|
|
5909
6041
|
this.mrdLoadAggregations = index.createEvent(this, "mrdLoadAggregations");
|
|
6042
|
+
this.mrdNavigate = index.createEvent(this, "mrdNavigate");
|
|
5910
6043
|
this.mrdAction = index.createEvent(this, "mrdAction");
|
|
5911
6044
|
this.mrdCreateObject = index.createEvent(this, "mrdCreateObject");
|
|
5912
6045
|
this.mrdUpdateObject = index.createEvent(this, "mrdUpdateObject");
|
|
@@ -5918,6 +6051,20 @@ const MrdMemoContainer = class {
|
|
|
5918
6051
|
/** Canonical parent href — set when this is a RELATED_VIEW embedded under a
|
|
5919
6052
|
* parent record, which already gives a new memo something to attach to. */
|
|
5920
6053
|
this.containerHref = '';
|
|
6054
|
+
/** False when this RELATED_VIEW's parent is related via a relation other than
|
|
6055
|
+
* the archetype's container slot (e.g. a person's "memos I authored" list,
|
|
6056
|
+
* related via `author`) — mrd-layout-section resolves this from the item's
|
|
6057
|
+
* `inverseRelation`. In that case the parent is not a valid container for a
|
|
6058
|
+
* new memo, and — unlike a top-level VIEW with no context at all — falling
|
|
6059
|
+
* back to `me` would be wrong too (creating a memo "on myself" from someone
|
|
6060
|
+
* else's authored-memos list makes no sense), so "New memo" is hidden outright. */
|
|
6061
|
+
this.containerRelated = true;
|
|
6062
|
+
/** True unless this is a container-scoped RELATED_VIEW (a company's own memo
|
|
6063
|
+
* tab, say) where every card's container is obviously the page you're
|
|
6064
|
+
* already on — forwarded to mrd-memo-list to show/hide its per-card
|
|
6065
|
+
* container link. A top-level VIEW or an author-scoped RELATED_VIEW both
|
|
6066
|
+
* still need it, since the container isn't implied by the page context. */
|
|
6067
|
+
this.showContainerLink = true;
|
|
5921
6068
|
/** Lookup key used for the embedded `data-view` attribute. */
|
|
5922
6069
|
this.viewKey = '';
|
|
5923
6070
|
this.locale = navigator.language;
|
|
@@ -6149,8 +6296,11 @@ const MrdMemoContainer = class {
|
|
|
6149
6296
|
return !!((_b = (_a = this.archetype) === null || _a === void 0 ? void 0 : _a.slots) === null || _b === void 0 ? void 0 : _b.important);
|
|
6150
6297
|
}
|
|
6151
6298
|
/** A parent record already gives a new memo somewhere to attach to (RELATED_VIEW);
|
|
6152
|
-
* otherwise fall back to the account's own linked person (top-level VIEW)
|
|
6299
|
+
* otherwise fall back to the account's own linked person (top-level VIEW) — but
|
|
6300
|
+
* only when containerRelated allows it (see its doc comment). */
|
|
6153
6301
|
get effectiveContainerHref() {
|
|
6302
|
+
if (!this.containerRelated)
|
|
6303
|
+
return '';
|
|
6154
6304
|
return this.containerHref || this.meHref();
|
|
6155
6305
|
}
|
|
6156
6306
|
/** The author slot is always filled from `me` (there is no author picker in
|
|
@@ -6196,12 +6346,15 @@ const MrdMemoContainer = class {
|
|
|
6196
6346
|
return (index.h("div", { class: "mrd-memo-container__modal-backdrop", onClick: this.closeDialog }, index.h("div", { class: "mrd-memo-container__modal", onClick: (e) => e.stopPropagation() }, this.deleteConfirmOpen ? this.renderDeleteConfirm() : this.renderForm())));
|
|
6197
6347
|
}
|
|
6198
6348
|
renderCards() {
|
|
6199
|
-
return (index.h("mrd-memo-list", { "data-view": this.viewKey, ref: el => (this.listEl = el), item: this.item, archetype: this.archetype, parentId: this.parentId, locale: this.locale, readOnly: this.readOnly, labelsListItems: this.labelsListItems, onMrdLoadPage: (e) => {
|
|
6349
|
+
return (index.h("mrd-memo-list", { "data-view": this.viewKey, ref: el => (this.listEl = el), item: this.item, archetype: this.archetype, parentId: this.parentId, locale: this.locale, readOnly: this.readOnly, labelsListItems: this.labelsListItems, showContainerLink: this.showContainerLink, onMrdLoadPage: (e) => {
|
|
6200
6350
|
e.stopPropagation();
|
|
6201
6351
|
this.mrdLoadPage.emit(e.detail);
|
|
6202
6352
|
}, onMrdEdit: (e) => {
|
|
6203
6353
|
e.stopPropagation();
|
|
6204
6354
|
this.openEdit(e.detail.row);
|
|
6355
|
+
}, onMrdNavigate: (e) => {
|
|
6356
|
+
e.stopPropagation();
|
|
6357
|
+
this.mrdNavigate.emit(e.detail);
|
|
6205
6358
|
} }));
|
|
6206
6359
|
}
|
|
6207
6360
|
renderTable() {
|
|
@@ -6220,7 +6373,7 @@ const MrdMemoContainer = class {
|
|
|
6220
6373
|
} }));
|
|
6221
6374
|
}
|
|
6222
6375
|
render() {
|
|
6223
|
-
return (index.h(index.Host, { key: '
|
|
6376
|
+
return (index.h(index.Host, { key: 'a000221db6b1ba12351f38619f319b277b791f68' }, this.renderToolbar(), index.h("div", { key: '712951c8e391ed693bf6e4263c4f1076172b0451', class: "mrd-memo-container__body" }, this.mode === 'cards' ? this.renderCards() : this.renderTable()), this.renderDialog()));
|
|
6224
6377
|
}
|
|
6225
6378
|
static get watchers() { return {
|
|
6226
6379
|
"dialogOpen": [{
|
|
@@ -6414,7 +6567,7 @@ function datetimeFilterToDisplay(existing) {
|
|
|
6414
6567
|
return display;
|
|
6415
6568
|
}
|
|
6416
6569
|
|
|
6417
|
-
const mrdMemoListCss = () => `@charset "UTF-8";.sc-mrd-memo-list-h{display:block}.mrd-memo-list.sc-mrd-memo-list{display:flex;flex-direction:column;gap:var(--mrd-space-3)}.mrd-memo-list__card.sc-mrd-memo-list{display:flex;flex-direction:column;gap:var(--mrd-space-2);width:100%;padding:var(--mrd-space-4);background:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);font-family:var(--mrd-font-family);text-align:left;cursor:pointer;transition:border-color var(--mrd-transition), box-shadow var(--mrd-transition)}.mrd-memo-list__card.sc-mrd-memo-list:hover{border-color:var(--mrd-color-primary);box-shadow:var(--mrd-shadow-sm, 0 1px 2px rgba(0, 0, 0, 0.06))}.mrd-memo-list__card.sc-mrd-memo-list:focus-visible{outline:none;box-shadow:var(--mrd-shadow-focus)}.mrd-memo-list__card--readonly.sc-mrd-memo-list{cursor:default}.mrd-memo-list__card--readonly.sc-mrd-memo-list:hover{border-color:var(--mrd-border-color);box-shadow:none}.mrd-memo-list__card-header.sc-mrd-memo-list{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--mrd-space-2)}.mrd-memo-list__card-title.sc-mrd-memo-list{font-size:var(--mrd-font-size-base);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-900)}.mrd-memo-list__card-important.sc-mrd-memo-list{display:inline-flex;flex-shrink:0;color:var(--mrd-color-warning)}.mrd-memo-list__card-important.sc-mrd-memo-list svg.sc-mrd-memo-list{width:1rem;height:1rem}.mrd-memo-list__card-body-wrap.sc-mrd-memo-list{display:flex;flex-direction:column;align-items:flex-start;gap:var(--mrd-space-1)}.mrd-memo-list__card-body.sc-mrd-memo-list{margin:0;font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-600);line-height:var(--mrd-line-height-relaxed);word-break:break-word}.mrd-memo-list__card-body.sc-mrd-memo-list p.sc-mrd-memo-list,.mrd-memo-list__card-body.sc-mrd-memo-list ul.sc-mrd-memo-list,.mrd-memo-list__card-body.sc-mrd-memo-list ol.sc-mrd-memo-list{margin:0 0 var(--mrd-space-1) 0}.mrd-memo-list__card-body--clamped.sc-mrd-memo-list{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mrd-memo-list__card-toggle.sc-mrd-memo-list{background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-primary);cursor:pointer}.mrd-memo-list__card-toggle.sc-mrd-memo-list:hover{text-decoration:underline}.mrd-memo-list__labels.sc-mrd-memo-list{display:flex;flex-wrap:wrap;gap:var(--mrd-space-2)}.mrd-memo-list__badge.sc-mrd-memo-list{display:inline-flex;align-items:center;height:1.25rem;padding:0 var(--mrd-space-2);border-radius:var(--mrd-border-radius-full, 999px);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium)}.mrd-memo-list__badge--plain.sc-mrd-memo-list{background:var(--mrd-color-neutral-100);color:var(--mrd-color-neutral-600)}.mrd-memo-list__card-meta.sc-mrd-memo-list{display:flex;align-items:center;gap:var(--mrd-space-2);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-400)}.mrd-memo-list__card-author.sc-mrd-memo-list+.mrd-memo-list__card-date.sc-mrd-memo-list::before{content:"·";margin-right:var(--mrd-space-2)}.mrd-memo-list__empty.sc-mrd-memo-list{padding:var(--mrd-space-6);text-align:center;color:var(--mrd-color-neutral-400);font-size:var(--mrd-font-size-sm)}.mrd-memo-list__load-more.sc-mrd-memo-list{align-self:center;height:var(--mrd-input-height);padding:0 var(--mrd-space-6);background:transparent;color:var(--mrd-color-neutral-600);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);cursor:pointer;transition:background-color var(--mrd-transition)}.mrd-memo-list__load-more.sc-mrd-memo-list:hover:not(:disabled){background-color:var(--mrd-color-neutral-100)}.mrd-memo-list__load-more.sc-mrd-memo-list:disabled{opacity:0.6;cursor:default}`;
|
|
6570
|
+
const mrdMemoListCss = () => `@charset "UTF-8";.sc-mrd-memo-list-h{display:block}.mrd-memo-list.sc-mrd-memo-list{display:flex;flex-direction:column;gap:var(--mrd-space-3)}.mrd-memo-list__card.sc-mrd-memo-list{display:flex;flex-direction:column;gap:var(--mrd-space-2);width:100%;padding:var(--mrd-space-4);background:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);font-family:var(--mrd-font-family);text-align:left;cursor:pointer;transition:border-color var(--mrd-transition), box-shadow var(--mrd-transition)}.mrd-memo-list__card.sc-mrd-memo-list:hover{border-color:var(--mrd-color-primary);box-shadow:var(--mrd-shadow-sm, 0 1px 2px rgba(0, 0, 0, 0.06))}.mrd-memo-list__card.sc-mrd-memo-list:focus-visible{outline:none;box-shadow:var(--mrd-shadow-focus)}.mrd-memo-list__card--readonly.sc-mrd-memo-list{cursor:default}.mrd-memo-list__card--readonly.sc-mrd-memo-list:hover{border-color:var(--mrd-border-color);box-shadow:none}.mrd-memo-list__card-header.sc-mrd-memo-list{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--mrd-space-2)}.mrd-memo-list__card-title.sc-mrd-memo-list{font-size:var(--mrd-font-size-base);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-900)}.mrd-memo-list__card-important.sc-mrd-memo-list{display:inline-flex;flex-shrink:0;color:var(--mrd-color-warning)}.mrd-memo-list__card-important.sc-mrd-memo-list svg.sc-mrd-memo-list{width:1rem;height:1rem}.mrd-memo-list__card-body-wrap.sc-mrd-memo-list{display:flex;flex-direction:column;align-items:flex-start;gap:var(--mrd-space-1)}.mrd-memo-list__card-body.sc-mrd-memo-list{margin:0;font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-600);line-height:var(--mrd-line-height-relaxed);word-break:break-word}.mrd-memo-list__card-body.sc-mrd-memo-list p.sc-mrd-memo-list,.mrd-memo-list__card-body.sc-mrd-memo-list ul.sc-mrd-memo-list,.mrd-memo-list__card-body.sc-mrd-memo-list ol.sc-mrd-memo-list{margin:0 0 var(--mrd-space-1) 0}.mrd-memo-list__card-body--clamped.sc-mrd-memo-list{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mrd-memo-list__card-toggle.sc-mrd-memo-list{background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-primary);cursor:pointer}.mrd-memo-list__card-toggle.sc-mrd-memo-list:hover{text-decoration:underline}.mrd-memo-list__labels.sc-mrd-memo-list{display:flex;flex-wrap:wrap;gap:var(--mrd-space-2)}.mrd-memo-list__badge.sc-mrd-memo-list{display:inline-flex;align-items:center;height:1.25rem;padding:0 var(--mrd-space-2);border-radius:var(--mrd-border-radius-full, 999px);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium)}.mrd-memo-list__badge--plain.sc-mrd-memo-list{background:var(--mrd-color-neutral-100);color:var(--mrd-color-neutral-600)}.mrd-memo-list__card-meta.sc-mrd-memo-list{display:flex;align-items:center;gap:var(--mrd-space-2);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-400)}.mrd-memo-list__card-author.sc-mrd-memo-list+.mrd-memo-list__card-date.sc-mrd-memo-list::before{content:"·";margin-right:var(--mrd-space-2)}.mrd-memo-list__card-container.sc-mrd-memo-list{align-self:flex-start;background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-primary);cursor:pointer}.mrd-memo-list__card-container.sc-mrd-memo-list:hover{text-decoration:underline}.mrd-memo-list__empty.sc-mrd-memo-list{padding:var(--mrd-space-6);text-align:center;color:var(--mrd-color-neutral-400);font-size:var(--mrd-font-size-sm)}.mrd-memo-list__load-more.sc-mrd-memo-list{align-self:center;height:var(--mrd-input-height);padding:0 var(--mrd-space-6);background:transparent;color:var(--mrd-color-neutral-600);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);cursor:pointer;transition:background-color var(--mrd-transition)}.mrd-memo-list__load-more.sc-mrd-memo-list:hover:not(:disabled){background-color:var(--mrd-color-neutral-100)}.mrd-memo-list__load-more.sc-mrd-memo-list:disabled{opacity:0.6;cursor:default}`;
|
|
6418
6571
|
|
|
6419
6572
|
/** Plain-text length above which a card's body is clamped with a show-more toggle. */
|
|
6420
6573
|
const BODY_PREVIEW_THRESHOLD = 220;
|
|
@@ -6423,6 +6576,7 @@ const MrdMemoList = class {
|
|
|
6423
6576
|
index.registerInstance(this, hostRef);
|
|
6424
6577
|
this.mrdLoadPage = index.createEvent(this, "mrdLoadPage");
|
|
6425
6578
|
this.mrdEdit = index.createEvent(this, "mrdEdit");
|
|
6579
|
+
this.mrdNavigate = index.createEvent(this, "mrdNavigate");
|
|
6426
6580
|
/** The VIEW or RELATED_VIEW layout item (dataClass, fromClass, view config). */
|
|
6427
6581
|
this.item = null;
|
|
6428
6582
|
/** Parent record id — required for RELATED_VIEW path building. */
|
|
@@ -6436,6 +6590,11 @@ const MrdMemoList = class {
|
|
|
6436
6590
|
/** listItems of the FIELD bound to the `labels` slot, resolved by mrd-layout-section
|
|
6437
6591
|
* from its own items array, same reason mrd-memo-view needs it. */
|
|
6438
6592
|
this.labelsListItems = null;
|
|
6593
|
+
/** False when the list is already scoped to its own container (a company's own
|
|
6594
|
+
* memo tab) — showing "belongs to: <this same company>" on every card there
|
|
6595
|
+
* would be redundant. True everywhere else (top-level VIEW, or a RELATED_VIEW
|
|
6596
|
+
* scoped by a different relation, e.g. a person's authored-memos list). */
|
|
6597
|
+
this.showContainerLink = true;
|
|
6439
6598
|
this.rows = [];
|
|
6440
6599
|
this.loading = false;
|
|
6441
6600
|
this.exhausted = false;
|
|
@@ -6537,6 +6696,14 @@ const MrdMemoList = class {
|
|
|
6537
6696
|
return 0;
|
|
6538
6697
|
return String(raw).replace(/<[^>]*>/g, ' ').replace(/\s+/g, ' ').trim().length;
|
|
6539
6698
|
}
|
|
6699
|
+
renderContainer(row) {
|
|
6700
|
+
if (!this.showContainerLink)
|
|
6701
|
+
return null;
|
|
6702
|
+
const link = this.slotLink(row, 'container');
|
|
6703
|
+
if (!(link === null || link === void 0 ? void 0 : link.href) || !link.name)
|
|
6704
|
+
return null;
|
|
6705
|
+
return (index.h("button", { type: "button", class: "mrd-memo-list__card-container", onClick: e => { e.stopPropagation(); this.mrdNavigate.emit({ href: link.href, label: link.name }); } }, link.name));
|
|
6706
|
+
}
|
|
6540
6707
|
renderLabels(row) {
|
|
6541
6708
|
const raw = this.slotValue(row, 'labels');
|
|
6542
6709
|
const keys = Array.isArray(raw) ? raw.map(String) : (raw != null && raw !== '' ? [String(raw)] : []);
|
|
@@ -6581,10 +6748,10 @@ const MrdMemoList = class {
|
|
|
6581
6748
|
e.preventDefault();
|
|
6582
6749
|
this.mrdEdit.emit({ row });
|
|
6583
6750
|
}
|
|
6584
|
-
} }, index.h("div", { class: "mrd-memo-list__card-header" }, title && index.h("span", { class: "mrd-memo-list__card-title" }, title), important && (index.h("span", { class: "mrd-memo-list__card-important", title: cellRenderer.t('memo_important', this.locale) }, index.h("svg", { viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true" }, index.h("path", { d: "M12 2l2.9 6.26L22 9.27l-5 4.87L18.18 21 12 17.27 5.82 21 7 14.14l-5-4.87 7.1-1.01z" }))))), this.renderBody(row, href), this.renderLabels(row), index.h("div", { class: "mrd-memo-list__card-meta" }, (author === null || author === void 0 ? void 0 : author.name) && index.h("span", { class: "mrd-memo-list__card-author" }, author.name), dateRaw != null && dateRaw !== '' && (index.h("span", { class: "mrd-memo-list__card-date" }, cellRenderer.formatDateTime(dateRaw, this.locale))))));
|
|
6751
|
+
} }, index.h("div", { class: "mrd-memo-list__card-header" }, title && index.h("span", { class: "mrd-memo-list__card-title" }, title), important && (index.h("span", { class: "mrd-memo-list__card-important", title: cellRenderer.t('memo_important', this.locale) }, index.h("svg", { viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true" }, index.h("path", { d: "M12 2l2.9 6.26L22 9.27l-5 4.87L18.18 21 12 17.27 5.82 21 7 14.14l-5-4.87 7.1-1.01z" }))))), this.renderBody(row, href), this.renderLabels(row), index.h("div", { class: "mrd-memo-list__card-meta" }, (author === null || author === void 0 ? void 0 : author.name) && index.h("span", { class: "mrd-memo-list__card-author" }, author.name), dateRaw != null && dateRaw !== '' && (index.h("span", { class: "mrd-memo-list__card-date" }, cellRenderer.formatDateTime(dateRaw, this.locale)))), this.renderContainer(row)));
|
|
6585
6752
|
}
|
|
6586
6753
|
render() {
|
|
6587
|
-
return (index.h(index.Host, { key: '
|
|
6754
|
+
return (index.h(index.Host, { key: '18294fc609b741d38f9933d3ae01d20d6dda5ec5' }, index.h("div", { key: 'ac6c1adc6575ae1edb2cd507c8ac31b1f28ea35c', class: "mrd-memo-list" }, this.rows.map((row, i) => this.renderCard(row, i)), this.started && !this.loading && this.rows.length === 0 && (index.h("div", { key: '271281b2e087f8fd55dc51b32b1fe4cce387cdcb', class: "mrd-memo-list__empty" }, cellRenderer.t('no_results', this.locale))), !this.exhausted && this.rows.length > 0 && (index.h("button", { key: '24861c35323d759d69bfd4f358657fe201ca7727', type: "button", class: "mrd-memo-list__load-more", disabled: this.loading, onClick: this.loadMore }, cellRenderer.t('load_more', this.locale))))));
|
|
6588
6755
|
}
|
|
6589
6756
|
};
|
|
6590
6757
|
MrdMemoList.style = mrdMemoListCss();
|