barsa-sap-ui 2.1.1 → 2.1.3

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 (243) hide show
  1. package/fesm2022/barsa-sap-ui.mjs +419 -367
  2. package/fesm2022/barsa-sap-ui.mjs.map +1 -1
  3. package/lib/barsa-bar-download-file/barsa-bar-download-file.component.d.ts +10 -0
  4. package/lib/barsa-sap-ui.module.d.ts +237 -236
  5. package/lib/file-viewer-popover/file-viewer-popover.component.d.ts +1 -1
  6. package/lib/ui-map/ui-map.component.d.ts +2 -0
  7. package/package.json +3 -5
  8. package/public-api.d.ts +1 -0
  9. package/esm2022/barsa-sap-ui.mjs +0 -5
  10. package/esm2022/lib/apply-conditional-formmatings.directive.mjs +0 -89
  11. package/esm2022/lib/avatar-size.pipe.mjs +0 -40
  12. package/esm2022/lib/barsa-answer-card/barsa-answer-card.component.mjs +0 -41
  13. package/esm2022/lib/barsa-asp-viewer/barsa-asp-viewer.component.mjs +0 -145
  14. package/esm2022/lib/barsa-bar-panel/barsa-bar-panel.component.mjs +0 -23
  15. package/esm2022/lib/barsa-base-panel/barsa-base-layout-panel.component.mjs +0 -29
  16. package/esm2022/lib/barsa-breadcrumbs/barsa-breadcrumbs.component.mjs +0 -24
  17. package/esm2022/lib/barsa-card-layout-panel/barsa-card-layout-panel.component.mjs +0 -24
  18. package/esm2022/lib/barsa-card-row-payam/barsa-card-row-payam.component.mjs +0 -31
  19. package/esm2022/lib/barsa-cartable-form/barsa-cartable-form.component.mjs +0 -41
  20. package/esm2022/lib/barsa-cartable-template/barsa-cartable-template.component.mjs +0 -24
  21. package/esm2022/lib/barsa-chat/barsa-chat.component.mjs +0 -242
  22. package/esm2022/lib/barsa-chat/chat.model.mjs +0 -8
  23. package/esm2022/lib/barsa-chat-content/barsa-chat-content.component.mjs +0 -13
  24. package/esm2022/lib/barsa-chat-content-toolbar/barsa-chat-content-toolbar.component.mjs +0 -22
  25. package/esm2022/lib/barsa-chat-list/barsa-chat-list.component.mjs +0 -66
  26. package/esm2022/lib/barsa-chat-message/barsa-chat-message.component.mjs +0 -78
  27. package/esm2022/lib/barsa-chat-thread/barsa-chat-thread.component.mjs +0 -22
  28. package/esm2022/lib/barsa-chat-threads-list/barsa-chat-threads-list.component.mjs +0 -13
  29. package/esm2022/lib/barsa-chat-threads-list-toolbar/barsa-chat-threads-list-toolbar.component.mjs +0 -15
  30. package/esm2022/lib/barsa-chip/barsa-chip.component.mjs +0 -72
  31. package/esm2022/lib/barsa-column-indicator/barsa-column-indicator.component.mjs +0 -23
  32. package/esm2022/lib/barsa-column-rownumber/barsa-column-rownumber.component.mjs +0 -14
  33. package/esm2022/lib/barsa-custom-inline-edit/barsa-custom-inline-edit.component.mjs +0 -14
  34. package/esm2022/lib/barsa-custom-inline-edit-row/barsa-custom-inline-edit-row.component.mjs +0 -26
  35. package/esm2022/lib/barsa-date-time-picker/barsa-date-time-picker.component.mjs +0 -71
  36. package/esm2022/lib/barsa-dynamic-field/barsa-dynamic-field.component.mjs +0 -40
  37. package/esm2022/lib/barsa-enum-menu-button/barsa-enum-menu-button.component.mjs +0 -61
  38. package/esm2022/lib/barsa-field-key-value/barsa-field-key-value.component.mjs +0 -45
  39. package/esm2022/lib/barsa-form-side-content/barsa-form-side-content.component.mjs +0 -58
  40. package/esm2022/lib/barsa-grid-layout-panel/barsa-grid-layout-panel.component.mjs +0 -27
  41. package/esm2022/lib/barsa-group-cartable/barsa-cartable-group.component.mjs +0 -94
  42. package/esm2022/lib/barsa-horizontal-flex-panel/barsa-horizontal-flex-panel.component.mjs +0 -22
  43. package/esm2022/lib/barsa-linkable-items-panel/barsa-linkable-items-panel.component.mjs +0 -37
  44. package/esm2022/lib/barsa-list-file-linear/barsa-list-file-linear.component.mjs +0 -41
  45. package/esm2022/lib/barsa-list-file-linear-gmail/barsa-list-file-linear-gmail.component.mjs +0 -29
  46. package/esm2022/lib/barsa-list-layout-panel/barsa-list-layout-panel.component.mjs +0 -23
  47. package/esm2022/lib/barsa-modal/barsa-modal.component.mjs +0 -43
  48. package/esm2022/lib/barsa-monaco-editor/barsa-monaco-editor.component.mjs +0 -83
  49. package/esm2022/lib/barsa-network-offline/barsa-network-offline.component.mjs +0 -57
  50. package/esm2022/lib/barsa-pishnamayesh-payam/barsa-pishnamayesh-payam.component.mjs +0 -159
  51. package/esm2022/lib/barsa-question-answer-comments-section/barsa-question-answer-comments-section.component.mjs +0 -17
  52. package/esm2022/lib/barsa-question-answer-content-actions-section/barsa-question-answer-content-actions-section.component.mjs +0 -30
  53. package/esm2022/lib/barsa-question-answer-creator-time-section/barsa-question-answer-creator-time-section.component.mjs +0 -14
  54. package/esm2022/lib/barsa-question-answer-form/barsa-question-answer-form.component.mjs +0 -34
  55. package/esm2022/lib/barsa-question-answer-form-add-comment/barsa-question-answer-form-add-comment.component.mjs +0 -46
  56. package/esm2022/lib/barsa-question-answer-vote-section/barsa-question-answer-vote-section.component.mjs +0 -79
  57. package/esm2022/lib/barsa-question-post/barsa-question-post.component.mjs +0 -30
  58. package/esm2022/lib/barsa-report-card-flex-view/barsa-report-card-flex-view.component.mjs +0 -31
  59. package/esm2022/lib/barsa-report-checkbox-switch-button/barsa-report-checkbox-switch-button.component.mjs +0 -28
  60. package/esm2022/lib/barsa-report-one-of-list/barsa-report-one-of-list.component.mjs +0 -102
  61. package/esm2022/lib/barsa-row-inline-actionlist/barsa-row-inline-actionlist.component.mjs +0 -26
  62. package/esm2022/lib/barsa-sap-ui-routing.module.mjs +0 -18
  63. package/esm2022/lib/barsa-sap-ui.module.mjs +0 -374
  64. package/esm2022/lib/barsa-search-form/barsa-search-form.component.mjs +0 -29
  65. package/esm2022/lib/barsa-simple-form/barsa-simple-form.component.mjs +0 -170
  66. package/esm2022/lib/barsa-tab-route-manager/barsa-tab-route-manager.component.mjs +0 -18
  67. package/esm2022/lib/barsa-table-column/barsa-table-column.component.mjs +0 -29
  68. package/esm2022/lib/barsa-table-header/barsa-table-header.component.mjs +0 -222
  69. package/esm2022/lib/barsa-table-row/barsa-table-row.component.mjs +0 -87
  70. package/esm2022/lib/barsa-tag-categories/barsa-tag-categories.component.mjs +0 -60
  71. package/esm2022/lib/barsa-tag-chip/barsa-tag-chip.component.mjs +0 -26
  72. package/esm2022/lib/barsa-tags-category-row/barsa-tags-category-row.component.mjs +0 -23
  73. package/esm2022/lib/barsa-text-ellipsis/barsa-text-ellipsis.component.mjs +0 -37
  74. package/esm2022/lib/barsa-tinyemce/barsa-tinyemce.component.mjs +0 -418
  75. package/esm2022/lib/barsa-toolbaritem-search/barsa-toolbaritem-search.component.mjs +0 -36
  76. package/esm2022/lib/barsa-tree-item/barsa-tree-item.component.mjs +0 -153
  77. package/esm2022/lib/barsa-tree-item/node-has-one-depth-level.pipe.mjs +0 -19
  78. package/esm2022/lib/barsa-ulv-main/barsa-ulv-main.component.mjs +0 -216
  79. package/esm2022/lib/blob-viewer/blob-viewer.component.mjs +0 -74
  80. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -50
  81. package/esm2022/lib/captcha-field/captcha-field.component.mjs +0 -28
  82. package/esm2022/lib/card-item/card-item.component.mjs +0 -64
  83. package/esm2022/lib/card-view-content/card-view-content.component.mjs +0 -46
  84. package/esm2022/lib/col-renderer.directive.mjs +0 -46
  85. package/esm2022/lib/column-matrix-renderer/column-matrix-renderer.component.mjs +0 -56
  86. package/esm2022/lib/column-matrix-renderer/matrix-value.pipe.mjs +0 -60
  87. package/esm2022/lib/column-renderer/column-renderer.component.mjs +0 -88
  88. package/esm2022/lib/constants.mjs +0 -425
  89. package/esm2022/lib/custom-date-time/custom-date-time.component.mjs +0 -41
  90. package/esm2022/lib/device-info-field-base.mjs +0 -23
  91. package/esm2022/lib/dialog-handler.directive.mjs +0 -28
  92. package/esm2022/lib/download-files.directive.mjs +0 -33
  93. package/esm2022/lib/dynamic-page-size.pipe.mjs +0 -26
  94. package/esm2022/lib/file-in-dialog/file-in-dialog.component.mjs +0 -44
  95. package/esm2022/lib/file-viewer/file-viewer.component.mjs +0 -47
  96. package/esm2022/lib/file-viewer-content/file-viewer-content.component.mjs +0 -71
  97. package/esm2022/lib/file-viewer-popover/file-viewer-popover.component.mjs +0 -39
  98. package/esm2022/lib/form-dialog/form-dialog.component.mjs +0 -171
  99. package/esm2022/lib/form-dialog-less/form-dialog-less.component.mjs +0 -50
  100. package/esm2022/lib/form-toolbar/form-toolbar.component.mjs +0 -62
  101. package/esm2022/lib/form-toolbar-button/form-toolbar-button.component.mjs +0 -45
  102. package/esm2022/lib/form-wizard/form-wizard.component.mjs +0 -21
  103. package/esm2022/lib/fullscreen-dialog.directive.mjs +0 -59
  104. package/esm2022/lib/fullscreen-files.directive.mjs +0 -42
  105. package/esm2022/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.mjs +0 -213
  106. package/esm2022/lib/gantt-dhtml-chart-view/gantt-dhtml-chart-view.component.mjs +0 -215
  107. package/esm2022/lib/global-search/global-search.component.mjs +0 -27
  108. package/esm2022/lib/global-search-module/global-search-module.component.mjs +0 -29
  109. package/esm2022/lib/global-search-panel/global-search-panel.component.mjs +0 -25
  110. package/esm2022/lib/header-avatar/header-avatar.component.mjs +0 -18
  111. package/esm2022/lib/htree-create-new/htree-create-new.component.mjs +0 -48
  112. package/esm2022/lib/hyperlink/hyperlink.component.mjs +0 -23
  113. package/esm2022/lib/index.mjs +0 -543
  114. package/esm2022/lib/inline-save-and-cancel/inline-save-and-cancel.component.mjs +0 -32
  115. package/esm2022/lib/layout-actions/layout-actions.component.mjs +0 -70
  116. package/esm2022/lib/layout-control/layout-control.component.mjs +0 -302
  117. package/esm2022/lib/layout-wizard/layout-wizard.component.mjs +0 -183
  118. package/esm2022/lib/list-item/list-item.component.mjs +0 -34
  119. package/esm2022/lib/ly-empty-space/ly-empty-space.component.mjs +0 -42
  120. package/esm2022/lib/ly-horizontal-layout/ly-horizontal-layout.component.mjs +0 -82
  121. package/esm2022/lib/ly-label/ly-label.component.mjs +0 -37
  122. package/esm2022/lib/ly-layout-container/ly-layout-container.component.mjs +0 -83
  123. package/esm2022/lib/ly-layout-container-of-root/ly-layout-container-of-root.component.mjs +0 -17
  124. package/esm2022/lib/ly-layout-field-label/ly-layout-field-label.component.mjs +0 -24
  125. package/esm2022/lib/ly-layout-panel/ly-layout-panel.component.mjs +0 -83
  126. package/esm2022/lib/ly-line/ly-line.component.mjs +0 -56
  127. package/esm2022/lib/ly-simple-label/ly-simple-label.component.mjs +0 -22
  128. package/esm2022/lib/ly-tab-container/ly-tab-container.component.mjs +0 -45
  129. package/esm2022/lib/ly-tab-page/ly-tab-page.component.mjs +0 -44
  130. package/esm2022/lib/ly-vertical-layout/ly-vertical-layout.component.mjs +0 -51
  131. package/esm2022/lib/manage-filters-report/manage-filters-report.component.mjs +0 -43
  132. package/esm2022/lib/mask/mask.component.mjs +0 -22
  133. package/esm2022/lib/message-strip/message-strip.component.mjs +0 -28
  134. package/esm2022/lib/models/grid-data-provider.mjs +0 -114
  135. package/esm2022/lib/models/grid-view.mjs +0 -2
  136. package/esm2022/lib/models/index.mjs +0 -2
  137. package/esm2022/lib/no-data/no-data.component.mjs +0 -31
  138. package/esm2022/lib/notification-item/notification-item.component.mjs +0 -57
  139. package/esm2022/lib/notification-popup.service.mjs +0 -92
  140. package/esm2022/lib/object-status-icon.pipe.mjs +0 -26
  141. package/esm2022/lib/progress-indicator/progress-indicator.component.mjs +0 -18
  142. package/esm2022/lib/report-navigator/report-navigator.component.mjs +0 -68
  143. package/esm2022/lib/report-new-top-form/report-new-top-form.component.mjs +0 -60
  144. package/esm2022/lib/report-search-fields-hidden-settings/report-search-fields-hidden-settings.component.mjs +0 -35
  145. package/esm2022/lib/report-search-fields-manage/report-search-fields-manage.component.mjs +0 -97
  146. package/esm2022/lib/report-search-panel-save/report-search-panel-save.component.mjs +0 -88
  147. package/esm2022/lib/report-tree-base.mjs +0 -386
  148. package/esm2022/lib/report-view-renderer.directive.mjs +0 -385
  149. package/esm2022/lib/responsive-toolbar/responsive-toolbar.component.mjs +0 -50
  150. package/esm2022/lib/responsive-toolbar-renderer/responsive-toolbar-renderer.component.mjs +0 -84
  151. package/esm2022/lib/rich-text-static/rich-text-static.component.mjs +0 -72
  152. package/esm2022/lib/sap-font-class.pipe.mjs +0 -29
  153. package/esm2022/lib/sap-font.pipe.mjs +0 -29
  154. package/esm2022/lib/sap-size.pipe.mjs +0 -27
  155. package/esm2022/lib/sap-ui-report-base.component.mjs +0 -805
  156. package/esm2022/lib/search-panel/search-panel.component.mjs +0 -63
  157. package/esm2022/lib/static-text/static-text.component.mjs +0 -15
  158. package/esm2022/lib/table-th.directive.mjs +0 -86
  159. package/esm2022/lib/title/title.component.mjs +0 -15
  160. package/esm2022/lib/ui-asp-report-viewer/ui-asp-report-viewer.component.mjs +0 -34
  161. package/esm2022/lib/ui-bpmn-viewer/ui-bpmn-viewer.component.mjs +0 -33
  162. package/esm2022/lib/ui-button/ui-button.component.mjs +0 -32
  163. package/esm2022/lib/ui-calendar/ui-calendar.component.mjs +0 -53
  164. package/esm2022/lib/ui-card-view/ui-card-view.component.mjs +0 -57
  165. package/esm2022/lib/ui-card-view-horizontal-group/ui-card-view-horizontal-group.component.mjs +0 -42
  166. package/esm2022/lib/ui-check-box/ui-check-box.component.mjs +0 -39
  167. package/esm2022/lib/ui-color-ui/ui-color-ui.component.mjs +0 -50
  168. package/esm2022/lib/ui-container-with-button/ui-container-with-button.component.mjs +0 -38
  169. package/esm2022/lib/ui-date-range-ex/ui-date-range-ex.component.mjs +0 -191
  170. package/esm2022/lib/ui-date-time/ui-date-time.component.mjs +0 -150
  171. package/esm2022/lib/ui-editable-grid/ui-editable-grid.component.mjs +0 -110
  172. package/esm2022/lib/ui-exception-form/ui-exception-form.component.mjs +0 -53
  173. package/esm2022/lib/ui-file-linear-list-box/ui-file-linear-list-box.component.mjs +0 -121
  174. package/esm2022/lib/ui-form-panel/ui-form-panel.component.mjs +0 -100
  175. package/esm2022/lib/ui-gantt-chart/ui-gantt-chart.component.mjs +0 -32
  176. package/esm2022/lib/ui-graph/ui-graph.component.mjs +0 -17
  177. package/esm2022/lib/ui-grid/ui-grid.component.mjs +0 -25
  178. package/esm2022/lib/ui-grid-columns/ui-grid-columns.component.mjs +0 -43
  179. package/esm2022/lib/ui-grid-filter-item/ui-grid-filter-item.component.mjs +0 -66
  180. package/esm2022/lib/ui-grid-filter-settings/ui-grid-filter-settings.component.mjs +0 -75
  181. package/esm2022/lib/ui-grid-sort-item/ui-grid-sort-item.component.mjs +0 -58
  182. package/esm2022/lib/ui-grid-sort-setting/ui-grid-sort-setting.component.mjs +0 -123
  183. package/esm2022/lib/ui-html-viewer/ui-html-viewer.component.mjs +0 -16
  184. package/esm2022/lib/ui-info-bar-panel/ui-info-bar-panel.component.mjs +0 -11
  185. package/esm2022/lib/ui-label/ui-label.component.mjs +0 -12
  186. package/esm2022/lib/ui-linear-list-container-with-button/ui-linear-list-container-with-button.component.mjs +0 -379
  187. package/esm2022/lib/ui-list-view/ui-list-view.component.mjs +0 -84
  188. package/esm2022/lib/ui-map/ui-map.component.mjs +0 -58
  189. package/esm2022/lib/ui-matrix-view/ui-matrix-view.component.mjs +0 -124
  190. package/esm2022/lib/ui-mo-info-combo-viewer/ui-mo-info-combo-viewer.component.mjs +0 -19
  191. package/esm2022/lib/ui-mo-info-general-object-ui/ui-mo-info-general-object-ui.component.mjs +0 -14
  192. package/esm2022/lib/ui-mo-info-sub-form-ui/ui-mo-info-sub-form-ui.component.mjs +0 -55
  193. package/esm2022/lib/ui-mo-info-ulv-combo/ui-mo-info-ulv-combo.component.mjs +0 -429
  194. package/esm2022/lib/ui-monaco-editor/ui-monaco-editor.component.mjs +0 -28
  195. package/esm2022/lib/ui-multi-select-card/ui-multi-select-card.component.mjs +0 -37
  196. package/esm2022/lib/ui-multi-select-checkbox/ui-multi-select-checkbox.component.mjs +0 -59
  197. package/esm2022/lib/ui-multi-select-combo/ui-multi-select-combo.component.mjs +0 -93
  198. package/esm2022/lib/ui-multi-select-radio/ui-multi-select-radio.component.mjs +0 -36
  199. package/esm2022/lib/ui-multi-select-slider/ui-multi-select-slider.component.mjs +0 -56
  200. package/esm2022/lib/ui-multi-select-smile/ui-multi-select-smile.component.mjs +0 -28
  201. package/esm2022/lib/ui-num-decimal-ui/ui-num-decimal-ui.component.mjs +0 -33
  202. package/esm2022/lib/ui-num-int-slider/ui-num-int-slider.component.mjs +0 -27
  203. package/esm2022/lib/ui-num-int-ui/ui-num-int-ui.component.mjs +0 -21
  204. package/esm2022/lib/ui-pdf-viewer/ui-pdf-viewer.component.mjs +0 -268
  205. package/esm2022/lib/ui-picture-file/ui-picture-file.component.mjs +0 -101
  206. package/esm2022/lib/ui-pictures-info/ui-pictures-info.component.mjs +0 -261
  207. package/esm2022/lib/ui-radio-group/ui-radio-group.component.mjs +0 -48
  208. package/esm2022/lib/ui-read-only-field/ui-read-only-field.component.mjs +0 -36
  209. package/esm2022/lib/ui-report-container/ui-report-container.component.mjs +0 -46
  210. package/esm2022/lib/ui-search-command-info-ui/ui-search-command-info-ui.component.mjs +0 -24
  211. package/esm2022/lib/ui-simple-combo/ui-simple-combo.component.mjs +0 -55
  212. package/esm2022/lib/ui-single-picture/ui-single-picture.component.mjs +0 -36
  213. package/esm2022/lib/ui-switch-button/ui-switch-button.component.mjs +0 -20
  214. package/esm2022/lib/ui-table-view/ui-table-view.component.mjs +0 -289
  215. package/esm2022/lib/ui-text-area/ui-text-area.component.mjs +0 -49
  216. package/esm2022/lib/ui-text-field/ui-text-field.component.mjs +0 -52
  217. package/esm2022/lib/ui-text-field-auto-complete/ui-text-field-auto-complete.component.mjs +0 -48
  218. package/esm2022/lib/ui-time-span/ui-time-span.component.mjs +0 -24
  219. package/esm2022/lib/ui-tinymce/ui-tinymce.component.mjs +0 -53
  220. package/esm2022/lib/ui-tree/ui-tree.component.mjs +0 -114
  221. package/esm2022/lib/ui-tree-view/ui-tree-view.component.mjs +0 -100
  222. package/esm2022/lib/ui-ulv-form-multi-select-ui/ui-ulv-form-multi-select-ui.component.mjs +0 -23
  223. package/esm2022/lib/ui-ulv-main-ui/ui-ulv-main-ui.component.mjs +0 -306
  224. package/esm2022/lib/ui-workflow-panel-ui/ui-workflow-panel-ui.component.mjs +0 -25
  225. package/esm2022/lib/ul-loading-mask-ui/ul-loading-mask-ui.component.mjs +0 -93
  226. package/esm2022/lib/ul-msg-box-adapter/ul-msg-box-adapter.component.mjs +0 -119
  227. package/esm2022/lib/ul-notify-popup/ul-notify-popup.component.mjs +0 -32
  228. package/esm2022/lib/ul-toast-adapter/ul-toast-adapter.component.mjs +0 -48
  229. package/esm2022/lib/ulv-column-settings/ulv-column-settings.component.mjs +0 -53
  230. package/esm2022/lib/ulv-context-menu/ulv-context-menu.component.mjs +0 -114
  231. package/esm2022/lib/ulv-filter-settings/ulv-filter-settings.component.mjs +0 -43
  232. package/esm2022/lib/ulv-form-multi-select/ulv-form-multi-select.component.mjs +0 -196
  233. package/esm2022/lib/ulv-groupby-settings/ulv-groupby-settings.component.mjs +0 -44
  234. package/esm2022/lib/ulv-paging/ulv-paging.component.mjs +0 -84
  235. package/esm2022/lib/ulv-selection/ulv-selection.component.mjs +0 -65
  236. package/esm2022/lib/ulv-settings/ulv-settings.component.mjs +0 -116
  237. package/esm2022/lib/ulv-sort-settings/ulv-sort-settings.component.mjs +0 -54
  238. package/esm2022/lib/ulv-toolbar/ulv-toolbar.component.mjs +0 -174
  239. package/esm2022/lib/upload-file-status.pipe.mjs +0 -28
  240. package/esm2022/lib/util-chat-time-badge.pipe.mjs +0 -18
  241. package/esm2022/lib/util-date-to-hh-mm.pipe.mjs +0 -23
  242. package/esm2022/lib/wizard-layout.directive.mjs +0 -103
  243. package/esm2022/public-api.mjs +0 -233
@@ -1,385 +0,0 @@
1
- import { Directive, EventEmitter, Input, Output } from '@angular/core';
2
- import { takeUntil } from 'rxjs/operators';
3
- import { BaseDirective } from 'barsa-novin-ray-core';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "barsa-novin-ray-core";
6
- export class ReportViewRendererDirective extends BaseDirective {
7
- constructor(_portalService, _ulvMainService, _vcr, _injector, _el) {
8
- super(_el);
9
- this._portalService = _portalService;
10
- this._ulvMainService = _ulvMainService;
11
- this._vcr = _vcr;
12
- this._injector = _injector;
13
- this._el = _el;
14
- this.editFormPanelCancel = new EventEmitter();
15
- this.editFormPanelValueChange = new EventEmitter();
16
- this.resetWorkflowState = new EventEmitter();
17
- this.ulvCommandClick = new EventEmitter();
18
- this.sortAscending = new EventEmitter();
19
- this.sortDescending = new EventEmitter();
20
- this.filter = new EventEmitter();
21
- this.deselectAll = new EventEmitter();
22
- this.rowCheck = new EventEmitter();
23
- this.rowClick = new EventEmitter();
24
- this.executeToolbarButton = new EventEmitter();
25
- this.expandClick = new EventEmitter();
26
- this.trackBySelectedFn = new EventEmitter();
27
- this.cartableFormClosed = new EventEmitter();
28
- this.createNewMo = new EventEmitter();
29
- this.updateMo = new EventEmitter();
30
- this.hasDetailsInRow = new EventEmitter();
31
- this.allCheckbox = new EventEmitter();
32
- this.mandatory = new EventEmitter();
33
- this.editFormPanelSave = new EventEmitter();
34
- this.columnResized = new EventEmitter();
35
- this.selectNextInlineRecord = new EventEmitter();
36
- this.workflowShareButtons = new EventEmitter();
37
- this.escapeKey = new EventEmitter();
38
- this.resetGridSettings = new EventEmitter();
39
- }
40
- ngOnChanges(changes) {
41
- const { view } = changes;
42
- if (view && !view.firstChange) {
43
- this._reportViewRef.destroy();
44
- this._vcr.clear();
45
- this._insertView(view.currentValue);
46
- }
47
- else {
48
- if (this._reportViewRef) {
49
- this._reportViewRef.instance.ngOnChanges(changes);
50
- }
51
- }
52
- }
53
- ngOnInit() {
54
- super.ngOnInit();
55
- this._insertView(this.view);
56
- }
57
- ngOnDestroy() {
58
- super.ngOnDestroy();
59
- this._reportViewRef?.destroy();
60
- }
61
- _insertView(view) {
62
- if (!view) {
63
- return;
64
- }
65
- const { Module, ModuleFileName, Name, Selector } = view.UiComponent;
66
- this._ulvMainService.setUiViewerClass(Selector);
67
- this._portalService
68
- .getComponent(Module, ModuleFileName, Name, Selector, this._injector)
69
- .pipe(takeUntil(this._onDestroy$))
70
- .subscribe((componentRef) => {
71
- const instance = componentRef.instance;
72
- instance.cartableTemplates = this.cartableTemplates;
73
- instance.cartableChildsMo = this.cartableChildsMo;
74
- instance.moDataList = this.moDataList;
75
- instance.contextSetting = this.contextSetting;
76
- instance.groupby = this.groupby;
77
- instance.groupSummary = this.groupSummary;
78
- instance.simpleInlineEdit = this.simpleInlineEdit;
79
- instance.UlvMainCtrlr = this.UlvMainCtrlr;
80
- instance.pagingSetting = this.pagingSetting;
81
- instance.hideSearchpanel = this.hideSearchpanel;
82
- instance.customFieldInfo = this.customFieldInfo;
83
- instance.disableResponsive = this.disableResponsive;
84
- instance.toolbarButtons = this.toolbarButtons;
85
- instance.popin = this.popin;
86
- instance.contextView = this.contextView;
87
- instance.isCheckList = this.isCheckList;
88
- instance.toolbarButtons = this.toolbarButtons;
89
- instance.columns = this.columns;
90
- instance.listEditViewId = this.listEditViewId;
91
- instance.typeViewId = this.typeViewId;
92
- instance.gridFreeColumnSizing = this.gridFreeColumnSizing;
93
- instance.inDialog = this.inDialog;
94
- instance.hasInlineDeleteButton = this.hasInlineDeleteButton;
95
- instance.hasInlineEditButton = this.hasInlineEditButton;
96
- instance.isMultiSelect = this.isMultiSelect;
97
- instance.columnsCount = this.columnsCount;
98
- instance.hideToolbar = this.hideToolbar;
99
- instance.hideTitle = this.hideTitle;
100
- instance.extraRelation = this.extraRelation;
101
- instance.secondaryColumns = this.secondaryColumns;
102
- instance.contextMenuItems = this.contextMenuItems;
103
- instance.conditionalFormats = this.conditionalFormats;
104
- instance.disableOverflowContextMenu = this.disableOverflowContextMenu;
105
- instance.typeDefId = this.typeDefId;
106
- instance.reportId = this.reportId;
107
- instance.deviceName = this.deviceName;
108
- instance.deviceSize = this.deviceSize;
109
- instance.mobileOrTablet = this.mobileOrTablet;
110
- instance.containerWidth = this.containerWidth;
111
- instance.columnsCount = this.columnsCount;
112
- instance.selectedCount = this.selectedCount;
113
- instance.hideOpenIcon = this.hideOpenIcon;
114
- instance.openOnClick = this.openOnClick;
115
- instance.access = this.access;
116
- instance.title = this.title;
117
- instance.hasSummary = this.hasSummary;
118
- instance.contentDensity = this.contentDensity;
119
- instance.relationList = this.relationList;
120
- instance.allColumns = this.allColumns ?? this.columns;
121
- instance.viewSetting = view.UiComponent.Settings;
122
- instance.inlineEditMode = this.inlineEditMode;
123
- instance.onlyInlineEdit = this.onlyInlineEdit;
124
- instance.allowInlineEdit = this.allowInlineEdit;
125
- instance.formSetting = this.formSetting;
126
- instance.navigationArrow = this.navigationArrow;
127
- instance.selectedMo = this.selectedMo;
128
- instance.hasSelected = this.hasSelected;
129
- instance.rtl = this.rtl;
130
- instance.escapeKey?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
131
- this.escapeKey.emit(mo);
132
- });
133
- instance.resetWorkflowState?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
134
- this.resetWorkflowState.emit(mo);
135
- });
136
- instance.editFormPanelValueChange
137
- ?.pipe(takeUntil(this._onDestroy$))
138
- .subscribe(({ mo, fieldDbName }) => {
139
- this.editFormPanelValueChange.emit({ mo, fieldDbName });
140
- });
141
- instance.selectNextInlineRecord?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
142
- this.selectNextInlineRecord.emit(mo);
143
- });
144
- instance.editFormPanelCancel?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
145
- this.editFormPanelCancel.emit(mo);
146
- });
147
- instance.ulvCommandClick?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
148
- this.ulvCommandClick.emit(e);
149
- });
150
- instance.sortAscending?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
151
- this.sortAscending.emit(e);
152
- });
153
- instance.sortDescending?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
154
- this.sortDescending.emit(e);
155
- });
156
- instance.filter?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
157
- this.filter.emit(e);
158
- });
159
- instance.columnResized?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
160
- this.columnResized.emit(e);
161
- });
162
- instance.rowCheck?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
163
- this.rowCheck.emit(e);
164
- });
165
- instance.deselectAll?.pipe(takeUntil(this._onDestroy$)).subscribe(() => {
166
- this.deselectAll.emit();
167
- });
168
- instance.rowClick?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
169
- this.rowClick.emit(e);
170
- });
171
- instance.expandClick?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
172
- this.expandClick.emit(e);
173
- });
174
- instance.allCheckbox?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
175
- this.allCheckbox.emit(e);
176
- });
177
- instance.editFormPanelSave?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
178
- this.editFormPanelSave.emit(mo);
179
- });
180
- instance.cartableFormClosed?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
181
- this.cartableFormClosed.emit(e);
182
- });
183
- instance.createNewMo?.pipe(takeUntil(this._onDestroy$)).subscribe(() => {
184
- this.createNewMo.emit();
185
- });
186
- instance.hasDetailsInRow?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
187
- this.hasDetailsInRow.emit(mo);
188
- });
189
- instance.updateMo?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
190
- this.updateMo.emit(mo);
191
- });
192
- instance.mandatory?.pipe(takeUntil(this._onDestroy$)).subscribe((isValid) => {
193
- this.mandatory.emit(isValid);
194
- });
195
- instance.executeToolbarButton?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
196
- this.executeToolbarButton.emit(e);
197
- });
198
- instance.resetGridSettings?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
199
- this.resetGridSettings.emit();
200
- });
201
- instance.workflowShareButtons
202
- ?.pipe(takeUntil(this._onDestroy$))
203
- .subscribe((e) => {
204
- this.workflowShareButtons.emit(e);
205
- });
206
- this._vcr.insert(componentRef.hostView);
207
- this._reportViewRef = componentRef;
208
- });
209
- }
210
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportViewRendererDirective, deps: [{ token: i1.PortalService }, { token: i1.UlvMainService }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
211
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ReportViewRendererDirective, selector: "[reportViewRenderer]", inputs: { view: "view", moDataList: "moDataList", allChecked: "allChecked", contextSetting: "contextSetting", groupby: "groupby", isCheckList: "isCheckList", hasInlineDeleteButton: "hasInlineDeleteButton", hasInlineEditButton: "hasInlineEditButton", selectedCount: "selectedCount", hideToolbar: "hideToolbar", toolbarButtons: "toolbarButtons", pagingSetting: "pagingSetting", UlvMainCtrlr: "UlvMainCtrlr", hasSummary: "hasSummary", relationList: "relationList", columns: "columns", columnsCount: "columnsCount", secondaryColumns: "secondaryColumns", contextMenuItems: "contextMenuItems", conditionalFormats: "conditionalFormats", deviceName: "deviceName", deviceSize: "deviceSize", mobileOrTablet: "mobileOrTablet", access: "access", title: "title", customFieldInfo: "customFieldInfo", selectedMo: "selectedMo", allColumns: "allColumns", viewSetting: "viewSetting", inlineEditMode: "inlineEditMode", onlyInlineEdit: "onlyInlineEdit", allowInlineEdit: "allowInlineEdit", popin: "popin", hasSelected: "hasSelected", formSetting: "formSetting", disableOverflowContextMenu: "disableOverflowContextMenu", navigationArrow: "navigationArrow", typeDefId: "typeDefId", reportId: "reportId", listEditViewId: "listEditViewId", typeViewId: "typeViewId", containerWidth: "containerWidth", extraRelation: "extraRelation", contextView: "contextView", contentDensity: "contentDensity", hideOpenIcon: "hideOpenIcon", hideTitle: "hideTitle", groupSummary: "groupSummary", openOnClick: "openOnClick", inDialog: "inDialog", isMultiSelect: "isMultiSelect", rtl: "rtl", disableResponsive: "disableResponsive", simpleInlineEdit: "simpleInlineEdit", hideSearchpanel: "hideSearchpanel", gridFreeColumnSizing: "gridFreeColumnSizing", cartableTemplates: "cartableTemplates", cartableChildsMo: "cartableChildsMo" }, outputs: { editFormPanelCancel: "editFormPanelCancel", editFormPanelValueChange: "editFormPanelValueChange", resetWorkflowState: "resetWorkflowState", ulvCommandClick: "ulvCommandClick", sortAscending: "sortAscending", sortDescending: "sortDescending", filter: "filter", deselectAll: "deselectAll", rowCheck: "rowCheck", rowClick: "rowClick", executeToolbarButton: "executeToolbarButton", expandClick: "expandClick", trackBySelectedFn: "trackBySelectedFn", cartableFormClosed: "cartableFormClosed", createNewMo: "createNewMo", updateMo: "updateMo", hasDetailsInRow: "hasDetailsInRow", allCheckbox: "allCheckbox", mandatory: "mandatory", editFormPanelSave: "editFormPanelSave", columnResized: "columnResized", selectNextInlineRecord: "selectNextInlineRecord", workflowShareButtons: "workflowShareButtons", escapeKey: "escapeKey", resetGridSettings: "resetGridSettings" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
212
- }
213
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportViewRendererDirective, decorators: [{
214
- type: Directive,
215
- args: [{
216
- selector: '[reportViewRenderer]'
217
- }]
218
- }], ctorParameters: () => [{ type: i1.PortalService }, { type: i1.UlvMainService }, { type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i0.ElementRef }], propDecorators: { view: [{
219
- type: Input
220
- }], moDataList: [{
221
- type: Input
222
- }], allChecked: [{
223
- type: Input
224
- }], contextSetting: [{
225
- type: Input
226
- }], groupby: [{
227
- type: Input
228
- }], isCheckList: [{
229
- type: Input
230
- }], hasInlineDeleteButton: [{
231
- type: Input
232
- }], hasInlineEditButton: [{
233
- type: Input
234
- }], selectedCount: [{
235
- type: Input
236
- }], hideToolbar: [{
237
- type: Input
238
- }], toolbarButtons: [{
239
- type: Input
240
- }], pagingSetting: [{
241
- type: Input
242
- }], UlvMainCtrlr: [{
243
- type: Input
244
- }], hasSummary: [{
245
- type: Input
246
- }], relationList: [{
247
- type: Input
248
- }], columns: [{
249
- type: Input
250
- }], columnsCount: [{
251
- type: Input
252
- }], secondaryColumns: [{
253
- type: Input
254
- }], contextMenuItems: [{
255
- type: Input
256
- }], conditionalFormats: [{
257
- type: Input
258
- }], deviceName: [{
259
- type: Input
260
- }], deviceSize: [{
261
- type: Input
262
- }], mobileOrTablet: [{
263
- type: Input
264
- }], access: [{
265
- type: Input
266
- }], title: [{
267
- type: Input
268
- }], customFieldInfo: [{
269
- type: Input
270
- }], selectedMo: [{
271
- type: Input
272
- }], allColumns: [{
273
- type: Input
274
- }], viewSetting: [{
275
- type: Input
276
- }], inlineEditMode: [{
277
- type: Input
278
- }], onlyInlineEdit: [{
279
- type: Input
280
- }], allowInlineEdit: [{
281
- type: Input
282
- }], popin: [{
283
- type: Input
284
- }], hasSelected: [{
285
- type: Input
286
- }], formSetting: [{
287
- type: Input
288
- }], disableOverflowContextMenu: [{
289
- type: Input
290
- }], navigationArrow: [{
291
- type: Input
292
- }], typeDefId: [{
293
- type: Input
294
- }], reportId: [{
295
- type: Input
296
- }], listEditViewId: [{
297
- type: Input
298
- }], typeViewId: [{
299
- type: Input
300
- }], containerWidth: [{
301
- type: Input
302
- }], extraRelation: [{
303
- type: Input
304
- }], contextView: [{
305
- type: Input
306
- }], contentDensity: [{
307
- type: Input
308
- }], hideOpenIcon: [{
309
- type: Input
310
- }], hideTitle: [{
311
- type: Input
312
- }], groupSummary: [{
313
- type: Input
314
- }], openOnClick: [{
315
- type: Input
316
- }], inDialog: [{
317
- type: Input
318
- }], isMultiSelect: [{
319
- type: Input
320
- }], rtl: [{
321
- type: Input
322
- }], disableResponsive: [{
323
- type: Input
324
- }], simpleInlineEdit: [{
325
- type: Input
326
- }], hideSearchpanel: [{
327
- type: Input
328
- }], gridFreeColumnSizing: [{
329
- type: Input
330
- }], cartableTemplates: [{
331
- type: Input
332
- }], cartableChildsMo: [{
333
- type: Input
334
- }], editFormPanelCancel: [{
335
- type: Output
336
- }], editFormPanelValueChange: [{
337
- type: Output
338
- }], resetWorkflowState: [{
339
- type: Output
340
- }], ulvCommandClick: [{
341
- type: Output
342
- }], sortAscending: [{
343
- type: Output
344
- }], sortDescending: [{
345
- type: Output
346
- }], filter: [{
347
- type: Output
348
- }], deselectAll: [{
349
- type: Output
350
- }], rowCheck: [{
351
- type: Output
352
- }], rowClick: [{
353
- type: Output
354
- }], executeToolbarButton: [{
355
- type: Output
356
- }], expandClick: [{
357
- type: Output
358
- }], trackBySelectedFn: [{
359
- type: Output
360
- }], cartableFormClosed: [{
361
- type: Output
362
- }], createNewMo: [{
363
- type: Output
364
- }], updateMo: [{
365
- type: Output
366
- }], hasDetailsInRow: [{
367
- type: Output
368
- }], allCheckbox: [{
369
- type: Output
370
- }], mandatory: [{
371
- type: Output
372
- }], editFormPanelSave: [{
373
- type: Output
374
- }], columnResized: [{
375
- type: Output
376
- }], selectNextInlineRecord: [{
377
- type: Output
378
- }], workflowShareButtons: [{
379
- type: Output
380
- }], escapeKey: [{
381
- type: Output
382
- }], resetGridSettings: [{
383
- type: Output
384
- }] } });
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXctcmVuZGVyZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvcmVwb3J0LXZpZXctcmVuZGVyZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFJTCxNQUFNLEVBR1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFFSCxhQUFhLEVBa0JoQixNQUFNLHNCQUFzQixDQUFDOzs7QUFLOUIsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGFBQWE7SUF3RjFELFlBQ1ksY0FBNkIsRUFDN0IsZUFBK0IsRUFDL0IsSUFBc0IsRUFDdEIsU0FBbUIsRUFDakIsR0FBZTtRQUV6QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFOSCxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFDdEIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBakNuQix3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUM5RCw2QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFBcUQsQ0FBQztRQUVqRyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzdDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMxQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVB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QixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudFJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQWJicmV2YXRpb25EZXZpY2VTaXplLFxuICAgIEJhc2VEaXJlY3RpdmUsXG4gICAgY29sdW1uc1Jlc2l6ZWRFdmVudEFyZ3MsXG4gICAgRGVmYXVsdENvbW1hbmRzQWNjZXNzLFxuICAgIERldmljZVNpemUsXG4gICAgRm9ybVNldHRpbmcsXG4gICAgTWVudUl0ZW0sXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBQb3J0YWxTZXJ2aWNlLFxuICAgIFJlbGF0aW9uSXRlbVR5cGUsXG4gICAgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQsXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcbiAgICBTb3J0U2V0dGluZyxcbiAgICBVaVJlcG9ydFZpZXdCYXNlLFxuICAgIFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nLFxuICAgIFNoYXJlQnV0dG9uc0Nob2ljZURlZixcbiAgICBUeXBlVWx2TWFpbkN0cmxyLFxuICAgIFBhZ2luZ1NldHRpbmcsXG4gICAgVWx2TWFpblNlcnZpY2Vcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZXBvcnRWaWV3UmVuZGVyZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnRWaWV3UmVuZGVyZXJEaXJlY3RpdmUgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgdmlldzogVWlSZXBvcnRWaWV3QmFzZTtcbiAgICBASW5wdXQoKSBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgQElucHV0KCkgYWxsQ2hlY2tlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjb250ZXh0U2V0dGluZzogYW55O1xuICAgIEBJbnB1dCgpIGdyb3VwYnk6IFNvcnRTZXR0aW5nW107XG4gICAgQElucHV0KCkgaXNDaGVja0xpc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGFzSW5saW5lRGVsZXRlQnV0dG9uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc0lubGluZUVkaXRCdXR0b246IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2VsZWN0ZWRDb3VudDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGhpZGVUb29sYmFyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJCdXR0b25zOiBNZW51SXRlbVtdO1xuICAgIEBJbnB1dCgpIHBhZ2luZ1NldHRpbmc6IFBhZ2luZ1NldHRpbmc7XG4gICAgQElucHV0KCkgVWx2TWFpbkN0cmxyOiBUeXBlVWx2TWFpbkN0cmxyO1xuICAgIEBJbnB1dCgpIGhhc1N1bW1hcnk6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcmVsYXRpb25MaXN0OiBBcnJheTxSZWxhdGlvbkl0ZW1UeXBlPjtcbiAgICBASW5wdXQoKSBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW107XG4gICAgQElucHV0KCkgY29sdW1uc0NvdW50OiBudW1iZXI7XG4gICAgQElucHV0KCkgc2Vjb25kYXJ5Q29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdO1xuICAgIEBJbnB1dCgpIGNvbnRleHRNZW51SXRlbXM6IE1lbnVJdGVtW107XG4gICAgQElucHV0KCkgY29uZGl0aW9uYWxGb3JtYXRzOiBhbnlbXTtcbiAgICBASW5wdXQoKSBkZXZpY2VOYW1lOiBEZXZpY2VTaXplO1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSBtb2JpbGVPclRhYmxldDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBhY2Nlc3M6IERlZmF1bHRDb21tYW5kc0FjY2VzcztcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGN1c3RvbUZpZWxkSW5mbzogTWV0YW9iamVjdERhdGFNb2RlbCB8IGFueTtcbiAgICBASW5wdXQoKSBzZWxlY3RlZE1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIEBJbnB1dCgpIGFsbENvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXTtcbiAgICBASW5wdXQoKSB2aWV3U2V0dGluZzogVWlSZXBvcnRWaWV3QmFzZVNldHRpbmc7XG4gICAgQElucHV0KCkgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgb25seUlubGluZUVkaXQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgYWxsb3dJbmxpbmVFZGl0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHBvcGluOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGZvcm1TZXR0aW5nOiBGb3JtU2V0dGluZztcbiAgICBASW5wdXQoKSBkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBuYXZpZ2F0aW9uQXJyb3c6IHN0cmluZztcbiAgICBASW5wdXQoKSB0eXBlRGVmSWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSByZXBvcnRJZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxpc3RFZGl0Vmlld0lkOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdHlwZVZpZXdJZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvbnRhaW5lcldpZHRoOiBudW1iZXI7XG4gICAgQElucHV0KCkgZXh0cmFSZWxhdGlvbjogYW55O1xuICAgIEBJbnB1dCgpIGNvbnRleHRWaWV3OiBhbnk7XG4gICAgQElucHV0KCkgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5O1xuICAgIEBJbnB1dCgpIGhpZGVPcGVuSWNvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlVGl0bGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZ3JvdXBTdW1tYXJ5OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG9wZW5PbkNsaWNrOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGluRGlhbG9nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzTXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcnRsOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRpc2FibGVSZXNwb25zaXZlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNpbXBsZUlubGluZUVkaXQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGlkZVNlYXJjaHBhbmVsOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGdyaWRGcmVlQ29sdW1uU2l6aW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNhcnRhYmxlVGVtcGxhdGVzOiB7IFtrZXk6IHN0cmluZ106IEZvcm1TZXR0aW5nIH07XG4gICAgQElucHV0KCkgY2FydGFibGVDaGlsZHNNbzogeyBba2V5OiBzdHJpbmddOiBNZXRhb2JqZWN0RGF0YU1vZGVsIH07XG5cbiAgICBAT3V0cHV0KCkgZWRpdEZvcm1QYW5lbENhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBmaWVsZERiTmFtZT86IHN0cmluZyB9PigpO1xuXG4gICAgQE91dHB1dCgpIHJlc2V0V29ya2Zsb3dTdGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSB1bHZDb21tYW5kQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgc29ydEFzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBzb3J0RGVzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBmaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgZGVzZWxlY3RBbGwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHJvd0NoZWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1vOyBpbmRleDsgY2F1c2U/IH0+KCk7XG4gICAgQE91dHB1dCgpIHJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1vOyBpbmRleCB9PigpO1xuICAgIEBPdXRwdXQoKSBleGVjdXRlVG9vbGJhckJ1dHRvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpdGVtSWQ6IHN0cmluZzsgb3B0aW9ucz86IGFueSB9PigpO1xuICAgIEBPdXRwdXQoKSBleHBhbmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgdHJhY2tCeVNlbGVjdGVkRm4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaW5kZXg7IHJlY29yZCB9PigpO1xuICAgIEBPdXRwdXQoKSBjYXJ0YWJsZUZvcm1DbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaW5kZXg7IG1vIH0+KCk7XG4gICAgQE91dHB1dCgpIGNyZWF0ZU5ld01vID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSB1cGRhdGVNbyA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgaGFzRGV0YWlsc0luUm93ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBhbGxDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgbWFuZGF0b3J5ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBlZGl0Rm9ybVBhbmVsU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgY29sdW1uUmVzaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8Y29sdW1uc1Jlc2l6ZWRFdmVudEFyZ3M+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdE5leHRJbmxpbmVSZWNvcmQgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIHdvcmtmbG93U2hhcmVCdXR0b25zID0gbmV3IEV2ZW50RW1pdHRlcjxTaGFyZUJ1dHRvbnNDaG9pY2VEZWY+KCk7XG4gICAgQE91dHB1dCgpIGVzY2FwZUtleSA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgcmVzZXRHcmlkU2V0dGluZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBfcmVwb3J0Vmlld1JlZjogQ29tcG9uZW50UmVmPFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50PFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nPj47XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3Vsdk1haW5TZXJ2aWNlOiBVbHZNYWluU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfdmNyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoX2VsKTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHZpZXcgfSA9IGNoYW5nZXM7XG5cbiAgICAgICAgaWYgKHZpZXcgJiYgIXZpZXcuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlcG9ydFZpZXdSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5fdmNyLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLl9pbnNlcnRWaWV3KHZpZXcuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9yZXBvcnRWaWV3UmVmKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVwb3J0Vmlld1JlZi5pbnN0YW5jZS5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5faW5zZXJ0Vmlldyh0aGlzLnZpZXcpO1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fcmVwb3J0Vmlld1JlZj8uZGVzdHJveSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pbnNlcnRWaWV3KHZpZXcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF2aWV3KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBNb2R1bGUsIE1vZHVsZUZpbGVOYW1lLCBOYW1lLCBTZWxlY3RvciB9ID0gdmlldy5VaUNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5fdWx2TWFpblNlcnZpY2Uuc2V0VWlWaWV3ZXJDbGFzcyhTZWxlY3Rvcik7XG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRDb21wb25lbnQoTW9kdWxlLCBNb2R1bGVGaWxlTmFtZSwgTmFtZSwgU2VsZWN0b3IsIHRoaXMuX2luamVjdG9yKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8UmVwb3J0Vmlld0Jhc2VDb21wb25lbnQ8VWlSZXBvcnRWaWV3QmFzZVNldHRpbmc+PikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNhcnRhYmxlVGVtcGxhdGVzID0gdGhpcy5jYXJ0YWJsZVRlbXBsYXRlcztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jYXJ0YWJsZUNoaWxkc01vID0gdGhpcy5jYXJ0YWJsZUNoaWxkc01vO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLm1vRGF0YUxpc3QgPSB0aGlzLm1vRGF0YUxpc3Q7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29udGV4dFNldHRpbmcgPSB0aGlzLmNvbnRleHRTZXR0aW5nO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmdyb3VwYnkgPSB0aGlzLmdyb3VwYnk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZ3JvdXBTdW1tYXJ5ID0gdGhpcy5ncm91cFN1bW1hcnk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2ltcGxlSW5saW5lRWRpdCA9IHRoaXMuc2ltcGxlSW5saW5lRWRpdDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5VbHZNYWluQ3RybHIgPSB0aGlzLlVsdk1haW5DdHJscjtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wYWdpbmdTZXR0aW5nID0gdGhpcy5wYWdpbmdTZXR0aW5nO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhpZGVTZWFyY2hwYW5lbCA9IHRoaXMuaGlkZVNlYXJjaHBhbmVsO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmN1c3RvbUZpZWxkSW5mbyA9IHRoaXMuY3VzdG9tRmllbGRJbmZvO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmRpc2FibGVSZXNwb25zaXZlID0gdGhpcy5kaXNhYmxlUmVzcG9uc2l2ZTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS50b29sYmFyQnV0dG9ucyA9IHRoaXMudG9vbGJhckJ1dHRvbnM7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucG9waW4gPSB0aGlzLnBvcGluO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbnRleHRWaWV3ID0gdGhpcy5jb250ZXh0VmlldztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc0NoZWNrTGlzdCA9IHRoaXMuaXNDaGVja0xpc3Q7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UudG9vbGJhckJ1dHRvbnMgPSB0aGlzLnRvb2xiYXJCdXR0b25zO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UubGlzdEVkaXRWaWV3SWQgPSB0aGlzLmxpc3RFZGl0Vmlld0lkO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnR5cGVWaWV3SWQgPSB0aGlzLnR5cGVWaWV3SWQ7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZ3JpZEZyZWVDb2x1bW5TaXppbmcgPSB0aGlzLmdyaWRGcmVlQ29sdW1uU2l6aW5nO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmluRGlhbG9nID0gdGhpcy5pbkRpYWxvZztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5oYXNJbmxpbmVEZWxldGVCdXR0b24gPSB0aGlzLmhhc0lubGluZURlbGV0ZUJ1dHRvbjtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5oYXNJbmxpbmVFZGl0QnV0dG9uID0gdGhpcy5oYXNJbmxpbmVFZGl0QnV0dG9uO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzTXVsdGlTZWxlY3QgPSB0aGlzLmlzTXVsdGlTZWxlY3Q7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29sdW1uc0NvdW50ID0gdGhpcy5jb2x1bW5zQ291bnQ7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuaGlkZVRvb2xiYXIgPSB0aGlzLmhpZGVUb29sYmFyO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhpZGVUaXRsZSA9IHRoaXMuaGlkZVRpdGxlO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmV4dHJhUmVsYXRpb24gPSB0aGlzLmV4dHJhUmVsYXRpb247XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2Vjb25kYXJ5Q29sdW1ucyA9IHRoaXMuc2Vjb25kYXJ5Q29sdW1ucztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb250ZXh0TWVudUl0ZW1zID0gdGhpcy5jb250ZXh0TWVudUl0ZW1zO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsRm9ybWF0cyA9IHRoaXMuY29uZGl0aW9uYWxGb3JtYXRzO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51ID0gdGhpcy5kaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS50eXBlRGVmSWQgPSB0aGlzLnR5cGVEZWZJZDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5yZXBvcnRJZCA9IHRoaXMucmVwb3J0SWQ7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZGV2aWNlTmFtZSA9IHRoaXMuZGV2aWNlTmFtZTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5kZXZpY2VTaXplID0gdGhpcy5kZXZpY2VTaXplO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLm1vYmlsZU9yVGFibGV0ID0gdGhpcy5tb2JpbGVPclRhYmxldDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb250YWluZXJXaWR0aCA9IHRoaXMuY29udGFpbmVyV2lkdGg7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29sdW1uc0NvdW50ID0gdGhpcy5jb2x1bW5zQ291bnQ7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0ZWRDb3VudCA9IHRoaXMuc2VsZWN0ZWRDb3VudDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5oaWRlT3Blbkljb24gPSB0aGlzLmhpZGVPcGVuSWNvbjtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5vcGVuT25DbGljayA9IHRoaXMub3Blbk9uQ2xpY2s7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuYWNjZXNzID0gdGhpcy5hY2Nlc3M7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UudGl0bGUgPSB0aGlzLnRpdGxlO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhhc1N1bW1hcnkgPSB0aGlzLmhhc1N1bW1hcnk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29udGVudERlbnNpdHkgPSB0aGlzLmNvbnRlbnREZW5zaXR5O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnJlbGF0aW9uTGlzdCA9IHRoaXMucmVsYXRpb25MaXN0O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFsbENvbHVtbnMgPSB0aGlzLmFsbENvbHVtbnMgPz8gdGhpcy5jb2x1bW5zO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnZpZXdTZXR0aW5nID0gdmlldy5VaUNvbXBvbmVudC5TZXR0aW5ncztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pbmxpbmVFZGl0TW9kZSA9IHRoaXMuaW5saW5lRWRpdE1vZGU7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uub25seUlubGluZUVkaXQgPSB0aGlzLm9ubHlJbmxpbmVFZGl0O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFsbG93SW5saW5lRWRpdCA9IHRoaXMuYWxsb3dJbmxpbmVFZGl0O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmZvcm1TZXR0aW5nID0gdGhpcy5mb3JtU2V0dGluZztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5uYXZpZ2F0aW9uQXJyb3cgPSB0aGlzLm5hdmlnYXRpb25BcnJvdztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zZWxlY3RlZE1vID0gdGhpcy5zZWxlY3RlZE1vO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhhc1NlbGVjdGVkID0gdGhpcy5oYXNTZWxlY3RlZDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5ydGwgPSB0aGlzLnJ0bDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5lc2NhcGVLZXk/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKG1vKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXNjYXBlS2V5LmVtaXQobW8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnJlc2V0V29ya2Zsb3dTdGF0ZT8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldFdvcmtmbG93U3RhdGUuZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlXG4gICAgICAgICAgICAgICAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgbW8sIGZpZWxkRGJOYW1lIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlLmVtaXQoeyBtbywgZmllbGREYk5hbWUgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnNlbGVjdE5leHRJbmxpbmVSZWNvcmQ/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKG1vKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0TmV4dElubGluZVJlY29yZC5lbWl0KG1vKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5lZGl0Rm9ybVBhbmVsQ2FuY2VsPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChtbykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxDYW5jZWwuZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UudWx2Q29tbWFuZENsaWNrPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudWx2Q29tbWFuZENsaWNrLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc29ydEFzY2VuZGluZz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnRBc2NlbmRpbmcuZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zb3J0RGVzY2VuZGluZz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnREZXNjZW5kaW5nLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZmlsdGVyPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb2x1bW5SZXNpemVkPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uUmVzaXplZC5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uucm93Q2hlY2s/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGU6IHsgbW87IGluZGV4OyBjYXVzZT8gfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd0NoZWNrLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZGVzZWxlY3RBbGw/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc2VsZWN0QWxsLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5yb3dDbGljaz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZTogeyBtbzsgaW5kZXggfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd0NsaWNrLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZXhwYW5kQ2xpY2s/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGU6IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBhbmRDbGljay5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFsbENoZWNrYm94Py5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsQ2hlY2tib3guZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5lZGl0Rm9ybVBhbmVsU2F2ZT8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsU2F2ZS5lbWl0KG1vKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jYXJ0YWJsZUZvcm1DbG9zZWQ/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGU6IHsgbW87IGluZGV4IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0YWJsZUZvcm1DbG9zZWQuZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jcmVhdGVOZXdNbz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlTmV3TW8uZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhhc0RldGFpbHNJblJvdz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNEZXRhaWxzSW5Sb3cuZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UudXBkYXRlTW8/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKG1vKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTW8uZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UubWFuZGF0b3J5Py5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1ZhbGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFuZGF0b3J5LmVtaXQoaXNWYWxpZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZXhlY3V0ZVRvb2xiYXJCdXR0b24/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlVG9vbGJhckJ1dHRvbi5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnJlc2V0R3JpZFNldHRpbmdzPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRHcmlkU2V0dGluZ3MuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLndvcmtmbG93U2hhcmVCdXR0b25zXG4gICAgICAgICAgICAgICAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGU6IFNoYXJlQnV0dG9uc0Nob2ljZURlZikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NoYXJlQnV0dG9ucy5lbWl0KGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl92Y3IuaW5zZXJ0KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVwb3J0Vmlld1JlZiA9IGNvbXBvbmVudFJlZjtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,50 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChildren } from '@angular/core';
2
- import { BaseComponent } from 'barsa-novin-ray-core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "barsa-novin-ray-core";
5
- import * as i2 from "@fundamental-ngx/core/button";
6
- import * as i3 from "@fundamental-ngx/core/toolbar";
7
- import * as i4 from "@angular/common";
8
- export class ResponsiveToolbarComponent extends BaseComponent {
9
- constructor(portalService) {
10
- super();
11
- this.portalService = portalService;
12
- this.btnClick = new EventEmitter();
13
- this.dirValue$ = this.portalService.dirValue$;
14
- }
15
- ngOnInit() {
16
- super.ngOnInit();
17
- this.btns = this.buttons;
18
- }
19
- calculateWidthOfButtons() {
20
- const tempList = [];
21
- this.btnListRef.toArray().forEach((btnRef, i) => {
22
- let btnTemp = this.buttons[i];
23
- if (this.buttons[i] === '-') {
24
- btnTemp = { text: '-', width: btnRef.nativeElement.offsetWidth };
25
- }
26
- else {
27
- btnTemp.width = btnRef.nativeElement.offsetWidth + 10;
28
- }
29
- tempList.push(btnTemp);
30
- });
31
- this.buttonsCalculated = [...tempList];
32
- }
33
- onButtonClick(button) {
34
- this.btnClick.emit(button);
35
- }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResponsiveToolbarComponent, deps: [{ token: i1.PortalService }], target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ResponsiveToolbarComponent, selector: "bsu-responsive-toolbar", inputs: { buttons: "buttons" }, outputs: { btnClick: "btnClick" }, viewQueries: [{ propertyName: "btnListRef", predicate: ["btnRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- <div style=\"width: 100%; height: 0; visibility: hidden\" #containerRef>\n<ng-container\n *ngTemplateOutlet=\"renderToolbar; context: { $implicit: buttons }\"\n></ng-container>\n</div>\n<bsu-responsive-toolbar-renderer\n *ngIf=\"buttonsCalculated\"\n [buttons]=\"buttonsCalculated\"\n (btnClick)=\"onButtonClick($event)\"\n [renderToolbar]=\"renderToolbar\"\n></bsu-responsive-toolbar-renderer>\n\n<ng-template #renderToolbar let-btnList>\n <ng-container *ngFor=\"let btn of btnList\">\n <ng-container *ngIf=\"btn === '-' || btn.text === '-'; else btnCommand\">\n <span #btnRef class=\"toolbar-btn toolbar-vseperator\"></span>\n </ng-container>\n <ng-template #btnCommand>\n <ui5-button\n #btnRef\n (click)=\"onButtonClick(btn)\"\n [attr.disabled]=\"btn.enable === false ? true : null\"\n [attr.disabled]=\"btn.readonly === true ? true : null\"\n class=\"toolbar-btn\"\n [attr.design]=\"btn.emphasized ? 'Emphasized' : 'Transparent'\"\n [attr.icon]=\"btn.newIcon ? btn.newIcon : null\"\n >{{ btn.text }}\n <img *ngIf=\"!btn.newIcon && !btn.isBuiltin\" width=\"16\" [src]=\"btn.icon\"\n /></ui5-button>\n </ng-template>\n </ng-container>\n </ng-template> -->\n\n<fd-toolbar [shouldOverflow]=\"true\" [style.direction]=\"dirValue$ | async\">\n @for (btn of btns; track btn) { @if (btn === '-' || btn.text === '-') {\n <fd-toolbar-separator></fd-toolbar-separator>\n } @else {\n <button\n fd-toolbar-item\n fd-button\n (click)=\"onButtonClick(btn)\"\n [attr.disabled]=\"btn.enable === false ? true : null\"\n [attr.disabled]=\"btn.readonly === true ? true : null\"\n [fdType]=\"btn.emphasized ? 'emphasized' : 'transparent'\"\n [label]=\"btn.text\"\n [glyph]=\"btn.newIcon ? btn.newIcon : null\"\n >\n @if (!btn.newIcon && !btn.isBuiltin) {\n <img width=\"16\" [src]=\"btn.icon\" />\n }\n </button>\n }\n <ng-template #btnCommand>\n <button\n fd-toolbar-item\n fd-button\n (click)=\"onButtonClick(btn)\"\n [attr.disabled]=\"btn.enable === false ? true : null\"\n [attr.disabled]=\"btn.readonly === true ? true : null\"\n [fdType]=\"btn.emphasized ? 'emphasized' : 'transparent'\"\n [label]=\"btn.text\"\n [glyph]=\"btn.newIcon ? btn.newIcon : null\"\n >\n @if (!btn.newIcon && !btn.isBuiltin) {\n <img width=\"16\" [src]=\"btn.icon\" />\n }\n </button>\n </ng-template>\n }\n</fd-toolbar>\n", styles: [":host{display:block;width:100%;position:relative}:host ::ng-deep .fd-toolbar--solid{background-color:var(--sapBackgroundColor, #f7f7f7);border:none}\n"], dependencies: [{ kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i3.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
38
- }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResponsiveToolbarComponent, decorators: [{
40
- type: Component,
41
- args: [{ selector: 'bsu-responsive-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <div style=\"width: 100%; height: 0; visibility: hidden\" #containerRef>\n<ng-container\n *ngTemplateOutlet=\"renderToolbar; context: { $implicit: buttons }\"\n></ng-container>\n</div>\n<bsu-responsive-toolbar-renderer\n *ngIf=\"buttonsCalculated\"\n [buttons]=\"buttonsCalculated\"\n (btnClick)=\"onButtonClick($event)\"\n [renderToolbar]=\"renderToolbar\"\n></bsu-responsive-toolbar-renderer>\n\n<ng-template #renderToolbar let-btnList>\n <ng-container *ngFor=\"let btn of btnList\">\n <ng-container *ngIf=\"btn === '-' || btn.text === '-'; else btnCommand\">\n <span #btnRef class=\"toolbar-btn toolbar-vseperator\"></span>\n </ng-container>\n <ng-template #btnCommand>\n <ui5-button\n #btnRef\n (click)=\"onButtonClick(btn)\"\n [attr.disabled]=\"btn.enable === false ? true : null\"\n [attr.disabled]=\"btn.readonly === true ? true : null\"\n class=\"toolbar-btn\"\n [attr.design]=\"btn.emphasized ? 'Emphasized' : 'Transparent'\"\n [attr.icon]=\"btn.newIcon ? btn.newIcon : null\"\n >{{ btn.text }}\n <img *ngIf=\"!btn.newIcon && !btn.isBuiltin\" width=\"16\" [src]=\"btn.icon\"\n /></ui5-button>\n </ng-template>\n </ng-container>\n </ng-template> -->\n\n<fd-toolbar [shouldOverflow]=\"true\" [style.direction]=\"dirValue$ | async\">\n @for (btn of btns; track btn) { @if (btn === '-' || btn.text === '-') {\n <fd-toolbar-separator></fd-toolbar-separator>\n } @else {\n <button\n fd-toolbar-item\n fd-button\n (click)=\"onButtonClick(btn)\"\n [attr.disabled]=\"btn.enable === false ? true : null\"\n [attr.disabled]=\"btn.readonly === true ? true : null\"\n [fdType]=\"btn.emphasized ? 'emphasized' : 'transparent'\"\n [label]=\"btn.text\"\n [glyph]=\"btn.newIcon ? btn.newIcon : null\"\n >\n @if (!btn.newIcon && !btn.isBuiltin) {\n <img width=\"16\" [src]=\"btn.icon\" />\n }\n </button>\n }\n <ng-template #btnCommand>\n <button\n fd-toolbar-item\n fd-button\n (click)=\"onButtonClick(btn)\"\n [attr.disabled]=\"btn.enable === false ? true : null\"\n [attr.disabled]=\"btn.readonly === true ? true : null\"\n [fdType]=\"btn.emphasized ? 'emphasized' : 'transparent'\"\n [label]=\"btn.text\"\n [glyph]=\"btn.newIcon ? btn.newIcon : null\"\n >\n @if (!btn.newIcon && !btn.isBuiltin) {\n <img width=\"16\" [src]=\"btn.icon\" />\n }\n </button>\n </ng-template>\n }\n</fd-toolbar>\n", styles: [":host{display:block;width:100%;position:relative}:host ::ng-deep .fd-toolbar--solid{background-color:var(--sapBackgroundColor, #f7f7f7);border:none}\n"] }]
42
- }], ctorParameters: () => [{ type: i1.PortalService }], propDecorators: { buttons: [{
43
- type: Input
44
- }], btnClick: [{
45
- type: Output
46
- }], btnListRef: [{
47
- type: ViewChildren,
48
- args: ['btnRef']
49
- }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2l2ZS10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3Jlc3BvbnNpdmUtdG9vbGJhci9yZXNwb25zaXZlLXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvcmVzcG9uc2l2ZS10b29sYmFyL3Jlc3BvbnNpdmUtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBaUIsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBU3BFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxhQUFhO0lBU3pELFlBQW9CLGFBQTRCO1FBQzVDLEtBQUssRUFBRSxDQUFDO1FBRFEsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFQdEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFTekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQztJQUNELHVCQUF1QjtRQUNuQixNQUFNLFFBQVEsR0FBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckUsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQzFELENBQUM7WUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsYUFBYSxDQUFDLE1BQU07UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQzsrR0FoQ1EsMEJBQTBCO21HQUExQiwwQkFBMEIsaVBDcEJ2Qyx1bEZBc0VBOzs0RkRsRGEsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNJLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTTtrRkFHdEMsT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ2lCLFVBQVU7c0JBQWpDLFlBQVk7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFZpZXdDaGlsZHJlblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBQb3J0YWxTZXJ2aWNlIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LXJlc3BvbnNpdmUtdG9vbGJhcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVzcG9uc2l2ZS10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3Jlc3BvbnNpdmUtdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3BvbnNpdmVUb29sYmFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBidXR0b25zOiBhbnlbXTtcclxuICAgIEBPdXRwdXQoKSBidG5DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQFZpZXdDaGlsZHJlbignYnRuUmVmJykgYnRuTGlzdFJlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG5cclxuICAgIGRpclZhbHVlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgYnV0dG9uc0NhbGN1bGF0ZWQ6IGFueVtdO1xyXG4gICAgYnRuczogYW55W107XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmRpclZhbHVlJCA9IHRoaXMucG9ydGFsU2VydmljZS5kaXJWYWx1ZSQ7XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuYnRucyA9IHRoaXMuYnV0dG9ucztcclxuICAgIH1cclxuICAgIGNhbGN1bGF0ZVdpZHRoT2ZCdXR0b25zKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHRlbXBMaXN0OiBhbnkgPSBbXTtcclxuICAgICAgICB0aGlzLmJ0bkxpc3RSZWYudG9BcnJheSgpLmZvckVhY2goKGJ0blJlZiwgaSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYnRuVGVtcCA9IHRoaXMuYnV0dG9uc1tpXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYnV0dG9uc1tpXSA9PT0gJy0nKSB7XHJcbiAgICAgICAgICAgICAgICBidG5UZW1wID0geyB0ZXh0OiAnLScsIHdpZHRoOiBidG5SZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYnRuVGVtcC53aWR0aCA9IGJ0blJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICsgMTA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGVtcExpc3QucHVzaChidG5UZW1wKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmJ1dHRvbnNDYWxjdWxhdGVkID0gWy4uLnRlbXBMaXN0XTtcclxuICAgIH1cclxuICAgIG9uQnV0dG9uQ2xpY2soYnV0dG9uKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5idG5DbGljay5lbWl0KGJ1dHRvbik7XHJcbiAgICB9XHJcbn1cclxuIiwiPCEtLSA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMDsgdmlzaWJpbGl0eTogaGlkZGVuXCIgI2NvbnRhaW5lclJlZj5cbjxuZy1jb250YWluZXJcbiAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZW5kZXJUb29sYmFyOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogYnV0dG9ucyB9XCJcbj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPGJzdS1yZXNwb25zaXZlLXRvb2xiYXItcmVuZGVyZXJcbiAgKm5nSWY9XCJidXR0b25zQ2FsY3VsYXRlZFwiXG4gIFtidXR0b25zXT1cImJ1dHRvbnNDYWxjdWxhdGVkXCJcbiAgKGJ0bkNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gIFtyZW5kZXJUb29sYmFyXT1cInJlbmRlclRvb2xiYXJcIlxuPjwvYnN1LXJlc3BvbnNpdmUtdG9vbGJhci1yZW5kZXJlcj5cblxuPG5nLXRlbXBsYXRlICNyZW5kZXJUb29sYmFyIGxldC1idG5MaXN0PlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidG4gb2YgYnRuTGlzdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidG4gPT09ICctJyB8fCBidG4udGV4dCA9PT0gJy0nOyBlbHNlIGJ0bkNvbW1hbmRcIj5cbiAgICAgIDxzcGFuICNidG5SZWYgY2xhc3M9XCJ0b29sYmFyLWJ0biB0b29sYmFyLXZzZXBlcmF0b3JcIj48L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNidG5Db21tYW5kPlxuICAgICAgPHVpNS1idXR0b25cbiAgICAgICAgI2J0blJlZlxuICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGljayhidG4pXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiYnRuLmVuYWJsZSA9PT0gZmFsc2UgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImJ0bi5yZWFkb25seSA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgY2xhc3M9XCJ0b29sYmFyLWJ0blwiXG4gICAgICAgIFthdHRyLmRlc2lnbl09XCJidG4uZW1waGFzaXplZCA/ICdFbXBoYXNpemVkJyA6ICdUcmFuc3BhcmVudCdcIlxuICAgICAgICBbYXR0ci5pY29uXT1cImJ0bi5uZXdJY29uID8gYnRuLm5ld0ljb24gOiBudWxsXCJcbiAgICAgICAgPnt7IGJ0bi50ZXh0IH19XG4gICAgICAgIDxpbWcgKm5nSWY9XCIhYnRuLm5ld0ljb24gJiYgIWJ0bi5pc0J1aWx0aW5cIiB3aWR0aD1cIjE2XCIgW3NyY109XCJidG4uaWNvblwiXG4gICAgICAgIC8+PC91aTUtYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT4gLS0+XG5cbjxmZC10b29sYmFyIFtzaG91bGRPdmVyZmxvd109XCJ0cnVlXCIgW3N0eWxlLmRpcmVjdGlvbl09XCJkaXJWYWx1ZSQgfCBhc3luY1wiPlxuICAgIEBmb3IgKGJ0biBvZiBidG5zOyB0cmFjayBidG4pIHsgQGlmIChidG4gPT09ICctJyB8fCBidG4udGV4dCA9PT0gJy0nKSB7XG4gICAgPGZkLXRvb2xiYXItc2VwYXJhdG9yPjwvZmQtdG9vbGJhci1zZXBhcmF0b3I+XG4gICAgfSBAZWxzZSB7XG4gICAgPGJ1dHRvblxuICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrKGJ0bilcIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJidG4uZW5hYmxlID09PSBmYWxzZSA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiYnRuLnJlYWRvbmx5ID09PSB0cnVlID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICBbZmRUeXBlXT1cImJ0bi5lbXBoYXNpemVkID8gJ2VtcGhhc2l6ZWQnIDogJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgIFtsYWJlbF09XCJidG4udGV4dFwiXG4gICAgICAgIFtnbHlwaF09XCJidG4ubmV3SWNvbiA/IGJ0bi5uZXdJY29uIDogbnVsbFwiXG4gICAgPlxuICAgICAgICBAaWYgKCFidG4ubmV3SWNvbiAmJiAhYnRuLmlzQnVpbHRpbikge1xuICAgICAgICA8aW1nIHdpZHRoPVwiMTZcIiBbc3JjXT1cImJ0bi5pY29uXCIgLz5cbiAgICAgICAgfVxuICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgICA8bmctdGVtcGxhdGUgI2J0bkNvbW1hbmQ+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGljayhidG4pXCJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImJ0bi5lbmFibGUgPT09IGZhbHNlID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiYnRuLnJlYWRvbmx5ID09PSB0cnVlID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICAgICAgW2ZkVHlwZV09XCJidG4uZW1waGFzaXplZCA/ICdlbXBoYXNpemVkJyA6ICd0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgW2xhYmVsXT1cImJ0bi50ZXh0XCJcbiAgICAgICAgICAgIFtnbHlwaF09XCJidG4ubmV3SWNvbiA/IGJ0bi5uZXdJY29uIDogbnVsbFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoIWJ0bi5uZXdJY29uICYmICFidG4uaXNCdWlsdGluKSB7XG4gICAgICAgICAgICA8aW1nIHdpZHRoPVwiMTZcIiBbc3JjXT1cImJ0bi5pY29uXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9XG48L2ZkLXRvb2xiYXI+XG4iXX0=