barsa-develop-components 1.0.455 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/{esm2020 → esm2022}/barsa-develop-components.mjs +4 -4
  2. package/esm2022/lib/accept-reject/accept-reject.component.mjs +68 -0
  3. package/esm2022/lib/avatar/avatar.component.mjs +29 -0
  4. package/esm2022/lib/barcode-format-pipe.mjs +24 -0
  5. package/esm2022/lib/barcode-reader/barcode-reader.component.mjs +62 -0
  6. package/esm2022/lib/barcode-reader-dialog/barcode-reader-dialog.component.mjs +82 -0
  7. package/esm2022/lib/barcode-reader-video/barcode-reader-video.component.mjs +66 -0
  8. package/esm2022/lib/barcode.service.mjs +330 -0
  9. package/{esm2020 → esm2022}/lib/barsa-develop-components.module.mjs +284 -284
  10. package/esm2022/lib/barsa-document-list-item/barsa-document-list-item.component.mjs +104 -0
  11. package/esm2022/lib/barsa-documents/barsa-documents.component.mjs +173 -0
  12. package/esm2022/lib/barsa-geographic-location/barsa-geographic-location.component.mjs +163 -0
  13. package/esm2022/lib/card-content-image-and-title/card-content-image-and-title.component.mjs +50 -0
  14. package/esm2022/lib/card-content-line-chart/card-content-line-chart.component.mjs +37 -0
  15. package/esm2022/lib/card-header-big-image-title-and-subtitle/card-header-big-image-title-and-subtitle.component.mjs +19 -0
  16. package/esm2022/lib/card-header-kpi/card-header-kpi.component.mjs +40 -0
  17. package/esm2022/lib/card-header-logo-title-subtitle/card-header-logo-title-subtitle.component.mjs +45 -0
  18. package/{esm2020 → esm2022}/lib/checkbox-button/checkbox-button.component.mjs +23 -23
  19. package/esm2022/lib/column-form-viewer/column-form-viewer.component.mjs +88 -0
  20. package/{esm2020 → esm2022}/lib/enum-info-micro-proccess-flow/enum-info-micro-proccess-flow.component.mjs +18 -18
  21. package/esm2022/lib/footer/footer.component.mjs +43 -0
  22. package/esm2022/lib/form-card/form-card.component.mjs +17 -0
  23. package/esm2022/lib/form-chart-content/form-chart-content.component.mjs +37 -0
  24. package/esm2022/lib/form-content-quick-view/form-content-quick-view.component.mjs +102 -0
  25. package/esm2022/lib/form-report-view/form-report-view.component.mjs +25 -0
  26. package/esm2022/lib/form-report-view-item/form-report-view-item.component.mjs +45 -0
  27. package/{esm2020 → esm2022}/lib/g4b-details/g4b-details.component.mjs +28 -28
  28. package/esm2022/lib/g4b-estelam/g4b-estelam.component.mjs +30 -0
  29. package/esm2022/lib/geographic-location/geographic-location.component.mjs +85 -0
  30. package/esm2022/lib/login-form/login-form.component.mjs +55 -0
  31. package/{esm2020 → esm2022}/lib/login-social-conncetions/login-social-conncetions.component.mjs +30 -30
  32. package/esm2022/lib/master-detail-card-form/master-detail-card-form.component.mjs +17 -0
  33. package/esm2022/lib/media-file-uploader/media-file-uploader.component.mjs +238 -0
  34. package/esm2022/lib/micro-proccess-flow/micro-proccess-flow.component.mjs +52 -0
  35. package/esm2022/lib/micro-process-flow-view/micro-process-flow-view.component.mjs +24 -0
  36. package/esm2022/lib/mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component.mjs +23 -0
  37. package/esm2022/lib/models/document-item.mjs +2 -0
  38. package/esm2022/lib/models/documents-setting.mjs +2 -0
  39. package/{esm2020 → esm2022}/lib/models/form-report-view-setting.mjs +2 -2
  40. package/{esm2020 → esm2022}/lib/models/index.mjs +8 -8
  41. package/{esm2020 → esm2022}/lib/models/micro-process-flow-view-setting.mjs +2 -2
  42. package/{esm2020 → esm2022}/lib/models/person.mjs +1 -1
  43. package/{esm2020 → esm2022}/lib/models/service-desk-view-of-services-setting.mjs +2 -2
  44. package/{esm2020 → esm2022}/lib/models/tab-process-view-setting.mjs +2 -2
  45. package/{esm2020 → esm2022}/lib/pipes/datasource-to-flow-item.mjs +22 -22
  46. package/{esm2020 → esm2022}/lib/pipes/index.mjs +2 -2
  47. package/{esm2020 → esm2022}/lib/pipes/mo-list-to-flow-item.pipe.mjs +22 -22
  48. package/esm2022/lib/query-string-form-observable/query-string-form-observable.component.mjs +37 -0
  49. package/esm2022/lib/query-string-observable/query-string-observable.component.mjs +22 -0
  50. package/esm2022/lib/report-button-view/report-button-view.component.mjs +37 -0
  51. package/{esm2020 → esm2022}/lib/report-line-chart-view/report-line-chart-view.component.mjs +13 -13
  52. package/esm2022/lib/report-tab-view/report-tab-view.component.mjs +27 -0
  53. package/esm2022/lib/resend-verification-code/resend-verification-code.component.mjs +62 -0
  54. package/{esm2020 → esm2022}/lib/service-desk-card-content-mojavezhay-akhz-shode/service-desk-card-content-mojavezhay-akhz-shode.component.mjs +28 -28
  55. package/esm2022/lib/service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component.mjs +110 -0
  56. package/esm2022/lib/service-desk-header/service-desk-header.component.mjs +240 -0
  57. package/esm2022/lib/service-desk-servcie-detail/service-desk-servcie-detail.component.mjs +142 -0
  58. package/esm2022/lib/service-desk-view-of-services/service-desk-view-of-services.component.mjs +37 -0
  59. package/esm2022/lib/setting-form/setting-form.component.mjs +64 -0
  60. package/esm2022/lib/subform-in-row-report/subform-in-row-report.component.mjs +73 -0
  61. package/esm2022/lib/tab-process-view/tab-process-view.component.mjs +48 -0
  62. package/esm2022/lib/table-view-vertical-columns/table-view-vertical-columns.component.mjs +16 -0
  63. package/esm2022/lib/timer-count-down/timer-count-down.component.mjs +98 -0
  64. package/esm2022/lib/token-report-view/token-report-view.component.mjs +27 -0
  65. package/esm2022/lib/ui-enum-segmented-button/ui-enum-segmented-button.component.mjs +25 -0
  66. package/esm2022/lib/ui-num-rate/ui-num-rate.component.mjs +29 -0
  67. package/esm2022/lib/ui-person/ui-person.component.mjs +160 -0
  68. package/esm2022/lib/ui-person/ui-person.pipe.mjs +40 -0
  69. package/esm2022/lib/ui-pictures-carousel/ui-pictures-carousel.component.mjs +17 -0
  70. package/esm2022/lib/ui-text-field-search/ui-text-field-search.component.mjs +42 -0
  71. package/esm2022/lib/ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component.mjs +69 -0
  72. package/{esm2020 → esm2022}/public-api.mjs +62 -62
  73. package/fesm2022/barsa-develop-components.mjs +3626 -0
  74. package/fesm2022/barsa-develop-components.mjs.map +1 -0
  75. package/index.d.ts +5 -5
  76. package/lib/accept-reject/accept-reject.component.d.ts +28 -28
  77. package/lib/avatar/avatar.component.d.ts +12 -12
  78. package/lib/barcode-format-pipe.d.ts +7 -7
  79. package/lib/barcode-reader/barcode-reader.component.d.ts +19 -19
  80. package/lib/barcode-reader-dialog/barcode-reader-dialog.component.d.ts +32 -32
  81. package/lib/barcode-reader-video/barcode-reader-video.component.d.ts +22 -22
  82. package/lib/barcode.service.d.ts +98 -98
  83. package/lib/barsa-develop-components.module.d.ts +117 -117
  84. package/lib/barsa-document-list-item/barsa-document-list-item.component.d.ts +39 -39
  85. package/lib/barsa-documents/barsa-documents.component.d.ts +47 -47
  86. package/lib/barsa-geographic-location/barsa-geographic-location.component.d.ts +45 -46
  87. package/lib/card-content-image-and-title/card-content-image-and-title.component.d.ts +18 -18
  88. package/lib/card-content-line-chart/card-content-line-chart.component.d.ts +9 -9
  89. package/lib/card-header-big-image-title-and-subtitle/card-header-big-image-title-and-subtitle.component.d.ts +6 -6
  90. package/lib/card-header-kpi/card-header-kpi.component.d.ts +14 -14
  91. package/lib/card-header-logo-title-subtitle/card-header-logo-title-subtitle.component.d.ts +23 -23
  92. package/lib/checkbox-button/checkbox-button.component.d.ts +13 -13
  93. package/lib/column-form-viewer/column-form-viewer.component.d.ts +30 -30
  94. package/lib/enum-info-micro-proccess-flow/enum-info-micro-proccess-flow.component.d.ts +8 -8
  95. package/lib/footer/footer.component.d.ts +15 -15
  96. package/lib/form-card/form-card.component.d.ts +8 -8
  97. package/lib/form-chart-content/form-chart-content.component.d.ts +9 -9
  98. package/lib/form-content-quick-view/form-content-quick-view.component.d.ts +18 -18
  99. package/lib/form-report-view/form-report-view.component.d.ts +13 -13
  100. package/lib/form-report-view-item/form-report-view-item.component.d.ts +15 -15
  101. package/lib/g4b-details/g4b-details.component.d.ts +9 -9
  102. package/lib/g4b-estelam/g4b-estelam.component.d.ts +11 -11
  103. package/lib/geographic-location/geographic-location.component.d.ts +33 -34
  104. package/lib/login-form/login-form.component.d.ts +12 -12
  105. package/lib/login-social-conncetions/login-social-conncetions.component.d.ts +12 -12
  106. package/lib/master-detail-card-form/master-detail-card-form.component.d.ts +8 -8
  107. package/lib/media-file-uploader/media-file-uploader.component.d.ts +52 -52
  108. package/lib/micro-proccess-flow/micro-proccess-flow.component.d.ts +28 -28
  109. package/lib/micro-process-flow-view/micro-process-flow-view.component.d.ts +14 -14
  110. package/lib/mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component.d.ts +9 -9
  111. package/lib/models/document-item.d.ts +19 -19
  112. package/lib/models/documents-setting.d.ts +11 -11
  113. package/lib/models/form-report-view-setting.d.ts +7 -7
  114. package/lib/models/index.d.ts +7 -7
  115. package/lib/models/micro-process-flow-view-setting.d.ts +8 -8
  116. package/lib/models/person.d.ts +10 -10
  117. package/lib/models/service-desk-view-of-services-setting.d.ts +6 -6
  118. package/lib/models/tab-process-view-setting.d.ts +7 -7
  119. package/lib/pipes/datasource-to-flow-item.d.ts +10 -10
  120. package/lib/pipes/index.d.ts +2 -2
  121. package/lib/pipes/mo-list-to-flow-item.pipe.d.ts +10 -10
  122. package/lib/query-string-form-observable/query-string-form-observable.component.d.ts +13 -13
  123. package/lib/query-string-observable/query-string-observable.component.d.ts +9 -9
  124. package/lib/report-button-view/report-button-view.component.d.ts +12 -12
  125. package/lib/report-line-chart-view/report-line-chart-view.component.d.ts +7 -7
  126. package/lib/report-tab-view/report-tab-view.component.d.ts +15 -15
  127. package/lib/resend-verification-code/resend-verification-code.component.d.ts +19 -18
  128. package/lib/service-desk-card-content-mojavezhay-akhz-shode/service-desk-card-content-mojavezhay-akhz-shode.component.d.ts +15 -15
  129. package/lib/service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component.d.ts +26 -26
  130. package/lib/service-desk-header/service-desk-header.component.d.ts +63 -63
  131. package/lib/service-desk-servcie-detail/service-desk-servcie-detail.component.d.ts +39 -39
  132. package/lib/service-desk-view-of-services/service-desk-view-of-services.component.d.ts +16 -16
  133. package/lib/setting-form/setting-form.component.d.ts +20 -20
  134. package/lib/subform-in-row-report/subform-in-row-report.component.d.ts +22 -21
  135. package/lib/tab-process-view/tab-process-view.component.d.ts +20 -20
  136. package/lib/table-view-vertical-columns/table-view-vertical-columns.component.d.ts +6 -6
  137. package/lib/timer-count-down/timer-count-down.component.d.ts +15 -15
  138. package/lib/token-report-view/token-report-view.component.d.ts +15 -15
  139. package/lib/ui-enum-segmented-button/ui-enum-segmented-button.component.d.ts +9 -9
  140. package/lib/ui-num-rate/ui-num-rate.component.d.ts +9 -9
  141. package/lib/ui-person/ui-person.component.d.ts +31 -31
  142. package/lib/ui-person/ui-person.pipe.d.ts +7 -7
  143. package/lib/ui-pictures-carousel/ui-pictures-carousel.component.d.ts +6 -6
  144. package/lib/ui-text-field-search/ui-text-field-search.component.d.ts +17 -17
  145. package/lib/ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component.d.ts +25 -25
  146. package/package.json +7 -13
  147. package/public-api.d.ts +58 -58
  148. package/esm2020/lib/accept-reject/accept-reject.component.mjs +0 -69
  149. package/esm2020/lib/avatar/avatar.component.mjs +0 -29
  150. package/esm2020/lib/barcode-format-pipe.mjs +0 -24
  151. package/esm2020/lib/barcode-reader/barcode-reader.component.mjs +0 -62
  152. package/esm2020/lib/barcode-reader-dialog/barcode-reader-dialog.component.mjs +0 -82
  153. package/esm2020/lib/barcode-reader-video/barcode-reader-video.component.mjs +0 -66
  154. package/esm2020/lib/barcode.service.mjs +0 -330
  155. package/esm2020/lib/barsa-document-list-item/barsa-document-list-item.component.mjs +0 -104
  156. package/esm2020/lib/barsa-documents/barsa-documents.component.mjs +0 -173
  157. package/esm2020/lib/barsa-geographic-location/barsa-geographic-location.component.mjs +0 -174
  158. package/esm2020/lib/card-content-image-and-title/card-content-image-and-title.component.mjs +0 -51
  159. package/esm2020/lib/card-content-line-chart/card-content-line-chart.component.mjs +0 -38
  160. package/esm2020/lib/card-header-big-image-title-and-subtitle/card-header-big-image-title-and-subtitle.component.mjs +0 -20
  161. package/esm2020/lib/card-header-kpi/card-header-kpi.component.mjs +0 -41
  162. package/esm2020/lib/card-header-logo-title-subtitle/card-header-logo-title-subtitle.component.mjs +0 -46
  163. package/esm2020/lib/column-form-viewer/column-form-viewer.component.mjs +0 -88
  164. package/esm2020/lib/footer/footer.component.mjs +0 -44
  165. package/esm2020/lib/form-card/form-card.component.mjs +0 -18
  166. package/esm2020/lib/form-chart-content/form-chart-content.component.mjs +0 -38
  167. package/esm2020/lib/form-content-quick-view/form-content-quick-view.component.mjs +0 -102
  168. package/esm2020/lib/form-report-view/form-report-view.component.mjs +0 -26
  169. package/esm2020/lib/form-report-view-item/form-report-view-item.component.mjs +0 -45
  170. package/esm2020/lib/g4b-estelam/g4b-estelam.component.mjs +0 -30
  171. package/esm2020/lib/geographic-location/geographic-location.component.mjs +0 -88
  172. package/esm2020/lib/login-form/login-form.component.mjs +0 -55
  173. package/esm2020/lib/master-detail-card-form/master-detail-card-form.component.mjs +0 -17
  174. package/esm2020/lib/media-file-uploader/media-file-uploader.component.mjs +0 -238
  175. package/esm2020/lib/micro-proccess-flow/micro-proccess-flow.component.mjs +0 -53
  176. package/esm2020/lib/micro-process-flow-view/micro-process-flow-view.component.mjs +0 -24
  177. package/esm2020/lib/mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component.mjs +0 -23
  178. package/esm2020/lib/models/document-item.mjs +0 -2
  179. package/esm2020/lib/models/documents-setting.mjs +0 -2
  180. package/esm2020/lib/query-string-form-observable/query-string-form-observable.component.mjs +0 -37
  181. package/esm2020/lib/query-string-observable/query-string-observable.component.mjs +0 -22
  182. package/esm2020/lib/report-button-view/report-button-view.component.mjs +0 -38
  183. package/esm2020/lib/report-tab-view/report-tab-view.component.mjs +0 -28
  184. package/esm2020/lib/resend-verification-code/resend-verification-code.component.mjs +0 -59
  185. package/esm2020/lib/service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component.mjs +0 -110
  186. package/esm2020/lib/service-desk-header/service-desk-header.component.mjs +0 -236
  187. package/esm2020/lib/service-desk-servcie-detail/service-desk-servcie-detail.component.mjs +0 -142
  188. package/esm2020/lib/service-desk-view-of-services/service-desk-view-of-services.component.mjs +0 -37
  189. package/esm2020/lib/setting-form/setting-form.component.mjs +0 -64
  190. package/esm2020/lib/subform-in-row-report/subform-in-row-report.component.mjs +0 -65
  191. package/esm2020/lib/tab-process-view/tab-process-view.component.mjs +0 -49
  192. package/esm2020/lib/table-view-vertical-columns/table-view-vertical-columns.component.mjs +0 -16
  193. package/esm2020/lib/timer-count-down/timer-count-down.component.mjs +0 -98
  194. package/esm2020/lib/token-report-view/token-report-view.component.mjs +0 -27
  195. package/esm2020/lib/ui-enum-segmented-button/ui-enum-segmented-button.component.mjs +0 -25
  196. package/esm2020/lib/ui-num-rate/ui-num-rate.component.mjs +0 -29
  197. package/esm2020/lib/ui-person/ui-person.component.mjs +0 -160
  198. package/esm2020/lib/ui-person/ui-person.pipe.mjs +0 -40
  199. package/esm2020/lib/ui-pictures-carousel/ui-pictures-carousel.component.mjs +0 -17
  200. package/esm2020/lib/ui-text-field-search/ui-text-field-search.component.mjs +0 -42
  201. package/esm2020/lib/ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component.mjs +0 -70
  202. package/fesm2015/barsa-develop-components.mjs +0 -3660
  203. package/fesm2015/barsa-develop-components.mjs.map +0 -1
  204. package/fesm2020/barsa-develop-components.mjs +0 -3625
  205. package/fesm2020/barsa-develop-components.mjs.map +0 -1
@@ -0,0 +1,3626 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, Input, ViewChild, Injectable, EventEmitter, Output, Pipe, HostBinding, HostListener, RendererStyleFlags2, ElementRef, ViewEncapsulation, ViewChildren, ViewContainerRef, TemplateRef, Optional, NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';
3
+ import * as i2$1 from 'barsa-sap-ui';
4
+ import { DeviceInfoFieldBaseComponent, UiMoInfoSubFormUiComponent, UiCheckBoxComponent, UiMoInfoUlvComboComponent, UiSimpleComboComponent, UiPicturesInfoComponent, UiPdfViewerComponent, ColumnRendererComponent, BarsaSapUiModule } from 'barsa-sap-ui';
5
+ import { Subject, debounceTime, distinctUntilChanged, BehaviorSubject, of, takeUntil as takeUntil$1, switchMap } from 'rxjs';
6
+ import * as i1 from '@angular/forms';
7
+ import { ReactiveFormsModule, FormsModule } from '@angular/forms';
8
+ import * as i2 from '@fundamental-ngx/core/input-group';
9
+ import * as i3 from '@fundamental-ngx/core/toolbar';
10
+ import * as i1$1 from 'barsa-novin-ray-core';
11
+ import { ReportViewBaseComponent, FieldBaseComponent, FormBaseComponent, FormPanelService, BaseComponent, BarsaApi, ReportBaseComponent, getDeviceIsMobile, BaseItemContentPropsComponent, FormPropsBaseComponent, FindLayoutSettingFromLayout94, BaseFormToolbaritemPropsComponent, DateService, getDateService, LogService, UploadService, AudioRecordingService, VideoRecordingService, createGridEditorFormPanel, ImageMimeType, AudioMimeType, VideoMimeType, AllFilesMimeType, PreventDefaulEvent, isImage, getIcon, FilesValidationHelper, LinearListHelper, getUniqueId, BaseViewItemPropsComponent, BaseModule, BarsaNovinRayCoreModule } from 'barsa-novin-ray-core';
12
+ import { takeUntil, shareReplay, filter, map, debounceTime as debounceTime$1, tap, exhaustMap, concatMap, finalize, delay, withLatestFrom } from 'rxjs/operators';
13
+ import * as i2$2 from '@fundamental-ngx/core';
14
+ import { TabListComponent, PopoverBodyComponent, TabPanelComponent, FundamentalNgxCoreModule } from '@fundamental-ngx/core';
15
+ import * as i1$2 from '@fundamental-ngx/core/tabs';
16
+ import * as i4 from '@fundamental-ngx/core/button';
17
+ import * as i3$1 from '@fundamental-ngx/core/segmented-button';
18
+ import * as i1$3 from '@angular/common';
19
+ import { CommonModule } from '@angular/common';
20
+ import * as i3$2 from '@fundamental-ngx/core/micro-process-flow';
21
+ import * as i4$1 from '@fundamental-ngx/core/dynamic-side-content';
22
+ import { NotFoundException, ChecksumException, FormatException, DecodeHintType, BarcodeFormat } from '@zxing/library';
23
+ import { BrowserMultiFormatReader, BrowserCodeReader } from '@zxing/browser';
24
+ import * as i3$3 from '@fundamental-ngx/core/bar';
25
+ import * as i4$2 from '@fundamental-ngx/core/dialog';
26
+ import * as i10 from '@fundamental-ngx/cdk/utils';
27
+ import * as i6 from '@fundamental-ngx/core/title';
28
+ import * as i7 from '@fundamental-ngx/core/select';
29
+ import * as i1$4 from '@fundamental-ngx/platform';
30
+ import { PlatformInputGroupModule } from '@fundamental-ngx/platform';
31
+ import * as i3$4 from '@fundamental-ngx/core/link';
32
+ import * as i4$3 from '@fundamental-ngx/core/card';
33
+ import * as i6$1 from '@fundamental-ngx/core/form';
34
+ import * as i2$3 from '@fundamental-ngx/core/icon';
35
+ import * as i7$1 from '@fundamental-ngx/core/list';
36
+ import * as i7$2 from '@fundamental-ngx/core/popover';
37
+ import * as i3$5 from '@fundamental-ngx/core/quick-view';
38
+ import * as i3$6 from '@fundamental-ngx/core/table';
39
+ import * as i3$7 from '@fundamental-ngx/core/layout-grid';
40
+ import * as i2$4 from 'barsa-tiles';
41
+ import { TilesViewerContainerComponent, TilesViewerService, TilesViewerGroupComponent, BarsaTilesModule } from 'barsa-tiles';
42
+ import * as i4$4 from '@angular/router';
43
+ import * as i3$8 from '@fundamental-ngx/core/avatar';
44
+ import * as i6$2 from '@fundamental-ngx/core/checkbox';
45
+ import * as i3$9 from '@fundamental-ngx/core/dynamic-page';
46
+ import * as i3$a from '@angular/platform-browser';
47
+ import * as i1$5 from 'barsa-echarts';
48
+ import { BarsaEchartsModule } from 'barsa-echarts';
49
+ import * as i6$3 from '@fundamental-ngx/core/object-status';
50
+ import * as i3$b from '@fundamental-ngx/core/carousel';
51
+ import * as i1$6 from '@fundamental-ngx/core/rating-indicator';
52
+ import * as i4$5 from '@fundamental-ngx/core/nested-list';
53
+ import * as i5 from '@fundamental-ngx/core/progress-indicator';
54
+ import * as i1$7 from '@fundamental-ngx/core/menu';
55
+ import * as i2$5 from '@fundamental-ngx/core/split-button';
56
+ import * as i4$6 from '@fundamental-ngx/core/action-sheet';
57
+ import * as i7$3 from '@fundamental-ngx/core/file-uploader';
58
+ import * as i9 from '@fundamental-ngx/core/inline-help';
59
+ import * as i2$6 from '@fundamental-ngx/core/content-density';
60
+ import * as i3$c from '@fundamental-ngx/core/token';
61
+
62
+ class UiTextFieldSearchComponent extends DeviceInfoFieldBaseComponent {
63
+ constructor() {
64
+ super(...arguments);
65
+ this._debouncer = new Subject();
66
+ }
67
+ get MinSize() {
68
+ // this call from outside.corejs
69
+ return { width: 0, height: 30 };
70
+ }
71
+ ngOnInit() {
72
+ super.ngOnInit();
73
+ this._debouncer.pipe(debounceTime(300), distinctUntilChanged()).subscribe((value) => {
74
+ this.value = value;
75
+ this.valueChange.emit(value);
76
+ });
77
+ }
78
+ onSearchSubmit() {
79
+ this._valueChange(this.searchTerm);
80
+ }
81
+ _valueChange(value) {
82
+ this._debouncer.next(value);
83
+ }
84
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiTextFieldSearchComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
85
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: UiTextFieldSearchComponent, selector: "bdc-ui-text-field-search", inputs: { value: "value", MinSize: "MinSize" }, usesInheritance: true, ngImport: i0, template: "<fd-input-group\r\n style=\"width: 100%\"\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n (keydown.enter)=\"onSearchSubmit()\"\r\n>\r\n</fd-input-group>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiTextFieldSearchComponent, decorators: [{
88
+ type: Component,
89
+ args: [{ selector: 'bdc-ui-text-field-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-input-group\r\n style=\"width: 100%\"\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n (keydown.enter)=\"onSearchSubmit()\"\r\n>\r\n</fd-input-group>\r\n" }]
90
+ }], propDecorators: { value: [{
91
+ type: Input
92
+ }], MinSize: [{
93
+ type: Input
94
+ }] } });
95
+
96
+ class TabProcessViewComponent extends ReportViewBaseComponent {
97
+ ngOnInit() {
98
+ super.ngOnInit();
99
+ this.arrowRight = this.rtl ? 'navigation-left-arrow' : 'navigation-right-arrow';
100
+ this.fieldTitle = this.viewSetting.FieldTitle;
101
+ this.fieldSubtitle = this.viewSetting.FieldSubtitle;
102
+ this.fieldIcon = this.viewSetting.FieldIcon;
103
+ this.defaultIcon = this.viewSetting.DefaultIcon;
104
+ this._ulvMainService.moDataList$.pipe(takeUntil(this._onDestroy$)).subscribe((moDataList) => {
105
+ if (moDataList) {
106
+ const selectedIndex = moDataList.findIndex((c) => c.$IsChecked);
107
+ if (this.tabList && selectedIndex > -1) {
108
+ setTimeout(() => this.tabList.tabPanels.toArray()[selectedIndex].open(true), 0);
109
+ }
110
+ }
111
+ });
112
+ }
113
+ onTabChange2(e) {
114
+ const index = this.moDataList.findIndex((c) => c.Id === e.Id);
115
+ const mo = this.moDataList[index];
116
+ if (mo.$IsChecked) {
117
+ return;
118
+ }
119
+ super.onRowCheck({ mo, index });
120
+ }
121
+ onTabChange(e) {
122
+ const index = this.moDataList.findIndex((c) => c.Id === e.id);
123
+ const mo = this.moDataList[index];
124
+ super.onRowCheck({ mo, index });
125
+ }
126
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TabProcessViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
127
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TabProcessViewComponent, selector: "bdc-tab-process-view", viewQueries: [{ propertyName: "tabList", first: true, predicate: TabListComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (moDataList?.length) {\r\n<fd-tab-list\r\n mode=\"process\"\r\n [style.min-height]=\"moDataList?.length ? '3.8rem' : null\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n>\r\n @for (item of moDataList; track item; let index = $index; let last = $last) {\r\n <fd-tab [id]=\"item.Id\" [active]=\"item.$IsChecked\">\r\n <ng-template fd-tab-title-template>\r\n <span\r\n (click)=\"onTabChange2(item)\"\r\n fd-tab-icon\r\n [icon]=\"(fieldIcon | rval: item:allColumns) ? (fieldIcon | rval: item:allColumns) : defaultIcon\"\r\n ></span>\r\n <div fd-tab-process (click)=\"onTabChange2(item)\">\r\n <span fd-tab-label>{{ fieldTitle | rval: item:allColumns }}</span>\r\n <span fd-tab-label>{{ fieldSubtitle | rval: item:allColumns }}</span>\r\n </div>\r\n </ng-template>\r\n </fd-tab>\r\n }\r\n</fd-tab-list>\r\n} @else {\r\n<div style=\"min-height: 3.8rem; background-color: var(--sapObjectHeader_Background)\"></div>\r\n}\r\n", styles: [""], dependencies: [{ kind: "component", type: i1$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "selectedTabIndexChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i1$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "directive", type: i1$2.TabTitleDirective, selector: "[fdTabTitleTemplate], [fd-tab-title-template]" }, { kind: "component", type: i1$2.TabIconComponent, selector: "[fd-tab-icon]", inputs: ["class", "icon", "iconFont"] }, { kind: "directive", type: i1$2.TabLabelDirective, selector: "[fdTabLabel], [fd-tab-label]" }, { kind: "directive", type: i1$2.TabProcessDirective, selector: "[fdTabProcess], [fd-tab-process]" }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
128
+ }
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TabProcessViewComponent, decorators: [{
130
+ type: Component,
131
+ args: [{ selector: 'bdc-tab-process-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (moDataList?.length) {\r\n<fd-tab-list\r\n mode=\"process\"\r\n [style.min-height]=\"moDataList?.length ? '3.8rem' : null\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n>\r\n @for (item of moDataList; track item; let index = $index; let last = $last) {\r\n <fd-tab [id]=\"item.Id\" [active]=\"item.$IsChecked\">\r\n <ng-template fd-tab-title-template>\r\n <span\r\n (click)=\"onTabChange2(item)\"\r\n fd-tab-icon\r\n [icon]=\"(fieldIcon | rval: item:allColumns) ? (fieldIcon | rval: item:allColumns) : defaultIcon\"\r\n ></span>\r\n <div fd-tab-process (click)=\"onTabChange2(item)\">\r\n <span fd-tab-label>{{ fieldTitle | rval: item:allColumns }}</span>\r\n <span fd-tab-label>{{ fieldSubtitle | rval: item:allColumns }}</span>\r\n </div>\r\n </ng-template>\r\n </fd-tab>\r\n }\r\n</fd-tab-list>\r\n} @else {\r\n<div style=\"min-height: 3.8rem; background-color: var(--sapObjectHeader_Background)\"></div>\r\n}\r\n" }]
132
+ }], propDecorators: { tabList: [{
133
+ type: ViewChild,
134
+ args: [TabListComponent]
135
+ }] } });
136
+
137
+ class UiEnumSegmentedButtonComponent extends FieldBaseComponent {
138
+ onValueChange(value) {
139
+ const selectedValue = value;
140
+ this.setValue(selectedValue);
141
+ }
142
+ setValue(selectedValue) {
143
+ this.value = selectedValue;
144
+ this.valueChange.emit(this.value);
145
+ this.fireContextEvent('select', this.value);
146
+ }
147
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiEnumSegmentedButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
148
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiEnumSegmentedButtonComponent, selector: "bdc-ui-enum-segmented-button", usesInheritance: true, ngImport: i0, template: "<fd-segmented-button style=\"width: 100%\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\r\n @for (item of context.store.data[context.store.root]; track item) { @if (item.id !== '0') {\r\n <button\r\n [disabled]=\"(disableOrReadonly$ | async) === true ? true : false\"\r\n fd-button\r\n [label]=\"item.txt\"\r\n [value]=\"item.id\"\r\n ></button>\r\n } }\r\n</fd-segmented-button>\r\n", styles: ["button{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3$1.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle", "vertical"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
149
+ }
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiEnumSegmentedButtonComponent, decorators: [{
151
+ type: Component,
152
+ args: [{ selector: 'bdc-ui-enum-segmented-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-segmented-button style=\"width: 100%\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\r\n @for (item of context.store.data[context.store.root]; track item) { @if (item.id !== '0') {\r\n <button\r\n [disabled]=\"(disableOrReadonly$ | async) === true ? true : false\"\r\n fd-button\r\n [label]=\"item.txt\"\r\n [value]=\"item.id\"\r\n ></button>\r\n } }\r\n</fd-segmented-button>\r\n", styles: ["button{width:100%}\n"] }]
153
+ }] });
154
+
155
+ class MicroProcessFlowViewComponent extends ReportViewBaseComponent {
156
+ ngOnInit() {
157
+ super.ngOnInit();
158
+ this.arrowRight = this.rtl ? 'navigation-left-arrow' : 'navigation-right-arrow';
159
+ this.fieldTitle = this.viewSetting.FieldTitle;
160
+ this.fieldIcon = this.viewSetting.FieldIcon;
161
+ this.fieldState = this.viewSetting.FieldState;
162
+ this.mode = this.viewSetting.ModeValue$Caption;
163
+ }
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: MicroProcessFlowViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: MicroProcessFlowViewComponent, selector: "bdc-micro-process-flow-view", usesInheritance: true, ngImport: i0, template: "<fd-micro-process-flow style=\"max-width: 100%\">\r\n @for (item of moDataList; track item; let index = $index) {\r\n <fd-micro-process-flow-item>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n button;\r\n context: {\r\n $implicit: item,\r\n index: index,\r\n arrow: arrowRight\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-micro-process-flow-item>\r\n }\r\n</fd-micro-process-flow>\r\n<ng-template #button let-mo let-index=\"index\" let-arrow=\"arrow\">\r\n <button\r\n fd-button\r\n (click)=\"onRowCheck({mo, index})\"\r\n fd-micro-process-flow-focusable-item\r\n [label]=\"fieldTitle | rval: mo:allColumns\"\r\n [fdType]=\"fieldState | rval: mo:allColumns\"\r\n [glyph]=\"fieldIcon | rval: mo:allColumns\"\r\n ></button>\r\n</ng-template>\r\n", styles: [".fd-link{cursor:pointer;font-size:1.06rem}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3$2.MicroProcessFlowComponent, selector: "fd-micro-process-flow", inputs: ["independentSteps", "transitionSpeed", "transitionTimingFunction"] }, { kind: "component", type: i3$2.MicroProcessFlowItemComponent, selector: "fd-micro-process-flow-item", inputs: ["state", "intermediate"] }, { kind: "directive", type: i3$2.MicroProcessFlowFocusableItemDirective, selector: "[fdMicroProcessFlowFocusableItem], [fd-micro-process-flow-focusable-item]" }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
166
+ }
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: MicroProcessFlowViewComponent, decorators: [{
168
+ type: Component,
169
+ args: [{ selector: 'bdc-micro-process-flow-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-micro-process-flow style=\"max-width: 100%\">\r\n @for (item of moDataList; track item; let index = $index) {\r\n <fd-micro-process-flow-item>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n button;\r\n context: {\r\n $implicit: item,\r\n index: index,\r\n arrow: arrowRight\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-micro-process-flow-item>\r\n }\r\n</fd-micro-process-flow>\r\n<ng-template #button let-mo let-index=\"index\" let-arrow=\"arrow\">\r\n <button\r\n fd-button\r\n (click)=\"onRowCheck({mo, index})\"\r\n fd-micro-process-flow-focusable-item\r\n [label]=\"fieldTitle | rval: mo:allColumns\"\r\n [fdType]=\"fieldState | rval: mo:allColumns\"\r\n [glyph]=\"fieldIcon | rval: mo:allColumns\"\r\n ></button>\r\n</ng-template>\r\n", styles: [".fd-link{cursor:pointer;font-size:1.06rem}\n"] }]
170
+ }] });
171
+
172
+ class SettingFormComponent extends FormBaseComponent {
173
+ constructor() {
174
+ super(...arguments);
175
+ this.deviceSize = 'xl';
176
+ this.selectedSetting = false;
177
+ this.groupSettingFieldCaption = 'گروه تنظیمات2';
178
+ this.objectSettingFieldCaption = 'شی تنظیمات';
179
+ }
180
+ ngOnInit() {
181
+ super.ngOnInit();
182
+ this.rtl$ = this._portalService.rtl$;
183
+ this._portalService.deviceSize$.pipe(takeUntil(this._onDestroy$)).subscribe((deviceSize) => {
184
+ switch (deviceSize) {
185
+ case 's':
186
+ this.deviceSize = 'sm';
187
+ break;
188
+ case 'm':
189
+ this.deviceSize = 'md';
190
+ break;
191
+ default:
192
+ this.deviceSize = 'xl';
193
+ }
194
+ });
195
+ }
196
+ ngAfterViewInit() {
197
+ super.ngAfterViewInit();
198
+ const fieldUi = Object.values(this.listFieldUi).find((c) => c.Setting.ControlFieldCaption === this.groupSettingFieldCaption);
199
+ if (fieldUi) {
200
+ fieldUi.viewerControl.on({
201
+ rowselect: this._setSelectedSetting.bind(this)
202
+ });
203
+ }
204
+ this._groupSettingControlUi = fieldUi;
205
+ }
206
+ ngOnDestroy() {
207
+ super.ngOnDestroy();
208
+ if (this._groupSettingControlUi) {
209
+ this._groupSettingControlUi.viewerControl.un('rowselect', this._setSelectedSetting);
210
+ }
211
+ }
212
+ onSettingClick() { }
213
+ onBack() {
214
+ this.selectedSetting = false;
215
+ }
216
+ _setSelectedSetting() {
217
+ this.selectedSetting = true;
218
+ }
219
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: SettingFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
220
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: SettingFormComponent, selector: "bdc-setting-form", providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "@if (mo$ | async; as mo) { @if (layout94$ | async; as layout) { @if (deviceSize === 'sm') {\r\n<div style=\"display: flex; flex-direction: column\">\r\n @if (selectedSetting) {\r\n <div style=\"width: 100%\">\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"(rtl$ | async)!! ? 'arrow-left' : 'arrow-right'\"\r\n (click)=\"onBack()\"\r\n ></button>\r\n </div>\r\n }\r\n <div [class.hide]=\"selectedSetting\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderSetting;\r\n context: {\r\n $implicit: layout,\r\n isMobile: true\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n <div [class.hide]=\"!selectedSetting\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderForm;\r\n context: {\r\n $implicit: layout,\r\n isMobile: true\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n</div>\r\n} @else {\r\n<fd-dynamic-side-content [size]=\"deviceSize\">\r\n <fd-dynamic-side-content-side>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderSetting;\r\n context: {\r\n $implicit: layout,\r\n isMobile: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderForm;\r\n context: {\r\n $implicit: layout,\r\n isMobile: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n} }\r\n<ng-template #renderForm let-layout let-isMobile=\"isMobile\">\r\n @if (objectSettingFieldCaption | controlUi: layout; as layoutConfig) {\r\n <bsu-layout-control\r\n (click)=\"onSettingClick()\"\r\n class=\"form-setting\"\r\n [class.is-mobile]=\"isMobile\"\r\n [caption]=\"objectSettingFieldCaption\"\r\n [config]=\"layoutConfig\"\r\n [focus]=\"true\"\r\n ></bsu-layout-control>\r\n }\r\n</ng-template>\r\n<ng-template #renderSetting let-layout let-isMobile=\"isMobile\">\r\n @if (groupSettingFieldCaption | controlUi: layout; as layoutConfig) {\r\n <bsu-layout-control\r\n class=\"list-setting\"\r\n [class.is-mobile]=\"isMobile\"\r\n [caption]=\"groupSettingFieldCaption\"\r\n [config]=\"layoutConfig\"\r\n ></bsu-layout-control>\r\n }\r\n</ng-template>\r\n} @else {\r\n<bsu-mask></bsu-mask>\r\n}\r\n", styles: [":host{width:100%}:host ::ng-deep bsu-ulv-context-menu,:host ::ng-deep li button{display:none}.list-setting{height:100%;border-left:1px solid #ccc}.list-setting ::ng-deep bnrc-field-ui{height:100%;padding:0}.list-setting.is-mobile{border:none}.form-setting{height:100%;padding-top:5px}.form-setting ::ng-deep bnrc-field-ui{height:100%!important}fd-dynamic-side-content{height:100%}fd-dynamic-side-content-main{overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i2$1.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$1.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i4$1.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i4$1.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
221
+ }
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: SettingFormComponent, decorators: [{
223
+ type: Component,
224
+ args: [{ selector: 'bdc-setting-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "@if (mo$ | async; as mo) { @if (layout94$ | async; as layout) { @if (deviceSize === 'sm') {\r\n<div style=\"display: flex; flex-direction: column\">\r\n @if (selectedSetting) {\r\n <div style=\"width: 100%\">\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"(rtl$ | async)!! ? 'arrow-left' : 'arrow-right'\"\r\n (click)=\"onBack()\"\r\n ></button>\r\n </div>\r\n }\r\n <div [class.hide]=\"selectedSetting\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderSetting;\r\n context: {\r\n $implicit: layout,\r\n isMobile: true\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n <div [class.hide]=\"!selectedSetting\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderForm;\r\n context: {\r\n $implicit: layout,\r\n isMobile: true\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n</div>\r\n} @else {\r\n<fd-dynamic-side-content [size]=\"deviceSize\">\r\n <fd-dynamic-side-content-side>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderSetting;\r\n context: {\r\n $implicit: layout,\r\n isMobile: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderForm;\r\n context: {\r\n $implicit: layout,\r\n isMobile: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n} }\r\n<ng-template #renderForm let-layout let-isMobile=\"isMobile\">\r\n @if (objectSettingFieldCaption | controlUi: layout; as layoutConfig) {\r\n <bsu-layout-control\r\n (click)=\"onSettingClick()\"\r\n class=\"form-setting\"\r\n [class.is-mobile]=\"isMobile\"\r\n [caption]=\"objectSettingFieldCaption\"\r\n [config]=\"layoutConfig\"\r\n [focus]=\"true\"\r\n ></bsu-layout-control>\r\n }\r\n</ng-template>\r\n<ng-template #renderSetting let-layout let-isMobile=\"isMobile\">\r\n @if (groupSettingFieldCaption | controlUi: layout; as layoutConfig) {\r\n <bsu-layout-control\r\n class=\"list-setting\"\r\n [class.is-mobile]=\"isMobile\"\r\n [caption]=\"groupSettingFieldCaption\"\r\n [config]=\"layoutConfig\"\r\n ></bsu-layout-control>\r\n }\r\n</ng-template>\r\n} @else {\r\n<bsu-mask></bsu-mask>\r\n}\r\n", styles: [":host{width:100%}:host ::ng-deep bsu-ulv-context-menu,:host ::ng-deep li button{display:none}.list-setting{height:100%;border-left:1px solid #ccc}.list-setting ::ng-deep bnrc-field-ui{height:100%;padding:0}.list-setting.is-mobile{border:none}.form-setting{height:100%;padding-top:5px}.form-setting ::ng-deep bnrc-field-ui{height:100%!important}fd-dynamic-side-content{height:100%}fd-dynamic-side-content-main{overflow-y:auto}\n"] }]
225
+ }] });
226
+
227
+ /**
228
+ * Based on zxing-typescript BrowserCodeReader
229
+ */
230
+ class BrowserMultiFormatContinuousReader extends BrowserMultiFormatReader {
231
+ /**
232
+ * Returns the code reader scanner controls.
233
+ */
234
+ getScannerControls() {
235
+ if (!this.scannerControls) {
236
+ throw new Error('No scanning is running at the time.');
237
+ }
238
+ return this.scannerControls;
239
+ }
240
+ /**
241
+ * Starts the decoding from the current or a new video element.
242
+ *
243
+ * @param deviceId The device's to be used Id
244
+ * @param previewEl A new video element
245
+ */
246
+ async scanFromDeviceObservable(deviceId, previewEl) {
247
+ const scan$ = new BehaviorSubject({});
248
+ let ctrls;
249
+ try {
250
+ ctrls = await this.decodeFromVideoDevice(deviceId, previewEl, (result, error) => {
251
+ if (!error) {
252
+ scan$.next({ result });
253
+ return;
254
+ }
255
+ console.error(error);
256
+ const errorName = error.name;
257
+ // stream cannot stop on fails.
258
+ if (
259
+ // scan Failure - found nothing, no error
260
+ errorName === NotFoundException.name ||
261
+ // scan Error - found the QR but got error on decoding
262
+ errorName === ChecksumException.name ||
263
+ errorName === FormatException.name ||
264
+ error.message.includes('No MultiFormat Readers were able to detect the code.')) {
265
+ scan$.next({ error });
266
+ return;
267
+ }
268
+ // probably fatal error
269
+ scan$.error(error);
270
+ this.scannerControls?.stop();
271
+ this.scannerControls = undefined;
272
+ return;
273
+ });
274
+ this.scannerControls = {
275
+ ...ctrls,
276
+ stop() {
277
+ ctrls.stop();
278
+ scan$.complete();
279
+ }
280
+ };
281
+ }
282
+ catch (e) {
283
+ scan$.error(e);
284
+ this.scannerControls?.stop();
285
+ this.scannerControls = undefined;
286
+ }
287
+ return scan$.asObservable();
288
+ }
289
+ }
290
+ class UserMediaBaseService {
291
+ /**
292
+ *
293
+ */
294
+ constructor(_logService) {
295
+ this._logService = _logService;
296
+ this.hasNavigator = false;
297
+ this.isMediaDevicesSupported = false;
298
+ this._camerasSource = new BehaviorSubject([]);
299
+ this.cameras$ = this._camerasSource
300
+ .asObservable()
301
+ .pipe(shareReplay(1))
302
+ .pipe(filter((items) => items && items.length > 0));
303
+ this._permissionResponse = new Subject();
304
+ this.permissionResponse$ = this._permissionResponse.asObservable();
305
+ this._hasDevicesSource = new BehaviorSubject(false);
306
+ this.hasDevices$ = this._hasDevicesSource.asObservable().pipe(shareReplay(1));
307
+ this._permissionSource = new BehaviorSubject(false);
308
+ this.permission$ = this._permissionSource.asObservable().pipe();
309
+ this._camerasNotFoundSource = new Subject();
310
+ this.camerasNotFound$ = this._camerasNotFoundSource.asObservable().pipe(shareReplay(1));
311
+ this.hasNavigator = typeof navigator !== 'undefined';
312
+ this.isMediaDevicesSupported = this.hasNavigator && !!navigator.mediaDevices;
313
+ }
314
+ async updateVideoInputDevices() {
315
+ // permissions aren't needed to get devices, but to access them and their info
316
+ const devices = (await BrowserCodeReader.listVideoInputDevices()) || [];
317
+ const hasDevices = devices && devices.length > 0;
318
+ // stores discovered devices and updates information
319
+ this._hasDevicesSource.next(hasDevices);
320
+ this._camerasSource.next([...devices]);
321
+ if (!hasDevices) {
322
+ const err = {
323
+ code: DOMException.NOT_FOUND_ERR,
324
+ message: 'Device not found.'
325
+ };
326
+ this._camerasNotFoundSource.next(err);
327
+ }
328
+ return devices;
329
+ }
330
+ /**
331
+ * Gets and registers all cammeras.
332
+ */
333
+ async askForPermission() {
334
+ if (!this.hasNavigator) {
335
+ this._logService.error('user media', `Can't ask permission, navigator is not present.`);
336
+ this._setPermission(false);
337
+ }
338
+ if (!this.isMediaDevicesSupported) {
339
+ this._logService.error('user media', `Can't get user media, this is not supported.`);
340
+ this._setPermission(false);
341
+ }
342
+ let stream;
343
+ let permission = false;
344
+ try {
345
+ // Will try to ask for permission
346
+ stream = await this._getAnyVideoDevice();
347
+ permission = !!stream;
348
+ }
349
+ catch (err) {
350
+ this._handlePermissionException(err);
351
+ }
352
+ finally {
353
+ this.terminateStream(stream);
354
+ }
355
+ this._setPermission(permission);
356
+ return permission;
357
+ }
358
+ terminateStream(stream) {
359
+ if (stream) {
360
+ stream.getTracks().forEach((t) => t.stop());
361
+ }
362
+ stream = undefined;
363
+ }
364
+ _setPermission(permission) {
365
+ this._permissionSource.next(permission);
366
+ }
367
+ _getAnyVideoDevice() {
368
+ return navigator.mediaDevices.getUserMedia({ video: true });
369
+ }
370
+ _handlePermissionException(err) {
371
+ console.error('user media', 'Error when asking for permission.', err);
372
+ let permission = false;
373
+ switch (err.name) {
374
+ // usually caused by not secure origins
375
+ case 'NotSupportedError':
376
+ this._logService.warn('user media', err.message);
377
+ // could not claim
378
+ permission = false;
379
+ // can't check devices
380
+ this._hasDevicesSource.next(false);
381
+ break;
382
+ // user denied permission
383
+ case 'NotAllowedError':
384
+ this._logService.warn('user media', err.message);
385
+ // claimed and denied permission
386
+ permission = false;
387
+ // this means that input devices exists
388
+ this._hasDevicesSource.next(true);
389
+ break;
390
+ // the device has no attached input devices
391
+ case 'NotFoundError':
392
+ this._logService.warn('user media', err.message);
393
+ // no permissions claimed
394
+ permission = false;
395
+ // because there was no devices
396
+ this._hasDevicesSource.next(false);
397
+ // tells the listener about the error
398
+ this._camerasNotFoundSource.next(err);
399
+ break;
400
+ case 'NotReadableError':
401
+ this._logService.warn('user media', `Couldn't read the device(s)'s stream, it's probably in use by another app.`);
402
+ // no permissions claimed
403
+ permission = false;
404
+ // there are devices, which I couldn't use
405
+ this._hasDevicesSource.next(false);
406
+ // tells the listener about the error
407
+ this._camerasNotFoundSource.next(err);
408
+ break;
409
+ default:
410
+ this._logService.warn('user media', 'I was not able to define if I have permissions for camera or not.', err);
411
+ // unknown
412
+ permission = false;
413
+ // this.hasDevices.next(undefined;
414
+ break;
415
+ }
416
+ this._setPermission(permission);
417
+ // tells the listener about the error
418
+ this._permissionResponse.next(err);
419
+ return permission;
420
+ }
421
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UserMediaBaseService, deps: [{ token: i1$1.LogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
422
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UserMediaBaseService }); }
423
+ }
424
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UserMediaBaseService, decorators: [{
425
+ type: Injectable
426
+ }], ctorParameters: () => [{ type: i1$1.LogService }] });
427
+ class WebBarcodeService {
428
+ constructor(userMediaService) {
429
+ this.userMediaService = userMediaService;
430
+ this._device = undefined;
431
+ this._codeReader = undefined;
432
+ this._hints = new Map();
433
+ this._scanErrorSource = new Subject();
434
+ this._scanFailureSource = new Subject();
435
+ this._scanCompleteSource = new Subject();
436
+ this._scanSuccessSource = new Subject();
437
+ this._options = {
438
+ delayBetweenScanAttempts: 50,
439
+ delayBetweenScanSuccess: 500
440
+ };
441
+ this.scanError$ = this._scanErrorSource.asObservable();
442
+ this.scanFailure$ = this._scanFailureSource.asObservable();
443
+ this.scanComplete$ = this._scanCompleteSource.asObservable();
444
+ this.scanSuccess$ = this._scanSuccessSource.asObservable().pipe(map((c) => c.getText()));
445
+ }
446
+ startScan(device, videoEl, options = this._options) {
447
+ // instantly stops the scan before changing devices
448
+ this.scanStop();
449
+ // correctly sets the new (or none) device
450
+ this._device = device || undefined;
451
+ this._videoEl = videoEl;
452
+ this._options = options;
453
+ if (!this._device) {
454
+ // cleans the video because user removed the device
455
+ BrowserCodeReader.cleanVideoSource(videoEl);
456
+ }
457
+ if (this._scanSubscription) {
458
+ throw new Error('There is already a scan proccess running.');
459
+ }
460
+ if (!this._device) {
461
+ throw new Error('No device defined, cannot start scan, please define a device.');
462
+ }
463
+ // if enabled, starts scanning
464
+ if (device) {
465
+ this.scanFromDevice(device.deviceId);
466
+ }
467
+ }
468
+ setFormat(input) {
469
+ if (typeof input === 'string') {
470
+ throw new Error('Invalid formats, make sure the [formats] input is a binding.');
471
+ }
472
+ // formats may be set from html template as BarcodeFormat or string array
473
+ const formats = input.map((f) => this.getBarcodeFormatOrFail(f));
474
+ const hints = this._hints;
475
+ // updates the hints
476
+ hints.set(DecodeHintType.POSSIBLE_FORMATS, formats);
477
+ // handles updating the codeReader
478
+ this._hints = hints;
479
+ }
480
+ scanStop() {
481
+ if (this._scanSubscription) {
482
+ this._codeReader?.getScannerControls().stop();
483
+ this._scanSubscription?.unsubscribe();
484
+ this._scanSubscription = undefined;
485
+ }
486
+ // this.torchCompatible.next(false);
487
+ }
488
+ destroy() {
489
+ // @note apenas necessario por enquanto causa da Torch
490
+ this.scanStop();
491
+ this._codeReader = undefined;
492
+ this._device = undefined;
493
+ }
494
+ getBarcodeFormatOrFail(format) {
495
+ return typeof format === 'string' ? BarcodeFormat[format.trim().toUpperCase()] : format;
496
+ }
497
+ async scanFromDevice(deviceId) {
498
+ const videoElement = this._videoEl;
499
+ const codeReader = this.getCodeReader();
500
+ const scanStream = await codeReader.scanFromDeviceObservable(deviceId, videoElement);
501
+ if (!scanStream) {
502
+ throw new Error('Undefined decoding stream, aborting.');
503
+ }
504
+ const next = (x) => this._onDecodeResult(x.result, x.error);
505
+ const error = (err) => this._onDecodeError(err);
506
+ const complete = () => { };
507
+ this._scanSubscription = scanStream.subscribe(next, error, complete);
508
+ if (this._scanSubscription.closed) {
509
+ return;
510
+ }
511
+ // const controls = codeReader.getScannerControls();
512
+ // const hasTorchControl = typeof controls.switchTorch !== 'undefined';
513
+ // this.torchCompatible.next(hasTorchControl);
514
+ }
515
+ /**
516
+ * Handles decode errors.
517
+ */
518
+ _onDecodeError(err) {
519
+ this._scanErrorSource.next(err);
520
+ // this.reset();
521
+ }
522
+ /**
523
+ * Handles decode results.
524
+ */
525
+ _onDecodeResult(result, error) {
526
+ if (result) {
527
+ this._scanSuccessSource.next(result);
528
+ }
529
+ else {
530
+ this._scanFailureSource.next(error);
531
+ }
532
+ if (result) {
533
+ this._scanCompleteSource.next(result);
534
+ }
535
+ }
536
+ getCodeReader() {
537
+ if (!this._codeReader) {
538
+ this._codeReader = new BrowserMultiFormatContinuousReader(this._hints, this._options);
539
+ }
540
+ return this._codeReader;
541
+ }
542
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WebBarcodeService, deps: [{ token: UserMediaBaseService }], target: i0.ɵɵFactoryTarget.Injectable }); }
543
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WebBarcodeService }); }
544
+ }
545
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WebBarcodeService, decorators: [{
546
+ type: Injectable
547
+ }], ctorParameters: () => [{ type: UserMediaBaseService }] });
548
+
549
+ class BarcodeReaderVideoComponent extends BaseComponent {
550
+ set selectedCamera(val) {
551
+ this._cameraSource.next(val);
552
+ }
553
+ constructor(_webBarcodeService) {
554
+ super();
555
+ this._webBarcodeService = _webBarcodeService;
556
+ this.previewFitMode = 'fill';
557
+ this.scanSuccess = new EventEmitter();
558
+ this._cameraSource = new BehaviorSubject(null);
559
+ }
560
+ ngOnInit() {
561
+ super.ngOnInit();
562
+ this._setFormat(this.allFormats);
563
+ this._cameraSource
564
+ .asObservable()
565
+ .pipe(takeUntil(this._onDestroy$), debounceTime$1(500), filter((camera) => camera != null), tap((camera) => {
566
+ this._stopScan();
567
+ this._startScan(camera);
568
+ }))
569
+ .subscribe();
570
+ this._webBarcodeService.scanSuccess$.subscribe((result) => {
571
+ this.scanSuccess.emit(result);
572
+ });
573
+ }
574
+ ngOnDestroy() {
575
+ super.ngOnDestroy();
576
+ this._webBarcodeService.scanStop();
577
+ }
578
+ _setFormat(formats) {
579
+ this._webBarcodeService.setFormat(formats);
580
+ }
581
+ _stopScan() {
582
+ this._webBarcodeService.scanStop();
583
+ }
584
+ _startScan(camera) {
585
+ if (this.videoElement) {
586
+ this._webBarcodeService.startScan(camera, this.videoElement.nativeElement);
587
+ }
588
+ }
589
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarcodeReaderVideoComponent, deps: [{ token: WebBarcodeService }], target: i0.ɵɵFactoryTarget.Component }); }
590
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: BarcodeReaderVideoComponent, selector: "bdc-barcode-reader-video", inputs: { allFormats: "allFormats", previewFitMode: "previewFitMode", selectedCamera: "selectedCamera" }, outputs: { scanSuccess: "scanSuccess" }, viewQueries: [{ propertyName: "videoElement", first: true, predicate: ["videoElement"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<video #videoElement [style.object-fit]=\"previewFitMode\">\r\n <p>{{ 'BrowserNotSupport' | bbbTranslate }}</p>\r\n</video>\r\n", styles: [":host,video{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
591
+ }
592
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarcodeReaderVideoComponent, decorators: [{
593
+ type: Component,
594
+ args: [{ selector: 'bdc-barcode-reader-video', changeDetection: ChangeDetectionStrategy.OnPush, template: "<video #videoElement [style.object-fit]=\"previewFitMode\">\r\n <p>{{ 'BrowserNotSupport' | bbbTranslate }}</p>\r\n</video>\r\n", styles: [":host,video{display:block;width:100%;height:100%}\n"] }]
595
+ }], ctorParameters: () => [{ type: WebBarcodeService }], propDecorators: { allFormats: [{
596
+ type: Input
597
+ }], previewFitMode: [{
598
+ type: Input
599
+ }], scanSuccess: [{
600
+ type: Output
601
+ }], videoElement: [{
602
+ type: ViewChild,
603
+ args: ['videoElement', { static: true }]
604
+ }], selectedCamera: [{
605
+ type: Input
606
+ }] } });
607
+
608
+ class BarcodeReaderDialogComponent extends BaseComponent {
609
+ constructor(_dialogRef, _userMediaService) {
610
+ super();
611
+ this._dialogRef = _dialogRef;
612
+ this._userMediaService = _userMediaService;
613
+ this.value = '';
614
+ this.format = [BarcodeFormat.QR_CODE];
615
+ this.loading = true;
616
+ this._dialogRef.loading(true);
617
+ this.barcodeFormats = this._dialogRef.data?.barcodeFormats ?? [];
618
+ this.selectedFormat = this.barcodeFormats.length > 0 ? this.barcodeFormats[0] : BarcodeFormat.QR_CODE;
619
+ }
620
+ ngAfterViewInit() {
621
+ super.ngAfterViewInit();
622
+ this._initialize();
623
+ }
624
+ onDismiss() {
625
+ this._dialogRef.dismiss();
626
+ }
627
+ onOk() {
628
+ this._close();
629
+ }
630
+ onCameraChange(value) {
631
+ this.selectedCamera = value;
632
+ }
633
+ onFormatChange(format) {
634
+ this.selectedFormat = format;
635
+ }
636
+ onScanSuccess(result) {
637
+ this.value = result;
638
+ this._close();
639
+ }
640
+ onValueChanged(e) {
641
+ this.value = e.target.value;
642
+ }
643
+ _close() {
644
+ this._dialogRef.close(this.value);
645
+ }
646
+ _initialize() {
647
+ of(true)
648
+ .pipe(takeUntil(this._onDestroy$), exhaustMap(() => this._userMediaService.askForPermission()), concatMap((permission) => {
649
+ if (permission) {
650
+ return this._userMediaService.updateVideoInputDevices();
651
+ }
652
+ else {
653
+ return of(true);
654
+ }
655
+ }), finalize(() => {
656
+ this.loading = false;
657
+ this._dialogRef.loading(false);
658
+ }))
659
+ .subscribe();
660
+ this.hasDevice$ = this._userMediaService.hasDevices$;
661
+ this.permission$ = this._userMediaService.permission$;
662
+ this.cameras$ = this._userMediaService.cameras$.pipe(delay(0), tap((cameras) => {
663
+ this.selectedCamera = cameras.find((c) => c.label.indexOf('back') > -1) ?? cameras[0];
664
+ }));
665
+ }
666
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarcodeReaderDialogComponent, deps: [{ token: i2$2.DialogRef }, { token: UserMediaBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
667
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarcodeReaderDialogComponent, selector: "bdc-barcode-reader-dialog", usesInheritance: true, ngImport: i0, template: "<fd-dialog>\r\n <fd-dialog-header>\r\n <h1 fd-title>{{ 'BarcodeReader' | bbbTranslate }} {{ selectedCamera?.label }}</h1>\r\n <button fd-dialog-close-button (click)=\"onDismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n @if (!loading) { @if (permission$ | async) { @if (hasDevice$ | async) { @if (selectedCamera) {\r\n <bdc-barcode-reader-video\r\n [format]=\"format\"\r\n [selectedCamera]=\"selectedCamera\"\r\n [allFormats]=\"barcodeFormats\"\r\n (scanSuccess)=\"onScanSuccess($event)\"\r\n ></bdc-barcode-reader-video>\r\n } } @else {\r\n <p>BrowserNotSupport</p>\r\n } } @else {\r\n <p>NoPermission</p>\r\n } }\r\n </fd-dialog-body>\r\n <fd-dialog-footer>\r\n <ng-template fdkTemplate=\"footer\">\r\n @if (cameras$ | async; as cameraList) {\r\n <div fd-bar-left>\r\n @if (cameraList.length > 1) {\r\n <fd-select\r\n [placeholder]=\"'Camera' | bbbTranslate\"\r\n (valueChange)=\"onCameraChange($event)\"\r\n [value]=\"selectedCamera\"\r\n >\r\n @for (camera of cameraList; track camera) {\r\n <fd-option [value]=\"camera\">{{ camera.label }}</fd-option>\r\n }\r\n </fd-select>\r\n }\r\n </div>\r\n <div fd-bar-right></div>\r\n }\r\n </ng-template>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3$3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i4$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i4$2.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i4$2.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i4$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i4$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "directive", type: i10.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i7.SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "glyphFont", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i7.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: BarcodeReaderVideoComponent, selector: "bdc-barcode-reader-video", inputs: ["allFormats", "previewFitMode", "selectedCamera"], outputs: ["scanSuccess"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
668
+ }
669
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarcodeReaderDialogComponent, decorators: [{
670
+ type: Component,
671
+ args: [{ selector: 'bdc-barcode-reader-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-dialog>\r\n <fd-dialog-header>\r\n <h1 fd-title>{{ 'BarcodeReader' | bbbTranslate }} {{ selectedCamera?.label }}</h1>\r\n <button fd-dialog-close-button (click)=\"onDismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n @if (!loading) { @if (permission$ | async) { @if (hasDevice$ | async) { @if (selectedCamera) {\r\n <bdc-barcode-reader-video\r\n [format]=\"format\"\r\n [selectedCamera]=\"selectedCamera\"\r\n [allFormats]=\"barcodeFormats\"\r\n (scanSuccess)=\"onScanSuccess($event)\"\r\n ></bdc-barcode-reader-video>\r\n } } @else {\r\n <p>BrowserNotSupport</p>\r\n } } @else {\r\n <p>NoPermission</p>\r\n } }\r\n </fd-dialog-body>\r\n <fd-dialog-footer>\r\n <ng-template fdkTemplate=\"footer\">\r\n @if (cameras$ | async; as cameraList) {\r\n <div fd-bar-left>\r\n @if (cameraList.length > 1) {\r\n <fd-select\r\n [placeholder]=\"'Camera' | bbbTranslate\"\r\n (valueChange)=\"onCameraChange($event)\"\r\n [value]=\"selectedCamera\"\r\n >\r\n @for (camera of cameraList; track camera) {\r\n <fd-option [value]=\"camera\">{{ camera.label }}</fd-option>\r\n }\r\n </fd-select>\r\n }\r\n </div>\r\n <div fd-bar-right></div>\r\n }\r\n </ng-template>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n" }]
672
+ }], ctorParameters: () => [{ type: i2$2.DialogRef }, { type: UserMediaBaseService }] });
673
+
674
+ class BarcodeReaderComponent extends UiMoInfoSubFormUiComponent {
675
+ constructor() {
676
+ super(...arguments);
677
+ this.size = 'large';
678
+ }
679
+ ngOnInit() {
680
+ super.ngOnInit();
681
+ this.barcodeValue = this.context.Setting.FormPanelSetting.Data.Mo.Value;
682
+ const format = this.context.Setting.CustomFieldInfo?.Format;
683
+ if (format) {
684
+ this.barcodeFormat = format
685
+ .split(',')
686
+ .filter((c) => c)
687
+ .map((c) => Number(c) - 1);
688
+ }
689
+ this.size = BarsaApi.Bw.GetWindowSize();
690
+ }
691
+ onOpenBarcodeReader() {
692
+ const data = { barcodeFormats: this.barcodeFormat };
693
+ const dialogRef = this._dialogService.open(BarcodeReaderDialogComponent, {
694
+ data,
695
+ fullScreen: this.isMobileDevice ? false : true,
696
+ verticalPadding: true,
697
+ responsivePadding: true,
698
+ mobile: this.isMobileDevice,
699
+ mobileOuterSpacing: true
700
+ });
701
+ dialogRef.afterClosed.pipe(takeUntil(this._onDestroy$)).subscribe((value) => {
702
+ if (value) {
703
+ this._setFieldValue(value);
704
+ }
705
+ });
706
+ }
707
+ onValueChange(e) {
708
+ this._setFieldValue(e.target.value);
709
+ }
710
+ _addFormControl(formControl) {
711
+ this.customFormPanelUi = formControl;
712
+ }
713
+ _setFieldValue(value) {
714
+ this.barcodeValue = value;
715
+ const valueCustomFieldUi = this.context.formControl._dictFieldUi.Value;
716
+ valueCustomFieldUi.value = value;
717
+ valueCustomFieldUi.fireEvent('change', value);
718
+ }
719
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarcodeReaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
720
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: BarcodeReaderComponent, selector: "bdc-barcode-reader", usesInheritance: true, ngImport: i0, template: "<!-- <fd-input-group\r\n placement=\"after\"\r\n glyph=\"camera\"\r\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\r\n [button]=\"true\"\r\n ariaLabelledBy=\"fd-input-group-button-label-2\"\r\n (addOnButtonClicked)=\"onOpenBarcodeReader()\"\r\n (input)=\"onValueChange($event)\"\r\n>\r\n</fd-input-group> -->\r\n\r\n<fdp-input-group\r\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\r\n [value]=\"barcodeValue\"\r\n (input)=\"onValueChange($event)\"\r\n [name]=\"'barcode_' + id\"\r\n [disabled]=\"(disableOrReadonly$ | async)!!\"\r\n>\r\n <fdp-input-group-input type=\"text\"></fdp-input-group-input>\r\n <fdp-input-group-addon>\r\n <fdp-button glyph=\"camera\" (click)=\"onOpenBarcodeReader()\"></fdp-button>\r\n </fdp-input-group-addon>\r\n</fdp-input-group>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1$4.InputGroupComponent, selector: "fdp-input-group", inputs: ["value"] }, { kind: "component", type: i1$4.InputGroupAddonComponent, selector: "fdp-input-group-addon" }, { kind: "component", type: i1$4.InputGroupInputComponent, selector: "fdp-input-group-input", inputs: ["type"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
721
+ }
722
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarcodeReaderComponent, decorators: [{
723
+ type: Component,
724
+ args: [{ selector: 'bdc-barcode-reader', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <fd-input-group\r\n placement=\"after\"\r\n glyph=\"camera\"\r\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\r\n [button]=\"true\"\r\n ariaLabelledBy=\"fd-input-group-button-label-2\"\r\n (addOnButtonClicked)=\"onOpenBarcodeReader()\"\r\n (input)=\"onValueChange($event)\"\r\n>\r\n</fd-input-group> -->\r\n\r\n<fdp-input-group\r\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\r\n [value]=\"barcodeValue\"\r\n (input)=\"onValueChange($event)\"\r\n [name]=\"'barcode_' + id\"\r\n [disabled]=\"(disableOrReadonly$ | async)!!\"\r\n>\r\n <fdp-input-group-input type=\"text\"></fdp-input-group-input>\r\n <fdp-input-group-addon>\r\n <fdp-button glyph=\"camera\" (click)=\"onOpenBarcodeReader()\"></fdp-button>\r\n </fdp-input-group-addon>\r\n</fdp-input-group>\r\n" }]
725
+ }] });
726
+
727
+ class UiPersonPipe {
728
+ transform(value) {
729
+ let transform;
730
+ switch (value) {
731
+ case 'FirstName':
732
+ transform = 'نام';
733
+ break;
734
+ case 'LastName':
735
+ transform = 'نام خانوادگی';
736
+ break;
737
+ case 'NationalCode':
738
+ transform = 'کد ملی';
739
+ break;
740
+ case 'FatherName':
741
+ transform = 'نام پدر';
742
+ break;
743
+ case 'Birthplace':
744
+ transform = 'محل تولد';
745
+ break;
746
+ case 'Mobile':
747
+ transform = 'محل تولد';
748
+ break;
749
+ default:
750
+ transform = '';
751
+ break;
752
+ }
753
+ return transform;
754
+ }
755
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiPersonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
756
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: UiPersonPipe, name: "uiPerson" }); }
757
+ }
758
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiPersonPipe, decorators: [{
759
+ type: Pipe,
760
+ args: [{
761
+ name: 'uiPerson'
762
+ }]
763
+ }] });
764
+
765
+ class UiPersonComponent extends FieldBaseComponent {
766
+ constructor() {
767
+ super(...arguments);
768
+ this.searchResult = [];
769
+ this.personCollection = [
770
+ {
771
+ Id: 1,
772
+ FirstName: 'zahra',
773
+ LastName: 'darbandy',
774
+ FatherName: 'ali',
775
+ Birthplace: 'yazd',
776
+ NationalCode: '123456789'
777
+ },
778
+ {
779
+ Id: 2,
780
+ FirstName: 'ali',
781
+ LastName: 'kafdary',
782
+ FatherName: 'reza',
783
+ Birthplace: 'shiraz',
784
+ NationalCode: '754123659'
785
+ },
786
+ {
787
+ Id: 3,
788
+ FirstName: 'sara',
789
+ LastName: 'rezaee',
790
+ FatherName: 'ali',
791
+ Birthplace: 'tehran',
792
+ NationalCode: '123456789'
793
+ },
794
+ {
795
+ Id: 4,
796
+ FirstName: 'علی',
797
+ LastName: 'خزایی',
798
+ FatherName: 'کمال',
799
+ Birthplace: 'اصفهان',
800
+ NationalCode: '452145698'
801
+ },
802
+ {
803
+ Id: 5,
804
+ FirstName: 'vahid',
805
+ LastName: 'alipor',
806
+ FatherName: 'ali',
807
+ Birthplace: 'shiraz',
808
+ NationalCode: '756982456'
809
+ },
810
+ {
811
+ Id: 6,
812
+ FirstName: 'mohammad',
813
+ LastName: 'kamali',
814
+ FatherName: 'vahid',
815
+ Birthplace: 'ahvaz',
816
+ NationalCode: '32165897'
817
+ }
818
+ ];
819
+ this.onClose$ = new Subject();
820
+ }
821
+ ngOnInit() {
822
+ super.ngOnInit();
823
+ this.value = {
824
+ Id: 5,
825
+ FirstName: 'وحید',
826
+ LastName: 'علیپور',
827
+ FatherName: 'علی',
828
+ Birthplace: 'شیراز',
829
+ NationalCode: '756982456',
830
+ Mobile: '09175623898'
831
+ };
832
+ this.onClose$.pipe().subscribe(() => {
833
+ // console.log('closed');
834
+ });
835
+ }
836
+ ngAfterViewInit() {
837
+ super.ngAfterViewInit();
838
+ this.onClose$ = this.popoverBodyDom.onClose;
839
+ }
840
+ filter() {
841
+ this.searchResult = this.personCollection.filter((person) => person.FirstName.toLowerCase().includes(this.filterItems?.FirstName.toLowerCase() || '') &&
842
+ person.LastName.toLowerCase().includes(this.filterItems?.LastName.toLowerCase() || '') &&
843
+ person.NationalCode.toString().includes(this.filterItems?.NationalCode.toString() || ''));
844
+ }
845
+ select(person) {
846
+ this.selectedPerson = person;
847
+ }
848
+ confirm() {
849
+ this.value = this.selectedPerson ?? this.value;
850
+ this.valueChange.emit(this.value);
851
+ this.close();
852
+ }
853
+ close() {
854
+ this.dialogRef.close();
855
+ this.selectedPerson = null;
856
+ }
857
+ openDialog(template) {
858
+ this.resetTable();
859
+ this.dialogRef = this._dialogService.open(template, {
860
+ minHeight: '500px',
861
+ minWidth: '700px',
862
+ maxHeight: '1000px',
863
+ maxWidth: '1500px',
864
+ draggable: true,
865
+ resizable: true,
866
+ verticalPadding: false
867
+ });
868
+ this.dialogRef.loading(true);
869
+ setTimeout(() => this.dialogRef.loading(false), 500);
870
+ }
871
+ resetTable() {
872
+ this.filterItems = { FirstName: '', LastName: '', NationalCode: '' };
873
+ this.filter();
874
+ }
875
+ edit() { }
876
+ delete() {
877
+ this.value = null;
878
+ this.valueChange.emit(this.value);
879
+ }
880
+ openPopover() {
881
+ if (!this.isPopoverOpened && this.value) {
882
+ setTimeout(() => {
883
+ this.popoverDom.open();
884
+ }, 1000);
885
+ }
886
+ }
887
+ openChange(isOpen) {
888
+ this.isPopoverOpened = isOpen;
889
+ }
890
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiPersonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
891
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiPersonComponent, selector: "bdc-ui-person", viewQueries: [{ propertyName: "popoverDom", first: true, predicate: ["popover"], descendants: true }, { propertyName: "popoverBodyDom", first: true, predicate: PopoverBodyComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-popover [fillControlMode]=\"'equal'\" #popover (isOpenChange)=\"openChange($event)\">\r\n <fd-popover-control>\r\n <ul fd-list [compact]=\"true\">\r\n <li fd-list-item>\r\n <div fd-list-content>\r\n <div class=\"control-content\" (mouseover)=\"openPopover()\">\r\n <fd-icon glyph=\"person-placeholder\"></fd-icon>\r\n <div>\r\n <span>{{ value?.FirstName }}</span>\r\n </div>\r\n <div>\r\n <span>{{ value?.LastName }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n @if (value) {\r\n <button fd-button fdType=\"transparent\" glyph=\"user-edit\" (click)=\"edit()\"></button>\r\n <button fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"delete()\"></button>\r\n } @else {\r\n <button fd-button label=\"\u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062E\u0635\" fdType=\"transparent\" (click)=\"openDialog(dialogTemplate)\"></button>\r\n }\r\n </li>\r\n </ul>\r\n </fd-popover-control>\r\n @if (value) {\r\n <fd-popover-body #popoverBody>\r\n <div class=\"resize-quick-view\">\r\n <fd-card cardType=\"quickView\">\r\n <fd-card-content>\r\n <fd-quick-view [id]=\"value.id\">\r\n <fd-quick-view-subheader>\r\n <fd-icon glyph=\"user\"></fd-icon>\r\n <fd-quick-view-subheader-title> \u0645\u0634\u062E\u0635\u0627\u062A </fd-quick-view-subheader-title>\r\n </fd-quick-view-subheader>\r\n <fd-quick-view-group>\r\n @for (item of value | keyvalue; track item) {\r\n <fd-quick-view-group-item>\r\n @if (item.key !== 'Id') {\r\n <div class=\"popover-body-item\">\r\n <fd-quick-view-group-item-label>\r\n {{ (item.key | uiPerson) + ':' }}\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n @switch (item.value) { @case ( item.key === 'Mobile' || item.key === 'Phone' ?\r\n item.key : '' ) {\r\n <a [href]=\"'tel:' + item.value\" [innerText]=\"item.value\" fd-link></a>\r\n } @case ('Email') {\r\n <a [href]=\"'mailto:' + item.value\" [innerText]=\"item.value\" fd-link></a>\r\n } @default {\r\n <div [innerText]=\"item.value\"></div>\r\n } }\r\n </fd-quick-view-group-item-content>\r\n </div>\r\n }\r\n </fd-quick-view-group-item>\r\n }\r\n </fd-quick-view-group>\r\n </fd-quick-view>\r\n </fd-card-content>\r\n </fd-card>\r\n </div>\r\n </fd-popover-body>\r\n }\r\n</fd-popover>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 fd-title>\u062C\u0633\u062A\u062C\u0648\u06CC \u0634\u062E\u0635</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss('Close button')\"></button>\r\n </fd-dialog-header>\r\n\r\n <fd-dialog-body>\r\n <div class=\"filter\" (keydown.enter)=\"filter()\">\r\n <div fd-form-item>\r\n <label fd-form-label for=\"name\">\u0646\u0627\u0645</label>\r\n <input fd-form-control id=\"name\" [(ngModel)]=\"filterItems.FirstName\" />\r\n </div>\r\n <div fd-form-item>\r\n <label fd-form-label for=\"last-name\">\u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC</label>\r\n <input fd-form-control id=\"last-name\" [(ngModel)]=\"filterItems.LastName\" />\r\n </div>\r\n <div fd-form-item>\r\n <label fd-form-label for=\"national-code\">\u06A9\u062F\u0645\u0644\u06CC</label>\r\n <input fd-form-control id=\"national-code\" [(ngModel)]=\"filterItems.NationalCode\" />\r\n </div>\r\n\r\n <fd-button-bar fdkInitialFocus fdType=\"emphasized\" label=\"\u062C\u0633\u062A\u062C\u0648\" (click)=\"filter()\"> </fd-button-bar>\r\n </div>\r\n\r\n <table fd-table [noBorderX]=\"true\" [noBorderY]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>\u0646\u0627\u0645</th>\r\n <th fd-table-cell>\u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC</th>\r\n <th fd-table-cell>\u06A9\u062F \u0645\u0644\u06CC</th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (person of searchResult; track person) {\r\n <tr (click)=\"select(person)\" [class.selected]=\"selectedPerson?.Id === person?.Id\" fd-table-row>\r\n <td fd-table-cell>\r\n {{ person.FirstName }}\r\n </td>\r\n <td fd-table-cell>{{ person.LastName }}</td>\r\n <td fd-table-cell>{{ person.NationalCode }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdkTemplate=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar fdType=\"emphasized\" label=\"\u062A\u0627\u06CC\u06CC\u062F\" (click)=\"confirm()\"> </fd-button-bar>\r\n <fd-button-bar fdkInitialFocus label=\"\u0627\u0646\u0635\u0631\u0627\u0641\" (click)=\"close()\"> </fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;width:100%}::ng-deep .fd-dialog__body{padding:10px 15px!important}::ng-deep .fd-dialog__body .filter{display:flex;column-gap:5px;align-items:flex-end}::ng-deep .fd-dialog__body .filter fd-button-bar{margin-bottom:5px}::ng-deep .fd-dialog__body table{margin-top:25px}::ng-deep .fd-dialog__body table tr:hover{background-color:#f0f5f8}::ng-deep .fd-dialog__body table .selected{background-color:#d0e5ef}::ng-deep .popover-body-item{display:flex;column-gap:5px;align-items:center}::ng-deep .popover-body-item fd-quick-view-group-item-label .fd-form-label__wrapper{padding-left:0}fd-popover{flex:1}fd-popover fd-popover-body{width:300px}li{height:1.625rem!important;min-height:1.625rem!important;display:flex;margin-top:.1875rem!important;margin-bottom:.25rem!important;border:.0625rem solid #89919a!important;padding-left:0}li .fd-list__content{flex:1}li .fd-list__content .control-content{display:flex;column-gap:5px;margin-top:2px;width:fit-content}li .fd-list__content .control-content div{margin-top:2px}li .fd-list__content .control-content fd-icon{margin-left:5px}li .fd-list__content .control-content:hover>*{color:#062b42;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i3$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i3$4.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$3.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i4$3.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i6$1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i6$1.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i6$1.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i2$3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i7$1.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i7$1.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i7$1.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "component", type: i4$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i4$2.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i4$2.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i4$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i4$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "directive", type: i10.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i10.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i7$2.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7$2.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i7$2.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i3$5.QuickViewComponent, selector: "fd-quick-view", inputs: ["id"] }, { kind: "component", type: i3$5.QuickViewSubheaderComponent, selector: "fd-quick-view-subheader" }, { kind: "component", type: i3$5.QuickViewSubheaderTitleComponent, selector: "fd-quick-view-subheader-title" }, { kind: "component", type: i3$5.QuickViewGroupComponent, selector: "fd-quick-view-group" }, { kind: "component", type: i3$5.QuickViewGroupItemComponent, selector: "fd-quick-view-group-item", inputs: ["id"] }, { kind: "component", type: i3$5.QuickViewGroupItemLabelComponent, selector: "fd-quick-view-group-item-label" }, { kind: "component", type: i3$5.QuickViewGroupItemContentComponent, selector: "fd-quick-view-group-item-content" }, { kind: "component", type: i3$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i3$6.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i3$6.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i3$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i3$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: UiPersonPipe, name: "uiPerson" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
892
+ }
893
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiPersonComponent, decorators: [{
894
+ type: Component,
895
+ args: [{ selector: 'bdc-ui-person', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-popover [fillControlMode]=\"'equal'\" #popover (isOpenChange)=\"openChange($event)\">\r\n <fd-popover-control>\r\n <ul fd-list [compact]=\"true\">\r\n <li fd-list-item>\r\n <div fd-list-content>\r\n <div class=\"control-content\" (mouseover)=\"openPopover()\">\r\n <fd-icon glyph=\"person-placeholder\"></fd-icon>\r\n <div>\r\n <span>{{ value?.FirstName }}</span>\r\n </div>\r\n <div>\r\n <span>{{ value?.LastName }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n @if (value) {\r\n <button fd-button fdType=\"transparent\" glyph=\"user-edit\" (click)=\"edit()\"></button>\r\n <button fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"delete()\"></button>\r\n } @else {\r\n <button fd-button label=\"\u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062E\u0635\" fdType=\"transparent\" (click)=\"openDialog(dialogTemplate)\"></button>\r\n }\r\n </li>\r\n </ul>\r\n </fd-popover-control>\r\n @if (value) {\r\n <fd-popover-body #popoverBody>\r\n <div class=\"resize-quick-view\">\r\n <fd-card cardType=\"quickView\">\r\n <fd-card-content>\r\n <fd-quick-view [id]=\"value.id\">\r\n <fd-quick-view-subheader>\r\n <fd-icon glyph=\"user\"></fd-icon>\r\n <fd-quick-view-subheader-title> \u0645\u0634\u062E\u0635\u0627\u062A </fd-quick-view-subheader-title>\r\n </fd-quick-view-subheader>\r\n <fd-quick-view-group>\r\n @for (item of value | keyvalue; track item) {\r\n <fd-quick-view-group-item>\r\n @if (item.key !== 'Id') {\r\n <div class=\"popover-body-item\">\r\n <fd-quick-view-group-item-label>\r\n {{ (item.key | uiPerson) + ':' }}\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n @switch (item.value) { @case ( item.key === 'Mobile' || item.key === 'Phone' ?\r\n item.key : '' ) {\r\n <a [href]=\"'tel:' + item.value\" [innerText]=\"item.value\" fd-link></a>\r\n } @case ('Email') {\r\n <a [href]=\"'mailto:' + item.value\" [innerText]=\"item.value\" fd-link></a>\r\n } @default {\r\n <div [innerText]=\"item.value\"></div>\r\n } }\r\n </fd-quick-view-group-item-content>\r\n </div>\r\n }\r\n </fd-quick-view-group-item>\r\n }\r\n </fd-quick-view-group>\r\n </fd-quick-view>\r\n </fd-card-content>\r\n </fd-card>\r\n </div>\r\n </fd-popover-body>\r\n }\r\n</fd-popover>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 fd-title>\u062C\u0633\u062A\u062C\u0648\u06CC \u0634\u062E\u0635</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss('Close button')\"></button>\r\n </fd-dialog-header>\r\n\r\n <fd-dialog-body>\r\n <div class=\"filter\" (keydown.enter)=\"filter()\">\r\n <div fd-form-item>\r\n <label fd-form-label for=\"name\">\u0646\u0627\u0645</label>\r\n <input fd-form-control id=\"name\" [(ngModel)]=\"filterItems.FirstName\" />\r\n </div>\r\n <div fd-form-item>\r\n <label fd-form-label for=\"last-name\">\u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC</label>\r\n <input fd-form-control id=\"last-name\" [(ngModel)]=\"filterItems.LastName\" />\r\n </div>\r\n <div fd-form-item>\r\n <label fd-form-label for=\"national-code\">\u06A9\u062F\u0645\u0644\u06CC</label>\r\n <input fd-form-control id=\"national-code\" [(ngModel)]=\"filterItems.NationalCode\" />\r\n </div>\r\n\r\n <fd-button-bar fdkInitialFocus fdType=\"emphasized\" label=\"\u062C\u0633\u062A\u062C\u0648\" (click)=\"filter()\"> </fd-button-bar>\r\n </div>\r\n\r\n <table fd-table [noBorderX]=\"true\" [noBorderY]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>\u0646\u0627\u0645</th>\r\n <th fd-table-cell>\u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC</th>\r\n <th fd-table-cell>\u06A9\u062F \u0645\u0644\u06CC</th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (person of searchResult; track person) {\r\n <tr (click)=\"select(person)\" [class.selected]=\"selectedPerson?.Id === person?.Id\" fd-table-row>\r\n <td fd-table-cell>\r\n {{ person.FirstName }}\r\n </td>\r\n <td fd-table-cell>{{ person.LastName }}</td>\r\n <td fd-table-cell>{{ person.NationalCode }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdkTemplate=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar fdType=\"emphasized\" label=\"\u062A\u0627\u06CC\u06CC\u062F\" (click)=\"confirm()\"> </fd-button-bar>\r\n <fd-button-bar fdkInitialFocus label=\"\u0627\u0646\u0635\u0631\u0627\u0641\" (click)=\"close()\"> </fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;width:100%}::ng-deep .fd-dialog__body{padding:10px 15px!important}::ng-deep .fd-dialog__body .filter{display:flex;column-gap:5px;align-items:flex-end}::ng-deep .fd-dialog__body .filter fd-button-bar{margin-bottom:5px}::ng-deep .fd-dialog__body table{margin-top:25px}::ng-deep .fd-dialog__body table tr:hover{background-color:#f0f5f8}::ng-deep .fd-dialog__body table .selected{background-color:#d0e5ef}::ng-deep .popover-body-item{display:flex;column-gap:5px;align-items:center}::ng-deep .popover-body-item fd-quick-view-group-item-label .fd-form-label__wrapper{padding-left:0}fd-popover{flex:1}fd-popover fd-popover-body{width:300px}li{height:1.625rem!important;min-height:1.625rem!important;display:flex;margin-top:.1875rem!important;margin-bottom:.25rem!important;border:.0625rem solid #89919a!important;padding-left:0}li .fd-list__content{flex:1}li .fd-list__content .control-content{display:flex;column-gap:5px;margin-top:2px;width:fit-content}li .fd-list__content .control-content div{margin-top:2px}li .fd-list__content .control-content fd-icon{margin-left:5px}li .fd-list__content .control-content:hover>*{color:#062b42;font-weight:700}\n"] }]
896
+ }], propDecorators: { popoverDom: [{
897
+ type: ViewChild,
898
+ args: ['popover']
899
+ }], popoverBodyDom: [{
900
+ type: ViewChild,
901
+ args: [PopoverBodyComponent]
902
+ }] } });
903
+
904
+ class LoginSocialConncetionsComponent extends ReportBaseComponent {
905
+ constructor(_ulvMainService, _portalService, reportValuePipe) {
906
+ super(_portalService, _ulvMainService);
907
+ this._ulvMainService = _ulvMainService;
908
+ this._portalService = _portalService;
909
+ this.reportValuePipe = reportValuePipe;
910
+ this.rtl = BarsaApi.LoginFormData.IsRtl;
911
+ }
912
+ onClick(mo) {
913
+ const provider = this.reportValuePipe.transform('Name', mo, this.allColumns, true);
914
+ const returnUrl = encodeURIComponent(window.location.href);
915
+ BarsaApi.Bw.NavigateTo(`/api/openId/signin?provider=${provider}&returnUrl=${returnUrl}`);
916
+ }
917
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LoginSocialConncetionsComponent, deps: [{ token: i1$1.UlvMainService }, { token: i1$1.PortalService }, { token: i1$1.MoReportValuePipe }], target: i0.ɵɵFactoryTarget.Component }); }
918
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: LoginSocialConncetionsComponent, selector: "bdc-login-social-conncetions", host: { properties: { "attr.rtl": "this.rtl" } }, usesInheritance: true, ngImport: i0, template: "@for (mo of moDataList$ | async; track mo) {\r\n<button\r\n fd-button\r\n [label]=\"'Display Text' | rval: mo:allColumns\"\r\n [fdType]=\"'FdType' | rval: mo:allColumns:true\"\r\n (click)=\"onClick(mo)\"\r\n>\r\n <img\r\n style=\"max-width: 28px\"\r\n [src]=\"('Logo' | rval: mo:allColumns)?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n />\r\n</button>\r\n}\r\n", styles: [":host{display:flex;flex-wrap:wrap;width:100%;justify-content:stretch;margin-top:1rem;column-gap:5px;row-gap:5px}button{flex-grow:1;flex-direction:row-reverse}button img{padding:5px}fd-toolbar{width:100%}\n"], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
919
+ }
920
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LoginSocialConncetionsComponent, decorators: [{
921
+ type: Component,
922
+ args: [{ selector: 'bdc-login-social-conncetions', changeDetection: ChangeDetectionStrategy.OnPush, template: "@for (mo of moDataList$ | async; track mo) {\r\n<button\r\n fd-button\r\n [label]=\"'Display Text' | rval: mo:allColumns\"\r\n [fdType]=\"'FdType' | rval: mo:allColumns:true\"\r\n (click)=\"onClick(mo)\"\r\n>\r\n <img\r\n style=\"max-width: 28px\"\r\n [src]=\"('Logo' | rval: mo:allColumns)?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n />\r\n</button>\r\n}\r\n", styles: [":host{display:flex;flex-wrap:wrap;width:100%;justify-content:stretch;margin-top:1rem;column-gap:5px;row-gap:5px}button{flex-grow:1;flex-direction:row-reverse}button img{padding:5px}fd-toolbar{width:100%}\n"] }]
923
+ }], ctorParameters: () => [{ type: i1$1.UlvMainService }, { type: i1$1.PortalService }, { type: i1$1.MoReportValuePipe }], propDecorators: { rtl: [{
924
+ type: HostBinding,
925
+ args: ['attr.rtl']
926
+ }] } });
927
+
928
+ class LoginFormComponent extends FormBaseComponent {
929
+ constructor() {
930
+ super(...arguments);
931
+ this._desktopmode = !getDeviceIsMobile();
932
+ this.onKeyEnter = (_) => {
933
+ const layoutItem = this._controlUiPipe.transform(' ورود', this.layout94);
934
+ if (layoutItem) {
935
+ layoutItem.FieldUi.fireEvent('click', layoutItem.FieldUi);
936
+ }
937
+ };
938
+ }
939
+ ngOnInit() {
940
+ this._activatedRoute.queryParams.pipe(takeUntil(this._onDestroy$)).subscribe((params) => {
941
+ BarsaApi.Bw.SetCultureByDisplayName(params.culture);
942
+ });
943
+ const root = document.documentElement;
944
+ root.style.setProperty('--absolute-page-top', '0px');
945
+ super.ngOnInit();
946
+ this.layout94$.subscribe((layout94) => {
947
+ this.layout94 = layout94;
948
+ });
949
+ this.size$ = this._portalService.deviceSize$.pipe(map((deviceSize) => {
950
+ switch (deviceSize) {
951
+ case 's':
952
+ return 'sm';
953
+ case 'm':
954
+ return 'md';
955
+ default:
956
+ return 'xl';
957
+ }
958
+ }));
959
+ }
960
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LoginFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
961
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: LoginFormComponent, selector: "bdc-login-form", host: { listeners: { "keydown.enter": "onKeyEnter($event)" }, properties: { "class.desktopmode": "this._desktopmode" } }, providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "@if (mo$ | async; as mo) { @if (mo.IsLogging) {\r\n<bsu-mask></bsu-mask>\r\n} @if ((size$ | async) === 'sm') {\r\n<fd-layout-grid [class.mobile]=\"isMobile\">\r\n <div [fdLayoutGridCol]=\"1\"></div>\r\n <div [fdLayoutGridCol]=\"10\">\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n [class.desktopMode]=\"!(isMobile === true)\"\r\n ></bsu-ly-layout-container-of-root>\r\n </div>\r\n <div [fdLayoutGridCol]=\"1\"></div>\r\n</fd-layout-grid>\r\n} @else {\r\n<fd-dynamic-side-content [size]=\"(size$ | async)!!\">\r\n <fd-dynamic-side-content-side>\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n ></bsu-ly-layout-container-of-root>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main>\r\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\r\n <bsu-layout-control\r\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\r\n [config]=\"layoutConfig\"\r\n [showLabel]=\"false\"\r\n [inlineEdit]=\"true\"\r\n ></bsu-layout-control>\r\n </ng-container> -->\r\n @if ('\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94; as layoutConfig) {\r\n <div\r\n id=\"bgLogin\"\r\n [style.backgroundImage]=\"\r\n 'url(' +\r\n (mo.Background?.FileId | picFieldSrc: 'PictureFileInfo':null:layoutConfig.FieldUi.Setting.FieldDefId) +\r\n ')'\r\n \"\r\n ></div>\r\n }\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n} }\r\n", styles: ["@charset \"UTF-8\";:host{display:block;background-color:#fff}:host ::ng-deep bsu-ly-simple-label{text-align:center}:host ::ng-deep bsu-ly-simple-label:nth-of-type(1){margin-top:15px}:host ::ng-deep bsu-ui-picture-file{text-align:center}:host ::ng-deep .wrap-content>.container-field{max-width:100%!important}fd-dynamic-side-content{min-height:100vh}fd-dynamic-side-content-side{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}bsu-ly-layout-container-of-root{padding:0 1rem;box-sizing:border-box;display:flex;align-items:center;height:100%}#bgLogin{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}@media (max-width: 599px){:host ::ng-deep bsu-layout-control{min-width:auto!important}:host ::ng-deep bsu-ly-layout-container-of-root{padding:0}}@media (max-height: 670px){:host.desktopmode bsu-ly-layout-container-of-root{padding:0}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-ly-empty-space{display:none}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-layout-control[caption=\\644\\648\\6af\\648]{display:none}}fd-layout-grid.mobile{overflow:auto;height:100vh}\n"], dependencies: [{ kind: "component", type: i2$1.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i2$1.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i4$1.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i4$1.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i4$1.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "component", type: i3$7.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i3$7.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
962
+ }
963
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LoginFormComponent, decorators: [{
964
+ type: Component,
965
+ args: [{ selector: 'bdc-login-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "@if (mo$ | async; as mo) { @if (mo.IsLogging) {\r\n<bsu-mask></bsu-mask>\r\n} @if ((size$ | async) === 'sm') {\r\n<fd-layout-grid [class.mobile]=\"isMobile\">\r\n <div [fdLayoutGridCol]=\"1\"></div>\r\n <div [fdLayoutGridCol]=\"10\">\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n [class.desktopMode]=\"!(isMobile === true)\"\r\n ></bsu-ly-layout-container-of-root>\r\n </div>\r\n <div [fdLayoutGridCol]=\"1\"></div>\r\n</fd-layout-grid>\r\n} @else {\r\n<fd-dynamic-side-content [size]=\"(size$ | async)!!\">\r\n <fd-dynamic-side-content-side>\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n ></bsu-ly-layout-container-of-root>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main>\r\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\r\n <bsu-layout-control\r\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\r\n [config]=\"layoutConfig\"\r\n [showLabel]=\"false\"\r\n [inlineEdit]=\"true\"\r\n ></bsu-layout-control>\r\n </ng-container> -->\r\n @if ('\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94; as layoutConfig) {\r\n <div\r\n id=\"bgLogin\"\r\n [style.backgroundImage]=\"\r\n 'url(' +\r\n (mo.Background?.FileId | picFieldSrc: 'PictureFileInfo':null:layoutConfig.FieldUi.Setting.FieldDefId) +\r\n ')'\r\n \"\r\n ></div>\r\n }\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n} }\r\n", styles: ["@charset \"UTF-8\";:host{display:block;background-color:#fff}:host ::ng-deep bsu-ly-simple-label{text-align:center}:host ::ng-deep bsu-ly-simple-label:nth-of-type(1){margin-top:15px}:host ::ng-deep bsu-ui-picture-file{text-align:center}:host ::ng-deep .wrap-content>.container-field{max-width:100%!important}fd-dynamic-side-content{min-height:100vh}fd-dynamic-side-content-side{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}bsu-ly-layout-container-of-root{padding:0 1rem;box-sizing:border-box;display:flex;align-items:center;height:100%}#bgLogin{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}@media (max-width: 599px){:host ::ng-deep bsu-layout-control{min-width:auto!important}:host ::ng-deep bsu-ly-layout-container-of-root{padding:0}}@media (max-height: 670px){:host.desktopmode bsu-ly-layout-container-of-root{padding:0}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-ly-empty-space{display:none}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-layout-control[caption=\\644\\648\\6af\\648]{display:none}}fd-layout-grid.mobile{overflow:auto;height:100vh}\n"] }]
966
+ }], propDecorators: { _desktopmode: [{
967
+ type: HostBinding,
968
+ args: ['class.desktopmode']
969
+ }], onKeyEnter: [{
970
+ type: HostListener,
971
+ args: ['keydown.enter', ['$event']]
972
+ }] } });
973
+
974
+ class ServiceDeskHeaderComponent extends TilesViewerContainerComponent {
975
+ constructor(_portalService, _tilesService, _tilesViewerService, _renderer, _viewportScroller, _cdr, _router, _activatedRoute) {
976
+ super(_portalService, _tilesService, _tilesViewerService);
977
+ this._portalService = _portalService;
978
+ this._tilesService = _tilesService;
979
+ this._tilesViewerService = _tilesViewerService;
980
+ this._renderer = _renderer;
981
+ this._viewportScroller = _viewportScroller;
982
+ this._cdr = _cdr;
983
+ this._router = _router;
984
+ this._activatedRoute = _activatedRoute;
985
+ this.selectedTabIndex = 0;
986
+ this.heightOfSpaceHolder = 88;
987
+ this.searchTerm = '';
988
+ this._enableScroll = false;
989
+ this._stickyTopPosition = 66;
990
+ this.observerList = [];
991
+ this.appGroups = [];
992
+ const root = document.documentElement;
993
+ root.style.setProperty('--absolute-page-top', this._stickyTopPosition + 'px');
994
+ }
995
+ ngOnInit() {
996
+ super.ngOnInit();
997
+ this._portalService.searchTerm$.pipe(takeUntil$1(this._onDestroy$)).subscribe((term) => {
998
+ this.searchTerm = term;
999
+ this._cdr.detectChanges();
1000
+ });
1001
+ this.appTileGroups$.subscribe((appTileGroups) => {
1002
+ appTileGroups.forEach((c) => this._tilesViewerService.loadAppGroup(c));
1003
+ this.appGroups = appTileGroups;
1004
+ });
1005
+ this._renderer.setStyle(this.navHolder.nativeElement, 'top', this._stickyTopPosition + 'px');
1006
+ this.setGridTemplateRows(this.heightOfSpaceHolder);
1007
+ this.deviceSize$ = this._portalService.deviceSize$;
1008
+ this._portalService.deviceSize$.subscribe((c) => {
1009
+ let newHeight = this.heightOfSpaceHolder;
1010
+ this.tabSize = c;
1011
+ if (c === 's') {
1012
+ newHeight = 88;
1013
+ }
1014
+ else if (c === 'm') {
1015
+ newHeight = 220;
1016
+ }
1017
+ else if (c === 'l') {
1018
+ newHeight = 250;
1019
+ }
1020
+ else {
1021
+ newHeight = 325;
1022
+ }
1023
+ newHeight = 88;
1024
+ if (this.heightOfSpaceHolder !== newHeight) {
1025
+ this.heightOfSpaceHolder = newHeight;
1026
+ this.setGridTemplateRows(newHeight);
1027
+ }
1028
+ });
1029
+ }
1030
+ ngAfterViewInit() {
1031
+ const deviceSize = this._portalService.deviceSize;
1032
+ let stickyTopPosition = 20;
1033
+ if (deviceSize === 's') {
1034
+ stickyTopPosition = 60;
1035
+ }
1036
+ this._stickyDom(this.aboveSearch.nativeElement, this.searchHolder.nativeElement, -stickyTopPosition, 'sticky');
1037
+ this._stickyDom(this.aboveContent.nativeElement, this.navHolder.nativeElement, -this._stickyTopPosition, 'sticky');
1038
+ this._stickyDom(this.aboveContent.nativeElement, this.bgOuterHolder.nativeElement, -this._stickyTopPosition, 'sticky', () => {
1039
+ this._renderer.setStyle(this.bgOuterHolder.nativeElement, 'height', this._stickyTopPosition + 'px');
1040
+ }, () => {
1041
+ this._renderer.setStyle(this.bgOuterHolder.nativeElement, 'height', '100%');
1042
+ });
1043
+ this._stickyDom(this.aboveSearch.nativeElement, this.contentAndNav.nativeElement, -stickyTopPosition, 'navAndContent_tb', () => {
1044
+ this._renderer.removeAttribute(this.contentAndNav.nativeElement, 'first');
1045
+ }, () => {
1046
+ this._renderer.setAttribute(this.contentAndNav.nativeElement, 'first', 'true');
1047
+ });
1048
+ setTimeout(() => {
1049
+ this._enableScroll = true;
1050
+ }, 1000);
1051
+ this._portalService.navigationStart$.pipe(takeUntil$1(this._onDestroy$)).subscribe((event) => {
1052
+ this._lastScrollPos = window.scrollY;
1053
+ if (event === null) {
1054
+ return;
1055
+ }
1056
+ if (event?.url !== '/servicedesk' && event?.url !== '/' && !this._disableIntersection) {
1057
+ this.prepareForm();
1058
+ }
1059
+ });
1060
+ this._portalService.navigationEnd$.pipe(takeUntil$1(this._onDestroy$)).subscribe((event) => {
1061
+ if (event !== null &&
1062
+ (event?.url === '/servicedesk' || event?.url === '/' || event.urlAfterRedirects === '/servicedesk')) {
1063
+ this.unPrepareForm();
1064
+ }
1065
+ });
1066
+ }
1067
+ onSearchSubmit() {
1068
+ this._router.navigateByUrl('servicedesk/search?term=' + this.searchTerm);
1069
+ // var searchMo = BarsaApi.Bw.RunBlMethod('GetSearchMo', this.searchTerm);
1070
+ // BarsaApi.Bw.Form.Show({ Mo: searchMo });
1071
+ }
1072
+ prepareForm() {
1073
+ this._disableIntersection = true;
1074
+ this._cdr.detach();
1075
+ this.disconnectIntersctionObserverList();
1076
+ this._renderer.addClass(this.searchHolder.nativeElement, 'sticky');
1077
+ this._renderer.addClass(this.contentAndNav.nativeElement, 'hide');
1078
+ this.visibleContent(false);
1079
+ const flags = RendererStyleFlags2.Important;
1080
+ this._renderer.setStyle(document.body, 'overflow', 'hidden', flags);
1081
+ this.scrollToTop();
1082
+ }
1083
+ unPrepareForm() {
1084
+ // this.setHeightSearchHolder(this.heightOfSpaceHolder);
1085
+ this.visibleContent(true);
1086
+ // this._renderer.removeClass(this.searchHolder.nativeElement, 'sticky');
1087
+ this._renderer.removeClass(this.searchHolder.nativeElement, 'hide');
1088
+ this._renderer.removeClass(this.contentAndNav.nativeElement, 'hide');
1089
+ const flags = RendererStyleFlags2.Important;
1090
+ this._renderer.setStyle(document.body, 'overflow', 'auto', flags);
1091
+ this.scrollToTop();
1092
+ this._cdr.reattach();
1093
+ this._disableIntersection = false;
1094
+ this.connectIntersctionObserverList();
1095
+ }
1096
+ setHeightSearchHolder(height) {
1097
+ this._renderer.setStyle(this.headerSpaceHolder.nativeElement, 'height', `${height}px`);
1098
+ }
1099
+ visibleContent(visible) {
1100
+ this._renderer.setStyle(this.contentAndNav.nativeElement, 'display', visible ? 'flex' : 'none');
1101
+ }
1102
+ setGridTemplateRows(height) {
1103
+ this._renderer.setStyle(this.headerGrid.nativeElement, 'grid-template-rows', `minmax(78px, 15%) 46px 32px 1fr auto 12%; height:${height}px`);
1104
+ // this._renderer.setStyle(this.headerGrid.nativeElement, 'background-color', `red`);
1105
+ this._renderer.setStyle(this.headerSpaceHolder.nativeElement, 'height', `${height}px`);
1106
+ }
1107
+ onSelectedTabChange3(selectedTab) {
1108
+ const tablistCmp = selectedTab._tabsComponent;
1109
+ if (tablistCmp) {
1110
+ tablistCmp._disableScrollSpy = true;
1111
+ }
1112
+ this.scrollToTop();
1113
+ if (selectedTab.id === '0') {
1114
+ return;
1115
+ }
1116
+ const elementRefOfselectedTileGroup = this.tilesViewerGroupElList.get(Number(selectedTab.id))?.nativeElement;
1117
+ elementRefOfselectedTileGroup.scrollIntoView({
1118
+ block: 'start'
1119
+ });
1120
+ }
1121
+ scrollToLastPos() {
1122
+ this._viewportScroller.scrollToPosition([0, this._lastScrollPos]);
1123
+ }
1124
+ scrollToTop() {
1125
+ if (this._enableScroll) {
1126
+ this._viewportScroller.scrollToPosition([0, this.heightOfSpaceHolder - this._stickyTopPosition]);
1127
+ }
1128
+ }
1129
+ disconnectIntersctionObserverList() {
1130
+ this.observerList.forEach((c) => c.observer.disconnect());
1131
+ }
1132
+ connectIntersctionObserverList() {
1133
+ this.observerList.forEach((c) => c.observer.observe(c.el));
1134
+ }
1135
+ _stickyDom(above, holder, marginTop, className, visibleCallback, hiddenCallBack) {
1136
+ const handler = (entries) => {
1137
+ if (this._disableIntersection) {
1138
+ return;
1139
+ }
1140
+ if (!entries[0].isIntersecting) {
1141
+ this._renderer.addClass(holder, className);
1142
+ if (typeof visibleCallback === 'function') {
1143
+ visibleCallback();
1144
+ }
1145
+ }
1146
+ else {
1147
+ this._renderer.removeClass(holder, className);
1148
+ if (typeof hiddenCallBack === 'function') {
1149
+ hiddenCallBack();
1150
+ }
1151
+ }
1152
+ };
1153
+ const options = {
1154
+ rootMargin: `${marginTop}px 0px 0px 0px`,
1155
+ threshold: 0.1
1156
+ };
1157
+ const observer = new window.IntersectionObserver(handler, options);
1158
+ observer.observe(above);
1159
+ this.observerList.push({ el: above, observer });
1160
+ }
1161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ServiceDeskHeaderComponent, deps: [{ token: i1$1.PortalService }, { token: i2$4.TilesService }, { token: i2$4.TilesViewerService }, { token: i0.Renderer2 }, { token: i1$3.ViewportScroller }, { token: i0.ChangeDetectorRef }, { token: i4$4.Router }, { token: i4$4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
1162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ServiceDeskHeaderComponent, selector: "bdc-service-desk-header", inputs: { settings: "settings" }, providers: [TilesViewerService], viewQueries: [{ propertyName: "headerSpaceHolder", first: true, predicate: ["headerSpaceHolder"], descendants: true, static: true }, { propertyName: "headerGrid", first: true, predicate: ["headerGrid"], descendants: true, static: true }, { propertyName: "aboveSearch", first: true, predicate: ["aboveSearch"], descendants: true, static: true }, { propertyName: "searchHolder", first: true, predicate: ["searchHolder"], descendants: true, static: true }, { propertyName: "navHolder", first: true, predicate: ["navHolder"], descendants: true, static: true }, { propertyName: "aboveContent", first: true, predicate: ["aboveContent"], descendants: true, static: true }, { propertyName: "bgOuterHolder", first: true, predicate: ["bgOuterHolder"], descendants: true, static: true }, { propertyName: "contentAndNav", first: true, predicate: ["contentAndNav"], descendants: true, static: true }, { propertyName: "tilesViewerGroupElList", predicate: TilesViewerGroupComponent, descendants: true, read: ElementRef }, { propertyName: "tabPanelComponents", predicate: TabPanelComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div id=\"headerGrid\" style=\"grid-template-rows: minmax(1px, 15%) 48px 32px 1fr auto 12%; height: 148px\" #headerGrid>\r\n <div class=\"companyLogoHolder_aboveSearch\" #aboveSearch></div>\r\n <div id=\"searchHolder\" style=\"grid-row: 2\" #searchHolder>\r\n <fd-input-group\r\n [style.display]=\"settings?.HideSearch ? 'none' : null\"\r\n class=\"input-search\"\r\n contentDensity=\"cozy\"\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n >\r\n </fd-input-group>\r\n </div>\r\n</div>\r\n<div id=\"headerSpaceHolder\" #headerSpaceHolder>\r\n <div id=\"bgOuterHolder\" #bgOuterHolder>\r\n <div id=\"bgInnerHolder\" style=\"height: 100vh\">\r\n <div class=\"backgroundImage\" id=\"backgroundImage\">\r\n <img class=\"picture\" src=\"/assets/back.jpg\" loading=\"lazy\" />\r\n <span id=\"backgroundImageOverlay\" class=\"overlay\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div id=\"contentHolderAndNav\" first=\"true\" #contentAndNav>\r\n <div class=\"aboveContent\" #aboveContent></div>\r\n <div id=\"contentHolder\">\r\n <div class=\"nav\" #navHolder>\r\n <div class=\"nav-container\">\r\n <ng-container\r\n *ngTemplateOutlet=\"renderTabs; context: { $implicit: (appTileGroups$ | async)!! }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"nav_surrogate\" style=\"height: 10px\"></div>\r\n <div class=\"content-feed\">\r\n <ng-container\r\n *ngTemplateOutlet=\"renderGroups; context: { $implicit: (appTileGroups$ | async)!! }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #renderTabs let-appTileGroups>\r\n <fd-tab-list\r\n [size]=\"tabSize\"\r\n [collapseOverflow]=\"tabSize === 's' || appTileGroups.length > 5\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n (selectedTabChange)=\"onSelectedTabChange3($event)\"\r\n >\r\n @for (appTileGroup of appTileGroups; track appTileGroup; let i = $index) {\r\n <fd-tab [id]=\"'' + i\" [title]=\"appTileGroup.navigatorTitle\"> </fd-tab>\r\n }\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template #renderGroups let-appTileGroups>\r\n @for (appTileGroup of appTileGroups; track appTileGroup; let i = $index) {\r\n <bt-tiles-viewer-group\r\n [attr.index]=\"i\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"false\"\r\n [stackContent]=\"true\"\r\n [isAppTileSubGroup]=\"false\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n ></bt-tiles-viewer-group>\r\n }\r\n</ng-template>\r\n", styles: ["html{scroll-behavior:smooth}body{overflow-y:auto!important;overflow-x:hidden!important}bt-shellbar{position:fixed;top:10px;width:100%;z-index:6}bt-shellbar .fd-shellbar{background:transparent;box-shadow:none}bt-shellbar .fd-shellbar__product{display:none}bdc-service-desk-header{display:block}bdc-service-desk-header #headerGrid{display:grid;justify-items:center;position:absolute;top:0;width:100%}bdc-service-desk-header #headerSpaceHolder{transition:height .3s ease-out 0s;width:100%}bdc-service-desk-header #searchHolder{z-index:302}bdc-service-desk-header #searchHolder.sticky{position:fixed;top:15px;will-change:transform}bdc-service-desk-header #contentHolderAndNav{align-items:center;background:#00000051;display:flex;flex-direction:column;min-height:100vh;position:relative;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav fd-tab-list{background-color:transparent!important;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav fd-tab-list fd-tab,bdc-service-desk-header #contentHolderAndNav fd-tab-list .fd-tabs{background-color:transparent!important;box-shadow:none!important;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav[first=true] span.fd-tabs__tag{color:#fff!important}bdc-service-desk-header #contentHolderAndNav[first=true] .fd-tabs__link.is-selected>span.fd-tabs__tag:after{background-color:#fff!important}bdc-service-desk-header #contentHolderAndNav[first=true] .fd-layout-panel__title{color:#fff!important}bdc-service-desk-header #contentHolderAndNav.navAndContent_tb{background:#f7f7f7}bdc-service-desk-header #contentHolder{align-items:center;display:flex;flex-direction:column}bdc-service-desk-header .nav-container{align-items:center;display:flex;gap:5px}bdc-service-desk-header .nav-container fd-tab-list{width:100%}bdc-service-desk-header .nav_surrogate{height:1px}bdc-service-desk-header .nav{display:flex;height:50px;justify-content:center;z-index:500;width:100%}bdc-service-desk-header .nav ul{height:auto;overflow:hidden;list-style:none;padding-inline:0px 15px;margin:0;display:inline-flex;align-items:center}bdc-service-desk-header .nav ul li{display:inline;list-style:none;padding:0 16px;color:#fff}bdc-service-desk-header .nav.sticky{background:#f7f7f7;position:fixed;will-change:transform}bt-tiles-viewer-group:first-child fd-layout-panel-header{display:none!important}bt-tiles-viewer-group:first-child .fd-panel__content{border-bottom:none}.content-feed{padding:0}.input-search{display:block}@media (max-width: 480px){.nav-container,.content-feed{width:100%}.nav-container .fd-tabs,.content-feed .fd-tabs{padding:0}#searchHolder.sticky{display:none}#searchHolder .input-search{width:250px}}@media (min-width: 481px) and (max-width: 935px){#searchHolder .input-search{width:360px}}@media (min-width: 936px) and (max-width: 1250px){#searchHolder .input-search{width:480px}}@media (min-width: 1251px){#searchHolder .input-search{width:690px}}@media (max-width: 1180){div#searchHolder.sticky .input-search{width:280px!important}}@media (min-width: 480px) and (max-width: 935px){.nav-container,.content-feed{width:860px}}@media (min-width: 1244px){.nav-container,.content-feed{width:1250px}#searchHolder.sticky .input-search{width:690px}}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$4.TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "edit", "rtl", "isAppTileSubGroup", "deviceSize"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "component", type: i2.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i1$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "selectedTabIndexChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i1$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1163
+ }
1164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ServiceDeskHeaderComponent, decorators: [{
1165
+ type: Component,
1166
+ args: [{ selector: 'bdc-service-desk-header', providers: [TilesViewerService], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div id=\"headerGrid\" style=\"grid-template-rows: minmax(1px, 15%) 48px 32px 1fr auto 12%; height: 148px\" #headerGrid>\r\n <div class=\"companyLogoHolder_aboveSearch\" #aboveSearch></div>\r\n <div id=\"searchHolder\" style=\"grid-row: 2\" #searchHolder>\r\n <fd-input-group\r\n [style.display]=\"settings?.HideSearch ? 'none' : null\"\r\n class=\"input-search\"\r\n contentDensity=\"cozy\"\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n >\r\n </fd-input-group>\r\n </div>\r\n</div>\r\n<div id=\"headerSpaceHolder\" #headerSpaceHolder>\r\n <div id=\"bgOuterHolder\" #bgOuterHolder>\r\n <div id=\"bgInnerHolder\" style=\"height: 100vh\">\r\n <div class=\"backgroundImage\" id=\"backgroundImage\">\r\n <img class=\"picture\" src=\"/assets/back.jpg\" loading=\"lazy\" />\r\n <span id=\"backgroundImageOverlay\" class=\"overlay\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div id=\"contentHolderAndNav\" first=\"true\" #contentAndNav>\r\n <div class=\"aboveContent\" #aboveContent></div>\r\n <div id=\"contentHolder\">\r\n <div class=\"nav\" #navHolder>\r\n <div class=\"nav-container\">\r\n <ng-container\r\n *ngTemplateOutlet=\"renderTabs; context: { $implicit: (appTileGroups$ | async)!! }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"nav_surrogate\" style=\"height: 10px\"></div>\r\n <div class=\"content-feed\">\r\n <ng-container\r\n *ngTemplateOutlet=\"renderGroups; context: { $implicit: (appTileGroups$ | async)!! }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #renderTabs let-appTileGroups>\r\n <fd-tab-list\r\n [size]=\"tabSize\"\r\n [collapseOverflow]=\"tabSize === 's' || appTileGroups.length > 5\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n (selectedTabChange)=\"onSelectedTabChange3($event)\"\r\n >\r\n @for (appTileGroup of appTileGroups; track appTileGroup; let i = $index) {\r\n <fd-tab [id]=\"'' + i\" [title]=\"appTileGroup.navigatorTitle\"> </fd-tab>\r\n }\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template #renderGroups let-appTileGroups>\r\n @for (appTileGroup of appTileGroups; track appTileGroup; let i = $index) {\r\n <bt-tiles-viewer-group\r\n [attr.index]=\"i\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"false\"\r\n [stackContent]=\"true\"\r\n [isAppTileSubGroup]=\"false\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n ></bt-tiles-viewer-group>\r\n }\r\n</ng-template>\r\n", styles: ["html{scroll-behavior:smooth}body{overflow-y:auto!important;overflow-x:hidden!important}bt-shellbar{position:fixed;top:10px;width:100%;z-index:6}bt-shellbar .fd-shellbar{background:transparent;box-shadow:none}bt-shellbar .fd-shellbar__product{display:none}bdc-service-desk-header{display:block}bdc-service-desk-header #headerGrid{display:grid;justify-items:center;position:absolute;top:0;width:100%}bdc-service-desk-header #headerSpaceHolder{transition:height .3s ease-out 0s;width:100%}bdc-service-desk-header #searchHolder{z-index:302}bdc-service-desk-header #searchHolder.sticky{position:fixed;top:15px;will-change:transform}bdc-service-desk-header #contentHolderAndNav{align-items:center;background:#00000051;display:flex;flex-direction:column;min-height:100vh;position:relative;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav fd-tab-list{background-color:transparent!important;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav fd-tab-list fd-tab,bdc-service-desk-header #contentHolderAndNav fd-tab-list .fd-tabs{background-color:transparent!important;box-shadow:none!important;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav[first=true] span.fd-tabs__tag{color:#fff!important}bdc-service-desk-header #contentHolderAndNav[first=true] .fd-tabs__link.is-selected>span.fd-tabs__tag:after{background-color:#fff!important}bdc-service-desk-header #contentHolderAndNav[first=true] .fd-layout-panel__title{color:#fff!important}bdc-service-desk-header #contentHolderAndNav.navAndContent_tb{background:#f7f7f7}bdc-service-desk-header #contentHolder{align-items:center;display:flex;flex-direction:column}bdc-service-desk-header .nav-container{align-items:center;display:flex;gap:5px}bdc-service-desk-header .nav-container fd-tab-list{width:100%}bdc-service-desk-header .nav_surrogate{height:1px}bdc-service-desk-header .nav{display:flex;height:50px;justify-content:center;z-index:500;width:100%}bdc-service-desk-header .nav ul{height:auto;overflow:hidden;list-style:none;padding-inline:0px 15px;margin:0;display:inline-flex;align-items:center}bdc-service-desk-header .nav ul li{display:inline;list-style:none;padding:0 16px;color:#fff}bdc-service-desk-header .nav.sticky{background:#f7f7f7;position:fixed;will-change:transform}bt-tiles-viewer-group:first-child fd-layout-panel-header{display:none!important}bt-tiles-viewer-group:first-child .fd-panel__content{border-bottom:none}.content-feed{padding:0}.input-search{display:block}@media (max-width: 480px){.nav-container,.content-feed{width:100%}.nav-container .fd-tabs,.content-feed .fd-tabs{padding:0}#searchHolder.sticky{display:none}#searchHolder .input-search{width:250px}}@media (min-width: 481px) and (max-width: 935px){#searchHolder .input-search{width:360px}}@media (min-width: 936px) and (max-width: 1250px){#searchHolder .input-search{width:480px}}@media (min-width: 1251px){#searchHolder .input-search{width:690px}}@media (max-width: 1180){div#searchHolder.sticky .input-search{width:280px!important}}@media (min-width: 480px) and (max-width: 935px){.nav-container,.content-feed{width:860px}}@media (min-width: 1244px){.nav-container,.content-feed{width:1250px}#searchHolder.sticky .input-search{width:690px}}\n"] }]
1167
+ }], ctorParameters: () => [{ type: i1$1.PortalService }, { type: i2$4.TilesService }, { type: i2$4.TilesViewerService }, { type: i0.Renderer2 }, { type: i1$3.ViewportScroller }, { type: i0.ChangeDetectorRef }, { type: i4$4.Router }, { type: i4$4.ActivatedRoute }], propDecorators: { headerSpaceHolder: [{
1168
+ type: ViewChild,
1169
+ args: ['headerSpaceHolder', { static: true }]
1170
+ }], headerGrid: [{
1171
+ type: ViewChild,
1172
+ args: ['headerGrid', { static: true }]
1173
+ }], aboveSearch: [{
1174
+ type: ViewChild,
1175
+ args: ['aboveSearch', { static: true }]
1176
+ }], searchHolder: [{
1177
+ type: ViewChild,
1178
+ args: ['searchHolder', { static: true }]
1179
+ }], navHolder: [{
1180
+ type: ViewChild,
1181
+ args: ['navHolder', { static: true }]
1182
+ }], aboveContent: [{
1183
+ type: ViewChild,
1184
+ args: ['aboveContent', { static: true }]
1185
+ }], bgOuterHolder: [{
1186
+ type: ViewChild,
1187
+ args: ['bgOuterHolder', { static: true }]
1188
+ }], contentAndNav: [{
1189
+ type: ViewChild,
1190
+ args: ['contentAndNav', { static: true }]
1191
+ }], tilesViewerGroupElList: [{
1192
+ type: ViewChildren,
1193
+ args: [TilesViewerGroupComponent, { read: ElementRef }]
1194
+ }], tabPanelComponents: [{
1195
+ type: ViewChildren,
1196
+ args: [TabPanelComponent]
1197
+ }], settings: [{
1198
+ type: Input
1199
+ }] } });
1200
+
1201
+ class CardContentImageAndTitleComponent extends BaseItemContentPropsComponent {
1202
+ constructor() {
1203
+ super(...arguments);
1204
+ this.backgroundColor = null;
1205
+ this.color = null;
1206
+ }
1207
+ ngOnInit() {
1208
+ super.ngOnInit();
1209
+ const parameters = this.parameters;
1210
+ if (parameters != null) {
1211
+ this.color = this.colorSetting = parameters.Color;
1212
+ this.backgroundColor = this.backgroundColorSetting = parameters.BackgroundColor;
1213
+ this.picture = this._rval.transform(parameters.Picture, this.mo, this.allColumns);
1214
+ this.title = this._rval.transform(parameters.Title, this.mo, this.allColumns);
1215
+ this.subtitle = this._rval.transform(parameters.Subtitle, this.mo, this.allColumns);
1216
+ this.icon = this._rval.transform(parameters.Icon, this.mo, this.allColumns);
1217
+ this.prepareNumberSign();
1218
+ }
1219
+ }
1220
+ prepareNumberSign() {
1221
+ if (this.color && Number(this.colorSetting[0])) {
1222
+ this.color = '#' + this.colorSetting;
1223
+ }
1224
+ if (this.backgroundColor && Number(this.backgroundColorSetting[0])) {
1225
+ this.backgroundColor = '#' + this.backgroundColorSetting;
1226
+ }
1227
+ }
1228
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CardContentImageAndTitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1229
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: CardContentImageAndTitleComponent, selector: "bdc-card-content-image-and-title", host: { properties: { "style.background-color": "this.backgroundColor", "style.color": "this.color" } }, viewQueries: [{ propertyName: "iconRef", first: true, predicate: ["iconRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"card-content\" #elemRef>\r\n <div class=\"item-data\">\r\n @if (picture) {\r\n <img\r\n [imgLazy]=\"picture.FileId | picFieldSrc: 'ID':null:'':100:70\"\r\n height=\"70\"\r\n width=\"100\"\r\n [alt]=\"title | bbbTranslate\"\r\n />\r\n } @else { @if (icon) {\r\n <fd-icon #iconRef [glyph]=\"icon\" [style.color]=\"color\"> </fd-icon>\r\n } }\r\n </div>\r\n <h5 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\r\n {{ title | bbbTranslate }}\r\n </h5>\r\n @if (subtitle) {\r\n <h6 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\r\n {{ subtitle | bbbTranslate }}\r\n </h6>\r\n }\r\n</div>\r\n", styles: [":host{display:flex;justify-content:center;align-items:stretch;height:100%;width:100%;min-height:180px}:host:hover{opacity:.8}:host:hover{cursor:pointer}.card-content{display:flex;align-items:center;flex-direction:column;align-self:stretch;margin-top:auto;margin-bottom:auto;width:100%}.item-data{text-align:center}fd-icon{font-size:2.5rem}h4{height:60px;width:80%;text-align:center}h6{line-height:2rem}\n"], dependencies: [{ kind: "directive", type: i1$1.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "component", type: i2$3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1230
+ }
1231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CardContentImageAndTitleComponent, decorators: [{
1232
+ type: Component,
1233
+ args: [{ selector: 'bdc-card-content-image-and-title', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"card-content\" #elemRef>\r\n <div class=\"item-data\">\r\n @if (picture) {\r\n <img\r\n [imgLazy]=\"picture.FileId | picFieldSrc: 'ID':null:'':100:70\"\r\n height=\"70\"\r\n width=\"100\"\r\n [alt]=\"title | bbbTranslate\"\r\n />\r\n } @else { @if (icon) {\r\n <fd-icon #iconRef [glyph]=\"icon\" [style.color]=\"color\"> </fd-icon>\r\n } }\r\n </div>\r\n <h5 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\r\n {{ title | bbbTranslate }}\r\n </h5>\r\n @if (subtitle) {\r\n <h6 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\r\n {{ subtitle | bbbTranslate }}\r\n </h6>\r\n }\r\n</div>\r\n", styles: [":host{display:flex;justify-content:center;align-items:stretch;height:100%;width:100%;min-height:180px}:host:hover{opacity:.8}:host:hover{cursor:pointer}.card-content{display:flex;align-items:center;flex-direction:column;align-self:stretch;margin-top:auto;margin-bottom:auto;width:100%}.item-data{text-align:center}fd-icon{font-size:2.5rem}h4{height:60px;width:80%;text-align:center}h6{line-height:2rem}\n"] }]
1234
+ }], propDecorators: { iconRef: [{
1235
+ type: ViewChild,
1236
+ args: ['iconRef', { static: false }]
1237
+ }], backgroundColor: [{
1238
+ type: HostBinding,
1239
+ args: ['style.background-color']
1240
+ }], color: [{
1241
+ type: HostBinding,
1242
+ args: ['style.color']
1243
+ }] } });
1244
+
1245
+ class CardHeaderLogoTitleSubtitleComponent extends BaseItemContentPropsComponent {
1246
+ constructor() {
1247
+ super(...arguments);
1248
+ this.events = new EventEmitter();
1249
+ }
1250
+ ngOnInit() {
1251
+ super.ngOnInit();
1252
+ this.titleDbName =
1253
+ this._findColumnPipe.transform(this.allColumns, this.parameters.Title)?.Name || this.parameters.Title;
1254
+ this.subtitleDbName =
1255
+ this._findColumnPipe.transform(this.allColumns, this.parameters.Subtitle)?.Name || this.parameters.Subtitle;
1256
+ const parameters = this.parameters;
1257
+ if (parameters != null) {
1258
+ this.title = this._rval.transform(parameters.Title, this.mo, this.allColumns, true);
1259
+ this.subtitle = this._rval.transform(parameters.Subtitle, this.mo, this.allColumns, true);
1260
+ this.fontIcon = parameters.FontIcon ?? 'person-placeholder';
1261
+ this.imageIcon = this._rval.transform(parameters.FontIcon, this.mo, this.allColumns);
1262
+ this.isIconImage = typeof this.imageIcon === 'object';
1263
+ this.hasIcon = parameters.HasIcon;
1264
+ this.avatarCircle = true;
1265
+ if (typeof parameters.AvatarCircle !== 'undefined') {
1266
+ this.avatarCircle = parameters.AvatarCircle;
1267
+ }
1268
+ }
1269
+ }
1270
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CardHeaderLogoTitleSubtitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: CardHeaderLogoTitleSubtitleComponent, selector: "bdc-card-header-logo-title-subtitle", outputs: { events: "events" }, usesInheritance: true, ngImport: i0, template: "<fd-card-header\n [class.hide-border]=\"parameters.HideBorder\"\n (click)=\"!isCheckList && events.emit({ title: 'rowCheck' })\"\n>\n @if (hasIcon) {\n <fd-avatar\n [circle]=\"avatarCircle\"\n size=\"s\"\n ariaLabel=\"avatar image\"\n title=\"avatar image\"\n alterIcon=\"content|alt|backup|default-icon\"\n [glyph]=\"fontIcon\"\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\n ></fd-avatar>\n }\n <div fd-card-title [style.justify-content]=\"'end'\">\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\n @if (isCheckList) {\n <fd-checkbox\n [name]=\"mo.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\n ></fd-checkbox>\n } @if (setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\n <div\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\n ></div>\n }\n <h2\n #hEl\n class=\"fd-card__title\"\n [hostEl]=\"hEl\"\n [styleIndex]=\"styleIndex\"\n [dbName]=\"titleDbName\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ title | bbbTranslate }}\n </h2>\n </div>\n @if (canView) {\n <button\n fd-button\n (click)=\"$event.preventDefault(); $event.stopPropagation(); events.emit({ title: 'rowClick' })\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n }\n </div>\n\n <h3\n fd-card-subtitle\n #hEl\n [hostEl]=\"hEl\"\n [styleIndex]=\"styleIndex\"\n [dbName]=\"subtitleDbName\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ subtitle | bbbTranslate }}\n </h3>\n</fd-card-header>\n<div></div>\n", styles: ["fd-card-header{cursor:default}fd-card-header:hover{background:var(--fdCard_Background_Color)}fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:.9rem}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}fd-card-header.hide-border{border-bottom:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$1.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "directive", type: i2$1.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i3$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$3.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "directive", type: i4$3.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i4$3.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i6$2.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1272
+ }
1273
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CardHeaderLogoTitleSubtitleComponent, decorators: [{
1274
+ type: Component,
1275
+ args: [{ selector: 'bdc-card-header-logo-title-subtitle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card-header\n [class.hide-border]=\"parameters.HideBorder\"\n (click)=\"!isCheckList && events.emit({ title: 'rowCheck' })\"\n>\n @if (hasIcon) {\n <fd-avatar\n [circle]=\"avatarCircle\"\n size=\"s\"\n ariaLabel=\"avatar image\"\n title=\"avatar image\"\n alterIcon=\"content|alt|backup|default-icon\"\n [glyph]=\"fontIcon\"\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\n ></fd-avatar>\n }\n <div fd-card-title [style.justify-content]=\"'end'\">\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\n @if (isCheckList) {\n <fd-checkbox\n [name]=\"mo.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\n ></fd-checkbox>\n } @if (setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\n <div\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\n ></div>\n }\n <h2\n #hEl\n class=\"fd-card__title\"\n [hostEl]=\"hEl\"\n [styleIndex]=\"styleIndex\"\n [dbName]=\"titleDbName\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ title | bbbTranslate }}\n </h2>\n </div>\n @if (canView) {\n <button\n fd-button\n (click)=\"$event.preventDefault(); $event.stopPropagation(); events.emit({ title: 'rowClick' })\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n }\n </div>\n\n <h3\n fd-card-subtitle\n #hEl\n [hostEl]=\"hEl\"\n [styleIndex]=\"styleIndex\"\n [dbName]=\"subtitleDbName\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ subtitle | bbbTranslate }}\n </h3>\n</fd-card-header>\n<div></div>\n", styles: ["fd-card-header{cursor:default}fd-card-header:hover{background:var(--fdCard_Background_Color)}fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:.9rem}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}fd-card-header.hide-border{border-bottom:none!important}\n"] }]
1276
+ }], propDecorators: { events: [{
1277
+ type: Output
1278
+ }] } });
1279
+
1280
+ class FormContentQuickViewComponent extends FormPropsBaseComponent {
1281
+ constructor() {
1282
+ super(...arguments);
1283
+ this.groups = {};
1284
+ }
1285
+ ngOnInit() {
1286
+ super.ngOnInit();
1287
+ const groups = {};
1288
+ this.title = this._controlUiPipe.transform(this.settings?.Title, this.layout94)?.FieldUi?.value;
1289
+ this.subtitle = this._controlUiPipe.transform(this.settings?.Subtitle, this.layout94)?.FieldUi?.value;
1290
+ const fontIcon = this._controlUiPipe.transform(this.settings?.FontIcon, this.layout94)?.FieldUi;
1291
+ if (fontIcon) {
1292
+ const { imageUrl, value } = fontIcon;
1293
+ this.imageUrl = imageUrl;
1294
+ this.fontIcon = value;
1295
+ }
1296
+ const settingGroups = this.settings?.Groups;
1297
+ if (settingGroups) {
1298
+ settingGroups.MoDataList.forEach((c) => {
1299
+ groups[c.Title] = c.ListFields
1300
+ .split(',')
1301
+ .map((d) => ({
1302
+ caption: d,
1303
+ fieldUi: this._controlUiPipe.transform(d, this.layout94)
1304
+ }))
1305
+ .map((d) => ({ ...d, value: this.getFieldValue(d.fieldUi?.FieldUi?.value) }))
1306
+ .map((d) => ({ ...d, type: this.getFieldType(d.value) }));
1307
+ });
1308
+ }
1309
+ this.groups = groups;
1310
+ }
1311
+ getFieldValue(value) {
1312
+ if (!value) {
1313
+ return value;
1314
+ }
1315
+ const t = value.toString();
1316
+ if (t.indexOf(',') > -1) {
1317
+ return t.split(',');
1318
+ }
1319
+ return value;
1320
+ }
1321
+ getIsPhone(value) {
1322
+ if (value.startsWith('0') || (value.startsWith('+') && !Number.isNaN(value.substring(1, value.length)))) {
1323
+ return true;
1324
+ }
1325
+ return false;
1326
+ }
1327
+ getIsEmail(value) {
1328
+ if (value.indexOf('@') > -1) {
1329
+ return true;
1330
+ }
1331
+ return false;
1332
+ }
1333
+ getIsWebsite(value) {
1334
+ if (value.startsWith('http') || value.startsWith('https')) {
1335
+ return true;
1336
+ }
1337
+ return false;
1338
+ }
1339
+ getFieldType(value) {
1340
+ if (typeof value === 'string') {
1341
+ if (this.getIsWebsite(value)) {
1342
+ return 0;
1343
+ }
1344
+ if (this.getIsPhone(value)) {
1345
+ return 1;
1346
+ }
1347
+ if (this.getIsEmail(value)) {
1348
+ return 2;
1349
+ }
1350
+ return 3;
1351
+ }
1352
+ else if (Array.isArray(value)) {
1353
+ if (value.length) {
1354
+ if (this.getIsPhone(value[0])) {
1355
+ return 4;
1356
+ }
1357
+ if (this.getIsEmail(value[0])) {
1358
+ return 5;
1359
+ }
1360
+ if (this.getIsWebsite(value[0])) {
1361
+ return 6;
1362
+ }
1363
+ }
1364
+ }
1365
+ }
1366
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FormContentQuickViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1367
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: FormContentQuickViewComponent, selector: "bdc-form-content-quick-view", usesInheritance: true, ngImport: i0, template: "<fd-quick-view>\r\n <fd-quick-view-subheader>\r\n <fd-avatar\r\n title=\"avatar\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"imageUrl\"\r\n [size]=\"'s'\"\r\n [border]=\"settings.ShowLogoBorder\"\r\n [transparent]=\"settings.TransparentLogo\"\r\n [colorAccent]=\"settings.AccentColor\"\r\n ></fd-avatar>\r\n <fd-quick-view-subheader-title>\r\n {{ title | bbbTranslate }}\r\n </fd-quick-view-subheader-title>\r\n <fd-quick-view-subheader-subtitle>\r\n {{ subtitle | bbbTranslate }}\r\n </fd-quick-view-subheader-subtitle>\r\n </fd-quick-view-subheader>\r\n\r\n @for (group of groups | keyvalue; track group) {\r\n <fd-quick-view-group [attr.aria-labelledby]=\"group.key\">\r\n <fd-quick-view-group-title [id]=\"group.key\">\r\n {{ group.key | bbbTranslate }}\r\n </fd-quick-view-group-title>\r\n @for (item of $any(group).value; track item) {\r\n <fd-quick-view-group-item>\r\n <fd-quick-view-group-item-label>\r\n {{ item.caption | bbbTranslate }}\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n @switch (item.type) { @case (6) {\r\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\r\n @for (website of item.value; track website) {\r\n <a\r\n [href]=\"website\"\r\n [innerText]=\"website | bbbTranslate\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n }\r\n </div>\r\n } @case (0) {\r\n <a\r\n [href]=\"item.value\"\r\n [innerText]=\"item.value | bbbTranslate\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n } @case (1) {\r\n <a\r\n [href]=\"'tel:' + item.value\"\r\n [innerText]=\"item.value | bbbTranslate\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n } @case (4) {\r\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\r\n @for (tel of item.value; track tel) {\r\n <a [href]=\"'tel:' + tel\" [innerText]=\"tel\" fd-link fd-quick-view-group-item-content-element></a>\r\n }\r\n </div>\r\n } @case (5) {\r\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\r\n @for (email of item.value; track email) {\r\n <a\r\n style=\"direction: ltr; font-family: monospace\"\r\n [href]=\"'mailto:' + email\"\r\n [innerText]=\"email\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n }\r\n </div>\r\n } @case (2) {\r\n <a\r\n style=\"direction: ltr; font-family: monospace\"\r\n [href]=\"'mailto:' + item.value\"\r\n [innerText]=\"item.value\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n } @default {\r\n <div [innerText]=\"item.value | bbbTranslate\" fd-quick-view-group-item-content-element></div>\r\n } }\r\n </fd-quick-view-group-item-content>\r\n </fd-quick-view-group-item>\r\n }\r\n </fd-quick-view-group>\r\n }\r\n</fd-quick-view>\r\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"], dependencies: [{ kind: "component", type: i3$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i3$4.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i3$5.QuickViewComponent, selector: "fd-quick-view", inputs: ["id"] }, { kind: "component", type: i3$5.QuickViewSubheaderComponent, selector: "fd-quick-view-subheader" }, { kind: "component", type: i3$5.QuickViewSubheaderTitleComponent, selector: "fd-quick-view-subheader-title" }, { kind: "component", type: i3$5.QuickViewSubheaderSubtitleComponent, selector: "fd-quick-view-subheader-subtitle" }, { kind: "component", type: i3$5.QuickViewGroupComponent, selector: "fd-quick-view-group" }, { kind: "component", type: i3$5.QuickViewGroupTitleComponent, selector: "fd-quick-view-group-title", inputs: ["id"] }, { kind: "component", type: i3$5.QuickViewGroupItemComponent, selector: "fd-quick-view-group-item", inputs: ["id"] }, { kind: "component", type: i3$5.QuickViewGroupItemLabelComponent, selector: "fd-quick-view-group-item-label" }, { kind: "component", type: i3$5.QuickViewGroupItemContentComponent, selector: "fd-quick-view-group-item-content" }, { kind: "directive", type: i3$5.QuickViewGroupItemContentElementDirective, selector: "[fd-quick-view-group-item-content-element]" }, { kind: "pipe", type: i1$3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1368
+ }
1369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FormContentQuickViewComponent, decorators: [{
1370
+ type: Component,
1371
+ args: [{ selector: 'bdc-form-content-quick-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-quick-view>\r\n <fd-quick-view-subheader>\r\n <fd-avatar\r\n title=\"avatar\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"imageUrl\"\r\n [size]=\"'s'\"\r\n [border]=\"settings.ShowLogoBorder\"\r\n [transparent]=\"settings.TransparentLogo\"\r\n [colorAccent]=\"settings.AccentColor\"\r\n ></fd-avatar>\r\n <fd-quick-view-subheader-title>\r\n {{ title | bbbTranslate }}\r\n </fd-quick-view-subheader-title>\r\n <fd-quick-view-subheader-subtitle>\r\n {{ subtitle | bbbTranslate }}\r\n </fd-quick-view-subheader-subtitle>\r\n </fd-quick-view-subheader>\r\n\r\n @for (group of groups | keyvalue; track group) {\r\n <fd-quick-view-group [attr.aria-labelledby]=\"group.key\">\r\n <fd-quick-view-group-title [id]=\"group.key\">\r\n {{ group.key | bbbTranslate }}\r\n </fd-quick-view-group-title>\r\n @for (item of $any(group).value; track item) {\r\n <fd-quick-view-group-item>\r\n <fd-quick-view-group-item-label>\r\n {{ item.caption | bbbTranslate }}\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n @switch (item.type) { @case (6) {\r\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\r\n @for (website of item.value; track website) {\r\n <a\r\n [href]=\"website\"\r\n [innerText]=\"website | bbbTranslate\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n }\r\n </div>\r\n } @case (0) {\r\n <a\r\n [href]=\"item.value\"\r\n [innerText]=\"item.value | bbbTranslate\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n } @case (1) {\r\n <a\r\n [href]=\"'tel:' + item.value\"\r\n [innerText]=\"item.value | bbbTranslate\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n } @case (4) {\r\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\r\n @for (tel of item.value; track tel) {\r\n <a [href]=\"'tel:' + tel\" [innerText]=\"tel\" fd-link fd-quick-view-group-item-content-element></a>\r\n }\r\n </div>\r\n } @case (5) {\r\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\r\n @for (email of item.value; track email) {\r\n <a\r\n style=\"direction: ltr; font-family: monospace\"\r\n [href]=\"'mailto:' + email\"\r\n [innerText]=\"email\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n }\r\n </div>\r\n } @case (2) {\r\n <a\r\n style=\"direction: ltr; font-family: monospace\"\r\n [href]=\"'mailto:' + item.value\"\r\n [innerText]=\"item.value\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n } @default {\r\n <div [innerText]=\"item.value | bbbTranslate\" fd-quick-view-group-item-content-element></div>\r\n } }\r\n </fd-quick-view-group-item-content>\r\n </fd-quick-view-group-item>\r\n }\r\n </fd-quick-view-group>\r\n }\r\n</fd-quick-view>\r\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"] }]
1372
+ }] });
1373
+
1374
+ class ServiceDeskServcieDetailComponent extends FormPropsBaseComponent {
1375
+ constructor() {
1376
+ super(...arguments);
1377
+ this.firstArray = [];
1378
+ this.secondArray = [];
1379
+ this.moByCaption = {};
1380
+ this.fieldsCaption = [];
1381
+ this.value = '';
1382
+ this.israhnamayTasviri = false;
1383
+ }
1384
+ ngOnInit() {
1385
+ super.ngOnInit();
1386
+ const $FieldDict = this.fieldDict;
1387
+ if (!$FieldDict) {
1388
+ return;
1389
+ }
1390
+ this._prepare($FieldDict, this.mo);
1391
+ }
1392
+ onDownload(item) {
1393
+ if (item.Attachment) {
1394
+ BarsaApi.Common.File.DownloadFileId(item.Attachment.Files[0].Id);
1395
+ }
1396
+ }
1397
+ ngAfterViewInit() {
1398
+ super.ngAfterViewInit();
1399
+ this.alignTablesTr();
1400
+ }
1401
+ onKhadamatMortabet(item) {
1402
+ BarsaApi.Bw.Form.Show({
1403
+ MoId: item.Id,
1404
+ TypeDefId: this.khadamatmortabetReport.TypeDefId,
1405
+ MoContext: { ReportId: this.khadamatmortabetReport.ReportId }
1406
+ });
1407
+ }
1408
+ alignTablesTr() {
1409
+ setTimeout(() => {
1410
+ const tablesRef = this.tablesRef.toArray();
1411
+ const firstTableEl = tablesRef[0].nativeElement;
1412
+ const secondTableEl = tablesRef[1].nativeElement;
1413
+ const trFirstTable = firstTableEl.querySelectorAll('tr');
1414
+ const trSecondTable = secondTableEl.querySelectorAll('tr');
1415
+ trFirstTable.forEach((tr, index) => {
1416
+ if (index < trSecondTable.length) {
1417
+ const trSecond = trSecondTable[index];
1418
+ if (tr.offsetHeight > trSecond.offsetHeight) {
1419
+ trSecond.style.height = `${tr.offsetHeight}px`;
1420
+ }
1421
+ else {
1422
+ tr.style.height = `${trSecond.offsetHeight}px`;
1423
+ }
1424
+ }
1425
+ });
1426
+ }, 0);
1427
+ }
1428
+ _prepare($FieldDict, mo) {
1429
+ const leftside = FindLayoutSettingFromLayout94(this.layout94, 'جدول چپ');
1430
+ const rightside = FindLayoutSettingFromLayout94(this.layout94, 'جدول راست');
1431
+ leftside?.items[0]?.items?.forEach((item2) => {
1432
+ const key = item2.Caption;
1433
+ const fieldName = item2.ControlId;
1434
+ const item = { caption: key, fieldName };
1435
+ if (key === 'آدرس سایت' ||
1436
+ (typeof mo[fieldName] === 'string' &&
1437
+ (mo[fieldName].startsWith('https://') || mo[fieldName].startsWith('http://')))) {
1438
+ item.type = 'Link';
1439
+ }
1440
+ if (typeof mo[fieldName] === 'object') {
1441
+ if (mo[fieldName].$Type === 'Common.MetaObjectListWeb') {
1442
+ item.type = 'MoList';
1443
+ }
1444
+ else if (mo[fieldName].Ext) {
1445
+ item.type = 'Image';
1446
+ }
1447
+ else if (mo[fieldName].Files) {
1448
+ item.type = 'Files';
1449
+ }
1450
+ else {
1451
+ item.type = 'Relation';
1452
+ }
1453
+ }
1454
+ this.firstArray.push(item);
1455
+ });
1456
+ rightside?.items[0]?.items?.forEach((item2) => {
1457
+ const key = item2.Caption;
1458
+ const fieldName = item2.ControlId;
1459
+ const item = { caption: key, fieldName };
1460
+ if (key === 'آدرس سایت' ||
1461
+ (typeof mo[fieldName] === 'string' &&
1462
+ (mo[fieldName].startsWith('https://') || mo[fieldName].startsWith('http://')))) {
1463
+ item.type = 'Link';
1464
+ }
1465
+ if (typeof mo[fieldName] === 'object') {
1466
+ if (mo[fieldName].$Type === 'Common.MetaObjectListWeb') {
1467
+ item.type = 'MoList';
1468
+ }
1469
+ else if (mo[fieldName].Ext) {
1470
+ item.type = 'Image';
1471
+ }
1472
+ else if (mo[fieldName].Files) {
1473
+ item.type = 'Files';
1474
+ }
1475
+ else {
1476
+ item.type = 'Relation';
1477
+ }
1478
+ }
1479
+ this.secondArray.push(item);
1480
+ });
1481
+ this.rahnamayTasviri = this._sanitizer.bypassSecurityTrustResourceUrl(mo[$FieldDict['راهنمای تصویری']]);
1482
+ if (this.rahnamayTasviri) {
1483
+ this.israhnamayTasviri = true;
1484
+ }
1485
+ // this.firstArray = filteredControls.slice(0, controlCountMiddle);
1486
+ // this.secondArray = filteredControls.slice(controlCountMiddle, controlCount);
1487
+ this.khadamatmortabet = mo[$FieldDict['خدمات مرتبط']]?.MoDataList ?? [];
1488
+ this.khadamatmortabetReport = mo[$FieldDict['خدمات مرتبط']];
1489
+ // this.isOdd = controlCount % 2 === 0;
1490
+ this.isOdd = false;
1491
+ }
1492
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ServiceDeskServcieDetailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1493
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ServiceDeskServcieDetailComponent, selector: "bdc-service-desk-servcie-detail", viewQueries: [{ propertyName: "tabContainerRef", first: true, predicate: ["tabContainerRef"], descendants: true }, { propertyName: "tablesRef", predicate: ["tablesRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-dynamic-page [size]=\"isMobile ? 'small' : 'large'\">\r\n <fd-tab-list\r\n [collapseOverflow]=\"true\"\r\n [stackContent]=\"false\"\r\n maxContentHeight=\"auto\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n #tablist\r\n >\r\n <fd-tab [title]=\"'\u0634\u0646\u0627\u0633\u0646\u0627\u0645\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\" selected>\r\n <fd-dynamic-page-content>\r\n <fd-layout-grid class=\"row\" style=\"margin: 0\">\r\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTable;\r\n context: {\r\n $implicit: firstArray,\r\n showKhadamatMortabet: isOdd,\r\n classNames: 'firstTable'\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTable;\r\n context: {\r\n $implicit: secondArray,\r\n showKhadamatMortabet: !isOdd,\r\n classNames: 'secondTable'\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n </fd-layout-grid>\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n <fd-tab [title]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n <fd-tab [title]=\"'\u0634\u0631\u0627\u064A\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n } @if ('\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control [caption]=\"'\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | bbbTranslate\" [config]=\"configUi\"></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n <fd-tab [title]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u062F\u0633\u062A\u06AF\u0627\u0647 \u0647\u0627\u06CC \u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u062F\u0647\u0646\u062F\u0647' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n @if ('SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <fd-tab [title]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if (configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n }\r\n </fd-tab-list>\r\n\r\n <fd-dynamic-page-footer> </fd-dynamic-page-footer>\r\n</fd-dynamic-page>\r\n\r\n<ng-template #renderTable let-array let-showKhadamatMortabet=\"showKhadamatMortabet\" let-classNames=\"classNames\">\r\n <table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\r\n @for (controlItem of array; track controlItem) {\r\n <tr>\r\n <th>{{ controlItem.caption | bbbTranslate }}</th>\r\n <td>\r\n @switch (controlItem.type) { @case ('Link') {\r\n <a dir=\"ltr\" target=\"_blank\" [href]=\"mo[controlItem.fieldName]\">{{ mo[controlItem.fieldName] }}</a>\r\n } @case ('Relation') {\r\n {{ controlItem.fieldName | val: mo:true | bbbTranslate }}\r\n } @case ('MoList') { @for (item of mo[controlItem.fieldName]?.MoDataList; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\" style=\"color: #0854a0\"></fd-icon>\r\n <!-- <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon> -->\r\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n } } @case ('Image') {\r\n {{ mo[controlItem.fieldName].Ext }}\r\n } @case ('Files') {\r\n {{ mo[controlItem.fieldName].Files }}\r\n } @default {\r\n {{ mo[controlItem.fieldName + '$Caption'] || mo[controlItem.fieldName] | bbbTranslate }}\r\n } }\r\n </td>\r\n </tr>\r\n }\r\n <!-- <ng-container *ngIf=\"showKhadamatMortabet\">\r\n <tr>\r\n <th>\u062E\u062F\u0645\u0627\u062A \u0645\u0631\u062A\u0628\u0637</th>\r\n <td>\r\n <div class=\"links\" *ngFor=\"let item of khadamatmortabet\">\r\n <a (click)=\"onKhadamatMortabet(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container> -->\r\n </table>\r\n</ng-template>\r\n", styles: ["table{background-color:var(--sapBaseColor)}.cell{font-size:14px}.bod{border-bottom:1px solid gray;border-right:1px solid gray;height:30px;line-height:30px}.bod :first{border-right:0;border-bottom:0}.anwser{line-height:30px;padding:10px;text-align:justify}.box{padding:0 40px 10px 10px;line-height:30px;display:flex;flex-direction:column;column-count:2;flex-wrap:wrap;height:180px;overflow:hidden}.faq-item-link{font-size:16px;padding-right:25px;cursor:pointer;color:gray}.faq-item-link a{color:gray;cursor:pointer}.faq-item-link a:hover{text-decoration:underline!important}.law-page-header{background:#fff;color:#0854a0;font-size:1.3rem;font-weight:500;padding:5px 15px}.wrapper{border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}table.table-grid{font-family:arial,sans-serif;border-collapse:collapse;width:100%;direction:rtl}.table-grid td,.table-grid th{border:1px solid grey;text-align:left;padding:12px 8px;text-align:right}.table-grid th{background-color:#e2e2e2;font-size:.825rem;font-weight:500;vertical-align:middle;width:150px;font-family:IRANYekanDigits}.table-grid td{font-size:.825rem;vertical-align:middle;font-family:IRANYekanDigits}@media only screen and (max-width: 992px){.secondTable tr:first-child td,.secondTable tr:first-child th{border-top:0}}@media only screen and (min-width: 992px){.secondTable th{border-right:0}}.fd-icon{font-size:2rem;color:#0854a0;padding-left:10px}.links a{line-height:25px;cursor:pointer;display:inline;color:#32363a;vertical-align:top}.links a:hover{text-decoration:underline!important;color:#000}.fd-icon-link{font-size:1rem;padding-left:5px}.VideoGuide{max-width:1280px;margin:0 auto;width:auto;text-align:center}.h_iframe-aparat_embed_frame{position:relative}.h_iframe-aparat_embed_frame .ratio{display:block;width:100%;height:auto}.h_iframe-aparat_embed_frame iframe{position:absolute;top:0;left:0;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"] }, { kind: "component", type: i3$9.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "background", "autoResponsive", "size", "offset", "expandContent"] }, { kind: "component", type: i3$9.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i3$9.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i2$3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i3$7.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i3$7.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: i1$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "selectedTabIndexChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i1$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "pipe", type: i1$1.MoValuePipe, name: "val" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1$1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1494
+ }
1495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ServiceDeskServcieDetailComponent, decorators: [{
1496
+ type: Component,
1497
+ args: [{ selector: 'bdc-service-desk-servcie-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-dynamic-page [size]=\"isMobile ? 'small' : 'large'\">\r\n <fd-tab-list\r\n [collapseOverflow]=\"true\"\r\n [stackContent]=\"false\"\r\n maxContentHeight=\"auto\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n #tablist\r\n >\r\n <fd-tab [title]=\"'\u0634\u0646\u0627\u0633\u0646\u0627\u0645\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\" selected>\r\n <fd-dynamic-page-content>\r\n <fd-layout-grid class=\"row\" style=\"margin: 0\">\r\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTable;\r\n context: {\r\n $implicit: firstArray,\r\n showKhadamatMortabet: isOdd,\r\n classNames: 'firstTable'\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTable;\r\n context: {\r\n $implicit: secondArray,\r\n showKhadamatMortabet: !isOdd,\r\n classNames: 'secondTable'\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n </fd-layout-grid>\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n <fd-tab [title]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n <fd-tab [title]=\"'\u0634\u0631\u0627\u064A\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n } @if ('\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control [caption]=\"'\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | bbbTranslate\" [config]=\"configUi\"></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n <fd-tab [title]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u062F\u0633\u062A\u06AF\u0627\u0647 \u0647\u0627\u06CC \u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u062F\u0647\u0646\u062F\u0647' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n @if ('SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <fd-tab [title]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if (configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n }\r\n </fd-tab-list>\r\n\r\n <fd-dynamic-page-footer> </fd-dynamic-page-footer>\r\n</fd-dynamic-page>\r\n\r\n<ng-template #renderTable let-array let-showKhadamatMortabet=\"showKhadamatMortabet\" let-classNames=\"classNames\">\r\n <table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\r\n @for (controlItem of array; track controlItem) {\r\n <tr>\r\n <th>{{ controlItem.caption | bbbTranslate }}</th>\r\n <td>\r\n @switch (controlItem.type) { @case ('Link') {\r\n <a dir=\"ltr\" target=\"_blank\" [href]=\"mo[controlItem.fieldName]\">{{ mo[controlItem.fieldName] }}</a>\r\n } @case ('Relation') {\r\n {{ controlItem.fieldName | val: mo:true | bbbTranslate }}\r\n } @case ('MoList') { @for (item of mo[controlItem.fieldName]?.MoDataList; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\" style=\"color: #0854a0\"></fd-icon>\r\n <!-- <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon> -->\r\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n } } @case ('Image') {\r\n {{ mo[controlItem.fieldName].Ext }}\r\n } @case ('Files') {\r\n {{ mo[controlItem.fieldName].Files }}\r\n } @default {\r\n {{ mo[controlItem.fieldName + '$Caption'] || mo[controlItem.fieldName] | bbbTranslate }}\r\n } }\r\n </td>\r\n </tr>\r\n }\r\n <!-- <ng-container *ngIf=\"showKhadamatMortabet\">\r\n <tr>\r\n <th>\u062E\u062F\u0645\u0627\u062A \u0645\u0631\u062A\u0628\u0637</th>\r\n <td>\r\n <div class=\"links\" *ngFor=\"let item of khadamatmortabet\">\r\n <a (click)=\"onKhadamatMortabet(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container> -->\r\n </table>\r\n</ng-template>\r\n", styles: ["table{background-color:var(--sapBaseColor)}.cell{font-size:14px}.bod{border-bottom:1px solid gray;border-right:1px solid gray;height:30px;line-height:30px}.bod :first{border-right:0;border-bottom:0}.anwser{line-height:30px;padding:10px;text-align:justify}.box{padding:0 40px 10px 10px;line-height:30px;display:flex;flex-direction:column;column-count:2;flex-wrap:wrap;height:180px;overflow:hidden}.faq-item-link{font-size:16px;padding-right:25px;cursor:pointer;color:gray}.faq-item-link a{color:gray;cursor:pointer}.faq-item-link a:hover{text-decoration:underline!important}.law-page-header{background:#fff;color:#0854a0;font-size:1.3rem;font-weight:500;padding:5px 15px}.wrapper{border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}table.table-grid{font-family:arial,sans-serif;border-collapse:collapse;width:100%;direction:rtl}.table-grid td,.table-grid th{border:1px solid grey;text-align:left;padding:12px 8px;text-align:right}.table-grid th{background-color:#e2e2e2;font-size:.825rem;font-weight:500;vertical-align:middle;width:150px;font-family:IRANYekanDigits}.table-grid td{font-size:.825rem;vertical-align:middle;font-family:IRANYekanDigits}@media only screen and (max-width: 992px){.secondTable tr:first-child td,.secondTable tr:first-child th{border-top:0}}@media only screen and (min-width: 992px){.secondTable th{border-right:0}}.fd-icon{font-size:2rem;color:#0854a0;padding-left:10px}.links a{line-height:25px;cursor:pointer;display:inline;color:#32363a;vertical-align:top}.links a:hover{text-decoration:underline!important;color:#000}.fd-icon-link{font-size:1rem;padding-left:5px}.VideoGuide{max-width:1280px;margin:0 auto;width:auto;text-align:center}.h_iframe-aparat_embed_frame{position:relative}.h_iframe-aparat_embed_frame .ratio{display:block;width:100%;height:auto}.h_iframe-aparat_embed_frame iframe{position:absolute;top:0;left:0;width:100%;height:100%}\n"] }]
1498
+ }], propDecorators: { tabContainerRef: [{
1499
+ type: ViewChild,
1500
+ args: ['tabContainerRef']
1501
+ }], tablesRef: [{
1502
+ type: ViewChildren,
1503
+ args: ['tablesRef']
1504
+ }] } });
1505
+
1506
+ class ServiceDeskViewOfServicesComponent extends ReportViewBaseComponent {
1507
+ ngOnInit() {
1508
+ super.ngOnInit();
1509
+ this.fieldIcon = this.viewSetting.FieldIcon;
1510
+ this.fieldTitle = this.viewSetting.FieldTitle;
1511
+ this.fieldDynamicCommand = this.viewSetting.FieldDynamicCommand;
1512
+ this.contextMenuItems?.forEach((c) => {
1513
+ const parameters = c.Command.CustomUi?.Parameters;
1514
+ if (parameters) {
1515
+ // parameters.OnlyIcon = true;
1516
+ }
1517
+ });
1518
+ }
1519
+ onRowClick2(e, dynamicCommand) {
1520
+ if (dynamicCommand) {
1521
+ return;
1522
+ }
1523
+ super.onRowClick(e);
1524
+ }
1525
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ServiceDeskViewOfServicesComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1526
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ServiceDeskViewOfServicesComponent, selector: "bdc-service-desk-view-of-services", usesInheritance: true, ngImport: i0, template: "<div class=\"services\">\r\n <div class=\"service-list\">\r\n <fd-layout-grid>\r\n <div fdLayoutGridRow>\r\n @for (mo of moDataList | multipleGroupBy: groupby; track mo; let i = $index) { @if (mo.$Group ||\r\n mo.$Group === '') {\r\n <div [fdLayoutGridCol]=\"12\">\r\n <h3\r\n fd-title\r\n style=\"\r\n padding: 0 0 0.4rem 0;\r\n border-bottom: var(--sapList_BorderWidth) solid var(--sapList_BorderColor);\r\n \"\r\n >\r\n {{ mo.$Group }}\r\n </h3>\r\n </div>\r\n } @if (!mo.$Group) {\r\n <div [fdLayoutGridCol]=\"12\" [colSm]=\"12\" [colMd]=\"3\" [colLg]=\"3\" [colXl]=\"3\">\r\n <div class=\"item\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n dynamicCommand;\r\n context: {\r\n $implicit: mo,\r\n index: i,\r\n dynCommand: fieldDynamicCommand | rval: mo:allColumns,\r\n title: fieldTitle | rval: mo:allColumns | bbbTranslate\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n } }\r\n </div>\r\n </fd-layout-grid>\r\n </div>\r\n</div>\r\n<ng-template #dynamicCommand let-mo let-index=\"index\" let-dynCommand=\"dynCommand\" let-title=\"title\">\r\n <button\r\n fd-button\r\n [dynCommand]=\"dynCommand\"\r\n [mo]=\"mo\"\r\n [enableCommand]=\"dynCommand\"\r\n style=\"width: 100%; max-height: 2.3rem; height: 2.3rem; border-radius: 0\"\r\n [fdType]=\"'emphasized'\"\r\n (click)=\"onRowClick2({ mo, index },dynCommand)\"\r\n [title]=\"title\"\r\n >\r\n <span class=\"item-icon\">\r\n <fd-icon glyph=\"product\"></fd-icon>\r\n </span>\r\n <span class=\"item-content\"> {{ title }}</span>\r\n <span class=\"item-icon-arrow\">\r\n @if (fieldIcon) {\r\n <fd-icon [glyph]=\"fieldIcon\"></fd-icon>\r\n }\r\n </span>\r\n </button>\r\n <div style=\"padding: 10px; border-top: 1px solid #ccc\">\r\n <bsu-ulv-context-menu\r\n [disableOverflowContextMenu]=\"true\"\r\n [mo]=\"mo\"\r\n [index]=\"index\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [menuItems]=\"contextMenuItems\"\r\n [allColumns]=\"allColumns\"\r\n (commandClick)=\"this.ulvCommandClick.emit({ mo, index })\"\r\n ></bsu-ulv-context-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host .b-b{padding-right:5px;padding-top:5px}bsu-ulv-context-menu{flex-wrap:wrap;row-gap:5px}.item{position:relative;border:1px solid #ccc}.item a{background:#0078d7;cursor:pointer;display:flex;padding:10px 5px;flex-direction:column;cursor:pointer!important}.item a:hover{background:#67b4f3}fd-icon{font-size:1.25rem;color:#fff}.item .item-content{color:#fff;margin-left:35px;margin-right:25px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}.item .item-icon{position:absolute;right:5px;top:5px}.item .item-icon-arrow{position:absolute;left:16px;top:9px}.item .item-icon-arrow fd-icon{font-size:1rem;color:#fff}.exe_cell{margin-top:10px;padding:0 5px}.service-list{margin-top:20px}.exe_cell:nth-child(1),.exe_cell:nth-child(2),.exe_cell:nth-child(3),.exe_cell:nth-child(4){margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.DynamicCommandDirective, selector: "[dynCommand]", inputs: ["dynCommand", "mo", "enableCommand"], outputs: ["commandClick"] }, { kind: "component", type: i2$1.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i2$3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i3$7.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i3$7.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i3$7.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1$1.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1527
+ }
1528
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ServiceDeskViewOfServicesComponent, decorators: [{
1529
+ type: Component,
1530
+ args: [{ selector: 'bdc-service-desk-view-of-services', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"services\">\r\n <div class=\"service-list\">\r\n <fd-layout-grid>\r\n <div fdLayoutGridRow>\r\n @for (mo of moDataList | multipleGroupBy: groupby; track mo; let i = $index) { @if (mo.$Group ||\r\n mo.$Group === '') {\r\n <div [fdLayoutGridCol]=\"12\">\r\n <h3\r\n fd-title\r\n style=\"\r\n padding: 0 0 0.4rem 0;\r\n border-bottom: var(--sapList_BorderWidth) solid var(--sapList_BorderColor);\r\n \"\r\n >\r\n {{ mo.$Group }}\r\n </h3>\r\n </div>\r\n } @if (!mo.$Group) {\r\n <div [fdLayoutGridCol]=\"12\" [colSm]=\"12\" [colMd]=\"3\" [colLg]=\"3\" [colXl]=\"3\">\r\n <div class=\"item\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n dynamicCommand;\r\n context: {\r\n $implicit: mo,\r\n index: i,\r\n dynCommand: fieldDynamicCommand | rval: mo:allColumns,\r\n title: fieldTitle | rval: mo:allColumns | bbbTranslate\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n } }\r\n </div>\r\n </fd-layout-grid>\r\n </div>\r\n</div>\r\n<ng-template #dynamicCommand let-mo let-index=\"index\" let-dynCommand=\"dynCommand\" let-title=\"title\">\r\n <button\r\n fd-button\r\n [dynCommand]=\"dynCommand\"\r\n [mo]=\"mo\"\r\n [enableCommand]=\"dynCommand\"\r\n style=\"width: 100%; max-height: 2.3rem; height: 2.3rem; border-radius: 0\"\r\n [fdType]=\"'emphasized'\"\r\n (click)=\"onRowClick2({ mo, index },dynCommand)\"\r\n [title]=\"title\"\r\n >\r\n <span class=\"item-icon\">\r\n <fd-icon glyph=\"product\"></fd-icon>\r\n </span>\r\n <span class=\"item-content\"> {{ title }}</span>\r\n <span class=\"item-icon-arrow\">\r\n @if (fieldIcon) {\r\n <fd-icon [glyph]=\"fieldIcon\"></fd-icon>\r\n }\r\n </span>\r\n </button>\r\n <div style=\"padding: 10px; border-top: 1px solid #ccc\">\r\n <bsu-ulv-context-menu\r\n [disableOverflowContextMenu]=\"true\"\r\n [mo]=\"mo\"\r\n [index]=\"index\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [menuItems]=\"contextMenuItems\"\r\n [allColumns]=\"allColumns\"\r\n (commandClick)=\"this.ulvCommandClick.emit({ mo, index })\"\r\n ></bsu-ulv-context-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host .b-b{padding-right:5px;padding-top:5px}bsu-ulv-context-menu{flex-wrap:wrap;row-gap:5px}.item{position:relative;border:1px solid #ccc}.item a{background:#0078d7;cursor:pointer;display:flex;padding:10px 5px;flex-direction:column;cursor:pointer!important}.item a:hover{background:#67b4f3}fd-icon{font-size:1.25rem;color:#fff}.item .item-content{color:#fff;margin-left:35px;margin-right:25px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}.item .item-icon{position:absolute;right:5px;top:5px}.item .item-icon-arrow{position:absolute;left:16px;top:9px}.item .item-icon-arrow fd-icon{font-size:1rem;color:#fff}.exe_cell{margin-top:10px;padding:0 5px}.service-list{margin-top:20px}.exe_cell:nth-child(1),.exe_cell:nth-child(2),.exe_cell:nth-child(3),.exe_cell:nth-child(4){margin-top:10px}\n"] }]
1531
+ }] });
1532
+
1533
+ class ServiceDeskCardContentMojavezhayAkhzShodeComponent extends BaseComponent {
1534
+ ngOnInit() {
1535
+ super.ngOnInit();
1536
+ this.fieldTitle = this.parameters.FieldTitle;
1537
+ this.titleOfValue = this.parameters.TitleOfValue;
1538
+ this.fieldValue = this.parameters.FieldValue;
1539
+ }
1540
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ServiceDeskCardContentMojavezhayAkhzShodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1541
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: ServiceDeskCardContentMojavezhayAkhzShodeComponent, selector: "bdc-service-desk-card-content-mojavezhay-akhz-shode", inputs: { mo: "mo", allColumns: "allColumns", parameters: "parameters", rtl: "rtl" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: row; width: 100%\">\r\n <h2\r\n fd-title\r\n style=\"\r\n width: 60%;\r\n text-align: right;\r\n font-size: 12px;\r\n font-weight: 600;\r\n padding: 0px 16px 0 0;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n \"\r\n >\r\n {{ fieldTitle | rval: mo:allColumns:true }}\r\n </h2>\r\n <h3\r\n fd-title\r\n style=\"\r\n width: 40%;\r\n text-align: left;\r\n font-size: 12px;\r\n font-weight: 600;\r\n padding: 0px 5px 0 10px;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n display: flex;\r\n \"\r\n >\r\n <div style=\"width: 100%; font-weight: 400\">{{ titleOfValue }}:</div>\r\n <div style=\"padding-right: 5px; text-align: left\">\r\n {{ fieldValue | rval: mo:allColumns }}\r\n </div>\r\n </h3>\r\n</div>\r\n", styles: [":host{display:flex;align-items:center;padding:10px}\n"], dependencies: [{ kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1542
+ }
1543
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ServiceDeskCardContentMojavezhayAkhzShodeComponent, decorators: [{
1544
+ type: Component,
1545
+ args: [{ selector: 'bdc-service-desk-card-content-mojavezhay-akhz-shode', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div style=\"display: flex; flex-direction: row; width: 100%\">\r\n <h2\r\n fd-title\r\n style=\"\r\n width: 60%;\r\n text-align: right;\r\n font-size: 12px;\r\n font-weight: 600;\r\n padding: 0px 16px 0 0;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n \"\r\n >\r\n {{ fieldTitle | rval: mo:allColumns:true }}\r\n </h2>\r\n <h3\r\n fd-title\r\n style=\"\r\n width: 40%;\r\n text-align: left;\r\n font-size: 12px;\r\n font-weight: 600;\r\n padding: 0px 5px 0 10px;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n display: flex;\r\n \"\r\n >\r\n <div style=\"width: 100%; font-weight: 400\">{{ titleOfValue }}:</div>\r\n <div style=\"padding-right: 5px; text-align: left\">\r\n {{ fieldValue | rval: mo:allColumns }}\r\n </div>\r\n </h3>\r\n</div>\r\n", styles: [":host{display:flex;align-items:center;padding:10px}\n"] }]
1546
+ }], propDecorators: { mo: [{
1547
+ type: Input
1548
+ }], allColumns: [{
1549
+ type: Input
1550
+ }], parameters: [{
1551
+ type: Input
1552
+ }], rtl: [{
1553
+ type: Input
1554
+ }] } });
1555
+
1556
+ class CardHeaderBigImageTitleAndSubtitleComponent extends CardHeaderLogoTitleSubtitleComponent {
1557
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CardHeaderBigImageTitleAndSubtitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1558
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: CardHeaderBigImageTitleAndSubtitleComponent, selector: "bdc-card-header-big-image-title-and-subtitle", usesInheritance: true, ngImport: i0, template: "<fd-card-header [class.hide-border]=\"parameters.HideBorder\">\r\n @if (hasIcon) {\r\n <fd-avatar\r\n [circle]=\"avatarCircle\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\r\n ></fd-avatar>\r\n }\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n @if (isCheckList) {\r\n <fd-checkbox\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n } @if (!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\r\n <div\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"mo\"\r\n [styleIndex]=\"styleIndex\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n }\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"titleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title }}\r\n </h2>\r\n </div>\r\n @if (canView) {\r\n <button\r\n fd-button\r\n (click)=\"events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n }\r\n </div>\r\n\r\n <h3\r\n fd-card-subtitle\r\n #hEl\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"subtitleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ subtitle }}\r\n </h3>\r\n</fd-card-header>\r\n<div></div>\r\n", styles: [":host ::ng-deep .fd-card__header-text{padding:1rem}fd-card-header{cursor:default;display:flex;flex-direction:column;padding:0}fd-card-header fd-avatar{min-height:160px;max-height:160px;height:160px;width:283px;max-width:100%;min-width:100%}fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:1rem;font-weight:700}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}fd-card-header.hide-border{border-bottom:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$1.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "directive", type: i2$1.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i3$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$3.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "directive", type: i4$3.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i4$3.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i6$2.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1559
+ }
1560
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CardHeaderBigImageTitleAndSubtitleComponent, decorators: [{
1561
+ type: Component,
1562
+ args: [{ selector: 'bdc-card-header-big-image-title-and-subtitle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card-header [class.hide-border]=\"parameters.HideBorder\">\r\n @if (hasIcon) {\r\n <fd-avatar\r\n [circle]=\"avatarCircle\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\r\n ></fd-avatar>\r\n }\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n @if (isCheckList) {\r\n <fd-checkbox\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n } @if (!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\r\n <div\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"mo\"\r\n [styleIndex]=\"styleIndex\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n }\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"titleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title }}\r\n </h2>\r\n </div>\r\n @if (canView) {\r\n <button\r\n fd-button\r\n (click)=\"events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n }\r\n </div>\r\n\r\n <h3\r\n fd-card-subtitle\r\n #hEl\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"subtitleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ subtitle }}\r\n </h3>\r\n</fd-card-header>\r\n<div></div>\r\n", styles: [":host ::ng-deep .fd-card__header-text{padding:1rem}fd-card-header{cursor:default;display:flex;flex-direction:column;padding:0}fd-card-header fd-avatar{min-height:160px;max-height:160px;height:160px;width:283px;max-width:100%;min-width:100%}fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:1rem;font-weight:700}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}fd-card-header.hide-border{border-bottom:none!important}\n"] }]
1563
+ }] });
1564
+
1565
+ class ServiceDeskFormLayoutContentMojavezComponent extends FormPropsBaseComponent {
1566
+ constructor() {
1567
+ super(...arguments);
1568
+ this.fieldsCaption = [];
1569
+ }
1570
+ ngOnInit() {
1571
+ super.ngOnInit();
1572
+ let fieldDict = [];
1573
+ if (this.fieldDict) {
1574
+ fieldDict = Object.keys(this.fieldDict);
1575
+ }
1576
+ if (fieldDict) {
1577
+ fieldDict.forEach((key) => {
1578
+ if (this.fieldDict) {
1579
+ const fieldName = this.fieldDict[key];
1580
+ const item = { caption: key, fieldName, value: '' };
1581
+ const customFiledUi = this._controlUiPipe.transform(key, this.layout94);
1582
+ item.value = this.mo[fieldName];
1583
+ const originalXtype = customFiledUi?.FieldUi?.originalXtype;
1584
+ if (key === 'آدرس سایت') {
1585
+ item.type = 'Link';
1586
+ }
1587
+ if (this.mo[fieldName + '$Caption']) {
1588
+ item.type = 'Caption';
1589
+ item.value = this.mo[fieldName + '$Caption'];
1590
+ }
1591
+ else if (typeof item.value === 'object') {
1592
+ if (item.value.$Type === 'Common.MetaObjectListWeb') {
1593
+ item.type = 'MoList';
1594
+ }
1595
+ else if (item.value.Ext) {
1596
+ item.type = 'Image';
1597
+ }
1598
+ else if (originalXtype === 'Ui.FileLinearListBox') {
1599
+ item.type = 'Files';
1600
+ }
1601
+ else {
1602
+ item.type = 'Relation';
1603
+ }
1604
+ if (key === 'خدمات قابل انجام') {
1605
+ item.type = 'MoList2';
1606
+ }
1607
+ }
1608
+ this.fieldsCaption.push(item);
1609
+ }
1610
+ });
1611
+ }
1612
+ this.fieldsCaption = this.fieldsCaption.filter((c) => c.caption !== 'عنوان مجوز' && c.caption !== 'نقش اشخاص در مجوز' && c.caption !== 'فرزند');
1613
+ const controlCount = this.fieldsCaption.length;
1614
+ const controlCountMiddle = Math.ceil(this.fieldsCaption.length / 2);
1615
+ this.firstArray = this.fieldsCaption.slice(0, controlCountMiddle);
1616
+ this.secondArray = this.fieldsCaption.slice(controlCountMiddle, controlCount);
1617
+ this.isOdd = controlCount % 2 === 0;
1618
+ }
1619
+ ngAfterViewInit() {
1620
+ super.ngAfterViewInit();
1621
+ this.alignTablesTr();
1622
+ }
1623
+ onLink(item) {
1624
+ if (item.F34) {
1625
+ window.open(item.F42);
1626
+ }
1627
+ else {
1628
+ BarsaApi.Bw.Msg.Info('سامانه ای تعریف نشده است');
1629
+ }
1630
+ }
1631
+ onDownload(item) {
1632
+ BarsaApi.Common.File.DownloadFileId(item.Id);
1633
+ }
1634
+ alignTablesTr() {
1635
+ setTimeout(() => {
1636
+ const tablesRef = this.tablesRef.toArray();
1637
+ const firstTableEl = tablesRef[0].nativeElement;
1638
+ const secondTableEl = tablesRef[1].nativeElement;
1639
+ const trFirstTable = firstTableEl.querySelectorAll('tr');
1640
+ const trSecondTable = secondTableEl.querySelectorAll('tr');
1641
+ trFirstTable.forEach((tr, index) => {
1642
+ if (index < trSecondTable.length) {
1643
+ const trSecond = trSecondTable[index];
1644
+ if (tr.offsetHeight > trSecond.offsetHeight) {
1645
+ trSecond.style.height = `${tr.offsetHeight}px`;
1646
+ }
1647
+ else {
1648
+ tr.style.height = `${trSecond.offsetHeight}px`;
1649
+ }
1650
+ }
1651
+ });
1652
+ }, 0);
1653
+ }
1654
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ServiceDeskFormLayoutContentMojavezComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1655
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ServiceDeskFormLayoutContentMojavezComponent, selector: "bdc-service-desk-form-layout-content-mojavez", viewQueries: [{ propertyName: "tabContainerRef", first: true, predicate: ["tabContainerRef"], descendants: true }, { propertyName: "tablesRef", predicate: ["tablesRef"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<fd-layout-grid>\r\n <div [fdLayoutGridCol]=\"6\" style=\"padding: 0\">\r\n <ng-container *ngTemplateOutlet=\"renderTable; context: { $implicit: firstArray, classNames: 'firstTable' }\">\r\n </ng-container>\r\n </div>\r\n <div [fdLayoutGridCol]=\"6\" style=\"padding: 0\">\r\n <ng-container *ngTemplateOutlet=\"renderTable; context: { $implicit: secondArray, classNames: 'secondTable' }\">\r\n </ng-container>\r\n </div>\r\n</fd-layout-grid>\r\n\r\n<ng-template #renderTable let-array let-classNames=\"classNames\">\r\n <table fd-table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\r\n @for (controlItem of array; track controlItem) {\r\n <tr fd-table-row>\r\n <th fd-tabel-cell>{{ controlItem.caption }}</th>\r\n <td fd-tabel-cell>\r\n @switch (controlItem.type) { @case ('Link') {\r\n <a target=\"_blank\" [href]=\"controlItem.value\">{{ controlItem.value }}</a>\r\n } @case ('Relation') {\r\n {{ controlItem.value.$Caption }}\r\n } @case ('MoList') { @for (item of controlItem.value.MoDataList; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon>\r\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n } } @case ('MoList2') { @for (item of controlItem.value.MoDataList; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\"></fd-icon>\r\n <a (click)=\"onLink(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n } } @case ('Caption') {\r\n {{ controlItem.value }}\r\n } @case ('Image') {\r\n {{ controlItem.value.Ext }}\r\n } @case ('Files') { @for (item of controlItem.value.Files; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon>\r\n <a (click)=\"onDownload(item)\">{{ item.FileName }}</a>\r\n </div>\r\n } } @default {\r\n {{ controlItem.value }}\r\n } }\r\n </td>\r\n </tr>\r\n }\r\n </table>\r\n</ng-template>\r\n", styles: [".cell{font-size:14px}.bod{border-bottom:1px solid gray;border-right:1px solid gray;height:30px;line-height:30px}.bod :first{border-right:0;border-bottom:0}.anwser{line-height:30px;padding:10px;text-align:justify}.box{padding:0 40px 10px 10px;line-height:30px;display:flex;flex-direction:column;column-count:2;flex-wrap:wrap;height:180px;overflow:hidden}.faq-item-link{font-size:16px;padding-right:25px;cursor:pointer;color:gray}.faq-item-link a{color:gray;cursor:pointer}.faq-item-link a:hover{text-decoration:underline!important}.law-page-header{background:#fff;color:#0854a0;font-size:1.3rem;font-weight:500;padding:5px 15px}.wrapper{border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}table.table-grid{border-collapse:collapse;width:100%;direction:rtl;background-color:#fff}.table-grid td,.table-grid th{border:1px solid grey;text-align:left;padding:12px 8px;text-align:right}.table-grid th{background-color:#e2e2e2;font-size:.825rem;font-weight:500;vertical-align:middle;width:200px}.table-grid td{font-size:.825rem;vertical-align:middle}@media only screen and (max-width: 992px){.secondTable tr:first-child td,.secondTable tr:first-child th{border-top:0}}@media only screen and (min-width: 992px){.secondTable th{border-right:0}}.fd-icon{font-size:2rem;color:#0854a0;padding-left:10px}.links a{line-height:25px;cursor:pointer;display:inline;color:#32363a;vertical-align:top}.links a:hover{text-decoration:underline!important;color:#0012af}.fd-icon-link{font-size:1rem;padding-left:5px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i3$7.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i3$7.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: i3$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i3$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1656
+ }
1657
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ServiceDeskFormLayoutContentMojavezComponent, decorators: [{
1658
+ type: Component,
1659
+ args: [{ selector: 'bdc-service-desk-form-layout-content-mojavez', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-layout-grid>\r\n <div [fdLayoutGridCol]=\"6\" style=\"padding: 0\">\r\n <ng-container *ngTemplateOutlet=\"renderTable; context: { $implicit: firstArray, classNames: 'firstTable' }\">\r\n </ng-container>\r\n </div>\r\n <div [fdLayoutGridCol]=\"6\" style=\"padding: 0\">\r\n <ng-container *ngTemplateOutlet=\"renderTable; context: { $implicit: secondArray, classNames: 'secondTable' }\">\r\n </ng-container>\r\n </div>\r\n</fd-layout-grid>\r\n\r\n<ng-template #renderTable let-array let-classNames=\"classNames\">\r\n <table fd-table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\r\n @for (controlItem of array; track controlItem) {\r\n <tr fd-table-row>\r\n <th fd-tabel-cell>{{ controlItem.caption }}</th>\r\n <td fd-tabel-cell>\r\n @switch (controlItem.type) { @case ('Link') {\r\n <a target=\"_blank\" [href]=\"controlItem.value\">{{ controlItem.value }}</a>\r\n } @case ('Relation') {\r\n {{ controlItem.value.$Caption }}\r\n } @case ('MoList') { @for (item of controlItem.value.MoDataList; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon>\r\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n } } @case ('MoList2') { @for (item of controlItem.value.MoDataList; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\"></fd-icon>\r\n <a (click)=\"onLink(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n } } @case ('Caption') {\r\n {{ controlItem.value }}\r\n } @case ('Image') {\r\n {{ controlItem.value.Ext }}\r\n } @case ('Files') { @for (item of controlItem.value.Files; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon>\r\n <a (click)=\"onDownload(item)\">{{ item.FileName }}</a>\r\n </div>\r\n } } @default {\r\n {{ controlItem.value }}\r\n } }\r\n </td>\r\n </tr>\r\n }\r\n </table>\r\n</ng-template>\r\n", styles: [".cell{font-size:14px}.bod{border-bottom:1px solid gray;border-right:1px solid gray;height:30px;line-height:30px}.bod :first{border-right:0;border-bottom:0}.anwser{line-height:30px;padding:10px;text-align:justify}.box{padding:0 40px 10px 10px;line-height:30px;display:flex;flex-direction:column;column-count:2;flex-wrap:wrap;height:180px;overflow:hidden}.faq-item-link{font-size:16px;padding-right:25px;cursor:pointer;color:gray}.faq-item-link a{color:gray;cursor:pointer}.faq-item-link a:hover{text-decoration:underline!important}.law-page-header{background:#fff;color:#0854a0;font-size:1.3rem;font-weight:500;padding:5px 15px}.wrapper{border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}table.table-grid{border-collapse:collapse;width:100%;direction:rtl;background-color:#fff}.table-grid td,.table-grid th{border:1px solid grey;text-align:left;padding:12px 8px;text-align:right}.table-grid th{background-color:#e2e2e2;font-size:.825rem;font-weight:500;vertical-align:middle;width:200px}.table-grid td{font-size:.825rem;vertical-align:middle}@media only screen and (max-width: 992px){.secondTable tr:first-child td,.secondTable tr:first-child th{border-top:0}}@media only screen and (min-width: 992px){.secondTable th{border-right:0}}.fd-icon{font-size:2rem;color:#0854a0;padding-left:10px}.links a{line-height:25px;cursor:pointer;display:inline;color:#32363a;vertical-align:top}.links a:hover{text-decoration:underline!important;color:#0012af}.fd-icon-link{font-size:1rem;padding-left:5px}\n"] }]
1660
+ }], propDecorators: { tabContainerRef: [{
1661
+ type: ViewChild,
1662
+ args: ['tabContainerRef']
1663
+ }], tablesRef: [{
1664
+ type: ViewChildren,
1665
+ args: ['tablesRef', { read: ElementRef }]
1666
+ }] } });
1667
+
1668
+ class UlvContextMenuItemShowFileContentComponent extends BaseFormToolbaritemPropsComponent {
1669
+ constructor(_reportValuePipe, _cdr, _dialogService, _sanitize) {
1670
+ super(_reportValuePipe, _cdr);
1671
+ this._reportValuePipe = _reportValuePipe;
1672
+ this._cdr = _cdr;
1673
+ this._dialogService = _dialogService;
1674
+ this._sanitize = _sanitize;
1675
+ this.disabled = false;
1676
+ }
1677
+ ngOnInit() {
1678
+ super.ngOnInit();
1679
+ const mo = this.mo;
1680
+ this.text = this.parameters.ButtonText;
1681
+ this.fdType = this.parameters.FdType$Caption;
1682
+ this.compact = this.parameters.Compact;
1683
+ this.icon = this.parameters.Icon;
1684
+ this.iconOnly = this.parameters.IconOnly;
1685
+ this.fileType = this._reportValuePipe.transform(this.parameters.FieldType, mo, this.allColumns); // نوع
1686
+ this.file = this._reportValuePipe.transform(this.parameters.FieldFile, mo, this.allColumns);
1687
+ this.videoUrl = this._reportValuePipe.transform(this.parameters.FieldVideoUrl, mo, this.allColumns);
1688
+ if (this.fileType === '1' && this.file.Files?.length === 0) {
1689
+ this.disabled = true;
1690
+ }
1691
+ if (this.fileType === '2' && this.videoUrl) {
1692
+ this.disabled = true;
1693
+ }
1694
+ }
1695
+ openDialog(dialog) {
1696
+ let finalUrl;
1697
+ if (this.fileType === '1') {
1698
+ finalUrl = this._sanitize.bypassSecurityTrustResourceUrl(BarsaApi.Common.File.CreateAttachmentUrl(this.file.Files[0].Id, true));
1699
+ }
1700
+ if (this.fileType === '2') {
1701
+ finalUrl = this._sanitize.bypassSecurityTrustResourceUrl(this.videoUrl);
1702
+ }
1703
+ const isMobile = this.deviceName === 'mobile';
1704
+ const x = {
1705
+ data: {
1706
+ url: finalUrl,
1707
+ isVideo: this.fileType === '2',
1708
+ responsivePadding: true,
1709
+ mobile: isMobile
1710
+ }
1711
+ };
1712
+ if (!isMobile) {
1713
+ x.width = '60%';
1714
+ x.height = '56%';
1715
+ }
1716
+ this._dialogService.open(dialog, x);
1717
+ }
1718
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UlvContextMenuItemShowFileContentComponent, deps: [{ token: i1$1.MoReportValuePipe }, { token: i0.ChangeDetectorRef }, { token: i2$2.DialogService }, { token: i3$a.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1719
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UlvContextMenuItemShowFileContentComponent, selector: "bdc-ulv-context-menu-item-show-file-content", usesInheritance: true, ngImport: i0, template: "<button\r\n fd-button\r\n [compact]=\"compact\"\r\n [label]=\"iconOnly ? '' : (text | bbbTranslate)\"\r\n [fdType]=\"fdType\"\r\n [glyph]=\"icon\"\r\n [compact]=\"compact\"\r\n (click)=\"openDialog(pdfDialog)\"\r\n></button>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #pdfDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTplRef>\r\n <fd-dialog-header>\r\n <ng-template fdkTemplate=\"header\">\r\n <div fd-bar-left></div>\r\n <div fd-bar-right>\r\n @if (dialogConfig.height !== '100vh') {\r\n <fd-button-bar\r\n ariaLabel=\"fullscreen\"\r\n [glyph]=\"dialog.data.fullscreen ? 'exitfullscreen' : 'resize'\"\r\n fullscreenDialog\r\n [fullscreen]=\"dialog.data.fullscreen\"\r\n (fullscreenChanged)=\"dialog.data.fullscreen = $event\"\r\n [dialog]=\"dialog\"\r\n [dialogComponent]=\"dialogTplRef\"\r\n ></fd-button-bar>\r\n }\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.dismiss()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n\r\n <fd-dialog-body>\r\n @if (!dialogConfig.data.isVideo) {\r\n <object [data]=\"dialogConfig.data.url\" type=\"application/pdf\" width=\"100%\" height=\"98%\"></object>\r\n } @if (dialogConfig.data.isVideo) {\r\n <video controls style=\"width: 100%; height: 98%\">\r\n <source [src]=\"dialogConfig.data.url\" type=\"video/mp4\" />\r\n Your browser does not support HTML video.\r\n </video>\r\n }\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2$1.FullscreenDialogDirective, selector: "[fullscreenDialog]", inputs: ["dialog", "dialogComponent", "fullscreen"], outputs: ["fullscreenChanged"] }, { kind: "directive", type: i3$3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i3$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i4$2.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i4$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i10.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1720
+ }
1721
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UlvContextMenuItemShowFileContentComponent, decorators: [{
1722
+ type: Component,
1723
+ args: [{ selector: 'bdc-ulv-context-menu-item-show-file-content', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n fd-button\r\n [compact]=\"compact\"\r\n [label]=\"iconOnly ? '' : (text | bbbTranslate)\"\r\n [fdType]=\"fdType\"\r\n [glyph]=\"icon\"\r\n [compact]=\"compact\"\r\n (click)=\"openDialog(pdfDialog)\"\r\n></button>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #pdfDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTplRef>\r\n <fd-dialog-header>\r\n <ng-template fdkTemplate=\"header\">\r\n <div fd-bar-left></div>\r\n <div fd-bar-right>\r\n @if (dialogConfig.height !== '100vh') {\r\n <fd-button-bar\r\n ariaLabel=\"fullscreen\"\r\n [glyph]=\"dialog.data.fullscreen ? 'exitfullscreen' : 'resize'\"\r\n fullscreenDialog\r\n [fullscreen]=\"dialog.data.fullscreen\"\r\n (fullscreenChanged)=\"dialog.data.fullscreen = $event\"\r\n [dialog]=\"dialog\"\r\n [dialogComponent]=\"dialogTplRef\"\r\n ></fd-button-bar>\r\n }\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.dismiss()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n\r\n <fd-dialog-body>\r\n @if (!dialogConfig.data.isVideo) {\r\n <object [data]=\"dialogConfig.data.url\" type=\"application/pdf\" width=\"100%\" height=\"98%\"></object>\r\n } @if (dialogConfig.data.isVideo) {\r\n <video controls style=\"width: 100%; height: 98%\">\r\n <source [src]=\"dialogConfig.data.url\" type=\"video/mp4\" />\r\n Your browser does not support HTML video.\r\n </video>\r\n }\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"] }]
1724
+ }], ctorParameters: () => [{ type: i1$1.MoReportValuePipe }, { type: i0.ChangeDetectorRef }, { type: i2$2.DialogService }, { type: i3$a.DomSanitizer }] });
1725
+
1726
+ class ResendVerificationCodeComponent extends FieldBaseComponent {
1727
+ constructor() {
1728
+ super(...arguments);
1729
+ this.caption = '00:00';
1730
+ this.timer = 1;
1731
+ this.minutes = '0';
1732
+ this.seconds = '0';
1733
+ this._baseTimeLeft = 120;
1734
+ this._timeLeftCounter = 0;
1735
+ }
1736
+ ngAfterViewInit() {
1737
+ super.ngAfterViewInit();
1738
+ this._timeLeftCounter = this._baseTimeLeft;
1739
+ this.caption = `(${this.caption})`;
1740
+ this._startTimer();
1741
+ }
1742
+ ngOnDestroy() {
1743
+ super.ngOnDestroy();
1744
+ if (this.interval$) {
1745
+ clearInterval(this.interval$);
1746
+ }
1747
+ }
1748
+ onClick() {
1749
+ this.context.fireEvent('click', this.context);
1750
+ }
1751
+ onStartTimer() {
1752
+ this._startTimer();
1753
+ }
1754
+ _startTimer() {
1755
+ this.interval$ = setInterval(() => {
1756
+ if (this._timeLeftCounter > 0) {
1757
+ this._timeLeftCounter--;
1758
+ this.minutes = Math.floor(this._timeLeftCounter / 60).toString();
1759
+ this.seconds = Math.round(this._timeLeftCounter % 60).toString();
1760
+ this.minutes = Number(this.minutes) < 10 ? '0' + this.minutes : this.minutes;
1761
+ this.seconds = Number(this.seconds) < 10 ? '0' + this.seconds : this.seconds;
1762
+ this.caption = `(${this.minutes}:${this.seconds})`;
1763
+ }
1764
+ else {
1765
+ this._timeLeftCounter = this._baseTimeLeft;
1766
+ this.caption = `${this.caption}`;
1767
+ if (this.interval$ != null) {
1768
+ clearInterval(this.interval$);
1769
+ this.interval$ = null;
1770
+ }
1771
+ }
1772
+ this._cdr.detectChanges();
1773
+ }, 1000);
1774
+ }
1775
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ResendVerificationCodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1776
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: ResendVerificationCodeComponent, selector: "bdc-resend-verification-code", usesInheritance: true, ngImport: i0, template: "<button\n (click)=\"onClick()\"\n fd-button\n [disabled]=\"interval$ === null ? null : true\"\n (click)=\"onStartTimer()\"\n [label]=\"interval$ === null ? ('\u0627\u0631\u0633\u0627\u0644 \u0645\u062C\u062F\u062F' | bbbTranslate) : caption\"\n glyph=\"iphone\"\n></button>\n", styles: [":host{display:block}:host button{width:100%;margin-top:.25rem}\n"], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1777
+ }
1778
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ResendVerificationCodeComponent, decorators: [{
1779
+ type: Component,
1780
+ args: [{ selector: 'bdc-resend-verification-code', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n (click)=\"onClick()\"\n fd-button\n [disabled]=\"interval$ === null ? null : true\"\n (click)=\"onStartTimer()\"\n [label]=\"interval$ === null ? ('\u0627\u0631\u0633\u0627\u0644 \u0645\u062C\u062F\u062F' | bbbTranslate) : caption\"\n glyph=\"iphone\"\n></button>\n", styles: [":host{display:block}:host button{width:100%;margin-top:.25rem}\n"] }]
1781
+ }] });
1782
+
1783
+ class CheckboxButtonComponent extends UiCheckBoxComponent {
1784
+ ngOnInit() {
1785
+ super.ngOnInit();
1786
+ this.trueIcon = this.parameters?.TrueIcon;
1787
+ this.fdType = this.parameters?.FdType$Caption;
1788
+ this.falseIcon = this.parameters?.FalseIcon;
1789
+ }
1790
+ onClick() {
1791
+ this._valueChanged(!this.value);
1792
+ }
1793
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CheckboxButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1794
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: CheckboxButtonComponent, selector: "bdc-checkbox-button", usesInheritance: true, ngImport: i0, template: "<button\r\n [disabled]=\"(disableOrReadonly$ | async)!!\"\r\n fd-button\r\n [glyph]=\"value ? trueIcon : falseIcon\"\r\n [fdType]=\"fdType\"\r\n (click)=\"onClick()\"\r\n></button>\r\n", styles: [":host{display:flex;height:100%;align-items:center}button{margin-top:.25rem;margin-bottom:.25rem}\n"], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1795
+ }
1796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CheckboxButtonComponent, decorators: [{
1797
+ type: Component,
1798
+ args: [{ selector: 'bdc-checkbox-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n [disabled]=\"(disableOrReadonly$ | async)!!\"\r\n fd-button\r\n [glyph]=\"value ? trueIcon : falseIcon\"\r\n [fdType]=\"fdType\"\r\n (click)=\"onClick()\"\r\n></button>\r\n", styles: [":host{display:flex;height:100%;align-items:center}button{margin-top:.25rem;margin-bottom:.25rem}\n"] }]
1799
+ }] });
1800
+
1801
+ class BarcodeFormatPipe {
1802
+ transform(value) {
1803
+ let format = '';
1804
+ for (const enumMember of Object.keys(BarcodeFormat)) {
1805
+ const isValueProperty = parseInt(enumMember, 10) >= 0;
1806
+ if (isValueProperty && Number(enumMember) === value) {
1807
+ format = BarcodeFormat[enumMember];
1808
+ }
1809
+ }
1810
+ return format;
1811
+ }
1812
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarcodeFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1813
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: BarcodeFormatPipe, name: "barcodeFormat" }); }
1814
+ }
1815
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarcodeFormatPipe, decorators: [{
1816
+ type: Pipe,
1817
+ args: [{
1818
+ name: 'barcodeFormat'
1819
+ }]
1820
+ }] });
1821
+
1822
+ class ReportTabViewComponent extends ReportViewBaseComponent {
1823
+ ngOnInit() {
1824
+ super.ngOnInit();
1825
+ this.arrowRight = this.rtl ? 'navigation-left-arrow' : 'navigation-right-arrow';
1826
+ this.fieldTitle = this.viewSetting.FieldTitle;
1827
+ this.fieldIcon = this.viewSetting.FieldIcon;
1828
+ this.fieldState = this.viewSetting.FieldState;
1829
+ this.mode = this.viewSetting.Mode$Caption;
1830
+ }
1831
+ onSelectedTabChange(e) {
1832
+ const index = this.moDataList.findIndex((c) => c.Id === e.id);
1833
+ const mo = this.moDataList[index];
1834
+ super.onRowCheck({ mo, index });
1835
+ }
1836
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ReportTabViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1837
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ReportTabViewComponent, selector: "bdc-report-tab-view", usesInheritance: true, ngImport: i0, template: "<fd-tab-list [expandOverflowText]=\"'More' | bbbTranslate\" (selectedTabChange)=\"onSelectedTabChange($event)\">\r\n @for (mo of moDataList; track mo) {\r\n <fd-tab [title]=\"mo.$Caption\" [id]=\"mo.Id\"> </fd-tab>\r\n }\r\n</fd-tab-list>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "selectedTabIndexChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i1$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1838
+ }
1839
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ReportTabViewComponent, decorators: [{
1840
+ type: Component,
1841
+ args: [{ selector: 'bdc-report-tab-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-tab-list [expandOverflowText]=\"'More' | bbbTranslate\" (selectedTabChange)=\"onSelectedTabChange($event)\">\r\n @for (mo of moDataList; track mo) {\r\n <fd-tab [title]=\"mo.$Caption\" [id]=\"mo.Id\"> </fd-tab>\r\n }\r\n</fd-tab-list>\r\n" }]
1842
+ }] });
1843
+
1844
+ class ReportLineChartViewComponent extends ReportViewBaseComponent {
1845
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ReportLineChartViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1846
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: ReportLineChartViewComponent, selector: "bdc-report-line-chart-view", usesInheritance: true, ngImport: i0, template: "<div\r\n beChartLineTime\r\n [moDataList]=\"moDataList\"\r\n [groupByField]=\"'SlaveAddress'\"\r\n [dateTimeField]=\"'DateTime'\"\r\n [valueField]=\"'Value'\"\r\n></div>\r\n", styles: [":host{height:100vh;display:block}\n"], dependencies: [{ kind: "directive", type: i1$5.ChartLineTimeBaseDirective, selector: "[beChartLineTime]", inputs: ["chartOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1847
+ }
1848
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ReportLineChartViewComponent, decorators: [{
1849
+ type: Component,
1850
+ args: [{ selector: 'bdc-report-line-chart-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n beChartLineTime\r\n [moDataList]=\"moDataList\"\r\n [groupByField]=\"'SlaveAddress'\"\r\n [dateTimeField]=\"'DateTime'\"\r\n [valueField]=\"'Value'\"\r\n></div>\r\n", styles: [":host{height:100vh;display:block}\n"] }]
1851
+ }] });
1852
+
1853
+ class CardHeaderKpiComponent extends CardHeaderLogoTitleSubtitleComponent {
1854
+ ngOnInit() {
1855
+ const parentField = this.parameters.InheritanceInfo?.ParentFieldName;
1856
+ if (parentField) {
1857
+ const val = this.parameters[parentField];
1858
+ if (val) {
1859
+ Object.keys(val).forEach((c) => {
1860
+ if (!c.startsWith('$') && c !== 'Id') {
1861
+ this.parameters[c] = val[c];
1862
+ }
1863
+ });
1864
+ }
1865
+ }
1866
+ super.ngOnInit();
1867
+ const parameters = this.parameters;
1868
+ if (parameters != null) {
1869
+ this.kpiValue = this._rval.transform(parameters.KpiValue, this.mo, this.allColumns, true);
1870
+ this.kpiStatus = this._rval.transform(parameters.KpiStatus, this.mo, this.allColumns, true);
1871
+ this.kpiAnalyticalLabel = parameters.KpiAnalyticalLabel;
1872
+ this.kpiAnalayticalSymbol = this._rval.transform(parameters.KpiAnalayticalSymbol, this.mo, this.allColumns);
1873
+ this.kpiAnalyticalContent = this._rval.transform(parameters.KpiAnalyticalContent, this.mo, this.allColumns);
1874
+ }
1875
+ }
1876
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CardHeaderKpiComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1877
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: CardHeaderKpiComponent, selector: "bdc-card-header-kpi", usesInheritance: true, ngImport: i0, template: "<fd-card-header>\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n @if (isCheckList) {\r\n <fd-checkbox\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n }\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"titleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title }}\r\n </h2>\r\n @if (!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\r\n <div\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [styleIndex]=\"styleIndex\"\r\n [mo]=\"mo\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n }\r\n </div>\r\n @if (canView) {\r\n <button\r\n fd-button\r\n (click)=\"events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n }\r\n </div>\r\n\r\n <fd-card-kpi-header>\r\n <strong fd-card-kpi-value [status]=\"kpiStatus\">{{ kpiValue }}</strong>\r\n <span\r\n fd-card-kpi-scale-icon\r\n [glyph]=\"kpiStatus === 'positive' ? 'up' : 'down'\"\r\n fd-object-status\r\n [status]=\"kpiStatus\"\r\n aria-label=\"up arrow\"\r\n title=\"up arrow\"\r\n ></span>\r\n <span fd-card-kpi-scale-text fd-object-status status=\"positive\">\u00B0C</span>\r\n\r\n <div fd-card-kpi-analytics>\r\n <label fd-card-kpi-analytics-label>{{ kpiAnalyticalLabel }}</label>\r\n <span fd-card-kpi-analytics-content>{{ kpiAnalyticalContent }}{{ kpiAnalayticalSymbol }}</span>\r\n </div>\r\n </fd-card-kpi-header>\r\n\r\n <h4 fd-card-second-subtitle>{{ subtitle }}</h4>\r\n</fd-card-header>\r\n", styles: ["fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:.9rem}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$1.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "directive", type: i2$1.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$3.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "directive", type: i4$3.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i4$3.CardSecondSubtitleDirective, selector: "[fd-card-second-subtitle]" }, { kind: "component", type: i4$3.CardKpiHeaderComponent, selector: "fd-card-kpi-header" }, { kind: "directive", type: i4$3.CardKpiValueDirective, selector: "[fd-card-kpi-value]", inputs: ["status"] }, { kind: "directive", type: i4$3.CardKpiScaleIconDirective, selector: "[fd-card-kpi-scale-icon]" }, { kind: "directive", type: i4$3.CardKpiScaleTextDirective, selector: "[fd-card-kpi-scale-text]" }, { kind: "directive", type: i4$3.CardKpiAnalyticsDirective, selector: "[fd-card-kpi-analytics]" }, { kind: "directive", type: i4$3.CardKpiAnalyticsLabelDirective, selector: "[fd-card-kpi-analytics-label]" }, { kind: "directive", type: i4$3.CardKpiAnalyticsContentDirective, selector: "[fd-card-kpi-analytics-content]" }, { kind: "component", type: i6$2.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i6$3.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1878
+ }
1879
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CardHeaderKpiComponent, decorators: [{
1880
+ type: Component,
1881
+ args: [{ selector: 'bdc-card-header-kpi', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card-header>\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n @if (isCheckList) {\r\n <fd-checkbox\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n }\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"titleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title }}\r\n </h2>\r\n @if (!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\r\n <div\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [styleIndex]=\"styleIndex\"\r\n [mo]=\"mo\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n }\r\n </div>\r\n @if (canView) {\r\n <button\r\n fd-button\r\n (click)=\"events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n }\r\n </div>\r\n\r\n <fd-card-kpi-header>\r\n <strong fd-card-kpi-value [status]=\"kpiStatus\">{{ kpiValue }}</strong>\r\n <span\r\n fd-card-kpi-scale-icon\r\n [glyph]=\"kpiStatus === 'positive' ? 'up' : 'down'\"\r\n fd-object-status\r\n [status]=\"kpiStatus\"\r\n aria-label=\"up arrow\"\r\n title=\"up arrow\"\r\n ></span>\r\n <span fd-card-kpi-scale-text fd-object-status status=\"positive\">\u00B0C</span>\r\n\r\n <div fd-card-kpi-analytics>\r\n <label fd-card-kpi-analytics-label>{{ kpiAnalyticalLabel }}</label>\r\n <span fd-card-kpi-analytics-content>{{ kpiAnalyticalContent }}{{ kpiAnalayticalSymbol }}</span>\r\n </div>\r\n </fd-card-kpi-header>\r\n\r\n <h4 fd-card-second-subtitle>{{ subtitle }}</h4>\r\n</fd-card-header>\r\n", styles: ["fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:.9rem}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}\n"] }]
1882
+ }] });
1883
+
1884
+ class CardContentLineChartComponent extends BaseItemContentPropsComponent {
1885
+ ngOnInit() {
1886
+ super.ngOnInit();
1887
+ const parameters = this.parameters;
1888
+ const { MethodParametersFieldName, RunBlMethodName } = parameters;
1889
+ const methodParameters = [];
1890
+ MethodParametersFieldName.split(',').forEach((c) => {
1891
+ const value = this.mo[c];
1892
+ if (typeof value === 'object' && value.Id) {
1893
+ methodParameters.push(value.Id);
1894
+ }
1895
+ else {
1896
+ methodParameters.push(value);
1897
+ }
1898
+ });
1899
+ BarsaApi.Bw.RunBlMethodAsync({
1900
+ Parameters: methodParameters,
1901
+ Method: RunBlMethodName,
1902
+ SuccessFn: (chartOption) => {
1903
+ this.chartOption = JSON.parse(chartOption);
1904
+ this._cdr.detectChanges();
1905
+ },
1906
+ FailFn: () => { }
1907
+ });
1908
+ }
1909
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CardContentLineChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1910
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: CardContentLineChartComponent, selector: "bdc-card-content-line-chart", usesInheritance: true, ngImport: i0, template: "@if (chartOption) {\r\n<div class=\"card-content\" #elemRef>\r\n <div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n</div>\r\n}\r\n", styles: [":host{display:block;padding:15px}.card-content{height:300px}\n"], dependencies: [{ kind: "directive", type: i1$5.ChartLineTimeBaseDirective, selector: "[beChartLineTime]", inputs: ["chartOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1911
+ }
1912
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CardContentLineChartComponent, decorators: [{
1913
+ type: Component,
1914
+ args: [{ selector: 'bdc-card-content-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (chartOption) {\r\n<div class=\"card-content\" #elemRef>\r\n <div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n</div>\r\n}\r\n", styles: [":host{display:block;padding:15px}.card-content{height:300px}\n"] }]
1915
+ }] });
1916
+
1917
+ class FormChartContentComponent extends FormPropsBaseComponent {
1918
+ ngOnInit() {
1919
+ super.ngOnInit();
1920
+ const settings = this.settings;
1921
+ const { MethodParametersFieldName, RunBlMethodName } = settings;
1922
+ const methodParameters = [];
1923
+ MethodParametersFieldName.split(',').forEach((c) => {
1924
+ const value = this.mo[c];
1925
+ if (typeof value === 'object' && value.Id) {
1926
+ methodParameters.push(value.Id);
1927
+ }
1928
+ else {
1929
+ methodParameters.push(value);
1930
+ }
1931
+ });
1932
+ BarsaApi.Bw.RunBlMethodAsync({
1933
+ Parameters: methodParameters,
1934
+ Method: RunBlMethodName,
1935
+ SuccessFn: (chartOption) => {
1936
+ this.chartOption = JSON.parse(chartOption);
1937
+ this._cdr.detectChanges();
1938
+ },
1939
+ FailFn: () => { }
1940
+ });
1941
+ }
1942
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FormChartContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1943
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: FormChartContentComponent, selector: "bdc-form-chart-content", usesInheritance: true, ngImport: i0, template: "@if (chartOption) {\r\n<div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n}\r\n", styles: [":host{display:block;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$5.ChartLineTimeBaseDirective, selector: "[beChartLineTime]", inputs: ["chartOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1944
+ }
1945
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FormChartContentComponent, decorators: [{
1946
+ type: Component,
1947
+ args: [{ selector: 'bdc-form-chart-content', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (chartOption) {\r\n<div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n}\r\n", styles: [":host{display:block;height:100%}\n"] }]
1948
+ }] });
1949
+
1950
+ class TableViewVerticalColumnsComponent extends ReportViewBaseComponent {
1951
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TableViewVerticalColumnsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1952
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TableViewVerticalColumnsComponent, selector: "bdc-table-view-vertical-columns", usesInheritance: true, ngImport: i0, template: "@for (mo of moDataList | multipleGroupBy: groupby; track mo; let index = $index) { @if (mo.$Group) {\r\n<h3>{{ mo.$Group }}</h3>\r\n<ng-container *ngTemplateOutlet=\"tplTable; context: { $implicit: mo.$Children, index: this.index }\"></ng-container>\r\n} }\r\n<ng-template #tplTable let-children let-index=\"index\">\r\n <table fd-table [style.margin-top]=\"index > 0 ? '2rem' : 0\">\r\n <tbody fd-table-body>\r\n @for (column of columns; track column) {\r\n <tr fd-table-row>\r\n <th fd-table-cell>\r\n <strong>{{ column.Alias }}:</strong>\r\n </th>\r\n @for (mo of children; track mo; let index = $index) {\r\n <td\r\n fd-table-cell\r\n #tdEl\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [hostEl]=\"tdEl\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [dbName]=\"column.Name\"\r\n >\r\n <bsu-column-renderer\r\n [mo]=\"mo\"\r\n [column]=\"column\"\r\n [value]=\"column | columnValue: mo | bbbTranslate\"\r\n [icon]=\"column | columnIcon: mo\"\r\n [editMode]=\"false\"\r\n [isChecked]=\"false\"\r\n [isNewInlineMo]=\"false\"\r\n [index]=\"index\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [formLayoutShowLabel]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n ></bsu-column-renderer>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "deviceName", "deviceSize", "value", "icon"] }, { kind: "directive", type: i2$1.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i3$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i3$6.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i3$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i3$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "pipe", type: i1$1.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1$1.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i1$1.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1953
+ }
1954
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TableViewVerticalColumnsComponent, decorators: [{
1955
+ type: Component,
1956
+ args: [{ selector: 'bdc-table-view-vertical-columns', changeDetection: ChangeDetectionStrategy.OnPush, template: "@for (mo of moDataList | multipleGroupBy: groupby; track mo; let index = $index) { @if (mo.$Group) {\r\n<h3>{{ mo.$Group }}</h3>\r\n<ng-container *ngTemplateOutlet=\"tplTable; context: { $implicit: mo.$Children, index: this.index }\"></ng-container>\r\n} }\r\n<ng-template #tplTable let-children let-index=\"index\">\r\n <table fd-table [style.margin-top]=\"index > 0 ? '2rem' : 0\">\r\n <tbody fd-table-body>\r\n @for (column of columns; track column) {\r\n <tr fd-table-row>\r\n <th fd-table-cell>\r\n <strong>{{ column.Alias }}:</strong>\r\n </th>\r\n @for (mo of children; track mo; let index = $index) {\r\n <td\r\n fd-table-cell\r\n #tdEl\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [hostEl]=\"tdEl\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [dbName]=\"column.Name\"\r\n >\r\n <bsu-column-renderer\r\n [mo]=\"mo\"\r\n [column]=\"column\"\r\n [value]=\"column | columnValue: mo | bbbTranslate\"\r\n [icon]=\"column | columnIcon: mo\"\r\n [editMode]=\"false\"\r\n [isChecked]=\"false\"\r\n [isNewInlineMo]=\"false\"\r\n [index]=\"index\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [formLayoutShowLabel]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n ></bsu-column-renderer>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n" }]
1957
+ }] });
1958
+
1959
+ class QueryStringObservableComponent extends FieldBaseComponent {
1960
+ ngOnInit() {
1961
+ super.ngOnInit();
1962
+ this._activatedRoute.queryParams.subscribe((queryParams) => {
1963
+ const value = queryParams[this.Setting.ControlName];
1964
+ if (value) {
1965
+ this.value = value;
1966
+ this.valueChange.emit(this.value);
1967
+ }
1968
+ });
1969
+ }
1970
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: QueryStringObservableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1971
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: QueryStringObservableComponent, selector: "bdc-query-string-observable", usesInheritance: true, ngImport: i0, template: "", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1972
+ }
1973
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: QueryStringObservableComponent, decorators: [{
1974
+ type: Component,
1975
+ args: [{ selector: 'bdc-query-string-observable', changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
1976
+ }] });
1977
+
1978
+ class QueryStringFormObservableComponent extends BaseComponent {
1979
+ constructor(_activatedRoute, _router, _portalService) {
1980
+ super();
1981
+ this._activatedRoute = _activatedRoute;
1982
+ this._router = _router;
1983
+ this._portalService = _portalService;
1984
+ }
1985
+ ngOnInit() {
1986
+ super.ngOnInit();
1987
+ this._portalService.navigationEnd$.pipe(takeUntil$1(this._onDestroy$)).subscribe((event) => {
1988
+ if (event?.url.endsWith('/query')) {
1989
+ this._router.navigate(['../']);
1990
+ }
1991
+ });
1992
+ const params = this._activatedRoute.snapshot.queryParams;
1993
+ const strActionList = params['actionList'];
1994
+ if (strActionList) {
1995
+ const actionList = JSON.parse(strActionList.replaceAll("'", '"'));
1996
+ if (actionList) {
1997
+ BarsaApi.Ul.WorkflowPanelCtrlr.RunWorkflowActionList(actionList, null);
1998
+ }
1999
+ }
2000
+ }
2001
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: QueryStringFormObservableComponent, deps: [{ token: i4$4.ActivatedRoute }, { token: i4$4.Router }, { token: i1$1.PortalService }], target: i0.ɵɵFactoryTarget.Component }); }
2002
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: QueryStringFormObservableComponent, selector: "bdc-query-string-form-observable", usesInheritance: true, ngImport: i0, template: "", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2003
+ }
2004
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: QueryStringFormObservableComponent, decorators: [{
2005
+ type: Component,
2006
+ args: [{ selector: 'bdc-query-string-form-observable', changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
2007
+ }], ctorParameters: () => [{ type: i4$4.ActivatedRoute }, { type: i4$4.Router }, { type: i1$1.PortalService }] });
2008
+
2009
+ class G4bDetailsComponent extends BaseItemContentPropsComponent {
2010
+ ngOnInit() {
2011
+ super.ngOnInit();
2012
+ this._containerRef.createEmbeddedView(this.setting.$detailsFormItems, {
2013
+ $implicit: this.setting.$detailsColumns,
2014
+ mo: this.mo,
2015
+ inlineEditMode: this.inlineEditMode,
2016
+ isNewInlineMo: this.isNewInlineMo,
2017
+ layout94: this.layout94$
2018
+ });
2019
+ }
2020
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: G4bDetailsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2021
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: G4bDetailsComponent, selector: "bdc-g4b-details", viewQueries: [{ propertyName: "_containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div #container></div>\r\n<!-- <fd-info-label [label]=\"'\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\" [color]=\"'1'\" [title]=\"'\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\"></fd-info-label> -->\r\n<div fd-form-item class=\"status-wrapper\" style=\"width: 100%; padding-bottom: 1rem\" [attr.deviceSize]=\"deviceSize\">\r\n <label fd-form-label>\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A </label>\r\n <fd-micro-process-flow class=\"flow\">\r\n <fd-micro-process-flow-item [state]=\"'positive'\">\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'accept'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <!-- <h4 fd-title class=\"fd-object-number--informative\">\u0634\u0631\u0648\u0639 \u062F\u0631\u062E\u0648\u0627\u0633\u062A</h4> -->\r\n <button\r\n style=\"pointer-events: none; border: none\"\r\n fd-button\r\n [fdType]=\"'positive'\"\r\n [label]=\"'\u0634\u0631\u0648\u0639 \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\"\r\n [glyph]=\"'accept'\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <button fd-button [fdType]=\"'standard'\" [label]=\"'\u062A\u06A9\u0645\u06CC\u0644 \u0645\u062F\u0627\u0631\u06A9 \u062A\u0648\u0633\u0637 \u0645\u062A\u0642\u0627\u0636\u06CC'\" [glyph]=\"''\"></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'less'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <button\r\n [disabled]=\"true\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0645\u062F\u0627\u0631\u06A9 \u062A\u0648\u0633\u0637 \u062F\u0633\u062A\u06AF\u0627\u0647 \u0645\u0631\u0628\u0648\u0637\u0647'\"\r\n [glyph]=\"''\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'less'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <button\r\n [disabled]=\"true\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'\u062A\u0639\u06CC\u06CC\u0646 \u0648\u0636\u0639\u06CC\u062A \u0635\u062F\u0648\u0631 \u0645\u062C\u0648\u0632'\"\r\n [glyph]=\"''\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n </fd-micro-process-flow>\r\n</div>\r\n", styles: [".showdetails .form-items{display:flex;justify-content:flex-start;padding:0 1rem 1rem;width:100%;column-gap:2rem}.showdetails .form-items .fd-form-item bsu-column-renderer{font-size:1.275rem}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}fd-info-label{font-size:1rem;width:auto;height:2rem;line-height:2rem}fd-info-label ::ng-deep span{line-height:2rem!important}.status-wrapper[deviceSize=m]{width:600px!important}.status-wrapper[deviceSize=s]{width:380px!important}\n"], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6$1.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i6$1.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i3$2.MicroProcessFlowComponent, selector: "fd-micro-process-flow", inputs: ["independentSteps", "transitionSpeed", "transitionTimingFunction"] }, { kind: "component", type: i3$2.MicroProcessFlowItemComponent, selector: "fd-micro-process-flow-item", inputs: ["state", "intermediate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2022
+ }
2023
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: G4bDetailsComponent, decorators: [{
2024
+ type: Component,
2025
+ args: [{ selector: 'bdc-g4b-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #container></div>\r\n<!-- <fd-info-label [label]=\"'\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\" [color]=\"'1'\" [title]=\"'\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\"></fd-info-label> -->\r\n<div fd-form-item class=\"status-wrapper\" style=\"width: 100%; padding-bottom: 1rem\" [attr.deviceSize]=\"deviceSize\">\r\n <label fd-form-label>\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A </label>\r\n <fd-micro-process-flow class=\"flow\">\r\n <fd-micro-process-flow-item [state]=\"'positive'\">\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'accept'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <!-- <h4 fd-title class=\"fd-object-number--informative\">\u0634\u0631\u0648\u0639 \u062F\u0631\u062E\u0648\u0627\u0633\u062A</h4> -->\r\n <button\r\n style=\"pointer-events: none; border: none\"\r\n fd-button\r\n [fdType]=\"'positive'\"\r\n [label]=\"'\u0634\u0631\u0648\u0639 \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\"\r\n [glyph]=\"'accept'\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <button fd-button [fdType]=\"'standard'\" [label]=\"'\u062A\u06A9\u0645\u06CC\u0644 \u0645\u062F\u0627\u0631\u06A9 \u062A\u0648\u0633\u0637 \u0645\u062A\u0642\u0627\u0636\u06CC'\" [glyph]=\"''\"></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'less'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <button\r\n [disabled]=\"true\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0645\u062F\u0627\u0631\u06A9 \u062A\u0648\u0633\u0637 \u062F\u0633\u062A\u06AF\u0627\u0647 \u0645\u0631\u0628\u0648\u0637\u0647'\"\r\n [glyph]=\"''\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'less'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <button\r\n [disabled]=\"true\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'\u062A\u0639\u06CC\u06CC\u0646 \u0648\u0636\u0639\u06CC\u062A \u0635\u062F\u0648\u0631 \u0645\u062C\u0648\u0632'\"\r\n [glyph]=\"''\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n </fd-micro-process-flow>\r\n</div>\r\n", styles: [".showdetails .form-items{display:flex;justify-content:flex-start;padding:0 1rem 1rem;width:100%;column-gap:2rem}.showdetails .form-items .fd-form-item bsu-column-renderer{font-size:1.275rem}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}fd-info-label{font-size:1rem;width:auto;height:2rem;line-height:2rem}fd-info-label ::ng-deep span{line-height:2rem!important}.status-wrapper[deviceSize=m]{width:600px!important}.status-wrapper[deviceSize=s]{width:380px!important}\n"] }]
2026
+ }], propDecorators: { _containerRef: [{
2027
+ type: ViewChild,
2028
+ args: ['container', { static: true, read: ViewContainerRef }]
2029
+ }] } });
2030
+
2031
+ class AvatarComponent extends BaseItemContentPropsComponent {
2032
+ ngOnInit() {
2033
+ super.ngOnInit();
2034
+ this._setProps(this.mo);
2035
+ }
2036
+ ngOnChanges(changes) {
2037
+ const { mo } = changes;
2038
+ if (mo && !mo.firstChange) {
2039
+ this._setProps(mo.currentValue);
2040
+ this._cdr.detectChanges();
2041
+ }
2042
+ }
2043
+ _setProps(mo) {
2044
+ this.pictureId = this.mo[this.parameters.FieldName]?.FileId;
2045
+ }
2046
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: AvatarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2047
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: AvatarComponent, selector: "bdc-avatar", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-card>\r\n <fd-card-header>\r\n <fd-avatar\r\n [placeholder]=\"!mo[parameters.FieldName]\"\r\n [size]=\"'xs'\"\r\n [glyph]=\"parameters.DefaultIcon || null\"\r\n [circle]=\"parameters.Circle\"\r\n [placeHolder]=\"parameters.DefaultIcon!!\"\r\n [image]=\"pictureId ? (pictureId | picFieldSrc: 'PictureFileInfo':mo.Id:column.FieldDefId) : null\"\r\n alterIcon=\"alt|content|backup|default-icon\"\r\n ></fd-avatar>\r\n <h2 fd-card-title>\r\n {{ column.Name | val: mo:true | bbbTranslate }}\r\n </h2>\r\n <h3 fd-card-subtitle>{{ parameters.Subtitle | rval: mo:allColumns:true | bbbTranslate }}</h3>\r\n </fd-card-header>\r\n</fd-card>\r\n", styles: [":host{display:flex;align-items:flex-start;column-gap:5px;padding:3px 0}.avatar-data{display:flex;flex-direction:column;row-gap:5px}fd-card{border:none;box-shadow:none;background:transparent!important}fd-card-header{padding:.2rem 0!important;border:none!important;background:transparent!important}fd-card-header:hover{background:transparent!important}fd-card,fd-card-header{cursor:default;font-weight:inherit!important}fd-card:focus:before,fd-card-header:focus:before{border:none!important}fd-card ::ng-deep .fd-card__title-area,fd-card ::ng-deep .fd-card__header-text,fd-card ::ng-deep .fd-card__subtitle-area,fd-card ::ng-deep h2,fd-card ::ng-deep h3,fd-card-header ::ng-deep .fd-card__title-area,fd-card-header ::ng-deep .fd-card__header-text,fd-card-header ::ng-deep .fd-card__subtitle-area,fd-card-header ::ng-deep h2,fd-card-header ::ng-deep h3{font-weight:inherit!important}fd-card-header{padding:0!important;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1$1.PlaceHolderDirective, selector: "[placeHolder]", inputs: ["placeHolder"] }, { kind: "component", type: i3$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4$3.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i4$3.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "directive", type: i4$3.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i4$3.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "pipe", type: i1$1.MoValuePipe, name: "val" }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2048
+ }
2049
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: AvatarComponent, decorators: [{
2050
+ type: Component,
2051
+ args: [{ selector: 'bdc-avatar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card>\r\n <fd-card-header>\r\n <fd-avatar\r\n [placeholder]=\"!mo[parameters.FieldName]\"\r\n [size]=\"'xs'\"\r\n [glyph]=\"parameters.DefaultIcon || null\"\r\n [circle]=\"parameters.Circle\"\r\n [placeHolder]=\"parameters.DefaultIcon!!\"\r\n [image]=\"pictureId ? (pictureId | picFieldSrc: 'PictureFileInfo':mo.Id:column.FieldDefId) : null\"\r\n alterIcon=\"alt|content|backup|default-icon\"\r\n ></fd-avatar>\r\n <h2 fd-card-title>\r\n {{ column.Name | val: mo:true | bbbTranslate }}\r\n </h2>\r\n <h3 fd-card-subtitle>{{ parameters.Subtitle | rval: mo:allColumns:true | bbbTranslate }}</h3>\r\n </fd-card-header>\r\n</fd-card>\r\n", styles: [":host{display:flex;align-items:flex-start;column-gap:5px;padding:3px 0}.avatar-data{display:flex;flex-direction:column;row-gap:5px}fd-card{border:none;box-shadow:none;background:transparent!important}fd-card-header{padding:.2rem 0!important;border:none!important;background:transparent!important}fd-card-header:hover{background:transparent!important}fd-card,fd-card-header{cursor:default;font-weight:inherit!important}fd-card:focus:before,fd-card-header:focus:before{border:none!important}fd-card ::ng-deep .fd-card__title-area,fd-card ::ng-deep .fd-card__header-text,fd-card ::ng-deep .fd-card__subtitle-area,fd-card ::ng-deep h2,fd-card ::ng-deep h3,fd-card-header ::ng-deep .fd-card__title-area,fd-card-header ::ng-deep .fd-card__header-text,fd-card-header ::ng-deep .fd-card__subtitle-area,fd-card-header ::ng-deep h2,fd-card-header ::ng-deep h3{font-weight:inherit!important}fd-card-header{padding:0!important;align-items:center}\n"] }]
2052
+ }] });
2053
+
2054
+ class G4bEstelamComponent extends BaseItemContentPropsComponent {
2055
+ constructor() {
2056
+ super(...arguments);
2057
+ this.natijeh = 1;
2058
+ this.options = ['رد استعلام', 'تایید استعلام', 'در انتظار پاسخ'];
2059
+ }
2060
+ ngOnInit() {
2061
+ super.ngOnInit();
2062
+ }
2063
+ onClick(e) {
2064
+ if (this.isChecked) {
2065
+ e.stopPropagation();
2066
+ e.preventDefault();
2067
+ }
2068
+ }
2069
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: G4bEstelamComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2070
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: G4bEstelamComponent, selector: "bdc-g4b-estelam", usesInheritance: true, ngImport: i0, template: "<div fd-form-item class=\"textarea\">\r\n <label fd-form-label for=\"input-2\">\u067E\u0627\u0633\u062E \u0627\u0633\u062A\u0639\u0644\u0627\u0645</label>\r\n <textarea fd-form-control style=\"height: 1.8rem\"></textarea>\r\n</div>\r\n\r\n<div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-segmented-button [(ngModel)]=\"natijeh\" (click)=\"onClick($event)\">\r\n <button fd-button [label]=\"'\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u067E\u0627\u0633\u062E'\" value=\"1\" [fdType]=\"'standard'\"></button>\r\n <button fd-button [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"2\" [fdType]=\"'positive'\"></button>\r\n <button fd-button [label]=\"'\u0631\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"3\" [fdType]=\"'negative'\"></button>\r\n </fd-segmented-button>\r\n</div>\r\n<!-- <div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-select placeholder=\"Select value\" stateMessage=\"Success message\" state=\"success\">\r\n <li fd-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</li>\r\n </fd-select>\r\n</div> -->\r\n", styles: [":host{display:flex;column-gap:1rem;padding:1rem 0}fd-segmented-button{margin:.1875rem 0}.textarea{flex-grow:1}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6$1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i6$1.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i6$1.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i3$1.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle", "vertical"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2071
+ }
2072
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: G4bEstelamComponent, decorators: [{
2073
+ type: Component,
2074
+ args: [{ selector: 'bdc-g4b-estelam', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div fd-form-item class=\"textarea\">\r\n <label fd-form-label for=\"input-2\">\u067E\u0627\u0633\u062E \u0627\u0633\u062A\u0639\u0644\u0627\u0645</label>\r\n <textarea fd-form-control style=\"height: 1.8rem\"></textarea>\r\n</div>\r\n\r\n<div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-segmented-button [(ngModel)]=\"natijeh\" (click)=\"onClick($event)\">\r\n <button fd-button [label]=\"'\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u067E\u0627\u0633\u062E'\" value=\"1\" [fdType]=\"'standard'\"></button>\r\n <button fd-button [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"2\" [fdType]=\"'positive'\"></button>\r\n <button fd-button [label]=\"'\u0631\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"3\" [fdType]=\"'negative'\"></button>\r\n </fd-segmented-button>\r\n</div>\r\n<!-- <div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-select placeholder=\"Select value\" stateMessage=\"Success message\" state=\"success\">\r\n <li fd-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</li>\r\n </fd-select>\r\n</div> -->\r\n", styles: [":host{display:flex;column-gap:1rem;padding:1rem 0}fd-segmented-button{margin:.1875rem 0}.textarea{flex-grow:1}\n"] }]
2075
+ }] });
2076
+
2077
+ class TimerCountDownComponent extends FieldBaseComponent {
2078
+ ngOnInit() {
2079
+ super.ngOnInit();
2080
+ this._setCountDown(this.value);
2081
+ }
2082
+ _setValue(value) {
2083
+ super._setValue(value);
2084
+ this._setCountDown(value);
2085
+ }
2086
+ _setCountDown(value) {
2087
+ const keysInValue = Object.keys(value);
2088
+ let _tempValue = value;
2089
+ if (keysInValue.length) {
2090
+ const findKeyDate = keysInValue.find((c) => !isNaN(Date.parse(value[c])));
2091
+ if (findKeyDate) {
2092
+ _tempValue = new Date(value[findKeyDate]);
2093
+ }
2094
+ }
2095
+ const exp = this._dateService.getMoment(_tempValue);
2096
+ if (this._interval) {
2097
+ clearInterval(this._interval);
2098
+ this._interval = null;
2099
+ }
2100
+ this._interval = setInterval(() => {
2101
+ const now = this._dateService.getMoment(new Date());
2102
+ const diffDuration = this._dateService.duration(exp.diff(now));
2103
+ const month = diffDuration.months();
2104
+ const days = diffDuration.days();
2105
+ const hours = diffDuration.hours().toLocaleString('en-US', {
2106
+ minimumIntegerDigits: 2,
2107
+ useGrouping: false
2108
+ });
2109
+ const minutes = diffDuration.minutes().toLocaleString('en-US', {
2110
+ minimumIntegerDigits: 2,
2111
+ useGrouping: false
2112
+ });
2113
+ const seconds = diffDuration.seconds().toLocaleString('en-US', {
2114
+ minimumIntegerDigits: 2,
2115
+ useGrouping: false
2116
+ });
2117
+ this.countDownText = `
2118
+ ${this._getMonthText(month)}
2119
+ ${this._daysText(days)}
2120
+ ${this._getTimeText(hours, minutes, seconds)}`;
2121
+ this._cdr.detectChanges();
2122
+ }, 1000);
2123
+ }
2124
+ _getMonthText(month) {
2125
+ return month > 0 ? `${month} ماه` : '';
2126
+ }
2127
+ _daysText(days) {
2128
+ return days > 0 ? `${days} روز` : '';
2129
+ }
2130
+ _getTimeText(hours, minutes, seconds) {
2131
+ if (hours < 0 || minutes < 0 || seconds < 0) {
2132
+ if (this.parameters?.ExpireViewMode) {
2133
+ switch (this.parameters.ExpireViewMode) {
2134
+ case 1:
2135
+ return `00:00:00`;
2136
+ break;
2137
+ case 2:
2138
+ return `پایان یافته`;
2139
+ break;
2140
+ case 3:
2141
+ return '';
2142
+ break;
2143
+ case 4: // نمایش زمان گذشته
2144
+ return `${hours}:${minutes}:${seconds}`;
2145
+ break;
2146
+ }
2147
+ }
2148
+ return `00:00:00`;
2149
+ }
2150
+ return `${hours}:${minutes}:${seconds}`;
2151
+ }
2152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TimerCountDownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TimerCountDownComponent, selector: "bdc-timer-count-down", providers: [
2154
+ {
2155
+ provide: DateService,
2156
+ useFactory: getDateService,
2157
+ deps: [LogService]
2158
+ }
2159
+ ], usesInheritance: true, ngImport: i0, template: "<span>{{ countDownText }}</span>\r\n", styles: [":host{display:block;width:110px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2160
+ }
2161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TimerCountDownComponent, decorators: [{
2162
+ type: Component,
2163
+ args: [{ selector: 'bdc-timer-count-down', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2164
+ {
2165
+ provide: DateService,
2166
+ useFactory: getDateService,
2167
+ deps: [LogService]
2168
+ }
2169
+ ], template: "<span>{{ countDownText }}</span>\r\n", styles: [":host{display:block;width:110px}\n"] }]
2170
+ }] });
2171
+
2172
+ class MicroProccessFlowComponent extends BaseComponent {
2173
+ /**
2174
+ *
2175
+ */
2176
+ constructor(_el) {
2177
+ super();
2178
+ this._el = _el;
2179
+ this.selectedChange = new EventEmitter();
2180
+ }
2181
+ ngOnInit() {
2182
+ super.ngOnInit();
2183
+ this._setIndex(this.selected, this.items);
2184
+ this.maxWidth = this._el.nativeElement.offsetWidth;
2185
+ }
2186
+ onItemClick(item) {
2187
+ this.selectedChange.emit(item);
2188
+ }
2189
+ ngOnChanges(changes) {
2190
+ const { selected, items } = changes;
2191
+ if (selected && !selected.firstChange) {
2192
+ this._setIndex(selected.currentValue, this.items);
2193
+ }
2194
+ else if (items && !items.firstChange) {
2195
+ this._setIndex(this.selected, items.currentValue);
2196
+ }
2197
+ }
2198
+ _setIndex(val, items) {
2199
+ this.selectedIndex = items.findIndex((c) => (this.idIskey ? c.id === val : c.label === val));
2200
+ }
2201
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: MicroProccessFlowComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
2202
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: MicroProccessFlowComponent, selector: "bdc-micro-proccess-flow", inputs: { items: "items", selected: "selected", readonly: "readonly", idIskey: "idIskey" }, outputs: { selectedChange: "selectedChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-micro-process-flow class=\"flow\" [style.max-width.px]=\"maxWidth\">\r\n @for (item of items; track item; let i = $index) {\r\n <fd-micro-process-flow-item [state]=\"i <= selectedIndex ? 'positive' : 'none'\">\r\n <div class=\"flow-item\">\r\n @if (selectedIndex > -1) {\r\n <button\r\n [class.reached]=\"i <= selectedIndex\"\r\n fd-button\r\n [fdType]=\"i <= selectedIndex ? 'positive' : i === selectedIndex + 1 ? 'standard' : 'transparent'\"\r\n [label]=\"item.label\"\r\n [glyph]=\"i <= selectedIndex ? 'accept' : null\"\r\n [disabled]=\"readonly || (i > selectedIndex + 1 && selectedIndex > -1)\"\r\n (click)=\"onItemClick(item)\"\r\n ></button>\r\n } @if (selectedIndex === -1) {\r\n <button\r\n [class.reached]=\"false\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"item.label\"\r\n [glyph]=\"null\"\r\n [disabled]=\"readonly\"\r\n (click)=\"onItemClick(item)\"\r\n ></button>\r\n }\r\n </div>\r\n </fd-micro-process-flow-item>\r\n }\r\n</fd-micro-process-flow>\r\n", styles: [":host{display:block}.reached{pointer-events:none;border:none}\n"], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3$2.MicroProcessFlowComponent, selector: "fd-micro-process-flow", inputs: ["independentSteps", "transitionSpeed", "transitionTimingFunction"] }, { kind: "component", type: i3$2.MicroProcessFlowItemComponent, selector: "fd-micro-process-flow-item", inputs: ["state", "intermediate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2203
+ }
2204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: MicroProccessFlowComponent, decorators: [{
2205
+ type: Component,
2206
+ args: [{ selector: 'bdc-micro-proccess-flow', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-micro-process-flow class=\"flow\" [style.max-width.px]=\"maxWidth\">\r\n @for (item of items; track item; let i = $index) {\r\n <fd-micro-process-flow-item [state]=\"i <= selectedIndex ? 'positive' : 'none'\">\r\n <div class=\"flow-item\">\r\n @if (selectedIndex > -1) {\r\n <button\r\n [class.reached]=\"i <= selectedIndex\"\r\n fd-button\r\n [fdType]=\"i <= selectedIndex ? 'positive' : i === selectedIndex + 1 ? 'standard' : 'transparent'\"\r\n [label]=\"item.label\"\r\n [glyph]=\"i <= selectedIndex ? 'accept' : null\"\r\n [disabled]=\"readonly || (i > selectedIndex + 1 && selectedIndex > -1)\"\r\n (click)=\"onItemClick(item)\"\r\n ></button>\r\n } @if (selectedIndex === -1) {\r\n <button\r\n [class.reached]=\"false\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"item.label\"\r\n [glyph]=\"null\"\r\n [disabled]=\"readonly\"\r\n (click)=\"onItemClick(item)\"\r\n ></button>\r\n }\r\n </div>\r\n </fd-micro-process-flow-item>\r\n }\r\n</fd-micro-process-flow>\r\n", styles: [":host{display:block}.reached{pointer-events:none;border:none}\n"] }]
2207
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { items: [{
2208
+ type: Input
2209
+ }], selected: [{
2210
+ type: Input
2211
+ }], readonly: [{
2212
+ type: Input
2213
+ }], idIskey: [{
2214
+ type: Input
2215
+ }], selectedChange: [{
2216
+ type: Output
2217
+ }] } });
2218
+
2219
+ class MoListToFlowItemPipe {
2220
+ constructor() { }
2221
+ transform(moList) {
2222
+ const flowItems = moList.map((item) => ({
2223
+ icon: '',
2224
+ id: item.Id,
2225
+ label: item.$Caption
2226
+ }));
2227
+ return flowItems;
2228
+ }
2229
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: MoListToFlowItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2230
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: MoListToFlowItemPipe, name: "moListToFlowItem" }); }
2231
+ }
2232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: MoListToFlowItemPipe, decorators: [{
2233
+ type: Pipe,
2234
+ args: [{
2235
+ name: 'moListToFlowItem'
2236
+ }]
2237
+ }], ctorParameters: () => [] });
2238
+
2239
+ class MoInfoMicroProccessFlowComponent extends UiMoInfoUlvComboComponent {
2240
+ ngOnInit() {
2241
+ super.ngOnInit();
2242
+ this._triggerClick('Normal');
2243
+ }
2244
+ onSelectedChange(item) {
2245
+ this._raiseValueChanged(item.label);
2246
+ }
2247
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: MoInfoMicroProccessFlowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2248
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: MoInfoMicroProccessFlowComponent, selector: "bdc-mo-info-micro-proccess-flow", usesInheritance: true, ngImport: i0, template: "<bdc-micro-proccess-flow\r\n [items]=\"\r\n (loading$ | async) === true\r\n | moInfoUlvMoList\r\n : isDataLoadedFirstTime\r\n : ulvAdapter?.Setting?.Data?.MoDataList\r\n : UlvUi?.Setting?.Data?.MoDataList\r\n : ulvAdapter?.Setting?.Data?.Paging\r\n : UlvUi?.Setting?.Data?.Paging\r\n | moListToFlowItem\r\n \"\r\n [selected]=\"value\"\r\n (selectedChange)=\"onSelectedChange($event)\"\r\n></bdc-micro-proccess-flow>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: MicroProccessFlowComponent, selector: "bdc-micro-proccess-flow", inputs: ["items", "selected", "readonly", "idIskey"], outputs: ["selectedChange"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.MoInfoUlvMoListPipe, name: "moInfoUlvMoList" }, { kind: "pipe", type: MoListToFlowItemPipe, name: "moListToFlowItem" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2249
+ }
2250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: MoInfoMicroProccessFlowComponent, decorators: [{
2251
+ type: Component,
2252
+ args: [{ selector: 'bdc-mo-info-micro-proccess-flow', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bdc-micro-proccess-flow\r\n [items]=\"\r\n (loading$ | async) === true\r\n | moInfoUlvMoList\r\n : isDataLoadedFirstTime\r\n : ulvAdapter?.Setting?.Data?.MoDataList\r\n : UlvUi?.Setting?.Data?.MoDataList\r\n : ulvAdapter?.Setting?.Data?.Paging\r\n : UlvUi?.Setting?.Data?.Paging\r\n | moListToFlowItem\r\n \"\r\n [selected]=\"value\"\r\n (selectedChange)=\"onSelectedChange($event)\"\r\n></bdc-micro-proccess-flow>\r\n", styles: [":host{display:block}\n"] }]
2253
+ }] });
2254
+
2255
+ class DataSourceToFlowItemPipe {
2256
+ constructor() { }
2257
+ transform(datasource) {
2258
+ const flowItems = datasource.map((item) => ({
2259
+ icon: '',
2260
+ id: item.id,
2261
+ label: item.txt
2262
+ }));
2263
+ return flowItems;
2264
+ }
2265
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: DataSourceToFlowItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2266
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: DataSourceToFlowItemPipe, name: "datasourceToFlowItem" }); }
2267
+ }
2268
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: DataSourceToFlowItemPipe, decorators: [{
2269
+ type: Pipe,
2270
+ args: [{
2271
+ name: 'datasourceToFlowItem'
2272
+ }]
2273
+ }], ctorParameters: () => [] });
2274
+
2275
+ class EnumInfoMicroProccessFlowComponent extends UiSimpleComboComponent {
2276
+ onSelectedChange(item) {
2277
+ this._handleValueChange(item.id);
2278
+ }
2279
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: EnumInfoMicroProccessFlowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2280
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: EnumInfoMicroProccessFlowComponent, selector: "bdc-enum-info-micro-proccess-flow", usesInheritance: true, ngImport: i0, template: "<bdc-micro-proccess-flow\r\n [items]=\"context.store.data[context.store.root] | datasourceToFlowItem\"\r\n [selected]=\"value\"\r\n [idIskey]=\"true\"\r\n [readonly]=\"(disableOrReadonly$ | async) === true\"\r\n (selectedChange)=\"onSelectedChange($event)\"\r\n></bdc-micro-proccess-flow>\r\n", styles: [""], dependencies: [{ kind: "component", type: MicroProccessFlowComponent, selector: "bdc-micro-proccess-flow", inputs: ["items", "selected", "readonly", "idIskey"], outputs: ["selectedChange"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: DataSourceToFlowItemPipe, name: "datasourceToFlowItem" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2281
+ }
2282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: EnumInfoMicroProccessFlowComponent, decorators: [{
2283
+ type: Component,
2284
+ args: [{ selector: 'bdc-enum-info-micro-proccess-flow', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bdc-micro-proccess-flow\r\n [items]=\"context.store.data[context.store.root] | datasourceToFlowItem\"\r\n [selected]=\"value\"\r\n [idIskey]=\"true\"\r\n [readonly]=\"(disableOrReadonly$ | async) === true\"\r\n (selectedChange)=\"onSelectedChange($event)\"\r\n></bdc-micro-proccess-flow>\r\n" }]
2285
+ }] });
2286
+
2287
+ class UiPicturesCarouselComponent extends UiPicturesInfoComponent {
2288
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiPicturesCarouselComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2289
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiPicturesCarouselComponent, selector: "bdc-ui-pictures-carousel", providers: [UploadService], usesInheritance: true, ngImport: i0, template: "@if (mediaData$ | async; as mediaData) {\r\n<fd-carousel carouselIndicatorsOrientation=\"top\" width=\"100%\">\r\n @for (media of mediaData; track media; let i = $index) {\r\n <fd-carousel-item>\r\n <img [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\r\n </fd-carousel-item>\r\n }\r\n</fd-carousel>\r\n} @else {\r\n<div style=\"width: 100%; position: relative\">\r\n <bsu-mask></bsu-mask>\r\n</div>\r\n}\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "component", type: i2$1.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3$b.CarouselComponent, selector: "fd-carousel", inputs: ["id", "ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "pageIndicatorsOrientation", "height", "width", "loop", "navigation", "navigatorInPageIndicator", "numericIndicator", "pageIndicatorContainer", "pageIndicator", "resourceStrings", "slideTransitionDuration", "swipeEnabled", "vertical", "noPaginationContainerBorder", "contentBackground", "pageIndicatorBackground", "visibleSlidesCount"], outputs: ["slideChange"] }, { kind: "component", type: i3$b.CarouselItemComponent, selector: "fd-carousel-item", inputs: ["id", "ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "loading", "title", "initialHeight", "initialWidth", "value"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2290
+ }
2291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiPicturesCarouselComponent, decorators: [{
2292
+ type: Component,
2293
+ args: [{ selector: 'bdc-ui-pictures-carousel', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (mediaData$ | async; as mediaData) {\r\n<fd-carousel carouselIndicatorsOrientation=\"top\" width=\"100%\">\r\n @for (media of mediaData; track media; let i = $index) {\r\n <fd-carousel-item>\r\n <img [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\r\n </fd-carousel-item>\r\n }\r\n</fd-carousel>\r\n} @else {\r\n<div style=\"width: 100%; position: relative\">\r\n <bsu-mask></bsu-mask>\r\n</div>\r\n}\r\n" }]
2294
+ }] });
2295
+
2296
+ class UiNumRateComponent extends FieldBaseComponent {
2297
+ onRatingChanged(val) {
2298
+ this.value = val;
2299
+ this.valueChange.emit(this.value);
2300
+ }
2301
+ _setValue(val) {
2302
+ if (typeof val === 'string') {
2303
+ if (isNaN(+val[0])) {
2304
+ val = val.substring(1, val.length);
2305
+ }
2306
+ if (isNaN(+val)) {
2307
+ return;
2308
+ }
2309
+ }
2310
+ super._setValue(val);
2311
+ }
2312
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiNumRateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2313
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: UiNumRateComponent, selector: "bdc-ui-num-rate", usesInheritance: true, ngImport: i0, template: "<fd-rating-indicator\r\n [ariaLabel]=\"Setting.NullText || ''\"\r\n [size]=\"parameters?.SizeValue$Caption\"\r\n [value]=\"value\"\r\n [disabled]=\"(disableOrReadonly$ | async) === true\"\r\n [displayMode]=\"parameters?.DisplayMode\"\r\n [dynamicTextIndicator]=\"parameters?.TextIndicator\"\r\n (ratingChanged)=\"onRatingChanged($event)\"\r\n></fd-rating-indicator>\r\n", styles: [":host{display:flex}\n"], dependencies: [{ kind: "component", type: i1$6.RatingIndicatorComponent, selector: "fd-rating-indicator", inputs: ["class", "name", "ariaLabel", "ariaLabelledBy", "disabled", "displayMode", "nonInteractive", "indicatorCapacity", "allowHalves", "value", "totalRatings", "ratingAverage", "ratings", "displayAllRatings", "ratedIcon", "unratedIcon", "size", "dynamicTextIndicator"], outputs: ["ratingChanged"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2314
+ }
2315
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiNumRateComponent, decorators: [{
2316
+ type: Component,
2317
+ args: [{ selector: 'bdc-ui-num-rate', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-rating-indicator\r\n [ariaLabel]=\"Setting.NullText || ''\"\r\n [size]=\"parameters?.SizeValue$Caption\"\r\n [value]=\"value\"\r\n [disabled]=\"(disableOrReadonly$ | async) === true\"\r\n [displayMode]=\"parameters?.DisplayMode\"\r\n [dynamicTextIndicator]=\"parameters?.TextIndicator\"\r\n (ratingChanged)=\"onRatingChanged($event)\"\r\n></fd-rating-indicator>\r\n", styles: [":host{display:flex}\n"] }]
2318
+ }] });
2319
+
2320
+ class MediaFileUploaderComponent extends UiPdfViewerComponent {
2321
+ constructor() {
2322
+ super(...arguments);
2323
+ this.isPlaying = false;
2324
+ this.displayControls = true;
2325
+ this.isRecording = false;
2326
+ this.audioConf = { audio: true };
2327
+ this.videoConf = { video: { facingMode: 'user', width: 320 }, audio: true };
2328
+ this.recordType = 'audio';
2329
+ }
2330
+ get video() {
2331
+ return this.videoElement?.nativeElement;
2332
+ }
2333
+ get fileInput() {
2334
+ return this.photoElement?.nativeElement;
2335
+ }
2336
+ ngOnInit() {
2337
+ super.ngOnInit();
2338
+ this._videoRecoder.recordingFailed().subscribe(() => {
2339
+ this.isRecording = false;
2340
+ this._cdr.detectChanges();
2341
+ });
2342
+ this._videoRecoder.getRecordedTime().subscribe((time) => {
2343
+ this.recordedTime = time;
2344
+ this._cdr.detectChanges();
2345
+ });
2346
+ this._videoRecoder.getStream().subscribe((stream) => {
2347
+ this.videoStream = stream;
2348
+ this._cdr.detectChanges();
2349
+ });
2350
+ this._videoRecoder.getRecordedBlob().subscribe((data) => {
2351
+ this.fileBlob = data.blob;
2352
+ this.fileName = data.title;
2353
+ this.valueUrl = this._domSanitizer.bypassSecurityTrustUrl(data.url);
2354
+ this._cdr.detectChanges();
2355
+ });
2356
+ this._audioRecorder.recordingFailed().subscribe(() => {
2357
+ this.isRecording = false;
2358
+ this._cdr.detectChanges();
2359
+ });
2360
+ this._audioRecorder.getRecordedTime().subscribe((time) => {
2361
+ this.recordedTime = time;
2362
+ this._cdr.detectChanges();
2363
+ });
2364
+ this._audioRecorder.getRecordedBlob().subscribe((data) => {
2365
+ this.fileBlob = data.blob;
2366
+ this.fileName = data.title;
2367
+ this.valueUrl = this._domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(data.blob));
2368
+ this._cdr.detectChanges();
2369
+ });
2370
+ let glyph = '';
2371
+ switch (this.recordType) {
2372
+ case 'audio':
2373
+ glyph = 'attachment-audio';
2374
+ break;
2375
+ case 'video':
2376
+ glyph = 'attachment-video';
2377
+ break;
2378
+ default:
2379
+ glyph = 'attachment-photo';
2380
+ break;
2381
+ }
2382
+ this.glyph = glyph;
2383
+ this.fileName = this.value?.FileName;
2384
+ this.recordType = this.parameters?.MediaType$Caption || 'audio';
2385
+ }
2386
+ onDelete() {
2387
+ super.onDelete();
2388
+ this.onClearRecord();
2389
+ }
2390
+ onClearRecord() {
2391
+ this.abortVideoRecording();
2392
+ this.abortAudioRecording();
2393
+ this.fileBlob = null;
2394
+ this.valueUrl = null;
2395
+ this._cdr.detectChanges();
2396
+ }
2397
+ onToggleRecord() {
2398
+ if (this.recordType === 'audio') {
2399
+ if (this.isRecording) {
2400
+ this.stopAudioRecording();
2401
+ }
2402
+ else {
2403
+ this.startAudioRecording();
2404
+ }
2405
+ }
2406
+ else if (this.recordType === 'video') {
2407
+ this.video.hidden = false;
2408
+ if (this.isRecording) {
2409
+ this.stopVideoRecording();
2410
+ }
2411
+ else {
2412
+ this.startVideoRecording();
2413
+ }
2414
+ }
2415
+ else if (this.recordType === 'photo') {
2416
+ }
2417
+ }
2418
+ onTakePhoto() {
2419
+ if (this.fileInput?.files?.length) {
2420
+ const file = this.fileInput.files.item(0);
2421
+ if (file) {
2422
+ this.fileName = file.name;
2423
+ this._uploadFile([file]).subscribe();
2424
+ }
2425
+ }
2426
+ }
2427
+ onUpload() {
2428
+ const videoFile = new File([this.fileBlob], this.fileName);
2429
+ this._uploadFile([videoFile]).subscribe();
2430
+ }
2431
+ startVideoRecording() {
2432
+ if (!this.isRecording) {
2433
+ this.video.controls = false;
2434
+ this.isRecording = true;
2435
+ this._videoRecoder
2436
+ .startRecording(this.videoConf)
2437
+ .then((stream) => {
2438
+ // this.video.src = window.URL.createObjectURL(stream);
2439
+ this.video.srcObject = stream;
2440
+ this.video.play();
2441
+ })
2442
+ .catch(function (err) {
2443
+ console.log(err.name + ': ' + err.message);
2444
+ });
2445
+ }
2446
+ }
2447
+ abortVideoRecording() {
2448
+ if (this.isRecording && this.recordType === 'video') {
2449
+ this.isRecording = false;
2450
+ this._videoRecoder.abortRecording();
2451
+ }
2452
+ if (this.video) {
2453
+ const video = this.video;
2454
+ video.controls = false;
2455
+ video.hidden = true;
2456
+ }
2457
+ }
2458
+ stopVideoRecording() {
2459
+ if (this.isRecording && this.recordType === 'video') {
2460
+ this._videoRecoder.stopRecording();
2461
+ const video = this.video;
2462
+ video.srcObject = this.valueUrl;
2463
+ video.controls = true;
2464
+ this.isRecording = false;
2465
+ }
2466
+ }
2467
+ clearVideoRecordedData() {
2468
+ this.valueUrl = null;
2469
+ const video = this.video;
2470
+ video.srcObject = null;
2471
+ video.controls = false;
2472
+ this._cdr.detectChanges();
2473
+ }
2474
+ downloadVideoRecordedData() {
2475
+ this._downloadFile(this.fileBlob, 'video/mp4', this.fileName);
2476
+ }
2477
+ startAudioRecording() {
2478
+ if (!this.isRecording) {
2479
+ this.isRecording = true;
2480
+ this._audioRecorder.startRecording();
2481
+ }
2482
+ }
2483
+ abortAudioRecording() {
2484
+ if (this.isRecording && this.recordType === 'audio') {
2485
+ this.isRecording = false;
2486
+ this._audioRecorder.abortRecording();
2487
+ }
2488
+ }
2489
+ stopAudioRecording() {
2490
+ if (this.isRecording && this.recordType === 'audio') {
2491
+ this._audioRecorder.stopRecording();
2492
+ this.isRecording = false;
2493
+ }
2494
+ }
2495
+ clearAudioRecordedData() {
2496
+ this.valueUrl = null;
2497
+ }
2498
+ downloadAudioRecordedData() {
2499
+ this._downloadFile(this.fileBlob, 'audio/mp3', this.fileName);
2500
+ }
2501
+ ngOnDestroy() {
2502
+ this.abortAudioRecording();
2503
+ }
2504
+ _downloadFile(data, type, filename) {
2505
+ const blob = new Blob([data], { type });
2506
+ const url = window.URL.createObjectURL(blob);
2507
+ // this.video.srcObject = stream;
2508
+ // const url = data;
2509
+ const anchor = document.createElement('a');
2510
+ anchor.download = filename;
2511
+ anchor.href = url;
2512
+ document.body.appendChild(anchor);
2513
+ anchor.click();
2514
+ document.body.removeChild(anchor);
2515
+ }
2516
+ _downloadFileIdCompleted(response) {
2517
+ super._downloadFileIdCompleted(response);
2518
+ if (this.valueUrl) {
2519
+ if (this.recordType === 'video') {
2520
+ this.video.controls = true;
2521
+ }
2522
+ }
2523
+ }
2524
+ _refresh(_) {
2525
+ if (BarsaApi.Ext.isEmpty(this.value)) {
2526
+ return;
2527
+ }
2528
+ const fileId = this.value.Id;
2529
+ this.DownloadFileId(fileId, true, '', null, false);
2530
+ }
2531
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: MediaFileUploaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2532
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: MediaFileUploaderComponent, selector: "bdc-media-file-uploader", providers: [AudioRecordingService, VideoRecordingService, UploadService], viewQueries: [{ propertyName: "videoElement", first: true, predicate: ["videoElement"], descendants: true }, { propertyName: "photoElement", first: true, predicate: ["photoElement"], descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["container"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<fd-card class=\"upload\" [ngClass]=\"recordType\">\r\n <fd-card-content class=\"file-content\">\r\n <div [class.no-recording]=\"!isRecording && valueUrl\" [ngClass]=\"recordType\" class=\"media-wrapper\">\r\n <div class=\"icon\">\r\n @if (!value && !valueUrl && !isRecording) {\r\n <i style=\"left: 45%; position: absolute\" fd-nested-list-icon [glyph]=\"glyph\"></i>\r\n }\r\n </div>\r\n @if (recordType === 'video') {\r\n <video #videoElement [class.video-novalue]=\"!valueUrl\">\r\n @if (!isRecording && valueUrl) {\r\n <source [src]=\"valueUrl\" />\r\n } @if (!value && !valueUrl && !isRecording) {\r\n <i style=\"left: 45%; position: absolute\" fd-nested-list-icon [glyph]=\"glyph\"></i>\r\n }\r\n </video>\r\n } @if (!isRecording && valueUrl && recordType === 'audio') {\r\n <audio controls>\r\n <source [src]=\"valueUrl\" type=\"audio/mp3\" />\r\n </audio>\r\n } @if (recordType === 'photo') {\r\n <input\r\n #photoElement\r\n type=\"file\"\r\n accept=\"image/*\"\r\n id=\"file-input\"\r\n capture=\"environment\"\r\n (change)=\"onTakePhoto()\"\r\n />\r\n }\r\n </div>\r\n @if (isRecording || valueUrl) {\r\n <div class=\"media-info\">\r\n <div>\r\n {{ !isRecording ? '' : ('Recording' | bbbTranslate) }} <strong>{{ recordedTime }}</strong>\r\n </div>\r\n <div>{{ fileName }}</div>\r\n </div>\r\n } @if (uploadingState$ | async; as uploadingState) { @if (uploadingState.state === 'Uploading') {\r\n <div class=\"progress\">\r\n <div>\r\n <fd-progress-indicator\r\n state=\"informative\"\r\n [valueNow]=\"uploadingState?.progress\"\r\n ></fd-progress-indicator>\r\n </div>\r\n </div>\r\n } }\r\n <div class=\"btn-wrapper\">\r\n @if (!value && !valueUrl) {\r\n <button\r\n class=\"btn-record\"\r\n fd-button\r\n [glyph]=\"isRecording ? 'stop' : 'record'\"\r\n [fdType]=\"isRecording ? 'attention' : 'ghost'\"\r\n (click)=\"onToggleRecord()\"\r\n ></button>\r\n } @if (!value && valueUrl) {\r\n <div class=\"btn-toolbar\">\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onClearRecord()\"></button>\r\n <button fd-button [label]=\"'Upload' | bbbTranslate\" [glyph]=\"'upload'\" (click)=\"onUpload()\"></button>\r\n </div>\r\n } @if (value) {\r\n <div class=\"btn-toolbar\">\r\n @if (value) {\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onDelete()\"></button>\r\n } @if (value) {\r\n <button fd-button [glyph]=\"'download'\" fdType=\"standard\" (click)=\"onDownload()\"></button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </fd-card-content>\r\n</fd-card>\r\n", styles: [":host .upload{display:flex;justify-content:center;align-items:center;flex-direction:column;max-width:380px;position:relative}:host .upload .file-content{width:100%}:host .upload i:before{color:#0a6ed1!important;font-size:2rem}fd-card.audio{min-height:120px;max-height:120px}fd-card.video{min-height:340px;max-height:340px}.icon{display:flex;align-items:center;justify-content:center;position:absolute;top:45%;left:45%}.video-novalue{border:1px dashed var(--sapObjectHeader_BorderColor);min-height:240px}audio,video{width:100%}.progress{position:absolute;width:100%;height:100%;background-color:#e4e4e4c7;z-index:4;display:flex;justify-content:center;align-items:center;top:0;left:0}.progress div{flex:.5}.file-content{width:100%;height:100%;display:flex;flex-direction:column;padding:1rem}.media-wrapper{flex-grow:1}.btn-wrapper{align-self:center}.btn-record{flex-shrink:1}.btn-toolbar{flex-grow:1;display:flex;column-gap:1rem}.media-info{flex-shrink:1;display:flex;width:100%;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$3.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i4$3.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i4$5.NestedListIconComponent, selector: "[fdNestedDirectivesIcon], [fd-nested-list-icon]", inputs: ["role"] }, { kind: "component", type: i5.ProgressIndicatorComponent, selector: "fd-progress-indicator", inputs: ["valueText", "unit", "valueMin", "valueMax", "valueNow", "state", "animate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2533
+ }
2534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: MediaFileUploaderComponent, decorators: [{
2535
+ type: Component,
2536
+ args: [{ selector: 'bdc-media-file-uploader', changeDetection: ChangeDetectionStrategy.OnPush, providers: [AudioRecordingService, VideoRecordingService, UploadService], template: "<fd-card class=\"upload\" [ngClass]=\"recordType\">\r\n <fd-card-content class=\"file-content\">\r\n <div [class.no-recording]=\"!isRecording && valueUrl\" [ngClass]=\"recordType\" class=\"media-wrapper\">\r\n <div class=\"icon\">\r\n @if (!value && !valueUrl && !isRecording) {\r\n <i style=\"left: 45%; position: absolute\" fd-nested-list-icon [glyph]=\"glyph\"></i>\r\n }\r\n </div>\r\n @if (recordType === 'video') {\r\n <video #videoElement [class.video-novalue]=\"!valueUrl\">\r\n @if (!isRecording && valueUrl) {\r\n <source [src]=\"valueUrl\" />\r\n } @if (!value && !valueUrl && !isRecording) {\r\n <i style=\"left: 45%; position: absolute\" fd-nested-list-icon [glyph]=\"glyph\"></i>\r\n }\r\n </video>\r\n } @if (!isRecording && valueUrl && recordType === 'audio') {\r\n <audio controls>\r\n <source [src]=\"valueUrl\" type=\"audio/mp3\" />\r\n </audio>\r\n } @if (recordType === 'photo') {\r\n <input\r\n #photoElement\r\n type=\"file\"\r\n accept=\"image/*\"\r\n id=\"file-input\"\r\n capture=\"environment\"\r\n (change)=\"onTakePhoto()\"\r\n />\r\n }\r\n </div>\r\n @if (isRecording || valueUrl) {\r\n <div class=\"media-info\">\r\n <div>\r\n {{ !isRecording ? '' : ('Recording' | bbbTranslate) }} <strong>{{ recordedTime }}</strong>\r\n </div>\r\n <div>{{ fileName }}</div>\r\n </div>\r\n } @if (uploadingState$ | async; as uploadingState) { @if (uploadingState.state === 'Uploading') {\r\n <div class=\"progress\">\r\n <div>\r\n <fd-progress-indicator\r\n state=\"informative\"\r\n [valueNow]=\"uploadingState?.progress\"\r\n ></fd-progress-indicator>\r\n </div>\r\n </div>\r\n } }\r\n <div class=\"btn-wrapper\">\r\n @if (!value && !valueUrl) {\r\n <button\r\n class=\"btn-record\"\r\n fd-button\r\n [glyph]=\"isRecording ? 'stop' : 'record'\"\r\n [fdType]=\"isRecording ? 'attention' : 'ghost'\"\r\n (click)=\"onToggleRecord()\"\r\n ></button>\r\n } @if (!value && valueUrl) {\r\n <div class=\"btn-toolbar\">\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onClearRecord()\"></button>\r\n <button fd-button [label]=\"'Upload' | bbbTranslate\" [glyph]=\"'upload'\" (click)=\"onUpload()\"></button>\r\n </div>\r\n } @if (value) {\r\n <div class=\"btn-toolbar\">\r\n @if (value) {\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onDelete()\"></button>\r\n } @if (value) {\r\n <button fd-button [glyph]=\"'download'\" fdType=\"standard\" (click)=\"onDownload()\"></button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </fd-card-content>\r\n</fd-card>\r\n", styles: [":host .upload{display:flex;justify-content:center;align-items:center;flex-direction:column;max-width:380px;position:relative}:host .upload .file-content{width:100%}:host .upload i:before{color:#0a6ed1!important;font-size:2rem}fd-card.audio{min-height:120px;max-height:120px}fd-card.video{min-height:340px;max-height:340px}.icon{display:flex;align-items:center;justify-content:center;position:absolute;top:45%;left:45%}.video-novalue{border:1px dashed var(--sapObjectHeader_BorderColor);min-height:240px}audio,video{width:100%}.progress{position:absolute;width:100%;height:100%;background-color:#e4e4e4c7;z-index:4;display:flex;justify-content:center;align-items:center;top:0;left:0}.progress div{flex:.5}.file-content{width:100%;height:100%;display:flex;flex-direction:column;padding:1rem}.media-wrapper{flex-grow:1}.btn-wrapper{align-self:center}.btn-record{flex-shrink:1}.btn-toolbar{flex-grow:1;display:flex;column-gap:1rem}.media-info{flex-shrink:1;display:flex;width:100%;justify-content:space-between}\n"] }]
2537
+ }], propDecorators: { videoElement: [{
2538
+ type: ViewChild,
2539
+ args: ['videoElement']
2540
+ }], photoElement: [{
2541
+ type: ViewChild,
2542
+ args: ['photoElement']
2543
+ }], dialogContainer: [{
2544
+ type: ViewChild,
2545
+ args: ['container', { read: TemplateRef }]
2546
+ }] } });
2547
+
2548
+ class SubformInRowReportComponent extends BaseItemContentPropsComponent {
2549
+ constructor() {
2550
+ super(...arguments);
2551
+ this.suggestionList$ = new Subject();
2552
+ }
2553
+ ngOnInit() {
2554
+ super.ngOnInit();
2555
+ this.suggestionList$
2556
+ .asObservable()
2557
+ .pipe(takeUntil$1(this._onDestroy$), debounceTime(500), switchMap((ulvParams) => new Promise((resolve, reject) => {
2558
+ formPanelCtrl.Save(false, (err) => {
2559
+ if (err) {
2560
+ reject(err);
2561
+ }
2562
+ this.UlvMainCtrlr.RefreshRowsByMosNoSelectionChange([formPanelCtrl.Mo], [], []);
2563
+ resolve();
2564
+ });
2565
+ })))
2566
+ .subscribe();
2567
+ const userDefineViewId = this.parameters?.ViewTypeValue?.Id;
2568
+ this.params = {
2569
+ moId: this.mo.Id,
2570
+ typeDefId: this.typeDefId,
2571
+ isSimple: true,
2572
+ viewId: userDefineViewId
2573
+ };
2574
+ const formPanelCtrl = createGridEditorFormPanel(this.formSetting, { ...this.mo }, this.typeDefId, null, false
2575
+ // BarsaApi.Common.Util.TryGetValue(this.context.Setting, 'Extra.Relation')
2576
+ );
2577
+ this.formPanelCtrl = formPanelCtrl;
2578
+ if (this.parameters?.AutoSaveOnChange) {
2579
+ formPanelCtrl.on({
2580
+ scope: this,
2581
+ ValueChange: () => {
2582
+ this.suggestionList$.next();
2583
+ }
2584
+ });
2585
+ }
2586
+ formPanelCtrl.LoadAndCreate({ MoId: this.mo.Id, TypeDefId: this.typeDefId, TypeViewId: userDefineViewId }, false, true, (t, e, r) => {
2587
+ console.log(t, e, r);
2588
+ const error = BarsaApi.Common.Util.TryGetValue(t, 'Data.ResponseData.error');
2589
+ if (error) {
2590
+ this.loaded = false;
2591
+ this.errorMessage = error.userMessage;
2592
+ }
2593
+ else {
2594
+ this.loaded = true;
2595
+ }
2596
+ this._cdr.detectChanges();
2597
+ });
2598
+ }
2599
+ ngOnChanges(changes) {
2600
+ super.ngOnChanges(changes);
2601
+ const { mo } = changes;
2602
+ if (mo && !mo.firstChange) {
2603
+ BarsaApi.Common.Merger.FastMerge(this.formPanelCtrl.Mo, mo.currentValue);
2604
+ this.formPanelCtrl.SetValue(this.formPanelCtrl.Mo);
2605
+ }
2606
+ }
2607
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: SubformInRowReportComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2608
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: SubformInRowReportComponent, selector: "bdc-subform-in-row-report", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (loaded) {\n<bnrc-form [formPanelCtrl]=\"formPanelCtrl\" class=\"subform-in-row\" [params]=\"params\"></bnrc-form>\n} @if(errorMessage){\n<span\n fd-object-status\n status=\"negative\"\n [label]=\"errorMessage\"\n [title]=\"errorMessage\"\n [attr.aria-label]=\"errorMessage\"\n></span>\n}\n", styles: [""], dependencies: [{ kind: "component", type: i1$1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "component", type: i6$3.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2609
+ }
2610
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: SubformInRowReportComponent, decorators: [{
2611
+ type: Component,
2612
+ args: [{ selector: 'bdc-subform-in-row-report', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (loaded) {\n<bnrc-form [formPanelCtrl]=\"formPanelCtrl\" class=\"subform-in-row\" [params]=\"params\"></bnrc-form>\n} @if(errorMessage){\n<span\n fd-object-status\n status=\"negative\"\n [label]=\"errorMessage\"\n [title]=\"errorMessage\"\n [attr.aria-label]=\"errorMessage\"\n></span>\n}\n" }]
2613
+ }] });
2614
+
2615
+ class MasterDetailCardFormComponent extends FormPropsBaseComponent {
2616
+ ngOnInit() {
2617
+ super.ngOnInit();
2618
+ }
2619
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: MasterDetailCardFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2620
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: MasterDetailCardFormComponent, selector: "bdc-master-detail-card-form", usesInheritance: true, ngImport: i0, template: "<fd-card class=\"master-tab\">\r\n <bsu-ly-tab-page [config]=\"modernTabs[0]\"></bsu-ly-tab-page>\r\n</fd-card>\r\n<fd-card class=\"details-tab\">\r\n <bsu-ly-tab-page [config]=\"modernTabs[1]\"></bsu-ly-tab-page>\r\n</fd-card>\r\n", styles: [":host{display:flex;width:100%;height:100%;column-gap:.525rem}fd-card.master-tab,fd-card.details-tab{height:100%}.master-tab{max-width:400px}.details-tab{width:100%}\n"], dependencies: [{ kind: "component", type: i2$1.LyTabPageComponent, selector: "bsu-ly-tab-page", inputs: ["renderItems", "tablist"] }, { kind: "component", type: i4$3.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2621
+ }
2622
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: MasterDetailCardFormComponent, decorators: [{
2623
+ type: Component,
2624
+ args: [{ selector: 'bdc-master-detail-card-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card class=\"master-tab\">\r\n <bsu-ly-tab-page [config]=\"modernTabs[0]\"></bsu-ly-tab-page>\r\n</fd-card>\r\n<fd-card class=\"details-tab\">\r\n <bsu-ly-tab-page [config]=\"modernTabs[1]\"></bsu-ly-tab-page>\r\n</fd-card>\r\n", styles: [":host{display:flex;width:100%;height:100%;column-gap:.525rem}fd-card.master-tab,fd-card.details-tab{height:100%}.master-tab{max-width:400px}.details-tab{width:100%}\n"] }]
2625
+ }] });
2626
+
2627
+ class ReportButtonViewComponent extends BaseFormToolbaritemPropsComponent {
2628
+ constructor() {
2629
+ super(...arguments);
2630
+ this.loaded = false;
2631
+ }
2632
+ ngOnInit() {
2633
+ super.ngOnInit();
2634
+ }
2635
+ onMainActionClick(menu) {
2636
+ if (this.parameters.MetaReport) {
2637
+ BarsaApi.Bw.RunBlMethodAsync({
2638
+ Parameters: [this.parameters.MetaReport.Id],
2639
+ Method: '_PortalExecuteReport',
2640
+ SuccessFn: (moDataList) => {
2641
+ this.moDataList = moDataList;
2642
+ menu.open();
2643
+ },
2644
+ FailFn: () => { }
2645
+ });
2646
+ }
2647
+ }
2648
+ onButtonClick(btn) { }
2649
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ReportButtonViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2650
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ReportButtonViewComponent, selector: "bdc-report-button-view", usesInheritance: true, ngImport: i0, template: "<!-- <fd-split-button\r\nfd-toolbar-item\r\n[fdType]=\"'transparent'\"\r\n[mainAction]=\"{\r\n keepMainAction: true,\r\n mainActionTitle: 'Choose' | bbbTranslate\r\n}\"\r\n>\r\n<fd-menu>\r\n <li fd-menu-item *ngFor=\"let mo of moDataList;let index=index\">\r\n <div fd-menu-interactive (click)=\"onRowCheck({mo,index})\">\r\n <span fd-menu-title>\r\n <fd-icon [glyph]=\"viewSetting.Icon | rval: mo:allColumns:true \"> </fd-icon>\r\n </span>\r\n </div>\r\n </li>\r\n</fd-menu>\r\n</fd-split-button> -->\r\n\r\n<fd-split-button\r\n fd-toolbar-item\r\n [mainAction]=\"{ mainActionTitle: parameters.MainActionTitle, keepMainAction: true }\"\r\n [fdType]=\"parameters.FdType$Caption\"\r\n (click)=\"onMainActionClick(menu)\"\r\n>\r\n <fd-menu #menu>\r\n @for (mo of moDataList; track mo; let index = $index) {\r\n <li fd-menu-item (click)=\"onButtonClick(mo)\">\r\n <div fd-menu-interactive>\r\n <fd-menu-addon position=\"before\"> </fd-menu-addon>\r\n <span fd-menu-title>{{ mo.$Caption | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n</fd-split-button>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1$7.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i1$7.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: i1$7.MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i1$7.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "component", type: i1$7.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "component", type: i2$5.SplitButtonComponent, selector: "fd-split-button", inputs: ["glyph", "glyphFont", "disabled", "fdType", "expandButtonTitle", "selected", "fixedWidth", "mainAction", "arialLabel"], outputs: ["primaryButtonClicked"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2651
+ }
2652
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ReportButtonViewComponent, decorators: [{
2653
+ type: Component,
2654
+ args: [{ selector: 'bdc-report-button-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <fd-split-button\r\nfd-toolbar-item\r\n[fdType]=\"'transparent'\"\r\n[mainAction]=\"{\r\n keepMainAction: true,\r\n mainActionTitle: 'Choose' | bbbTranslate\r\n}\"\r\n>\r\n<fd-menu>\r\n <li fd-menu-item *ngFor=\"let mo of moDataList;let index=index\">\r\n <div fd-menu-interactive (click)=\"onRowCheck({mo,index})\">\r\n <span fd-menu-title>\r\n <fd-icon [glyph]=\"viewSetting.Icon | rval: mo:allColumns:true \"> </fd-icon>\r\n </span>\r\n </div>\r\n </li>\r\n</fd-menu>\r\n</fd-split-button> -->\r\n\r\n<fd-split-button\r\n fd-toolbar-item\r\n [mainAction]=\"{ mainActionTitle: parameters.MainActionTitle, keepMainAction: true }\"\r\n [fdType]=\"parameters.FdType$Caption\"\r\n (click)=\"onMainActionClick(menu)\"\r\n>\r\n <fd-menu #menu>\r\n @for (mo of moDataList; track mo; let index = $index) {\r\n <li fd-menu-item (click)=\"onButtonClick(mo)\">\r\n <div fd-menu-interactive>\r\n <fd-menu-addon position=\"before\"> </fd-menu-addon>\r\n <span fd-menu-title>{{ mo.$Caption | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n</fd-split-button>\r\n" }]
2655
+ }] });
2656
+
2657
+ class BarsaDocumentListItemComponent extends BaseComponent {
2658
+ constructor(_cdr, _picFieldSrc) {
2659
+ super();
2660
+ this._cdr = _cdr;
2661
+ this._picFieldSrc = _picFieldSrc;
2662
+ this.statusChanged = new EventEmitter();
2663
+ this.rejectTextChange = new EventEmitter();
2664
+ this.fileSelectionChange = new EventEmitter();
2665
+ this.removeFile = new EventEmitter();
2666
+ this.fullscreen = new EventEmitter();
2667
+ this.download = new EventEmitter();
2668
+ this.downloadAll = new EventEmitter();
2669
+ this.hasFiles = false;
2670
+ }
2671
+ ngOnInit() {
2672
+ super.ngOnInit();
2673
+ const documentItem = this.documentItem;
2674
+ documentItem.$ValidExtensions = `
2675
+ ${documentItem.SupportImage ? ImageMimeType : ''},
2676
+ ${documentItem.SupportAudio ? AudioMimeType : ''},
2677
+ ${documentItem.SupportVideo ? VideoMimeType : ''},
2678
+ ${documentItem.SupportFile ? AllFilesMimeType : ''}
2679
+ `;
2680
+ }
2681
+ ngOnChanges(changes) {
2682
+ super.ngOnChanges(changes);
2683
+ const { files } = changes;
2684
+ files && Array.isArray(files.currentValue) && this._setFirstImage(files.currentValue);
2685
+ this._detectChanges();
2686
+ }
2687
+ onReject(e) {
2688
+ this.statusChanged.emit({ value: e, rejectedText: e === 2 ? '' : this.rejectedReason });
2689
+ }
2690
+ onRejectedTextChange(e) {
2691
+ this.rejectTextChange.emit(e.target.value);
2692
+ }
2693
+ onPreventClick(e) {
2694
+ PreventDefaulEvent(e);
2695
+ }
2696
+ onFileSelection(files) {
2697
+ this.fileSelectionChange.emit(files);
2698
+ }
2699
+ _setFirstImage(files) {
2700
+ files.length &&
2701
+ (this.firstImageUrl = isImage(files[0].Type)
2702
+ ? this._picFieldSrc.transform(files[0].Id, 'ID', null, '', 120, 120)
2703
+ : getIcon(files[0].Type));
2704
+ }
2705
+ _detectChanges() {
2706
+ this._cdr.detectChanges();
2707
+ }
2708
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaDocumentListItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.PictureFieldSourcePipe }], target: i0.ɵɵFactoryTarget.Component }); }
2709
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaDocumentListItemComponent, selector: "bdc-barsa-document-list-item", inputs: { documentItem: "documentItem", deviceSize: "deviceSize", files: "files", accepted: "accepted", rejectedReason: "rejectedReason", readonly: "readonly", status: "status", uploadingState: "uploadingState" }, outputs: { statusChanged: "statusChanged", rejectTextChange: "rejectTextChange", fileSelectionChange: "fileSelectionChange", removeFile: "removeFile", fullscreen: "fullscreen", download: "download", downloadAll: "downloadAll" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <li fd-list-item style=\"padding: 0.5rem 1rem\">\r\n<span fd-list-thumbnail>\r\n <fd-icon *ngIf=\"documentItem.FontIcon\" [glyph]=\"documentItem.FontIcon\"></fd-icon>\r\n <fd-avatar\r\n *ngIf=\"documentItem.Avatar\"\r\n size=\"s\"\r\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:''\"\r\n [clickable]=\"true\"\r\n ></fd-avatar\r\n ></span>\r\n\r\n <div fd-list-content>\r\n <div fd-list-title>\r\n <div style=\"display: flex; column-gap: 3px\">\r\n <strong\r\n >{{ documentItem.Title }}\r\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\r\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\r\n </span>\r\n </strong>\r\n <div\r\n *ngIf=\"documentItem.$Accepted === false || documentItem.$Accepted === true\"\r\n style=\"display: flex; column-gap: 3px; flex-wrap: wrap; align-items: center\"\r\n >\r\n <span\r\n fd-object-status\r\n [status]=\"accepted ? 'positive' : 'negative'\"\r\n [label]=\"accepted ? acceptedText : rejectedText\"\r\n [clickable]=\"true\"\r\n [inverted]=\"true\"\r\n [aria-label]=\"accepted ? acceptedText : rejectedText\"\r\n ></span>\r\n <fd-popover title=\"Rejected document\" *ngIf=\"rejectedReason && !accepted\">\r\n <fd-popover-control>\r\n <span\r\n fd-object-status\r\n status=\"negative\"\r\n glyph=\"question-mark\"\r\n glyphAriaLabel=\"Negative\"\r\n title=\"Rejected document\"\r\n ></span>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <fd-message-strip type=\"error\" [dismissible]=\"false\">\r\n {{ rejectedReason }}\r\n </fd-message-strip>\r\n </fd-popover-body>\r\n </fd-popover>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-list-byline [twoCol]=\"true\" [class.smallSize]=\"deviceSize === 's'\">\r\n <div fd-list-byline-left>\r\n <div style=\"display: flex; flex-direction: column; row-gap: 5px; flex-wrap: wrap\">\r\n <span>\r\n {{ documentItem.Description }}\r\n </span>\r\n <div style=\"display: flex; flex-wrap: wrap; column-gap: 3px; align-items: center\">\r\n <ng-container *ngIf=\"hasFiles\">\r\n <button fd-button [fdType]=\"'transparent'\" glyph=\"show\" (click)=\"onFullscreen()\"></button>\r\n <ng-container *ngFor=\"let file of files\">\r\n <fd-token\r\n [readOnly]=\"readonly\"\r\n *ngIf=\"!file.IsDeleted\"\r\n (onCloseClick)=\"onRemoveFile(file)\"\r\n >{{ file.FileName }}</fd-token\r\n >\r\n </ng-container>\r\n </ng-container>\r\n <button\r\n fd-button\r\n *ngIf=\"documentItem.MaxFileCount && !readonly\"\r\n glyph=\"attachment\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n (click)=\"!readonly && uploader.open()\"\r\n ></button>\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"documentItem.ItemKey\"\r\n [name]=\"'pictures_' + documentItem.ItemKey\"\r\n [accept]=\"documentItem.$ValidExtensions\"\r\n [fileLimit]=\"documentItem.MaxFileCount\"\r\n [multiple]=\"documentItem.MaxFileCount > 0\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n ></fd-file-uploader>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-list-byline-right *ngIf=\"documentItem.CanAccept\">\r\n <bdc-accept-reject\r\n [rejectedReason]=\"rejectedReason\"\r\n [positiveText]=\"acceptedText\"\r\n [negativeText]=\"rejectedText\"\r\n [deviceSize]=\"deviceSize\"\r\n [readonly]=\"readonly\"\r\n ></bdc-accept-reject>\r\n </div>\r\n </div>\r\n </div>\r\n </li> -->\r\n\r\n<tr fd-table-row>\r\n <td fd-table-cell>\r\n @if (documentItem.Avatar && !files.length) {\r\n <fd-avatar\r\n size=\"s\"\r\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:'':64:64\"\r\n [clickable]=\"true\"\r\n [transparent]=\"true\"\r\n ></fd-avatar>\r\n } @else { @if (files.length) {\r\n <fd-avatar [transparent]=\"true\" size=\"s\" [image]=\"firstImageUrl\" [clickable]=\"true\"></fd-avatar>\r\n } @if (!files.length) {\r\n <fd-avatar [transparent]=\"true\" size=\"s\" [glyph]=\"documentItem.FontIcon\" [clickable]=\"true\"></fd-avatar>\r\n } }\r\n </td>\r\n <td fd-table-cell style=\"min-width: 140px\">\r\n <p fd-table-text>\r\n <strong\r\n >{{ documentItem.Title }}\r\n @if (documentItem.IsRequired) {\r\n <span fd-object-status status=\"negative\">*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }}) </span>\r\n }\r\n </strong>\r\n </p>\r\n <div>\r\n <span>\r\n {{ documentItem.Description }}\r\n </span>\r\n </div>\r\n </td>\r\n\r\n <td fd-table-cell>\r\n <ng-container>\r\n <!-- <ul fd-list>\r\n <li fd-list-item *ngFor=\"let file of files; let ind = index\">\r\n <span fd-list-title>\r\n {{ file.FileName }}\r\n </span>\r\n <span fd-list-secondary>\r\n <button ariaLabel=\"Remove\" title=\"Remove\" fd-button glyph=\"delete\" ></button>\r\n </span>\r\n </li>\r\n </ul> -->\r\n <div style=\"display: flex; align-items: flex-start; column-gap: 3px; row-gap: 3px; flex-direction: column\">\r\n @for (file of files; track file) {\r\n <!-- <span><fd-icon glyph=\"attachment\"></fd-icon><a fd-link>{{file.FileName}}</a></span> -->\r\n @if (!file.IsDeleted) {\r\n <bsu-file-viewer-popover\r\n [file]=\"file\"\r\n [deviceSize]=\"deviceSize\"\r\n [canDownload]=\"true\"\r\n (remove)=\"removeFile.emit(file)\"\r\n ></bsu-file-viewer-popover>\r\n } }\r\n <!-- <button\r\n fd-button\r\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\r\n glyph=\"add\"\r\n (click)=\"!readonly && uploader.open()\"\r\n ></button> -->\r\n </div>\r\n <!-- <p *ngFor=\"let file of files\" fd-table-text>\r\n <fd-action-sheet >\r\n <fd-action-sheet-control>\r\n <button\r\n fd-button\r\n glyph=\"settings\"\r\n title=\"Open Action Sheet Mobile\"\r\n id=\"fd-action-sheet-mobile-control\"\r\n aria-haspopup=\"menu\"\r\n [label]=\"file.FileName ||''\"\r\n aria-controls=\"fd-action-sheet-mobile-body\"\r\n ></button>\r\n </fd-action-sheet-control>\r\n\r\n <fd-action-sheet-body\r\n actionSheetBodyId=\"fd-action-sheet-mobile-body\"\r\n ariaLabelledBy=\"fd-action-sheet-mobile-control\"\r\n >\r\n <li fd-action-sheet-item label=\"Search\" glyph=\"search\"></li>\r\n <li fd-action-sheet-item label=\"Download\" glyph=\"download\" ></li>\r\n <li fd-action-sheet-item label=\"Accept\" glyph=\"accept\" ></li>\r\n <li fd-action-sheet-item label=\"Reject\" glyph=\"cancel\" ></li>\r\n <li fd-action-sheet-item label=\"Decide Later\" [isCloseButton]=\"true\"></li>\r\n <li fd-action-sheet-item label=\"Cancel\" [negative]=\"true\" [isCloseButton]=\"true\"></li>\r\n </fd-action-sheet-body>\r\n </fd-action-sheet>\r\n </p> -->\r\n </ng-container>\r\n </td>\r\n <td fd-table-cell>\r\n <div class=\"status\" style=\"position: relative\">\r\n @if (+documentItem.MaxFileCount && !readonly) {\r\n <button\r\n fd-button\r\n glyph=\"attachment\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n [disabled]=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\r\n (click)=\"!readonly && uploader.open()\"\r\n >\r\n @if (uploadingState?.key === documentItem.Title && uploadingState?.uploading) {\r\n <bsu-mask [marginTop]=\"'3px'\"></bsu-mask>\r\n }\r\n </button>\r\n }\r\n <button\r\n fd-button\r\n glyph=\"show\"\r\n fullscreenFiles\r\n [files]=\"files\"\r\n [title]=\"documentItem.Title\"\r\n [fd-inline-help]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n [aria-describedby]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n [ariaLabel]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n fullscreenFiles\r\n [disabled]=\"!files.length\"\r\n [files]=\"files\"\r\n ></button>\r\n <button\r\n fd-button\r\n glyph=\"download\"\r\n [fd-inline-help]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n [aria-describedby]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n [ariaLabel]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n downloadFiles\r\n [disabled]=\"!files.length\"\r\n [files]=\"files\"\r\n (click)=\"downloadAll.emit()\"\r\n ></button>\r\n </div>\r\n </td>\r\n <td fd-table-cell>\r\n <fd-action-sheet #actionSheet>\r\n <fd-action-sheet-control>\r\n <ng-container *ngTemplateOutlet=\"statusTpl\"></ng-container>\r\n </fd-action-sheet-control>\r\n <fd-action-sheet-body>\r\n <li\r\n fd-action-sheet-item\r\n [label]=\"'Accept' | bbbTranslate\"\r\n glyph=\"accept\"\r\n (click)=\"actionSheet.close(); onReject(2)\"\r\n ></li>\r\n <li\r\n fd-action-sheet-item\r\n [label]=\"'Reject' | bbbTranslate\"\r\n glyph=\"cancel\"\r\n (click)=\"actionSheet.close(); onReject(3)\"\r\n ></li>\r\n </fd-action-sheet-body>\r\n </fd-action-sheet>\r\n\r\n @if (status === 3) {\r\n <p fd-table-text maxWidth=\"400px\">\r\n @if (readonly && rejectedReason) {\r\n <span> {{ rejectedReason | bbbTranslate }} </span>\r\n } @if (!readonly) {\r\n <input\r\n fd-form-control\r\n [value]=\"rejectedReason | bbbTranslate\"\r\n [placeholder]=\"'\u062F\u0644\u0627\u06CC\u0644 \u0631\u062F \u0645\u062F\u0631\u06A9' | bbbTranslate\"\r\n />\r\n }\r\n </p>\r\n }\r\n </td>\r\n</tr>\r\n\r\n<fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"documentItem.ItemKey\"\r\n [name]=\"'pictures_' + documentItem.ItemKey\"\r\n [accept]=\"documentItem.$ValidExtensions\"\r\n [fileLimit]=\"documentItem.MaxFileCount\"\r\n [multiple]=\"documentItem.MaxFileCount > 0\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n></fd-file-uploader>\r\n<ng-template #statusTpl>\r\n <div class=\"status\">\r\n <button fd-button fdType=\"transparent\">\r\n @if (status === 1) {\r\n <span\r\n fd-object-status\r\n [label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\r\n [aria-label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\r\n ></span>\r\n } @if (status === 2) {\r\n <span\r\n fd-object-status\r\n glyph=\"message-success\"\r\n status=\"positive\"\r\n [label]=\"'Accepted' | bbbTranslate\"\r\n [label]=\"'Accepted' | bbbTranslate\"\r\n ></span>\r\n } @if (status === 3) {\r\n <span\r\n fd-object-status\r\n glyph=\"cancel\"\r\n status=\"negative\"\r\n [label]=\"'Rejected' | bbbTranslate\"\r\n [aria-label]=\"'Rejected' | bbbTranslate\"\r\n ></span>\r\n }\r\n </button>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:contents}::ng-deep .fd-list--byline .fd-list__byline-left,::ng-deep .fd-list--byline .fd-list__byline-right{line-height:1.1rem!important}.fd-list__byline.smallSize{flex-direction:column;row-gap:5px}.fd-list__byline.smallSize div{width:100%}td{white-space:nowrap;padding:.5rem}fd-avatar ::ng-deep i{font-size:2.3rem!important}.status{display:flex;align-items:center;column-gap:3px;row-gap:3px}.status span.fd-object-status{font-size:var(--sapFontSize)!important;font-weight:700!important}.status span.fd-object-status ::ng-deep fd-icon{font-size:var(--sapFontSize);font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i2$1.FileViewerPopoverComponent, selector: "bsu-file-viewer-popover", inputs: ["files", "file", "deviceSize", "canDownload", "disableRemove", "fdType"], outputs: ["remove"] }, { kind: "directive", type: i2$1.FullscreenFilesDirective, selector: "[fullscreenFiles]", inputs: ["files", "title", "deviceSize", "isImageGallery", "component"] }, { kind: "directive", type: i2$1.DownloadFilesDirective, selector: "[downloadFiles]", inputs: ["files"] }, { kind: "component", type: i4$6.ActionSheetComponent, selector: "fd-action-sheet", inputs: ["mobile", "placement", "noArrow", "isOpen", "keyboardSupport", "triggers"], outputs: ["focusEscapeList", "isOpenChange"] }, { kind: "component", type: i4$6.ActionSheetControlComponent, selector: "fd-action-sheet-control", outputs: ["clicked"] }, { kind: "component", type: i4$6.ActionSheetItemComponent, selector: "[fd-action-sheet-item]", inputs: ["label", "glyph", "glyphFont", "negative", "isCloseButton", "disabled"], outputs: ["keyDown"] }, { kind: "component", type: i4$6.ActionSheetBodyComponent, selector: "fd-action-sheet-body", inputs: ["actionSheetBodyId", "mobile", "ariaLabel", "ariaLabelledby"] }, { kind: "component", type: i3$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7$3.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i6$1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i9.InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help"] }, { kind: "component", type: i6$3.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }, { kind: "directive", type: i3$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i3$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "directive", type: i3$6.TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2710
+ }
2711
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaDocumentListItemComponent, decorators: [{
2712
+ type: Component,
2713
+ args: [{ selector: 'bdc-barsa-document-list-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <li fd-list-item style=\"padding: 0.5rem 1rem\">\r\n<span fd-list-thumbnail>\r\n <fd-icon *ngIf=\"documentItem.FontIcon\" [glyph]=\"documentItem.FontIcon\"></fd-icon>\r\n <fd-avatar\r\n *ngIf=\"documentItem.Avatar\"\r\n size=\"s\"\r\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:''\"\r\n [clickable]=\"true\"\r\n ></fd-avatar\r\n ></span>\r\n\r\n <div fd-list-content>\r\n <div fd-list-title>\r\n <div style=\"display: flex; column-gap: 3px\">\r\n <strong\r\n >{{ documentItem.Title }}\r\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\r\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\r\n </span>\r\n </strong>\r\n <div\r\n *ngIf=\"documentItem.$Accepted === false || documentItem.$Accepted === true\"\r\n style=\"display: flex; column-gap: 3px; flex-wrap: wrap; align-items: center\"\r\n >\r\n <span\r\n fd-object-status\r\n [status]=\"accepted ? 'positive' : 'negative'\"\r\n [label]=\"accepted ? acceptedText : rejectedText\"\r\n [clickable]=\"true\"\r\n [inverted]=\"true\"\r\n [aria-label]=\"accepted ? acceptedText : rejectedText\"\r\n ></span>\r\n <fd-popover title=\"Rejected document\" *ngIf=\"rejectedReason && !accepted\">\r\n <fd-popover-control>\r\n <span\r\n fd-object-status\r\n status=\"negative\"\r\n glyph=\"question-mark\"\r\n glyphAriaLabel=\"Negative\"\r\n title=\"Rejected document\"\r\n ></span>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <fd-message-strip type=\"error\" [dismissible]=\"false\">\r\n {{ rejectedReason }}\r\n </fd-message-strip>\r\n </fd-popover-body>\r\n </fd-popover>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-list-byline [twoCol]=\"true\" [class.smallSize]=\"deviceSize === 's'\">\r\n <div fd-list-byline-left>\r\n <div style=\"display: flex; flex-direction: column; row-gap: 5px; flex-wrap: wrap\">\r\n <span>\r\n {{ documentItem.Description }}\r\n </span>\r\n <div style=\"display: flex; flex-wrap: wrap; column-gap: 3px; align-items: center\">\r\n <ng-container *ngIf=\"hasFiles\">\r\n <button fd-button [fdType]=\"'transparent'\" glyph=\"show\" (click)=\"onFullscreen()\"></button>\r\n <ng-container *ngFor=\"let file of files\">\r\n <fd-token\r\n [readOnly]=\"readonly\"\r\n *ngIf=\"!file.IsDeleted\"\r\n (onCloseClick)=\"onRemoveFile(file)\"\r\n >{{ file.FileName }}</fd-token\r\n >\r\n </ng-container>\r\n </ng-container>\r\n <button\r\n fd-button\r\n *ngIf=\"documentItem.MaxFileCount && !readonly\"\r\n glyph=\"attachment\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n (click)=\"!readonly && uploader.open()\"\r\n ></button>\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"documentItem.ItemKey\"\r\n [name]=\"'pictures_' + documentItem.ItemKey\"\r\n [accept]=\"documentItem.$ValidExtensions\"\r\n [fileLimit]=\"documentItem.MaxFileCount\"\r\n [multiple]=\"documentItem.MaxFileCount > 0\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n ></fd-file-uploader>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-list-byline-right *ngIf=\"documentItem.CanAccept\">\r\n <bdc-accept-reject\r\n [rejectedReason]=\"rejectedReason\"\r\n [positiveText]=\"acceptedText\"\r\n [negativeText]=\"rejectedText\"\r\n [deviceSize]=\"deviceSize\"\r\n [readonly]=\"readonly\"\r\n ></bdc-accept-reject>\r\n </div>\r\n </div>\r\n </div>\r\n </li> -->\r\n\r\n<tr fd-table-row>\r\n <td fd-table-cell>\r\n @if (documentItem.Avatar && !files.length) {\r\n <fd-avatar\r\n size=\"s\"\r\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:'':64:64\"\r\n [clickable]=\"true\"\r\n [transparent]=\"true\"\r\n ></fd-avatar>\r\n } @else { @if (files.length) {\r\n <fd-avatar [transparent]=\"true\" size=\"s\" [image]=\"firstImageUrl\" [clickable]=\"true\"></fd-avatar>\r\n } @if (!files.length) {\r\n <fd-avatar [transparent]=\"true\" size=\"s\" [glyph]=\"documentItem.FontIcon\" [clickable]=\"true\"></fd-avatar>\r\n } }\r\n </td>\r\n <td fd-table-cell style=\"min-width: 140px\">\r\n <p fd-table-text>\r\n <strong\r\n >{{ documentItem.Title }}\r\n @if (documentItem.IsRequired) {\r\n <span fd-object-status status=\"negative\">*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }}) </span>\r\n }\r\n </strong>\r\n </p>\r\n <div>\r\n <span>\r\n {{ documentItem.Description }}\r\n </span>\r\n </div>\r\n </td>\r\n\r\n <td fd-table-cell>\r\n <ng-container>\r\n <!-- <ul fd-list>\r\n <li fd-list-item *ngFor=\"let file of files; let ind = index\">\r\n <span fd-list-title>\r\n {{ file.FileName }}\r\n </span>\r\n <span fd-list-secondary>\r\n <button ariaLabel=\"Remove\" title=\"Remove\" fd-button glyph=\"delete\" ></button>\r\n </span>\r\n </li>\r\n </ul> -->\r\n <div style=\"display: flex; align-items: flex-start; column-gap: 3px; row-gap: 3px; flex-direction: column\">\r\n @for (file of files; track file) {\r\n <!-- <span><fd-icon glyph=\"attachment\"></fd-icon><a fd-link>{{file.FileName}}</a></span> -->\r\n @if (!file.IsDeleted) {\r\n <bsu-file-viewer-popover\r\n [file]=\"file\"\r\n [deviceSize]=\"deviceSize\"\r\n [canDownload]=\"true\"\r\n (remove)=\"removeFile.emit(file)\"\r\n ></bsu-file-viewer-popover>\r\n } }\r\n <!-- <button\r\n fd-button\r\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\r\n glyph=\"add\"\r\n (click)=\"!readonly && uploader.open()\"\r\n ></button> -->\r\n </div>\r\n <!-- <p *ngFor=\"let file of files\" fd-table-text>\r\n <fd-action-sheet >\r\n <fd-action-sheet-control>\r\n <button\r\n fd-button\r\n glyph=\"settings\"\r\n title=\"Open Action Sheet Mobile\"\r\n id=\"fd-action-sheet-mobile-control\"\r\n aria-haspopup=\"menu\"\r\n [label]=\"file.FileName ||''\"\r\n aria-controls=\"fd-action-sheet-mobile-body\"\r\n ></button>\r\n </fd-action-sheet-control>\r\n\r\n <fd-action-sheet-body\r\n actionSheetBodyId=\"fd-action-sheet-mobile-body\"\r\n ariaLabelledBy=\"fd-action-sheet-mobile-control\"\r\n >\r\n <li fd-action-sheet-item label=\"Search\" glyph=\"search\"></li>\r\n <li fd-action-sheet-item label=\"Download\" glyph=\"download\" ></li>\r\n <li fd-action-sheet-item label=\"Accept\" glyph=\"accept\" ></li>\r\n <li fd-action-sheet-item label=\"Reject\" glyph=\"cancel\" ></li>\r\n <li fd-action-sheet-item label=\"Decide Later\" [isCloseButton]=\"true\"></li>\r\n <li fd-action-sheet-item label=\"Cancel\" [negative]=\"true\" [isCloseButton]=\"true\"></li>\r\n </fd-action-sheet-body>\r\n </fd-action-sheet>\r\n </p> -->\r\n </ng-container>\r\n </td>\r\n <td fd-table-cell>\r\n <div class=\"status\" style=\"position: relative\">\r\n @if (+documentItem.MaxFileCount && !readonly) {\r\n <button\r\n fd-button\r\n glyph=\"attachment\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n [disabled]=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\r\n (click)=\"!readonly && uploader.open()\"\r\n >\r\n @if (uploadingState?.key === documentItem.Title && uploadingState?.uploading) {\r\n <bsu-mask [marginTop]=\"'3px'\"></bsu-mask>\r\n }\r\n </button>\r\n }\r\n <button\r\n fd-button\r\n glyph=\"show\"\r\n fullscreenFiles\r\n [files]=\"files\"\r\n [title]=\"documentItem.Title\"\r\n [fd-inline-help]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n [aria-describedby]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n [ariaLabel]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n fullscreenFiles\r\n [disabled]=\"!files.length\"\r\n [files]=\"files\"\r\n ></button>\r\n <button\r\n fd-button\r\n glyph=\"download\"\r\n [fd-inline-help]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n [aria-describedby]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n [ariaLabel]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n downloadFiles\r\n [disabled]=\"!files.length\"\r\n [files]=\"files\"\r\n (click)=\"downloadAll.emit()\"\r\n ></button>\r\n </div>\r\n </td>\r\n <td fd-table-cell>\r\n <fd-action-sheet #actionSheet>\r\n <fd-action-sheet-control>\r\n <ng-container *ngTemplateOutlet=\"statusTpl\"></ng-container>\r\n </fd-action-sheet-control>\r\n <fd-action-sheet-body>\r\n <li\r\n fd-action-sheet-item\r\n [label]=\"'Accept' | bbbTranslate\"\r\n glyph=\"accept\"\r\n (click)=\"actionSheet.close(); onReject(2)\"\r\n ></li>\r\n <li\r\n fd-action-sheet-item\r\n [label]=\"'Reject' | bbbTranslate\"\r\n glyph=\"cancel\"\r\n (click)=\"actionSheet.close(); onReject(3)\"\r\n ></li>\r\n </fd-action-sheet-body>\r\n </fd-action-sheet>\r\n\r\n @if (status === 3) {\r\n <p fd-table-text maxWidth=\"400px\">\r\n @if (readonly && rejectedReason) {\r\n <span> {{ rejectedReason | bbbTranslate }} </span>\r\n } @if (!readonly) {\r\n <input\r\n fd-form-control\r\n [value]=\"rejectedReason | bbbTranslate\"\r\n [placeholder]=\"'\u062F\u0644\u0627\u06CC\u0644 \u0631\u062F \u0645\u062F\u0631\u06A9' | bbbTranslate\"\r\n />\r\n }\r\n </p>\r\n }\r\n </td>\r\n</tr>\r\n\r\n<fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"documentItem.ItemKey\"\r\n [name]=\"'pictures_' + documentItem.ItemKey\"\r\n [accept]=\"documentItem.$ValidExtensions\"\r\n [fileLimit]=\"documentItem.MaxFileCount\"\r\n [multiple]=\"documentItem.MaxFileCount > 0\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n></fd-file-uploader>\r\n<ng-template #statusTpl>\r\n <div class=\"status\">\r\n <button fd-button fdType=\"transparent\">\r\n @if (status === 1) {\r\n <span\r\n fd-object-status\r\n [label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\r\n [aria-label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\r\n ></span>\r\n } @if (status === 2) {\r\n <span\r\n fd-object-status\r\n glyph=\"message-success\"\r\n status=\"positive\"\r\n [label]=\"'Accepted' | bbbTranslate\"\r\n [label]=\"'Accepted' | bbbTranslate\"\r\n ></span>\r\n } @if (status === 3) {\r\n <span\r\n fd-object-status\r\n glyph=\"cancel\"\r\n status=\"negative\"\r\n [label]=\"'Rejected' | bbbTranslate\"\r\n [aria-label]=\"'Rejected' | bbbTranslate\"\r\n ></span>\r\n }\r\n </button>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:contents}::ng-deep .fd-list--byline .fd-list__byline-left,::ng-deep .fd-list--byline .fd-list__byline-right{line-height:1.1rem!important}.fd-list__byline.smallSize{flex-direction:column;row-gap:5px}.fd-list__byline.smallSize div{width:100%}td{white-space:nowrap;padding:.5rem}fd-avatar ::ng-deep i{font-size:2.3rem!important}.status{display:flex;align-items:center;column-gap:3px;row-gap:3px}.status span.fd-object-status{font-size:var(--sapFontSize)!important;font-weight:700!important}.status span.fd-object-status ::ng-deep fd-icon{font-size:var(--sapFontSize);font-weight:700}\n"] }]
2714
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.PictureFieldSourcePipe }], propDecorators: { documentItem: [{
2715
+ type: Input
2716
+ }], deviceSize: [{
2717
+ type: Input
2718
+ }], files: [{
2719
+ type: Input
2720
+ }], accepted: [{
2721
+ type: Input
2722
+ }], rejectedReason: [{
2723
+ type: Input
2724
+ }], readonly: [{
2725
+ type: Input
2726
+ }], status: [{
2727
+ type: Input
2728
+ }], uploadingState: [{
2729
+ type: Input
2730
+ }], statusChanged: [{
2731
+ type: Output
2732
+ }], rejectTextChange: [{
2733
+ type: Output
2734
+ }], fileSelectionChange: [{
2735
+ type: Output
2736
+ }], removeFile: [{
2737
+ type: Output
2738
+ }], fullscreen: [{
2739
+ type: Output
2740
+ }], download: [{
2741
+ type: Output
2742
+ }], downloadAll: [{
2743
+ type: Output
2744
+ }] } });
2745
+
2746
+ class BarsaDocumentsComponent extends ReportViewBaseComponent {
2747
+ constructor(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService, _dialogService, _uploadService) {
2748
+ super(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService, _uploadService);
2749
+ this._el = _el;
2750
+ this._cdr = _cdr;
2751
+ this._renderer2 = _renderer2;
2752
+ this._findColumnByDbName = _findColumnByDbName;
2753
+ this._ulvMainService = _ulvMainService;
2754
+ this._portalService = _portalService;
2755
+ this._dialogService = _dialogService;
2756
+ this._uploadService = _uploadService;
2757
+ }
2758
+ get documentItems() {
2759
+ if (this.customFieldInfo) {
2760
+ return this.customFieldInfo.DocumentItems.MoDataList;
2761
+ }
2762
+ else {
2763
+ return this.viewSetting.FilesSetting.DocumentItems.MoDataList;
2764
+ }
2765
+ }
2766
+ ngOnInit() {
2767
+ super.ngOnInit();
2768
+ const { moDataList, viewSetting, allColumns } = this;
2769
+ this._initColumnField(allColumns, viewSetting);
2770
+ this._subscribeOnUploadFile(this.fileColumn);
2771
+ this._mapDocumentItem(moDataList, this.documentItems);
2772
+ this._checkMandatory();
2773
+ }
2774
+ ngOnChanges(changes) {
2775
+ super.ngOnChanges(changes);
2776
+ const { moDataList } = changes;
2777
+ if (moDataList && !moDataList.firstChange) {
2778
+ if (moDataList && !moDataList.firstChange) {
2779
+ this._mapDocumentItem(moDataList.currentValue, this.documentItems);
2780
+ this.detectChanges();
2781
+ }
2782
+ }
2783
+ }
2784
+ ngAfterViewInit() {
2785
+ super.ngAfterViewInit();
2786
+ setTimeout(() => {
2787
+ for (let i = 0; i < this.documentItems.length - this.moDataList.length; i++) {
2788
+ this.createNewMo.emit();
2789
+ }
2790
+ });
2791
+ }
2792
+ onFileSelection(files, documentItem, mo) {
2793
+ this.selectedMo = mo;
2794
+ this._uploadFile(files, documentItem);
2795
+ }
2796
+ onRemoveFile(file, mo) {
2797
+ const fileDbName = this.fileColumn.Name;
2798
+ let files = mo[fileDbName].Files;
2799
+ if (file.IsNew) {
2800
+ files = files.filter((c) => c.Id !== file.Id);
2801
+ }
2802
+ else {
2803
+ const existFile = files.find((c) => c.Id === file.Id);
2804
+ existFile.IsDeleted = true;
2805
+ }
2806
+ mo[fileDbName].Files = [...files];
2807
+ this._updateMo(mo);
2808
+ }
2809
+ onStatusChanged(e, mo) {
2810
+ mo[this.statusColumn.Name] = e.value;
2811
+ mo[this.rejectedReasonColumn.Name] = e.rejectedText;
2812
+ this._updateMo(mo);
2813
+ }
2814
+ onRejectedTextChange(text, mo) {
2815
+ mo[this.rejectedReasonColumn.Name] = text;
2816
+ this._updateMo(mo);
2817
+ }
2818
+ _checkMandatory() {
2819
+ const moDataList = this.moDataList;
2820
+ const items = this.documentItems.filter((c) => c.IsRequired);
2821
+ let mandatory = items.length > 0;
2822
+ const mandatory2 = items
2823
+ .map((item) => moDataList.find((c) => c[this.keyColumn.Name] === item.ItemKey))
2824
+ .filter((item) => item)
2825
+ .some((mo) => mo[this.fileColumn.Name].Files.filter((c) => !c.IsDeleted).length === 0);
2826
+ mandatory = mandatory && mandatory2;
2827
+ this.mandatory.emit(mandatory);
2828
+ }
2829
+ _mapDocumentItem(moDataList, documentItems) {
2830
+ const keyName = this.keyColumn.Name;
2831
+ moDataList.forEach((mo, index) => {
2832
+ let documentItem = documentItems.find((c) => c.ItemKey === mo[keyName]); // find setting that matches with mo by itemKey
2833
+ if (documentItem) {
2834
+ mo.$documentItem = documentItem;
2835
+ }
2836
+ else {
2837
+ documentItem = documentItems.find((item) => moDataList.map((c) => c[keyName]).indexOf(item.ItemKey) < 0); // find a setting has not have $RelatedMo yet
2838
+ if (documentItem) {
2839
+ mo[keyName] = documentItem.ItemKey;
2840
+ mo.$documentItem = documentItem;
2841
+ this.updateMo.emit(mo);
2842
+ }
2843
+ }
2844
+ });
2845
+ }
2846
+ _initColumnField(allColumns, viewSetting) {
2847
+ const keyColumn = this._findColumnByDbName.transform(allColumns, viewSetting.ItemKeyField);
2848
+ const fileColumn = this._findColumnByDbName.transform(allColumns, viewSetting.FileField);
2849
+ const acceptedColumn = this._findColumnByDbName.transform(allColumns, viewSetting.AcceptedField);
2850
+ const rejectedReasonColumn = this._findColumnByDbName.transform(allColumns, viewSetting.RejectedReasonField);
2851
+ const statusColumn = this._findColumnByDbName.transform(allColumns, viewSetting.StatusField);
2852
+ !keyColumn && this._columnNotExistsInReport(viewSetting.ItemKeyField);
2853
+ !fileColumn && this._columnNotExistsInReport(viewSetting.FileField);
2854
+ !rejectedReasonColumn && this._columnNotExistsInReport(viewSetting.RejectedReasonField);
2855
+ !acceptedColumn && this._columnNotExistsInReport(viewSetting.AcceptedField);
2856
+ !statusColumn && this._columnNotExistsInReport(viewSetting.StatusField);
2857
+ keyColumn && (this.keyColumn = keyColumn);
2858
+ fileColumn && (this.fileColumn = fileColumn);
2859
+ acceptedColumn && (this.acceptedColumn = acceptedColumn);
2860
+ rejectedReasonColumn && (this.rejectedReasonColumn = rejectedReasonColumn);
2861
+ statusColumn && (this.statusColumn = statusColumn);
2862
+ }
2863
+ _subscribeOnUploadFile(fileColumn) {
2864
+ this._filesValidationHelper = new FilesValidationHelper(0, 0, 0);
2865
+ if (this._uploadService) {
2866
+ this._createLinearHelper(this._uploadService, this._filesValidationHelper, fileColumn.FieldDefId);
2867
+ this.uploadingState$ = this._uploadService.uploadingState$;
2868
+ }
2869
+ else {
2870
+ throw new Error('UploadService not provided.');
2871
+ }
2872
+ this._linearHelper.newFileUploaded$.subscribe((file) => {
2873
+ const mo = this.moDataList.find((c) => c.Id === this.selectedMo.Id);
2874
+ if (mo) {
2875
+ mo[fileColumn.Name].Files = [...mo[fileColumn.Name].Files, file];
2876
+ this._updateMo(mo);
2877
+ }
2878
+ });
2879
+ }
2880
+ _updateMo(mo) {
2881
+ mo.$NewInlineMo = undefined;
2882
+ if (mo.$State === 'Unchanged') {
2883
+ mo.$State = 'Modified';
2884
+ }
2885
+ this.updateMo.emit(mo);
2886
+ this._checkMandatory();
2887
+ }
2888
+ _createLinearHelper(uploadService, filesValidationHelper, fieldDefId) {
2889
+ this._linearHelper = new LinearListHelper(uploadService, filesValidationHelper, fieldDefId);
2890
+ }
2891
+ _uploadFile(files, documentItem) {
2892
+ const filesValidationHelper = this._filesValidationHelper;
2893
+ filesValidationHelper.maxFileCount = +documentItem.MaxFileCount;
2894
+ filesValidationHelper.maxFileSize = +documentItem.EachFileSize;
2895
+ filesValidationHelper.maxTotalFileSize = +documentItem.MaxFileSize;
2896
+ this._linearHelper.uploadToServer(files, documentItem.Title);
2897
+ }
2898
+ _columnNotExistsInReport(columnCaption) {
2899
+ throw new Error(`can not find ${columnCaption} column in report.please add it to report columns.`);
2900
+ }
2901
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaDocumentsComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1$1.FindColumnByDbNamePipe }, { token: i1$1.UlvMainService }, { token: i1$1.PortalService }, { token: i2$2.DialogService }, { token: i1$1.UploadService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
2902
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaDocumentsComponent, selector: "bdc-barsa-documents", providers: [UploadService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <ul fd-list [byline]=\"true\" fdCompact [selection]=\"false\"> -->\r\n<table fd-table aria-label=\"Default\" [allCellsFocusable]=\"true\" [noBorderX]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>{{ '\u0639\u06A9\u0633' | bbbTranslate }}</th>\r\n <th fd-table-cell style=\"min-width: 140px; width: auto\">{{ '\u0646\u0648\u0639 \u0645\u062F\u0631\u06A9' | bbbTranslate }}</th>\r\n <th fd-table-cell style=\"width: 99%\">{{ '\u0627\u0644\u0635\u0627\u0642 \u0641\u0627\u06CC\u0644' | bbbTranslate }}</th>\r\n <th fd-table-cell></th>\r\n <th fd-table-cell style=\"width: 400px; min-width: 400px; max-width: 400px\">{{ '\u0648\u0636\u0639\u06CC\u062A' | bbbTranslate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (mo of moDataList; track _trackByRow($index, mo)) { @if (mo.$documentItem) {\r\n <bdc-barsa-document-list-item\r\n [documentItem]=\"mo.$documentItem\"\r\n [accepted]=\"mo[acceptedColumn.Name]\"\r\n [files]=\"mo[fileColumn.Name].Files\"\r\n [uploadingState]=\"(uploadingState$ | async)!!\"\r\n [rejectedReason]=\"mo[rejectedReasonColumn.Name]\"\r\n [fileDbName]=\"fileColumn.Name\"\r\n [status]=\"+mo[statusColumn.Name]\"\r\n [deviceSize]=\"deviceSize\"\r\n [readonly]=\"!access.Edit\"\r\n [deviceSize]=\"deviceSize\"\r\n (removeFile)=\"onRemoveFile($event, mo)\"\r\n (fileSelectionChange)=\"onFileSelection($event, mo.$documentItem, mo)\"\r\n (rejectTextChange)=\"onRejectedTextChange($event, mo)\"\r\n (statusChanged)=\"onStatusChanged($event, mo)\"\r\n ></bdc-barsa-document-list-item>\r\n } }\r\n <!-- </ul> -->\r\n </tbody>\r\n</table>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i3$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i3$6.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i3$6.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i3$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i3$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "component", type: BarsaDocumentListItemComponent, selector: "bdc-barsa-document-list-item", inputs: ["documentItem", "deviceSize", "files", "accepted", "rejectedReason", "readonly", "status", "uploadingState"], outputs: ["statusChanged", "rejectTextChange", "fileSelectionChange", "removeFile", "fullscreen", "download", "downloadAll"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2903
+ }
2904
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaDocumentsComponent, decorators: [{
2905
+ type: Component,
2906
+ args: [{ selector: 'bdc-barsa-documents', changeDetection: ChangeDetectionStrategy.OnPush, providers: [UploadService], template: "<!-- <ul fd-list [byline]=\"true\" fdCompact [selection]=\"false\"> -->\r\n<table fd-table aria-label=\"Default\" [allCellsFocusable]=\"true\" [noBorderX]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>{{ '\u0639\u06A9\u0633' | bbbTranslate }}</th>\r\n <th fd-table-cell style=\"min-width: 140px; width: auto\">{{ '\u0646\u0648\u0639 \u0645\u062F\u0631\u06A9' | bbbTranslate }}</th>\r\n <th fd-table-cell style=\"width: 99%\">{{ '\u0627\u0644\u0635\u0627\u0642 \u0641\u0627\u06CC\u0644' | bbbTranslate }}</th>\r\n <th fd-table-cell></th>\r\n <th fd-table-cell style=\"width: 400px; min-width: 400px; max-width: 400px\">{{ '\u0648\u0636\u0639\u06CC\u062A' | bbbTranslate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (mo of moDataList; track _trackByRow($index, mo)) { @if (mo.$documentItem) {\r\n <bdc-barsa-document-list-item\r\n [documentItem]=\"mo.$documentItem\"\r\n [accepted]=\"mo[acceptedColumn.Name]\"\r\n [files]=\"mo[fileColumn.Name].Files\"\r\n [uploadingState]=\"(uploadingState$ | async)!!\"\r\n [rejectedReason]=\"mo[rejectedReasonColumn.Name]\"\r\n [fileDbName]=\"fileColumn.Name\"\r\n [status]=\"+mo[statusColumn.Name]\"\r\n [deviceSize]=\"deviceSize\"\r\n [readonly]=\"!access.Edit\"\r\n [deviceSize]=\"deviceSize\"\r\n (removeFile)=\"onRemoveFile($event, mo)\"\r\n (fileSelectionChange)=\"onFileSelection($event, mo.$documentItem, mo)\"\r\n (rejectTextChange)=\"onRejectedTextChange($event, mo)\"\r\n (statusChanged)=\"onStatusChanged($event, mo)\"\r\n ></bdc-barsa-document-list-item>\r\n } }\r\n <!-- </ul> -->\r\n </tbody>\r\n</table>\r\n", styles: [":host{display:block}\n"] }]
2907
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$1.FindColumnByDbNamePipe }, { type: i1$1.UlvMainService }, { type: i1$1.PortalService }, { type: i2$2.DialogService }, { type: i1$1.UploadService, decorators: [{
2908
+ type: Optional
2909
+ }] }] });
2910
+
2911
+ class AcceptRejectComponent extends BaseComponent {
2912
+ constructor(_cdr) {
2913
+ super();
2914
+ this._cdr = _cdr;
2915
+ this.rejectedChanged = new EventEmitter();
2916
+ this.id = getUniqueId(3);
2917
+ this.applied = false;
2918
+ }
2919
+ ngOnInit() {
2920
+ super.ngOnInit();
2921
+ this._initilaize();
2922
+ }
2923
+ onReject() {
2924
+ this._raiseEvent(true, true, this.rejectedReason);
2925
+ }
2926
+ onReset() {
2927
+ this._raiseEvent(false, false);
2928
+ }
2929
+ onAccept() {
2930
+ this._raiseEvent(true, false);
2931
+ }
2932
+ _initilaize() {
2933
+ if (this.rejectedReason) {
2934
+ this.rejected = true;
2935
+ this.applied = true;
2936
+ }
2937
+ }
2938
+ _raiseEvent(applied, rejected, rejectedReason = '') {
2939
+ this.applied = applied;
2940
+ this.rejected = rejected;
2941
+ this.rejectedReason = rejectedReason;
2942
+ this.rejectedChanged.emit({ accept: rejected, error: rejectedReason });
2943
+ this._cdr.detectChanges();
2944
+ }
2945
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: AcceptRejectComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2946
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: AcceptRejectComponent, selector: "bdc-accept-reject", inputs: { negativeText: "negativeText", positiveText: "positiveText", rejectedReason: "rejectedReason", acceptedText: "acceptedText", deviceSize: "deviceSize", readonly: "readonly", rejected: "rejected" }, outputs: { rejectedChanged: "rejectedChanged" }, usesInheritance: true, ngImport: i0, template: "@if (!applied && !readonly) {\r\n<div>\r\n <button\r\n fd-button\r\n [label]=\"positiveText | bbbTranslate\"\r\n fdType=\"positive\"\r\n glyph=\"message-success\"\r\n ariaLabel=\"positive\"\r\n value=\"yes\"\r\n style=\"margin: 0 5px\"\r\n (click)=\"onAccept()\"\r\n ></button>\r\n <fd-popover [focusTrapped]=\"true\" [focusAutoCapture]=\"true\" [mobile]=\"deviceSize === 's'\" #popover>\r\n <fd-popover-control>\r\n <button\r\n fd-button\r\n [label]=\"negativeText | bbbTranslate\"\r\n glyph=\"message-error\"\r\n fdType=\"negative\"\r\n ariaLabel=\"Negative\"\r\n value=\"no\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px\">\r\n <div fd-popover-body-header>\r\n <div fd-bar [cozy]=\"true\" id=\"popover-bar-header-1\">\r\n <div fd-bar-left>\r\n <span\r\n fd-object-status\r\n status=\"negative\"\r\n glyph=\"message-error\"\r\n glyphAriaLabel=\"Negative\"\r\n title=\"Negative\"\r\n ></span>\r\n <fd-bar-element>\u0639\u0644\u062A \u0631\u062F</fd-bar-element>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-form-item>\r\n <fd-form-input-message-group>\r\n <textarea fd-form-control [id]=\"id\" [(ngModel)]=\"rejectedReason\"></textarea>\r\n </fd-form-input-message-group>\r\n </div>\r\n <div fd-popover-body-footer>\r\n <div fd-bar barDesign=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n [label]=\"'Ok' | bbbTranslate\"\r\n fdType=\"emphasized\"\r\n (click)=\"popover.close(); onReject()\"\r\n ></fd-button-bar>\r\n <fd-button-bar [label]=\"'Cancel' | bbbTranslate\" (click)=\"popover.close()\"></fd-button-bar>\r\n </div>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</div>\r\n} @if (readonly || applied) {\r\n<div>\r\n <span>{{ rejected ? rejectedReason : ('\u2713' + acceptedText | bbbTranslate) }}</span>\r\n <button fd-button glyph=\"decline\" fdType=\"transparent\" (click)=\"onReset()\"></button>\r\n</div>\r\n}\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1$1.MobileDirective, selector: "[mobile]" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3$3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i3$3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i3$3.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i3$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6$1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i6$1.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i6$1.FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "component", type: i6$3.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }, { kind: "component", type: i7$2.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7$2.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "directive", type: i7$2.PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "directive", type: i7$2.PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "component", type: i7$2.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2947
+ }
2948
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: AcceptRejectComponent, decorators: [{
2949
+ type: Component,
2950
+ args: [{ selector: 'bdc-accept-reject', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!applied && !readonly) {\r\n<div>\r\n <button\r\n fd-button\r\n [label]=\"positiveText | bbbTranslate\"\r\n fdType=\"positive\"\r\n glyph=\"message-success\"\r\n ariaLabel=\"positive\"\r\n value=\"yes\"\r\n style=\"margin: 0 5px\"\r\n (click)=\"onAccept()\"\r\n ></button>\r\n <fd-popover [focusTrapped]=\"true\" [focusAutoCapture]=\"true\" [mobile]=\"deviceSize === 's'\" #popover>\r\n <fd-popover-control>\r\n <button\r\n fd-button\r\n [label]=\"negativeText | bbbTranslate\"\r\n glyph=\"message-error\"\r\n fdType=\"negative\"\r\n ariaLabel=\"Negative\"\r\n value=\"no\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px\">\r\n <div fd-popover-body-header>\r\n <div fd-bar [cozy]=\"true\" id=\"popover-bar-header-1\">\r\n <div fd-bar-left>\r\n <span\r\n fd-object-status\r\n status=\"negative\"\r\n glyph=\"message-error\"\r\n glyphAriaLabel=\"Negative\"\r\n title=\"Negative\"\r\n ></span>\r\n <fd-bar-element>\u0639\u0644\u062A \u0631\u062F</fd-bar-element>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-form-item>\r\n <fd-form-input-message-group>\r\n <textarea fd-form-control [id]=\"id\" [(ngModel)]=\"rejectedReason\"></textarea>\r\n </fd-form-input-message-group>\r\n </div>\r\n <div fd-popover-body-footer>\r\n <div fd-bar barDesign=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n [label]=\"'Ok' | bbbTranslate\"\r\n fdType=\"emphasized\"\r\n (click)=\"popover.close(); onReject()\"\r\n ></fd-button-bar>\r\n <fd-button-bar [label]=\"'Cancel' | bbbTranslate\" (click)=\"popover.close()\"></fd-button-bar>\r\n </div>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</div>\r\n} @if (readonly || applied) {\r\n<div>\r\n <span>{{ rejected ? rejectedReason : ('\u2713' + acceptedText | bbbTranslate) }}</span>\r\n <button fd-button glyph=\"decline\" fdType=\"transparent\" (click)=\"onReset()\"></button>\r\n</div>\r\n}\r\n", styles: [":host{display:block}\n"] }]
2951
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { negativeText: [{
2952
+ type: Input
2953
+ }], positiveText: [{
2954
+ type: Input
2955
+ }], rejectedReason: [{
2956
+ type: Input
2957
+ }], acceptedText: [{
2958
+ type: Input
2959
+ }], deviceSize: [{
2960
+ type: Input
2961
+ }], readonly: [{
2962
+ type: Input
2963
+ }], rejected: [{
2964
+ type: Input
2965
+ }], rejectedChanged: [{
2966
+ type: Output
2967
+ }] } });
2968
+
2969
+ class FooterComponent extends BaseComponent {
2970
+ constructor(_portalService, _cdr) {
2971
+ super();
2972
+ this._portalService = _portalService;
2973
+ this._cdr = _cdr;
2974
+ _portalService.rtl$.pipe(withLatestFrom(_portalService.deviceSize$)).subscribe(([rtl, deviceSize]) => {
2975
+ this.rtl = rtl;
2976
+ this.deviceSize = deviceSize;
2977
+ });
2978
+ }
2979
+ ngOnInit() {
2980
+ super.ngOnInit();
2981
+ const { RelatedMo } = this.settings;
2982
+ if (!RelatedMo) {
2983
+ return;
2984
+ }
2985
+ this._portalService.loadMo(RelatedMo.Id, RelatedMo.$TypeDefId).subscribe((result) => {
2986
+ this.footer = result?.Data?.Mo;
2987
+ this._cdr.detectChanges();
2988
+ });
2989
+ }
2990
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FooterComponent, deps: [{ token: i1$1.PortalService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2991
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: FooterComponent, selector: "bdc-footer", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: "@if (footer) {\r\n<div fd-bar barDesign=\"footer\" [size]=\"'m_l'\" [class.rtl]=\"rtl\" class=\"footer\" [class.mobile]=\"deviceSize === 's'\">\r\n <div fd-bar-left class=\"left\">\r\n <a\r\n fd-button\r\n glyph=\"email\"\r\n [fd-inline-help]=\"('\u0627\u06CC\u0645\u06CC\u0644 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.Email\"\r\n [href]=\"'mailto:' + footer.Email\"\r\n fdType=\"transparent\"\r\n >\r\n </a>\r\n <a\r\n fd-button\r\n glyph=\"headset\"\r\n [fd-inline-help]=\"('\u0634\u0645\u0627\u0631\u0647 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.TelNumber\"\r\n [href]=\"'tel:' + footer.TelNumber\"\r\n fdType=\"transparent\"\r\n ></a>\r\n <fd-popover>\r\n <fd-popover-control>\r\n <button\r\n fd-button\r\n glyph=\"vertical-waterfall-chart\"\r\n [title]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\r\n aria-haspopup=\"menu\"\r\n fdType=\"transparent\"\r\n [fd-inline-help]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\r\n tabindex=\"0\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n <li fd-list-item class=\"all\">\r\n <i fd-list-icon glyph=\"bar-chart\"></i>\r\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u0632\u062F\u06CC\u062F\u06A9\u0646\u0646\u062F\u06AF\u0627\u0646 \u06A9\u0644 <strong>120</strong></span>\r\n </li>\r\n <li fd-list-item class=\"today\">\r\n <i fd-list-icon glyph=\"bar-chart\"></i>\r\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u0632\u062F\u06CC\u062F\u06A9\u0646\u0646\u062F\u06AF\u0627\u0646 \u0627\u0645\u0631\u0648\u0632 <strong>76</strong></span>\r\n </li>\r\n <li fd-list-item class=\"online\">\r\n <i fd-list-icon glyph=\"bar-chart\"></i>\r\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u06A9\u0627\u0631\u0628\u0631\u0627\u0646 \u0622\u0646\u0644\u0644\u0627\u06CC\u0646 <strong>10</strong></span>\r\n </li>\r\n </ul>\r\n </fd-popover-body>\r\n </fd-popover>\r\n <fd-popover>\r\n <fd-popover-control>\r\n <button\r\n [fd-inline-help]=\"'\u06A9\u0627\u0646\u0627\u0644 \u0627\u0631\u062A\u0628\u0627\u0637\u06CC' | bbbTranslate\"\r\n tabindex=\"0\"\r\n fd-button\r\n glyph=\"paper-plane\"\r\n id=\"fd-action-sheet-default-control\"\r\n aria-haspopup=\"menu\"\r\n fdType=\"transparent\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n @for (socialNetwork of footer.SocialNetworks.MoDataList; track socialNetwork) {\r\n <li fd-list-item>\r\n <a fd-list-link [href]=\"socialNetwork.Url\" style=\"display: flex; column-gap: 5px\">\r\n <i fd-list-icon class=\"sap-icon--1\"\r\n ><img [src]=\"socialNetwork.Image?.FileId | picFieldSrc: 'ID':null:'':16:16\" />\r\n </i>\r\n <span fd-list-title>{{ socialNetwork.Title }}</span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </fd-popover-body>\r\n </fd-popover>\r\n <fd-bar-element>\r\n <a fd-link [href]=\"footer.SiteAddress\" tabindex=\"0\"\r\n ><fd-icon glyph=\"world\"> </fd-icon> <span style=\"padding: 0 5px\">{{ footer.SiteTitle }}</span></a\r\n >\r\n </fd-bar-element>\r\n </div>\r\n @if (deviceSize !== 's') {\r\n <div fd-bar-middle class=\"middle\">\r\n <fd-bar-element> {{ footer.Copyright | bbbTranslate }}</fd-bar-element>\r\n </div>\r\n }\r\n <div fd-bar-right class=\"right\"></div>\r\n</div>\r\n}\r\n", styles: [".fd-bar.mobile{flex-direction:column!important}.fd-bar.mobile .left,.fd-bar.mobile .right,.fd-bar.mobile .middle{justify-content:center!important}.online i{color:#006400}.all i{color:#bebebe}.todat i{color:#000}.left{display:flex;column-gap:3px}\n"], dependencies: [{ kind: "component", type: i3$3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i3$3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3$3.BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: i3$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i3$3.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i3$4.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i2$3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "directive", type: i9.InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help"] }, { kind: "component", type: i7$1.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i7$1.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i7$1.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i7$1.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role"] }, { kind: "directive", type: i7$1.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i7$2.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7$2.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i7$2.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2992
+ }
2993
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FooterComponent, decorators: [{
2994
+ type: Component,
2995
+ args: [{ selector: 'bdc-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (footer) {\r\n<div fd-bar barDesign=\"footer\" [size]=\"'m_l'\" [class.rtl]=\"rtl\" class=\"footer\" [class.mobile]=\"deviceSize === 's'\">\r\n <div fd-bar-left class=\"left\">\r\n <a\r\n fd-button\r\n glyph=\"email\"\r\n [fd-inline-help]=\"('\u0627\u06CC\u0645\u06CC\u0644 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.Email\"\r\n [href]=\"'mailto:' + footer.Email\"\r\n fdType=\"transparent\"\r\n >\r\n </a>\r\n <a\r\n fd-button\r\n glyph=\"headset\"\r\n [fd-inline-help]=\"('\u0634\u0645\u0627\u0631\u0647 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.TelNumber\"\r\n [href]=\"'tel:' + footer.TelNumber\"\r\n fdType=\"transparent\"\r\n ></a>\r\n <fd-popover>\r\n <fd-popover-control>\r\n <button\r\n fd-button\r\n glyph=\"vertical-waterfall-chart\"\r\n [title]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\r\n aria-haspopup=\"menu\"\r\n fdType=\"transparent\"\r\n [fd-inline-help]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\r\n tabindex=\"0\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n <li fd-list-item class=\"all\">\r\n <i fd-list-icon glyph=\"bar-chart\"></i>\r\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u0632\u062F\u06CC\u062F\u06A9\u0646\u0646\u062F\u06AF\u0627\u0646 \u06A9\u0644 <strong>120</strong></span>\r\n </li>\r\n <li fd-list-item class=\"today\">\r\n <i fd-list-icon glyph=\"bar-chart\"></i>\r\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u0632\u062F\u06CC\u062F\u06A9\u0646\u0646\u062F\u06AF\u0627\u0646 \u0627\u0645\u0631\u0648\u0632 <strong>76</strong></span>\r\n </li>\r\n <li fd-list-item class=\"online\">\r\n <i fd-list-icon glyph=\"bar-chart\"></i>\r\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u06A9\u0627\u0631\u0628\u0631\u0627\u0646 \u0622\u0646\u0644\u0644\u0627\u06CC\u0646 <strong>10</strong></span>\r\n </li>\r\n </ul>\r\n </fd-popover-body>\r\n </fd-popover>\r\n <fd-popover>\r\n <fd-popover-control>\r\n <button\r\n [fd-inline-help]=\"'\u06A9\u0627\u0646\u0627\u0644 \u0627\u0631\u062A\u0628\u0627\u0637\u06CC' | bbbTranslate\"\r\n tabindex=\"0\"\r\n fd-button\r\n glyph=\"paper-plane\"\r\n id=\"fd-action-sheet-default-control\"\r\n aria-haspopup=\"menu\"\r\n fdType=\"transparent\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n @for (socialNetwork of footer.SocialNetworks.MoDataList; track socialNetwork) {\r\n <li fd-list-item>\r\n <a fd-list-link [href]=\"socialNetwork.Url\" style=\"display: flex; column-gap: 5px\">\r\n <i fd-list-icon class=\"sap-icon--1\"\r\n ><img [src]=\"socialNetwork.Image?.FileId | picFieldSrc: 'ID':null:'':16:16\" />\r\n </i>\r\n <span fd-list-title>{{ socialNetwork.Title }}</span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </fd-popover-body>\r\n </fd-popover>\r\n <fd-bar-element>\r\n <a fd-link [href]=\"footer.SiteAddress\" tabindex=\"0\"\r\n ><fd-icon glyph=\"world\"> </fd-icon> <span style=\"padding: 0 5px\">{{ footer.SiteTitle }}</span></a\r\n >\r\n </fd-bar-element>\r\n </div>\r\n @if (deviceSize !== 's') {\r\n <div fd-bar-middle class=\"middle\">\r\n <fd-bar-element> {{ footer.Copyright | bbbTranslate }}</fd-bar-element>\r\n </div>\r\n }\r\n <div fd-bar-right class=\"right\"></div>\r\n</div>\r\n}\r\n", styles: [".fd-bar.mobile{flex-direction:column!important}.fd-bar.mobile .left,.fd-bar.mobile .right,.fd-bar.mobile .middle{justify-content:center!important}.online i{color:#006400}.all i{color:#bebebe}.todat i{color:#000}.left{display:flex;column-gap:3px}\n"] }]
2996
+ }], ctorParameters: () => [{ type: i1$1.PortalService }, { type: i0.ChangeDetectorRef }], propDecorators: { settings: [{
2997
+ type: Input
2998
+ }] } });
2999
+
3000
+ class BarsaGeographicLocationComponent extends BaseComponent {
3001
+ constructor(_el) {
3002
+ super();
3003
+ this._el = _el;
3004
+ this.move = new EventEmitter();
3005
+ this.moveEnd = new EventEmitter();
3006
+ this.fullscreen = new EventEmitter();
3007
+ this.exitFullscreen = new EventEmitter();
3008
+ this.errorEvent = new EventEmitter();
3009
+ this.markerChange = new EventEmitter();
3010
+ this._navigatorOptions = {
3011
+ enableHighAccuracy: true,
3012
+ timeout: 5000,
3013
+ maximumAge: 0
3014
+ };
3015
+ }
3016
+ ngAfterViewInit() {
3017
+ super.ngAfterViewInit();
3018
+ head.load([
3019
+ 'Lib/leaflet/leaflet.css',
3020
+ 'Lib/leaflet/leaflet-src.js',
3021
+ 'Lib/leaflet/SearchControl.js',
3022
+ 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon.css',
3023
+ 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon.js',
3024
+ 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker.js',
3025
+ 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon-barsa.js'
3026
+ ], () => this._initilaize());
3027
+ }
3028
+ onCurrentLocation() {
3029
+ if (this.disableOrReadonly) {
3030
+ return;
3031
+ }
3032
+ this._getNavigatorCurrentPosition();
3033
+ }
3034
+ onFullscreen() {
3035
+ this.fullscreen.emit();
3036
+ }
3037
+ onExitFullscreen() {
3038
+ this.exitFullscreen.emit();
3039
+ }
3040
+ _addMarkers(disableOrReadonly, pos) {
3041
+ this._setGeoLocation({ latitude: pos[0], longitude: pos[1] }, disableOrReadonly);
3042
+ }
3043
+ _initilaize() {
3044
+ this._map = L.map(this._el.nativeElement);
3045
+ const location = this.defaultLocation;
3046
+ if (this.latitude) {
3047
+ location[0] = Number(this.latitude);
3048
+ location[1] = Number(this.longitude);
3049
+ }
3050
+ this._setGeoLocation({
3051
+ latitude: location[0],
3052
+ longitude: location[1]
3053
+ }, this.disableOrReadonly, true, false);
3054
+ if (!this.disableOrReadonly && this.setAutomaticLocation && !this.latitude) {
3055
+ // درصورتی که از قبل مقدار نداشته باشد
3056
+ this._getNavigatorCurrentPosition();
3057
+ }
3058
+ }
3059
+ _onErrorNavigatorLocation(err) {
3060
+ this.errorEvent.emit(err);
3061
+ }
3062
+ _setGeoLocation(position, disableOrReadonly = false, setView = false, fireEvent = true) {
3063
+ if (this._marker) {
3064
+ this._map.removeLayer(this._marker);
3065
+ this._marker = null;
3066
+ }
3067
+ const { latitude, longitude } = position;
3068
+ L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
3069
+ attribution: '',
3070
+ maxZoom: 18,
3071
+ id: 'mapbox/streets-v11',
3072
+ tileSize: 512,
3073
+ zoomOffset: -1,
3074
+ accessToken: 'pk.eyJ1IjoibXJlemFkZXZlbG9wZXIiLCJhIjoiY2p6anlrdTE2MDBxdjNtczZtYWFqbHFmdiJ9.SzniRy2KH6U3gdbOFnwA7Q'
3075
+ }).addTo(this._map);
3076
+ if (setView) {
3077
+ this._map.setView([latitude, longitude], 18);
3078
+ }
3079
+ const marker = this._createMarker('0', { mo: 'test' }, latitude, longitude, 'my location', '', !disableOrReadonly && this.draggable === true);
3080
+ marker.addTo(this._map);
3081
+ this._marker = marker;
3082
+ if (!disableOrReadonly && fireEvent) {
3083
+ this.markerChange.emit({ latitude, longitude });
3084
+ }
3085
+ }
3086
+ _getNavigatorCurrentPosition() {
3087
+ if (navigator.geolocation) {
3088
+ navigator.geolocation.getCurrentPosition((position) => this._setGeoLocation({ latitude: position.coords.latitude, longitude: position.coords.longitude }, this.disableOrReadonly, true), (err) => this._onErrorNavigatorLocation(err), this._navigatorOptions);
3089
+ }
3090
+ }
3091
+ _createMarker(id, mo, lat, lng, text, icon, draggable) {
3092
+ const markerCfg = {
3093
+ Id: id,
3094
+ Data: mo,
3095
+ title: text,
3096
+ draggable,
3097
+ icon: L.divIcon({
3098
+ html: icon
3099
+ ? `<fd-icon style="font-size:1rem" class="sap-icon--${icon}"></fd-icon>`
3100
+ : `<img style="width:32px" src="${'assets/svg/location-sign.svg'}"/>`,
3101
+ iconSize: [20, 20],
3102
+ className: 'my-location'
3103
+ })
3104
+ };
3105
+ // var marker = L.BeautifyMarker.marker([Number(lat), Number(lng)], {
3106
+ const marker = L.marker([Number(lat), Number(lng)], markerCfg);
3107
+ marker.on('moveend', (e) => {
3108
+ this._onMoveEnd(e);
3109
+ });
3110
+ marker.on('move', (e) => {
3111
+ this._onMove(e);
3112
+ });
3113
+ return marker;
3114
+ }
3115
+ _onMove(e) {
3116
+ this.move.emit(e);
3117
+ }
3118
+ _onMoveEnd(e) {
3119
+ this.moveEnd.emit(e);
3120
+ }
3121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaGeographicLocationComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
3122
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaGeographicLocationComponent, selector: "bdc-barsa-geographic-location", inputs: { disableOrReadonly: "disableOrReadonly", setAutomaticLocation: "setAutomaticLocation", showLocationButton: "showLocationButton", showFullscreenButton: "showFullscreenButton", showExitFullscreenButton: "showExitFullscreenButton", draggable: "draggable", defaultLocation: "defaultLocation", latitude: "latitude", longitude: "longitude" }, outputs: { move: "move", moveEnd: "moveEnd", fullscreen: "fullscreen", exitFullscreen: "exitFullscreen", errorEvent: "errorEvent", markerChange: "markerChange" }, usesInheritance: true, ngImport: i0, template: "<div style=\"position: absolute; z-index: 1000; display: flex; flex-direction: column; row-gap: 5px; left: 0; bottom: 0\">\r\n @if (showFullscreenButton) {\r\n <button fd-button glyph=\"resize\" fdType=\"positive\" (click)=\"onFullscreen()\"></button>\r\n } @if (showExitFullscreenButton) {\r\n <button fd-button glyph=\"exitfullscreen\" fdType=\"positive\" (click)=\"onExitFullscreen()\"></button>\r\n } @if (showLocationButton || disableOrReadonly) {\r\n <button fd-button glyph=\"map\" fdType=\"positive\" (click)=\"onCurrentLocation()\"></button>\r\n }\r\n</div>\r\n", styles: [":host{display:block;min-height:300px;position:relative}\n"], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3123
+ }
3124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaGeographicLocationComponent, decorators: [{
3125
+ type: Component,
3126
+ args: [{ selector: 'bdc-barsa-geographic-location', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div style=\"position: absolute; z-index: 1000; display: flex; flex-direction: column; row-gap: 5px; left: 0; bottom: 0\">\r\n @if (showFullscreenButton) {\r\n <button fd-button glyph=\"resize\" fdType=\"positive\" (click)=\"onFullscreen()\"></button>\r\n } @if (showExitFullscreenButton) {\r\n <button fd-button glyph=\"exitfullscreen\" fdType=\"positive\" (click)=\"onExitFullscreen()\"></button>\r\n } @if (showLocationButton || disableOrReadonly) {\r\n <button fd-button glyph=\"map\" fdType=\"positive\" (click)=\"onCurrentLocation()\"></button>\r\n }\r\n</div>\r\n", styles: [":host{display:block;min-height:300px;position:relative}\n"] }]
3127
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { disableOrReadonly: [{
3128
+ type: Input
3129
+ }], setAutomaticLocation: [{
3130
+ type: Input
3131
+ }], showLocationButton: [{
3132
+ type: Input
3133
+ }], showFullscreenButton: [{
3134
+ type: Input
3135
+ }], showExitFullscreenButton: [{
3136
+ type: Input
3137
+ }], draggable: [{
3138
+ type: Input
3139
+ }], defaultLocation: [{
3140
+ type: Input
3141
+ }], latitude: [{
3142
+ type: Input
3143
+ }], longitude: [{
3144
+ type: Input
3145
+ }], move: [{
3146
+ type: Output
3147
+ }], moveEnd: [{
3148
+ type: Output
3149
+ }], fullscreen: [{
3150
+ type: Output
3151
+ }], exitFullscreen: [{
3152
+ type: Output
3153
+ }], errorEvent: [{
3154
+ type: Output
3155
+ }], markerChange: [{
3156
+ type: Output
3157
+ }] } });
3158
+
3159
+ class GeographicLocationComponent extends UiMoInfoSubFormUiComponent {
3160
+ constructor() {
3161
+ super(...arguments);
3162
+ this.fullscreen = false;
3163
+ }
3164
+ get latitudeUi() {
3165
+ return this.customFormPanelUi._dictFieldUi.Latitude;
3166
+ }
3167
+ get longitudeUi() {
3168
+ return this.customFormPanelUi._dictFieldUi.Longitude;
3169
+ }
3170
+ openDialog(dialog) {
3171
+ this._dialogService.open(dialog, {
3172
+ responsivePadding: true,
3173
+ fullScreen: true,
3174
+ mobile: true,
3175
+ ariaLabelledBy: 'map',
3176
+ ariaDescribedBy: 'choose location',
3177
+ focusTrapped: true
3178
+ });
3179
+ }
3180
+ ngOnInit() {
3181
+ super.ngOnInit();
3182
+ this._setDefaultLatAndLong(this.latitudeUi?.value, this.longitudeUi?.value);
3183
+ }
3184
+ onFullscreen() {
3185
+ this.fullscreen = true;
3186
+ this.openDialog(this.dialogTemplate);
3187
+ }
3188
+ onExistFullscreen() {
3189
+ this.fullscreen = false;
3190
+ this._cdr.detectChanges();
3191
+ }
3192
+ onOpenChange(isOpen) {
3193
+ this.fullscreen = isOpen;
3194
+ }
3195
+ onErrorNavigatorLocation(err) {
3196
+ const err2 = `خطا در دریافت موقعیت مکانی جاری. (${err.message})`;
3197
+ BarsaApi.Bw.Toast.Error(err2);
3198
+ }
3199
+ onMove(e) {
3200
+ this._movePos = { latitude: e.latlng.lat, longitude: e.latlng.lng };
3201
+ }
3202
+ onMoveEnd(e) {
3203
+ this._handleMarkerChange(this._movePos);
3204
+ }
3205
+ onMarkerChange(e) {
3206
+ this._handleMarkerChange(e);
3207
+ }
3208
+ _handleMarkerChange(e) {
3209
+ const { latitude, longitude } = e;
3210
+ this.latitudeUi.value = latitude;
3211
+ this.longitudeUi.value = longitude;
3212
+ this._valueChanged();
3213
+ }
3214
+ _setDefaultLatAndLong(lat, lng) {
3215
+ if (lat && lng) {
3216
+ this.latValue = lat;
3217
+ this.lngValue = lng;
3218
+ }
3219
+ }
3220
+ _valueChanged() {
3221
+ this.latitudeUi.fireEvent('change', this.latitudeUi, this.latitudeUi.value);
3222
+ this.longitudeUi.fireEvent('change', this.longitudeUi, this.longitudeUi.value);
3223
+ }
3224
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: GeographicLocationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3225
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: GeographicLocationComponent, selector: "bdc-geographic-location", viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["confirmationDialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (customFormPanelUi) {\r\n<bnrc-form style=\"display: none\" *untilInView=\"el\" [customFormPanelUi]=\"customFormPanelUi\"></bnrc-form>\r\n} @if (!fullscreen) {\r\n<ng-container *ngTemplateOutlet=\"map; context: { inDialog: false }\"></ng-container>\r\n}\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #confirmationDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Map' | bbbTranslate }}</h1>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: true, dialog: dialog }\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n\r\n<ng-template #map let-inDialog=\"inDialog\" let-dialog=\"dialog\">\r\n <bdc-barsa-geographic-location\r\n [style.height]=\"inDialog ? 'height: 100% !important' : null\"\r\n [defaultLocation]=\"[35.7568, 51.412]\"\r\n [latitude]=\"latValue\"\r\n [longitude]=\"lngValue\"\r\n [showExitFullscreenButton]=\"true\"\r\n [showLocationButton]=\"customFieldInfo.ShowLocationButton\"\r\n [setAutomaticLocation]=\"customFieldInfo.GetCurrentLocation\"\r\n [disableOrReadonly]=\"(disableOrReadonly$ | async) === true\"\r\n [draggable]=\"customFieldInfo.Draggable === true\"\r\n (markerChange)=\"onMarkerChange($event)\"\r\n (move)=\"onMove($event)\"\r\n (errorEvent)=\"onErrorNavigatorLocation($event)\"\r\n (moveEnd)=\"onMoveEnd($event)\"\r\n (exitFullscreen)=\"onExistFullscreen(); dialog && dialog.close('Continue')\"\r\n ></bdc-barsa-geographic-location>\r\n</ng-template>\r\n", styles: [":host{display:block;position:relative}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "directive", type: i1$1.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "component", type: i4$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i4$2.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i4$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: BarsaGeographicLocationComponent, selector: "bdc-barsa-geographic-location", inputs: ["disableOrReadonly", "setAutomaticLocation", "showLocationButton", "showFullscreenButton", "showExitFullscreenButton", "draggable", "defaultLocation", "latitude", "longitude"], outputs: ["move", "moveEnd", "fullscreen", "exitFullscreen", "errorEvent", "markerChange"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3226
+ }
3227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: GeographicLocationComponent, decorators: [{
3228
+ type: Component,
3229
+ args: [{ selector: 'bdc-geographic-location', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (customFormPanelUi) {\r\n<bnrc-form style=\"display: none\" *untilInView=\"el\" [customFormPanelUi]=\"customFormPanelUi\"></bnrc-form>\r\n} @if (!fullscreen) {\r\n<ng-container *ngTemplateOutlet=\"map; context: { inDialog: false }\"></ng-container>\r\n}\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #confirmationDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Map' | bbbTranslate }}</h1>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: true, dialog: dialog }\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n\r\n<ng-template #map let-inDialog=\"inDialog\" let-dialog=\"dialog\">\r\n <bdc-barsa-geographic-location\r\n [style.height]=\"inDialog ? 'height: 100% !important' : null\"\r\n [defaultLocation]=\"[35.7568, 51.412]\"\r\n [latitude]=\"latValue\"\r\n [longitude]=\"lngValue\"\r\n [showExitFullscreenButton]=\"true\"\r\n [showLocationButton]=\"customFieldInfo.ShowLocationButton\"\r\n [setAutomaticLocation]=\"customFieldInfo.GetCurrentLocation\"\r\n [disableOrReadonly]=\"(disableOrReadonly$ | async) === true\"\r\n [draggable]=\"customFieldInfo.Draggable === true\"\r\n (markerChange)=\"onMarkerChange($event)\"\r\n (move)=\"onMove($event)\"\r\n (errorEvent)=\"onErrorNavigatorLocation($event)\"\r\n (moveEnd)=\"onMoveEnd($event)\"\r\n (exitFullscreen)=\"onExistFullscreen(); dialog && dialog.close('Continue')\"\r\n ></bdc-barsa-geographic-location>\r\n</ng-template>\r\n", styles: [":host{display:block;position:relative}\n"] }]
3230
+ }], propDecorators: { dialogTemplate: [{
3231
+ type: ViewChild,
3232
+ args: ['confirmationDialog']
3233
+ }] } });
3234
+
3235
+ class TokenReportViewComponent extends ReportViewBaseComponent {
3236
+ ngOnInit() {
3237
+ super.ngOnInit();
3238
+ }
3239
+ onRemoveItem(mo, index) {
3240
+ this.rowCheck.emit({ mo, index });
3241
+ let itemId = 'RemoveFromList';
3242
+ if (this.viewSetting?.DeleteAction === '1') {
3243
+ itemId = 'Delete';
3244
+ }
3245
+ this.executeToolbarButton.emit({ itemId });
3246
+ }
3247
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TokenReportViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3248
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TokenReportViewComponent, selector: "bdc-token-report-view", usesInheritance: true, ngImport: i0, template: "@for (mo of moDataList | multipleGroupBy: groupby; track mo; let index = $index; let last = $last) { @if (!mo.parent ||\r\nmo.parent?.expanded) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: mo,\r\n index: index,\r\n last: last,\r\n columns: columns,\r\n moDataList: moDataList,\r\n moDataListCount: moDataList.length\r\n }\r\n \"\r\n></ng-container>\r\n} }\r\n<ng-template\r\n #itemTemplate\r\n let-mo\r\n let-index=\"index\"\r\n let-last=\"last\"\r\n let-columns=\"columns\"\r\n let-moDataListCount=\"moDataListCount\"\r\n let-moDataList=\"moDataList\"\r\n>\r\n <fd-token fdCozy (onCloseClick)=\"onRemoveItem(mo, index)\" [readOnly]=\"false\">{{\r\n columns[0].Caption | rval: mo:columns:true\r\n }}</fd-token>\r\n</ng-template>\r\n", styles: [":host{display:flex;column-gap:5px;flex-wrap:wrap;row-gap:5px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$6.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i3$c.TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown", "elementFocused"] }, { kind: "pipe", type: i1$1.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3249
+ }
3250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TokenReportViewComponent, decorators: [{
3251
+ type: Component,
3252
+ args: [{ selector: 'bdc-token-report-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "@for (mo of moDataList | multipleGroupBy: groupby; track mo; let index = $index; let last = $last) { @if (!mo.parent ||\r\nmo.parent?.expanded) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: mo,\r\n index: index,\r\n last: last,\r\n columns: columns,\r\n moDataList: moDataList,\r\n moDataListCount: moDataList.length\r\n }\r\n \"\r\n></ng-container>\r\n} }\r\n<ng-template\r\n #itemTemplate\r\n let-mo\r\n let-index=\"index\"\r\n let-last=\"last\"\r\n let-columns=\"columns\"\r\n let-moDataListCount=\"moDataListCount\"\r\n let-moDataList=\"moDataList\"\r\n>\r\n <fd-token fdCozy (onCloseClick)=\"onRemoveItem(mo, index)\" [readOnly]=\"false\">{{\r\n columns[0].Caption | rval: mo:columns:true\r\n }}</fd-token>\r\n</ng-template>\r\n", styles: [":host{display:flex;column-gap:5px;flex-wrap:wrap;row-gap:5px}\n"] }]
3253
+ }] });
3254
+
3255
+ class ColumnFormViewerComponent extends ColumnRendererComponent {
3256
+ /**
3257
+ *
3258
+ */
3259
+ constructor(_cdr, _dialogService, _el) {
3260
+ super(_cdr);
3261
+ this._cdr = _cdr;
3262
+ this._dialogService = _dialogService;
3263
+ this._el = _el;
3264
+ this.isOpen = false;
3265
+ this.loadForm = false;
3266
+ this.loading = true;
3267
+ this.newPage = false;
3268
+ }
3269
+ ngOnInit() {
3270
+ super.ngOnInit();
3271
+ const columnMo = this.mo[this.column.Name];
3272
+ if (!columnMo) {
3273
+ return;
3274
+ }
3275
+ this.newPage = this.parameters.NewPage;
3276
+ this.formParam = {
3277
+ moId: columnMo.Id,
3278
+ typeDefId: columnMo.$TypeDefId,
3279
+ viewId: this.parameters.MetaView?.Id
3280
+ };
3281
+ }
3282
+ openPopover() {
3283
+ this.isOpen = true;
3284
+ this.loadForm = true;
3285
+ }
3286
+ onFormRendered(popover) {
3287
+ this.loading = false;
3288
+ if (this.newPage) {
3289
+ return;
3290
+ }
3291
+ popover.close();
3292
+ setTimeout(() => {
3293
+ popover.open();
3294
+ });
3295
+ }
3296
+ openMoInNewPage() {
3297
+ const columnMo = this.mo[this.column.Name];
3298
+ BarsaApi.Bw.Form.Show({
3299
+ MoId: columnMo.Id,
3300
+ MoContext: {
3301
+ ViewId: this.parameters.MetaView?.Id
3302
+ }
3303
+ });
3304
+ }
3305
+ openDialog(dialog, container) {
3306
+ const dialogRef = this._dialogService.open(dialog, {
3307
+ responsivePadding: true,
3308
+ focusTrapped: true,
3309
+ backdropClickCloseable: true,
3310
+ closeOnNavigation: true,
3311
+ hasBackdrop: false,
3312
+ container,
3313
+ escKeyCloseable: true,
3314
+ mobile: this.deviceSize === 's'
3315
+ });
3316
+ dialogRef.afterClosed.subscribe((result) => {
3317
+ this.confirmationReason = 'Dialog closed with result: ' + result;
3318
+ }, (error) => {
3319
+ this.confirmationReason = 'Dialog dismissed with result: ' + error;
3320
+ });
3321
+ }
3322
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ColumnFormViewerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2$2.DialogService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
3323
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ColumnFormViewerComponent, selector: "bdc-column-form-viewer", inputs: { layout94: "layout94", parameters: "parameters" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"newPage || deviceSize === 's' ? renderColumn : popoverTpl\"> </ng-container>\r\n<a href=\"http://localhost:4200/#/landingpage/query?actionlist=[{MoId:1,TypeDefId:1}]\"></a>\r\n<ng-template #popoverTpl>\r\n <fd-popover\r\n #popover\r\n [closeOnOutsideClick]=\"true\"\r\n [noArrow]=\"false\"\r\n placement=\"bottom-start\"\r\n [title]=\"column.Caption\"\r\n >\r\n <fd-popover-control>\r\n <ng-container *ngTemplateOutlet=\"renderColumn\"></ng-container>\r\n </fd-popover-control>\r\n <fd-popover-body class=\"popover-form-inColumn\">\r\n @if (loading && loadForm) {\r\n <div style=\"position: relative; height: 80px; width: 100%\">\r\n <bsu-mask [top]=\"'50%'\"></bsu-mask>\r\n </div>\r\n } @if (this.mo.Id && loadForm) {\r\n <bnrc-form\r\n [params]=\"formParam\"\r\n (formRendered)=\"onFormRendered(popover)\"\r\n (formClose)=\"popover.close()\"\r\n class=\"form-inColumn\"\r\n ></bnrc-form>\r\n }\r\n </fd-popover-body>\r\n </fd-popover>\r\n</ng-template>\r\n<ng-template #renderColumn>\r\n <bsu-column-renderer\r\n [mo]=\"mo\"\r\n [column]=\"column\"\r\n [value]=\"column | columnValue: mo | bbbTranslate\"\r\n [icon]=\"column | columnIcon: mo\"\r\n [editMode]=\"editMode\"\r\n [isChecked]=\"isChecked\"\r\n [index]=\"index\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [formLayoutShowLabel]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [controlUi]=\"column.Caption | controlUi: layout94\"\r\n (click)=\"newPage || deviceSize === 's' ? openMoInNewPage() : openPopover()\"\r\n ></bsu-column-renderer>\r\n</ng-template>\r\n", styles: [":host{display:flex;width:100%;height:100%;align-items:stretch;justify-content:stretch}:host fd-popover{flex:1}:host ::ng-deep span{color:var(--sapLinkColor);text-decoration:var(--fdLink_Text_Content_Decoration, none);cursor:pointer}:host ::ng-deep span:hover{text-decoration:var(--fdLink_Text_Content_Decoration, none)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "directive", type: i1$1.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "component", type: i2$1.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i2$1.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "deviceName", "deviceSize", "value", "icon"] }, { kind: "component", type: i7$2.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7$2.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i7$2.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1$1.ControlUiPipe, name: "controlUi" }, { kind: "pipe", type: i1$1.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i1$1.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3324
+ }
3325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ColumnFormViewerComponent, decorators: [{
3326
+ type: Component,
3327
+ args: [{ selector: 'bdc-column-form-viewer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngTemplateOutlet=\"newPage || deviceSize === 's' ? renderColumn : popoverTpl\"> </ng-container>\r\n<a href=\"http://localhost:4200/#/landingpage/query?actionlist=[{MoId:1,TypeDefId:1}]\"></a>\r\n<ng-template #popoverTpl>\r\n <fd-popover\r\n #popover\r\n [closeOnOutsideClick]=\"true\"\r\n [noArrow]=\"false\"\r\n placement=\"bottom-start\"\r\n [title]=\"column.Caption\"\r\n >\r\n <fd-popover-control>\r\n <ng-container *ngTemplateOutlet=\"renderColumn\"></ng-container>\r\n </fd-popover-control>\r\n <fd-popover-body class=\"popover-form-inColumn\">\r\n @if (loading && loadForm) {\r\n <div style=\"position: relative; height: 80px; width: 100%\">\r\n <bsu-mask [top]=\"'50%'\"></bsu-mask>\r\n </div>\r\n } @if (this.mo.Id && loadForm) {\r\n <bnrc-form\r\n [params]=\"formParam\"\r\n (formRendered)=\"onFormRendered(popover)\"\r\n (formClose)=\"popover.close()\"\r\n class=\"form-inColumn\"\r\n ></bnrc-form>\r\n }\r\n </fd-popover-body>\r\n </fd-popover>\r\n</ng-template>\r\n<ng-template #renderColumn>\r\n <bsu-column-renderer\r\n [mo]=\"mo\"\r\n [column]=\"column\"\r\n [value]=\"column | columnValue: mo | bbbTranslate\"\r\n [icon]=\"column | columnIcon: mo\"\r\n [editMode]=\"editMode\"\r\n [isChecked]=\"isChecked\"\r\n [index]=\"index\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [formLayoutShowLabel]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [controlUi]=\"column.Caption | controlUi: layout94\"\r\n (click)=\"newPage || deviceSize === 's' ? openMoInNewPage() : openPopover()\"\r\n ></bsu-column-renderer>\r\n</ng-template>\r\n", styles: [":host{display:flex;width:100%;height:100%;align-items:stretch;justify-content:stretch}:host fd-popover{flex:1}:host ::ng-deep span{color:var(--sapLinkColor);text-decoration:var(--fdLink_Text_Content_Decoration, none);cursor:pointer}:host ::ng-deep span:hover{text-decoration:var(--fdLink_Text_Content_Decoration, none)}\n"] }]
3328
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i2$2.DialogService }, { type: i0.ElementRef }], propDecorators: { layout94: [{
3329
+ type: Input
3330
+ }], parameters: [{
3331
+ type: Input
3332
+ }] } });
3333
+
3334
+ class FormReportViewItemComponent extends BaseViewItemPropsComponent {
3335
+ constructor() {
3336
+ super(...arguments);
3337
+ this.toolbarItems = [];
3338
+ }
3339
+ ngOnInit() {
3340
+ super.ngOnInit();
3341
+ this.mo.$FieldDict = this.fieldDict;
3342
+ delete this.mo.$Wrapper;
3343
+ const meFormSetting = JSON.parse(JSON.stringify(this.formSetting));
3344
+ const mo = new BarsaApi.Common.MetaObjectWeb(this.mo);
3345
+ meFormSetting.Data = { Mo: this.mo };
3346
+ const formpanelCtrlrParams = this.UlvMainCtrlr.DataCtrlr.GetEditFormParams(mo, false, false, null, null);
3347
+ this.formParams = {
3348
+ ...formpanelCtrlrParams,
3349
+ formSetting: meFormSetting,
3350
+ moId: this.mo.Id,
3351
+ typeDefId: this.typeDefId,
3352
+ isSimple: true,
3353
+ viewId: meFormSetting.View.TypeViewId
3354
+ };
3355
+ }
3356
+ onMoChanged(mo) {
3357
+ this.UlvMainCtrlr.RefreshRowsByMosNoSelectionChange([mo], [], []);
3358
+ }
3359
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FormReportViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3360
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: FormReportViewItemComponent, selector: "bdc-form-report-view-item", inputs: { mo: "mo", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", saveOnValueChanged: "saveOnValueChanged" }, usesInheritance: true, ngImport: i0, template: "<bnrc-form\r\n class=\"form-report-view-item\"\r\n [params]=\"formParams\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n (moChanged)=\"onMoChanged($event)\"\r\n [saveOnChange]=\"saveOnValueChanged\"\r\n></bnrc-form>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1$1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3361
+ }
3362
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FormReportViewItemComponent, decorators: [{
3363
+ type: Component,
3364
+ args: [{ selector: 'bdc-form-report-view-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bnrc-form\r\n class=\"form-report-view-item\"\r\n [params]=\"formParams\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n (moChanged)=\"onMoChanged($event)\"\r\n [saveOnChange]=\"saveOnValueChanged\"\r\n></bnrc-form>\r\n" }]
3365
+ }], propDecorators: { mo: [{
3366
+ type: Input
3367
+ }], UlvMainCtrlr: [{
3368
+ type: Input
3369
+ }], fieldDict: [{
3370
+ type: Input
3371
+ }], saveOnValueChanged: [{
3372
+ type: Input
3373
+ }] } });
3374
+
3375
+ class FormReportViewComponent extends ReportViewBaseComponent {
3376
+ ngOnInit() {
3377
+ super.ngOnInit();
3378
+ const x = BarsaApi.Bw.RunBlMethod('GetSerializeFormSetting', this.parameters?.MetaTypeDefValue.Id || this.typeViewId);
3379
+ this.formSettingItem = BarsaApi.Ext.decode(x);
3380
+ }
3381
+ _trackByRow(index, row) {
3382
+ return `${row.Id}`;
3383
+ }
3384
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FormReportViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3385
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: FormReportViewComponent, selector: "bdc-form-report-view", viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "@if (moDataList?.length) { @if (formSettingItem) { @for (mo of moDataList; track _trackByRow(index, mo); let index =\r\n$index; let last = $last) {\r\n<bdc-form-report-view-item\r\n [setting]=\"viewSetting\"\r\n [formSetting]=\"formSettingItem\"\r\n [fieldDict]=\"fieldDict\"\r\n [typeDefId]=\"typeDefId\"\r\n [columnsCount]=\"columnsCount\"\r\n [allColumns]=\"allColumns\"\r\n [columns]=\"columns\"\r\n [moDataList]=\"moDataList\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [index]=\"index\"\r\n [mo]=\"mo\"\r\n [rtl]=\"rtl\"\r\n [saveOnValueChanged]=\"viewSetting.SaveOnValueChanged\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel(mo)\"\r\n (click)=\"onRowCheck({mo, index})\"\r\n>\r\n</bdc-form-report-view-item>\r\n} } } @else {\r\n<bsu-no-data></bsu-no-data>\r\n}\r\n", styles: [":host{display:flex;flex-direction:column;row-gap:.825rem;margin-bottom:1rem}\n"], dependencies: [{ kind: "component", type: i2$1.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "component", type: FormReportViewItemComponent, selector: "bdc-form-report-view-item", inputs: ["mo", "UlvMainCtrlr", "fieldDict", "saveOnValueChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3386
+ }
3387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FormReportViewComponent, decorators: [{
3388
+ type: Component,
3389
+ args: [{ selector: 'bdc-form-report-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (moDataList?.length) { @if (formSettingItem) { @for (mo of moDataList; track _trackByRow(index, mo); let index =\r\n$index; let last = $last) {\r\n<bdc-form-report-view-item\r\n [setting]=\"viewSetting\"\r\n [formSetting]=\"formSettingItem\"\r\n [fieldDict]=\"fieldDict\"\r\n [typeDefId]=\"typeDefId\"\r\n [columnsCount]=\"columnsCount\"\r\n [allColumns]=\"allColumns\"\r\n [columns]=\"columns\"\r\n [moDataList]=\"moDataList\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [index]=\"index\"\r\n [mo]=\"mo\"\r\n [rtl]=\"rtl\"\r\n [saveOnValueChanged]=\"viewSetting.SaveOnValueChanged\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel(mo)\"\r\n (click)=\"onRowCheck({mo, index})\"\r\n>\r\n</bdc-form-report-view-item>\r\n} } } @else {\r\n<bsu-no-data></bsu-no-data>\r\n}\r\n", styles: [":host{display:flex;flex-direction:column;row-gap:.825rem;margin-bottom:1rem}\n"] }]
3390
+ }], propDecorators: { containerRef: [{
3391
+ type: ViewChild,
3392
+ args: ['containerRef', { static: true, read: ViewContainerRef }]
3393
+ }] } });
3394
+
3395
+ class FormCardComponent extends FormPropsBaseComponent {
3396
+ ngOnInit() {
3397
+ super.ngOnInit();
3398
+ }
3399
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FormCardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3400
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: FormCardComponent, selector: "bdc-form-card", providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<fd-card cardType=\"object\">\r\n @if (toolbarItems) {\r\n <!-- <fd-card-header *ngIf=\"toolbarVisible !== false && toolbarItems.length\">\r\n <div fd-card-title></div>\r\n <div fd-card-subtitle style=\"width: 100%\"></div>\r\n </fd-card-header> -->\r\n }\r\n <fd-card-content>\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n ></bsu-ly-layout-container-of-root>\r\n </fd-card-content>\r\n</fd-card>\r\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"], dependencies: [{ kind: "component", type: i2$1.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i4$3.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i4$3.CardContentComponent, selector: "fd-card-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3401
+ }
3402
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FormCardComponent, decorators: [{
3403
+ type: Component,
3404
+ args: [{ selector: 'bdc-form-card', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "<fd-card cardType=\"object\">\r\n @if (toolbarItems) {\r\n <!-- <fd-card-header *ngIf=\"toolbarVisible !== false && toolbarItems.length\">\r\n <div fd-card-title></div>\r\n <div fd-card-subtitle style=\"width: 100%\"></div>\r\n </fd-card-header> -->\r\n }\r\n <fd-card-content>\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n ></bsu-ly-layout-container-of-root>\r\n </fd-card-content>\r\n</fd-card>\r\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"] }]
3405
+ }] });
3406
+
3407
+ const components = [
3408
+ LoginFormComponent,
3409
+ LoginSocialConncetionsComponent,
3410
+ UiPersonComponent,
3411
+ BarcodeReaderComponent,
3412
+ BarcodeReaderDialogComponent,
3413
+ BarcodeReaderVideoComponent,
3414
+ SettingFormComponent,
3415
+ MicroProcessFlowViewComponent,
3416
+ UiEnumSegmentedButtonComponent,
3417
+ TabProcessViewComponent,
3418
+ UiTextFieldSearchComponent,
3419
+ ServiceDeskHeaderComponent,
3420
+ CardContentImageAndTitleComponent,
3421
+ CardHeaderLogoTitleSubtitleComponent,
3422
+ FormContentQuickViewComponent,
3423
+ ServiceDeskServcieDetailComponent,
3424
+ ServiceDeskViewOfServicesComponent,
3425
+ ServiceDeskCardContentMojavezhayAkhzShodeComponent,
3426
+ CardHeaderBigImageTitleAndSubtitleComponent,
3427
+ ServiceDeskFormLayoutContentMojavezComponent,
3428
+ UlvContextMenuItemShowFileContentComponent,
3429
+ ResendVerificationCodeComponent,
3430
+ CheckboxButtonComponent,
3431
+ ReportTabViewComponent,
3432
+ ReportLineChartViewComponent,
3433
+ CardHeaderKpiComponent,
3434
+ CardContentLineChartComponent,
3435
+ FormChartContentComponent,
3436
+ TableViewVerticalColumnsComponent,
3437
+ QueryStringObservableComponent,
3438
+ QueryStringFormObservableComponent,
3439
+ G4bDetailsComponent,
3440
+ AvatarComponent,
3441
+ G4bEstelamComponent,
3442
+ TimerCountDownComponent,
3443
+ MoInfoMicroProccessFlowComponent,
3444
+ MicroProccessFlowComponent,
3445
+ EnumInfoMicroProccessFlowComponent,
3446
+ UiPicturesCarouselComponent,
3447
+ UiNumRateComponent,
3448
+ MediaFileUploaderComponent,
3449
+ SubformInRowReportComponent,
3450
+ MasterDetailCardFormComponent,
3451
+ ReportButtonViewComponent,
3452
+ BarsaDocumentsComponent,
3453
+ BarsaDocumentListItemComponent,
3454
+ AcceptRejectComponent,
3455
+ FooterComponent,
3456
+ GeographicLocationComponent,
3457
+ BarsaGeographicLocationComponent,
3458
+ TokenReportViewComponent,
3459
+ ColumnFormViewerComponent,
3460
+ FormReportViewComponent,
3461
+ FormReportViewItemComponent,
3462
+ FormCardComponent
3463
+ ];
3464
+ const pipes = [UiPersonPipe, BarcodeFormatPipe, MoListToFlowItemPipe, DataSourceToFlowItemPipe];
3465
+ class BarsaDevelopComponentsModule extends BaseModule {
3466
+ constructor(dcm, cfr) {
3467
+ super(dcm, cfr, 'BarsaDevelopComponentsModule');
3468
+ this.dcm = dcm;
3469
+ this.cfr = cfr;
3470
+ this.dynamicComponents = [...components];
3471
+ }
3472
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaDevelopComponentsModule, deps: [{ token: i1$1.DynamicComponentService }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.NgModule }); }
3473
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: BarsaDevelopComponentsModule, declarations: [LoginFormComponent,
3474
+ LoginSocialConncetionsComponent,
3475
+ UiPersonComponent,
3476
+ BarcodeReaderComponent,
3477
+ BarcodeReaderDialogComponent,
3478
+ BarcodeReaderVideoComponent,
3479
+ SettingFormComponent,
3480
+ MicroProcessFlowViewComponent,
3481
+ UiEnumSegmentedButtonComponent,
3482
+ TabProcessViewComponent,
3483
+ UiTextFieldSearchComponent,
3484
+ ServiceDeskHeaderComponent,
3485
+ CardContentImageAndTitleComponent,
3486
+ CardHeaderLogoTitleSubtitleComponent,
3487
+ FormContentQuickViewComponent,
3488
+ ServiceDeskServcieDetailComponent,
3489
+ ServiceDeskViewOfServicesComponent,
3490
+ ServiceDeskCardContentMojavezhayAkhzShodeComponent,
3491
+ CardHeaderBigImageTitleAndSubtitleComponent,
3492
+ ServiceDeskFormLayoutContentMojavezComponent,
3493
+ UlvContextMenuItemShowFileContentComponent,
3494
+ ResendVerificationCodeComponent,
3495
+ CheckboxButtonComponent,
3496
+ ReportTabViewComponent,
3497
+ ReportLineChartViewComponent,
3498
+ CardHeaderKpiComponent,
3499
+ CardContentLineChartComponent,
3500
+ FormChartContentComponent,
3501
+ TableViewVerticalColumnsComponent,
3502
+ QueryStringObservableComponent,
3503
+ QueryStringFormObservableComponent,
3504
+ G4bDetailsComponent,
3505
+ AvatarComponent,
3506
+ G4bEstelamComponent,
3507
+ TimerCountDownComponent,
3508
+ MoInfoMicroProccessFlowComponent,
3509
+ MicroProccessFlowComponent,
3510
+ EnumInfoMicroProccessFlowComponent,
3511
+ UiPicturesCarouselComponent,
3512
+ UiNumRateComponent,
3513
+ MediaFileUploaderComponent,
3514
+ SubformInRowReportComponent,
3515
+ MasterDetailCardFormComponent,
3516
+ ReportButtonViewComponent,
3517
+ BarsaDocumentsComponent,
3518
+ BarsaDocumentListItemComponent,
3519
+ AcceptRejectComponent,
3520
+ FooterComponent,
3521
+ GeographicLocationComponent,
3522
+ BarsaGeographicLocationComponent,
3523
+ TokenReportViewComponent,
3524
+ ColumnFormViewerComponent,
3525
+ FormReportViewComponent,
3526
+ FormReportViewItemComponent,
3527
+ FormCardComponent, UiPersonPipe, BarcodeFormatPipe, MoListToFlowItemPipe, DataSourceToFlowItemPipe], imports: [CommonModule,
3528
+ BarsaNovinRayCoreModule,
3529
+ ReactiveFormsModule,
3530
+ BarsaSapUiModule,
3531
+ BarsaEchartsModule,
3532
+ BarsaTilesModule,
3533
+ FundamentalNgxCoreModule,
3534
+ PlatformInputGroupModule,
3535
+ FormsModule], exports: [LoginFormComponent,
3536
+ LoginSocialConncetionsComponent,
3537
+ UiPersonComponent,
3538
+ BarcodeReaderComponent,
3539
+ BarcodeReaderDialogComponent,
3540
+ BarcodeReaderVideoComponent,
3541
+ SettingFormComponent,
3542
+ MicroProcessFlowViewComponent,
3543
+ UiEnumSegmentedButtonComponent,
3544
+ TabProcessViewComponent,
3545
+ UiTextFieldSearchComponent,
3546
+ ServiceDeskHeaderComponent,
3547
+ CardContentImageAndTitleComponent,
3548
+ CardHeaderLogoTitleSubtitleComponent,
3549
+ FormContentQuickViewComponent,
3550
+ ServiceDeskServcieDetailComponent,
3551
+ ServiceDeskViewOfServicesComponent,
3552
+ ServiceDeskCardContentMojavezhayAkhzShodeComponent,
3553
+ CardHeaderBigImageTitleAndSubtitleComponent,
3554
+ ServiceDeskFormLayoutContentMojavezComponent,
3555
+ UlvContextMenuItemShowFileContentComponent,
3556
+ ResendVerificationCodeComponent,
3557
+ CheckboxButtonComponent,
3558
+ ReportTabViewComponent,
3559
+ ReportLineChartViewComponent,
3560
+ CardHeaderKpiComponent,
3561
+ CardContentLineChartComponent,
3562
+ FormChartContentComponent,
3563
+ TableViewVerticalColumnsComponent,
3564
+ QueryStringObservableComponent,
3565
+ QueryStringFormObservableComponent,
3566
+ G4bDetailsComponent,
3567
+ AvatarComponent,
3568
+ G4bEstelamComponent,
3569
+ TimerCountDownComponent,
3570
+ MoInfoMicroProccessFlowComponent,
3571
+ MicroProccessFlowComponent,
3572
+ EnumInfoMicroProccessFlowComponent,
3573
+ UiPicturesCarouselComponent,
3574
+ UiNumRateComponent,
3575
+ MediaFileUploaderComponent,
3576
+ SubformInRowReportComponent,
3577
+ MasterDetailCardFormComponent,
3578
+ ReportButtonViewComponent,
3579
+ BarsaDocumentsComponent,
3580
+ BarsaDocumentListItemComponent,
3581
+ AcceptRejectComponent,
3582
+ FooterComponent,
3583
+ GeographicLocationComponent,
3584
+ BarsaGeographicLocationComponent,
3585
+ TokenReportViewComponent,
3586
+ ColumnFormViewerComponent,
3587
+ FormReportViewComponent,
3588
+ FormReportViewItemComponent,
3589
+ FormCardComponent] }); }
3590
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaDevelopComponentsModule, providers: [UserMediaBaseService, WebBarcodeService], imports: [CommonModule,
3591
+ BarsaNovinRayCoreModule,
3592
+ ReactiveFormsModule,
3593
+ BarsaSapUiModule,
3594
+ BarsaEchartsModule,
3595
+ BarsaTilesModule,
3596
+ FundamentalNgxCoreModule,
3597
+ PlatformInputGroupModule,
3598
+ FormsModule] }); }
3599
+ }
3600
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaDevelopComponentsModule, decorators: [{
3601
+ type: NgModule,
3602
+ args: [{
3603
+ declarations: [...components, ...pipes],
3604
+ schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
3605
+ imports: [
3606
+ CommonModule,
3607
+ BarsaNovinRayCoreModule,
3608
+ ReactiveFormsModule,
3609
+ BarsaSapUiModule,
3610
+ BarsaEchartsModule,
3611
+ BarsaTilesModule,
3612
+ FundamentalNgxCoreModule,
3613
+ PlatformInputGroupModule,
3614
+ FormsModule
3615
+ ],
3616
+ providers: [UserMediaBaseService, WebBarcodeService],
3617
+ exports: [...components]
3618
+ }]
3619
+ }], ctorParameters: () => [{ type: i1$1.DynamicComponentService }, { type: i0.ComponentFactoryResolver }] });
3620
+
3621
+ /**
3622
+ * Generated bundle index. Do not edit.
3623
+ */
3624
+
3625
+ export { AcceptRejectComponent, AvatarComponent, BarcodeFormatPipe, BarcodeReaderComponent, BarcodeReaderDialogComponent, BarcodeReaderVideoComponent, BarsaDevelopComponentsModule, BarsaDocumentListItemComponent, BarsaDocumentsComponent, BarsaGeographicLocationComponent, CardContentImageAndTitleComponent, CardContentLineChartComponent, CardHeaderBigImageTitleAndSubtitleComponent, CardHeaderKpiComponent, CardHeaderLogoTitleSubtitleComponent, CheckboxButtonComponent, ColumnFormViewerComponent, EnumInfoMicroProccessFlowComponent, FooterComponent, FormCardComponent, FormChartContentComponent, FormContentQuickViewComponent, FormReportViewComponent, FormReportViewItemComponent, G4bDetailsComponent, G4bEstelamComponent, GeographicLocationComponent, LoginFormComponent, LoginSocialConncetionsComponent, MasterDetailCardFormComponent, MediaFileUploaderComponent, MicroProccessFlowComponent, MicroProcessFlowViewComponent, MoInfoMicroProccessFlowComponent, QueryStringFormObservableComponent, QueryStringObservableComponent, ReportButtonViewComponent, ReportLineChartViewComponent, ReportTabViewComponent, ResendVerificationCodeComponent, ServiceDeskCardContentMojavezhayAkhzShodeComponent, ServiceDeskFormLayoutContentMojavezComponent, ServiceDeskHeaderComponent, ServiceDeskServcieDetailComponent, ServiceDeskViewOfServicesComponent, SettingFormComponent, SubformInRowReportComponent, TabProcessViewComponent, TableViewVerticalColumnsComponent, TimerCountDownComponent, TokenReportViewComponent, UiEnumSegmentedButtonComponent, UiNumRateComponent, UiPersonComponent, UiPicturesCarouselComponent, UiTextFieldSearchComponent, UlvContextMenuItemShowFileContentComponent };
3626
+ //# sourceMappingURL=barsa-develop-components.mjs.map