@siliconst/metaui 1.0.2 → 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 (183) hide show
  1. package/README.md +134 -123
  2. package/package.json +3 -2
  3. package/src/nz/co/siliconst/ui5/metaui/.library +7 -7
  4. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js +299 -163
  5. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js.map +1 -1
  6. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts +54 -6
  7. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts.map +1 -1
  8. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js +1 -1
  9. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js.map +1 -1
  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 +51 -43
  12. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +1 -1
  13. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +5 -0
  14. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +1 -1
  15. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js +1 -1
  16. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +1 -1
  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 +81 -58
  19. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
  20. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +5 -12
  21. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
  22. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
  23. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
  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 +65 -50
  26. package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js.map +1 -1
  27. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts +9 -0
  28. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts.map +1 -1
  29. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js +1 -1
  30. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js.map +1 -1
  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 +72 -59
  33. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
  34. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +6 -4
  35. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
  36. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
  37. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
  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 +145 -36
  40. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
  41. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +13 -8
  42. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
  43. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
  44. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
  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 +55 -55
  47. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -1
  48. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -1
  49. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -1
  50. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +56 -56
  51. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js +1 -1
  52. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js.map +1 -1
  53. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts.map +1 -1
  54. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.ts +29 -29
  55. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager-dbg.js +1 -1
  56. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager-dbg.js.map +1 -1
  57. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts +6 -12
  58. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts.map +1 -1
  59. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.ts +21 -26
  60. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js +1 -1
  61. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
  62. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +3 -20
  63. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
  64. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +14 -33
  65. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js +1 -1
  66. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
  67. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +33 -43
  68. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
  69. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +70 -70
  70. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js +23 -38
  71. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js.map +1 -1
  72. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts +4 -17
  73. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts.map +1 -1
  74. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js +1 -1
  75. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js.map +1 -1
  76. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.ts +22 -34
  77. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +98 -56
  78. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
  79. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts +7 -7
  80. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
  81. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +1 -1
  82. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
  83. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +97 -60
  84. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +102 -90
  85. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
  86. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts +4 -8
  87. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
  88. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
  89. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
  90. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +119 -102
  91. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +43 -32
  92. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -1
  93. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +22 -17
  94. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
  95. package/src/nz/co/siliconst/ui5/metaui/library.d.ts.map +1 -1
  96. package/src/nz/co/siliconst/ui5/metaui/library.js +1 -1
  97. package/src/nz/co/siliconst/ui5/metaui/library.js.map +1 -1
  98. package/src/nz/co/siliconst/ui5/metaui/library.ts +55 -43
  99. package/src/nz/co/siliconst/ui5/metaui/manifest.json +1 -0
  100. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin-dbg.js +68 -0
  101. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin-dbg.js.map +1 -0
  102. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.d.ts +15 -0
  103. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.d.ts.map +1 -0
  104. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.js +2 -0
  105. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.js.map +1 -0
  106. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.ts +71 -0
  107. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js +54 -59
  108. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js.map +1 -1
  109. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts +8 -27
  110. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts.map +1 -1
  111. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js +1 -1
  112. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js.map +1 -1
  113. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.ts +56 -58
  114. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js +41 -42
  115. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js.map +1 -1
  116. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts +2 -2
  117. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts.map +1 -1
  118. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js +1 -1
  119. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js.map +1 -1
  120. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.ts +41 -42
  121. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin-dbg.js +68 -60
  122. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin-dbg.js.map +1 -1
  123. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.d.ts +2 -2
  124. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.d.ts.map +1 -1
  125. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.js +1 -1
  126. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.js.map +1 -1
  127. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.ts +69 -63
  128. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin-dbg.js +68 -0
  129. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin-dbg.js.map +1 -0
  130. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.d.ts +18 -0
  131. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.d.ts.map +1 -0
  132. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.js +2 -0
  133. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.js.map +1 -0
  134. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.ts +68 -0
  135. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js +66 -66
  136. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js.map +1 -1
  137. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts +2 -2
  138. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts.map +1 -1
  139. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js +1 -1
  140. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js.map +1 -1
  141. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.ts +65 -65
  142. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin-dbg.js +55 -53
  143. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin-dbg.js.map +1 -1
  144. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.d.ts +3 -3
  145. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.d.ts.map +1 -1
  146. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js +1 -1
  147. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js.map +1 -1
  148. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.ts +56 -55
  149. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js +56 -53
  150. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js.map +1 -1
  151. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts +2 -2
  152. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts.map +1 -1
  153. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js +1 -1
  154. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js.map +1 -1
  155. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.ts +58 -55
  156. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin-dbg.js +43 -0
  157. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin-dbg.js.map +1 -0
  158. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.d.ts +18 -0
  159. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.d.ts.map +1 -0
  160. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.js +2 -0
  161. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.js.map +1 -0
  162. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.ts +42 -0
  163. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin-dbg.js +58 -0
  164. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin-dbg.js.map +1 -0
  165. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.d.ts +18 -0
  166. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.d.ts.map +1 -0
  167. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.js +2 -0
  168. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.js.map +1 -0
  169. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.ts +58 -0
  170. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin-dbg.js +74 -0
  171. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin-dbg.js.map +1 -0
  172. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.d.ts +18 -0
  173. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.d.ts.map +1 -0
  174. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.js +2 -0
  175. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.js.map +1 -0
  176. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.ts +71 -0
  177. package/ui5.yaml +3 -3
  178. package/test-resources/App.js +0 -11
  179. package/test-resources/Main.controller.js +0 -73
  180. package/test-resources/Main.view.xml +0 -42
  181. package/test-resources/index.html +0 -21
  182. package/test-resources/mockData.json +0 -27
  183. package/test-resources/mockSchema.json +0 -98
@@ -1,43 +1,42 @@
1
- sap.ui.define(["./BasePlugin", "sap/m/Switch"], function (___BasePlugin, Switch) {
2
- "use strict";
3
-
4
- /**
5
- * @file BooleanPlugin.ts
6
- * @description Renders a sap.m.Switch for boolean states.
7
- */
8
- const BasePlugin = ___BasePlugin["BasePlugin"];
9
- /**
10
- * Handles rendering logic for toggleable booleans.
11
- */
12
- class BooleanPlugin extends BasePlugin {
13
- render(fieldMetadata, bindingPath) {
14
- this.metadata = fieldMetadata;
15
- this.control = new Switch({
16
- state: `{meta>${bindingPath}}`,
17
- enabled: !fieldMetadata.isReadOnly,
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 switches inherently have a state (true/false) so they 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.isReadOnly);
34
- }
35
- }
36
- }
37
- var __exports = {
38
- __esModule: true
39
- };
40
- __exports.BooleanPlugin = BooleanPlugin;
41
- return __exports;
42
- });
1
+ sap.ui.define(["./BasePlugin", "sap/m/CheckBox"], function (___BasePlugin, CheckBox) {
2
+ "use strict";
3
+
4
+ /**
5
+ * @file BooleanPlugin.ts
6
+ * @description Renders a sap.m.Switch for boolean states.
7
+ */
8
+ const BasePlugin = ___BasePlugin["BasePlugin"];
9
+ /**
10
+ * Handles rendering logic for toggleable booleans.
11
+ */
12
+ class BooleanPlugin extends BasePlugin {
13
+ render(fieldMetadata, bindingPath, modelName = "meta") {
14
+ this.metadata = fieldMetadata;
15
+ this.control = new CheckBox({
16
+ selected: `{${modelName}>${bindingPath}}`,
17
+ enabled: !fieldMetadata.ui?.readOnly,
18
+ select: oEvent => {
19
+ const val = oEvent.getParameter("selected");
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
+ this.control.setEnabled(!this.metadata.ui?.readOnly);
33
+ }
34
+ }
35
+ }
36
+ var __exports = {
37
+ __esModule: true
38
+ };
39
+ __exports.BooleanPlugin = BooleanPlugin;
40
+ return __exports;
41
+ });
43
42
  //# sourceMappingURL=BooleanPlugin-dbg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BooleanPlugin-dbg.js","names":["BasePlugin","___BasePlugin","BooleanPlugin","render","fieldMetadata","bindingPath","metadata","control","Switch","state","enabled","isReadOnly","change","oEvent","val","getParameter","publishChange","validate","applyState","sw","setEnabled","__exports","__esModule"],"sources":["BooleanPlugin.ts"],"sourcesContent":["/**\r\n * @file BooleanPlugin.ts\r\n * @description Renders a sap.m.Switch for boolean states.\r\n */\r\n\r\nimport { BasePlugin } from \"./BasePlugin\";\r\nimport { IFieldMetadata } from \"../interfaces/ISchema\";\r\nimport Switch from \"sap/m/Switch\";\r\nimport Control from \"sap/ui/core/Control\";\r\n\r\n/**\r\n * Handles rendering logic for toggleable booleans.\r\n */\r\nexport class BooleanPlugin extends BasePlugin {\r\n public render(fieldMetadata: IFieldMetadata, bindingPath: string): Control {\r\n this.metadata = fieldMetadata;\r\n \r\n this.control = new Switch({\r\n state: `{meta>${bindingPath}}`,\r\n enabled: !fieldMetadata.isReadOnly,\r\n change: (oEvent: any) => {\r\n const val = oEvent.getParameter(\"state\");\r\n this.publishChange(val);\r\n this.validate();\r\n }\r\n });\r\n\r\n return this.control;\r\n }\r\n\r\n public validate(): boolean {\r\n // Boolean switches inherently have a state (true/false) so they rarely fail validation.\r\n return true;\r\n }\r\n\r\n protected applyState(): void {\r\n if (this.control && this.metadata) {\r\n const sw = this.control as Switch;\r\n sw.setEnabled(!this.metadata.isReadOnly);\r\n }\r\n }\r\n}\r\n"],"mappings":";;;EAAA;AACA;AACA;AACA;EAHA,MAKSA,UAAU,GAAAC,aAAA;EAKnB;AACA;AACA;EACO,MAAMC,aAAa,SAASF,UAAU,CAAC;IACnCG,MAAMA,CAACC,aAA6B,EAAEC,WAAmB,EAAW;MACvE,IAAI,CAACC,QAAQ,GAAGF,aAAa;MAE7B,IAAI,CAACG,OAAO,GAAG,IAAIC,MAAM,CAAC;QACtBC,KAAK,EAAE,SAASJ,WAAW,GAAG;QAC9BK,OAAO,EAAE,CAACN,aAAa,CAACO,UAAU;QAClCC,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,CAACV,OAAO;IACvB;IAEOU,QAAQA,CAAA,EAAY;MACvB;MACA,OAAO,IAAI;IACf;IAEUC,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAACX,OAAO,IAAI,IAAI,CAACD,QAAQ,EAAE;QAC/B,MAAMa,EAAE,GAAG,IAAI,CAACZ,OAAiB;QACjCY,EAAE,CAACC,UAAU,CAAC,CAAC,IAAI,CAACd,QAAQ,CAACK,UAAU,CAAC;MAC5C;IACJ;EACJ;EAAC,IAAAU,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAnB,aAAA,GAAAA,aAAA;EAAA,OAAAmB,SAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"BooleanPlugin-dbg.js","names":["BasePlugin","___BasePlugin","BooleanPlugin","render","fieldMetadata","bindingPath","modelName","metadata","control","CheckBox","selected","enabled","ui","readOnly","select","oEvent","val","getParameter","publishChange","validate","applyState","setEnabled","__exports","__esModule"],"sources":["BooleanPlugin.ts"],"sourcesContent":["/**\n * @file BooleanPlugin.ts\n * @description Renders a sap.m.Switch for boolean states.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport CheckBox from \"sap/m/CheckBox\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for toggleable booleans.\n */\nexport class BooleanPlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n \n this.control = new CheckBox({\n selected: `{${modelName}>${bindingPath}}`,\n enabled: !fieldMetadata.ui?.readOnly,\n select: (oEvent: any) => {\n const val = oEvent.getParameter(\"selected\");\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 (this.control as CheckBox).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;EAHA,MAKSA,UAAU,GAAAC,aAAA;EAKnB;AACA;AACA;EACO,MAAMC,aAAa,SAASF,UAAU,CAAC;IACnCG,MAAMA,CAACC,aAAgC,EAAEC,WAAmB,EAAEC,SAAiB,GAAG,MAAM,EAAW;MACtG,IAAI,CAACC,QAAQ,GAAGH,aAAa;MAE7B,IAAI,CAACI,OAAO,GAAG,IAAIC,QAAQ,CAAC;QACxBC,QAAQ,EAAE,IAAIJ,SAAS,IAAID,WAAW,GAAG;QACzCM,OAAO,EAAE,CAACP,aAAa,CAACQ,EAAE,EAAEC,QAAQ;QACpCC,MAAM,EAAGC,MAAW,IAAK;UACrB,MAAMC,GAAG,GAAGD,MAAM,CAACE,YAAY,CAAC,UAAU,CAAC;UAC3C,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;QAC9B,IAAI,CAACC,OAAO,CAAca,UAAU,CAAC,CAAC,IAAI,CAACd,QAAQ,CAACK,EAAE,EAAEC,QAAQ,CAAC;MACtE;IACJ;EACJ;EAAC,IAAAS,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAApB,aAAA,GAAAA,aAAA;EAAA,OAAAoB,SAAA;AAAA","ignoreList":[]}
@@ -4,13 +4,13 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin" {
4
4
  * @description Renders a sap.m.Switch for boolean states.
5
5
  */
6
6
  import { BasePlugin } from "nz/co/siliconst/ui5/metaui/plugins/BasePlugin";
7
- import { IFieldMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
7
+ import { IPropertyMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
8
8
  import Control from "sap/ui/core/Control";
9
9
  /**
10
10
  * Handles rendering logic for toggleable booleans.
11
11
  */
12
12
  export class BooleanPlugin extends BasePlugin {
13
- render(fieldMetadata: IFieldMetadata, bindingPath: string): Control;
13
+ render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string): Control;
14
14
  validate(): boolean;
15
15
  protected applyState(): void;
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BooleanPlugin.d.ts","sourceRoot":"..\\..\\..\\..\\..\\..\\..\\..","sources":["src\\nz\\co\\siliconst\\ui5\\metaui\\plugins\\BooleanPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,kDAAkD,CAAC;IAClE;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;IAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;IAE/E,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;OAEG;IACH,MAAa,aAAc,SAAQ,UAAU;QAClC,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;QAgBnE,QAAQ,IAAI,OAAO;QAK1B,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
1
+ {"version":3,"file":"BooleanPlugin.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,kDAAkD,CAAC;IAClE;;;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,aAAc,SAAQ,UAAU;QAClC,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO;QAgBlG,QAAQ,IAAI,OAAO;QAK1B,SAAS,CAAC,UAAU,IAAI,IAAI;KAK/B;CAEA"}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["./BasePlugin","sap/m/Switch"],function(t,e){"use strict";const a=t["BasePlugin"];class s extends a{render(t,a){this.metadata=t;this.control=new e({state:`{meta>${a}}`,enabled:!t.isReadOnly,change:t=>{const e=t.getParameter("state");this.publishChange(e);this.validate()}});return this.control}validate(){return true}applyState(){if(this.control&&this.metadata){const t=this.control;t.setEnabled(!this.metadata.isReadOnly)}}}var n={__esModule:true};n.BooleanPlugin=s;return n});
1
+ sap.ui.define(["./BasePlugin","sap/m/CheckBox"],function(e,t){"use strict";const a=e["BasePlugin"];class s extends a{render(e,a,s="meta"){this.metadata=e;this.control=new t({selected:`{${s}>${a}}`,enabled:!e.ui?.readOnly,select:e=>{const t=e.getParameter("selected");this.publishChange(t);this.validate()}});return this.control}validate(){return true}applyState(){if(this.control&&this.metadata){this.control.setEnabled(!this.metadata.ui?.readOnly)}}}var n={__esModule:true};n.BooleanPlugin=s;return n});
2
2
  //# sourceMappingURL=BooleanPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BooleanPlugin.js","names":["BasePlugin","___BasePlugin","BooleanPlugin","render","fieldMetadata","bindingPath","this","metadata","control","Switch","state","enabled","isReadOnly","change","oEvent","val","getParameter","publishChange","validate","applyState","sw","setEnabled","__exports","__esModule"],"sources":["BooleanPlugin.ts"],"sourcesContent":["/**\r\n * @file BooleanPlugin.ts\r\n * @description Renders a sap.m.Switch for boolean states.\r\n */\r\n\r\nimport { BasePlugin } from \"./BasePlugin\";\r\nimport { IFieldMetadata } from \"../interfaces/ISchema\";\r\nimport Switch from \"sap/m/Switch\";\r\nimport Control from \"sap/ui/core/Control\";\r\n\r\n/**\r\n * Handles rendering logic for toggleable booleans.\r\n */\r\nexport class BooleanPlugin extends BasePlugin {\r\n public render(fieldMetadata: IFieldMetadata, bindingPath: string): Control {\r\n this.metadata = fieldMetadata;\r\n \r\n this.control = new Switch({\r\n state: `{meta>${bindingPath}}`,\r\n enabled: !fieldMetadata.isReadOnly,\r\n change: (oEvent: any) => {\r\n const val = oEvent.getParameter(\"state\");\r\n this.publishChange(val);\r\n this.validate();\r\n }\r\n });\r\n\r\n return this.control;\r\n }\r\n\r\n public validate(): boolean {\r\n // Boolean switches inherently have a state (true/false) so they rarely fail validation.\r\n return true;\r\n }\r\n\r\n protected applyState(): void {\r\n if (this.control && this.metadata) {\r\n const sw = this.control as Switch;\r\n sw.setEnabled(!this.metadata.isReadOnly);\r\n }\r\n }\r\n}\r\n"],"mappings":"yEAAA,MAKSA,EAAUC,EAAA,cAQZ,MAAMC,UAAsBF,EACxBG,OAAOC,EAA+BC,GACzCC,KAAKC,SAAWH,EAEhBE,KAAKE,QAAU,IAAIC,EAAO,CACtBC,MAAO,SAASL,KAChBM,SAAUP,EAAcQ,WACxBC,OAASC,IACL,MAAMC,EAAMD,EAAOE,aAAa,SAChCV,KAAKW,cAAcF,GACnBT,KAAKY,cAIb,OAAOZ,KAAKE,OAChB,CAEOU,WAEH,OAAO,IACX,CAEUC,aACN,GAAIb,KAAKE,SAAWF,KAAKC,SAAU,CAC/B,MAAMa,EAAKd,KAAKE,QAChBY,EAAGC,YAAYf,KAAKC,SAASK,WACjC,CACJ,EACH,IAAAU,EAAA,CAAAC,WAAA,MAAAD,EAAApB,gBAAA,OAAAoB,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"BooleanPlugin.js","names":["BasePlugin","___BasePlugin","BooleanPlugin","render","fieldMetadata","bindingPath","modelName","this","metadata","control","CheckBox","selected","enabled","ui","readOnly","select","oEvent","val","getParameter","publishChange","validate","applyState","setEnabled","__exports","__esModule"],"sources":["BooleanPlugin.ts"],"sourcesContent":["/**\n * @file BooleanPlugin.ts\n * @description Renders a sap.m.Switch for boolean states.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\nimport CheckBox from \"sap/m/CheckBox\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for toggleable booleans.\n */\nexport class BooleanPlugin extends BasePlugin {\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\"): Control {\n this.metadata = fieldMetadata;\n \n this.control = new CheckBox({\n selected: `{${modelName}>${bindingPath}}`,\n enabled: !fieldMetadata.ui?.readOnly,\n select: (oEvent: any) => {\n const val = oEvent.getParameter(\"selected\");\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 (this.control as CheckBox).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"2EAAA,MAKSA,EAAUC,EAAA,cAQZ,MAAMC,UAAsBF,EACxBG,OAAOC,EAAkCC,EAAqBC,EAAoB,QACrFC,KAAKC,SAAWJ,EAEhBG,KAAKE,QAAU,IAAIC,EAAS,CACxBC,SAAU,IAAIL,KAAaD,KAC3BO,SAAUR,EAAcS,IAAIC,SAC5BC,OAASC,IACL,MAAMC,EAAMD,EAAOE,aAAa,YAChCX,KAAKY,cAAcF,GACnBV,KAAKa,cAIb,OAAOb,KAAKE,OAChB,CAEOW,WAEH,OAAO,IACX,CAEUC,aACN,GAAId,KAAKE,SAAWF,KAAKC,SAAU,CAC9BD,KAAKE,QAAqBa,YAAYf,KAAKC,SAASK,IAAIC,SAC7D,CACJ,EACH,IAAAS,EAAA,CAAAC,WAAA,MAAAD,EAAArB,gBAAA,OAAAqB,CAAA","ignoreList":[]}
@@ -1,42 +1,41 @@
1
- /**
2
- * @file BooleanPlugin.ts
3
- * @description Renders a sap.m.Switch for boolean states.
4
- */
5
-
6
- import { BasePlugin } from "./BasePlugin";
7
- import { IFieldMetadata } from "../interfaces/ISchema";
8
- import Switch from "sap/m/Switch";
9
- import Control from "sap/ui/core/Control";
10
-
11
- /**
12
- * Handles rendering logic for toggleable booleans.
13
- */
14
- export class BooleanPlugin extends BasePlugin {
15
- public render(fieldMetadata: IFieldMetadata, bindingPath: string): Control {
16
- this.metadata = fieldMetadata;
17
-
18
- this.control = new Switch({
19
- state: `{meta>${bindingPath}}`,
20
- enabled: !fieldMetadata.isReadOnly,
21
- change: (oEvent: any) => {
22
- const val = oEvent.getParameter("state");
23
- this.publishChange(val);
24
- this.validate();
25
- }
26
- });
27
-
28
- return this.control;
29
- }
30
-
31
- public validate(): boolean {
32
- // Boolean switches inherently have a state (true/false) so they rarely fail validation.
33
- return true;
34
- }
35
-
36
- protected applyState(): void {
37
- if (this.control && this.metadata) {
38
- const sw = this.control as Switch;
39
- sw.setEnabled(!this.metadata.isReadOnly);
40
- }
41
- }
42
- }
1
+ /**
2
+ * @file BooleanPlugin.ts
3
+ * @description Renders a sap.m.Switch for boolean states.
4
+ */
5
+
6
+ import { BasePlugin } from "./BasePlugin";
7
+ import { IPropertyMetadata } from "../interfaces/ISchema";
8
+ import CheckBox from "sap/m/CheckBox";
9
+ import Control from "sap/ui/core/Control";
10
+
11
+ /**
12
+ * Handles rendering logic for toggleable booleans.
13
+ */
14
+ export class BooleanPlugin extends BasePlugin {
15
+ public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta"): Control {
16
+ this.metadata = fieldMetadata;
17
+
18
+ this.control = new CheckBox({
19
+ selected: `{${modelName}>${bindingPath}}`,
20
+ enabled: !fieldMetadata.ui?.readOnly,
21
+ select: (oEvent: any) => {
22
+ const val = oEvent.getParameter("selected");
23
+ this.publishChange(val);
24
+ this.validate();
25
+ }
26
+ });
27
+
28
+ return this.control;
29
+ }
30
+
31
+ public validate(): boolean {
32
+ // Boolean states rarely fail validation.
33
+ return true;
34
+ }
35
+
36
+ protected applyState(): void {
37
+ if (this.control && this.metadata) {
38
+ (this.control as CheckBox).setEnabled(!this.metadata.ui?.readOnly);
39
+ }
40
+ }
41
+ }
@@ -1,61 +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) {
14
- this.metadata = fieldMetadata;
15
- this.control = new DatePicker({
16
- value: `{meta>${bindingPath}}`,
17
- valueFormat: "yyyy-MM-dd",
18
- displayFormat: "long",
19
- editable: !fieldMetadata.isReadOnly,
20
- required: fieldMetadata.isRequired,
21
- change: oEvent => {
22
- const val = oEvent.getParameter("value");
23
- this.publishChange(val);
24
- this.validate();
25
- }
26
- });
27
- return this.control;
28
- }
29
- validate() {
30
- if (!this.control || !this.metadata) return true;
31
- const dp = this.control;
32
- const isValid = dp.isValidValue();
33
- const val = dp.getValue();
34
- if (this.metadata.isRequired && (!val || val.trim() === "")) {
35
- dp.setValueState("Error");
36
- dp.setValueStateText("A valid date is required.");
37
- return false;
38
- }
39
- if (val && !isValid) {
40
- dp.setValueState("Error");
41
- dp.setValueStateText("Invalid date format.");
42
- return false;
43
- }
44
- dp.setValueState("None");
45
- return true;
46
- }
47
- applyState() {
48
- if (this.control && this.metadata) {
49
- const dp = this.control;
50
- dp.setEditable(!this.metadata.isReadOnly);
51
- dp.setRequired(this.metadata.isRequired);
52
- }
53
- }
54
- }
55
- var __exports = {
56
- __esModule: true
57
- };
58
- __exports.DatePlugin = DatePlugin;
59
- return __exports;
60
- });
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
+ });
61
69
  //# sourceMappingURL=DatePlugin-dbg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePlugin-dbg.js","names":["BasePlugin","___BasePlugin","DatePlugin","render","fieldMetadata","bindingPath","metadata","control","DatePicker","value","valueFormat","displayFormat","editable","isReadOnly","required","isRequired","change","oEvent","val","getParameter","publishChange","validate","dp","isValid","isValidValue","getValue","trim","setValueState","setValueStateText","applyState","setEditable","setRequired","__exports","__esModule"],"sources":["DatePlugin.ts"],"sourcesContent":["/**\r\n * @file DatePlugin.ts\r\n * @description Renders a sap.m.DatePicker natively bound to ISO date strings.\r\n */\r\n\r\nimport { BasePlugin } from \"./BasePlugin\";\r\nimport { IFieldMetadata } from \"../interfaces/ISchema\";\r\nimport DatePicker from \"sap/m/DatePicker\";\r\nimport Control from \"sap/ui/core/Control\";\r\n\r\n/**\r\n * Handles rendering logic for Date strings.\r\n */\r\nexport class DatePlugin extends BasePlugin {\r\n public render(fieldMetadata: IFieldMetadata, bindingPath: string): Control {\r\n this.metadata = fieldMetadata;\r\n \r\n this.control = new DatePicker({\r\n value: `{meta>${bindingPath}}`,\r\n valueFormat: \"yyyy-MM-dd\",\r\n displayFormat: \"long\",\r\n editable: !fieldMetadata.isReadOnly,\r\n required: fieldMetadata.isRequired,\r\n change: (oEvent: any) => {\r\n const val = oEvent.getParameter(\"value\");\r\n this.publishChange(val);\r\n this.validate();\r\n }\r\n });\r\n\r\n return this.control;\r\n }\r\n\r\n public validate(): boolean {\r\n if (!this.control || !this.metadata) return true;\r\n const dp = this.control as DatePicker;\r\n const isValid = dp.isValidValue();\r\n const val = dp.getValue();\r\n\r\n if (this.metadata.isRequired && (!val || val.trim() === \"\")) {\r\n dp.setValueState(\"Error\" as any);\r\n dp.setValueStateText(\"A valid date is required.\");\r\n return false;\r\n }\r\n\r\n if (val && !isValid) {\r\n dp.setValueState(\"Error\" as any);\r\n dp.setValueStateText(\"Invalid date format.\");\r\n return false;\r\n }\r\n\r\n dp.setValueState(\"None\" as any);\r\n return true;\r\n }\r\n\r\n protected applyState(): void {\r\n if (this.control && this.metadata) {\r\n const dp = this.control as DatePicker;\r\n dp.setEditable(!this.metadata.isReadOnly);\r\n dp.setRequired(this.metadata.isRequired);\r\n }\r\n }\r\n}\r\n"],"mappings":";;;EAAA;AACA;AACA;AACA;EAHA,MAKSA,UAAU,GAAAC,aAAA;EAKnB;AACA;AACA;EACO,MAAMC,UAAU,SAASF,UAAU,CAAC;IAChCG,MAAMA,CAACC,aAA6B,EAAEC,WAAmB,EAAW;MACvE,IAAI,CAACC,QAAQ,GAAGF,aAAa;MAE7B,IAAI,CAACG,OAAO,GAAG,IAAIC,UAAU,CAAC;QAC1BC,KAAK,EAAE,SAASJ,WAAW,GAAG;QAC9BK,WAAW,EAAE,YAAY;QACzBC,aAAa,EAAE,MAAM;QACrBC,QAAQ,EAAE,CAACR,aAAa,CAACS,UAAU;QACnCC,QAAQ,EAAEV,aAAa,CAACW,UAAU;QAClCC,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,EAAE,GAAG,IAAI,CAACf,OAAqB;MACrC,MAAMgB,OAAO,GAAGD,EAAE,CAACE,YAAY,CAAC,CAAC;MACjC,MAAMN,GAAG,GAAGI,EAAE,CAACG,QAAQ,CAAC,CAAC;MAEzB,IAAI,IAAI,CAACnB,QAAQ,CAACS,UAAU,KAAK,CAACG,GAAG,IAAIA,GAAG,CAACQ,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;QACzDJ,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,CAACtB,OAAO,IAAI,IAAI,CAACD,QAAQ,EAAE;QAC/B,MAAMgB,EAAE,GAAG,IAAI,CAACf,OAAqB;QACrCe,EAAE,CAACQ,WAAW,CAAC,CAAC,IAAI,CAACxB,QAAQ,CAACO,UAAU,CAAC;QACzCS,EAAE,CAACS,WAAW,CAAC,IAAI,CAACzB,QAAQ,CAACS,UAAU,CAAC;MAC5C;IACJ;EACJ;EAAC,IAAAiB,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAA9B,UAAA,GAAAA,UAAA;EAAA,OAAA8B,SAAA;AAAA","ignoreList":[]}
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":[]}
@@ -4,13 +4,13 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/DatePlugin" {
4
4
  * @description Renders a sap.m.DatePicker natively bound to ISO date strings.
5
5
  */
6
6
  import { BasePlugin } from "nz/co/siliconst/ui5/metaui/plugins/BasePlugin";
7
- import { IFieldMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
7
+ import { IPropertyMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
8
8
  import Control from "sap/ui/core/Control";
9
9
  /**
10
10
  * Handles rendering logic for Date strings.
11
11
  */
12
12
  export class DatePlugin extends BasePlugin {
13
- render(fieldMetadata: IFieldMetadata, bindingPath: string): Control;
13
+ render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string): Control;
14
14
  validate(): boolean;
15
15
  protected applyState(): void;
16
16
  }
@@ -1 +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,cAAc,EAAE,MAAM,+CAA+C,CAAC;IAE/E,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;OAEG;IACH,MAAa,UAAW,SAAQ,UAAU;QAC/B,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;QAmBnE,QAAQ,IAAI,OAAO;QAsB1B,SAAS,CAAC,UAAU,IAAI,IAAI;KAO/B;CAEA"}
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"}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["./BasePlugin","sap/m/DatePicker"],function(t,e){"use strict";const a=t["BasePlugin"];class i extends a{render(t,a){this.metadata=t;this.control=new e({value:`{meta>${a}}`,valueFormat:"yyyy-MM-dd",displayFormat:"long",editable:!t.isReadOnly,required:t.isRequired,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=t.isValidValue();const a=t.getValue();if(this.metadata.isRequired&&(!a||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.isReadOnly);t.setRequired(this.metadata.isRequired)}}}var s={__esModule:true};s.DatePlugin=i;return s});
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
2
  //# sourceMappingURL=DatePlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePlugin.js","names":["BasePlugin","___BasePlugin","DatePlugin","render","fieldMetadata","bindingPath","this","metadata","control","DatePicker","value","valueFormat","displayFormat","editable","isReadOnly","required","isRequired","change","oEvent","val","getParameter","publishChange","validate","dp","isValid","isValidValue","getValue","trim","setValueState","setValueStateText","applyState","setEditable","setRequired","__exports","__esModule"],"sources":["DatePlugin.ts"],"sourcesContent":["/**\r\n * @file DatePlugin.ts\r\n * @description Renders a sap.m.DatePicker natively bound to ISO date strings.\r\n */\r\n\r\nimport { BasePlugin } from \"./BasePlugin\";\r\nimport { IFieldMetadata } from \"../interfaces/ISchema\";\r\nimport DatePicker from \"sap/m/DatePicker\";\r\nimport Control from \"sap/ui/core/Control\";\r\n\r\n/**\r\n * Handles rendering logic for Date strings.\r\n */\r\nexport class DatePlugin extends BasePlugin {\r\n public render(fieldMetadata: IFieldMetadata, bindingPath: string): Control {\r\n this.metadata = fieldMetadata;\r\n \r\n this.control = new DatePicker({\r\n value: `{meta>${bindingPath}}`,\r\n valueFormat: \"yyyy-MM-dd\",\r\n displayFormat: \"long\",\r\n editable: !fieldMetadata.isReadOnly,\r\n required: fieldMetadata.isRequired,\r\n change: (oEvent: any) => {\r\n const val = oEvent.getParameter(\"value\");\r\n this.publishChange(val);\r\n this.validate();\r\n }\r\n });\r\n\r\n return this.control;\r\n }\r\n\r\n public validate(): boolean {\r\n if (!this.control || !this.metadata) return true;\r\n const dp = this.control as DatePicker;\r\n const isValid = dp.isValidValue();\r\n const val = dp.getValue();\r\n\r\n if (this.metadata.isRequired && (!val || val.trim() === \"\")) {\r\n dp.setValueState(\"Error\" as any);\r\n dp.setValueStateText(\"A valid date is required.\");\r\n return false;\r\n }\r\n\r\n if (val && !isValid) {\r\n dp.setValueState(\"Error\" as any);\r\n dp.setValueStateText(\"Invalid date format.\");\r\n return false;\r\n }\r\n\r\n dp.setValueState(\"None\" as any);\r\n return true;\r\n }\r\n\r\n protected applyState(): void {\r\n if (this.control && this.metadata) {\r\n const dp = this.control as DatePicker;\r\n dp.setEditable(!this.metadata.isReadOnly);\r\n dp.setRequired(this.metadata.isRequired);\r\n }\r\n }\r\n}\r\n"],"mappings":"6EAAA,MAKSA,EAAUC,EAAA,cAQZ,MAAMC,UAAmBF,EACrBG,OAAOC,EAA+BC,GACzCC,KAAKC,SAAWH,EAEhBE,KAAKE,QAAU,IAAIC,EAAW,CAC1BC,MAAO,SAASL,KAChBM,YAAa,aACbC,cAAe,OACfC,UAAWT,EAAcU,WACzBC,SAAUX,EAAcY,WACxBC,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,EAAKjB,KAAKE,QAChB,MAAMgB,EAAUD,EAAGE,eACnB,MAAMN,EAAMI,EAAGG,WAEf,GAAIpB,KAAKC,SAASS,cAAgBG,GAAOA,EAAIQ,SAAW,IAAK,CACzDJ,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,GAAIxB,KAAKE,SAAWF,KAAKC,SAAU,CAC/B,MAAMgB,EAAKjB,KAAKE,QAChBe,EAAGQ,aAAazB,KAAKC,SAASO,YAC9BS,EAAGS,YAAY1B,KAAKC,SAASS,WACjC,CACJ,EACH,IAAAiB,EAAA,CAAAC,WAAA,MAAAD,EAAA/B,aAAA,OAAA+B,CAAA","ignoreList":[]}
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
+ }