@siliconst/metaui 1.4.5 → 1.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js +13 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts +10 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.ts +10 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +49 -6
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +48 -5
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +49 -5
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js +32 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts +7 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.ts +11 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js +20 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts +12 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.ts +21 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js +9 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts +7 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.ts +7 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js +13 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts +10 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.ts +10 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +46 -10
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +17 -5
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +48 -8
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +5 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +4 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +4 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +4 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts +4 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.ts +4 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +4 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts +4 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +4 -0
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js +45 -12
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts +6 -0
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.ts +25 -12
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +30 -17
- 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 +8 -8
- 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 +39 -32
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js +17 -3
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts +4 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.ts +13 -3
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +158 -106
- 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 +25 -26
- 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 +176 -113
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +26 -0
- 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 +22 -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.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +22 -0
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +6 -0
- 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 +5 -0
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +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 +5 -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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js +10 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts +9 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.ts +9 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +10 -0
- 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 +9 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +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 +9 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js +9 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts +8 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.ts +8 -0
- package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +2 -32
- package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js +36 -37
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.d.ts +0 -6
- 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 +0 -33
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +23 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts +16 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +21 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +6 -6
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +6 -6
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +3 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +4 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +31 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +27 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +4 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +4 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js +18 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts +16 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +16 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +28 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts +20 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +25 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +4 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +4 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +21 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js +0 -32
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts +0 -16
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.ts +0 -26
|
@@ -3,8 +3,25 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin" {
|
|
|
3
3
|
import { IPropertyMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
|
|
4
4
|
import Control from "sap/ui/core/Control";
|
|
5
5
|
export class CameraPlugin extends BasePlugin {
|
|
6
|
+
/**
|
|
7
|
+
* Renders a `CameraControl` component.
|
|
8
|
+
*
|
|
9
|
+
* @param metadata The specific JSON schema properties for this field.
|
|
10
|
+
* @param bindingPath The JSON path bound to this control.
|
|
11
|
+
* @param modelName The UI5 JSONModel name.
|
|
12
|
+
* @param engineScopeId The deterministic scope ID.
|
|
13
|
+
* @param onChange The callback fired on value change.
|
|
14
|
+
* @returns {Control} The configured CameraControl.
|
|
15
|
+
*/
|
|
6
16
|
render(metadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
|
|
17
|
+
/**
|
|
18
|
+
* Retrieves the current base64 image state.
|
|
19
|
+
* @returns {any} The image value.
|
|
20
|
+
*/
|
|
7
21
|
protected getValue(): any;
|
|
22
|
+
/**
|
|
23
|
+
* Applies dynamic read-only state.
|
|
24
|
+
*/
|
|
8
25
|
protected applyState(): void;
|
|
9
26
|
}
|
|
10
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CameraPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,0DAA0D,CAAC;IAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAG1C,MAAa,YAAa,SAAQ,UAAU;
|
|
1
|
+
{"version":3,"file":"CameraPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,0DAA0D,CAAC;IAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAG1C,MAAa,YAAa,SAAQ,UAAU;QACxC;;;;;;;;;WASG;QACI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAG,WAAW,EAAE,MAAM,EAAG,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;QAuCxL;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,GAAG;QAIzB;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["../controls/BasePlugin","../../controls/CameraControl"],function(t,e){"use strict";function i(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const a=t["BasePlugin"];const s=i(e);class n extends a{render(t,e,i="meta",a,n){this.onChange=n;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=i;if(this.
|
|
1
|
+
sap.ui.define(["../controls/BasePlugin","../../controls/CameraControl"],function(t,e){"use strict";function i(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const a=t["BasePlugin"];const s=i(e);class n extends a{render(t,e,i="meta",a,n){this.onChange=n;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=i;if(!this.isEditable){sap.ui.requireSync("sap/m/Image");const s=sap.ui.require("sap/m/Image");this.control=new s({id:this.generateStableId(a,e),src:`{${i}>${e}}`,width:"400px",alt:t.ui?.label||"Image"});this.applyCommonDirectives(this.control,t,i);return this.control}this.control=new s({id:this.generateStableId(a,e),value:`{${i}>${e}}`,schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,i);this.control.attachCapture(()=>{const t=this.validate();if(this.onChange){this.onChange(t.isValid,this.fieldKey)}});return this.control}getValue(){return this.control?this.control.getValue():null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setProperty("readOnly",!!this.metadata.ui?.readOnly)}}}var r={__esModule:true};r.CameraPlugin=n;return r});
|
|
2
2
|
//# sourceMappingURL=CameraPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CameraPlugin.js","names":["BasePlugin","___controls_BasePlugin","CameraControl","_interopRequireDefault","__CameraControl","CameraPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","
|
|
1
|
+
{"version":3,"file":"CameraPlugin.js","names":["BasePlugin","___controls_BasePlugin","CameraControl","_interopRequireDefault","__CameraControl","CameraPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","sap","ui","requireSync","ImageControl","require","control","id","generateStableId","src","width","alt","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachCapture","result","validate","isValid","getValue","applyState","setProperty","__exports","__esModule"],"sources":["CameraPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CameraControl from \"../../controls/CameraControl\";\n\nexport class CameraPlugin extends BasePlugin {\n /**\n * Renders a `CameraControl` component.\n * \n * @param metadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured CameraControl.\n */\n public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = metadata;\n this.fieldKey = bindingPath.replace('/', '');\n this.modelName = modelName;\n\n if (!this.isEditable) {\n sap.ui.requireSync(\"sap/m/Image\");\n const ImageControl = sap.ui.require(\"sap/m/Image\");\n this.control = new ImageControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n src: `{${modelName}>${bindingPath}}`,\n width: \"400px\",\n alt: metadata.ui?.label || \"Image\"\n });\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new CameraControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: `{${modelName}>${bindingPath}}`,\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n });\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n // Validation mapping could be hooked into the 'capture' event if needed, but Two-Way binding updates the model naturally.\n (this.control as unknown as { attachCapture: (fn: Function) => void }).attachCapture(() => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current base64 image state.\n * @returns {any} The image value.\n */\n protected getValue(): any {\n return this.control ? (this.control as unknown as { getValue: () => unknown }).getValue() : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as unknown as { setProperty: (k: string, v: unknown) => void }).setProperty(\"readOnly\", !!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"0LAASA,EAAUC,EAAA,oBAGZC,EAAaC,EAAAC,GAEb,MAAMC,UAAqBL,EAWvBM,OAAOC,EAA8BC,EAAsBC,EAAoB,OAAQC,EAAwBC,GAClHC,KAAKD,SAAWA,EAChBC,KAAKL,SAAWA,EAChBK,KAAKC,SAAWL,EAAYM,QAAQ,IAAK,IACzCF,KAAKH,UAAYA,EAEjB,IAAKG,KAAKG,WAAY,CAClBC,IAAIC,GAAGC,YAAY,eACnB,MAAMC,EAAeH,IAAIC,GAAGG,QAAQ,eACpCR,KAAKS,QAAU,IAAIF,EAAa,CAC5BG,GAAIV,KAAKW,iBAAiBb,EAAeF,GACzCgB,IAAK,IAAIf,KAAaD,KACtBiB,MAAO,QACPC,IAAKnB,EAASU,IAAIU,OAAS,UAE/Bf,KAAKgB,sBAAsBhB,KAAKS,QAASd,EAAUE,GACnD,OAAOG,KAAKS,OAChB,CAEAT,KAAKS,QAAU,IAAInB,EAAc,CAC7BoB,GAAIV,KAAKW,iBAAiBb,EAAeF,GACzCqB,MAAO,IAAIpB,KAAaD,KACxBsB,eAAgBvB,EAChBwB,WAAYxB,EAASU,IAAIc,WAG7BnB,KAAKgB,sBAAsBhB,KAAKS,QAASd,EAAUE,GAGlDG,KAAKS,QAAiEW,cAAc,KACjF,MAAMC,EAASrB,KAAKsB,WAChB,GAAItB,KAAKD,SAAU,CACfC,KAAKD,SAASsB,EAAOE,QAASvB,KAAKC,SACvC,IAGR,OAAOD,KAAKS,OAChB,CAMUe,WACN,OAAOxB,KAAKS,QAAWT,KAAKS,QAAmDe,WAAa,IAChG,CAKUC,aACN,GAAIzB,KAAKS,SAAWT,KAAKL,SAAU,CAC/B,IAAKK,KAAKG,WAAY,OACrBH,KAAKS,QAAwEiB,YAAY,aAAc1B,KAAKL,SAASU,IAAIc,SAC9H,CACJ,EACH,IAAAQ,EAAA,CAAAC,WAAA,MAAAD,EAAAlC,eAAA,OAAAkC,CAAA","ignoreList":[]}
|
|
@@ -4,13 +4,23 @@ import Control from "sap/ui/core/Control";
|
|
|
4
4
|
import CameraControl from "../../controls/CameraControl";
|
|
5
5
|
|
|
6
6
|
export class CameraPlugin extends BasePlugin {
|
|
7
|
+
/**
|
|
8
|
+
* Renders a `CameraControl` component.
|
|
9
|
+
*
|
|
10
|
+
* @param metadata The specific JSON schema properties for this field.
|
|
11
|
+
* @param bindingPath The JSON path bound to this control.
|
|
12
|
+
* @param modelName The UI5 JSONModel name.
|
|
13
|
+
* @param engineScopeId The deterministic scope ID.
|
|
14
|
+
* @param onChange The callback fired on value change.
|
|
15
|
+
* @returns {Control} The configured CameraControl.
|
|
16
|
+
*/
|
|
7
17
|
public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
|
|
8
18
|
this.onChange = onChange;
|
|
9
19
|
this.metadata = metadata;
|
|
10
20
|
this.fieldKey = bindingPath.replace('/', '');
|
|
11
21
|
this.modelName = modelName;
|
|
12
22
|
|
|
13
|
-
if (this.
|
|
23
|
+
if (!this.isEditable) {
|
|
14
24
|
sap.ui.requireSync("sap/m/Image");
|
|
15
25
|
const ImageControl = sap.ui.require("sap/m/Image");
|
|
16
26
|
this.control = new ImageControl({
|
|
@@ -43,13 +53,20 @@ export class CameraPlugin extends BasePlugin {
|
|
|
43
53
|
return this.control as Control;
|
|
44
54
|
}
|
|
45
55
|
|
|
56
|
+
/**
|
|
57
|
+
* Retrieves the current base64 image state.
|
|
58
|
+
* @returns {any} The image value.
|
|
59
|
+
*/
|
|
46
60
|
protected getValue(): any {
|
|
47
61
|
return this.control ? (this.control as unknown as { getValue: () => unknown }).getValue() : null;
|
|
48
62
|
}
|
|
49
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Applies dynamic read-only state.
|
|
66
|
+
*/
|
|
50
67
|
protected applyState(): void {
|
|
51
68
|
if (this.control && this.metadata) {
|
|
52
|
-
if (this.
|
|
69
|
+
if (!this.isEditable) return;
|
|
53
70
|
(this.control as unknown as { setProperty: (k: string, v: unknown) => void }).setProperty("readOnly", !!this.metadata.ui?.readOnly);
|
|
54
71
|
}
|
|
55
72
|
}
|
|
@@ -14,6 +14,11 @@ sap.ui.define(["./BasePlugin"], function (___BasePlugin) {
|
|
|
14
14
|
* @public
|
|
15
15
|
*/
|
|
16
16
|
class CodeEditorPlugin extends BasePlugin {
|
|
17
|
+
/**
|
|
18
|
+
* Infers the language type from the content.
|
|
19
|
+
* @param value The raw string.
|
|
20
|
+
* @returns The language string.
|
|
21
|
+
*/
|
|
17
22
|
detectLanguage(value) {
|
|
18
23
|
if (!value || typeof value !== "string") return "javascript";
|
|
19
24
|
const trimmed = value.trim();
|
|
@@ -37,6 +42,10 @@ sap.ui.define(["./BasePlugin"], function (___BasePlugin) {
|
|
|
37
42
|
// 3. Fallback to JavaScript
|
|
38
43
|
return "javascript";
|
|
39
44
|
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Dynamically adjusts the height of the editor based on content lines.
|
|
48
|
+
*/
|
|
40
49
|
adjustHeight() {
|
|
41
50
|
if (!this.control) return;
|
|
42
51
|
const val = this.control.getValue() || "";
|
|
@@ -45,6 +54,17 @@ sap.ui.define(["./BasePlugin"], function (___BasePlugin) {
|
|
|
45
54
|
const newHeight = Math.max(100, lines * 18 + 20);
|
|
46
55
|
this.control.setHeight(newHeight + "px");
|
|
47
56
|
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Renders a `sap.ui.codeeditor.CodeEditor` component.
|
|
60
|
+
*
|
|
61
|
+
* @param fieldMetadata The specific JSON schema properties for this field.
|
|
62
|
+
* @param bindingPath The JSON path bound to this control.
|
|
63
|
+
* @param modelName The UI5 JSONModel name.
|
|
64
|
+
* @param engineScopeId The deterministic scope ID.
|
|
65
|
+
* @param onChange The callback fired on value change.
|
|
66
|
+
* @returns {Control} The configured CodeEditor control.
|
|
67
|
+
*/
|
|
48
68
|
render(fieldMetadata, bindingPath, modelName = "meta", engineScopeId, onChange) {
|
|
49
69
|
this.onChange = onChange;
|
|
50
70
|
this.metadata = fieldMetadata;
|
|
@@ -57,7 +77,7 @@ sap.ui.define(["./BasePlugin"], function (___BasePlugin) {
|
|
|
57
77
|
value: `{${modelName}>${bindingPath}}`,
|
|
58
78
|
type: fieldMetadata.ui?.args || "javascript",
|
|
59
79
|
// will be dynamically overridden if args is missing
|
|
60
|
-
editable: this.
|
|
80
|
+
editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,
|
|
61
81
|
height: "100px",
|
|
62
82
|
// Initial minimum height
|
|
63
83
|
width: "100%",
|
|
@@ -103,12 +123,21 @@ sap.ui.define(["./BasePlugin"], function (___BasePlugin) {
|
|
|
103
123
|
this.applyCommonDirectives(this.control, fieldMetadata, modelName);
|
|
104
124
|
return this.control;
|
|
105
125
|
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Retrieves the current code string.
|
|
129
|
+
* @returns {any} The code value.
|
|
130
|
+
*/
|
|
106
131
|
getValue() {
|
|
107
132
|
return this.control ? this.control.getValue() : null;
|
|
108
133
|
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Applies dynamic read-only state.
|
|
137
|
+
*/
|
|
109
138
|
applyState() {
|
|
110
139
|
if (this.control && this.metadata) {
|
|
111
|
-
if (this.
|
|
140
|
+
if (!this.isEditable) return;
|
|
112
141
|
this.control.setEditable(!this.metadata.ui?.readOnly);
|
|
113
142
|
}
|
|
114
143
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEditorPlugin-dbg.js","names":["BasePlugin","___BasePlugin","CodeEditorPlugin","detectLanguage","value","trimmed","trim","startsWith","JSON","parse","e","test","adjustHeight","control","val","getValue","lines","split","length","newHeight","Math","max","setHeight","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","replace","sap","ui","requireSync","CodeEditor","require","id","generateStableId","type","args","editable","isDisplayMode","readOnly","height","width","change","result","validate","isValid","currentVal","detectedType","getType","setType","attachEventOnce","oBinding","getBinding","initLogic","attachChange","applyCommonDirectives","applyState","setEditable","__exports","__esModule"],"sources":["CodeEditorPlugin.ts"],"sourcesContent":["/**\n * @file CodeEditorPlugin.ts\n * @description Renders a sap.ui.codeeditor.CodeEditor for editing source code/JSON.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for code editing.\n * Requires the `sap.ui.codeeditor` library to be loaded.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class CodeEditorPlugin extends BasePlugin {\n private detectLanguage(value: string): string {\n if (!value || typeof value !== \"string\") return \"javascript\";\n \n const trimmed = value.trim();\n if (trimmed === \"\") return \"javascript\";\n\n // 1. JSON\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) {\n try {\n JSON.parse(trimmed);\n return \"json\";\n } catch (e) {\n // Not valid JSON, continue testing\n }\n }\n\n // 2. XML / HTML\n if (/^\\s*<[\\s\\S]*>\\s*$/.test(trimmed)) {\n return \"xml\";\n }\n\n // 3. Fallback to JavaScript\n return \"javascript\";\n }\n\n private adjustHeight(): void {\n if (!this.control) return;\n const val = (this.control as unknown as { getValue: () => unknown }).getValue() || \"\";\n const lines = val.split(/\\r\\n|\\r|\\n/).length;\n // 18px per line + 20px padding, minimum 100px\n const newHeight = Math.max(100, (lines * 18) + 20);\n (this.control as unknown).setHeight(newHeight + \"px\");\n }\n\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\n \n sap.ui.requireSync(\"sap/ui/codeeditor/CodeEditor\");\n const CodeEditor = sap.ui.require(\"sap/ui/codeeditor/CodeEditor\");\n \n this.control = new CodeEditor({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: `{${modelName}>${bindingPath}}`,\n type: fieldMetadata.ui?.args || \"javascript\", // will be dynamically overridden if args is missing\n editable: this.isDisplayMode ? false : !fieldMetadata.ui?.readOnly,\n height: \"100px\", // Initial minimum height\n width: \"100%\",\n change: () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n \n // If language isn't explicitly defined, try to guess it dynamically\n if (!fieldMetadata.ui?.args) {\n const currentVal = (this.control as unknown as { getValue: () => unknown }).getValue();\n const detectedType = this.detectLanguage(currentVal);\n if ((this.control as unknown).getType() !== detectedType) {\n (this.control as unknown).setType(detectedType);\n }\n }\n \n this.adjustHeight();\n }\n });\n\n // Clean architecture: Wait for the model context, then attach safely to the binding itself.\n // No timeouts, no DOM hacks, pure UI5 Eventing.\n (this.control as unknown).attachEventOnce(\"modelContextChange\", () => {\n const oBinding = (this.control as unknown).getBinding(\"value\");\n \n const initLogic = () => {\n if (this.control) {\n const currentVal = (this.control as unknown as { getValue: () => unknown }).getValue();\n if (!fieldMetadata.ui?.args) {\n (this.control as unknown).setType(this.detectLanguage(currentVal));\n }\n this.adjustHeight();\n }\n };\n\n if (oBinding) {\n // Attach for future model changes\n oBinding.attachChange(initLogic);\n }\n \n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n protected getValue(): any {\n return this.control ? (this.control as unknown as { getValue: () => unknown }).getValue() : null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (this.isDisplayMode) return;\n (this.control as unknown).setEditable(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CodeEditorPlugin-dbg.js","names":["BasePlugin","___BasePlugin","CodeEditorPlugin","detectLanguage","value","trimmed","trim","startsWith","JSON","parse","e","test","adjustHeight","control","val","getValue","lines","split","length","newHeight","Math","max","setHeight","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","replace","sap","ui","requireSync","CodeEditor","require","id","generateStableId","type","args","editable","isEditable","readOnly","height","width","change","result","validate","isValid","currentVal","detectedType","getType","setType","attachEventOnce","oBinding","getBinding","initLogic","attachChange","applyCommonDirectives","applyState","setEditable","__exports","__esModule"],"sources":["CodeEditorPlugin.ts"],"sourcesContent":["/**\n * @file CodeEditorPlugin.ts\n * @description Renders a sap.ui.codeeditor.CodeEditor for editing source code/JSON.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for code editing.\n * Requires the `sap.ui.codeeditor` library to be loaded.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class CodeEditorPlugin extends BasePlugin {\n /**\n * Infers the language type from the content.\n * @param value The raw string.\n * @returns The language string.\n */\n private detectLanguage(value: string): string {\n if (!value || typeof value !== \"string\") return \"javascript\";\n \n const trimmed = value.trim();\n if (trimmed === \"\") return \"javascript\";\n\n // 1. JSON\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) {\n try {\n JSON.parse(trimmed);\n return \"json\";\n } catch (e) {\n // Not valid JSON, continue testing\n }\n }\n\n // 2. XML / HTML\n if (/^\\s*<[\\s\\S]*>\\s*$/.test(trimmed)) {\n return \"xml\";\n }\n\n // 3. Fallback to JavaScript\n return \"javascript\";\n }\n\n /**\n * Dynamically adjusts the height of the editor based on content lines.\n */\n private adjustHeight(): void {\n if (!this.control) return;\n const val = (this.control as unknown as { getValue: () => unknown }).getValue() || \"\";\n const lines = val.split(/\\r\\n|\\r|\\n/).length;\n // 18px per line + 20px padding, minimum 100px\n const newHeight = Math.max(100, (lines * 18) + 20);\n (this.control as unknown).setHeight(newHeight + \"px\");\n }\n\n /**\n * Renders a `sap.ui.codeeditor.CodeEditor` component.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured CodeEditor control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\n \n sap.ui.requireSync(\"sap/ui/codeeditor/CodeEditor\");\n const CodeEditor = sap.ui.require(\"sap/ui/codeeditor/CodeEditor\");\n \n this.control = new CodeEditor({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: `{${modelName}>${bindingPath}}`,\n type: fieldMetadata.ui?.args || \"javascript\", // will be dynamically overridden if args is missing\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n height: \"100px\", // Initial minimum height\n width: \"100%\",\n change: () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n \n // If language isn't explicitly defined, try to guess it dynamically\n if (!fieldMetadata.ui?.args) {\n const currentVal = (this.control as unknown as { getValue: () => unknown }).getValue();\n const detectedType = this.detectLanguage(currentVal);\n if ((this.control as unknown).getType() !== detectedType) {\n (this.control as unknown).setType(detectedType);\n }\n }\n \n this.adjustHeight();\n }\n });\n\n // Clean architecture: Wait for the model context, then attach safely to the binding itself.\n // No timeouts, no DOM hacks, pure UI5 Eventing.\n (this.control as unknown).attachEventOnce(\"modelContextChange\", () => {\n const oBinding = (this.control as unknown).getBinding(\"value\");\n \n const initLogic = () => {\n if (this.control) {\n const currentVal = (this.control as unknown as { getValue: () => unknown }).getValue();\n if (!fieldMetadata.ui?.args) {\n (this.control as unknown).setType(this.detectLanguage(currentVal));\n }\n this.adjustHeight();\n }\n };\n\n if (oBinding) {\n // Attach for future model changes\n oBinding.attachChange(initLogic);\n }\n \n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current code string.\n * @returns {any} The code value.\n */\n protected getValue(): any {\n return this.control ? (this.control as unknown as { getValue: () => unknown }).getValue() : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as unknown).setEditable(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;EAHA,MAKSA,UAAU,GAAAC,aAAA;EAInB;AACA;AACA;AACA;AACA;AACA;AACA;EACO,MAAMC,gBAAgB,SAASF,UAAU,CAAC;IAC7C;AACJ;AACA;AACA;AACA;IACYG,cAAcA,CAACC,KAAa,EAAU;MAC1C,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAO,YAAY;MAE5D,MAAMC,OAAO,GAAGD,KAAK,CAACE,IAAI,CAAC,CAAC;MAC5B,IAAID,OAAO,KAAK,EAAE,EAAE,OAAO,YAAY;;MAEvC;MACA,IAAIA,OAAO,CAACE,UAAU,CAAC,GAAG,CAAC,IAAIF,OAAO,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;QACpD,IAAI;UACAC,IAAI,CAACC,KAAK,CAACJ,OAAO,CAAC;UACnB,OAAO,MAAM;QACjB,CAAC,CAAC,OAAOK,CAAC,EAAE;UACR;QAAA;MAER;;MAEA;MACA,IAAI,mBAAmB,CAACC,IAAI,CAACN,OAAO,CAAC,EAAE;QACnC,OAAO,KAAK;MAChB;;MAEA;MACA,OAAO,YAAY;IACvB;;IAEA;AACJ;AACA;IACYO,YAAYA,CAAA,EAAS;MACzB,IAAI,CAAC,IAAI,CAACC,OAAO,EAAE;MACnB,MAAMC,GAAG,GAAI,IAAI,CAACD,OAAO,CAA4CE,QAAQ,CAAC,CAAC,IAAI,EAAE;MACrF,MAAMC,KAAK,GAAGF,GAAG,CAACG,KAAK,CAAC,YAAY,CAAC,CAACC,MAAM;MAC5C;MACA,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAG,EAAGL,KAAK,GAAG,EAAE,GAAI,EAAE,CAAC;MACjD,IAAI,CAACH,OAAO,CAAaS,SAAS,CAACH,SAAS,GAAG,IAAI,CAAC;IACzD;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACWI,MAAMA,CAACC,aAAgC,EAAEC,WAAmB,EAAEC,SAAiB,GAAG,MAAM,EAAEC,aAAsB,EAAEC,QAAwD,EAAW;MACxL,IAAI,CAACA,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACC,QAAQ,GAAGL,aAAa;MAC7B,IAAI,CAACM,QAAQ,GAAGL,WAAW,CAACM,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;;MAE9CC,GAAG,CAACC,EAAE,CAACC,WAAW,CAAC,8BAA8B,CAAC;MAClD,MAAMC,UAAU,GAAGH,GAAG,CAACC,EAAE,CAACG,OAAO,CAAC,8BAA8B,CAAC;MAEjE,IAAI,CAACvB,OAAO,GAAG,IAAIsB,UAAU,CAAC;QAC1BE,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACX,aAAa,EAAEF,WAAW,CAAC;QACrDrB,KAAK,EAAE,IAAIsB,SAAS,IAAID,WAAW,GAAG;QACtCc,IAAI,EAAEf,aAAa,CAACS,EAAE,EAAEO,IAAI,IAAI,YAAY;QAAE;QAC9CC,QAAQ,EAAE,CAAC,IAAI,CAACC,UAAU,GAAG,KAAK,GAAG,CAAClB,aAAa,CAACS,EAAE,EAAEU,QAAQ;QAChEC,MAAM,EAAE,OAAO;QAAE;QACjBC,KAAK,EAAE,MAAM;QACbC,MAAM,EAAEA,CAAA,KAAM;UACV,MAAMC,MAAM,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;UAC9B,IAAI,IAAI,CAACpB,QAAQ,EAAE;YACf,IAAI,CAACA,QAAQ,CAACmB,MAAM,CAACE,OAAO,EAAE,IAAI,CAACnB,QAAQ,CAAC;UAChD;;UAEA;UACA,IAAI,CAACN,aAAa,CAACS,EAAE,EAAEO,IAAI,EAAE;YACzB,MAAMU,UAAU,GAAI,IAAI,CAACrC,OAAO,CAA4CE,QAAQ,CAAC,CAAC;YACtF,MAAMoC,YAAY,GAAG,IAAI,CAAChD,cAAc,CAAC+C,UAAU,CAAC;YACpD,IAAK,IAAI,CAACrC,OAAO,CAAauC,OAAO,CAAC,CAAC,KAAKD,YAAY,EAAE;cACrD,IAAI,CAACtC,OAAO,CAAawC,OAAO,CAACF,YAAY,CAAC;YACnD;UACJ;UAEA,IAAI,CAACvC,YAAY,CAAC,CAAC;QACvB;MACJ,CAAC,CAAC;;MAEF;MACA;MACC,IAAI,CAACC,OAAO,CAAayC,eAAe,CAAC,oBAAoB,EAAE,MAAM;QAClE,MAAMC,QAAQ,GAAI,IAAI,CAAC1C,OAAO,CAAa2C,UAAU,CAAC,OAAO,CAAC;QAE9D,MAAMC,SAAS,GAAGA,CAAA,KAAM;UACpB,IAAI,IAAI,CAAC5C,OAAO,EAAE;YACd,MAAMqC,UAAU,GAAI,IAAI,CAACrC,OAAO,CAA4CE,QAAQ,CAAC,CAAC;YACtF,IAAI,CAACS,aAAa,CAACS,EAAE,EAAEO,IAAI,EAAE;cACxB,IAAI,CAAC3B,OAAO,CAAawC,OAAO,CAAC,IAAI,CAAClD,cAAc,CAAC+C,UAAU,CAAC,CAAC;YACtE;YACA,IAAI,CAACtC,YAAY,CAAC,CAAC;UACvB;QACJ,CAAC;QAED,IAAI2C,QAAQ,EAAE;UACV;UACAA,QAAQ,CAACG,YAAY,CAACD,SAAS,CAAC;QACpC;;QAEA;QACAA,SAAS,CAAC,CAAC;MACf,CAAC,CAAC;MAEF,IAAI,CAACE,qBAAqB,CAAC,IAAI,CAAC9C,OAAO,EAAEW,aAAa,EAAEE,SAAS,CAAC;MAElE,OAAO,IAAI,CAACb,OAAO;IACvB;;IAEA;AACJ;AACA;AACA;IACcE,QAAQA,CAAA,EAAQ;MACtB,OAAO,IAAI,CAACF,OAAO,GAAI,IAAI,CAACA,OAAO,CAA4CE,QAAQ,CAAC,CAAC,GAAG,IAAI;IACpG;;IAEA;AACJ;AACA;IACc6C,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAAC/C,OAAO,IAAI,IAAI,CAACgB,QAAQ,EAAE;QAC/B,IAAI,CAAC,IAAI,CAACa,UAAU,EAAE;QACrB,IAAI,CAAC7B,OAAO,CAAagD,WAAW,CAAC,CAAC,IAAI,CAAChC,QAAQ,CAACI,EAAE,EAAEU,QAAQ,CAAC;MACtE;IACJ;EACJ;EAAC,IAAAmB,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAA5D,gBAAA,GAAAA,gBAAA;EAAA,OAAA4D,SAAA;AAAA","ignoreList":[]}
|
|
@@ -14,10 +14,35 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin" {
|
|
|
14
14
|
* @public
|
|
15
15
|
*/
|
|
16
16
|
export class CodeEditorPlugin extends BasePlugin {
|
|
17
|
+
/**
|
|
18
|
+
* Infers the language type from the content.
|
|
19
|
+
* @param value The raw string.
|
|
20
|
+
* @returns The language string.
|
|
21
|
+
*/
|
|
17
22
|
private detectLanguage;
|
|
23
|
+
/**
|
|
24
|
+
* Dynamically adjusts the height of the editor based on content lines.
|
|
25
|
+
*/
|
|
18
26
|
private adjustHeight;
|
|
27
|
+
/**
|
|
28
|
+
* Renders a `sap.ui.codeeditor.CodeEditor` component.
|
|
29
|
+
*
|
|
30
|
+
* @param fieldMetadata The specific JSON schema properties for this field.
|
|
31
|
+
* @param bindingPath The JSON path bound to this control.
|
|
32
|
+
* @param modelName The UI5 JSONModel name.
|
|
33
|
+
* @param engineScopeId The deterministic scope ID.
|
|
34
|
+
* @param onChange The callback fired on value change.
|
|
35
|
+
* @returns {Control} The configured CodeEditor control.
|
|
36
|
+
*/
|
|
19
37
|
render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
|
|
38
|
+
/**
|
|
39
|
+
* Retrieves the current code string.
|
|
40
|
+
* @returns {any} The code value.
|
|
41
|
+
*/
|
|
20
42
|
protected getValue(): any;
|
|
43
|
+
/**
|
|
44
|
+
* Applies dynamic read-only state.
|
|
45
|
+
*/
|
|
21
46
|
protected applyState(): void;
|
|
22
47
|
}
|
|
23
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEditorPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,8DAA8D,CAAC;IAC9E;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;;;;;OAMG;IACH,MAAa,gBAAiB,SAAQ,UAAU;QAC5C,OAAO,CAAC,cAAc;QAyBtB,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"CodeEditorPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,8DAA8D,CAAC;IAC9E;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;;;;;OAMG;IACH,MAAa,gBAAiB,SAAQ,UAAU;QAC5C;;;;WAIG;QACH,OAAO,CAAC,cAAc;QAyBtB;;WAEG;QACH,OAAO,CAAC,YAAY;QASpB;;;;;;;;;WASG;QACI,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;QA+D3L;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,GAAG;QAIzB;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["./BasePlugin"],function(t){"use strict";const e=t["BasePlugin"];class i extends e{detectLanguage(t){if(!t||typeof t!=="string")return"javascript";const e=t.trim();if(e==="")return"javascript";if(e.startsWith("{")||e.startsWith("[")){try{JSON.parse(e);return"json"}catch(t){}}if(/^\s*<[\s\S]*>\s*$/.test(e)){return"xml"}return"javascript"}adjustHeight(){if(!this.control)return;const t=this.control.getValue()||"";const e=t.split(/\r\n|\r|\n/).length;const i=Math.max(100,e*18+20);this.control.setHeight(i+"px")}render(t,e,i="meta",s,a){this.onChange=a;this.metadata=t;this.fieldKey=e.replace("/","");sap.ui.requireSync("sap/ui/codeeditor/CodeEditor");const n=sap.ui.require("sap/ui/codeeditor/CodeEditor");this.control=new n({id:this.generateStableId(s,e),value:`{${i}>${e}}`,type:t.ui?.args||"javascript",editable
|
|
1
|
+
sap.ui.define(["./BasePlugin"],function(t){"use strict";const e=t["BasePlugin"];class i extends e{detectLanguage(t){if(!t||typeof t!=="string")return"javascript";const e=t.trim();if(e==="")return"javascript";if(e.startsWith("{")||e.startsWith("[")){try{JSON.parse(e);return"json"}catch(t){}}if(/^\s*<[\s\S]*>\s*$/.test(e)){return"xml"}return"javascript"}adjustHeight(){if(!this.control)return;const t=this.control.getValue()||"";const e=t.split(/\r\n|\r|\n/).length;const i=Math.max(100,e*18+20);this.control.setHeight(i+"px")}render(t,e,i="meta",s,a){this.onChange=a;this.metadata=t;this.fieldKey=e.replace("/","");sap.ui.requireSync("sap/ui/codeeditor/CodeEditor");const n=sap.ui.require("sap/ui/codeeditor/CodeEditor");this.control=new n({id:this.generateStableId(s,e),value:`{${i}>${e}}`,type:t.ui?.args||"javascript",editable:!this.isEditable?false:!t.ui?.readOnly,height:"100px",width:"100%",change:()=>{const e=this.validate();if(this.onChange){this.onChange(e.isValid,this.fieldKey)}if(!t.ui?.args){const t=this.control.getValue();const e=this.detectLanguage(t);if(this.control.getType()!==e){this.control.setType(e)}}this.adjustHeight()}});this.control.attachEventOnce("modelContextChange",()=>{const e=this.control.getBinding("value");const i=()=>{if(this.control){const e=this.control.getValue();if(!t.ui?.args){this.control.setType(this.detectLanguage(e))}this.adjustHeight()}};if(e){e.attachChange(i)}i()});this.applyCommonDirectives(this.control,t,i);return this.control}getValue(){return this.control?this.control.getValue():null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setEditable(!this.metadata.ui?.readOnly)}}}var s={__esModule:true};s.CodeEditorPlugin=i;return s});
|
|
2
2
|
//# sourceMappingURL=CodeEditorPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEditorPlugin.js","names":["BasePlugin","___BasePlugin","CodeEditorPlugin","detectLanguage","value","trimmed","trim","startsWith","JSON","parse","e","test","adjustHeight","this","control","val","getValue","lines","split","length","newHeight","Math","max","setHeight","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","replace","sap","ui","requireSync","CodeEditor","require","id","generateStableId","type","args","editable","
|
|
1
|
+
{"version":3,"file":"CodeEditorPlugin.js","names":["BasePlugin","___BasePlugin","CodeEditorPlugin","detectLanguage","value","trimmed","trim","startsWith","JSON","parse","e","test","adjustHeight","this","control","val","getValue","lines","split","length","newHeight","Math","max","setHeight","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","replace","sap","ui","requireSync","CodeEditor","require","id","generateStableId","type","args","editable","isEditable","readOnly","height","width","change","result","validate","isValid","currentVal","detectedType","getType","setType","attachEventOnce","oBinding","getBinding","initLogic","attachChange","applyCommonDirectives","applyState","setEditable","__exports","__esModule"],"sources":["CodeEditorPlugin.ts"],"sourcesContent":["/**\n * @file CodeEditorPlugin.ts\n * @description Renders a sap.ui.codeeditor.CodeEditor for editing source code/JSON.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for code editing.\n * Requires the `sap.ui.codeeditor` library to be loaded.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class CodeEditorPlugin extends BasePlugin {\n /**\n * Infers the language type from the content.\n * @param value The raw string.\n * @returns The language string.\n */\n private detectLanguage(value: string): string {\n if (!value || typeof value !== \"string\") return \"javascript\";\n \n const trimmed = value.trim();\n if (trimmed === \"\") return \"javascript\";\n\n // 1. JSON\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) {\n try {\n JSON.parse(trimmed);\n return \"json\";\n } catch (e) {\n // Not valid JSON, continue testing\n }\n }\n\n // 2. XML / HTML\n if (/^\\s*<[\\s\\S]*>\\s*$/.test(trimmed)) {\n return \"xml\";\n }\n\n // 3. Fallback to JavaScript\n return \"javascript\";\n }\n\n /**\n * Dynamically adjusts the height of the editor based on content lines.\n */\n private adjustHeight(): void {\n if (!this.control) return;\n const val = (this.control as unknown as { getValue: () => unknown }).getValue() || \"\";\n const lines = val.split(/\\r\\n|\\r|\\n/).length;\n // 18px per line + 20px padding, minimum 100px\n const newHeight = Math.max(100, (lines * 18) + 20);\n (this.control as unknown).setHeight(newHeight + \"px\");\n }\n\n /**\n * Renders a `sap.ui.codeeditor.CodeEditor` component.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured CodeEditor control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\n \n sap.ui.requireSync(\"sap/ui/codeeditor/CodeEditor\");\n const CodeEditor = sap.ui.require(\"sap/ui/codeeditor/CodeEditor\");\n \n this.control = new CodeEditor({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: `{${modelName}>${bindingPath}}`,\n type: fieldMetadata.ui?.args || \"javascript\", // will be dynamically overridden if args is missing\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n height: \"100px\", // Initial minimum height\n width: \"100%\",\n change: () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n \n // If language isn't explicitly defined, try to guess it dynamically\n if (!fieldMetadata.ui?.args) {\n const currentVal = (this.control as unknown as { getValue: () => unknown }).getValue();\n const detectedType = this.detectLanguage(currentVal);\n if ((this.control as unknown).getType() !== detectedType) {\n (this.control as unknown).setType(detectedType);\n }\n }\n \n this.adjustHeight();\n }\n });\n\n // Clean architecture: Wait for the model context, then attach safely to the binding itself.\n // No timeouts, no DOM hacks, pure UI5 Eventing.\n (this.control as unknown).attachEventOnce(\"modelContextChange\", () => {\n const oBinding = (this.control as unknown).getBinding(\"value\");\n \n const initLogic = () => {\n if (this.control) {\n const currentVal = (this.control as unknown as { getValue: () => unknown }).getValue();\n if (!fieldMetadata.ui?.args) {\n (this.control as unknown).setType(this.detectLanguage(currentVal));\n }\n this.adjustHeight();\n }\n };\n\n if (oBinding) {\n // Attach for future model changes\n oBinding.attachChange(initLogic);\n }\n \n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current code string.\n * @returns {any} The code value.\n */\n protected getValue(): any {\n return this.control ? (this.control as unknown as { getValue: () => unknown }).getValue() : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as unknown).setEditable(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"wDAAA,MAKSA,EAAUC,EAAA,cAWZ,MAAMC,UAAyBF,EAM1BG,eAAeC,GACnB,IAAKA,UAAgBA,IAAU,SAAU,MAAO,aAEhD,MAAMC,EAAUD,EAAME,OACtB,GAAID,IAAY,GAAI,MAAO,aAG3B,GAAIA,EAAQE,WAAW,MAAQF,EAAQE,WAAW,KAAM,CACpD,IACIC,KAAKC,MAAMJ,GACX,MAAO,MACX,CAAE,MAAOK,GACL,CAER,CAGA,GAAI,oBAAoBC,KAAKN,GAAU,CACnC,MAAO,KACX,CAGA,MAAO,YACX,CAKQO,eACJ,IAAKC,KAAKC,QAAS,OACnB,MAAMC,EAAOF,KAAKC,QAAmDE,YAAc,GACnF,MAAMC,EAAQF,EAAIG,MAAM,cAAcC,OAEtC,MAAMC,EAAYC,KAAKC,IAAI,IAAML,EAAQ,GAAM,IAC9CJ,KAAKC,QAAoBS,UAAUH,EAAY,KACpD,CAYOI,OAAOC,EAAkCC,EAAqBC,EAAoB,OAAQC,EAAwBC,GACrHhB,KAAKgB,SAAWA,EAChBhB,KAAKiB,SAAWL,EAChBZ,KAAKkB,SAAWL,EAAYM,QAAQ,IAAK,IAEzCC,IAAIC,GAAGC,YAAY,gCACnB,MAAMC,EAAaH,IAAIC,GAAGG,QAAQ,gCAElCxB,KAAKC,QAAU,IAAIsB,EAAW,CAC1BE,GAAIzB,KAAK0B,iBAAiBX,EAAeF,GACzCtB,MAAO,IAAIuB,KAAaD,KACxBc,KAAMf,EAAcS,IAAIO,MAAQ,aAChCC,UAAW7B,KAAK8B,WAAa,OAASlB,EAAcS,IAAIU,SACxDC,OAAQ,QACRC,MAAO,OACPC,OAAQA,KACJ,MAAMC,EAASnC,KAAKoC,WACpB,GAAIpC,KAAKgB,SAAU,CACfhB,KAAKgB,SAASmB,EAAOE,QAASrC,KAAKkB,SACvC,CAGA,IAAKN,EAAcS,IAAIO,KAAM,CACzB,MAAMU,EAActC,KAAKC,QAAmDE,WAC5E,MAAMoC,EAAevC,KAAKV,eAAegD,GACzC,GAAKtC,KAAKC,QAAoBuC,YAAcD,EAAc,CACrDvC,KAAKC,QAAoBwC,QAAQF,EACtC,CACJ,CAEAvC,KAAKD,kBAMZC,KAAKC,QAAoByC,gBAAgB,qBAAsB,KAC5D,MAAMC,EAAY3C,KAAKC,QAAoB2C,WAAW,SAEtD,MAAMC,EAAYA,KACd,GAAI7C,KAAKC,QAAS,CACd,MAAMqC,EAActC,KAAKC,QAAmDE,WAC5E,IAAKS,EAAcS,IAAIO,KAAM,CACxB5B,KAAKC,QAAoBwC,QAAQzC,KAAKV,eAAegD,GAC1D,CACAtC,KAAKD,cACT,GAGJ,GAAI4C,EAAU,CAEVA,EAASG,aAAaD,EAC1B,CAGAA,MAGJ7C,KAAK+C,sBAAsB/C,KAAKC,QAASW,EAAeE,GAExD,OAAOd,KAAKC,OAChB,CAMUE,WACN,OAAOH,KAAKC,QAAWD,KAAKC,QAAmDE,WAAa,IAChG,CAKU6C,aACN,GAAIhD,KAAKC,SAAWD,KAAKiB,SAAU,CAC/B,IAAKjB,KAAK8B,WAAY,OACrB9B,KAAKC,QAAoBgD,aAAajD,KAAKiB,SAASI,IAAIU,SAC7D,CACJ,EACH,IAAAmB,EAAA,CAAAC,WAAA,MAAAD,EAAA7D,mBAAA,OAAA6D,CAAA","ignoreList":[]}
|
|
@@ -15,6 +15,11 @@ import Control from "sap/ui/core/Control";
|
|
|
15
15
|
* @public
|
|
16
16
|
*/
|
|
17
17
|
export class CodeEditorPlugin extends BasePlugin {
|
|
18
|
+
/**
|
|
19
|
+
* Infers the language type from the content.
|
|
20
|
+
* @param value The raw string.
|
|
21
|
+
* @returns The language string.
|
|
22
|
+
*/
|
|
18
23
|
private detectLanguage(value: string): string {
|
|
19
24
|
if (!value || typeof value !== "string") return "javascript";
|
|
20
25
|
|
|
@@ -40,6 +45,9 @@ export class CodeEditorPlugin extends BasePlugin {
|
|
|
40
45
|
return "javascript";
|
|
41
46
|
}
|
|
42
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Dynamically adjusts the height of the editor based on content lines.
|
|
50
|
+
*/
|
|
43
51
|
private adjustHeight(): void {
|
|
44
52
|
if (!this.control) return;
|
|
45
53
|
const val = (this.control as unknown as { getValue: () => unknown }).getValue() || "";
|
|
@@ -49,6 +57,16 @@ export class CodeEditorPlugin extends BasePlugin {
|
|
|
49
57
|
(this.control as unknown).setHeight(newHeight + "px");
|
|
50
58
|
}
|
|
51
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Renders a `sap.ui.codeeditor.CodeEditor` component.
|
|
62
|
+
*
|
|
63
|
+
* @param fieldMetadata The specific JSON schema properties for this field.
|
|
64
|
+
* @param bindingPath The JSON path bound to this control.
|
|
65
|
+
* @param modelName The UI5 JSONModel name.
|
|
66
|
+
* @param engineScopeId The deterministic scope ID.
|
|
67
|
+
* @param onChange The callback fired on value change.
|
|
68
|
+
* @returns {Control} The configured CodeEditor control.
|
|
69
|
+
*/
|
|
52
70
|
public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
|
|
53
71
|
this.onChange = onChange;
|
|
54
72
|
this.metadata = fieldMetadata;
|
|
@@ -61,7 +79,7 @@ export class CodeEditorPlugin extends BasePlugin {
|
|
|
61
79
|
id: this.generateStableId(engineScopeId, bindingPath),
|
|
62
80
|
value: `{${modelName}>${bindingPath}}`,
|
|
63
81
|
type: fieldMetadata.ui?.args || "javascript", // will be dynamically overridden if args is missing
|
|
64
|
-
editable: this.
|
|
82
|
+
editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,
|
|
65
83
|
height: "100px", // Initial minimum height
|
|
66
84
|
width: "100%",
|
|
67
85
|
change: () => {
|
|
@@ -112,13 +130,20 @@ export class CodeEditorPlugin extends BasePlugin {
|
|
|
112
130
|
return this.control as Control;
|
|
113
131
|
}
|
|
114
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Retrieves the current code string.
|
|
135
|
+
* @returns {any} The code value.
|
|
136
|
+
*/
|
|
115
137
|
protected getValue(): any {
|
|
116
138
|
return this.control ? (this.control as unknown as { getValue: () => unknown }).getValue() : null;
|
|
117
139
|
}
|
|
118
140
|
|
|
141
|
+
/**
|
|
142
|
+
* Applies dynamic read-only state.
|
|
143
|
+
*/
|
|
119
144
|
protected applyState(): void {
|
|
120
145
|
if (this.control && this.metadata) {
|
|
121
|
-
if (this.
|
|
146
|
+
if (!this.isEditable) return;
|
|
122
147
|
(this.control as unknown).setEditable(!this.metadata.ui?.readOnly);
|
|
123
148
|
}
|
|
124
149
|
}
|
|
@@ -10,10 +10,20 @@ sap.ui.define(["./BasePlugin", "sap/m/DatePicker"], function (___BasePlugin, Dat
|
|
|
10
10
|
* Handles rendering logic for Date strings.
|
|
11
11
|
*/
|
|
12
12
|
class DatePlugin extends BasePlugin {
|
|
13
|
+
/**
|
|
14
|
+
* Renders a `sap.m.DatePicker` component.
|
|
15
|
+
*
|
|
16
|
+
* @param fieldMetadata The specific JSON schema properties for this field.
|
|
17
|
+
* @param bindingPath The JSON path bound to this control.
|
|
18
|
+
* @param modelName The UI5 JSONModel name.
|
|
19
|
+
* @param engineScopeId The deterministic scope ID.
|
|
20
|
+
* @param onChange The callback fired on value change.
|
|
21
|
+
* @returns {Control} The configured DatePicker control.
|
|
22
|
+
*/
|
|
13
23
|
render(fieldMetadata, bindingPath, modelName = "meta", engineScopeId, onChange) {
|
|
14
24
|
this.onChange = onChange;
|
|
15
25
|
this.metadata = fieldMetadata;
|
|
16
|
-
if (this.
|
|
26
|
+
if (!this.isEditable) {
|
|
17
27
|
sap.ui.requireSync("sap/m/Text");
|
|
18
28
|
const TextControl = sap.ui.require("sap/m/Text");
|
|
19
29
|
this.control = new TextControl({
|
|
@@ -57,12 +67,21 @@ sap.ui.define(["./BasePlugin", "sap/m/DatePicker"], function (___BasePlugin, Dat
|
|
|
57
67
|
});
|
|
58
68
|
return this.control;
|
|
59
69
|
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Retrieves the current date string.
|
|
73
|
+
* @returns {any} The date value.
|
|
74
|
+
*/
|
|
60
75
|
getValue() {
|
|
61
76
|
return this.control ? this.control.getValue() : null;
|
|
62
77
|
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Applies dynamic read-only state.
|
|
81
|
+
*/
|
|
63
82
|
applyState() {
|
|
64
83
|
if (this.control && this.metadata) {
|
|
65
|
-
if (this.
|
|
84
|
+
if (!this.isEditable) return;
|
|
66
85
|
const dp = this.control;
|
|
67
86
|
dp.setEditable(!this.metadata.ui?.readOnly);
|
|
68
87
|
dp.setRequired(this.metadata.required);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePlugin-dbg.js","names":["BasePlugin","___BasePlugin","DatePlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","
|
|
1
|
+
{"version":3,"file":"DatePlugin-dbg.js","names":["BasePlugin","___BasePlugin","DatePlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","isEditable","sap","ui","requireSync","TextControl","require","control","id","generateStableId","text","path","type","formatOptions","source","pattern","applyCommonDirectives","DatePicker","value","displayFormat","editable","readOnly","required","change","oEvent","val","getParameter","result","validate","isValid","fieldKey","getValue","applyState","dp","setEditable","setRequired","__exports","__esModule"],"sources":["DatePlugin.ts"],"sourcesContent":["/**\n * @file DatePlugin.ts\n * @description Renders a sap.m.DatePicker natively bound to ISO date strings.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport DatePicker from \"sap/m/DatePicker\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for Date strings.\n */\nexport class DatePlugin extends BasePlugin {\n /**\n * Renders a `sap.m.DatePicker` component.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured DatePicker control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n \n if (!this.isEditable) {\n sap.ui.requireSync(\"sap/m/Text\");\n const TextControl = sap.ui.require(\"sap/m/Text\");\n this.control = new TextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: {\n path: `${modelName}>${bindingPath}`,\n type: \"sap.ui.model.type.Date\",\n formatOptions: {\n source: { pattern: \"yyyy-MM-dd\" },\n pattern: \"yyyy-MM-dd\"\n }\n }\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n this.control = new DatePicker({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: {\n path: `${modelName}>${bindingPath}`,\n type: \"sap.ui.model.type.Date\",\n formatOptions: {\n source: { pattern: \"yyyy-MM-dd\" },\n pattern: \"yyyy-MM-dd\"\n }\n },\n displayFormat: \"long\",\n editable: !fieldMetadata.ui?.readOnly,\n required: fieldMetadata.required,\n change: (oEvent: sap.ui.base.Event) => {\n const val = oEvent.getParameter(\"value\");\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current date string.\n * @returns {any} The date value.\n */\n protected getValue(): any {\n return this.control ? (this.control as DatePicker).getValue() : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n const dp = this.control as DatePicker;\n dp.setEditable(!this.metadata.ui?.readOnly);\n dp.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,8 +10,25 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin" {
|
|
|
10
10
|
* Handles rendering logic for Date strings.
|
|
11
11
|
*/
|
|
12
12
|
export class DatePlugin extends BasePlugin {
|
|
13
|
+
/**
|
|
14
|
+
* Renders a `sap.m.DatePicker` component.
|
|
15
|
+
*
|
|
16
|
+
* @param fieldMetadata The specific JSON schema properties for this field.
|
|
17
|
+
* @param bindingPath The JSON path bound to this control.
|
|
18
|
+
* @param modelName The UI5 JSONModel name.
|
|
19
|
+
* @param engineScopeId The deterministic scope ID.
|
|
20
|
+
* @param onChange The callback fired on value change.
|
|
21
|
+
* @returns {Control} The configured DatePicker control.
|
|
22
|
+
*/
|
|
13
23
|
render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
|
|
24
|
+
/**
|
|
25
|
+
* Retrieves the current date string.
|
|
26
|
+
* @returns {any} The date value.
|
|
27
|
+
*/
|
|
14
28
|
protected getValue(): any;
|
|
29
|
+
/**
|
|
30
|
+
* Applies dynamic read-only state.
|
|
31
|
+
*/
|
|
15
32
|
protected applyState(): void;
|
|
16
33
|
}
|
|
17
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,wDAAwD,CAAC;IACxE;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAElF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;OAEG;IACH,MAAa,UAAW,SAAQ,UAAU;
|
|
1
|
+
{"version":3,"file":"DatePlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,wDAAwD,CAAC;IACxE;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAElF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;OAEG;IACH,MAAa,UAAW,SAAQ,UAAU;QACtC;;;;;;;;;WASG;QACI,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAG,WAAW,EAAE,MAAM,EAAG,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;QA+C7L;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,GAAG;QAIzB;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAQ/B;CAEA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["./BasePlugin","sap/m/DatePicker"],function(t,e){"use strict";const a=t["BasePlugin"];class i extends a{render(t,a,i="meta",s,r){this.onChange=r;this.metadata=t;if(this.
|
|
1
|
+
sap.ui.define(["./BasePlugin","sap/m/DatePicker"],function(t,e){"use strict";const a=t["BasePlugin"];class i extends a{render(t,a,i="meta",s,r){this.onChange=r;this.metadata=t;if(!this.isEditable){sap.ui.requireSync("sap/m/Text");const e=sap.ui.require("sap/m/Text");this.control=new e({id:this.generateStableId(s,a),text:{path:`${i}>${a}`,type:"sap.ui.model.type.Date",formatOptions:{source:{pattern:"yyyy-MM-dd"},pattern:"yyyy-MM-dd"}}});this.applyCommonDirectives(this.control,t,i);return this.control}this.control=new e({id:this.generateStableId(s,a),value:{path:`${i}>${a}`,type:"sap.ui.model.type.Date",formatOptions:{source:{pattern:"yyyy-MM-dd"},pattern:"yyyy-MM-dd"}},displayFormat:"long",editable:!t.ui?.readOnly,required:t.required,change:t=>{const e=t.getParameter("value");const a=this.validate();if(this.onChange){this.onChange(a.isValid,this.fieldKey)}}});return this.control}getValue(){return this.control?this.control.getValue():null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;const t=this.control;t.setEditable(!this.metadata.ui?.readOnly);t.setRequired(this.metadata.required)}}}var s={__esModule:true};s.DatePlugin=i;return s});
|
|
2
2
|
//# sourceMappingURL=DatePlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePlugin.js","names":["BasePlugin","___BasePlugin","DatePlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","this","metadata","
|
|
1
|
+
{"version":3,"file":"DatePlugin.js","names":["BasePlugin","___BasePlugin","DatePlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","this","metadata","isEditable","sap","ui","requireSync","TextControl","require","control","id","generateStableId","text","path","type","formatOptions","source","pattern","applyCommonDirectives","DatePicker","value","displayFormat","editable","readOnly","required","change","oEvent","val","getParameter","result","validate","isValid","fieldKey","getValue","applyState","dp","setEditable","setRequired","__exports","__esModule"],"sources":["DatePlugin.ts"],"sourcesContent":["/**\n * @file DatePlugin.ts\n * @description Renders a sap.m.DatePicker natively bound to ISO date strings.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport DatePicker from \"sap/m/DatePicker\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for Date strings.\n */\nexport class DatePlugin extends BasePlugin {\n /**\n * Renders a `sap.m.DatePicker` component.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured DatePicker control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n \n if (!this.isEditable) {\n sap.ui.requireSync(\"sap/m/Text\");\n const TextControl = sap.ui.require(\"sap/m/Text\");\n this.control = new TextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: {\n path: `${modelName}>${bindingPath}`,\n type: \"sap.ui.model.type.Date\",\n formatOptions: {\n source: { pattern: \"yyyy-MM-dd\" },\n pattern: \"yyyy-MM-dd\"\n }\n }\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n this.control = new DatePicker({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: {\n path: `${modelName}>${bindingPath}`,\n type: \"sap.ui.model.type.Date\",\n formatOptions: {\n source: { pattern: \"yyyy-MM-dd\" },\n pattern: \"yyyy-MM-dd\"\n }\n },\n displayFormat: \"long\",\n editable: !fieldMetadata.ui?.readOnly,\n required: fieldMetadata.required,\n change: (oEvent: sap.ui.base.Event) => {\n const val = oEvent.getParameter(\"value\");\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current date string.\n * @returns {any} The date value.\n */\n protected getValue(): any {\n return this.control ? (this.control as DatePicker).getValue() : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n const dp = this.control as DatePicker;\n dp.setEditable(!this.metadata.ui?.readOnly);\n dp.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":"6EAAA,MAKSA,EAAUC,EAAA,cAQZ,MAAMC,UAAmBF,EAWrBG,OAAOC,EAAmCC,EAAsBC,EAAoB,OAAQC,EAAwBC,GACvHC,KAAKD,SAAWA,EAChBC,KAAKC,SAAWN,EAEhB,IAAKK,KAAKE,WAAY,CAClBC,IAAIC,GAAGC,YAAY,cACnB,MAAMC,EAAcH,IAAIC,GAAGG,QAAQ,cACnCP,KAAKQ,QAAU,IAAIF,EAAY,CAC3BG,GAAIT,KAAKU,iBAAiBZ,EAAeF,GACzCe,KAAM,CACFC,KAAM,GAAGf,KAAaD,IACtBiB,KAAM,yBACNC,cAAe,CACXC,OAAQ,CAAEC,QAAS,cACnBA,QAAS,iBAIrBhB,KAAKiB,sBAAsBjB,KAAKQ,QAASb,EAAeE,GACxD,OAAOG,KAAKQ,OAChB,CAEAR,KAAKQ,QAAU,IAAIU,EAAW,CAC1BT,GAAIT,KAAKU,iBAAiBZ,EAAeF,GACzCuB,MAAO,CACHP,KAAM,GAAGf,KAAaD,IACtBiB,KAAM,yBACNC,cAAe,CACXC,OAAQ,CAAEC,QAAS,cACnBA,QAAS,eAGjBI,cAAe,OACfC,UAAW1B,EAAcS,IAAIkB,SAC7BC,SAAU5B,EAAc4B,SACxBC,OAASC,IACL,MAAMC,EAAMD,EAAOE,aAAa,SAChC,MAAMC,EAAS5B,KAAK6B,WACpB,GAAI7B,KAAKD,SAAU,CACfC,KAAKD,SAAS6B,EAAOE,QAAS9B,KAAK+B,SACvC,KAIR,OAAO/B,KAAKQ,OAChB,CAMUwB,WACN,OAAOhC,KAAKQ,QAAWR,KAAKQ,QAAuBwB,WAAa,IACpE,CAKUC,aACN,GAAIjC,KAAKQ,SAAWR,KAAKC,SAAU,CAC/B,IAAKD,KAAKE,WAAY,OACtB,MAAMgC,EAAKlC,KAAKQ,QAChB0B,EAAGC,aAAanC,KAAKC,SAASG,IAAIkB,UAClCY,EAAGE,YAAYpC,KAAKC,SAASsB,SACjC,CACJ,EACH,IAAAc,EAAA,CAAAC,WAAA,MAAAD,EAAA5C,aAAA,OAAA4C,CAAA","ignoreList":[]}
|
|
@@ -12,11 +12,21 @@ import Control from "sap/ui/core/Control";
|
|
|
12
12
|
* Handles rendering logic for Date strings.
|
|
13
13
|
*/
|
|
14
14
|
export class DatePlugin extends BasePlugin {
|
|
15
|
+
/**
|
|
16
|
+
* Renders a `sap.m.DatePicker` component.
|
|
17
|
+
*
|
|
18
|
+
* @param fieldMetadata The specific JSON schema properties for this field.
|
|
19
|
+
* @param bindingPath The JSON path bound to this control.
|
|
20
|
+
* @param modelName The UI5 JSONModel name.
|
|
21
|
+
* @param engineScopeId The deterministic scope ID.
|
|
22
|
+
* @param onChange The callback fired on value change.
|
|
23
|
+
* @returns {Control} The configured DatePicker control.
|
|
24
|
+
*/
|
|
15
25
|
public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
|
|
16
26
|
this.onChange = onChange;
|
|
17
27
|
this.metadata = fieldMetadata;
|
|
18
28
|
|
|
19
|
-
if (this.
|
|
29
|
+
if (!this.isEditable) {
|
|
20
30
|
sap.ui.requireSync("sap/m/Text");
|
|
21
31
|
const TextControl = sap.ui.require("sap/m/Text");
|
|
22
32
|
this.control = new TextControl({
|
|
@@ -59,13 +69,20 @@ export class DatePlugin extends BasePlugin {
|
|
|
59
69
|
return this.control as Control;
|
|
60
70
|
}
|
|
61
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Retrieves the current date string.
|
|
74
|
+
* @returns {any} The date value.
|
|
75
|
+
*/
|
|
62
76
|
protected getValue(): any {
|
|
63
77
|
return this.control ? (this.control as DatePicker).getValue() : null;
|
|
64
78
|
}
|
|
65
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Applies dynamic read-only state.
|
|
82
|
+
*/
|
|
66
83
|
protected applyState(): void {
|
|
67
84
|
if (this.control && this.metadata) {
|
|
68
|
-
if (this.
|
|
85
|
+
if (!this.isEditable) return;
|
|
69
86
|
const dp = this.control as DatePicker;
|
|
70
87
|
dp.setEditable(!this.metadata.ui?.readOnly);
|
|
71
88
|
dp.setRequired(this.metadata.required);
|