@sap/ux-specification 1.96.14 → 1.96.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +102 -19
  2. package/dist/documentation/runDocu-min.js +1 -1
  3. package/dist/documentation/v2/v2-AnalyticalListPage.html +1 -1
  4. package/dist/documentation/v2/v2-ApplicationV2.html +1 -1
  5. package/dist/documentation/v2/v2-ListReport.html +1 -1
  6. package/dist/documentation/v2/v2-ObjectPage.html +1 -1
  7. package/dist/documentation/v2/v2-OverviewPage.html +1 -1
  8. package/dist/documentation/v4/v4-ApplicationV4.html +1 -1
  9. package/dist/documentation/v4/v4-FreestylePage.html +48 -0
  10. package/dist/documentation/v4/v4-ListReport.html +1 -1
  11. package/dist/documentation/v4/v4-ObjectPage.html +1 -1
  12. package/dist/index-min.js +1 -1
  13. package/dist/schemas/v2/AnalyticalListPageConfig.json +1 -0
  14. package/dist/schemas/v2/ListReportConfig.json +1 -0
  15. package/dist/schemas/v2/ObjectPageConfig.json +1 -0
  16. package/dist/schemas/v4/ApplicationV4.json +4 -0
  17. package/dist/schemas/v4/FreestylePageConfig.json +10 -0
  18. package/dist/src/apiTypes.d.ts +13 -4
  19. package/dist/src/specification/schemaAccess.d.ts +2 -1
  20. package/dist/src/specification/v2/controls/Table.d.ts +1 -0
  21. package/dist/src/specification/v2/controls/index.d.ts +1 -0
  22. package/dist/src/specification/v4/ApplicationV4.d.ts +4 -0
  23. package/dist/src/specification/v4/pages/FreestylePageConfig.d.ts +2 -0
  24. package/dist/src/specification/v4/pages/index.d.ts +1 -0
  25. package/dist/src/specification/v4/webapp/manifest/sapUi5.d.ts +2 -0
  26. package/dist/src/sync/common/appProvider.d.ts +1 -1
  27. package/dist/src/sync/common/generate/utils.d.ts +16 -16
  28. package/dist/src/sync/common/types.d.ts +6 -1
  29. package/dist/src/sync/common/utils.d.ts +17 -2
  30. package/dist/src/sync/v2/export/controls/Fragment.d.ts +2 -1
  31. package/dist/src/sync/v2/export/controls/Table.d.ts +1 -2
  32. package/dist/src/sync/v2/export/export.d.ts +2 -1
  33. package/dist/src/sync/v2/import/common/index.d.ts +1 -0
  34. package/dist/src/sync/v2/import/controls/table.d.ts +3 -1
  35. package/dist/src/sync/v2/types.d.ts +4 -3
  36. package/dist/src/sync/v4/export/pages/FreestylePage.d.ts +5 -0
  37. package/dist/src/sync/v4/export/pages/index.d.ts +1 -0
  38. package/dist/src/sync/v4/export/utils.d.ts +6 -0
  39. package/dist/src/sync/v4/generate/freestylePage.d.ts +10 -0
  40. package/dist/src/sync/v4/generate/generate.d.ts +12 -0
  41. package/dist/src/sync/v4/generate/index.d.ts +2 -1
  42. package/dist/src/sync/v4/import/app/appProvider.d.ts +4 -17
  43. package/dist/src/sync/v4/import/app/baseAppProvider.d.ts +45 -0
  44. package/dist/src/sync/v4/import/app/freestyleProvider.d.ts +7 -0
  45. package/dist/src/sync/v4/import/app/index.d.ts +3 -0
  46. package/dist/src/sync/v4/utils/utils.d.ts +2 -2
  47. package/dist/test/unit/generateAppSchema/generateAppSchemaFFV4.test.d.ts +1 -0
  48. package/dist/test/unit/generateGenericSchema/generateGenericSchemaFFV4.test.d.ts +1 -0
  49. package/package.json +3 -3
@@ -586,6 +586,7 @@
586
586
  },
587
587
  "columnIndex": {
588
588
  "description": "The index of the column in the overall collection; if undefined, the custom column will be added at the end of the table.",
589
+ "minimum": 0,
589
590
  "type": "number"
590
591
  },
591
592
  "leadingProperty": {
@@ -590,6 +590,7 @@
590
590
  },
591
591
  "columnIndex": {
592
592
  "description": "The index of the column in the overall collection; if undefined, the custom column will be added at the end of the table.",
593
+ "minimum": 0,
593
594
  "type": "number"
594
595
  },
595
596
  "leadingProperty": {
@@ -875,6 +875,7 @@
875
875
  },
876
876
  "columnIndex": {
877
877
  "description": "The index of the column in the overall collection; if undefined, the custom column will be added at the end of the table.",
878
+ "minimum": 0,
878
879
  "type": "number"
879
880
  },
880
881
  "leadingProperty": {
@@ -29,6 +29,10 @@
29
29
  "$ref": "#/definitions/FlexibleColumnLayoutV4",
30
30
  "description": "The flexible column layout allows users to see more details on the page, and to expand and collapse the screen areas. For the overview page, this layout is not relevant."
31
31
  },
32
+ "viewPath": {
33
+ "description": "Prefix that is preceding the view",
34
+ "type": "string"
35
+ },
32
36
  "title": {
33
37
  "description": "To change the application header, in your project artifacts, change the i18n property file\nfor your app under webapp/i18n/i18n.properties ->appTitle. Then, refer to the title as\n{{appTitle}} in the sap.app section of the manifest file.",
34
38
  "i18nClassification": "TIT: Title of the application",
@@ -0,0 +1,10 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "$schema": {
5
+ "type": "string"
6
+ }
7
+ },
8
+ "additionalProperties": false,
9
+ "$schema": "http://json-schema.org/draft-07/schema#"
10
+ }
@@ -7,9 +7,9 @@ import type { FileData, File, ExportResults } from './sync/common/types';
7
7
  import type { ApplicationV2, ObjectPageConfig as ObjectPageConfigV2, ListReportConfig as ListReportConfigV2, OverviewPageConfig as OverviewPageConfigV2, AnalyticalListPageConfig as AnalyticalListPageConfigV2, Manifest as ManifestV2, FlexChangeLayer } from './v2';
8
8
  import type { ApplicationV4, ObjectPageConfig as ObjectPageConfigV4, ListReportConfig as ListReportConfigV4, Manifest as ManifestV4 } from './v4';
9
9
  import type { ConvertedMetadata } from '@sap-ux/vocabularies-types';
10
- import type { CustomPage, CustomTableColumn, CustomSection } from '@sap-ux/fe-fpm-writer';
11
10
  import type { Editor } from 'mem-fs-editor';
12
11
  import type { TemplateType } from './sync/common';
12
+ import type { CustomPage as FPMCustomPage, CustomTableColumn as FPMCustomTableColumn, CustomSection as FPMCustomSection, ObjectPage as FPMObjectPage } from '@sap-ux/fe-fpm-writer';
13
13
  export declare type MessageMetadataType = (object | string | number)[];
14
14
  /**
15
15
  * Interface used to define a logger for the specificaton API
@@ -92,7 +92,15 @@ export declare type GenerateAnalyticalListPageV4 = {
92
92
  manifest?: object;
93
93
  };
94
94
  };
95
- export declare type GenerateSchemaV4Type = GenerateListReportV4 | GenerateObjectPageV4 | GenerateAnalyticalListPageV4;
95
+ export declare type GenerateFreestylePageV4 = {
96
+ [SchemaType.FreestylePage]: {
97
+ genericSchema: object;
98
+ annotations: FileData[];
99
+ manifest: object;
100
+ logger?: ExtensionLogger;
101
+ };
102
+ };
103
+ export declare type GenerateSchemaV4Type = GenerateListReportV4 | GenerateObjectPageV4 | GenerateAnalyticalListPageV4 | GenerateFreestylePageV4;
96
104
  export interface GenerateSchemaV4 {
97
105
  [FioriElementsVersion.v4]: GenerateSchemaV4Type;
98
106
  }
@@ -292,7 +300,8 @@ export interface GenerateAppSchemaParameters {
292
300
  export declare enum CustomExtensionType {
293
301
  CustomPage = "CustomPage",
294
302
  CustomColumn = "CustomColumn",
295
- CustomSection = "CustomSection"
303
+ CustomSection = "CustomSection",
304
+ ObjectPage = "ObjectPage"
296
305
  }
297
306
  export interface GenerateCustomExtensionParams {
298
307
  customExtension: CustomExtensionType;
@@ -300,7 +309,7 @@ export interface GenerateCustomExtensionParams {
300
309
  data: CustomExtensionData;
301
310
  fsEditor?: Editor;
302
311
  }
303
- export declare type CustomExtensionData = CustomPage | CustomTableColumn | CustomSection;
312
+ export declare type CustomExtensionData = FPMCustomPage | FPMCustomTableColumn | FPMCustomSection | FPMObjectPage;
304
313
  export declare const FPMWriterMap: Map<CustomExtensionType, (basePath: string, data: CustomExtensionData, fs?: Editor) => Editor>;
305
314
  /**
306
315
  * API Version
@@ -7,7 +7,8 @@ export declare enum SchemaType {
7
7
  ObjectPage = "ObjectPage",
8
8
  ListReport = "ListReport",
9
9
  OverviewPage = "OverviewPage",
10
- AnalyticalListPage = "AnalyticalListPage"
10
+ AnalyticalListPage = "AnalyticalListPage",
11
+ FreestylePage = "FreestylePage"
11
12
  }
12
13
  /**
13
14
  * Return the generic schema for a given version and type
@@ -45,6 +45,7 @@ export interface TableCustomColumn {
45
45
  columnKey: string;
46
46
  /**
47
47
  * The index of the column in the overall collection; if undefined, the custom column will be added at the end of the table.
48
+ * @minimum 0
48
49
  */
49
50
  columnIndex?: number;
50
51
  /**
@@ -7,6 +7,7 @@ export * from './Table';
7
7
  export * from './ToolBar';
8
8
  export * from './Footer';
9
9
  export * from './AnalyticalListPageChart';
10
+ export * from './AnalyticalListPageKPI';
10
11
  export * from './ObjectPageHeader';
11
12
  export * from './ObjectPageLayout';
12
13
  export * from './ObjectPageSection';
@@ -6,6 +6,10 @@ export interface AppSettings extends CommonAppSettings {
6
6
  * The flexible column layout allows users to see more details on the page, and to expand and collapse the screen areas. For the overview page, this layout is not relevant.
7
7
  */
8
8
  flexibleColumnLayout?: FlexibleColumnLayoutV4;
9
+ /**
10
+ * Prefix that is preceding the view
11
+ */
12
+ viewPath?: string;
9
13
  }
10
14
  export interface PagesV4 extends Pages {
11
15
  [key: string]: PageV4;
@@ -0,0 +1,2 @@
1
+ import type { PageConfig } from '../../common';
2
+ export declare type FreestylePageConfig = PageConfig;
@@ -1,2 +1,3 @@
1
1
  export * from './ObjectPageConfig';
2
2
  export * from './ListReportConfig';
3
+ export * from './FreestylePageConfig';
@@ -61,6 +61,7 @@ export interface SapUi5RoutingTargetSettingsV4 {
61
61
  [key: string]: SapUi5RoutingTargetNavigationV4;
62
62
  };
63
63
  variantManagement?: string;
64
+ viewPath?: string;
64
65
  views?: {
65
66
  paths: Array<SapUi5ViewPath>;
66
67
  showCounts?: boolean;
@@ -80,6 +81,7 @@ export declare type RouterClass = typeof FIORI_FCL_ROUTER_CLASS | string;
80
81
  export interface SapUi5RoutingConfig {
81
82
  routerClass?: RouterClass;
82
83
  flexibleColumnLayout?: FlexibleColumnLayoutV4;
84
+ viewPath?: string;
83
85
  }
84
86
  export declare enum FlexibleColumnLayoutAggregations {
85
87
  BeginColumnPages = "beginColumnPages",
@@ -10,7 +10,7 @@ export interface Controllers {
10
10
  export declare abstract class AppProvider {
11
11
  readonly app: Application;
12
12
  readonly logger: ExtensionLogger;
13
- private readonly schemas;
13
+ readonly schemas: Files;
14
14
  unhandledControllers: Array<string>;
15
15
  protected constructor(manifest: ManifestV2 | ManifestV4, schemas: Files, home: string, pages: PagesBase, version: FioriElementsVersion, settings?: AppSettingsV2 | AppSettingsV4, logger?: ExtensionLogger);
16
16
  /**
@@ -50,6 +50,22 @@ export declare function addEnumForFilterBarAnnotationPath(entityType: EntityType
50
50
  * Please note that method depends on order and takes first non empty value associated to passed properties.
51
51
  */
52
52
  export declare function addDefinitionForRelatedFacetKeys(appSchema: Definition, sectionDefinitions: string[], facetSections: FacetSection[], idProperties: Array<keyof Omit<FacetSection, 'custom'>>): void;
53
+ /**
54
+ * Receives a facet key and returns the key as used in schema
55
+ * @param facetKey - key of the facet, as used in annotation
56
+ * @returns facetKeyInSchema - key of the facet, as used in schema
57
+ */
58
+ export declare function getFacetKeyInSchema(facetKey: string): string;
59
+ /**
60
+ * Adds an existing schema definition to a new definition in the app schema
61
+ * @param definition name of definition, as used in schema
62
+ * @param facetKey - key of the facet, as used in annotation
63
+ * @param {Definition} appSchema App schema in general
64
+ * @param {boolean} useDefinitionAsKey If set to false, facet key will solely be used as key, else encapsulated within definition key `definition<facetKey>`
65
+ * @param subDefinitionName - sub definition, if different from the definition (e.g. subsection vs. section)
66
+ * @returns {Definition} part of app schema that has been added and filled
67
+ */
68
+ export declare function parseSchemaDefinition(definition: string, facetKey: string, appSchema: Definition, useDefinitionAsKey?: boolean, subDefinitionName?: DefinitionName): Definition;
53
69
  /**
54
70
  * Functions used both by V2 and V4 to add the common definitions for a line item to the app schema
55
71
  * @param appSchema - the app specific schema that shall get enhanced
@@ -104,22 +120,6 @@ export declare function determineDataType(field: object): string | undefined;
104
120
  * @param field - given field definition = annotation property, at AVT
105
121
  */
106
122
  export declare function addDataTypeToDefinition(definition: object, field: object): void;
107
- /**
108
- * Receives a facet key and returns the key as used in schema
109
- * @param facetKey - key of the facet, as used in annotation
110
- * @returns facetKeyInSchema - key of the facet, as used in schema
111
- */
112
- export declare function getFacetKeyInSchema(facetKey: string): string;
113
- /**
114
- * Adds an existing schema definition to a new definition in the app schema
115
- * @param definition name of definition, as used in schema
116
- * @param facetKey - key of the facet, as used in annotation
117
- * @param {Definition} appSchema App schema in general
118
- * @param {boolean} useDefinitionAsKey If set to false, facet key will solely be used as key, else encapsulated within definition key `definition<facetKey>`
119
- * @param subDefinitionName - sub definition, if different from the definition (e.g. subsection vs. section)
120
- * @returns {Definition} part of app schema that has been added and filled
121
- */
122
- export declare function parseSchemaDefinition(definition: DefinitionName | SectionTypeV2, facetKey: string, appSchema: Definition, useDefinitionAsKey?: boolean, subDefinitionName?: DefinitionName): Definition;
123
123
  /**
124
124
  * Creates a definition link for a facet and definition name
125
125
  * @param {DefinitionName} definition - name of definition, as used in schema
@@ -111,7 +111,7 @@ export interface FlexAdapter {
111
111
  exportFlexValue?: exportFlexValue;
112
112
  importFlexValue?: importFlexValue;
113
113
  }
114
- export declare type ManifestPath = (pageKeys?: string[], manifest?: Manifest, ...pathParts: string[]) => string;
114
+ export declare type ManifestPath = (pageKeys?: string[], manifest?: Manifest, ...pathParts: any[]) => string;
115
115
  export declare type ExportHandlerFunction = (manifestSection: unknown, configObject: unknown, key: string, manifestKey?: string, ...pathParts: string[]) => unknown;
116
116
  export interface ManifestConverter {
117
117
  path: ManifestPath;
@@ -228,7 +228,9 @@ export declare enum ViewTemplateType {
228
228
  ResponsiveTableCellsExtension = "ResponsiveTableCellsExtension"
229
229
  }
230
230
  export declare enum DefinitionName {
231
+ Action = "Action",
231
232
  Actions = "Actions",
233
+ ActionsLR = "Actions<LineItems>",
232
234
  ALPChart = "ALPChart",
233
235
  ALPChartView = "ALPChartView",
234
236
  ALPTable = "ALPTable",
@@ -247,7 +249,9 @@ export declare enum DefinitionName {
247
249
  Fields4Dialog = "Fields4Dialog",
248
250
  FilterBar = "FilterBar",
249
251
  Footer = "Footer",
252
+ FooterAction = "FooterAction",
250
253
  FooterActions = "FooterActions",
254
+ FooterActionsLR = "FooterActions<LineItems>",
251
255
  Form = "Form",
252
256
  FormAction = "FormAction",
253
257
  GenericActions = "GenericActions",
@@ -295,6 +299,7 @@ export declare enum DefinitionName {
295
299
  QuickVariantSelectionV4OP = "QuickVariantSelectionV4OP",
296
300
  RelatedFacetKeys = "RelatedFacetKeys",
297
301
  Sections = "Sections",
302
+ SelectionFields = "SelectionFields",
298
303
  Table = "Table",
299
304
  TableSPV = "TableSPV",
300
305
  TableColumn = "TableColumn",
@@ -3,6 +3,7 @@ import type { ExtensionLogger } from '../../apiTypes';
3
3
  import type { FacetConfigs, FileData, FacetConfig, FacetSection, SchemaFilePath, anyFacetType } from './types';
4
4
  import type { Manifest } from '../../specification/common';
5
5
  import type { MetadataInstanceInterface } from './decoration/factory';
6
+ import type { SapUiAppPageV4, SapUi5RoutingTargetCustomPageV4 } from '../../specification/v4';
6
7
  import type { DataFieldAbstractTypes } from '@sap-ux/vocabularies-types/vocabularies/UI';
7
8
  import type { ConvertedMetadata, EntityType, PropertyPath } from '@sap-ux/vocabularies-types';
8
9
  import { FioriElementsVersion, PageType, PageTypeV4 } from '../../specification/common';
@@ -13,7 +14,8 @@ export declare enum TemplateType {
13
14
  ListReportObjectPageV4 = "ListReportObjectPageV4",
14
15
  OverviewPageV2 = "OverviewPageV2",
15
16
  AnalyticalListPageV2 = "AnalyticalListPageV2",
16
- AnalyticalListPageV4 = "AnalyticalListPageV4"
17
+ AnalyticalListPageV4 = "AnalyticalListPageV4",
18
+ FreestylePageV4 = "FreestylePageV4"
17
19
  }
18
20
  export declare const DEFINITION_LINK_PREFIX = "#/definitions/";
19
21
  /**
@@ -73,7 +75,7 @@ export declare function getPageTypeV2(name: string): PageType | undefined;
73
75
  * Return the page type for a given V4 page in manifest
74
76
  * @param name - page component name
75
77
  */
76
- export declare function getPageTypeV4(name: string): PageTypeV4 | undefined;
78
+ export declare function getPageTypeV4(v4App: SapUiAppPageV4 | SapUi5RoutingTargetCustomPageV4): PageTypeV4 | undefined;
77
79
  /**
78
80
  * Finds the alias for a given namespace in the references' section of the converted service metadata
79
81
  * @param {string} namespace - complete namespace, e.g. 'com.sap.vocabularies.UI.v1'
@@ -226,3 +228,16 @@ export declare function getNextTargetDefinition(appSchema: object, title: string
226
228
  * @returns
227
229
  */
228
230
  export declare const arrayCombineMerge: (target: any, source: any, options: any) => string[];
231
+ /**
232
+ * Converts an enum into a CSV
233
+ * @param {object} manifestSection - manifestSection where the key exists
234
+ * @param {object} configPart - Property as mentioned in config file
235
+ * @param {string} key - Property to be exported to manifest
236
+ */
237
+ export declare function convertEnumToCSV(manifestSection: any, configPart: any, key: string): void;
238
+ /**
239
+ * Converts an action ID from the internal format (schema, config) to the stable ID representation
240
+ * @param actionId - the (unique) internal format of the action ID
241
+ * @returns the converted action ID
242
+ */
243
+ export declare function convertActionKeyToStableId(actionId: string): string;
@@ -7,9 +7,10 @@ export declare const SAP_UI_TABLE = "sap.ui.table";
7
7
  /**
8
8
  * Method which receives fragment definition node and reads root column definition.
9
9
  * @param {unknown} definition - Application or Page Config object.
10
+ * @param {unknown} fragment - fragment definition
10
11
  * @returns {unknown | undefined} Root column read from definition.
11
12
  */
12
- export declare function getRootCustomColumnFromFragmentJSON(definition: unknown): string | unknown | undefined;
13
+ export declare function getRootCustomColumnFromFragmentJSON(definition: unknown, fragment?: unknown): string | unknown | undefined;
13
14
  /**
14
15
  * Identifies the right extensions based on a pattern, then deletes all corresponding columns and cells
15
16
  * @param manifestSection - Section in manifest.json comprising the extensions
@@ -1,6 +1,5 @@
1
1
  /// <reference types="@sapui5/ts-types-esm" />
2
- import type { AnalyticalTable as AnalyticalTableConfig, TableALP as TableALPConfig, CommonTableSettings as CommonTableConfig, DefaultContentView, DefaultFilterMode, GenericColumns, GridTable as GridTableConfig, LoadDataOnAppLaunchSettings, QuickVariantSelectionX as QuickVariantSelectionXInterface, ResponsiveTable as ResponsiveTableConfig, TreeTable as TreeTableConfig, Strategy, FieldPath as FieldPathInterface, QuickVariant, QuickVariantX, CreationFieldKeys, ToolBar } from '../../../../specification/v2';
3
- import { TableTypeV2 } from '../../../../specification/v2';
2
+ import type { AnalyticalTable as AnalyticalTableConfig, TableALP as TableALPConfig, CommonTableSettings as CommonTableConfig, DefaultContentView, DefaultFilterMode, GenericColumns, GridTable as GridTableConfig, LoadDataOnAppLaunchSettings, QuickVariantSelectionX as QuickVariantSelectionXInterface, ResponsiveTable as ResponsiveTableConfig, TreeTable as TreeTableConfig, Strategy, FieldPath as FieldPathInterface, QuickVariant, QuickVariantX, CreationFieldKeys, ToolBar, TableTypeV2 } from '../../../../specification/v2';
4
3
  import type { ControlTypeFunction, DeprecatedProperties } from '../../../common';
5
4
  import type { PopinLayout } from 'sap/m/library';
6
5
  import type { smarttable } from 'sap/ui/comp/library';
@@ -1,6 +1,7 @@
1
1
  import type { ExportResults } from '../../../v2';
2
2
  import type { MetadataInstanceInterface } from '../../common/decoration/factory';
3
3
  import type { TransferParameterTypeV2 } from '../types';
4
+ import type { Definition } from 'typescript-json-schema';
4
5
  /**
5
6
  * Private recursive function that traverses the content of the current object. It reads decorators and fills manifest entries and flex changes
6
7
  * @param configObject - current object to traverse
@@ -31,4 +32,4 @@ export declare function assignReflectMetadataRules(factory: MetadataInstanceInte
31
32
  */
32
33
  export declare function transferManifestEntriesAndFlexChange(transferParameters: TransferParameterTypeV2, configObject: {
33
34
  [key: string]: any;
34
- }, parentIds: string[], breadcrumbs: string[], schemaDefinition: object, title?: string): void;
35
+ }, parentIds: string[], breadcrumbs: string[], schemaDefinition: Definition, title?: string): void;
@@ -6,6 +6,7 @@ import type { SapUiAppPageV2 } from '../../../../specification/v2';
6
6
  import { TableTypeV2 } from '../../../../specification/v2';
7
7
  import type { ExtensionLogger } from '../../../../apiTypes';
8
8
  export declare type LROPConfigsType = ListReportConfig | AnalyticalListPageConfig | ObjectPageConfig;
9
+ export declare function convertActionKey(actionProperty: string): string;
9
10
  /**
10
11
  * Unescapes the selector ID of a flex change
11
12
  * @param selectorId - escaped selector ID
@@ -1,13 +1,15 @@
1
1
  import type { TreeTable, ResponsiveTable, AnalyticalTable, GridTable, TableALP } from '../../../../specification/v2/index';
2
+ import type { Definition } from 'typescript-json-schema';
2
3
  export declare type FlexForTransfer = {
3
4
  controlId: string;
4
5
  controlType: string;
5
6
  propertyId: string;
6
7
  facetId?: string;
7
8
  newValue: any;
9
+ creation: string;
8
10
  };
9
11
  export interface FlexChangesForTransfer {
10
12
  [controlId: string]: FlexForTransfer;
11
13
  }
12
14
  export declare type ConfigTableType = ResponsiveTable | TreeTable | AnalyticalTable | GridTable | TableALP;
13
- export declare function addFlexForTable(config: ConfigTableType, change: FlexForTransfer, jsonSchema: object): void;
15
+ export declare function addFlexForTable(config: ConfigTableType, change: FlexForTransfer, jsonSchema: Definition): void;
@@ -62,7 +62,8 @@ export declare type ObjectPageV2ConfigParameters = {
62
62
  objectPageConfig?: ObjectPageConfig;
63
63
  };
64
64
  export declare type SectionPartProperties = {
65
- id: string;
66
- type: SectionTypeV2;
67
- schema: Definition;
65
+ id?: string;
66
+ type?: SectionTypeV2;
67
+ schema?: Definition;
68
+ title?: string;
68
69
  };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Sync class for import and export of V4 freestyle page
3
+ */
4
+ export declare class FreestylePage {
5
+ }
@@ -1,2 +1,3 @@
1
1
  export * from './ListReport';
2
2
  export * from './ObjectPage';
3
+ export * from './FreestylePage';
@@ -6,3 +6,9 @@ import type { SapUi5V4 } from '../../../specification/v4';
6
6
  * @param {boolean} [add=true] - Add or remove library.
7
7
  */
8
8
  export declare function updateDependencyLib(manifest: SapUi5V4, name: string, add?: boolean): void;
9
+ /**
10
+ * Looks for <...> pattern in the input string; if found, extracts this last part of the string
11
+ * @param longId - schema ID in its long format
12
+ * @returns the converted ID
13
+ */
14
+ export declare function extractLastIdPart(longId: string): string;
@@ -0,0 +1,10 @@
1
+ import type { GenerateAppSchemaParameters } from '../../../apiTypes';
2
+ /**
3
+ * Generates an app specific schema for the FE V4 Freestyle page from the generic schema.
4
+ * Generic types are replaced by information from the app specific annotations.
5
+ * @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
6
+ * @param genericSchema - generic JSON schema of an object page
7
+ *
8
+ * @returns {object} application-specific schema of the freestyle page
9
+ */
10
+ export declare function generateFreestyleSchemaV4(_generateParameters: GenerateAppSchemaParameters, genericSchema: object): object;
@@ -28,3 +28,15 @@ export declare function generateObjectPageInterfaceV4(genericSchema: object, ent
28
28
  * @returns the app specific JSON schema
29
29
  */
30
30
  export declare function generateListReportInterfaceV4(templateType: TemplateType, genericSchema: object, entitySetName: string, annotations: FileData[], logger?: ExtensionLogger, manifest?: object): object;
31
+ /**
32
+ * Generates the app specific schema of a freestyle page out of the generic schema.
33
+ * Generic types are replaced by information from the app specific annotations.
34
+ * @param {TemplateType} templateType - the template type allows distinguishing LR and ALP
35
+ * @param genericSchema - generic JSON schema of a list report
36
+ * @param annotations - list of all annotation files (file content plus URI as identifier)
37
+ * @param {ExtensionLogger} logger - Logger class for logging messages
38
+ * @param manifest - manifest.json of the app
39
+ *
40
+ * @returns the app specific JSON schema
41
+ */
42
+ export declare function generateFreestyleInterfaceV4(templateType: TemplateType, genericSchema: object, annotations: FileData[], manifest?: object, entitySetName?: string, logger?: ExtensionLogger): object;
@@ -1,3 +1,4 @@
1
1
  export { generateListReportSchemaV4 } from './listReport';
2
2
  export { generateObjectPageSchemaV4 } from './objectPage';
3
- export { generateListReportInterfaceV4, generateObjectPageInterfaceV4 } from './generate';
3
+ export { generateFreestyleSchemaV4 } from './freestylePage';
4
+ export { generateListReportInterfaceV4, generateObjectPageInterfaceV4, generateFreestyleInterfaceV4 } from './generate';
@@ -1,20 +1,7 @@
1
- import { AppProvider } from '../../../common/appProvider';
2
- import type { Files } from '../../../common';
3
- import { TemplateType } from '../../../common';
4
- import type { SapUiAppPagesV4, Manifest, Pages } from '../../../../specification/v4';
1
+ import type { Files, TemplateType } from '../../../common';
5
2
  import type { ExtensionLogger } from '../../../..';
6
- export declare enum Constants {
7
- OptionalQuery = ":?query:",
8
- Component = "sap/fe/AppComponent",
9
- Namespace = "sap.fe.templates"
10
- }
11
- /**
12
- * Determines the Pages(app.json) using routing configuration from manifest and creates the configuration for each page
13
- * @param manifest - manifest.json of the app
14
- * @param schemas - list of JSON schemas of all pages
15
- */
16
- export declare function getPagesAndConfigs(manifest: Manifest, schemas: Files, templateType: TemplateType, logger?: ExtensionLogger): Pages;
17
- export declare class V4AppProvider extends AppProvider {
3
+ import type { Manifest } from '../../../../specification/v4';
4
+ import { BaseAppProvider } from './baseAppProvider';
5
+ export declare class V4AppProvider extends BaseAppProvider {
18
6
  constructor(manifest: Manifest, schemas: Files, templateType: TemplateType, logger?: ExtensionLogger);
19
7
  }
20
- export declare function getPages(manifest: Manifest, targetName: string): SapUiAppPagesV4;
@@ -0,0 +1,45 @@
1
+ import { AppProvider } from '../../../common/appProvider';
2
+ import { AppSettings } from '../../application';
3
+ import type { Files } from '../../../common';
4
+ import { TemplateType } from '../../../common';
5
+ import type { SapUiAppPagesV4, SapUi5RoutingV4, Manifest, Pages, Page, RoutingTargetOptions } from '../../../../specification/v4';
6
+ import { PageTypeV4 } from '../../../../specification/common';
7
+ import type { ExtensionLogger } from '../../../..';
8
+ export declare enum Constants {
9
+ OptionalQuery = ":?query:",
10
+ Component = "sap/fe/AppComponent",
11
+ Namespace = "sap.fe.templates"
12
+ }
13
+ export declare const unhandledControllers: Array<string>;
14
+ export declare type ConversionParameters = {
15
+ target: RoutingTargetOptions;
16
+ pageType: PageTypeV4;
17
+ manifest: Manifest;
18
+ schemas: Files;
19
+ logger: ExtensionLogger;
20
+ page: Page;
21
+ id: string;
22
+ templateType: TemplateType;
23
+ };
24
+ /**
25
+ * Determines the Pages(app.json) using routing configuration from manifest and creates the configuration for each page
26
+ * @param manifest - manifest.json of the app
27
+ * @param schemas - list of JSON schemas of all pages
28
+ */
29
+ export declare function getPagesAndConfigs(manifest: Manifest, schemas: Files, templateType: TemplateType, logger?: ExtensionLogger): Pages;
30
+ /**
31
+ * Get the id of the page that is to open when the application is started.
32
+ * @param routing UI5 routing configuration
33
+ */
34
+ export declare function getHome(routing: SapUi5RoutingV4): string;
35
+ /**
36
+ * Method which detects app settings from manifest.
37
+ * Currently only one setting is detected -Flexible Column Layout
38
+ * @param routing UI5 routing configuration.
39
+ * @return {AppSettings} Application settings.
40
+ */
41
+ export declare function getSettings(routing: SapUi5RoutingV4): AppSettings;
42
+ export declare function getPages(manifest: Manifest, targetName: string): SapUiAppPagesV4;
43
+ export declare abstract class BaseAppProvider extends AppProvider {
44
+ constructor(manifest: Manifest, schemas: Files, templateType: TemplateType, logger?: ExtensionLogger);
45
+ }
@@ -0,0 +1,7 @@
1
+ import type { Files, TemplateType } from '../../../common';
2
+ import type { ExtensionLogger } from '../../../..';
3
+ import type { Manifest } from '../../../../specification/v4';
4
+ import { BaseAppProvider } from './baseAppProvider';
5
+ export declare class V4FreestyleAppProvider extends BaseAppProvider {
6
+ constructor(manifest: Manifest, schemas: Files, templateType: TemplateType, logger?: ExtensionLogger);
7
+ }
@@ -0,0 +1,3 @@
1
+ export { getPages, getHome, getPagesAndConfigs, getSettings } from './baseAppProvider';
2
+ export { V4AppProvider } from './appProvider';
3
+ export { V4FreestyleAppProvider } from './freestyleProvider';
@@ -13,7 +13,7 @@ import type { Definition } from 'typescript-json-schema';
13
13
  * @param sectionId - identifier of the current object page section in schema
14
14
  * @param sectionIdInManifest - identifier of the current object page section in manifest
15
15
  */
16
- export declare function addCustomColumnDefinition(appSchema: object, v4Page: SapUiAppPageV4, logger: ExtensionLogger, customColumnDefinitionName?: string, sectionId?: string, sectionIdInManifest?: string): void;
16
+ export declare function addCustomColumnDefinition(appSchema: Definition, v4Page: SapUiAppPageV4, logger: ExtensionLogger, customColumnDefinitionName?: string, sectionId?: string, sectionIdInManifest?: string): void;
17
17
  /**
18
18
  * Processes a LineItem record of type DataFieldForAction during app schema generation
19
19
  * @param appSchema - the app specific schema that shall get enhanced
@@ -44,7 +44,7 @@ export declare function addLineItemsType(appSchema: Definition, lineItemAnnotati
44
44
  * @param positionName - ID of the definition of custom column position in schema
45
45
  * @param sectionIdInManifest - identifier of the current object page section in manifest
46
46
  */
47
- export declare function addFragmentEnumForAnchor(appSchema: Definition, lineItemId: string, v4Page: SapUiAppPageV4, positionName?: DefinitionName, sectionIdInManifest?: string): void;
47
+ export declare function addFragmentEnumForAnchor(appSchema: Definition, lineItemId: string, v4Page: SapUiAppPageV4, positionName?: string, sectionIdInManifest?: string): void;
48
48
  /**
49
49
  * Find the relevant V4 page under the routing targets of manifest,json
50
50
  * @param pages - list of all pages in manifest
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap/ux-specification",
3
- "version": "1.96.14",
3
+ "version": "1.96.17",
4
4
  "displayName": "SAP Fiori tools - Specification",
5
5
  "description": "SAP Fiori tools - Specification",
6
6
  "files": [
@@ -14,7 +14,7 @@
14
14
  },
15
15
  "engines": {
16
16
  "node": ">=14.16.0",
17
- "yarn": ">=1.22.18"
17
+ "yarn": ">=1.22.19"
18
18
  },
19
19
  "scripts": {
20
20
  "clean": "rimraf ./dist ./schemas",
@@ -46,7 +46,7 @@
46
46
  "publisher": "SAPSE",
47
47
  "license": "SEE LICENSE IN LICENSE",
48
48
  "dependencies": {
49
- "@sap-ux/fe-fpm-writer": "0.6.1"
49
+ "@sap-ux/fe-fpm-writer": "0.11.0"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@sap-ux/annotation-converter": "0.5.7",