@sap/ux-ui5-tooling 1.20.4 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +60 -0
- package/dist/adp-tooling/templates/cf/_gitignore +6 -0
- package/dist/adp-tooling/templates/cf/approuter/package.json +13 -0
- package/dist/adp-tooling/templates/cf/approuter/xs-app.json +15 -0
- package/dist/adp-tooling/templates/cf/i18n/i18n.properties +3 -0
- package/dist/adp-tooling/templates/cf/package.json +35 -0
- package/dist/adp-tooling/templates/cf/ui5.yaml +5 -0
- package/dist/adp-tooling/templates/cf/xs-security.json +7 -0
- package/dist/adp-tooling/templates/changes/annotation.xml +18 -0
- package/dist/adp-tooling/templates/project/gitignore.tmpl +5 -0
- package/dist/adp-tooling/templates/project/package.json +31 -0
- package/dist/adp-tooling/templates/project/ui5.yaml +6 -0
- package/dist/adp-tooling/templates/project/webapp/i18n/i18n.properties +6 -0
- package/dist/adp-tooling/templates/project/webapp/manifest.appdescr_variant +10 -0
- package/dist/adp-tooling/templates/rta/common/analytical-custom-column.xml +25 -0
- package/dist/adp-tooling/templates/rta/common/custom-action.xml +8 -0
- package/dist/adp-tooling/templates/rta/common/grid-tree-custom-column.xml +22 -0
- package/dist/adp-tooling/templates/rta/common/header-field.xml +13 -0
- package/dist/adp-tooling/templates/rta/common/op-custom-section.xml +20 -0
- package/dist/adp-tooling/templates/rta/common/v4-table-action.xml +8 -0
- package/dist/adp-tooling/templates/rta/controller.ejs +80 -0
- package/dist/adp-tooling/templates/rta/fragment.xml +7 -0
- package/dist/adp-tooling/templates/rta/ts-controller.ejs +18 -0
- package/dist/adp-tooling/templates/rta/v2/m-table-custom-column-cell.xml +7 -0
- package/dist/adp-tooling/templates/rta/v2/m-table-custom-column.xml +18 -0
- package/dist/adp-tooling/templates/rta/v4/custom-section.xml +12 -0
- package/dist/adp-tooling/templates/rta/v4/mdc-custom-column-config.xml +6 -0
- package/dist/adp-tooling/templates/rta/v4/mdc-custom-column.xml +11 -0
- package/dist/adp-tooling/templates/typescript/tsconfig.json +19 -0
- package/dist/cli/index.js +17761 -11603
- package/dist/control-property-editor/app.css +2 -0
- package/dist/control-property-editor/app.js +175 -0
- package/dist/livereload-js/livereload.js +3795 -0
- package/dist/middlewares/fiori-tools-appreload.js +44007 -41669
- package/dist/middlewares/fiori-tools-preview.js +66889 -4176
- package/dist/middlewares/fiori-tools-proxy.js +38049 -5767
- package/dist/middlewares/fiori-tools-servestatic.js +32893 -347
- package/dist/preview-middleware/dist/client/adp/add-fragment.js +48 -0
- package/dist/preview-middleware/dist/client/adp/add-fragment.ts +51 -0
- package/dist/preview-middleware/dist/client/adp/api-handler.js +165 -0
- package/dist/preview-middleware/dist/client/adp/api-handler.ts +191 -0
- package/dist/preview-middleware/dist/client/adp/command-executor.js +100 -0
- package/dist/preview-middleware/dist/client/adp/command-executor.ts +105 -0
- package/dist/preview-middleware/dist/client/adp/control-utils.js +46 -0
- package/dist/preview-middleware/dist/client/adp/control-utils.ts +48 -0
- package/dist/preview-middleware/dist/client/adp/controllers/AddActionFragment.controller.js +198 -0
- package/dist/preview-middleware/dist/client/adp/controllers/AddActionFragment.controller.ts +232 -0
- package/dist/preview-middleware/dist/client/adp/controllers/AddCustomFragment.controller.js +223 -0
- package/dist/preview-middleware/dist/client/adp/controllers/AddCustomFragment.controller.ts +257 -0
- package/dist/preview-middleware/dist/client/adp/controllers/AddFragment.controller.js +195 -0
- package/dist/preview-middleware/dist/client/adp/controllers/AddFragment.controller.ts +264 -0
- package/dist/preview-middleware/dist/client/adp/controllers/AddSubpage.controller.js +146 -0
- package/dist/preview-middleware/dist/client/adp/controllers/AddSubpage.controller.ts +209 -0
- package/dist/preview-middleware/dist/client/adp/controllers/AddTableColumnFragments.controller.js +232 -0
- package/dist/preview-middleware/dist/client/adp/controllers/AddTableColumnFragments.controller.ts +306 -0
- package/dist/preview-middleware/dist/client/adp/controllers/BaseDialog.controller.js +187 -0
- package/dist/preview-middleware/dist/client/adp/controllers/BaseDialog.controller.ts +254 -0
- package/dist/preview-middleware/dist/client/adp/controllers/ControllerExtension.controller.js +330 -0
- package/dist/preview-middleware/dist/client/adp/controllers/ControllerExtension.controller.ts +408 -0
- package/dist/preview-middleware/dist/client/adp/controllers/ExtensionPoint.controller.js +160 -0
- package/dist/preview-middleware/dist/client/adp/controllers/ExtensionPoint.controller.ts +195 -0
- package/dist/preview-middleware/dist/client/adp/controllers/FileExistsDialog.controller.js +68 -0
- package/dist/preview-middleware/dist/client/adp/controllers/FileExistsDialog.controller.ts +86 -0
- package/dist/preview-middleware/dist/client/adp/controllers/types.js +2 -0
- package/dist/preview-middleware/dist/client/adp/controllers/types.ts +10 -0
- package/dist/preview-middleware/dist/client/adp/dialog-factory.js +151 -0
- package/dist/preview-middleware/dist/client/adp/dialog-factory.ts +210 -0
- package/dist/preview-middleware/dist/client/adp/extend-controller.js +48 -0
- package/dist/preview-middleware/dist/client/adp/extend-controller.ts +49 -0
- package/dist/preview-middleware/dist/client/adp/extension-point.js +83 -0
- package/dist/preview-middleware/dist/client/adp/extension-point.ts +116 -0
- package/dist/preview-middleware/dist/client/adp/init-dialogs.js +142 -0
- package/dist/preview-middleware/dist/client/adp/init-dialogs.ts +178 -0
- package/dist/preview-middleware/dist/client/adp/init.js +111 -0
- package/dist/preview-middleware/dist/client/adp/init.ts +92 -0
- package/dist/preview-middleware/dist/client/adp/ovp-window-functions.js +130 -0
- package/dist/preview-middleware/dist/client/adp/ovp-window-functions.ts +171 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/add-new-subpage-quick-action-base.js +97 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/add-new-subpage-quick-action-base.ts +140 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/common/add-controller-to-page.js +74 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/common/add-controller-to-page.ts +92 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/common/add-new-annotation-file.js +171 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/common/add-new-annotation-file.ts +174 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/common/create-page-action.js +56 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/common/create-page-action.ts +56 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/common/op-add-custom-section.js +41 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/common/op-add-custom-section.ts +51 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/common/op-add-header-field.js +69 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/common/op-add-header-field.ts +81 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/common/utils.js +20 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/common/utils.ts +7 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/control-types.js +25 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/control-types.ts +7 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/dialog-enablement-validator.js +26 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/dialog-enablement-validator.ts +18 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/enablement-validator.js +2 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/enablement-validator.ts +19 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/add-new-subpage.js +82 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/add-new-subpage.ts +87 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/change-table-actions.js +69 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/change-table-actions.ts +71 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/change-table-columns.js +103 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/change-table-columns.ts +105 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/create-table-action.js +111 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/create-table-action.ts +110 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/create-table-custom-column.js +108 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/create-table-custom-column.ts +141 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/lr-enable-semantic-date-range-filter-bar.js +80 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/lr-enable-semantic-date-range-filter-bar.ts +93 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/lr-enable-table-filtering.js +79 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/lr-enable-table-filtering.ts +102 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/lr-enable-variant-management.js +71 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/lr-enable-variant-management.ts +98 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/lr-toggle-clear-filter-bar.js +61 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/lr-toggle-clear-filter-bar.ts +77 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/op-enable-empty-row-mode.js +95 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/op-enable-empty-row-mode.ts +102 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/op-enable-variant-management.js +86 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/op-enable-variant-management.ts +116 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/registry.js +79 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/registry.ts +121 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/utils.js +138 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v2/utils.ts +134 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/add-new-subpage.js +140 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/add-new-subpage.ts +181 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/change-table-actions.js +81 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/change-table-actions.ts +81 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/change-table-columns.js +90 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/change-table-columns.ts +97 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/create-page-action.js +81 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/create-page-action.ts +98 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/create-table-action-config-change.js +129 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/create-table-action-config-change.ts +149 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/create-table-custom-column-config-change.js +142 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/create-table-custom-column-config-change.ts +178 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/enable-variant-management.js +83 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/enable-variant-management.ts +96 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/lr-enable-semantic-date-range-filter-bar.js +58 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/lr-enable-semantic-date-range-filter-bar.ts +70 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/lr-enable-table-filtering.js +86 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/lr-enable-table-filtering.ts +96 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/lr-toggle-clear-filter-bar.js +55 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/lr-toggle-clear-filter-bar.ts +61 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/op-add-custom-section.js +73 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/op-add-custom-section.ts +91 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/op-enable-empty-row-mode.js +91 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/op-enable-empty-row-mode.ts +88 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/registry.js +62 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/registry.ts +86 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/utils.js +158 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/fe-v4/utils.ts +175 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/load.js +46 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/load.ts +23 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/quick-action-base.js +64 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/quick-action-base.ts +71 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/simple-quick-action-base.js +44 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/simple-quick-action-base.ts +51 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/supported-ui5versions.md +40 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/table-quick-action-base.js +372 -0
- package/dist/preview-middleware/dist/client/adp/quick-actions/table-quick-action-base.ts +433 -0
- package/dist/preview-middleware/dist/client/adp/sync-views-utils.js +123 -0
- package/dist/preview-middleware/dist/client/adp/sync-views-utils.ts +90 -0
- package/dist/preview-middleware/dist/client/adp/ui/AddAction.fragment.xml +49 -0
- package/dist/preview-middleware/dist/client/adp/ui/AddCustomFragment.fragment.xml +48 -0
- package/dist/preview-middleware/dist/client/adp/ui/AddFragment.fragment.xml +83 -0
- package/dist/preview-middleware/dist/client/adp/ui/AddSubpage.fragment.xml +73 -0
- package/dist/preview-middleware/dist/client/adp/ui/AddTableColumnFragments.fragment.xml +63 -0
- package/dist/preview-middleware/dist/client/adp/ui/ControllerExtension.fragment.xml +63 -0
- package/dist/preview-middleware/dist/client/adp/ui/ExtensionPoint.fragment.xml +61 -0
- package/dist/preview-middleware/dist/client/adp/ui/FileExistsDialog.fragment.xml +43 -0
- package/dist/preview-middleware/dist/client/adp/utils.js +199 -0
- package/dist/preview-middleware/dist/client/adp/utils.ts +200 -0
- package/dist/preview-middleware/dist/client/cpe/additional-change-info/add-xml-additional-info.js +85 -0
- package/dist/preview-middleware/dist/client/cpe/additional-change-info/add-xml-additional-info.ts +107 -0
- package/dist/preview-middleware/dist/client/cpe/changes/flex-change.js +66 -0
- package/dist/preview-middleware/dist/client/cpe/changes/flex-change.ts +66 -0
- package/dist/preview-middleware/dist/client/cpe/changes/generic-change.js +321 -0
- package/dist/preview-middleware/dist/client/cpe/changes/generic-change.ts +462 -0
- package/dist/preview-middleware/dist/client/cpe/changes/index.js +12 -0
- package/dist/preview-middleware/dist/client/cpe/changes/index.ts +1 -0
- package/dist/preview-middleware/dist/client/cpe/changes/service.js +527 -0
- package/dist/preview-middleware/dist/client/cpe/changes/service.ts +595 -0
- package/dist/preview-middleware/dist/client/cpe/changes/validator.js +41 -0
- package/dist/preview-middleware/dist/client/cpe/changes/validator.ts +35 -0
- package/dist/preview-middleware/dist/client/cpe/communication-service.js +44 -0
- package/dist/preview-middleware/dist/client/cpe/communication-service.ts +41 -0
- package/dist/preview-middleware/dist/client/cpe/connector-service.js +88 -0
- package/dist/preview-middleware/dist/client/cpe/connector-service.ts +74 -0
- package/dist/preview-middleware/dist/client/cpe/context-menu-service.js +90 -0
- package/dist/preview-middleware/dist/client/cpe/context-menu-service.ts +77 -0
- package/dist/preview-middleware/dist/client/cpe/control-data.js +366 -0
- package/dist/preview-middleware/dist/client/cpe/control-data.ts +400 -0
- package/dist/preview-middleware/dist/client/cpe/documentation.js +191 -0
- package/dist/preview-middleware/dist/client/cpe/documentation.ts +187 -0
- package/dist/preview-middleware/dist/client/cpe/feature-service.js +39 -0
- package/dist/preview-middleware/dist/client/cpe/feature-service.ts +25 -0
- package/dist/preview-middleware/dist/client/cpe/init.js +92 -0
- package/dist/preview-middleware/dist/client/cpe/init.ts +114 -0
- package/dist/preview-middleware/dist/client/cpe/logger.js +32 -0
- package/dist/preview-middleware/dist/client/cpe/logger.ts +24 -0
- package/dist/preview-middleware/dist/client/cpe/odata-health/odata-health-checker.js +136 -0
- package/dist/preview-middleware/dist/client/cpe/odata-health/odata-health-checker.ts +160 -0
- package/dist/preview-middleware/dist/client/cpe/odata-health/odata-health-status.js +63 -0
- package/dist/preview-middleware/dist/client/cpe/odata-health/odata-health-status.ts +52 -0
- package/dist/preview-middleware/dist/client/cpe/outline/editable.js +38 -0
- package/dist/preview-middleware/dist/client/cpe/outline/editable.ts +30 -0
- package/dist/preview-middleware/dist/client/cpe/outline/nodes.js +212 -0
- package/dist/preview-middleware/dist/client/cpe/outline/nodes.ts +236 -0
- package/dist/preview-middleware/dist/client/cpe/outline/service.js +62 -0
- package/dist/preview-middleware/dist/client/cpe/outline/service.ts +66 -0
- package/dist/preview-middleware/dist/client/cpe/quick-actions/quick-action-service.js +161 -0
- package/dist/preview-middleware/dist/client/cpe/quick-actions/quick-action-service.ts +184 -0
- package/dist/preview-middleware/dist/client/cpe/quick-actions/registry.js +145 -0
- package/dist/preview-middleware/dist/client/cpe/quick-actions/registry.ts +157 -0
- package/dist/preview-middleware/dist/client/cpe/quick-actions/utils.js +94 -0
- package/dist/preview-middleware/dist/client/cpe/quick-actions/utils.ts +113 -0
- package/dist/preview-middleware/dist/client/cpe/rta-service.js +94 -0
- package/dist/preview-middleware/dist/client/cpe/rta-service.ts +86 -0
- package/dist/preview-middleware/dist/client/cpe/selection.js +249 -0
- package/dist/preview-middleware/dist/client/cpe/selection.ts +267 -0
- package/dist/preview-middleware/dist/client/cpe/ui5-utils.js +35 -0
- package/dist/preview-middleware/dist/client/cpe/ui5-utils.ts +28 -0
- package/dist/preview-middleware/dist/client/cpe/utils.js +113 -0
- package/dist/preview-middleware/dist/client/cpe/utils.ts +162 -0
- package/dist/preview-middleware/dist/client/flp/WorkspaceConnector.js +97 -0
- package/dist/preview-middleware/dist/client/flp/WorkspaceConnector.ts +101 -0
- package/dist/preview-middleware/dist/client/flp/common.js +30 -0
- package/dist/preview-middleware/dist/client/flp/common.ts +28 -0
- package/dist/preview-middleware/dist/client/flp/enableFakeConnector.js +92 -0
- package/dist/preview-middleware/dist/client/flp/enableFakeConnector.ts +113 -0
- package/dist/preview-middleware/dist/client/flp/homepage/Component.js +16 -0
- package/dist/preview-middleware/dist/client/flp/homepage/Component.ts +10 -0
- package/dist/preview-middleware/dist/client/flp/homepage/controller/MyHome.controller.js +54 -0
- package/dist/preview-middleware/dist/client/flp/homepage/controller/MyHome.controller.ts +41 -0
- package/dist/preview-middleware/dist/client/flp/homepage/css/style.css +3 -0
- package/dist/preview-middleware/dist/client/flp/homepage/manifest.json +41 -0
- package/dist/preview-middleware/dist/client/flp/homepage/view/MyHome.view.xml +18 -0
- package/dist/preview-middleware/dist/client/flp/init.js +418 -0
- package/dist/preview-middleware/dist/client/flp/init.ts +448 -0
- package/dist/preview-middleware/dist/client/flp/initCdm.js +117 -0
- package/dist/preview-middleware/dist/client/flp/initCdm.ts +111 -0
- package/dist/preview-middleware/dist/client/flp/initConnectors.js +31 -0
- package/dist/preview-middleware/dist/client/flp/initConnectors.ts +20 -0
- package/dist/preview-middleware/dist/client/flp/initRta.js +180 -0
- package/dist/preview-middleware/dist/client/flp/initRta.ts +194 -0
- package/dist/preview-middleware/dist/client/i18n.js +56 -0
- package/dist/preview-middleware/dist/client/i18n.ts +49 -0
- package/dist/preview-middleware/dist/client/manifest.json +8 -0
- package/dist/preview-middleware/dist/client/messagebundle.properties +143 -0
- package/dist/preview-middleware/dist/client/thirdparty/@sap-ux-private/control-property-editor-common.js +486 -0
- package/dist/preview-middleware/dist/client/utils/additional-change-info.js +69 -0
- package/dist/preview-middleware/dist/client/utils/additional-change-info.ts +73 -0
- package/dist/preview-middleware/dist/client/utils/application.js +34 -0
- package/dist/preview-middleware/dist/client/utils/application.ts +27 -0
- package/dist/preview-middleware/dist/client/utils/core.js +144 -0
- package/dist/preview-middleware/dist/client/utils/core.ts +145 -0
- package/dist/preview-middleware/dist/client/utils/error.js +28 -0
- package/dist/preview-middleware/dist/client/utils/error.ts +18 -0
- package/dist/preview-middleware/dist/client/utils/fe-v2.js +58 -0
- package/dist/preview-middleware/dist/client/utils/fe-v2.ts +61 -0
- package/dist/preview-middleware/dist/client/utils/fe-v4.js +168 -0
- package/dist/preview-middleware/dist/client/utils/fe-v4.ts +186 -0
- package/dist/preview-middleware/dist/client/utils/info-center-message.js +60 -0
- package/dist/preview-middleware/dist/client/utils/info-center-message.ts +60 -0
- package/dist/preview-middleware/dist/client/utils/version.js +126 -0
- package/dist/preview-middleware/dist/client/utils/version.ts +138 -0
- package/dist/preview-middleware/templates/flp/cdm.base.json +47 -0
- package/dist/preview-middleware/templates/flp/cdm.ejs +72 -0
- package/dist/preview-middleware/templates/flp/editor.ejs +28 -0
- package/dist/preview-middleware/templates/flp/sandbox.ejs +88 -0
- package/dist/preview-middleware/templates/flp/sandbox2.ejs +86 -0
- package/dist/preview-middleware/templates/test/qunit.ejs +26 -0
- package/dist/preview-middleware/templates/test/qunit.js +29 -0
- package/dist/preview-middleware/templates/test/testsuite.qunit.ejs +10 -0
- package/dist/preview-middleware/templates/test/testsuite.qunit.js +8 -0
- package/dist/tasks/cf-deploy/index.js +3916 -3521
- package/dist/tasks/deploy/index.js +17204 -11133
- package/package.json +36 -39
- package/prebuilds/keyring.darwin-arm64.node +0 -0
- package/prebuilds/keyring.darwin-x64.node +0 -0
- package/prebuilds/keyring.linux-arm-gnueabihf.node +0 -0
- package/prebuilds/keyring.linux-arm64-gnu.node +0 -0
- package/prebuilds/keyring.linux-arm64-musl.node +0 -0
- package/prebuilds/keyring.linux-ia32-gnu.node +0 -0
- package/prebuilds/keyring.linux-x64-gnu.node +0 -0
- package/prebuilds/keyring.linux-x64-musl.node +0 -0
- package/prebuilds/keyring.win32-arm64-msvc.node +0 -0
- package/prebuilds/keyring.win32-ia32-msvc.node +0 -0
- package/prebuilds/keyring.win32-x64-msvc.node +0 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/** sap.ui.core */
|
|
2
|
+
import type UI5Element from 'sap/ui/core/Element';
|
|
3
|
+
|
|
4
|
+
/** sap.ui.rta */
|
|
5
|
+
import type RuntimeAuthoring from 'sap/ui/rta/RuntimeAuthoring';
|
|
6
|
+
import hasStableId from 'sap/ui/rta/util/hasStableId';
|
|
7
|
+
|
|
8
|
+
/** sap.ui.fl */
|
|
9
|
+
import FlUtils from 'sap/ui/fl/Utils';
|
|
10
|
+
|
|
11
|
+
/** sap.ui.dt */
|
|
12
|
+
import type ElementOverlay from 'sap/ui/dt/ElementOverlay';
|
|
13
|
+
|
|
14
|
+
import ManagedObject from 'sap/ui/base/ManagedObject';
|
|
15
|
+
import { DialogFactory, DialogNames } from './dialog-factory';
|
|
16
|
+
import type { IsReuseComponentApi } from '../cpe/types';
|
|
17
|
+
import { getTextBundle, type TextBundle } from '../i18n';
|
|
18
|
+
import { getReuseComponentChecker } from './utils';
|
|
19
|
+
import type { Ui5VersionInfo } from '../utils/version';
|
|
20
|
+
import { getSyncViewIds } from './sync-views-utils';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Handler for enablement of Extend With Controller context menu entry
|
|
24
|
+
*
|
|
25
|
+
* @param control UI5 control.
|
|
26
|
+
* @param isReuseComponent Function to check if the control is a reuse component.
|
|
27
|
+
* @param isCloud Whether the application is running in the cloud
|
|
28
|
+
* @returns boolean whether menu item is enabled or not
|
|
29
|
+
*/
|
|
30
|
+
export function isControllerExtensionEnabledForControl(
|
|
31
|
+
control: ManagedObject,
|
|
32
|
+
isReuseComponent: IsReuseComponentApi,
|
|
33
|
+
isCloud: boolean
|
|
34
|
+
): boolean {
|
|
35
|
+
const viewId = FlUtils.getViewForControl(control).getId();
|
|
36
|
+
const syncViewsIds = getSyncViewIds();
|
|
37
|
+
const isControlInSyncView = syncViewsIds.has(viewId);
|
|
38
|
+
|
|
39
|
+
if (isCloud) {
|
|
40
|
+
const isClickedControlReuseComponent = isReuseComponent(control.getId());
|
|
41
|
+
return !isControlInSyncView && !isClickedControlReuseComponent;
|
|
42
|
+
}
|
|
43
|
+
return !isControlInSyncView;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Handler for enablement of Extend With Controller context menu entry
|
|
48
|
+
*
|
|
49
|
+
* @param overlays Control overlays
|
|
50
|
+
* @param isReuseComponent Function to check if the control is a reuse component.
|
|
51
|
+
* @param isCloud Whether the application is running in the cloud
|
|
52
|
+
* @returns boolean whether menu item is enabled or not
|
|
53
|
+
*/
|
|
54
|
+
export const isControllerExtensionEnabled = (
|
|
55
|
+
overlays: ElementOverlay[],
|
|
56
|
+
isReuseComponent: IsReuseComponentApi,
|
|
57
|
+
isCloud: boolean
|
|
58
|
+
): boolean => {
|
|
59
|
+
if (overlays.length === 0 || overlays.length > 1) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return isControllerExtensionEnabledForControl(overlays[0].getElement(), isReuseComponent, isCloud);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Determines whether the fragment command should be enabled based on the provided overlays.
|
|
67
|
+
*
|
|
68
|
+
* @param {ElementOverlay[]} overlays - An array of ElementOverlay objects representing the UI overlays.
|
|
69
|
+
* @param {isReuseComponentApi} isReuseComponent - Function to check if the control is a reuse component.
|
|
70
|
+
* @param {boolean} isCloud - Whether the application is running in the cloud.
|
|
71
|
+
* @returns {boolean} True if the fragment command is enabled, false otherwise.
|
|
72
|
+
*/
|
|
73
|
+
export const isFragmentCommandEnabled = (
|
|
74
|
+
overlays: ElementOverlay[],
|
|
75
|
+
isReuseComponent: IsReuseComponentApi,
|
|
76
|
+
isCloud: boolean
|
|
77
|
+
): boolean => {
|
|
78
|
+
if (overlays.length === 0 || overlays.length > 1) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const control = overlays[0].getElement();
|
|
83
|
+
const stableId = hasStableId(overlays[0]);
|
|
84
|
+
if (isCloud) {
|
|
85
|
+
return stableId && !isReuseComponent(control.getId());
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return stableId;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Determines the text that should be displayed for the Add Fragment context menu item.
|
|
93
|
+
*
|
|
94
|
+
* @param {ElementOverlay} overlay - An ElementOverlay object representing the UI overlay.
|
|
95
|
+
* @param {isReuseComponentApi} isReuseComponentChecker - Function to check if the control is a reuse component.
|
|
96
|
+
* @param {boolean} isCloud - Whether the application is running in the cloud.
|
|
97
|
+
* @param {TextBundle} resources - The text bundle.
|
|
98
|
+
* @returns {string} The text of the Add Fragment context menu item.
|
|
99
|
+
*/
|
|
100
|
+
export const getAddFragmentItemText = (
|
|
101
|
+
overlay: ElementOverlay,
|
|
102
|
+
isReuseComponentChecker: IsReuseComponentApi,
|
|
103
|
+
isCloud: boolean,
|
|
104
|
+
resources: TextBundle
|
|
105
|
+
) => {
|
|
106
|
+
if (isCloud && isReuseComponentChecker(overlay.getElement().getId())) {
|
|
107
|
+
return resources.getText('ADP_ADD_FRAGMENT_MENU_ITEM_REUSE_COMPONENT');
|
|
108
|
+
}
|
|
109
|
+
if (!hasStableId(overlay)) {
|
|
110
|
+
return resources.getText('ADP_ADD_FRAGMENT_MENU_ITEM_UNSTABLE_ID');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return resources.getText('ADP_ADD_FRAGMENT_MENU_ITEM');
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Determines the text that should be displayed for Controller Extension context menu item.
|
|
118
|
+
*
|
|
119
|
+
* @param {ElementOverlay} overlay - An ElementOverlay object representing the UI overlay.
|
|
120
|
+
* @param {isReuseComponentApi} isReuseComponentChecker - Function to check if the control is a reuse component.
|
|
121
|
+
* @param {boolean} isCloud - Whether the application is running in the cloud.
|
|
122
|
+
* @param {TextBundle} resources - The text bundle.
|
|
123
|
+
* @returns {string} The text of the Add Fragment context menu item.
|
|
124
|
+
*/
|
|
125
|
+
export const getExtendControllerItemText = (
|
|
126
|
+
overlay: ElementOverlay,
|
|
127
|
+
isReuseComponentChecker: IsReuseComponentApi,
|
|
128
|
+
isCloud: boolean,
|
|
129
|
+
resources: TextBundle
|
|
130
|
+
) => {
|
|
131
|
+
const viewId = FlUtils.getViewForControl(overlay.getElement()).getId();
|
|
132
|
+
const syncViewsIds = getSyncViewIds();
|
|
133
|
+
if (syncViewsIds.has(viewId)) {
|
|
134
|
+
return resources.getText('ADP_ADD_CONTROLLER_EXTENSION_MENU_ITEM_SYNC_VIEW');
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (isCloud && isReuseComponentChecker(overlay.getElement().getId())) {
|
|
138
|
+
return resources.getText('ADP_ADD_CONTROLLER_EXTENSION_MENU_ITEM_REUSE_COMPONENT');
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return resources.getText('ADP_ADD_CONTROLLER_EXTENSION_MENU_ITEM');
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Adds a new item to the context menu
|
|
146
|
+
*
|
|
147
|
+
* @param rta Runtime Authoring
|
|
148
|
+
* @param ui5VersionInfo UI5 version information
|
|
149
|
+
*/
|
|
150
|
+
export const initDialogs = async (
|
|
151
|
+
rta: RuntimeAuthoring,
|
|
152
|
+
ui5VersionInfo: Ui5VersionInfo
|
|
153
|
+
): Promise<void> => {
|
|
154
|
+
const contextMenu = rta.getDefaultPlugins().contextMenu;
|
|
155
|
+
const isCloud = rta.getFlexSettings().isCloud;
|
|
156
|
+
const resources = await getTextBundle();
|
|
157
|
+
const isReuseComponentChecker = await getReuseComponentChecker(ui5VersionInfo);
|
|
158
|
+
|
|
159
|
+
contextMenu.addMenuItem({
|
|
160
|
+
id: 'ADD_FRAGMENT',
|
|
161
|
+
text: (overlay: ElementOverlay) => getAddFragmentItemText(overlay, isReuseComponentChecker, isCloud, resources),
|
|
162
|
+
handler: async (overlays: UI5Element[]) =>
|
|
163
|
+
await DialogFactory.createDialog(overlays[0], rta, DialogNames.ADD_FRAGMENT),
|
|
164
|
+
icon: 'sap-icon://attachment-html',
|
|
165
|
+
enabled: (overlays: ElementOverlay[]) => isFragmentCommandEnabled(overlays, isReuseComponentChecker, isCloud)
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
contextMenu.addMenuItem({
|
|
169
|
+
id: 'EXTEND_CONTROLLER',
|
|
170
|
+
text: (overlay: ElementOverlay) =>
|
|
171
|
+
getExtendControllerItemText(overlay, isReuseComponentChecker, isCloud, resources),
|
|
172
|
+
handler: async (overlays: UI5Element[]) =>
|
|
173
|
+
await DialogFactory.createDialog(overlays[0], rta, DialogNames.CONTROLLER_EXTENSION),
|
|
174
|
+
icon: 'sap-icon://create-form',
|
|
175
|
+
enabled: (overlays: ElementOverlay[]) =>
|
|
176
|
+
isControllerExtensionEnabled(overlays, isReuseComponentChecker, isCloud)
|
|
177
|
+
});
|
|
178
|
+
};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
sap.ui.define(["sap/base/Log", "open/ux/preview/client/thirdparty/@sap-ux-private/control-property-editor-common", "../utils/version", "../cpe/init", "./sync-views-utils", "../utils/application", "./quick-actions/load", "./init-dialogs", "../utils/info-center-message", "../cpe/communication-service"], function (log, ___sap_ux_private_control_property_editor_common, ___utils_version, __init, ___sync_views_utils, ___utils_application, ___quick_actions_load, ___init_dialogs, ___utils_info_center_message, ___cpe_communication_service) {
|
|
4
|
+
"use strict";
|
|
5
|
+
|
|
6
|
+
function _interopRequireDefault(obj) {
|
|
7
|
+
return obj && obj.__esModule && typeof obj.default !== "undefined" ? obj.default : obj;
|
|
8
|
+
}
|
|
9
|
+
function __ui5_require_async(path) {
|
|
10
|
+
return new Promise(function (resolve, reject) {
|
|
11
|
+
sap.ui.require([path], function (module) {
|
|
12
|
+
if (!(module && module.__esModule)) {
|
|
13
|
+
module = module === null || !(typeof module === "object" && path.endsWith("/library")) ? {
|
|
14
|
+
default: module
|
|
15
|
+
} : module;
|
|
16
|
+
Object.defineProperty(module, "__esModule", {
|
|
17
|
+
value: true
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
resolve(module);
|
|
21
|
+
}, function (err) {
|
|
22
|
+
reject(err);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const enableTelemetry = ___sap_ux_private_control_property_editor_common["enableTelemetry"];
|
|
27
|
+
const MessageBarType = ___sap_ux_private_control_property_editor_common["MessageBarType"];
|
|
28
|
+
const toggleAppPreviewVisibility = ___sap_ux_private_control_property_editor_common["toggleAppPreviewVisibility"];
|
|
29
|
+
const getFullyQualifiedUi5Version = ___utils_version["getFullyQualifiedUi5Version"];
|
|
30
|
+
const getUi5Version = ___utils_version["getUi5Version"];
|
|
31
|
+
const isLowerThanMinimalUi5Version = ___utils_version["isLowerThanMinimalUi5Version"];
|
|
32
|
+
const minVersionInfo = ___utils_version["minVersionInfo"];
|
|
33
|
+
const init = _interopRequireDefault(__init);
|
|
34
|
+
const updateSyncViewsIds = ___sync_views_utils["updateSyncViewsIds"];
|
|
35
|
+
const showSyncViewsWarning = ___sync_views_utils["showSyncViewsWarning"];
|
|
36
|
+
const getApplicationType = ___utils_application["getApplicationType"];
|
|
37
|
+
const loadDefinitions = ___quick_actions_load["loadDefinitions"];
|
|
38
|
+
const initDialogs = ___init_dialogs["initDialogs"];
|
|
39
|
+
const sendInfoCenterMessage = ___utils_info_center_message["sendInfoCenterMessage"];
|
|
40
|
+
const CommunicationService = ___cpe_communication_service["CommunicationService"];
|
|
41
|
+
var __exports = async function (rta) {
|
|
42
|
+
const flexSettings = rta.getFlexSettings();
|
|
43
|
+
if (flexSettings.telemetry === true) {
|
|
44
|
+
enableTelemetry();
|
|
45
|
+
}
|
|
46
|
+
const ui5VersionInfo = await getUi5Version();
|
|
47
|
+
|
|
48
|
+
// Plugins need to be set before adding additional plugins to prevent overriding with the default
|
|
49
|
+
// and allow usage of getPlugins later in the flow
|
|
50
|
+
const defaultPlugins = rta.getDefaultPlugins();
|
|
51
|
+
rta.setPlugins(defaultPlugins);
|
|
52
|
+
if (isLowerThanMinimalUi5Version(ui5VersionInfo, {
|
|
53
|
+
major: 1,
|
|
54
|
+
minor: 136,
|
|
55
|
+
patch: 2
|
|
56
|
+
})) {
|
|
57
|
+
await initDialogs(rta, ui5VersionInfo);
|
|
58
|
+
} else {
|
|
59
|
+
(await __ui5_require_async('open/ux/preview/client/adp/add-fragment')).initAddXMLPlugin(rta);
|
|
60
|
+
(await __ui5_require_async('open/ux/preview/client/adp/extend-controller')).initExtendControllerPlugin(rta);
|
|
61
|
+
}
|
|
62
|
+
if (!isLowerThanMinimalUi5Version(ui5VersionInfo, {
|
|
63
|
+
major: 1,
|
|
64
|
+
minor: 78
|
|
65
|
+
})) {
|
|
66
|
+
const ExtensionPointService = (await __ui5_require_async('open/ux/preview/client/adp/extension-point')).default;
|
|
67
|
+
const extPointService = new ExtensionPointService(rta);
|
|
68
|
+
extPointService.init();
|
|
69
|
+
}
|
|
70
|
+
const manifest = rta.getRootControlInstance().getManifest();
|
|
71
|
+
const applicationType = getApplicationType(manifest);
|
|
72
|
+
const quickActionRegistries = await loadDefinitions(applicationType);
|
|
73
|
+
|
|
74
|
+
// Initialize OVP bridge functions if the application is an OVP app
|
|
75
|
+
if (manifest['sap.ovp']) {
|
|
76
|
+
const {
|
|
77
|
+
initOvpWindowFunctions
|
|
78
|
+
} = await __ui5_require_async('open/ux/preview/client/adp/ovp-window-functions');
|
|
79
|
+
initOvpWindowFunctions();
|
|
80
|
+
}
|
|
81
|
+
await init(rta, quickActionRegistries);
|
|
82
|
+
|
|
83
|
+
// Register synchronious views detection and warning
|
|
84
|
+
// This is not awaited to prevent deadlock in the initialization
|
|
85
|
+
rta.getService('outline').then(outlineService => {
|
|
86
|
+
outlineService.attachEvent('update', async () => {
|
|
87
|
+
await updateSyncViewsIds(ui5VersionInfo);
|
|
88
|
+
await showSyncViewsWarning();
|
|
89
|
+
});
|
|
90
|
+
}).catch(error => {
|
|
91
|
+
log.error('Failed to attach update event to outline service', error);
|
|
92
|
+
});
|
|
93
|
+
if (isLowerThanMinimalUi5Version(ui5VersionInfo)) {
|
|
94
|
+
await sendInfoCenterMessage({
|
|
95
|
+
title: {
|
|
96
|
+
key: 'FLP_UI5_VERSION_WARNING_TITLE'
|
|
97
|
+
},
|
|
98
|
+
description: {
|
|
99
|
+
key: 'FLP_UI5_VERSION_WARNING_DESCRIPTION',
|
|
100
|
+
params: [getFullyQualifiedUi5Version(ui5VersionInfo), getFullyQualifiedUi5Version(minVersionInfo)]
|
|
101
|
+
},
|
|
102
|
+
type: MessageBarType.error
|
|
103
|
+
});
|
|
104
|
+
CommunicationService.sendAction(toggleAppPreviewVisibility(false));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
log.debug('ADP init executed.');
|
|
108
|
+
};
|
|
109
|
+
return __exports;
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import log from 'sap/base/Log';
|
|
2
|
+
import type RuntimeAuthoring from 'sap/ui/rta/RuntimeAuthoring';
|
|
3
|
+
import type RTAOutlineService from 'sap/ui/rta/command/OutlineService';
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
enableTelemetry,
|
|
7
|
+
MessageBarType,
|
|
8
|
+
toggleAppPreviewVisibility
|
|
9
|
+
} from '@sap-ux-private/control-property-editor-common';
|
|
10
|
+
|
|
11
|
+
import {
|
|
12
|
+
getFullyQualifiedUi5Version,
|
|
13
|
+
getUi5Version,
|
|
14
|
+
isLowerThanMinimalUi5Version,
|
|
15
|
+
minVersionInfo
|
|
16
|
+
} from '../utils/version';
|
|
17
|
+
|
|
18
|
+
import init from '../cpe/init';
|
|
19
|
+
import { updateSyncViewsIds, showSyncViewsWarning } from './sync-views-utils';
|
|
20
|
+
import { getApplicationType } from '../utils/application';
|
|
21
|
+
|
|
22
|
+
import { loadDefinitions } from './quick-actions/load';
|
|
23
|
+
import { initDialogs } from './init-dialogs';
|
|
24
|
+
import { sendInfoCenterMessage } from '../utils/info-center-message';
|
|
25
|
+
import { CommunicationService } from '../cpe/communication-service';
|
|
26
|
+
|
|
27
|
+
export default async function (rta: RuntimeAuthoring) {
|
|
28
|
+
const flexSettings = rta.getFlexSettings();
|
|
29
|
+
if (flexSettings.telemetry === true) {
|
|
30
|
+
enableTelemetry();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const ui5VersionInfo = await getUi5Version();
|
|
34
|
+
|
|
35
|
+
// Plugins need to be set before adding additional plugins to prevent overriding with the default
|
|
36
|
+
// and allow usage of getPlugins later in the flow
|
|
37
|
+
const defaultPlugins = rta.getDefaultPlugins();
|
|
38
|
+
rta.setPlugins(defaultPlugins);
|
|
39
|
+
|
|
40
|
+
if (isLowerThanMinimalUi5Version(ui5VersionInfo, { major: 1, minor: 136, patch: 2 })) {
|
|
41
|
+
await initDialogs(rta, ui5VersionInfo);
|
|
42
|
+
} else {
|
|
43
|
+
(await import('open/ux/preview/client/adp/add-fragment')).initAddXMLPlugin(rta);
|
|
44
|
+
(await import('open/ux/preview/client/adp/extend-controller')).initExtendControllerPlugin(rta);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (!isLowerThanMinimalUi5Version(ui5VersionInfo, { major: 1, minor: 78 })) {
|
|
48
|
+
const ExtensionPointService = (await import('open/ux/preview/client/adp/extension-point')).default;
|
|
49
|
+
const extPointService = new ExtensionPointService(rta);
|
|
50
|
+
extPointService.init();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const manifest = rta.getRootControlInstance().getManifest();
|
|
54
|
+
const applicationType = getApplicationType(manifest);
|
|
55
|
+
const quickActionRegistries = await loadDefinitions(applicationType);
|
|
56
|
+
|
|
57
|
+
// Initialize OVP bridge functions if the application is an OVP app
|
|
58
|
+
if (manifest['sap.ovp']) {
|
|
59
|
+
const { initOvpWindowFunctions } = await import('open/ux/preview/client/adp/ovp-window-functions');
|
|
60
|
+
initOvpWindowFunctions();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
await init(rta, quickActionRegistries);
|
|
64
|
+
|
|
65
|
+
// Register synchronious views detection and warning
|
|
66
|
+
// This is not awaited to prevent deadlock in the initialization
|
|
67
|
+
rta.getService<RTAOutlineService>('outline')
|
|
68
|
+
.then((outlineService) => {
|
|
69
|
+
outlineService.attachEvent('update', async () => {
|
|
70
|
+
await updateSyncViewsIds(ui5VersionInfo);
|
|
71
|
+
await showSyncViewsWarning();
|
|
72
|
+
});
|
|
73
|
+
})
|
|
74
|
+
.catch((error) => {
|
|
75
|
+
log.error('Failed to attach update event to outline service', error);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
if (isLowerThanMinimalUi5Version(ui5VersionInfo)) {
|
|
79
|
+
await sendInfoCenterMessage({
|
|
80
|
+
title: { key: 'FLP_UI5_VERSION_WARNING_TITLE' },
|
|
81
|
+
description: {
|
|
82
|
+
key: 'FLP_UI5_VERSION_WARNING_DESCRIPTION',
|
|
83
|
+
params: [getFullyQualifiedUi5Version(ui5VersionInfo), getFullyQualifiedUi5Version(minVersionInfo)]
|
|
84
|
+
},
|
|
85
|
+
type: MessageBarType.error
|
|
86
|
+
});
|
|
87
|
+
CommunicationService.sendAction(toggleAppPreviewVisibility(false));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
log.debug('ADP init executed.');
|
|
92
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
sap.ui.define(["sap/base/Log", "sap/ui/model/odata/v2/ODataModel"], function (log, ODataModel) {
|
|
4
|
+
"use strict";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns the base URL for API requests.
|
|
8
|
+
*
|
|
9
|
+
* @returns Base URL string
|
|
10
|
+
*/
|
|
11
|
+
function getBaseUrl() {
|
|
12
|
+
return document.getElementById('root')?.dataset.openUxPreviewBaseUrl ?? '';
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Creates a UI5 ODataModel with annotation URLs and returns its metamodel
|
|
17
|
+
* with entity containers, schema, and model information.
|
|
18
|
+
*
|
|
19
|
+
* @param serviceInfo Service URL and annotation details from the server
|
|
20
|
+
* @returns Promise resolving to a metamodel object
|
|
21
|
+
*/
|
|
22
|
+
async function buildMetaModel(serviceInfo) {
|
|
23
|
+
const annotationUris = serviceInfo.annotations.map(a => a.Uri);
|
|
24
|
+
const model = new ODataModel(serviceInfo.serviceUrl, {
|
|
25
|
+
annotationURI: annotationUris,
|
|
26
|
+
loadAnnotationsJoined: true,
|
|
27
|
+
skipMetadataAnnotationParsing: false,
|
|
28
|
+
json: true
|
|
29
|
+
});
|
|
30
|
+
const metaModel = model.getMetaModel();
|
|
31
|
+
await metaModel.loaded();
|
|
32
|
+
return {
|
|
33
|
+
oEntityContainers: metaModel.getODataEntityContainer(),
|
|
34
|
+
oSchema: metaModel.getObject('/dataServices/schema'),
|
|
35
|
+
modelInformation: serviceInfo.modelInformation
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Writes i18n entries to the adaptation project's i18n properties file.
|
|
41
|
+
* Fire-and-forget: the OVP runtime does not await the result.
|
|
42
|
+
*
|
|
43
|
+
* @param _path - i18n path (ignored; server resolves from project context)
|
|
44
|
+
* @param properties - Array of i18n key-value entries to write
|
|
45
|
+
*/
|
|
46
|
+
function writeToI18n(_path, properties) {
|
|
47
|
+
const entries = properties.map(p => ({
|
|
48
|
+
key: p.key,
|
|
49
|
+
value: p.value,
|
|
50
|
+
annotation: p.textType
|
|
51
|
+
}));
|
|
52
|
+
fetch(`${getBaseUrl()}/editor/i18n`, {
|
|
53
|
+
method: 'POST',
|
|
54
|
+
headers: {
|
|
55
|
+
'content-type': 'application/json'
|
|
56
|
+
},
|
|
57
|
+
body: JSON.stringify(entries)
|
|
58
|
+
}).catch(error => {
|
|
59
|
+
log.error('OVP writeToI18n failed', error);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Fetches available OData V2 services from the ABAP system catalog.
|
|
65
|
+
*
|
|
66
|
+
* @param _path - Application path (ignored; server uses its own provider)
|
|
67
|
+
* @returns Promise resolving to an object with a results array of service metadata
|
|
68
|
+
*/
|
|
69
|
+
async function getNewDataSources(_path) {
|
|
70
|
+
const response = await fetch(`${getBaseUrl()}/adp/api/ovp/datasources`);
|
|
71
|
+
if (!response.ok) {
|
|
72
|
+
throw new Error(`Failed to fetch data sources: ${response.status}`);
|
|
73
|
+
}
|
|
74
|
+
return response.json();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Fetches the OData metadata model for a selected data source service.
|
|
79
|
+
* Creates a real UI5 ODataModel with annotations to build a full metamodel
|
|
80
|
+
* compatible with the OVP dialog.
|
|
81
|
+
*
|
|
82
|
+
* @param selectedDataSources - Array of selected data source objects
|
|
83
|
+
* @param _path - Application path (ignored; server uses its own provider)
|
|
84
|
+
* @returns Promise resolving to a metamodel object
|
|
85
|
+
*/
|
|
86
|
+
async function getMetaModelForNewDataSource(selectedDataSources, _path) {
|
|
87
|
+
const response = await fetch(`${getBaseUrl()}/adp/api/ovp/metamodel`, {
|
|
88
|
+
method: 'POST',
|
|
89
|
+
headers: {
|
|
90
|
+
'content-type': 'application/json'
|
|
91
|
+
},
|
|
92
|
+
body: JSON.stringify({
|
|
93
|
+
dataSource: selectedDataSources[0]
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
if (!response.ok) {
|
|
97
|
+
throw new Error(`Failed to fetch metamodel: ${response.status}`);
|
|
98
|
+
}
|
|
99
|
+
const serviceInfo = await response.json();
|
|
100
|
+
if (!serviceInfo) {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
return buildMetaModel(serviceInfo);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Initializes OVP bridge functions required by the sap.ovp library for the
|
|
108
|
+
* "Add New Card" flow in the adaptation editor.
|
|
109
|
+
*
|
|
110
|
+
* These bridge functions are registered as globals on the window object
|
|
111
|
+
* and connect the OVP runtime (in the preview iframe) to the server-side
|
|
112
|
+
* adaptation tooling middleware via fetch requests.
|
|
113
|
+
*/
|
|
114
|
+
function initOvpWindowFunctions() {
|
|
115
|
+
// OVP runtime expects these as window globals
|
|
116
|
+
// eslint-disable-next-line @sap-ux/fiori-tools/sap-no-global-define
|
|
117
|
+
window.writeToI18n = writeToI18n;
|
|
118
|
+
// eslint-disable-next-line @sap-ux/fiori-tools/sap-no-global-define
|
|
119
|
+
window.getNewDataSources = getNewDataSources;
|
|
120
|
+
// eslint-disable-next-line @sap-ux/fiori-tools/sap-no-global-define
|
|
121
|
+
window.getMetaModelForNewDataSource = getMetaModelForNewDataSource;
|
|
122
|
+
log.info('OVP bridge functions initialized (writeToI18n, getNewDataSources, getMetaModelForNewDataSource)');
|
|
123
|
+
}
|
|
124
|
+
var __exports = {
|
|
125
|
+
__esModule: true
|
|
126
|
+
};
|
|
127
|
+
__exports.initOvpWindowFunctions = initOvpWindowFunctions;
|
|
128
|
+
return __exports;
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=ovp-window-functions.js.map
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import log from 'sap/base/Log';
|
|
2
|
+
import ODataModel from 'sap/ui/model/odata/v2/ODataModel';
|
|
3
|
+
|
|
4
|
+
interface I18nProperty {
|
|
5
|
+
key: string;
|
|
6
|
+
value: string;
|
|
7
|
+
textType?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface DataSourceInfo {
|
|
11
|
+
ID: string;
|
|
12
|
+
Title: string;
|
|
13
|
+
Description?: string;
|
|
14
|
+
TechnicalServiceName?: string;
|
|
15
|
+
TechnicalServiceVersion?: number;
|
|
16
|
+
ServiceUrl?: string;
|
|
17
|
+
MetadataUrl?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
interface DataSourcesResponse {
|
|
21
|
+
results: DataSourceInfo[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface ServiceInfoResponse {
|
|
25
|
+
serviceUrl: string;
|
|
26
|
+
annotations: Array<{ TechnicalName: string; Uri: string }>;
|
|
27
|
+
modelInformation: OvpModelInformation;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
interface OvpModelInformation {
|
|
31
|
+
serviceURI: string;
|
|
32
|
+
serviceAnnotation: string;
|
|
33
|
+
serviceAnnotationURI: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
interface OvpMetaModelResult {
|
|
37
|
+
oEntityContainers: Record<string, unknown>;
|
|
38
|
+
oSchema: Record<string, unknown>[];
|
|
39
|
+
modelInformation: OvpModelInformation;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
declare global {
|
|
43
|
+
interface Window {
|
|
44
|
+
writeToI18n: (path: string, properties: I18nProperty[]) => void;
|
|
45
|
+
getNewDataSources: (path: string) => Promise<DataSourcesResponse>;
|
|
46
|
+
getMetaModelForNewDataSource: (
|
|
47
|
+
selectedDataSources: DataSourceInfo[],
|
|
48
|
+
path: string
|
|
49
|
+
) => Promise<OvpMetaModelResult | undefined>;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Returns the base URL for API requests.
|
|
55
|
+
*
|
|
56
|
+
* @returns Base URL string
|
|
57
|
+
*/
|
|
58
|
+
function getBaseUrl(): string {
|
|
59
|
+
return document.getElementById('root')?.dataset.openUxPreviewBaseUrl ?? '';
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Creates a UI5 ODataModel with annotation URLs and returns its metamodel
|
|
64
|
+
* with entity containers, schema, and model information.
|
|
65
|
+
*
|
|
66
|
+
* @param serviceInfo Service URL and annotation details from the server
|
|
67
|
+
* @returns Promise resolving to a metamodel object
|
|
68
|
+
*/
|
|
69
|
+
async function buildMetaModel(serviceInfo: ServiceInfoResponse): Promise<OvpMetaModelResult> {
|
|
70
|
+
const annotationUris = serviceInfo.annotations.map((a) => a.Uri);
|
|
71
|
+
|
|
72
|
+
const model = new ODataModel(serviceInfo.serviceUrl, {
|
|
73
|
+
annotationURI: annotationUris,
|
|
74
|
+
loadAnnotationsJoined: true,
|
|
75
|
+
skipMetadataAnnotationParsing: false,
|
|
76
|
+
json: true
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
const metaModel = model.getMetaModel();
|
|
80
|
+
await metaModel.loaded();
|
|
81
|
+
|
|
82
|
+
return {
|
|
83
|
+
oEntityContainers: metaModel.getODataEntityContainer() as Record<string, unknown>,
|
|
84
|
+
oSchema: metaModel.getObject('/dataServices/schema') as Record<string, unknown>[],
|
|
85
|
+
modelInformation: serviceInfo.modelInformation
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Writes i18n entries to the adaptation project's i18n properties file.
|
|
91
|
+
* Fire-and-forget: the OVP runtime does not await the result.
|
|
92
|
+
*
|
|
93
|
+
* @param _path - i18n path (ignored; server resolves from project context)
|
|
94
|
+
* @param properties - Array of i18n key-value entries to write
|
|
95
|
+
*/
|
|
96
|
+
function writeToI18n(_path: string, properties: I18nProperty[]): void {
|
|
97
|
+
const entries = properties.map((p) => ({
|
|
98
|
+
key: p.key,
|
|
99
|
+
value: p.value,
|
|
100
|
+
annotation: p.textType
|
|
101
|
+
}));
|
|
102
|
+
fetch(`${getBaseUrl()}/editor/i18n`, {
|
|
103
|
+
method: 'POST',
|
|
104
|
+
headers: { 'content-type': 'application/json' },
|
|
105
|
+
body: JSON.stringify(entries)
|
|
106
|
+
}).catch((error) => {
|
|
107
|
+
log.error('OVP writeToI18n failed', error);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Fetches available OData V2 services from the ABAP system catalog.
|
|
113
|
+
*
|
|
114
|
+
* @param _path - Application path (ignored; server uses its own provider)
|
|
115
|
+
* @returns Promise resolving to an object with a results array of service metadata
|
|
116
|
+
*/
|
|
117
|
+
async function getNewDataSources(_path: string): Promise<DataSourcesResponse> {
|
|
118
|
+
const response = await fetch(`${getBaseUrl()}/adp/api/ovp/datasources`);
|
|
119
|
+
if (!response.ok) {
|
|
120
|
+
throw new Error(`Failed to fetch data sources: ${response.status}`);
|
|
121
|
+
}
|
|
122
|
+
return response.json();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Fetches the OData metadata model for a selected data source service.
|
|
127
|
+
* Creates a real UI5 ODataModel with annotations to build a full metamodel
|
|
128
|
+
* compatible with the OVP dialog.
|
|
129
|
+
*
|
|
130
|
+
* @param selectedDataSources - Array of selected data source objects
|
|
131
|
+
* @param _path - Application path (ignored; server uses its own provider)
|
|
132
|
+
* @returns Promise resolving to a metamodel object
|
|
133
|
+
*/
|
|
134
|
+
async function getMetaModelForNewDataSource(
|
|
135
|
+
selectedDataSources: DataSourceInfo[],
|
|
136
|
+
_path: string
|
|
137
|
+
): Promise<OvpMetaModelResult | undefined> {
|
|
138
|
+
const response = await fetch(`${getBaseUrl()}/adp/api/ovp/metamodel`, {
|
|
139
|
+
method: 'POST',
|
|
140
|
+
headers: { 'content-type': 'application/json' },
|
|
141
|
+
body: JSON.stringify({ dataSource: selectedDataSources[0] })
|
|
142
|
+
});
|
|
143
|
+
if (!response.ok) {
|
|
144
|
+
throw new Error(`Failed to fetch metamodel: ${response.status}`);
|
|
145
|
+
}
|
|
146
|
+
const serviceInfo = (await response.json()) as ServiceInfoResponse | null;
|
|
147
|
+
if (!serviceInfo) {
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
return buildMetaModel(serviceInfo);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Initializes OVP bridge functions required by the sap.ovp library for the
|
|
155
|
+
* "Add New Card" flow in the adaptation editor.
|
|
156
|
+
*
|
|
157
|
+
* These bridge functions are registered as globals on the window object
|
|
158
|
+
* and connect the OVP runtime (in the preview iframe) to the server-side
|
|
159
|
+
* adaptation tooling middleware via fetch requests.
|
|
160
|
+
*/
|
|
161
|
+
export function initOvpWindowFunctions(): void {
|
|
162
|
+
// OVP runtime expects these as window globals
|
|
163
|
+
// eslint-disable-next-line @sap-ux/fiori-tools/sap-no-global-define
|
|
164
|
+
window.writeToI18n = writeToI18n;
|
|
165
|
+
// eslint-disable-next-line @sap-ux/fiori-tools/sap-no-global-define
|
|
166
|
+
window.getNewDataSources = getNewDataSources;
|
|
167
|
+
// eslint-disable-next-line @sap-ux/fiori-tools/sap-no-global-define
|
|
168
|
+
window.getMetaModelForNewDataSource = getMetaModelForNewDataSource;
|
|
169
|
+
|
|
170
|
+
log.info('OVP bridge functions initialized (writeToI18n, getNewDataSources, getMetaModelForNewDataSource)');
|
|
171
|
+
}
|