@sapui5/sap.suite.ui.generic.template 1.153.0 → 1.154.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/package.json +1 -1
  2. package/src/sap/suite/ui/generic/template/.library +1 -1
  3. package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/ControllerImplementation.js +31 -2
  4. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n.properties +7 -2
  5. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ar.properties +3 -0
  6. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_bg.properties +3 -0
  7. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ca.properties +3 -0
  8. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_cnr.properties +3 -0
  9. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_cs.properties +3 -0
  10. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_cy.properties +3 -0
  11. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_da.properties +3 -0
  12. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_de.properties +3 -0
  13. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_el.properties +3 -0
  14. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_en.properties +3 -0
  15. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_en_GB.properties +3 -0
  16. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_en_US_sappsd.properties +3 -0
  17. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_en_US_saprigi.properties +3 -0
  18. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_es.properties +3 -0
  19. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_es_MX.properties +3 -0
  20. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_et.properties +3 -0
  21. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_fi.properties +3 -0
  22. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_fr.properties +3 -0
  23. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_fr_CA.properties +3 -0
  24. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_hi.properties +3 -0
  25. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_hr.properties +3 -0
  26. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_hu.properties +3 -0
  27. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_id.properties +3 -0
  28. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_it.properties +3 -0
  29. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_iw.properties +3 -0
  30. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ja.properties +3 -0
  31. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_kk.properties +3 -0
  32. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ko.properties +3 -0
  33. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_lt.properties +3 -0
  34. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_lv.properties +3 -0
  35. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_mk.properties +3 -0
  36. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ms.properties +3 -0
  37. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_nl.properties +3 -0
  38. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_no.properties +3 -0
  39. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_pl.properties +3 -0
  40. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_pt.properties +3 -0
  41. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_pt_PT.properties +3 -0
  42. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ro.properties +3 -0
  43. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ru.properties +3 -0
  44. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_sh.properties +3 -0
  45. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_sk.properties +3 -0
  46. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_sl.properties +3 -0
  47. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_sr.properties +3 -0
  48. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_sv.properties +3 -0
  49. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_th.properties +3 -0
  50. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_tr.properties +3 -0
  51. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_uk.properties +3 -0
  52. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_vi.properties +3 -0
  53. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_zh_CN.properties +3 -0
  54. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_zh_TW.properties +3 -0
  55. package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +8 -3
  56. package/src/sap/suite/ui/generic/template/AnalyticalListPage/view/fragments/FilterContainer.fragment.xml +2 -1
  57. package/src/sap/suite/ui/generic/template/AnalyticalListPage/view/fragments/HeaderCommands.fragment.xml +1 -1
  58. package/src/sap/suite/ui/generic/template/AnalyticalListPage/view/fragments/SmartFilterBar.fragment.xml +1 -1
  59. package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
  60. package/src/sap/suite/ui/generic/template/ListReport/Component.js +25 -1
  61. package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +122 -20
  62. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n.properties +6 -3
  63. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ar.properties +2 -0
  64. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_bg.properties +2 -0
  65. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ca.properties +2 -0
  66. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_cnr.properties +2 -0
  67. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_cs.properties +2 -0
  68. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_cy.properties +2 -0
  69. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_da.properties +2 -0
  70. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_de.properties +2 -0
  71. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_el.properties +2 -0
  72. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_en.properties +3 -1
  73. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_en_GB.properties +2 -0
  74. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_en_US_sappsd.properties +2 -0
  75. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_en_US_saprigi.properties +2 -0
  76. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_es.properties +3 -1
  77. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_es_MX.properties +2 -0
  78. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_et.properties +2 -0
  79. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_fi.properties +2 -0
  80. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_fr.properties +2 -0
  81. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_fr_CA.properties +2 -0
  82. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_hi.properties +2 -0
  83. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_hr.properties +2 -0
  84. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_hu.properties +2 -0
  85. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_id.properties +2 -0
  86. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_it.properties +2 -0
  87. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_iw.properties +2 -0
  88. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ja.properties +4 -2
  89. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_kk.properties +2 -0
  90. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ko.properties +2 -0
  91. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_lt.properties +2 -0
  92. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_lv.properties +2 -0
  93. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_mk.properties +2 -0
  94. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ms.properties +2 -0
  95. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_nl.properties +2 -0
  96. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_no.properties +2 -0
  97. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_pl.properties +2 -0
  98. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_pt.properties +2 -0
  99. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_pt_PT.properties +2 -0
  100. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ro.properties +2 -0
  101. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ru.properties +2 -0
  102. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sh.properties +2 -0
  103. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sk.properties +2 -0
  104. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sl.properties +2 -0
  105. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sr.properties +2 -0
  106. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sv.properties +2 -0
  107. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_th.properties +2 -0
  108. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_tr.properties +2 -0
  109. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_uk.properties +3 -1
  110. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_vi.properties +2 -0
  111. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_zh_CN.properties +4 -2
  112. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_zh_TW.properties +5 -3
  113. package/src/sap/suite/ui/generic/template/ListReport/manifest.json +7 -2
  114. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/HeaderCommands.fragment.xml +21 -15
  115. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartFilterBar.fragment.xml +1 -1
  116. package/src/sap/suite/ui/generic/template/ObjectPage/Component.js +0 -5
  117. package/src/sap/suite/ui/generic/template/ObjectPage/controller/ControllerImplementation.js +87 -36
  118. package/src/sap/suite/ui/generic/template/ObjectPage/controller/SectionTitleHandler.js +1 -1
  119. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n.properties +6 -0
  120. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ar.properties +4 -0
  121. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_bg.properties +4 -0
  122. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ca.properties +4 -0
  123. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_cnr.properties +4 -0
  124. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_cs.properties +4 -0
  125. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_cy.properties +4 -0
  126. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_da.properties +4 -0
  127. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_de.properties +4 -0
  128. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_el.properties +4 -0
  129. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_en.properties +4 -0
  130. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_en_GB.properties +4 -0
  131. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_en_US_sappsd.properties +4 -0
  132. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_en_US_saprigi.properties +4 -0
  133. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_es.properties +5 -1
  134. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_es_MX.properties +4 -0
  135. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_et.properties +4 -0
  136. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_fi.properties +4 -0
  137. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_fr.properties +4 -0
  138. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_fr_CA.properties +4 -0
  139. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_hi.properties +4 -0
  140. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_hr.properties +4 -0
  141. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_hu.properties +4 -0
  142. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_id.properties +4 -0
  143. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_it.properties +4 -0
  144. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_iw.properties +4 -0
  145. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ja.properties +4 -0
  146. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_kk.properties +30 -26
  147. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ko.properties +4 -0
  148. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_lt.properties +4 -0
  149. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_lv.properties +4 -0
  150. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_mk.properties +4 -0
  151. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ms.properties +4 -0
  152. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_nl.properties +4 -0
  153. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_no.properties +4 -0
  154. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pl.properties +4 -0
  155. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pt.properties +4 -0
  156. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pt_PT.properties +4 -0
  157. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ro.properties +4 -0
  158. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ru.properties +4 -0
  159. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sh.properties +4 -0
  160. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sk.properties +4 -0
  161. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sl.properties +4 -0
  162. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sr.properties +4 -0
  163. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sv.properties +4 -0
  164. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_th.properties +4 -0
  165. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_tr.properties +4 -0
  166. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_uk.properties +8 -4
  167. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_vi.properties +4 -0
  168. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_zh_CN.properties +4 -0
  169. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_zh_TW.properties +8 -4
  170. package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +13 -5
  171. package/src/sap/suite/ui/generic/template/ObjectPage/templateSpecificPreparationHelper.js +2 -2
  172. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/Actions.fragment.xml +1 -1
  173. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/PageLevelCommands.fragment.xml +2 -0
  174. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartTableUiTableCommons.fragment.xml +1 -1
  175. package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
  176. package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
  177. package/src/sap/suite/ui/generic/template/designtime/controls/DynamicPage.designtime.js +39 -3
  178. package/src/sap/suite/ui/generic/template/designtime/controls/ObjectPageLayout.designtime.js +39 -5
  179. package/src/sap/suite/ui/generic/template/designtime/controls/SmartTable.designtime.js +17 -0
  180. package/src/sap/suite/ui/generic/template/detailTemplates/detailUtils.js +3 -2
  181. package/src/sap/suite/ui/generic/template/detailTemplates/i18n/i18n_es.properties +1 -1
  182. package/src/sap/suite/ui/generic/template/fragments/EasyFilter.fragment.xml +1 -0
  183. package/src/sap/suite/ui/generic/template/fragments/SmartTableUiTableCommons.fragment.xml +1 -0
  184. package/src/sap/suite/ui/generic/template/fragments/TableColumnListItem.fragment.xml +3 -0
  185. package/src/sap/suite/ui/generic/template/genericUtilities/controlHelper.js +3 -0
  186. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +7 -0
  187. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartVariantManagementWrapper.js +35 -43
  188. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +20 -15
  189. package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +69 -0
  190. package/src/sap/suite/ui/generic/template/lib/CommonUtils.js +32 -1
  191. package/src/sap/suite/ui/generic/template/lib/ContextMenuHandler.js +45 -2
  192. package/src/sap/suite/ui/generic/template/lib/MessageUtils.js +1 -0
  193. package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillAIOrchestrator.js +127 -8
  194. package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillApplyHandler.js +9 -1
  195. package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillDialogController.js +234 -13
  196. package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillFileHandler.js +218 -0
  197. package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillFormRenderer.js +6 -2
  198. package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillHandler.js +162 -5
  199. package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/fragments/EasyFillDialog.fragment.xml +193 -30
  200. package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +581 -26
  201. package/src/sap/suite/ui/generic/template/lib/i18n/i18n.properties +60 -0
  202. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ar.properties +42 -2
  203. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_bg.properties +43 -3
  204. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ca.properties +42 -2
  205. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cnr.properties +42 -2
  206. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cs.properties +40 -0
  207. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cy.properties +44 -4
  208. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +44 -4
  209. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_de.properties +42 -2
  210. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_el.properties +42 -2
  211. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en.properties +40 -0
  212. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_GB.properties +40 -0
  213. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_sappsd.properties +40 -0
  214. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +40 -0
  215. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es.properties +44 -4
  216. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es_MX.properties +40 -0
  217. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_et.properties +43 -3
  218. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +42 -2
  219. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +40 -0
  220. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr_CA.properties +44 -4
  221. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hi.properties +43 -3
  222. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hr.properties +42 -2
  223. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hu.properties +43 -3
  224. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +42 -2
  225. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +42 -2
  226. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_iw.properties +42 -2
  227. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ja.properties +43 -3
  228. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_kk.properties +42 -2
  229. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ko.properties +42 -2
  230. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lt.properties +42 -2
  231. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lv.properties +42 -2
  232. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +44 -4
  233. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ms.properties +43 -3
  234. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +42 -2
  235. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_no.properties +42 -2
  236. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pl.properties +42 -2
  237. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +42 -2
  238. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt_PT.properties +44 -4
  239. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ro.properties +40 -0
  240. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +40 -0
  241. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sh.properties +42 -2
  242. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sk.properties +42 -2
  243. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +42 -2
  244. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sr.properties +42 -2
  245. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sv.properties +42 -2
  246. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_th.properties +44 -4
  247. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_tr.properties +43 -3
  248. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +40 -0
  249. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_vi.properties +43 -3
  250. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +42 -2
  251. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_TW.properties +44 -4
  252. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +27 -7
  253. package/src/sap/suite/ui/generic/template/library.js +1 -1
  254. package/src/sap/suite/ui/generic/template/listTemplates/fragments/DetailSmartTable.fragment.xml +3 -0
  255. package/src/sap/suite/ui/generic/template/listTemplates/fragments/TableCommands.fragment.xml +23 -19
  256. package/src/sap/suite/ui/generic/template/themes/base/ObjectPage.less +265 -0
  257. package/src/sap/suite/ui/generic/template/themes/sap_belize_base/ObjectPage.less +9 -0
  258. package/src/sap/suite/ui/generic/template/themes/sap_bluecrystal_base/ObjectPage.less +9 -0
  259. package/src/sap/suite/ui/generic/template/themes/sap_hcb/base_ObjectPage.less +9 -0
@@ -0,0 +1,218 @@
1
+ sap.ui.define([
2
+ "sap/base/Log",
3
+ "sap/m/MessageBox"
4
+ ], function(Log, MessageBox) {
5
+ "use strict";
6
+
7
+ var sClassName = "lib.ai.EasyFill.EasyFillFileHandler";
8
+
9
+ // Browser-reported MIME types vary wildly across OS/browser combinations for the very same
10
+ // file (e.g. a .csv is "application/vnd.ms-excel" on Windows+Excel, "application/csv" elsewhere,
11
+ // or "" when nothing is registered). The file extension is the authoritative gate (findHandler),
12
+ // so these are the types we additionally treat as "text-like" when a type IS reported.
13
+ var VENDOR_TEXT_MIME_TYPES = {
14
+ "application/csv": true,
15
+ "application/vnd.ms-excel": true
16
+ };
17
+ var BINARY_MIME_TYPE = "application/octet-stream";
18
+
19
+ var FILE_HANDLERS = [
20
+ {
21
+ extensions: [".txt", ".csv"],
22
+ handle: _handleTextFileImport
23
+ }
24
+ ];
25
+
26
+ // ─── File Validation ──────────────────────────────────────────────────────
27
+
28
+ /**
29
+ * Decides whether a file whose extension already matched a handler should be accepted
30
+ * based on its (unreliable) browser-reported MIME type.
31
+ *
32
+ * The extension is the authoritative gate, so an absent/binary/vendor type is accepted —
33
+ * only a type that is explicitly a different, non-text category (e.g. "image/png") is rejected.
34
+ *
35
+ * @param {File} oFile
36
+ * @returns {boolean}
37
+ */
38
+ function _isMimeTypeAcceptable(oFile) {
39
+ var sMimeType = oFile.type;
40
+ // No type reported, or generic binary — common for .txt/.csv; trust the extension.
41
+ if (!sMimeType || sMimeType === BINARY_MIME_TYPE) {
42
+ Log.warning(sClassName + ": file " + oFile.name + " has no/binary MIME type; accepting on extension");
43
+ return true;
44
+ }
45
+ if (sMimeType.indexOf("text/") === 0 || VENDOR_TEXT_MIME_TYPES[sMimeType]) {
46
+ return true;
47
+ }
48
+ Log.warning(sClassName + ": file " + oFile.name + " has non-text MIME type: " + sMimeType);
49
+ return false;
50
+ }
51
+
52
+ // ─── File Type Handlers ───────────────────────────────────────────────────
53
+
54
+ /**
55
+ * Reads a TXT or CSV file as text and reports progress/result via callbacks.
56
+ * No user-facing messages are shown here — the caller owns localized feedback.
57
+ * @param {File} oFile
58
+ * @param {{ onTextImported: function, onValidationError: function, onReadError: function(string=), onProgress: function }} oCallbacks
59
+ * onReadError receives "empty" when the file is empty, "read" on a read failure.
60
+ */
61
+ function _handleTextFileImport(oFile, oCallbacks) {
62
+ if (!_isMimeTypeAcceptable(oFile)) {
63
+ Log.error(sClassName + ": file validation failed for " + oFile.name);
64
+ if (oCallbacks.onValidationError) { oCallbacks.onValidationError("invalidType"); }
65
+ return;
66
+ }
67
+
68
+ var oReader = new FileReader();
69
+ oReader.onprogress = function(oEvent) {
70
+ if (oEvent.lengthComputable && oCallbacks.onProgress) {
71
+ oCallbacks.onProgress(Math.round((oEvent.loaded / oEvent.total) * 100));
72
+ }
73
+ };
74
+ oReader.onload = function(oEvent) {
75
+ if (oCallbacks.onProgress) { oCallbacks.onProgress(100); }
76
+ var sText = oEvent.target && oEvent.target.result;
77
+ if (!sText) {
78
+ Log.error(sClassName + ": text file is empty");
79
+ if (oCallbacks.onReadError) { oCallbacks.onReadError("empty"); }
80
+ return;
81
+ }
82
+ Log.info(sClassName + ": text file parsed successfully");
83
+ oCallbacks.onTextImported(sText);
84
+ };
85
+ oReader.onerror = function() {
86
+ Log.error(sClassName + ": failed to read text file");
87
+ if (oCallbacks.onReadError) { oCallbacks.onReadError("read"); }
88
+ };
89
+ oReader.readAsText(oFile);
90
+ }
91
+
92
+ // ─── Public API ───────────────────────────────────────────────────────────
93
+
94
+ return {
95
+
96
+ /**
97
+ * Finds the handler entry for the given file name based on its extension.
98
+ * @param {string} sFileName
99
+ * @returns {{ extensions: string[], handle: function } | undefined}
100
+ */
101
+ findHandler: function(sFileName) {
102
+ var sLower = sFileName.toLowerCase();
103
+ return FILE_HANDLERS.find(function(oHandler) {
104
+ return oHandler.extensions.some(function(sExt) { return sLower.endsWith(sExt); });
105
+ });
106
+ },
107
+
108
+ /**
109
+ * Detects the file type ("csv" or "txt") from the file name.
110
+ * @param {string} sFileName
111
+ * @returns {"csv" | "txt" | "none"}
112
+ */
113
+ getFileType: function(sFileName) {
114
+ if (!sFileName) { return "none"; }
115
+ var sLower = sFileName.toLowerCase();
116
+ if (sLower.endsWith(".csv")) { return "csv"; }
117
+ if (sLower.endsWith(".txt")) { return "txt"; }
118
+ return "none";
119
+ },
120
+
121
+ /**
122
+ * Shows a confirmation dialog before removing a file.
123
+ * Calls fnOnConfirm only when the user clicks OK.
124
+ * @param {string} sConfirmText - i18n message to display
125
+ * @param {function} fnOnConfirm - callback invoked on confirmation
126
+ */
127
+ confirmFileRemoval: function(sConfirmText, fnOnConfirm) {
128
+ MessageBox.confirm(sConfirmText, {
129
+ onClose: function(sAction) {
130
+ if (sAction === MessageBox.Action.OK) {
131
+ fnOnConfirm();
132
+ }
133
+ }
134
+ });
135
+ },
136
+
137
+ /**
138
+ * Parses a CSV/TSV text string into { headers: string[], rows: string[][] }.
139
+ * Auto-detects comma vs. semicolon vs. tab as separator and honours double-quoted
140
+ * fields (separators inside quotes are literal; "" is an escaped quote).
141
+ * @param {string} sText
142
+ * @returns {{ headers: string[], rows: string[][] }}
143
+ */
144
+ parseCSV: function(sText) {
145
+ if (!sText) { return { headers: [], rows: [] }; }
146
+ var aLines = sText.split(/\r?\n/).filter(function(sLine) { return sLine.trim() !== ""; });
147
+ if (!aLines.length) { return { headers: [], rows: [] }; }
148
+
149
+ // Auto-detect separator: tab > semicolon > comma
150
+ var sSep = ",";
151
+ var sFirst = aLines[0];
152
+ if (sFirst.indexOf("\t") !== -1) {
153
+ sSep = "\t";
154
+ } else if (sFirst.indexOf(";") !== -1) {
155
+ sSep = ";";
156
+ }
157
+
158
+ // Quote-aware single-line splitter: a separator inside double quotes is part of the
159
+ // field, and a doubled quote ("") inside a quoted field is a literal quote.
160
+ function splitLine(sLine) {
161
+ var aFields = [];
162
+ var sField = "";
163
+ var bInQuotes = false;
164
+ for (var i = 0; i < sLine.length; i++) {
165
+ var c = sLine.charAt(i);
166
+ if (c === '"') {
167
+ if (bInQuotes && sLine.charAt(i + 1) === '"') {
168
+ sField += '"';
169
+ i++; // skip the escaped quote
170
+ } else {
171
+ bInQuotes = !bInQuotes;
172
+ }
173
+ } else if (c === sSep && !bInQuotes) {
174
+ aFields.push(sField.trim());
175
+ sField = "";
176
+ } else {
177
+ sField += c;
178
+ }
179
+ }
180
+ aFields.push(sField.trim());
181
+ return aFields;
182
+ }
183
+
184
+ var aHeaders = splitLine(aLines[0]);
185
+ var aRows = aLines.slice(1).map(splitLine);
186
+ return { headers: aHeaders, rows: aRows };
187
+ },
188
+
189
+ /**
190
+ * Formats a byte size into a human-readable string (e.g. "1.2 KB").
191
+ * @param {number} iBytes
192
+ * @returns {string}
193
+ */
194
+ formatFileSize: function(iBytes) {
195
+ if (!iBytes || iBytes < 0) { return "0 B"; }
196
+ if (iBytes < 1024) { return iBytes + " B"; }
197
+ if (iBytes < 1024 * 1024) { return (iBytes / 1024).toFixed(1) + " KB"; }
198
+ return (iBytes / (1024 * 1024)).toFixed(1) + " MB";
199
+ },
200
+
201
+ /**
202
+ * Entry point: validates the file and runs the appropriate handler.
203
+ * Reports failures via oCallbacks.onValidationError (no user-facing message is shown here —
204
+ * the caller owns localized feedback).
205
+ * @param {File} oFile
206
+ * @param {{ onTextImported: function, onValidationError: function, onReadError: function, onProgress: function }} oCallbacks
207
+ */
208
+ importFile: function(oFile, oCallbacks) {
209
+ var oHandler = this.findHandler(oFile.name);
210
+ if (!oHandler) {
211
+ Log.error(sClassName + ": unsupported file type: " + oFile.name);
212
+ if (oCallbacks.onValidationError) { oCallbacks.onValidationError("unsupported"); }
213
+ return;
214
+ }
215
+ oHandler.handle(oFile, oCallbacks);
216
+ }
217
+ };
218
+ });
@@ -184,7 +184,8 @@ sap.ui.define([
184
184
  // "Original Value:" text shown for all fields (editable and non-editable)
185
185
  var oOriginalValueText = new Text({
186
186
  text: sOriginalValueLabel + " " + sCurrentValue,
187
- wrapping: false
187
+ wrapping: false,
188
+ tooltip: sOriginalValueLabel + " " + sCurrentValue
188
189
  }).addStyleClass("sapEasyFillPreviouslyLabel");
189
190
  oGroupElement.addElement(oOriginalValueText);
190
191
 
@@ -214,7 +215,10 @@ sap.ui.define([
214
215
  text: sProposedValueLabel + " " + sAIDisplayValue,
215
216
  wrapping: false,
216
217
  visible: false,
217
- icon: "sap-icon://ai"
218
+ icon: "sap-icon://ai",
219
+ width: "100%",
220
+ tooltip: sProposedValueLabel + " " + sAIDisplayValue,
221
+ layoutData: new ColumnElementData({ cellsSmall: 12, cellsLarge: 12 })
218
222
  }).addStyleClass("sapEasyFillProposedValueLink");
219
223
 
220
224
  // Revert button: State 1 → State 2
@@ -8,7 +8,8 @@ sap.ui.define([
8
8
  "sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillFormRenderer",
9
9
  "sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillTableRenderer",
10
10
  "sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillApplyHandler",
11
- "sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillDialogController"
11
+ "sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillDialogController",
12
+ "sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillFileHandler"
12
13
  ], function(
13
14
  BaseObject,
14
15
  extend,
@@ -19,7 +20,8 @@ sap.ui.define([
19
20
  EasyFillFormRenderer,
20
21
  EasyFillTableRenderer,
21
22
  EasyFillApplyHandler,
22
- EasyFillDialogController
23
+ EasyFillDialogController,
24
+ EasyFillFileHandler
23
25
  ) {
24
26
  "use strict";
25
27
 
@@ -60,6 +62,9 @@ sap.ui.define([
60
62
  // including extension fragment fields and custom fields.
61
63
  var oOPStructureMap = null;
62
64
  var mLiveEditable = null;
65
+ // Stores the text extracted from an imported file (TXT/CSV).
66
+ // When non-null, this is sent to the AI instead of the textarea value.
67
+ var sImportedFileText = null;
63
68
 
64
69
  // Collection state — tracks OData row contexts and property metadata for SmartTable collections
65
70
  var mCollectionState = {
@@ -110,6 +115,13 @@ sap.ui.define([
110
115
  * @returns {object} handler/formatter map
111
116
  */
112
117
  function _buildDialogHandlers() {
118
+ // Shared text-imported callback: sets sImportedFileText and re-renders preview.
119
+ // Used by both the FileUploader change handler and the drop handler.
120
+ function fnOnTextImported(sText) {
121
+ sImportedFileText = sText;
122
+ EasyFillDialogController.renderFilePreview(oController, EasyFillFileHandler, sImportedFileText);
123
+ }
124
+
113
125
  return {
114
126
  // ── Layout mode toggle (Condensed ↔ ObjectPage view) ──────────────
115
127
  // After the sections binding is refreshed, SmartForms for the new mode
@@ -221,6 +233,145 @@ sap.ui.define([
221
233
  // ── AI Notice popover ─────────────────────────────────────────────
222
234
  onLinkPress: async function(oEvent) {
223
235
  await EasyFillDialogController.onLinkPress(oEvent, oTemplateUtils, oAIPopoverRef);
236
+ },
237
+
238
+ // ── File import: FileUploader change event ────────────────────────
239
+ onFileUploaderChange: function(oEvent) {
240
+ EasyFillDialogController.onFileUploaderChange(
241
+ oEvent, oController, oRb, EasyFillFileHandler, fnOnTextImported
242
+ );
243
+ },
244
+
245
+ // ── File import: FileUploader rejected the chosen file by extension ──
246
+ onFileTypeMismatch: function() {
247
+ EasyFillDialogController.showFileTypeError(oRb);
248
+ },
249
+
250
+ // ── File discard: removes the imported file and restores the input area ──
251
+ onDiscardImportedFile: function() {
252
+ EasyFillFileHandler.confirmFileRemoval(oRb.getText("EASY_FILL_REMOVE_FILE_CONFIRM"), function() {
253
+ sImportedFileText = null;
254
+ EasyFillDialogController.resetFileState(oController);
255
+ var oDialogModel = oController.getView().getModel("easyFillDialogModel");
256
+ if (oDialogModel) {
257
+ oDialogModel.setProperty("/isEasyFillButtonEnabled", false);
258
+ }
259
+ });
260
+ },
261
+
262
+ // ── Table/text view toggle for CSV preview ───────────────────────────
263
+ onFilePreviewModeChange: function(oEvent) {
264
+ var oDialogModel = oController.getView().getModel("easyFillDialogModel");
265
+ var sSelectedKey = oEvent.getParameter("item").getKey();
266
+ oDialogModel.setProperty("/selectedFilePreviewMode", sSelectedKey);
267
+ EasyFillDialogController.renderFilePreview(oController, EasyFillFileHandler, sImportedFileText);
268
+ },
269
+
270
+ // ── Drag-and-drop: wire native drop events after dialog opens ────────
271
+ // Uses addEventDelegate({onAfterRendering}) on the SAPUI5 control so that
272
+ // drop handlers are re-attached each time the DOM element is re-created.
273
+ // This is necessary because EasyFillInputContainer is hidden (visible=false)
274
+ // when a file is uploaded and shown again on Clear All, which destroys and
275
+ // recreates the DOM element — exactly the V4 approach.
276
+ _onAfterOpen: function() {
277
+ var oInputContainer = oController.byId("EasyFillInputContainer");
278
+ if (!oInputContainer) { return; }
279
+
280
+ function attachDropHandlers() {
281
+ var oDomRef = oInputContainer.getDomRef();
282
+ if (!oDomRef || oDomRef.dataset["dropInitialized"]) { return; }
283
+ oDomRef.dataset["dropInitialized"] = "true";
284
+
285
+ var iDragDepth = 0;
286
+
287
+ function isFileDrag(oDragEvent) {
288
+ var oTransfer = oDragEvent.dataTransfer;
289
+ return !!(oTransfer && Array.prototype.indexOf.call(oTransfer.types, "Files") !== -1);
290
+ }
291
+
292
+ function resetDragState() {
293
+ iDragDepth = 0;
294
+ oDomRef.classList.remove("sapSmartTemplatesObjectPageEasyFillInputContainerDropDisabled");
295
+ oController.getView().getModel("easyFillDialogModel").setProperty("/isDragging", false);
296
+ }
297
+
298
+ oDomRef.addEventListener("dragenter", function(oDragEvent) {
299
+ if (!isFileDrag(oDragEvent)) { return; }
300
+ oDragEvent.preventDefault();
301
+ iDragDepth++;
302
+ });
303
+
304
+ oDomRef.addEventListener("dragover", function(oDragEvent) {
305
+ if (!isFileDrag(oDragEvent)) { return; }
306
+ oDragEvent.preventDefault();
307
+ var oDialogModel = oController.getView().getModel("easyFillDialogModel");
308
+ var bBlocked = !!oDialogModel.getProperty("/uploadedFileName") ||
309
+ !!oDialogModel.getProperty("/hasEnteredText");
310
+ if (oDragEvent.dataTransfer) {
311
+ oDragEvent.dataTransfer.dropEffect = bBlocked ? "none" : "copy";
312
+ }
313
+ if (bBlocked) {
314
+ oDomRef.classList.add("sapSmartTemplatesObjectPageEasyFillInputContainerDropDisabled");
315
+ } else {
316
+ oDomRef.classList.remove("sapSmartTemplatesObjectPageEasyFillInputContainerDropDisabled");
317
+ }
318
+ oDialogModel.setProperty("/isDragging", true);
319
+ });
320
+
321
+ oDomRef.addEventListener("dragleave", function(oDragEvent) {
322
+ if (!isFileDrag(oDragEvent)) { return; }
323
+ iDragDepth = Math.max(0, iDragDepth - 1);
324
+ if (iDragDepth === 0) {
325
+ oDomRef.classList.remove("sapSmartTemplatesObjectPageEasyFillInputContainerDropDisabled");
326
+ oController.getView().getModel("easyFillDialogModel").setProperty("/isDragging", false);
327
+ }
328
+ });
329
+
330
+ oDomRef.addEventListener("drop", function(oDragEvent) {
331
+ oDragEvent.preventDefault();
332
+ oDragEvent.stopPropagation();
333
+ resetDragState();
334
+
335
+ var oDialogModel = oController.getView().getModel("easyFillDialogModel");
336
+ if (oDialogModel.getProperty("/uploadedFileName") ||
337
+ oDialogModel.getProperty("/hasEnteredText")) { return; }
338
+
339
+ var oTransfer = oDragEvent.dataTransfer;
340
+ var aDropped = oTransfer && oTransfer.files
341
+ ? Array.prototype.slice.call(oTransfer.files) : [];
342
+ if (aDropped.length === 0) { return; }
343
+
344
+ var aSupported = aDropped.filter(function(oFile) {
345
+ return !!EasyFillFileHandler.findHandler(oFile.name);
346
+ });
347
+
348
+ if (aSupported.length === 0) {
349
+ EasyFillDialogController.showFileUploadError(oRb,
350
+ oRb.getText("EASY_FILL_UPLOAD_UNSUPPORTED_FILE_ERROR"));
351
+ return;
352
+ }
353
+ if (aSupported.length > 1) {
354
+ EasyFillDialogController.showFileUploadError(oRb,
355
+ oRb.getText("EASY_FILL_UPLOAD_SINGLE_FILE_ONLY_ERROR"));
356
+ return;
357
+ }
358
+
359
+ var oFile = aSupported[0];
360
+ // Shared accept path: metadata-set + read + length cap + persistent error feedback.
361
+ EasyFillDialogController.acceptFile(oController, oRb, EasyFillFileHandler, oFile, fnOnTextImported);
362
+ });
363
+ }
364
+
365
+ // Add the onAfterRendering delegate once per container instance. The dialog is
366
+ // kept alive across opens (keepAlive), so a fresh delegate on every open would
367
+ // accumulate; the flag below ensures a single registration. attachDropHandlers()
368
+ // itself is idempotent via the dataset guard and re-binds after DOM re-creation.
369
+ if (!oInputContainer._easyFillDropDelegateAdded) {
370
+ oInputContainer.addEventDelegate({ onAfterRendering: attachDropHandlers });
371
+ oInputContainer._easyFillDropDelegateAdded = true;
372
+ }
373
+ // Attach immediately for the current render (dialog is already open)
374
+ attachDropHandlers();
224
375
  }
225
376
  };
226
377
  }
@@ -264,9 +415,10 @@ sap.ui.define([
264
415
  oObjectPageContext, EasyFillFieldCollector, mCollectionState
265
416
  );
266
417
 
267
- // Submit to AI
418
+ // Submit to AI — prefer imported file text over the textarea value
419
+ var sUserInput = sImportedFileText || oController.byId("EasyFillInputTextArea").getValue();
268
420
  var aiCallResult = await EasyFillAIOrchestrator.submitToAI(
269
- oController.byId("EasyFillInputTextArea").getValue(),
421
+ sUserInput,
270
422
  mFieldMapping,
271
423
  oTemplateUtils
272
424
  );
@@ -519,7 +671,7 @@ sap.ui.define([
519
671
  * Resets the EasyFill dialog to its initial state.
520
672
  * Delegates to EasyFillApplyHandler.resetEasyFill with the current state references.
521
673
  *
522
- * @param {boolean} [bRemoveTextAreaValue=false] - if true, also clears the text area input
674
+ * @param {boolean} [bRemoveTextAreaValue=false] - if true, also clears the text area input and resets all file import state (sImportedFileText, file model properties)
523
675
  */
524
676
  function _resetEasyFill(bRemoveTextAreaValue) {
525
677
  mLastFieldMapping = null;
@@ -541,6 +693,11 @@ sap.ui.define([
541
693
  oTransientContextForEasyFill = null;
542
694
  }
543
695
  );
696
+ // Clear file import state on Clear All / Cancel
697
+ if (bRemoveTextAreaValue) {
698
+ sImportedFileText = null;
699
+ EasyFillDialogController.resetFileState(oController);
700
+ }
544
701
  }
545
702
 
546
703
  /**