@siliconst/metaui 1.2.0 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -33
- package/package.json +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js +70 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.d.ts +67 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.ts +58 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js +28 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.d.ts +16 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js +142 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts +33 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.ts +164 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +266 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +162 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +203 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js +73 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts +32 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.ts +86 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js +60 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts +32 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.ts +61 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js +157 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts +33 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.ts +169 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js +160 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.ts +185 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +443 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +227 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +421 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +103 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +32 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +119 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +64 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts +21 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.ts +64 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +120 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts +45 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +131 -0
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js +40 -15
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +27 -7
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +41 -15
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js +62 -0
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts +26 -0
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.ts +62 -0
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +159 -43
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +64 -3
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +166 -43
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js +32 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts +16 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.ts +26 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js +123 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts +49 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.ts +106 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +104 -25
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +21 -13
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +110 -21
- package/src/nz/co/siliconst/ui5/metaui/core/Registry-dbg.js +79 -0
- package/src/nz/co/siliconst/ui5/metaui/core/Registry-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/Registry.d.ts +43 -0
- package/src/nz/co/siliconst/ui5/metaui/core/Registry.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/Registry.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/Registry.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/Registry.ts +70 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +71 -20
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +71 -20
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js +54 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts +11 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts +53 -0
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +88 -2
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts +15 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +103 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts +7 -8
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.ts +7 -7
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline-dbg.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.d.ts +38 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.ts +39 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +38 -2
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +43 -2
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +32 -3
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +35 -3
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js +144 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts +27 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.ts +139 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +132 -61
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts +19 -12
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +135 -71
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +118 -51
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts +21 -8
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +134 -65
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js +125 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.ts +127 -0
- package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +17 -12
- package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js +72 -25
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.d.ts +1 -0
- package/src/nz/co/siliconst/ui5/metaui/library.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.ts +25 -12
- package/src/nz/co/siliconst/ui5/metaui/manifest.json +8 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js +58 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts +22 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.ts +57 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js +55 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.d.ts +21 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.ts +54 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin-dbg.js +46 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.d.ts +23 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.ts +45 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +74 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts +15 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +80 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +75 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts +12 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +83 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +174 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +78 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +165 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +79 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts +36 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +77 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +60 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts +11 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +56 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +122 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts +24 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +125 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/{DatePlugin-dbg.js → controls/DatePlugin-dbg.js} +29 -20
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/{DatePlugin.d.ts → controls/DatePlugin.d.ts} +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +74 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/{DateTimePlugin-dbg.js → controls/DateTimePlugin-dbg.js} +30 -20
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/{DateTimePlugin.d.ts → controls/DateTimePlugin.d.ts} +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +75 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +109 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts +37 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +105 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +65 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts +21 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +64 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +59 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts +11 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +56 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js +45 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts +22 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +42 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +74 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts +22 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +73 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/{NumberPlugin-dbg.js → controls/NumberPlugin-dbg.js} +21 -16
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/{NumberPlugin.d.ts → controls/NumberPlugin.d.ts} +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +62 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +74 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +81 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +61 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts +21 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +62 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +64 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts +16 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +67 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +58 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts +11 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +55 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +64 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts +21 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +65 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +87 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts +37 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +85 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/{SwitchPlugin-dbg.js → controls/SwitchPlugin-dbg.js} +24 -6
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/{SwitchPlugin.d.ts → controls/SwitchPlugin.d.ts} +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +62 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/{TextAreaPlugin-dbg.js → controls/TextAreaPlugin-dbg.js} +20 -14
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/{TextAreaPlugin.d.ts → controls/TextAreaPlugin.d.ts} +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +63 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/{TimePlugin-dbg.js → controls/TimePlugin-dbg.js} +30 -25
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/{TimePlugin.d.ts → controls/TimePlugin.d.ts} +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +76 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +62 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts +11 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +59 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js +94 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts +29 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +102 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js +60 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts +22 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.ts +57 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +106 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts +22 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +101 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js +77 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +86 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin-dbg.js +36 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.d.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.ts +36 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin-dbg.js +32 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.d.ts +19 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.ts +31 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin-dbg.js +32 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.ts +27 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin-dbg.js +31 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.d.ts +18 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.ts +23 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin-dbg.js +45 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.d.ts +24 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.ts +30 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin-dbg.js +42 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.d.ts +18 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.ts +29 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin-dbg.js +41 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin-dbg.js +51 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.ts +33 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin-dbg.js +48 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.ts +32 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin-dbg.js +46 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.ts +29 -0
- package/src/nz/co/siliconst/ui5/metaui/utils/Logger-dbg.js +83 -0
- package/src/nz/co/siliconst/ui5/metaui/utils/Logger-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/utils/Logger.d.ts +29 -0
- package/src/nz/co/siliconst/ui5/metaui/utils/Logger.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/utils/Logger.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/utils/Logger.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/utils/Logger.ts +75 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js +0 -300
- package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts +0 -130
- package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.ts +0 -292
- package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js +0 -66
- package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts +0 -40
- package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/EventBus.ts +0 -60
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts +0 -29
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.ts +0 -29
- package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js +0 -24
- package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts +0 -15
- package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.ts +0 -22
- package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin-dbg.js +0 -68
- package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.d.ts +0 -15
- package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.ts +0 -71
- package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js +0 -55
- package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts +0 -24
- package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.ts +0 -56
- package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js +0 -42
- package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts +0 -18
- package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.ts +0 -41
- package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.ts +0 -69
- package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.ts +0 -68
- package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js +0 -67
- package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts +0 -18
- package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.ts +0 -65
- package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.ts +0 -56
- package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js +0 -57
- package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts +0 -18
- package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.ts +0 -58
- package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.ts +0 -42
- package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.ts +0 -58
- package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.ts +0 -71
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLayout-dbg.js","names":["PluginRegistry","___core_PluginRegistry","TableLayout","build","tableMeta","bindingPath","tableTitle","trackPlugin","properties","Error","parts","split","actualModelName","length","undefined","actualPath","table","Table","headerToolbar","Toolbar","content","Title","text","ToolbarSpacer","Button","icon","press","oEvent","btn","getSource","tbl","getParent","model","getModel","info","getBindingInfo","path","data","getProperty","push","setProperty","fixedLayout","mode","delete","item","getParameter","getBindingContext","getPath","splitPaths","index","parseInt","pop","arrayPath","join","splice","templateCells","registry","getInstance","props","Object","keys","forEach","key","fieldMeta","isKey","ui","column","Column","header","Text","label","demandPopin","minScreenWidth","popinDisplay","addColumn","plugin","getPlugin","type","widget","control","render","error","sap","require","Log","message","rowTemplate","ColumnListItem","cells","bindItems","template","templateShareable","__exports","__esModule"],"sources":["TableLayout.ts"],"sourcesContent":["/**\n * @file TableLayout.ts\n * @description Generates a responsive SAP Fiori Table layout for v2 schema.\n */\n\nimport Table from \"sap/m/Table\";\nimport Column from \"sap/m/Column\";\nimport Text from \"sap/m/Text\";\nimport ColumnListItem from \"sap/m/ColumnListItem\";\nimport Toolbar from \"sap/m/Toolbar\";\nimport Title from \"sap/m/Title\";\nimport ToolbarSpacer from \"sap/m/ToolbarSpacer\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport { PluginRegistry } from \"../core/PluginRegistry\";\nimport Control from \"sap/ui/core/Control\";\nimport { IPlugin } from \"../interfaces/IPlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\n\nexport class TableLayout {\n /**\n * Builds a responsive Table, dynamically calculating column priorities.\n */\n public static build(tableMeta: IPropertyMetadata, bindingPath: string = \"meta>/\", tableTitle: string = \"Table\", trackPlugin?: (plugin: IPlugin) => void): Table {\n if (!tableMeta.properties) {\n throw new Error(\"[MetaUI] Table requires an items schema with properties.\");\n }\n\n const parts = bindingPath.split(\">\");\n const actualModelName = parts.length > 1 ? parts[0] : undefined;\n const actualPath = parts.length > 1 ? parts[1] : bindingPath;\n // e.g. \"meta>/Contacts\" -> actualModelName = \"meta\", actualPath = \"/Contacts\"\n\n const table = new Table({\n headerToolbar: new Toolbar({\n content: [\n new Title({ text: tableTitle }),\n new ToolbarSpacer(),\n new Button({\n text: \"Add Row\",\n icon: \"sap-icon://add\",\n press: (oEvent: any) => {\n const btn = oEvent.getSource();\n const tbl = btn.getParent().getParent() as Table;\n const model = tbl.getModel(actualModelName) as JSONModel;\n const info = tbl.getBindingInfo(\"items\");\n if (!info || !info.path) return;\n \n const data = model.getProperty(info.path) || [];\n data.push({}); // append empty row\n model.setProperty(info.path, data);\n }\n })\n ]\n }),\n fixedLayout: false,\n mode: \"Delete\",\n delete: (oEvent: any) => {\n const item = oEvent.getParameter(\"listItem\");\n const path = item.getBindingContext(actualModelName).getPath(); \n const model = item.getModel(actualModelName) as JSONModel;\n \n const splitPaths = path.split(\"/\");\n const index = parseInt(splitPaths.pop() || \"0\", 10);\n let arrayPath = splitPaths.join(\"/\");\n if (arrayPath === \"\") arrayPath = \"/\";\n \n const data = model.getProperty(arrayPath);\n data.splice(index, 1);\n model.setProperty(arrayPath, data);\n }\n });\n\n const templateCells: Control[] = [];\n const registry = PluginRegistry.getInstance();\n const props = tableMeta.properties;\n\n Object.keys(props).forEach((key) => {\n try {\n const fieldMeta = props[key];\n const isKey = !!fieldMeta.ui?.isKey;\n \n const column = new Column({\n header: new Text({ text: fieldMeta.ui?.label || key }),\n demandPopin: !isKey, \n minScreenWidth: isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n });\n table.addColumn(column);\n\n const plugin = registry.getPlugin(fieldMeta.type, fieldMeta.ui?.widget);\n if (trackPlugin) trackPlugin(plugin);\n const control = plugin.render(fieldMeta, key, actualModelName); // No trailing slash for relative bindings\n templateCells.push(control);\n } catch (error) {\n sap.ui.require([\"sap/base/Log\"], (Log: any) => {\n if (Log) Log.error(`[MetaUI] Failed to render column ${key}`, (error as Error).message, \"TableLayout\");\n });\n \n // Add an empty text control as a fallback so the table columns match the cells array length\n templateCells.push(new Text({ text: \"Error\" }));\n }\n });\n\n const rowTemplate = new ColumnListItem({\n cells: templateCells\n });\n\n // V2 Fix: Actually bind the items to the table!\n table.bindItems({\n path: actualPath,\n model: actualModelName,\n template: rowTemplate,\n templateShareable: false\n });\n\n return table;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"TableLayout-dbg.js","names":["Logger","___utils_Logger","TableLayout","render","schema","modelName","engine","onSubmit","bindingPath","type","items","properties","Error","tableTitle","title","actualModelName","actualPath","table","Table","headerToolbar","Toolbar","content","Title","text","ToolbarSpacer","isDisplayMode","Button","icon","press","oEvent","btn","getSource","tbl","getParent","model","getModel","info","getBindingInfo","path","rawData","getProperty","data","Array","isArray","newData","setProperty","fixedLayout","mode","delete","item","getParameter","getBindingContext","getPath","splitPaths","split","index","parseInt","pop","arrayPath","join","splice","templateCells","props","layoutElements","uiLayout","forEach","element","scope","startsWith","error","propKey","replace","fieldMeta","isKey","ui","column","Column","header","Text","label","demandPopin","minScreenWidth","popinDisplay","addColumn","effectiveMeta","widget","control","generateField","push","msg","message","showErrorPopup","warn","debug","Object","keys","key","rowTemplate","ColumnListItem","cells","bindItems","template","templateShareable","__exports","__esModule"],"sources":["TableLayout.ts"],"sourcesContent":["/**\n * @file TableLayout.ts\n * @description Generates a responsive SAP Fiori Table layout for v2 schema.\n */\n\nimport Table from \"sap/m/Table\";\nimport Column from \"sap/m/Column\";\nimport Text from \"sap/m/Text\";\nimport ColumnListItem from \"sap/m/ColumnListItem\";\nimport Toolbar from \"sap/m/Toolbar\";\nimport Title from \"sap/m/Title\";\nimport ToolbarSpacer from \"sap/m/ToolbarSpacer\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport Control from \"sap/ui/core/Control\";\nimport { IPropertyMetadata, ISchema, ILayoutElement } from \"../interfaces/ISchema\";\nimport { ILayoutManager } from \"../interfaces/ILayoutManager\";\nimport { Engine } from \"../core/Engine\";\nimport { Logger } from \"../utils/Logger\";\n\n/**\n * Layout Manager responsible for generating a responsive SAP Fiori Table.\n * It is automatically utilized by the Engine when the schema root or property is of type 'array'.\n * Includes built-in support for adding and deleting rows via dynamic data binding manipulation.\n * \n * @namespace nz.co.siliconst.ui5.metaui.layouts\n * @public\n */\nexport class TableLayout implements ILayoutManager {\n /**\n * Renders the JSON Schema array properties into a UI5 Table.\n * \n * @param schema The active JSON schema array definition.\n * @param modelName The UI5 JSONModel name used for data binding.\n * @param engine The central orchestrator for delegating column plugin generation.\n * @param onSubmit Optional submit hook.\n * @param bindingPath The JSON path representing the array within the payload.\n * @returns {Control} The generated sap.m.Table control.\n * @throws {Error} If the provided schema is not of type 'array'.\n */\n public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void, bindingPath: string = \"/\"): Control {\n if (schema.type !== \"array\" || !schema.items || !schema.items.properties) {\n throw new Error(\"[MetaUI] TableLayout requires an array schema with items.properties.\");\n }\n\n const tableTitle = schema.title || \"Table\";\n const actualModelName = modelName;\n const actualPath = bindingPath;\n\n const table = new Table({\n headerToolbar: new Toolbar({\n content: [\n new Title({ text: tableTitle }),\n new ToolbarSpacer(),\n ...(engine.isDisplayMode ? [] : [\n new Button({\n text: \"Add Row\",\n icon: \"sap-icon://add\",\n press: (oEvent: sap.ui.base.Event) => {\n const btn = oEvent.getSource();\n const tbl = btn.getParent().getParent() as Table;\n const model = tbl.getModel(actualModelName) as JSONModel;\n const info = tbl.getBindingInfo(\"items\");\n if (!info || !info.path) return;\n\n const rawData = model.getProperty(info.path);\n const data = Array.isArray(rawData) ? rawData : [];\n const newData = [...data, {}];\n model.setProperty(info.path, newData);\n }\n })\n ])\n ]\n }),\n fixedLayout: false,\n mode: engine.isDisplayMode ? \"None\" : \"Delete\",\n delete: (oEvent: sap.ui.base.Event) => {\n const item = oEvent.getParameter(\"listItem\");\n const path = item.getBindingContext(actualModelName).getPath();\n const model = item.getModel(actualModelName) as JSONModel;\n\n const splitPaths = path.split(\"/\");\n const index = parseInt(splitPaths.pop() || \"0\", 10);\n let arrayPath = splitPaths.join(\"/\");\n if (arrayPath === \"\") arrayPath = \"/\";\n\n const rawData = model.getProperty(arrayPath);\n const data = Array.isArray(rawData) ? rawData : [];\n const newData = [...data];\n newData.splice(index, 1);\n model.setProperty(arrayPath, newData);\n }\n });\n\n const templateCells: Control[] = [];\n const props = schema.items.properties;\n const layoutElements = schema.uiLayout;\n\n if (layoutElements && Array.isArray(layoutElements)) {\n // Only render columns defined in uiLayout\n layoutElements.forEach((element: ILayoutElement) => {\n if (element.type === \"Control\") {\n if (!element.scope || !element.scope.startsWith(\"#/properties/\")) {\n Logger.error(`[MetaUI] Invalid scope '${element.scope}' in uiLayout Control for Table.`, \"\", \"TableLayout\");\n return;\n }\n\n const propKey = element.scope.replace(\"#/properties/\", \"\");\n const fieldMeta = props[propKey];\n\n if (!fieldMeta) {\n Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions for Table.`, \"\", \"TableLayout\");\n return;\n }\n\n try {\n const isKey = !!fieldMeta.ui?.isKey;\n\n const column = new Column({\n header: new Text({ text: element.label || fieldMeta.ui?.label || propKey }),\n demandPopin: !isKey,\n minScreenWidth: isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n });\n table.addColumn(column);\n\n // Override widget if specified in the layout element\n const effectiveMeta = { ...fieldMeta };\n if (element.widget) {\n effectiveMeta.ui = { ...fieldMeta.ui, widget: element.widget };\n }\n\n // Use engine to generate fields natively and track validation\n const control = engine.generateField(effectiveMeta, propKey, actualModelName || \"meta\", true);\n templateCells.push(control);\n } catch (error) {\n const msg = (error as Error).message;\n Logger.error(`[MetaUI] Failed to render column ${propKey}`, msg, \"TableLayout\");\n Logger.showErrorPopup(`Failed to render table column '${propKey}'.\\n\\nDetails: ${msg}`);\n templateCells.push(new Text({ text: \"Error\" }));\n }\n } else {\n Logger.warn(`[MetaUI] Unsupported layout element type '${element.type}' inside TableLayout. Only 'Control' is supported for columns.`, \"\", \"TableLayout\");\n }\n });\n } else {\n Logger.debug(\"[MetaUI TableLayout]\", \"No uiLayout provided. Falling back to rendering all properties as columns.\", \"TableLayout\");\n // Fallback: If no uiLayout is provided, render all properties as columns\n Object.keys(props).forEach((key) => {\n try {\n const fieldMeta = props[key];\n const isKey = !!fieldMeta.ui?.isKey;\n\n const column = new Column({\n header: new Text({ text: fieldMeta.ui?.label || key }),\n demandPopin: !isKey,\n minScreenWidth: isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n });\n table.addColumn(column);\n\n const control = engine.generateField(fieldMeta, key, actualModelName || \"meta\", true);\n templateCells.push(control);\n } catch (error) {\n const msg = (error as Error).message;\n Logger.error(`[MetaUI] Failed to render fallback column ${key}`, msg, \"TableLayout\");\n Logger.showErrorPopup(`Failed to render fallback table column '${key}'.\\n\\nDetails: ${msg}`);\n templateCells.push(new Text({ text: \"Error\" }));\n }\n });\n }\n\n\n\n const rowTemplate = new ColumnListItem({\n cells: templateCells\n });\n\n table.bindItems({\n path: actualPath,\n model: actualModelName,\n template: rowTemplate,\n templateShareable: false\n });\n\n return table;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
declare module "nz/co/siliconst/ui5/metaui/layouts/TableLayout" {
|
|
2
|
+
import Control from "sap/ui/core/Control";
|
|
3
|
+
import { ISchema } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
|
|
4
|
+
import { ILayoutManager } from "nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager";
|
|
5
|
+
import { Engine } from "nz/co/siliconst/ui5/metaui/core/Engine";
|
|
2
6
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
7
|
+
* Layout Manager responsible for generating a responsive SAP Fiori Table.
|
|
8
|
+
* It is automatically utilized by the Engine when the schema root or property is of type 'array'.
|
|
9
|
+
* Includes built-in support for adding and deleting rows via dynamic data binding manipulation.
|
|
10
|
+
*
|
|
11
|
+
* @namespace nz.co.siliconst.ui5.metaui.layouts
|
|
12
|
+
* @public
|
|
5
13
|
*/
|
|
6
|
-
|
|
7
|
-
import { IPlugin } from "nz/co/siliconst/ui5/metaui/interfaces/IPlugin";
|
|
8
|
-
import { IPropertyMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
|
|
9
|
-
export class TableLayout {
|
|
14
|
+
export class TableLayout implements ILayoutManager {
|
|
10
15
|
/**
|
|
11
|
-
*
|
|
16
|
+
* Renders the JSON Schema array properties into a UI5 Table.
|
|
17
|
+
*
|
|
18
|
+
* @param schema The active JSON schema array definition.
|
|
19
|
+
* @param modelName The UI5 JSONModel name used for data binding.
|
|
20
|
+
* @param engine The central orchestrator for delegating column plugin generation.
|
|
21
|
+
* @param onSubmit Optional submit hook.
|
|
22
|
+
* @param bindingPath The JSON path representing the array within the payload.
|
|
23
|
+
* @returns {Control} The generated sap.m.Table control.
|
|
24
|
+
* @throws {Error} If the provided schema is not of type 'array'.
|
|
12
25
|
*/
|
|
13
|
-
|
|
26
|
+
render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void, bindingPath?: string): Control;
|
|
14
27
|
}
|
|
15
28
|
}
|
|
16
29
|
//# sourceMappingURL=TableLayout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLayout.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"TableLayout.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,gDAAgD,CAAC;IAehE,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAC1C,OAAO,EAAqB,OAAO,EAAkB,MAAM,+CAA+C,CAAC;IAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;IACtF,OAAO,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;IAGhE;;;;;;;OAOG;IACH,MAAa,WAAY,YAAW,cAAc;QAC9C;;;;;;;;;;WAUG;QACI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,EAAE,WAAW,GAAE,MAAY,GAAG,OAAO;KAmJ/H;CAEA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["sap/m/Table","sap/m/Column","sap/m/Text","sap/m/ColumnListItem","sap/m/Toolbar","sap/m/Title","sap/m/ToolbarSpacer","sap/m/Button","../
|
|
1
|
+
sap.ui.define(["sap/m/Table","sap/m/Column","sap/m/Text","sap/m/ColumnListItem","sap/m/Toolbar","sap/m/Title","sap/m/ToolbarSpacer","sap/m/Button","../utils/Logger"],function(e,t,o,r,a,n,s,i,l){"use strict";const p=l["Logger"];class c{render(l,c,u,d,m="/"){if(l.type!=="array"||!l.items||!l.items.properties){throw new Error("[MetaUI] TableLayout requires an array schema with items.properties.")}const y=l.title||"Table";const b=c;const g=m;const h=new e({headerToolbar:new a({content:[new n({text:y}),new s,...u.isDisplayMode?[]:[new i({text:"Add Row",icon:"sap-icon://add",press:e=>{const t=e.getSource();const o=t.getParent().getParent();const r=o.getModel(b);const a=o.getBindingInfo("items");if(!a||!a.path)return;const n=r.getProperty(a.path);const s=Array.isArray(n)?n:[];const i=[...s,{}];r.setProperty(a.path,i)}})]]}),fixedLayout:false,mode:u.isDisplayMode?"None":"Delete",delete:e=>{const t=e.getParameter("listItem");const o=t.getBindingContext(b).getPath();const r=t.getModel(b);const a=o.split("/");const n=parseInt(a.pop()||"0",10);let s=a.join("/");if(s==="")s="/";const i=r.getProperty(s);const l=Array.isArray(i)?i:[];const p=[...l];p.splice(n,1);r.setProperty(s,p)}});const f=[];const w=l.items.properties;const T=l.uiLayout;if(T&&Array.isArray(T)){T.forEach(e=>{if(e.type==="Control"){if(!e.scope||!e.scope.startsWith("#/properties/")){p.error(`[MetaUI] Invalid scope '${e.scope}' in uiLayout Control for Table.`,"","TableLayout");return}const r=e.scope.replace("#/properties/","");const a=w[r];if(!a){p.error(`[MetaUI] Property '${r}' not found in schema definitions for Table.`,"","TableLayout");return}try{const n=!!a.ui?.isKey;const s=new t({header:new o({text:e.label||a.ui?.label||r}),demandPopin:!n,minScreenWidth:n?"":"Tablet",popinDisplay:"Inline"});h.addColumn(s);const i={...a};if(e.widget){i.ui={...a.ui,widget:e.widget}}const l=u.generateField(i,r,b||"meta",true);f.push(l)}catch(e){const t=e.message;p.error(`[MetaUI] Failed to render column ${r}`,t,"TableLayout");p.showErrorPopup(`Failed to render table column '${r}'.\n\nDetails: ${t}`);f.push(new o({text:"Error"}))}}else{p.warn(`[MetaUI] Unsupported layout element type '${e.type}' inside TableLayout. Only 'Control' is supported for columns.`,"","TableLayout")}})}else{p.debug("[MetaUI TableLayout]","No uiLayout provided. Falling back to rendering all properties as columns.","TableLayout");Object.keys(w).forEach(e=>{try{const r=w[e];const a=!!r.ui?.isKey;const n=new t({header:new o({text:r.ui?.label||e}),demandPopin:!a,minScreenWidth:a?"":"Tablet",popinDisplay:"Inline"});h.addColumn(n);const s=u.generateField(r,e,b||"meta",true);f.push(s)}catch(t){const r=t.message;p.error(`[MetaUI] Failed to render fallback column ${e}`,r,"TableLayout");p.showErrorPopup(`Failed to render fallback table column '${e}'.\n\nDetails: ${r}`);f.push(new o({text:"Error"}))}})}const L=new r({cells:f});h.bindItems({path:g,model:b,template:L,templateShareable:false});return h}}var u={__esModule:true};u.TableLayout=c;return u});
|
|
2
2
|
//# sourceMappingURL=TableLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLayout.js","names":["PluginRegistry","___core_PluginRegistry","TableLayout","build","tableMeta","bindingPath","tableTitle","trackPlugin","properties","Error","parts","split","actualModelName","length","undefined","actualPath","table","Table","headerToolbar","Toolbar","content","Title","text","ToolbarSpacer","Button","icon","press","oEvent","btn","getSource","tbl","getParent","model","getModel","info","getBindingInfo","path","data","getProperty","push","setProperty","fixedLayout","mode","delete","item","getParameter","getBindingContext","getPath","splitPaths","index","parseInt","pop","arrayPath","join","splice","templateCells","registry","getInstance","props","Object","keys","forEach","key","fieldMeta","isKey","ui","column","Column","header","Text","label","demandPopin","minScreenWidth","popinDisplay","addColumn","plugin","getPlugin","type","widget","control","render","error","sap","require","Log","message","rowTemplate","ColumnListItem","cells","bindItems","template","templateShareable","__exports","__esModule"],"sources":["TableLayout.ts"],"sourcesContent":["/**\n * @file TableLayout.ts\n * @description Generates a responsive SAP Fiori Table layout for v2 schema.\n */\n\nimport Table from \"sap/m/Table\";\nimport Column from \"sap/m/Column\";\nimport Text from \"sap/m/Text\";\nimport ColumnListItem from \"sap/m/ColumnListItem\";\nimport Toolbar from \"sap/m/Toolbar\";\nimport Title from \"sap/m/Title\";\nimport ToolbarSpacer from \"sap/m/ToolbarSpacer\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport { PluginRegistry } from \"../core/PluginRegistry\";\nimport Control from \"sap/ui/core/Control\";\nimport { IPlugin } from \"../interfaces/IPlugin\";\nimport { IPropertyMetadata } from \"../interfaces/ISchema\";\n\nexport class TableLayout {\n /**\n * Builds a responsive Table, dynamically calculating column priorities.\n */\n public static build(tableMeta: IPropertyMetadata, bindingPath: string = \"meta>/\", tableTitle: string = \"Table\", trackPlugin?: (plugin: IPlugin) => void): Table {\n if (!tableMeta.properties) {\n throw new Error(\"[MetaUI] Table requires an items schema with properties.\");\n }\n\n const parts = bindingPath.split(\">\");\n const actualModelName = parts.length > 1 ? parts[0] : undefined;\n const actualPath = parts.length > 1 ? parts[1] : bindingPath;\n // e.g. \"meta>/Contacts\" -> actualModelName = \"meta\", actualPath = \"/Contacts\"\n\n const table = new Table({\n headerToolbar: new Toolbar({\n content: [\n new Title({ text: tableTitle }),\n new ToolbarSpacer(),\n new Button({\n text: \"Add Row\",\n icon: \"sap-icon://add\",\n press: (oEvent: any) => {\n const btn = oEvent.getSource();\n const tbl = btn.getParent().getParent() as Table;\n const model = tbl.getModel(actualModelName) as JSONModel;\n const info = tbl.getBindingInfo(\"items\");\n if (!info || !info.path) return;\n \n const data = model.getProperty(info.path) || [];\n data.push({}); // append empty row\n model.setProperty(info.path, data);\n }\n })\n ]\n }),\n fixedLayout: false,\n mode: \"Delete\",\n delete: (oEvent: any) => {\n const item = oEvent.getParameter(\"listItem\");\n const path = item.getBindingContext(actualModelName).getPath(); \n const model = item.getModel(actualModelName) as JSONModel;\n \n const splitPaths = path.split(\"/\");\n const index = parseInt(splitPaths.pop() || \"0\", 10);\n let arrayPath = splitPaths.join(\"/\");\n if (arrayPath === \"\") arrayPath = \"/\";\n \n const data = model.getProperty(arrayPath);\n data.splice(index, 1);\n model.setProperty(arrayPath, data);\n }\n });\n\n const templateCells: Control[] = [];\n const registry = PluginRegistry.getInstance();\n const props = tableMeta.properties;\n\n Object.keys(props).forEach((key) => {\n try {\n const fieldMeta = props[key];\n const isKey = !!fieldMeta.ui?.isKey;\n \n const column = new Column({\n header: new Text({ text: fieldMeta.ui?.label || key }),\n demandPopin: !isKey, \n minScreenWidth: isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n });\n table.addColumn(column);\n\n const plugin = registry.getPlugin(fieldMeta.type, fieldMeta.ui?.widget);\n if (trackPlugin) trackPlugin(plugin);\n const control = plugin.render(fieldMeta, key, actualModelName); // No trailing slash for relative bindings\n templateCells.push(control);\n } catch (error) {\n sap.ui.require([\"sap/base/Log\"], (Log: any) => {\n if (Log) Log.error(`[MetaUI] Failed to render column ${key}`, (error as Error).message, \"TableLayout\");\n });\n \n // Add an empty text control as a fallback so the table columns match the cells array length\n templateCells.push(new Text({ text: \"Error\" }));\n }\n });\n\n const rowTemplate = new ColumnListItem({\n cells: templateCells\n });\n\n // V2 Fix: Actually bind the items to the table!\n table.bindItems({\n path: actualPath,\n model: actualModelName,\n template: rowTemplate,\n templateShareable: false\n });\n\n return table;\n }\n}\n"],"mappings":"4NAcSA,EAAcC,EAAA,kBAKhB,MAAMC,EAIT,YAAcC,CAAMC,EAA8BC,EAAsB,SAAUC,EAAqB,QAASC,GAC5G,IAAKH,EAAUI,WAAY,CACvB,MAAM,IAAIC,MAAM,2DACpB,CAEA,MAAMC,EAAQL,EAAYM,MAAM,KAChC,MAAMC,EAAkBF,EAAMG,OAAS,EAAIH,EAAM,GAAKI,UACtD,MAAMC,EAAaL,EAAMG,OAAS,EAAIH,EAAM,GAAKL,EAGjD,MAAMW,EAAQ,IAAIC,EAAM,CACpBC,cAAe,IAAIC,EAAQ,CACvBC,QAAS,CACL,IAAIC,EAAM,CAAEC,KAAMhB,IAClB,IAAIiB,EACJ,IAAIC,EAAO,CACPF,KAAM,UACNG,KAAM,iBACNC,MAAQC,IACJ,MAAMC,EAAMD,EAAOE,YACnB,MAAMC,EAAMF,EAAIG,YAAYA,YAC5B,MAAMC,EAAQF,EAAIG,SAASrB,GAC3B,MAAMsB,EAAOJ,EAAIK,eAAe,SAChC,IAAKD,IAASA,EAAKE,KAAM,OAEzB,MAAMC,EAAOL,EAAMM,YAAYJ,EAAKE,OAAS,GAC7CC,EAAKE,KAAK,CAAC,GACXP,EAAMQ,YAAYN,EAAKE,KAAMC,SAK7CI,YAAa,MACbC,KAAM,SACNC,OAAShB,IACL,MAAMiB,EAAOjB,EAAOkB,aAAa,YACjC,MAAMT,EAAOQ,EAAKE,kBAAkBlC,GAAiBmC,UACrD,MAAMf,EAAQY,EAAKX,SAASrB,GAE5B,MAAMoC,EAAaZ,EAAKzB,MAAM,KAC9B,MAAMsC,EAAQC,SAASF,EAAWG,OAAS,IAAK,IAChD,IAAIC,EAAYJ,EAAWK,KAAK,KAChC,GAAID,IAAc,GAAIA,EAAY,IAElC,MAAMf,EAAOL,EAAMM,YAAYc,GAC/Bf,EAAKiB,OAAOL,EAAO,GACnBjB,EAAMQ,YAAYY,EAAWf,MAIrC,MAAMkB,EAA2B,GACjC,MAAMC,EAAWxD,EAAeyD,cAChC,MAAMC,EAAQtD,EAAUI,WAExBmD,OAAOC,KAAKF,GAAOG,QAASC,IACxB,IACI,MAAMC,EAAYL,EAAMI,GACxB,MAAME,IAAUD,EAAUE,IAAID,MAE9B,MAAME,EAAS,IAAIC,EAAO,CACtBC,OAAQ,IAAIC,EAAK,CAAE/C,KAAMyC,EAAUE,IAAIK,OAASR,IAChDS,aAAcP,EACdQ,eAAgBR,EAAQ,GAAK,SAC7BS,aAAc,WAElBzD,EAAM0D,UAAUR,GAEhB,MAAMS,EAASnB,EAASoB,UAAUb,EAAUc,KAAMd,EAAUE,IAAIa,QAChE,GAAIvE,EAAaA,EAAYoE,GAC7B,MAAMI,EAAUJ,EAAOK,OAAOjB,EAAWD,EAAKlD,GAC9C2C,EAAchB,KAAKwC,EACvB,CAAE,MAAOE,GACLC,IAAIjB,GAAGkB,QAAQ,CAAC,gBAAkBC,IAC9B,GAAIA,EAAKA,EAAIH,MAAM,oCAAoCnB,IAAQmB,EAAgBI,QAAS,iBAI5F9B,EAAchB,KAAK,IAAI8B,EAAK,CAAE/C,KAAM,UACxC,IAGJ,MAAMgE,EAAc,IAAIC,EAAe,CACnCC,MAAOjC,IAIXvC,EAAMyE,UAAU,CACZrD,KAAMrB,EACNiB,MAAOpB,EACP8E,SAAUJ,EACVK,kBAAmB,QAGvB,OAAO3E,CACX,EACH,IAAA4E,EAAA,CAAAC,WAAA,MAAAD,EAAA1F,cAAA,OAAA0F,CAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"TableLayout.js","names":["Logger","___utils_Logger","TableLayout","render","schema","modelName","engine","onSubmit","bindingPath","type","items","properties","Error","tableTitle","title","actualModelName","actualPath","table","Table","headerToolbar","Toolbar","content","Title","text","ToolbarSpacer","isDisplayMode","Button","icon","press","oEvent","btn","getSource","tbl","getParent","model","getModel","info","getBindingInfo","path","rawData","getProperty","data","Array","isArray","newData","setProperty","fixedLayout","mode","delete","item","getParameter","getBindingContext","getPath","splitPaths","split","index","parseInt","pop","arrayPath","join","splice","templateCells","props","layoutElements","uiLayout","forEach","element","scope","startsWith","error","propKey","replace","fieldMeta","isKey","ui","column","Column","header","Text","label","demandPopin","minScreenWidth","popinDisplay","addColumn","effectiveMeta","widget","control","generateField","push","msg","message","showErrorPopup","warn","debug","Object","keys","key","rowTemplate","ColumnListItem","cells","bindItems","template","templateShareable","__exports","__esModule"],"sources":["TableLayout.ts"],"sourcesContent":["/**\n * @file TableLayout.ts\n * @description Generates a responsive SAP Fiori Table layout for v2 schema.\n */\n\nimport Table from \"sap/m/Table\";\nimport Column from \"sap/m/Column\";\nimport Text from \"sap/m/Text\";\nimport ColumnListItem from \"sap/m/ColumnListItem\";\nimport Toolbar from \"sap/m/Toolbar\";\nimport Title from \"sap/m/Title\";\nimport ToolbarSpacer from \"sap/m/ToolbarSpacer\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport Control from \"sap/ui/core/Control\";\nimport { IPropertyMetadata, ISchema, ILayoutElement } from \"../interfaces/ISchema\";\nimport { ILayoutManager } from \"../interfaces/ILayoutManager\";\nimport { Engine } from \"../core/Engine\";\nimport { Logger } from \"../utils/Logger\";\n\n/**\n * Layout Manager responsible for generating a responsive SAP Fiori Table.\n * It is automatically utilized by the Engine when the schema root or property is of type 'array'.\n * Includes built-in support for adding and deleting rows via dynamic data binding manipulation.\n * \n * @namespace nz.co.siliconst.ui5.metaui.layouts\n * @public\n */\nexport class TableLayout implements ILayoutManager {\n /**\n * Renders the JSON Schema array properties into a UI5 Table.\n * \n * @param schema The active JSON schema array definition.\n * @param modelName The UI5 JSONModel name used for data binding.\n * @param engine The central orchestrator for delegating column plugin generation.\n * @param onSubmit Optional submit hook.\n * @param bindingPath The JSON path representing the array within the payload.\n * @returns {Control} The generated sap.m.Table control.\n * @throws {Error} If the provided schema is not of type 'array'.\n */\n public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void, bindingPath: string = \"/\"): Control {\n if (schema.type !== \"array\" || !schema.items || !schema.items.properties) {\n throw new Error(\"[MetaUI] TableLayout requires an array schema with items.properties.\");\n }\n\n const tableTitle = schema.title || \"Table\";\n const actualModelName = modelName;\n const actualPath = bindingPath;\n\n const table = new Table({\n headerToolbar: new Toolbar({\n content: [\n new Title({ text: tableTitle }),\n new ToolbarSpacer(),\n ...(engine.isDisplayMode ? [] : [\n new Button({\n text: \"Add Row\",\n icon: \"sap-icon://add\",\n press: (oEvent: sap.ui.base.Event) => {\n const btn = oEvent.getSource();\n const tbl = btn.getParent().getParent() as Table;\n const model = tbl.getModel(actualModelName) as JSONModel;\n const info = tbl.getBindingInfo(\"items\");\n if (!info || !info.path) return;\n\n const rawData = model.getProperty(info.path);\n const data = Array.isArray(rawData) ? rawData : [];\n const newData = [...data, {}];\n model.setProperty(info.path, newData);\n }\n })\n ])\n ]\n }),\n fixedLayout: false,\n mode: engine.isDisplayMode ? \"None\" : \"Delete\",\n delete: (oEvent: sap.ui.base.Event) => {\n const item = oEvent.getParameter(\"listItem\");\n const path = item.getBindingContext(actualModelName).getPath();\n const model = item.getModel(actualModelName) as JSONModel;\n\n const splitPaths = path.split(\"/\");\n const index = parseInt(splitPaths.pop() || \"0\", 10);\n let arrayPath = splitPaths.join(\"/\");\n if (arrayPath === \"\") arrayPath = \"/\";\n\n const rawData = model.getProperty(arrayPath);\n const data = Array.isArray(rawData) ? rawData : [];\n const newData = [...data];\n newData.splice(index, 1);\n model.setProperty(arrayPath, newData);\n }\n });\n\n const templateCells: Control[] = [];\n const props = schema.items.properties;\n const layoutElements = schema.uiLayout;\n\n if (layoutElements && Array.isArray(layoutElements)) {\n // Only render columns defined in uiLayout\n layoutElements.forEach((element: ILayoutElement) => {\n if (element.type === \"Control\") {\n if (!element.scope || !element.scope.startsWith(\"#/properties/\")) {\n Logger.error(`[MetaUI] Invalid scope '${element.scope}' in uiLayout Control for Table.`, \"\", \"TableLayout\");\n return;\n }\n\n const propKey = element.scope.replace(\"#/properties/\", \"\");\n const fieldMeta = props[propKey];\n\n if (!fieldMeta) {\n Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions for Table.`, \"\", \"TableLayout\");\n return;\n }\n\n try {\n const isKey = !!fieldMeta.ui?.isKey;\n\n const column = new Column({\n header: new Text({ text: element.label || fieldMeta.ui?.label || propKey }),\n demandPopin: !isKey,\n minScreenWidth: isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n });\n table.addColumn(column);\n\n // Override widget if specified in the layout element\n const effectiveMeta = { ...fieldMeta };\n if (element.widget) {\n effectiveMeta.ui = { ...fieldMeta.ui, widget: element.widget };\n }\n\n // Use engine to generate fields natively and track validation\n const control = engine.generateField(effectiveMeta, propKey, actualModelName || \"meta\", true);\n templateCells.push(control);\n } catch (error) {\n const msg = (error as Error).message;\n Logger.error(`[MetaUI] Failed to render column ${propKey}`, msg, \"TableLayout\");\n Logger.showErrorPopup(`Failed to render table column '${propKey}'.\\n\\nDetails: ${msg}`);\n templateCells.push(new Text({ text: \"Error\" }));\n }\n } else {\n Logger.warn(`[MetaUI] Unsupported layout element type '${element.type}' inside TableLayout. Only 'Control' is supported for columns.`, \"\", \"TableLayout\");\n }\n });\n } else {\n Logger.debug(\"[MetaUI TableLayout]\", \"No uiLayout provided. Falling back to rendering all properties as columns.\", \"TableLayout\");\n // Fallback: If no uiLayout is provided, render all properties as columns\n Object.keys(props).forEach((key) => {\n try {\n const fieldMeta = props[key];\n const isKey = !!fieldMeta.ui?.isKey;\n\n const column = new Column({\n header: new Text({ text: fieldMeta.ui?.label || key }),\n demandPopin: !isKey,\n minScreenWidth: isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n });\n table.addColumn(column);\n\n const control = engine.generateField(fieldMeta, key, actualModelName || \"meta\", true);\n templateCells.push(control);\n } catch (error) {\n const msg = (error as Error).message;\n Logger.error(`[MetaUI] Failed to render fallback column ${key}`, msg, \"TableLayout\");\n Logger.showErrorPopup(`Failed to render fallback table column '${key}'.\\n\\nDetails: ${msg}`);\n templateCells.push(new Text({ text: \"Error\" }));\n }\n });\n }\n\n\n\n const rowTemplate = new ColumnListItem({\n cells: templateCells\n });\n\n table.bindItems({\n path: actualPath,\n model: actualModelName,\n template: rowTemplate,\n templateShareable: false\n });\n\n return table;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,101 +12,170 @@ import Title from "sap/m/Title";
|
|
|
12
12
|
import ToolbarSpacer from "sap/m/ToolbarSpacer";
|
|
13
13
|
import Button from "sap/m/Button";
|
|
14
14
|
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
15
|
-
import { PluginRegistry } from "../core/PluginRegistry";
|
|
16
15
|
import Control from "sap/ui/core/Control";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
16
|
+
import { IPropertyMetadata, ISchema, ILayoutElement } from "../interfaces/ISchema";
|
|
17
|
+
import { ILayoutManager } from "../interfaces/ILayoutManager";
|
|
18
|
+
import { Engine } from "../core/Engine";
|
|
19
|
+
import { Logger } from "../utils/Logger";
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Layout Manager responsible for generating a responsive SAP Fiori Table.
|
|
23
|
+
* It is automatically utilized by the Engine when the schema root or property is of type 'array'.
|
|
24
|
+
* Includes built-in support for adding and deleting rows via dynamic data binding manipulation.
|
|
25
|
+
*
|
|
26
|
+
* @namespace nz.co.siliconst.ui5.metaui.layouts
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
29
|
+
export class TableLayout implements ILayoutManager {
|
|
21
30
|
/**
|
|
22
|
-
*
|
|
31
|
+
* Renders the JSON Schema array properties into a UI5 Table.
|
|
32
|
+
*
|
|
33
|
+
* @param schema The active JSON schema array definition.
|
|
34
|
+
* @param modelName The UI5 JSONModel name used for data binding.
|
|
35
|
+
* @param engine The central orchestrator for delegating column plugin generation.
|
|
36
|
+
* @param onSubmit Optional submit hook.
|
|
37
|
+
* @param bindingPath The JSON path representing the array within the payload.
|
|
38
|
+
* @returns {Control} The generated sap.m.Table control.
|
|
39
|
+
* @throws {Error} If the provided schema is not of type 'array'.
|
|
23
40
|
*/
|
|
24
|
-
public
|
|
25
|
-
if (!
|
|
26
|
-
throw new Error("[MetaUI]
|
|
41
|
+
public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void, bindingPath: string = "/"): Control {
|
|
42
|
+
if (schema.type !== "array" || !schema.items || !schema.items.properties) {
|
|
43
|
+
throw new Error("[MetaUI] TableLayout requires an array schema with items.properties.");
|
|
27
44
|
}
|
|
28
45
|
|
|
29
|
-
const
|
|
30
|
-
const actualModelName =
|
|
31
|
-
const actualPath =
|
|
32
|
-
// e.g. "meta>/Contacts" -> actualModelName = "meta", actualPath = "/Contacts"
|
|
46
|
+
const tableTitle = schema.title || "Table";
|
|
47
|
+
const actualModelName = modelName;
|
|
48
|
+
const actualPath = bindingPath;
|
|
33
49
|
|
|
34
50
|
const table = new Table({
|
|
35
51
|
headerToolbar: new Toolbar({
|
|
36
52
|
content: [
|
|
37
53
|
new Title({ text: tableTitle }),
|
|
38
54
|
new ToolbarSpacer(),
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
...(engine.isDisplayMode ? [] : [
|
|
56
|
+
new Button({
|
|
57
|
+
text: "Add Row",
|
|
58
|
+
icon: "sap-icon://add",
|
|
59
|
+
press: (oEvent: sap.ui.base.Event) => {
|
|
60
|
+
const btn = oEvent.getSource();
|
|
61
|
+
const tbl = btn.getParent().getParent() as Table;
|
|
62
|
+
const model = tbl.getModel(actualModelName) as JSONModel;
|
|
63
|
+
const info = tbl.getBindingInfo("items");
|
|
64
|
+
if (!info || !info.path) return;
|
|
65
|
+
|
|
66
|
+
const rawData = model.getProperty(info.path);
|
|
67
|
+
const data = Array.isArray(rawData) ? rawData : [];
|
|
68
|
+
const newData = [...data, {}];
|
|
69
|
+
model.setProperty(info.path, newData);
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
])
|
|
54
73
|
]
|
|
55
74
|
}),
|
|
56
75
|
fixedLayout: false,
|
|
57
|
-
mode: "Delete",
|
|
58
|
-
delete: (oEvent:
|
|
76
|
+
mode: engine.isDisplayMode ? "None" : "Delete",
|
|
77
|
+
delete: (oEvent: sap.ui.base.Event) => {
|
|
59
78
|
const item = oEvent.getParameter("listItem");
|
|
60
|
-
const path = item.getBindingContext(actualModelName).getPath();
|
|
79
|
+
const path = item.getBindingContext(actualModelName).getPath();
|
|
61
80
|
const model = item.getModel(actualModelName) as JSONModel;
|
|
62
|
-
|
|
81
|
+
|
|
63
82
|
const splitPaths = path.split("/");
|
|
64
83
|
const index = parseInt(splitPaths.pop() || "0", 10);
|
|
65
84
|
let arrayPath = splitPaths.join("/");
|
|
66
85
|
if (arrayPath === "") arrayPath = "/";
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
data.
|
|
70
|
-
|
|
86
|
+
|
|
87
|
+
const rawData = model.getProperty(arrayPath);
|
|
88
|
+
const data = Array.isArray(rawData) ? rawData : [];
|
|
89
|
+
const newData = [...data];
|
|
90
|
+
newData.splice(index, 1);
|
|
91
|
+
model.setProperty(arrayPath, newData);
|
|
71
92
|
}
|
|
72
93
|
});
|
|
73
94
|
|
|
74
95
|
const templateCells: Control[] = [];
|
|
75
|
-
const
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
96
|
+
const props = schema.items.properties;
|
|
97
|
+
const layoutElements = schema.uiLayout;
|
|
98
|
+
|
|
99
|
+
if (layoutElements && Array.isArray(layoutElements)) {
|
|
100
|
+
// Only render columns defined in uiLayout
|
|
101
|
+
layoutElements.forEach((element: ILayoutElement) => {
|
|
102
|
+
if (element.type === "Control") {
|
|
103
|
+
if (!element.scope || !element.scope.startsWith("#/properties/")) {
|
|
104
|
+
Logger.error(`[MetaUI] Invalid scope '${element.scope}' in uiLayout Control for Table.`, "", "TableLayout");
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const propKey = element.scope.replace("#/properties/", "");
|
|
109
|
+
const fieldMeta = props[propKey];
|
|
110
|
+
|
|
111
|
+
if (!fieldMeta) {
|
|
112
|
+
Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions for Table.`, "", "TableLayout");
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
try {
|
|
117
|
+
const isKey = !!fieldMeta.ui?.isKey;
|
|
118
|
+
|
|
119
|
+
const column = new Column({
|
|
120
|
+
header: new Text({ text: element.label || fieldMeta.ui?.label || propKey }),
|
|
121
|
+
demandPopin: !isKey,
|
|
122
|
+
minScreenWidth: isKey ? "" : "Tablet",
|
|
123
|
+
popinDisplay: "Inline"
|
|
124
|
+
});
|
|
125
|
+
table.addColumn(column);
|
|
126
|
+
|
|
127
|
+
// Override widget if specified in the layout element
|
|
128
|
+
const effectiveMeta = { ...fieldMeta };
|
|
129
|
+
if (element.widget) {
|
|
130
|
+
effectiveMeta.ui = { ...fieldMeta.ui, widget: element.widget };
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Use engine to generate fields natively and track validation
|
|
134
|
+
const control = engine.generateField(effectiveMeta, propKey, actualModelName || "meta", true);
|
|
135
|
+
templateCells.push(control);
|
|
136
|
+
} catch (error) {
|
|
137
|
+
const msg = (error as Error).message;
|
|
138
|
+
Logger.error(`[MetaUI] Failed to render column ${propKey}`, msg, "TableLayout");
|
|
139
|
+
Logger.showErrorPopup(`Failed to render table column '${propKey}'.\n\nDetails: ${msg}`);
|
|
140
|
+
templateCells.push(new Text({ text: "Error" }));
|
|
141
|
+
}
|
|
142
|
+
} else {
|
|
143
|
+
Logger.warn(`[MetaUI] Unsupported layout element type '${element.type}' inside TableLayout. Only 'Control' is supported for columns.`, "", "TableLayout");
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
} else {
|
|
147
|
+
Logger.debug("[MetaUI TableLayout]", "No uiLayout provided. Falling back to rendering all properties as columns.", "TableLayout");
|
|
148
|
+
// Fallback: If no uiLayout is provided, render all properties as columns
|
|
149
|
+
Object.keys(props).forEach((key) => {
|
|
150
|
+
try {
|
|
151
|
+
const fieldMeta = props[key];
|
|
152
|
+
const isKey = !!fieldMeta.ui?.isKey;
|
|
153
|
+
|
|
154
|
+
const column = new Column({
|
|
155
|
+
header: new Text({ text: fieldMeta.ui?.label || key }),
|
|
156
|
+
demandPopin: !isKey,
|
|
157
|
+
minScreenWidth: isKey ? "" : "Tablet",
|
|
158
|
+
popinDisplay: "Inline"
|
|
159
|
+
});
|
|
160
|
+
table.addColumn(column);
|
|
161
|
+
|
|
162
|
+
const control = engine.generateField(fieldMeta, key, actualModelName || "meta", true);
|
|
163
|
+
templateCells.push(control);
|
|
164
|
+
} catch (error) {
|
|
165
|
+
const msg = (error as Error).message;
|
|
166
|
+
Logger.error(`[MetaUI] Failed to render fallback column ${key}`, msg, "TableLayout");
|
|
167
|
+
Logger.showErrorPopup(`Failed to render fallback table column '${key}'.\n\nDetails: ${msg}`);
|
|
168
|
+
templateCells.push(new Text({ text: "Error" }));
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
|
|
104
174
|
|
|
105
175
|
const rowTemplate = new ColumnListItem({
|
|
106
176
|
cells: templateCells
|
|
107
177
|
});
|
|
108
178
|
|
|
109
|
-
// V2 Fix: Actually bind the items to the table!
|
|
110
179
|
table.bindItems({
|
|
111
180
|
path: actualPath,
|
|
112
181
|
model: actualModelName,
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
sap.ui.define(["sap/m/Wizard", "sap/m/WizardStep", "sap/ui/layout/form/SimpleForm", "sap/m/Label", "../utils/Logger"], function (Wizard, WizardStep, SimpleForm, Label, ___utils_Logger) {
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
const Logger = ___utils_Logger["Logger"];
|
|
5
|
+
/**
|
|
6
|
+
* Layout Manager responsible for generating a responsive SAP Fiori Wizard.
|
|
7
|
+
* It segments the schema fields into discrete Wizard Steps based on `uiLayout` elements
|
|
8
|
+
* of type `Group` or `WizardStep`.
|
|
9
|
+
*
|
|
10
|
+
* @namespace nz.co.siliconst.ui5.metaui.layouts
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
class WizardLayout {
|
|
14
|
+
/**
|
|
15
|
+
* Renders the JSON Schema properties into a paginated UI5 Wizard using uiLayout.
|
|
16
|
+
*
|
|
17
|
+
* @param schema The active JSON schema object.
|
|
18
|
+
* @param modelName The bound UI5 model name.
|
|
19
|
+
* @param engine The central orchestrator for delegating plugin generation.
|
|
20
|
+
* @param onSubmit Hook executed when the Wizard's native 'complete' event is fired.
|
|
21
|
+
* @returns {Control} The generated sap.m.Wizard control.
|
|
22
|
+
*/
|
|
23
|
+
render(schema, modelName, engine, onSubmit) {
|
|
24
|
+
const wizard = new Wizard({
|
|
25
|
+
renderMode: "Page",
|
|
26
|
+
showNextButton: true,
|
|
27
|
+
complete: function () {
|
|
28
|
+
if (onSubmit) onSubmit();
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
if (!schema.uiLayout || !Array.isArray(schema.uiLayout)) {
|
|
32
|
+
Logger.warn("[MetaUI] Missing 'uiLayout' array in wizard schema. Wizard will not render any steps.");
|
|
33
|
+
return wizard;
|
|
34
|
+
}
|
|
35
|
+
schema.uiLayout.forEach(element => {
|
|
36
|
+
if (element.type === "Group" || element.type === "WizardStep") {
|
|
37
|
+
const step = new WizardStep({
|
|
38
|
+
title: element.label || "Step",
|
|
39
|
+
validated: true // The PipelineManager handles global validation, wizard step validation can be local later
|
|
40
|
+
});
|
|
41
|
+
const form = new SimpleForm({
|
|
42
|
+
editable: true,
|
|
43
|
+
layout: "ResponsiveGridLayout",
|
|
44
|
+
labelSpanXL: 4,
|
|
45
|
+
labelSpanL: 4,
|
|
46
|
+
labelSpanM: 4,
|
|
47
|
+
labelSpanS: 12,
|
|
48
|
+
adjustLabelSpan: false,
|
|
49
|
+
emptySpanXL: 0,
|
|
50
|
+
emptySpanL: 0,
|
|
51
|
+
emptySpanM: 0,
|
|
52
|
+
emptySpanS: 0,
|
|
53
|
+
columnsXL: 1,
|
|
54
|
+
columnsL: 1,
|
|
55
|
+
columnsM: 1,
|
|
56
|
+
singleContainerFullSize: false
|
|
57
|
+
});
|
|
58
|
+
if (element.elements && Array.isArray(element.elements)) {
|
|
59
|
+
element.elements.forEach(childElement => {
|
|
60
|
+
this._renderElementInForm(form, childElement, schema, modelName, engine);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
step.addContent(form);
|
|
64
|
+
wizard.addStep(step);
|
|
65
|
+
} else {
|
|
66
|
+
Logger.warn(`[MetaUI] Top-level element '${element.type}' inside WizardLayout must be 'Group' or 'WizardStep'.`, "", "WizardLayout");
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return wizard;
|
|
70
|
+
}
|
|
71
|
+
_renderElementInForm(form, element, schema, modelName, engine) {
|
|
72
|
+
if (element.type === "Control") {
|
|
73
|
+
if (!element.scope || !element.scope.startsWith("#/properties/")) {
|
|
74
|
+
Logger.error(`[MetaUI] Invalid scope '${element.scope}' in uiLayout Control.`, "", "WizardLayout");
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const propKey = element.scope.replace("#/properties/", "");
|
|
78
|
+
const meta = schema.properties?.[propKey];
|
|
79
|
+
if (!meta) {
|
|
80
|
+
Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions.`, "", "WizardLayout");
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
const labelText = element.label || meta.ui?.label || propKey;
|
|
85
|
+
const label = new Label({
|
|
86
|
+
text: labelText,
|
|
87
|
+
required: meta.required
|
|
88
|
+
});
|
|
89
|
+
const effectiveMeta = {
|
|
90
|
+
...meta
|
|
91
|
+
};
|
|
92
|
+
if (element.widget) {
|
|
93
|
+
effectiveMeta.ui = {
|
|
94
|
+
...meta.ui,
|
|
95
|
+
widget: element.widget
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
const control = engine.generateField(effectiveMeta, `/${propKey}`, modelName);
|
|
99
|
+
if (effectiveMeta.ui?.fullWidth) {
|
|
100
|
+
sap.ui.require(["sap/ui/layout/GridData"], GridData => {
|
|
101
|
+
control.setLayoutData(new GridData({
|
|
102
|
+
span: "XL12 L12 M12 S12"
|
|
103
|
+
}));
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
form.addContent(label);
|
|
107
|
+
form.addContent(control);
|
|
108
|
+
} catch (error) {
|
|
109
|
+
Logger.error(`[MetaUI] Failed to render Wizard field ${propKey}`, error.message, "WizardLayout");
|
|
110
|
+
form.addContent(new Label({
|
|
111
|
+
text: propKey
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
} else {
|
|
115
|
+
Logger.warn(`[MetaUI] Nested groups within Wizard steps are not fully supported in SimpleForm yet.`, "", "WizardLayout");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
var __exports = {
|
|
120
|
+
__esModule: true
|
|
121
|
+
};
|
|
122
|
+
__exports.WizardLayout = WizardLayout;
|
|
123
|
+
return __exports;
|
|
124
|
+
});
|
|
125
|
+
//# sourceMappingURL=WizardLayout-dbg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WizardLayout-dbg.js","names":["Logger","___utils_Logger","WizardLayout","render","schema","modelName","engine","onSubmit","wizard","Wizard","renderMode","showNextButton","complete","uiLayout","Array","isArray","warn","forEach","element","type","step","WizardStep","title","label","validated","form","SimpleForm","editable","layout","labelSpanXL","labelSpanL","labelSpanM","labelSpanS","adjustLabelSpan","emptySpanXL","emptySpanL","emptySpanM","emptySpanS","columnsXL","columnsL","columnsM","singleContainerFullSize","elements","childElement","_renderElementInForm","addContent","addStep","scope","startsWith","error","propKey","replace","meta","properties","labelText","ui","Label","text","required","effectiveMeta","widget","control","generateField","fullWidth","sap","require","GridData","setLayoutData","span","message","__exports","__esModule"],"sources":["WizardLayout.ts"],"sourcesContent":["/**\n * @file WizardLayout.ts\n * @description Generates a fully responsive SAP Fiori Wizard layout.\n */\n\nimport Wizard from \"sap/m/Wizard\";\nimport WizardStep from \"sap/m/WizardStep\";\nimport SimpleForm from \"sap/ui/layout/form/SimpleForm\";\nimport Label from \"sap/m/Label\";\nimport VBox from \"sap/m/VBox\";\nimport { IPropertyMetadata, ISchema, ILayoutElement } from \"../interfaces/ISchema\";\nimport { ILayoutManager } from \"../interfaces/ILayoutManager\";\nimport { Engine } from \"../core/Engine\";\nimport { Logger } from \"../utils/Logger\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Layout Manager responsible for generating a responsive SAP Fiori Wizard.\n * It segments the schema fields into discrete Wizard Steps based on `uiLayout` elements \n * of type `Group` or `WizardStep`.\n * \n * @namespace nz.co.siliconst.ui5.metaui.layouts\n * @public\n */\nexport class WizardLayout implements ILayoutManager {\n /**\n * Renders the JSON Schema properties into a paginated UI5 Wizard using uiLayout.\n * \n * @param schema The active JSON schema object.\n * @param modelName The bound UI5 model name.\n * @param engine The central orchestrator for delegating plugin generation.\n * @param onSubmit Hook executed when the Wizard's native 'complete' event is fired.\n * @returns {Control} The generated sap.m.Wizard control.\n */\n public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void): Control {\n const wizard = new Wizard({\n renderMode: \"Page\",\n showNextButton: true,\n complete: function() {\n if (onSubmit) onSubmit();\n }\n });\n\n if (!schema.uiLayout || !Array.isArray(schema.uiLayout)) {\n Logger.warn(\"[MetaUI] Missing 'uiLayout' array in wizard schema. Wizard will not render any steps.\");\n return wizard;\n }\n\n schema.uiLayout.forEach((element: ILayoutElement) => {\n if (element.type === \"Group\" || element.type === \"WizardStep\") {\n const step = new WizardStep({\n title: element.label || \"Step\",\n validated: true // The PipelineManager handles global validation, wizard step validation can be local later\n });\n\n const form = new SimpleForm({\n editable: true,\n layout: \"ResponsiveGridLayout\",\n labelSpanXL: 4, labelSpanL: 4, labelSpanM: 4, labelSpanS: 12,\n adjustLabelSpan: false,\n emptySpanXL: 0, emptySpanL: 0, emptySpanM: 0, emptySpanS: 0,\n columnsXL: 1, columnsL: 1, columnsM: 1,\n singleContainerFullSize: false\n });\n \n if (element.elements && Array.isArray(element.elements)) {\n element.elements.forEach(childElement => {\n this._renderElementInForm(form, childElement, schema, modelName, engine);\n });\n }\n\n step.addContent(form);\n wizard.addStep(step);\n } else {\n Logger.warn(`[MetaUI] Top-level element '${element.type}' inside WizardLayout must be 'Group' or 'WizardStep'.`, \"\", \"WizardLayout\");\n }\n });\n\n return wizard;\n }\n\n private _renderElementInForm(form: SimpleForm, element: ILayoutElement, schema: ISchema, modelName: string, engine: Engine): void {\n if (element.type === \"Control\") {\n if (!element.scope || !element.scope.startsWith(\"#/properties/\")) {\n Logger.error(`[MetaUI] Invalid scope '${element.scope}' in uiLayout Control.`, \"\", \"WizardLayout\");\n return;\n }\n \n const propKey = element.scope.replace(\"#/properties/\", \"\");\n const meta = schema.properties?.[propKey];\n \n if (!meta) {\n Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions.`, \"\", \"WizardLayout\");\n return;\n }\n\n try {\n const labelText = element.label || meta.ui?.label || propKey;\n const label = new Label({\n text: labelText,\n required: meta.required\n });\n\n const effectiveMeta = { ...meta };\n if (element.widget) {\n effectiveMeta.ui = { ...meta.ui, widget: element.widget };\n }\n\n const control = engine.generateField(effectiveMeta, `/${propKey}`, modelName);\n\n if (effectiveMeta.ui?.fullWidth) {\n sap.ui.require([\"sap/ui/layout/GridData\"], (GridData: any) => {\n control.setLayoutData(new GridData({ span: \"XL12 L12 M12 S12\" }));\n });\n }\n\n form.addContent(label);\n form.addContent(control);\n } catch (error) {\n Logger.error(`[MetaUI] Failed to render Wizard field ${propKey}`, (error as Error).message, \"WizardLayout\");\n form.addContent(new Label({ text: propKey }));\n }\n } else {\n Logger.warn(`[MetaUI] Nested groups within Wizard steps are not fully supported in SimpleForm yet.`, \"\", \"WizardLayout\");\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
declare module "nz/co/siliconst/ui5/metaui/layouts/WizardLayout" {
|
|
2
|
+
import { ISchema } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
|
|
3
|
+
import { ILayoutManager } from "nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager";
|
|
4
|
+
import { Engine } from "nz/co/siliconst/ui5/metaui/core/Engine";
|
|
5
|
+
import Control from "sap/ui/core/Control";
|
|
6
|
+
/**
|
|
7
|
+
* Layout Manager responsible for generating a responsive SAP Fiori Wizard.
|
|
8
|
+
* It segments the schema fields into discrete Wizard Steps based on `uiLayout` elements
|
|
9
|
+
* of type `Group` or `WizardStep`.
|
|
10
|
+
*
|
|
11
|
+
* @namespace nz.co.siliconst.ui5.metaui.layouts
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export class WizardLayout implements ILayoutManager {
|
|
15
|
+
/**
|
|
16
|
+
* Renders the JSON Schema properties into a paginated UI5 Wizard using uiLayout.
|
|
17
|
+
*
|
|
18
|
+
* @param schema The active JSON schema object.
|
|
19
|
+
* @param modelName The bound UI5 model name.
|
|
20
|
+
* @param engine The central orchestrator for delegating plugin generation.
|
|
21
|
+
* @param onSubmit Hook executed when the Wizard's native 'complete' event is fired.
|
|
22
|
+
* @returns {Control} The generated sap.m.Wizard control.
|
|
23
|
+
*/
|
|
24
|
+
render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void): Control;
|
|
25
|
+
private _renderElementInForm;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=WizardLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WizardLayout.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,iDAAiD,CAAC;IAWjE,OAAO,EAAqB,OAAO,EAAkB,MAAM,+CAA+C,CAAC;IAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;IACtF,OAAO,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;IAEhE,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;;;;;;OAOG;IACH,MAAa,YAAa,YAAW,cAAc;QAC/C;;;;;;;;WAQG;QACI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO;QA+CjG,OAAO,CAAC,oBAAoB;KA6C/B;CAEA"}
|