@siliconst/metaui 1.4.9 → 1.4.10
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/package.json +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +10 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +11 -0
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +3 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +10 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +10 -0
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js +6 -6
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +6 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +6 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +5 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +5 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +6 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +6 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +39 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts +4 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +40 -2
|
@@ -43,21 +43,59 @@ export class TextAreaPlugin extends BasePlugin {
|
|
|
43
43
|
value: `{${modelName}>${bindingPath}}`,
|
|
44
44
|
maxLength: fieldMetadata.maxLength || 0,
|
|
45
45
|
required: !!fieldMetadata.required,
|
|
46
|
-
rows:
|
|
46
|
+
rows: 3, // Start with at least 3 lines
|
|
47
|
+
growing: false, // We manage height manually to maintain the +2 lines requirement
|
|
47
48
|
change: (oEvent: sap.ui.base.Event) => {
|
|
48
|
-
|
|
49
|
+
this.updateHeight(oEvent.getSource() as TextArea);
|
|
49
50
|
const result = this.validate();
|
|
50
51
|
if (this.onChange) {
|
|
51
52
|
this.onChange(result.isValid, this.fieldKey);
|
|
52
53
|
}
|
|
54
|
+
},
|
|
55
|
+
liveChange: (oEvent: sap.ui.base.Event) => {
|
|
56
|
+
this.updateHeight(oEvent.getSource() as TextArea);
|
|
53
57
|
}
|
|
54
58
|
});
|
|
55
59
|
|
|
60
|
+
// Clean architecture: Wait for the model context, then calculate initial height
|
|
61
|
+
(this.control as TextArea).attachEventOnce("modelContextChange", () => {
|
|
62
|
+
const oBinding = (this.control as TextArea).getBinding("value");
|
|
63
|
+
|
|
64
|
+
const initLogic = () => {
|
|
65
|
+
if (this.control) {
|
|
66
|
+
this.updateHeight(this.control as TextArea);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
if (oBinding) {
|
|
71
|
+
oBinding.attachChange(initLogic);
|
|
72
|
+
}
|
|
73
|
+
// Execute immediately in case the model is synchronous (JSONModel)
|
|
74
|
+
initLogic();
|
|
75
|
+
});
|
|
76
|
+
|
|
56
77
|
this.applyCommonDirectives(this.control, fieldMetadata, modelName);
|
|
57
78
|
|
|
58
79
|
return this.control as Control;
|
|
59
80
|
}
|
|
60
81
|
|
|
82
|
+
/**
|
|
83
|
+
* Dynamically sets the rows to the content length + 2
|
|
84
|
+
*/
|
|
85
|
+
private updateHeight(oTextArea: TextArea): void {
|
|
86
|
+
const val = oTextArea.getValue() || "";
|
|
87
|
+
// Count actual newlines in the string
|
|
88
|
+
const numLines = val.split(/\r\n|\r|\n/).length;
|
|
89
|
+
// Also estimate word wrapping if they type a really long single line without pressing enter
|
|
90
|
+
// A standard character width approximation, assuming ~80 chars per line for full width
|
|
91
|
+
const wrappedLines = Math.ceil(val.length / 80);
|
|
92
|
+
|
|
93
|
+
const totalLines = Math.max(numLines, wrappedLines);
|
|
94
|
+
|
|
95
|
+
// Ensure there is always 2 lines of extra breathing room
|
|
96
|
+
oTextArea.setRows(Math.max(3, totalLines + 2));
|
|
97
|
+
}
|
|
98
|
+
|
|
61
99
|
/**
|
|
62
100
|
* Retrieves the current text string.
|
|
63
101
|
* @returns {unknown} The text string.
|