@sap/ux-specification 1.124.33 → 1.124.35

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 (239) hide show
  1. package/CHANGELOG.md +347 -256
  2. package/dist/documentation/v2/v2-AnalyticalListPage.html +2 -2
  3. package/dist/documentation/v2/v2-ApplicationV2.html +2 -2
  4. package/dist/documentation/v2/v2-ListReport.html +2 -2
  5. package/dist/documentation/v2/v2-ListReportNew.html +2 -2
  6. package/dist/documentation/v2/v2-ObjectPage.html +2 -2
  7. package/dist/documentation/v2/v2-OverviewPage.html +2 -2
  8. package/dist/documentation/v4/v4-ApplicationV4.html +2 -2
  9. package/dist/documentation/v4/v4-BuildingBlocks.html +2 -2
  10. package/dist/documentation/v4/v4-FreestylePage.html +2 -2
  11. package/dist/documentation/v4/v4-ListReport.html +2 -2
  12. package/dist/documentation/v4/v4-ObjectPage.html +2 -2
  13. package/dist/index-min.js +258 -258
  14. package/dist/index-min.js.map +4 -4
  15. package/dist/schemas/v2/AnalyticalListPageConfig.json +3 -3
  16. package/dist/schemas/v2/ListReportConfig.json +5 -5
  17. package/dist/schemas/v2/ListReportNewConfig.json +1 -1
  18. package/dist/schemas/v2/ObjectPageConfig.json +5 -5
  19. package/dist/schemas/v4/ApplicationV4.json +1 -1
  20. package/dist/schemas/v4/BuildingBlocksConfig.json +78 -18
  21. package/dist/schemas/v4/ListReportConfig.json +24 -6
  22. package/dist/schemas/v4/ObjectPageConfig.json +33 -9
  23. package/dist/specification/package.json +13 -11
  24. package/dist/specification/scripts/extractDocu.js +18 -1
  25. package/dist/specification/scripts/extractDocu.js.map +1 -1
  26. package/dist/specification/scripts/generate-validity-report.d.ts +15 -0
  27. package/dist/specification/scripts/generate-validity-report.d.ts.map +1 -0
  28. package/dist/specification/scripts/generate-validity-report.js +367 -0
  29. package/dist/specification/scripts/generate-validity-report.js.map +1 -0
  30. package/dist/specification/scripts/macros/corrections.d.ts +40 -0
  31. package/dist/specification/scripts/macros/corrections.d.ts.map +1 -1
  32. package/dist/specification/scripts/macros/corrections.js +98 -7
  33. package/dist/specification/scripts/macros/corrections.js.map +1 -1
  34. package/dist/specification/scripts/macros/schema.d.ts.map +1 -1
  35. package/dist/specification/scripts/macros/schema.js +11 -2
  36. package/dist/specification/scripts/macros/schema.js.map +1 -1
  37. package/dist/specification/scripts/macros/types.d.ts +2 -0
  38. package/dist/specification/scripts/macros/types.d.ts.map +1 -1
  39. package/dist/specification/src/api.js +1 -1
  40. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts +501 -0
  41. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts.map +1 -0
  42. package/dist/specification/src/sync/common/decoration/decorator-paths.js +497 -0
  43. package/dist/specification/src/sync/common/decoration/decorator-paths.js.map +1 -0
  44. package/dist/specification/src/sync/common/decoration/decorators.d.ts +149 -23
  45. package/dist/specification/src/sync/common/decoration/decorators.d.ts.map +1 -1
  46. package/dist/specification/src/sync/common/decoration/decorators.js +369 -74
  47. package/dist/specification/src/sync/common/decoration/decorators.js.map +1 -1
  48. package/dist/specification/src/sync/common/decoration/index.d.ts +1 -0
  49. package/dist/specification/src/sync/common/decoration/index.d.ts.map +1 -1
  50. package/dist/specification/src/sync/common/decoration/index.js +1 -0
  51. package/dist/specification/src/sync/common/decoration/index.js.map +1 -1
  52. package/dist/specification/src/sync/common/dist_tag.json +8 -3
  53. package/dist/specification/src/sync/common/generate/utils.d.ts +2 -1
  54. package/dist/specification/src/sync/common/generate/utils.d.ts.map +1 -1
  55. package/dist/specification/src/sync/common/generate/utils.js +5 -1
  56. package/dist/specification/src/sync/common/generate/utils.js.map +1 -1
  57. package/dist/specification/src/sync/common/i18n.json +2 -1
  58. package/dist/specification/src/sync/common/utils.d.ts +35 -7
  59. package/dist/specification/src/sync/common/utils.d.ts.map +1 -1
  60. package/dist/specification/src/sync/common/utils.js +206 -21
  61. package/dist/specification/src/sync/common/utils.js.map +1 -1
  62. package/dist/specification/src/sync/v2/export/exportPageGeneric.d.ts.map +1 -1
  63. package/dist/specification/src/sync/v2/export/exportPageGeneric.js +3 -13
  64. package/dist/specification/src/sync/v2/export/exportPageGeneric.js.map +1 -1
  65. package/dist/specification/src/sync/v2/generate/analyticalListReport.d.ts.map +1 -1
  66. package/dist/specification/src/sync/v2/generate/analyticalListReport.js +48 -0
  67. package/dist/specification/src/sync/v2/generate/analyticalListReport.js.map +1 -1
  68. package/dist/specification/src/sync/v2/generate/listReport.d.ts.map +1 -1
  69. package/dist/specification/src/sync/v2/generate/listReport.js +3 -1
  70. package/dist/specification/src/sync/v2/generate/listReport.js.map +1 -1
  71. package/dist/specification/src/sync/v2/generate/objectPage.d.ts.map +1 -1
  72. package/dist/specification/src/sync/v2/generate/objectPage.js +2 -0
  73. package/dist/specification/src/sync/v2/generate/objectPage.js.map +1 -1
  74. package/dist/specification/src/sync/v2/generate/overviewPage.d.ts +1 -9
  75. package/dist/specification/src/sync/v2/generate/overviewPage.d.ts.map +1 -1
  76. package/dist/specification/src/sync/v2/generate/overviewPage.js +30 -1
  77. package/dist/specification/src/sync/v2/generate/overviewPage.js.map +1 -1
  78. package/dist/specification/src/sync/v2/generate/schemaAdaptation.d.ts.map +1 -1
  79. package/dist/specification/src/sync/v2/generate/schemaAdaptation.js +28 -1
  80. package/dist/specification/src/sync/v2/generate/schemaAdaptation.js.map +1 -1
  81. package/dist/specification/src/sync/v2/import/app/appProvider.d.ts.map +1 -1
  82. package/dist/specification/src/sync/v2/import/app/appProvider.js +2 -0
  83. package/dist/specification/src/sync/v2/import/app/appProvider.js.map +1 -1
  84. package/dist/specification/src/sync/v2/import/importPage.d.ts.map +1 -1
  85. package/dist/specification/src/sync/v2/import/importPage.js +5 -6
  86. package/dist/specification/src/sync/v2/import/importPage.js.map +1 -1
  87. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts +2 -1
  88. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts.map +1 -1
  89. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js +5 -0
  90. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js.map +1 -1
  91. package/dist/specification/src/sync/v2/import/pages/listReport.d.ts +2 -1
  92. package/dist/specification/src/sync/v2/import/pages/listReport.d.ts.map +1 -1
  93. package/dist/specification/src/sync/v2/import/pages/listReport.js +5 -0
  94. package/dist/specification/src/sync/v2/import/pages/listReport.js.map +1 -1
  95. package/dist/specification/src/sync/v2/import/pages/objectPage.d.ts.map +1 -1
  96. package/dist/specification/src/sync/v2/import/pages/objectPage.js +2 -1
  97. package/dist/specification/src/sync/v2/import/pages/objectPage.js.map +1 -1
  98. package/dist/specification/src/sync/v2/import/utils.d.ts +28 -1
  99. package/dist/specification/src/sync/v2/import/utils.d.ts.map +1 -1
  100. package/dist/specification/src/sync/v2/import/utils.js +37 -0
  101. package/dist/specification/src/sync/v2/import/utils.js.map +1 -1
  102. package/dist/specification/src/sync/v2/utils.d.ts +12 -2
  103. package/dist/specification/src/sync/v2/utils.d.ts.map +1 -1
  104. package/dist/specification/src/sync/v2/utils.js +19 -2
  105. package/dist/specification/src/sync/v2/utils.js.map +1 -1
  106. package/dist/specification/src/sync/v4/application.d.ts +20 -2
  107. package/dist/specification/src/sync/v4/application.d.ts.map +1 -1
  108. package/dist/specification/src/sync/v4/application.js +27 -2
  109. package/dist/specification/src/sync/v4/application.js.map +1 -1
  110. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts +2 -1
  111. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts.map +1 -1
  112. package/dist/specification/src/sync/v4/export/controls/FilterBar.js +2 -1
  113. package/dist/specification/src/sync/v4/export/controls/FilterBar.js.map +1 -1
  114. package/dist/specification/src/sync/v4/export/controls/Header.d.ts +4 -3
  115. package/dist/specification/src/sync/v4/export/controls/Header.d.ts.map +1 -1
  116. package/dist/specification/src/sync/v4/export/controls/Header.js +7 -3
  117. package/dist/specification/src/sync/v4/export/controls/Header.js.map +1 -1
  118. package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts +2 -1
  119. package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts.map +1 -1
  120. package/dist/specification/src/sync/v4/export/controls/HeaderAction.js +7 -0
  121. package/dist/specification/src/sync/v4/export/controls/HeaderAction.js.map +1 -1
  122. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts +2 -1
  123. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts.map +1 -1
  124. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js +2 -1
  125. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js.map +1 -1
  126. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts +1 -1
  127. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts.map +1 -1
  128. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js +0 -13
  129. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js.map +1 -1
  130. package/dist/specification/src/sync/v4/export/controls/Table.d.ts +21 -8
  131. package/dist/specification/src/sync/v4/export/controls/Table.d.ts.map +1 -1
  132. package/dist/specification/src/sync/v4/export/controls/Table.js +38 -41
  133. package/dist/specification/src/sync/v4/export/controls/Table.js.map +1 -1
  134. package/dist/specification/src/sync/v4/export/controls/TableColumn.d.ts.map +1 -1
  135. package/dist/specification/src/sync/v4/export/controls/TableColumn.js +2 -2
  136. package/dist/specification/src/sync/v4/export/controls/TableColumn.js.map +1 -1
  137. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts +2 -1
  138. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts.map +1 -1
  139. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js +2 -1
  140. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js.map +1 -1
  141. package/dist/specification/src/sync/v4/export/export.d.ts.map +1 -1
  142. package/dist/specification/src/sync/v4/export/export.js +36 -6
  143. package/dist/specification/src/sync/v4/export/export.js.map +1 -1
  144. package/dist/specification/src/sync/v4/export/pages/ListReport.js +1 -1
  145. package/dist/specification/src/sync/v4/export/pages/ListReport.js.map +1 -1
  146. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.d.ts +3 -3
  147. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.d.ts.map +1 -1
  148. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js +11 -3
  149. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js.map +1 -1
  150. package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.d.ts.map +1 -1
  151. package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.js +25 -3
  152. package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.js.map +1 -1
  153. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.d.ts.map +1 -1
  154. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js +11 -2
  155. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js.map +1 -1
  156. package/dist/specification/src/sync/v4/generate/index.d.ts +1 -1
  157. package/dist/specification/src/sync/v4/generate/index.d.ts.map +1 -1
  158. package/dist/specification/src/sync/v4/generate/index.js +1 -1
  159. package/dist/specification/src/sync/v4/generate/index.js.map +1 -1
  160. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts +73 -0
  161. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts.map +1 -0
  162. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js +336 -0
  163. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js.map +1 -0
  164. package/dist/specification/src/sync/v4/generate/{listReport.d.ts → list-report/listReport.d.ts} +21 -14
  165. package/dist/specification/src/sync/v4/generate/list-report/listReport.d.ts.map +1 -0
  166. package/dist/specification/src/sync/v4/generate/{listReport.js → list-report/listReport.js} +143 -229
  167. package/dist/specification/src/sync/v4/generate/list-report/listReport.js.map +1 -0
  168. package/dist/specification/src/sync/v4/generate/objectPage.d.ts.map +1 -1
  169. package/dist/specification/src/sync/v4/generate/objectPage.js +141 -43
  170. package/dist/specification/src/sync/v4/generate/objectPage.js.map +1 -1
  171. package/dist/specification/src/sync/v4/import/pages/listReport.d.ts.map +1 -1
  172. package/dist/specification/src/sync/v4/import/pages/listReport.js +2 -1
  173. package/dist/specification/src/sync/v4/import/pages/listReport.js.map +1 -1
  174. package/dist/specification/src/sync/v4/sync-rules/App.d.ts +9 -7
  175. package/dist/specification/src/sync/v4/sync-rules/App.d.ts.map +1 -1
  176. package/dist/specification/src/sync/v4/sync-rules/App.js +4 -8
  177. package/dist/specification/src/sync/v4/sync-rules/App.js.map +1 -1
  178. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts +2 -9
  179. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts.map +1 -1
  180. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js +2 -11
  181. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js.map +1 -1
  182. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts +177 -46
  183. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts.map +1 -1
  184. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js +498 -152
  185. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js.map +1 -1
  186. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts +17 -22
  187. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts.map +1 -1
  188. package/dist/specification/src/sync/v4/sync-rules/Page.js +15 -22
  189. package/dist/specification/src/sync/v4/sync-rules/Page.js.map +1 -1
  190. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.d.ts +1 -0
  191. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.d.ts.map +1 -1
  192. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.js +17 -9
  193. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.js.map +1 -1
  194. package/dist/specification/src/sync/v4/sync-rules/index.d.ts +5 -0
  195. package/dist/specification/src/sync/v4/sync-rules/index.d.ts.map +1 -0
  196. package/dist/specification/src/sync/v4/sync-rules/index.js +21 -0
  197. package/dist/specification/src/sync/v4/sync-rules/index.js.map +1 -0
  198. package/dist/specification/src/sync/v4/sync-rules/utils.d.ts.map +1 -1
  199. package/dist/specification/src/sync/v4/sync-rules/utils.js +4 -0
  200. package/dist/specification/src/sync/v4/sync-rules/utils.js.map +1 -1
  201. package/dist/specification/src/sync/v4/utils/index.d.ts +2 -0
  202. package/dist/specification/src/sync/v4/utils/index.d.ts.map +1 -0
  203. package/dist/specification/src/sync/v4/utils/index.js +18 -0
  204. package/dist/specification/src/sync/v4/utils/index.js.map +1 -0
  205. package/dist/specification/src/sync/v4/utils/utils.d.ts +9 -1
  206. package/dist/specification/src/sync/v4/utils/utils.d.ts.map +1 -1
  207. package/dist/specification/src/sync/v4/utils/utils.js +18 -3
  208. package/dist/specification/src/sync/v4/utils/utils.js.map +1 -1
  209. package/dist/specification/test/test-projects/v2sttaProdMan2/webapp/manifest.json +550 -0
  210. package/dist/specification/test/test-projects/v4new/webapp/manifest.json +147 -0
  211. package/dist/specification/test/test-utils/utils.d.ts +71 -0
  212. package/dist/specification/test/test-utils/utils.d.ts.map +1 -0
  213. package/dist/specification/test/test-utils/utils.js +400 -0
  214. package/dist/specification/test/test-utils/utils.js.map +1 -0
  215. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts +131 -0
  216. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts.map +1 -0
  217. package/dist/specification/test/unit/decorators/validity-test-utils.js +661 -0
  218. package/dist/specification/test/unit/decorators/validity-test-utils.js.map +1 -0
  219. package/dist/types/src/apiTypes.d.ts +2 -3
  220. package/dist/types/src/apiTypes.d.ts.map +1 -1
  221. package/dist/types/src/apiTypes.js.map +1 -1
  222. package/dist/types/src/common/types.d.ts +132 -13
  223. package/dist/types/src/common/types.d.ts.map +1 -1
  224. package/dist/types/src/common/types.js +10 -1
  225. package/dist/types/src/common/types.js.map +1 -1
  226. package/dist/types/src/v2/controls/ObjectPageTable.d.ts +1 -1
  227. package/dist/types/src/v2/controls/Table.d.ts +1 -1
  228. package/dist/types/src/v4/controls/ObjectPageHeader.d.ts +1 -1
  229. package/dist/types/src/v4/controls/ObjectPageTable.d.ts +1 -1
  230. package/dist/types/src/v4/controls/ObjectPageTable.d.ts.map +1 -1
  231. package/dist/types/src/v4/controls/Table.d.ts +3 -3
  232. package/dist/types/src/v4/controls/Table.d.ts.map +1 -1
  233. package/package.json +14 -12
  234. package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts +0 -107
  235. package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts.map +0 -1
  236. package/dist/specification/src/sync/v4/generate/ListReportUtils.js +0 -374
  237. package/dist/specification/src/sync/v4/generate/ListReportUtils.js.map +0 -1
  238. package/dist/specification/src/sync/v4/generate/listReport.d.ts.map +0 -1
  239. package/dist/specification/src/sync/v4/generate/listReport.js.map +0 -1
@@ -0,0 +1,501 @@
1
+ /**
2
+ * Type-safe path builders and condition helpers for decorator conditions.
3
+ *
4
+ * This module provides:
5
+ *
6
+ * ## Context Sources
7
+ * - **`app`**: App-level configuration (auto-injected from `app.config`)
8
+ * - **`page`**: Page-level configuration (auto-injected from `page.config`)
9
+ * - **`custom`**: Custom context (provided via `init()`)
10
+ *
11
+ * ## Utilities
12
+ * - **Path builders**: Type-safe property access for `app`, `page`, and `custom` contexts
13
+ * - **Condition helpers**: `when()`, `not()`, `and()`, `or()` for building conditions
14
+ * - **Message helper**: `msg()` for i18n-based messages
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { page, custom, when, not, and, or, msg } from './decorator-paths';
19
+ *
20
+ * class MyTable extends Decorator {
21
+ * // Truthy check - hide when value is falsy
22
+ * @hide(page.isALP)
23
+ * alpOnlyField: string;
24
+ *
25
+ * // Equality check with when() - hide when type IS GridTable
26
+ * @hide(when(page.type, 'GridTable'))
27
+ * gridField: string;
28
+ *
29
+ * // Negation with not() - hide when type is NOT TreeTable
30
+ * @hide(not(page.type, 'TreeTable'))
31
+ * treeOnlyField: string;
32
+ *
33
+ * // AND conditions
34
+ * @hide(and(page.isALP, when(page.type, 'GridTable')))
35
+ * alpGridField: string;
36
+ *
37
+ * // OR conditions
38
+ * @hide(or(when(page.actionType, 'Bound'), when(page.actionType, 'Custom')))
39
+ * actionField: string;
40
+ *
41
+ * // Message with i18n
42
+ * @message(page.betaFeature, msg('BETA_WARNING', { feature: 'table' }))
43
+ * betaField: string;
44
+ *
45
+ * // Always hide
46
+ * @hide(true)
47
+ * internalField: string;
48
+ * }
49
+ * ```
50
+ */
51
+ import type { Manifest, v4, AndConditionItem, OrConditionItem, AndConditionGroup, OrConditionGroup } from '@sap/ux-specification-types';
52
+ /**
53
+ * App context (sourced from app.config).
54
+ * This context is auto-injected and available via `app.*` paths.
55
+ */
56
+ export type AppContext = {
57
+ /** The application manifest */
58
+ manifest: Manifest;
59
+ };
60
+ /**
61
+ * Page context (sourced from page.config).
62
+ * This context is auto-injected and available via `page.*` paths.
63
+ *
64
+ * These properties are determined by the Page class and its configuration.
65
+ * Extend this type when new config properties are added to Page.
66
+ */
67
+ export type PageContext = {};
68
+ /**
69
+ * Settings for the Table Class context, taken from manifest.
70
+ *
71
+ * This context is provided via `init()` when applying table decorators.
72
+ */
73
+ export type LRTableContext = {
74
+ type: v4.TableTypeV4;
75
+ popinLayout?: string;
76
+ };
77
+ /**
78
+ * Symbol used to store the path string within PathNode objects.
79
+ * This allows the decorator to extract the path at runtime.
80
+ *
81
+ * Using Symbol.for() creates a global symbol that persists across module loads,
82
+ * ensuring isPathNode() works correctly even when the module is loaded multiple times.
83
+ */
84
+ export declare const PATH_SYMBOL: unique symbol;
85
+ /**
86
+ * Represents a node in the path builder tree.
87
+ * Contains the accumulated path string accessible via PATH_SYMBOL.
88
+ *
89
+ * @template P - The string literal type of the path
90
+ */
91
+ export type PathNode<P extends string = string> = {
92
+ readonly [PATH_SYMBOL]: P;
93
+ };
94
+ /**
95
+ * Recursive type that builds typed property accessors for a given object shape.
96
+ * Each property returns either:
97
+ * - Another PathBuilder (for nested objects) combined with a PathNode
98
+ * - A PathNode (for leaf/primitive values)
99
+ *
100
+ * @template T - The shape of the object to create paths for
101
+ * @template Prefix - The accumulated path prefix (e.g., 'page.')
102
+ */
103
+ type PathBuilder<T, Prefix extends string> = {
104
+ readonly [K in keyof T & string]: NonNullable<T[K]> extends object ? NonNullable<T[K]> extends readonly unknown[] ? PathNode<`${Prefix}${K}`> : PathBuilder<NonNullable<T[K]>, `${Prefix}${K}.`> & PathNode<`${Prefix}${K}`> : PathNode<`${Prefix}${K}`>;
105
+ };
106
+ /**
107
+ * Extracts the path string from a PathNode.
108
+ *
109
+ * @template P - The string literal type of the path
110
+ * @param node - The PathNode to extract the path from
111
+ * @returns The path string
112
+ * @example
113
+ * ```typescript
114
+ * getPath(page.isALP) // Returns: 'page.isALP'
115
+ * getPath(app.manifest) // Returns: 'app.manifest'
116
+ * ```
117
+ */
118
+ export declare function getPath<P extends string>(node: PathNode<P>): P;
119
+ /**
120
+ * Type guard to check if a value is a PathNode.
121
+ *
122
+ * @param value - The value to check
123
+ * @returns True if the value is a PathNode
124
+ */
125
+ export declare function isPathNode(value: unknown): value is PathNode;
126
+ /**
127
+ * Path builder for app.config properties.
128
+ *
129
+ * This context is **auto-injected** from `app.config` - you do not need to
130
+ * provide it in the customContext parameter of `init()`.
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * // Access manifest properties
135
+ * @hide(when(app.manifest['sap.app'].id, 'some-app-id'))
136
+ * ```
137
+ */
138
+ export declare const app: PathBuilder<AppContext, `${string}.`> & PathNode<string>;
139
+ /**
140
+ * Path builder for page.config properties.
141
+ *
142
+ * This context is **auto-injected** from `page.config` - you do not need to
143
+ * provide it in the customContext parameter of `init()`.
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * // Simple truthy check
148
+ * @hide(page.isALP)
149
+ *
150
+ * // Equality check with when()
151
+ * @hide(when(page.isALP, true))
152
+ * @hide(when(page.visualization, 'Chart'))
153
+ *
154
+ * // Nested property
155
+ * @hide(when(page.settings.enabled, false))
156
+ * ```
157
+ */
158
+ export declare const page: PathBuilder<PageContext, `${string}.`> & PathNode<string>;
159
+ /**
160
+ * Path builder for custom context properties.
161
+ *
162
+ * This context **must be provided** in the customContext parameter of `init()`.
163
+ * Use this for runtime-specific conditions like table state, section state, etc.
164
+ *
165
+ * **Note**: For table-specific decorators, prefer using `tableContext` which provides
166
+ * full type safety for table properties.
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * // In decorator
171
+ * @hide(when(custom.table.type, 'ResponsiveTable'))
172
+ * @hide(when(custom.table.views, (views) => views.length > 0))
173
+ *
174
+ * // In init
175
+ * decorator.init({
176
+ * table: { type: 'GridTable', views: [] }
177
+ * });
178
+ * ```
179
+ */
180
+ export declare const custom: PathBuilder<Record<string, unknown>, `${string}.`> & PathNode<string>;
181
+ /**
182
+ * Type-safe path builder for table decorator context.
183
+ *
184
+ * This context **must be provided** in the customContext parameter of `init()`.
185
+ * Use this for table-specific conditions in List Report table decorators.
186
+ *
187
+ * Properties are accessed directly without nesting (e.g., `tableContext.type` not `tableContext.table.type`).
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * // In decorator - with full type safety
192
+ * @hide(when(tableContext.type, 'AnalyticalTable'))
193
+ * @hide(not(tableContext.type, 'TreeTable'))
194
+ * @hide(when(tableContext.creationMode, (cm) => cm?.name === 'CreationDialog'))
195
+ *
196
+ * // In init - provide flat context object
197
+ * decorator.init({
198
+ * type: 'GridTable',
199
+ * creationMode: { name: 'NewPage' },
200
+ * analyticalConfiguration: undefined,
201
+ * popinLayout: undefined
202
+ * });
203
+ * ```
204
+ */
205
+ export declare const tableContext: PathBuilder<LRTableContext, `${string}.`> & PathNode<string>;
206
+ /**
207
+ * Symbol used to identify WhenCondition objects.
208
+ */
209
+ export declare const WHEN_SYMBOL: unique symbol;
210
+ /**
211
+ * A condition function that receives the resolved value and returns a boolean.
212
+ */
213
+ export type ConditionFunction = (value: unknown) => boolean;
214
+ /**
215
+ * Represents a condition with a path and expected value or function.
216
+ * Created by the `when()` helper function.
217
+ */
218
+ export interface WhenCondition {
219
+ readonly [WHEN_SYMBOL]: true;
220
+ readonly path: PathNode;
221
+ readonly expected: unknown | ConditionFunction;
222
+ }
223
+ /**
224
+ * Type guard to check if a value is a WhenCondition.
225
+ *
226
+ * @param value - The value to check
227
+ * @returns True if value is a WhenCondition
228
+ */
229
+ export declare function isWhenCondition(value: unknown): value is WhenCondition;
230
+ /**
231
+ * Creates a condition that checks if a path's value matches an expected value or function.
232
+ *
233
+ * @param path - The PathNode to check
234
+ * @param expected - The expected value or a function that receives the value and returns boolean
235
+ * @returns A WhenCondition object
236
+ * @example
237
+ * ```typescript
238
+ * // Equality check
239
+ * @hide(when(page.type, 'GridTable'))
240
+ *
241
+ * // Custom function (e.g., negation)
242
+ * @hide(when(page.type, (type) => type !== 'GridTable'))
243
+ *
244
+ * // Check array length
245
+ * @hide(when(custom.table.views, (views) => views?.length === 0))
246
+ *
247
+ * // Numeric comparison
248
+ * @hide(when(page.count, (count) => count > 10))
249
+ * ```
250
+ */
251
+ export declare function when(path: PathNode, expected: unknown | ConditionFunction): WhenCondition;
252
+ /**
253
+ * Symbol used to identify NotCondition objects.
254
+ */
255
+ export declare const NOT_SYMBOL: unique symbol;
256
+ /**
257
+ * Represents a negated condition with a path and optional expected value or function.
258
+ * Created by the `not()` helper function.
259
+ *
260
+ * The condition is evaluated and then inverted:
261
+ * - `not(path)` - true when value is falsy
262
+ * - `not(path, value)` - true when value !== expected
263
+ * - `not(path, fn)` - true when fn(value) returns false
264
+ */
265
+ export interface NotCondition {
266
+ readonly [NOT_SYMBOL]: true;
267
+ readonly path: PathNode;
268
+ readonly expected?: unknown | ConditionFunction;
269
+ }
270
+ /**
271
+ * Type guard to check if a value is a NotCondition.
272
+ *
273
+ * @param value - The value to check
274
+ * @returns True if value is a NotCondition
275
+ */
276
+ export declare function isNotCondition(value: unknown): value is NotCondition;
277
+ /**
278
+ * Creates a negated condition that checks if a path's value does not match an expected value or function.
279
+ * This is the opposite of `when()`. While `when(path, value)` passes when value === expected,
280
+ * `not(path, value)` passes when value !== expected.
281
+ *
282
+ * Can also invert a WhenCondition created by `when()` or `exists()`.
283
+ *
284
+ * @param pathOrCondition - The PathNode to check or a WhenCondition to invert
285
+ * @param expected - Optional: The expected value or a function that receives the value and returns boolean
286
+ * @returns A NotCondition object
287
+ * @example
288
+ * ```typescript
289
+ * // Falsy check - hide when value is falsy
290
+ * @hide(not(page.enabled))
291
+ *
292
+ * // Inequality check - hide when type is NOT TreeTable
293
+ * @hide(not(page.type, 'TreeTable'))
294
+ *
295
+ * // Custom function negation - hide when function returns false
296
+ * @hide(not(custom.settings, (s) => s?.enabled === true))
297
+ *
298
+ * // Invert exists() - hide when value does NOT exist
299
+ * @hide(not(exists(tableContext.creationMode)))
300
+ *
301
+ * // Combined with and() - hide when BOTH conditions are met
302
+ * @hide(and(not(page.type, 'TreeTable'), page.isEnabled))
303
+ * ```
304
+ */
305
+ export declare function not(pathOrCondition: PathNode | WhenCondition, expected?: unknown | ConditionFunction): NotCondition;
306
+ /**
307
+ * Creates a condition that checks if a path's value exists (is not undefined).
308
+ * This is a semantic shorthand for `when(path, (value) => value !== undefined)`.
309
+ *
310
+ * @param path - The PathNode to check for existence
311
+ * @returns A WhenCondition that checks for defined value
312
+ * @example
313
+ * ```typescript
314
+ * // Check if property exists - show message only when value is set
315
+ * @message(
316
+ * and(
317
+ * not(tableContext.type, 'AnalyticalTable'),
318
+ * exists(tableContext.analyticalConfiguration.aggregationOnLeafLevel)
319
+ * ),
320
+ * msg('PROPERTY_NOT_ALLOWED')
321
+ * )
322
+ *
323
+ * // Can be negated with not() - though typically just use truthy check
324
+ * @hide(not(exists(tableContext.creationMode)))
325
+ * ```
326
+ */
327
+ export declare function exists(path: PathNode): WhenCondition;
328
+ /**
329
+ * Symbol used to identify MessageConfig objects.
330
+ */
331
+ export declare const MSG_SYMBOL: unique symbol;
332
+ /**
333
+ * Parameter value that can be either a static value or a PathNode for dynamic resolution.
334
+ */
335
+ export type MessageParamValue = unknown | PathNode;
336
+ /**
337
+ * Configuration for an i18n-based message.
338
+ * Created by the `msg()` helper function.
339
+ */
340
+ export interface MessageConfig {
341
+ readonly [MSG_SYMBOL]: true;
342
+ /** The i18n translation key */
343
+ readonly i18nKey: string;
344
+ /** Parameters to pass to the i18n translation function. Values can be static or PathNode for dynamic resolution. */
345
+ readonly params?: Record<string, MessageParamValue>;
346
+ /** Whether the message can be dismissed/deleted in the UI (default: false) */
347
+ readonly deletable: boolean;
348
+ }
349
+ /**
350
+ * Type guard to check if a value is a MessageConfig.
351
+ *
352
+ * @param value - The value to check
353
+ * @returns True if value is a MessageConfig
354
+ */
355
+ export declare function isMessageConfig(value: unknown): value is MessageConfig;
356
+ /**
357
+ * Creates an i18n message configuration for use with the `@message` decorator.
358
+ *
359
+ * @param i18nKey - The i18n translation key
360
+ * @param params - Optional parameters to pass to the translation function.
361
+ * Values can be static or PathNode references for dynamic resolution.
362
+ * @param options - Optional configuration
363
+ * @param options.deletable - Whether the message can be dismissed/deleted in the UI (default: false)
364
+ * @returns A MessageConfig object
365
+ * @example
366
+ * ```typescript
367
+ * // Simple message
368
+ * @message(page.betaFeature, msg('BETA_WARNING'))
369
+ *
370
+ * // Message with static parameters
371
+ * @message(when(page.type, 'GridTable'), msg('TABLE_WARNING', { type: 'GridTable' }))
372
+ *
373
+ * // Message with dynamic parameters (resolved from context at runtime)
374
+ * @message(condition, msg('TABLE_WARNING', { tableType: tableContext.table.type }))
375
+ *
376
+ * // Deletable message
377
+ * @message(page.deprecated, msg('DEPRECATED', { since: '1.96' }, { deletable: true }))
378
+ * ```
379
+ */
380
+ export declare function msg(i18nKey: string, params?: Record<string, MessageParamValue>, options?: {
381
+ deletable?: boolean;
382
+ }): MessageConfig;
383
+ /**
384
+ * A single condition: PathNode (truthy check), WhenCondition (value check), NotCondition (negated check), or true (always)
385
+ */
386
+ export type Condition = PathNode | WhenCondition | NotCondition | true;
387
+ /**
388
+ * Marker interface for AND condition groups.
389
+ * All conditions must be met for the overall condition to pass.
390
+ */
391
+ export interface AndCondition {
392
+ readonly __type: 'and';
393
+ readonly conditions: ConditionInput[];
394
+ }
395
+ /**
396
+ * Marker interface for OR condition groups.
397
+ * At least one condition must be met for the overall condition to pass.
398
+ */
399
+ export interface OrCondition {
400
+ readonly __type: 'or';
401
+ readonly conditions: ConditionInput[];
402
+ }
403
+ /**
404
+ * Union type for condition groups.
405
+ */
406
+ export type ConditionGroup = AndCondition | OrCondition;
407
+ /**
408
+ * All valid inputs for conditional decorators.
409
+ */
410
+ export type ConditionInput = Condition | ConditionGroup;
411
+ /**
412
+ * Creates an AND condition group where ALL conditions must be met.
413
+ *
414
+ * @param conditions - Conditions to combine (PathNode for truthy, WhenCondition for value check)
415
+ * @returns An AndCondition object for use with decorators
416
+ * @example
417
+ * ```typescript
418
+ * // Both must be truthy
419
+ * @hide(and(page.isALP, page.isMultiView))
420
+ *
421
+ * // Mixed truthy and value checks
422
+ * @hide(and(page.isALP, when(page.type, 'GridTable')))
423
+ *
424
+ * // Multiple value checks
425
+ * @hide(and(when(page.isALP, true), when(page.isMultiView, true)))
426
+ * ```
427
+ */
428
+ export declare function and(...conditions: ConditionInput[]): AndCondition;
429
+ /**
430
+ * Creates an OR condition group where AT LEAST ONE condition must be met.
431
+ *
432
+ * @param conditions - Conditions to combine (PathNode for truthy, WhenCondition for value check)
433
+ * @returns An OrCondition object for use with decorators
434
+ * @example
435
+ * ```typescript
436
+ * // Either must be truthy
437
+ * @hide(or(page.isALP, page.isOVP))
438
+ *
439
+ * // Either value must match
440
+ * @hide(or(when(page.actionType, 'Bound'), when(page.actionType, 'Custom')))
441
+ * ```
442
+ */
443
+ export declare function or(...conditions: ConditionInput[]): OrCondition;
444
+ /**
445
+ * Type guard to check if a value is an AndCondition.
446
+ *
447
+ * @param value - The value to check
448
+ * @returns True if value is an AndCondition
449
+ */
450
+ export declare function isAndCondition(value: unknown): value is AndCondition;
451
+ /**
452
+ * Type guard to check if a value is an OrCondition.
453
+ *
454
+ * @param value - The value to check
455
+ * @returns True if value is an OrCondition
456
+ */
457
+ export declare function isOrCondition(value: unknown): value is OrCondition;
458
+ /**
459
+ * Type guard to check if a value is a ConditionGroup (and or or).
460
+ *
461
+ * @param value - The value to check
462
+ * @returns True if value is a ConditionGroup
463
+ */
464
+ export declare function isConditionGroup(value: unknown): value is ConditionGroup;
465
+ /**
466
+ * Type guard to check if an AND condition item is a nested OR group.
467
+ *
468
+ * @param item - The condition item to check
469
+ * @returns True if item is an OrConditionGroup
470
+ */
471
+ export declare function isOrConditionGroup(item: AndConditionItem): item is OrConditionGroup;
472
+ /**
473
+ * Type guard to check if an OR condition item is a nested AND group.
474
+ *
475
+ * @param item - The condition item to check
476
+ * @returns True if item is an AndConditionGroup
477
+ */
478
+ export declare function isAndConditionGroup(item: OrConditionItem): item is AndConditionGroup;
479
+ /**
480
+ * The complete decorator context type used internally.
481
+ * Contains app, page and custom context.
482
+ */
483
+ export type DecoratorContextType = {
484
+ /**
485
+ * App context - auto-injected from app.config.
486
+ * Provides access to manifest and other app-level properties.
487
+ */
488
+ app?: Partial<AppContext>;
489
+ /**
490
+ * Page context - auto-injected from page.config.
491
+ * Provides access to page-level properties like isALP, visualization, etc.
492
+ */
493
+ page?: Partial<PageContext>;
494
+ /**
495
+ * Custom context - provided via init().
496
+ * Use for runtime-specific conditions like table state, section state, etc.
497
+ */
498
+ custom?: Record<string, unknown>;
499
+ };
500
+ export {};
501
+ //# sourceMappingURL=decorator-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorator-paths.d.ts","sourceRoot":"","sources":["../../../../../../src/sync/common/decoration/decorator-paths.ts"],"names":[],"mappings":"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"}