@sapui5/sap.fe.core 1.99.0 → 1.101.1

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 (289) hide show
  1. package/package.json +6 -4
  2. package/src/sap/fe/core/.library +2 -3
  3. package/src/sap/fe/core/AnnotationHelper.js +43 -92
  4. package/src/sap/fe/core/AnnotationHelper.ts +43 -107
  5. package/src/sap/fe/core/AppComponent.js +381 -399
  6. package/src/sap/fe/core/AppComponent.ts +397 -0
  7. package/src/sap/fe/core/AppStateHandler.js +131 -162
  8. package/src/sap/fe/core/AppStateHandler.ts +2 -2
  9. package/src/sap/fe/core/BaseController.js +82 -58
  10. package/src/sap/fe/core/BaseController.ts +67 -0
  11. package/src/sap/fe/core/CommonUtils.js +179 -31
  12. package/src/sap/fe/core/CommonUtils.ts +295 -125
  13. package/src/sap/fe/core/ExtensionAPI.js +279 -274
  14. package/src/sap/fe/core/ExtensionAPI.ts +242 -0
  15. package/src/sap/fe/core/PageController.js +158 -29
  16. package/src/sap/fe/core/PageController.ts +65 -37
  17. package/src/sap/fe/core/RouterProxy.js +700 -750
  18. package/src/sap/fe/core/RouterProxy.ts +47 -31
  19. package/src/sap/fe/core/Synchronization.js +21 -31
  20. package/src/sap/fe/core/TemplateComponent.js +193 -118
  21. package/src/sap/fe/core/TemplateComponent.ts +104 -109
  22. package/src/sap/fe/core/TemplateModel.js +24 -44
  23. package/src/sap/fe/core/TemplateModel.ts +3 -3
  24. package/src/sap/fe/core/TransactionHelper.js +1368 -1369
  25. package/src/sap/fe/core/TransactionHelper.ts +201 -171
  26. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +406 -0
  27. package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +362 -0
  28. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +146 -0
  29. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +129 -0
  30. package/src/sap/fe/core/actions/collaboration/Manage.js +264 -0
  31. package/src/sap/fe/core/actions/collaboration/Manage.ts +246 -0
  32. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +100 -0
  33. package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  34. package/src/sap/fe/core/actions/draft.js +324 -220
  35. package/src/sap/fe/core/actions/draft.ts +209 -133
  36. package/src/sap/fe/core/actions/messageHandling.js +79 -48
  37. package/src/sap/fe/core/actions/messageHandling.ts +113 -83
  38. package/src/sap/fe/core/actions/operations.js +37 -18
  39. package/src/sap/fe/core/actions/operations.ts +51 -20
  40. package/src/sap/fe/core/actions/sticky.js +17 -4
  41. package/src/sap/fe/core/actions/sticky.ts +21 -4
  42. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
  43. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
  44. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
  45. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
  46. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +707 -0
  47. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +628 -0
  48. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
  49. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
  50. package/src/sap/fe/core/controllerextensions/EditFlow.js +1854 -1669
  51. package/src/sap/fe/core/controllerextensions/EditFlow.ts +1792 -0
  52. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +79 -54
  53. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +60 -0
  54. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +716 -779
  55. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +785 -0
  56. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +796 -816
  57. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +810 -0
  58. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1056 -1005
  59. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +1001 -0
  60. package/src/sap/fe/core/controllerextensions/KPIManagement.js +498 -532
  61. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +13 -12
  62. package/src/sap/fe/core/controllerextensions/MassEdit.js +141 -169
  63. package/src/sap/fe/core/controllerextensions/MassEdit.ts +155 -0
  64. package/src/sap/fe/core/controllerextensions/MessageHandler.js +221 -244
  65. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +215 -0
  66. package/src/sap/fe/core/controllerextensions/PageReady.js +312 -345
  67. package/src/sap/fe/core/controllerextensions/PageReady.ts +57 -53
  68. package/src/sap/fe/core/controllerextensions/Paginator.js +188 -175
  69. package/src/sap/fe/core/controllerextensions/Paginator.ts +169 -0
  70. package/src/sap/fe/core/controllerextensions/Placeholder.js +157 -149
  71. package/src/sap/fe/core/controllerextensions/Placeholder.ts +149 -0
  72. package/src/sap/fe/core/controllerextensions/Routing.js +144 -125
  73. package/src/sap/fe/core/controllerextensions/Routing.ts +131 -0
  74. package/src/sap/fe/core/controllerextensions/RoutingListener.js +7 -6
  75. package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  76. package/src/sap/fe/core/controllerextensions/Share.js +230 -268
  77. package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  78. package/src/sap/fe/core/controllerextensions/SideEffects.js +603 -644
  79. package/src/sap/fe/core/controllerextensions/SideEffects.ts +68 -68
  80. package/src/sap/fe/core/controllerextensions/ViewState.js +774 -806
  81. package/src/sap/fe/core/controllerextensions/ViewState.ts +796 -0
  82. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
  83. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  84. package/src/sap/fe/core/controls/Any.js +28 -0
  85. package/src/sap/fe/core/controls/Any.ts +30 -0
  86. package/src/sap/fe/core/controls/CommandExecution.js +92 -68
  87. package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  88. package/src/sap/fe/core/controls/ConditionalWrapper.js +165 -79
  89. package/src/sap/fe/core/controls/ConditionalWrapper.ts +74 -0
  90. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +366 -0
  91. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +278 -0
  92. package/src/sap/fe/core/controls/CustomQuickViewPage.js +167 -125
  93. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +116 -0
  94. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +44 -5
  95. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +163 -122
  96. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +155 -0
  97. package/src/sap/fe/core/controls/FieldWrapper.js +212 -141
  98. package/src/sap/fe/core/controls/FieldWrapper.ts +104 -0
  99. package/src/sap/fe/core/controls/FileWrapper.js +313 -0
  100. package/src/sap/fe/core/controls/FileWrapper.ts +169 -0
  101. package/src/sap/fe/core/controls/FilterBar.js +197 -159
  102. package/src/sap/fe/core/controls/FilterBar.ts +148 -0
  103. package/src/sap/fe/core/controls/FormElementWrapper.js +100 -39
  104. package/src/sap/fe/core/controls/FormElementWrapper.ts +37 -0
  105. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +37 -42
  106. package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  107. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +147 -115
  108. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +102 -0
  109. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +300 -265
  110. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +252 -0
  111. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +185 -140
  112. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  113. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +335 -322
  114. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  115. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +37 -42
  116. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +75 -74
  117. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +71 -0
  118. package/src/sap/fe/core/converters/ConverterContext.js +348 -379
  119. package/src/sap/fe/core/converters/ConverterContext.ts +19 -16
  120. package/src/sap/fe/core/converters/ManifestSettings.js +13 -1
  121. package/src/sap/fe/core/converters/ManifestSettings.ts +17 -2
  122. package/src/sap/fe/core/converters/ManifestWrapper.js +354 -378
  123. package/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
  124. package/src/sap/fe/core/converters/MetaModelConverter.js +6 -4
  125. package/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
  126. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  127. package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
  128. package/src/sap/fe/core/converters/annotations/DataField.js +26 -13
  129. package/src/sap/fe/core/converters/annotations/DataField.ts +40 -17
  130. package/src/sap/fe/core/converters/controls/Common/Action.js +10 -10
  131. package/src/sap/fe/core/converters/controls/Common/Action.ts +20 -19
  132. package/src/sap/fe/core/converters/controls/Common/Chart.js +8 -8
  133. package/src/sap/fe/core/converters/controls/Common/Chart.ts +12 -11
  134. package/src/sap/fe/core/converters/controls/Common/Form.js +6 -6
  135. package/src/sap/fe/core/converters/controls/Common/Form.ts +7 -3
  136. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  137. package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -2
  138. package/src/sap/fe/core/converters/controls/Common/Table.js +326 -86
  139. package/src/sap/fe/core/converters/controls/Common/Table.ts +384 -167
  140. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +120 -55
  141. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +158 -98
  142. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +206 -223
  143. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +263 -287
  144. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
  145. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
  146. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +5 -2
  147. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +4 -1
  148. package/src/sap/fe/core/converters/helpers/Aggregation.js +115 -133
  149. package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
  150. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  151. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
  152. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  153. package/src/sap/fe/core/converters/helpers/Key.js +42 -57
  154. package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  155. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  156. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
  157. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +51 -27
  158. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +69 -43
  159. package/src/sap/fe/core/converters/templates/ListReportConverter.js +42 -25
  160. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +91 -65
  161. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +11 -9
  162. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +8 -8
  163. package/src/sap/fe/core/designtime/AppComponent.designtime.js +92 -98
  164. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  165. package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
  166. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  167. package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
  168. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
  169. package/src/sap/fe/core/formatters/TableFormatter.js +53 -2
  170. package/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
  171. package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
  172. package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
  173. package/src/sap/fe/core/fpm/Component.js +80 -55
  174. package/src/sap/fe/core/fpm/Component.ts +43 -0
  175. package/src/sap/fe/core/helpers/AppStartupHelper.js +323 -309
  176. package/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
  177. package/src/sap/fe/core/helpers/BindingExpression.js +7 -7
  178. package/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
  179. package/src/sap/fe/core/helpers/ClassSupport.js +307 -166
  180. package/src/sap/fe/core/helpers/ClassSupport.ts +348 -155
  181. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +5 -4
  182. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
  183. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  184. package/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
  185. package/src/sap/fe/core/helpers/MassEditHelper.js +735 -684
  186. package/src/sap/fe/core/helpers/MassEditHelper.ts +803 -0
  187. package/src/sap/fe/core/helpers/ModelHelper.js +53 -1
  188. package/src/sap/fe/core/helpers/ModelHelper.ts +46 -0
  189. package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
  190. package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
  191. package/src/sap/fe/core/helpers/SemanticDateOperators.js +7 -3
  192. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +7 -1
  193. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  194. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
  195. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -7
  196. package/src/sap/fe/core/helpers/StableIdHelper.ts +0 -4
  197. package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
  198. package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
  199. package/src/sap/fe/core/library.js +425 -451
  200. package/src/sap/fe/core/library.support.js +22 -33
  201. package/src/sap/fe/core/library.support.ts +23 -0
  202. package/src/sap/fe/core/library.ts +420 -0
  203. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +5 -3
  204. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -4
  205. package/src/sap/fe/core/messagebundle.properties +45 -13
  206. package/src/sap/fe/core/messagebundle_ar.properties +29 -7
  207. package/src/sap/fe/core/messagebundle_bg.properties +29 -7
  208. package/src/sap/fe/core/messagebundle_ca.properties +29 -7
  209. package/src/sap/fe/core/messagebundle_cs.properties +29 -7
  210. package/src/sap/fe/core/messagebundle_cy.properties +29 -7
  211. package/src/sap/fe/core/messagebundle_da.properties +29 -7
  212. package/src/sap/fe/core/messagebundle_de.properties +29 -7
  213. package/src/sap/fe/core/messagebundle_el.properties +29 -7
  214. package/src/sap/fe/core/messagebundle_en.properties +29 -7
  215. package/src/sap/fe/core/messagebundle_en_GB.properties +29 -7
  216. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +29 -7
  217. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +29 -7
  218. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +29 -7
  219. package/src/sap/fe/core/messagebundle_es.properties +29 -7
  220. package/src/sap/fe/core/messagebundle_es_MX.properties +29 -7
  221. package/src/sap/fe/core/messagebundle_et.properties +29 -7
  222. package/src/sap/fe/core/messagebundle_fi.properties +30 -8
  223. package/src/sap/fe/core/messagebundle_fr.properties +31 -9
  224. package/src/sap/fe/core/messagebundle_fr_CA.properties +31 -9
  225. package/src/sap/fe/core/messagebundle_hi.properties +29 -7
  226. package/src/sap/fe/core/messagebundle_hr.properties +29 -7
  227. package/src/sap/fe/core/messagebundle_hu.properties +29 -7
  228. package/src/sap/fe/core/messagebundle_id.properties +29 -7
  229. package/src/sap/fe/core/messagebundle_it.properties +29 -7
  230. package/src/sap/fe/core/messagebundle_iw.properties +29 -7
  231. package/src/sap/fe/core/messagebundle_ja.properties +28 -6
  232. package/src/sap/fe/core/messagebundle_kk.properties +29 -7
  233. package/src/sap/fe/core/messagebundle_ko.properties +29 -7
  234. package/src/sap/fe/core/messagebundle_lt.properties +29 -7
  235. package/src/sap/fe/core/messagebundle_lv.properties +30 -8
  236. package/src/sap/fe/core/messagebundle_ms.properties +29 -7
  237. package/src/sap/fe/core/messagebundle_nl.properties +29 -7
  238. package/src/sap/fe/core/messagebundle_no.properties +29 -7
  239. package/src/sap/fe/core/messagebundle_pl.properties +29 -7
  240. package/src/sap/fe/core/messagebundle_pt.properties +30 -8
  241. package/src/sap/fe/core/messagebundle_pt_PT.properties +29 -7
  242. package/src/sap/fe/core/messagebundle_ro.properties +29 -7
  243. package/src/sap/fe/core/messagebundle_ru.properties +29 -7
  244. package/src/sap/fe/core/messagebundle_sh.properties +29 -7
  245. package/src/sap/fe/core/messagebundle_sk.properties +29 -7
  246. package/src/sap/fe/core/messagebundle_sl.properties +29 -7
  247. package/src/sap/fe/core/messagebundle_sv.properties +30 -8
  248. package/src/sap/fe/core/messagebundle_th.properties +28 -6
  249. package/src/sap/fe/core/messagebundle_tr.properties +32 -10
  250. package/src/sap/fe/core/messagebundle_uk.properties +29 -7
  251. package/src/sap/fe/core/messagebundle_vi.properties +29 -7
  252. package/src/sap/fe/core/messagebundle_zh_CN.properties +29 -7
  253. package/src/sap/fe/core/messagebundle_zh_TW.properties +29 -7
  254. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +47 -73
  255. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
  256. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +158 -196
  257. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +5 -6
  258. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +70 -96
  259. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +7 -6
  260. package/src/sap/fe/core/services/NavigationServiceFactory.js +287 -342
  261. package/src/sap/fe/core/services/NavigationServiceFactory.ts +11 -14
  262. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +70 -105
  263. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +6 -3
  264. package/src/sap/fe/core/services/RoutingServiceFactory.js +796 -820
  265. package/src/sap/fe/core/services/RoutingServiceFactory.ts +62 -53
  266. package/src/sap/fe/core/services/ShellServicesFactory.js +694 -741
  267. package/src/sap/fe/core/services/ShellServicesFactory.ts +33 -33
  268. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +570 -595
  269. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +23 -4
  270. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +357 -389
  271. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +25 -29
  272. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
  273. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +7 -4
  274. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  275. package/src/sap/fe/core/support/CommonHelper.ts +1 -4
  276. package/src/sap/fe/core/support/Diagnostics.js +36 -48
  277. package/src/sap/fe/core/templating/DataModelPathHelper.js +91 -90
  278. package/src/sap/fe/core/templating/DataModelPathHelper.ts +126 -123
  279. package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
  280. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +26 -5
  281. package/src/sap/fe/core/templating/FilterHelper.js +25 -32
  282. package/src/sap/fe/core/templating/FilterHelper.ts +36 -35
  283. package/src/sap/fe/core/templating/PropertyHelper.js +16 -2
  284. package/src/sap/fe/core/templating/PropertyHelper.ts +31 -24
  285. package/src/sap/fe/core/templating/UIFormatters.js +150 -44
  286. package/src/sap/fe/core/templating/UIFormatters.ts +165 -67
  287. package/src/sap/fe/core/type/Email.js +26 -8
  288. package/src/sap/fe/core/type/Email.ts +8 -7
  289. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -75
@@ -0,0 +1,278 @@
1
+ /*!
2
+ * ${copyright}
3
+ */
4
+ import { aggregation, defineUI5Class, event, implementInterface, property } from "sap/fe/core/helpers/ClassSupport";
5
+ import SemanticDateOperators from "sap/fe/core/helpers/SemanticDateOperators";
6
+ import ManagedObjectObserver from "sap/ui/base/ManagedObjectObserver";
7
+ import Control from "sap/ui/core/Control";
8
+ import { IFormContent } from "sap/ui/core/library";
9
+ import RenderManager from "sap/ui/core/RenderManager";
10
+ import Condition, { ConditionObject } from "sap/ui/mdc/condition/Condition";
11
+ import ConditionValidated from "sap/ui/mdc/enum/ConditionValidated";
12
+ import ConditionsType from "sap/ui/mdc/field/ConditionsType";
13
+ import JSONModel from "sap/ui/model/json/JSONModel";
14
+
15
+ /**
16
+ * Type used for format options
17
+ *
18
+ * @typedef FormatOptionsType
19
+ */
20
+ type FormatOptionsType = {
21
+ operators: string[];
22
+ };
23
+
24
+ /**
25
+ * @class
26
+ * Creates an <code>sap.fe.core.controls.CustomFilterFieldContentWrapper</code> object.
27
+ * This is used in the {@link sap.ui.mdc.FilterField FilterField} as a filter content.
28
+ * @extends sap.ui.core.Control
29
+ * @private
30
+ * @alias sap.fe.core.controls.CustomFilterFieldContentWrapper
31
+ */
32
+ @defineUI5Class("sap.fe.core.controls.CustomFilterFieldContentWrapper")
33
+ export default class CustomFilterFieldContentWrapper extends Control implements IFormContent {
34
+ @implementInterface("sap.ui.core.IFormContent")
35
+ // eslint-disable-next-line camelcase
36
+ __implements__sap_ui_core_IFormContent = true;
37
+
38
+ @property({ type: "sap.ui.core.CSSSize", defaultValue: null })
39
+ width!: string;
40
+
41
+ @property({ type: "boolean", defaultValue: false })
42
+ formDoNotAdjustWidth!: boolean;
43
+
44
+ @property({ type: "object[]", defaultValue: [] })
45
+ conditions!: ConditionObject[];
46
+
47
+ @aggregation({ type: "sap.ui.core.Control", multiple: false, isDefault: true })
48
+ content!: Control;
49
+
50
+ @event()
51
+ conditionsChange!: Function;
52
+
53
+ // TODO: Consider using FieldBase as base control (instead of Control)
54
+ // TODO: If FieldBase is used, add 'change' event & corresponding handler to bubble it
55
+
56
+ private _filterModel: any;
57
+ private _conditionsObserver: any;
58
+ private static readonly FILTER_MODEL_ALIAS = "filterValues";
59
+
60
+ static render(renderManager: RenderManager, control: CustomFilterFieldContentWrapper): void {
61
+ renderManager.openStart("div", control);
62
+ renderManager.style("min-height", "1rem");
63
+ renderManager.style("width", control.width);
64
+ renderManager.openEnd();
65
+ renderManager.renderControl(control.getContent()); // render the child Control
66
+ renderManager.close("div"); // end of the complete Control
67
+ }
68
+
69
+ /**
70
+ * Maps an array of filter values to an array of conditions.
71
+ *
72
+ * @param {Array | string} filterValues Array of filter value bindings or a filter value string
73
+ * @param {string} [operator] The operator to be used (optional) - if not set, the default operator (EQ) will be used
74
+ * @private
75
+ * @returns {Array} Array of filter conditions
76
+ */
77
+ static _filterValuesToConditions(filterValues: any | any[], operator?: string): ConditionObject[] {
78
+ let formatOptions: FormatOptionsType = { operators: [] },
79
+ conditions = [];
80
+
81
+ if (operator) {
82
+ formatOptions = { operators: [operator] };
83
+ }
84
+ if (filterValues === "") {
85
+ filterValues = [];
86
+ } else if (typeof filterValues === "object" && filterValues.hasOwnProperty("operator") && filterValues.hasOwnProperty("values")) {
87
+ formatOptions = { operators: [filterValues.operator] };
88
+ filterValues = filterValues.values;
89
+ } else if (filterValues !== undefined && typeof filterValues !== "object" && typeof filterValues !== "string") {
90
+ throw new Error("FilterUtils.js#_filterValuesToConditions: Unexpected type of input parameter vValues: " + typeof filterValues);
91
+ }
92
+
93
+ const conditionsType: any = new ConditionsType(formatOptions);
94
+ const conditionValues = Array.isArray(filterValues) ? filterValues : [filterValues];
95
+
96
+ // Shortcut for operator without values and semantic date operations
97
+ if (
98
+ typeof operator === "string" &&
99
+ (conditionValues.length === 0 || SemanticDateOperators.getSemanticDateOperations().includes(operator))
100
+ ) {
101
+ conditions = [Condition.createCondition(operator, conditionValues, null, null, ConditionValidated.NotValidated)];
102
+ } else {
103
+ conditions = conditionValues
104
+ .map((conditionValue) => {
105
+ const stringValue = conditionValue?.toString(),
106
+ parsedConditions = conditionsType.parseValue(stringValue, "any");
107
+ return parsedConditions?.[0];
108
+ })
109
+ .filter((conditionValue) => conditionValue !== undefined);
110
+ }
111
+
112
+ return conditions;
113
+ }
114
+
115
+ /**
116
+ * Maps an array of conditions to a comma separated list of filter values.
117
+ *
118
+ * @param {object[]} conditions Array of filter conditions
119
+ * @param {object} formatOptions Format options that specifies a condition type
120
+ * @private
121
+ * @returns {string} Concatenated string of filter values
122
+ */
123
+ static _conditionsToFilterModelString(conditions: object[], formatOptions: FormatOptionsType): string {
124
+ const conditionsType = new ConditionsType(formatOptions);
125
+
126
+ return conditions
127
+ .map((condition) => {
128
+ return conditionsType.formatValue([condition], "any") || "";
129
+ })
130
+ .filter((stringValue) => {
131
+ return stringValue !== "";
132
+ })
133
+ .join(",");
134
+ }
135
+
136
+ /**
137
+ * Listens to filter model changes and updates wrapper property "conditions".
138
+ *
139
+ * @param {object} changeEvent Event triggered by a filter model change
140
+ * @private
141
+ */
142
+ _handleFilterModelChange(changeEvent: any): void {
143
+ const propertyPath = this.getObjectBinding("filterValues").getPath(),
144
+ values = changeEvent.getSource().getProperty(propertyPath);
145
+ this.updateConditionsByFilterValues(values, "");
146
+ }
147
+
148
+ /**
149
+ * Listens to "conditions" changes and updates the filter model.
150
+ *
151
+ * @param {object} conditions Event triggered by a "conditions" change
152
+ * @private
153
+ */
154
+ _handleConditionsChange(conditions: any): void {
155
+ this.updateFilterModelByConditions(conditions);
156
+ }
157
+
158
+ /**
159
+ * Initialize CustomFilterFieldContentWrapper control and register observer.
160
+ */
161
+ init(): void {
162
+ super.init();
163
+ this._conditionsObserver = new ManagedObjectObserver(this._observeChanges.bind(this));
164
+ this._conditionsObserver.observe(this, {
165
+ properties: ["conditions"]
166
+ });
167
+ }
168
+
169
+ /**
170
+ * Listens to property changes.
171
+ *
172
+ * @param {any} changes Property changes
173
+ * @private
174
+ */
175
+ _observeChanges(changes: any): void {
176
+ if (changes.name === "conditions") {
177
+ this._handleConditionsChange(changes.current);
178
+ }
179
+ }
180
+
181
+ /**
182
+ * Registers the internal filter model (alias 'filterValues').
183
+ *
184
+ * @private
185
+ */
186
+ _registerFilterModel(): void {
187
+ if (!this._filterModel) {
188
+ this._filterModel = new JSONModel();
189
+ this._filterModel.attachPropertyChange(this._handleFilterModelChange, this);
190
+ this.setModel(this._filterModel, CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS);
191
+ }
192
+ }
193
+
194
+ /**
195
+ * Gets the content of this wrapper control.
196
+ *
197
+ * @returns {sap.ui.core.Control} The wrapper content
198
+ * @private
199
+ */
200
+ getContent(): Control {
201
+ this._registerFilterModel();
202
+ return this.getAggregation("content") as Control;
203
+ }
204
+
205
+ /**
206
+ * Gets the value for control property 'conditions'.
207
+ *
208
+ * @returns {object[]} Array of filter conditions
209
+ * @private
210
+ */
211
+ getConditions(): object[] {
212
+ return this.getProperty("conditions");
213
+ }
214
+
215
+ /**
216
+ * Sets the value for control property 'conditions'.
217
+ *
218
+ * @param {Array} conditions Array of filter conditions
219
+ * @private
220
+ */
221
+ setConditions(conditions: object[]): void {
222
+ this.setProperty("conditions", conditions);
223
+ }
224
+
225
+ /**
226
+ * Gets the filter model alias 'filterValues'.
227
+ *
228
+ * @returns {string} The filter model
229
+ * @private
230
+ */
231
+ getFilterModelAlias(): string {
232
+ return CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS;
233
+ }
234
+
235
+ /**
236
+ * Updates the property "conditions" with filter values
237
+ * sent by ExtensionAPI#setFilterValues().
238
+ *
239
+ * @param {any} values The filter values
240
+ * @param {string} operator The operator name
241
+ * @private
242
+ */
243
+ updateConditionsByFilterValues(values: any, operator: string): void {
244
+ const conditions = CustomFilterFieldContentWrapper._filterValuesToConditions(values, operator);
245
+ this.setConditions(conditions);
246
+ }
247
+
248
+ /**
249
+ * Updates filter model with conditions
250
+ * sent by the {@link sap.ui.mdc.FilterField FilterField}.
251
+ *
252
+ * @param {Array} conditions Array of filter conditions
253
+ * @private
254
+ */
255
+ updateFilterModelByConditions(conditions: any[]): void {
256
+ // When the filter field is created via "Adapt Filter"
257
+ // this handler is fired before the filter model is created
258
+ // -> in general, create it, if needed!
259
+ // TODO: Consider using method Control#clone() to register filter model
260
+ this._registerFilterModel();
261
+ const operator = conditions[0]?.operator || "";
262
+ const formatOptions: FormatOptionsType = operator !== "" ? { operators: [operator] } : { operators: [] };
263
+ if (this.getBindingContext(CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS)) {
264
+ const stringValue = CustomFilterFieldContentWrapper._conditionsToFilterModelString(conditions, formatOptions);
265
+ this._filterModel.setProperty(
266
+ this.getBindingContext(CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS)?.getPath(),
267
+ stringValue
268
+ );
269
+ }
270
+ }
271
+
272
+ // TODO: Check, if implementation of _setAriaLabelledBy() is needed ?
273
+
274
+ getAccessibilityInfo(): any {
275
+ const content = this.getContent();
276
+ return content?.getAccessibilityInfo?.() || {};
277
+ }
278
+ }
@@ -1,128 +1,170 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- (c) Copyright 2009-2021 SAP SE. All rights reserved
4
-
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
5
4
  */
6
- sap.ui.define(
7
- ["sap/m/QuickViewPage", "sap/m/Button", "sap/fe/core/CommonUtils", "sap/fe/macros/DelegateUtil", "sap/fe/core/helpers/KeepAliveHelper"],
8
- function(QuickViewPage, Button, CommonUtils, DelegateUtil, KeepAliveHelper) {
9
- "use strict";
10
-
11
- return QuickViewPage.extend("sap.fe.core.controls.CustomQuickViewPage", {
12
- metadata: {
13
- defaultAggregation: "groups",
14
- aggregations: {
15
- customContent: {
16
- type: "sap.ui.core.Control",
17
- multiple: true,
18
- bindable: "bindable"
19
- },
20
- groups: { type: "sap.m.QuickViewGroup", multiple: true, singularName: "group", bindable: "bindable" }
21
- },
22
- publicMethods: []
23
- },
24
- renderer: {},
25
- onAfterRendering: function() {
26
- QuickViewPage.prototype.onAfterRendering.apply(this, arguments);
27
- },
28
- onBeforeRendering: function() {
29
- if (
30
- this.getParent() &&
31
- this.getParent().isA("sap.fe.core.controls.ConditionalWrapper") &&
32
- this.getParent().getProperty("condition") === true
33
- ) {
34
- this.setCrossAppNavCallback(
35
- function() {
36
- var sQuickViewPageTitleLinkHref = DelegateUtil.getCustomData(this, "titleLink");
37
- var oView = sap.ui.fl.Utils.getViewForControl(this);
38
- var oAppComponent = CommonUtils.getAppComponent(oView);
39
- var oShellServiceHelper = oAppComponent.getShellServices();
40
- var oShellHash = oShellServiceHelper.parseShellHash(sQuickViewPageTitleLinkHref);
41
- var oNavArgs = {
42
- target: {
43
- semanticObject: oShellHash.semanticObject,
44
- action: oShellHash.action
45
- },
46
- params: oShellHash.params
47
- };
48
- var sQuickViewPageTitleLinkIntent = oNavArgs.target.semanticObject + "-" + oNavArgs.target.action;
49
-
50
- if (
51
- sQuickViewPageTitleLinkIntent &&
52
- this.oCrossAppNavigator &&
53
- this.oCrossAppNavigator.isNavigationSupported([sQuickViewPageTitleLinkIntent])
54
- ) {
55
- if (sQuickViewPageTitleLinkIntent && sQuickViewPageTitleLinkIntent !== "") {
56
- if (typeof sQuickViewPageTitleLinkIntent === "string" && sQuickViewPageTitleLinkIntent !== "") {
57
- var sTargetHref;
58
- var oLinkControl = this.getParent();
59
- while (oLinkControl && !oLinkControl.isA("sap.ui.mdc.Link")) {
60
- oLinkControl = oLinkControl.getParent();
61
- }
62
- var _aLinks = oLinkControl.getModel("$sapuimdcLink").getProperty("/linkItems");
63
- if (_aLinks) {
64
- if (_aLinks.length > 0) {
65
- for (var i = 0; i < _aLinks.length; i++) {
66
- if (_aLinks[i].key === sQuickViewPageTitleLinkIntent) {
67
- sTargetHref = _aLinks[i].href;
68
- break;
69
- }
70
- }
71
- if (sTargetHref) {
72
- oShellHash = oShellServiceHelper.parseShellHash(sTargetHref);
73
- } else {
74
- oShellHash = oShellServiceHelper.parseShellHash(sQuickViewPageTitleLinkIntent);
75
- }
76
- }
77
- } else {
78
- oShellHash = oShellServiceHelper.parseShellHash(sQuickViewPageTitleLinkIntent);
79
- }
80
- KeepAliveHelper.storeControlRefreshStrategyForHash(oView, oShellHash);
81
- return {
82
- target: {
83
- semanticObject: oShellHash.semanticObject,
84
- action: oShellHash.action
85
- },
86
- params: oShellHash.params
87
- };
88
- }
89
- }
90
- } else {
91
- var oCurrentShellHash = oShellServiceHelper.parseShellHash(window.location.hash);
92
- KeepAliveHelper.storeControlRefreshStrategyForHash(oView, oCurrentShellHash);
93
-
94
- return {
95
- target: {
96
- semanticObject: oCurrentShellHash.semanticObject,
97
- action: oCurrentShellHash.action,
98
- appSpecificRoute: oCurrentShellHash.appSpecificRoute
99
- },
100
- params: oCurrentShellHash.params
101
- };
102
- }
103
- }.bind(this)
104
- );
105
- }
106
- QuickViewPage.prototype.onBeforeRendering.apply(this, arguments);
107
- var oPageContent = this.getPageContent();
108
- var oForm = oPageContent.form;
109
- if (oForm) {
110
- var _aContent = this.getAggregation("customContent");
111
- if (_aContent && _aContent.length > 0) {
112
- _aContent.forEach(
113
- function(_oContent) {
114
- var _oContentClone = _oContent.clone();
115
- _oContentClone.setModel(this.getModel());
116
- _oContentClone.setBindingContext(this.getBindingContext());
117
- oForm.addContent(_oContentClone);
118
- }.bind(this)
119
- );
120
- setTimeout(function() {
121
- oForm.rerender();
122
- }, 0);
123
- }
124
- }
125
- }
126
- });
127
- }
128
- );
5
+ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/KeepAliveHelper", "sap/fe/macros/DelegateUtil", "sap/m/QuickViewPage"], function (CommonUtils, ClassSupport, KeepAliveHelper, DelegateUtil, QuickViewPage) {
6
+ "use strict";
7
+
8
+ var _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2;
9
+
10
+ var defineUI5Class = ClassSupport.defineUI5Class;
11
+ var aggregation = ClassSupport.aggregation;
12
+
13
+ function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
14
+
15
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
16
+
17
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
18
+
19
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
20
+
21
+ function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
22
+
23
+ function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
24
+
25
+ var CustomQuickViewPage = (_dec = defineUI5Class("sap.fe.core.controls.CustomQuickViewPage"), _dec2 = aggregation({
26
+ type: "sap.ui.core.Control",
27
+ multiple: true
28
+ }), _dec3 = aggregation({
29
+ type: "sap.m.QuickViewGroup",
30
+ multiple: true,
31
+ singularName: "group",
32
+ isDefault: true
33
+ }), _dec(_class = (_class2 = /*#__PURE__*/function (_QuickViewPage) {
34
+ _inheritsLoose(CustomQuickViewPage, _QuickViewPage);
35
+
36
+ function CustomQuickViewPage() {
37
+ var _this;
38
+
39
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
40
+ args[_key] = arguments[_key];
41
+ }
42
+
43
+ _this = _QuickViewPage.call.apply(_QuickViewPage, [this].concat(args)) || this;
44
+
45
+ _initializerDefineProperty(_this, "customContent", _descriptor, _assertThisInitialized(_this));
46
+
47
+ _initializerDefineProperty(_this, "groups", _descriptor2, _assertThisInitialized(_this));
48
+
49
+ return _this;
50
+ }
51
+
52
+ var _proto = CustomQuickViewPage.prototype;
53
+
54
+ _proto.onBeforeRendering = function onBeforeRendering(oEvent) {
55
+ var _this2 = this;
56
+
57
+ if (this.getParent() && this.getParent().isA("sap.fe.core.controls.ConditionalWrapper") && this.getParent().getProperty("condition") === true) {
58
+ this.setCrossAppNavCallback(function () {
59
+ var sQuickViewPageTitleLinkHref = DelegateUtil.getCustomData(_this2, "titleLink");
60
+ var oView = CommonUtils.getTargetView(_this2);
61
+ var oAppComponent = CommonUtils.getAppComponent(oView);
62
+ var oShellServiceHelper = oAppComponent.getShellServices();
63
+ var oShellHash = oShellServiceHelper.parseShellHash(sQuickViewPageTitleLinkHref);
64
+ var oNavArgs = {
65
+ target: {
66
+ semanticObject: oShellHash.semanticObject,
67
+ action: oShellHash.action
68
+ },
69
+ params: oShellHash.params
70
+ };
71
+ var sQuickViewPageTitleLinkIntent = oNavArgs.target.semanticObject + "-" + oNavArgs.target.action;
72
+
73
+ if (sQuickViewPageTitleLinkIntent && _this2.oCrossAppNavigator && _this2.oCrossAppNavigator.isNavigationSupported([sQuickViewPageTitleLinkIntent])) {
74
+ if (sQuickViewPageTitleLinkIntent && sQuickViewPageTitleLinkIntent !== "") {
75
+ if (typeof sQuickViewPageTitleLinkIntent === "string" && sQuickViewPageTitleLinkIntent !== "") {
76
+ var sTargetHref;
77
+
78
+ var oLinkControl = _this2.getParent();
79
+
80
+ while (oLinkControl && !oLinkControl.isA("sap.ui.mdc.Link")) {
81
+ oLinkControl = oLinkControl.getParent();
82
+ }
83
+
84
+ var _aLinks = oLinkControl.getModel("$sapuimdcLink").getProperty("/linkItems");
85
+
86
+ if (_aLinks) {
87
+ if (_aLinks.length > 0) {
88
+ for (var i = 0; i < _aLinks.length; i++) {
89
+ if (_aLinks[i].key === sQuickViewPageTitleLinkIntent) {
90
+ sTargetHref = _aLinks[i].href;
91
+ break;
92
+ }
93
+ }
94
+
95
+ if (sTargetHref) {
96
+ oShellHash = oShellServiceHelper.parseShellHash(sTargetHref);
97
+ } else {
98
+ oShellHash = oShellServiceHelper.parseShellHash(sQuickViewPageTitleLinkIntent);
99
+ }
100
+ }
101
+ } else {
102
+ oShellHash = oShellServiceHelper.parseShellHash(sQuickViewPageTitleLinkIntent);
103
+ }
104
+
105
+ KeepAliveHelper.storeControlRefreshStrategyForHash(oView, oShellHash);
106
+ return {
107
+ target: {
108
+ semanticObject: oShellHash.semanticObject,
109
+ action: oShellHash.action
110
+ },
111
+ params: oShellHash.params
112
+ };
113
+ }
114
+ }
115
+ } else {
116
+ var oCurrentShellHash = oShellServiceHelper.parseShellHash(window.location.hash);
117
+ KeepAliveHelper.storeControlRefreshStrategyForHash(oView, oCurrentShellHash);
118
+ return {
119
+ target: {
120
+ semanticObject: oCurrentShellHash.semanticObject,
121
+ action: oCurrentShellHash.action,
122
+ appSpecificRoute: oCurrentShellHash.appSpecificRoute
123
+ },
124
+ params: oCurrentShellHash.params
125
+ };
126
+ }
127
+ });
128
+ }
129
+
130
+ _QuickViewPage.prototype.onBeforeRendering.call(this, oEvent);
131
+
132
+ var oPageContent = this.getPageContent();
133
+ var oForm = oPageContent.form;
134
+
135
+ if (oForm) {
136
+ var _aContent = this.customContent;
137
+
138
+ if (_aContent && _aContent.length > 0) {
139
+ _aContent.forEach(function (_oContent) {
140
+ var _oContentClone = _oContent.clone();
141
+
142
+ _oContentClone.setModel(_this2.getModel());
143
+
144
+ _oContentClone.setBindingContext(_this2.getBindingContext());
145
+
146
+ oForm.addContent(_oContentClone);
147
+ });
148
+
149
+ setTimeout(function () {
150
+ oForm.rerender();
151
+ }, 0);
152
+ }
153
+ }
154
+ };
155
+
156
+ return CustomQuickViewPage;
157
+ }(QuickViewPage), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "customContent", [_dec2], {
158
+ configurable: true,
159
+ enumerable: true,
160
+ writable: true,
161
+ initializer: null
162
+ }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "groups", [_dec3], {
163
+ configurable: true,
164
+ enumerable: true,
165
+ writable: true,
166
+ initializer: null
167
+ })), _class2)) || _class);
168
+ return CustomQuickViewPage;
169
+ }, false);
170
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkN1c3RvbVF1aWNrVmlld1BhZ2UudHMiXSwibmFtZXMiOlsiQ3VzdG9tUXVpY2tWaWV3UGFnZSIsImRlZmluZVVJNUNsYXNzIiwiYWdncmVnYXRpb24iLCJ0eXBlIiwibXVsdGlwbGUiLCJzaW5ndWxhck5hbWUiLCJpc0RlZmF1bHQiLCJvbkJlZm9yZVJlbmRlcmluZyIsIm9FdmVudCIsImdldFBhcmVudCIsImlzQSIsImdldFByb3BlcnR5Iiwic2V0Q3Jvc3NBcHBOYXZDYWxsYmFjayIsInNRdWlja1ZpZXdQYWdlVGl0bGVMaW5rSHJlZiIsIkRlbGVnYXRlVXRpbCIsImdldEN1c3RvbURhdGEiLCJvVmlldyIsIkNvbW1vblV0aWxzIiwiZ2V0VGFyZ2V0VmlldyIsIm9BcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJvU2hlbGxTZXJ2aWNlSGVscGVyIiwiZ2V0U2hlbGxTZXJ2aWNlcyIsIm9TaGVsbEhhc2giLCJwYXJzZVNoZWxsSGFzaCIsIm9OYXZBcmdzIiwidGFyZ2V0Iiwic2VtYW50aWNPYmplY3QiLCJhY3Rpb24iLCJwYXJhbXMiLCJzUXVpY2tWaWV3UGFnZVRpdGxlTGlua0ludGVudCIsIm9Dcm9zc0FwcE5hdmlnYXRvciIsImlzTmF2aWdhdGlvblN1cHBvcnRlZCIsInNUYXJnZXRIcmVmIiwib0xpbmtDb250cm9sIiwiX2FMaW5rcyIsImdldE1vZGVsIiwibGVuZ3RoIiwiaSIsImtleSIsImhyZWYiLCJLZWVwQWxpdmVIZWxwZXIiLCJzdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoIiwib0N1cnJlbnRTaGVsbEhhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJhcHBTcGVjaWZpY1JvdXRlIiwib1BhZ2VDb250ZW50IiwiZ2V0UGFnZUNvbnRlbnQiLCJvRm9ybSIsImZvcm0iLCJfYUNvbnRlbnQiLCJjdXN0b21Db250ZW50IiwiZm9yRWFjaCIsIl9vQ29udGVudCIsIl9vQ29udGVudENsb25lIiwiY2xvbmUiLCJzZXRNb2RlbCIsInNldEJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJhZGRDb250ZW50Iiwic2V0VGltZW91dCIsInJlcmVuZGVyIiwiUXVpY2tWaWV3UGFnZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BTU1BLG1CLFdBRExDLGNBQWMsQ0FBQywwQ0FBRCxDLFVBRWJDLFdBQVcsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUUscUJBQVI7QUFBK0JDLElBQUFBLFFBQVEsRUFBRTtBQUF6QyxHQUFELEMsVUFFWEYsV0FBVyxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRSxzQkFBUjtBQUFnQ0MsSUFBQUEsUUFBUSxFQUFFLElBQTFDO0FBQWdEQyxJQUFBQSxZQUFZLEVBQUUsT0FBOUQ7QUFBdUVDLElBQUFBLFNBQVMsRUFBRTtBQUFsRixHQUFELEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQUdaQyxpQixHQUFBLDJCQUFrQkMsTUFBbEIsRUFBK0I7QUFBQTs7QUFDOUIsVUFDQyxLQUFLQyxTQUFMLE1BQ0EsS0FBS0EsU0FBTCxHQUFpQkMsR0FBakIsQ0FBcUIseUNBQXJCLENBREEsSUFFQSxLQUFLRCxTQUFMLEdBQWlCRSxXQUFqQixDQUE2QixXQUE3QixNQUE4QyxJQUgvQyxFQUlFO0FBQ0QsYUFBS0Msc0JBQUwsQ0FBNEIsWUFBTTtBQUNqQyxjQUFNQywyQkFBMkIsR0FBSUMsWUFBWSxDQUFDQyxhQUFkLENBQW9DLE1BQXBDLEVBQTBDLFdBQTFDLENBQXBDO0FBQ0EsY0FBTUMsS0FBSyxHQUFHQyxXQUFXLENBQUNDLGFBQVosQ0FBMEIsTUFBMUIsQ0FBZDtBQUNBLGNBQU1DLGFBQWEsR0FBR0YsV0FBVyxDQUFDRyxlQUFaLENBQTRCSixLQUE1QixDQUF0QjtBQUNBLGNBQU1LLG1CQUFtQixHQUFHRixhQUFhLENBQUNHLGdCQUFkLEVBQTVCO0FBQ0EsY0FBSUMsVUFBVSxHQUFHRixtQkFBbUIsQ0FBQ0csY0FBcEIsQ0FBbUNYLDJCQUFu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LGlCQUFpQixDQUFDaEIsY0FEM0I7QUFFUEMsZ0JBQUFBLE1BQU0sRUFBRWUsaUJBQWlCLENBQUNmLE1BRm5CO0FBR1BtQixnQkFBQUEsZ0JBQWdCLEVBQUVKLGlCQUFpQixDQUFDSTtBQUg3QixlQURGO0FBTU5sQixjQUFBQSxNQUFNLEVBQUVjLGlCQUFpQixDQUFDZDtBQU5wQixhQUFQO0FBUUE7QUFDRCxTQXBFRDtBQXFFQTs7QUFDRCwrQkFBTXRCLGlCQUFOLFlBQXdCQyxNQUF4Qjs7QUFDQSxVQUFNd0MsWUFBWSxHQUFHLEtBQUtDLGNBQUwsRUFBckI7QUFDQSxVQUFNQyxLQUFLLEdBQUdGLFlBQVksQ0FBQ0csSUFBM0I7O0FBQ0EsVUFBSUQsS0FBSixFQUFXO0FBQ1YsWUFBTUUsU0FBUyxHQUFHLEtBQUtDLGFBQXZCOztBQUNBLFlBQUlELFNBQVMsSUFBSUEsU0FBUyxDQUFDZixNQUFWLEdBQW1CLENBQXBDLEVBQXVDO0FBQ3RDZSxVQUFBQSxTQUFTLENBQUNFLE9BQVYsQ0FBa0IsVUFBQ0MsU0FBRCxFQUFvQjtBQUNyQyxnQkFBTUMsY0FBYyxHQUFHRCxTQUFTLENBQUNFLEtBQVYsRUFBdkI7O0FBQ0FELFlBQUFBLGNBQWMsQ0FBQ0UsUUFBZixDQUF3QixNQUFJLENBQUN0QixRQUFMLEVBQXhCOztBQUNBb0IsWUFBQUEsY0FBYyxDQUFDRyxpQkFBZixDQUFpQyxNQUFJLENBQUNDLGlCQUFMLEVBQWpDOztBQUNBVixZQUFBQSxLQUFLLENBQUNXLFVBQU4sQ0FBaUJMLGNBQWpCO0FBQ0EsV0FMRDs7QUFNQU0sVUFBQUEsVUFBVSxDQUFDLFlBQVk7QUFDdEJaLFlBQUFBLEtBQUssQ0FBQ2EsUUFBTjtBQUNBLFdBRlMsRUFFUCxDQUZPLENBQVY7QUFHQTtBQUNEO0FBQ0QsSzs7O0lBbkdnQ0MsYTs7Ozs7Ozs7Ozs7U0EyR25CaEUsbUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEtlZXBBbGl2ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVIZWxwZXJcIjtcbmltcG9ydCBEZWxlZ2F0ZVV0aWwgZnJvbSBcInNhcC9mZS9tYWNyb3MvRGVsZWdhdGVVdGlsXCI7XG5pbXBvcnQgUXVpY2tWaWV3UGFnZSBmcm9tIFwic2FwL20vUXVpY2tWaWV3UGFnZVwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbHMuQ3VzdG9tUXVpY2tWaWV3UGFnZVwiKVxuY2xhc3MgQ3VzdG9tUXVpY2tWaWV3UGFnZSBleHRlbmRzIFF1aWNrVmlld1BhZ2Uge1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IHRydWUgfSlcblx0Y3VzdG9tQ29udGVudCE6IENvbnRyb2xbXTtcblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAubS5RdWlja1ZpZXdHcm91cFwiLCBtdWx0aXBsZTogdHJ1ZSwgc2luZ3VsYXJOYW1lOiBcImdyb3VwXCIsIGlzRGVmYXVsdDogdHJ1ZSB9KVxuXHRncm91cHMhOiBDb250cm9sW107XG5cblx0b25CZWZvcmVSZW5kZXJpbmcob0V2ZW50OiBhbnkpIHtcblx0XHRpZiAoXG5cdFx0XHR0aGlzLmdldFBhcmVudCgpICYmXG5cdFx0XHR0aGlzLmdldFBhcmVudCgpLmlzQShcInNhcC5mZS5jb3JlLmNvbnRyb2xzLkNvbmRpdGlvbmFsV3JhcHBlclwiKSAmJlxuXHRcdFx0dGhpcy5nZXRQYXJlbnQoKS5nZXRQcm9wZXJ0eShcImNvbmRpdGlvblwiKSA9PT0gdHJ1ZVxuXHRcdCkge1xuXHRcdFx0dGhpcy5zZXRDcm9zc0FwcE5hdkNhbGxiYWNrKCgpID0+IHtcblx0XHRcdFx0Y29uc3Qgc1F1aWNrVmlld1BhZ2VUaXRsZUxpbmtIcmVmID0gKERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhIGFzIGFueSkodGhpcywgXCJ0aXRsZUxpbmtcIik7XG5cdFx0XHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKTtcblx0XHRcdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChvVmlldyk7XG5cdFx0XHRcdGNvbnN0IG9TaGVsbFNlcnZpY2VIZWxwZXIgPSBvQXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblx0XHRcdFx0bGV0IG9TaGVsbEhhc2ggPSBvU2hlbGxTZXJ2aWNlSGVscGVyLnBhcnNlU2hlbGxIYXNoKHNRdWlja1ZpZXdQYWdlVGl0bGVMaW5rSHJlZik7XG5cdFx0XHRcdGNvbnN0IG9OYXZBcmdzID0ge1xuXHRcdFx0XHRcdHRhcmdldDoge1xuXHRcdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IG9TaGVsbEhhc2guc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdFx0XHRhY3Rpb246IG9TaGVsbEhhc2guYWN0aW9uXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRwYXJhbXM6IG9TaGVsbEhhc2gucGFyYW1zXG5cdFx0XHRcdH07XG5cdFx0XHRcdGNvbnN0IHNRdWlja1ZpZXdQYWdlVGl0bGVMaW5rSW50ZW50ID0gb05hdkFyZ3MudGFyZ2V0LnNlbWFudGljT2JqZWN0ICsgXCItXCIgKyBvTmF2QXJncy50YXJnZXQuYWN0aW9uO1xuXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRzUXVpY2tWaWV3UGFnZVRpdGxlTGlua0ludGVudCAmJlxuXHRcdFx0XHRcdHRoaXMub0Nyb3NzQXBwTmF2aWdhdG9yICYmXG5cdFx0XHRcdFx0dGhpcy5vQ3Jvc3NBcHBOYXZpZ2F0b3IuaXNOYXZpZ2F0aW9uU3VwcG9ydGVkKFtzUXVpY2tWaWV3UGFnZVRpdGxlTGlua0ludGVudF0pXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGlmIChzUXVpY2tWaWV3UGFnZVRpdGxlTGlua0ludGVudCAmJiBzUXVpY2tWaWV3UGFnZVRpdGxlTGlua0ludGVudCAhPT0gXCJcIikge1xuXHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBzUXVpY2tWaWV3UGFnZVRpdGxlTGlua0ludGVudCA9PT0gXCJzdHJpbmdcIiAmJiBzUXVpY2tWaWV3UGFnZVRpdGxlTGlua0ludGVudCAhPT0gXCJcIikge1xuXHRcdFx0XHRcdFx0XHRsZXQgc1RhcmdldEhyZWY7XG5cdFx0XHRcdFx0XHRcdGxldCBvTGlua0NvbnRyb2wgPSB0aGlzLmdldFBhcmVudCgpO1xuXHRcdFx0XHRcdFx0XHR3aGlsZSAob0xpbmtDb250cm9sICYmICFvTGlua0NvbnRyb2wuaXNBKFwic2FwLnVpLm1kYy5MaW5rXCIpKSB7XG5cdFx0XHRcdFx0XHRcdFx0b0xpbmtDb250cm9sID0gb0xpbmtDb250cm9sLmdldFBhcmVudCgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNvbnN0IF9hTGlua3MgPSBvTGlua0NvbnRyb2wuZ2V0TW9kZWwoXCIkc2FwdWltZGNMaW5rXCIpLmdldFByb3BlcnR5KFwiL2xpbmtJdGVtc1wiKTtcblx0XHRcdFx0XHRcdFx0aWYgKF9hTGlua3MpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoX2FMaW5rcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IF9hTGlua3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKF9hTGlua3NbaV0ua2V5ID09PSBzUXVpY2tWaWV3UGFnZVRpdGxlTGlua0ludGVudCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNUYXJnZXRIcmVmID0gX2FMaW5rc1tpXS5ocmVmO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoc1RhcmdldEhyZWYpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0b1NoZWxsSGFzaCA9IG9TaGVsbFNlcnZpY2VIZWxwZXIucGFyc2VTaGVsbEhhc2goc1RhcmdldEhyZWYpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0b1NoZWxsSGFzaCA9IG9TaGVsbFNlcnZpY2VIZWxwZXIucGFyc2VTaGVsbEhhc2goc1F1aWNrVmlld1BhZ2VUaXRsZUxpbmtJbnRlbnQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRvU2hlbGxIYXNoID0gb1NoZWxsU2VydmljZUhlbHBlci5wYXJzZVNoZWxsSGFzaChzUXVpY2tWaWV3UGFnZVRpdGxlTGlua0ludGVudCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0S2VlcEFsaXZlSGVscGVyLnN0b3JlQ29udHJvbFJlZnJlc2hTdHJhdGVneUZvckhhc2gob1ZpZXcsIG9TaGVsbEhhc2gpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdHRhcmdldDoge1xuXHRcdFx0XHRcdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IG9TaGVsbEhhc2guc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdFx0XHRcdFx0XHRhY3Rpb246IG9TaGVsbEhhc2guYWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRwYXJhbXM6IG9TaGVsbEhhc2gucGFyYW1zXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IG9DdXJyZW50U2hlbGxIYXNoID0gb1NoZWxsU2VydmljZUhlbHBlci5wYXJzZVNoZWxsSGFzaCh3aW5kb3cubG9jYXRpb24uaGFzaCk7XG5cdFx0XHRcdFx0S2VlcEFsaXZlSGVscGVyLnN0b3JlQ29udHJvbFJlZnJlc2hTdHJhdGVneUZvckhhc2gob1ZpZXcsIG9DdXJyZW50U2hlbGxIYXNoKTtcblxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6IHtcblx0XHRcdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IG9DdXJyZW50U2hlbGxIYXNoLnNlbWFudGljT2JqZWN0LFxuXHRcdFx0XHRcdFx0XHRhY3Rpb246IG9DdXJyZW50U2hlbGxIYXNoLmFjdGlvbixcblx0XHRcdFx0XHRcdFx0YXBwU3BlY2lmaWNSb3V0ZTogb0N1cnJlbnRTaGVsbEhhc2guYXBwU3BlY2lmaWNSb3V0ZVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHBhcmFtczogb0N1cnJlbnRTaGVsbEhhc2gucGFyYW1zXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHN1cGVyLm9uQmVmb3JlUmVuZGVyaW5nKG9FdmVudCk7XG5cdFx0Y29uc3Qgb1BhZ2VDb250ZW50ID0gdGhpcy5nZXRQYWdlQ29udGVudCgpO1xuXHRcdGNvbnN0IG9Gb3JtID0gb1BhZ2VDb250ZW50LmZvcm07XG5cdFx0aWYgKG9Gb3JtKSB7XG5cdFx0XHRjb25zdCBfYUNvbnRlbnQgPSB0aGlzLmN1c3RvbUNvbnRlbnQ7XG5cdFx0XHRpZiAoX2FDb250ZW50ICYmIF9hQ29udGVudC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdF9hQ29udGVudC5mb3JFYWNoKChfb0NvbnRlbnQ6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IF9vQ29udGVudENsb25lID0gX29Db250ZW50LmNsb25lKCk7XG5cdFx0XHRcdFx0X29Db250ZW50Q2xvbmUuc2V0TW9kZWwodGhpcy5nZXRNb2RlbCgpKTtcblx0XHRcdFx0XHRfb0NvbnRlbnRDbG9uZS5zZXRCaW5kaW5nQ29udGV4dCh0aGlzLmdldEJpbmRpbmdDb250ZXh0KCkpO1xuXHRcdFx0XHRcdG9Gb3JtLmFkZENvbnRlbnQoX29Db250ZW50Q2xvbmUpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0b0Zvcm0ucmVyZW5kZXIoKTtcblx0XHRcdFx0fSwgMCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5pbnRlcmZhY2UgQ3VzdG9tUXVpY2tWaWV3UGFnZSB7XG5cdC8vIFByaXZhdGUgaW4gVUk1XG5cdG9Dcm9zc0FwcE5hdmlnYXRvcjogYW55O1xuXHQvLyBQcml2YXRlIGluIFVJNVxuXHRnZXRQYWdlQ29udGVudCgpOiBhbnk7XG59XG5leHBvcnQgZGVmYXVsdCBDdXN0b21RdWlja1ZpZXdQYWdlO1xuIl19