@siliconst/metaui 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/README.md +134 -123
  2. package/package.json +22 -34
  3. package/src/nz/co/siliconst/ui5/metaui/.library +7 -7
  4. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js +300 -0
  5. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js.map +1 -0
  6. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts +130 -0
  7. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts.map +1 -0
  8. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js +2 -0
  9. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js.map +1 -0
  10. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.ts +292 -162
  11. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js +52 -0
  12. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +1 -0
  13. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +29 -0
  14. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +1 -0
  15. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js +2 -0
  16. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +1 -0
  17. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +49 -40
  18. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +82 -0
  19. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -0
  20. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +17 -0
  21. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -0
  22. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +2 -0
  23. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -0
  24. package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +82 -56
  25. package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js +66 -0
  26. package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js.map +1 -0
  27. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts +40 -0
  28. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts.map +1 -0
  29. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js +2 -0
  30. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js.map +1 -0
  31. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.ts +60 -45
  32. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +73 -0
  33. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -0
  34. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +39 -0
  35. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -0
  36. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +2 -0
  37. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -0
  38. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +71 -56
  39. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +146 -0
  40. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -0
  41. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +25 -0
  42. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -0
  43. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +2 -0
  44. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -0
  45. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +157 -31
  46. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +56 -0
  47. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -0
  48. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts +37 -0
  49. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -0
  50. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js +2 -0
  51. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -0
  52. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +56 -56
  53. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js +2 -0
  54. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js.map +1 -0
  55. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts +29 -0
  56. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts.map +1 -0
  57. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.js +2 -0
  58. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.js.map +1 -0
  59. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.ts +29 -29
  60. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager-dbg.js +2 -0
  61. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager-dbg.js.map +1 -0
  62. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts +20 -0
  63. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts.map +1 -0
  64. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.js +2 -0
  65. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.js.map +1 -0
  66. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.ts +21 -26
  67. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js +2 -0
  68. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -0
  69. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +15 -0
  70. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -0
  71. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.js +2 -0
  72. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.js.map +1 -0
  73. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +14 -33
  74. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js +2 -0
  75. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -0
  76. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +58 -0
  77. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -0
  78. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.js +2 -0
  79. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.js.map +1 -0
  80. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +70 -70
  81. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js +24 -0
  82. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js.map +1 -0
  83. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts +15 -0
  84. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts.map +1 -0
  85. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js +2 -0
  86. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js.map +1 -0
  87. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.ts +22 -34
  88. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +99 -0
  89. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -0
  90. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts +20 -0
  91. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -0
  92. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +2 -0
  93. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -0
  94. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +97 -60
  95. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +103 -0
  96. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -0
  97. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts +16 -0
  98. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -0
  99. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +2 -0
  100. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -0
  101. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +119 -102
  102. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +44 -0
  103. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -0
  104. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +39 -0
  105. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -0
  106. package/src/nz/co/siliconst/ui5/metaui/library.d.ts +10 -0
  107. package/src/nz/co/siliconst/ui5/metaui/library.d.ts.map +1 -0
  108. package/src/nz/co/siliconst/ui5/metaui/library.js +2 -0
  109. package/src/nz/co/siliconst/ui5/metaui/library.js.map +1 -0
  110. package/src/nz/co/siliconst/ui5/metaui/library.ts +55 -43
  111. package/src/nz/co/siliconst/ui5/metaui/manifest.json +35 -0
  112. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin-dbg.js +68 -0
  113. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin-dbg.js.map +1 -0
  114. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.d.ts +15 -0
  115. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.d.ts.map +1 -0
  116. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.js +2 -0
  117. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.js.map +1 -0
  118. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.ts +71 -0
  119. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js +55 -0
  120. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js.map +1 -0
  121. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts +24 -0
  122. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts.map +1 -0
  123. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js +2 -0
  124. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js.map +1 -0
  125. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.ts +56 -58
  126. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js +42 -0
  127. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js.map +1 -0
  128. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts +18 -0
  129. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts.map +1 -0
  130. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js +2 -0
  131. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js.map +1 -0
  132. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.ts +41 -42
  133. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin-dbg.js +69 -0
  134. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin-dbg.js.map +1 -0
  135. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.d.ts +18 -0
  136. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.d.ts.map +1 -0
  137. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.js +2 -0
  138. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.js.map +1 -0
  139. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.ts +69 -63
  140. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin-dbg.js +68 -0
  141. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin-dbg.js.map +1 -0
  142. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.d.ts +18 -0
  143. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.d.ts.map +1 -0
  144. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.js +2 -0
  145. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.js.map +1 -0
  146. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.ts +68 -0
  147. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js +67 -0
  148. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js.map +1 -0
  149. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts +18 -0
  150. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts.map +1 -0
  151. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js +2 -0
  152. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js.map +1 -0
  153. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.ts +65 -65
  154. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin-dbg.js +56 -0
  155. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin-dbg.js.map +1 -0
  156. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.d.ts +18 -0
  157. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.d.ts.map +1 -0
  158. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js +2 -0
  159. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js.map +1 -0
  160. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.ts +56 -55
  161. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js +57 -0
  162. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js.map +1 -0
  163. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts +18 -0
  164. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts.map +1 -0
  165. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js +2 -0
  166. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js.map +1 -0
  167. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.ts +58 -55
  168. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin-dbg.js +43 -0
  169. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin-dbg.js.map +1 -0
  170. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.d.ts +18 -0
  171. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.d.ts.map +1 -0
  172. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.js +2 -0
  173. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.js.map +1 -0
  174. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.ts +42 -0
  175. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin-dbg.js +58 -0
  176. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin-dbg.js.map +1 -0
  177. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.d.ts +18 -0
  178. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.d.ts.map +1 -0
  179. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.js +2 -0
  180. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.js.map +1 -0
  181. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.ts +58 -0
  182. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin-dbg.js +74 -0
  183. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin-dbg.js.map +1 -0
  184. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.d.ts +18 -0
  185. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.d.ts.map +1 -0
  186. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.js +2 -0
  187. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.js.map +1 -0
  188. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.ts +71 -0
  189. package/ui5.yaml +4 -12
@@ -1,65 +1,65 @@
1
- /**
2
- * @file DropdownPlugin.ts
3
- * @description Renders a sap.m.Select utilizing the schema's valueHelp structure.
4
- */
5
-
6
- import { BasePlugin } from "./BasePlugin";
7
- import { IFieldMetadata } from "../interfaces/ISchema";
8
- import Select from "sap/m/Select";
9
- import Item from "sap/ui/core/Item";
10
- import Control from "sap/ui/core/Control";
11
-
12
- /**
13
- * Handles rendering logic for dropdown inputs.
14
- */
15
- export class DropdownPlugin extends BasePlugin {
16
- public render(fieldMetadata: IFieldMetadata, bindingPath: string): Control {
17
- this.metadata = fieldMetadata;
18
-
19
- const select = new Select({
20
- selectedKey: `{meta>${bindingPath}}`,
21
- enabled: !fieldMetadata.isReadOnly,
22
- change: (oEvent: any) => {
23
- const item = oEvent.getParameter("selectedItem");
24
- const val = item ? item.getKey() : "";
25
- this.publishChange(val);
26
- this.validate();
27
- }
28
- });
29
-
30
- if (fieldMetadata.valueHelp && Array.isArray(fieldMetadata.valueHelp)) {
31
- if (!fieldMetadata.isRequired) {
32
- select.addItem(new Item({ key: "", text: "--- Select ---" }));
33
- }
34
-
35
- fieldMetadata.valueHelp.forEach(vh => {
36
- select.addItem(new Item({ key: vh.key, text: vh.text }));
37
- });
38
- }
39
-
40
- this.control = select;
41
- return this.control;
42
- }
43
-
44
- public validate(): boolean {
45
- if (!this.control || !this.metadata) return true;
46
- const select = this.control as Select;
47
- const val = select.getSelectedKey();
48
-
49
- if (this.metadata.isRequired && (!val || val.trim() === "")) {
50
- select.setValueState("Error" as any);
51
- select.setValueStateText("Selection is required.");
52
- return false;
53
- }
54
-
55
- select.setValueState("None" as any);
56
- return true;
57
- }
58
-
59
- protected applyState(): void {
60
- if (this.control && this.metadata) {
61
- const select = this.control as Select;
62
- select.setEnabled(!this.metadata.isReadOnly);
63
- }
64
- }
65
- }
1
+ /**
2
+ * @file DropdownPlugin.ts
3
+ * @description Renders a sap.m.Select utilizing the schema's valueHelp structure.
4
+ */
5
+
6
+ import { BasePlugin } from "./BasePlugin";
7
+ import { IPropertyMetadata } from "../interfaces/ISchema";
8
+ import Select from "sap/m/Select";
9
+ import Item from "sap/ui/core/Item";
10
+ import Control from "sap/ui/core/Control";
11
+
12
+ /**
13
+ * Handles rendering logic for dropdown inputs.
14
+ */
15
+ export class DropdownPlugin extends BasePlugin {
16
+ public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta"): Control {
17
+ this.metadata = fieldMetadata;
18
+
19
+ const select = new Select({
20
+ selectedKey: `{${modelName}>${bindingPath}}`,
21
+ enabled: !fieldMetadata.ui?.readOnly,
22
+ forceSelection: false,
23
+ change: (oEvent: any) => {
24
+ const item = oEvent.getParameter("selectedItem");
25
+ const val = item ? item.getKey() : "";
26
+ this.publishChange(val);
27
+ this.validate();
28
+ }
29
+ });
30
+
31
+ if (fieldMetadata.valueHelp && Array.isArray(fieldMetadata.valueHelp)) {
32
+ // Always add the empty placeholder so that 'required' checks can actually fire if the user hasn't made a choice
33
+ select.addItem(new Item({ key: "", text: "--- Select ---" }));
34
+
35
+ fieldMetadata.valueHelp.forEach(vh => {
36
+ select.addItem(new Item({ key: vh.key, text: vh.text }));
37
+ });
38
+ }
39
+
40
+ this.control = select;
41
+ return this.control;
42
+ }
43
+
44
+ public validate(): boolean {
45
+ if (!this.control || !this.metadata) return true;
46
+ const select = this.control as Select;
47
+ const val = select.getSelectedKey();
48
+
49
+ if (this.metadata.required && (!val || val.trim() === "")) {
50
+ select.setValueState("Error" as any);
51
+ select.setValueStateText("Selection is required.");
52
+ return false;
53
+ }
54
+
55
+ select.setValueState("None" as any);
56
+ return true;
57
+ }
58
+
59
+ protected applyState(): void {
60
+ if (this.control && this.metadata) {
61
+ const select = this.control as Select;
62
+ select.setEnabled(!this.metadata.ui?.readOnly);
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,56 @@
1
+ sap.ui.define(["./BasePlugin", "sap/m/StepInput"], function (___BasePlugin, StepInput) {
2
+ "use strict";
3
+
4
+ /**
5
+ * @file NumberPlugin.ts
6
+ * @description Renders a sap.m.StepInput for numeric data.
7
+ */
8
+ const BasePlugin = ___BasePlugin["BasePlugin"];
9
+ /**
10
+ * Handles rendering and logic for numeric inputs.
11
+ */
12
+ class NumberPlugin extends BasePlugin {
13
+ render(fieldMetadata, bindingPath, modelName = "meta") {
14
+ this.metadata = fieldMetadata;
15
+ this.control = new StepInput({
16
+ value: `{${modelName}>${bindingPath}}`,
17
+ displayValuePrecision: fieldMetadata.scale || 0,
18
+ editable: !fieldMetadata.ui?.readOnly,
19
+ required: fieldMetadata.required,
20
+ change: oEvent => {
21
+ const val = oEvent.getParameter("value");
22
+ this.publishChange(val);
23
+ this.validate();
24
+ }
25
+ });
26
+ return this.control;
27
+ }
28
+ validate() {
29
+ if (!this.control || !this.metadata) return true;
30
+ const input = this.control;
31
+ const val = input.getValue();
32
+
33
+ // StepInput generally defaults to 0 and isn't usually undefined unless unbound or erased
34
+ if (this.metadata.required && (val === null || val === undefined || Number.isNaN(val) || val === "")) {
35
+ input.setValueState("Error");
36
+ input.setValueStateText("This field is required.");
37
+ return false;
38
+ }
39
+ input.setValueState("None");
40
+ return true;
41
+ }
42
+ applyState() {
43
+ if (this.control && this.metadata) {
44
+ const input = this.control;
45
+ input.setEditable(!this.metadata.ui?.readOnly);
46
+ input.setRequired(this.metadata.required);
47
+ }
48
+ }
49
+ }
50
+ var __exports = {
51
+ __esModule: true
52
+ };
53
+ __exports.NumberPlugin = NumberPlugin;
54
+ return __exports;
55
+ });
56
+ //# sourceMappingURL=NumberPlugin-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberPlugin-dbg.js","names":["BasePlugin","___BasePlugin","NumberPlugin","render","fieldMetadata","bindingPath","modelName","metadata","control","StepInput","value","displayValuePrecision","scale","editable","ui","readOnly","required","change","oEvent","val","getParameter","publishChange","validate","input","getValue","undefined","Number","isNaN","setValueState","setValueStateText","applyState","setEditable","setRequired","__exports","__esModule"],"sources":["NumberPlugin.ts"],"sourcesContent":["/**\n * @file NumberPlugin.ts\n * @description Renders a sap.m.StepInput for numeric data.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport StepInput from \"sap/m/StepInput\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering and logic for numeric inputs.\n */\nexport class NumberPlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n\n this.control = new StepInput({\n value: `{${modelName}>${bindingPath}}`,\n displayValuePrecision: fieldMetadata.scale || 0,\n editable: !fieldMetadata.ui?.readOnly,\n required: fieldMetadata.required,\n change: (oEvent: any) => {\n const val = oEvent.getParameter(\"value\");\n this.publishChange(val);\n this.validate();\n }\n });\n\n return this.control;\n }\n\n public validate(): boolean {\n if (!this.control || !this.metadata) return true;\n const input = this.control as StepInput;\n const val = input.getValue();\n\n // StepInput generally defaults to 0 and isn't usually undefined unless unbound or erased\n if (this.metadata.required && (val === null || val === undefined || Number.isNaN(val) || val === \"\")) {\n input.setValueState(\"Error\" as any);\n input.setValueStateText(\"This field is required.\");\n return false;\n }\n\n input.setValueState(\"None\" as any);\n return true;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n const input = this.control as StepInput;\n input.setEditable(!this.metadata.ui?.readOnly);\n input.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;EAHA,MAKSA,UAAU,GAAAC,aAAA;EAKnB;AACA;AACA;EACO,MAAMC,YAAY,SAASF,UAAU,CAAC;IAClCG,MAAMA,CAACC,aAAgC,EAAEC,WAAmB,EAAEC,SAAiB,GAAG,MAAM,EAAW;MACtG,IAAI,CAACC,QAAQ,GAAGH,aAAa;MAE7B,IAAI,CAACI,OAAO,GAAG,IAAIC,SAAS,CAAC;QACzBC,KAAK,EAAE,IAAIJ,SAAS,IAAID,WAAW,GAAG;QACtCM,qBAAqB,EAAEP,aAAa,CAACQ,KAAK,IAAI,CAAC;QAC/CC,QAAQ,EAAE,CAACT,aAAa,CAACU,EAAE,EAAEC,QAAQ;QACrCC,QAAQ,EAAEZ,aAAa,CAACY,QAAQ;QAChCC,MAAM,EAAGC,MAAW,IAAK;UACrB,MAAMC,GAAG,GAAGD,MAAM,CAACE,YAAY,CAAC,OAAO,CAAC;UACxC,IAAI,CAACC,aAAa,CAACF,GAAG,CAAC;UACvB,IAAI,CAACG,QAAQ,CAAC,CAAC;QACnB;MACJ,CAAC,CAAC;MAEF,OAAO,IAAI,CAACd,OAAO;IACvB;IAEOc,QAAQA,CAAA,EAAY;MACvB,IAAI,CAAC,IAAI,CAACd,OAAO,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE,OAAO,IAAI;MAChD,MAAMgB,KAAK,GAAG,IAAI,CAACf,OAAoB;MACvC,MAAMW,GAAG,GAAGI,KAAK,CAACC,QAAQ,CAAC,CAAC;;MAE5B;MACA,IAAI,IAAI,CAACjB,QAAQ,CAACS,QAAQ,KAAKG,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAKM,SAAS,IAAIC,MAAM,CAACC,KAAK,CAACR,GAAG,CAAC,IAAIA,GAAG,KAAK,EAAE,CAAC,EAAE;QAClGI,KAAK,CAACK,aAAa,CAAC,OAAc,CAAC;QACnCL,KAAK,CAACM,iBAAiB,CAAC,yBAAyB,CAAC;QAClD,OAAO,KAAK;MAChB;MAEAN,KAAK,CAACK,aAAa,CAAC,MAAa,CAAC;MAClC,OAAO,IAAI;IACf;IAEUE,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAACtB,OAAO,IAAI,IAAI,CAACD,QAAQ,EAAE;QAC/B,MAAMgB,KAAK,GAAG,IAAI,CAACf,OAAoB;QACvCe,KAAK,CAACQ,WAAW,CAAC,CAAC,IAAI,CAACxB,QAAQ,CAACO,EAAE,EAAEC,QAAQ,CAAC;QAC9CQ,KAAK,CAACS,WAAW,CAAC,IAAI,CAACzB,QAAQ,CAACS,QAAQ,CAAC;MAC7C;IACJ;EACJ;EAAC,IAAAiB,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAA/B,YAAA,GAAAA,YAAA;EAAA,OAAA+B,SAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/plugins/NumberPlugin" {
2
+ /**
3
+ * @file NumberPlugin.ts
4
+ * @description Renders a sap.m.StepInput for numeric data.
5
+ */
6
+ import { BasePlugin } from "nz/co/siliconst/ui5/metaui/plugins/BasePlugin";
7
+ import { IPropertyMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
8
+ import Control from "sap/ui/core/Control";
9
+ /**
10
+ * Handles rendering and logic for numeric inputs.
11
+ */
12
+ export class NumberPlugin extends BasePlugin {
13
+ render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string): Control;
14
+ validate(): boolean;
15
+ protected applyState(): void;
16
+ }
17
+ }
18
+ //# sourceMappingURL=NumberPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberPlugin.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,iDAAiD,CAAC;IACjE;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;IAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAElF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;OAEG;IACH,MAAa,YAAa,SAAQ,UAAU;QACjC,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO;QAkBlG,QAAQ,IAAI,OAAO;QAgB1B,SAAS,CAAC,UAAU,IAAI,IAAI;KAO/B;CAEA"}
@@ -0,0 +1,2 @@
1
+ sap.ui.define(["./BasePlugin","sap/m/StepInput"],function(e,t){"use strict";const a=e["BasePlugin"];class i extends a{render(e,a,i="meta"){this.metadata=e;this.control=new t({value:`{${i}>${a}}`,displayValuePrecision:e.scale||0,editable:!e.ui?.readOnly,required:e.required,change:e=>{const t=e.getParameter("value");this.publishChange(t);this.validate()}});return this.control}validate(){if(!this.control||!this.metadata)return true;const e=this.control;const t=e.getValue();if(this.metadata.required&&(t===null||t===undefined||Number.isNaN(t)||t==="")){e.setValueState("Error");e.setValueStateText("This field is required.");return false}e.setValueState("None");return true}applyState(){if(this.control&&this.metadata){const e=this.control;e.setEditable(!this.metadata.ui?.readOnly);e.setRequired(this.metadata.required)}}}var r={__esModule:true};r.NumberPlugin=i;return r});
2
+ //# sourceMappingURL=NumberPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberPlugin.js","names":["BasePlugin","___BasePlugin","NumberPlugin","render","fieldMetadata","bindingPath","modelName","this","metadata","control","StepInput","value","displayValuePrecision","scale","editable","ui","readOnly","required","change","oEvent","val","getParameter","publishChange","validate","input","getValue","undefined","Number","isNaN","setValueState","setValueStateText","applyState","setEditable","setRequired","__exports","__esModule"],"sources":["NumberPlugin.ts"],"sourcesContent":["/**\n * @file NumberPlugin.ts\n * @description Renders a sap.m.StepInput for numeric data.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport StepInput from \"sap/m/StepInput\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering and logic for numeric inputs.\n */\nexport class NumberPlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n\n this.control = new StepInput({\n value: `{${modelName}>${bindingPath}}`,\n displayValuePrecision: fieldMetadata.scale || 0,\n editable: !fieldMetadata.ui?.readOnly,\n required: fieldMetadata.required,\n change: (oEvent: any) => {\n const val = oEvent.getParameter(\"value\");\n this.publishChange(val);\n this.validate();\n }\n });\n\n return this.control;\n }\n\n public validate(): boolean {\n if (!this.control || !this.metadata) return true;\n const input = this.control as StepInput;\n const val = input.getValue();\n\n // StepInput generally defaults to 0 and isn't usually undefined unless unbound or erased\n if (this.metadata.required && (val === null || val === undefined || Number.isNaN(val) || val === \"\")) {\n input.setValueState(\"Error\" as any);\n input.setValueStateText(\"This field is required.\");\n return false;\n }\n\n input.setValueState(\"None\" as any);\n return true;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n const input = this.control as StepInput;\n input.setEditable(!this.metadata.ui?.readOnly);\n input.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":"4EAAA,MAKSA,EAAUC,EAAA,cAQZ,MAAMC,UAAqBF,EACvBG,OAAOC,EAAkCC,EAAqBC,EAAoB,QACrFC,KAAKC,SAAWJ,EAEhBG,KAAKE,QAAU,IAAIC,EAAU,CACzBC,MAAO,IAAIL,KAAaD,KACxBO,sBAAuBR,EAAcS,OAAS,EAC9CC,UAAWV,EAAcW,IAAIC,SAC7BC,SAAUb,EAAca,SACxBC,OAASC,IACL,MAAMC,EAAMD,EAAOE,aAAa,SAChCd,KAAKe,cAAcF,GACnBb,KAAKgB,cAIb,OAAOhB,KAAKE,OAChB,CAEOc,WACH,IAAKhB,KAAKE,UAAYF,KAAKC,SAAU,OAAO,KAC5C,MAAMgB,EAAQjB,KAAKE,QACnB,MAAMW,EAAMI,EAAMC,WAGlB,GAAIlB,KAAKC,SAASS,WAAaG,IAAQ,MAAQA,IAAQM,WAAaC,OAAOC,MAAMR,IAAQA,IAAQ,IAAK,CAClGI,EAAMK,cAAc,SACpBL,EAAMM,kBAAkB,2BACxB,OAAO,KACX,CAEAN,EAAMK,cAAc,QACpB,OAAO,IACX,CAEUE,aACN,GAAIxB,KAAKE,SAAWF,KAAKC,SAAU,CAC/B,MAAMgB,EAAQjB,KAAKE,QACnBe,EAAMQ,aAAazB,KAAKC,SAASO,IAAIC,UACrCQ,EAAMS,YAAY1B,KAAKC,SAASS,SACpC,CACJ,EACH,IAAAiB,EAAA,CAAAC,WAAA,MAAAD,EAAAhC,eAAA,OAAAgC,CAAA","ignoreList":[]}
@@ -1,55 +1,56 @@
1
- /**
2
- * @file NumberPlugin.ts
3
- * @description Renders a sap.m.StepInput for numeric data.
4
- */
5
-
6
- import { BasePlugin } from "./BasePlugin";
7
- import { IFieldMetadata } from "../interfaces/ISchema";
8
- import StepInput from "sap/m/StepInput";
9
- import Control from "sap/ui/core/Control";
10
-
11
- /**
12
- * Handles rendering and logic for numeric inputs with precision and scale.
13
- */
14
- export class NumberPlugin extends BasePlugin {
15
- public render(fieldMetadata: IFieldMetadata, bindingPath: string): Control {
16
- this.metadata = fieldMetadata;
17
-
18
- this.control = new StepInput({
19
- value: `{meta>${bindingPath}}`,
20
- displayValuePrecision: fieldMetadata.scale || 0,
21
- editable: !fieldMetadata.isReadOnly,
22
- required: fieldMetadata.isRequired,
23
- change: (oEvent: any) => {
24
- const val = oEvent.getParameter("value");
25
- this.publishChange(val);
26
- this.validate();
27
- }
28
- });
29
-
30
- return this.control;
31
- }
32
-
33
- public validate(): boolean {
34
- if (!this.control || !this.metadata) return true;
35
- const input = this.control as StepInput;
36
- const val = input.getValue();
37
-
38
- if (this.metadata.isRequired && (val === null || val === undefined)) {
39
- input.setValueState("Error" as any);
40
- input.setValueStateText("This field is required.");
41
- return false;
42
- }
43
-
44
- input.setValueState("None" as any);
45
- return true;
46
- }
47
-
48
- protected applyState(): void {
49
- if (this.control && this.metadata) {
50
- const input = this.control as StepInput;
51
- input.setEditable(!this.metadata.isReadOnly);
52
- input.setRequired(this.metadata.isRequired);
53
- }
54
- }
55
- }
1
+ /**
2
+ * @file NumberPlugin.ts
3
+ * @description Renders a sap.m.StepInput for numeric data.
4
+ */
5
+
6
+ import { BasePlugin } from "./BasePlugin";
7
+ import { IPropertyMetadata } from "../interfaces/ISchema";
8
+ import StepInput from "sap/m/StepInput";
9
+ import Control from "sap/ui/core/Control";
10
+
11
+ /**
12
+ * Handles rendering and logic for numeric inputs.
13
+ */
14
+ export class NumberPlugin extends BasePlugin {
15
+ public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta"): Control {
16
+ this.metadata = fieldMetadata;
17
+
18
+ this.control = new StepInput({
19
+ value: `{${modelName}>${bindingPath}}`,
20
+ displayValuePrecision: fieldMetadata.scale || 0,
21
+ editable: !fieldMetadata.ui?.readOnly,
22
+ required: fieldMetadata.required,
23
+ change: (oEvent: any) => {
24
+ const val = oEvent.getParameter("value");
25
+ this.publishChange(val);
26
+ this.validate();
27
+ }
28
+ });
29
+
30
+ return this.control;
31
+ }
32
+
33
+ public validate(): boolean {
34
+ if (!this.control || !this.metadata) return true;
35
+ const input = this.control as StepInput;
36
+ const val = input.getValue();
37
+
38
+ // StepInput generally defaults to 0 and isn't usually undefined unless unbound or erased
39
+ if (this.metadata.required && (val === null || val === undefined || Number.isNaN(val) || val === "")) {
40
+ input.setValueState("Error" as any);
41
+ input.setValueStateText("This field is required.");
42
+ return false;
43
+ }
44
+
45
+ input.setValueState("None" as any);
46
+ return true;
47
+ }
48
+
49
+ protected applyState(): void {
50
+ if (this.control && this.metadata) {
51
+ const input = this.control as StepInput;
52
+ input.setEditable(!this.metadata.ui?.readOnly);
53
+ input.setRequired(this.metadata.required);
54
+ }
55
+ }
56
+ }
@@ -0,0 +1,57 @@
1
+ sap.ui.define(["./BasePlugin", "sap/m/Input"], function (___BasePlugin, Input) {
2
+ "use strict";
3
+
4
+ /**
5
+ * @file StringPlugin.ts
6
+ * @description Renders a sap.m.Input for string data and validates lengths.
7
+ */
8
+ const BasePlugin = ___BasePlugin["BasePlugin"];
9
+ /**
10
+ * Handles rendering and logic for basic text inputs.
11
+ */
12
+ class StringPlugin extends BasePlugin {
13
+ render(fieldMetadata, bindingPath, modelName = "meta") {
14
+ this.metadata = fieldMetadata;
15
+ this.fieldKey = bindingPath.replace("/", ""); // For EventBus
16
+
17
+ this.control = new Input({
18
+ value: `{${modelName}>${bindingPath}}`,
19
+ maxLength: fieldMetadata.maxLength || 0,
20
+ required: !!fieldMetadata.required,
21
+ showValueHelp: fieldMetadata.ui?.widget === "searchHelp",
22
+ change: oEvent => {
23
+ const val = oEvent.getParameter("value");
24
+ this.publishChange(val);
25
+ this.validate();
26
+ }
27
+ });
28
+ this.applyCommonDirectives(this.control, fieldMetadata, modelName);
29
+ return this.control;
30
+ }
31
+ validate() {
32
+ if (!this.control || !this.metadata) return true;
33
+ const input = this.control;
34
+ const val = input.getValue();
35
+ if (this.metadata.required && (!val || typeof val !== 'string' || val.trim() === "")) {
36
+ input.setValueState("Error");
37
+ input.setValueStateText("This field is required.");
38
+ return false;
39
+ }
40
+ input.setValueState("None");
41
+ return true;
42
+ }
43
+ applyState() {
44
+ if (this.control && this.metadata) {
45
+ const input = this.control;
46
+ input.setEditable(!this.metadata.ui?.readOnly);
47
+ input.setRequired(this.metadata.required);
48
+ }
49
+ }
50
+ }
51
+ var __exports = {
52
+ __esModule: true
53
+ };
54
+ __exports.StringPlugin = StringPlugin;
55
+ return __exports;
56
+ });
57
+ //# sourceMappingURL=StringPlugin-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringPlugin-dbg.js","names":["BasePlugin","___BasePlugin","StringPlugin","render","fieldMetadata","bindingPath","modelName","metadata","fieldKey","replace","control","Input","value","maxLength","required","showValueHelp","ui","widget","change","oEvent","val","getParameter","publishChange","validate","applyCommonDirectives","input","getValue","trim","setValueState","setValueStateText","applyState","setEditable","readOnly","setRequired","__exports","__esModule"],"sources":["StringPlugin.ts"],"sourcesContent":["/**\n * @file StringPlugin.ts\n * @description Renders a sap.m.Input for string data and validates lengths.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport Input from \"sap/m/Input\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering and logic for basic text inputs.\n */\nexport class StringPlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\n \n this.control = new Input({\n value: `{${modelName}>${bindingPath}}`,\n maxLength: fieldMetadata.maxLength || 0,\n required: !!fieldMetadata.required,\n showValueHelp: fieldMetadata.ui?.widget === \"searchHelp\",\n change: (oEvent: any) => {\n const val = oEvent.getParameter(\"value\");\n this.publishChange(val);\n this.validate();\n }\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control;\n }\n\n public validate(): boolean {\n if (!this.control || !this.metadata) return true;\n const input = this.control as Input;\n const val = input.getValue();\n\n if (this.metadata.required && (!val || typeof val !== 'string' || val.trim() === \"\")) {\n input.setValueState(\"Error\" as any);\n input.setValueStateText(\"This field is required.\");\n return false;\n }\n\n input.setValueState(\"None\" as any);\n return true;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n const input = this.control as Input;\n input.setEditable(!this.metadata.ui?.readOnly);\n input.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;EAHA,MAKSA,UAAU,GAAAC,aAAA;EAKnB;AACA;AACA;EACO,MAAMC,YAAY,SAASF,UAAU,CAAC;IAClCG,MAAMA,CAACC,aAAgC,EAAEC,WAAmB,EAAEC,SAAiB,GAAG,MAAM,EAAW;MACtG,IAAI,CAACC,QAAQ,GAAGH,aAAa;MAC7B,IAAI,CAACI,QAAQ,GAAGH,WAAW,CAACI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;;MAE9C,IAAI,CAACC,OAAO,GAAG,IAAIC,KAAK,CAAC;QACrBC,KAAK,EAAE,IAAIN,SAAS,IAAID,WAAW,GAAG;QACtCQ,SAAS,EAAET,aAAa,CAACS,SAAS,IAAI,CAAC;QACvCC,QAAQ,EAAE,CAAC,CAACV,aAAa,CAACU,QAAQ;QAClCC,aAAa,EAAEX,aAAa,CAACY,EAAE,EAAEC,MAAM,KAAK,YAAY;QACxDC,MAAM,EAAGC,MAAW,IAAK;UACrB,MAAMC,GAAG,GAAGD,MAAM,CAACE,YAAY,CAAC,OAAO,CAAC;UACxC,IAAI,CAACC,aAAa,CAACF,GAAG,CAAC;UACvB,IAAI,CAACG,QAAQ,CAAC,CAAC;QACnB;MACJ,CAAC,CAAC;MAEF,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACd,OAAO,EAAEN,aAAa,EAAEE,SAAS,CAAC;MAElE,OAAO,IAAI,CAACI,OAAO;IACvB;IAEOa,QAAQA,CAAA,EAAY;MACvB,IAAI,CAAC,IAAI,CAACb,OAAO,IAAI,CAAC,IAAI,CAACH,QAAQ,EAAE,OAAO,IAAI;MAChD,MAAMkB,KAAK,GAAG,IAAI,CAACf,OAAgB;MACnC,MAAMU,GAAG,GAAGK,KAAK,CAACC,QAAQ,CAAC,CAAC;MAE5B,IAAI,IAAI,CAACnB,QAAQ,CAACO,QAAQ,KAAK,CAACM,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACO,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;QAClFF,KAAK,CAACG,aAAa,CAAC,OAAc,CAAC;QACnCH,KAAK,CAACI,iBAAiB,CAAC,yBAAyB,CAAC;QAClD,OAAO,KAAK;MAChB;MAEAJ,KAAK,CAACG,aAAa,CAAC,MAAa,CAAC;MAClC,OAAO,IAAI;IACf;IAEUE,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAACpB,OAAO,IAAI,IAAI,CAACH,QAAQ,EAAE;QAC/B,MAAMkB,KAAK,GAAG,IAAI,CAACf,OAAgB;QACnCe,KAAK,CAACM,WAAW,CAAC,CAAC,IAAI,CAACxB,QAAQ,CAACS,EAAE,EAAEgB,QAAQ,CAAC;QAC9CP,KAAK,CAACQ,WAAW,CAAC,IAAI,CAAC1B,QAAQ,CAACO,QAAQ,CAAC;MAC7C;IACJ;EACJ;EAAC,IAAAoB,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAhC,YAAA,GAAAA,YAAA;EAAA,OAAAgC,SAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/plugins/StringPlugin" {
2
+ /**
3
+ * @file StringPlugin.ts
4
+ * @description Renders a sap.m.Input for string data and validates lengths.
5
+ */
6
+ import { BasePlugin } from "nz/co/siliconst/ui5/metaui/plugins/BasePlugin";
7
+ import { IPropertyMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
8
+ import Control from "sap/ui/core/Control";
9
+ /**
10
+ * Handles rendering and logic for basic text inputs.
11
+ */
12
+ export class StringPlugin extends BasePlugin {
13
+ render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string): Control;
14
+ validate(): boolean;
15
+ protected applyState(): void;
16
+ }
17
+ }
18
+ //# sourceMappingURL=StringPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringPlugin.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,iDAAiD,CAAC;IACjE;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;IAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAElF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;OAEG;IACH,MAAa,YAAa,SAAQ,UAAU;QACjC,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO;QAqBlG,QAAQ,IAAI,OAAO;QAe1B,SAAS,CAAC,UAAU,IAAI,IAAI;KAO/B;CAEA"}
@@ -0,0 +1,2 @@
1
+ sap.ui.define(["./BasePlugin","sap/m/Input"],function(t,e){"use strict";const a=t["BasePlugin"];class i extends a{render(t,a,i="meta"){this.metadata=t;this.fieldKey=a.replace("/","");this.control=new e({value:`{${i}>${a}}`,maxLength:t.maxLength||0,required:!!t.required,showValueHelp:t.ui?.widget==="searchHelp",change:t=>{const e=t.getParameter("value");this.publishChange(e);this.validate()}});this.applyCommonDirectives(this.control,t,i);return this.control}validate(){if(!this.control||!this.metadata)return true;const t=this.control;const e=t.getValue();if(this.metadata.required&&(!e||typeof e!=="string"||e.trim()==="")){t.setValueState("Error");t.setValueStateText("This field is required.");return false}t.setValueState("None");return true}applyState(){if(this.control&&this.metadata){const t=this.control;t.setEditable(!this.metadata.ui?.readOnly);t.setRequired(this.metadata.required)}}}var r={__esModule:true};r.StringPlugin=i;return r});
2
+ //# sourceMappingURL=StringPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringPlugin.js","names":["BasePlugin","___BasePlugin","StringPlugin","render","fieldMetadata","bindingPath","modelName","this","metadata","fieldKey","replace","control","Input","value","maxLength","required","showValueHelp","ui","widget","change","oEvent","val","getParameter","publishChange","validate","applyCommonDirectives","input","getValue","trim","setValueState","setValueStateText","applyState","setEditable","readOnly","setRequired","__exports","__esModule"],"sources":["StringPlugin.ts"],"sourcesContent":["/**\n * @file StringPlugin.ts\n * @description Renders a sap.m.Input for string data and validates lengths.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport Input from \"sap/m/Input\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering and logic for basic text inputs.\n */\nexport class StringPlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\n \n this.control = new Input({\n value: `{${modelName}>${bindingPath}}`,\n maxLength: fieldMetadata.maxLength || 0,\n required: !!fieldMetadata.required,\n showValueHelp: fieldMetadata.ui?.widget === \"searchHelp\",\n change: (oEvent: any) => {\n const val = oEvent.getParameter(\"value\");\n this.publishChange(val);\n this.validate();\n }\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control;\n }\n\n public validate(): boolean {\n if (!this.control || !this.metadata) return true;\n const input = this.control as Input;\n const val = input.getValue();\n\n if (this.metadata.required && (!val || typeof val !== 'string' || val.trim() === \"\")) {\n input.setValueState(\"Error\" as any);\n input.setValueStateText(\"This field is required.\");\n return false;\n }\n\n input.setValueState(\"None\" as any);\n return true;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n const input = this.control as Input;\n input.setEditable(!this.metadata.ui?.readOnly);\n input.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":"wEAAA,MAKSA,EAAUC,EAAA,cAQZ,MAAMC,UAAqBF,EACvBG,OAAOC,EAAkCC,EAAqBC,EAAoB,QACrFC,KAAKC,SAAWJ,EAChBG,KAAKE,SAAWJ,EAAYK,QAAQ,IAAK,IAEzCH,KAAKI,QAAU,IAAIC,EAAM,CACrBC,MAAO,IAAIP,KAAaD,KACxBS,UAAWV,EAAcU,WAAa,EACtCC,WAAYX,EAAcW,SAC1BC,cAAeZ,EAAca,IAAIC,SAAW,aAC5CC,OAASC,IACL,MAAMC,EAAMD,EAAOE,aAAa,SAChCf,KAAKgB,cAAcF,GACnBd,KAAKiB,cAIbjB,KAAKkB,sBAAsBlB,KAAKI,QAASP,EAAeE,GAExD,OAAOC,KAAKI,OAChB,CAEOa,WACH,IAAKjB,KAAKI,UAAYJ,KAAKC,SAAU,OAAO,KAC5C,MAAMkB,EAAQnB,KAAKI,QACnB,MAAMU,EAAMK,EAAMC,WAElB,GAAIpB,KAAKC,SAASO,YAAcM,UAAcA,IAAQ,UAAYA,EAAIO,SAAW,IAAK,CAClFF,EAAMG,cAAc,SACpBH,EAAMI,kBAAkB,2BACxB,OAAO,KACX,CAEAJ,EAAMG,cAAc,QACpB,OAAO,IACX,CAEUE,aACN,GAAIxB,KAAKI,SAAWJ,KAAKC,SAAU,CAC/B,MAAMkB,EAAQnB,KAAKI,QACnBe,EAAMM,aAAazB,KAAKC,SAASS,IAAIgB,UACrCP,EAAMQ,YAAY3B,KAAKC,SAASO,SACpC,CACJ,EACH,IAAAoB,EAAA,CAAAC,WAAA,MAAAD,EAAAjC,eAAA,OAAAiC,CAAA","ignoreList":[]}
@@ -1,55 +1,58 @@
1
- /**
2
- * @file StringPlugin.ts
3
- * @description Renders a sap.m.Input for string data and validates lengths.
4
- */
5
-
6
- import { BasePlugin } from "./BasePlugin";
7
- import { IFieldMetadata } from "../interfaces/ISchema";
8
- import Input from "sap/m/Input";
9
- import Control from "sap/ui/core/Control";
10
-
11
- /**
12
- * Handles rendering and logic for basic text inputs.
13
- */
14
- export class StringPlugin extends BasePlugin {
15
- public render(fieldMetadata: IFieldMetadata, bindingPath: string): Control {
16
- this.metadata = fieldMetadata;
17
-
18
- this.control = new Input({
19
- value: `{meta>${bindingPath}}`,
20
- maxLength: fieldMetadata.maxLength || 0,
21
- editable: !fieldMetadata.isReadOnly,
22
- required: fieldMetadata.isRequired,
23
- change: (oEvent: any) => {
24
- const val = oEvent.getParameter("value");
25
- this.publishChange(val);
26
- this.validate();
27
- }
28
- });
29
-
30
- return this.control;
31
- }
32
-
33
- public validate(): boolean {
34
- if (!this.control || !this.metadata) return true;
35
- const input = this.control as Input;
36
- const val = input.getValue();
37
-
38
- if (this.metadata.isRequired && (!val || val.trim() === "")) {
39
- input.setValueState("Error" as any);
40
- input.setValueStateText("This field is required.");
41
- return false;
42
- }
43
-
44
- input.setValueState("None" as any);
45
- return true;
46
- }
47
-
48
- protected applyState(): void {
49
- if (this.control && this.metadata) {
50
- const input = this.control as Input;
51
- input.setEditable(!this.metadata.isReadOnly);
52
- input.setRequired(this.metadata.isRequired);
53
- }
54
- }
55
- }
1
+ /**
2
+ * @file StringPlugin.ts
3
+ * @description Renders a sap.m.Input for string data and validates lengths.
4
+ */
5
+
6
+ import { BasePlugin } from "./BasePlugin";
7
+ import { IPropertyMetadata } from "../interfaces/ISchema";
8
+ import Input from "sap/m/Input";
9
+ import Control from "sap/ui/core/Control";
10
+
11
+ /**
12
+ * Handles rendering and logic for basic text inputs.
13
+ */
14
+ export class StringPlugin extends BasePlugin {
15
+ public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta"): Control {
16
+ this.metadata = fieldMetadata;
17
+ this.fieldKey = bindingPath.replace("/", ""); // For EventBus
18
+
19
+ this.control = new Input({
20
+ value: `{${modelName}>${bindingPath}}`,
21
+ maxLength: fieldMetadata.maxLength || 0,
22
+ required: !!fieldMetadata.required,
23
+ showValueHelp: fieldMetadata.ui?.widget === "searchHelp",
24
+ change: (oEvent: any) => {
25
+ const val = oEvent.getParameter("value");
26
+ this.publishChange(val);
27
+ this.validate();
28
+ }
29
+ });
30
+
31
+ this.applyCommonDirectives(this.control, fieldMetadata, modelName);
32
+
33
+ return this.control;
34
+ }
35
+
36
+ public validate(): boolean {
37
+ if (!this.control || !this.metadata) return true;
38
+ const input = this.control as Input;
39
+ const val = input.getValue();
40
+
41
+ if (this.metadata.required && (!val || typeof val !== 'string' || val.trim() === "")) {
42
+ input.setValueState("Error" as any);
43
+ input.setValueStateText("This field is required.");
44
+ return false;
45
+ }
46
+
47
+ input.setValueState("None" as any);
48
+ return true;
49
+ }
50
+
51
+ protected applyState(): void {
52
+ if (this.control && this.metadata) {
53
+ const input = this.control as Input;
54
+ input.setEditable(!this.metadata.ui?.readOnly);
55
+ input.setRequired(this.metadata.required);
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,43 @@
1
+ sap.ui.define(["./BasePlugin", "sap/m/Switch"], function (___BasePlugin, Switch) {
2
+ "use strict";
3
+
4
+ /**
5
+ * @file SwitchPlugin.ts
6
+ * @description Renders a sap.m.Switch for boolean data specifically marked with the switch widget.
7
+ */
8
+ const BasePlugin = ___BasePlugin["BasePlugin"];
9
+ /**
10
+ * Handles rendering logic for toggleable boolean switches.
11
+ */
12
+ class SwitchPlugin extends BasePlugin {
13
+ render(fieldMetadata, bindingPath, modelName = "meta") {
14
+ this.metadata = fieldMetadata;
15
+ this.control = new Switch({
16
+ state: `{${modelName}>${bindingPath}}`,
17
+ enabled: !fieldMetadata.ui?.readOnly,
18
+ change: oEvent => {
19
+ const val = oEvent.getParameter("state");
20
+ this.publishChange(val);
21
+ this.validate();
22
+ }
23
+ });
24
+ return this.control;
25
+ }
26
+ validate() {
27
+ // Boolean states rarely fail validation.
28
+ return true;
29
+ }
30
+ applyState() {
31
+ if (this.control && this.metadata) {
32
+ const sw = this.control;
33
+ sw.setEnabled(!this.metadata.ui?.readOnly);
34
+ }
35
+ }
36
+ }
37
+ var __exports = {
38
+ __esModule: true
39
+ };
40
+ __exports.SwitchPlugin = SwitchPlugin;
41
+ return __exports;
42
+ });
43
+ //# sourceMappingURL=SwitchPlugin-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwitchPlugin-dbg.js","names":["BasePlugin","___BasePlugin","SwitchPlugin","render","fieldMetadata","bindingPath","modelName","metadata","control","Switch","state","enabled","ui","readOnly","change","oEvent","val","getParameter","publishChange","validate","applyState","sw","setEnabled","__exports","__esModule"],"sources":["SwitchPlugin.ts"],"sourcesContent":["/**\n * @file SwitchPlugin.ts\n * @description Renders a sap.m.Switch for boolean data specifically marked with the switch widget.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport Switch from \"sap/m/Switch\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for toggleable boolean switches.\n */\nexport class SwitchPlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n\n this.control = new Switch({\n state: `{${modelName}>${bindingPath}}`,\n enabled: !fieldMetadata.ui?.readOnly,\n change: (oEvent: any) => {\n const val = oEvent.getParameter(\"state\");\n this.publishChange(val);\n this.validate();\n }\n });\n\n return this.control;\n }\n\n public validate(): boolean {\n // Boolean states rarely fail validation.\n return true;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n const sw = this.control as Switch;\n sw.setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;EAHA,MAKSA,UAAU,GAAAC,aAAA;EAKnB;AACA;AACA;EACO,MAAMC,YAAY,SAASF,UAAU,CAAC;IAClCG,MAAMA,CAACC,aAAgC,EAAEC,WAAmB,EAAEC,SAAiB,GAAG,MAAM,EAAW;MACtG,IAAI,CAACC,QAAQ,GAAGH,aAAa;MAE7B,IAAI,CAACI,OAAO,GAAG,IAAIC,MAAM,CAAC;QACtBC,KAAK,EAAE,IAAIJ,SAAS,IAAID,WAAW,GAAG;QACtCM,OAAO,EAAE,CAACP,aAAa,CAACQ,EAAE,EAAEC,QAAQ;QACpCC,MAAM,EAAGC,MAAW,IAAK;UACrB,MAAMC,GAAG,GAAGD,MAAM,CAACE,YAAY,CAAC,OAAO,CAAC;UACxC,IAAI,CAACC,aAAa,CAACF,GAAG,CAAC;UACvB,IAAI,CAACG,QAAQ,CAAC,CAAC;QACnB;MACJ,CAAC,CAAC;MAEF,OAAO,IAAI,CAACX,OAAO;IACvB;IAEOW,QAAQA,CAAA,EAAY;MACvB;MACA,OAAO,IAAI;IACf;IAEUC,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAACZ,OAAO,IAAI,IAAI,CAACD,QAAQ,EAAE;QAC/B,MAAMc,EAAE,GAAG,IAAI,CAACb,OAAiB;QACjCa,EAAE,CAACC,UAAU,CAAC,CAAC,IAAI,CAACf,QAAQ,CAACK,EAAE,EAAEC,QAAQ,CAAC;MAC9C;IACJ;EACJ;EAAC,IAAAU,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAArB,YAAA,GAAAA,YAAA;EAAA,OAAAqB,SAAA;AAAA","ignoreList":[]}