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
@@ -1,3625 +0,0 @@
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 i3$2 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 i2 from '@angular/forms';
7
- import { ReactiveFormsModule, FormsModule } from '@angular/forms';
8
- import * as i2$1 from '@fundamental-ngx/core/input-group';
9
- import * as i3 from '@fundamental-ngx/core/toolbar';
10
- import * as i1 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$3 from '@fundamental-ngx/core';
14
- import { TabListComponent, PopoverBodyComponent, TabPanelComponent, FundamentalNgxCoreModule } from '@fundamental-ngx/core';
15
- import * as i1$1 from '@angular/common';
16
- import { CommonModule } from '@angular/common';
17
- import * as i2$2 from '@fundamental-ngx/core/tabs';
18
- import * as i5 from '@fundamental-ngx/core/button';
19
- import * as i4 from '@fundamental-ngx/core/segmented-button';
20
- import * as i3$1 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 i4$2 from '@fundamental-ngx/core/bar';
25
- import * as i5$1 from '@fundamental-ngx/core/dialog';
26
- import * as i4$3 from '@fundamental-ngx/core/title';
27
- import * as i12 from '@fundamental-ngx/core/utils';
28
- import * as i8 from '@fundamental-ngx/core/select';
29
- import * as i1$2 from '@fundamental-ngx/platform';
30
- import { PlatformInputGroupModule } from '@fundamental-ngx/platform';
31
- import * as i4$4 from '@fundamental-ngx/core/link';
32
- import * as i5$2 from '@fundamental-ngx/core/card';
33
- import * as i7 from '@fundamental-ngx/core/form';
34
- import * as i8$1 from '@fundamental-ngx/core/icon';
35
- import * as i8$2 from '@fundamental-ngx/core/list';
36
- import * as i8$3 from '@fundamental-ngx/core/popover';
37
- import * as i4$5 from '@fundamental-ngx/core/quick-view';
38
- import * as i4$6 from '@fundamental-ngx/core/table';
39
- import * as i5$3 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$7 from '@angular/router';
43
- import * as i4$8 from '@fundamental-ngx/core/avatar';
44
- import * as i7$1 from '@fundamental-ngx/core/checkbox';
45
- import * as i3$3 from '@fundamental-ngx/core/dynamic-page';
46
- import * as i3$4 from '@angular/platform-browser';
47
- import * as i2$5 from 'barsa-echarts';
48
- import { BarsaEchartsModule } from 'barsa-echarts';
49
- import * as i7$2 from '@fundamental-ngx/core/object-status';
50
- import * as i4$9 from '@fundamental-ngx/core/carousel';
51
- import * as i1$3 from '@fundamental-ngx/core/rating-indicator';
52
- import * as i4$a from '@fundamental-ngx/core/nested-list';
53
- import * as i5$4 from '@fundamental-ngx/core/progress-indicator';
54
- import * as i2$6 from '@fundamental-ngx/core/menu';
55
- import * as i3$5 from '@fundamental-ngx/core/split-button';
56
- import * as i4$b 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$7 from '@fundamental-ngx/core/content-density';
60
- import * as i3$6 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
- }
85
- UiTextFieldSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiTextFieldSearchComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
86
- UiTextFieldSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiTextFieldSearchComponent, selector: "bdc-ui-text-field-search", inputs: { value: "value", MinSize: "MinSize" }, usesInheritance: true, ngImport: i0, template: "<fd-input-group\n style=\"width: 100%\"\n fd-toolbar-item\n type=\"search\"\n glyph=\"search\"\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\n [placeholder]=\"'Search' | bbbTranslate\"\n [button]=\"true\"\n [disabled]=\"false\"\n [(ngModel)]=\"searchTerm\"\n (addOnButtonClicked)=\"onSearchSubmit()\"\n (keydown.enter)=\"onSearchSubmit()\"\n>\n</fd-input-group>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$1.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiTextFieldSearchComponent, decorators: [{
88
- type: Component,
89
- args: [{ selector: 'bdc-ui-text-field-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-input-group\n style=\"width: 100%\"\n fd-toolbar-item\n type=\"search\"\n glyph=\"search\"\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\n [placeholder]=\"'Search' | bbbTranslate\"\n [button]=\"true\"\n [disabled]=\"false\"\n [(ngModel)]=\"searchTerm\"\n (addOnButtonClicked)=\"onSearchSubmit()\"\n (keydown.enter)=\"onSearchSubmit()\"\n>\n</fd-input-group>\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
- }
127
- TabProcessViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TabProcessViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
128
- TabProcessViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TabProcessViewComponent, selector: "bdc-tab-process-view", viewQueries: [{ propertyName: "tabList", first: true, predicate: TabListComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-tab-list\n *ngIf=\"moDataList?.length; else empty\"\n mode=\"process\"\n [style.min-height]=\"moDataList?.length ? '3.8rem' : null\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n>\n <fd-tab\n *ngFor=\"let item of moDataList; let index = index; let last = last\"\n [id]=\"item.Id\"\n [active]=\"item.$IsChecked\"\n >\n <ng-template fd-tab-title-template>\n <span\n (click)=\"onTabChange2(item)\"\n fd-tab-icon\n [icon]=\"(fieldIcon | rval: item:allColumns) ? (fieldIcon | rval: item:allColumns) : defaultIcon\"\n ></span>\n <div fd-tab-process (click)=\"onTabChange2(item)\">\n <span fd-tab-label>{{ fieldTitle | rval: item:allColumns }}</span>\n <span fd-tab-label>{{ fieldSubtitle | rval: item:allColumns }}</span>\n </div>\n </ng-template>\n </fd-tab>\n</fd-tab-list>\n<ng-template #empty>\n <div style=\"min-height: 3.8rem; background-color: var(--sapObjectHeader_Background)\"></div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i2$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "directive", type: i2$2.TabTitleDirective, selector: "[fdTabTitleTemplate], [fd-tab-title-template]" }, { kind: "component", type: i2$2.TabIconComponent, selector: "[fd-tab-icon]", inputs: ["class", "icon"] }, { kind: "directive", type: i2$2.TabLabelDirective, selector: "[fdTabLabel], [fd-tab-label]" }, { kind: "directive", type: i2$2.TabProcessDirective, selector: "[fdTabProcess], [fd-tab-process]" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TabProcessViewComponent, decorators: [{
130
- type: Component,
131
- args: [{ selector: 'bdc-tab-process-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-tab-list\n *ngIf=\"moDataList?.length; else empty\"\n mode=\"process\"\n [style.min-height]=\"moDataList?.length ? '3.8rem' : null\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n>\n <fd-tab\n *ngFor=\"let item of moDataList; let index = index; let last = last\"\n [id]=\"item.Id\"\n [active]=\"item.$IsChecked\"\n >\n <ng-template fd-tab-title-template>\n <span\n (click)=\"onTabChange2(item)\"\n fd-tab-icon\n [icon]=\"(fieldIcon | rval: item:allColumns) ? (fieldIcon | rval: item:allColumns) : defaultIcon\"\n ></span>\n <div fd-tab-process (click)=\"onTabChange2(item)\">\n <span fd-tab-label>{{ fieldTitle | rval: item:allColumns }}</span>\n <span fd-tab-label>{{ fieldSubtitle | rval: item:allColumns }}</span>\n </div>\n </ng-template>\n </fd-tab>\n</fd-tab-list>\n<ng-template #empty>\n <div style=\"min-height: 3.8rem; background-color: var(--sapObjectHeader_Background)\"></div>\n</ng-template>\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
- }
148
- UiEnumSegmentedButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiEnumSegmentedButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
149
- UiEnumSegmentedButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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 <ng-container *ngFor=\"let item of context.store.data[context.store.root]\">\r\n <button\r\n *ngIf=\"item.id !== '0'\"\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 </ng-container>\r\n</fd-segmented-button>\r\n", styles: ["button{width:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", 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 <ng-container *ngFor=\"let item of context.store.data[context.store.root]\">\r\n <button\r\n *ngIf=\"item.id !== '0'\"\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 </ng-container>\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
- }
165
- MicroProcessFlowViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroProcessFlowViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
166
- MicroProcessFlowViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MicroProcessFlowViewComponent, selector: "bdc-micro-process-flow-view", usesInheritance: true, ngImport: i0, template: "<fd-micro-process-flow style=\"max-width: 100%\">\n <fd-micro-process-flow-item *ngFor=\"let item of moDataList; let index = index\">\n <ng-container\n *ngTemplateOutlet=\"\n button;\n context: {\n $implicit: item,\n index: index,\n arrow: arrowRight\n }\n \"\n ></ng-container>\n </fd-micro-process-flow-item>\n</fd-micro-process-flow>\n<ng-template #button let-mo let-index=\"index\" let-arrow=\"arrow\">\n <button\n fd-button\n (click)=\"onRowCheck({mo, index})\"\n fd-micro-process-flow-focusable-item\n [label]=\"fieldTitle | rval: mo:allColumns\"\n [fdType]=\"fieldState | rval: mo:allColumns\"\n [glyph]=\"fieldIcon | rval: mo:allColumns\"\n ></button>\n</ng-template>\n", styles: [".fd-link{cursor:pointer;font-size:1.06rem}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3$1.MicroProcessFlowComponent, selector: "fd-micro-process-flow", inputs: ["independentSteps", "transitionSpeed", "transitionTimingFunction"] }, { kind: "component", type: i3$1.MicroProcessFlowItemComponent, selector: "fd-micro-process-flow-item", inputs: ["state", "intermediate"] }, { kind: "directive", type: i3$1.MicroProcessFlowFocusableItemDirective, selector: "[fdMicroProcessFlowFocusableItem], [fd-micro-process-flow-focusable-item]" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", 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%\">\n <fd-micro-process-flow-item *ngFor=\"let item of moDataList; let index = index\">\n <ng-container\n *ngTemplateOutlet=\"\n button;\n context: {\n $implicit: item,\n index: index,\n arrow: arrowRight\n }\n \"\n ></ng-container>\n </fd-micro-process-flow-item>\n</fd-micro-process-flow>\n<ng-template #button let-mo let-index=\"index\" let-arrow=\"arrow\">\n <button\n fd-button\n (click)=\"onRowCheck({mo, index})\"\n fd-micro-process-flow-focusable-item\n [label]=\"fieldTitle | rval: mo:allColumns\"\n [fdType]=\"fieldState | rval: mo:allColumns\"\n [glyph]=\"fieldIcon | rval: mo:allColumns\"\n ></button>\n</ng-template>\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
- }
220
- SettingFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: SettingFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
221
- SettingFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: SettingFormComponent, selector: "bdc-setting-form", providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mo$ | async as mo; else loading\">\r\n <ng-container *ngIf=\"layout94$ | async as layout\">\r\n <div *ngIf=\"deviceSize === 'sm'; else sideContent\" style=\"display: flex; flex-direction: column\">\r\n <div *ngIf=\"selectedSetting\" 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 <ng-template #sideContent>\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 </ng-template>\r\n </ng-container>\r\n <ng-template #renderForm let-layout let-isMobile=\"isMobile\">\r\n <bsu-layout-control\r\n *ngIf=\"objectSettingFieldCaption | controlUi: layout as layoutConfig\"\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 </ng-template>\r\n <ng-template #renderSetting let-layout let-isMobile=\"isMobile\">\r\n <bsu-layout-control\r\n *ngIf=\"groupSettingFieldCaption | controlUi: layout as layoutConfig\"\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 </ng-template>\r\n</ng-container>\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\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$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$2.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3$2.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"] }, { kind: "component", type: i5.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$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: SettingFormComponent, decorators: [{
223
- type: Component,
224
- args: [{ selector: 'bdc-setting-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "<ng-container *ngIf=\"mo$ | async as mo; else loading\">\r\n <ng-container *ngIf=\"layout94$ | async as layout\">\r\n <div *ngIf=\"deviceSize === 'sm'; else sideContent\" style=\"display: flex; flex-direction: column\">\r\n <div *ngIf=\"selectedSetting\" 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 <ng-template #sideContent>\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 </ng-template>\r\n </ng-container>\r\n <ng-template #renderForm let-layout let-isMobile=\"isMobile\">\r\n <bsu-layout-control\r\n *ngIf=\"objectSettingFieldCaption | controlUi: layout as layoutConfig\"\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 </ng-template>\r\n <ng-template #renderSetting let-layout let-isMobile=\"isMobile\">\r\n <bsu-layout-control\r\n *ngIf=\"groupSettingFieldCaption | controlUi: layout as layoutConfig\"\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 </ng-template>\r\n</ng-container>\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\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
- }
422
- UserMediaBaseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UserMediaBaseService, deps: [{ token: i1.LogService }], target: i0.ɵɵFactoryTarget.Injectable });
423
- UserMediaBaseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UserMediaBaseService });
424
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UserMediaBaseService, decorators: [{
425
- type: Injectable
426
- }], ctorParameters: function () { return [{ type: i1.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
- }
543
- WebBarcodeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: WebBarcodeService, deps: [{ token: UserMediaBaseService }], target: i0.ɵɵFactoryTarget.Injectable });
544
- WebBarcodeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: WebBarcodeService });
545
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: WebBarcodeService, decorators: [{
546
- type: Injectable
547
- }], ctorParameters: function () { return [{ type: UserMediaBaseService }]; } });
548
-
549
- class BarcodeReaderVideoComponent extends BaseComponent {
550
- constructor(_webBarcodeService) {
551
- super();
552
- this._webBarcodeService = _webBarcodeService;
553
- this.previewFitMode = 'fill';
554
- this.scanSuccess = new EventEmitter();
555
- this._cameraSource = new BehaviorSubject(null);
556
- }
557
- set selectedCamera(val) {
558
- this._cameraSource.next(val);
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
- }
590
- BarcodeReaderVideoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeReaderVideoComponent, deps: [{ token: WebBarcodeService }], target: i0.ɵɵFactoryTarget.Component });
591
- BarcodeReaderVideoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
592
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", 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: function () { return [{ 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
- }
667
- BarcodeReaderDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeReaderDialogComponent, deps: [{ token: i2$3.DialogRef }, { token: UserMediaBaseService }], target: i0.ɵɵFactoryTarget.Component });
668
- BarcodeReaderDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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 <ng-container *ngIf=\"!loading\">\r\n <ng-container *ngIf=\"permission$ | async; else noPermission\">\r\n <ng-container *ngIf=\"hasDevice$ | async; else noDevice\">\r\n <bdc-barcode-reader-video\r\n *ngIf=\"selectedCamera\"\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 </ng-container> </ng-container\r\n ></ng-container>\r\n <ng-template #noDevice>\r\n <p>BrowserNotSupport</p>\r\n </ng-template>\r\n <ng-template #noPermission>\r\n <p>NoPermission</p>\r\n </ng-template>\r\n </fd-dialog-body>\r\n <fd-dialog-footer>\r\n <ng-template fdTemplate=\"footer\">\r\n <ng-container *ngIf=\"cameras$ | async as cameraList\">\r\n <div fd-bar-left>\r\n <fd-select\r\n *ngIf=\"cameraList.length > 1\"\r\n [placeholder]=\"'Camera' | bbbTranslate\"\r\n (valueChange)=\"onCameraChange($event)\"\r\n [value]=\"selectedCamera\"\r\n >\r\n <fd-option *ngFor=\"let camera of cameraList\" [value]=\"camera\">{{ camera.label }}</fd-option>\r\n </fd-select>\r\n </div>\r\n <div fd-bar-right></div>\r\n </ng-container>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i5$1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i5$1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i5$1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i5$1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i4$3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i12.TemplateDirective, selector: "[fdTemplate]", inputs: ["fdTemplate"] }, { kind: "component", type: i8.SelectComponent, selector: "fd-select", inputs: ["controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "extendedBodyTemplate", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i8.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$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
669
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", 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 <ng-container *ngIf=\"!loading\">\r\n <ng-container *ngIf=\"permission$ | async; else noPermission\">\r\n <ng-container *ngIf=\"hasDevice$ | async; else noDevice\">\r\n <bdc-barcode-reader-video\r\n *ngIf=\"selectedCamera\"\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 </ng-container> </ng-container\r\n ></ng-container>\r\n <ng-template #noDevice>\r\n <p>BrowserNotSupport</p>\r\n </ng-template>\r\n <ng-template #noPermission>\r\n <p>NoPermission</p>\r\n </ng-template>\r\n </fd-dialog-body>\r\n <fd-dialog-footer>\r\n <ng-template fdTemplate=\"footer\">\r\n <ng-container *ngIf=\"cameras$ | async as cameraList\">\r\n <div fd-bar-left>\r\n <fd-select\r\n *ngIf=\"cameraList.length > 1\"\r\n [placeholder]=\"'Camera' | bbbTranslate\"\r\n (valueChange)=\"onCameraChange($event)\"\r\n [value]=\"selectedCamera\"\r\n >\r\n <fd-option *ngFor=\"let camera of cameraList\" [value]=\"camera\">{{ camera.label }}</fd-option>\r\n </fd-select>\r\n </div>\r\n <div fd-bar-right></div>\r\n </ng-container>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n" }]
672
- }], ctorParameters: function () { return [{ type: i2$3.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
- }
720
- BarcodeReaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeReaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
721
- BarcodeReaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarcodeReaderComponent, selector: "bdc-barcode-reader", usesInheritance: true, ngImport: i0, template: "<!-- <fd-input-group\n placement=\"after\"\n glyph=\"camera\"\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\n [button]=\"true\"\n ariaLabelledBy=\"fd-input-group-button-label-2\"\n (addOnButtonClicked)=\"onOpenBarcodeReader()\"\n (input)=\"onValueChange($event)\"\n>\n</fd-input-group> -->\n\n<fdp-input-group\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\n [value]=\"barcodeValue\"\n (input)=\"onValueChange($event)\"\n [name]=\"'barcode_' + id\"\n [disabled]=\"(disableOrReadonly$ | async)!!\"\n>\n <fdp-input-group-input type=\"text\"></fdp-input-group-input>\n <fdp-input-group-addon>\n <fdp-button glyph=\"camera\" (click)=\"onOpenBarcodeReader()\"></fdp-button>\n </fdp-input-group-addon>\n</fdp-input-group>\n", styles: [""], dependencies: [{ kind: "component", type: i1$2.InputGroupComponent, selector: "fdp-input-group", inputs: ["value"] }, { kind: "component", type: i1$2.InputGroupAddonComponent, selector: "fdp-input-group-addon" }, { kind: "component", type: i1$2.InputGroupInputComponent, selector: "fdp-input-group-input", inputs: ["type"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
722
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeReaderComponent, decorators: [{
723
- type: Component,
724
- args: [{ selector: 'bdc-barcode-reader', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <fd-input-group\n placement=\"after\"\n glyph=\"camera\"\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\n [button]=\"true\"\n ariaLabelledBy=\"fd-input-group-button-label-2\"\n (addOnButtonClicked)=\"onOpenBarcodeReader()\"\n (input)=\"onValueChange($event)\"\n>\n</fd-input-group> -->\n\n<fdp-input-group\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\n [value]=\"barcodeValue\"\n (input)=\"onValueChange($event)\"\n [name]=\"'barcode_' + id\"\n [disabled]=\"(disableOrReadonly$ | async)!!\"\n>\n <fdp-input-group-input type=\"text\"></fdp-input-group-input>\n <fdp-input-group-addon>\n <fdp-button glyph=\"camera\" (click)=\"onOpenBarcodeReader()\"></fdp-button>\n </fdp-input-group-addon>\n</fdp-input-group>\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
- }
756
- UiPersonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPersonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
757
- UiPersonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: UiPersonPipe, name: "uiPerson" });
758
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", 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
- }
891
- UiPersonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPersonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
892
- UiPersonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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 <ng-container *ngIf=\"value; else selectButton\">\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 </ng-container>\r\n <ng-template #selectButton>\r\n <button\r\n fd-button\r\n label=\"\u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062E\u0635\"\r\n fdType=\"transparent\"\r\n (click)=\"openDialog(dialogTemplate)\"\r\n ></button>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </fd-popover-control>\r\n <fd-popover-body *ngIf=\"value\" #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\r\n <fd-quick-view-group>\r\n <fd-quick-view-group-item *ngFor=\"let item of value | keyvalue\">\r\n <div *ngIf=\"item.key !== 'Id'\" 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 <ng-container [ngSwitch]=\"item.value\">\r\n <a\r\n *ngSwitchCase=\"\r\n item.key === 'Mobile' || item.key === 'Phone' ? item.key : ''\r\n \"\r\n [href]=\"'tel:' + item.value\"\r\n [innerText]=\"item.value\"\r\n fd-link\r\n ></a>\r\n <a\r\n *ngSwitchCase=\"'Email'\"\r\n [href]=\"'mailto:' + item.value\"\r\n [innerText]=\"item.value\"\r\n fd-link\r\n ></a>\r\n <div *ngSwitchDefault [innerText]=\"item.value\"></div>\r\n </ng-container>\r\n </fd-quick-view-group-item-content>\r\n </div>\r\n </fd-quick-view-group-item>\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</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 fd-initial-focus 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 <tr\r\n *ngFor=\"let person of searchResult\"\r\n (click)=\"select(person)\"\r\n [class.selected]=\"selectedPerson?.Id === person?.Id\"\r\n fd-table-row\r\n >\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 </tbody>\r\n </table>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdTemplate=\"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 fd-initial-focus 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:-moz-fit-content;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$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i4$2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4$4.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i5$2.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i7.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i7.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "component", type: i7.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i7.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i8$1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i8$2.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i8$2.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i8$2.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "directive", type: i8$2.DeprecatedListContentDensityDirective, selector: "[fd-list][compact], [fdList][compact]" }, { kind: "component", type: i5$1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i5$1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i5$1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i5$1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i4$3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i12.TemplateDirective, selector: "[fdTemplate]", inputs: ["fdTemplate"] }, { kind: "directive", type: i12.InitialFocusDirective, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: ["fd-initial-focus", "enabled", "focusLastElement"] }, { kind: "component", type: i8$3.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i8$3.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i8$3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i4$5.QuickViewComponent, selector: "fd-quick-view", inputs: ["id"] }, { kind: "component", type: i4$5.QuickViewSubheaderComponent, selector: "fd-quick-view-subheader" }, { kind: "component", type: i4$5.QuickViewSubheaderTitleComponent, selector: "fd-quick-view-subheader-title" }, { kind: "component", type: i4$5.QuickViewGroupComponent, selector: "fd-quick-view-group" }, { kind: "component", type: i4$5.QuickViewGroupItemComponent, selector: "fd-quick-view-group-item", inputs: ["id"] }, { kind: "component", type: i4$5.QuickViewGroupItemLabelComponent, selector: "fd-quick-view-group-item-label" }, { kind: "component", type: i4$5.QuickViewGroupItemContentComponent, selector: "fd-quick-view-group-item-content" }, { kind: "component", type: i4$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i4$6.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i4$6.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i4$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i4$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: UiPersonPipe, name: "uiPerson" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
893
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", 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 <ng-container *ngIf=\"value; else selectButton\">\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 </ng-container>\r\n <ng-template #selectButton>\r\n <button\r\n fd-button\r\n label=\"\u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062E\u0635\"\r\n fdType=\"transparent\"\r\n (click)=\"openDialog(dialogTemplate)\"\r\n ></button>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </fd-popover-control>\r\n <fd-popover-body *ngIf=\"value\" #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\r\n <fd-quick-view-group>\r\n <fd-quick-view-group-item *ngFor=\"let item of value | keyvalue\">\r\n <div *ngIf=\"item.key !== 'Id'\" 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 <ng-container [ngSwitch]=\"item.value\">\r\n <a\r\n *ngSwitchCase=\"\r\n item.key === 'Mobile' || item.key === 'Phone' ? item.key : ''\r\n \"\r\n [href]=\"'tel:' + item.value\"\r\n [innerText]=\"item.value\"\r\n fd-link\r\n ></a>\r\n <a\r\n *ngSwitchCase=\"'Email'\"\r\n [href]=\"'mailto:' + item.value\"\r\n [innerText]=\"item.value\"\r\n fd-link\r\n ></a>\r\n <div *ngSwitchDefault [innerText]=\"item.value\"></div>\r\n </ng-container>\r\n </fd-quick-view-group-item-content>\r\n </div>\r\n </fd-quick-view-group-item>\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</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 fd-initial-focus 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 <tr\r\n *ngFor=\"let person of searchResult\"\r\n (click)=\"select(person)\"\r\n [class.selected]=\"selectedPerson?.Id === person?.Id\"\r\n fd-table-row\r\n >\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 </tbody>\r\n </table>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdTemplate=\"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 fd-initial-focus 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:-moz-fit-content;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
- }
918
- LoginSocialConncetionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginSocialConncetionsComponent, deps: [{ token: i1.UlvMainService }, { token: i1.PortalService }, { token: i1.MoReportValuePipe }], target: i0.ɵɵFactoryTarget.Component });
919
- LoginSocialConncetionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: LoginSocialConncetionsComponent, selector: "bdc-login-social-conncetions", host: { properties: { "attr.rtl": "this.rtl" } }, usesInheritance: true, ngImport: i0, template: "<button\r\n *ngFor=\"let mo of moDataList$ | async\"\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", 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: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
920
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginSocialConncetionsComponent, decorators: [{
921
- type: Component,
922
- args: [{ selector: 'bdc-login-social-conncetions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n *ngFor=\"let mo of moDataList$ | async\"\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", 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: function () { return [{ type: i1.UlvMainService }, { type: i1.PortalService }, { type: i1.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
- }
961
- LoginFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
962
- LoginFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: LoginFormComponent, selector: "bdc-login-form", host: { listeners: { "keydown.enter": "onKeyEnter($event)" }, properties: { "class.desktopmode": "this._desktopmode" } }, providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mo$ | async as mo\">\n <bsu-mask *ngIf=\"mo.IsLogging\"></bsu-mask>\n <fd-layout-grid *ngIf=\"(size$ | async) === 'sm'; else sideContent\" [class.mobile]=\"isMobile\">\n <div [fdLayoutGridCol]=\"1\"></div>\n\n <div [fdLayoutGridCol]=\"10\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n [class.desktopMode]=\"!(isMobile === true)\"\n ></bsu-ly-layout-container-of-root>\n </div>\n\n <div [fdLayoutGridCol]=\"1\"></div>\n </fd-layout-grid>\n <ng-template #sideContent>\n <fd-dynamic-side-content [size]=\"(size$ | async)!!\">\n <fd-dynamic-side-content-side>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </fd-dynamic-side-content-side>\n <fd-dynamic-side-content-main>\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\n <bsu-layout-control\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\n [config]=\"layoutConfig\"\n [showLabel]=\"false\"\n [inlineEdit]=\"true\"\n \n ></bsu-layout-control>\n </ng-container> -->\n <div\n *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\"\n id=\"bgLogin\"\n [style.backgroundImage]=\"\n 'url(' +\n (mo.Background?.FileId\n | picFieldSrc: 'PictureFileInfo':null:layoutConfig.FieldUi.Setting.FieldDefId) +\n ')'\n \"\n ></div>\n </fd-dynamic-side-content-main>\n </fd-dynamic-side-content>\n </ng-template>\n</ng-container>\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: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i3$2.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i3$2.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: i5$3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i5$3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
963
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginFormComponent, decorators: [{
964
- type: Component,
965
- args: [{ selector: 'bdc-login-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "<ng-container *ngIf=\"mo$ | async as mo\">\n <bsu-mask *ngIf=\"mo.IsLogging\"></bsu-mask>\n <fd-layout-grid *ngIf=\"(size$ | async) === 'sm'; else sideContent\" [class.mobile]=\"isMobile\">\n <div [fdLayoutGridCol]=\"1\"></div>\n\n <div [fdLayoutGridCol]=\"10\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n [class.desktopMode]=\"!(isMobile === true)\"\n ></bsu-ly-layout-container-of-root>\n </div>\n\n <div [fdLayoutGridCol]=\"1\"></div>\n </fd-layout-grid>\n <ng-template #sideContent>\n <fd-dynamic-side-content [size]=\"(size$ | async)!!\">\n <fd-dynamic-side-content-side>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </fd-dynamic-side-content-side>\n <fd-dynamic-side-content-main>\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\n <bsu-layout-control\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\n [config]=\"layoutConfig\"\n [showLabel]=\"false\"\n [inlineEdit]=\"true\"\n \n ></bsu-layout-control>\n </ng-container> -->\n <div\n *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\"\n id=\"bgLogin\"\n [style.backgroundImage]=\"\n 'url(' +\n (mo.Background?.FileId\n | picFieldSrc: 'PictureFileInfo':null:layoutConfig.FieldUi.Setting.FieldDefId) +\n ')'\n \"\n ></div>\n </fd-dynamic-side-content-main>\n </fd-dynamic-side-content>\n </ng-template>\n</ng-container>\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
- this.scrollToTop();
1109
- if (selectedTab.id === '0') {
1110
- return;
1111
- }
1112
- const elementRefOfselectedTileGroup = this.tilesViewerGroupElList.get(Number(selectedTab.id))?.nativeElement;
1113
- elementRefOfselectedTileGroup.scrollIntoView({
1114
- block: 'start'
1115
- });
1116
- }
1117
- scrollToLastPos() {
1118
- this._viewportScroller.scrollToPosition([0, this._lastScrollPos]);
1119
- }
1120
- scrollToTop() {
1121
- if (this._enableScroll) {
1122
- this._viewportScroller.scrollToPosition([0, this.heightOfSpaceHolder - this._stickyTopPosition]);
1123
- }
1124
- }
1125
- disconnectIntersctionObserverList() {
1126
- this.observerList.forEach((c) => c.observer.disconnect());
1127
- }
1128
- connectIntersctionObserverList() {
1129
- this.observerList.forEach((c) => c.observer.observe(c.el));
1130
- }
1131
- _stickyDom(above, holder, marginTop, className, visibleCallback, hiddenCallBack) {
1132
- const handler = (entries) => {
1133
- if (this._disableIntersection) {
1134
- return;
1135
- }
1136
- if (!entries[0].isIntersecting) {
1137
- this._renderer.addClass(holder, className);
1138
- if (typeof visibleCallback === 'function') {
1139
- visibleCallback();
1140
- }
1141
- }
1142
- else {
1143
- this._renderer.removeClass(holder, className);
1144
- if (typeof hiddenCallBack === 'function') {
1145
- hiddenCallBack();
1146
- }
1147
- }
1148
- };
1149
- const options = {
1150
- rootMargin: `${marginTop}px 0px 0px 0px`,
1151
- threshold: 0.1
1152
- };
1153
- const observer = new window.IntersectionObserver(handler, options);
1154
- observer.observe(above);
1155
- this.observerList.push({ el: above, observer });
1156
- }
1157
- }
1158
- ServiceDeskHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskHeaderComponent, deps: [{ token: i1.PortalService }, { token: i2$4.TilesService }, { token: i2$4.TilesViewerService }, { token: i0.Renderer2 }, { token: i1$1.ViewportScroller }, { token: i0.ChangeDetectorRef }, { token: i4$7.Router }, { token: i4$7.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
1159
- ServiceDeskHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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>\n <div class=\"companyLogoHolder_aboveSearch\" #aboveSearch></div>\n <div id=\"searchHolder\" style=\"grid-row: 2\" #searchHolder>\n <fd-input-group\n [style.display]=\"settings?.HideSearch ? 'none' : null\"\n class=\"input-search\"\n contentDensity=\"cozy\"\n fd-toolbar-item\n type=\"search\"\n glyph=\"search\"\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\n [placeholder]=\"'Search' | bbbTranslate\"\n [button]=\"true\"\n [disabled]=\"false\"\n [(ngModel)]=\"searchTerm\"\n (addOnButtonClicked)=\"onSearchSubmit()\"\n >\n </fd-input-group>\n </div>\n</div>\n<div id=\"headerSpaceHolder\" #headerSpaceHolder>\n <div id=\"bgOuterHolder\" #bgOuterHolder>\n <div id=\"bgInnerHolder\" style=\"height: 100vh\">\n <div class=\"backgroundImage\" id=\"backgroundImage\">\n <img class=\"picture\" src=\"/assets/back.jpg\" loading=\"lazy\" />\n <span id=\"backgroundImageOverlay\" class=\"overlay\"></span>\n </div>\n </div>\n </div>\n</div>\n<div id=\"contentHolderAndNav\" first=\"true\" #contentAndNav>\n <div class=\"aboveContent\" #aboveContent></div>\n <div id=\"contentHolder\">\n <div class=\"nav\" #navHolder>\n <div class=\"nav-container\">\n <ng-container\n *ngTemplateOutlet=\"renderTabs; context: { $implicit: (appTileGroups$ | async)!! }\"\n ></ng-container>\n </div>\n </div>\n <div class=\"nav_surrogate\" style=\"height: 10px\"></div>\n <div class=\"content-feed\">\n <ng-container\n *ngTemplateOutlet=\"renderGroups; context: { $implicit: (appTileGroups$ | async)!! }\"\n ></ng-container>\n </div>\n </div>\n</div>\n<ng-template #renderTabs let-appTileGroups>\n <fd-tab-list\n [size]=\"tabSize\"\n [collapseOverflow]=\"tabSize === 's' || appTileGroups.length > 5\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n (selectedTabChange)=\"onSelectedTabChange3($event)\"\n >\n <fd-tab\n *ngFor=\"let appTileGroup of appTileGroups; let i = index\"\n [id]=\"'' + i\"\n [title]=\"appTileGroup.navigatorTitle\"\n >\n </fd-tab>\n </fd-tab-list>\n</ng-template>\n<ng-template #renderGroups let-appTileGroups>\n <bt-tiles-viewer-group\n *ngFor=\"let appTileGroup of appTileGroups; let i = index\"\n [attr.index]=\"i\"\n [appTileGroup]=\"appTileGroup\"\n [edit]=\"false\"\n [stackContent]=\"true\"\n [isAppTileSubGroup]=\"false\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n ></bt-tiles-viewer-group>\n</ng-template>\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:rgba(0,0,0,.318);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:rgb(247,247,247)}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:rgb(247,247,247);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$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.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$1.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i2$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i2$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]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskHeaderComponent, decorators: [{
1161
- type: Component,
1162
- 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>\n <div class=\"companyLogoHolder_aboveSearch\" #aboveSearch></div>\n <div id=\"searchHolder\" style=\"grid-row: 2\" #searchHolder>\n <fd-input-group\n [style.display]=\"settings?.HideSearch ? 'none' : null\"\n class=\"input-search\"\n contentDensity=\"cozy\"\n fd-toolbar-item\n type=\"search\"\n glyph=\"search\"\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\n [placeholder]=\"'Search' | bbbTranslate\"\n [button]=\"true\"\n [disabled]=\"false\"\n [(ngModel)]=\"searchTerm\"\n (addOnButtonClicked)=\"onSearchSubmit()\"\n >\n </fd-input-group>\n </div>\n</div>\n<div id=\"headerSpaceHolder\" #headerSpaceHolder>\n <div id=\"bgOuterHolder\" #bgOuterHolder>\n <div id=\"bgInnerHolder\" style=\"height: 100vh\">\n <div class=\"backgroundImage\" id=\"backgroundImage\">\n <img class=\"picture\" src=\"/assets/back.jpg\" loading=\"lazy\" />\n <span id=\"backgroundImageOverlay\" class=\"overlay\"></span>\n </div>\n </div>\n </div>\n</div>\n<div id=\"contentHolderAndNav\" first=\"true\" #contentAndNav>\n <div class=\"aboveContent\" #aboveContent></div>\n <div id=\"contentHolder\">\n <div class=\"nav\" #navHolder>\n <div class=\"nav-container\">\n <ng-container\n *ngTemplateOutlet=\"renderTabs; context: { $implicit: (appTileGroups$ | async)!! }\"\n ></ng-container>\n </div>\n </div>\n <div class=\"nav_surrogate\" style=\"height: 10px\"></div>\n <div class=\"content-feed\">\n <ng-container\n *ngTemplateOutlet=\"renderGroups; context: { $implicit: (appTileGroups$ | async)!! }\"\n ></ng-container>\n </div>\n </div>\n</div>\n<ng-template #renderTabs let-appTileGroups>\n <fd-tab-list\n [size]=\"tabSize\"\n [collapseOverflow]=\"tabSize === 's' || appTileGroups.length > 5\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n (selectedTabChange)=\"onSelectedTabChange3($event)\"\n >\n <fd-tab\n *ngFor=\"let appTileGroup of appTileGroups; let i = index\"\n [id]=\"'' + i\"\n [title]=\"appTileGroup.navigatorTitle\"\n >\n </fd-tab>\n </fd-tab-list>\n</ng-template>\n<ng-template #renderGroups let-appTileGroups>\n <bt-tiles-viewer-group\n *ngFor=\"let appTileGroup of appTileGroups; let i = index\"\n [attr.index]=\"i\"\n [appTileGroup]=\"appTileGroup\"\n [edit]=\"false\"\n [stackContent]=\"true\"\n [isAppTileSubGroup]=\"false\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n ></bt-tiles-viewer-group>\n</ng-template>\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:rgba(0,0,0,.318);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:rgb(247,247,247)}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:rgb(247,247,247);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"] }]
1163
- }], ctorParameters: function () { return [{ type: i1.PortalService }, { type: i2$4.TilesService }, { type: i2$4.TilesViewerService }, { type: i0.Renderer2 }, { type: i1$1.ViewportScroller }, { type: i0.ChangeDetectorRef }, { type: i4$7.Router }, { type: i4$7.ActivatedRoute }]; }, propDecorators: { headerSpaceHolder: [{
1164
- type: ViewChild,
1165
- args: ['headerSpaceHolder', { static: true }]
1166
- }], headerGrid: [{
1167
- type: ViewChild,
1168
- args: ['headerGrid', { static: true }]
1169
- }], aboveSearch: [{
1170
- type: ViewChild,
1171
- args: ['aboveSearch', { static: true }]
1172
- }], searchHolder: [{
1173
- type: ViewChild,
1174
- args: ['searchHolder', { static: true }]
1175
- }], navHolder: [{
1176
- type: ViewChild,
1177
- args: ['navHolder', { static: true }]
1178
- }], aboveContent: [{
1179
- type: ViewChild,
1180
- args: ['aboveContent', { static: true }]
1181
- }], bgOuterHolder: [{
1182
- type: ViewChild,
1183
- args: ['bgOuterHolder', { static: true }]
1184
- }], contentAndNav: [{
1185
- type: ViewChild,
1186
- args: ['contentAndNav', { static: true }]
1187
- }], tilesViewerGroupElList: [{
1188
- type: ViewChildren,
1189
- args: [TilesViewerGroupComponent, { read: ElementRef }]
1190
- }], tabPanelComponents: [{
1191
- type: ViewChildren,
1192
- args: [TabPanelComponent]
1193
- }], settings: [{
1194
- type: Input
1195
- }] } });
1196
-
1197
- class CardContentImageAndTitleComponent extends BaseItemContentPropsComponent {
1198
- constructor() {
1199
- super(...arguments);
1200
- this.backgroundColor = null;
1201
- this.color = null;
1202
- }
1203
- ngOnInit() {
1204
- super.ngOnInit();
1205
- const parameters = this.parameters;
1206
- if (parameters != null) {
1207
- this.color = this.colorSetting = parameters.Color;
1208
- this.backgroundColor = this.backgroundColorSetting = parameters.BackgroundColor;
1209
- this.picture = this._rval.transform(parameters.Picture, this.mo, this.allColumns);
1210
- this.title = this._rval.transform(parameters.Title, this.mo, this.allColumns);
1211
- this.subtitle = this._rval.transform(parameters.Subtitle, this.mo, this.allColumns);
1212
- this.icon = this._rval.transform(parameters.Icon, this.mo, this.allColumns);
1213
- this.prepareNumberSign();
1214
- }
1215
- }
1216
- prepareNumberSign() {
1217
- if (this.color && Number(this.colorSetting[0])) {
1218
- this.color = '#' + this.colorSetting;
1219
- }
1220
- if (this.backgroundColor && Number(this.backgroundColorSetting[0])) {
1221
- this.backgroundColor = '#' + this.backgroundColorSetting;
1222
- }
1223
- }
1224
- }
1225
- CardContentImageAndTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardContentImageAndTitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1226
- CardContentImageAndTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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>\n <div class=\"item-data\">\n <img\n *ngIf=\"picture; else iconTemplate\"\n [imgLazy]=\"picture.FileId | picFieldSrc: 'ID':null:'':100:70\"\n height=\"70\"\n width=\"100\"\n [alt]=\"title | bbbTranslate\"\n />\n <ng-template #iconTemplate>\n <fd-icon #iconRef *ngIf=\"icon\" [glyph]=\"icon\" [style.color]=\"color\"> </fd-icon>\n </ng-template>\n </div>\n <h5 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\n {{ title | bbbTranslate }}\n </h5>\n <h6 *ngIf=\"subtitle\" fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\n {{ subtitle | bbbTranslate }}\n </h6>\n</div>\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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "component", type: i8$1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i4$3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardContentImageAndTitleComponent, decorators: [{
1228
- type: Component,
1229
- args: [{ selector: 'bdc-card-content-image-and-title', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"card-content\" #elemRef>\n <div class=\"item-data\">\n <img\n *ngIf=\"picture; else iconTemplate\"\n [imgLazy]=\"picture.FileId | picFieldSrc: 'ID':null:'':100:70\"\n height=\"70\"\n width=\"100\"\n [alt]=\"title | bbbTranslate\"\n />\n <ng-template #iconTemplate>\n <fd-icon #iconRef *ngIf=\"icon\" [glyph]=\"icon\" [style.color]=\"color\"> </fd-icon>\n </ng-template>\n </div>\n <h5 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\n {{ title | bbbTranslate }}\n </h5>\n <h6 *ngIf=\"subtitle\" fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\n {{ subtitle | bbbTranslate }}\n </h6>\n</div>\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"] }]
1230
- }], propDecorators: { iconRef: [{
1231
- type: ViewChild,
1232
- args: ['iconRef', { static: false }]
1233
- }], backgroundColor: [{
1234
- type: HostBinding,
1235
- args: ['style.background-color']
1236
- }], color: [{
1237
- type: HostBinding,
1238
- args: ['style.color']
1239
- }] } });
1240
-
1241
- class CardHeaderLogoTitleSubtitleComponent extends BaseItemContentPropsComponent {
1242
- constructor() {
1243
- super(...arguments);
1244
- this.events = new EventEmitter();
1245
- }
1246
- ngOnInit() {
1247
- super.ngOnInit();
1248
- this.titleDbName =
1249
- this._findColumnPipe.transform(this.allColumns, this.parameters.Title)?.Name || this.parameters.Title;
1250
- this.subtitleDbName =
1251
- this._findColumnPipe.transform(this.allColumns, this.parameters.Subtitle)?.Name || this.parameters.Subtitle;
1252
- const parameters = this.parameters;
1253
- if (parameters != null) {
1254
- this.title = this._rval.transform(parameters.Title, this.mo, this.allColumns, true);
1255
- this.subtitle = this._rval.transform(parameters.Subtitle, this.mo, this.allColumns, true);
1256
- this.fontIcon = parameters.FontIcon ?? 'person-placeholder';
1257
- this.imageIcon = this._rval.transform(parameters.FontIcon, this.mo, this.allColumns);
1258
- this.isIconImage = typeof this.imageIcon === 'object';
1259
- this.hasIcon = parameters.HasIcon;
1260
- this.avatarCircle = true;
1261
- if (typeof parameters.AvatarCircle !== 'undefined') {
1262
- this.avatarCircle = parameters.AvatarCircle;
1263
- }
1264
- }
1265
- }
1266
- }
1267
- CardHeaderLogoTitleSubtitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardHeaderLogoTitleSubtitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1268
- CardHeaderLogoTitleSubtitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CardHeaderLogoTitleSubtitleComponent, selector: "bdc-card-header-logo-title-subtitle", outputs: { events: "events" }, usesInheritance: true, ngImport: i0, template: "<fd-card-header\r\n [class.hide-border]=\"parameters.HideBorder\"\r\n (click)=\"!isCheckList && events.emit({ title: 'rowCheck' })\"\r\n>\r\n <fd-avatar\r\n *ngIf=\"hasIcon\"\r\n [circle]=\"avatarCircle\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n alterIcon=\"content|alt|backup|default-icon\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\r\n ></fd-avatar>\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n <fd-checkbox\r\n *ngIf=\"isCheckList\"\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n <div\r\n *ngIf=\"setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0\"\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"mo\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"titleDbName\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title | bbbTranslate }}\r\n </h2>\r\n </div>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n </div>\r\n\r\n <h3\r\n fd-card-subtitle\r\n #hEl\r\n [hostEl]=\"hEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"subtitleDbName\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ subtitle | bbbTranslate }}\r\n </h3>\r\n</fd-card-header>\r\n<div></div>\r\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$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3$2.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "directive", type: i3$2.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i4$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "directive", type: i5$2.CardTitleDirective, selector: "[fd-card-title]" }, { kind: "directive", type: i5$2.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i7$1.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values"], outputs: ["focusChange"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1269
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardHeaderLogoTitleSubtitleComponent, decorators: [{
1270
- type: Component,
1271
- args: [{ selector: 'bdc-card-header-logo-title-subtitle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card-header\r\n [class.hide-border]=\"parameters.HideBorder\"\r\n (click)=\"!isCheckList && events.emit({ title: 'rowCheck' })\"\r\n>\r\n <fd-avatar\r\n *ngIf=\"hasIcon\"\r\n [circle]=\"avatarCircle\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n alterIcon=\"content|alt|backup|default-icon\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\r\n ></fd-avatar>\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n <fd-checkbox\r\n *ngIf=\"isCheckList\"\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n <div\r\n *ngIf=\"setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0\"\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"mo\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"titleDbName\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title | bbbTranslate }}\r\n </h2>\r\n </div>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n </div>\r\n\r\n <h3\r\n fd-card-subtitle\r\n #hEl\r\n [hostEl]=\"hEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"subtitleDbName\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ subtitle | bbbTranslate }}\r\n </h3>\r\n</fd-card-header>\r\n<div></div>\r\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"] }]
1272
- }], propDecorators: { events: [{
1273
- type: Output
1274
- }] } });
1275
-
1276
- class FormContentQuickViewComponent extends FormPropsBaseComponent {
1277
- constructor() {
1278
- super(...arguments);
1279
- this.groups = {};
1280
- }
1281
- ngOnInit() {
1282
- super.ngOnInit();
1283
- const groups = {};
1284
- this.title = this._controlUiPipe.transform(this.settings?.Title, this.layout94)?.FieldUi?.value;
1285
- this.subtitle = this._controlUiPipe.transform(this.settings?.Subtitle, this.layout94)?.FieldUi?.value;
1286
- const fontIcon = this._controlUiPipe.transform(this.settings?.FontIcon, this.layout94)?.FieldUi;
1287
- if (fontIcon) {
1288
- const { imageUrl, value } = fontIcon;
1289
- this.imageUrl = imageUrl;
1290
- this.fontIcon = value;
1291
- }
1292
- const settingGroups = this.settings?.Groups;
1293
- if (settingGroups) {
1294
- settingGroups.MoDataList.forEach((c) => {
1295
- groups[c.Title] = c.ListFields
1296
- .split(',')
1297
- .map((d) => ({
1298
- caption: d,
1299
- fieldUi: this._controlUiPipe.transform(d, this.layout94)
1300
- }))
1301
- .map((d) => ({ ...d, value: this.getFieldValue(d.fieldUi?.FieldUi?.value) }))
1302
- .map((d) => ({ ...d, type: this.getFieldType(d.value) }));
1303
- });
1304
- }
1305
- this.groups = groups;
1306
- }
1307
- getFieldValue(value) {
1308
- if (!value) {
1309
- return value;
1310
- }
1311
- const t = value.toString();
1312
- if (t.indexOf(',') > -1) {
1313
- return t.split(',');
1314
- }
1315
- return value;
1316
- }
1317
- getIsPhone(value) {
1318
- if (value.startsWith('0') || (value.startsWith('+') && !Number.isNaN(value.substring(1, value.length)))) {
1319
- return true;
1320
- }
1321
- return false;
1322
- }
1323
- getIsEmail(value) {
1324
- if (value.indexOf('@') > -1) {
1325
- return true;
1326
- }
1327
- return false;
1328
- }
1329
- getIsWebsite(value) {
1330
- if (value.startsWith('http') || value.startsWith('https')) {
1331
- return true;
1332
- }
1333
- return false;
1334
- }
1335
- getFieldType(value) {
1336
- if (typeof value === 'string') {
1337
- if (this.getIsWebsite(value)) {
1338
- return 0;
1339
- }
1340
- if (this.getIsPhone(value)) {
1341
- return 1;
1342
- }
1343
- if (this.getIsEmail(value)) {
1344
- return 2;
1345
- }
1346
- return 3;
1347
- }
1348
- else if (Array.isArray(value)) {
1349
- if (value.length) {
1350
- if (this.getIsPhone(value[0])) {
1351
- return 4;
1352
- }
1353
- if (this.getIsEmail(value[0])) {
1354
- return 5;
1355
- }
1356
- if (this.getIsWebsite(value[0])) {
1357
- return 6;
1358
- }
1359
- }
1360
- }
1361
- }
1362
- }
1363
- FormContentQuickViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormContentQuickViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1364
- FormContentQuickViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormContentQuickViewComponent, selector: "bdc-form-content-quick-view", usesInheritance: true, ngImport: i0, template: "<fd-quick-view>\n <fd-quick-view-subheader>\n <fd-avatar\n title=\"avatar\"\n [glyph]=\"fontIcon\"\n [image]=\"imageUrl\"\n [size]=\"'s'\"\n [border]=\"settings.ShowLogoBorder\"\n [transparent]=\"settings.TransparentLogo\"\n [colorAccent]=\"settings.AccentColor\"\n ></fd-avatar>\n <fd-quick-view-subheader-title>\n {{ title | bbbTranslate }}\n </fd-quick-view-subheader-title>\n <fd-quick-view-subheader-subtitle>\n {{ subtitle | bbbTranslate }}\n </fd-quick-view-subheader-subtitle>\n </fd-quick-view-subheader>\n\n <fd-quick-view-group *ngFor=\"let group of groups | keyvalue\" [attr.aria-labelledby]=\"group.key\">\n <fd-quick-view-group-title [id]=\"group.key\">\n {{ group.key | bbbTranslate }}\n </fd-quick-view-group-title>\n <fd-quick-view-group-item *ngFor=\"let item of group.value\">\n <fd-quick-view-group-item-label>\n {{ item.caption | bbbTranslate }}\n </fd-quick-view-group-item-label>\n <fd-quick-view-group-item-content>\n <ng-container [ngSwitch]=\"item.type\">\n <ng-container *ngSwitchCase=\"6\">\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\n <a\n *ngFor=\"let website of item.value\"\n [href]=\"website\"\n [innerText]=\"website | bbbTranslate\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n </div>\n </ng-container>\n <a\n *ngSwitchCase=\"0\"\n [href]=\"item.value\"\n [innerText]=\"item.value | bbbTranslate\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n <a\n *ngSwitchCase=\"1\"\n [href]=\"'tel:' + item.value\"\n [innerText]=\"item.value | bbbTranslate\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n <ng-container *ngSwitchCase=\"4\">\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\n <a\n *ngFor=\"let tel of item.value\"\n [href]=\"'tel:' + tel\"\n [innerText]=\"tel\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"5\">\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\n <a\n *ngFor=\"let email of item.value\"\n style=\"direction: ltr; font-family: monospace\"\n [href]=\"'mailto:' + email\"\n [innerText]=\"email\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n </div>\n </ng-container>\n <a\n style=\"direction: ltr; font-family: monospace\"\n *ngSwitchCase=\"2\"\n [href]=\"'mailto:' + item.value\"\n [innerText]=\"item.value\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n <div\n *ngSwitchDefault\n [innerText]=\"item.value | bbbTranslate\"\n fd-quick-view-group-item-content-element\n ></div>\n </ng-container>\n </fd-quick-view-group-item-content>\n </fd-quick-view-group-item>\n </fd-quick-view-group>\n</fd-quick-view>\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4$4.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i4$5.QuickViewComponent, selector: "fd-quick-view", inputs: ["id"] }, { kind: "component", type: i4$5.QuickViewSubheaderComponent, selector: "fd-quick-view-subheader" }, { kind: "component", type: i4$5.QuickViewSubheaderTitleComponent, selector: "fd-quick-view-subheader-title" }, { kind: "component", type: i4$5.QuickViewSubheaderSubtitleComponent, selector: "fd-quick-view-subheader-subtitle" }, { kind: "component", type: i4$5.QuickViewGroupComponent, selector: "fd-quick-view-group" }, { kind: "component", type: i4$5.QuickViewGroupTitleComponent, selector: "fd-quick-view-group-title", inputs: ["id"] }, { kind: "component", type: i4$5.QuickViewGroupItemComponent, selector: "fd-quick-view-group-item", inputs: ["id"] }, { kind: "component", type: i4$5.QuickViewGroupItemLabelComponent, selector: "fd-quick-view-group-item-label" }, { kind: "component", type: i4$5.QuickViewGroupItemContentComponent, selector: "fd-quick-view-group-item-content" }, { kind: "directive", type: i4$5.QuickViewGroupItemContentElementDirective, selector: "[fd-quick-view-group-item-content-element]" }, { kind: "pipe", type: i1$1.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1365
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormContentQuickViewComponent, decorators: [{
1366
- type: Component,
1367
- args: [{ selector: 'bdc-form-content-quick-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-quick-view>\n <fd-quick-view-subheader>\n <fd-avatar\n title=\"avatar\"\n [glyph]=\"fontIcon\"\n [image]=\"imageUrl\"\n [size]=\"'s'\"\n [border]=\"settings.ShowLogoBorder\"\n [transparent]=\"settings.TransparentLogo\"\n [colorAccent]=\"settings.AccentColor\"\n ></fd-avatar>\n <fd-quick-view-subheader-title>\n {{ title | bbbTranslate }}\n </fd-quick-view-subheader-title>\n <fd-quick-view-subheader-subtitle>\n {{ subtitle | bbbTranslate }}\n </fd-quick-view-subheader-subtitle>\n </fd-quick-view-subheader>\n\n <fd-quick-view-group *ngFor=\"let group of groups | keyvalue\" [attr.aria-labelledby]=\"group.key\">\n <fd-quick-view-group-title [id]=\"group.key\">\n {{ group.key | bbbTranslate }}\n </fd-quick-view-group-title>\n <fd-quick-view-group-item *ngFor=\"let item of group.value\">\n <fd-quick-view-group-item-label>\n {{ item.caption | bbbTranslate }}\n </fd-quick-view-group-item-label>\n <fd-quick-view-group-item-content>\n <ng-container [ngSwitch]=\"item.type\">\n <ng-container *ngSwitchCase=\"6\">\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\n <a\n *ngFor=\"let website of item.value\"\n [href]=\"website\"\n [innerText]=\"website | bbbTranslate\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n </div>\n </ng-container>\n <a\n *ngSwitchCase=\"0\"\n [href]=\"item.value\"\n [innerText]=\"item.value | bbbTranslate\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n <a\n *ngSwitchCase=\"1\"\n [href]=\"'tel:' + item.value\"\n [innerText]=\"item.value | bbbTranslate\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n <ng-container *ngSwitchCase=\"4\">\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\n <a\n *ngFor=\"let tel of item.value\"\n [href]=\"'tel:' + tel\"\n [innerText]=\"tel\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"5\">\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\n <a\n *ngFor=\"let email of item.value\"\n style=\"direction: ltr; font-family: monospace\"\n [href]=\"'mailto:' + email\"\n [innerText]=\"email\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n </div>\n </ng-container>\n <a\n style=\"direction: ltr; font-family: monospace\"\n *ngSwitchCase=\"2\"\n [href]=\"'mailto:' + item.value\"\n [innerText]=\"item.value\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n <div\n *ngSwitchDefault\n [innerText]=\"item.value | bbbTranslate\"\n fd-quick-view-group-item-content-element\n ></div>\n </ng-container>\n </fd-quick-view-group-item-content>\n </fd-quick-view-group-item>\n </fd-quick-view-group>\n</fd-quick-view>\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"] }]
1368
- }] });
1369
-
1370
- class ServiceDeskServcieDetailComponent extends FormPropsBaseComponent {
1371
- constructor() {
1372
- super(...arguments);
1373
- this.firstArray = [];
1374
- this.secondArray = [];
1375
- this.moByCaption = {};
1376
- this.fieldsCaption = [];
1377
- this.value = '';
1378
- this.israhnamayTasviri = false;
1379
- }
1380
- ngOnInit() {
1381
- super.ngOnInit();
1382
- const $FieldDict = this.fieldDict;
1383
- if (!$FieldDict) {
1384
- return;
1385
- }
1386
- this._prepare($FieldDict, this.mo);
1387
- }
1388
- onDownload(item) {
1389
- if (item.Attachment) {
1390
- BarsaApi.Common.File.DownloadFileId(item.Attachment.Files[0].Id);
1391
- }
1392
- }
1393
- ngAfterViewInit() {
1394
- super.ngAfterViewInit();
1395
- this.alignTablesTr();
1396
- }
1397
- onKhadamatMortabet(item) {
1398
- BarsaApi.Bw.Form.Show({
1399
- MoId: item.Id,
1400
- TypeDefId: this.khadamatmortabetReport.TypeDefId,
1401
- MoContext: { ReportId: this.khadamatmortabetReport.ReportId }
1402
- });
1403
- }
1404
- alignTablesTr() {
1405
- setTimeout(() => {
1406
- const tablesRef = this.tablesRef.toArray();
1407
- const firstTableEl = tablesRef[0].nativeElement;
1408
- const secondTableEl = tablesRef[1].nativeElement;
1409
- const trFirstTable = firstTableEl.querySelectorAll('tr');
1410
- const trSecondTable = secondTableEl.querySelectorAll('tr');
1411
- trFirstTable.forEach((tr, index) => {
1412
- if (index < trSecondTable.length) {
1413
- const trSecond = trSecondTable[index];
1414
- if (tr.offsetHeight > trSecond.offsetHeight) {
1415
- trSecond.style.height = `${tr.offsetHeight}px`;
1416
- }
1417
- else {
1418
- tr.style.height = `${trSecond.offsetHeight}px`;
1419
- }
1420
- }
1421
- });
1422
- }, 0);
1423
- }
1424
- _prepare($FieldDict, mo) {
1425
- const leftside = FindLayoutSettingFromLayout94(this.layout94, 'جدول چپ');
1426
- const rightside = FindLayoutSettingFromLayout94(this.layout94, 'جدول راست');
1427
- leftside?.items[0]?.items?.forEach((item2) => {
1428
- const key = item2.Caption;
1429
- const fieldName = item2.ControlId;
1430
- const item = { caption: key, fieldName };
1431
- if (key === 'آدرس سایت' ||
1432
- (typeof mo[fieldName] === 'string' &&
1433
- (mo[fieldName].startsWith('https://') || mo[fieldName].startsWith('http://')))) {
1434
- item.type = 'Link';
1435
- }
1436
- if (typeof mo[fieldName] === 'object') {
1437
- if (mo[fieldName].$Type === 'Common.MetaObjectListWeb') {
1438
- item.type = 'MoList';
1439
- }
1440
- else if (mo[fieldName].Ext) {
1441
- item.type = 'Image';
1442
- }
1443
- else if (mo[fieldName].Files) {
1444
- item.type = 'Files';
1445
- }
1446
- else {
1447
- item.type = 'Relation';
1448
- }
1449
- }
1450
- this.firstArray.push(item);
1451
- });
1452
- rightside?.items[0]?.items?.forEach((item2) => {
1453
- const key = item2.Caption;
1454
- const fieldName = item2.ControlId;
1455
- const item = { caption: key, fieldName };
1456
- if (key === 'آدرس سایت' ||
1457
- (typeof mo[fieldName] === 'string' &&
1458
- (mo[fieldName].startsWith('https://') || mo[fieldName].startsWith('http://')))) {
1459
- item.type = 'Link';
1460
- }
1461
- if (typeof mo[fieldName] === 'object') {
1462
- if (mo[fieldName].$Type === 'Common.MetaObjectListWeb') {
1463
- item.type = 'MoList';
1464
- }
1465
- else if (mo[fieldName].Ext) {
1466
- item.type = 'Image';
1467
- }
1468
- else if (mo[fieldName].Files) {
1469
- item.type = 'Files';
1470
- }
1471
- else {
1472
- item.type = 'Relation';
1473
- }
1474
- }
1475
- this.secondArray.push(item);
1476
- });
1477
- this.rahnamayTasviri = this._sanitizer.bypassSecurityTrustResourceUrl(mo[$FieldDict['راهنمای تصویری']]);
1478
- if (this.rahnamayTasviri) {
1479
- this.israhnamayTasviri = true;
1480
- }
1481
- // this.firstArray = filteredControls.slice(0, controlCountMiddle);
1482
- // this.secondArray = filteredControls.slice(controlCountMiddle, controlCount);
1483
- this.khadamatmortabet = mo[$FieldDict['خدمات مرتبط']]?.MoDataList ?? [];
1484
- this.khadamatmortabetReport = mo[$FieldDict['خدمات مرتبط']];
1485
- // this.isOdd = controlCount % 2 === 0;
1486
- this.isOdd = false;
1487
- }
1488
- }
1489
- ServiceDeskServcieDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskServcieDetailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1490
- ServiceDeskServcieDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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'\">\n <fd-tab-list\n [collapseOverflow]=\"true\"\n [stackContent]=\"false\"\n maxContentHeight=\"auto\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n #tablist\n >\n <fd-tab [title]=\"'\u0634\u0646\u0627\u0633\u0646\u0627\u0645\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\" selected>\n <fd-dynamic-page-content>\n <fd-layout-grid class=\"row\" style=\"margin: 0\">\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderTable;\n context: {\n $implicit: firstArray,\n showKhadamatMortabet: isOdd,\n classNames: 'firstTable'\n }\n \"\n >\n </ng-container>\n </div>\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderTable;\n context: {\n $implicit: secondArray,\n showKhadamatMortabet: !isOdd,\n classNames: 'secondTable'\n }\n \"\n >\n </ng-container>\n </div>\n </fd-layout-grid>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab [title]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab [title]=\"'\u0634\u0631\u0627\u064A\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n <bsu-layout-control\n *ngIf=\"'\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\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\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\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\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\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\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\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\"\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\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\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\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab\n [title]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\n *ngIf=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n >\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"configUi\"\n [caption]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n </fd-tab-list>\n\n <fd-dynamic-page-footer> </fd-dynamic-page-footer>\n</fd-dynamic-page>\n\n<ng-template #renderTable let-array let-showKhadamatMortabet=\"showKhadamatMortabet\" let-classNames=\"classNames\">\n <table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\n <ng-container *ngFor=\"let controlItem of array\">\n <tr>\n <th>{{ controlItem.caption | bbbTranslate }}</th>\n <td>\n <ng-container [ngSwitch]=\"controlItem.type\">\n <ng-container *ngSwitchCase=\"'Link'\">\n <a dir=\"ltr\" target=\"_blank\" [href]=\"mo[controlItem.fieldName]\">{{\n mo[controlItem.fieldName]\n }}</a></ng-container\n >\n <ng-container *ngSwitchCase=\"'Relation'\">\n {{ controlItem.fieldName | val: mo:true | bbbTranslate }}</ng-container\n >\n <ng-container *ngSwitchCase=\"'MoList'\">\n <div *ngFor=\"let item of mo[controlItem.fieldName]?.MoDataList\" class=\"links\">\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\" style=\"color: #0854a0\"></fd-icon>\n <!-- <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon> -->\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Image'\"> {{ mo[controlItem.fieldName].Ext }}</ng-container>\n <ng-container *ngSwitchCase=\"'Files'\"> {{ mo[controlItem.fieldName].Files }}</ng-container>\n <ng-container *ngSwitchDefault>\n {{ mo[controlItem.fieldName + '$Caption'] || mo[controlItem.fieldName] | bbbTranslate }}\n </ng-container>\n </ng-container>\n </td>\n </tr>\n </ng-container>\n <!-- <ng-container *ngIf=\"showKhadamatMortabet\">\n <tr>\n <th>\u062E\u062F\u0645\u0627\u062A \u0645\u0631\u062A\u0628\u0637</th>\n <td>\n <div class=\"links\" *ngFor=\"let item of khadamatmortabet\">\n <a (click)=\"onKhadamatMortabet(item)\">{{ item.$Caption }}</a>\n </div>\n </td>\n </tr>\n </ng-container> -->\n </table>\n</ng-template>\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$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i3$2.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"] }, { kind: "component", type: i3$3.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["role", "ariaLabel", "background", "autoResponsive", "size", "offset", "expandContent"] }, { kind: "component", type: i3$3.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i3$3.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i8$1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i5$3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i5$3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: i2$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i2$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "pipe", type: i1.MoValuePipe, name: "val" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1491
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskServcieDetailComponent, decorators: [{
1492
- type: Component,
1493
- args: [{ selector: 'bdc-service-desk-servcie-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-dynamic-page [size]=\"isMobile ? 'small' : 'large'\">\n <fd-tab-list\n [collapseOverflow]=\"true\"\n [stackContent]=\"false\"\n maxContentHeight=\"auto\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n #tablist\n >\n <fd-tab [title]=\"'\u0634\u0646\u0627\u0633\u0646\u0627\u0645\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\" selected>\n <fd-dynamic-page-content>\n <fd-layout-grid class=\"row\" style=\"margin: 0\">\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderTable;\n context: {\n $implicit: firstArray,\n showKhadamatMortabet: isOdd,\n classNames: 'firstTable'\n }\n \"\n >\n </ng-container>\n </div>\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderTable;\n context: {\n $implicit: secondArray,\n showKhadamatMortabet: !isOdd,\n classNames: 'secondTable'\n }\n \"\n >\n </ng-container>\n </div>\n </fd-layout-grid>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab [title]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab [title]=\"'\u0634\u0631\u0627\u064A\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n <bsu-layout-control\n *ngIf=\"'\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\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\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\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\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\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\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\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\"\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\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\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\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab\n [title]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\n *ngIf=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n >\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"configUi\"\n [caption]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n </fd-tab-list>\n\n <fd-dynamic-page-footer> </fd-dynamic-page-footer>\n</fd-dynamic-page>\n\n<ng-template #renderTable let-array let-showKhadamatMortabet=\"showKhadamatMortabet\" let-classNames=\"classNames\">\n <table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\n <ng-container *ngFor=\"let controlItem of array\">\n <tr>\n <th>{{ controlItem.caption | bbbTranslate }}</th>\n <td>\n <ng-container [ngSwitch]=\"controlItem.type\">\n <ng-container *ngSwitchCase=\"'Link'\">\n <a dir=\"ltr\" target=\"_blank\" [href]=\"mo[controlItem.fieldName]\">{{\n mo[controlItem.fieldName]\n }}</a></ng-container\n >\n <ng-container *ngSwitchCase=\"'Relation'\">\n {{ controlItem.fieldName | val: mo:true | bbbTranslate }}</ng-container\n >\n <ng-container *ngSwitchCase=\"'MoList'\">\n <div *ngFor=\"let item of mo[controlItem.fieldName]?.MoDataList\" class=\"links\">\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\" style=\"color: #0854a0\"></fd-icon>\n <!-- <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon> -->\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Image'\"> {{ mo[controlItem.fieldName].Ext }}</ng-container>\n <ng-container *ngSwitchCase=\"'Files'\"> {{ mo[controlItem.fieldName].Files }}</ng-container>\n <ng-container *ngSwitchDefault>\n {{ mo[controlItem.fieldName + '$Caption'] || mo[controlItem.fieldName] | bbbTranslate }}\n </ng-container>\n </ng-container>\n </td>\n </tr>\n </ng-container>\n <!-- <ng-container *ngIf=\"showKhadamatMortabet\">\n <tr>\n <th>\u062E\u062F\u0645\u0627\u062A \u0645\u0631\u062A\u0628\u0637</th>\n <td>\n <div class=\"links\" *ngFor=\"let item of khadamatmortabet\">\n <a (click)=\"onKhadamatMortabet(item)\">{{ item.$Caption }}</a>\n </div>\n </td>\n </tr>\n </ng-container> -->\n </table>\n</ng-template>\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"] }]
1494
- }], propDecorators: { tabContainerRef: [{
1495
- type: ViewChild,
1496
- args: ['tabContainerRef']
1497
- }], tablesRef: [{
1498
- type: ViewChildren,
1499
- args: ['tablesRef']
1500
- }] } });
1501
-
1502
- class ServiceDeskViewOfServicesComponent extends ReportViewBaseComponent {
1503
- ngOnInit() {
1504
- super.ngOnInit();
1505
- this.fieldIcon = this.viewSetting.FieldIcon;
1506
- this.fieldTitle = this.viewSetting.FieldTitle;
1507
- this.fieldDynamicCommand = this.viewSetting.FieldDynamicCommand;
1508
- this.contextMenuItems?.forEach((c) => {
1509
- const parameters = c.Command.CustomUi?.Parameters;
1510
- if (parameters) {
1511
- // parameters.OnlyIcon = true;
1512
- }
1513
- });
1514
- }
1515
- onRowClick2(e, dynamicCommand) {
1516
- if (dynamicCommand) {
1517
- return;
1518
- }
1519
- super.onRowClick(e);
1520
- }
1521
- }
1522
- ServiceDeskViewOfServicesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskViewOfServicesComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1523
- ServiceDeskViewOfServicesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ServiceDeskViewOfServicesComponent, selector: "bdc-service-desk-view-of-services", usesInheritance: true, ngImport: i0, template: "<div class=\"services\">\n <div class=\"service-list\">\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <ng-container *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let i = index\">\n <div *ngIf=\"mo.$Group || mo.$Group === ''\" [fdLayoutGridCol]=\"12\">\n <h3\n fd-title\n style=\"\n padding: 0 0 0.4rem 0;\n border-bottom: var(--sapList_BorderWidth) solid var(--sapList_BorderColor);\n \"\n >\n {{ mo.$Group }}\n </h3>\n </div>\n <div *ngIf=\"!mo.$Group\" [fdLayoutGridCol]=\"12\" [colSm]=\"12\" [colMd]=\"3\" [colLg]=\"3\" [colXl]=\"3\">\n <div class=\"item\">\n <ng-container\n *ngTemplateOutlet=\"\n dynamicCommand;\n context: {\n $implicit: mo,\n index: i,\n dynCommand: fieldDynamicCommand | rval: mo:allColumns,\n title: fieldTitle | rval: mo:allColumns | bbbTranslate\n }\n \"\n ></ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </fd-layout-grid>\n </div>\n</div>\n<ng-template #dynamicCommand let-mo let-index=\"index\" let-dynCommand=\"dynCommand\" let-title=\"title\">\n <button\n fd-button\n [dynCommand]=\"dynCommand\"\n [mo]=\"mo\"\n [enableCommand]=\"dynCommand\"\n style=\"width: 100%; max-height: 2.3rem; height: 2.3rem; border-radius: 0\"\n [fdType]=\"'emphasized'\"\n (click)=\"onRowClick2({ mo, index },dynCommand)\"\n [title]=\"title\"\n >\n <span class=\"item-icon\">\n <fd-icon glyph=\"product\"></fd-icon>\n </span>\n <span class=\"item-content\"> {{ title }}</span>\n <span class=\"item-icon-arrow\">\n <fd-icon *ngIf=\"fieldIcon\" [glyph]=\"fieldIcon\"></fd-icon>\n </span>\n </button>\n <div style=\"padding: 10px; border-top: 1px solid #ccc\">\n <bsu-ulv-context-menu\n [disableOverflowContextMenu]=\"true\"\n [mo]=\"mo\"\n [index]=\"index\"\n [styleIndex]=\"mo.$StyleIndex\"\n [menuItems]=\"contextMenuItems\"\n [allColumns]=\"allColumns\"\n (commandClick)=\"this.ulvCommandClick.emit({ mo, index })\"\n ></bsu-ulv-context-menu>\n </div>\n</ng-template>\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$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.DynamicCommandDirective, selector: "[dynCommand]", inputs: ["dynCommand", "mo", "enableCommand"], outputs: ["commandClick"] }, { kind: "component", type: i3$2.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i8$1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i5$3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i5$3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i5$3.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i4$3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1524
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskViewOfServicesComponent, decorators: [{
1525
- type: Component,
1526
- args: [{ selector: 'bdc-service-desk-view-of-services', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"services\">\n <div class=\"service-list\">\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <ng-container *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let i = index\">\n <div *ngIf=\"mo.$Group || mo.$Group === ''\" [fdLayoutGridCol]=\"12\">\n <h3\n fd-title\n style=\"\n padding: 0 0 0.4rem 0;\n border-bottom: var(--sapList_BorderWidth) solid var(--sapList_BorderColor);\n \"\n >\n {{ mo.$Group }}\n </h3>\n </div>\n <div *ngIf=\"!mo.$Group\" [fdLayoutGridCol]=\"12\" [colSm]=\"12\" [colMd]=\"3\" [colLg]=\"3\" [colXl]=\"3\">\n <div class=\"item\">\n <ng-container\n *ngTemplateOutlet=\"\n dynamicCommand;\n context: {\n $implicit: mo,\n index: i,\n dynCommand: fieldDynamicCommand | rval: mo:allColumns,\n title: fieldTitle | rval: mo:allColumns | bbbTranslate\n }\n \"\n ></ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </fd-layout-grid>\n </div>\n</div>\n<ng-template #dynamicCommand let-mo let-index=\"index\" let-dynCommand=\"dynCommand\" let-title=\"title\">\n <button\n fd-button\n [dynCommand]=\"dynCommand\"\n [mo]=\"mo\"\n [enableCommand]=\"dynCommand\"\n style=\"width: 100%; max-height: 2.3rem; height: 2.3rem; border-radius: 0\"\n [fdType]=\"'emphasized'\"\n (click)=\"onRowClick2({ mo, index },dynCommand)\"\n [title]=\"title\"\n >\n <span class=\"item-icon\">\n <fd-icon glyph=\"product\"></fd-icon>\n </span>\n <span class=\"item-content\"> {{ title }}</span>\n <span class=\"item-icon-arrow\">\n <fd-icon *ngIf=\"fieldIcon\" [glyph]=\"fieldIcon\"></fd-icon>\n </span>\n </button>\n <div style=\"padding: 10px; border-top: 1px solid #ccc\">\n <bsu-ulv-context-menu\n [disableOverflowContextMenu]=\"true\"\n [mo]=\"mo\"\n [index]=\"index\"\n [styleIndex]=\"mo.$StyleIndex\"\n [menuItems]=\"contextMenuItems\"\n [allColumns]=\"allColumns\"\n (commandClick)=\"this.ulvCommandClick.emit({ mo, index })\"\n ></bsu-ulv-context-menu>\n </div>\n</ng-template>\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"] }]
1527
- }] });
1528
-
1529
- class ServiceDeskCardContentMojavezhayAkhzShodeComponent extends BaseComponent {
1530
- ngOnInit() {
1531
- super.ngOnInit();
1532
- this.fieldTitle = this.parameters.FieldTitle;
1533
- this.titleOfValue = this.parameters.TitleOfValue;
1534
- this.fieldValue = this.parameters.FieldValue;
1535
- }
1536
- }
1537
- ServiceDeskCardContentMojavezhayAkhzShodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskCardContentMojavezhayAkhzShodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1538
- ServiceDeskCardContentMojavezhayAkhzShodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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: i4$3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1539
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskCardContentMojavezhayAkhzShodeComponent, decorators: [{
1540
- type: Component,
1541
- 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"] }]
1542
- }], propDecorators: { mo: [{
1543
- type: Input
1544
- }], allColumns: [{
1545
- type: Input
1546
- }], parameters: [{
1547
- type: Input
1548
- }], rtl: [{
1549
- type: Input
1550
- }] } });
1551
-
1552
- class CardHeaderBigImageTitleAndSubtitleComponent extends CardHeaderLogoTitleSubtitleComponent {
1553
- }
1554
- CardHeaderBigImageTitleAndSubtitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardHeaderBigImageTitleAndSubtitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1555
- CardHeaderBigImageTitleAndSubtitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CardHeaderBigImageTitleAndSubtitleComponent, selector: "bdc-card-header-big-image-title-and-subtitle", usesInheritance: true, ngImport: i0, template: "<fd-card-header [class.hide-border]=\"parameters.HideBorder\">\n <fd-avatar\n *ngIf=\"hasIcon\"\n [circle]=\"avatarCircle\"\n size=\"s\"\n ariaLabel=\"avatar image\"\n title=\"avatar image\"\n [glyph]=\"fontIcon\"\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\n ></fd-avatar>\n <div fd-card-title [style.justify-content]=\"'end'\">\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\n <fd-checkbox\n *ngIf=\"isCheckList\"\n [name]=\"mo.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\n ></fd-checkbox>\n <div\n *ngIf=\"!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0\"\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n [styleIndex]=\"styleIndex\"\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\n ></div>\n <h2\n #hEl\n class=\"fd-card__title\"\n [hostEl]=\"hEl\"\n [dbName]=\"titleDbName\"\n [styleIndex]=\"styleIndex\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ title }}\n </h2>\n </div>\n <ng-container *ngIf=\"canView\">\n <button\n fd-button\n (click)=\"events.emit({ title: 'rowClick' })\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n </ng-container>\n </div>\n\n <h3\n fd-card-subtitle\n #hEl\n [hostEl]=\"hEl\"\n [dbName]=\"subtitleDbName\"\n [styleIndex]=\"styleIndex\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ subtitle }}\n </h3>\n</fd-card-header>\n<div></div>\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$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3$2.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "directive", type: i3$2.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i4$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "directive", type: i5$2.CardTitleDirective, selector: "[fd-card-title]" }, { kind: "directive", type: i5$2.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i7$1.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values"], outputs: ["focusChange"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1556
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardHeaderBigImageTitleAndSubtitleComponent, decorators: [{
1557
- type: Component,
1558
- args: [{ selector: 'bdc-card-header-big-image-title-and-subtitle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card-header [class.hide-border]=\"parameters.HideBorder\">\n <fd-avatar\n *ngIf=\"hasIcon\"\n [circle]=\"avatarCircle\"\n size=\"s\"\n ariaLabel=\"avatar image\"\n title=\"avatar image\"\n [glyph]=\"fontIcon\"\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\n ></fd-avatar>\n <div fd-card-title [style.justify-content]=\"'end'\">\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\n <fd-checkbox\n *ngIf=\"isCheckList\"\n [name]=\"mo.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\n ></fd-checkbox>\n <div\n *ngIf=\"!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0\"\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n [styleIndex]=\"styleIndex\"\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\n ></div>\n <h2\n #hEl\n class=\"fd-card__title\"\n [hostEl]=\"hEl\"\n [dbName]=\"titleDbName\"\n [styleIndex]=\"styleIndex\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ title }}\n </h2>\n </div>\n <ng-container *ngIf=\"canView\">\n <button\n fd-button\n (click)=\"events.emit({ title: 'rowClick' })\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n </ng-container>\n </div>\n\n <h3\n fd-card-subtitle\n #hEl\n [hostEl]=\"hEl\"\n [dbName]=\"subtitleDbName\"\n [styleIndex]=\"styleIndex\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ subtitle }}\n </h3>\n</fd-card-header>\n<div></div>\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"] }]
1559
- }] });
1560
-
1561
- class ServiceDeskFormLayoutContentMojavezComponent extends FormPropsBaseComponent {
1562
- constructor() {
1563
- super(...arguments);
1564
- this.fieldsCaption = [];
1565
- }
1566
- ngOnInit() {
1567
- super.ngOnInit();
1568
- let fieldDict = [];
1569
- if (this.fieldDict) {
1570
- fieldDict = Object.keys(this.fieldDict);
1571
- }
1572
- if (fieldDict) {
1573
- fieldDict.forEach((key) => {
1574
- if (this.fieldDict) {
1575
- const fieldName = this.fieldDict[key];
1576
- const item = { caption: key, fieldName, value: '' };
1577
- const customFiledUi = this._controlUiPipe.transform(key, this.layout94);
1578
- item.value = this.mo[fieldName];
1579
- const originalXtype = customFiledUi?.FieldUi?.originalXtype;
1580
- if (key === 'آدرس سایت') {
1581
- item.type = 'Link';
1582
- }
1583
- if (this.mo[fieldName + '$Caption']) {
1584
- item.type = 'Caption';
1585
- item.value = this.mo[fieldName + '$Caption'];
1586
- }
1587
- else if (typeof item.value === 'object') {
1588
- if (item.value.$Type === 'Common.MetaObjectListWeb') {
1589
- item.type = 'MoList';
1590
- }
1591
- else if (item.value.Ext) {
1592
- item.type = 'Image';
1593
- }
1594
- else if (originalXtype === 'Ui.FileLinearListBox') {
1595
- item.type = 'Files';
1596
- }
1597
- else {
1598
- item.type = 'Relation';
1599
- }
1600
- if (key === 'خدمات قابل انجام') {
1601
- item.type = 'MoList2';
1602
- }
1603
- }
1604
- this.fieldsCaption.push(item);
1605
- }
1606
- });
1607
- }
1608
- this.fieldsCaption = this.fieldsCaption.filter((c) => c.caption !== 'عنوان مجوز' && c.caption !== 'نقش اشخاص در مجوز' && c.caption !== 'فرزند');
1609
- const controlCount = this.fieldsCaption.length;
1610
- const controlCountMiddle = Math.ceil(this.fieldsCaption.length / 2);
1611
- this.firstArray = this.fieldsCaption.slice(0, controlCountMiddle);
1612
- this.secondArray = this.fieldsCaption.slice(controlCountMiddle, controlCount);
1613
- this.isOdd = controlCount % 2 === 0;
1614
- }
1615
- ngAfterViewInit() {
1616
- super.ngAfterViewInit();
1617
- this.alignTablesTr();
1618
- }
1619
- onLink(item) {
1620
- if (item.F34) {
1621
- window.open(item.F42);
1622
- }
1623
- else {
1624
- BarsaApi.Bw.Msg.Info('سامانه ای تعریف نشده است');
1625
- }
1626
- }
1627
- onDownload(item) {
1628
- BarsaApi.Common.File.DownloadFileId(item.Id);
1629
- }
1630
- alignTablesTr() {
1631
- setTimeout(() => {
1632
- const tablesRef = this.tablesRef.toArray();
1633
- const firstTableEl = tablesRef[0].nativeElement;
1634
- const secondTableEl = tablesRef[1].nativeElement;
1635
- const trFirstTable = firstTableEl.querySelectorAll('tr');
1636
- const trSecondTable = secondTableEl.querySelectorAll('tr');
1637
- trFirstTable.forEach((tr, index) => {
1638
- if (index < trSecondTable.length) {
1639
- const trSecond = trSecondTable[index];
1640
- if (tr.offsetHeight > trSecond.offsetHeight) {
1641
- trSecond.style.height = `${tr.offsetHeight}px`;
1642
- }
1643
- else {
1644
- tr.style.height = `${trSecond.offsetHeight}px`;
1645
- }
1646
- }
1647
- });
1648
- }, 0);
1649
- }
1650
- }
1651
- ServiceDeskFormLayoutContentMojavezComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskFormLayoutContentMojavezComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1652
- ServiceDeskFormLayoutContentMojavezComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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 <ng-container *ngFor=\"let controlItem of array\">\r\n <tr fd-table-row>\r\n <th fd-tabel-cell>{{ controlItem.caption }}</th>\r\n <td fd-tabel-cell>\r\n <ng-container [ngSwitch]=\"controlItem.type\">\r\n <ng-container *ngSwitchCase=\"'Link'\">\r\n <a target=\"_blank\" [href]=\"controlItem.value\">{{ controlItem.value }}</a></ng-container\r\n >\r\n <ng-container *ngSwitchCase=\"'Relation'\">{{ controlItem.value.$Caption }}</ng-container>\r\n <ng-container *ngSwitchCase=\"'MoList'\">\r\n <div *ngFor=\"let item of controlItem.value.MoDataList\" 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 </ng-container>\r\n <ng-container *ngSwitchCase=\"'MoList2'\">\r\n <div *ngFor=\"let item of controlItem.value.MoDataList\" 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 </ng-container>\r\n <ng-container *ngSwitchCase=\"'Caption'\"> {{ controlItem.value }}</ng-container>\r\n <ng-container *ngSwitchCase=\"'Image'\"> {{ controlItem.value.Ext }}</ng-container>\r\n <ng-container *ngSwitchCase=\"'Files'\">\r\n <div *ngFor=\"let item of controlItem.value.Files\" 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 </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ controlItem.value }}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\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$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i8$1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i5$3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i5$3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: i4$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i4$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1653
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskFormLayoutContentMojavezComponent, decorators: [{
1654
- type: Component,
1655
- 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 <ng-container *ngFor=\"let controlItem of array\">\r\n <tr fd-table-row>\r\n <th fd-tabel-cell>{{ controlItem.caption }}</th>\r\n <td fd-tabel-cell>\r\n <ng-container [ngSwitch]=\"controlItem.type\">\r\n <ng-container *ngSwitchCase=\"'Link'\">\r\n <a target=\"_blank\" [href]=\"controlItem.value\">{{ controlItem.value }}</a></ng-container\r\n >\r\n <ng-container *ngSwitchCase=\"'Relation'\">{{ controlItem.value.$Caption }}</ng-container>\r\n <ng-container *ngSwitchCase=\"'MoList'\">\r\n <div *ngFor=\"let item of controlItem.value.MoDataList\" 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 </ng-container>\r\n <ng-container *ngSwitchCase=\"'MoList2'\">\r\n <div *ngFor=\"let item of controlItem.value.MoDataList\" 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 </ng-container>\r\n <ng-container *ngSwitchCase=\"'Caption'\"> {{ controlItem.value }}</ng-container>\r\n <ng-container *ngSwitchCase=\"'Image'\"> {{ controlItem.value.Ext }}</ng-container>\r\n <ng-container *ngSwitchCase=\"'Files'\">\r\n <div *ngFor=\"let item of controlItem.value.Files\" 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 </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ controlItem.value }}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\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"] }]
1656
- }], propDecorators: { tabContainerRef: [{
1657
- type: ViewChild,
1658
- args: ['tabContainerRef']
1659
- }], tablesRef: [{
1660
- type: ViewChildren,
1661
- args: ['tablesRef', { read: ElementRef }]
1662
- }] } });
1663
-
1664
- class UlvContextMenuItemShowFileContentComponent extends BaseFormToolbaritemPropsComponent {
1665
- constructor(_reportValuePipe, _cdr, _dialogService, _sanitize) {
1666
- super(_reportValuePipe, _cdr);
1667
- this._reportValuePipe = _reportValuePipe;
1668
- this._cdr = _cdr;
1669
- this._dialogService = _dialogService;
1670
- this._sanitize = _sanitize;
1671
- this.disabled = false;
1672
- }
1673
- ngOnInit() {
1674
- super.ngOnInit();
1675
- const mo = this.mo;
1676
- this.text = this.parameters.ButtonText;
1677
- this.fdType = this.parameters.FdType$Caption;
1678
- this.compact = this.parameters.Compact;
1679
- this.icon = this.parameters.Icon;
1680
- this.iconOnly = this.parameters.IconOnly;
1681
- this.fileType = this._reportValuePipe.transform(this.parameters.FieldType, mo, this.allColumns); // نوع
1682
- this.file = this._reportValuePipe.transform(this.parameters.FieldFile, mo, this.allColumns);
1683
- this.videoUrl = this._reportValuePipe.transform(this.parameters.FieldVideoUrl, mo, this.allColumns);
1684
- if (this.fileType === '1' && this.file.Files?.length === 0) {
1685
- this.disabled = true;
1686
- }
1687
- if (this.fileType === '2' && this.videoUrl) {
1688
- this.disabled = true;
1689
- }
1690
- }
1691
- openDialog(dialog) {
1692
- let finalUrl;
1693
- if (this.fileType === '1') {
1694
- finalUrl = this._sanitize.bypassSecurityTrustResourceUrl(BarsaApi.Common.File.CreateAttachmentUrl(this.file.Files[0].Id, true));
1695
- }
1696
- if (this.fileType === '2') {
1697
- finalUrl = this._sanitize.bypassSecurityTrustResourceUrl(this.videoUrl);
1698
- }
1699
- const isMobile = this.deviceName === 'mobile';
1700
- const x = {
1701
- data: {
1702
- url: finalUrl,
1703
- isVideo: this.fileType === '2',
1704
- responsivePadding: true,
1705
- mobile: isMobile
1706
- }
1707
- };
1708
- if (!isMobile) {
1709
- x.width = '60%';
1710
- x.height = '56%';
1711
- }
1712
- this._dialogService.open(dialog, x);
1713
- }
1714
- }
1715
- UlvContextMenuItemShowFileContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UlvContextMenuItemShowFileContentComponent, deps: [{ token: i1.MoReportValuePipe }, { token: i0.ChangeDetectorRef }, { token: i2$3.DialogService }, { token: i3$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
1716
- UlvContextMenuItemShowFileContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UlvContextMenuItemShowFileContentComponent, selector: "bdc-ulv-context-menu-item-show-file-content", usesInheritance: true, ngImport: i0, template: "<button\n fd-button\n [compact]=\"compact\"\n [label]=\"iconOnly ? '' : (text | bbbTranslate)\"\n [fdType]=\"fdType\"\n [glyph]=\"icon\"\n [compact]=\"compact\"\n (click)=\"openDialog(pdfDialog)\"\n></button>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #pdfDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTplRef>\n <fd-dialog-header>\n <ng-template fdTemplate=\"header\">\n <div fd-bar-left></div>\n <div fd-bar-right>\n <fd-button-bar\n *ngIf=\"dialogConfig.height !== '100vh'\"\n ariaLabel=\"fullscreen\"\n [glyph]=\"dialog.data.fullscreen ? 'exitfullscreen' : 'resize'\"\n fullscreenDialog\n [fullscreen]=\"dialog.data.fullscreen\"\n (fullscreenChanged)=\"dialog.data.fullscreen = $event\"\n [dialog]=\"dialog\"\n [dialogComponent]=\"dialogTplRef\"\n ></fd-button-bar>\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.dismiss()\"></fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <object\n *ngIf=\"!dialogConfig.data.isVideo\"\n [data]=\"dialogConfig.data.url\"\n type=\"application/pdf\"\n width=\"100%\"\n height=\"98%\"\n ></object>\n <video *ngIf=\"dialogConfig.data.isVideo\" controls style=\"width: 100%; height: 98%\">\n <source [src]=\"dialogConfig.data.url\" type=\"video/mp4\" />\n Your browser does not support HTML video.\n </video>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$2.FullscreenDialogDirective, selector: "[fullscreenDialog]", inputs: ["dialog", "dialogComponent", "fullscreen"], outputs: ["fullscreenChanged"] }, { kind: "directive", type: i4$2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i4$2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: i5.DeprecatedButtonContentDensityDirective, selector: "[fd-button][compact]" }, { kind: "component", type: i5$1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i5$1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i12.TemplateDirective, selector: "[fdTemplate]", inputs: ["fdTemplate"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1717
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UlvContextMenuItemShowFileContentComponent, decorators: [{
1718
- type: Component,
1719
- args: [{ selector: 'bdc-ulv-context-menu-item-show-file-content', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n fd-button\n [compact]=\"compact\"\n [label]=\"iconOnly ? '' : (text | bbbTranslate)\"\n [fdType]=\"fdType\"\n [glyph]=\"icon\"\n [compact]=\"compact\"\n (click)=\"openDialog(pdfDialog)\"\n></button>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #pdfDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTplRef>\n <fd-dialog-header>\n <ng-template fdTemplate=\"header\">\n <div fd-bar-left></div>\n <div fd-bar-right>\n <fd-button-bar\n *ngIf=\"dialogConfig.height !== '100vh'\"\n ariaLabel=\"fullscreen\"\n [glyph]=\"dialog.data.fullscreen ? 'exitfullscreen' : 'resize'\"\n fullscreenDialog\n [fullscreen]=\"dialog.data.fullscreen\"\n (fullscreenChanged)=\"dialog.data.fullscreen = $event\"\n [dialog]=\"dialog\"\n [dialogComponent]=\"dialogTplRef\"\n ></fd-button-bar>\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.dismiss()\"></fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <object\n *ngIf=\"!dialogConfig.data.isVideo\"\n [data]=\"dialogConfig.data.url\"\n type=\"application/pdf\"\n width=\"100%\"\n height=\"98%\"\n ></object>\n <video *ngIf=\"dialogConfig.data.isVideo\" controls style=\"width: 100%; height: 98%\">\n <source [src]=\"dialogConfig.data.url\" type=\"video/mp4\" />\n Your browser does not support HTML video.\n </video>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
1720
- }], ctorParameters: function () { return [{ type: i1.MoReportValuePipe }, { type: i0.ChangeDetectorRef }, { type: i2$3.DialogService }, { type: i3$4.DomSanitizer }]; } });
1721
-
1722
- class ResendVerificationCodeComponent extends FieldBaseComponent {
1723
- constructor() {
1724
- super(...arguments);
1725
- this.caption = '00:00';
1726
- this.timer = 1;
1727
- this.minutes = '0';
1728
- this.seconds = '0';
1729
- this.timeLeft = 120;
1730
- }
1731
- ngAfterViewInit() {
1732
- super.ngAfterViewInit();
1733
- this.caption = `(${this.caption})`;
1734
- this._startTimer();
1735
- }
1736
- ngOnDestroy() {
1737
- super.ngOnDestroy();
1738
- if (this.interval$) {
1739
- clearInterval(this.interval$);
1740
- }
1741
- }
1742
- onClick() {
1743
- this.context.fireEvent('click', this.context);
1744
- }
1745
- onStartTimer() {
1746
- this._startTimer();
1747
- }
1748
- _startTimer() {
1749
- this.interval$ = setInterval(() => {
1750
- if (this.timeLeft > 0) {
1751
- this.timeLeft--;
1752
- this.minutes = Math.floor(this.timeLeft / 60).toString();
1753
- this.seconds = Math.round(this.timeLeft % 60).toString();
1754
- this.minutes = Number(this.minutes) < 10 ? '0' + this.minutes : this.minutes;
1755
- this.seconds = Number(this.seconds) < 10 ? '0' + this.seconds : this.seconds;
1756
- this.caption = `(${this.minutes}:${this.seconds})`;
1757
- }
1758
- else {
1759
- this.timeLeft = 120;
1760
- this.caption = `${this.caption}`;
1761
- if (this.interval$ != null) {
1762
- clearInterval(this.interval$);
1763
- this.interval$ = null;
1764
- }
1765
- }
1766
- this._cdr.detectChanges();
1767
- }, 1000);
1768
- }
1769
- }
1770
- ResendVerificationCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ResendVerificationCodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1771
- ResendVerificationCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ResendVerificationCodeComponent, selector: "bdc-resend-verification-code", usesInheritance: true, ngImport: i0, template: "<button\r\n (click)=\"onClick()\"\r\n fd-button\r\n [attr.disabled]=\"interval$ === null ? null : true\"\r\n (click)=\"onStartTimer()\"\r\n [label]=\"'\u0627\u0631\u0633\u0627\u0644 \u0645\u062C\u062F\u062F' + caption\"\r\n></button>\r\n", styles: [""], dependencies: [{ kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1772
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ResendVerificationCodeComponent, decorators: [{
1773
- type: Component,
1774
- args: [{ selector: 'bdc-resend-verification-code', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n (click)=\"onClick()\"\r\n fd-button\r\n [attr.disabled]=\"interval$ === null ? null : true\"\r\n (click)=\"onStartTimer()\"\r\n [label]=\"'\u0627\u0631\u0633\u0627\u0644 \u0645\u062C\u062F\u062F' + caption\"\r\n></button>\r\n" }]
1775
- }] });
1776
-
1777
- class CheckboxButtonComponent extends UiCheckBoxComponent {
1778
- ngOnInit() {
1779
- super.ngOnInit();
1780
- this.trueIcon = this.parameters?.TrueIcon;
1781
- this.fdType = this.parameters?.FdType$Caption;
1782
- this.falseIcon = this.parameters?.FalseIcon;
1783
- }
1784
- onClick() {
1785
- this._valueChanged(!this.value);
1786
- }
1787
- }
1788
- CheckboxButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CheckboxButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1789
- CheckboxButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1790
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CheckboxButtonComponent, decorators: [{
1791
- type: Component,
1792
- 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"] }]
1793
- }] });
1794
-
1795
- class BarcodeFormatPipe {
1796
- transform(value) {
1797
- let format = '';
1798
- for (const enumMember of Object.keys(BarcodeFormat)) {
1799
- const isValueProperty = parseInt(enumMember, 10) >= 0;
1800
- if (isValueProperty && Number(enumMember) === value) {
1801
- format = BarcodeFormat[enumMember];
1802
- }
1803
- }
1804
- return format;
1805
- }
1806
- }
1807
- BarcodeFormatPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1808
- BarcodeFormatPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: BarcodeFormatPipe, name: "barcodeFormat" });
1809
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeFormatPipe, decorators: [{
1810
- type: Pipe,
1811
- args: [{
1812
- name: 'barcodeFormat'
1813
- }]
1814
- }] });
1815
-
1816
- class ReportTabViewComponent extends ReportViewBaseComponent {
1817
- ngOnInit() {
1818
- super.ngOnInit();
1819
- this.arrowRight = this.rtl ? 'navigation-left-arrow' : 'navigation-right-arrow';
1820
- this.fieldTitle = this.viewSetting.FieldTitle;
1821
- this.fieldIcon = this.viewSetting.FieldIcon;
1822
- this.fieldState = this.viewSetting.FieldState;
1823
- this.mode = this.viewSetting.Mode$Caption;
1824
- }
1825
- onSelectedTabChange(e) {
1826
- const index = this.moDataList.findIndex((c) => c.Id === e.id);
1827
- const mo = this.moDataList[index];
1828
- super.onRowCheck({ mo, index });
1829
- }
1830
- }
1831
- ReportTabViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportTabViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1832
- ReportTabViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ReportTabViewComponent, selector: "bdc-report-tab-view", usesInheritance: true, ngImport: i0, template: "<fd-tab-list [expandOverflowText]=\"'More' | bbbTranslate\" (selectedTabChange)=\"onSelectedTabChange($event)\">\n <fd-tab *ngFor=\"let mo of moDataList\" [title]=\"mo.$Caption\" [id]=\"mo.Id\"> </fd-tab>\n</fd-tab-list>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i2$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1833
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportTabViewComponent, decorators: [{
1834
- type: Component,
1835
- args: [{ selector: 'bdc-report-tab-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-tab-list [expandOverflowText]=\"'More' | bbbTranslate\" (selectedTabChange)=\"onSelectedTabChange($event)\">\n <fd-tab *ngFor=\"let mo of moDataList\" [title]=\"mo.$Caption\" [id]=\"mo.Id\"> </fd-tab>\n</fd-tab-list>\n" }]
1836
- }] });
1837
-
1838
- class ReportLineChartViewComponent extends ReportViewBaseComponent {
1839
- }
1840
- ReportLineChartViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportLineChartViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1841
- ReportLineChartViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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: i2$5.ChartLineTimeBaseDirective, selector: "[beChartLineTime]", inputs: ["chartOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1842
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportLineChartViewComponent, decorators: [{
1843
- type: Component,
1844
- 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"] }]
1845
- }] });
1846
-
1847
- class CardHeaderKpiComponent extends CardHeaderLogoTitleSubtitleComponent {
1848
- ngOnInit() {
1849
- const parentField = this.parameters.InheritanceInfo?.ParentFieldName;
1850
- if (parentField) {
1851
- const val = this.parameters[parentField];
1852
- if (val) {
1853
- Object.keys(val).forEach((c) => {
1854
- if (!c.startsWith('$') && c !== 'Id') {
1855
- this.parameters[c] = val[c];
1856
- }
1857
- });
1858
- }
1859
- }
1860
- super.ngOnInit();
1861
- const parameters = this.parameters;
1862
- if (parameters != null) {
1863
- this.kpiValue = this._rval.transform(parameters.KpiValue, this.mo, this.allColumns, true);
1864
- this.kpiStatus = this._rval.transform(parameters.KpiStatus, this.mo, this.allColumns, true);
1865
- this.kpiAnalyticalLabel = parameters.KpiAnalyticalLabel;
1866
- this.kpiAnalayticalSymbol = this._rval.transform(parameters.KpiAnalayticalSymbol, this.mo, this.allColumns);
1867
- this.kpiAnalyticalContent = this._rval.transform(parameters.KpiAnalyticalContent, this.mo, this.allColumns);
1868
- }
1869
- }
1870
- }
1871
- CardHeaderKpiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardHeaderKpiComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1872
- CardHeaderKpiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CardHeaderKpiComponent, selector: "bdc-card-header-kpi", usesInheritance: true, ngImport: i0, template: "<fd-card-header>\n <div fd-card-title [style.justify-content]=\"'end'\">\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\n <fd-checkbox\n *ngIf=\"isCheckList\"\n [name]=\"mo.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\n ></fd-checkbox>\n <h2\n #hEl\n class=\"fd-card__title\"\n [hostEl]=\"hEl\"\n [dbName]=\"titleDbName\"\n [styleIndex]=\"styleIndex\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ title }}\n </h2>\n <div\n *ngIf=\"!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0\"\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [styleIndex]=\"styleIndex\"\n [mo]=\"mo\"\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\n ></div>\n </div>\n <ng-container *ngIf=\"canView\">\n <button\n fd-button\n (click)=\"events.emit({ title: 'rowClick' })\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n </ng-container>\n </div>\n\n <fd-card-kpi-header>\n <strong fd-card-kpi-value [status]=\"kpiStatus\">{{ kpiValue }}</strong>\n <span\n fd-card-kpi-scale-icon\n [glyph]=\"kpiStatus === 'positive' ? 'up' : 'down'\"\n fd-object-status\n [status]=\"kpiStatus\"\n aria-label=\"up arrow\"\n title=\"up arrow\"\n ></span>\n <span fd-card-kpi-scale-text fd-object-status status=\"positive\">\u00B0C</span>\n\n <div fd-card-kpi-analytics>\n <label fd-card-kpi-analytics-label>{{ kpiAnalyticalLabel }}</label>\n <span fd-card-kpi-analytics-content>{{ kpiAnalyticalContent }}{{ kpiAnalayticalSymbol }}</span>\n </div>\n </fd-card-kpi-header>\n\n <h4 fd-card-second-subtitle>{{ subtitle }}</h4>\n</fd-card-header>\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$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3$2.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "directive", type: i3$2.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "directive", type: i5$2.CardTitleDirective, selector: "[fd-card-title]" }, { kind: "directive", type: i5$2.CardSecondSubtitleDirective, selector: "[fd-card-second-subtitle]" }, { kind: "component", type: i5$2.CardKpiHeaderComponent, selector: "fd-card-kpi-header" }, { kind: "directive", type: i5$2.CardKpiValueDirective, selector: "[fd-card-kpi-value]", inputs: ["status"] }, { kind: "directive", type: i5$2.CardKpiScaleIconDirective, selector: "[fd-card-kpi-scale-icon]" }, { kind: "directive", type: i5$2.CardKpiScaleTextDirective, selector: "[fd-card-kpi-scale-text]" }, { kind: "directive", type: i5$2.CardKpiAnalyticsDirective, selector: "[fd-card-kpi-analytics]" }, { kind: "directive", type: i5$2.CardKpiAnalyticsLabelDirective, selector: "[fd-card-kpi-analytics-label]" }, { kind: "directive", type: i5$2.CardKpiAnalyticsContentDirective, selector: "[fd-card-kpi-analytics-content]" }, { kind: "component", type: i7$1.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values"], outputs: ["focusChange"] }, { kind: "component", type: i7$2.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1873
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardHeaderKpiComponent, decorators: [{
1874
- type: Component,
1875
- args: [{ selector: 'bdc-card-header-kpi', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card-header>\n <div fd-card-title [style.justify-content]=\"'end'\">\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\n <fd-checkbox\n *ngIf=\"isCheckList\"\n [name]=\"mo.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\n ></fd-checkbox>\n <h2\n #hEl\n class=\"fd-card__title\"\n [hostEl]=\"hEl\"\n [dbName]=\"titleDbName\"\n [styleIndex]=\"styleIndex\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ title }}\n </h2>\n <div\n *ngIf=\"!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0\"\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [styleIndex]=\"styleIndex\"\n [mo]=\"mo\"\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\n ></div>\n </div>\n <ng-container *ngIf=\"canView\">\n <button\n fd-button\n (click)=\"events.emit({ title: 'rowClick' })\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n </ng-container>\n </div>\n\n <fd-card-kpi-header>\n <strong fd-card-kpi-value [status]=\"kpiStatus\">{{ kpiValue }}</strong>\n <span\n fd-card-kpi-scale-icon\n [glyph]=\"kpiStatus === 'positive' ? 'up' : 'down'\"\n fd-object-status\n [status]=\"kpiStatus\"\n aria-label=\"up arrow\"\n title=\"up arrow\"\n ></span>\n <span fd-card-kpi-scale-text fd-object-status status=\"positive\">\u00B0C</span>\n\n <div fd-card-kpi-analytics>\n <label fd-card-kpi-analytics-label>{{ kpiAnalyticalLabel }}</label>\n <span fd-card-kpi-analytics-content>{{ kpiAnalyticalContent }}{{ kpiAnalayticalSymbol }}</span>\n </div>\n </fd-card-kpi-header>\n\n <h4 fd-card-second-subtitle>{{ subtitle }}</h4>\n</fd-card-header>\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"] }]
1876
- }] });
1877
-
1878
- class CardContentLineChartComponent extends BaseItemContentPropsComponent {
1879
- ngOnInit() {
1880
- super.ngOnInit();
1881
- const parameters = this.parameters;
1882
- const { MethodParametersFieldName, RunBlMethodName } = parameters;
1883
- const methodParameters = [];
1884
- MethodParametersFieldName.split(',').forEach((c) => {
1885
- const value = this.mo[c];
1886
- if (typeof value === 'object' && value.Id) {
1887
- methodParameters.push(value.Id);
1888
- }
1889
- else {
1890
- methodParameters.push(value);
1891
- }
1892
- });
1893
- BarsaApi.Bw.RunBlMethodAsync({
1894
- Parameters: methodParameters,
1895
- Method: RunBlMethodName,
1896
- SuccessFn: (chartOption) => {
1897
- this.chartOption = JSON.parse(chartOption);
1898
- this._cdr.detectChanges();
1899
- },
1900
- FailFn: () => { }
1901
- });
1902
- }
1903
- }
1904
- CardContentLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardContentLineChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1905
- CardContentLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CardContentLineChartComponent, selector: "bdc-card-content-line-chart", usesInheritance: true, ngImport: i0, template: "<div class=\"card-content\" *ngIf=\"chartOption\" #elemRef>\r\n <div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n</div>\r\n", styles: [":host{display:block;padding:15px}.card-content{height:300px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$5.ChartLineTimeBaseDirective, selector: "[beChartLineTime]", inputs: ["chartOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1906
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardContentLineChartComponent, decorators: [{
1907
- type: Component,
1908
- args: [{ selector: 'bdc-card-content-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"card-content\" *ngIf=\"chartOption\" #elemRef>\r\n <div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n</div>\r\n", styles: [":host{display:block;padding:15px}.card-content{height:300px}\n"] }]
1909
- }] });
1910
-
1911
- class FormChartContentComponent extends FormPropsBaseComponent {
1912
- ngOnInit() {
1913
- super.ngOnInit();
1914
- const settings = this.settings;
1915
- const { MethodParametersFieldName, RunBlMethodName } = settings;
1916
- const methodParameters = [];
1917
- MethodParametersFieldName.split(',').forEach((c) => {
1918
- const value = this.mo[c];
1919
- if (typeof value === 'object' && value.Id) {
1920
- methodParameters.push(value.Id);
1921
- }
1922
- else {
1923
- methodParameters.push(value);
1924
- }
1925
- });
1926
- BarsaApi.Bw.RunBlMethodAsync({
1927
- Parameters: methodParameters,
1928
- Method: RunBlMethodName,
1929
- SuccessFn: (chartOption) => {
1930
- this.chartOption = JSON.parse(chartOption);
1931
- this._cdr.detectChanges();
1932
- },
1933
- FailFn: () => { }
1934
- });
1935
- }
1936
- }
1937
- FormChartContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormChartContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1938
- FormChartContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormChartContentComponent, selector: "bdc-form-chart-content", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"chartOption\" beChartLineTime [chartOption]=\"chartOption\"></div>\r\n", styles: [":host{display:block;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$5.ChartLineTimeBaseDirective, selector: "[beChartLineTime]", inputs: ["chartOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1939
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormChartContentComponent, decorators: [{
1940
- type: Component,
1941
- args: [{ selector: 'bdc-form-chart-content', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"chartOption\" beChartLineTime [chartOption]=\"chartOption\"></div>\r\n", styles: [":host{display:block;height:100%}\n"] }]
1942
- }] });
1943
-
1944
- class TableViewVerticalColumnsComponent extends ReportViewBaseComponent {
1945
- }
1946
- TableViewVerticalColumnsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TableViewVerticalColumnsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1947
- TableViewVerticalColumnsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TableViewVerticalColumnsComponent, selector: "bdc-table-view-vertical-columns", usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let index = index\">\n <ng-container *ngIf=\"mo.$Group\">\n <h3>{{ mo.$Group }}</h3>\n <ng-container\n *ngTemplateOutlet=\"tplTable; context: { $implicit: mo.$Children, index: this.index }\"\n ></ng-container>\n </ng-container>\n</ng-container>\n<ng-template #tplTable let-children let-index=\"index\">\n <table fd-table [style.margin-top]=\"index > 0 ? '2rem' : 0\">\n <tbody fd-table-body>\n <tr fd-table-row *ngFor=\"let column of columns\">\n <th fd-table-cell>\n <strong>{{ column.Alias }}:</strong>\n </th>\n <ng-container *ngFor=\"let mo of children; let index = index\">\n <td\n fd-table-cell\n #tdEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [hostEl]=\"tdEl\"\n [styleIndex]=\"mo.$StyleIndex\"\n [dbName]=\"column.Name\"\n >\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"false\"\n [isChecked]=\"false\"\n [isNewInlineMo]=\"false\"\n [index]=\"index\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [formLayoutShowLabel]=\"false\"\n [deviceSize]=\"deviceSize\"\n ></bsu-column-renderer>\n </td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$2.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: i3$2.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i4$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i4$6.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i4$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i4$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "pipe", type: i1.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i1.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1948
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TableViewVerticalColumnsComponent, decorators: [{
1949
- type: Component,
1950
- args: [{ selector: 'bdc-table-view-vertical-columns', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let index = index\">\n <ng-container *ngIf=\"mo.$Group\">\n <h3>{{ mo.$Group }}</h3>\n <ng-container\n *ngTemplateOutlet=\"tplTable; context: { $implicit: mo.$Children, index: this.index }\"\n ></ng-container>\n </ng-container>\n</ng-container>\n<ng-template #tplTable let-children let-index=\"index\">\n <table fd-table [style.margin-top]=\"index > 0 ? '2rem' : 0\">\n <tbody fd-table-body>\n <tr fd-table-row *ngFor=\"let column of columns\">\n <th fd-table-cell>\n <strong>{{ column.Alias }}:</strong>\n </th>\n <ng-container *ngFor=\"let mo of children; let index = index\">\n <td\n fd-table-cell\n #tdEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [hostEl]=\"tdEl\"\n [styleIndex]=\"mo.$StyleIndex\"\n [dbName]=\"column.Name\"\n >\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"false\"\n [isChecked]=\"false\"\n [isNewInlineMo]=\"false\"\n [index]=\"index\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [formLayoutShowLabel]=\"false\"\n [deviceSize]=\"deviceSize\"\n ></bsu-column-renderer>\n </td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n" }]
1951
- }] });
1952
-
1953
- class QueryStringObservableComponent extends FieldBaseComponent {
1954
- ngOnInit() {
1955
- super.ngOnInit();
1956
- this._activatedRoute.queryParams.subscribe((queryParams) => {
1957
- const value = queryParams[this.Setting.ControlName];
1958
- if (value) {
1959
- this.value = value;
1960
- this.valueChange.emit(this.value);
1961
- }
1962
- });
1963
- }
1964
- }
1965
- QueryStringObservableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: QueryStringObservableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1966
- QueryStringObservableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: QueryStringObservableComponent, selector: "bdc-query-string-observable", usesInheritance: true, ngImport: i0, template: "", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1967
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: QueryStringObservableComponent, decorators: [{
1968
- type: Component,
1969
- args: [{ selector: 'bdc-query-string-observable', changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
1970
- }] });
1971
-
1972
- class QueryStringFormObservableComponent extends BaseComponent {
1973
- constructor(_activatedRoute, _router, _portalService) {
1974
- super();
1975
- this._activatedRoute = _activatedRoute;
1976
- this._router = _router;
1977
- this._portalService = _portalService;
1978
- }
1979
- ngOnInit() {
1980
- super.ngOnInit();
1981
- this._portalService.navigationEnd$.pipe(takeUntil$1(this._onDestroy$)).subscribe((event) => {
1982
- if (event?.url.endsWith('/query')) {
1983
- this._router.navigate(['../']);
1984
- }
1985
- });
1986
- const params = this._activatedRoute.snapshot.queryParams;
1987
- const strActionList = params['actionList'];
1988
- if (strActionList) {
1989
- const actionList = JSON.parse(strActionList.replaceAll("'", '"'));
1990
- if (actionList) {
1991
- BarsaApi.Ul.WorkflowPanelCtrlr.RunWorkflowActionList(actionList, null);
1992
- }
1993
- }
1994
- }
1995
- }
1996
- QueryStringFormObservableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: QueryStringFormObservableComponent, deps: [{ token: i4$7.ActivatedRoute }, { token: i4$7.Router }, { token: i1.PortalService }], target: i0.ɵɵFactoryTarget.Component });
1997
- QueryStringFormObservableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: QueryStringFormObservableComponent, selector: "bdc-query-string-form-observable", usesInheritance: true, ngImport: i0, template: "", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1998
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: QueryStringFormObservableComponent, decorators: [{
1999
- type: Component,
2000
- args: [{ selector: 'bdc-query-string-form-observable', changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
2001
- }], ctorParameters: function () { return [{ type: i4$7.ActivatedRoute }, { type: i4$7.Router }, { type: i1.PortalService }]; } });
2002
-
2003
- class G4bDetailsComponent extends BaseItemContentPropsComponent {
2004
- ngOnInit() {
2005
- super.ngOnInit();
2006
- this._containerRef.createEmbeddedView(this.setting.$detailsFormItems, {
2007
- $implicit: this.setting.$detailsColumns,
2008
- mo: this.mo,
2009
- inlineEditMode: this.inlineEditMode,
2010
- isNewInlineMo: this.isNewInlineMo,
2011
- layout94: this.layout94$
2012
- });
2013
- }
2014
- }
2015
- G4bDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: G4bDetailsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2016
- G4bDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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: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: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i7.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i3$1.MicroProcessFlowComponent, selector: "fd-micro-process-flow", inputs: ["independentSteps", "transitionSpeed", "transitionTimingFunction"] }, { kind: "component", type: i3$1.MicroProcessFlowItemComponent, selector: "fd-micro-process-flow-item", inputs: ["state", "intermediate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2017
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: G4bDetailsComponent, decorators: [{
2018
- type: Component,
2019
- 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: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"] }]
2020
- }], propDecorators: { _containerRef: [{
2021
- type: ViewChild,
2022
- args: ['container', { static: true, read: ViewContainerRef }]
2023
- }] } });
2024
-
2025
- class AvatarComponent extends BaseItemContentPropsComponent {
2026
- ngOnInit() {
2027
- super.ngOnInit();
2028
- this._setProps(this.mo);
2029
- }
2030
- ngOnChanges(changes) {
2031
- const { mo } = changes;
2032
- if (mo && !mo.firstChange) {
2033
- this._setProps(mo.currentValue);
2034
- this._cdr.detectChanges();
2035
- }
2036
- }
2037
- _setProps(mo) {
2038
- this.pictureId = this.mo[this.parameters.FieldName]?.FileId;
2039
- }
2040
- }
2041
- AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AvatarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2042
- AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: AvatarComponent, selector: "bdc-avatar", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-card>\n <fd-card-header>\n <fd-avatar\n [placeholder]=\"!mo[parameters.FieldName]\"\n [size]=\"'xs'\"\n [glyph]=\"parameters.DefaultIcon || null\"\n [circle]=\"parameters.Circle\"\n [placeHolder]=\"parameters.DefaultIcon!!\"\n [image]=\"pictureId ? (pictureId | picFieldSrc: 'PictureFileInfo':mo.Id:column.FieldDefId) : null\"\n alterIcon=\"alt|content|backup|default-icon\"\n ></fd-avatar>\n <h2 fd-card-title>\n {{ column.Name | val: mo:true | bbbTranslate }}\n </h2>\n <h3 fd-card-subtitle>{{ parameters.Subtitle | rval: mo:allColumns:true | bbbTranslate }}</h3>\n </fd-card-header>\n</fd-card>\n", styles: [":host{display:flex;align-items: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.PlaceHolderDirective, selector: "[placeHolder]", inputs: ["placeHolder"] }, { kind: "component", type: i4$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i5$2.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "directive", type: i5$2.CardTitleDirective, selector: "[fd-card-title]" }, { kind: "directive", type: i5$2.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "pipe", type: i1.MoValuePipe, name: "val" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2043
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AvatarComponent, decorators: [{
2044
- type: Component,
2045
- args: [{ selector: 'bdc-avatar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card>\n <fd-card-header>\n <fd-avatar\n [placeholder]=\"!mo[parameters.FieldName]\"\n [size]=\"'xs'\"\n [glyph]=\"parameters.DefaultIcon || null\"\n [circle]=\"parameters.Circle\"\n [placeHolder]=\"parameters.DefaultIcon!!\"\n [image]=\"pictureId ? (pictureId | picFieldSrc: 'PictureFileInfo':mo.Id:column.FieldDefId) : null\"\n alterIcon=\"alt|content|backup|default-icon\"\n ></fd-avatar>\n <h2 fd-card-title>\n {{ column.Name | val: mo:true | bbbTranslate }}\n </h2>\n <h3 fd-card-subtitle>{{ parameters.Subtitle | rval: mo:allColumns:true | bbbTranslate }}</h3>\n </fd-card-header>\n</fd-card>\n", styles: [":host{display:flex;align-items: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"] }]
2046
- }] });
2047
-
2048
- class G4bEstelamComponent extends BaseItemContentPropsComponent {
2049
- constructor() {
2050
- super(...arguments);
2051
- this.natijeh = 1;
2052
- this.options = ['رد استعلام', 'تایید استعلام', 'در انتظار پاسخ'];
2053
- }
2054
- ngOnInit() {
2055
- super.ngOnInit();
2056
- }
2057
- onClick(e) {
2058
- if (this.isChecked) {
2059
- e.stopPropagation();
2060
- e.preventDefault();
2061
- }
2062
- }
2063
- }
2064
- G4bEstelamComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: G4bEstelamComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2065
- G4bEstelamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i7.TextareaFormControlDirective, selector: "textarea[fd-form-control]" }, { kind: "component", type: i7.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i7.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i4.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2066
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: G4bEstelamComponent, decorators: [{
2067
- type: Component,
2068
- 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"] }]
2069
- }] });
2070
-
2071
- class TimerCountDownComponent extends FieldBaseComponent {
2072
- ngOnInit() {
2073
- super.ngOnInit();
2074
- this._setCountDown(this.value);
2075
- }
2076
- _setValue(value) {
2077
- super._setValue(value);
2078
- this._setCountDown(value);
2079
- }
2080
- _setCountDown(value) {
2081
- const keysInValue = Object.keys(value);
2082
- let _tempValue = value;
2083
- if (keysInValue.length) {
2084
- const findKeyDate = keysInValue.find((c) => !isNaN(Date.parse(value[c])));
2085
- if (findKeyDate) {
2086
- _tempValue = new Date(value[findKeyDate]);
2087
- }
2088
- }
2089
- const exp = this._dateService.getMoment(_tempValue);
2090
- if (this._interval) {
2091
- clearInterval(this._interval);
2092
- this._interval = null;
2093
- }
2094
- this._interval = setInterval(() => {
2095
- const now = this._dateService.getMoment(new Date());
2096
- const diffDuration = this._dateService.duration(exp.diff(now));
2097
- const month = diffDuration.months();
2098
- const days = diffDuration.days();
2099
- const hours = diffDuration.hours().toLocaleString('en-US', {
2100
- minimumIntegerDigits: 2,
2101
- useGrouping: false
2102
- });
2103
- const minutes = diffDuration.minutes().toLocaleString('en-US', {
2104
- minimumIntegerDigits: 2,
2105
- useGrouping: false
2106
- });
2107
- const seconds = diffDuration.seconds().toLocaleString('en-US', {
2108
- minimumIntegerDigits: 2,
2109
- useGrouping: false
2110
- });
2111
- this.countDownText = `
2112
- ${this._getMonthText(month)}
2113
- ${this._daysText(days)}
2114
- ${this._getTimeText(hours, minutes, seconds)}`;
2115
- this._cdr.detectChanges();
2116
- }, 1000);
2117
- }
2118
- _getMonthText(month) {
2119
- return month > 0 ? `${month} ماه` : '';
2120
- }
2121
- _daysText(days) {
2122
- return days > 0 ? `${days} روز` : '';
2123
- }
2124
- _getTimeText(hours, minutes, seconds) {
2125
- if (hours < 0 || minutes < 0 || seconds < 0) {
2126
- if (this.parameters?.ExpireViewMode) {
2127
- switch (this.parameters.ExpireViewMode) {
2128
- case 1:
2129
- return `00:00:00`;
2130
- break;
2131
- case 2:
2132
- return `پایان یافته`;
2133
- break;
2134
- case 3:
2135
- return '';
2136
- break;
2137
- case 4: // نمایش زمان گذشته
2138
- return `${hours}:${minutes}:${seconds}`;
2139
- break;
2140
- }
2141
- }
2142
- return `00:00:00`;
2143
- }
2144
- return `${hours}:${minutes}:${seconds}`;
2145
- }
2146
- }
2147
- TimerCountDownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TimerCountDownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2148
- TimerCountDownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TimerCountDownComponent, selector: "bdc-timer-count-down", providers: [
2149
- {
2150
- provide: DateService,
2151
- useFactory: getDateService,
2152
- deps: [LogService]
2153
- }
2154
- ], usesInheritance: true, ngImport: i0, template: "<span>{{ countDownText }}</span>\r\n", styles: [":host{display:block;width:110px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TimerCountDownComponent, decorators: [{
2156
- type: Component,
2157
- args: [{ selector: 'bdc-timer-count-down', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2158
- {
2159
- provide: DateService,
2160
- useFactory: getDateService,
2161
- deps: [LogService]
2162
- }
2163
- ], template: "<span>{{ countDownText }}</span>\r\n", styles: [":host{display:block;width:110px}\n"] }]
2164
- }] });
2165
-
2166
- class MicroProccessFlowComponent extends BaseComponent {
2167
- /**
2168
- *
2169
- */
2170
- constructor(_el) {
2171
- super();
2172
- this._el = _el;
2173
- this.selectedChange = new EventEmitter();
2174
- }
2175
- ngOnInit() {
2176
- super.ngOnInit();
2177
- this._setIndex(this.selected, this.items);
2178
- this.maxWidth = this._el.nativeElement.offsetWidth;
2179
- }
2180
- onItemClick(item) {
2181
- this.selectedChange.emit(item);
2182
- }
2183
- ngOnChanges(changes) {
2184
- const { selected, items } = changes;
2185
- if (selected && !selected.firstChange) {
2186
- this._setIndex(selected.currentValue, this.items);
2187
- }
2188
- else if (items && !items.firstChange) {
2189
- this._setIndex(this.selected, items.currentValue);
2190
- }
2191
- }
2192
- _setIndex(val, items) {
2193
- this.selectedIndex = items.findIndex((c) => (this.idIskey ? c.id === val : c.label === val));
2194
- }
2195
- }
2196
- MicroProccessFlowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroProccessFlowComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2197
- MicroProccessFlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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\">\n <fd-micro-process-flow-item\n *ngFor=\"let item of items; let i = index\"\n [state]=\"i <= selectedIndex ? 'positive' : 'none'\"\n >\n <div class=\"flow-item\">\n <button\n *ngIf=\"selectedIndex > -1\"\n [class.reached]=\"i <= selectedIndex\"\n fd-button\n [fdType]=\"i <= selectedIndex ? 'positive' : i === selectedIndex + 1 ? 'standard' : 'transparent'\"\n [label]=\"item.label\"\n [glyph]=\"i <= selectedIndex ? 'accept' : null\"\n [disabled]=\"readonly || (i > selectedIndex + 1 && selectedIndex > -1)\"\n (click)=\"onItemClick(item)\"\n ></button>\n <button\n *ngIf=\"selectedIndex === -1\"\n [class.reached]=\"false\"\n fd-button\n [fdType]=\"'transparent'\"\n [label]=\"item.label\"\n [glyph]=\"null\"\n [disabled]=\"readonly\"\n (click)=\"onItemClick(item)\"\n ></button>\n </div>\n </fd-micro-process-flow-item>\n</fd-micro-process-flow>\n", styles: [":host{display:block}.reached{pointer-events:none;border:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3$1.MicroProcessFlowComponent, selector: "fd-micro-process-flow", inputs: ["independentSteps", "transitionSpeed", "transitionTimingFunction"] }, { kind: "component", type: i3$1.MicroProcessFlowItemComponent, selector: "fd-micro-process-flow-item", inputs: ["state", "intermediate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroProccessFlowComponent, decorators: [{
2199
- type: Component,
2200
- args: [{ selector: 'bdc-micro-proccess-flow', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-micro-process-flow class=\"flow\" [style.max-width.px]=\"maxWidth\">\n <fd-micro-process-flow-item\n *ngFor=\"let item of items; let i = index\"\n [state]=\"i <= selectedIndex ? 'positive' : 'none'\"\n >\n <div class=\"flow-item\">\n <button\n *ngIf=\"selectedIndex > -1\"\n [class.reached]=\"i <= selectedIndex\"\n fd-button\n [fdType]=\"i <= selectedIndex ? 'positive' : i === selectedIndex + 1 ? 'standard' : 'transparent'\"\n [label]=\"item.label\"\n [glyph]=\"i <= selectedIndex ? 'accept' : null\"\n [disabled]=\"readonly || (i > selectedIndex + 1 && selectedIndex > -1)\"\n (click)=\"onItemClick(item)\"\n ></button>\n <button\n *ngIf=\"selectedIndex === -1\"\n [class.reached]=\"false\"\n fd-button\n [fdType]=\"'transparent'\"\n [label]=\"item.label\"\n [glyph]=\"null\"\n [disabled]=\"readonly\"\n (click)=\"onItemClick(item)\"\n ></button>\n </div>\n </fd-micro-process-flow-item>\n</fd-micro-process-flow>\n", styles: [":host{display:block}.reached{pointer-events:none;border:none}\n"] }]
2201
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { items: [{
2202
- type: Input
2203
- }], selected: [{
2204
- type: Input
2205
- }], readonly: [{
2206
- type: Input
2207
- }], idIskey: [{
2208
- type: Input
2209
- }], selectedChange: [{
2210
- type: Output
2211
- }] } });
2212
-
2213
- class MoListToFlowItemPipe {
2214
- constructor() { }
2215
- transform(moList) {
2216
- const flowItems = moList.map((item) => ({
2217
- icon: '',
2218
- id: item.Id,
2219
- label: item.$Caption
2220
- }));
2221
- return flowItems;
2222
- }
2223
- }
2224
- MoListToFlowItemPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MoListToFlowItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2225
- MoListToFlowItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: MoListToFlowItemPipe, name: "moListToFlowItem" });
2226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MoListToFlowItemPipe, decorators: [{
2227
- type: Pipe,
2228
- args: [{
2229
- name: 'moListToFlowItem'
2230
- }]
2231
- }], ctorParameters: function () { return []; } });
2232
-
2233
- class MoInfoMicroProccessFlowComponent extends UiMoInfoUlvComboComponent {
2234
- ngOnInit() {
2235
- super.ngOnInit();
2236
- this._triggerClick('Normal');
2237
- }
2238
- onSelectedChange(item) {
2239
- this._raiseValueChanged(item.label);
2240
- }
2241
- }
2242
- MoInfoMicroProccessFlowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MoInfoMicroProccessFlowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2243
- MoInfoMicroProccessFlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MoInfoMicroProccessFlowComponent, selector: "bdc-mo-info-micro-proccess-flow", usesInheritance: true, ngImport: i0, template: "<bdc-micro-proccess-flow\n [items]=\"\n (loading$ | async) === true\n | moInfoUlvMoList\n : isDataLoadedFirstTime\n : ulvAdapter?.Setting?.Data?.MoDataList\n : UlvUi?.Setting?.Data?.MoDataList\n : ulvAdapter?.Setting?.Data?.Paging\n : UlvUi?.Setting?.Data?.Paging\n | moListToFlowItem\n \"\n [selected]=\"value\"\n (selectedChange)=\"onSelectedChange($event)\"\n></bdc-micro-proccess-flow>\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$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.MoInfoUlvMoListPipe, name: "moInfoUlvMoList" }, { kind: "pipe", type: MoListToFlowItemPipe, name: "moListToFlowItem" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MoInfoMicroProccessFlowComponent, decorators: [{
2245
- type: Component,
2246
- args: [{ selector: 'bdc-mo-info-micro-proccess-flow', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bdc-micro-proccess-flow\n [items]=\"\n (loading$ | async) === true\n | moInfoUlvMoList\n : isDataLoadedFirstTime\n : ulvAdapter?.Setting?.Data?.MoDataList\n : UlvUi?.Setting?.Data?.MoDataList\n : ulvAdapter?.Setting?.Data?.Paging\n : UlvUi?.Setting?.Data?.Paging\n | moListToFlowItem\n \"\n [selected]=\"value\"\n (selectedChange)=\"onSelectedChange($event)\"\n></bdc-micro-proccess-flow>\n", styles: [":host{display:block}\n"] }]
2247
- }] });
2248
-
2249
- class DataSourceToFlowItemPipe {
2250
- constructor() { }
2251
- transform(datasource) {
2252
- const flowItems = datasource.map((item) => ({
2253
- icon: '',
2254
- id: item.id,
2255
- label: item.txt
2256
- }));
2257
- return flowItems;
2258
- }
2259
- }
2260
- DataSourceToFlowItemPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: DataSourceToFlowItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2261
- DataSourceToFlowItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: DataSourceToFlowItemPipe, name: "datasourceToFlowItem" });
2262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: DataSourceToFlowItemPipe, decorators: [{
2263
- type: Pipe,
2264
- args: [{
2265
- name: 'datasourceToFlowItem'
2266
- }]
2267
- }], ctorParameters: function () { return []; } });
2268
-
2269
- class EnumInfoMicroProccessFlowComponent extends UiSimpleComboComponent {
2270
- onSelectedChange(item) {
2271
- this._handleValueChange(item.id);
2272
- }
2273
- }
2274
- EnumInfoMicroProccessFlowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: EnumInfoMicroProccessFlowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2275
- EnumInfoMicroProccessFlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: EnumInfoMicroProccessFlowComponent, selector: "bdc-enum-info-micro-proccess-flow", usesInheritance: true, ngImport: i0, template: "<bdc-micro-proccess-flow\n [items]=\"context.store.data[context.store.root] | datasourceToFlowItem\"\n [selected]=\"value\"\n [idIskey]=\"true\"\n [readonly]=\"(disableOrReadonly$ | async) === true\"\n (selectedChange)=\"onSelectedChange($event)\"\n></bdc-micro-proccess-flow>\n", styles: [""], dependencies: [{ kind: "component", type: MicroProccessFlowComponent, selector: "bdc-micro-proccess-flow", inputs: ["items", "selected", "readonly", "idIskey"], outputs: ["selectedChange"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: DataSourceToFlowItemPipe, name: "datasourceToFlowItem" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2276
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: EnumInfoMicroProccessFlowComponent, decorators: [{
2277
- type: Component,
2278
- args: [{ selector: 'bdc-enum-info-micro-proccess-flow', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bdc-micro-proccess-flow\n [items]=\"context.store.data[context.store.root] | datasourceToFlowItem\"\n [selected]=\"value\"\n [idIskey]=\"true\"\n [readonly]=\"(disableOrReadonly$ | async) === true\"\n (selectedChange)=\"onSelectedChange($event)\"\n></bdc-micro-proccess-flow>\n" }]
2279
- }] });
2280
-
2281
- class UiPicturesCarouselComponent extends UiPicturesInfoComponent {
2282
- }
2283
- UiPicturesCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPicturesCarouselComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2284
- UiPicturesCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPicturesCarouselComponent, selector: "bdc-ui-pictures-carousel", providers: [UploadService], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mediaData$ | async as mediaData; else loadingTpl\">\r\n <fd-carousel carouselIndicatorsOrientation=\"top\" width=\"100%\">\r\n <fd-carousel-item *ngFor=\"let media of mediaData; let i = index\">\r\n <img [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\r\n </fd-carousel-item>\r\n </fd-carousel>\r\n</ng-container>\r\n<ng-template #loadingTpl>\r\n <div style=\"width: 100%; position: relative\">\r\n <bsu-mask></bsu-mask>\r\n </div>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "component", type: i3$2.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i4$9.CarouselComponent, selector: "fd-carousel", inputs: ["id", "ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "pageIndicatorsOrientation", "height", "width", "loop", "leftNavigationBtnLabel", "rightNavigationBtnLabel", "navigation", "navigatorInPageIndicator", "numericIndicator", "pageIndicatorContainer", "pageIndicator", "resourceStrings", "slideTransitionDuration", "swipeEnabled", "vertical", "visibleSlidesCount"], outputs: ["slideChange"] }, { kind: "component", type: i4$9.CarouselItemComponent, selector: "fd-carousel-item", inputs: ["id", "ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "loading", "title", "initialHeight", "initialWidth", "value"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPicturesCarouselComponent, decorators: [{
2286
- type: Component,
2287
- args: [{ selector: 'bdc-ui-pictures-carousel', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"mediaData$ | async as mediaData; else loadingTpl\">\r\n <fd-carousel carouselIndicatorsOrientation=\"top\" width=\"100%\">\r\n <fd-carousel-item *ngFor=\"let media of mediaData; let i = index\">\r\n <img [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\r\n </fd-carousel-item>\r\n </fd-carousel>\r\n</ng-container>\r\n<ng-template #loadingTpl>\r\n <div style=\"width: 100%; position: relative\">\r\n <bsu-mask></bsu-mask>\r\n </div>\r\n</ng-template>\r\n" }]
2288
- }] });
2289
-
2290
- class UiNumRateComponent extends FieldBaseComponent {
2291
- onRatingChanged(val) {
2292
- this.value = val;
2293
- this.valueChange.emit(this.value);
2294
- }
2295
- _setValue(val) {
2296
- if (typeof val === 'string') {
2297
- if (isNaN(+val[0])) {
2298
- val = val.substring(1, val.length);
2299
- }
2300
- if (isNaN(+val)) {
2301
- return;
2302
- }
2303
- }
2304
- super._setValue(val);
2305
- }
2306
- }
2307
- UiNumRateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiNumRateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2308
- UiNumRateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiNumRateComponent, selector: "bdc-ui-num-rate", usesInheritance: true, ngImport: i0, template: "<fd-rating-indicator\n [ariaLabel]=\"Setting.NullText || ''\"\n [size]=\"parameters?.SizeValue$Caption\"\n [value]=\"value\"\n [disabled]=\"(disableOrReadonly$ | async) === true\"\n [displayMode]=\"parameters?.DisplayMode\"\n [dynamicTextIndicator]=\"parameters?.TextIndicator\"\n (ratingChanged)=\"onRatingChanged($event)\"\n></fd-rating-indicator>\n", styles: [":host{display:flex}\n"], dependencies: [{ kind: "component", type: i1$3.RatingIndicatorComponent, selector: "fd-rating-indicator", inputs: ["class", "name", "ariaLabel", "ariaLabelledBy", "disabled", "displayMode", "indicatorCapacity", "allowHalves", "value", "totalRatings", "ratingAverage", "ratings", "displayAllRatings", "ratedIcon", "unratedIcon", "size", "dynamicTextIndicator"], outputs: ["ratingChanged"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiNumRateComponent, decorators: [{
2310
- type: Component,
2311
- args: [{ selector: 'bdc-ui-num-rate', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-rating-indicator\n [ariaLabel]=\"Setting.NullText || ''\"\n [size]=\"parameters?.SizeValue$Caption\"\n [value]=\"value\"\n [disabled]=\"(disableOrReadonly$ | async) === true\"\n [displayMode]=\"parameters?.DisplayMode\"\n [dynamicTextIndicator]=\"parameters?.TextIndicator\"\n (ratingChanged)=\"onRatingChanged($event)\"\n></fd-rating-indicator>\n", styles: [":host{display:flex}\n"] }]
2312
- }] });
2313
-
2314
- class MediaFileUploaderComponent extends UiPdfViewerComponent {
2315
- constructor() {
2316
- super(...arguments);
2317
- this.isPlaying = false;
2318
- this.displayControls = true;
2319
- this.isRecording = false;
2320
- this.audioConf = { audio: true };
2321
- this.videoConf = { video: { facingMode: 'user', width: 320 }, audio: true };
2322
- this.recordType = 'audio';
2323
- }
2324
- get video() {
2325
- return this.videoElement?.nativeElement;
2326
- }
2327
- get fileInput() {
2328
- return this.photoElement?.nativeElement;
2329
- }
2330
- ngOnInit() {
2331
- super.ngOnInit();
2332
- this._videoRecoder.recordingFailed().subscribe(() => {
2333
- this.isRecording = false;
2334
- this._cdr.detectChanges();
2335
- });
2336
- this._videoRecoder.getRecordedTime().subscribe((time) => {
2337
- this.recordedTime = time;
2338
- this._cdr.detectChanges();
2339
- });
2340
- this._videoRecoder.getStream().subscribe((stream) => {
2341
- this.videoStream = stream;
2342
- this._cdr.detectChanges();
2343
- });
2344
- this._videoRecoder.getRecordedBlob().subscribe((data) => {
2345
- this.fileBlob = data.blob;
2346
- this.fileName = data.title;
2347
- this.valueUrl = this._domSanitizer.bypassSecurityTrustUrl(data.url);
2348
- this._cdr.detectChanges();
2349
- });
2350
- this._audioRecorder.recordingFailed().subscribe(() => {
2351
- this.isRecording = false;
2352
- this._cdr.detectChanges();
2353
- });
2354
- this._audioRecorder.getRecordedTime().subscribe((time) => {
2355
- this.recordedTime = time;
2356
- this._cdr.detectChanges();
2357
- });
2358
- this._audioRecorder.getRecordedBlob().subscribe((data) => {
2359
- this.fileBlob = data.blob;
2360
- this.fileName = data.title;
2361
- this.valueUrl = this._domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(data.blob));
2362
- this._cdr.detectChanges();
2363
- });
2364
- let glyph = '';
2365
- switch (this.recordType) {
2366
- case 'audio':
2367
- glyph = 'attachment-audio';
2368
- break;
2369
- case 'video':
2370
- glyph = 'attachment-video';
2371
- break;
2372
- default:
2373
- glyph = 'attachment-photo';
2374
- break;
2375
- }
2376
- this.glyph = glyph;
2377
- this.fileName = this.value?.FileName;
2378
- this.recordType = this.parameters?.MediaType$Caption || 'audio';
2379
- }
2380
- onDelete() {
2381
- super.onDelete();
2382
- this.onClearRecord();
2383
- }
2384
- onClearRecord() {
2385
- this.abortVideoRecording();
2386
- this.abortAudioRecording();
2387
- this.fileBlob = null;
2388
- this.valueUrl = null;
2389
- this._cdr.detectChanges();
2390
- }
2391
- onToggleRecord() {
2392
- if (this.recordType === 'audio') {
2393
- if (this.isRecording) {
2394
- this.stopAudioRecording();
2395
- }
2396
- else {
2397
- this.startAudioRecording();
2398
- }
2399
- }
2400
- else if (this.recordType === 'video') {
2401
- this.video.hidden = false;
2402
- if (this.isRecording) {
2403
- this.stopVideoRecording();
2404
- }
2405
- else {
2406
- this.startVideoRecording();
2407
- }
2408
- }
2409
- else if (this.recordType === 'photo') {
2410
- }
2411
- }
2412
- onTakePhoto() {
2413
- if (this.fileInput?.files?.length) {
2414
- const file = this.fileInput.files.item(0);
2415
- if (file) {
2416
- this.fileName = file.name;
2417
- this._uploadFile([file]).subscribe();
2418
- }
2419
- }
2420
- }
2421
- onUpload() {
2422
- const videoFile = new File([this.fileBlob], this.fileName);
2423
- this._uploadFile([videoFile]).subscribe();
2424
- }
2425
- startVideoRecording() {
2426
- if (!this.isRecording) {
2427
- this.video.controls = false;
2428
- this.isRecording = true;
2429
- this._videoRecoder
2430
- .startRecording(this.videoConf)
2431
- .then((stream) => {
2432
- // this.video.src = window.URL.createObjectURL(stream);
2433
- this.video.srcObject = stream;
2434
- this.video.play();
2435
- })
2436
- .catch(function (err) {
2437
- console.log(err.name + ': ' + err.message);
2438
- });
2439
- }
2440
- }
2441
- abortVideoRecording() {
2442
- if (this.isRecording && this.recordType === 'video') {
2443
- this.isRecording = false;
2444
- this._videoRecoder.abortRecording();
2445
- }
2446
- if (this.video) {
2447
- const video = this.video;
2448
- video.controls = false;
2449
- video.hidden = true;
2450
- }
2451
- }
2452
- stopVideoRecording() {
2453
- if (this.isRecording && this.recordType === 'video') {
2454
- this._videoRecoder.stopRecording();
2455
- const video = this.video;
2456
- video.srcObject = this.valueUrl;
2457
- video.controls = true;
2458
- this.isRecording = false;
2459
- }
2460
- }
2461
- clearVideoRecordedData() {
2462
- this.valueUrl = null;
2463
- const video = this.video;
2464
- video.srcObject = null;
2465
- video.controls = false;
2466
- this._cdr.detectChanges();
2467
- }
2468
- downloadVideoRecordedData() {
2469
- this._downloadFile(this.fileBlob, 'video/mp4', this.fileName);
2470
- }
2471
- startAudioRecording() {
2472
- if (!this.isRecording) {
2473
- this.isRecording = true;
2474
- this._audioRecorder.startRecording();
2475
- }
2476
- }
2477
- abortAudioRecording() {
2478
- if (this.isRecording && this.recordType === 'audio') {
2479
- this.isRecording = false;
2480
- this._audioRecorder.abortRecording();
2481
- }
2482
- }
2483
- stopAudioRecording() {
2484
- if (this.isRecording && this.recordType === 'audio') {
2485
- this._audioRecorder.stopRecording();
2486
- this.isRecording = false;
2487
- }
2488
- }
2489
- clearAudioRecordedData() {
2490
- this.valueUrl = null;
2491
- }
2492
- downloadAudioRecordedData() {
2493
- this._downloadFile(this.fileBlob, 'audio/mp3', this.fileName);
2494
- }
2495
- ngOnDestroy() {
2496
- this.abortAudioRecording();
2497
- }
2498
- _downloadFile(data, type, filename) {
2499
- const blob = new Blob([data], { type });
2500
- const url = window.URL.createObjectURL(blob);
2501
- // this.video.srcObject = stream;
2502
- // const url = data;
2503
- const anchor = document.createElement('a');
2504
- anchor.download = filename;
2505
- anchor.href = url;
2506
- document.body.appendChild(anchor);
2507
- anchor.click();
2508
- document.body.removeChild(anchor);
2509
- }
2510
- _downloadFileIdCompleted(response) {
2511
- super._downloadFileIdCompleted(response);
2512
- if (this.valueUrl) {
2513
- if (this.recordType === 'video') {
2514
- this.video.controls = true;
2515
- }
2516
- }
2517
- }
2518
- _refresh(_) {
2519
- if (BarsaApi.Ext.isEmpty(this.value)) {
2520
- return;
2521
- }
2522
- const fileId = this.value.Id;
2523
- this.DownloadFileId(fileId, true, '', null, false);
2524
- }
2525
- }
2526
- MediaFileUploaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MediaFileUploaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2527
- MediaFileUploaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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\">\n <fd-card-content class=\"file-content\">\n <div [class.no-recording]=\"!isRecording && valueUrl\" [ngClass]=\"recordType\" class=\"media-wrapper\">\n <div class=\"icon\">\n <i\n style=\"left: 45%; position: absolute\"\n fd-nested-list-icon\n [glyph]=\"glyph\"\n *ngIf=\"!value && !valueUrl && !isRecording\"\n ></i>\n </div>\n <video #videoElement *ngIf=\"recordType === 'video'\" [class.video-novalue]=\"!valueUrl\">\n <source *ngIf=\"!isRecording && valueUrl\" [src]=\"valueUrl\" />\n <i\n style=\"left: 45%; position: absolute\"\n fd-nested-list-icon\n [glyph]=\"glyph\"\n *ngIf=\"!value && !valueUrl && !isRecording\"\n ></i>\n </video>\n <audio *ngIf=\"!isRecording && valueUrl && recordType === 'audio'\" controls>\n <source [src]=\"valueUrl\" type=\"audio/mp3\" />\n </audio>\n <input\n #photoElement\n *ngIf=\"recordType === 'photo'\"\n type=\"file\"\n accept=\"image/*\"\n id=\"file-input\"\n capture=\"environment\"\n (change)=\"onTakePhoto()\"\n />\n </div>\n <div *ngIf=\"isRecording || valueUrl\" class=\"media-info\">\n <div>\n {{ !isRecording ? '' : ('Recording' | bbbTranslate) }} <strong>{{ recordedTime }}</strong>\n </div>\n <div>{{ fileName }}</div>\n </div>\n <ng-container *ngIf=\"uploadingState$ | async as uploadingState\">\n <div class=\"progress\" *ngIf=\"uploadingState.state === 'Uploading'\">\n <div>\n <fd-progress-indicator\n state=\"informative\"\n [valueNow]=\"uploadingState?.progress\"\n ></fd-progress-indicator>\n </div>\n </div>\n </ng-container>\n <div class=\"btn-wrapper\">\n <button\n class=\"btn-record\"\n *ngIf=\"!value && !valueUrl\"\n fd-button\n [glyph]=\"isRecording ? 'stop' : 'record'\"\n [fdType]=\"isRecording ? 'attention' : 'ghost'\"\n (click)=\"onToggleRecord()\"\n ></button>\n <div *ngIf=\"!value && valueUrl\" class=\"btn-toolbar\">\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onClearRecord()\"></button>\n <button fd-button [label]=\"'Upload' | bbbTranslate\" [glyph]=\"'upload'\" (click)=\"onUpload()\"></button>\n </div>\n <div *ngIf=\"value\" class=\"btn-toolbar\">\n <button *ngIf=\"value\" fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onDelete()\"></button>\n <button *ngIf=\"value\" fd-button [glyph]=\"'download'\" fdType=\"standard\" (click)=\"onDownload()\"></button>\n </div>\n </div>\n </fd-card-content>\n</fd-card>\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$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i5$2.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i4$a.NestedListIconDirective, selector: "[fdNestedDirectivesIcon], [fd-nested-list-icon]", inputs: ["class", "glyph", "role"] }, { kind: "component", type: i5$4.ProgressIndicatorComponent, selector: "fd-progress-indicator", inputs: ["valueText", "unit", "valueMin", "valueMax", "valueNow", "state", "animate"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2528
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MediaFileUploaderComponent, decorators: [{
2529
- type: Component,
2530
- args: [{ selector: 'bdc-media-file-uploader', changeDetection: ChangeDetectionStrategy.OnPush, providers: [AudioRecordingService, VideoRecordingService, UploadService], template: "<fd-card class=\"upload\" [ngClass]=\"recordType\">\n <fd-card-content class=\"file-content\">\n <div [class.no-recording]=\"!isRecording && valueUrl\" [ngClass]=\"recordType\" class=\"media-wrapper\">\n <div class=\"icon\">\n <i\n style=\"left: 45%; position: absolute\"\n fd-nested-list-icon\n [glyph]=\"glyph\"\n *ngIf=\"!value && !valueUrl && !isRecording\"\n ></i>\n </div>\n <video #videoElement *ngIf=\"recordType === 'video'\" [class.video-novalue]=\"!valueUrl\">\n <source *ngIf=\"!isRecording && valueUrl\" [src]=\"valueUrl\" />\n <i\n style=\"left: 45%; position: absolute\"\n fd-nested-list-icon\n [glyph]=\"glyph\"\n *ngIf=\"!value && !valueUrl && !isRecording\"\n ></i>\n </video>\n <audio *ngIf=\"!isRecording && valueUrl && recordType === 'audio'\" controls>\n <source [src]=\"valueUrl\" type=\"audio/mp3\" />\n </audio>\n <input\n #photoElement\n *ngIf=\"recordType === 'photo'\"\n type=\"file\"\n accept=\"image/*\"\n id=\"file-input\"\n capture=\"environment\"\n (change)=\"onTakePhoto()\"\n />\n </div>\n <div *ngIf=\"isRecording || valueUrl\" class=\"media-info\">\n <div>\n {{ !isRecording ? '' : ('Recording' | bbbTranslate) }} <strong>{{ recordedTime }}</strong>\n </div>\n <div>{{ fileName }}</div>\n </div>\n <ng-container *ngIf=\"uploadingState$ | async as uploadingState\">\n <div class=\"progress\" *ngIf=\"uploadingState.state === 'Uploading'\">\n <div>\n <fd-progress-indicator\n state=\"informative\"\n [valueNow]=\"uploadingState?.progress\"\n ></fd-progress-indicator>\n </div>\n </div>\n </ng-container>\n <div class=\"btn-wrapper\">\n <button\n class=\"btn-record\"\n *ngIf=\"!value && !valueUrl\"\n fd-button\n [glyph]=\"isRecording ? 'stop' : 'record'\"\n [fdType]=\"isRecording ? 'attention' : 'ghost'\"\n (click)=\"onToggleRecord()\"\n ></button>\n <div *ngIf=\"!value && valueUrl\" class=\"btn-toolbar\">\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onClearRecord()\"></button>\n <button fd-button [label]=\"'Upload' | bbbTranslate\" [glyph]=\"'upload'\" (click)=\"onUpload()\"></button>\n </div>\n <div *ngIf=\"value\" class=\"btn-toolbar\">\n <button *ngIf=\"value\" fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onDelete()\"></button>\n <button *ngIf=\"value\" fd-button [glyph]=\"'download'\" fdType=\"standard\" (click)=\"onDownload()\"></button>\n </div>\n </div>\n </fd-card-content>\n</fd-card>\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"] }]
2531
- }], propDecorators: { videoElement: [{
2532
- type: ViewChild,
2533
- args: ['videoElement']
2534
- }], photoElement: [{
2535
- type: ViewChild,
2536
- args: ['photoElement']
2537
- }], dialogContainer: [{
2538
- type: ViewChild,
2539
- args: ['container', { read: TemplateRef }]
2540
- }] } });
2541
-
2542
- class SubformInRowReportComponent extends BaseItemContentPropsComponent {
2543
- constructor() {
2544
- super(...arguments);
2545
- this.suggestionList$ = new Subject();
2546
- }
2547
- ngOnInit() {
2548
- super.ngOnInit();
2549
- this.suggestionList$
2550
- .asObservable()
2551
- .pipe(takeUntil$1(this._onDestroy$), debounceTime(500), switchMap((ulvParams) => new Promise((resolve, reject) => {
2552
- formPanelCtrl.Save(false, (err) => {
2553
- if (err) {
2554
- reject(err);
2555
- }
2556
- this.UlvMainCtrlr.RefreshRowsByMosNoSelectionChange([formPanelCtrl.Mo], [], []);
2557
- resolve();
2558
- });
2559
- })))
2560
- .subscribe();
2561
- const userDefineViewId = this.parameters?.ViewTypeValue?.Id;
2562
- this.params = {
2563
- moId: this.mo.Id,
2564
- typeDefId: this.typeDefId,
2565
- isSimple: true,
2566
- viewId: userDefineViewId
2567
- };
2568
- const formPanelCtrl = createGridEditorFormPanel(this.formSetting, { ...this.mo }, this.typeDefId, null, false
2569
- // BarsaApi.Common.Util.TryGetValue(this.context.Setting, 'Extra.Relation')
2570
- );
2571
- this.formPanelCtrl = formPanelCtrl;
2572
- if (this.parameters?.AutoSaveOnChange) {
2573
- formPanelCtrl.on({
2574
- scope: this,
2575
- ValueChange: () => {
2576
- this.suggestionList$.next();
2577
- }
2578
- });
2579
- }
2580
- formPanelCtrl.LoadAndCreate({ MoId: this.mo.Id, TypeDefId: this.typeDefId, TypeViewId: userDefineViewId }, false, true, () => {
2581
- this.loaded = true;
2582
- this._cdr.detectChanges();
2583
- });
2584
- }
2585
- ngOnChanges(changes) {
2586
- super.ngOnChanges(changes);
2587
- const { mo } = changes;
2588
- if (mo && !mo.firstChange) {
2589
- BarsaApi.Common.Merger.FastMerge(this.formPanelCtrl.Mo, mo.currentValue);
2590
- this.formPanelCtrl.SetValue(this.formPanelCtrl.Mo);
2591
- }
2592
- }
2593
- }
2594
- SubformInRowReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: SubformInRowReportComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2595
- SubformInRowReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: SubformInRowReportComponent, selector: "bdc-subform-in-row-report", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<bnrc-form *ngIf=\"loaded\" [formPanelCtrl]=\"formPanelCtrl\" class=\"subform-in-row\" [params]=\"params\"></bnrc-form>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2596
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: SubformInRowReportComponent, decorators: [{
2597
- type: Component,
2598
- args: [{ selector: 'bdc-subform-in-row-report', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bnrc-form *ngIf=\"loaded\" [formPanelCtrl]=\"formPanelCtrl\" class=\"subform-in-row\" [params]=\"params\"></bnrc-form>\n" }]
2599
- }] });
2600
-
2601
- class MasterDetailCardFormComponent extends FormPropsBaseComponent {
2602
- ngOnInit() {
2603
- super.ngOnInit();
2604
- }
2605
- }
2606
- MasterDetailCardFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MasterDetailCardFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2607
- MasterDetailCardFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MasterDetailCardFormComponent, selector: "bdc-master-detail-card-form", usesInheritance: true, ngImport: i0, template: "<fd-card class=\"master-tab\">\n <bsu-ly-tab-page [config]=\"modernTabs[0]\"></bsu-ly-tab-page>\n</fd-card>\n<fd-card class=\"details-tab\">\n <bsu-ly-tab-page [config]=\"modernTabs[1]\"></bsu-ly-tab-page>\n</fd-card>\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: i3$2.LyTabPageComponent, selector: "bsu-ly-tab-page", inputs: ["renderItems", "tablist"] }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2608
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MasterDetailCardFormComponent, decorators: [{
2609
- type: Component,
2610
- args: [{ selector: 'bdc-master-detail-card-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card class=\"master-tab\">\n <bsu-ly-tab-page [config]=\"modernTabs[0]\"></bsu-ly-tab-page>\n</fd-card>\n<fd-card class=\"details-tab\">\n <bsu-ly-tab-page [config]=\"modernTabs[1]\"></bsu-ly-tab-page>\n</fd-card>\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"] }]
2611
- }] });
2612
-
2613
- class ReportButtonViewComponent extends BaseFormToolbaritemPropsComponent {
2614
- constructor() {
2615
- super(...arguments);
2616
- this.loaded = false;
2617
- }
2618
- ngOnInit() {
2619
- super.ngOnInit();
2620
- }
2621
- onMainActionClick(menu) {
2622
- if (this.parameters.MetaReport) {
2623
- BarsaApi.Bw.RunBlMethodAsync({
2624
- Parameters: [this.parameters.MetaReport.Id],
2625
- Method: '_PortalExecuteReport',
2626
- SuccessFn: (moDataList) => {
2627
- this.moDataList = moDataList;
2628
- menu.open();
2629
- },
2630
- FailFn: () => { }
2631
- });
2632
- }
2633
- }
2634
- onButtonClick(btn) { }
2635
- }
2636
- ReportButtonViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportButtonViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2637
- ReportButtonViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ReportButtonViewComponent, selector: "bdc-report-button-view", usesInheritance: true, ngImport: i0, template: "<!-- <fd-split-button\nfd-toolbar-item\n[fdType]=\"'transparent'\"\n[mainAction]=\"{\n keepMainAction: true,\n mainActionTitle: 'Choose' | bbbTranslate\n}\"\n>\n<fd-menu>\n <li fd-menu-item *ngFor=\"let mo of moDataList;let index=index\">\n <div fd-menu-interactive (click)=\"onRowCheck({mo,index})\">\n <span fd-menu-title>\n <fd-icon [glyph]=\"viewSetting.Icon | rval: mo:allColumns:true \"> </fd-icon>\n </span>\n </div>\n </li>\n</fd-menu>\n</fd-split-button> -->\n\n<fd-split-button\n fd-toolbar-item\n [mainAction]=\"{ mainActionTitle: parameters.MainActionTitle, keepMainAction: true }\"\n [fdType]=\"parameters.FdType$Caption\"\n (click)=\"onMainActionClick(menu)\"\n>\n <fd-menu #menu>\n <li fd-menu-item *ngFor=\"let mo of moDataList; let index = index\" (click)=\"onButtonClick(mo)\">\n <div fd-menu-interactive>\n <fd-menu-addon position=\"before\"> </fd-menu-addon>\n <span fd-menu-title>{{ mo.$Caption | bbbTranslate }}</span>\n </div>\n </li>\n </fd-menu>\n</fd-split-button>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2$6.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i2$6.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i2$6.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i2$6.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "component", type: i2$6.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "glyph", "submenuIndicator", "ariaHidden"] }, { kind: "component", type: i3$5.SplitButtonComponent, selector: "fd-split-button", inputs: ["glyph", "disabled", "mainActionTitle", "fdType", "expandButtonAriaLabel", "expandButtonTitle", "selected", "fixedWidth", "mainAction", "arialLabel"], outputs: ["primaryButtonClicked"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2638
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportButtonViewComponent, decorators: [{
2639
- type: Component,
2640
- args: [{ selector: 'bdc-report-button-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <fd-split-button\nfd-toolbar-item\n[fdType]=\"'transparent'\"\n[mainAction]=\"{\n keepMainAction: true,\n mainActionTitle: 'Choose' | bbbTranslate\n}\"\n>\n<fd-menu>\n <li fd-menu-item *ngFor=\"let mo of moDataList;let index=index\">\n <div fd-menu-interactive (click)=\"onRowCheck({mo,index})\">\n <span fd-menu-title>\n <fd-icon [glyph]=\"viewSetting.Icon | rval: mo:allColumns:true \"> </fd-icon>\n </span>\n </div>\n </li>\n</fd-menu>\n</fd-split-button> -->\n\n<fd-split-button\n fd-toolbar-item\n [mainAction]=\"{ mainActionTitle: parameters.MainActionTitle, keepMainAction: true }\"\n [fdType]=\"parameters.FdType$Caption\"\n (click)=\"onMainActionClick(menu)\"\n>\n <fd-menu #menu>\n <li fd-menu-item *ngFor=\"let mo of moDataList; let index = index\" (click)=\"onButtonClick(mo)\">\n <div fd-menu-interactive>\n <fd-menu-addon position=\"before\"> </fd-menu-addon>\n <span fd-menu-title>{{ mo.$Caption | bbbTranslate }}</span>\n </div>\n </li>\n </fd-menu>\n</fd-split-button>\n" }]
2641
- }] });
2642
-
2643
- class BarsaDocumentListItemComponent extends BaseComponent {
2644
- constructor(_cdr, _picFieldSrc) {
2645
- super();
2646
- this._cdr = _cdr;
2647
- this._picFieldSrc = _picFieldSrc;
2648
- this.statusChanged = new EventEmitter();
2649
- this.rejectTextChange = new EventEmitter();
2650
- this.fileSelectionChange = new EventEmitter();
2651
- this.removeFile = new EventEmitter();
2652
- this.fullscreen = new EventEmitter();
2653
- this.download = new EventEmitter();
2654
- this.downloadAll = new EventEmitter();
2655
- this.hasFiles = false;
2656
- }
2657
- ngOnInit() {
2658
- super.ngOnInit();
2659
- const documentItem = this.documentItem;
2660
- documentItem.$ValidExtensions = `
2661
- ${documentItem.SupportImage ? ImageMimeType : ''},
2662
- ${documentItem.SupportAudio ? AudioMimeType : ''},
2663
- ${documentItem.SupportVideo ? VideoMimeType : ''},
2664
- ${documentItem.SupportFile ? AllFilesMimeType : ''}
2665
- `;
2666
- }
2667
- ngOnChanges(changes) {
2668
- super.ngOnChanges(changes);
2669
- const { files } = changes;
2670
- files && Array.isArray(files.currentValue) && this._setFirstImage(files.currentValue);
2671
- this._detectChanges();
2672
- }
2673
- onReject(e) {
2674
- this.statusChanged.emit({ value: e, rejectedText: e === 2 ? '' : this.rejectedReason });
2675
- }
2676
- onRejectedTextChange(e) {
2677
- this.rejectTextChange.emit(e.target.value);
2678
- }
2679
- onPreventClick(e) {
2680
- PreventDefaulEvent(e);
2681
- }
2682
- onFileSelection(files) {
2683
- this.fileSelectionChange.emit(files);
2684
- }
2685
- _setFirstImage(files) {
2686
- files.length &&
2687
- (this.firstImageUrl = isImage(files[0].Type)
2688
- ? this._picFieldSrc.transform(files[0].Id, 'ID', null, '', 120, 120)
2689
- : getIcon(files[0].Type));
2690
- }
2691
- _detectChanges() {
2692
- this._cdr.detectChanges();
2693
- }
2694
- }
2695
- BarsaDocumentListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDocumentListItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PictureFieldSourcePipe }], target: i0.ɵɵFactoryTarget.Component });
2696
- BarsaDocumentListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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\">\n <span fd-list-thumbnail>\n <fd-icon *ngIf=\"documentItem.FontIcon\" [glyph]=\"documentItem.FontIcon\"></fd-icon>\n <fd-avatar\n *ngIf=\"documentItem.Avatar\"\n size=\"s\"\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:''\"\n [clickable]=\"true\"\n ></fd-avatar\n ></span>\n \n <div fd-list-content>\n <div fd-list-title>\n <div style=\"display: flex; column-gap: 3px\">\n <strong\n >{{ documentItem.Title }}\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\n </span>\n </strong>\n <div\n *ngIf=\"documentItem.$Accepted === false || documentItem.$Accepted === true\"\n style=\"display: flex; column-gap: 3px; flex-wrap: wrap; align-items: center\"\n >\n <span\n fd-object-status\n [status]=\"accepted ? 'positive' : 'negative'\"\n [label]=\"accepted ? acceptedText : rejectedText\"\n [clickable]=\"true\"\n [inverted]=\"true\"\n [aria-label]=\"accepted ? acceptedText : rejectedText\"\n ></span>\n <fd-popover title=\"Rejected document\" *ngIf=\"rejectedReason && !accepted\">\n <fd-popover-control>\n <span\n fd-object-status\n status=\"negative\"\n glyph=\"question-mark\"\n glyphAriaLabel=\"Negative\"\n title=\"Rejected document\"\n ></span>\n </fd-popover-control>\n <fd-popover-body>\n <fd-message-strip type=\"error\" [dismissible]=\"false\">\n {{ rejectedReason }}\n </fd-message-strip>\n </fd-popover-body>\n </fd-popover>\n </div>\n </div>\n </div>\n <div fd-list-byline [twoCol]=\"true\" [class.smallSize]=\"deviceSize === 's'\">\n <div fd-list-byline-left>\n <div style=\"display: flex; flex-direction: column; row-gap: 5px; flex-wrap: wrap\">\n <span>\n {{ documentItem.Description }}\n </span>\n <div style=\"display: flex; flex-wrap: wrap; column-gap: 3px; align-items: center\">\n <ng-container *ngIf=\"hasFiles\">\n <button fd-button [fdType]=\"'transparent'\" glyph=\"show\" (click)=\"onFullscreen()\"></button>\n <ng-container *ngFor=\"let file of files\">\n <fd-token\n [readOnly]=\"readonly\"\n *ngIf=\"!file.IsDeleted\"\n (onCloseClick)=\"onRemoveFile(file)\"\n >{{ file.FileName }}</fd-token\n >\n </ng-container>\n </ng-container>\n <button\n fd-button\n *ngIf=\"documentItem.MaxFileCount && !readonly\"\n glyph=\"attachment\"\n [label]=\"'AttachFile' | bbbTranslate\"\n (click)=\"!readonly && uploader.open()\"\n ></button>\n <fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"documentItem.ItemKey\"\n [name]=\"'pictures_' + documentItem.ItemKey\"\n [accept]=\"documentItem.$ValidExtensions\"\n [fileLimit]=\"documentItem.MaxFileCount\"\n [multiple]=\"documentItem.MaxFileCount > 0\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n ></fd-file-uploader>\n </div>\n </div>\n </div>\n <div fd-list-byline-right *ngIf=\"documentItem.CanAccept\">\n <bdc-accept-reject\n [rejectedReason]=\"rejectedReason\"\n [positiveText]=\"acceptedText\"\n [negativeText]=\"rejectedText\"\n [deviceSize]=\"deviceSize\"\n [readonly]=\"readonly\"\n ></bdc-accept-reject>\n </div>\n </div>\n </div>\n</li> -->\n\n<tr fd-table-row>\n <td fd-table-cell>\n <fd-avatar\n *ngIf=\"documentItem.Avatar && !files.length; else fontIconTpl\"\n size=\"s\"\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:'':64:64\"\n [clickable]=\"true\"\n [transparent]=\"true\"\n ></fd-avatar>\n <ng-template #fontIconTpl>\n <fd-avatar\n *ngIf=\"files.length\"\n [transparent]=\"true\"\n size=\"s\"\n [image]=\"firstImageUrl\"\n [clickable]=\"true\"\n ></fd-avatar>\n <fd-avatar\n *ngIf=\"!files.length\"\n [transparent]=\"true\"\n size=\"s\"\n [glyph]=\"documentItem.FontIcon\"\n [clickable]=\"true\"\n ></fd-avatar>\n </ng-template>\n </td>\n <td fd-table-cell style=\"min-width: 140px\">\n <p fd-table-text>\n <strong\n >{{ documentItem.Title }}\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\n </span>\n </strong>\n </p>\n <div>\n <span>\n {{ documentItem.Description }}\n </span>\n </div>\n </td>\n\n <td fd-table-cell>\n <ng-container>\n <!-- <ul fd-list>\n <li fd-list-item *ngFor=\"let file of files; let ind = index\">\n <span fd-list-title>\n {{ file.FileName }}\n </span>\n <span fd-list-secondary>\n <button ariaLabel=\"Remove\" title=\"Remove\" fd-button glyph=\"delete\" ></button>\n </span>\n </li>\n </ul> -->\n <div style=\"display: flex; align-items: flex-start; column-gap: 3px; row-gap: 3px; flex-direction: column\">\n <ng-container *ngFor=\"let file of files\">\n <!-- <span><fd-icon glyph=\"attachment\"></fd-icon><a fd-link>{{file.FileName}}</a></span> -->\n <bsu-file-viewer-popover\n *ngIf=\"!file.IsDeleted\"\n [file]=\"file\"\n [deviceSize]=\"deviceSize\"\n [canDownload]=\"true\"\n (remove)=\"removeFile.emit(file)\"\n ></bsu-file-viewer-popover>\n </ng-container>\n <!-- <button\n fd-button\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\n glyph=\"add\"\n (click)=\"!readonly && uploader.open()\"\n ></button> -->\n </div>\n <!-- <p *ngFor=\"let file of files\" fd-table-text>\n <fd-action-sheet >\n <fd-action-sheet-control>\n <button\n fd-button\n glyph=\"settings\"\n title=\"Open Action Sheet Mobile\"\n id=\"fd-action-sheet-mobile-control\"\n aria-haspopup=\"menu\"\n [label]=\"file.FileName ||''\"\n aria-controls=\"fd-action-sheet-mobile-body\"\n ></button>\n </fd-action-sheet-control>\n \n <fd-action-sheet-body\n actionSheetBodyId=\"fd-action-sheet-mobile-body\"\n ariaLabelledBy=\"fd-action-sheet-mobile-control\"\n >\n <li fd-action-sheet-item label=\"Search\" glyph=\"search\"></li>\n <li fd-action-sheet-item label=\"Download\" glyph=\"download\" ></li>\n <li fd-action-sheet-item label=\"Accept\" glyph=\"accept\" ></li>\n <li fd-action-sheet-item label=\"Reject\" glyph=\"cancel\" ></li>\n <li fd-action-sheet-item label=\"Decide Later\" [isCloseButton]=\"true\"></li>\n <li fd-action-sheet-item label=\"Cancel\" [negative]=\"true\" [isCloseButton]=\"true\"></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n </p> -->\n </ng-container>\n </td>\n <td fd-table-cell>\n <div class=\"status\" style=\"position: relative\">\n <button\n fd-button\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\n glyph=\"attachment\"\n [label]=\"'AttachFile' | bbbTranslate\"\n [disabled]=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\n (click)=\"!readonly && uploader.open()\"\n >\n <bsu-mask\n *ngIf=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\n [marginTop]=\"'3px'\"\n ></bsu-mask>\n </button>\n <button\n fd-button\n glyph=\"show\"\n fullscreenFiles\n [files]=\"files\"\n [title]=\"documentItem.Title\"\n [fd-inline-help]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n [aria-describedby]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n [ariaLabel]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n fullscreenFiles\n [disabled]=\"!files.length\"\n [files]=\"files\"\n ></button>\n <button\n fd-button\n glyph=\"download\"\n [fd-inline-help]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n [aria-describedby]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n [ariaLabel]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n downloadFiles\n [disabled]=\"!files.length\"\n [files]=\"files\"\n (click)=\"downloadAll.emit()\"\n ></button>\n </div>\n </td>\n <td fd-table-cell>\n <fd-action-sheet #actionSheet>\n <fd-action-sheet-control>\n <ng-container *ngTemplateOutlet=\"statusTpl\"></ng-container>\n </fd-action-sheet-control>\n <fd-action-sheet-body>\n <li\n fd-action-sheet-item\n [label]=\"'Accept' | bbbTranslate\"\n glyph=\"accept\"\n (click)=\"actionSheet.close(); onReject(2)\"\n ></li>\n <li\n fd-action-sheet-item\n [label]=\"'Reject' | bbbTranslate\"\n glyph=\"cancel\"\n (click)=\"actionSheet.close(); onReject(3)\"\n ></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n\n <p fd-table-text maxWidth=\"400px\" *ngIf=\"status === 3\">\n <span *ngIf=\"readonly && rejectedReason\"> {{ rejectedReason | bbbTranslate }} </span>\n <input\n *ngIf=\"!readonly\"\n fd-form-control\n [value]=\"rejectedReason | bbbTranslate\"\n [placeholder]=\"'\u062F\u0644\u0627\u06CC\u0644 \u0631\u062F \u0645\u062F\u0631\u06A9' | bbbTranslate\"\n />\n </p>\n </td>\n</tr>\n\n<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"documentItem.ItemKey\"\n [name]=\"'pictures_' + documentItem.ItemKey\"\n [accept]=\"documentItem.$ValidExtensions\"\n [fileLimit]=\"documentItem.MaxFileCount\"\n [multiple]=\"documentItem.MaxFileCount > 0\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n<ng-template #statusTpl>\n <div class=\"status\">\n <button fd-button fdType=\"transparent\">\n <span\n *ngIf=\"status === 1\"\n fd-object-status\n [label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\n [aria-label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\n ></span>\n <span\n *ngIf=\"status === 2\"\n fd-object-status\n glyph=\"message-success\"\n status=\"positive\"\n [label]=\"'Accepted' | bbbTranslate\"\n [label]=\"'Accepted' | bbbTranslate\"\n ></span>\n <span\n *ngIf=\"status === 3\"\n fd-object-status\n glyph=\"cancel\"\n status=\"negative\"\n [label]=\"'Rejected' | bbbTranslate\"\n [aria-label]=\"'Rejected' | bbbTranslate\"\n ></span>\n </button>\n </div>\n</ng-template>\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$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$2.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3$2.FileViewerPopoverComponent, selector: "bsu-file-viewer-popover", inputs: ["files", "file", "deviceSize", "canDownload", "disableRemove", "fdType"], outputs: ["remove"] }, { kind: "directive", type: i3$2.FullscreenFilesDirective, selector: "[fullscreenFiles]", inputs: ["files", "title", "deviceSize", "isImageGallery", "component"] }, { kind: "directive", type: i3$2.DownloadFilesDirective, selector: "[downloadFiles]", inputs: ["files"] }, { kind: "component", type: i4$b.ActionSheetComponent, selector: "fd-action-sheet", inputs: ["mobile", "placement", "noArrow", "isOpen", "keyboardSupport", "triggers"], outputs: ["focusEscapeList", "isOpenChange"] }, { kind: "component", type: i4$b.ActionSheetControlComponent, selector: "fd-action-sheet-control", outputs: ["clicked"] }, { kind: "component", type: i4$b.ActionSheetItemComponent, selector: "[fd-action-sheet-item]", inputs: ["label", "glyph", "negative", "isCloseButton", "disabled"], outputs: ["keyDown"] }, { kind: "component", type: i4$b.ActionSheetBodyComponent, selector: "fd-action-sheet-body", inputs: ["actionSheetBodyId", "mobile", "ariaLabel", "ariaLabelledby"] }, { kind: "component", type: i4$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i5.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: i7.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i7.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "directive", type: i9.InlineHelpDirective, selector: "[fd-inline-help], [fd-inline-help-template]", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help", "fd-inline-help-template"] }, { kind: "component", type: i7$2.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "directive", type: i4$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i4$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "directive", type: i4$6.TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2697
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDocumentListItemComponent, decorators: [{
2698
- type: Component,
2699
- args: [{ selector: 'bdc-barsa-document-list-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <li fd-list-item style=\"padding: 0.5rem 1rem\">\n <span fd-list-thumbnail>\n <fd-icon *ngIf=\"documentItem.FontIcon\" [glyph]=\"documentItem.FontIcon\"></fd-icon>\n <fd-avatar\n *ngIf=\"documentItem.Avatar\"\n size=\"s\"\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:''\"\n [clickable]=\"true\"\n ></fd-avatar\n ></span>\n \n <div fd-list-content>\n <div fd-list-title>\n <div style=\"display: flex; column-gap: 3px\">\n <strong\n >{{ documentItem.Title }}\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\n </span>\n </strong>\n <div\n *ngIf=\"documentItem.$Accepted === false || documentItem.$Accepted === true\"\n style=\"display: flex; column-gap: 3px; flex-wrap: wrap; align-items: center\"\n >\n <span\n fd-object-status\n [status]=\"accepted ? 'positive' : 'negative'\"\n [label]=\"accepted ? acceptedText : rejectedText\"\n [clickable]=\"true\"\n [inverted]=\"true\"\n [aria-label]=\"accepted ? acceptedText : rejectedText\"\n ></span>\n <fd-popover title=\"Rejected document\" *ngIf=\"rejectedReason && !accepted\">\n <fd-popover-control>\n <span\n fd-object-status\n status=\"negative\"\n glyph=\"question-mark\"\n glyphAriaLabel=\"Negative\"\n title=\"Rejected document\"\n ></span>\n </fd-popover-control>\n <fd-popover-body>\n <fd-message-strip type=\"error\" [dismissible]=\"false\">\n {{ rejectedReason }}\n </fd-message-strip>\n </fd-popover-body>\n </fd-popover>\n </div>\n </div>\n </div>\n <div fd-list-byline [twoCol]=\"true\" [class.smallSize]=\"deviceSize === 's'\">\n <div fd-list-byline-left>\n <div style=\"display: flex; flex-direction: column; row-gap: 5px; flex-wrap: wrap\">\n <span>\n {{ documentItem.Description }}\n </span>\n <div style=\"display: flex; flex-wrap: wrap; column-gap: 3px; align-items: center\">\n <ng-container *ngIf=\"hasFiles\">\n <button fd-button [fdType]=\"'transparent'\" glyph=\"show\" (click)=\"onFullscreen()\"></button>\n <ng-container *ngFor=\"let file of files\">\n <fd-token\n [readOnly]=\"readonly\"\n *ngIf=\"!file.IsDeleted\"\n (onCloseClick)=\"onRemoveFile(file)\"\n >{{ file.FileName }}</fd-token\n >\n </ng-container>\n </ng-container>\n <button\n fd-button\n *ngIf=\"documentItem.MaxFileCount && !readonly\"\n glyph=\"attachment\"\n [label]=\"'AttachFile' | bbbTranslate\"\n (click)=\"!readonly && uploader.open()\"\n ></button>\n <fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"documentItem.ItemKey\"\n [name]=\"'pictures_' + documentItem.ItemKey\"\n [accept]=\"documentItem.$ValidExtensions\"\n [fileLimit]=\"documentItem.MaxFileCount\"\n [multiple]=\"documentItem.MaxFileCount > 0\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n ></fd-file-uploader>\n </div>\n </div>\n </div>\n <div fd-list-byline-right *ngIf=\"documentItem.CanAccept\">\n <bdc-accept-reject\n [rejectedReason]=\"rejectedReason\"\n [positiveText]=\"acceptedText\"\n [negativeText]=\"rejectedText\"\n [deviceSize]=\"deviceSize\"\n [readonly]=\"readonly\"\n ></bdc-accept-reject>\n </div>\n </div>\n </div>\n</li> -->\n\n<tr fd-table-row>\n <td fd-table-cell>\n <fd-avatar\n *ngIf=\"documentItem.Avatar && !files.length; else fontIconTpl\"\n size=\"s\"\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:'':64:64\"\n [clickable]=\"true\"\n [transparent]=\"true\"\n ></fd-avatar>\n <ng-template #fontIconTpl>\n <fd-avatar\n *ngIf=\"files.length\"\n [transparent]=\"true\"\n size=\"s\"\n [image]=\"firstImageUrl\"\n [clickable]=\"true\"\n ></fd-avatar>\n <fd-avatar\n *ngIf=\"!files.length\"\n [transparent]=\"true\"\n size=\"s\"\n [glyph]=\"documentItem.FontIcon\"\n [clickable]=\"true\"\n ></fd-avatar>\n </ng-template>\n </td>\n <td fd-table-cell style=\"min-width: 140px\">\n <p fd-table-text>\n <strong\n >{{ documentItem.Title }}\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\n </span>\n </strong>\n </p>\n <div>\n <span>\n {{ documentItem.Description }}\n </span>\n </div>\n </td>\n\n <td fd-table-cell>\n <ng-container>\n <!-- <ul fd-list>\n <li fd-list-item *ngFor=\"let file of files; let ind = index\">\n <span fd-list-title>\n {{ file.FileName }}\n </span>\n <span fd-list-secondary>\n <button ariaLabel=\"Remove\" title=\"Remove\" fd-button glyph=\"delete\" ></button>\n </span>\n </li>\n </ul> -->\n <div style=\"display: flex; align-items: flex-start; column-gap: 3px; row-gap: 3px; flex-direction: column\">\n <ng-container *ngFor=\"let file of files\">\n <!-- <span><fd-icon glyph=\"attachment\"></fd-icon><a fd-link>{{file.FileName}}</a></span> -->\n <bsu-file-viewer-popover\n *ngIf=\"!file.IsDeleted\"\n [file]=\"file\"\n [deviceSize]=\"deviceSize\"\n [canDownload]=\"true\"\n (remove)=\"removeFile.emit(file)\"\n ></bsu-file-viewer-popover>\n </ng-container>\n <!-- <button\n fd-button\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\n glyph=\"add\"\n (click)=\"!readonly && uploader.open()\"\n ></button> -->\n </div>\n <!-- <p *ngFor=\"let file of files\" fd-table-text>\n <fd-action-sheet >\n <fd-action-sheet-control>\n <button\n fd-button\n glyph=\"settings\"\n title=\"Open Action Sheet Mobile\"\n id=\"fd-action-sheet-mobile-control\"\n aria-haspopup=\"menu\"\n [label]=\"file.FileName ||''\"\n aria-controls=\"fd-action-sheet-mobile-body\"\n ></button>\n </fd-action-sheet-control>\n \n <fd-action-sheet-body\n actionSheetBodyId=\"fd-action-sheet-mobile-body\"\n ariaLabelledBy=\"fd-action-sheet-mobile-control\"\n >\n <li fd-action-sheet-item label=\"Search\" glyph=\"search\"></li>\n <li fd-action-sheet-item label=\"Download\" glyph=\"download\" ></li>\n <li fd-action-sheet-item label=\"Accept\" glyph=\"accept\" ></li>\n <li fd-action-sheet-item label=\"Reject\" glyph=\"cancel\" ></li>\n <li fd-action-sheet-item label=\"Decide Later\" [isCloseButton]=\"true\"></li>\n <li fd-action-sheet-item label=\"Cancel\" [negative]=\"true\" [isCloseButton]=\"true\"></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n </p> -->\n </ng-container>\n </td>\n <td fd-table-cell>\n <div class=\"status\" style=\"position: relative\">\n <button\n fd-button\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\n glyph=\"attachment\"\n [label]=\"'AttachFile' | bbbTranslate\"\n [disabled]=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\n (click)=\"!readonly && uploader.open()\"\n >\n <bsu-mask\n *ngIf=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\n [marginTop]=\"'3px'\"\n ></bsu-mask>\n </button>\n <button\n fd-button\n glyph=\"show\"\n fullscreenFiles\n [files]=\"files\"\n [title]=\"documentItem.Title\"\n [fd-inline-help]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n [aria-describedby]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n [ariaLabel]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n fullscreenFiles\n [disabled]=\"!files.length\"\n [files]=\"files\"\n ></button>\n <button\n fd-button\n glyph=\"download\"\n [fd-inline-help]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n [aria-describedby]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n [ariaLabel]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n downloadFiles\n [disabled]=\"!files.length\"\n [files]=\"files\"\n (click)=\"downloadAll.emit()\"\n ></button>\n </div>\n </td>\n <td fd-table-cell>\n <fd-action-sheet #actionSheet>\n <fd-action-sheet-control>\n <ng-container *ngTemplateOutlet=\"statusTpl\"></ng-container>\n </fd-action-sheet-control>\n <fd-action-sheet-body>\n <li\n fd-action-sheet-item\n [label]=\"'Accept' | bbbTranslate\"\n glyph=\"accept\"\n (click)=\"actionSheet.close(); onReject(2)\"\n ></li>\n <li\n fd-action-sheet-item\n [label]=\"'Reject' | bbbTranslate\"\n glyph=\"cancel\"\n (click)=\"actionSheet.close(); onReject(3)\"\n ></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n\n <p fd-table-text maxWidth=\"400px\" *ngIf=\"status === 3\">\n <span *ngIf=\"readonly && rejectedReason\"> {{ rejectedReason | bbbTranslate }} </span>\n <input\n *ngIf=\"!readonly\"\n fd-form-control\n [value]=\"rejectedReason | bbbTranslate\"\n [placeholder]=\"'\u062F\u0644\u0627\u06CC\u0644 \u0631\u062F \u0645\u062F\u0631\u06A9' | bbbTranslate\"\n />\n </p>\n </td>\n</tr>\n\n<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"documentItem.ItemKey\"\n [name]=\"'pictures_' + documentItem.ItemKey\"\n [accept]=\"documentItem.$ValidExtensions\"\n [fileLimit]=\"documentItem.MaxFileCount\"\n [multiple]=\"documentItem.MaxFileCount > 0\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n<ng-template #statusTpl>\n <div class=\"status\">\n <button fd-button fdType=\"transparent\">\n <span\n *ngIf=\"status === 1\"\n fd-object-status\n [label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\n [aria-label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\n ></span>\n <span\n *ngIf=\"status === 2\"\n fd-object-status\n glyph=\"message-success\"\n status=\"positive\"\n [label]=\"'Accepted' | bbbTranslate\"\n [label]=\"'Accepted' | bbbTranslate\"\n ></span>\n <span\n *ngIf=\"status === 3\"\n fd-object-status\n glyph=\"cancel\"\n status=\"negative\"\n [label]=\"'Rejected' | bbbTranslate\"\n [aria-label]=\"'Rejected' | bbbTranslate\"\n ></span>\n </button>\n </div>\n</ng-template>\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"] }]
2700
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.PictureFieldSourcePipe }]; }, propDecorators: { documentItem: [{
2701
- type: Input
2702
- }], deviceSize: [{
2703
- type: Input
2704
- }], files: [{
2705
- type: Input
2706
- }], accepted: [{
2707
- type: Input
2708
- }], rejectedReason: [{
2709
- type: Input
2710
- }], readonly: [{
2711
- type: Input
2712
- }], status: [{
2713
- type: Input
2714
- }], uploadingState: [{
2715
- type: Input
2716
- }], statusChanged: [{
2717
- type: Output
2718
- }], rejectTextChange: [{
2719
- type: Output
2720
- }], fileSelectionChange: [{
2721
- type: Output
2722
- }], removeFile: [{
2723
- type: Output
2724
- }], fullscreen: [{
2725
- type: Output
2726
- }], download: [{
2727
- type: Output
2728
- }], downloadAll: [{
2729
- type: Output
2730
- }] } });
2731
-
2732
- class BarsaDocumentsComponent extends ReportViewBaseComponent {
2733
- constructor(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService, _dialogService, _uploadService) {
2734
- super(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService, _uploadService);
2735
- this._el = _el;
2736
- this._cdr = _cdr;
2737
- this._renderer2 = _renderer2;
2738
- this._findColumnByDbName = _findColumnByDbName;
2739
- this._ulvMainService = _ulvMainService;
2740
- this._portalService = _portalService;
2741
- this._dialogService = _dialogService;
2742
- this._uploadService = _uploadService;
2743
- }
2744
- get documentItems() {
2745
- if (this.customFieldInfo) {
2746
- return this.customFieldInfo.DocumentItems.MoDataList;
2747
- }
2748
- else {
2749
- return this.viewSetting.FilesSetting.DocumentItems.MoDataList;
2750
- }
2751
- }
2752
- ngOnInit() {
2753
- super.ngOnInit();
2754
- const { moDataList, viewSetting, allColumns } = this;
2755
- this._initColumnField(allColumns, viewSetting);
2756
- this._subscribeOnUploadFile(this.fileColumn);
2757
- this._mapDocumentItem(moDataList, this.documentItems);
2758
- this._checkMandatory();
2759
- }
2760
- ngOnChanges(changes) {
2761
- super.ngOnChanges(changes);
2762
- const { moDataList } = changes;
2763
- if (moDataList && !moDataList.firstChange) {
2764
- if (moDataList && !moDataList.firstChange) {
2765
- this._mapDocumentItem(moDataList.currentValue, this.documentItems);
2766
- this.detectChanges();
2767
- }
2768
- }
2769
- }
2770
- ngAfterViewInit() {
2771
- super.ngAfterViewInit();
2772
- setTimeout(() => {
2773
- for (let i = 0; i < this.documentItems.length - this.moDataList.length; i++) {
2774
- this.createNewMo.emit();
2775
- }
2776
- });
2777
- }
2778
- onFileSelection(files, documentItem, mo) {
2779
- this.selectedMo = mo;
2780
- this._uploadFile(files, documentItem);
2781
- }
2782
- onRemoveFile(file, mo) {
2783
- const fileDbName = this.fileColumn.Name;
2784
- let files = mo[fileDbName].Files;
2785
- if (file.IsNew) {
2786
- files = files.filter((c) => c.Id !== file.Id);
2787
- }
2788
- else {
2789
- const existFile = files.find((c) => c.Id === file.Id);
2790
- existFile.IsDeleted = true;
2791
- }
2792
- mo[fileDbName].Files = [...files];
2793
- this._updateMo(mo);
2794
- }
2795
- onStatusChanged(e, mo) {
2796
- mo[this.statusColumn.Name] = e.value;
2797
- mo[this.rejectedReasonColumn.Name] = e.rejectedText;
2798
- this._updateMo(mo);
2799
- }
2800
- onRejectedTextChange(text, mo) {
2801
- mo[this.rejectedReasonColumn.Name] = text;
2802
- this._updateMo(mo);
2803
- }
2804
- _checkMandatory() {
2805
- const moDataList = this.moDataList;
2806
- const items = this.documentItems.filter((c) => c.IsRequired);
2807
- let mandatory = items.length > 0;
2808
- const mandatory2 = items
2809
- .map((item) => moDataList.find((c) => c[this.keyColumn.Name] === item.ItemKey))
2810
- .filter((item) => item)
2811
- .some((mo) => mo[this.fileColumn.Name].Files.filter((c) => !c.IsDeleted).length === 0);
2812
- mandatory = mandatory && mandatory2;
2813
- this.mandatory.emit(mandatory);
2814
- }
2815
- _mapDocumentItem(moDataList, documentItems) {
2816
- const keyName = this.keyColumn.Name;
2817
- moDataList.forEach((mo, index) => {
2818
- let documentItem = documentItems.find((c) => c.ItemKey === mo[keyName]); // find setting that matches with mo by itemKey
2819
- if (documentItem) {
2820
- mo.$documentItem = documentItem;
2821
- }
2822
- else {
2823
- documentItem = documentItems.find((item) => moDataList.map((c) => c[keyName]).indexOf(item.ItemKey) < 0); // find a setting has not have $RelatedMo yet
2824
- if (documentItem) {
2825
- mo[keyName] = documentItem.ItemKey;
2826
- mo.$documentItem = documentItem;
2827
- this.updateMo.emit(mo);
2828
- }
2829
- }
2830
- });
2831
- }
2832
- _initColumnField(allColumns, viewSetting) {
2833
- const keyColumn = this._findColumnByDbName.transform(allColumns, viewSetting.ItemKeyField);
2834
- const fileColumn = this._findColumnByDbName.transform(allColumns, viewSetting.FileField);
2835
- const acceptedColumn = this._findColumnByDbName.transform(allColumns, viewSetting.AcceptedField);
2836
- const rejectedReasonColumn = this._findColumnByDbName.transform(allColumns, viewSetting.RejectedReasonField);
2837
- const statusColumn = this._findColumnByDbName.transform(allColumns, viewSetting.StatusField);
2838
- !keyColumn && this._columnNotExistsInReport(viewSetting.ItemKeyField);
2839
- !fileColumn && this._columnNotExistsInReport(viewSetting.FileField);
2840
- !rejectedReasonColumn && this._columnNotExistsInReport(viewSetting.RejectedReasonField);
2841
- !acceptedColumn && this._columnNotExistsInReport(viewSetting.AcceptedField);
2842
- !statusColumn && this._columnNotExistsInReport(viewSetting.StatusField);
2843
- keyColumn && (this.keyColumn = keyColumn);
2844
- fileColumn && (this.fileColumn = fileColumn);
2845
- acceptedColumn && (this.acceptedColumn = acceptedColumn);
2846
- rejectedReasonColumn && (this.rejectedReasonColumn = rejectedReasonColumn);
2847
- statusColumn && (this.statusColumn = statusColumn);
2848
- }
2849
- _subscribeOnUploadFile(fileColumn) {
2850
- this._filesValidationHelper = new FilesValidationHelper(0, 0, 0);
2851
- if (this._uploadService) {
2852
- this._createLinearHelper(this._uploadService, this._filesValidationHelper, fileColumn.FieldDefId);
2853
- this.uploadingState$ = this._uploadService.uploadingState$;
2854
- }
2855
- else {
2856
- throw new Error('UploadService not provided.');
2857
- }
2858
- this._linearHelper.newFileUploaded$.subscribe((file) => {
2859
- const mo = this.moDataList.find((c) => c.Id === this.selectedMo.Id);
2860
- if (mo) {
2861
- mo[fileColumn.Name].Files = [...mo[fileColumn.Name].Files, file];
2862
- this._updateMo(mo);
2863
- }
2864
- });
2865
- }
2866
- _updateMo(mo) {
2867
- mo.$NewInlineMo = undefined;
2868
- if (mo.$State === 'Unchanged') {
2869
- mo.$State = 'Modified';
2870
- }
2871
- this.updateMo.emit(mo);
2872
- this._checkMandatory();
2873
- }
2874
- _createLinearHelper(uploadService, filesValidationHelper, fieldDefId) {
2875
- this._linearHelper = new LinearListHelper(uploadService, filesValidationHelper, fieldDefId);
2876
- }
2877
- _uploadFile(files, documentItem) {
2878
- const filesValidationHelper = this._filesValidationHelper;
2879
- filesValidationHelper.maxFileCount = +documentItem.MaxFileCount;
2880
- filesValidationHelper.maxFileSize = +documentItem.EachFileSize;
2881
- filesValidationHelper.maxTotalFileSize = +documentItem.MaxFileSize;
2882
- this._linearHelper.uploadToServer(files, documentItem.Title);
2883
- }
2884
- _columnNotExistsInReport(columnCaption) {
2885
- throw new Error(`can not find ${columnCaption} column in report.please add it to report columns.`);
2886
- }
2887
- }
2888
- BarsaDocumentsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDocumentsComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1.FindColumnByDbNamePipe }, { token: i1.UlvMainService }, { token: i1.PortalService }, { token: i2$3.DialogService }, { token: i1.UploadService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2889
- BarsaDocumentsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaDocumentsComponent, selector: "bdc-barsa-documents", providers: [UploadService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <ul fd-list [byline]=\"true\" fdCompact [selection]=\"false\"> -->\n<table fd-table aria-label=\"Default\" [allCellsFocusable]=\"true\" [noBorderX]=\"true\">\n <thead fd-table-header>\n <tr fd-table-row>\n <th fd-table-cell>{{ '\u0639\u06A9\u0633' | bbbTranslate }}</th>\n <th fd-table-cell style=\"min-width: 140px; width: auto\">{{ '\u0646\u0648\u0639 \u0645\u062F\u0631\u06A9' | bbbTranslate }}</th>\n <th fd-table-cell style=\"width: 99%\">{{ '\u0627\u0644\u0635\u0627\u0642 \u0641\u0627\u06CC\u0644' | bbbTranslate }}</th>\n <th fd-table-cell></th>\n <th fd-table-cell style=\"width: 400px; min-width: 400px; max-width: 400px\">{{ '\u0648\u0636\u0639\u06CC\u062A' | bbbTranslate }}</th>\n </tr>\n </thead>\n <tbody fd-table-body>\n <ng-container *ngFor=\"let mo of moDataList; trackBy: _trackByRow\">\n <bdc-barsa-document-list-item\n *ngIf=\"mo.$documentItem\"\n [documentItem]=\"mo.$documentItem\"\n [accepted]=\"mo[acceptedColumn.Name]\"\n [files]=\"mo[fileColumn.Name].Files\"\n [uploadingState]=\"(uploadingState$ | async)!!\"\n [rejectedReason]=\"mo[rejectedReasonColumn.Name]\"\n [fileDbName]=\"fileColumn.Name\"\n [status]=\"+mo[statusColumn.Name]\"\n [deviceSize]=\"deviceSize\"\n [readonly]=\"!access.Edit\"\n [deviceSize]=\"deviceSize\"\n (removeFile)=\"onRemoveFile($event, mo)\"\n (fileSelectionChange)=\"onFileSelection($event, mo.$documentItem, mo)\"\n (rejectTextChange)=\"onRejectedTextChange($event, mo)\"\n (statusChanged)=\"onStatusChanged($event, mo)\"\n ></bdc-barsa-document-list-item>\n </ng-container>\n <!-- </ul> -->\n </tbody>\n</table>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i4$6.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i4$6.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i4$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i4$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { 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$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2890
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDocumentsComponent, decorators: [{
2891
- type: Component,
2892
- args: [{ selector: 'bdc-barsa-documents', changeDetection: ChangeDetectionStrategy.OnPush, providers: [UploadService], template: "<!-- <ul fd-list [byline]=\"true\" fdCompact [selection]=\"false\"> -->\n<table fd-table aria-label=\"Default\" [allCellsFocusable]=\"true\" [noBorderX]=\"true\">\n <thead fd-table-header>\n <tr fd-table-row>\n <th fd-table-cell>{{ '\u0639\u06A9\u0633' | bbbTranslate }}</th>\n <th fd-table-cell style=\"min-width: 140px; width: auto\">{{ '\u0646\u0648\u0639 \u0645\u062F\u0631\u06A9' | bbbTranslate }}</th>\n <th fd-table-cell style=\"width: 99%\">{{ '\u0627\u0644\u0635\u0627\u0642 \u0641\u0627\u06CC\u0644' | bbbTranslate }}</th>\n <th fd-table-cell></th>\n <th fd-table-cell style=\"width: 400px; min-width: 400px; max-width: 400px\">{{ '\u0648\u0636\u0639\u06CC\u062A' | bbbTranslate }}</th>\n </tr>\n </thead>\n <tbody fd-table-body>\n <ng-container *ngFor=\"let mo of moDataList; trackBy: _trackByRow\">\n <bdc-barsa-document-list-item\n *ngIf=\"mo.$documentItem\"\n [documentItem]=\"mo.$documentItem\"\n [accepted]=\"mo[acceptedColumn.Name]\"\n [files]=\"mo[fileColumn.Name].Files\"\n [uploadingState]=\"(uploadingState$ | async)!!\"\n [rejectedReason]=\"mo[rejectedReasonColumn.Name]\"\n [fileDbName]=\"fileColumn.Name\"\n [status]=\"+mo[statusColumn.Name]\"\n [deviceSize]=\"deviceSize\"\n [readonly]=\"!access.Edit\"\n [deviceSize]=\"deviceSize\"\n (removeFile)=\"onRemoveFile($event, mo)\"\n (fileSelectionChange)=\"onFileSelection($event, mo.$documentItem, mo)\"\n (rejectTextChange)=\"onRejectedTextChange($event, mo)\"\n (statusChanged)=\"onStatusChanged($event, mo)\"\n ></bdc-barsa-document-list-item>\n </ng-container>\n <!-- </ul> -->\n </tbody>\n</table>\n", styles: [":host{display:block}\n"] }]
2893
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1.FindColumnByDbNamePipe }, { type: i1.UlvMainService }, { type: i1.PortalService }, { type: i2$3.DialogService }, { type: i1.UploadService, decorators: [{
2894
- type: Optional
2895
- }] }]; } });
2896
-
2897
- class AcceptRejectComponent extends BaseComponent {
2898
- constructor(_cdr) {
2899
- super();
2900
- this._cdr = _cdr;
2901
- this.rejectedChanged = new EventEmitter();
2902
- this.id = getUniqueId(3);
2903
- this.applied = false;
2904
- }
2905
- ngOnInit() {
2906
- super.ngOnInit();
2907
- this._initilaize();
2908
- }
2909
- onReject() {
2910
- this._raiseEvent(true, true, this.rejectedReason);
2911
- }
2912
- onReset() {
2913
- this._raiseEvent(false, false);
2914
- }
2915
- onAccept() {
2916
- this._raiseEvent(true, false);
2917
- }
2918
- _initilaize() {
2919
- if (this.rejectedReason) {
2920
- this.rejected = true;
2921
- this.applied = true;
2922
- }
2923
- }
2924
- _raiseEvent(applied, rejected, rejectedReason = '') {
2925
- this.applied = applied;
2926
- this.rejected = rejected;
2927
- this.rejectedReason = rejectedReason;
2928
- this.rejectedChanged.emit({ accept: rejected, error: rejectedReason });
2929
- this._cdr.detectChanges();
2930
- }
2931
- }
2932
- AcceptRejectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AcceptRejectComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2933
- AcceptRejectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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: "<div *ngIf=\"!applied && !readonly\">\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<div *ngIf=\"readonly || applied\">\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", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MobileDirective, selector: "[mobile]" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4$2.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i4$2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i4$2.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i4$2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "directive", type: i4$2.DeprecatedBarContentDensityDirective, selector: "[fd-bar][cozy]" }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i7.TextareaFormControlDirective, selector: "textarea[fd-form-control]" }, { kind: "component", type: i7.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i7.FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "isOpen"], outputs: ["isOpenChange"] }, { kind: "component", type: i7$2.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "component", type: i8$3.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i8$3.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "directive", type: i8$3.PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "directive", type: i8$3.PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "component", type: i8$3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2934
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AcceptRejectComponent, decorators: [{
2935
- type: Component,
2936
- args: [{ selector: 'bdc-accept-reject', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"!applied && !readonly\">\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<div *ngIf=\"readonly || applied\">\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", styles: [":host{display:block}\n"] }]
2937
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { negativeText: [{
2938
- type: Input
2939
- }], positiveText: [{
2940
- type: Input
2941
- }], rejectedReason: [{
2942
- type: Input
2943
- }], acceptedText: [{
2944
- type: Input
2945
- }], deviceSize: [{
2946
- type: Input
2947
- }], readonly: [{
2948
- type: Input
2949
- }], rejected: [{
2950
- type: Input
2951
- }], rejectedChanged: [{
2952
- type: Output
2953
- }] } });
2954
-
2955
- class FooterComponent extends BaseComponent {
2956
- constructor(_portalService, _cdr) {
2957
- super();
2958
- this._portalService = _portalService;
2959
- this._cdr = _cdr;
2960
- _portalService.rtl$.pipe(withLatestFrom(_portalService.deviceSize$)).subscribe(([rtl, deviceSize]) => {
2961
- this.rtl = rtl;
2962
- this.deviceSize = deviceSize;
2963
- });
2964
- }
2965
- ngOnInit() {
2966
- super.ngOnInit();
2967
- const { RelatedMo } = this.settings;
2968
- if (!RelatedMo) {
2969
- return;
2970
- }
2971
- this._portalService.loadMo(RelatedMo.Id, RelatedMo.$TypeDefId).subscribe((result) => {
2972
- this.footer = result?.Data?.Mo;
2973
- this._cdr.detectChanges();
2974
- });
2975
- }
2976
- }
2977
- FooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FooterComponent, deps: [{ token: i1.PortalService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2978
- FooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FooterComponent, selector: "bdc-footer", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: "<div\n fd-bar\n barDesign=\"footer\"\n [size]=\"'m_l'\"\n [class.rtl]=\"rtl\"\n class=\"footer\"\n [class.mobile]=\"deviceSize === 's'\"\n *ngIf=\"footer\"\n>\n <div fd-bar-left class=\"left\">\n <a\n fd-button\n glyph=\"email\"\n [fd-inline-help]=\"('\u0627\u06CC\u0645\u06CC\u0644 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.Email\"\n [href]=\"'mailto:' + footer.Email\"\n fdType=\"transparent\"\n >\n </a>\n <a\n fd-button\n glyph=\"headset\"\n [fd-inline-help]=\"('\u0634\u0645\u0627\u0631\u0647 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.TelNumber\"\n [href]=\"'tel:' + footer.TelNumber\"\n fdType=\"transparent\"\n ></a>\n\n <fd-popover>\n <fd-popover-control>\n <button\n fd-button\n glyph=\"vertical-waterfall-chart\"\n [title]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\n aria-haspopup=\"menu\"\n fdType=\"transparent\"\n [fd-inline-help]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\n tabindex=\"0\"\n ></button>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item class=\"all\">\n <i fd-list-icon glyph=\"bar-chart\"></i>\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>\n </li>\n <li fd-list-item class=\"today\">\n <i fd-list-icon glyph=\"bar-chart\"></i>\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>\n </li>\n <li fd-list-item class=\"online\">\n <i fd-list-icon glyph=\"bar-chart\"></i>\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>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n <fd-popover>\n <fd-popover-control>\n <button\n [fd-inline-help]=\"'\u06A9\u0627\u0646\u0627\u0644 \u0627\u0631\u062A\u0628\u0627\u0637\u06CC' | bbbTranslate\"\n tabindex=\"0\"\n fd-button\n glyph=\"paper-plane\"\n id=\"fd-action-sheet-default-control\"\n aria-haspopup=\"menu\"\n fdType=\"transparent\"\n ></button>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item *ngFor=\"let socialNetwork of footer.SocialNetworks.MoDataList\">\n <a fd-list-link [href]=\"socialNetwork.Url\" style=\"display: flex; column-gap: 5px\">\n <i fd-list-icon class=\"sap-icon--1\"\n ><img [src]=\"socialNetwork.Image?.FileId | picFieldSrc: 'ID':null:'':16:16\" />\n </i>\n <span fd-list-title>{{ socialNetwork.Title }}</span>\n </a>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n <fd-bar-element>\n <a fd-link [href]=\"footer.SiteAddress\" tabindex=\"0\"\n ><fd-icon glyph=\"world\"> </fd-icon> <span style=\"padding: 0 5px\">{{ footer.SiteTitle }}</span></a\n >\n </fd-bar-element>\n </div>\n <div fd-bar-middle class=\"middle\" *ngIf=\"deviceSize !== 's'\">\n <fd-bar-element> {{ footer.Copyright | bbbTranslate }}</fd-bar-element>\n </div>\n <div fd-bar-right class=\"right\"></div>\n</div>\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: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i4$2.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i4$2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4$2.BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: i4$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i4$2.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i4$4.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i8$1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "directive", type: i9.InlineHelpDirective, selector: "[fd-inline-help], [fd-inline-help-template]", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help", "fd-inline-help-template"] }, { kind: "component", type: i8$2.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i8$2.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i8$2.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i8$2.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "class", "role"] }, { kind: "directive", type: i8$2.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated"] }, { kind: "component", type: i8$3.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i8$3.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i8$3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2979
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FooterComponent, decorators: [{
2980
- type: Component,
2981
- args: [{ selector: 'bdc-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n fd-bar\n barDesign=\"footer\"\n [size]=\"'m_l'\"\n [class.rtl]=\"rtl\"\n class=\"footer\"\n [class.mobile]=\"deviceSize === 's'\"\n *ngIf=\"footer\"\n>\n <div fd-bar-left class=\"left\">\n <a\n fd-button\n glyph=\"email\"\n [fd-inline-help]=\"('\u0627\u06CC\u0645\u06CC\u0644 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.Email\"\n [href]=\"'mailto:' + footer.Email\"\n fdType=\"transparent\"\n >\n </a>\n <a\n fd-button\n glyph=\"headset\"\n [fd-inline-help]=\"('\u0634\u0645\u0627\u0631\u0647 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.TelNumber\"\n [href]=\"'tel:' + footer.TelNumber\"\n fdType=\"transparent\"\n ></a>\n\n <fd-popover>\n <fd-popover-control>\n <button\n fd-button\n glyph=\"vertical-waterfall-chart\"\n [title]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\n aria-haspopup=\"menu\"\n fdType=\"transparent\"\n [fd-inline-help]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\n tabindex=\"0\"\n ></button>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item class=\"all\">\n <i fd-list-icon glyph=\"bar-chart\"></i>\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>\n </li>\n <li fd-list-item class=\"today\">\n <i fd-list-icon glyph=\"bar-chart\"></i>\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>\n </li>\n <li fd-list-item class=\"online\">\n <i fd-list-icon glyph=\"bar-chart\"></i>\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>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n <fd-popover>\n <fd-popover-control>\n <button\n [fd-inline-help]=\"'\u06A9\u0627\u0646\u0627\u0644 \u0627\u0631\u062A\u0628\u0627\u0637\u06CC' | bbbTranslate\"\n tabindex=\"0\"\n fd-button\n glyph=\"paper-plane\"\n id=\"fd-action-sheet-default-control\"\n aria-haspopup=\"menu\"\n fdType=\"transparent\"\n ></button>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item *ngFor=\"let socialNetwork of footer.SocialNetworks.MoDataList\">\n <a fd-list-link [href]=\"socialNetwork.Url\" style=\"display: flex; column-gap: 5px\">\n <i fd-list-icon class=\"sap-icon--1\"\n ><img [src]=\"socialNetwork.Image?.FileId | picFieldSrc: 'ID':null:'':16:16\" />\n </i>\n <span fd-list-title>{{ socialNetwork.Title }}</span>\n </a>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n <fd-bar-element>\n <a fd-link [href]=\"footer.SiteAddress\" tabindex=\"0\"\n ><fd-icon glyph=\"world\"> </fd-icon> <span style=\"padding: 0 5px\">{{ footer.SiteTitle }}</span></a\n >\n </fd-bar-element>\n </div>\n <div fd-bar-middle class=\"middle\" *ngIf=\"deviceSize !== 's'\">\n <fd-bar-element> {{ footer.Copyright | bbbTranslate }}</fd-bar-element>\n </div>\n <div fd-bar-right class=\"right\"></div>\n</div>\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"] }]
2982
- }], ctorParameters: function () { return [{ type: i1.PortalService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { settings: [{
2983
- type: Input
2984
- }] } });
2985
-
2986
- class BarsaGeographicLocationComponent extends BaseComponent {
2987
- constructor(_el) {
2988
- super();
2989
- this._el = _el;
2990
- this.move = new EventEmitter();
2991
- this.moveEnd = new EventEmitter();
2992
- this.fullscreen = new EventEmitter();
2993
- this.exitFullscreen = new EventEmitter();
2994
- this.error = new EventEmitter();
2995
- this.markerChange = new EventEmitter();
2996
- this._navigatorOptions = {
2997
- enableHighAccuracy: true,
2998
- timeout: 5000,
2999
- maximumAge: 0
3000
- };
3001
- }
3002
- ngOnChanges(changes) {
3003
- super.ngOnChanges(changes);
3004
- const { longitude, latitude } = changes;
3005
- if (latitude?.firstChange === false || longitude?.firstChange === false) {
3006
- this._setGeoLocation({
3007
- latitude: latitude.currentValue,
3008
- longitude: longitude.currentValue
3009
- }, this.disableOrReadonly, true, false);
3010
- }
3011
- }
3012
- ngAfterViewInit() {
3013
- super.ngAfterViewInit();
3014
- head.load([
3015
- 'Lib/leaflet/leaflet.css',
3016
- 'Lib/leaflet/leaflet-src.js',
3017
- 'Lib/leaflet/SearchControl.js',
3018
- 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon.css',
3019
- 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon.js',
3020
- 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker.js',
3021
- 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon-barsa.js'
3022
- ], () => this._initilaize());
3023
- }
3024
- onCurrentLocation() {
3025
- if (this.disableOrReadonly) {
3026
- return;
3027
- }
3028
- this._getNavigatorCurrentPosition();
3029
- }
3030
- onFullscreen() {
3031
- this.fullscreen.emit();
3032
- }
3033
- onExitFullscreen() {
3034
- this.exitFullscreen.emit();
3035
- }
3036
- _addMarkers(disableOrReadonly, pos) {
3037
- this._setGeoLocation({ latitude: pos[0], longitude: pos[1] }, disableOrReadonly);
3038
- }
3039
- _initilaize() {
3040
- this._map = L.map(this._el.nativeElement);
3041
- const location = this.defaultLocation;
3042
- if (this.latitude) {
3043
- location[0] = Number(this.latitude);
3044
- location[1] = Number(this.longitude);
3045
- }
3046
- this._setGeoLocation({
3047
- latitude: location[0],
3048
- longitude: location[1]
3049
- }, this.disableOrReadonly, true, false);
3050
- if (!this.disableOrReadonly && this.setAutomaticLocation && !this.latitude) {
3051
- // درصورتی که از قبل مقدار نداشته باشد
3052
- this._getNavigatorCurrentPosition();
3053
- }
3054
- }
3055
- _onErrorNavigatorLocation(err) {
3056
- this.error.emit(err);
3057
- }
3058
- _setGeoLocation(position, disableOrReadonly = false, setView = false, fireEvent = true) {
3059
- if (this._marker) {
3060
- this._map.removeLayer(this._marker);
3061
- this._marker = null;
3062
- }
3063
- const { latitude, longitude } = position;
3064
- L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
3065
- attribution: '',
3066
- maxZoom: 18,
3067
- id: 'mapbox/streets-v11',
3068
- tileSize: 512,
3069
- zoomOffset: -1,
3070
- accessToken: 'pk.eyJ1IjoibXJlemFkZXZlbG9wZXIiLCJhIjoiY2p6anlrdTE2MDBxdjNtczZtYWFqbHFmdiJ9.SzniRy2KH6U3gdbOFnwA7Q'
3071
- }).addTo(this._map);
3072
- if (setView) {
3073
- this._map.setView([latitude, longitude], 18);
3074
- }
3075
- const marker = this._createMarker('0', { mo: 'test' }, latitude, longitude, 'my location', '', !disableOrReadonly && this.draggable === true);
3076
- marker.addTo(this._map);
3077
- this._marker = marker;
3078
- if (!disableOrReadonly && fireEvent) {
3079
- this.markerChange.emit({ latitude, longitude });
3080
- }
3081
- }
3082
- _getNavigatorCurrentPosition() {
3083
- if (navigator.geolocation) {
3084
- navigator.geolocation.getCurrentPosition((position) => this._setGeoLocation({ latitude: position.coords.latitude, longitude: position.coords.longitude }, this.disableOrReadonly, true), (err) => this._onErrorNavigatorLocation(err), this._navigatorOptions);
3085
- }
3086
- }
3087
- _createMarker(id, mo, lat, lng, text, icon, draggable) {
3088
- const markerCfg = {
3089
- Id: id,
3090
- Data: mo,
3091
- title: text,
3092
- draggable,
3093
- icon: L.divIcon({
3094
- html: icon
3095
- ? `<fd-icon style="font-size:1rem" class="sap-icon--${icon}"></fd-icon>`
3096
- : `<img style="width:32px" src="${'assets/svg/location-sign.svg'}"/>`,
3097
- iconSize: [20, 20],
3098
- className: 'my-location'
3099
- })
3100
- };
3101
- // var marker = L.BeautifyMarker.marker([Number(lat), Number(lng)], {
3102
- const marker = L.marker([Number(lat), Number(lng)], markerCfg);
3103
- marker.on('moveend', (e) => {
3104
- this._onMoveEnd(e);
3105
- });
3106
- marker.on('move', (e) => {
3107
- this._onMove(e);
3108
- });
3109
- return marker;
3110
- }
3111
- _onMove(e) {
3112
- this.move.emit(e);
3113
- }
3114
- _onMoveEnd(e) {
3115
- this.moveEnd.emit(e);
3116
- }
3117
- }
3118
- BarsaGeographicLocationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaGeographicLocationComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
3119
- BarsaGeographicLocationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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", error: "error", markerChange: "markerChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div style=\"position: absolute; z-index: 1000; display: flex; flex-direction: column; row-gap: 5px; left: 0; bottom: 0\">\n <button *ngIf=\"showFullscreenButton\" fd-button glyph=\"resize\" fdType=\"positive\" (click)=\"onFullscreen()\"></button>\n <button\n *ngIf=\"showExitFullscreenButton\"\n fd-button\n glyph=\"exitfullscreen\"\n fdType=\"positive\"\n (click)=\"onExitFullscreen()\"\n ></button>\n <button\n *ngIf=\"showLocationButton || disableOrReadonly\"\n fd-button\n glyph=\"map\"\n fdType=\"positive\"\n (click)=\"onCurrentLocation()\"\n ></button>\n</div>\n", styles: [":host{display:block;min-height:300px;position:relative}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaGeographicLocationComponent, decorators: [{
3121
- type: Component,
3122
- 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\">\n <button *ngIf=\"showFullscreenButton\" fd-button glyph=\"resize\" fdType=\"positive\" (click)=\"onFullscreen()\"></button>\n <button\n *ngIf=\"showExitFullscreenButton\"\n fd-button\n glyph=\"exitfullscreen\"\n fdType=\"positive\"\n (click)=\"onExitFullscreen()\"\n ></button>\n <button\n *ngIf=\"showLocationButton || disableOrReadonly\"\n fd-button\n glyph=\"map\"\n fdType=\"positive\"\n (click)=\"onCurrentLocation()\"\n ></button>\n</div>\n", styles: [":host{display:block;min-height:300px;position:relative}\n"] }]
3123
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { disableOrReadonly: [{
3124
- type: Input
3125
- }], setAutomaticLocation: [{
3126
- type: Input
3127
- }], showLocationButton: [{
3128
- type: Input
3129
- }], showFullscreenButton: [{
3130
- type: Input
3131
- }], showExitFullscreenButton: [{
3132
- type: Input
3133
- }], draggable: [{
3134
- type: Input
3135
- }], defaultLocation: [{
3136
- type: Input
3137
- }], latitude: [{
3138
- type: Input
3139
- }], longitude: [{
3140
- type: Input
3141
- }], move: [{
3142
- type: Output
3143
- }], moveEnd: [{
3144
- type: Output
3145
- }], fullscreen: [{
3146
- type: Output
3147
- }], exitFullscreen: [{
3148
- type: Output
3149
- }], error: [{
3150
- type: Output
3151
- }], markerChange: [{
3152
- type: Output
3153
- }] } });
3154
-
3155
- class GeographicLocationComponent extends UiMoInfoSubFormUiComponent {
3156
- constructor() {
3157
- super(...arguments);
3158
- this.fullscreen = false;
3159
- }
3160
- get latitudeUi() {
3161
- return this.customFormPanelUi._dictFieldUi.Latitude;
3162
- }
3163
- get longitudeUi() {
3164
- return this.customFormPanelUi._dictFieldUi.Longitude;
3165
- }
3166
- openDialog(dialog) {
3167
- this._dialogService.open(dialog, {
3168
- responsivePadding: true,
3169
- fullScreen: true,
3170
- mobile: true,
3171
- ariaLabelledBy: 'map',
3172
- ariaDescribedBy: 'choose location',
3173
- focusTrapped: true
3174
- });
3175
- }
3176
- ngOnInit() {
3177
- super.ngOnInit();
3178
- this._setDefaultLatAndLong(this.latitudeUi?.value, this.longitudeUi?.value);
3179
- }
3180
- onFullscreen() {
3181
- this.fullscreen = true;
3182
- this.openDialog(this.dialogTemplate);
3183
- }
3184
- onExistFullscreen() {
3185
- this.fullscreen = false;
3186
- this._cdr.detectChanges();
3187
- }
3188
- onOpenChange(isOpen) {
3189
- this.fullscreen = isOpen;
3190
- }
3191
- onErrorNavigatorLocation(err) {
3192
- const err2 = `خطا در دریافت موقعیت مکانی جاری. (${err.message})`;
3193
- BarsaApi.Bw.Toast.Error(err2);
3194
- }
3195
- onMove(e) {
3196
- this._movePos = { latitude: e.latlng.lat, longitude: e.latlng.lng };
3197
- }
3198
- onMoveEnd(e) {
3199
- this._handleMarkerChange(this._movePos);
3200
- }
3201
- onMarkerChange(e) {
3202
- this._handleMarkerChange(e);
3203
- }
3204
- _handleMarkerChange(e) {
3205
- const { latitude, longitude } = e;
3206
- this.latitudeUi.value = latitude;
3207
- this.longitudeUi.value = longitude;
3208
- this._valueChanged();
3209
- }
3210
- _setDefaultLatAndLong(lat, lng) {
3211
- if (lat && lng) {
3212
- this.latValue = lat;
3213
- this.lngValue = lng;
3214
- }
3215
- }
3216
- _titleChanged() {
3217
- this._setDefaultLatAndLong(this.latitudeUi?.value, this.longitudeUi?.value);
3218
- }
3219
- _valueChanged() {
3220
- this.latitudeUi.fireEvent('change', this.latitudeUi, this.latitudeUi.value);
3221
- this.longitudeUi.fireEvent('change', this.longitudeUi, this.longitudeUi.value);
3222
- }
3223
- }
3224
- GeographicLocationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: GeographicLocationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3225
- GeographicLocationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: GeographicLocationComponent, selector: "bdc-geographic-location", viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["confirmationDialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"customFormPanelUi\">\n <bnrc-form style=\"display: none\" *untilInView=\"el\" [customFormPanelUi]=\"customFormPanelUi\"></bnrc-form>\n</ng-container>\n\n<ng-container *ngIf=\"!fullscreen\">\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: false }\"></ng-container>\n</ng-container>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #confirmationDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Map' | bbbTranslate }}</h1>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: true, dialog: dialog }\"></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n\n<ng-template #map let-inDialog=\"inDialog\" let-dialog=\"dialog\">\n <bdc-barsa-geographic-location\n [style.height]=\"inDialog ? 'height: 100% !important' : null\"\n [defaultLocation]=\"[35.7568, 51.412]\"\n [latitude]=\"latValue\"\n [longitude]=\"lngValue\"\n [showExitFullscreenButton]=\"true\"\n [showLocationButton]=\"customFieldInfo.ShowLocationButton\"\n [setAutomaticLocation]=\"customFieldInfo.GetCurrentLocation\"\n [disableOrReadonly]=\"(disableOrReadonly$ | async) === true\"\n [draggable]=\"customFieldInfo.Draggable === true\"\n (markerChange)=\"onMarkerChange($event)\"\n (move)=\"onMove($event)\"\n (error)=\"onErrorNavigatorLocation($event)\"\n (moveEnd)=\"onMoveEnd($event)\"\n (exitFullscreen)=\"onExistFullscreen(); dialog && dialog.close('Continue')\"\n ></bdc-barsa-geographic-location>\n</ng-template>\n", styles: [":host{display:block;position:relative}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "directive", type: i1.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "component", type: i5$1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i5$1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i4$3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", 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", "error", "markerChange"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: GeographicLocationComponent, decorators: [{
3227
- type: Component,
3228
- args: [{ selector: 'bdc-geographic-location', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"customFormPanelUi\">\n <bnrc-form style=\"display: none\" *untilInView=\"el\" [customFormPanelUi]=\"customFormPanelUi\"></bnrc-form>\n</ng-container>\n\n<ng-container *ngIf=\"!fullscreen\">\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: false }\"></ng-container>\n</ng-container>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #confirmationDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Map' | bbbTranslate }}</h1>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: true, dialog: dialog }\"></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n\n<ng-template #map let-inDialog=\"inDialog\" let-dialog=\"dialog\">\n <bdc-barsa-geographic-location\n [style.height]=\"inDialog ? 'height: 100% !important' : null\"\n [defaultLocation]=\"[35.7568, 51.412]\"\n [latitude]=\"latValue\"\n [longitude]=\"lngValue\"\n [showExitFullscreenButton]=\"true\"\n [showLocationButton]=\"customFieldInfo.ShowLocationButton\"\n [setAutomaticLocation]=\"customFieldInfo.GetCurrentLocation\"\n [disableOrReadonly]=\"(disableOrReadonly$ | async) === true\"\n [draggable]=\"customFieldInfo.Draggable === true\"\n (markerChange)=\"onMarkerChange($event)\"\n (move)=\"onMove($event)\"\n (error)=\"onErrorNavigatorLocation($event)\"\n (moveEnd)=\"onMoveEnd($event)\"\n (exitFullscreen)=\"onExistFullscreen(); dialog && dialog.close('Continue')\"\n ></bdc-barsa-geographic-location>\n</ng-template>\n", styles: [":host{display:block;position:relative}\n"] }]
3229
- }], propDecorators: { dialogTemplate: [{
3230
- type: ViewChild,
3231
- args: ['confirmationDialog']
3232
- }] } });
3233
-
3234
- class TokenReportViewComponent extends ReportViewBaseComponent {
3235
- ngOnInit() {
3236
- super.ngOnInit();
3237
- }
3238
- onRemoveItem(mo, index) {
3239
- this.rowCheck.emit({ mo, index });
3240
- let itemId = 'RemoveFromList';
3241
- if (this.viewSetting?.DeleteAction === '1') {
3242
- itemId = 'Delete';
3243
- }
3244
- this.executeToolbarButton.emit({ itemId });
3245
- }
3246
- }
3247
- TokenReportViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TokenReportViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3248
- TokenReportViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TokenReportViewComponent, selector: "bdc-token-report-view", usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let index = index; let last = last\">\n <ng-container *ngIf=\"!mo.parent || mo.parent?.expanded\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: mo,\n index: index,\n last: last,\n columns: columns,\n moDataList: moDataList,\n moDataListCount: moDataList.length\n }\n \"\n ></ng-container>\n </ng-container>\n</ng-container>\n<ng-template\n #itemTemplate\n let-mo\n let-index=\"index\"\n let-last=\"last\"\n let-columns=\"columns\"\n let-moDataListCount=\"moDataListCount\"\n let-moDataList=\"moDataList\"\n>\n <fd-token fdCozy (onCloseClick)=\"onRemoveItem(mo, index)\" [readOnly]=\"false\">{{\n columns[0].Caption | rval: mo:columns:true\n }}</fd-token>\n</ng-template>\n", styles: [":host{display:flex;column-gap:5px;flex-wrap:wrap;row-gap:5px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$7.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$6.TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly", "deleteButtonLabel", "ariaRoleDescription"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown"] }, { kind: "pipe", type: i1.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TokenReportViewComponent, decorators: [{
3250
- type: Component,
3251
- args: [{ selector: 'bdc-token-report-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let index = index; let last = last\">\n <ng-container *ngIf=\"!mo.parent || mo.parent?.expanded\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: mo,\n index: index,\n last: last,\n columns: columns,\n moDataList: moDataList,\n moDataListCount: moDataList.length\n }\n \"\n ></ng-container>\n </ng-container>\n</ng-container>\n<ng-template\n #itemTemplate\n let-mo\n let-index=\"index\"\n let-last=\"last\"\n let-columns=\"columns\"\n let-moDataListCount=\"moDataListCount\"\n let-moDataList=\"moDataList\"\n>\n <fd-token fdCozy (onCloseClick)=\"onRemoveItem(mo, index)\" [readOnly]=\"false\">{{\n columns[0].Caption | rval: mo:columns:true\n }}</fd-token>\n</ng-template>\n", styles: [":host{display:flex;column-gap:5px;flex-wrap:wrap;row-gap:5px}\n"] }]
3252
- }] });
3253
-
3254
- class ColumnFormViewerComponent extends ColumnRendererComponent {
3255
- /**
3256
- *
3257
- */
3258
- constructor(_cdr, _dialogService, _el) {
3259
- super(_cdr);
3260
- this._cdr = _cdr;
3261
- this._dialogService = _dialogService;
3262
- this._el = _el;
3263
- this.isOpen = false;
3264
- this.loadForm = false;
3265
- this.loading = true;
3266
- this.newPage = false;
3267
- }
3268
- ngOnInit() {
3269
- super.ngOnInit();
3270
- const columnMo = this.mo[this.column.Name];
3271
- if (!columnMo) {
3272
- return;
3273
- }
3274
- this.newPage = this.parameters.NewPage;
3275
- this.formParam = {
3276
- moId: columnMo.Id,
3277
- typeDefId: columnMo.$TypeDefId,
3278
- viewId: this.parameters.MetaView?.Id
3279
- };
3280
- }
3281
- openPopover() {
3282
- this.isOpen = true;
3283
- this.loadForm = true;
3284
- }
3285
- onFormRendered(popover) {
3286
- this.loading = false;
3287
- if (this.newPage) {
3288
- return;
3289
- }
3290
- popover.close();
3291
- setTimeout(() => {
3292
- popover.open();
3293
- });
3294
- }
3295
- openMoInNewPage() {
3296
- const columnMo = this.mo[this.column.Name];
3297
- BarsaApi.Bw.Form.Show({
3298
- MoId: columnMo.Id,
3299
- MoContext: {
3300
- ViewId: this.parameters.MetaView?.Id
3301
- }
3302
- });
3303
- }
3304
- openDialog(dialog, container) {
3305
- const dialogRef = this._dialogService.open(dialog, {
3306
- responsivePadding: true,
3307
- focusTrapped: true,
3308
- backdropClickCloseable: true,
3309
- closeOnNavigation: true,
3310
- hasBackdrop: false,
3311
- container,
3312
- escKeyCloseable: true,
3313
- fullScreen: this.deviceSize === 's'
3314
- });
3315
- dialogRef.afterClosed.subscribe((result) => {
3316
- this.confirmationReason = 'Dialog closed with result: ' + result;
3317
- }, (error) => {
3318
- this.confirmationReason = 'Dialog dismissed with result: ' + error;
3319
- });
3320
- }
3321
- }
3322
- ColumnFormViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ColumnFormViewerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2$3.DialogService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
3323
- ColumnFormViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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>\n<a href=\"http://localhost:4200/#/landingpage/query?actionlist=[{MoId:1,TypeDefId:1}]\"></a>\n<ng-template #popoverTpl>\n <fd-popover\n #popover\n [closeOnOutsideClick]=\"true\"\n [noArrow]=\"false\"\n placement=\"bottom-start\"\n [title]=\"column.Caption\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"renderColumn\"></ng-container>\n </fd-popover-control>\n <fd-popover-body class=\"popover-form-inColumn\">\n <div *ngIf=\"loading && loadForm\" style=\"position: relative; height: 80px; width: 100%\">\n <bsu-mask [top]=\"'50%'\"></bsu-mask>\n </div>\n <bnrc-form\n *ngIf=\"this.mo.Id && loadForm\"\n [params]=\"formParam\"\n (formRendered)=\"onFormRendered(popover)\"\n (formClose)=\"popover.close()\"\n class=\"form-inColumn\"\n ></bnrc-form>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #renderColumn>\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"editMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [formLayoutShowLabel]=\"false\"\n [deviceSize]=\"deviceSize\"\n [controlUi]=\"column.Caption | controlUi: layout94\"\n (click)=\"newPage || deviceSize === 's' ? openMoInNewPage() : openPopover()\"\n ></bsu-column-renderer>\n</ng-template>\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);-webkit-text-decoration:var(--fdLink_Text_Content_Decoration, none);text-decoration:var(--fdLink_Text_Content_Decoration, none);cursor:pointer}:host ::ng-deep span:hover{-webkit-text-decoration:var(--fdLink_Text_Content_Decoration, none);text-decoration:var(--fdLink_Text_Content_Decoration, none)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "directive", type: i1.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "component", type: i3$2.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3$2.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: i8$3.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i8$3.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i8$3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }, { kind: "pipe", type: i1.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i1.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3324
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ColumnFormViewerComponent, decorators: [{
3325
- type: Component,
3326
- args: [{ selector: 'bdc-column-form-viewer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngTemplateOutlet=\"newPage || deviceSize === 's' ? renderColumn : popoverTpl\"> </ng-container>\n<a href=\"http://localhost:4200/#/landingpage/query?actionlist=[{MoId:1,TypeDefId:1}]\"></a>\n<ng-template #popoverTpl>\n <fd-popover\n #popover\n [closeOnOutsideClick]=\"true\"\n [noArrow]=\"false\"\n placement=\"bottom-start\"\n [title]=\"column.Caption\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"renderColumn\"></ng-container>\n </fd-popover-control>\n <fd-popover-body class=\"popover-form-inColumn\">\n <div *ngIf=\"loading && loadForm\" style=\"position: relative; height: 80px; width: 100%\">\n <bsu-mask [top]=\"'50%'\"></bsu-mask>\n </div>\n <bnrc-form\n *ngIf=\"this.mo.Id && loadForm\"\n [params]=\"formParam\"\n (formRendered)=\"onFormRendered(popover)\"\n (formClose)=\"popover.close()\"\n class=\"form-inColumn\"\n ></bnrc-form>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #renderColumn>\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"editMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [formLayoutShowLabel]=\"false\"\n [deviceSize]=\"deviceSize\"\n [controlUi]=\"column.Caption | controlUi: layout94\"\n (click)=\"newPage || deviceSize === 's' ? openMoInNewPage() : openPopover()\"\n ></bsu-column-renderer>\n</ng-template>\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);-webkit-text-decoration:var(--fdLink_Text_Content_Decoration, none);text-decoration:var(--fdLink_Text_Content_Decoration, none);cursor:pointer}:host ::ng-deep span:hover{-webkit-text-decoration:var(--fdLink_Text_Content_Decoration, none);text-decoration:var(--fdLink_Text_Content_Decoration, none)}\n"] }]
3327
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i2$3.DialogService }, { type: i0.ElementRef }]; }, propDecorators: { layout94: [{
3328
- type: Input
3329
- }], parameters: [{
3330
- type: Input
3331
- }] } });
3332
-
3333
- class FormReportViewItemComponent extends BaseViewItemPropsComponent {
3334
- constructor() {
3335
- super(...arguments);
3336
- this.toolbarItems = [];
3337
- }
3338
- ngOnInit() {
3339
- super.ngOnInit();
3340
- this.mo.$FieldDict = this.fieldDict;
3341
- delete this.mo.$Wrapper;
3342
- const meFormSetting = JSON.parse(JSON.stringify(this.formSetting));
3343
- const mo = new BarsaApi.Common.MetaObjectWeb(this.mo);
3344
- meFormSetting.Data = { Mo: this.mo };
3345
- const formpanelCtrlrParams = this.UlvMainCtrlr.DataCtrlr.GetEditFormParams(mo, false, false, null, null);
3346
- this.formParams = {
3347
- ...formpanelCtrlrParams,
3348
- formSetting: meFormSetting,
3349
- moId: this.mo.Id,
3350
- typeDefId: this.typeDefId,
3351
- isSimple: true,
3352
- viewId: meFormSetting.View.TypeViewId
3353
- };
3354
- }
3355
- onMoChanged(mo) {
3356
- this.UlvMainCtrlr.RefreshRowsByMosNoSelectionChange([mo], [], []);
3357
- }
3358
- }
3359
- FormReportViewItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormReportViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3360
- FormReportViewItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormReportViewItemComponent, selector: "bdc-form-report-view-item", inputs: { mo: "mo", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", saveOnValueChanged: "saveOnValueChanged" }, usesInheritance: true, ngImport: i0, template: "<bnrc-form\n class=\"form-report-view-item\"\n [params]=\"formParams\"\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\n (moChanged)=\"onMoChanged($event)\"\n [saveOnChange]=\"saveOnValueChanged\"\n></bnrc-form>\n", styles: [""], dependencies: [{ kind: "component", type: i1.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
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormReportViewItemComponent, decorators: [{
3362
- type: Component,
3363
- args: [{ selector: 'bdc-form-report-view-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bnrc-form\n class=\"form-report-view-item\"\n [params]=\"formParams\"\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\n (moChanged)=\"onMoChanged($event)\"\n [saveOnChange]=\"saveOnValueChanged\"\n></bnrc-form>\n" }]
3364
- }], propDecorators: { mo: [{
3365
- type: Input
3366
- }], UlvMainCtrlr: [{
3367
- type: Input
3368
- }], fieldDict: [{
3369
- type: Input
3370
- }], saveOnValueChanged: [{
3371
- type: Input
3372
- }] } });
3373
-
3374
- class FormReportViewComponent extends ReportViewBaseComponent {
3375
- ngOnInit() {
3376
- super.ngOnInit();
3377
- const x = BarsaApi.Bw.RunBlMethod('GetSerializeFormSetting', this.parameters?.MetaTypeDefValue.Id || this.typeViewId);
3378
- this.formSettingItem = BarsaApi.Ext.decode(x);
3379
- }
3380
- _trackByRow(index, row) {
3381
- return `${row.Id}`;
3382
- }
3383
- }
3384
- FormReportViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormReportViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3385
- FormReportViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", 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: "<ng-container *ngIf=\"moDataList?.length; else empty\">\n <ng-container *ngIf=\"formSettingItem\">\n <ng-container *ngFor=\"let mo of moDataList; let index = index; let last = last; trackBy: _trackByRow\">\n <bdc-form-report-view-item\n [setting]=\"viewSetting\"\n [formSetting]=\"formSettingItem\"\n [fieldDict]=\"fieldDict\"\n [typeDefId]=\"typeDefId\"\n [columnsCount]=\"columnsCount\"\n [allColumns]=\"allColumns\"\n [columns]=\"columns\"\n [moDataList]=\"moDataList\"\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\n [index]=\"index\"\n [mo]=\"mo\"\n [rtl]=\"rtl\"\n [saveOnValueChanged]=\"viewSetting.SaveOnValueChanged\"\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\n (editFormPanelCancel)=\"onEditFormPanelCancel(mo)\"\n (click)=\"onRowCheck({mo, index})\"\n >\n </bdc-form-report-view-item>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #empty>\n <bsu-no-data></bsu-no-data>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;row-gap:.825rem;margin-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.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
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormReportViewComponent, decorators: [{
3387
- type: Component,
3388
- args: [{ selector: 'bdc-form-report-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"moDataList?.length; else empty\">\n <ng-container *ngIf=\"formSettingItem\">\n <ng-container *ngFor=\"let mo of moDataList; let index = index; let last = last; trackBy: _trackByRow\">\n <bdc-form-report-view-item\n [setting]=\"viewSetting\"\n [formSetting]=\"formSettingItem\"\n [fieldDict]=\"fieldDict\"\n [typeDefId]=\"typeDefId\"\n [columnsCount]=\"columnsCount\"\n [allColumns]=\"allColumns\"\n [columns]=\"columns\"\n [moDataList]=\"moDataList\"\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\n [index]=\"index\"\n [mo]=\"mo\"\n [rtl]=\"rtl\"\n [saveOnValueChanged]=\"viewSetting.SaveOnValueChanged\"\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\n (editFormPanelCancel)=\"onEditFormPanelCancel(mo)\"\n (click)=\"onRowCheck({mo, index})\"\n >\n </bdc-form-report-view-item>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #empty>\n <bsu-no-data></bsu-no-data>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;row-gap:.825rem;margin-bottom:1rem}\n"] }]
3389
- }], propDecorators: { containerRef: [{
3390
- type: ViewChild,
3391
- args: ['containerRef', { static: true, read: ViewContainerRef }]
3392
- }] } });
3393
-
3394
- class FormCardComponent extends FormPropsBaseComponent {
3395
- ngOnInit() {
3396
- super.ngOnInit();
3397
- }
3398
- }
3399
- FormCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormCardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3400
- FormCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormCardComponent, selector: "bdc-form-card", providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<fd-card cardType=\"object\">\n <ng-container *ngIf=\"toolbarItems\">\n <!-- <fd-card-header *ngIf=\"toolbarVisible !== false && toolbarItems.length\">\n <div fd-card-title></div>\n <div fd-card-subtitle style=\"width: 100%\"></div>\n </fd-card-header> -->\n </ng-container>\n <fd-card-content>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </fd-card-content>\n</fd-card>\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i5$2.CardContentComponent, selector: "fd-card-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3401
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormCardComponent, decorators: [{
3402
- type: Component,
3403
- args: [{ selector: 'bdc-form-card', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "<fd-card cardType=\"object\">\n <ng-container *ngIf=\"toolbarItems\">\n <!-- <fd-card-header *ngIf=\"toolbarVisible !== false && toolbarItems.length\">\n <div fd-card-title></div>\n <div fd-card-subtitle style=\"width: 100%\"></div>\n </fd-card-header> -->\n </ng-container>\n <fd-card-content>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </fd-card-content>\n</fd-card>\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"] }]
3404
- }] });
3405
-
3406
- const components = [
3407
- LoginFormComponent,
3408
- LoginSocialConncetionsComponent,
3409
- UiPersonComponent,
3410
- BarcodeReaderComponent,
3411
- BarcodeReaderDialogComponent,
3412
- BarcodeReaderVideoComponent,
3413
- SettingFormComponent,
3414
- MicroProcessFlowViewComponent,
3415
- UiEnumSegmentedButtonComponent,
3416
- TabProcessViewComponent,
3417
- UiTextFieldSearchComponent,
3418
- ServiceDeskHeaderComponent,
3419
- CardContentImageAndTitleComponent,
3420
- CardHeaderLogoTitleSubtitleComponent,
3421
- FormContentQuickViewComponent,
3422
- ServiceDeskServcieDetailComponent,
3423
- ServiceDeskViewOfServicesComponent,
3424
- ServiceDeskCardContentMojavezhayAkhzShodeComponent,
3425
- CardHeaderBigImageTitleAndSubtitleComponent,
3426
- ServiceDeskFormLayoutContentMojavezComponent,
3427
- UlvContextMenuItemShowFileContentComponent,
3428
- ResendVerificationCodeComponent,
3429
- CheckboxButtonComponent,
3430
- ReportTabViewComponent,
3431
- ReportLineChartViewComponent,
3432
- CardHeaderKpiComponent,
3433
- CardContentLineChartComponent,
3434
- FormChartContentComponent,
3435
- TableViewVerticalColumnsComponent,
3436
- QueryStringObservableComponent,
3437
- QueryStringFormObservableComponent,
3438
- G4bDetailsComponent,
3439
- AvatarComponent,
3440
- G4bEstelamComponent,
3441
- TimerCountDownComponent,
3442
- MoInfoMicroProccessFlowComponent,
3443
- MicroProccessFlowComponent,
3444
- EnumInfoMicroProccessFlowComponent,
3445
- UiPicturesCarouselComponent,
3446
- UiNumRateComponent,
3447
- MediaFileUploaderComponent,
3448
- SubformInRowReportComponent,
3449
- MasterDetailCardFormComponent,
3450
- ReportButtonViewComponent,
3451
- BarsaDocumentsComponent,
3452
- BarsaDocumentListItemComponent,
3453
- AcceptRejectComponent,
3454
- FooterComponent,
3455
- GeographicLocationComponent,
3456
- BarsaGeographicLocationComponent,
3457
- TokenReportViewComponent,
3458
- ColumnFormViewerComponent,
3459
- FormReportViewComponent,
3460
- FormReportViewItemComponent,
3461
- FormCardComponent
3462
- ];
3463
- const pipes = [UiPersonPipe, BarcodeFormatPipe, MoListToFlowItemPipe, DataSourceToFlowItemPipe];
3464
- class BarsaDevelopComponentsModule extends BaseModule {
3465
- constructor(dcm, cfr) {
3466
- super(dcm, cfr, 'BarsaDevelopComponentsModule');
3467
- this.dcm = dcm;
3468
- this.cfr = cfr;
3469
- this.dynamicComponents = [...components];
3470
- }
3471
- }
3472
- BarsaDevelopComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDevelopComponentsModule, deps: [{ token: i1.DynamicComponentService }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.NgModule });
3473
- BarsaDevelopComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", 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
- BarsaDevelopComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", 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
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDevelopComponentsModule, decorators: [{
3600
- type: NgModule,
3601
- args: [{
3602
- declarations: [...components, ...pipes],
3603
- schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
3604
- imports: [
3605
- CommonModule,
3606
- BarsaNovinRayCoreModule,
3607
- ReactiveFormsModule,
3608
- BarsaSapUiModule,
3609
- BarsaEchartsModule,
3610
- BarsaTilesModule,
3611
- FundamentalNgxCoreModule,
3612
- PlatformInputGroupModule,
3613
- FormsModule
3614
- ],
3615
- providers: [UserMediaBaseService, WebBarcodeService],
3616
- exports: [...components]
3617
- }]
3618
- }], ctorParameters: function () { return [{ type: i1.DynamicComponentService }, { type: i0.ComponentFactoryResolver }]; } });
3619
-
3620
- /**
3621
- * Generated bundle index. Do not edit.
3622
- */
3623
-
3624
- 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 };
3625
- //# sourceMappingURL=barsa-develop-components.mjs.map