@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
@@ -0,0 +1,69 @@
1
+ sap.ui.define(["./BasePlugin", "sap/m/DatePicker"], function (___BasePlugin, DatePicker) {
2
+ "use strict";
3
+
4
+ /**
5
+ * @file DatePlugin.ts
6
+ * @description Renders a sap.m.DatePicker natively bound to ISO date strings.
7
+ */
8
+ const BasePlugin = ___BasePlugin["BasePlugin"];
9
+ /**
10
+ * Handles rendering logic for Date strings.
11
+ */
12
+ class DatePlugin extends BasePlugin {
13
+ render(fieldMetadata, bindingPath, modelName = "meta") {
14
+ this.metadata = fieldMetadata;
15
+ this.control = new DatePicker({
16
+ value: {
17
+ path: `${modelName}>${bindingPath}`,
18
+ type: "sap.ui.model.type.Date",
19
+ formatOptions: {
20
+ source: {
21
+ pattern: "yyyy-MM-dd"
22
+ },
23
+ pattern: "yyyy-MM-dd"
24
+ }
25
+ },
26
+ displayFormat: "long",
27
+ editable: !fieldMetadata.ui?.readOnly,
28
+ required: fieldMetadata.required,
29
+ change: oEvent => {
30
+ const val = oEvent.getParameter("value");
31
+ this.publishChange(val);
32
+ this.validate();
33
+ }
34
+ });
35
+ return this.control;
36
+ }
37
+ validate() {
38
+ if (!this.control || !this.metadata) return true;
39
+ const dp = this.control;
40
+ const isValid = typeof dp.isValidValue === "function" ? dp.isValidValue() : true;
41
+ const val = dp.getValue();
42
+ if (this.metadata.required && (!val || typeof val !== 'string' || val.trim() === "")) {
43
+ dp.setValueState("Error");
44
+ dp.setValueStateText("A valid date is required.");
45
+ return false;
46
+ }
47
+ if (val && !isValid) {
48
+ dp.setValueState("Error");
49
+ dp.setValueStateText("Invalid date format.");
50
+ return false;
51
+ }
52
+ dp.setValueState("None");
53
+ return true;
54
+ }
55
+ applyState() {
56
+ if (this.control && this.metadata) {
57
+ const dp = this.control;
58
+ dp.setEditable(!this.metadata.ui?.readOnly);
59
+ dp.setRequired(this.metadata.required);
60
+ }
61
+ }
62
+ }
63
+ var __exports = {
64
+ __esModule: true
65
+ };
66
+ __exports.DatePlugin = DatePlugin;
67
+ return __exports;
68
+ });
69
+ //# sourceMappingURL=DatePlugin-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePlugin-dbg.js","names":["BasePlugin","___BasePlugin","DatePlugin","render","fieldMetadata","bindingPath","modelName","metadata","control","DatePicker","value","path","type","formatOptions","source","pattern","displayFormat","editable","ui","readOnly","required","change","oEvent","val","getParameter","publishChange","validate","dp","isValid","isValidValue","getValue","trim","setValueState","setValueStateText","applyState","setEditable","setRequired","__exports","__esModule"],"sources":["DatePlugin.ts"],"sourcesContent":["/**\n * @file DatePlugin.ts\n * @description Renders a sap.m.DatePicker natively bound to ISO date strings.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport DatePicker from \"sap/m/DatePicker\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for Date strings.\n */\nexport class DatePlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n \n this.control = new DatePicker({\n value: {\n path: `${modelName}>${bindingPath}`,\n type: \"sap.ui.model.type.Date\",\n formatOptions: {\n source: { pattern: \"yyyy-MM-dd\" },\n pattern: \"yyyy-MM-dd\"\n }\n },\n displayFormat: \"long\",\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 dp = this.control as DatePicker;\n const isValid = typeof dp.isValidValue === \"function\" ? dp.isValidValue() : true;\n const val = dp.getValue();\n\n if (this.metadata.required && (!val || typeof val !== 'string' || val.trim() === \"\")) {\n dp.setValueState(\"Error\" as any);\n dp.setValueStateText(\"A valid date is required.\");\n return false;\n }\n\n if (val && !isValid) {\n dp.setValueState(\"Error\" as any);\n dp.setValueStateText(\"Invalid date format.\");\n return false;\n }\n\n dp.setValueState(\"None\" as any);\n return true;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n const dp = this.control as DatePicker;\n dp.setEditable(!this.metadata.ui?.readOnly);\n dp.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;EAHA,MAKSA,UAAU,GAAAC,aAAA;EAKnB;AACA;AACA;EACO,MAAMC,UAAU,SAASF,UAAU,CAAC;IAChCG,MAAMA,CAACC,aAAgC,EAAEC,WAAmB,EAAEC,SAAiB,GAAG,MAAM,EAAW;MACtG,IAAI,CAACC,QAAQ,GAAGH,aAAa;MAE7B,IAAI,CAACI,OAAO,GAAG,IAAIC,UAAU,CAAC;QAC1BC,KAAK,EAAE;UACHC,IAAI,EAAE,GAAGL,SAAS,IAAID,WAAW,EAAE;UACnCO,IAAI,EAAE,wBAAwB;UAC9BC,aAAa,EAAE;YACXC,MAAM,EAAE;cAAEC,OAAO,EAAE;YAAa,CAAC;YACjCA,OAAO,EAAE;UACb;QACJ,CAAC;QACDC,aAAa,EAAE,MAAM;QACrBC,QAAQ,EAAE,CAACb,aAAa,CAACc,EAAE,EAAEC,QAAQ;QACrCC,QAAQ,EAAEhB,aAAa,CAACgB,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,CAAClB,OAAO;IACvB;IAEOkB,QAAQA,CAAA,EAAY;MACvB,IAAI,CAAC,IAAI,CAAClB,OAAO,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE,OAAO,IAAI;MAChD,MAAMoB,EAAE,GAAG,IAAI,CAACnB,OAAqB;MACrC,MAAMoB,OAAO,GAAG,OAAOD,EAAE,CAACE,YAAY,KAAK,UAAU,GAAGF,EAAE,CAACE,YAAY,CAAC,CAAC,GAAG,IAAI;MAChF,MAAMN,GAAG,GAAGI,EAAE,CAACG,QAAQ,CAAC,CAAC;MAEzB,IAAI,IAAI,CAACvB,QAAQ,CAACa,QAAQ,KAAK,CAACG,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACQ,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;QAClFJ,EAAE,CAACK,aAAa,CAAC,OAAc,CAAC;QAChCL,EAAE,CAACM,iBAAiB,CAAC,2BAA2B,CAAC;QACjD,OAAO,KAAK;MAChB;MAEA,IAAIV,GAAG,IAAI,CAACK,OAAO,EAAE;QACjBD,EAAE,CAACK,aAAa,CAAC,OAAc,CAAC;QAChCL,EAAE,CAACM,iBAAiB,CAAC,sBAAsB,CAAC;QAC5C,OAAO,KAAK;MAChB;MAEAN,EAAE,CAACK,aAAa,CAAC,MAAa,CAAC;MAC/B,OAAO,IAAI;IACf;IAEUE,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAAC1B,OAAO,IAAI,IAAI,CAACD,QAAQ,EAAE;QAC/B,MAAMoB,EAAE,GAAG,IAAI,CAACnB,OAAqB;QACrCmB,EAAE,CAACQ,WAAW,CAAC,CAAC,IAAI,CAAC5B,QAAQ,CAACW,EAAE,EAAEC,QAAQ,CAAC;QAC3CQ,EAAE,CAACS,WAAW,CAAC,IAAI,CAAC7B,QAAQ,CAACa,QAAQ,CAAC;MAC1C;IACJ;EACJ;EAAC,IAAAiB,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAnC,UAAA,GAAAA,UAAA;EAAA,OAAAmC,SAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/plugins/DatePlugin" {
2
+ /**
3
+ * @file DatePlugin.ts
4
+ * @description Renders a sap.m.DatePicker natively bound to ISO date strings.
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 logic for Date strings.
11
+ */
12
+ export class DatePlugin extends BasePlugin {
13
+ render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string): Control;
14
+ validate(): boolean;
15
+ protected applyState(): void;
16
+ }
17
+ }
18
+ //# sourceMappingURL=DatePlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePlugin.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,+CAA+C,CAAC;IAC/D;;;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,UAAW,SAAQ,UAAU;QAC/B,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO;QAyBlG,QAAQ,IAAI,OAAO;QAsB1B,SAAS,CAAC,UAAU,IAAI,IAAI;KAO/B;CAEA"}
@@ -0,0 +1,2 @@
1
+ sap.ui.define(["./BasePlugin","sap/m/DatePicker"],function(t,e){"use strict";const a=t["BasePlugin"];class r extends a{render(t,a,r="meta"){this.metadata=t;this.control=new e({value:{path:`${r}>${a}`,type:"sap.ui.model.type.Date",formatOptions:{source:{pattern:"yyyy-MM-dd"},pattern:"yyyy-MM-dd"}},displayFormat:"long",editable:!t.ui?.readOnly,required:t.required,change:t=>{const e=t.getParameter("value");this.publishChange(e);this.validate()}});return this.control}validate(){if(!this.control||!this.metadata)return true;const t=this.control;const e=typeof t.isValidValue==="function"?t.isValidValue():true;const a=t.getValue();if(this.metadata.required&&(!a||typeof a!=="string"||a.trim()==="")){t.setValueState("Error");t.setValueStateText("A valid date is required.");return false}if(a&&!e){t.setValueState("Error");t.setValueStateText("Invalid date format.");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 i={__esModule:true};i.DatePlugin=r;return i});
2
+ //# sourceMappingURL=DatePlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePlugin.js","names":["BasePlugin","___BasePlugin","DatePlugin","render","fieldMetadata","bindingPath","modelName","this","metadata","control","DatePicker","value","path","type","formatOptions","source","pattern","displayFormat","editable","ui","readOnly","required","change","oEvent","val","getParameter","publishChange","validate","dp","isValid","isValidValue","getValue","trim","setValueState","setValueStateText","applyState","setEditable","setRequired","__exports","__esModule"],"sources":["DatePlugin.ts"],"sourcesContent":["/**\n * @file DatePlugin.ts\n * @description Renders a sap.m.DatePicker natively bound to ISO date strings.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport DatePicker from \"sap/m/DatePicker\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for Date strings.\n */\nexport class DatePlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n \n this.control = new DatePicker({\n value: {\n path: `${modelName}>${bindingPath}`,\n type: \"sap.ui.model.type.Date\",\n formatOptions: {\n source: { pattern: \"yyyy-MM-dd\" },\n pattern: \"yyyy-MM-dd\"\n }\n },\n displayFormat: \"long\",\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 dp = this.control as DatePicker;\n const isValid = typeof dp.isValidValue === \"function\" ? dp.isValidValue() : true;\n const val = dp.getValue();\n\n if (this.metadata.required && (!val || typeof val !== 'string' || val.trim() === \"\")) {\n dp.setValueState(\"Error\" as any);\n dp.setValueStateText(\"A valid date is required.\");\n return false;\n }\n\n if (val && !isValid) {\n dp.setValueState(\"Error\" as any);\n dp.setValueStateText(\"Invalid date format.\");\n return false;\n }\n\n dp.setValueState(\"None\" as any);\n return true;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n const dp = this.control as DatePicker;\n dp.setEditable(!this.metadata.ui?.readOnly);\n dp.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":"6EAAA,MAKSA,EAAUC,EAAA,cAQZ,MAAMC,UAAmBF,EACrBG,OAAOC,EAAkCC,EAAqBC,EAAoB,QACrFC,KAAKC,SAAWJ,EAEhBG,KAAKE,QAAU,IAAIC,EAAW,CAC1BC,MAAO,CACHC,KAAM,GAAGN,KAAaD,IACtBQ,KAAM,yBACNC,cAAe,CACXC,OAAQ,CAAEC,QAAS,cACnBA,QAAS,eAGjBC,cAAe,OACfC,UAAWd,EAAce,IAAIC,SAC7BC,SAAUjB,EAAciB,SACxBC,OAASC,IACL,MAAMC,EAAMD,EAAOE,aAAa,SAChClB,KAAKmB,cAAcF,GACnBjB,KAAKoB,cAIb,OAAOpB,KAAKE,OAChB,CAEOkB,WACH,IAAKpB,KAAKE,UAAYF,KAAKC,SAAU,OAAO,KAC5C,MAAMoB,EAAKrB,KAAKE,QAChB,MAAMoB,SAAiBD,EAAGE,eAAiB,WAAaF,EAAGE,eAAiB,KAC5E,MAAMN,EAAMI,EAAGG,WAEf,GAAIxB,KAAKC,SAASa,YAAcG,UAAcA,IAAQ,UAAYA,EAAIQ,SAAW,IAAK,CAClFJ,EAAGK,cAAc,SACjBL,EAAGM,kBAAkB,6BACrB,OAAO,KACX,CAEA,GAAIV,IAAQK,EAAS,CACjBD,EAAGK,cAAc,SACjBL,EAAGM,kBAAkB,wBACrB,OAAO,KACX,CAEAN,EAAGK,cAAc,QACjB,OAAO,IACX,CAEUE,aACN,GAAI5B,KAAKE,SAAWF,KAAKC,SAAU,CAC/B,MAAMoB,EAAKrB,KAAKE,QAChBmB,EAAGQ,aAAa7B,KAAKC,SAASW,IAAIC,UAClCQ,EAAGS,YAAY9B,KAAKC,SAASa,SACjC,CACJ,EACH,IAAAiB,EAAA,CAAAC,WAAA,MAAAD,EAAApC,aAAA,OAAAoC,CAAA","ignoreList":[]}
@@ -1,63 +1,69 @@
1
- /**
2
- * @file DatePlugin.ts
3
- * @description Renders a sap.m.DatePicker natively bound to ISO date strings.
4
- */
5
-
6
- import { BasePlugin } from "./BasePlugin";
7
- import { IFieldMetadata } from "../interfaces/ISchema";
8
- import DatePicker from "sap/m/DatePicker";
9
- import Control from "sap/ui/core/Control";
10
-
11
- /**
12
- * Handles rendering logic for Date strings.
13
- */
14
- export class DatePlugin extends BasePlugin {
15
- public render(fieldMetadata: IFieldMetadata, bindingPath: string): Control {
16
- this.metadata = fieldMetadata;
17
-
18
- this.control = new DatePicker({
19
- value: `{meta>${bindingPath}}`,
20
- valueFormat: "yyyy-MM-dd",
21
- displayFormat: "long",
22
- editable: !fieldMetadata.isReadOnly,
23
- required: fieldMetadata.isRequired,
24
- change: (oEvent: any) => {
25
- const val = oEvent.getParameter("value");
26
- this.publishChange(val);
27
- this.validate();
28
- }
29
- });
30
-
31
- return this.control;
32
- }
33
-
34
- public validate(): boolean {
35
- if (!this.control || !this.metadata) return true;
36
- const dp = this.control as DatePicker;
37
- const isValid = dp.isValidValue();
38
- const val = dp.getValue();
39
-
40
- if (this.metadata.isRequired && (!val || val.trim() === "")) {
41
- dp.setValueState("Error" as any);
42
- dp.setValueStateText("A valid date is required.");
43
- return false;
44
- }
45
-
46
- if (val && !isValid) {
47
- dp.setValueState("Error" as any);
48
- dp.setValueStateText("Invalid date format.");
49
- return false;
50
- }
51
-
52
- dp.setValueState("None" as any);
53
- return true;
54
- }
55
-
56
- protected applyState(): void {
57
- if (this.control && this.metadata) {
58
- const dp = this.control as DatePicker;
59
- dp.setEditable(!this.metadata.isReadOnly);
60
- dp.setRequired(this.metadata.isRequired);
61
- }
62
- }
63
- }
1
+ /**
2
+ * @file DatePlugin.ts
3
+ * @description Renders a sap.m.DatePicker natively bound to ISO date strings.
4
+ */
5
+
6
+ import { BasePlugin } from "./BasePlugin";
7
+ import { IPropertyMetadata } from "../interfaces/ISchema";
8
+ import DatePicker from "sap/m/DatePicker";
9
+ import Control from "sap/ui/core/Control";
10
+
11
+ /**
12
+ * Handles rendering logic for Date strings.
13
+ */
14
+ export class DatePlugin extends BasePlugin {
15
+ public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta"): Control {
16
+ this.metadata = fieldMetadata;
17
+
18
+ this.control = new DatePicker({
19
+ value: {
20
+ path: `${modelName}>${bindingPath}`,
21
+ type: "sap.ui.model.type.Date",
22
+ formatOptions: {
23
+ source: { pattern: "yyyy-MM-dd" },
24
+ pattern: "yyyy-MM-dd"
25
+ }
26
+ },
27
+ displayFormat: "long",
28
+ editable: !fieldMetadata.ui?.readOnly,
29
+ required: fieldMetadata.required,
30
+ change: (oEvent: any) => {
31
+ const val = oEvent.getParameter("value");
32
+ this.publishChange(val);
33
+ this.validate();
34
+ }
35
+ });
36
+
37
+ return this.control;
38
+ }
39
+
40
+ public validate(): boolean {
41
+ if (!this.control || !this.metadata) return true;
42
+ const dp = this.control as DatePicker;
43
+ const isValid = typeof dp.isValidValue === "function" ? dp.isValidValue() : true;
44
+ const val = dp.getValue();
45
+
46
+ if (this.metadata.required && (!val || typeof val !== 'string' || val.trim() === "")) {
47
+ dp.setValueState("Error" as any);
48
+ dp.setValueStateText("A valid date is required.");
49
+ return false;
50
+ }
51
+
52
+ if (val && !isValid) {
53
+ dp.setValueState("Error" as any);
54
+ dp.setValueStateText("Invalid date format.");
55
+ return false;
56
+ }
57
+
58
+ dp.setValueState("None" as any);
59
+ return true;
60
+ }
61
+
62
+ protected applyState(): void {
63
+ if (this.control && this.metadata) {
64
+ const dp = this.control as DatePicker;
65
+ dp.setEditable(!this.metadata.ui?.readOnly);
66
+ dp.setRequired(this.metadata.required);
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,68 @@
1
+ sap.ui.define(["./BasePlugin", "sap/m/DateTimePicker"], function (___BasePlugin, DateTimePicker) {
2
+ "use strict";
3
+
4
+ /**
5
+ * @file DateTimePlugin.ts
6
+ * @description Handles rendering logic for DateTime strings (timestamps).
7
+ */
8
+ const BasePlugin = ___BasePlugin["BasePlugin"];
9
+ /**
10
+ * Handles rendering and logic for timestamps/datetime inputs.
11
+ */
12
+ class DateTimePlugin extends BasePlugin {
13
+ render(fieldMetadata, bindingPath, modelName = "meta") {
14
+ this.metadata = fieldMetadata;
15
+ this.control = new DateTimePicker({
16
+ value: {
17
+ path: `${modelName}>${bindingPath}`,
18
+ type: "sap.ui.model.type.DateTime",
19
+ formatOptions: {
20
+ source: {
21
+ pattern: "yyyy-MM-dd'T'HH:mm:ss'Z'"
22
+ },
23
+ pattern: "yyyy-MM-dd'T'HH:mm:ss'Z'"
24
+ }
25
+ },
26
+ editable: !fieldMetadata.ui?.readOnly,
27
+ required: fieldMetadata.required,
28
+ change: oEvent => {
29
+ const val = oEvent.getParameter("value");
30
+ this.publishChange(val);
31
+ this.validate();
32
+ }
33
+ });
34
+ return this.control;
35
+ }
36
+ validate() {
37
+ if (!this.control || !this.metadata) return true;
38
+ const input = this.control;
39
+ const isValid = typeof input.isValidValue === "function" ? input.isValidValue() : true;
40
+ const val = input.getValue();
41
+ if (this.metadata.required && (!val || typeof val !== 'string' || val.trim() === "")) {
42
+ input.setValueState("Error");
43
+ input.setValueStateText("This field is required.");
44
+ return false;
45
+ }
46
+ if (val && !isValid) {
47
+ input.setValueState("Error");
48
+ input.setValueStateText("Invalid datetime format.");
49
+ return false;
50
+ }
51
+ input.setValueState("None");
52
+ return true;
53
+ }
54
+ applyState() {
55
+ if (this.control && this.metadata) {
56
+ const input = this.control;
57
+ input.setEditable(!this.metadata.ui?.readOnly);
58
+ input.setRequired(this.metadata.required);
59
+ }
60
+ }
61
+ }
62
+ var __exports = {
63
+ __esModule: true
64
+ };
65
+ __exports.DateTimePlugin = DateTimePlugin;
66
+ return __exports;
67
+ });
68
+ //# sourceMappingURL=DateTimePlugin-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateTimePlugin-dbg.js","names":["BasePlugin","___BasePlugin","DateTimePlugin","render","fieldMetadata","bindingPath","modelName","metadata","control","DateTimePicker","value","path","type","formatOptions","source","pattern","editable","ui","readOnly","required","change","oEvent","val","getParameter","publishChange","validate","input","isValid","isValidValue","getValue","trim","setValueState","setValueStateText","applyState","setEditable","setRequired","__exports","__esModule"],"sources":["DateTimePlugin.ts"],"sourcesContent":["/**\n * @file DateTimePlugin.ts\n * @description Handles rendering logic for DateTime strings (timestamps).\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport DateTimePicker from \"sap/m/DateTimePicker\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering and logic for timestamps/datetime inputs.\n */\nexport class DateTimePlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n \n this.control = new DateTimePicker({\n value: {\n path: `${modelName}>${bindingPath}`,\n type: \"sap.ui.model.type.DateTime\",\n formatOptions: {\n source: { pattern: \"yyyy-MM-dd'T'HH:mm:ss'Z'\" },\n pattern: \"yyyy-MM-dd'T'HH:mm:ss'Z'\"\n }\n },\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 DateTimePicker;\n const isValid = typeof input.isValidValue === \"function\" ? input.isValidValue() : true;\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 if (val && !isValid) {\n input.setValueState(\"Error\" as any);\n input.setValueStateText(\"Invalid datetime format.\");\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 DateTimePicker;\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,cAAc,SAASF,UAAU,CAAC;IACpCG,MAAMA,CAACC,aAAgC,EAAEC,WAAmB,EAAEC,SAAiB,GAAG,MAAM,EAAW;MACtG,IAAI,CAACC,QAAQ,GAAGH,aAAa;MAE7B,IAAI,CAACI,OAAO,GAAG,IAAIC,cAAc,CAAC;QAC9BC,KAAK,EAAE;UACHC,IAAI,EAAE,GAAGL,SAAS,IAAID,WAAW,EAAE;UACnCO,IAAI,EAAE,4BAA4B;UAClCC,aAAa,EAAE;YACXC,MAAM,EAAE;cAAEC,OAAO,EAAE;YAA2B,CAAC;YAC/CA,OAAO,EAAE;UACb;QACJ,CAAC;QACDC,QAAQ,EAAE,CAACZ,aAAa,CAACa,EAAE,EAAEC,QAAQ;QACrCC,QAAQ,EAAEf,aAAa,CAACe,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,CAACjB,OAAO;IACvB;IAEOiB,QAAQA,CAAA,EAAY;MACvB,IAAI,CAAC,IAAI,CAACjB,OAAO,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE,OAAO,IAAI;MAChD,MAAMmB,KAAK,GAAG,IAAI,CAAClB,OAAyB;MAC5C,MAAMmB,OAAO,GAAG,OAAOD,KAAK,CAACE,YAAY,KAAK,UAAU,GAAGF,KAAK,CAACE,YAAY,CAAC,CAAC,GAAG,IAAI;MACtF,MAAMN,GAAG,GAAGI,KAAK,CAACG,QAAQ,CAAC,CAAC;MAE5B,IAAI,IAAI,CAACtB,QAAQ,CAACY,QAAQ,KAAK,CAACG,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACQ,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;QAClFJ,KAAK,CAACK,aAAa,CAAC,OAAc,CAAC;QACnCL,KAAK,CAACM,iBAAiB,CAAC,yBAAyB,CAAC;QAClD,OAAO,KAAK;MAChB;MAEA,IAAIV,GAAG,IAAI,CAACK,OAAO,EAAE;QACjBD,KAAK,CAACK,aAAa,CAAC,OAAc,CAAC;QACnCL,KAAK,CAACM,iBAAiB,CAAC,0BAA0B,CAAC;QACnD,OAAO,KAAK;MAChB;MAEAN,KAAK,CAACK,aAAa,CAAC,MAAa,CAAC;MAClC,OAAO,IAAI;IACf;IAEUE,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAACzB,OAAO,IAAI,IAAI,CAACD,QAAQ,EAAE;QAC/B,MAAMmB,KAAK,GAAG,IAAI,CAAClB,OAAyB;QAC5CkB,KAAK,CAACQ,WAAW,CAAC,CAAC,IAAI,CAAC3B,QAAQ,CAACU,EAAE,EAAEC,QAAQ,CAAC;QAC9CQ,KAAK,CAACS,WAAW,CAAC,IAAI,CAAC5B,QAAQ,CAACY,QAAQ,CAAC;MAC7C;IACJ;EACJ;EAAC,IAAAiB,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAlC,cAAA,GAAAA,cAAA;EAAA,OAAAkC,SAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin" {
2
+ /**
3
+ * @file DateTimePlugin.ts
4
+ * @description Handles rendering logic for DateTime strings (timestamps).
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 timestamps/datetime inputs.
11
+ */
12
+ export class DateTimePlugin extends BasePlugin {
13
+ render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string): Control;
14
+ validate(): boolean;
15
+ protected applyState(): void;
16
+ }
17
+ }
18
+ //# sourceMappingURL=DateTimePlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateTimePlugin.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,mDAAmD,CAAC;IACnE;;;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,cAAe,SAAQ,UAAU;QACnC,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO;QAwBlG,QAAQ,IAAI,OAAO;QAsB1B,SAAS,CAAC,UAAU,IAAI,IAAI;KAO/B;CAEA"}
@@ -0,0 +1,2 @@
1
+ sap.ui.define(["./BasePlugin","sap/m/DateTimePicker"],function(t,e){"use strict";const a=t["BasePlugin"];class i extends a{render(t,a,i="meta"){this.metadata=t;this.control=new e({value:{path:`${i}>${a}`,type:"sap.ui.model.type.DateTime",formatOptions:{source:{pattern:"yyyy-MM-dd'T'HH:mm:ss'Z'"},pattern:"yyyy-MM-dd'T'HH:mm:ss'Z'"}},editable:!t.ui?.readOnly,required:t.required,change:t=>{const e=t.getParameter("value");this.publishChange(e);this.validate()}});return this.control}validate(){if(!this.control||!this.metadata)return true;const t=this.control;const e=typeof t.isValidValue==="function"?t.isValidValue():true;const a=t.getValue();if(this.metadata.required&&(!a||typeof a!=="string"||a.trim()==="")){t.setValueState("Error");t.setValueStateText("This field is required.");return false}if(a&&!e){t.setValueState("Error");t.setValueStateText("Invalid datetime format.");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.DateTimePlugin=i;return r});
2
+ //# sourceMappingURL=DateTimePlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateTimePlugin.js","names":["BasePlugin","___BasePlugin","DateTimePlugin","render","fieldMetadata","bindingPath","modelName","this","metadata","control","DateTimePicker","value","path","type","formatOptions","source","pattern","editable","ui","readOnly","required","change","oEvent","val","getParameter","publishChange","validate","input","isValid","isValidValue","getValue","trim","setValueState","setValueStateText","applyState","setEditable","setRequired","__exports","__esModule"],"sources":["DateTimePlugin.ts"],"sourcesContent":["/**\n * @file DateTimePlugin.ts\n * @description Handles rendering logic for DateTime strings (timestamps).\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport DateTimePicker from \"sap/m/DateTimePicker\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering and logic for timestamps/datetime inputs.\n */\nexport class DateTimePlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n \n this.control = new DateTimePicker({\n value: {\n path: `${modelName}>${bindingPath}`,\n type: \"sap.ui.model.type.DateTime\",\n formatOptions: {\n source: { pattern: \"yyyy-MM-dd'T'HH:mm:ss'Z'\" },\n pattern: \"yyyy-MM-dd'T'HH:mm:ss'Z'\"\n }\n },\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 DateTimePicker;\n const isValid = typeof input.isValidValue === \"function\" ? input.isValidValue() : true;\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 if (val && !isValid) {\n input.setValueState(\"Error\" as any);\n input.setValueStateText(\"Invalid datetime format.\");\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 DateTimePicker;\n input.setEditable(!this.metadata.ui?.readOnly);\n input.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":"iFAAA,MAKSA,EAAUC,EAAA,cAQZ,MAAMC,UAAuBF,EACzBG,OAAOC,EAAkCC,EAAqBC,EAAoB,QACrFC,KAAKC,SAAWJ,EAEhBG,KAAKE,QAAU,IAAIC,EAAe,CAC9BC,MAAO,CACHC,KAAM,GAAGN,KAAaD,IACtBQ,KAAM,6BACNC,cAAe,CACXC,OAAQ,CAAEC,QAAS,4BACnBA,QAAS,6BAGjBC,UAAWb,EAAcc,IAAIC,SAC7BC,SAAUhB,EAAcgB,SACxBC,OAASC,IACL,MAAMC,EAAMD,EAAOE,aAAa,SAChCjB,KAAKkB,cAAcF,GACnBhB,KAAKmB,cAIb,OAAOnB,KAAKE,OAChB,CAEOiB,WACH,IAAKnB,KAAKE,UAAYF,KAAKC,SAAU,OAAO,KAC5C,MAAMmB,EAAQpB,KAAKE,QACnB,MAAMmB,SAAiBD,EAAME,eAAiB,WAAaF,EAAME,eAAiB,KAClF,MAAMN,EAAMI,EAAMG,WAElB,GAAIvB,KAAKC,SAASY,YAAcG,UAAcA,IAAQ,UAAYA,EAAIQ,SAAW,IAAK,CAClFJ,EAAMK,cAAc,SACpBL,EAAMM,kBAAkB,2BACxB,OAAO,KACX,CAEA,GAAIV,IAAQK,EAAS,CACjBD,EAAMK,cAAc,SACpBL,EAAMM,kBAAkB,4BACxB,OAAO,KACX,CAEAN,EAAMK,cAAc,QACpB,OAAO,IACX,CAEUE,aACN,GAAI3B,KAAKE,SAAWF,KAAKC,SAAU,CAC/B,MAAMmB,EAAQpB,KAAKE,QACnBkB,EAAMQ,aAAa5B,KAAKC,SAASU,IAAIC,UACrCQ,EAAMS,YAAY7B,KAAKC,SAASY,SACpC,CACJ,EACH,IAAAiB,EAAA,CAAAC,WAAA,MAAAD,EAAAnC,iBAAA,OAAAmC,CAAA","ignoreList":[]}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @file DateTimePlugin.ts
3
+ * @description Handles rendering logic for DateTime strings (timestamps).
4
+ */
5
+
6
+ import { BasePlugin } from "./BasePlugin";
7
+ import { IPropertyMetadata } from "../interfaces/ISchema";
8
+ import DateTimePicker from "sap/m/DateTimePicker";
9
+ import Control from "sap/ui/core/Control";
10
+
11
+ /**
12
+ * Handles rendering and logic for timestamps/datetime inputs.
13
+ */
14
+ export class DateTimePlugin extends BasePlugin {
15
+ public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta"): Control {
16
+ this.metadata = fieldMetadata;
17
+
18
+ this.control = new DateTimePicker({
19
+ value: {
20
+ path: `${modelName}>${bindingPath}`,
21
+ type: "sap.ui.model.type.DateTime",
22
+ formatOptions: {
23
+ source: { pattern: "yyyy-MM-dd'T'HH:mm:ss'Z'" },
24
+ pattern: "yyyy-MM-dd'T'HH:mm:ss'Z'"
25
+ }
26
+ },
27
+ editable: !fieldMetadata.ui?.readOnly,
28
+ required: fieldMetadata.required,
29
+ change: (oEvent: any) => {
30
+ const val = oEvent.getParameter("value");
31
+ this.publishChange(val);
32
+ this.validate();
33
+ }
34
+ });
35
+
36
+ return this.control;
37
+ }
38
+
39
+ public validate(): boolean {
40
+ if (!this.control || !this.metadata) return true;
41
+ const input = this.control as DateTimePicker;
42
+ const isValid = typeof input.isValidValue === "function" ? input.isValidValue() : true;
43
+ const val = input.getValue();
44
+
45
+ if (this.metadata.required && (!val || typeof val !== 'string' || val.trim() === "")) {
46
+ input.setValueState("Error" as any);
47
+ input.setValueStateText("This field is required.");
48
+ return false;
49
+ }
50
+
51
+ if (val && !isValid) {
52
+ input.setValueState("Error" as any);
53
+ input.setValueStateText("Invalid datetime format.");
54
+ return false;
55
+ }
56
+
57
+ input.setValueState("None" as any);
58
+ return true;
59
+ }
60
+
61
+ protected applyState(): void {
62
+ if (this.control && this.metadata) {
63
+ const input = this.control as DateTimePicker;
64
+ input.setEditable(!this.metadata.ui?.readOnly);
65
+ input.setRequired(this.metadata.required);
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,67 @@
1
+ sap.ui.define(["./BasePlugin", "sap/m/Select", "sap/ui/core/Item"], function (___BasePlugin, Select, Item) {
2
+ "use strict";
3
+
4
+ /**
5
+ * @file DropdownPlugin.ts
6
+ * @description Renders a sap.m.Select utilizing the schema's valueHelp structure.
7
+ */
8
+ const BasePlugin = ___BasePlugin["BasePlugin"];
9
+ /**
10
+ * Handles rendering logic for dropdown inputs.
11
+ */
12
+ class DropdownPlugin extends BasePlugin {
13
+ render(fieldMetadata, bindingPath, modelName = "meta") {
14
+ this.metadata = fieldMetadata;
15
+ const select = new Select({
16
+ selectedKey: `{${modelName}>${bindingPath}}`,
17
+ enabled: !fieldMetadata.ui?.readOnly,
18
+ forceSelection: false,
19
+ change: oEvent => {
20
+ const item = oEvent.getParameter("selectedItem");
21
+ const val = item ? item.getKey() : "";
22
+ this.publishChange(val);
23
+ this.validate();
24
+ }
25
+ });
26
+ if (fieldMetadata.valueHelp && Array.isArray(fieldMetadata.valueHelp)) {
27
+ // Always add the empty placeholder so that 'required' checks can actually fire if the user hasn't made a choice
28
+ select.addItem(new Item({
29
+ key: "",
30
+ text: "--- Select ---"
31
+ }));
32
+ fieldMetadata.valueHelp.forEach(vh => {
33
+ select.addItem(new Item({
34
+ key: vh.key,
35
+ text: vh.text
36
+ }));
37
+ });
38
+ }
39
+ this.control = select;
40
+ return this.control;
41
+ }
42
+ validate() {
43
+ if (!this.control || !this.metadata) return true;
44
+ const select = this.control;
45
+ const val = select.getSelectedKey();
46
+ if (this.metadata.required && (!val || val.trim() === "")) {
47
+ select.setValueState("Error");
48
+ select.setValueStateText("Selection is required.");
49
+ return false;
50
+ }
51
+ select.setValueState("None");
52
+ return true;
53
+ }
54
+ applyState() {
55
+ if (this.control && this.metadata) {
56
+ const select = this.control;
57
+ select.setEnabled(!this.metadata.ui?.readOnly);
58
+ }
59
+ }
60
+ }
61
+ var __exports = {
62
+ __esModule: true
63
+ };
64
+ __exports.DropdownPlugin = DropdownPlugin;
65
+ return __exports;
66
+ });
67
+ //# sourceMappingURL=DropdownPlugin-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownPlugin-dbg.js","names":["BasePlugin","___BasePlugin","DropdownPlugin","render","fieldMetadata","bindingPath","modelName","metadata","select","Select","selectedKey","enabled","ui","readOnly","forceSelection","change","oEvent","item","getParameter","val","getKey","publishChange","validate","valueHelp","Array","isArray","addItem","Item","key","text","forEach","vh","control","getSelectedKey","required","trim","setValueState","setValueStateText","applyState","setEnabled","__exports","__esModule"],"sources":["DropdownPlugin.ts"],"sourcesContent":["/**\n * @file DropdownPlugin.ts\n * @description Renders a sap.m.Select utilizing the schema's valueHelp structure.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport Select from \"sap/m/Select\";\nimport Item from \"sap/ui/core/Item\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for dropdown inputs.\n */\nexport class DropdownPlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n \n const select = new Select({\n selectedKey: `{${modelName}>${bindingPath}}`,\n enabled: !fieldMetadata.ui?.readOnly,\n forceSelection: false,\n change: (oEvent: any) => {\n const item = oEvent.getParameter(\"selectedItem\");\n const val = item ? item.getKey() : \"\";\n this.publishChange(val);\n this.validate();\n }\n });\n\n if (fieldMetadata.valueHelp && Array.isArray(fieldMetadata.valueHelp)) {\n // Always add the empty placeholder so that 'required' checks can actually fire if the user hasn't made a choice\n select.addItem(new Item({ key: \"\", text: \"--- Select ---\" }));\n \n fieldMetadata.valueHelp.forEach(vh => {\n select.addItem(new Item({ key: vh.key, text: vh.text }));\n });\n }\n\n this.control = select;\n return this.control;\n }\n\n public validate(): boolean {\n if (!this.control || !this.metadata) return true;\n const select = this.control as Select;\n const val = select.getSelectedKey();\n\n if (this.metadata.required && (!val || val.trim() === \"\")) {\n select.setValueState(\"Error\" as any);\n select.setValueStateText(\"Selection is required.\");\n return false;\n }\n\n select.setValueState(\"None\" as any);\n return true;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n const select = this.control as Select;\n select.setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;EAHA,MAKSA,UAAU,GAAAC,aAAA;EAMnB;AACA;AACA;EACO,MAAMC,cAAc,SAASF,UAAU,CAAC;IACpCG,MAAMA,CAACC,aAAgC,EAAEC,WAAmB,EAAEC,SAAiB,GAAG,MAAM,EAAW;MACtG,IAAI,CAACC,QAAQ,GAAGH,aAAa;MAE7B,MAAMI,MAAM,GAAG,IAAIC,MAAM,CAAC;QACtBC,WAAW,EAAE,IAAIJ,SAAS,IAAID,WAAW,GAAG;QAC5CM,OAAO,EAAE,CAACP,aAAa,CAACQ,EAAE,EAAEC,QAAQ;QACpCC,cAAc,EAAE,KAAK;QACrBC,MAAM,EAAGC,MAAW,IAAK;UACrB,MAAMC,IAAI,GAAGD,MAAM,CAACE,YAAY,CAAC,cAAc,CAAC;UAChD,MAAMC,GAAG,GAAGF,IAAI,GAAGA,IAAI,CAACG,MAAM,CAAC,CAAC,GAAG,EAAE;UACrC,IAAI,CAACC,aAAa,CAACF,GAAG,CAAC;UACvB,IAAI,CAACG,QAAQ,CAAC,CAAC;QACnB;MACJ,CAAC,CAAC;MAEF,IAAIlB,aAAa,CAACmB,SAAS,IAAIC,KAAK,CAACC,OAAO,CAACrB,aAAa,CAACmB,SAAS,CAAC,EAAE;QACnE;QACAf,MAAM,CAACkB,OAAO,CAAC,IAAIC,IAAI,CAAC;UAAEC,GAAG,EAAE,EAAE;UAAEC,IAAI,EAAE;QAAiB,CAAC,CAAC,CAAC;QAE7DzB,aAAa,CAACmB,SAAS,CAACO,OAAO,CAACC,EAAE,IAAI;UAClCvB,MAAM,CAACkB,OAAO,CAAC,IAAIC,IAAI,CAAC;YAAEC,GAAG,EAAEG,EAAE,CAACH,GAAG;YAAEC,IAAI,EAAEE,EAAE,CAACF;UAAK,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC;MACN;MAEA,IAAI,CAACG,OAAO,GAAGxB,MAAM;MACrB,OAAO,IAAI,CAACwB,OAAO;IACvB;IAEOV,QAAQA,CAAA,EAAY;MACvB,IAAI,CAAC,IAAI,CAACU,OAAO,IAAI,CAAC,IAAI,CAACzB,QAAQ,EAAE,OAAO,IAAI;MAChD,MAAMC,MAAM,GAAG,IAAI,CAACwB,OAAiB;MACrC,MAAMb,GAAG,GAAGX,MAAM,CAACyB,cAAc,CAAC,CAAC;MAEnC,IAAI,IAAI,CAAC1B,QAAQ,CAAC2B,QAAQ,KAAK,CAACf,GAAG,IAAIA,GAAG,CAACgB,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;QACvD3B,MAAM,CAAC4B,aAAa,CAAC,OAAc,CAAC;QACpC5B,MAAM,CAAC6B,iBAAiB,CAAC,wBAAwB,CAAC;QAClD,OAAO,KAAK;MAChB;MAEA7B,MAAM,CAAC4B,aAAa,CAAC,MAAa,CAAC;MACnC,OAAO,IAAI;IACf;IAEUE,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAACN,OAAO,IAAI,IAAI,CAACzB,QAAQ,EAAE;QAC/B,MAAMC,MAAM,GAAG,IAAI,CAACwB,OAAiB;QACrCxB,MAAM,CAAC+B,UAAU,CAAC,CAAC,IAAI,CAAChC,QAAQ,CAACK,EAAE,EAAEC,QAAQ,CAAC;MAClD;IACJ;EACJ;EAAC,IAAA2B,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAtC,cAAA,GAAAA,cAAA;EAAA,OAAAsC,SAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin" {
2
+ /**
3
+ * @file DropdownPlugin.ts
4
+ * @description Renders a sap.m.Select utilizing the schema's valueHelp structure.
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 logic for dropdown inputs.
11
+ */
12
+ export class DropdownPlugin extends BasePlugin {
13
+ render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string): Control;
14
+ validate(): boolean;
15
+ protected applyState(): void;
16
+ }
17
+ }
18
+ //# sourceMappingURL=DropdownPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownPlugin.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,mDAAmD,CAAC;IACnE;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;IAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAGlF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;OAEG;IACH,MAAa,cAAe,SAAQ,UAAU;QACnC,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO;QA4BlG,QAAQ,IAAI,OAAO;QAe1B,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
@@ -0,0 +1,2 @@
1
+ sap.ui.define(["./BasePlugin","sap/m/Select","sap/ui/core/Item"],function(e,t,a){"use strict";const r=e["BasePlugin"];class s extends r{render(e,r,s="meta"){this.metadata=e;const n=new t({selectedKey:`{${s}>${r}}`,enabled:!e.ui?.readOnly,forceSelection:false,change:e=>{const t=e.getParameter("selectedItem");const a=t?t.getKey():"";this.publishChange(a);this.validate()}});if(e.valueHelp&&Array.isArray(e.valueHelp)){n.addItem(new a({key:"",text:"--- Select ---"}));e.valueHelp.forEach(e=>{n.addItem(new a({key:e.key,text:e.text}))})}this.control=n;return this.control}validate(){if(!this.control||!this.metadata)return true;const e=this.control;const t=e.getSelectedKey();if(this.metadata.required&&(!t||t.trim()==="")){e.setValueState("Error");e.setValueStateText("Selection is required.");return false}e.setValueState("None");return true}applyState(){if(this.control&&this.metadata){const e=this.control;e.setEnabled(!this.metadata.ui?.readOnly)}}}var n={__esModule:true};n.DropdownPlugin=s;return n});
2
+ //# sourceMappingURL=DropdownPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownPlugin.js","names":["BasePlugin","___BasePlugin","DropdownPlugin","render","fieldMetadata","bindingPath","modelName","this","metadata","select","Select","selectedKey","enabled","ui","readOnly","forceSelection","change","oEvent","item","getParameter","val","getKey","publishChange","validate","valueHelp","Array","isArray","addItem","Item","key","text","forEach","vh","control","getSelectedKey","required","trim","setValueState","setValueStateText","applyState","setEnabled","__exports","__esModule"],"sources":["DropdownPlugin.ts"],"sourcesContent":["/**\n * @file DropdownPlugin.ts\n * @description Renders a sap.m.Select utilizing the schema's valueHelp structure.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport Select from \"sap/m/Select\";\nimport Item from \"sap/ui/core/Item\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for dropdown inputs.\n */\nexport class DropdownPlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n \n const select = new Select({\n selectedKey: `{${modelName}>${bindingPath}}`,\n enabled: !fieldMetadata.ui?.readOnly,\n forceSelection: false,\n change: (oEvent: any) => {\n const item = oEvent.getParameter(\"selectedItem\");\n const val = item ? item.getKey() : \"\";\n this.publishChange(val);\n this.validate();\n }\n });\n\n if (fieldMetadata.valueHelp && Array.isArray(fieldMetadata.valueHelp)) {\n // Always add the empty placeholder so that 'required' checks can actually fire if the user hasn't made a choice\n select.addItem(new Item({ key: \"\", text: \"--- Select ---\" }));\n \n fieldMetadata.valueHelp.forEach(vh => {\n select.addItem(new Item({ key: vh.key, text: vh.text }));\n });\n }\n\n this.control = select;\n return this.control;\n }\n\n public validate(): boolean {\n if (!this.control || !this.metadata) return true;\n const select = this.control as Select;\n const val = select.getSelectedKey();\n\n if (this.metadata.required && (!val || val.trim() === \"\")) {\n select.setValueState(\"Error\" as any);\n select.setValueStateText(\"Selection is required.\");\n return false;\n }\n\n select.setValueState(\"None\" as any);\n return true;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n const select = this.control as Select;\n select.setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"8FAAA,MAKSA,EAAUC,EAAA,cASZ,MAAMC,UAAuBF,EACzBG,OAAOC,EAAkCC,EAAqBC,EAAoB,QACrFC,KAAKC,SAAWJ,EAEhB,MAAMK,EAAS,IAAIC,EAAO,CACtBC,YAAa,IAAIL,KAAaD,KAC9BO,SAAUR,EAAcS,IAAIC,SAC5BC,eAAgB,MAChBC,OAASC,IACL,MAAMC,EAAOD,EAAOE,aAAa,gBACjC,MAAMC,EAAMF,EAAOA,EAAKG,SAAW,GACnCd,KAAKe,cAAcF,GACnBb,KAAKgB,cAIb,GAAInB,EAAcoB,WAAaC,MAAMC,QAAQtB,EAAcoB,WAAY,CAEnEf,EAAOkB,QAAQ,IAAIC,EAAK,CAAEC,IAAK,GAAIC,KAAM,oBAEzC1B,EAAcoB,UAAUO,QAAQC,IAC5BvB,EAAOkB,QAAQ,IAAIC,EAAK,CAAEC,IAAKG,EAAGH,IAAKC,KAAME,EAAGF,SAExD,CAEAvB,KAAK0B,QAAUxB,EACf,OAAOF,KAAK0B,OAChB,CAEOV,WACH,IAAKhB,KAAK0B,UAAY1B,KAAKC,SAAU,OAAO,KAC5C,MAAMC,EAASF,KAAK0B,QACpB,MAAMb,EAAMX,EAAOyB,iBAEnB,GAAI3B,KAAKC,SAAS2B,YAAcf,GAAOA,EAAIgB,SAAW,IAAK,CACvD3B,EAAO4B,cAAc,SACrB5B,EAAO6B,kBAAkB,0BACzB,OAAO,KACX,CAEA7B,EAAO4B,cAAc,QACrB,OAAO,IACX,CAEUE,aACN,GAAIhC,KAAK0B,SAAW1B,KAAKC,SAAU,CAC/B,MAAMC,EAASF,KAAK0B,QACpBxB,EAAO+B,YAAYjC,KAAKC,SAASK,IAAIC,SACzC,CACJ,EACH,IAAA2B,EAAA,CAAAC,WAAA,MAAAD,EAAAvC,iBAAA,OAAAuC,CAAA","ignoreList":[]}