barsa-develop-components 1.0.456 → 1.0.457

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 (153) hide show
  1. package/fesm2022/barsa-develop-components.mjs +3774 -0
  2. package/fesm2022/barsa-develop-components.mjs.map +1 -0
  3. package/index.d.ts +5 -5
  4. package/lib/accept-reject/accept-reject.component.d.ts +28 -28
  5. package/lib/avatar/avatar.component.d.ts +12 -12
  6. package/lib/barcode-format-pipe.d.ts +7 -7
  7. package/lib/barcode-reader/barcode-reader.component.d.ts +19 -19
  8. package/lib/barcode-reader-dialog/barcode-reader-dialog.component.d.ts +32 -32
  9. package/lib/barcode-reader-video/barcode-reader-video.component.d.ts +22 -22
  10. package/lib/barcode.service.d.ts +98 -98
  11. package/lib/barsa-develop-components.module.d.ts +120 -117
  12. package/lib/barsa-document-list-item/barsa-document-list-item.component.d.ts +39 -39
  13. package/lib/barsa-documents/barsa-documents.component.d.ts +47 -47
  14. package/lib/barsa-geographic-location/barsa-geographic-location.component.d.ts +46 -46
  15. package/lib/card-content-image-and-title/card-content-image-and-title.component.d.ts +18 -18
  16. package/lib/card-content-line-chart/card-content-line-chart.component.d.ts +9 -9
  17. package/lib/card-header-big-image-title-and-subtitle/card-header-big-image-title-and-subtitle.component.d.ts +6 -6
  18. package/lib/card-header-kpi/card-header-kpi.component.d.ts +14 -14
  19. package/lib/card-header-logo-title-subtitle/card-header-logo-title-subtitle.component.d.ts +23 -23
  20. package/lib/checkbox-button/checkbox-button.component.d.ts +13 -13
  21. package/lib/column-chip/column-chip.component.d.ts +17 -0
  22. package/lib/column-form-viewer/column-form-viewer.component.d.ts +30 -30
  23. package/lib/column-progressbar/column-progressbar.component.d.ts +41 -0
  24. package/lib/enum-info-micro-proccess-flow/enum-info-micro-proccess-flow.component.d.ts +8 -8
  25. package/lib/footer/footer.component.d.ts +15 -15
  26. package/lib/form-card/form-card.component.d.ts +8 -8
  27. package/lib/form-chart-content/form-chart-content.component.d.ts +9 -9
  28. package/lib/form-content-quick-view/form-content-quick-view.component.d.ts +18 -18
  29. package/lib/form-report-view/form-report-view.component.d.ts +13 -13
  30. package/lib/form-report-view-item/form-report-view-item.component.d.ts +15 -15
  31. package/lib/g4b-details/g4b-details.component.d.ts +9 -9
  32. package/lib/g4b-estelam/g4b-estelam.component.d.ts +11 -11
  33. package/lib/geographic-location/geographic-location.component.d.ts +34 -34
  34. package/lib/login-form/login-form.component.d.ts +12 -12
  35. package/lib/login-social-conncetions/login-social-conncetions.component.d.ts +12 -12
  36. package/lib/master-detail-card-form/master-detail-card-form.component.d.ts +8 -8
  37. package/lib/media-file-uploader/media-file-uploader.component.d.ts +52 -52
  38. package/lib/micro-proccess-flow/micro-proccess-flow.component.d.ts +28 -28
  39. package/lib/micro-process-flow-view/micro-process-flow-view.component.d.ts +14 -14
  40. package/lib/mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component.d.ts +9 -9
  41. package/lib/models/document-item.d.ts +19 -19
  42. package/lib/models/documents-setting.d.ts +11 -11
  43. package/lib/models/form-report-view-setting.d.ts +7 -7
  44. package/lib/models/index.d.ts +7 -7
  45. package/lib/models/micro-process-flow-view-setting.d.ts +8 -8
  46. package/lib/models/person.d.ts +10 -10
  47. package/lib/models/service-desk-view-of-services-setting.d.ts +6 -6
  48. package/lib/models/tab-process-view-setting.d.ts +7 -7
  49. package/lib/pipes/datasource-to-flow-item.d.ts +10 -10
  50. package/lib/pipes/index.d.ts +2 -2
  51. package/lib/pipes/mo-list-to-flow-item.pipe.d.ts +10 -10
  52. package/lib/query-string-form-observable/query-string-form-observable.component.d.ts +13 -13
  53. package/lib/query-string-observable/query-string-observable.component.d.ts +9 -9
  54. package/lib/report-button-view/report-button-view.component.d.ts +12 -12
  55. package/lib/report-line-chart-view/report-line-chart-view.component.d.ts +7 -7
  56. package/lib/report-tab-view/report-tab-view.component.d.ts +15 -15
  57. package/lib/resend-verification-code/resend-verification-code.component.d.ts +19 -18
  58. package/lib/service-desk-card-content-mojavezhay-akhz-shode/service-desk-card-content-mojavezhay-akhz-shode.component.d.ts +15 -15
  59. package/lib/service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component.d.ts +26 -26
  60. package/lib/service-desk-header/service-desk-header.component.d.ts +61 -63
  61. package/lib/service-desk-servcie-detail/service-desk-servcie-detail.component.d.ts +39 -39
  62. package/lib/service-desk-view-of-services/service-desk-view-of-services.component.d.ts +16 -16
  63. package/lib/setting-form/setting-form.component.d.ts +20 -20
  64. package/lib/subform-in-row-report/subform-in-row-report.component.d.ts +22 -21
  65. package/lib/tab-process-view/tab-process-view.component.d.ts +20 -20
  66. package/lib/table-view-vertical-columns/table-view-vertical-columns.component.d.ts +6 -6
  67. package/lib/timer-count-down/timer-count-down.component.d.ts +16 -15
  68. package/lib/token-report-view/token-report-view.component.d.ts +15 -15
  69. package/lib/ui-enum-segmented-button/ui-enum-segmented-button.component.d.ts +9 -9
  70. package/lib/ui-num-rate/ui-num-rate.component.d.ts +9 -9
  71. package/lib/ui-person/ui-person.component.d.ts +31 -31
  72. package/lib/ui-person/ui-person.pipe.d.ts +7 -7
  73. package/lib/ui-pictures-carousel/ui-pictures-carousel.component.d.ts +6 -6
  74. package/lib/ui-text-field-search/ui-text-field-search.component.d.ts +17 -17
  75. package/lib/ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component.d.ts +25 -25
  76. package/package.json +5 -13
  77. package/public-api.d.ts +60 -58
  78. package/esm2020/barsa-develop-components.mjs +0 -5
  79. package/esm2020/lib/accept-reject/accept-reject.component.mjs +0 -69
  80. package/esm2020/lib/avatar/avatar.component.mjs +0 -29
  81. package/esm2020/lib/barcode-format-pipe.mjs +0 -24
  82. package/esm2020/lib/barcode-reader/barcode-reader.component.mjs +0 -62
  83. package/esm2020/lib/barcode-reader-dialog/barcode-reader-dialog.component.mjs +0 -82
  84. package/esm2020/lib/barcode-reader-video/barcode-reader-video.component.mjs +0 -66
  85. package/esm2020/lib/barcode.service.mjs +0 -330
  86. package/esm2020/lib/barsa-develop-components.module.mjs +0 -284
  87. package/esm2020/lib/barsa-document-list-item/barsa-document-list-item.component.mjs +0 -104
  88. package/esm2020/lib/barsa-documents/barsa-documents.component.mjs +0 -173
  89. package/esm2020/lib/barsa-geographic-location/barsa-geographic-location.component.mjs +0 -174
  90. package/esm2020/lib/card-content-image-and-title/card-content-image-and-title.component.mjs +0 -51
  91. package/esm2020/lib/card-content-line-chart/card-content-line-chart.component.mjs +0 -38
  92. package/esm2020/lib/card-header-big-image-title-and-subtitle/card-header-big-image-title-and-subtitle.component.mjs +0 -20
  93. package/esm2020/lib/card-header-kpi/card-header-kpi.component.mjs +0 -41
  94. package/esm2020/lib/card-header-logo-title-subtitle/card-header-logo-title-subtitle.component.mjs +0 -46
  95. package/esm2020/lib/checkbox-button/checkbox-button.component.mjs +0 -23
  96. package/esm2020/lib/column-form-viewer/column-form-viewer.component.mjs +0 -88
  97. package/esm2020/lib/enum-info-micro-proccess-flow/enum-info-micro-proccess-flow.component.mjs +0 -18
  98. package/esm2020/lib/footer/footer.component.mjs +0 -44
  99. package/esm2020/lib/form-card/form-card.component.mjs +0 -18
  100. package/esm2020/lib/form-chart-content/form-chart-content.component.mjs +0 -38
  101. package/esm2020/lib/form-content-quick-view/form-content-quick-view.component.mjs +0 -102
  102. package/esm2020/lib/form-report-view/form-report-view.component.mjs +0 -26
  103. package/esm2020/lib/form-report-view-item/form-report-view-item.component.mjs +0 -45
  104. package/esm2020/lib/g4b-details/g4b-details.component.mjs +0 -28
  105. package/esm2020/lib/g4b-estelam/g4b-estelam.component.mjs +0 -30
  106. package/esm2020/lib/geographic-location/geographic-location.component.mjs +0 -88
  107. package/esm2020/lib/login-form/login-form.component.mjs +0 -55
  108. package/esm2020/lib/login-social-conncetions/login-social-conncetions.component.mjs +0 -30
  109. package/esm2020/lib/master-detail-card-form/master-detail-card-form.component.mjs +0 -17
  110. package/esm2020/lib/media-file-uploader/media-file-uploader.component.mjs +0 -238
  111. package/esm2020/lib/micro-proccess-flow/micro-proccess-flow.component.mjs +0 -53
  112. package/esm2020/lib/micro-process-flow-view/micro-process-flow-view.component.mjs +0 -24
  113. package/esm2020/lib/mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component.mjs +0 -23
  114. package/esm2020/lib/models/document-item.mjs +0 -2
  115. package/esm2020/lib/models/documents-setting.mjs +0 -2
  116. package/esm2020/lib/models/form-report-view-setting.mjs +0 -2
  117. package/esm2020/lib/models/index.mjs +0 -8
  118. package/esm2020/lib/models/micro-process-flow-view-setting.mjs +0 -2
  119. package/esm2020/lib/models/person.mjs +0 -2
  120. package/esm2020/lib/models/service-desk-view-of-services-setting.mjs +0 -2
  121. package/esm2020/lib/models/tab-process-view-setting.mjs +0 -2
  122. package/esm2020/lib/pipes/datasource-to-flow-item.mjs +0 -22
  123. package/esm2020/lib/pipes/index.mjs +0 -3
  124. package/esm2020/lib/pipes/mo-list-to-flow-item.pipe.mjs +0 -22
  125. package/esm2020/lib/query-string-form-observable/query-string-form-observable.component.mjs +0 -37
  126. package/esm2020/lib/query-string-observable/query-string-observable.component.mjs +0 -22
  127. package/esm2020/lib/report-button-view/report-button-view.component.mjs +0 -38
  128. package/esm2020/lib/report-line-chart-view/report-line-chart-view.component.mjs +0 -13
  129. package/esm2020/lib/report-tab-view/report-tab-view.component.mjs +0 -28
  130. package/esm2020/lib/resend-verification-code/resend-verification-code.component.mjs +0 -59
  131. package/esm2020/lib/service-desk-card-content-mojavezhay-akhz-shode/service-desk-card-content-mojavezhay-akhz-shode.component.mjs +0 -28
  132. package/esm2020/lib/service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component.mjs +0 -110
  133. package/esm2020/lib/service-desk-header/service-desk-header.component.mjs +0 -236
  134. package/esm2020/lib/service-desk-servcie-detail/service-desk-servcie-detail.component.mjs +0 -142
  135. package/esm2020/lib/service-desk-view-of-services/service-desk-view-of-services.component.mjs +0 -37
  136. package/esm2020/lib/setting-form/setting-form.component.mjs +0 -64
  137. package/esm2020/lib/subform-in-row-report/subform-in-row-report.component.mjs +0 -65
  138. package/esm2020/lib/tab-process-view/tab-process-view.component.mjs +0 -49
  139. package/esm2020/lib/table-view-vertical-columns/table-view-vertical-columns.component.mjs +0 -16
  140. package/esm2020/lib/timer-count-down/timer-count-down.component.mjs +0 -98
  141. package/esm2020/lib/token-report-view/token-report-view.component.mjs +0 -27
  142. package/esm2020/lib/ui-enum-segmented-button/ui-enum-segmented-button.component.mjs +0 -25
  143. package/esm2020/lib/ui-num-rate/ui-num-rate.component.mjs +0 -29
  144. package/esm2020/lib/ui-person/ui-person.component.mjs +0 -160
  145. package/esm2020/lib/ui-person/ui-person.pipe.mjs +0 -40
  146. package/esm2020/lib/ui-pictures-carousel/ui-pictures-carousel.component.mjs +0 -17
  147. package/esm2020/lib/ui-text-field-search/ui-text-field-search.component.mjs +0 -42
  148. package/esm2020/lib/ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component.mjs +0 -70
  149. package/esm2020/public-api.mjs +0 -62
  150. package/fesm2015/barsa-develop-components.mjs +0 -3660
  151. package/fesm2015/barsa-develop-components.mjs.map +0 -1
  152. package/fesm2020/barsa-develop-components.mjs +0 -3625
  153. package/fesm2020/barsa-develop-components.mjs.map +0 -1
@@ -0,0 +1,3774 @@
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, inject, Renderer2, signal, NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';
3
+ import * as i2$1 from 'barsa-sap-ui';
4
+ import { DeviceInfoFieldBaseComponent, UiMoInfoSubFormUiComponent, UiCheckBoxComponent, UiMoInfoUlvComboComponent, UiSimpleComboComponent, UiPicturesInfoComponent, UiPdfViewerComponent, ColumnRendererComponent, BarsaSapUiModule } from 'barsa-sap-ui';
5
+ import { Subject, debounceTime, distinctUntilChanged, BehaviorSubject, of, takeUntil as takeUntil$1, switchMap } from 'rxjs';
6
+ import * as i1 from '@angular/forms';
7
+ import { ReactiveFormsModule, FormsModule } from '@angular/forms';
8
+ import * as i2 from '@fundamental-ngx/core/input-group';
9
+ import * as i3 from '@fundamental-ngx/core/toolbar';
10
+ import * as i1$1 from 'barsa-novin-ray-core';
11
+ import { ReportViewBaseComponent, FieldBaseComponent, FormBaseComponent, FormPanelService, BaseComponent, BarsaApi, ReportBaseComponent, getDeviceIsMobile, BaseItemContentPropsComponent, FormPropsBaseComponent, FindLayoutSettingFromLayout94, BaseFormToolbaritemPropsComponent, DateService, getDateService, LogService, UploadService, AudioRecordingService, VideoRecordingService, createGridEditorFormPanel, ImageMimeType, AudioMimeType, VideoMimeType, AllFilesMimeType, PreventDefaulEvent, isImage, getIcon, FilesValidationHelper, LinearListHelper, getUniqueId, BaseViewItemPropsComponent, PortalService, ColumnValueOfParametersPipe, BaseModule, BarsaNovinRayCoreModule } from 'barsa-novin-ray-core';
12
+ import { takeUntil, shareReplay, filter, map, debounceTime as debounceTime$1, tap, exhaustMap, concatMap, finalize, delay, withLatestFrom } from 'rxjs/operators';
13
+ import * as i2$2 from '@fundamental-ngx/core';
14
+ import { TabListComponent, PopoverBodyComponent, TabPanelComponent, FundamentalNgxCoreModule } from '@fundamental-ngx/core';
15
+ import * as i1$2 from '@fundamental-ngx/core/tabs';
16
+ import * as i4 from '@fundamental-ngx/core/button';
17
+ import * as i3$1 from '@fundamental-ngx/core/segmented-button';
18
+ import * as i1$3 from '@angular/common';
19
+ import { CommonModule } from '@angular/common';
20
+ import * as i3$2 from '@fundamental-ngx/core/micro-process-flow';
21
+ import * as i4$1 from '@fundamental-ngx/core/dynamic-side-content';
22
+ import { NotFoundException, ChecksumException, FormatException, DecodeHintType, BarcodeFormat } from '@zxing/library';
23
+ import { BrowserMultiFormatReader, BrowserCodeReader } from '@zxing/browser';
24
+ import * as i3$3 from '@fundamental-ngx/core/bar';
25
+ import * as i4$2 from '@fundamental-ngx/core/dialog';
26
+ import * as i10 from '@fundamental-ngx/cdk/utils';
27
+ import * as i6 from '@fundamental-ngx/core/title';
28
+ import * as i7 from '@fundamental-ngx/core/select';
29
+ import * as i1$4 from '@fundamental-ngx/platform';
30
+ import { PlatformInputGroupModule } from '@fundamental-ngx/platform';
31
+ import * as i3$4 from '@fundamental-ngx/core/link';
32
+ import * as i4$3 from '@fundamental-ngx/core/card';
33
+ import * as i6$1 from '@fundamental-ngx/core/form';
34
+ import * as i2$3 from '@fundamental-ngx/core/icon';
35
+ import * as i7$1 from '@fundamental-ngx/core/list';
36
+ import * as i7$2 from '@fundamental-ngx/core/popover';
37
+ import * as i3$5 from '@fundamental-ngx/core/quick-view';
38
+ import * as i3$6 from '@fundamental-ngx/core/table';
39
+ import * as i3$7 from '@fundamental-ngx/core/layout-grid';
40
+ import * as i2$4 from 'barsa-tiles';
41
+ import { TilesViewerContainerComponent, TilesViewerService, TilesViewerGroupComponent, BarsaTilesModule } from 'barsa-tiles';
42
+ import * as i3$8 from '@fundamental-ngx/core/avatar';
43
+ import * as i6$2 from '@fundamental-ngx/core/checkbox';
44
+ import * as i3$9 from '@fundamental-ngx/core/dynamic-page';
45
+ import * as i3$a from '@angular/platform-browser';
46
+ import * as i6$3 from '@fundamental-ngx/core/object-status';
47
+ import * as i1$5 from '@angular/router';
48
+ import * as i3$b from '@fundamental-ngx/core/carousel';
49
+ import * as i1$6 from '@fundamental-ngx/core/rating-indicator';
50
+ import * as i4$4 from '@fundamental-ngx/core/nested-list';
51
+ import * as i5 from '@fundamental-ngx/core/progress-indicator';
52
+ import * as i1$7 from '@fundamental-ngx/core/menu';
53
+ import * as i2$5 from '@fundamental-ngx/core/split-button';
54
+ import * as i4$5 from '@fundamental-ngx/core/action-sheet';
55
+ import * as i7$3 from '@fundamental-ngx/core/file-uploader';
56
+ import * as i9 from '@fundamental-ngx/core/inline-help';
57
+ import * as i2$6 from '@fundamental-ngx/core/content-density';
58
+ import * as i3$c from '@fundamental-ngx/core/token';
59
+ import * as i1$8 from '@fundamental-ngx/core/generic-tag';
60
+ import { BarsaEchartsModule } from 'barsa-echarts';
61
+
62
+ class UiTextFieldSearchComponent extends DeviceInfoFieldBaseComponent {
63
+ constructor() {
64
+ super(...arguments);
65
+ this._debouncer = new Subject();
66
+ }
67
+ get MinSize() {
68
+ // this call from outside.corejs
69
+ return { width: 0, height: 30 };
70
+ }
71
+ ngOnInit() {
72
+ super.ngOnInit();
73
+ this._debouncer.pipe(debounceTime(300), distinctUntilChanged()).subscribe((value) => {
74
+ this.value = value;
75
+ this.valueChange.emit(value);
76
+ });
77
+ }
78
+ onSearchSubmit() {
79
+ this._valueChange(this.searchTerm);
80
+ }
81
+ _valueChange(value) {
82
+ this._debouncer.next(value);
83
+ }
84
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiTextFieldSearchComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
85
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UiTextFieldSearchComponent, selector: "bdc-ui-text-field-search", inputs: { value: "value", MinSize: "MinSize" }, usesInheritance: true, ngImport: i0, template: "<fd-input-group\r\n style=\"width: 100%\"\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n (keydown.enter)=\"onSearchSubmit()\"\r\n>\r\n</fd-input-group>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiTextFieldSearchComponent, decorators: [{
88
+ type: Component,
89
+ args: [{ selector: 'bdc-ui-text-field-search', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-input-group\r\n style=\"width: 100%\"\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n (keydown.enter)=\"onSearchSubmit()\"\r\n>\r\n</fd-input-group>\r\n" }]
90
+ }], propDecorators: { value: [{
91
+ type: Input
92
+ }], MinSize: [{
93
+ type: Input
94
+ }] } });
95
+
96
+ class TabProcessViewComponent extends ReportViewBaseComponent {
97
+ ngOnInit() {
98
+ super.ngOnInit();
99
+ this.arrowRight = this.rtl ? 'navigation-left-arrow' : 'navigation-right-arrow';
100
+ this.fieldTitle = this.viewSetting.FieldTitle;
101
+ this.fieldSubtitle = this.viewSetting.FieldSubtitle;
102
+ this.fieldIcon = this.viewSetting.FieldIcon;
103
+ this.defaultIcon = this.viewSetting.DefaultIcon;
104
+ this._ulvMainService.moDataList$.pipe(takeUntil(this._onDestroy$)).subscribe((moDataList) => {
105
+ if (moDataList) {
106
+ const selectedIndex = moDataList.findIndex((c) => c.$IsChecked);
107
+ if (this.tabList && selectedIndex > -1) {
108
+ setTimeout(() => this.tabList.tabPanels.toArray()[selectedIndex].open(true), 0);
109
+ }
110
+ }
111
+ });
112
+ }
113
+ onTabChange2(e) {
114
+ const index = this.moDataList.findIndex((c) => c.Id === e.Id);
115
+ const mo = this.moDataList[index];
116
+ if (mo.$IsChecked) {
117
+ return;
118
+ }
119
+ super.onRowCheck({ mo, index });
120
+ }
121
+ onTabChange(e) {
122
+ const index = this.moDataList.findIndex((c) => c.Id === e.id);
123
+ const mo = this.moDataList[index];
124
+ super.onRowCheck({ mo, index });
125
+ }
126
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TabProcessViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
127
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TabProcessViewComponent, selector: "bdc-tab-process-view", viewQueries: [{ propertyName: "tabList", first: true, predicate: TabListComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (moDataList?.length) {\r\n<fd-tab-list\r\n mode=\"process\"\r\n [style.min-height]=\"moDataList?.length ? '3.8rem' : null\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n>\r\n @for (item of moDataList; track item; let index = $index; let last = $last) {\r\n <fd-tab [id]=\"item.Id\" [active]=\"item.$IsChecked\">\r\n <ng-template fd-tab-title-template>\r\n <span\r\n (click)=\"onTabChange2(item)\"\r\n fd-tab-icon\r\n [icon]=\"(fieldIcon | rval: item:allColumns) ? (fieldIcon | rval: item:allColumns) : defaultIcon\"\r\n ></span>\r\n <div fd-tab-process (click)=\"onTabChange2(item)\">\r\n <span fd-tab-label>{{ fieldTitle | rval: item:allColumns }}</span>\r\n <span fd-tab-label>{{ fieldSubtitle | rval: item:allColumns }}</span>\r\n </div>\r\n </ng-template>\r\n </fd-tab>\r\n }\r\n</fd-tab-list>\r\n} @else {\r\n<div style=\"min-height: 3.8rem; background-color: var(--sapObjectHeader_Background)\"></div>\r\n}\r\n", styles: [""], dependencies: [{ kind: "component", type: i1$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "selectedTabIndexChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i1$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "directive", type: i1$2.TabTitleDirective, selector: "[fdTabTitleTemplate], [fd-tab-title-template]" }, { kind: "component", type: i1$2.TabIconComponent, selector: "[fd-tab-icon]", inputs: ["class", "icon", "iconFont"] }, { kind: "directive", type: i1$2.TabLabelDirective, selector: "[fdTabLabel], [fd-tab-label]" }, { kind: "directive", type: i1$2.TabProcessDirective, selector: "[fdTabProcess], [fd-tab-process]" }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
128
+ }
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TabProcessViewComponent, decorators: [{
130
+ type: Component,
131
+ args: [{ selector: 'bdc-tab-process-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (moDataList?.length) {\r\n<fd-tab-list\r\n mode=\"process\"\r\n [style.min-height]=\"moDataList?.length ? '3.8rem' : null\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n>\r\n @for (item of moDataList; track item; let index = $index; let last = $last) {\r\n <fd-tab [id]=\"item.Id\" [active]=\"item.$IsChecked\">\r\n <ng-template fd-tab-title-template>\r\n <span\r\n (click)=\"onTabChange2(item)\"\r\n fd-tab-icon\r\n [icon]=\"(fieldIcon | rval: item:allColumns) ? (fieldIcon | rval: item:allColumns) : defaultIcon\"\r\n ></span>\r\n <div fd-tab-process (click)=\"onTabChange2(item)\">\r\n <span fd-tab-label>{{ fieldTitle | rval: item:allColumns }}</span>\r\n <span fd-tab-label>{{ fieldSubtitle | rval: item:allColumns }}</span>\r\n </div>\r\n </ng-template>\r\n </fd-tab>\r\n }\r\n</fd-tab-list>\r\n} @else {\r\n<div style=\"min-height: 3.8rem; background-color: var(--sapObjectHeader_Background)\"></div>\r\n}\r\n" }]
132
+ }], propDecorators: { tabList: [{
133
+ type: ViewChild,
134
+ args: [TabListComponent]
135
+ }] } });
136
+
137
+ class UiEnumSegmentedButtonComponent extends FieldBaseComponent {
138
+ onValueChange(value) {
139
+ const selectedValue = value;
140
+ this.setValue(selectedValue);
141
+ }
142
+ setValue(selectedValue) {
143
+ this.value = selectedValue;
144
+ this.valueChange.emit(this.value);
145
+ this.fireContextEvent('select', this.value);
146
+ }
147
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiEnumSegmentedButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
148
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiEnumSegmentedButtonComponent, selector: "bdc-ui-enum-segmented-button", usesInheritance: true, ngImport: i0, template: "<fd-segmented-button style=\"width: 100%\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\r\n @for (item of context.store.data[context.store.root]; track item) { @if (item.id !== '0') {\r\n <button\r\n [disabled]=\"(disableOrReadonly$ | async) === true ? true : false\"\r\n fd-button\r\n [label]=\"item.txt\"\r\n [value]=\"item.id\"\r\n ></button>\r\n } }\r\n</fd-segmented-button>\r\n", styles: ["button{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3$1.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle", "vertical"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
149
+ }
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiEnumSegmentedButtonComponent, decorators: [{
151
+ type: Component,
152
+ args: [{ selector: 'bdc-ui-enum-segmented-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-segmented-button style=\"width: 100%\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\r\n @for (item of context.store.data[context.store.root]; track item) { @if (item.id !== '0') {\r\n <button\r\n [disabled]=\"(disableOrReadonly$ | async) === true ? true : false\"\r\n fd-button\r\n [label]=\"item.txt\"\r\n [value]=\"item.id\"\r\n ></button>\r\n } }\r\n</fd-segmented-button>\r\n", styles: ["button{width:100%}\n"] }]
153
+ }] });
154
+
155
+ class MicroProcessFlowViewComponent extends ReportViewBaseComponent {
156
+ ngOnInit() {
157
+ super.ngOnInit();
158
+ this.arrowRight = this.rtl ? 'navigation-left-arrow' : 'navigation-right-arrow';
159
+ this.fieldTitle = this.viewSetting.FieldTitle;
160
+ this.fieldIcon = this.viewSetting.FieldIcon;
161
+ this.fieldState = this.viewSetting.FieldState;
162
+ this.mode = this.viewSetting.ModeValue$Caption;
163
+ }
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MicroProcessFlowViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MicroProcessFlowViewComponent, selector: "bdc-micro-process-flow-view", usesInheritance: true, ngImport: i0, template: "<fd-micro-process-flow style=\"max-width: 100%\">\r\n @for (item of moDataList; track item; let index = $index) {\r\n <fd-micro-process-flow-item>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n button;\r\n context: {\r\n $implicit: item,\r\n index: index,\r\n arrow: arrowRight\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-micro-process-flow-item>\r\n }\r\n</fd-micro-process-flow>\r\n<ng-template #button let-mo let-index=\"index\" let-arrow=\"arrow\">\r\n <button\r\n fd-button\r\n (click)=\"onRowCheck({mo, index})\"\r\n fd-micro-process-flow-focusable-item\r\n [label]=\"fieldTitle | rval: mo:allColumns\"\r\n [fdType]=\"fieldState | rval: mo:allColumns\"\r\n [glyph]=\"fieldIcon | rval: mo:allColumns\"\r\n ></button>\r\n</ng-template>\r\n", styles: [".fd-link{cursor:pointer;font-size:1.06rem}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3$2.MicroProcessFlowComponent, selector: "fd-micro-process-flow", inputs: ["independentSteps", "transitionSpeed", "transitionTimingFunction"] }, { kind: "component", type: i3$2.MicroProcessFlowItemComponent, selector: "fd-micro-process-flow-item", inputs: ["state", "intermediate"] }, { kind: "directive", type: i3$2.MicroProcessFlowFocusableItemDirective, selector: "[fdMicroProcessFlowFocusableItem], [fd-micro-process-flow-focusable-item]" }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
166
+ }
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MicroProcessFlowViewComponent, decorators: [{
168
+ type: Component,
169
+ args: [{ selector: 'bdc-micro-process-flow-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-micro-process-flow style=\"max-width: 100%\">\r\n @for (item of moDataList; track item; let index = $index) {\r\n <fd-micro-process-flow-item>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n button;\r\n context: {\r\n $implicit: item,\r\n index: index,\r\n arrow: arrowRight\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-micro-process-flow-item>\r\n }\r\n</fd-micro-process-flow>\r\n<ng-template #button let-mo let-index=\"index\" let-arrow=\"arrow\">\r\n <button\r\n fd-button\r\n (click)=\"onRowCheck({mo, index})\"\r\n fd-micro-process-flow-focusable-item\r\n [label]=\"fieldTitle | rval: mo:allColumns\"\r\n [fdType]=\"fieldState | rval: mo:allColumns\"\r\n [glyph]=\"fieldIcon | rval: mo:allColumns\"\r\n ></button>\r\n</ng-template>\r\n", styles: [".fd-link{cursor:pointer;font-size:1.06rem}\n"] }]
170
+ }] });
171
+
172
+ class SettingFormComponent extends FormBaseComponent {
173
+ constructor() {
174
+ super(...arguments);
175
+ this.deviceSize = 'xl';
176
+ this.selectedSetting = false;
177
+ this.groupSettingFieldCaption = 'گروه تنظیمات2';
178
+ this.objectSettingFieldCaption = 'شی تنظیمات';
179
+ }
180
+ ngOnInit() {
181
+ super.ngOnInit();
182
+ this.rtl$ = this._portalService.rtl$;
183
+ this._portalService.deviceSize$.pipe(takeUntil(this._onDestroy$)).subscribe((deviceSize) => {
184
+ switch (deviceSize) {
185
+ case 's':
186
+ this.deviceSize = 'sm';
187
+ break;
188
+ case 'm':
189
+ this.deviceSize = 'md';
190
+ break;
191
+ default:
192
+ this.deviceSize = 'xl';
193
+ }
194
+ });
195
+ }
196
+ ngAfterViewInit() {
197
+ super.ngAfterViewInit();
198
+ const fieldUi = Object.values(this.listFieldUi).find((c) => c.Setting.ControlFieldCaption === this.groupSettingFieldCaption);
199
+ if (fieldUi) {
200
+ fieldUi.viewerControl.on({
201
+ rowselect: this._setSelectedSetting.bind(this)
202
+ });
203
+ }
204
+ this._groupSettingControlUi = fieldUi;
205
+ }
206
+ ngOnDestroy() {
207
+ super.ngOnDestroy();
208
+ if (this._groupSettingControlUi) {
209
+ this._groupSettingControlUi.viewerControl.un('rowselect', this._setSelectedSetting);
210
+ }
211
+ }
212
+ onSettingClick() { }
213
+ onBack() {
214
+ this.selectedSetting = false;
215
+ }
216
+ _setSelectedSetting() {
217
+ this.selectedSetting = true;
218
+ }
219
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SettingFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
220
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SettingFormComponent, selector: "bdc-setting-form", providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "@if (mo$ | async; as mo) { @if (layout94$ | async; as layout) { @if (deviceSize === 'sm') {\r\n<div style=\"display: flex; flex-direction: column\">\r\n @if (selectedSetting) {\r\n <div style=\"width: 100%\">\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"(rtl$ | async)!! ? 'arrow-left' : 'arrow-right'\"\r\n (click)=\"onBack()\"\r\n ></button>\r\n </div>\r\n }\r\n <div [class.hide]=\"selectedSetting\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderSetting;\r\n context: {\r\n $implicit: layout,\r\n isMobile: true\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n <div [class.hide]=\"!selectedSetting\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderForm;\r\n context: {\r\n $implicit: layout,\r\n isMobile: true\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n</div>\r\n} @else {\r\n<fd-dynamic-side-content [size]=\"deviceSize\">\r\n <fd-dynamic-side-content-side>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderSetting;\r\n context: {\r\n $implicit: layout,\r\n isMobile: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderForm;\r\n context: {\r\n $implicit: layout,\r\n isMobile: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n} }\r\n<ng-template #renderForm let-layout let-isMobile=\"isMobile\">\r\n @if (objectSettingFieldCaption | controlUi: layout; as layoutConfig) {\r\n <bsu-layout-control\r\n (click)=\"onSettingClick()\"\r\n class=\"form-setting\"\r\n [class.is-mobile]=\"isMobile\"\r\n [caption]=\"objectSettingFieldCaption\"\r\n [config]=\"layoutConfig\"\r\n [focus]=\"true\"\r\n ></bsu-layout-control>\r\n }\r\n</ng-template>\r\n<ng-template #renderSetting let-layout let-isMobile=\"isMobile\">\r\n @if (groupSettingFieldCaption | controlUi: layout; as layoutConfig) {\r\n <bsu-layout-control\r\n class=\"list-setting\"\r\n [class.is-mobile]=\"isMobile\"\r\n [caption]=\"groupSettingFieldCaption\"\r\n [config]=\"layoutConfig\"\r\n ></bsu-layout-control>\r\n }\r\n</ng-template>\r\n} @else {\r\n<bsu-mask></bsu-mask>\r\n}\r\n", styles: [":host{width:100%}:host ::ng-deep bsu-ulv-context-menu,:host ::ng-deep li button{display:none}.list-setting{height:100%;border-left:1px solid #ccc}.list-setting ::ng-deep bnrc-field-ui{height:100%;padding:0}.list-setting.is-mobile{border:none}.form-setting{height:100%;padding-top:5px}.form-setting ::ng-deep bnrc-field-ui{height:100%!important}fd-dynamic-side-content{height:100%}fd-dynamic-side-content-main{overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i2$1.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"], outputs: ["events"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$1.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i4$1.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i4$1.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
221
+ }
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SettingFormComponent, decorators: [{
223
+ type: Component,
224
+ args: [{ selector: 'bdc-setting-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], standalone: false, template: "@if (mo$ | async; as mo) { @if (layout94$ | async; as layout) { @if (deviceSize === 'sm') {\r\n<div style=\"display: flex; flex-direction: column\">\r\n @if (selectedSetting) {\r\n <div style=\"width: 100%\">\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"(rtl$ | async)!! ? 'arrow-left' : 'arrow-right'\"\r\n (click)=\"onBack()\"\r\n ></button>\r\n </div>\r\n }\r\n <div [class.hide]=\"selectedSetting\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderSetting;\r\n context: {\r\n $implicit: layout,\r\n isMobile: true\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n <div [class.hide]=\"!selectedSetting\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderForm;\r\n context: {\r\n $implicit: layout,\r\n isMobile: true\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n</div>\r\n} @else {\r\n<fd-dynamic-side-content [size]=\"deviceSize\">\r\n <fd-dynamic-side-content-side>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderSetting;\r\n context: {\r\n $implicit: layout,\r\n isMobile: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderForm;\r\n context: {\r\n $implicit: layout,\r\n isMobile: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n} }\r\n<ng-template #renderForm let-layout let-isMobile=\"isMobile\">\r\n @if (objectSettingFieldCaption | controlUi: layout; as layoutConfig) {\r\n <bsu-layout-control\r\n (click)=\"onSettingClick()\"\r\n class=\"form-setting\"\r\n [class.is-mobile]=\"isMobile\"\r\n [caption]=\"objectSettingFieldCaption\"\r\n [config]=\"layoutConfig\"\r\n [focus]=\"true\"\r\n ></bsu-layout-control>\r\n }\r\n</ng-template>\r\n<ng-template #renderSetting let-layout let-isMobile=\"isMobile\">\r\n @if (groupSettingFieldCaption | controlUi: layout; as layoutConfig) {\r\n <bsu-layout-control\r\n class=\"list-setting\"\r\n [class.is-mobile]=\"isMobile\"\r\n [caption]=\"groupSettingFieldCaption\"\r\n [config]=\"layoutConfig\"\r\n ></bsu-layout-control>\r\n }\r\n</ng-template>\r\n} @else {\r\n<bsu-mask></bsu-mask>\r\n}\r\n", styles: [":host{width:100%}:host ::ng-deep bsu-ulv-context-menu,:host ::ng-deep li button{display:none}.list-setting{height:100%;border-left:1px solid #ccc}.list-setting ::ng-deep bnrc-field-ui{height:100%;padding:0}.list-setting.is-mobile{border:none}.form-setting{height:100%;padding-top:5px}.form-setting ::ng-deep bnrc-field-ui{height:100%!important}fd-dynamic-side-content{height:100%}fd-dynamic-side-content-main{overflow-y:auto}\n"] }]
225
+ }] });
226
+
227
+ /**
228
+ * Based on zxing-typescript BrowserCodeReader
229
+ */
230
+ class BrowserMultiFormatContinuousReader extends BrowserMultiFormatReader {
231
+ /**
232
+ * Returns the code reader scanner controls.
233
+ */
234
+ getScannerControls() {
235
+ if (!this.scannerControls) {
236
+ throw new Error('No scanning is running at the time.');
237
+ }
238
+ return this.scannerControls;
239
+ }
240
+ /**
241
+ * Starts the decoding from the current or a new video element.
242
+ *
243
+ * @param deviceId The device's to be used Id
244
+ * @param previewEl A new video element
245
+ */
246
+ async scanFromDeviceObservable(deviceId, previewEl) {
247
+ const scan$ = new BehaviorSubject({});
248
+ let ctrls;
249
+ try {
250
+ ctrls = await this.decodeFromVideoDevice(deviceId, previewEl, (result, error) => {
251
+ if (!error) {
252
+ scan$.next({ result });
253
+ return;
254
+ }
255
+ console.error(error);
256
+ const errorName = error.name;
257
+ // stream cannot stop on fails.
258
+ if (
259
+ // scan Failure - found nothing, no error
260
+ errorName === NotFoundException.name ||
261
+ // scan Error - found the QR but got error on decoding
262
+ errorName === ChecksumException.name ||
263
+ errorName === FormatException.name ||
264
+ error.message.includes('No MultiFormat Readers were able to detect the code.')) {
265
+ scan$.next({ error });
266
+ return;
267
+ }
268
+ // probably fatal error
269
+ scan$.error(error);
270
+ this.scannerControls?.stop();
271
+ this.scannerControls = undefined;
272
+ return;
273
+ });
274
+ this.scannerControls = {
275
+ ...ctrls,
276
+ stop() {
277
+ ctrls.stop();
278
+ scan$.complete();
279
+ }
280
+ };
281
+ }
282
+ catch (e) {
283
+ scan$.error(e);
284
+ this.scannerControls?.stop();
285
+ this.scannerControls = undefined;
286
+ }
287
+ return scan$.asObservable();
288
+ }
289
+ }
290
+ class UserMediaBaseService {
291
+ /**
292
+ *
293
+ */
294
+ constructor(_logService) {
295
+ this._logService = _logService;
296
+ this.hasNavigator = false;
297
+ this.isMediaDevicesSupported = false;
298
+ this._camerasSource = new BehaviorSubject([]);
299
+ this.cameras$ = this._camerasSource
300
+ .asObservable()
301
+ .pipe(shareReplay(1))
302
+ .pipe(filter((items) => items && items.length > 0));
303
+ this._permissionResponse = new Subject();
304
+ this.permissionResponse$ = this._permissionResponse.asObservable();
305
+ this._hasDevicesSource = new BehaviorSubject(false);
306
+ this.hasDevices$ = this._hasDevicesSource.asObservable().pipe(shareReplay(1));
307
+ this._permissionSource = new BehaviorSubject(false);
308
+ this.permission$ = this._permissionSource.asObservable().pipe();
309
+ this._camerasNotFoundSource = new Subject();
310
+ this.camerasNotFound$ = this._camerasNotFoundSource.asObservable().pipe(shareReplay(1));
311
+ this.hasNavigator = typeof navigator !== 'undefined';
312
+ this.isMediaDevicesSupported = this.hasNavigator && !!navigator.mediaDevices;
313
+ }
314
+ async updateVideoInputDevices() {
315
+ // permissions aren't needed to get devices, but to access them and their info
316
+ const devices = (await BrowserCodeReader.listVideoInputDevices()) || [];
317
+ const hasDevices = devices && devices.length > 0;
318
+ // stores discovered devices and updates information
319
+ this._hasDevicesSource.next(hasDevices);
320
+ this._camerasSource.next([...devices]);
321
+ if (!hasDevices) {
322
+ const err = {
323
+ code: DOMException.NOT_FOUND_ERR,
324
+ message: 'Device not found.'
325
+ };
326
+ this._camerasNotFoundSource.next(err);
327
+ }
328
+ return devices;
329
+ }
330
+ /**
331
+ * Gets and registers all cammeras.
332
+ */
333
+ async askForPermission() {
334
+ if (!this.hasNavigator) {
335
+ this._logService.error('user media', `Can't ask permission, navigator is not present.`);
336
+ this._setPermission(false);
337
+ }
338
+ if (!this.isMediaDevicesSupported) {
339
+ this._logService.error('user media', `Can't get user media, this is not supported.`);
340
+ this._setPermission(false);
341
+ }
342
+ let stream;
343
+ let permission = false;
344
+ try {
345
+ // Will try to ask for permission
346
+ stream = await this._getAnyVideoDevice();
347
+ permission = !!stream;
348
+ }
349
+ catch (err) {
350
+ this._handlePermissionException(err);
351
+ }
352
+ finally {
353
+ this.terminateStream(stream);
354
+ }
355
+ this._setPermission(permission);
356
+ return permission;
357
+ }
358
+ terminateStream(stream) {
359
+ if (stream) {
360
+ stream.getTracks().forEach((t) => t.stop());
361
+ }
362
+ stream = undefined;
363
+ }
364
+ _setPermission(permission) {
365
+ this._permissionSource.next(permission);
366
+ }
367
+ _getAnyVideoDevice() {
368
+ return navigator.mediaDevices.getUserMedia({ video: true });
369
+ }
370
+ _handlePermissionException(err) {
371
+ console.error('user media', 'Error when asking for permission.', err);
372
+ let permission = false;
373
+ switch (err.name) {
374
+ // usually caused by not secure origins
375
+ case 'NotSupportedError':
376
+ this._logService.warn('user media', err.message);
377
+ // could not claim
378
+ permission = false;
379
+ // can't check devices
380
+ this._hasDevicesSource.next(false);
381
+ break;
382
+ // user denied permission
383
+ case 'NotAllowedError':
384
+ this._logService.warn('user media', err.message);
385
+ // claimed and denied permission
386
+ permission = false;
387
+ // this means that input devices exists
388
+ this._hasDevicesSource.next(true);
389
+ break;
390
+ // the device has no attached input devices
391
+ case 'NotFoundError':
392
+ this._logService.warn('user media', err.message);
393
+ // no permissions claimed
394
+ permission = false;
395
+ // because there was no devices
396
+ this._hasDevicesSource.next(false);
397
+ // tells the listener about the error
398
+ this._camerasNotFoundSource.next(err);
399
+ break;
400
+ case 'NotReadableError':
401
+ this._logService.warn('user media', `Couldn't read the device(s)'s stream, it's probably in use by another app.`);
402
+ // no permissions claimed
403
+ permission = false;
404
+ // there are devices, which I couldn't use
405
+ this._hasDevicesSource.next(false);
406
+ // tells the listener about the error
407
+ this._camerasNotFoundSource.next(err);
408
+ break;
409
+ default:
410
+ this._logService.warn('user media', 'I was not able to define if I have permissions for camera or not.', err);
411
+ // unknown
412
+ permission = false;
413
+ // this.hasDevices.next(undefined;
414
+ break;
415
+ }
416
+ this._setPermission(permission);
417
+ // tells the listener about the error
418
+ this._permissionResponse.next(err);
419
+ return permission;
420
+ }
421
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserMediaBaseService, deps: [{ token: i1$1.LogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
422
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserMediaBaseService }); }
423
+ }
424
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserMediaBaseService, decorators: [{
425
+ type: Injectable
426
+ }], ctorParameters: () => [{ type: i1$1.LogService }] });
427
+ class WebBarcodeService {
428
+ constructor(userMediaService) {
429
+ this.userMediaService = userMediaService;
430
+ this._device = undefined;
431
+ this._codeReader = undefined;
432
+ this._hints = new Map();
433
+ this._scanErrorSource = new Subject();
434
+ this._scanFailureSource = new Subject();
435
+ this._scanCompleteSource = new Subject();
436
+ this._scanSuccessSource = new Subject();
437
+ this._options = {
438
+ delayBetweenScanAttempts: 50,
439
+ delayBetweenScanSuccess: 500
440
+ };
441
+ this.scanError$ = this._scanErrorSource.asObservable();
442
+ this.scanFailure$ = this._scanFailureSource.asObservable();
443
+ this.scanComplete$ = this._scanCompleteSource.asObservable();
444
+ this.scanSuccess$ = this._scanSuccessSource.asObservable().pipe(map((c) => c.getText()));
445
+ }
446
+ startScan(device, videoEl, options = this._options) {
447
+ // instantly stops the scan before changing devices
448
+ this.scanStop();
449
+ // correctly sets the new (or none) device
450
+ this._device = device || undefined;
451
+ this._videoEl = videoEl;
452
+ this._options = options;
453
+ if (!this._device) {
454
+ // cleans the video because user removed the device
455
+ BrowserCodeReader.cleanVideoSource(videoEl);
456
+ }
457
+ if (this._scanSubscription) {
458
+ throw new Error('There is already a scan proccess running.');
459
+ }
460
+ if (!this._device) {
461
+ throw new Error('No device defined, cannot start scan, please define a device.');
462
+ }
463
+ // if enabled, starts scanning
464
+ if (device) {
465
+ this.scanFromDevice(device.deviceId);
466
+ }
467
+ }
468
+ setFormat(input) {
469
+ if (typeof input === 'string') {
470
+ throw new Error('Invalid formats, make sure the [formats] input is a binding.');
471
+ }
472
+ // formats may be set from html template as BarcodeFormat or string array
473
+ const formats = input.map((f) => this.getBarcodeFormatOrFail(f));
474
+ const hints = this._hints;
475
+ // updates the hints
476
+ hints.set(DecodeHintType.POSSIBLE_FORMATS, formats);
477
+ // handles updating the codeReader
478
+ this._hints = hints;
479
+ }
480
+ scanStop() {
481
+ if (this._scanSubscription) {
482
+ this._codeReader?.getScannerControls().stop();
483
+ this._scanSubscription?.unsubscribe();
484
+ this._scanSubscription = undefined;
485
+ }
486
+ // this.torchCompatible.next(false);
487
+ }
488
+ destroy() {
489
+ // @note apenas necessario por enquanto causa da Torch
490
+ this.scanStop();
491
+ this._codeReader = undefined;
492
+ this._device = undefined;
493
+ }
494
+ getBarcodeFormatOrFail(format) {
495
+ return typeof format === 'string' ? BarcodeFormat[format.trim().toUpperCase()] : format;
496
+ }
497
+ async scanFromDevice(deviceId) {
498
+ const videoElement = this._videoEl;
499
+ const codeReader = this.getCodeReader();
500
+ const scanStream = await codeReader.scanFromDeviceObservable(deviceId, videoElement);
501
+ if (!scanStream) {
502
+ throw new Error('Undefined decoding stream, aborting.');
503
+ }
504
+ const next = (x) => this._onDecodeResult(x.result, x.error);
505
+ const error = (err) => this._onDecodeError(err);
506
+ const complete = () => { };
507
+ this._scanSubscription = scanStream.subscribe(next, error, complete);
508
+ if (this._scanSubscription.closed) {
509
+ return;
510
+ }
511
+ // const controls = codeReader.getScannerControls();
512
+ // const hasTorchControl = typeof controls.switchTorch !== 'undefined';
513
+ // this.torchCompatible.next(hasTorchControl);
514
+ }
515
+ /**
516
+ * Handles decode errors.
517
+ */
518
+ _onDecodeError(err) {
519
+ this._scanErrorSource.next(err);
520
+ // this.reset();
521
+ }
522
+ /**
523
+ * Handles decode results.
524
+ */
525
+ _onDecodeResult(result, error) {
526
+ if (result) {
527
+ this._scanSuccessSource.next(result);
528
+ }
529
+ else {
530
+ this._scanFailureSource.next(error);
531
+ }
532
+ if (result) {
533
+ this._scanCompleteSource.next(result);
534
+ }
535
+ }
536
+ getCodeReader() {
537
+ if (!this._codeReader) {
538
+ this._codeReader = new BrowserMultiFormatContinuousReader(this._hints, this._options);
539
+ }
540
+ return this._codeReader;
541
+ }
542
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WebBarcodeService, deps: [{ token: UserMediaBaseService }], target: i0.ɵɵFactoryTarget.Injectable }); }
543
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WebBarcodeService }); }
544
+ }
545
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WebBarcodeService, decorators: [{
546
+ type: Injectable
547
+ }], ctorParameters: () => [{ type: UserMediaBaseService }] });
548
+
549
+ class BarcodeReaderVideoComponent extends BaseComponent {
550
+ set selectedCamera(val) {
551
+ this._cameraSource.next(val);
552
+ }
553
+ constructor(_webBarcodeService) {
554
+ super();
555
+ this._webBarcodeService = _webBarcodeService;
556
+ this.previewFitMode = 'fill';
557
+ this.scanSuccess = new EventEmitter();
558
+ this._cameraSource = new BehaviorSubject(null);
559
+ }
560
+ ngOnInit() {
561
+ super.ngOnInit();
562
+ this._setFormat(this.allFormats);
563
+ this._cameraSource
564
+ .asObservable()
565
+ .pipe(takeUntil(this._onDestroy$), debounceTime$1(500), filter((camera) => camera != null), tap((camera) => {
566
+ this._stopScan();
567
+ this._startScan(camera);
568
+ }))
569
+ .subscribe();
570
+ this._webBarcodeService.scanSuccess$.subscribe((result) => {
571
+ this.scanSuccess.emit(result);
572
+ });
573
+ }
574
+ ngOnDestroy() {
575
+ super.ngOnDestroy();
576
+ this._webBarcodeService.scanStop();
577
+ }
578
+ _setFormat(formats) {
579
+ this._webBarcodeService.setFormat(formats);
580
+ }
581
+ _stopScan() {
582
+ this._webBarcodeService.scanStop();
583
+ }
584
+ _startScan(camera) {
585
+ if (this.videoElement) {
586
+ this._webBarcodeService.startScan(camera, this.videoElement.nativeElement);
587
+ }
588
+ }
589
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarcodeReaderVideoComponent, deps: [{ token: WebBarcodeService }], target: i0.ɵɵFactoryTarget.Component }); }
590
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BarcodeReaderVideoComponent, selector: "bdc-barcode-reader-video", inputs: { allFormats: "allFormats", previewFitMode: "previewFitMode", selectedCamera: "selectedCamera" }, outputs: { scanSuccess: "scanSuccess" }, viewQueries: [{ propertyName: "videoElement", first: true, predicate: ["videoElement"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<video #videoElement [style.object-fit]=\"previewFitMode\">\r\n <p>{{ 'BrowserNotSupport' | bbbTranslate }}</p>\r\n</video>\r\n", styles: [":host,video{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
591
+ }
592
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarcodeReaderVideoComponent, decorators: [{
593
+ type: Component,
594
+ args: [{ selector: 'bdc-barcode-reader-video', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<video #videoElement [style.object-fit]=\"previewFitMode\">\r\n <p>{{ 'BrowserNotSupport' | bbbTranslate }}</p>\r\n</video>\r\n", styles: [":host,video{display:block;width:100%;height:100%}\n"] }]
595
+ }], ctorParameters: () => [{ type: WebBarcodeService }], propDecorators: { allFormats: [{
596
+ type: Input
597
+ }], previewFitMode: [{
598
+ type: Input
599
+ }], scanSuccess: [{
600
+ type: Output
601
+ }], videoElement: [{
602
+ type: ViewChild,
603
+ args: ['videoElement', { static: true }]
604
+ }], selectedCamera: [{
605
+ type: Input
606
+ }] } });
607
+
608
+ class BarcodeReaderDialogComponent extends BaseComponent {
609
+ constructor(_dialogRef, _userMediaService) {
610
+ super();
611
+ this._dialogRef = _dialogRef;
612
+ this._userMediaService = _userMediaService;
613
+ this.value = '';
614
+ this.format = [BarcodeFormat.QR_CODE];
615
+ this.loading = true;
616
+ this._dialogRef.loading(true);
617
+ this.barcodeFormats = this._dialogRef.data?.barcodeFormats ?? [];
618
+ this.selectedFormat = this.barcodeFormats.length > 0 ? this.barcodeFormats[0] : BarcodeFormat.QR_CODE;
619
+ }
620
+ ngAfterViewInit() {
621
+ super.ngAfterViewInit();
622
+ this._initialize();
623
+ }
624
+ onDismiss() {
625
+ this._dialogRef.dismiss();
626
+ }
627
+ onOk() {
628
+ this._close();
629
+ }
630
+ onCameraChange(value) {
631
+ this.selectedCamera = value;
632
+ }
633
+ onFormatChange(format) {
634
+ this.selectedFormat = format;
635
+ }
636
+ onScanSuccess(result) {
637
+ this.value = result;
638
+ this._close();
639
+ }
640
+ onValueChanged(e) {
641
+ this.value = e.target.value;
642
+ }
643
+ _close() {
644
+ this._dialogRef.close(this.value);
645
+ }
646
+ _initialize() {
647
+ of(true)
648
+ .pipe(takeUntil(this._onDestroy$), exhaustMap(() => this._userMediaService.askForPermission()), concatMap((permission) => {
649
+ if (permission) {
650
+ return this._userMediaService.updateVideoInputDevices();
651
+ }
652
+ else {
653
+ return of(true);
654
+ }
655
+ }), finalize(() => {
656
+ this.loading = false;
657
+ this._dialogRef.loading(false);
658
+ }))
659
+ .subscribe();
660
+ this.hasDevice$ = this._userMediaService.hasDevices$;
661
+ this.permission$ = this._userMediaService.permission$;
662
+ this.cameras$ = this._userMediaService.cameras$.pipe(delay(0), tap((cameras) => {
663
+ this.selectedCamera = cameras.find((c) => c.label.indexOf('back') > -1) ?? cameras[0];
664
+ }));
665
+ }
666
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarcodeReaderDialogComponent, deps: [{ token: i2$2.DialogRef }, { token: UserMediaBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
667
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarcodeReaderDialogComponent, selector: "bdc-barcode-reader-dialog", usesInheritance: true, ngImport: i0, template: "<fd-dialog>\r\n <fd-dialog-header>\r\n <h1 fd-title>{{ 'BarcodeReader' | bbbTranslate }} {{ selectedCamera?.label }}</h1>\r\n <button fd-dialog-close-button (click)=\"onDismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n @if (!loading) { @if (permission$ | async) { @if (hasDevice$ | async) { @if (selectedCamera) {\r\n <bdc-barcode-reader-video\r\n [format]=\"format\"\r\n [selectedCamera]=\"selectedCamera\"\r\n [allFormats]=\"barcodeFormats\"\r\n (scanSuccess)=\"onScanSuccess($event)\"\r\n ></bdc-barcode-reader-video>\r\n } } @else {\r\n <p>BrowserNotSupport</p>\r\n } } @else {\r\n <p>NoPermission</p>\r\n } }\r\n </fd-dialog-body>\r\n <fd-dialog-footer>\r\n <ng-template fdkTemplate=\"footer\">\r\n @if (cameras$ | async; as cameraList) {\r\n <div fd-bar-left>\r\n @if (cameraList.length > 1) {\r\n <fd-select\r\n [placeholder]=\"'Camera' | bbbTranslate\"\r\n (valueChange)=\"onCameraChange($event)\"\r\n [value]=\"selectedCamera\"\r\n >\r\n @for (camera of cameraList; track camera) {\r\n <fd-option [value]=\"camera\">{{ camera.label }}</fd-option>\r\n }\r\n </fd-select>\r\n }\r\n </div>\r\n <div fd-bar-right></div>\r\n }\r\n </ng-template>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3$3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i4$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i4$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i4$2.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i4$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i4$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "directive", type: i10.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i7.SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "textOverflow", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "glyphFont", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i7.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: BarcodeReaderVideoComponent, selector: "bdc-barcode-reader-video", inputs: ["allFormats", "previewFitMode", "selectedCamera"], outputs: ["scanSuccess"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
668
+ }
669
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarcodeReaderDialogComponent, decorators: [{
670
+ type: Component,
671
+ args: [{ selector: 'bdc-barcode-reader-dialog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-dialog>\r\n <fd-dialog-header>\r\n <h1 fd-title>{{ 'BarcodeReader' | bbbTranslate }} {{ selectedCamera?.label }}</h1>\r\n <button fd-dialog-close-button (click)=\"onDismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n @if (!loading) { @if (permission$ | async) { @if (hasDevice$ | async) { @if (selectedCamera) {\r\n <bdc-barcode-reader-video\r\n [format]=\"format\"\r\n [selectedCamera]=\"selectedCamera\"\r\n [allFormats]=\"barcodeFormats\"\r\n (scanSuccess)=\"onScanSuccess($event)\"\r\n ></bdc-barcode-reader-video>\r\n } } @else {\r\n <p>BrowserNotSupport</p>\r\n } } @else {\r\n <p>NoPermission</p>\r\n } }\r\n </fd-dialog-body>\r\n <fd-dialog-footer>\r\n <ng-template fdkTemplate=\"footer\">\r\n @if (cameras$ | async; as cameraList) {\r\n <div fd-bar-left>\r\n @if (cameraList.length > 1) {\r\n <fd-select\r\n [placeholder]=\"'Camera' | bbbTranslate\"\r\n (valueChange)=\"onCameraChange($event)\"\r\n [value]=\"selectedCamera\"\r\n >\r\n @for (camera of cameraList; track camera) {\r\n <fd-option [value]=\"camera\">{{ camera.label }}</fd-option>\r\n }\r\n </fd-select>\r\n }\r\n </div>\r\n <div fd-bar-right></div>\r\n }\r\n </ng-template>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n" }]
672
+ }], ctorParameters: () => [{ type: i2$2.DialogRef }, { type: UserMediaBaseService }] });
673
+
674
+ class BarcodeReaderComponent extends UiMoInfoSubFormUiComponent {
675
+ constructor() {
676
+ super(...arguments);
677
+ this.size = 'large';
678
+ }
679
+ ngOnInit() {
680
+ super.ngOnInit();
681
+ this.barcodeValue = this.context.Setting.FormPanelSetting.Data.Mo.Value;
682
+ const format = this.context.Setting.CustomFieldInfo?.Format;
683
+ if (format) {
684
+ this.barcodeFormat = format
685
+ .split(',')
686
+ .filter((c) => c)
687
+ .map((c) => Number(c) - 1);
688
+ }
689
+ this.size = BarsaApi.Bw.GetWindowSize();
690
+ }
691
+ onOpenBarcodeReader() {
692
+ const data = { barcodeFormats: this.barcodeFormat };
693
+ const dialogRef = this._dialogService.open(BarcodeReaderDialogComponent, {
694
+ data,
695
+ fullScreen: this.isMobileDevice ? false : true,
696
+ verticalPadding: true,
697
+ responsivePadding: true,
698
+ mobile: this.isMobileDevice,
699
+ mobileOuterSpacing: true
700
+ });
701
+ dialogRef.afterClosed.pipe(takeUntil(this._onDestroy$)).subscribe((value) => {
702
+ if (value) {
703
+ this._setFieldValue(value);
704
+ }
705
+ });
706
+ }
707
+ onValueChange(e) {
708
+ this._setFieldValue(e.target.value);
709
+ }
710
+ _addFormControl(formControl) {
711
+ this.customFormPanelUi = formControl;
712
+ }
713
+ _setFieldValue(value) {
714
+ this.barcodeValue = value;
715
+ const valueCustomFieldUi = this.context.formControl._dictFieldUi.Value;
716
+ valueCustomFieldUi.value = value;
717
+ valueCustomFieldUi.fireEvent('change', value);
718
+ }
719
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarcodeReaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
720
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BarcodeReaderComponent, selector: "bdc-barcode-reader", usesInheritance: true, ngImport: i0, template: "<!-- <fd-input-group\r\n placement=\"after\"\r\n glyph=\"camera\"\r\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\r\n [button]=\"true\"\r\n ariaLabelledBy=\"fd-input-group-button-label-2\"\r\n (addOnButtonClicked)=\"onOpenBarcodeReader()\"\r\n (input)=\"onValueChange($event)\"\r\n>\r\n</fd-input-group> -->\r\n\r\n<fdp-input-group\r\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\r\n [value]=\"barcodeValue\"\r\n (input)=\"onValueChange($event)\"\r\n [name]=\"'barcode_' + id\"\r\n [disabled]=\"(disableOrReadonly$ | async)!!\"\r\n>\r\n <fdp-input-group-input type=\"text\"></fdp-input-group-input>\r\n <fdp-input-group-addon>\r\n <fdp-button glyph=\"camera\" (click)=\"onOpenBarcodeReader()\"></fdp-button>\r\n </fdp-input-group-addon>\r\n</fdp-input-group>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1$4.InputGroupComponent, selector: "fdp-input-group", inputs: ["value"] }, { kind: "component", type: i1$4.InputGroupAddonComponent, selector: "fdp-input-group-addon" }, { kind: "component", type: i1$4.InputGroupInputComponent, selector: "fdp-input-group-input", inputs: ["type"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
721
+ }
722
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarcodeReaderComponent, decorators: [{
723
+ type: Component,
724
+ args: [{ selector: 'bdc-barcode-reader', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<!-- <fd-input-group\r\n placement=\"after\"\r\n glyph=\"camera\"\r\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\r\n [button]=\"true\"\r\n ariaLabelledBy=\"fd-input-group-button-label-2\"\r\n (addOnButtonClicked)=\"onOpenBarcodeReader()\"\r\n (input)=\"onValueChange($event)\"\r\n>\r\n</fd-input-group> -->\r\n\r\n<fdp-input-group\r\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\r\n [value]=\"barcodeValue\"\r\n (input)=\"onValueChange($event)\"\r\n [name]=\"'barcode_' + id\"\r\n [disabled]=\"(disableOrReadonly$ | async)!!\"\r\n>\r\n <fdp-input-group-input type=\"text\"></fdp-input-group-input>\r\n <fdp-input-group-addon>\r\n <fdp-button glyph=\"camera\" (click)=\"onOpenBarcodeReader()\"></fdp-button>\r\n </fdp-input-group-addon>\r\n</fdp-input-group>\r\n" }]
725
+ }] });
726
+
727
+ class UiPersonPipe {
728
+ transform(value) {
729
+ let transform;
730
+ switch (value) {
731
+ case 'FirstName':
732
+ transform = 'نام';
733
+ break;
734
+ case 'LastName':
735
+ transform = 'نام خانوادگی';
736
+ break;
737
+ case 'NationalCode':
738
+ transform = 'کد ملی';
739
+ break;
740
+ case 'FatherName':
741
+ transform = 'نام پدر';
742
+ break;
743
+ case 'Birthplace':
744
+ transform = 'محل تولد';
745
+ break;
746
+ case 'Mobile':
747
+ transform = 'محل تولد';
748
+ break;
749
+ default:
750
+ transform = '';
751
+ break;
752
+ }
753
+ return transform;
754
+ }
755
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiPersonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
756
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiPersonPipe, name: "uiPerson" }); }
757
+ }
758
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiPersonPipe, decorators: [{
759
+ type: Pipe,
760
+ args: [{
761
+ name: 'uiPerson',
762
+ standalone: false
763
+ }]
764
+ }] });
765
+
766
+ class UiPersonComponent extends FieldBaseComponent {
767
+ constructor() {
768
+ super(...arguments);
769
+ this.searchResult = [];
770
+ this.personCollection = [
771
+ {
772
+ Id: 1,
773
+ FirstName: 'zahra',
774
+ LastName: 'darbandy',
775
+ FatherName: 'ali',
776
+ Birthplace: 'yazd',
777
+ NationalCode: '123456789'
778
+ },
779
+ {
780
+ Id: 2,
781
+ FirstName: 'ali',
782
+ LastName: 'kafdary',
783
+ FatherName: 'reza',
784
+ Birthplace: 'shiraz',
785
+ NationalCode: '754123659'
786
+ },
787
+ {
788
+ Id: 3,
789
+ FirstName: 'sara',
790
+ LastName: 'rezaee',
791
+ FatherName: 'ali',
792
+ Birthplace: 'tehran',
793
+ NationalCode: '123456789'
794
+ },
795
+ {
796
+ Id: 4,
797
+ FirstName: 'علی',
798
+ LastName: 'خزایی',
799
+ FatherName: 'کمال',
800
+ Birthplace: 'اصفهان',
801
+ NationalCode: '452145698'
802
+ },
803
+ {
804
+ Id: 5,
805
+ FirstName: 'vahid',
806
+ LastName: 'alipor',
807
+ FatherName: 'ali',
808
+ Birthplace: 'shiraz',
809
+ NationalCode: '756982456'
810
+ },
811
+ {
812
+ Id: 6,
813
+ FirstName: 'mohammad',
814
+ LastName: 'kamali',
815
+ FatherName: 'vahid',
816
+ Birthplace: 'ahvaz',
817
+ NationalCode: '32165897'
818
+ }
819
+ ];
820
+ this.onClose$ = new Subject();
821
+ }
822
+ ngOnInit() {
823
+ super.ngOnInit();
824
+ this.value = {
825
+ Id: 5,
826
+ FirstName: 'وحید',
827
+ LastName: 'علیپور',
828
+ FatherName: 'علی',
829
+ Birthplace: 'شیراز',
830
+ NationalCode: '756982456',
831
+ Mobile: '09175623898'
832
+ };
833
+ this.onClose$.pipe().subscribe(() => {
834
+ // console.log('closed');
835
+ });
836
+ }
837
+ ngAfterViewInit() {
838
+ super.ngAfterViewInit();
839
+ this.onClose$ = this.popoverBodyDom.onClose;
840
+ }
841
+ filter() {
842
+ this.searchResult = this.personCollection.filter((person) => person.FirstName.toLowerCase().includes(this.filterItems?.FirstName.toLowerCase() || '') &&
843
+ person.LastName.toLowerCase().includes(this.filterItems?.LastName.toLowerCase() || '') &&
844
+ person.NationalCode.toString().includes(this.filterItems?.NationalCode.toString() || ''));
845
+ }
846
+ select(person) {
847
+ this.selectedPerson = person;
848
+ }
849
+ confirm() {
850
+ this.value = this.selectedPerson ?? this.value;
851
+ this.valueChange.emit(this.value);
852
+ this.close();
853
+ }
854
+ close() {
855
+ this.dialogRef.close();
856
+ this.selectedPerson = null;
857
+ }
858
+ openDialog(template) {
859
+ this.resetTable();
860
+ this.dialogRef = this._dialogService.open(template, {
861
+ minHeight: '500px',
862
+ minWidth: '700px',
863
+ maxHeight: '1000px',
864
+ maxWidth: '1500px',
865
+ draggable: true,
866
+ resizable: true,
867
+ verticalPadding: false
868
+ });
869
+ this.dialogRef.loading(true);
870
+ setTimeout(() => this.dialogRef.loading(false), 500);
871
+ }
872
+ resetTable() {
873
+ this.filterItems = { FirstName: '', LastName: '', NationalCode: '' };
874
+ this.filter();
875
+ }
876
+ edit() { }
877
+ delete() {
878
+ this.value = null;
879
+ this.valueChange.emit(this.value);
880
+ }
881
+ openPopover() {
882
+ if (!this.isPopoverOpened && this.value) {
883
+ setTimeout(() => {
884
+ this.popoverDom.open();
885
+ }, 1000);
886
+ }
887
+ }
888
+ openChange(isOpen) {
889
+ this.isPopoverOpened = isOpen;
890
+ }
891
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiPersonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
892
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiPersonComponent, selector: "bdc-ui-person", viewQueries: [{ propertyName: "popoverDom", first: true, predicate: ["popover"], descendants: true }, { propertyName: "popoverBodyDom", first: true, predicate: PopoverBodyComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-popover [fillControlMode]=\"'equal'\" #popover (isOpenChange)=\"openChange($event)\">\r\n <fd-popover-control>\r\n <ul fd-list [compact]=\"true\">\r\n <li fd-list-item>\r\n <div fd-list-content>\r\n <div class=\"control-content\" (mouseover)=\"openPopover()\">\r\n <fd-icon glyph=\"person-placeholder\"></fd-icon>\r\n <div>\r\n <span>{{ value?.FirstName }}</span>\r\n </div>\r\n <div>\r\n <span>{{ value?.LastName }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n @if (value) {\r\n <button fd-button fdType=\"transparent\" glyph=\"user-edit\" (click)=\"edit()\"></button>\r\n <button fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"delete()\"></button>\r\n } @else {\r\n <button fd-button label=\"\u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062E\u0635\" fdType=\"transparent\" (click)=\"openDialog(dialogTemplate)\"></button>\r\n }\r\n </li>\r\n </ul>\r\n </fd-popover-control>\r\n @if (value) {\r\n <fd-popover-body #popoverBody>\r\n <div class=\"resize-quick-view\">\r\n <fd-card cardType=\"quickView\">\r\n <fd-card-content>\r\n <fd-quick-view [id]=\"value.id\">\r\n <fd-quick-view-subheader>\r\n <fd-icon glyph=\"user\"></fd-icon>\r\n <fd-quick-view-subheader-title> \u0645\u0634\u062E\u0635\u0627\u062A </fd-quick-view-subheader-title>\r\n </fd-quick-view-subheader>\r\n <fd-quick-view-group>\r\n @for (item of value | keyvalue; track item) {\r\n <fd-quick-view-group-item>\r\n @if (item.key !== 'Id') {\r\n <div class=\"popover-body-item\">\r\n <fd-quick-view-group-item-label>\r\n {{ (item.key | uiPerson) + ':' }}\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n @switch (item.value) { @case ( item.key === 'Mobile' || item.key === 'Phone' ?\r\n item.key : '' ) {\r\n <a [href]=\"'tel:' + item.value\" [innerText]=\"item.value\" fd-link></a>\r\n } @case ('Email') {\r\n <a [href]=\"'mailto:' + item.value\" [innerText]=\"item.value\" fd-link></a>\r\n } @default {\r\n <div [innerText]=\"item.value\"></div>\r\n } }\r\n </fd-quick-view-group-item-content>\r\n </div>\r\n }\r\n </fd-quick-view-group-item>\r\n }\r\n </fd-quick-view-group>\r\n </fd-quick-view>\r\n </fd-card-content>\r\n </fd-card>\r\n </div>\r\n </fd-popover-body>\r\n }\r\n</fd-popover>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 fd-title>\u062C\u0633\u062A\u062C\u0648\u06CC \u0634\u062E\u0635</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss('Close button')\"></button>\r\n </fd-dialog-header>\r\n\r\n <fd-dialog-body>\r\n <div class=\"filter\" (keydown.enter)=\"filter()\">\r\n <div fd-form-item>\r\n <label fd-form-label for=\"name\">\u0646\u0627\u0645</label>\r\n <input fd-form-control id=\"name\" [(ngModel)]=\"filterItems.FirstName\" />\r\n </div>\r\n <div fd-form-item>\r\n <label fd-form-label for=\"last-name\">\u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC</label>\r\n <input fd-form-control id=\"last-name\" [(ngModel)]=\"filterItems.LastName\" />\r\n </div>\r\n <div fd-form-item>\r\n <label fd-form-label for=\"national-code\">\u06A9\u062F\u0645\u0644\u06CC</label>\r\n <input fd-form-control id=\"national-code\" [(ngModel)]=\"filterItems.NationalCode\" />\r\n </div>\r\n\r\n <fd-button-bar fdkInitialFocus fdType=\"emphasized\" label=\"\u062C\u0633\u062A\u062C\u0648\" (click)=\"filter()\"> </fd-button-bar>\r\n </div>\r\n\r\n <table fd-table [noBorderX]=\"true\" [noBorderY]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>\u0646\u0627\u0645</th>\r\n <th fd-table-cell>\u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC</th>\r\n <th fd-table-cell>\u06A9\u062F \u0645\u0644\u06CC</th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (person of searchResult; track person) {\r\n <tr (click)=\"select(person)\" [class.selected]=\"selectedPerson?.Id === person?.Id\" fd-table-row>\r\n <td fd-table-cell>\r\n {{ person.FirstName }}\r\n </td>\r\n <td fd-table-cell>{{ person.LastName }}</td>\r\n <td fd-table-cell>{{ person.NationalCode }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdkTemplate=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar fdType=\"emphasized\" label=\"\u062A\u0627\u06CC\u06CC\u062F\" (click)=\"confirm()\"> </fd-button-bar>\r\n <fd-button-bar fdkInitialFocus label=\"\u0627\u0646\u0635\u0631\u0627\u0641\" (click)=\"close()\"> </fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;width:100%}::ng-deep .fd-dialog__body{padding:10px 15px!important}::ng-deep .fd-dialog__body .filter{display:flex;column-gap:5px;align-items:flex-end}::ng-deep .fd-dialog__body .filter fd-button-bar{margin-bottom:5px}::ng-deep .fd-dialog__body table{margin-top:25px}::ng-deep .fd-dialog__body table tr:hover{background-color:#f0f5f8}::ng-deep .fd-dialog__body table .selected{background-color:#d0e5ef}::ng-deep .popover-body-item{display:flex;column-gap:5px;align-items:center}::ng-deep .popover-body-item fd-quick-view-group-item-label .fd-form-label__wrapper{padding-left:0}fd-popover{flex:1}fd-popover fd-popover-body{width:300px}li{height:1.625rem!important;min-height:1.625rem!important;display:flex;margin-top:.1875rem!important;margin-bottom:.25rem!important;border:.0625rem solid #89919a!important;padding-left:0}li .fd-list__content{flex:1}li .fd-list__content .control-content{display:flex;column-gap:5px;margin-top:2px;width:fit-content}li .fd-list__content .control-content div{margin-top:2px}li .fd-list__content .control-content fd-icon{margin-left:5px}li .fd-list__content .control-content:hover>*{color:#062b42;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i3$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i3$4.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$3.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i4$3.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i6$1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i6$1.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i6$1.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "allowWrap", "inlineHelpLabel", "id"] }, { kind: "component", type: i2$3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i7$1.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i7$1.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i7$1.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "component", type: i4$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i4$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i4$2.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i4$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i4$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "directive", type: i10.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i10.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i7$2.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7$2.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i7$2.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i3$5.QuickViewComponent, selector: "fd-quick-view", inputs: ["id"] }, { kind: "component", type: i3$5.QuickViewSubheaderComponent, selector: "fd-quick-view-subheader" }, { kind: "component", type: i3$5.QuickViewSubheaderTitleComponent, selector: "fd-quick-view-subheader-title" }, { kind: "component", type: i3$5.QuickViewGroupComponent, selector: "fd-quick-view-group" }, { kind: "component", type: i3$5.QuickViewGroupItemComponent, selector: "fd-quick-view-group-item", inputs: ["id"] }, { kind: "component", type: i3$5.QuickViewGroupItemLabelComponent, selector: "fd-quick-view-group-item-label" }, { kind: "component", type: i3$5.QuickViewGroupItemContentComponent, selector: "fd-quick-view-group-item-content" }, { kind: "component", type: i3$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i3$6.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY", "nonInteractive"] }, { kind: "directive", type: i3$6.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i3$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i3$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: UiPersonPipe, name: "uiPerson" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
893
+ }
894
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiPersonComponent, decorators: [{
895
+ type: Component,
896
+ args: [{ selector: 'bdc-ui-person', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-popover [fillControlMode]=\"'equal'\" #popover (isOpenChange)=\"openChange($event)\">\r\n <fd-popover-control>\r\n <ul fd-list [compact]=\"true\">\r\n <li fd-list-item>\r\n <div fd-list-content>\r\n <div class=\"control-content\" (mouseover)=\"openPopover()\">\r\n <fd-icon glyph=\"person-placeholder\"></fd-icon>\r\n <div>\r\n <span>{{ value?.FirstName }}</span>\r\n </div>\r\n <div>\r\n <span>{{ value?.LastName }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n @if (value) {\r\n <button fd-button fdType=\"transparent\" glyph=\"user-edit\" (click)=\"edit()\"></button>\r\n <button fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"delete()\"></button>\r\n } @else {\r\n <button fd-button label=\"\u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062E\u0635\" fdType=\"transparent\" (click)=\"openDialog(dialogTemplate)\"></button>\r\n }\r\n </li>\r\n </ul>\r\n </fd-popover-control>\r\n @if (value) {\r\n <fd-popover-body #popoverBody>\r\n <div class=\"resize-quick-view\">\r\n <fd-card cardType=\"quickView\">\r\n <fd-card-content>\r\n <fd-quick-view [id]=\"value.id\">\r\n <fd-quick-view-subheader>\r\n <fd-icon glyph=\"user\"></fd-icon>\r\n <fd-quick-view-subheader-title> \u0645\u0634\u062E\u0635\u0627\u062A </fd-quick-view-subheader-title>\r\n </fd-quick-view-subheader>\r\n <fd-quick-view-group>\r\n @for (item of value | keyvalue; track item) {\r\n <fd-quick-view-group-item>\r\n @if (item.key !== 'Id') {\r\n <div class=\"popover-body-item\">\r\n <fd-quick-view-group-item-label>\r\n {{ (item.key | uiPerson) + ':' }}\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n @switch (item.value) { @case ( item.key === 'Mobile' || item.key === 'Phone' ?\r\n item.key : '' ) {\r\n <a [href]=\"'tel:' + item.value\" [innerText]=\"item.value\" fd-link></a>\r\n } @case ('Email') {\r\n <a [href]=\"'mailto:' + item.value\" [innerText]=\"item.value\" fd-link></a>\r\n } @default {\r\n <div [innerText]=\"item.value\"></div>\r\n } }\r\n </fd-quick-view-group-item-content>\r\n </div>\r\n }\r\n </fd-quick-view-group-item>\r\n }\r\n </fd-quick-view-group>\r\n </fd-quick-view>\r\n </fd-card-content>\r\n </fd-card>\r\n </div>\r\n </fd-popover-body>\r\n }\r\n</fd-popover>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 fd-title>\u062C\u0633\u062A\u062C\u0648\u06CC \u0634\u062E\u0635</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss('Close button')\"></button>\r\n </fd-dialog-header>\r\n\r\n <fd-dialog-body>\r\n <div class=\"filter\" (keydown.enter)=\"filter()\">\r\n <div fd-form-item>\r\n <label fd-form-label for=\"name\">\u0646\u0627\u0645</label>\r\n <input fd-form-control id=\"name\" [(ngModel)]=\"filterItems.FirstName\" />\r\n </div>\r\n <div fd-form-item>\r\n <label fd-form-label for=\"last-name\">\u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC</label>\r\n <input fd-form-control id=\"last-name\" [(ngModel)]=\"filterItems.LastName\" />\r\n </div>\r\n <div fd-form-item>\r\n <label fd-form-label for=\"national-code\">\u06A9\u062F\u0645\u0644\u06CC</label>\r\n <input fd-form-control id=\"national-code\" [(ngModel)]=\"filterItems.NationalCode\" />\r\n </div>\r\n\r\n <fd-button-bar fdkInitialFocus fdType=\"emphasized\" label=\"\u062C\u0633\u062A\u062C\u0648\" (click)=\"filter()\"> </fd-button-bar>\r\n </div>\r\n\r\n <table fd-table [noBorderX]=\"true\" [noBorderY]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>\u0646\u0627\u0645</th>\r\n <th fd-table-cell>\u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC</th>\r\n <th fd-table-cell>\u06A9\u062F \u0645\u0644\u06CC</th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (person of searchResult; track person) {\r\n <tr (click)=\"select(person)\" [class.selected]=\"selectedPerson?.Id === person?.Id\" fd-table-row>\r\n <td fd-table-cell>\r\n {{ person.FirstName }}\r\n </td>\r\n <td fd-table-cell>{{ person.LastName }}</td>\r\n <td fd-table-cell>{{ person.NationalCode }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdkTemplate=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar fdType=\"emphasized\" label=\"\u062A\u0627\u06CC\u06CC\u062F\" (click)=\"confirm()\"> </fd-button-bar>\r\n <fd-button-bar fdkInitialFocus label=\"\u0627\u0646\u0635\u0631\u0627\u0641\" (click)=\"close()\"> </fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;width:100%}::ng-deep .fd-dialog__body{padding:10px 15px!important}::ng-deep .fd-dialog__body .filter{display:flex;column-gap:5px;align-items:flex-end}::ng-deep .fd-dialog__body .filter fd-button-bar{margin-bottom:5px}::ng-deep .fd-dialog__body table{margin-top:25px}::ng-deep .fd-dialog__body table tr:hover{background-color:#f0f5f8}::ng-deep .fd-dialog__body table .selected{background-color:#d0e5ef}::ng-deep .popover-body-item{display:flex;column-gap:5px;align-items:center}::ng-deep .popover-body-item fd-quick-view-group-item-label .fd-form-label__wrapper{padding-left:0}fd-popover{flex:1}fd-popover fd-popover-body{width:300px}li{height:1.625rem!important;min-height:1.625rem!important;display:flex;margin-top:.1875rem!important;margin-bottom:.25rem!important;border:.0625rem solid #89919a!important;padding-left:0}li .fd-list__content{flex:1}li .fd-list__content .control-content{display:flex;column-gap:5px;margin-top:2px;width:fit-content}li .fd-list__content .control-content div{margin-top:2px}li .fd-list__content .control-content fd-icon{margin-left:5px}li .fd-list__content .control-content:hover>*{color:#062b42;font-weight:700}\n"] }]
897
+ }], propDecorators: { popoverDom: [{
898
+ type: ViewChild,
899
+ args: ['popover']
900
+ }], popoverBodyDom: [{
901
+ type: ViewChild,
902
+ args: [PopoverBodyComponent]
903
+ }] } });
904
+
905
+ class LoginSocialConncetionsComponent extends ReportBaseComponent {
906
+ constructor(_ulvMainService, _portalService, reportValuePipe) {
907
+ super(_portalService, _ulvMainService);
908
+ this._ulvMainService = _ulvMainService;
909
+ this._portalService = _portalService;
910
+ this.reportValuePipe = reportValuePipe;
911
+ this.rtl = BarsaApi.LoginFormData.IsRtl;
912
+ }
913
+ onClick(mo) {
914
+ const provider = this.reportValuePipe.transform('Name', mo, this.allColumns, true);
915
+ const returnUrl = encodeURIComponent(window.location.href);
916
+ BarsaApi.Bw.NavigateTo(`/api/openId/signin?provider=${provider}&returnUrl=${returnUrl}`);
917
+ }
918
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginSocialConncetionsComponent, deps: [{ token: i1$1.UlvMainService }, { token: i1$1.PortalService }, { token: i1$1.MoReportValuePipe }], target: i0.ɵɵFactoryTarget.Component }); }
919
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LoginSocialConncetionsComponent, selector: "bdc-login-social-conncetions", host: { properties: { "attr.rtl": "this.rtl" } }, usesInheritance: true, ngImport: i0, template: "@for (mo of moDataList$ | async; track mo) {\r\n<button\r\n fd-button\r\n [label]=\"'Display Text' | rval: mo:allColumns\"\r\n [fdType]=\"'FdType' | rval: mo:allColumns:true\"\r\n (click)=\"onClick(mo)\"\r\n>\r\n <img\r\n style=\"max-width: 28px\"\r\n [src]=\"('Logo' | rval: mo:allColumns)?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n />\r\n</button>\r\n}\r\n", styles: [":host{display:flex;flex-wrap:wrap;width:100%;justify-content:stretch;margin-top:1rem;column-gap:5px;row-gap:5px}button{flex-grow:1;flex-direction:row-reverse}button img{padding:5px}fd-toolbar{width:100%}\n"], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
920
+ }
921
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginSocialConncetionsComponent, decorators: [{
922
+ type: Component,
923
+ args: [{ selector: 'bdc-login-social-conncetions', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@for (mo of moDataList$ | async; track mo) {\r\n<button\r\n fd-button\r\n [label]=\"'Display Text' | rval: mo:allColumns\"\r\n [fdType]=\"'FdType' | rval: mo:allColumns:true\"\r\n (click)=\"onClick(mo)\"\r\n>\r\n <img\r\n style=\"max-width: 28px\"\r\n [src]=\"('Logo' | rval: mo:allColumns)?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n />\r\n</button>\r\n}\r\n", styles: [":host{display:flex;flex-wrap:wrap;width:100%;justify-content:stretch;margin-top:1rem;column-gap:5px;row-gap:5px}button{flex-grow:1;flex-direction:row-reverse}button img{padding:5px}fd-toolbar{width:100%}\n"] }]
924
+ }], ctorParameters: () => [{ type: i1$1.UlvMainService }, { type: i1$1.PortalService }, { type: i1$1.MoReportValuePipe }], propDecorators: { rtl: [{
925
+ type: HostBinding,
926
+ args: ['attr.rtl']
927
+ }] } });
928
+
929
+ class LoginFormComponent extends FormBaseComponent {
930
+ constructor() {
931
+ super(...arguments);
932
+ this._desktopmode = !getDeviceIsMobile();
933
+ this.onKeyEnter = (_) => {
934
+ const layoutItem = this._controlUiPipe.transform(' ورود', this.layout94);
935
+ if (layoutItem) {
936
+ layoutItem.FieldUi.fireEvent('click', layoutItem.FieldUi);
937
+ }
938
+ };
939
+ }
940
+ ngOnInit() {
941
+ this._activatedRoute.queryParams.pipe(takeUntil(this._onDestroy$)).subscribe((params) => {
942
+ BarsaApi.Bw.SetCultureByDisplayName(params.culture);
943
+ });
944
+ const root = document.documentElement;
945
+ root.style.setProperty('--absolute-page-top', '0px');
946
+ super.ngOnInit();
947
+ this.layout94$.subscribe((layout94) => {
948
+ this.layout94 = layout94;
949
+ });
950
+ this.size$ = this._portalService.deviceSize$.pipe(map((deviceSize) => {
951
+ switch (deviceSize) {
952
+ case 's':
953
+ return 'sm';
954
+ case 'm':
955
+ return 'md';
956
+ default:
957
+ return 'xl';
958
+ }
959
+ }));
960
+ }
961
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
962
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LoginFormComponent, selector: "bdc-login-form", host: { listeners: { "keydown.enter": "onKeyEnter($event)" }, properties: { "class.desktopmode": "this._desktopmode" } }, providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "@if (mo$ | async; as mo) { @if (mo.IsLogging) {\r\n<bsu-mask></bsu-mask>\r\n} @if ((size$ | async) === 'sm') {\r\n<fd-layout-grid [class.mobile]=\"isMobile\">\r\n <div [fdLayoutGridCol]=\"1\"></div>\r\n <div [fdLayoutGridCol]=\"10\">\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n [class.desktopMode]=\"!(isMobile === true)\"\r\n ></bsu-ly-layout-container-of-root>\r\n </div>\r\n <div [fdLayoutGridCol]=\"1\"></div>\r\n</fd-layout-grid>\r\n} @else {\r\n<fd-dynamic-side-content [size]=\"(size$ | async)!!\">\r\n <fd-dynamic-side-content-side>\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n ></bsu-ly-layout-container-of-root>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main>\r\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\r\n <bsu-layout-control\r\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\r\n [config]=\"layoutConfig\"\r\n [showLabel]=\"false\"\r\n [inlineEdit]=\"true\"\r\n ></bsu-layout-control>\r\n </ng-container> -->\r\n @if ('\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94; as layoutConfig) {\r\n <div\r\n id=\"bgLogin\"\r\n [style.backgroundImage]=\"\r\n 'url(' +\r\n (mo.Background?.FileId | picFieldSrc: 'PictureFileInfo':null:layoutConfig.FieldUi.Setting.FieldDefId) +\r\n ')'\r\n \"\r\n ></div>\r\n }\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n} }\r\n", styles: ["@charset \"UTF-8\";:host{display:block;background-color:#fff}:host ::ng-deep bsu-ly-simple-label{text-align:center}:host ::ng-deep bsu-ly-simple-label:nth-of-type(1){margin-top:15px}:host ::ng-deep bsu-ui-picture-file{text-align:center}:host ::ng-deep .wrap-content>.container-field{max-width:100%!important}fd-dynamic-side-content{min-height:100vh}fd-dynamic-side-content-side{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}bsu-ly-layout-container-of-root{padding:0 1rem;box-sizing:border-box;display:flex;align-items:center;height:100%}#bgLogin{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}@media (max-width: 599px){:host ::ng-deep bsu-layout-control{min-width:auto!important}:host ::ng-deep bsu-ly-layout-container-of-root{padding:0}}@media (max-height: 670px){:host.desktopmode bsu-ly-layout-container-of-root{padding:0}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-ly-empty-space{display:none}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-layout-control[caption=\\644\\648\\6af\\648]{display:none}}fd-layout-grid.mobile{overflow:auto;height:100vh}\n"], dependencies: [{ kind: "component", type: i2$1.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i2$1.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i4$1.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i4$1.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i4$1.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "component", type: i3$7.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i3$7.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
963
+ }
964
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginFormComponent, decorators: [{
965
+ type: Component,
966
+ args: [{ selector: 'bdc-login-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], standalone: false, template: "@if (mo$ | async; as mo) { @if (mo.IsLogging) {\r\n<bsu-mask></bsu-mask>\r\n} @if ((size$ | async) === 'sm') {\r\n<fd-layout-grid [class.mobile]=\"isMobile\">\r\n <div [fdLayoutGridCol]=\"1\"></div>\r\n <div [fdLayoutGridCol]=\"10\">\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n [class.desktopMode]=\"!(isMobile === true)\"\r\n ></bsu-ly-layout-container-of-root>\r\n </div>\r\n <div [fdLayoutGridCol]=\"1\"></div>\r\n</fd-layout-grid>\r\n} @else {\r\n<fd-dynamic-side-content [size]=\"(size$ | async)!!\">\r\n <fd-dynamic-side-content-side>\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n ></bsu-ly-layout-container-of-root>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main>\r\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\r\n <bsu-layout-control\r\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\r\n [config]=\"layoutConfig\"\r\n [showLabel]=\"false\"\r\n [inlineEdit]=\"true\"\r\n ></bsu-layout-control>\r\n </ng-container> -->\r\n @if ('\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94; as layoutConfig) {\r\n <div\r\n id=\"bgLogin\"\r\n [style.backgroundImage]=\"\r\n 'url(' +\r\n (mo.Background?.FileId | picFieldSrc: 'PictureFileInfo':null:layoutConfig.FieldUi.Setting.FieldDefId) +\r\n ')'\r\n \"\r\n ></div>\r\n }\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n} }\r\n", styles: ["@charset \"UTF-8\";:host{display:block;background-color:#fff}:host ::ng-deep bsu-ly-simple-label{text-align:center}:host ::ng-deep bsu-ly-simple-label:nth-of-type(1){margin-top:15px}:host ::ng-deep bsu-ui-picture-file{text-align:center}:host ::ng-deep .wrap-content>.container-field{max-width:100%!important}fd-dynamic-side-content{min-height:100vh}fd-dynamic-side-content-side{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}bsu-ly-layout-container-of-root{padding:0 1rem;box-sizing:border-box;display:flex;align-items:center;height:100%}#bgLogin{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}@media (max-width: 599px){:host ::ng-deep bsu-layout-control{min-width:auto!important}:host ::ng-deep bsu-ly-layout-container-of-root{padding:0}}@media (max-height: 670px){:host.desktopmode bsu-ly-layout-container-of-root{padding:0}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-ly-empty-space{display:none}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-layout-control[caption=\\644\\648\\6af\\648]{display:none}}fd-layout-grid.mobile{overflow:auto;height:100vh}\n"] }]
967
+ }], propDecorators: { _desktopmode: [{
968
+ type: HostBinding,
969
+ args: ['class.desktopmode']
970
+ }], onKeyEnter: [{
971
+ type: HostListener,
972
+ args: ['keydown.enter', ['$event']]
973
+ }] } });
974
+
975
+ class ServiceDeskHeaderComponent extends TilesViewerContainerComponent {
976
+ constructor(_portalService, _tilesService, _tilesViewerService, _renderer, _viewportScroller, _cdr) {
977
+ super(_portalService, _tilesService, _tilesViewerService);
978
+ this._portalService = _portalService;
979
+ this._tilesService = _tilesService;
980
+ this._tilesViewerService = _tilesViewerService;
981
+ this._renderer = _renderer;
982
+ this._viewportScroller = _viewportScroller;
983
+ this._cdr = _cdr;
984
+ this.selectedTabIndex = 0;
985
+ this.heightOfSpaceHolder = 88;
986
+ this.searchTerm = '';
987
+ this._enableScroll = false;
988
+ this._stickyTopPosition = 66;
989
+ this.observerList = [];
990
+ this.appGroups = [];
991
+ const root = document.documentElement;
992
+ root.style.setProperty('--absolute-page-top', this._stickyTopPosition + 'px');
993
+ }
994
+ ngOnInit() {
995
+ super.ngOnInit();
996
+ this._portalService.searchTerm$.pipe(takeUntil$1(this._onDestroy$)).subscribe((term) => {
997
+ this.searchTerm = term;
998
+ this._cdr.detectChanges();
999
+ });
1000
+ this.appTileGroups$.subscribe((appTileGroups) => {
1001
+ appTileGroups.forEach((c) => this._tilesViewerService.loadAppGroup(c));
1002
+ this.appGroups = appTileGroups;
1003
+ });
1004
+ this._renderer.setStyle(this.navHolder.nativeElement, 'top', this._stickyTopPosition + 'px');
1005
+ this.setGridTemplateRows(this.heightOfSpaceHolder);
1006
+ this.deviceSize$ = this._portalService.deviceSize$;
1007
+ this._portalService.deviceSize$.subscribe((c) => {
1008
+ let newHeight = this.heightOfSpaceHolder;
1009
+ this.tabSize = c;
1010
+ if (c === 's') {
1011
+ newHeight = 88;
1012
+ }
1013
+ else if (c === 'm') {
1014
+ newHeight = 220;
1015
+ }
1016
+ else if (c === 'l') {
1017
+ newHeight = 250;
1018
+ }
1019
+ else {
1020
+ newHeight = 325;
1021
+ }
1022
+ newHeight = 88;
1023
+ if (this.heightOfSpaceHolder !== newHeight) {
1024
+ this.heightOfSpaceHolder = newHeight;
1025
+ this.setGridTemplateRows(newHeight);
1026
+ }
1027
+ });
1028
+ }
1029
+ ngAfterViewInit() {
1030
+ const deviceSize = this._portalService.deviceSize;
1031
+ let stickyTopPosition = 20;
1032
+ if (deviceSize === 's') {
1033
+ stickyTopPosition = 60;
1034
+ }
1035
+ this._stickyDom(this.aboveSearch.nativeElement, this.searchHolder.nativeElement, -stickyTopPosition, 'sticky');
1036
+ this._stickyDom(this.aboveContent.nativeElement, this.navHolder.nativeElement, -this._stickyTopPosition, 'sticky');
1037
+ this._stickyDom(this.aboveContent.nativeElement, this.bgOuterHolder.nativeElement, -this._stickyTopPosition, 'sticky', () => {
1038
+ this._renderer.setStyle(this.bgOuterHolder.nativeElement, 'height', this._stickyTopPosition + 'px');
1039
+ }, () => {
1040
+ this._renderer.setStyle(this.bgOuterHolder.nativeElement, 'height', '100%');
1041
+ });
1042
+ this._stickyDom(this.aboveSearch.nativeElement, this.contentAndNav.nativeElement, -stickyTopPosition, 'navAndContent_tb', () => {
1043
+ this._renderer.removeAttribute(this.contentAndNav.nativeElement, 'first');
1044
+ }, () => {
1045
+ this._renderer.setAttribute(this.contentAndNav.nativeElement, 'first', 'true');
1046
+ });
1047
+ setTimeout(() => {
1048
+ this._enableScroll = true;
1049
+ }, 1000);
1050
+ this._portalService.navigationStart$.pipe(takeUntil$1(this._onDestroy$)).subscribe((event) => {
1051
+ this._lastScrollPos = window.scrollY;
1052
+ if (event === null) {
1053
+ return;
1054
+ }
1055
+ if (event?.url !== '/servicedesk' && event?.url !== '/' && !this._disableIntersection) {
1056
+ this.prepareForm();
1057
+ }
1058
+ });
1059
+ this._portalService.navigationEnd$.pipe(takeUntil$1(this._onDestroy$)).subscribe((event) => {
1060
+ if (event !== null &&
1061
+ (event?.url === '/servicedesk' || event?.url === '/' || event.urlAfterRedirects === '/servicedesk')) {
1062
+ this.unPrepareForm();
1063
+ }
1064
+ });
1065
+ }
1066
+ onSearchSubmit() {
1067
+ this._router.navigateByUrl('servicedesk/search?term=' + this.searchTerm);
1068
+ // var searchMo = BarsaApi.Bw.RunBlMethod('GetSearchMo', this.searchTerm);
1069
+ // BarsaApi.Bw.Form.Show({ Mo: searchMo });
1070
+ }
1071
+ prepareForm() {
1072
+ this._disableIntersection = true;
1073
+ this._cdr.detach();
1074
+ this.disconnectIntersctionObserverList();
1075
+ this._renderer.addClass(this.searchHolder.nativeElement, 'sticky');
1076
+ this._renderer.addClass(this.contentAndNav.nativeElement, 'hide');
1077
+ this.visibleContent(false);
1078
+ const flags = RendererStyleFlags2.Important;
1079
+ this._renderer.setStyle(document.body, 'overflow', 'hidden', flags);
1080
+ this.scrollToTop();
1081
+ }
1082
+ unPrepareForm() {
1083
+ // this.setHeightSearchHolder(this.heightOfSpaceHolder);
1084
+ this.visibleContent(true);
1085
+ // this._renderer.removeClass(this.searchHolder.nativeElement, 'sticky');
1086
+ this._renderer.removeClass(this.searchHolder.nativeElement, 'hide');
1087
+ this._renderer.removeClass(this.contentAndNav.nativeElement, 'hide');
1088
+ const flags = RendererStyleFlags2.Important;
1089
+ this._renderer.setStyle(document.body, 'overflow', 'auto', flags);
1090
+ this.scrollToTop();
1091
+ this._cdr.markForCheck();
1092
+ this._cdr.reattach();
1093
+ this._disableIntersection = false;
1094
+ this.connectIntersctionObserverList();
1095
+ }
1096
+ setHeightSearchHolder(height) {
1097
+ this._renderer.setStyle(this.headerSpaceHolder.nativeElement, 'height', `${height}px`);
1098
+ }
1099
+ visibleContent(visible) {
1100
+ this._renderer.setStyle(this.contentAndNav.nativeElement, 'display', visible ? 'flex' : 'none');
1101
+ }
1102
+ setGridTemplateRows(height) {
1103
+ this._renderer.setStyle(this.headerGrid.nativeElement, 'grid-template-rows', `minmax(78px, 15%) 46px 32px 1fr auto 12%; height:${height}px`);
1104
+ // this._renderer.setStyle(this.headerGrid.nativeElement, 'background-color', `red`);
1105
+ this._renderer.setStyle(this.headerSpaceHolder.nativeElement, 'height', `${height}px`);
1106
+ }
1107
+ onSelectedTabChange3(selectedTab) {
1108
+ const tablistCmp = selectedTab._tabsComponent;
1109
+ if (tablistCmp) {
1110
+ tablistCmp._disableScrollSpy = true;
1111
+ }
1112
+ this.scrollToTop();
1113
+ if (selectedTab.id === '0') {
1114
+ return;
1115
+ }
1116
+ const elementRefOfselectedTileGroup = this.tilesViewerGroupElList.get(Number(selectedTab.id))?.nativeElement;
1117
+ elementRefOfselectedTileGroup.scrollIntoView({
1118
+ block: 'start'
1119
+ });
1120
+ }
1121
+ scrollToLastPos() {
1122
+ this._viewportScroller.scrollToPosition([0, this._lastScrollPos]);
1123
+ }
1124
+ scrollToTop() {
1125
+ if (this._enableScroll) {
1126
+ this._viewportScroller.scrollToPosition([0, this.heightOfSpaceHolder - this._stickyTopPosition]);
1127
+ }
1128
+ }
1129
+ disconnectIntersctionObserverList() {
1130
+ this.observerList.forEach((c) => c.observer.disconnect());
1131
+ }
1132
+ connectIntersctionObserverList() {
1133
+ this.observerList.forEach((c) => c.observer.observe(c.el));
1134
+ }
1135
+ _stickyDom(above, holder, marginTop, className, visibleCallback, hiddenCallBack) {
1136
+ const handler = (entries) => {
1137
+ if (this._disableIntersection) {
1138
+ return;
1139
+ }
1140
+ if (!entries[0].isIntersecting) {
1141
+ this._renderer.addClass(holder, className);
1142
+ if (typeof visibleCallback === 'function') {
1143
+ visibleCallback();
1144
+ }
1145
+ }
1146
+ else {
1147
+ this._renderer.removeClass(holder, className);
1148
+ if (typeof hiddenCallBack === 'function') {
1149
+ hiddenCallBack();
1150
+ }
1151
+ }
1152
+ };
1153
+ const options = {
1154
+ rootMargin: `${marginTop}px 0px 0px 0px`,
1155
+ threshold: 0.1
1156
+ };
1157
+ const observer = new window.IntersectionObserver(handler, options);
1158
+ observer.observe(above);
1159
+ this.observerList.push({ el: above, observer });
1160
+ }
1161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceDeskHeaderComponent, deps: [{ token: i1$1.PortalService }, { token: i2$4.TilesService }, { token: i2$4.TilesViewerService }, { token: i0.Renderer2 }, { token: i1$3.ViewportScroller }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ServiceDeskHeaderComponent, selector: "bdc-service-desk-header", inputs: { settings: "settings" }, providers: [TilesViewerService], viewQueries: [{ propertyName: "headerSpaceHolder", first: true, predicate: ["headerSpaceHolder"], descendants: true, static: true }, { propertyName: "headerGrid", first: true, predicate: ["headerGrid"], descendants: true, static: true }, { propertyName: "aboveSearch", first: true, predicate: ["aboveSearch"], descendants: true, static: true }, { propertyName: "searchHolder", first: true, predicate: ["searchHolder"], descendants: true, static: true }, { propertyName: "navHolder", first: true, predicate: ["navHolder"], descendants: true, static: true }, { propertyName: "aboveContent", first: true, predicate: ["aboveContent"], descendants: true, static: true }, { propertyName: "bgOuterHolder", first: true, predicate: ["bgOuterHolder"], descendants: true, static: true }, { propertyName: "contentAndNav", first: true, predicate: ["contentAndNav"], descendants: true, static: true }, { propertyName: "tilesViewerGroupElList", predicate: TilesViewerGroupComponent, descendants: true, read: ElementRef }, { propertyName: "tabPanelComponents", predicate: TabPanelComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div id=\"headerGrid\" style=\"grid-template-rows: minmax(1px, 15%) 48px 32px 1fr auto 12%; height: 148px\" #headerGrid>\r\n <div class=\"companyLogoHolder_aboveSearch\" #aboveSearch></div>\r\n <div id=\"searchHolder\" style=\"grid-row: 2\" #searchHolder>\r\n <fd-input-group\r\n [style.display]=\"settings?.HideSearch ? 'none' : null\"\r\n class=\"input-search\"\r\n contentDensity=\"cozy\"\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n >\r\n </fd-input-group>\r\n </div>\r\n</div>\r\n<div id=\"headerSpaceHolder\" #headerSpaceHolder>\r\n <div id=\"bgOuterHolder\" #bgOuterHolder>\r\n <div id=\"bgInnerHolder\" style=\"height: 100vh\">\r\n <div class=\"backgroundImage\" id=\"backgroundImage\">\r\n <img class=\"picture\" src=\"/assets/back.jpg\" loading=\"lazy\" />\r\n <span id=\"backgroundImageOverlay\" class=\"overlay\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div id=\"contentHolderAndNav\" first=\"true\" #contentAndNav fillEmptySpace [setMinHeight]=\"true\">\r\n <div class=\"aboveContent\" #aboveContent></div>\r\n <div id=\"contentHolder\">\r\n <div class=\"nav\" #navHolder>\r\n <div class=\"nav-container\">\r\n <ng-container\r\n *ngTemplateOutlet=\"renderTabs; context: { $implicit: (appTileGroups$ | async)!! }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"nav_surrogate\" style=\"height: 10px\"></div>\r\n <div class=\"content-feed\">\r\n <ng-container\r\n *ngTemplateOutlet=\"renderGroups; context: { $implicit: (appTileGroups$ | async)!! }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #renderTabs let-appTileGroups>\r\n <fd-tab-list\r\n [size]=\"tabSize\"\r\n [collapseOverflow]=\"tabSize === 's' || appTileGroups.length > 5\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n (selectedTabChange)=\"onSelectedTabChange3($event)\"\r\n >\r\n @for (appTileGroup of appTileGroups; track appTileGroup; let i = $index) {\r\n <fd-tab [id]=\"'' + i\" [title]=\"appTileGroup.navigatorTitle\"> </fd-tab>\r\n }\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template #renderGroups let-appTileGroups>\r\n @for (appTileGroup of appTileGroups; track appTileGroup; let i = $index) {\r\n <bt-tiles-viewer-group\r\n [class]=\"deviceSize$ | async\"\r\n [attr.index]=\"i\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"false\"\r\n [stackContent]=\"true\"\r\n [isAppTileSubGroup]=\"false\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n ></bt-tiles-viewer-group>\r\n }\r\n</ng-template>\r\n", styles: ["html{scroll-behavior:smooth}body{overflow-y:auto!important;overflow-x:hidden!important}bt-shellbar{position:fixed!important;top:10px;width:100%;z-index:6}bt-shellbar .fd-shellbar{background:transparent;box-shadow:none}bt-shellbar .fd-shellbar__product{display:none}bt-shellbar button{background-color:transparent}bdc-service-desk-header{display:block}bdc-service-desk-header #headerGrid{display:grid;justify-items:center;position:absolute;top:0;width:100%}bdc-service-desk-header #headerSpaceHolder{transition:height .3s ease-out 0s;width:100%}bdc-service-desk-header #searchHolder{z-index:302}bdc-service-desk-header #searchHolder.sticky{position:fixed;top:15px;will-change:transform}bdc-service-desk-header #contentHolderAndNav{align-items:center;background:#00000051;display:flex;flex-direction:column;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__head .fd-title{color:#fff!important}bdc-service-desk-header #contentHolderAndNav.navAndContent_tb{background:#f7f7f7}bdc-service-desk-header #contentHolder{align-items:center;display:flex;flex-direction:column}bdc-service-desk-header .nav-container{align-items:center;display:flex;gap:5px;width:100%}bdc-service-desk-header .nav-container fd-tab-list{width:100%}bdc-service-desk-header .nav_surrogate{height:1px}bdc-service-desk-header .nav{display:flex;height:50px;justify-content:center;z-index:500;width:100%}bdc-service-desk-header .nav ul{height:auto;overflow:hidden;list-style:none;padding-inline:0px 15px;margin:0;display:inline-flex;align-items:center}bdc-service-desk-header .nav ul li{display:inline;list-style:none;padding:0 16px;color:#fff}bdc-service-desk-header .nav.sticky{background:#f7f7f7;position:fixed;will-change:transform}bt-tiles-viewer-group:first-child fd-layout-panel-header{display:none!important}bt-tiles-viewer-group:first-child .fd-panel__content{border-bottom:none}.content-feed{padding:0}.input-search{display:block}@media (max-width: 480px){.nav-container,.content-feed{width:100%}.nav-container .fd-tabs,.content-feed .fd-tabs{padding:0}#searchHolder.sticky{display:none}#searchHolder .input-search{width:250px}}@media (min-width: 481px) and (max-width: 935px){#searchHolder .input-search{width:360px}}@media (min-width: 936px) and (max-width: 1250px){#searchHolder .input-search{width:480px}}@media (min-width: 1251px){#searchHolder .input-search{width:690px}}@media (max-width: 1180){div#searchHolder.sticky .input-search{width:280px!important}}@media (min-width: 480px) and (max-width: 935px){.nav-container,.content-feed{width:860px}}@media (min-width: 1244px){.nav-container,.content-feed{width:1250px}#searchHolder.sticky .input-search{width:690px}}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], exportAs: ["fillEmptySpace"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$4.TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "edit", "rtl", "isAppTileSubGroup", "deviceSize"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "component", type: i2.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i1$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "selectedTabIndexChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i1$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1163
+ }
1164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceDeskHeaderComponent, decorators: [{
1165
+ type: Component,
1166
+ args: [{ selector: 'bdc-service-desk-header', providers: [TilesViewerService], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: "<div id=\"headerGrid\" style=\"grid-template-rows: minmax(1px, 15%) 48px 32px 1fr auto 12%; height: 148px\" #headerGrid>\r\n <div class=\"companyLogoHolder_aboveSearch\" #aboveSearch></div>\r\n <div id=\"searchHolder\" style=\"grid-row: 2\" #searchHolder>\r\n <fd-input-group\r\n [style.display]=\"settings?.HideSearch ? 'none' : null\"\r\n class=\"input-search\"\r\n contentDensity=\"cozy\"\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n >\r\n </fd-input-group>\r\n </div>\r\n</div>\r\n<div id=\"headerSpaceHolder\" #headerSpaceHolder>\r\n <div id=\"bgOuterHolder\" #bgOuterHolder>\r\n <div id=\"bgInnerHolder\" style=\"height: 100vh\">\r\n <div class=\"backgroundImage\" id=\"backgroundImage\">\r\n <img class=\"picture\" src=\"/assets/back.jpg\" loading=\"lazy\" />\r\n <span id=\"backgroundImageOverlay\" class=\"overlay\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div id=\"contentHolderAndNav\" first=\"true\" #contentAndNav fillEmptySpace [setMinHeight]=\"true\">\r\n <div class=\"aboveContent\" #aboveContent></div>\r\n <div id=\"contentHolder\">\r\n <div class=\"nav\" #navHolder>\r\n <div class=\"nav-container\">\r\n <ng-container\r\n *ngTemplateOutlet=\"renderTabs; context: { $implicit: (appTileGroups$ | async)!! }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"nav_surrogate\" style=\"height: 10px\"></div>\r\n <div class=\"content-feed\">\r\n <ng-container\r\n *ngTemplateOutlet=\"renderGroups; context: { $implicit: (appTileGroups$ | async)!! }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #renderTabs let-appTileGroups>\r\n <fd-tab-list\r\n [size]=\"tabSize\"\r\n [collapseOverflow]=\"tabSize === 's' || appTileGroups.length > 5\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n (selectedTabChange)=\"onSelectedTabChange3($event)\"\r\n >\r\n @for (appTileGroup of appTileGroups; track appTileGroup; let i = $index) {\r\n <fd-tab [id]=\"'' + i\" [title]=\"appTileGroup.navigatorTitle\"> </fd-tab>\r\n }\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template #renderGroups let-appTileGroups>\r\n @for (appTileGroup of appTileGroups; track appTileGroup; let i = $index) {\r\n <bt-tiles-viewer-group\r\n [class]=\"deviceSize$ | async\"\r\n [attr.index]=\"i\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"false\"\r\n [stackContent]=\"true\"\r\n [isAppTileSubGroup]=\"false\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n ></bt-tiles-viewer-group>\r\n }\r\n</ng-template>\r\n", styles: ["html{scroll-behavior:smooth}body{overflow-y:auto!important;overflow-x:hidden!important}bt-shellbar{position:fixed!important;top:10px;width:100%;z-index:6}bt-shellbar .fd-shellbar{background:transparent;box-shadow:none}bt-shellbar .fd-shellbar__product{display:none}bt-shellbar button{background-color:transparent}bdc-service-desk-header{display:block}bdc-service-desk-header #headerGrid{display:grid;justify-items:center;position:absolute;top:0;width:100%}bdc-service-desk-header #headerSpaceHolder{transition:height .3s ease-out 0s;width:100%}bdc-service-desk-header #searchHolder{z-index:302}bdc-service-desk-header #searchHolder.sticky{position:fixed;top:15px;will-change:transform}bdc-service-desk-header #contentHolderAndNav{align-items:center;background:#00000051;display:flex;flex-direction:column;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__head .fd-title{color:#fff!important}bdc-service-desk-header #contentHolderAndNav.navAndContent_tb{background:#f7f7f7}bdc-service-desk-header #contentHolder{align-items:center;display:flex;flex-direction:column}bdc-service-desk-header .nav-container{align-items:center;display:flex;gap:5px;width:100%}bdc-service-desk-header .nav-container fd-tab-list{width:100%}bdc-service-desk-header .nav_surrogate{height:1px}bdc-service-desk-header .nav{display:flex;height:50px;justify-content:center;z-index:500;width:100%}bdc-service-desk-header .nav ul{height:auto;overflow:hidden;list-style:none;padding-inline:0px 15px;margin:0;display:inline-flex;align-items:center}bdc-service-desk-header .nav ul li{display:inline;list-style:none;padding:0 16px;color:#fff}bdc-service-desk-header .nav.sticky{background:#f7f7f7;position:fixed;will-change:transform}bt-tiles-viewer-group:first-child fd-layout-panel-header{display:none!important}bt-tiles-viewer-group:first-child .fd-panel__content{border-bottom:none}.content-feed{padding:0}.input-search{display:block}@media (max-width: 480px){.nav-container,.content-feed{width:100%}.nav-container .fd-tabs,.content-feed .fd-tabs{padding:0}#searchHolder.sticky{display:none}#searchHolder .input-search{width:250px}}@media (min-width: 481px) and (max-width: 935px){#searchHolder .input-search{width:360px}}@media (min-width: 936px) and (max-width: 1250px){#searchHolder .input-search{width:480px}}@media (min-width: 1251px){#searchHolder .input-search{width:690px}}@media (max-width: 1180){div#searchHolder.sticky .input-search{width:280px!important}}@media (min-width: 480px) and (max-width: 935px){.nav-container,.content-feed{width:860px}}@media (min-width: 1244px){.nav-container,.content-feed{width:1250px}#searchHolder.sticky .input-search{width:690px}}\n"] }]
1167
+ }], ctorParameters: () => [{ type: i1$1.PortalService }, { type: i2$4.TilesService }, { type: i2$4.TilesViewerService }, { type: i0.Renderer2 }, { type: i1$3.ViewportScroller }, { type: i0.ChangeDetectorRef }], propDecorators: { headerSpaceHolder: [{
1168
+ type: ViewChild,
1169
+ args: ['headerSpaceHolder', { static: true }]
1170
+ }], headerGrid: [{
1171
+ type: ViewChild,
1172
+ args: ['headerGrid', { static: true }]
1173
+ }], aboveSearch: [{
1174
+ type: ViewChild,
1175
+ args: ['aboveSearch', { static: true }]
1176
+ }], searchHolder: [{
1177
+ type: ViewChild,
1178
+ args: ['searchHolder', { static: true }]
1179
+ }], navHolder: [{
1180
+ type: ViewChild,
1181
+ args: ['navHolder', { static: true }]
1182
+ }], aboveContent: [{
1183
+ type: ViewChild,
1184
+ args: ['aboveContent', { static: true }]
1185
+ }], bgOuterHolder: [{
1186
+ type: ViewChild,
1187
+ args: ['bgOuterHolder', { static: true }]
1188
+ }], contentAndNav: [{
1189
+ type: ViewChild,
1190
+ args: ['contentAndNav', { static: true }]
1191
+ }], tilesViewerGroupElList: [{
1192
+ type: ViewChildren,
1193
+ args: [TilesViewerGroupComponent, { read: ElementRef }]
1194
+ }], tabPanelComponents: [{
1195
+ type: ViewChildren,
1196
+ args: [TabPanelComponent]
1197
+ }], settings: [{
1198
+ type: Input
1199
+ }] } });
1200
+
1201
+ class CardContentImageAndTitleComponent extends BaseItemContentPropsComponent {
1202
+ constructor() {
1203
+ super(...arguments);
1204
+ this.backgroundColor = null;
1205
+ this.color = null;
1206
+ }
1207
+ ngOnInit() {
1208
+ super.ngOnInit();
1209
+ const parameters = this.parameters;
1210
+ if (parameters != null) {
1211
+ this.color = this.colorSetting = parameters.Color;
1212
+ this.backgroundColor = this.backgroundColorSetting = parameters.BackgroundColor;
1213
+ this.picture = this._rval.transform(parameters.Picture, this.mo, this.allColumns);
1214
+ this.title = this._rval.transform(parameters.Title, this.mo, this.allColumns);
1215
+ this.subtitle = this._rval.transform(parameters.Subtitle, this.mo, this.allColumns);
1216
+ this.icon = this._rval.transform(parameters.Icon, this.mo, this.allColumns);
1217
+ this.prepareNumberSign();
1218
+ }
1219
+ }
1220
+ prepareNumberSign() {
1221
+ if (this.color && Number(this.colorSetting[0])) {
1222
+ this.color = '#' + this.colorSetting;
1223
+ }
1224
+ if (this.backgroundColor && Number(this.backgroundColorSetting[0])) {
1225
+ this.backgroundColor = '#' + this.backgroundColorSetting;
1226
+ }
1227
+ }
1228
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardContentImageAndTitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1229
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CardContentImageAndTitleComponent, selector: "bdc-card-content-image-and-title", host: { properties: { "style.background-color": "this.backgroundColor", "style.color": "this.color" } }, viewQueries: [{ propertyName: "iconRef", first: true, predicate: ["iconRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"card-content\" #elemRef>\r\n <div class=\"item-data\">\r\n @if (picture) {\r\n <img\r\n [imgLazy]=\"picture.FileId | picFieldSrc: 'ID':null:'':100:70\"\r\n height=\"70\"\r\n width=\"100\"\r\n [alt]=\"title | bbbTranslate\"\r\n />\r\n } @else { @if (icon) {\r\n <fd-icon #iconRef [glyph]=\"icon\" [style.color]=\"color\"> </fd-icon>\r\n } }\r\n </div>\r\n <h5 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\r\n {{ title | bbbTranslate }}\r\n </h5>\r\n @if (subtitle) {\r\n <h6 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\r\n {{ subtitle | bbbTranslate }}\r\n </h6>\r\n }\r\n</div>\r\n", styles: [":host{display:flex;justify-content:center;align-items:stretch;height:100%;width:100%;min-height:180px}:host:hover{opacity:.8}:host:hover{cursor:pointer}.card-content{display:flex;align-items:center;flex-direction:column;align-self:stretch;margin-top:auto;margin-bottom:auto;width:100%}.item-data{text-align:center}fd-icon{font-size:2.5rem}h4{height:60px;width:80%;text-align:center}h6{line-height:2rem}\n"], dependencies: [{ kind: "directive", type: i1$1.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "component", type: i2$3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1230
+ }
1231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardContentImageAndTitleComponent, decorators: [{
1232
+ type: Component,
1233
+ args: [{ selector: 'bdc-card-content-image-and-title', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"card-content\" #elemRef>\r\n <div class=\"item-data\">\r\n @if (picture) {\r\n <img\r\n [imgLazy]=\"picture.FileId | picFieldSrc: 'ID':null:'':100:70\"\r\n height=\"70\"\r\n width=\"100\"\r\n [alt]=\"title | bbbTranslate\"\r\n />\r\n } @else { @if (icon) {\r\n <fd-icon #iconRef [glyph]=\"icon\" [style.color]=\"color\"> </fd-icon>\r\n } }\r\n </div>\r\n <h5 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\r\n {{ title | bbbTranslate }}\r\n </h5>\r\n @if (subtitle) {\r\n <h6 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\r\n {{ subtitle | bbbTranslate }}\r\n </h6>\r\n }\r\n</div>\r\n", styles: [":host{display:flex;justify-content:center;align-items:stretch;height:100%;width:100%;min-height:180px}:host:hover{opacity:.8}:host:hover{cursor:pointer}.card-content{display:flex;align-items:center;flex-direction:column;align-self:stretch;margin-top:auto;margin-bottom:auto;width:100%}.item-data{text-align:center}fd-icon{font-size:2.5rem}h4{height:60px;width:80%;text-align:center}h6{line-height:2rem}\n"] }]
1234
+ }], propDecorators: { iconRef: [{
1235
+ type: ViewChild,
1236
+ args: ['iconRef', { static: false }]
1237
+ }], backgroundColor: [{
1238
+ type: HostBinding,
1239
+ args: ['style.background-color']
1240
+ }], color: [{
1241
+ type: HostBinding,
1242
+ args: ['style.color']
1243
+ }] } });
1244
+
1245
+ class CardHeaderLogoTitleSubtitleComponent extends BaseItemContentPropsComponent {
1246
+ constructor() {
1247
+ super(...arguments);
1248
+ this.events = new EventEmitter();
1249
+ }
1250
+ ngOnInit() {
1251
+ super.ngOnInit();
1252
+ this.titleDbName =
1253
+ this._findColumnPipe.transform(this.allColumns, this.parameters.Title)?.Name || this.parameters.Title;
1254
+ this.subtitleDbName =
1255
+ this._findColumnPipe.transform(this.allColumns, this.parameters.Subtitle)?.Name || this.parameters.Subtitle;
1256
+ const parameters = this.parameters;
1257
+ if (parameters != null) {
1258
+ this.title = this._rval.transform(parameters.Title, this.mo, this.allColumns, true);
1259
+ this.subtitle = this._rval.transform(parameters.Subtitle, this.mo, this.allColumns, true);
1260
+ this.fontIcon = parameters.FontIcon ?? 'person-placeholder';
1261
+ this.imageIcon = this._rval.transform(parameters.FontIcon, this.mo, this.allColumns);
1262
+ this.isIconImage = typeof this.imageIcon === 'object';
1263
+ this.hasIcon = parameters.HasIcon;
1264
+ this.avatarCircle = true;
1265
+ if (typeof parameters.AvatarCircle !== 'undefined') {
1266
+ this.avatarCircle = parameters.AvatarCircle;
1267
+ }
1268
+ }
1269
+ }
1270
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardHeaderLogoTitleSubtitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", 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-card-main-header>\r\n @if (hasIcon) {\r\n <fd-avatar\r\n [circle]=\"avatarCircle\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n 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 }\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n @if (isCheckList) {\r\n <fd-checkbox\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n } @if (setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\r\n <div\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"mo\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n }\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"titleDbName\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title | bbbTranslate }}\r\n </h2>\r\n </div>\r\n @if (canView) {\r\n <button\r\n fd-button\r\n (click)=\"$event.preventDefault(); $event.stopPropagation(); events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n }\r\n </div>\r\n\r\n <h3\r\n fd-card-subtitle\r\n #hEl\r\n [hostEl]=\"hEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"subtitleDbName\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ subtitle | bbbTranslate }}\r\n </h3>\r\n </fd-card-main-header>\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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$1.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "contextMenuOverflowText", "appendTo"], outputs: ["commandClick"] }, { kind: "directive", type: i2$1.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i3$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$3.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i4$3.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "directive", type: i4$3.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i4$3.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i6$2.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1272
+ }
1273
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardHeaderLogoTitleSubtitleComponent, decorators: [{
1274
+ type: Component,
1275
+ args: [{ selector: 'bdc-card-header-logo-title-subtitle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-card-header\r\n [class.hide-border]=\"parameters.HideBorder\"\r\n (click)=\"!isCheckList && events.emit({ title: 'rowCheck' })\"\r\n>\r\n <fd-card-main-header>\r\n @if (hasIcon) {\r\n <fd-avatar\r\n [circle]=\"avatarCircle\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n 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 }\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n @if (isCheckList) {\r\n <fd-checkbox\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n } @if (setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\r\n <div\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"mo\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n }\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"titleDbName\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title | bbbTranslate }}\r\n </h2>\r\n </div>\r\n @if (canView) {\r\n <button\r\n fd-button\r\n (click)=\"$event.preventDefault(); $event.stopPropagation(); events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n }\r\n </div>\r\n\r\n <h3\r\n fd-card-subtitle\r\n #hEl\r\n [hostEl]=\"hEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"subtitleDbName\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ subtitle | bbbTranslate }}\r\n </h3>\r\n </fd-card-main-header>\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"] }]
1276
+ }], propDecorators: { events: [{
1277
+ type: Output
1278
+ }] } });
1279
+
1280
+ class FormContentQuickViewComponent extends FormPropsBaseComponent {
1281
+ constructor() {
1282
+ super(...arguments);
1283
+ this.groups = {};
1284
+ }
1285
+ ngOnInit() {
1286
+ super.ngOnInit();
1287
+ const groups = {};
1288
+ this.title = this._controlUiPipe.transform(this.settings?.Title, this.layout94)?.FieldUi?.value;
1289
+ this.subtitle = this._controlUiPipe.transform(this.settings?.Subtitle, this.layout94)?.FieldUi?.value;
1290
+ const fontIcon = this._controlUiPipe.transform(this.settings?.FontIcon, this.layout94)?.FieldUi;
1291
+ if (fontIcon) {
1292
+ const { imageUrl, value } = fontIcon;
1293
+ this.imageUrl = imageUrl;
1294
+ this.fontIcon = value;
1295
+ }
1296
+ const settingGroups = this.settings?.Groups;
1297
+ if (settingGroups) {
1298
+ settingGroups.MoDataList.forEach((c) => {
1299
+ groups[c.Title] = c.ListFields
1300
+ .split(',')
1301
+ .map((d) => ({
1302
+ caption: d,
1303
+ fieldUi: this._controlUiPipe.transform(d, this.layout94)
1304
+ }))
1305
+ .map((d) => ({ ...d, value: this.getFieldValue(d.fieldUi?.FieldUi?.value) }))
1306
+ .map((d) => ({ ...d, type: this.getFieldType(d.value) }));
1307
+ });
1308
+ }
1309
+ this.groups = groups;
1310
+ }
1311
+ getFieldValue(value) {
1312
+ if (!value) {
1313
+ return value;
1314
+ }
1315
+ const t = value.toString();
1316
+ if (t.indexOf(',') > -1) {
1317
+ return t.split(',');
1318
+ }
1319
+ return value;
1320
+ }
1321
+ getIsPhone(value) {
1322
+ if (value.startsWith('0') || (value.startsWith('+') && !Number.isNaN(value.substring(1, value.length)))) {
1323
+ return true;
1324
+ }
1325
+ return false;
1326
+ }
1327
+ getIsEmail(value) {
1328
+ if (value.indexOf('@') > -1) {
1329
+ return true;
1330
+ }
1331
+ return false;
1332
+ }
1333
+ getIsWebsite(value) {
1334
+ if (value.startsWith('http') || value.startsWith('https')) {
1335
+ return true;
1336
+ }
1337
+ return false;
1338
+ }
1339
+ getFieldType(value) {
1340
+ if (typeof value === 'string') {
1341
+ if (this.getIsWebsite(value)) {
1342
+ return 0;
1343
+ }
1344
+ if (this.getIsPhone(value)) {
1345
+ return 1;
1346
+ }
1347
+ if (this.getIsEmail(value)) {
1348
+ return 2;
1349
+ }
1350
+ return 3;
1351
+ }
1352
+ else if (Array.isArray(value)) {
1353
+ if (value.length) {
1354
+ if (this.getIsPhone(value[0])) {
1355
+ return 4;
1356
+ }
1357
+ if (this.getIsEmail(value[0])) {
1358
+ return 5;
1359
+ }
1360
+ if (this.getIsWebsite(value[0])) {
1361
+ return 6;
1362
+ }
1363
+ }
1364
+ }
1365
+ }
1366
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormContentQuickViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1367
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FormContentQuickViewComponent, selector: "bdc-form-content-quick-view", usesInheritance: true, ngImport: i0, template: "<fd-quick-view>\r\n <fd-quick-view-subheader>\r\n <fd-avatar\r\n title=\"avatar\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"imageUrl\"\r\n [size]=\"'s'\"\r\n [border]=\"settings.ShowLogoBorder\"\r\n [transparent]=\"settings.TransparentLogo\"\r\n [colorAccent]=\"settings.AccentColor\"\r\n ></fd-avatar>\r\n <fd-quick-view-subheader-title>\r\n {{ title | bbbTranslate }}\r\n </fd-quick-view-subheader-title>\r\n <fd-quick-view-subheader-subtitle>\r\n {{ subtitle | bbbTranslate }}\r\n </fd-quick-view-subheader-subtitle>\r\n </fd-quick-view-subheader>\r\n\r\n @for (group of groups | keyvalue; track group) {\r\n <fd-quick-view-group [attr.aria-labelledby]=\"group.key\">\r\n <fd-quick-view-group-title [id]=\"group.key\">\r\n {{ group.key | bbbTranslate }}\r\n </fd-quick-view-group-title>\r\n @for (item of $any(group).value; track item) {\r\n <fd-quick-view-group-item>\r\n <fd-quick-view-group-item-label>\r\n {{ item.caption | bbbTranslate }}\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n @switch (item.type) { @case (6) {\r\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\r\n @for (website of item.value; track website) {\r\n <a\r\n [href]=\"website\"\r\n [innerText]=\"website | bbbTranslate\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n }\r\n </div>\r\n } @case (0) {\r\n <a\r\n [href]=\"item.value\"\r\n [innerText]=\"item.value | bbbTranslate\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n } @case (1) {\r\n <a\r\n [href]=\"'tel:' + item.value\"\r\n [innerText]=\"item.value | bbbTranslate\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n } @case (4) {\r\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\r\n @for (tel of item.value; track tel) {\r\n <a [href]=\"'tel:' + tel\" [innerText]=\"tel\" fd-link fd-quick-view-group-item-content-element></a>\r\n }\r\n </div>\r\n } @case (5) {\r\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\r\n @for (email of item.value; track email) {\r\n <a\r\n style=\"direction: ltr; font-family: monospace\"\r\n [href]=\"'mailto:' + email\"\r\n [innerText]=\"email\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n }\r\n </div>\r\n } @case (2) {\r\n <a\r\n style=\"direction: ltr; font-family: monospace\"\r\n [href]=\"'mailto:' + item.value\"\r\n [innerText]=\"item.value\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n } @default {\r\n <div [innerText]=\"item.value | bbbTranslate\" fd-quick-view-group-item-content-element></div>\r\n } }\r\n </fd-quick-view-group-item-content>\r\n </fd-quick-view-group-item>\r\n }\r\n </fd-quick-view-group>\r\n }\r\n</fd-quick-view>\r\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"], dependencies: [{ kind: "component", type: i3$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i3$4.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i3$5.QuickViewComponent, selector: "fd-quick-view", inputs: ["id"] }, { kind: "component", type: i3$5.QuickViewSubheaderComponent, selector: "fd-quick-view-subheader" }, { kind: "component", type: i3$5.QuickViewSubheaderTitleComponent, selector: "fd-quick-view-subheader-title" }, { kind: "component", type: i3$5.QuickViewSubheaderSubtitleComponent, selector: "fd-quick-view-subheader-subtitle" }, { kind: "component", type: i3$5.QuickViewGroupComponent, selector: "fd-quick-view-group" }, { kind: "component", type: i3$5.QuickViewGroupTitleComponent, selector: "fd-quick-view-group-title", inputs: ["id"] }, { kind: "component", type: i3$5.QuickViewGroupItemComponent, selector: "fd-quick-view-group-item", inputs: ["id"] }, { kind: "component", type: i3$5.QuickViewGroupItemLabelComponent, selector: "fd-quick-view-group-item-label" }, { kind: "component", type: i3$5.QuickViewGroupItemContentComponent, selector: "fd-quick-view-group-item-content" }, { kind: "directive", type: i3$5.QuickViewGroupItemContentElementDirective, selector: "[fd-quick-view-group-item-content-element]" }, { kind: "pipe", type: i1$3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1368
+ }
1369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormContentQuickViewComponent, decorators: [{
1370
+ type: Component,
1371
+ args: [{ selector: 'bdc-form-content-quick-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-quick-view>\r\n <fd-quick-view-subheader>\r\n <fd-avatar\r\n title=\"avatar\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"imageUrl\"\r\n [size]=\"'s'\"\r\n [border]=\"settings.ShowLogoBorder\"\r\n [transparent]=\"settings.TransparentLogo\"\r\n [colorAccent]=\"settings.AccentColor\"\r\n ></fd-avatar>\r\n <fd-quick-view-subheader-title>\r\n {{ title | bbbTranslate }}\r\n </fd-quick-view-subheader-title>\r\n <fd-quick-view-subheader-subtitle>\r\n {{ subtitle | bbbTranslate }}\r\n </fd-quick-view-subheader-subtitle>\r\n </fd-quick-view-subheader>\r\n\r\n @for (group of groups | keyvalue; track group) {\r\n <fd-quick-view-group [attr.aria-labelledby]=\"group.key\">\r\n <fd-quick-view-group-title [id]=\"group.key\">\r\n {{ group.key | bbbTranslate }}\r\n </fd-quick-view-group-title>\r\n @for (item of $any(group).value; track item) {\r\n <fd-quick-view-group-item>\r\n <fd-quick-view-group-item-label>\r\n {{ item.caption | bbbTranslate }}\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n @switch (item.type) { @case (6) {\r\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\r\n @for (website of item.value; track website) {\r\n <a\r\n [href]=\"website\"\r\n [innerText]=\"website | bbbTranslate\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n }\r\n </div>\r\n } @case (0) {\r\n <a\r\n [href]=\"item.value\"\r\n [innerText]=\"item.value | bbbTranslate\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n } @case (1) {\r\n <a\r\n [href]=\"'tel:' + item.value\"\r\n [innerText]=\"item.value | bbbTranslate\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n } @case (4) {\r\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\r\n @for (tel of item.value; track tel) {\r\n <a [href]=\"'tel:' + tel\" [innerText]=\"tel\" fd-link fd-quick-view-group-item-content-element></a>\r\n }\r\n </div>\r\n } @case (5) {\r\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\r\n @for (email of item.value; track email) {\r\n <a\r\n style=\"direction: ltr; font-family: monospace\"\r\n [href]=\"'mailto:' + email\"\r\n [innerText]=\"email\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n }\r\n </div>\r\n } @case (2) {\r\n <a\r\n style=\"direction: ltr; font-family: monospace\"\r\n [href]=\"'mailto:' + item.value\"\r\n [innerText]=\"item.value\"\r\n fd-link\r\n fd-quick-view-group-item-content-element\r\n ></a>\r\n } @default {\r\n <div [innerText]=\"item.value | bbbTranslate\" fd-quick-view-group-item-content-element></div>\r\n } }\r\n </fd-quick-view-group-item-content>\r\n </fd-quick-view-group-item>\r\n }\r\n </fd-quick-view-group>\r\n }\r\n</fd-quick-view>\r\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"] }]
1372
+ }] });
1373
+
1374
+ class ServiceDeskServcieDetailComponent extends FormPropsBaseComponent {
1375
+ constructor() {
1376
+ super(...arguments);
1377
+ this.firstArray = [];
1378
+ this.secondArray = [];
1379
+ this.moByCaption = {};
1380
+ this.fieldsCaption = [];
1381
+ this.value = '';
1382
+ this.israhnamayTasviri = false;
1383
+ }
1384
+ ngOnInit() {
1385
+ super.ngOnInit();
1386
+ const $FieldDict = this.fieldDict;
1387
+ if (!$FieldDict) {
1388
+ return;
1389
+ }
1390
+ this._prepare($FieldDict, this.mo);
1391
+ }
1392
+ onDownload(item) {
1393
+ if (item.Attachment) {
1394
+ BarsaApi.Common.File.DownloadFileId(item.Attachment.Files[0].Id);
1395
+ }
1396
+ }
1397
+ ngAfterViewInit() {
1398
+ super.ngAfterViewInit();
1399
+ this.alignTablesTr();
1400
+ }
1401
+ onKhadamatMortabet(item) {
1402
+ BarsaApi.Bw.Form.Show({
1403
+ MoId: item.Id,
1404
+ TypeDefId: this.khadamatmortabetReport.TypeDefId,
1405
+ MoContext: { ReportId: this.khadamatmortabetReport.ReportId }
1406
+ });
1407
+ }
1408
+ alignTablesTr() {
1409
+ setTimeout(() => {
1410
+ const tablesRef = this.tablesRef.toArray();
1411
+ const firstTableEl = tablesRef[0].nativeElement;
1412
+ const secondTableEl = tablesRef[1].nativeElement;
1413
+ const trFirstTable = firstTableEl.querySelectorAll('tr');
1414
+ const trSecondTable = secondTableEl.querySelectorAll('tr');
1415
+ trFirstTable.forEach((tr, index) => {
1416
+ if (index < trSecondTable.length) {
1417
+ const trSecond = trSecondTable[index];
1418
+ if (tr.offsetHeight > trSecond.offsetHeight) {
1419
+ trSecond.style.height = `${tr.offsetHeight}px`;
1420
+ }
1421
+ else {
1422
+ tr.style.height = `${trSecond.offsetHeight}px`;
1423
+ }
1424
+ }
1425
+ });
1426
+ }, 0);
1427
+ }
1428
+ _prepare($FieldDict, mo) {
1429
+ const leftside = FindLayoutSettingFromLayout94(this.layout94, 'جدول چپ');
1430
+ const rightside = FindLayoutSettingFromLayout94(this.layout94, 'جدول راست');
1431
+ leftside?.items[0]?.items?.forEach((item2) => {
1432
+ const key = item2.Caption;
1433
+ const fieldName = item2.ControlId;
1434
+ const item = { caption: key, fieldName };
1435
+ if (key === 'آدرس سایت' ||
1436
+ (typeof mo[fieldName] === 'string' &&
1437
+ (mo[fieldName].startsWith('https://') || mo[fieldName].startsWith('http://')))) {
1438
+ item.type = 'Link';
1439
+ }
1440
+ if (typeof mo[fieldName] === 'object') {
1441
+ if (mo[fieldName].$Type === 'Common.MetaObjectListWeb') {
1442
+ item.type = 'MoList';
1443
+ }
1444
+ else if (mo[fieldName].Ext) {
1445
+ item.type = 'Image';
1446
+ }
1447
+ else if (mo[fieldName].Files) {
1448
+ item.type = 'Files';
1449
+ }
1450
+ else {
1451
+ item.type = 'Relation';
1452
+ }
1453
+ }
1454
+ this.firstArray.push(item);
1455
+ });
1456
+ rightside?.items[0]?.items?.forEach((item2) => {
1457
+ const key = item2.Caption;
1458
+ const fieldName = item2.ControlId;
1459
+ const item = { caption: key, fieldName };
1460
+ if (key === 'آدرس سایت' ||
1461
+ (typeof mo[fieldName] === 'string' &&
1462
+ (mo[fieldName].startsWith('https://') || mo[fieldName].startsWith('http://')))) {
1463
+ item.type = 'Link';
1464
+ }
1465
+ if (typeof mo[fieldName] === 'object') {
1466
+ if (mo[fieldName].$Type === 'Common.MetaObjectListWeb') {
1467
+ item.type = 'MoList';
1468
+ }
1469
+ else if (mo[fieldName].Ext) {
1470
+ item.type = 'Image';
1471
+ }
1472
+ else if (mo[fieldName].Files) {
1473
+ item.type = 'Files';
1474
+ }
1475
+ else {
1476
+ item.type = 'Relation';
1477
+ }
1478
+ }
1479
+ this.secondArray.push(item);
1480
+ });
1481
+ this.rahnamayTasviri = this._sanitizer.bypassSecurityTrustResourceUrl(mo[$FieldDict['راهنمای تصویری']]);
1482
+ if (this.rahnamayTasviri) {
1483
+ this.israhnamayTasviri = true;
1484
+ }
1485
+ // this.firstArray = filteredControls.slice(0, controlCountMiddle);
1486
+ // this.secondArray = filteredControls.slice(controlCountMiddle, controlCount);
1487
+ this.khadamatmortabet = mo[$FieldDict['خدمات مرتبط']]?.MoDataList ?? [];
1488
+ this.khadamatmortabetReport = mo[$FieldDict['خدمات مرتبط']];
1489
+ // this.isOdd = controlCount % 2 === 0;
1490
+ this.isOdd = false;
1491
+ }
1492
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceDeskServcieDetailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1493
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ServiceDeskServcieDetailComponent, selector: "bdc-service-desk-servcie-detail", viewQueries: [{ propertyName: "tabContainerRef", first: true, predicate: ["tabContainerRef"], descendants: true }, { propertyName: "tablesRef", predicate: ["tablesRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-dynamic-page [size]=\"isMobile ? 'small' : 'large'\">\r\n <fd-tab-list\r\n [collapseOverflow]=\"true\"\r\n [stackContent]=\"false\"\r\n maxContentHeight=\"auto\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n #tablist\r\n >\r\n <fd-tab [title]=\"'\u0634\u0646\u0627\u0633\u0646\u0627\u0645\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\" selected>\r\n <fd-dynamic-page-content>\r\n <fd-layout-grid class=\"row\" style=\"margin: 0\">\r\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTable;\r\n context: {\r\n $implicit: firstArray,\r\n showKhadamatMortabet: isOdd,\r\n classNames: 'firstTable'\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTable;\r\n context: {\r\n $implicit: secondArray,\r\n showKhadamatMortabet: !isOdd,\r\n classNames: 'secondTable'\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n </fd-layout-grid>\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n <fd-tab [title]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n <fd-tab [title]=\"'\u0634\u0631\u0627\u064A\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n } @if ('\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control [caption]=\"'\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | bbbTranslate\" [config]=\"configUi\"></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n <fd-tab [title]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u062F\u0633\u062A\u06AF\u0627\u0647 \u0647\u0627\u06CC \u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u062F\u0647\u0646\u062F\u0647' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n @if ('SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <fd-tab [title]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if (configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n }\r\n </fd-tab-list>\r\n\r\n <fd-dynamic-page-footer> </fd-dynamic-page-footer>\r\n</fd-dynamic-page>\r\n\r\n<ng-template #renderTable let-array let-showKhadamatMortabet=\"showKhadamatMortabet\" let-classNames=\"classNames\">\r\n <table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\r\n @for (controlItem of array; track controlItem) {\r\n <tr>\r\n <th>{{ controlItem.caption | bbbTranslate }}</th>\r\n <td>\r\n @switch (controlItem.type) { @case ('Link') {\r\n <a dir=\"ltr\" target=\"_blank\" [href]=\"mo[controlItem.fieldName]\">{{ mo[controlItem.fieldName] }}</a>\r\n } @case ('Relation') {\r\n {{ controlItem.fieldName | val: mo:true | bbbTranslate }}\r\n } @case ('MoList') { @for (item of mo[controlItem.fieldName]?.MoDataList; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\" style=\"color: #0854a0\"></fd-icon>\r\n <!-- <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon> -->\r\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n } } @case ('Image') {\r\n {{ mo[controlItem.fieldName].Ext }}\r\n } @case ('Files') {\r\n {{ mo[controlItem.fieldName].Files }}\r\n } @default {\r\n {{ mo[controlItem.fieldName + '$Caption'] || mo[controlItem.fieldName] | bbbTranslate }}\r\n } }\r\n </td>\r\n </tr>\r\n }\r\n <!-- <ng-container *ngIf=\"showKhadamatMortabet\">\r\n <tr>\r\n <th>\u062E\u062F\u0645\u0627\u062A \u0645\u0631\u062A\u0628\u0637</th>\r\n <td>\r\n <div class=\"links\" *ngFor=\"let item of khadamatmortabet\">\r\n <a (click)=\"onKhadamatMortabet(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container> -->\r\n </table>\r\n</ng-template>\r\n", styles: ["table{background-color:var(--sapBaseColor)}.cell{font-size:14px}.bod{border-bottom:1px solid gray;border-right:1px solid gray;height:30px;line-height:30px}.bod :first{border-right:0;border-bottom:0}.anwser{line-height:30px;padding:10px;text-align:justify}.box{padding:0 40px 10px 10px;line-height:30px;display:flex;flex-direction:column;column-count:2;flex-wrap:wrap;height:180px;overflow:hidden}.faq-item-link{font-size:16px;padding-right:25px;cursor:pointer;color:gray}.faq-item-link a{color:gray;cursor:pointer}.faq-item-link a:hover{text-decoration:underline!important}.law-page-header{background:#fff;color:#0854a0;font-size:1.3rem;font-weight:500;padding:5px 15px}.wrapper{border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}table.table-grid{font-family:arial,sans-serif;border-collapse:collapse;width:100%;direction:rtl}.table-grid td,.table-grid th{border:1px solid grey;text-align:left;padding:12px 8px;text-align:right}.table-grid th{background-color:#e2e2e2;font-size:.825rem;font-weight:500;vertical-align:middle;width:150px;font-family:IRANYekanDigits}.table-grid td{font-size:.825rem;vertical-align:middle;font-family:IRANYekanDigits}@media only screen and (max-width: 992px){.secondTable tr:first-child td,.secondTable tr:first-child th{border-top:0}}@media only screen and (min-width: 992px){.secondTable th{border-right:0}}.fd-icon{font-size:2rem;color:#0854a0;padding-left:10px}.links a{line-height:25px;cursor:pointer;display:inline;color:#32363a;vertical-align:top}.links a:hover{text-decoration:underline!important;color:#000}.fd-icon-link{font-size:1rem;padding-left:5px}.VideoGuide{max-width:1280px;margin:0 auto;width:auto;text-align:center}.h_iframe-aparat_embed_frame{position:relative}.h_iframe-aparat_embed_frame .ratio{display:block;width:100%;height:auto}.h_iframe-aparat_embed_frame iframe{position:absolute;top:0;left:0;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"], outputs: ["events"] }, { kind: "component", type: i3$9.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i3$9.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i3$9.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i2$3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i3$7.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i3$7.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: i1$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "selectedTabIndexChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i1$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "pipe", type: i1$1.MoValuePipe, name: "val" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1$1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1494
+ }
1495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceDeskServcieDetailComponent, decorators: [{
1496
+ type: Component,
1497
+ args: [{ selector: 'bdc-service-desk-servcie-detail', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-dynamic-page [size]=\"isMobile ? 'small' : 'large'\">\r\n <fd-tab-list\r\n [collapseOverflow]=\"true\"\r\n [stackContent]=\"false\"\r\n maxContentHeight=\"auto\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n #tablist\r\n >\r\n <fd-tab [title]=\"'\u0634\u0646\u0627\u0633\u0646\u0627\u0645\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\" selected>\r\n <fd-dynamic-page-content>\r\n <fd-layout-grid class=\"row\" style=\"margin: 0\">\r\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTable;\r\n context: {\r\n $implicit: firstArray,\r\n showKhadamatMortabet: isOdd,\r\n classNames: 'firstTable'\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTable;\r\n context: {\r\n $implicit: secondArray,\r\n showKhadamatMortabet: !isOdd,\r\n classNames: 'secondTable'\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n </fd-layout-grid>\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n <fd-tab [title]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n <fd-tab [title]=\"'\u0634\u0631\u0627\u064A\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n } @if ('\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control [caption]=\"'\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | bbbTranslate\" [config]=\"configUi\"></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n <fd-tab [title]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n\r\n <fd-tab [title]=\"'\u062F\u0633\u062A\u06AF\u0627\u0647 \u0647\u0627\u06CC \u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u062F\u0647\u0646\u062F\u0647' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if ('\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | controlUi: layout94; as configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n @if ('SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94; as configUi) {\r\n <fd-tab [title]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\">\r\n <fd-dynamic-page-content>\r\n @if (configUi) {\r\n <bsu-layout-control\r\n [caption]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\r\n [config]=\"configUi\"\r\n ></bsu-layout-control>\r\n }\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n }\r\n </fd-tab-list>\r\n\r\n <fd-dynamic-page-footer> </fd-dynamic-page-footer>\r\n</fd-dynamic-page>\r\n\r\n<ng-template #renderTable let-array let-showKhadamatMortabet=\"showKhadamatMortabet\" let-classNames=\"classNames\">\r\n <table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\r\n @for (controlItem of array; track controlItem) {\r\n <tr>\r\n <th>{{ controlItem.caption | bbbTranslate }}</th>\r\n <td>\r\n @switch (controlItem.type) { @case ('Link') {\r\n <a dir=\"ltr\" target=\"_blank\" [href]=\"mo[controlItem.fieldName]\">{{ mo[controlItem.fieldName] }}</a>\r\n } @case ('Relation') {\r\n {{ controlItem.fieldName | val: mo:true | bbbTranslate }}\r\n } @case ('MoList') { @for (item of mo[controlItem.fieldName]?.MoDataList; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\" style=\"color: #0854a0\"></fd-icon>\r\n <!-- <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon> -->\r\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n } } @case ('Image') {\r\n {{ mo[controlItem.fieldName].Ext }}\r\n } @case ('Files') {\r\n {{ mo[controlItem.fieldName].Files }}\r\n } @default {\r\n {{ mo[controlItem.fieldName + '$Caption'] || mo[controlItem.fieldName] | bbbTranslate }}\r\n } }\r\n </td>\r\n </tr>\r\n }\r\n <!-- <ng-container *ngIf=\"showKhadamatMortabet\">\r\n <tr>\r\n <th>\u062E\u062F\u0645\u0627\u062A \u0645\u0631\u062A\u0628\u0637</th>\r\n <td>\r\n <div class=\"links\" *ngFor=\"let item of khadamatmortabet\">\r\n <a (click)=\"onKhadamatMortabet(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container> -->\r\n </table>\r\n</ng-template>\r\n", styles: ["table{background-color:var(--sapBaseColor)}.cell{font-size:14px}.bod{border-bottom:1px solid gray;border-right:1px solid gray;height:30px;line-height:30px}.bod :first{border-right:0;border-bottom:0}.anwser{line-height:30px;padding:10px;text-align:justify}.box{padding:0 40px 10px 10px;line-height:30px;display:flex;flex-direction:column;column-count:2;flex-wrap:wrap;height:180px;overflow:hidden}.faq-item-link{font-size:16px;padding-right:25px;cursor:pointer;color:gray}.faq-item-link a{color:gray;cursor:pointer}.faq-item-link a:hover{text-decoration:underline!important}.law-page-header{background:#fff;color:#0854a0;font-size:1.3rem;font-weight:500;padding:5px 15px}.wrapper{border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}table.table-grid{font-family:arial,sans-serif;border-collapse:collapse;width:100%;direction:rtl}.table-grid td,.table-grid th{border:1px solid grey;text-align:left;padding:12px 8px;text-align:right}.table-grid th{background-color:#e2e2e2;font-size:.825rem;font-weight:500;vertical-align:middle;width:150px;font-family:IRANYekanDigits}.table-grid td{font-size:.825rem;vertical-align:middle;font-family:IRANYekanDigits}@media only screen and (max-width: 992px){.secondTable tr:first-child td,.secondTable tr:first-child th{border-top:0}}@media only screen and (min-width: 992px){.secondTable th{border-right:0}}.fd-icon{font-size:2rem;color:#0854a0;padding-left:10px}.links a{line-height:25px;cursor:pointer;display:inline;color:#32363a;vertical-align:top}.links a:hover{text-decoration:underline!important;color:#000}.fd-icon-link{font-size:1rem;padding-left:5px}.VideoGuide{max-width:1280px;margin:0 auto;width:auto;text-align:center}.h_iframe-aparat_embed_frame{position:relative}.h_iframe-aparat_embed_frame .ratio{display:block;width:100%;height:auto}.h_iframe-aparat_embed_frame iframe{position:absolute;top:0;left:0;width:100%;height:100%}\n"] }]
1498
+ }], propDecorators: { tabContainerRef: [{
1499
+ type: ViewChild,
1500
+ args: ['tabContainerRef']
1501
+ }], tablesRef: [{
1502
+ type: ViewChildren,
1503
+ args: ['tablesRef']
1504
+ }] } });
1505
+
1506
+ class ServiceDeskViewOfServicesComponent extends ReportViewBaseComponent {
1507
+ ngOnInit() {
1508
+ super.ngOnInit();
1509
+ this.fieldIcon = this.viewSetting.FieldIcon;
1510
+ this.fieldTitle = this.viewSetting.FieldTitle;
1511
+ this.fieldDynamicCommand = this.viewSetting.FieldDynamicCommand;
1512
+ this.contextMenuItems?.forEach((c) => {
1513
+ const parameters = c.Command.CustomUi?.Parameters;
1514
+ if (parameters) {
1515
+ // parameters.OnlyIcon = true;
1516
+ }
1517
+ });
1518
+ }
1519
+ onRowClick2(e, dynamicCommand) {
1520
+ if (dynamicCommand) {
1521
+ return;
1522
+ }
1523
+ super.onRowClick(e);
1524
+ }
1525
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceDeskViewOfServicesComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1526
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ServiceDeskViewOfServicesComponent, selector: "bdc-service-desk-view-of-services", usesInheritance: true, ngImport: i0, template: "<div class=\"services\">\r\n <div class=\"service-list\">\r\n <fd-layout-grid>\r\n <div fdLayoutGridRow>\r\n @for (mo of moDataList | multipleGroupBy: groupby; track mo; let i = $index) { @if (mo.$Group ||\r\n mo.$Group === '') {\r\n <div [fdLayoutGridCol]=\"12\">\r\n <h3\r\n fd-title\r\n style=\"\r\n padding: 0 0 0.4rem 0;\r\n border-bottom: var(--sapList_BorderWidth) solid var(--sapList_BorderColor);\r\n \"\r\n >\r\n {{ mo.$Group }}\r\n </h3>\r\n </div>\r\n } @if (!mo.$Group) {\r\n <div [fdLayoutGridCol]=\"12\" [colSm]=\"12\" [colMd]=\"3\" [colLg]=\"3\" [colXl]=\"3\">\r\n <div class=\"item\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n dynamicCommand;\r\n context: {\r\n $implicit: mo,\r\n index: i,\r\n dynCommand: fieldDynamicCommand | rval: mo:allColumns,\r\n title: fieldTitle | rval: mo:allColumns | bbbTranslate\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n } }\r\n </div>\r\n </fd-layout-grid>\r\n </div>\r\n</div>\r\n<ng-template #dynamicCommand let-mo let-index=\"index\" let-dynCommand=\"dynCommand\" let-title=\"title\">\r\n <button\r\n fd-button\r\n [dynCommand]=\"dynCommand\"\r\n [mo]=\"mo\"\r\n [enableCommand]=\"dynCommand\"\r\n style=\"width: 100%; max-height: 2.3rem; height: 2.3rem; border-radius: 0\"\r\n [fdType]=\"'emphasized'\"\r\n (click)=\"onRowClick2({ mo, index },dynCommand)\"\r\n [title]=\"title\"\r\n >\r\n <span class=\"item-icon\">\r\n <fd-icon glyph=\"product\"></fd-icon>\r\n </span>\r\n <span class=\"item-content\"> {{ title }}</span>\r\n <span class=\"item-icon-arrow\">\r\n @if (fieldIcon) {\r\n <fd-icon [glyph]=\"fieldIcon\"></fd-icon>\r\n }\r\n </span>\r\n </button>\r\n <div style=\"padding: 10px; border-top: 1px solid #ccc\">\r\n <bsu-ulv-context-menu\r\n [disableOverflowContextMenu]=\"true\"\r\n [mo]=\"mo\"\r\n [index]=\"index\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [menuItems]=\"contextMenuItems\"\r\n [allColumns]=\"allColumns\"\r\n (commandClick)=\"this.ulvCommandClick.emit({ mo, index })\"\r\n ></bsu-ulv-context-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host .b-b{padding-right:5px;padding-top:5px}bsu-ulv-context-menu{flex-wrap:wrap;row-gap:5px}.item{position:relative;border:1px solid #ccc}.item a{background:#0078d7;cursor:pointer;display:flex;padding:10px 5px;flex-direction:column;cursor:pointer!important}.item a:hover{background:#67b4f3}fd-icon{font-size:1.25rem;color:#fff}.item .item-content{color:#fff;margin-left:35px;margin-right:25px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}.item .item-icon{position:absolute;right:5px;top:5px}.item .item-icon-arrow{position:absolute;left:16px;top:9px}.item .item-icon-arrow fd-icon{font-size:1rem;color:#fff}.exe_cell{margin-top:10px;padding:0 5px}.service-list{margin-top:20px}.exe_cell:nth-child(1),.exe_cell:nth-child(2),.exe_cell:nth-child(3),.exe_cell:nth-child(4){margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.DynamicCommandDirective, selector: "[dynCommand]", inputs: ["dynCommand", "mo", "enableCommand"], outputs: ["commandClick"] }, { kind: "component", type: i2$1.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "contextMenuOverflowText", "appendTo"], outputs: ["commandClick"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i2$3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i3$7.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i3$7.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i3$7.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1$1.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1527
+ }
1528
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceDeskViewOfServicesComponent, decorators: [{
1529
+ type: Component,
1530
+ args: [{ selector: 'bdc-service-desk-view-of-services', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"services\">\r\n <div class=\"service-list\">\r\n <fd-layout-grid>\r\n <div fdLayoutGridRow>\r\n @for (mo of moDataList | multipleGroupBy: groupby; track mo; let i = $index) { @if (mo.$Group ||\r\n mo.$Group === '') {\r\n <div [fdLayoutGridCol]=\"12\">\r\n <h3\r\n fd-title\r\n style=\"\r\n padding: 0 0 0.4rem 0;\r\n border-bottom: var(--sapList_BorderWidth) solid var(--sapList_BorderColor);\r\n \"\r\n >\r\n {{ mo.$Group }}\r\n </h3>\r\n </div>\r\n } @if (!mo.$Group) {\r\n <div [fdLayoutGridCol]=\"12\" [colSm]=\"12\" [colMd]=\"3\" [colLg]=\"3\" [colXl]=\"3\">\r\n <div class=\"item\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n dynamicCommand;\r\n context: {\r\n $implicit: mo,\r\n index: i,\r\n dynCommand: fieldDynamicCommand | rval: mo:allColumns,\r\n title: fieldTitle | rval: mo:allColumns | bbbTranslate\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n } }\r\n </div>\r\n </fd-layout-grid>\r\n </div>\r\n</div>\r\n<ng-template #dynamicCommand let-mo let-index=\"index\" let-dynCommand=\"dynCommand\" let-title=\"title\">\r\n <button\r\n fd-button\r\n [dynCommand]=\"dynCommand\"\r\n [mo]=\"mo\"\r\n [enableCommand]=\"dynCommand\"\r\n style=\"width: 100%; max-height: 2.3rem; height: 2.3rem; border-radius: 0\"\r\n [fdType]=\"'emphasized'\"\r\n (click)=\"onRowClick2({ mo, index },dynCommand)\"\r\n [title]=\"title\"\r\n >\r\n <span class=\"item-icon\">\r\n <fd-icon glyph=\"product\"></fd-icon>\r\n </span>\r\n <span class=\"item-content\"> {{ title }}</span>\r\n <span class=\"item-icon-arrow\">\r\n @if (fieldIcon) {\r\n <fd-icon [glyph]=\"fieldIcon\"></fd-icon>\r\n }\r\n </span>\r\n </button>\r\n <div style=\"padding: 10px; border-top: 1px solid #ccc\">\r\n <bsu-ulv-context-menu\r\n [disableOverflowContextMenu]=\"true\"\r\n [mo]=\"mo\"\r\n [index]=\"index\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [menuItems]=\"contextMenuItems\"\r\n [allColumns]=\"allColumns\"\r\n (commandClick)=\"this.ulvCommandClick.emit({ mo, index })\"\r\n ></bsu-ulv-context-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host .b-b{padding-right:5px;padding-top:5px}bsu-ulv-context-menu{flex-wrap:wrap;row-gap:5px}.item{position:relative;border:1px solid #ccc}.item a{background:#0078d7;cursor:pointer;display:flex;padding:10px 5px;flex-direction:column;cursor:pointer!important}.item a:hover{background:#67b4f3}fd-icon{font-size:1.25rem;color:#fff}.item .item-content{color:#fff;margin-left:35px;margin-right:25px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}.item .item-icon{position:absolute;right:5px;top:5px}.item .item-icon-arrow{position:absolute;left:16px;top:9px}.item .item-icon-arrow fd-icon{font-size:1rem;color:#fff}.exe_cell{margin-top:10px;padding:0 5px}.service-list{margin-top:20px}.exe_cell:nth-child(1),.exe_cell:nth-child(2),.exe_cell:nth-child(3),.exe_cell:nth-child(4){margin-top:10px}\n"] }]
1531
+ }] });
1532
+
1533
+ class ServiceDeskCardContentMojavezhayAkhzShodeComponent extends BaseComponent {
1534
+ ngOnInit() {
1535
+ super.ngOnInit();
1536
+ this.fieldTitle = this.parameters.FieldTitle;
1537
+ this.titleOfValue = this.parameters.TitleOfValue;
1538
+ this.fieldValue = this.parameters.FieldValue;
1539
+ }
1540
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceDeskCardContentMojavezhayAkhzShodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1541
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ServiceDeskCardContentMojavezhayAkhzShodeComponent, selector: "bdc-service-desk-card-content-mojavezhay-akhz-shode", inputs: { mo: "mo", allColumns: "allColumns", parameters: "parameters", rtl: "rtl" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: row; width: 100%\">\r\n <h2\r\n fd-title\r\n style=\"\r\n width: 60%;\r\n text-align: right;\r\n font-size: 12px;\r\n font-weight: 600;\r\n padding: 0px 16px 0 0;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n \"\r\n >\r\n {{ fieldTitle | rval: mo:allColumns:true }}\r\n </h2>\r\n <h3\r\n fd-title\r\n style=\"\r\n width: 40%;\r\n text-align: left;\r\n font-size: 12px;\r\n font-weight: 600;\r\n padding: 0px 5px 0 10px;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n display: flex;\r\n \"\r\n >\r\n <div style=\"width: 100%; font-weight: 400\">{{ titleOfValue }}:</div>\r\n <div style=\"padding-right: 5px; text-align: left\">\r\n {{ fieldValue | rval: mo:allColumns }}\r\n </div>\r\n </h3>\r\n</div>\r\n", styles: [":host{display:flex;align-items:center;padding:10px}\n"], dependencies: [{ kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1542
+ }
1543
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceDeskCardContentMojavezhayAkhzShodeComponent, decorators: [{
1544
+ type: Component,
1545
+ args: [{ selector: 'bdc-service-desk-card-content-mojavezhay-akhz-shode', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div style=\"display: flex; flex-direction: row; width: 100%\">\r\n <h2\r\n fd-title\r\n style=\"\r\n width: 60%;\r\n text-align: right;\r\n font-size: 12px;\r\n font-weight: 600;\r\n padding: 0px 16px 0 0;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n \"\r\n >\r\n {{ fieldTitle | rval: mo:allColumns:true }}\r\n </h2>\r\n <h3\r\n fd-title\r\n style=\"\r\n width: 40%;\r\n text-align: left;\r\n font-size: 12px;\r\n font-weight: 600;\r\n padding: 0px 5px 0 10px;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n display: flex;\r\n \"\r\n >\r\n <div style=\"width: 100%; font-weight: 400\">{{ titleOfValue }}:</div>\r\n <div style=\"padding-right: 5px; text-align: left\">\r\n {{ fieldValue | rval: mo:allColumns }}\r\n </div>\r\n </h3>\r\n</div>\r\n", styles: [":host{display:flex;align-items:center;padding:10px}\n"] }]
1546
+ }], propDecorators: { mo: [{
1547
+ type: Input
1548
+ }], allColumns: [{
1549
+ type: Input
1550
+ }], parameters: [{
1551
+ type: Input
1552
+ }], rtl: [{
1553
+ type: Input
1554
+ }] } });
1555
+
1556
+ class CardHeaderBigImageTitleAndSubtitleComponent extends CardHeaderLogoTitleSubtitleComponent {
1557
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardHeaderBigImageTitleAndSubtitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1558
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CardHeaderBigImageTitleAndSubtitleComponent, selector: "bdc-card-header-big-image-title-and-subtitle", usesInheritance: true, ngImport: i0, template: "<fd-card-header [class.hide-border]=\"parameters.HideBorder\">\r\n <fd-card-main-header>\r\n @if (hasIcon) {\r\n <fd-avatar\r\n [circle]=\"avatarCircle\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\r\n ></fd-avatar>\r\n }\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n @if (isCheckList) {\r\n <fd-checkbox\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n } @if (!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\r\n <div\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"mo\"\r\n [styleIndex]=\"styleIndex\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n }\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"titleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title }}\r\n </h2>\r\n </div>\r\n @if (canView) {\r\n <button\r\n fd-button\r\n (click)=\"events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n }\r\n </div>\r\n\r\n <h3\r\n fd-card-subtitle\r\n #hEl\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"subtitleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ subtitle }}\r\n </h3>\r\n </fd-card-main-header>\r\n</fd-card-header>\r\n<div></div>\r\n", styles: [":host ::ng-deep .fd-card__header-text{padding:1rem}fd-card-header{cursor:default}fd-card-header ::ng-deep .fd-card__header-main-container{display:flex;flex-direction:column;padding:0}fd-card-header fd-avatar{min-height:160px;max-height:160px;height:160px;width:283px;max-width:100%;min-width:100%}fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:1rem;font-weight:700}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}fd-card-header.hide-border{border-bottom:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$1.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "contextMenuOverflowText", "appendTo"], outputs: ["commandClick"] }, { kind: "directive", type: i2$1.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i3$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$3.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i4$3.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "directive", type: i4$3.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i4$3.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i6$2.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1559
+ }
1560
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardHeaderBigImageTitleAndSubtitleComponent, decorators: [{
1561
+ type: Component,
1562
+ args: [{ selector: 'bdc-card-header-big-image-title-and-subtitle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-card-header [class.hide-border]=\"parameters.HideBorder\">\r\n <fd-card-main-header>\r\n @if (hasIcon) {\r\n <fd-avatar\r\n [circle]=\"avatarCircle\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\r\n ></fd-avatar>\r\n }\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n @if (isCheckList) {\r\n <fd-checkbox\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n } @if (!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\r\n <div\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"mo\"\r\n [styleIndex]=\"styleIndex\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n }\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"titleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title }}\r\n </h2>\r\n </div>\r\n @if (canView) {\r\n <button\r\n fd-button\r\n (click)=\"events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n }\r\n </div>\r\n\r\n <h3\r\n fd-card-subtitle\r\n #hEl\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"subtitleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ subtitle }}\r\n </h3>\r\n </fd-card-main-header>\r\n</fd-card-header>\r\n<div></div>\r\n", styles: [":host ::ng-deep .fd-card__header-text{padding:1rem}fd-card-header{cursor:default}fd-card-header ::ng-deep .fd-card__header-main-container{display:flex;flex-direction:column;padding:0}fd-card-header fd-avatar{min-height:160px;max-height:160px;height:160px;width:283px;max-width:100%;min-width:100%}fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:1rem;font-weight:700}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}fd-card-header.hide-border{border-bottom:none!important}\n"] }]
1563
+ }] });
1564
+
1565
+ class ServiceDeskFormLayoutContentMojavezComponent extends FormPropsBaseComponent {
1566
+ constructor() {
1567
+ super(...arguments);
1568
+ this.fieldsCaption = [];
1569
+ }
1570
+ ngOnInit() {
1571
+ super.ngOnInit();
1572
+ let fieldDict = [];
1573
+ if (this.fieldDict) {
1574
+ fieldDict = Object.keys(this.fieldDict);
1575
+ }
1576
+ if (fieldDict) {
1577
+ fieldDict.forEach((key) => {
1578
+ if (this.fieldDict) {
1579
+ const fieldName = this.fieldDict[key];
1580
+ const item = { caption: key, fieldName, value: '' };
1581
+ const customFiledUi = this._controlUiPipe.transform(key, this.layout94);
1582
+ item.value = this.mo[fieldName];
1583
+ const originalXtype = customFiledUi?.FieldUi?.originalXtype;
1584
+ if (key === 'آدرس سایت') {
1585
+ item.type = 'Link';
1586
+ }
1587
+ if (this.mo[fieldName + '$Caption']) {
1588
+ item.type = 'Caption';
1589
+ item.value = this.mo[fieldName + '$Caption'];
1590
+ }
1591
+ else if (typeof item.value === 'object') {
1592
+ if (item.value.$Type === 'Common.MetaObjectListWeb') {
1593
+ item.type = 'MoList';
1594
+ }
1595
+ else if (item.value.Ext) {
1596
+ item.type = 'Image';
1597
+ }
1598
+ else if (originalXtype === 'Ui.FileLinearListBox') {
1599
+ item.type = 'Files';
1600
+ }
1601
+ else {
1602
+ item.type = 'Relation';
1603
+ }
1604
+ if (key === 'خدمات قابل انجام') {
1605
+ item.type = 'MoList2';
1606
+ }
1607
+ }
1608
+ this.fieldsCaption.push(item);
1609
+ }
1610
+ });
1611
+ }
1612
+ this.fieldsCaption = this.fieldsCaption.filter((c) => c.caption !== 'عنوان مجوز' && c.caption !== 'نقش اشخاص در مجوز' && c.caption !== 'فرزند');
1613
+ const controlCount = this.fieldsCaption.length;
1614
+ const controlCountMiddle = Math.ceil(this.fieldsCaption.length / 2);
1615
+ this.firstArray = this.fieldsCaption.slice(0, controlCountMiddle);
1616
+ this.secondArray = this.fieldsCaption.slice(controlCountMiddle, controlCount);
1617
+ this.isOdd = controlCount % 2 === 0;
1618
+ }
1619
+ ngAfterViewInit() {
1620
+ super.ngAfterViewInit();
1621
+ this.alignTablesTr();
1622
+ }
1623
+ onLink(item) {
1624
+ if (item.F34) {
1625
+ window.open(item.F42);
1626
+ }
1627
+ else {
1628
+ BarsaApi.Bw.Msg.Info('سامانه ای تعریف نشده است');
1629
+ }
1630
+ }
1631
+ onDownload(item) {
1632
+ BarsaApi.Common.File.DownloadFileId(item.Id);
1633
+ }
1634
+ alignTablesTr() {
1635
+ setTimeout(() => {
1636
+ const tablesRef = this.tablesRef.toArray();
1637
+ const firstTableEl = tablesRef[0].nativeElement;
1638
+ const secondTableEl = tablesRef[1].nativeElement;
1639
+ const trFirstTable = firstTableEl.querySelectorAll('tr');
1640
+ const trSecondTable = secondTableEl.querySelectorAll('tr');
1641
+ trFirstTable.forEach((tr, index) => {
1642
+ if (index < trSecondTable.length) {
1643
+ const trSecond = trSecondTable[index];
1644
+ if (tr.offsetHeight > trSecond.offsetHeight) {
1645
+ trSecond.style.height = `${tr.offsetHeight}px`;
1646
+ }
1647
+ else {
1648
+ tr.style.height = `${trSecond.offsetHeight}px`;
1649
+ }
1650
+ }
1651
+ });
1652
+ }, 0);
1653
+ }
1654
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceDeskFormLayoutContentMojavezComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1655
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ServiceDeskFormLayoutContentMojavezComponent, selector: "bdc-service-desk-form-layout-content-mojavez", viewQueries: [{ propertyName: "tabContainerRef", first: true, predicate: ["tabContainerRef"], descendants: true }, { propertyName: "tablesRef", predicate: ["tablesRef"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<fd-layout-grid>\r\n <div [fdLayoutGridCol]=\"6\" style=\"padding: 0\">\r\n <ng-container *ngTemplateOutlet=\"renderTable; context: { $implicit: firstArray, classNames: 'firstTable' }\">\r\n </ng-container>\r\n </div>\r\n <div [fdLayoutGridCol]=\"6\" style=\"padding: 0\">\r\n <ng-container *ngTemplateOutlet=\"renderTable; context: { $implicit: secondArray, classNames: 'secondTable' }\">\r\n </ng-container>\r\n </div>\r\n</fd-layout-grid>\r\n\r\n<ng-template #renderTable let-array let-classNames=\"classNames\">\r\n <table fd-table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\r\n @for (controlItem of array; track controlItem) {\r\n <tr fd-table-row>\r\n <th fd-tabel-cell>{{ controlItem.caption }}</th>\r\n <td fd-tabel-cell>\r\n @switch (controlItem.type) { @case ('Link') {\r\n <a target=\"_blank\" [href]=\"controlItem.value\">{{ controlItem.value }}</a>\r\n } @case ('Relation') {\r\n {{ controlItem.value.$Caption }}\r\n } @case ('MoList') { @for (item of controlItem.value.MoDataList; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon>\r\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n } } @case ('MoList2') { @for (item of controlItem.value.MoDataList; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\"></fd-icon>\r\n <a (click)=\"onLink(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n } } @case ('Caption') {\r\n {{ controlItem.value }}\r\n } @case ('Image') {\r\n {{ controlItem.value.Ext }}\r\n } @case ('Files') { @for (item of controlItem.value.Files; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon>\r\n <a (click)=\"onDownload(item)\">{{ item.FileName }}</a>\r\n </div>\r\n } } @default {\r\n {{ controlItem.value }}\r\n } }\r\n </td>\r\n </tr>\r\n }\r\n </table>\r\n</ng-template>\r\n", styles: [".cell{font-size:14px}.bod{border-bottom:1px solid gray;border-right:1px solid gray;height:30px;line-height:30px}.bod :first{border-right:0;border-bottom:0}.anwser{line-height:30px;padding:10px;text-align:justify}.box{padding:0 40px 10px 10px;line-height:30px;display:flex;flex-direction:column;column-count:2;flex-wrap:wrap;height:180px;overflow:hidden}.faq-item-link{font-size:16px;padding-right:25px;cursor:pointer;color:gray}.faq-item-link a{color:gray;cursor:pointer}.faq-item-link a:hover{text-decoration:underline!important}.law-page-header{background:#fff;color:#0854a0;font-size:1.3rem;font-weight:500;padding:5px 15px}.wrapper{border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}table.table-grid{border-collapse:collapse;width:100%;direction:rtl;background-color:#fff}.table-grid td,.table-grid th{border:1px solid grey;text-align:left;padding:12px 8px;text-align:right}.table-grid th{background-color:#e2e2e2;font-size:.825rem;font-weight:500;vertical-align:middle;width:200px}.table-grid td{font-size:.825rem;vertical-align:middle}@media only screen and (max-width: 992px){.secondTable tr:first-child td,.secondTable tr:first-child th{border-top:0}}@media only screen and (min-width: 992px){.secondTable th{border-right:0}}.fd-icon{font-size:2rem;color:#0854a0;padding-left:10px}.links a{line-height:25px;cursor:pointer;display:inline;color:#32363a;vertical-align:top}.links a:hover{text-decoration:underline!important;color:#0012af}.fd-icon-link{font-size:1rem;padding-left:5px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i3$7.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i3$7.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: i3$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i3$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1656
+ }
1657
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceDeskFormLayoutContentMojavezComponent, decorators: [{
1658
+ type: Component,
1659
+ args: [{ selector: 'bdc-service-desk-form-layout-content-mojavez', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-layout-grid>\r\n <div [fdLayoutGridCol]=\"6\" style=\"padding: 0\">\r\n <ng-container *ngTemplateOutlet=\"renderTable; context: { $implicit: firstArray, classNames: 'firstTable' }\">\r\n </ng-container>\r\n </div>\r\n <div [fdLayoutGridCol]=\"6\" style=\"padding: 0\">\r\n <ng-container *ngTemplateOutlet=\"renderTable; context: { $implicit: secondArray, classNames: 'secondTable' }\">\r\n </ng-container>\r\n </div>\r\n</fd-layout-grid>\r\n\r\n<ng-template #renderTable let-array let-classNames=\"classNames\">\r\n <table fd-table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\r\n @for (controlItem of array; track controlItem) {\r\n <tr fd-table-row>\r\n <th fd-tabel-cell>{{ controlItem.caption }}</th>\r\n <td fd-tabel-cell>\r\n @switch (controlItem.type) { @case ('Link') {\r\n <a target=\"_blank\" [href]=\"controlItem.value\">{{ controlItem.value }}</a>\r\n } @case ('Relation') {\r\n {{ controlItem.value.$Caption }}\r\n } @case ('MoList') { @for (item of controlItem.value.MoDataList; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon>\r\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n } } @case ('MoList2') { @for (item of controlItem.value.MoDataList; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\"></fd-icon>\r\n <a (click)=\"onLink(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n } } @case ('Caption') {\r\n {{ controlItem.value }}\r\n } @case ('Image') {\r\n {{ controlItem.value.Ext }}\r\n } @case ('Files') { @for (item of controlItem.value.Files; track item) {\r\n <div class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon>\r\n <a (click)=\"onDownload(item)\">{{ item.FileName }}</a>\r\n </div>\r\n } } @default {\r\n {{ controlItem.value }}\r\n } }\r\n </td>\r\n </tr>\r\n }\r\n </table>\r\n</ng-template>\r\n", styles: [".cell{font-size:14px}.bod{border-bottom:1px solid gray;border-right:1px solid gray;height:30px;line-height:30px}.bod :first{border-right:0;border-bottom:0}.anwser{line-height:30px;padding:10px;text-align:justify}.box{padding:0 40px 10px 10px;line-height:30px;display:flex;flex-direction:column;column-count:2;flex-wrap:wrap;height:180px;overflow:hidden}.faq-item-link{font-size:16px;padding-right:25px;cursor:pointer;color:gray}.faq-item-link a{color:gray;cursor:pointer}.faq-item-link a:hover{text-decoration:underline!important}.law-page-header{background:#fff;color:#0854a0;font-size:1.3rem;font-weight:500;padding:5px 15px}.wrapper{border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}table.table-grid{border-collapse:collapse;width:100%;direction:rtl;background-color:#fff}.table-grid td,.table-grid th{border:1px solid grey;text-align:left;padding:12px 8px;text-align:right}.table-grid th{background-color:#e2e2e2;font-size:.825rem;font-weight:500;vertical-align:middle;width:200px}.table-grid td{font-size:.825rem;vertical-align:middle}@media only screen and (max-width: 992px){.secondTable tr:first-child td,.secondTable tr:first-child th{border-top:0}}@media only screen and (min-width: 992px){.secondTable th{border-right:0}}.fd-icon{font-size:2rem;color:#0854a0;padding-left:10px}.links a{line-height:25px;cursor:pointer;display:inline;color:#32363a;vertical-align:top}.links a:hover{text-decoration:underline!important;color:#0012af}.fd-icon-link{font-size:1rem;padding-left:5px}\n"] }]
1660
+ }], propDecorators: { tabContainerRef: [{
1661
+ type: ViewChild,
1662
+ args: ['tabContainerRef']
1663
+ }], tablesRef: [{
1664
+ type: ViewChildren,
1665
+ args: ['tablesRef', { read: ElementRef }]
1666
+ }] } });
1667
+
1668
+ class UlvContextMenuItemShowFileContentComponent extends BaseFormToolbaritemPropsComponent {
1669
+ constructor(_reportValuePipe, _cdr, _dialogService, _sanitize) {
1670
+ super(_reportValuePipe, _cdr);
1671
+ this._reportValuePipe = _reportValuePipe;
1672
+ this._cdr = _cdr;
1673
+ this._dialogService = _dialogService;
1674
+ this._sanitize = _sanitize;
1675
+ this.disabled = false;
1676
+ }
1677
+ ngOnInit() {
1678
+ super.ngOnInit();
1679
+ const mo = this.mo;
1680
+ this.text = this.parameters.ButtonText;
1681
+ this.fdType = this.parameters.FdType$Caption;
1682
+ this.compact = this.parameters.Compact;
1683
+ this.icon = this.parameters.Icon;
1684
+ this.iconOnly = this.parameters.IconOnly;
1685
+ this.fileType = this._reportValuePipe.transform(this.parameters.FieldType, mo, this.allColumns); // نوع
1686
+ this.file = this._reportValuePipe.transform(this.parameters.FieldFile, mo, this.allColumns);
1687
+ this.videoUrl = this._reportValuePipe.transform(this.parameters.FieldVideoUrl, mo, this.allColumns);
1688
+ if (this.fileType === '1' && this.file.Files?.length === 0) {
1689
+ this.disabled = true;
1690
+ }
1691
+ if (this.fileType === '2' && this.videoUrl) {
1692
+ this.disabled = true;
1693
+ }
1694
+ }
1695
+ openDialog(dialog) {
1696
+ let finalUrl;
1697
+ if (this.fileType === '1') {
1698
+ finalUrl = this._sanitize.bypassSecurityTrustResourceUrl(BarsaApi.Common.File.CreateAttachmentUrl(this.file.Files[0].Id, true));
1699
+ }
1700
+ if (this.fileType === '2') {
1701
+ finalUrl = this._sanitize.bypassSecurityTrustResourceUrl(this.videoUrl);
1702
+ }
1703
+ const isMobile = this.deviceName === 'mobile';
1704
+ const x = {
1705
+ data: {
1706
+ url: finalUrl,
1707
+ isVideo: this.fileType === '2',
1708
+ responsivePadding: true,
1709
+ mobile: isMobile
1710
+ }
1711
+ };
1712
+ if (!isMobile) {
1713
+ x.width = '60%';
1714
+ x.height = '56%';
1715
+ }
1716
+ this._dialogService.open(dialog, x);
1717
+ }
1718
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UlvContextMenuItemShowFileContentComponent, deps: [{ token: i1$1.MoReportValuePipe }, { token: i0.ChangeDetectorRef }, { token: i2$2.DialogService }, { token: i3$a.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1719
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UlvContextMenuItemShowFileContentComponent, selector: "bdc-ulv-context-menu-item-show-file-content", usesInheritance: true, ngImport: i0, template: "<button\r\n fd-button\r\n [compact]=\"compact\"\r\n [label]=\"iconOnly ? '' : (text | bbbTranslate)\"\r\n [fdType]=\"fdType\"\r\n [glyph]=\"icon\"\r\n [compact]=\"compact\"\r\n (click)=\"openDialog(pdfDialog)\"\r\n></button>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #pdfDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTplRef>\r\n <fd-dialog-header>\r\n <ng-template fdkTemplate=\"header\">\r\n <div fd-bar-left></div>\r\n <div fd-bar-right>\r\n @if (dialogConfig.height !== '100vh') {\r\n <fd-button-bar\r\n ariaLabel=\"fullscreen\"\r\n [glyph]=\"dialog.data.fullscreen ? 'exitfullscreen' : 'resize'\"\r\n fullscreenDialog\r\n [fullscreen]=\"dialog.data.fullscreen\"\r\n (fullscreenChanged)=\"dialog.data.fullscreen = $event\"\r\n [dialog]=\"dialog\"\r\n [dialogComponent]=\"dialogTplRef\"\r\n ></fd-button-bar>\r\n }\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.dismiss()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n\r\n <fd-dialog-body>\r\n @if (!dialogConfig.data.isVideo && dialogConfig.data.url) {\r\n <object [data]=\"dialogConfig.data.url\" type=\"application/pdf\" width=\"100%\" height=\"98%\"></object>\r\n } @if (dialogConfig.data.isVideo) {\r\n <video controls style=\"width: 100%; height: 98%\">\r\n <source [src]=\"dialogConfig.data.url\" type=\"video/mp4\" />\r\n Your browser does not support HTML video.\r\n </video>\r\n }\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2$1.FullscreenDialogDirective, selector: "[fullscreenDialog]", inputs: ["dialog", "dialogComponent", "fullscreen"], outputs: ["fullscreenChanged"] }, { kind: "directive", type: i3$3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i3$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i4$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i4$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i10.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1720
+ }
1721
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UlvContextMenuItemShowFileContentComponent, decorators: [{
1722
+ type: Component,
1723
+ args: [{ selector: 'bdc-ulv-context-menu-item-show-file-content', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<button\r\n fd-button\r\n [compact]=\"compact\"\r\n [label]=\"iconOnly ? '' : (text | bbbTranslate)\"\r\n [fdType]=\"fdType\"\r\n [glyph]=\"icon\"\r\n [compact]=\"compact\"\r\n (click)=\"openDialog(pdfDialog)\"\r\n></button>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #pdfDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTplRef>\r\n <fd-dialog-header>\r\n <ng-template fdkTemplate=\"header\">\r\n <div fd-bar-left></div>\r\n <div fd-bar-right>\r\n @if (dialogConfig.height !== '100vh') {\r\n <fd-button-bar\r\n ariaLabel=\"fullscreen\"\r\n [glyph]=\"dialog.data.fullscreen ? 'exitfullscreen' : 'resize'\"\r\n fullscreenDialog\r\n [fullscreen]=\"dialog.data.fullscreen\"\r\n (fullscreenChanged)=\"dialog.data.fullscreen = $event\"\r\n [dialog]=\"dialog\"\r\n [dialogComponent]=\"dialogTplRef\"\r\n ></fd-button-bar>\r\n }\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.dismiss()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n\r\n <fd-dialog-body>\r\n @if (!dialogConfig.data.isVideo && dialogConfig.data.url) {\r\n <object [data]=\"dialogConfig.data.url\" type=\"application/pdf\" width=\"100%\" height=\"98%\"></object>\r\n } @if (dialogConfig.data.isVideo) {\r\n <video controls style=\"width: 100%; height: 98%\">\r\n <source [src]=\"dialogConfig.data.url\" type=\"video/mp4\" />\r\n Your browser does not support HTML video.\r\n </video>\r\n }\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"] }]
1724
+ }], ctorParameters: () => [{ type: i1$1.MoReportValuePipe }, { type: i0.ChangeDetectorRef }, { type: i2$2.DialogService }, { type: i3$a.DomSanitizer }] });
1725
+
1726
+ class ResendVerificationCodeComponent extends FieldBaseComponent {
1727
+ constructor() {
1728
+ super(...arguments);
1729
+ this.caption = '00:00';
1730
+ this.timer = 1;
1731
+ this.minutes = '0';
1732
+ this.seconds = '0';
1733
+ this._baseTimeLeft = 120;
1734
+ this._timeLeftCounter = 0;
1735
+ }
1736
+ ngAfterViewInit() {
1737
+ super.ngAfterViewInit();
1738
+ this._timeLeftCounter = this._baseTimeLeft;
1739
+ this.caption = `(${this.caption})`;
1740
+ this._startTimer();
1741
+ }
1742
+ ngOnDestroy() {
1743
+ super.ngOnDestroy();
1744
+ if (this.interval$) {
1745
+ clearInterval(this.interval$);
1746
+ }
1747
+ }
1748
+ onClick() {
1749
+ this.context.fireEvent('click', this.context);
1750
+ }
1751
+ onStartTimer() {
1752
+ this._startTimer();
1753
+ }
1754
+ _startTimer() {
1755
+ this.interval$ = setInterval(() => {
1756
+ if (this._timeLeftCounter > 0) {
1757
+ this._timeLeftCounter--;
1758
+ this.minutes = Math.floor(this._timeLeftCounter / 60).toString();
1759
+ this.seconds = Math.round(this._timeLeftCounter % 60).toString();
1760
+ this.minutes = Number(this.minutes) < 10 ? '0' + this.minutes : this.minutes;
1761
+ this.seconds = Number(this.seconds) < 10 ? '0' + this.seconds : this.seconds;
1762
+ this.caption = `(${this.minutes}:${this.seconds})`;
1763
+ }
1764
+ else {
1765
+ this._timeLeftCounter = this._baseTimeLeft;
1766
+ this.caption = `${this.caption}`;
1767
+ if (this.interval$ != null) {
1768
+ clearInterval(this.interval$);
1769
+ this.interval$ = null;
1770
+ }
1771
+ }
1772
+ this._cdr.detectChanges();
1773
+ }, 1000);
1774
+ }
1775
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResendVerificationCodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1776
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResendVerificationCodeComponent, selector: "bdc-resend-verification-code", usesInheritance: true, ngImport: i0, template: "<button\r\n (click)=\"onClick()\"\r\n fd-button\r\n [disabled]=\"interval$ === null ? null : true\"\r\n (click)=\"onStartTimer()\"\r\n [label]=\"interval$ === null ? ('\u0627\u0631\u0633\u0627\u0644 \u0645\u062C\u062F\u062F' | bbbTranslate) : caption\"\r\n glyph=\"iphone\"\r\n></button>\r\n", styles: [":host{display:block}:host button{width:100%;margin-top:.25rem}\n"], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1777
+ }
1778
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResendVerificationCodeComponent, decorators: [{
1779
+ type: Component,
1780
+ args: [{ selector: 'bdc-resend-verification-code', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<button\r\n (click)=\"onClick()\"\r\n fd-button\r\n [disabled]=\"interval$ === null ? null : true\"\r\n (click)=\"onStartTimer()\"\r\n [label]=\"interval$ === null ? ('\u0627\u0631\u0633\u0627\u0644 \u0645\u062C\u062F\u062F' | bbbTranslate) : caption\"\r\n glyph=\"iphone\"\r\n></button>\r\n", styles: [":host{display:block}:host button{width:100%;margin-top:.25rem}\n"] }]
1781
+ }] });
1782
+
1783
+ class CheckboxButtonComponent extends UiCheckBoxComponent {
1784
+ ngOnInit() {
1785
+ super.ngOnInit();
1786
+ this.trueIcon = this.parameters?.TrueIcon;
1787
+ this.fdType = this.parameters?.FdType$Caption;
1788
+ this.falseIcon = this.parameters?.FalseIcon;
1789
+ }
1790
+ onClick() {
1791
+ this._valueChanged(!this.value);
1792
+ }
1793
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1794
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckboxButtonComponent, selector: "bdc-checkbox-button", usesInheritance: true, ngImport: i0, template: "<button\r\n [disabled]=\"(disableOrReadonly$ | async)!!\"\r\n fd-button\r\n [glyph]=\"value ? trueIcon : falseIcon\"\r\n [fdType]=\"fdType\"\r\n (click)=\"onClick()\"\r\n></button>\r\n", styles: [":host{display:flex;height:100%;align-items:center}button{margin-top:.25rem;margin-bottom:.25rem}\n"], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1795
+ }
1796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxButtonComponent, decorators: [{
1797
+ type: Component,
1798
+ args: [{ selector: 'bdc-checkbox-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<button\r\n [disabled]=\"(disableOrReadonly$ | async)!!\"\r\n fd-button\r\n [glyph]=\"value ? trueIcon : falseIcon\"\r\n [fdType]=\"fdType\"\r\n (click)=\"onClick()\"\r\n></button>\r\n", styles: [":host{display:flex;height:100%;align-items:center}button{margin-top:.25rem;margin-bottom:.25rem}\n"] }]
1799
+ }] });
1800
+
1801
+ class BarcodeFormatPipe {
1802
+ transform(value) {
1803
+ let format = '';
1804
+ for (const enumMember of Object.keys(BarcodeFormat)) {
1805
+ const isValueProperty = parseInt(enumMember, 10) >= 0;
1806
+ if (isValueProperty && Number(enumMember) === value) {
1807
+ format = BarcodeFormat[enumMember];
1808
+ }
1809
+ }
1810
+ return format;
1811
+ }
1812
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarcodeFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1813
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: BarcodeFormatPipe, name: "barcodeFormat" }); }
1814
+ }
1815
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarcodeFormatPipe, decorators: [{
1816
+ type: Pipe,
1817
+ args: [{
1818
+ name: 'barcodeFormat',
1819
+ standalone: false
1820
+ }]
1821
+ }] });
1822
+
1823
+ class ReportTabViewComponent extends ReportViewBaseComponent {
1824
+ ngOnInit() {
1825
+ super.ngOnInit();
1826
+ this.arrowRight = this.rtl ? 'navigation-left-arrow' : 'navigation-right-arrow';
1827
+ this.fieldTitle = this.viewSetting.FieldTitle;
1828
+ this.fieldIcon = this.viewSetting.FieldIcon;
1829
+ this.fieldState = this.viewSetting.FieldState;
1830
+ this.mode = this.viewSetting.Mode$Caption;
1831
+ }
1832
+ onSelectedTabChange(e) {
1833
+ const index = this.moDataList.findIndex((c) => c.Id === e.id);
1834
+ const mo = this.moDataList[index];
1835
+ super.onRowCheck({ mo, index });
1836
+ }
1837
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportTabViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1838
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ReportTabViewComponent, selector: "bdc-report-tab-view", usesInheritance: true, ngImport: i0, template: "<fd-tab-list [expandOverflowText]=\"'More' | bbbTranslate\" (selectedTabChange)=\"onSelectedTabChange($event)\">\r\n @for (mo of moDataList; track mo) {\r\n <fd-tab [title]=\"mo.$Caption\" [id]=\"mo.Id\"> </fd-tab>\r\n }\r\n</fd-tab-list>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "selectedTabIndexChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i1$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1839
+ }
1840
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportTabViewComponent, decorators: [{
1841
+ type: Component,
1842
+ args: [{ selector: 'bdc-report-tab-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-tab-list [expandOverflowText]=\"'More' | bbbTranslate\" (selectedTabChange)=\"onSelectedTabChange($event)\">\r\n @for (mo of moDataList; track mo) {\r\n <fd-tab [title]=\"mo.$Caption\" [id]=\"mo.Id\"> </fd-tab>\r\n }\r\n</fd-tab-list>\r\n" }]
1843
+ }] });
1844
+
1845
+ class ReportLineChartViewComponent extends ReportViewBaseComponent {
1846
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportLineChartViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1847
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1848
+ }
1849
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportLineChartViewComponent, decorators: [{
1850
+ type: Component,
1851
+ args: [{ selector: 'bdc-report-line-chart-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, 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"] }]
1852
+ }] });
1853
+
1854
+ class CardHeaderKpiComponent extends CardHeaderLogoTitleSubtitleComponent {
1855
+ ngOnInit() {
1856
+ const parentField = this.parameters.InheritanceInfo?.ParentFieldName;
1857
+ if (parentField) {
1858
+ const val = this.parameters[parentField];
1859
+ if (val) {
1860
+ Object.keys(val).forEach((c) => {
1861
+ if (!c.startsWith('$') && c !== 'Id') {
1862
+ this.parameters[c] = val[c];
1863
+ }
1864
+ });
1865
+ }
1866
+ }
1867
+ super.ngOnInit();
1868
+ const parameters = this.parameters;
1869
+ if (parameters != null) {
1870
+ this.kpiValue = this._rval.transform(parameters.KpiValue, this.mo, this.allColumns, true);
1871
+ this.kpiStatus = this._rval.transform(parameters.KpiStatus, this.mo, this.allColumns, true);
1872
+ this.kpiAnalyticalLabel = parameters.KpiAnalyticalLabel;
1873
+ this.kpiAnalayticalSymbol = this._rval.transform(parameters.KpiAnalayticalSymbol, this.mo, this.allColumns);
1874
+ this.kpiAnalyticalContent = this._rval.transform(parameters.KpiAnalyticalContent, this.mo, this.allColumns);
1875
+ }
1876
+ }
1877
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardHeaderKpiComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1878
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CardHeaderKpiComponent, selector: "bdc-card-header-kpi", usesInheritance: true, ngImport: i0, template: "<fd-card-header>\r\n <fd-card-main-header>\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n @if (isCheckList) {\r\n <fd-checkbox\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n }\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"titleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title }}\r\n </h2>\r\n @if (!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\r\n <div\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [styleIndex]=\"styleIndex\"\r\n [mo]=\"mo\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n }\r\n </div>\r\n @if (canView) {\r\n <button\r\n fd-button\r\n (click)=\"events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n }\r\n </div>\r\n\r\n <fd-card-kpi-header>\r\n <strong fd-card-kpi-value [status]=\"kpiStatus\">{{ kpiValue }}</strong>\r\n <span\r\n fd-card-kpi-scale-icon\r\n [glyph]=\"kpiStatus === 'positive' ? 'up' : 'down'\"\r\n fd-object-status\r\n [status]=\"kpiStatus\"\r\n aria-label=\"up arrow\"\r\n title=\"up arrow\"\r\n ></span>\r\n <span fd-card-kpi-scale-text fd-object-status status=\"positive\">\u00B0C</span>\r\n\r\n <div fd-card-kpi-analytics>\r\n <label fd-card-kpi-analytics-label>{{ kpiAnalyticalLabel }}</label>\r\n <span fd-card-kpi-analytics-content>{{ kpiAnalyticalContent }}{{ kpiAnalayticalSymbol }}</span>\r\n </div>\r\n </fd-card-kpi-header>\r\n\r\n <h4 fd-card-second-subtitle>{{ subtitle }}</h4>\r\n </fd-card-main-header>\r\n</fd-card-header>\r\n", styles: ["fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:.9rem}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$1.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "contextMenuOverflowText", "appendTo"], outputs: ["commandClick"] }, { kind: "directive", type: i2$1.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$3.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i4$3.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "directive", type: i4$3.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i4$3.CardSecondSubtitleDirective, selector: "[fd-card-second-subtitle]" }, { kind: "component", type: i4$3.CardKpiHeaderComponent, selector: "fd-card-kpi-header" }, { kind: "directive", type: i4$3.CardKpiValueDirective, selector: "[fd-card-kpi-value]", inputs: ["status"] }, { kind: "directive", type: i4$3.CardKpiScaleIconDirective, selector: "[fd-card-kpi-scale-icon]" }, { kind: "directive", type: i4$3.CardKpiScaleTextDirective, selector: "[fd-card-kpi-scale-text]" }, { kind: "directive", type: i4$3.CardKpiAnalyticsDirective, selector: "[fd-card-kpi-analytics]" }, { kind: "directive", type: i4$3.CardKpiAnalyticsLabelDirective, selector: "[fd-card-kpi-analytics-label]" }, { kind: "directive", type: i4$3.CardKpiAnalyticsContentDirective, selector: "[fd-card-kpi-analytics-content]" }, { kind: "component", type: i6$2.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i6$3.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1879
+ }
1880
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardHeaderKpiComponent, decorators: [{
1881
+ type: Component,
1882
+ args: [{ selector: 'bdc-card-header-kpi', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-card-header>\r\n <fd-card-main-header>\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n @if (isCheckList) {\r\n <fd-checkbox\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n }\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"titleDbName\"\r\n [styleIndex]=\"styleIndex\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title }}\r\n </h2>\r\n @if (!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0) {\r\n <div\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [styleIndex]=\"styleIndex\"\r\n [mo]=\"mo\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n }\r\n </div>\r\n @if (canView) {\r\n <button\r\n fd-button\r\n (click)=\"events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n }\r\n </div>\r\n\r\n <fd-card-kpi-header>\r\n <strong fd-card-kpi-value [status]=\"kpiStatus\">{{ kpiValue }}</strong>\r\n <span\r\n fd-card-kpi-scale-icon\r\n [glyph]=\"kpiStatus === 'positive' ? 'up' : 'down'\"\r\n fd-object-status\r\n [status]=\"kpiStatus\"\r\n aria-label=\"up arrow\"\r\n title=\"up arrow\"\r\n ></span>\r\n <span fd-card-kpi-scale-text fd-object-status status=\"positive\">\u00B0C</span>\r\n\r\n <div fd-card-kpi-analytics>\r\n <label fd-card-kpi-analytics-label>{{ kpiAnalyticalLabel }}</label>\r\n <span fd-card-kpi-analytics-content>{{ kpiAnalyticalContent }}{{ kpiAnalayticalSymbol }}</span>\r\n </div>\r\n </fd-card-kpi-header>\r\n\r\n <h4 fd-card-second-subtitle>{{ subtitle }}</h4>\r\n </fd-card-main-header>\r\n</fd-card-header>\r\n", styles: ["fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:.9rem}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}\n"] }]
1883
+ }] });
1884
+
1885
+ class CardContentLineChartComponent extends BaseItemContentPropsComponent {
1886
+ ngOnInit() {
1887
+ super.ngOnInit();
1888
+ const parameters = this.parameters;
1889
+ const { MethodParametersFieldName, RunBlMethodName } = parameters;
1890
+ const methodParameters = [];
1891
+ MethodParametersFieldName.split(',').forEach((c) => {
1892
+ const value = this.mo[c];
1893
+ if (typeof value === 'object' && value.Id) {
1894
+ methodParameters.push(value.Id);
1895
+ }
1896
+ else {
1897
+ methodParameters.push(value);
1898
+ }
1899
+ });
1900
+ BarsaApi.Bw.RunBlMethodAsync({
1901
+ Parameters: methodParameters,
1902
+ Method: RunBlMethodName,
1903
+ SuccessFn: (chartOption) => {
1904
+ this.chartOption = JSON.parse(chartOption);
1905
+ this._cdr.detectChanges();
1906
+ },
1907
+ FailFn: () => { }
1908
+ });
1909
+ }
1910
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardContentLineChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1911
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CardContentLineChartComponent, selector: "bdc-card-content-line-chart", usesInheritance: true, ngImport: i0, template: "@if (chartOption) {\r\n<div class=\"card-content\" #elemRef>\r\n <div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n</div>\r\n}\r\n", styles: [":host{display:block;padding:15px}.card-content{height:300px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1912
+ }
1913
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardContentLineChartComponent, decorators: [{
1914
+ type: Component,
1915
+ args: [{ selector: 'bdc-card-content-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (chartOption) {\r\n<div class=\"card-content\" #elemRef>\r\n <div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n</div>\r\n}\r\n", styles: [":host{display:block;padding:15px}.card-content{height:300px}\n"] }]
1916
+ }] });
1917
+
1918
+ class FormChartContentComponent extends FormPropsBaseComponent {
1919
+ ngOnInit() {
1920
+ super.ngOnInit();
1921
+ const settings = this.settings;
1922
+ const { MethodParametersFieldName, RunBlMethodName } = settings;
1923
+ const methodParameters = [];
1924
+ MethodParametersFieldName.split(',').forEach((c) => {
1925
+ const value = this.mo[c];
1926
+ if (typeof value === 'object' && value.Id) {
1927
+ methodParameters.push(value.Id);
1928
+ }
1929
+ else {
1930
+ methodParameters.push(value);
1931
+ }
1932
+ });
1933
+ BarsaApi.Bw.RunBlMethodAsync({
1934
+ Parameters: methodParameters,
1935
+ Method: RunBlMethodName,
1936
+ SuccessFn: (chartOption) => {
1937
+ this.chartOption = JSON.parse(chartOption);
1938
+ this._cdr.detectChanges();
1939
+ },
1940
+ FailFn: () => { }
1941
+ });
1942
+ }
1943
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormChartContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1944
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FormChartContentComponent, selector: "bdc-form-chart-content", usesInheritance: true, ngImport: i0, template: "@if (chartOption) {\r\n<div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n}\r\n", styles: [":host{display:block;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1945
+ }
1946
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormChartContentComponent, decorators: [{
1947
+ type: Component,
1948
+ args: [{ selector: 'bdc-form-chart-content', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (chartOption) {\r\n<div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n}\r\n", styles: [":host{display:block;height:100%}\n"] }]
1949
+ }] });
1950
+
1951
+ class TableViewVerticalColumnsComponent extends ReportViewBaseComponent {
1952
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewVerticalColumnsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1953
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TableViewVerticalColumnsComponent, selector: "bdc-table-view-vertical-columns", usesInheritance: true, ngImport: i0, template: "@for (mo of moDataList | multipleGroupBy: groupby; track mo; let index = $index) { @if (mo.$Group) {\r\n<h3>{{ mo.$Group }}</h3>\r\n<ng-container *ngTemplateOutlet=\"tplTable; context: { $implicit: mo.$Children, index: this.index }\"></ng-container>\r\n} }\r\n<ng-template #tplTable let-children let-index=\"index\">\r\n <table fd-table [style.margin-top]=\"index > 0 ? '2rem' : 0\">\r\n <tbody fd-table-body>\r\n @for (column of columns; track column) {\r\n <tr fd-table-row>\r\n <th fd-table-cell>\r\n <strong>{{ column.Alias }}:</strong>\r\n </th>\r\n @for (mo of children; track mo; let index = $index) {\r\n <td\r\n fd-table-cell\r\n #tdEl\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [hostEl]=\"tdEl\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [dbName]=\"column.Name\"\r\n >\r\n <bsu-column-renderer\r\n [mo]=\"mo\"\r\n [column]=\"column\"\r\n [value]=\"column | columnValue: mo | bbbTranslate\"\r\n [icon]=\"column | columnIcon: mo\"\r\n [editMode]=\"false\"\r\n [isChecked]=\"false\"\r\n [isNewInlineMo]=\"false\"\r\n [index]=\"index\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [formLayoutShowLabel]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n ></bsu-column-renderer>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "allColumns", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "isMobile", "fdTextMode", "deviceName", "deviceSize", "value", "icon"] }, { kind: "directive", type: i2$1.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i3$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i3$6.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i3$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i3$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "pipe", type: i1$1.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1$1.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i1$1.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1954
+ }
1955
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewVerticalColumnsComponent, decorators: [{
1956
+ type: Component,
1957
+ args: [{ selector: 'bdc-table-view-vertical-columns', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@for (mo of moDataList | multipleGroupBy: groupby; track mo; let index = $index) { @if (mo.$Group) {\r\n<h3>{{ mo.$Group }}</h3>\r\n<ng-container *ngTemplateOutlet=\"tplTable; context: { $implicit: mo.$Children, index: this.index }\"></ng-container>\r\n} }\r\n<ng-template #tplTable let-children let-index=\"index\">\r\n <table fd-table [style.margin-top]=\"index > 0 ? '2rem' : 0\">\r\n <tbody fd-table-body>\r\n @for (column of columns; track column) {\r\n <tr fd-table-row>\r\n <th fd-table-cell>\r\n <strong>{{ column.Alias }}:</strong>\r\n </th>\r\n @for (mo of children; track mo; let index = $index) {\r\n <td\r\n fd-table-cell\r\n #tdEl\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [hostEl]=\"tdEl\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [dbName]=\"column.Name\"\r\n >\r\n <bsu-column-renderer\r\n [mo]=\"mo\"\r\n [column]=\"column\"\r\n [value]=\"column | columnValue: mo | bbbTranslate\"\r\n [icon]=\"column | columnIcon: mo\"\r\n [editMode]=\"false\"\r\n [isChecked]=\"false\"\r\n [isNewInlineMo]=\"false\"\r\n [index]=\"index\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [formLayoutShowLabel]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n ></bsu-column-renderer>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n" }]
1958
+ }] });
1959
+
1960
+ class QueryStringObservableComponent extends FieldBaseComponent {
1961
+ ngOnInit() {
1962
+ super.ngOnInit();
1963
+ this._activatedRoute.queryParams.subscribe((queryParams) => {
1964
+ const value = queryParams[this.Setting.ControlName];
1965
+ if (value) {
1966
+ this.value = value;
1967
+ this.valueChange.emit(this.value);
1968
+ }
1969
+ });
1970
+ }
1971
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryStringObservableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1972
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: QueryStringObservableComponent, selector: "bdc-query-string-observable", usesInheritance: true, ngImport: i0, template: "", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1973
+ }
1974
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryStringObservableComponent, decorators: [{
1975
+ type: Component,
1976
+ args: [{ selector: 'bdc-query-string-observable', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "" }]
1977
+ }] });
1978
+
1979
+ class QueryStringFormObservableComponent extends BaseComponent {
1980
+ constructor(_activatedRoute, _router, _portalService) {
1981
+ super();
1982
+ this._activatedRoute = _activatedRoute;
1983
+ this._router = _router;
1984
+ this._portalService = _portalService;
1985
+ }
1986
+ ngOnInit() {
1987
+ super.ngOnInit();
1988
+ this._portalService.navigationEnd$.pipe(takeUntil$1(this._onDestroy$)).subscribe((event) => {
1989
+ if (event?.url.endsWith('/query')) {
1990
+ this._router.navigate(['../']);
1991
+ }
1992
+ });
1993
+ const params = this._activatedRoute.snapshot.queryParams;
1994
+ const strActionList = params['actionList'];
1995
+ if (strActionList) {
1996
+ const actionList = JSON.parse(strActionList.replaceAll("'", '"'));
1997
+ if (actionList) {
1998
+ BarsaApi.Ul.WorkflowPanelCtrlr.RunWorkflowActionList(actionList, null);
1999
+ }
2000
+ }
2001
+ }
2002
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryStringFormObservableComponent, deps: [{ token: i1$5.ActivatedRoute }, { token: i1$5.Router }, { token: i1$1.PortalService }], target: i0.ɵɵFactoryTarget.Component }); }
2003
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: QueryStringFormObservableComponent, selector: "bdc-query-string-form-observable", usesInheritance: true, ngImport: i0, template: "", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2004
+ }
2005
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryStringFormObservableComponent, decorators: [{
2006
+ type: Component,
2007
+ args: [{ selector: 'bdc-query-string-form-observable', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "" }]
2008
+ }], ctorParameters: () => [{ type: i1$5.ActivatedRoute }, { type: i1$5.Router }, { type: i1$1.PortalService }] });
2009
+
2010
+ class G4bDetailsComponent extends BaseItemContentPropsComponent {
2011
+ ngOnInit() {
2012
+ super.ngOnInit();
2013
+ this._containerRef.createEmbeddedView(this.setting.$detailsFormItems, {
2014
+ $implicit: this.setting.$detailsColumns,
2015
+ mo: this.mo,
2016
+ inlineEditMode: this.inlineEditMode,
2017
+ isNewInlineMo: this.isNewInlineMo,
2018
+ layout94: this.layout94$
2019
+ });
2020
+ }
2021
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: G4bDetailsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2022
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: G4bDetailsComponent, selector: "bdc-g4b-details", viewQueries: [{ propertyName: "_containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div #container></div>\r\n<!-- <fd-info-label [label]=\"'\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\" [color]=\"'1'\" [title]=\"'\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\"></fd-info-label> -->\r\n<div fd-form-item class=\"status-wrapper\" style=\"width: 100%; padding-bottom: 1rem\" [attr.deviceSize]=\"deviceSize\">\r\n <label fd-form-label>\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A </label>\r\n <fd-micro-process-flow class=\"flow\">\r\n <fd-micro-process-flow-item [state]=\"'positive'\">\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'accept'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <!-- <h4 fd-title class=\"fd-object-number--informative\">\u0634\u0631\u0648\u0639 \u062F\u0631\u062E\u0648\u0627\u0633\u062A</h4> -->\r\n <button\r\n style=\"pointer-events: none; border: none\"\r\n fd-button\r\n [fdType]=\"'positive'\"\r\n [label]=\"'\u0634\u0631\u0648\u0639 \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\"\r\n [glyph]=\"'accept'\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <button fd-button [fdType]=\"'standard'\" [label]=\"'\u062A\u06A9\u0645\u06CC\u0644 \u0645\u062F\u0627\u0631\u06A9 \u062A\u0648\u0633\u0637 \u0645\u062A\u0642\u0627\u0636\u06CC'\" [glyph]=\"''\"></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'less'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <button\r\n [disabled]=\"true\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0645\u062F\u0627\u0631\u06A9 \u062A\u0648\u0633\u0637 \u062F\u0633\u062A\u06AF\u0627\u0647 \u0645\u0631\u0628\u0648\u0637\u0647'\"\r\n [glyph]=\"''\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'less'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <button\r\n [disabled]=\"true\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'\u062A\u0639\u06CC\u06CC\u0646 \u0648\u0636\u0639\u06CC\u062A \u0635\u062F\u0648\u0631 \u0645\u062C\u0648\u0632'\"\r\n [glyph]=\"''\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n </fd-micro-process-flow>\r\n</div>\r\n", styles: [".showdetails .form-items{display:flex;justify-content:flex-start;padding:0 1rem 1rem;width:100%;column-gap:2rem}.showdetails .form-items .fd-form-item bsu-column-renderer{font-size:1.275rem}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}fd-info-label{font-size:1rem;width:auto;height:2rem;line-height:2rem}fd-info-label ::ng-deep span{line-height:2rem!important}.status-wrapper[deviceSize=m]{width:600px!important}.status-wrapper[deviceSize=s]{width:380px!important}\n"], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6$1.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i6$1.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "allowWrap", "inlineHelpLabel", "id"] }, { kind: "component", type: i3$2.MicroProcessFlowComponent, selector: "fd-micro-process-flow", inputs: ["independentSteps", "transitionSpeed", "transitionTimingFunction"] }, { kind: "component", type: i3$2.MicroProcessFlowItemComponent, selector: "fd-micro-process-flow-item", inputs: ["state", "intermediate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2023
+ }
2024
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: G4bDetailsComponent, decorators: [{
2025
+ type: Component,
2026
+ args: [{ selector: 'bdc-g4b-details', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div #container></div>\r\n<!-- <fd-info-label [label]=\"'\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\" [color]=\"'1'\" [title]=\"'\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\"></fd-info-label> -->\r\n<div fd-form-item class=\"status-wrapper\" style=\"width: 100%; padding-bottom: 1rem\" [attr.deviceSize]=\"deviceSize\">\r\n <label fd-form-label>\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A </label>\r\n <fd-micro-process-flow class=\"flow\">\r\n <fd-micro-process-flow-item [state]=\"'positive'\">\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'accept'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <!-- <h4 fd-title class=\"fd-object-number--informative\">\u0634\u0631\u0648\u0639 \u062F\u0631\u062E\u0648\u0627\u0633\u062A</h4> -->\r\n <button\r\n style=\"pointer-events: none; border: none\"\r\n fd-button\r\n [fdType]=\"'positive'\"\r\n [label]=\"'\u0634\u0631\u0648\u0639 \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\"\r\n [glyph]=\"'accept'\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <button fd-button [fdType]=\"'standard'\" [label]=\"'\u062A\u06A9\u0645\u06CC\u0644 \u0645\u062F\u0627\u0631\u06A9 \u062A\u0648\u0633\u0637 \u0645\u062A\u0642\u0627\u0636\u06CC'\" [glyph]=\"''\"></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'less'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <button\r\n [disabled]=\"true\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0645\u062F\u0627\u0631\u06A9 \u062A\u0648\u0633\u0637 \u062F\u0633\u062A\u06AF\u0627\u0647 \u0645\u0631\u0628\u0648\u0637\u0647'\"\r\n [glyph]=\"''\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'less'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <button\r\n [disabled]=\"true\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'\u062A\u0639\u06CC\u06CC\u0646 \u0648\u0636\u0639\u06CC\u062A \u0635\u062F\u0648\u0631 \u0645\u062C\u0648\u0632'\"\r\n [glyph]=\"''\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n </fd-micro-process-flow>\r\n</div>\r\n", styles: [".showdetails .form-items{display:flex;justify-content:flex-start;padding:0 1rem 1rem;width:100%;column-gap:2rem}.showdetails .form-items .fd-form-item bsu-column-renderer{font-size:1.275rem}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}fd-info-label{font-size:1rem;width:auto;height:2rem;line-height:2rem}fd-info-label ::ng-deep span{line-height:2rem!important}.status-wrapper[deviceSize=m]{width:600px!important}.status-wrapper[deviceSize=s]{width:380px!important}\n"] }]
2027
+ }], propDecorators: { _containerRef: [{
2028
+ type: ViewChild,
2029
+ args: ['container', { static: true, read: ViewContainerRef }]
2030
+ }] } });
2031
+
2032
+ class AvatarComponent extends BaseItemContentPropsComponent {
2033
+ ngOnInit() {
2034
+ super.ngOnInit();
2035
+ this._setProps(this.mo);
2036
+ }
2037
+ ngOnChanges(changes) {
2038
+ const { mo } = changes;
2039
+ if (mo && !mo.firstChange) {
2040
+ this._setProps(mo.currentValue);
2041
+ this._cdr.detectChanges();
2042
+ }
2043
+ }
2044
+ _setProps(mo) {
2045
+ this.pictureId = this.mo[this.parameters.FieldName]?.FileId;
2046
+ }
2047
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AvatarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2048
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AvatarComponent, selector: "bdc-avatar", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-card>\r\n <fd-card-header>\r\n <fd-card-main-header>\r\n <fd-avatar\r\n [placeholder]=\"!mo[parameters.FieldName]\"\r\n [size]=\"'xs'\"\r\n [glyph]=\"parameters.DefaultIcon || null\"\r\n [circle]=\"parameters.Circle\"\r\n [placeHolder]=\"parameters.DefaultIcon!!\"\r\n [image]=\"pictureId ? (pictureId | picFieldSrc: 'PictureFileInfo':mo.Id:column.FieldDefId) : null\"\r\n alterIcon=\"alt|content|backup|default-icon\"\r\n ></fd-avatar>\r\n <h2 fd-card-title nowraptext width=\"90%\">\r\n {{ column.Name | val: mo:true | bbbTranslate }}\r\n </h2>\r\n <h3 fd-card-subtitle nowraptext>{{ parameters.Subtitle | rval: mo:allColumns:true | bbbTranslate }}</h3>\r\n </fd-card-main-header>\r\n </fd-card-header>\r\n</fd-card>\r\n", styles: [":host{display:flex;align-items:flex-start;column-gap:5px;padding:3px 0;width:100%}.avatar-data{display:flex;flex-direction:column;row-gap:5px}fd-card{border:none;box-shadow:none;background:transparent!important}fd-card-header{border:none!important;background:transparent!important}fd-card-header:hover{background:transparent!important}fd-card-header ::ng-deep .fd-card__header-main{background:transparent!important;padding:.2rem 0!important}fd-card,fd-card-header{cursor:default;font-weight:inherit!important}fd-card:focus:before,fd-card-header:focus:before{border:none!important}fd-card ::ng-deep .fd-card__title-area,fd-card ::ng-deep .fd-card__header-text,fd-card ::ng-deep .fd-card__subtitle-area,fd-card ::ng-deep h2,fd-card ::ng-deep h3,fd-card-header ::ng-deep .fd-card__title-area,fd-card-header ::ng-deep .fd-card__header-text,fd-card-header ::ng-deep .fd-card__subtitle-area,fd-card-header ::ng-deep h2,fd-card-header ::ng-deep h3{font-weight:inherit!important}fd-card-header{padding:0!important;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1$1.PlaceHolderDirective, selector: "[placeHolder]", inputs: ["placeHolder"] }, { kind: "directive", type: i1$1.NowraptextDirective, selector: "[nowraptext]", inputs: ["width"] }, { kind: "component", type: i3$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4$3.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i4$3.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i4$3.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "directive", type: i4$3.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i4$3.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "pipe", type: i1$1.MoValuePipe, name: "val" }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2049
+ }
2050
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AvatarComponent, decorators: [{
2051
+ type: Component,
2052
+ args: [{ selector: 'bdc-avatar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-card>\r\n <fd-card-header>\r\n <fd-card-main-header>\r\n <fd-avatar\r\n [placeholder]=\"!mo[parameters.FieldName]\"\r\n [size]=\"'xs'\"\r\n [glyph]=\"parameters.DefaultIcon || null\"\r\n [circle]=\"parameters.Circle\"\r\n [placeHolder]=\"parameters.DefaultIcon!!\"\r\n [image]=\"pictureId ? (pictureId | picFieldSrc: 'PictureFileInfo':mo.Id:column.FieldDefId) : null\"\r\n alterIcon=\"alt|content|backup|default-icon\"\r\n ></fd-avatar>\r\n <h2 fd-card-title nowraptext width=\"90%\">\r\n {{ column.Name | val: mo:true | bbbTranslate }}\r\n </h2>\r\n <h3 fd-card-subtitle nowraptext>{{ parameters.Subtitle | rval: mo:allColumns:true | bbbTranslate }}</h3>\r\n </fd-card-main-header>\r\n </fd-card-header>\r\n</fd-card>\r\n", styles: [":host{display:flex;align-items:flex-start;column-gap:5px;padding:3px 0;width:100%}.avatar-data{display:flex;flex-direction:column;row-gap:5px}fd-card{border:none;box-shadow:none;background:transparent!important}fd-card-header{border:none!important;background:transparent!important}fd-card-header:hover{background:transparent!important}fd-card-header ::ng-deep .fd-card__header-main{background:transparent!important;padding:.2rem 0!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"] }]
2053
+ }] });
2054
+
2055
+ class G4bEstelamComponent extends BaseItemContentPropsComponent {
2056
+ constructor() {
2057
+ super(...arguments);
2058
+ this.natijeh = 1;
2059
+ this.options = ['رد استعلام', 'تایید استعلام', 'در انتظار پاسخ'];
2060
+ }
2061
+ ngOnInit() {
2062
+ super.ngOnInit();
2063
+ }
2064
+ onClick(e) {
2065
+ if (this.isChecked) {
2066
+ e.stopPropagation();
2067
+ e.preventDefault();
2068
+ }
2069
+ }
2070
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: G4bEstelamComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2071
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: G4bEstelamComponent, selector: "bdc-g4b-estelam", usesInheritance: true, ngImport: i0, template: "<div fd-form-item class=\"textarea\">\r\n <label fd-form-label for=\"input-2\">\u067E\u0627\u0633\u062E \u0627\u0633\u062A\u0639\u0644\u0627\u0645</label>\r\n <textarea fd-form-control style=\"height: 1.8rem\"></textarea>\r\n</div>\r\n\r\n<div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-segmented-button [(ngModel)]=\"natijeh\" (click)=\"onClick($event)\">\r\n <button fd-button [label]=\"'\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u067E\u0627\u0633\u062E'\" value=\"1\" [fdType]=\"'standard'\"></button>\r\n <button fd-button [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"2\" [fdType]=\"'positive'\"></button>\r\n <button fd-button [label]=\"'\u0631\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"3\" [fdType]=\"'negative'\"></button>\r\n </fd-segmented-button>\r\n</div>\r\n<!-- <div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-select placeholder=\"Select value\" stateMessage=\"Success message\" state=\"success\">\r\n <li fd-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</li>\r\n </fd-select>\r\n</div> -->\r\n", styles: [":host{display:flex;column-gap:1rem;padding:1rem 0}fd-segmented-button{margin:.1875rem 0}.textarea{flex-grow:1}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6$1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i6$1.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i6$1.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "allowWrap", "inlineHelpLabel", "id"] }, { kind: "component", type: i3$1.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle", "vertical"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2072
+ }
2073
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: G4bEstelamComponent, decorators: [{
2074
+ type: Component,
2075
+ args: [{ selector: 'bdc-g4b-estelam', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, 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"] }]
2076
+ }] });
2077
+
2078
+ class TimerCountDownComponent extends FieldBaseComponent {
2079
+ ngOnInit() {
2080
+ super.ngOnInit();
2081
+ this._setCountDown(this.value);
2082
+ }
2083
+ ngOnDestroy() {
2084
+ super.ngOnDestroy();
2085
+ if (this._interval) {
2086
+ clearInterval(this._interval);
2087
+ }
2088
+ }
2089
+ _setValue(value) {
2090
+ super._setValue(value);
2091
+ this._setCountDown(value);
2092
+ }
2093
+ _setCountDown(value) {
2094
+ const keysInValue = Object.keys(value);
2095
+ let _tempValue = value;
2096
+ if (keysInValue.length) {
2097
+ const findKeyDate = keysInValue.find((c) => !isNaN(Date.parse(value[c])));
2098
+ if (findKeyDate) {
2099
+ _tempValue = new Date(value[findKeyDate]);
2100
+ }
2101
+ }
2102
+ const exp = this._dateService.getMoment(_tempValue);
2103
+ if (this._interval) {
2104
+ clearInterval(this._interval);
2105
+ this._interval = null;
2106
+ }
2107
+ this._interval = setInterval(() => {
2108
+ const now = this._dateService.getMoment(new Date());
2109
+ const diffDuration = this._dateService.duration(exp.diff(now));
2110
+ const month = diffDuration.months();
2111
+ const days = diffDuration.days();
2112
+ const hours = diffDuration.hours().toLocaleString('en-US', {
2113
+ minimumIntegerDigits: 2,
2114
+ useGrouping: false
2115
+ });
2116
+ const minutes = diffDuration.minutes().toLocaleString('en-US', {
2117
+ minimumIntegerDigits: 2,
2118
+ useGrouping: false
2119
+ });
2120
+ const seconds = diffDuration.seconds().toLocaleString('en-US', {
2121
+ minimumIntegerDigits: 2,
2122
+ useGrouping: false
2123
+ });
2124
+ this.countDownText = `
2125
+ ${this._getMonthText(month)}
2126
+ ${this._daysText(days)}
2127
+ ${this._getTimeText(hours, minutes, seconds)}`;
2128
+ this._cdr.detectChanges();
2129
+ }, 1000);
2130
+ }
2131
+ _getMonthText(month) {
2132
+ return month > 0 ? `${month} ماه` : '';
2133
+ }
2134
+ _daysText(days) {
2135
+ return days > 0 ? `${days} روز` : '';
2136
+ }
2137
+ _getTimeText(hours, minutes, seconds) {
2138
+ if (hours < 0 || minutes < 0 || seconds < 0) {
2139
+ if (this.parameters?.ExpireViewMode) {
2140
+ switch (this.parameters.ExpireViewMode) {
2141
+ case 1:
2142
+ return `00:00:00`;
2143
+ break;
2144
+ case 2:
2145
+ return `پایان یافته`;
2146
+ break;
2147
+ case 3:
2148
+ return '';
2149
+ break;
2150
+ case 4: // نمایش زمان گذشته
2151
+ return `${hours}:${minutes}:${seconds}`;
2152
+ break;
2153
+ }
2154
+ }
2155
+ return `00:00:00`;
2156
+ }
2157
+ return `${hours}:${minutes}:${seconds}`;
2158
+ }
2159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimerCountDownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TimerCountDownComponent, selector: "bdc-timer-count-down", providers: [
2161
+ {
2162
+ provide: DateService,
2163
+ useFactory: getDateService,
2164
+ deps: [LogService]
2165
+ }
2166
+ ], usesInheritance: true, ngImport: i0, template: "<span>{{ countDownText }}</span>\r\n", styles: [":host{display:block;width:110px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2167
+ }
2168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimerCountDownComponent, decorators: [{
2169
+ type: Component,
2170
+ args: [{ selector: 'bdc-timer-count-down', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2171
+ {
2172
+ provide: DateService,
2173
+ useFactory: getDateService,
2174
+ deps: [LogService]
2175
+ }
2176
+ ], standalone: false, template: "<span>{{ countDownText }}</span>\r\n", styles: [":host{display:block;width:110px}\n"] }]
2177
+ }] });
2178
+
2179
+ class MicroProccessFlowComponent extends BaseComponent {
2180
+ /**
2181
+ *
2182
+ */
2183
+ constructor(_el) {
2184
+ super();
2185
+ this._el = _el;
2186
+ this.selectedChange = new EventEmitter();
2187
+ }
2188
+ ngOnInit() {
2189
+ super.ngOnInit();
2190
+ this._setIndex(this.selected, this.items);
2191
+ this.maxWidth = this._el.nativeElement.offsetWidth;
2192
+ }
2193
+ onItemClick(item) {
2194
+ this.selectedChange.emit(item);
2195
+ }
2196
+ ngOnChanges(changes) {
2197
+ const { selected, items } = changes;
2198
+ if (selected && !selected.firstChange) {
2199
+ this._setIndex(selected.currentValue, this.items);
2200
+ }
2201
+ else if (items && !items.firstChange) {
2202
+ this._setIndex(this.selected, items.currentValue);
2203
+ }
2204
+ }
2205
+ _setIndex(val, items) {
2206
+ this.selectedIndex = items.findIndex((c) => (this.idIskey ? c.id === val : c.label === val));
2207
+ }
2208
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MicroProccessFlowComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
2209
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MicroProccessFlowComponent, selector: "bdc-micro-proccess-flow", inputs: { items: "items", selected: "selected", readonly: "readonly", idIskey: "idIskey" }, outputs: { selectedChange: "selectedChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-micro-process-flow class=\"flow\" [style.max-width.px]=\"maxWidth\">\r\n @for (item of items; track item; let i = $index) {\r\n <fd-micro-process-flow-item [state]=\"i <= selectedIndex ? 'positive' : 'none'\">\r\n <div class=\"flow-item\">\r\n @if (selectedIndex > -1) {\r\n <button\r\n [class.reached]=\"i <= selectedIndex\"\r\n fd-button\r\n [fdType]=\"i <= selectedIndex ? 'positive' : i === selectedIndex + 1 ? 'standard' : 'transparent'\"\r\n [label]=\"item.label\"\r\n [glyph]=\"i <= selectedIndex ? 'accept' : null\"\r\n [disabled]=\"readonly || (i > selectedIndex + 1 && selectedIndex > -1)\"\r\n (click)=\"onItemClick(item)\"\r\n ></button>\r\n } @if (selectedIndex === -1) {\r\n <button\r\n [class.reached]=\"false\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"item.label\"\r\n [glyph]=\"null\"\r\n [disabled]=\"readonly\"\r\n (click)=\"onItemClick(item)\"\r\n ></button>\r\n }\r\n </div>\r\n </fd-micro-process-flow-item>\r\n }\r\n</fd-micro-process-flow>\r\n", styles: [":host{display:block}.reached{pointer-events:none;border:none}\n"], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3$2.MicroProcessFlowComponent, selector: "fd-micro-process-flow", inputs: ["independentSteps", "transitionSpeed", "transitionTimingFunction"] }, { kind: "component", type: i3$2.MicroProcessFlowItemComponent, selector: "fd-micro-process-flow-item", inputs: ["state", "intermediate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2210
+ }
2211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MicroProccessFlowComponent, decorators: [{
2212
+ type: Component,
2213
+ args: [{ selector: 'bdc-micro-proccess-flow', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-micro-process-flow class=\"flow\" [style.max-width.px]=\"maxWidth\">\r\n @for (item of items; track item; let i = $index) {\r\n <fd-micro-process-flow-item [state]=\"i <= selectedIndex ? 'positive' : 'none'\">\r\n <div class=\"flow-item\">\r\n @if (selectedIndex > -1) {\r\n <button\r\n [class.reached]=\"i <= selectedIndex\"\r\n fd-button\r\n [fdType]=\"i <= selectedIndex ? 'positive' : i === selectedIndex + 1 ? 'standard' : 'transparent'\"\r\n [label]=\"item.label\"\r\n [glyph]=\"i <= selectedIndex ? 'accept' : null\"\r\n [disabled]=\"readonly || (i > selectedIndex + 1 && selectedIndex > -1)\"\r\n (click)=\"onItemClick(item)\"\r\n ></button>\r\n } @if (selectedIndex === -1) {\r\n <button\r\n [class.reached]=\"false\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"item.label\"\r\n [glyph]=\"null\"\r\n [disabled]=\"readonly\"\r\n (click)=\"onItemClick(item)\"\r\n ></button>\r\n }\r\n </div>\r\n </fd-micro-process-flow-item>\r\n }\r\n</fd-micro-process-flow>\r\n", styles: [":host{display:block}.reached{pointer-events:none;border:none}\n"] }]
2214
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { items: [{
2215
+ type: Input
2216
+ }], selected: [{
2217
+ type: Input
2218
+ }], readonly: [{
2219
+ type: Input
2220
+ }], idIskey: [{
2221
+ type: Input
2222
+ }], selectedChange: [{
2223
+ type: Output
2224
+ }] } });
2225
+
2226
+ class MoListToFlowItemPipe {
2227
+ constructor() { }
2228
+ transform(moList) {
2229
+ const flowItems = moList.map((item) => ({
2230
+ icon: '',
2231
+ id: item.Id,
2232
+ label: item.$Caption
2233
+ }));
2234
+ return flowItems;
2235
+ }
2236
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MoListToFlowItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2237
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: MoListToFlowItemPipe, name: "moListToFlowItem" }); }
2238
+ }
2239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MoListToFlowItemPipe, decorators: [{
2240
+ type: Pipe,
2241
+ args: [{
2242
+ name: 'moListToFlowItem',
2243
+ standalone: false
2244
+ }]
2245
+ }], ctorParameters: () => [] });
2246
+
2247
+ class MoInfoMicroProccessFlowComponent extends UiMoInfoUlvComboComponent {
2248
+ ngOnInit() {
2249
+ super.ngOnInit();
2250
+ this._triggerClick('Normal');
2251
+ }
2252
+ onSelectedChange(item) {
2253
+ this._raiseValueChanged(item.label);
2254
+ }
2255
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MoInfoMicroProccessFlowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2256
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MoInfoMicroProccessFlowComponent, selector: "bdc-mo-info-micro-proccess-flow", usesInheritance: true, ngImport: i0, template: "<bdc-micro-proccess-flow\r\n [items]=\"\r\n (loading$ | async) === true\r\n | moInfoUlvMoList\r\n : isDataLoadedFirstTime\r\n : ulvAdapter?.Setting?.Data?.MoDataList\r\n : UlvUi?.Setting?.Data?.MoDataList\r\n : ulvAdapter?.Setting?.Data?.Paging\r\n : UlvUi?.Setting?.Data?.Paging\r\n | moListToFlowItem\r\n \"\r\n [selected]=\"value\"\r\n (selectedChange)=\"onSelectedChange($event)\"\r\n></bdc-micro-proccess-flow>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: MicroProccessFlowComponent, selector: "bdc-micro-proccess-flow", inputs: ["items", "selected", "readonly", "idIskey"], outputs: ["selectedChange"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.MoInfoUlvMoListPipe, name: "moInfoUlvMoList" }, { kind: "pipe", type: MoListToFlowItemPipe, name: "moListToFlowItem" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2257
+ }
2258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MoInfoMicroProccessFlowComponent, decorators: [{
2259
+ type: Component,
2260
+ args: [{ selector: 'bdc-mo-info-micro-proccess-flow', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<bdc-micro-proccess-flow\r\n [items]=\"\r\n (loading$ | async) === true\r\n | moInfoUlvMoList\r\n : isDataLoadedFirstTime\r\n : ulvAdapter?.Setting?.Data?.MoDataList\r\n : UlvUi?.Setting?.Data?.MoDataList\r\n : ulvAdapter?.Setting?.Data?.Paging\r\n : UlvUi?.Setting?.Data?.Paging\r\n | moListToFlowItem\r\n \"\r\n [selected]=\"value\"\r\n (selectedChange)=\"onSelectedChange($event)\"\r\n></bdc-micro-proccess-flow>\r\n", styles: [":host{display:block}\n"] }]
2261
+ }] });
2262
+
2263
+ class DataSourceToFlowItemPipe {
2264
+ constructor() { }
2265
+ transform(datasource) {
2266
+ const flowItems = datasource.map((item) => ({
2267
+ icon: '',
2268
+ id: item.id,
2269
+ label: item.txt
2270
+ }));
2271
+ return flowItems;
2272
+ }
2273
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataSourceToFlowItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2274
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DataSourceToFlowItemPipe, name: "datasourceToFlowItem" }); }
2275
+ }
2276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataSourceToFlowItemPipe, decorators: [{
2277
+ type: Pipe,
2278
+ args: [{
2279
+ name: 'datasourceToFlowItem',
2280
+ standalone: false
2281
+ }]
2282
+ }], ctorParameters: () => [] });
2283
+
2284
+ class EnumInfoMicroProccessFlowComponent extends UiSimpleComboComponent {
2285
+ onSelectedChange(item) {
2286
+ this._handleValueChange(item.id);
2287
+ }
2288
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EnumInfoMicroProccessFlowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2289
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EnumInfoMicroProccessFlowComponent, selector: "bdc-enum-info-micro-proccess-flow", usesInheritance: true, ngImport: i0, template: "<bdc-micro-proccess-flow\r\n [items]=\"context.store.data[context.store.root] | datasourceToFlowItem\"\r\n [selected]=\"value\"\r\n [idIskey]=\"true\"\r\n [readonly]=\"(disableOrReadonly$ | async) === true\"\r\n (selectedChange)=\"onSelectedChange($event)\"\r\n></bdc-micro-proccess-flow>\r\n", styles: [""], dependencies: [{ kind: "component", type: MicroProccessFlowComponent, selector: "bdc-micro-proccess-flow", inputs: ["items", "selected", "readonly", "idIskey"], outputs: ["selectedChange"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: DataSourceToFlowItemPipe, name: "datasourceToFlowItem" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2290
+ }
2291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EnumInfoMicroProccessFlowComponent, decorators: [{
2292
+ type: Component,
2293
+ args: [{ selector: 'bdc-enum-info-micro-proccess-flow', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<bdc-micro-proccess-flow\r\n [items]=\"context.store.data[context.store.root] | datasourceToFlowItem\"\r\n [selected]=\"value\"\r\n [idIskey]=\"true\"\r\n [readonly]=\"(disableOrReadonly$ | async) === true\"\r\n (selectedChange)=\"onSelectedChange($event)\"\r\n></bdc-micro-proccess-flow>\r\n" }]
2294
+ }] });
2295
+
2296
+ class UiPicturesCarouselComponent extends UiPicturesInfoComponent {
2297
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiPicturesCarouselComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2298
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiPicturesCarouselComponent, selector: "bdc-ui-pictures-carousel", providers: [UploadService], usesInheritance: true, ngImport: i0, template: "@if (mediaData$ | async; as mediaData) {\r\n<fd-carousel carouselIndicatorsOrientation=\"top\" width=\"100%\">\r\n @for (media of mediaData; track media; let i = $index) {\r\n <fd-carousel-item>\r\n <img [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\r\n </fd-carousel-item>\r\n }\r\n</fd-carousel>\r\n} @else {\r\n<div style=\"width: 100%; position: relative\">\r\n <bsu-mask></bsu-mask>\r\n</div>\r\n}\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "component", type: i2$1.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3$b.CarouselComponent, selector: "fd-carousel", inputs: ["id", "ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "pageIndicatorsOrientation", "height", "width", "loop", "navigation", "navigatorInPageIndicator", "numericIndicator", "pageIndicatorContainer", "pageIndicator", "resourceStrings", "slideTransitionDuration", "swipeEnabled", "vertical", "noPaginationContainerBorder", "contentBackground", "pageIndicatorBackground", "visibleSlidesCount"], outputs: ["slideChange"] }, { kind: "component", type: i3$b.CarouselItemComponent, selector: "fd-carousel-item", inputs: ["id", "ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "loading", "title", "initialHeight", "initialWidth", "value"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2299
+ }
2300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiPicturesCarouselComponent, decorators: [{
2301
+ type: Component,
2302
+ args: [{ selector: 'bdc-ui-pictures-carousel', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (mediaData$ | async; as mediaData) {\r\n<fd-carousel carouselIndicatorsOrientation=\"top\" width=\"100%\">\r\n @for (media of mediaData; track media; let i = $index) {\r\n <fd-carousel-item>\r\n <img [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\r\n </fd-carousel-item>\r\n }\r\n</fd-carousel>\r\n} @else {\r\n<div style=\"width: 100%; position: relative\">\r\n <bsu-mask></bsu-mask>\r\n</div>\r\n}\r\n" }]
2303
+ }] });
2304
+
2305
+ class UiNumRateComponent extends FieldBaseComponent {
2306
+ onRatingChanged(val) {
2307
+ this.value = val;
2308
+ this.valueChange.emit(this.value);
2309
+ }
2310
+ _setValue(val) {
2311
+ if (typeof val === 'string') {
2312
+ if (isNaN(+val[0])) {
2313
+ val = val.substring(1, val.length);
2314
+ }
2315
+ if (isNaN(+val)) {
2316
+ return;
2317
+ }
2318
+ }
2319
+ super._setValue(val);
2320
+ }
2321
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiNumRateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2322
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UiNumRateComponent, selector: "bdc-ui-num-rate", usesInheritance: true, ngImport: i0, template: "<fd-rating-indicator\r\n [ariaLabel]=\"Setting.NullText || ''\"\r\n [size]=\"parameters?.SizeValue$Caption\"\r\n [value]=\"value\"\r\n [disabled]=\"(disableOrReadonly$ | async) === true\"\r\n [displayMode]=\"parameters?.DisplayMode\"\r\n [dynamicTextIndicator]=\"parameters?.TextIndicator\"\r\n (ratingChanged)=\"onRatingChanged($event)\"\r\n></fd-rating-indicator>\r\n", styles: [":host{display:flex}\n"], dependencies: [{ kind: "component", type: i1$6.RatingIndicatorComponent, selector: "fd-rating-indicator", inputs: ["class", "name", "ariaLabel", "ariaLabelledBy", "disabled", "displayMode", "nonInteractive", "indicatorCapacity", "allowHalves", "value", "totalRatings", "ratingAverage", "ratings", "displayAllRatings", "ratedIcon", "unratedIcon", "size", "dynamicTextIndicator"], outputs: ["ratingChanged"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2323
+ }
2324
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiNumRateComponent, decorators: [{
2325
+ type: Component,
2326
+ args: [{ selector: 'bdc-ui-num-rate', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-rating-indicator\r\n [ariaLabel]=\"Setting.NullText || ''\"\r\n [size]=\"parameters?.SizeValue$Caption\"\r\n [value]=\"value\"\r\n [disabled]=\"(disableOrReadonly$ | async) === true\"\r\n [displayMode]=\"parameters?.DisplayMode\"\r\n [dynamicTextIndicator]=\"parameters?.TextIndicator\"\r\n (ratingChanged)=\"onRatingChanged($event)\"\r\n></fd-rating-indicator>\r\n", styles: [":host{display:flex}\n"] }]
2327
+ }] });
2328
+
2329
+ class MediaFileUploaderComponent extends UiPdfViewerComponent {
2330
+ constructor() {
2331
+ super(...arguments);
2332
+ this.isPlaying = false;
2333
+ this.displayControls = true;
2334
+ this.isRecording = false;
2335
+ this.audioConf = { audio: true };
2336
+ this.videoConf = { video: { facingMode: 'user', width: 320 }, audio: true };
2337
+ this.recordType = 'audio';
2338
+ }
2339
+ get video() {
2340
+ return this.videoElement?.nativeElement;
2341
+ }
2342
+ get fileInput() {
2343
+ return this.photoElement?.nativeElement;
2344
+ }
2345
+ ngOnInit() {
2346
+ super.ngOnInit();
2347
+ this._videoRecoder.recordingFailed().subscribe(() => {
2348
+ this.isRecording = false;
2349
+ this._cdr.detectChanges();
2350
+ });
2351
+ this._videoRecoder.getRecordedTime().subscribe((time) => {
2352
+ this.recordedTime = time;
2353
+ this._cdr.detectChanges();
2354
+ });
2355
+ this._videoRecoder.getStream().subscribe((stream) => {
2356
+ this.videoStream = stream;
2357
+ this._cdr.detectChanges();
2358
+ });
2359
+ this._videoRecoder.getRecordedBlob().subscribe((data) => {
2360
+ this.fileBlob = data.blob;
2361
+ this.fileName = data.title;
2362
+ this.valueUrl = this._domSanitizer.bypassSecurityTrustUrl(data.url);
2363
+ this._cdr.detectChanges();
2364
+ });
2365
+ this._audioRecorder.recordingFailed().subscribe(() => {
2366
+ this.isRecording = false;
2367
+ this._cdr.detectChanges();
2368
+ });
2369
+ this._audioRecorder.getRecordedTime().subscribe((time) => {
2370
+ this.recordedTime = time;
2371
+ this._cdr.detectChanges();
2372
+ });
2373
+ this._audioRecorder.getRecordedBlob().subscribe((data) => {
2374
+ this.fileBlob = data.blob;
2375
+ this.fileName = data.title;
2376
+ this.valueUrl = this._domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(data.blob));
2377
+ this._cdr.detectChanges();
2378
+ });
2379
+ let glyph = '';
2380
+ switch (this.recordType) {
2381
+ case 'audio':
2382
+ glyph = 'attachment-audio';
2383
+ break;
2384
+ case 'video':
2385
+ glyph = 'attachment-video';
2386
+ break;
2387
+ default:
2388
+ glyph = 'attachment-photo';
2389
+ break;
2390
+ }
2391
+ this.glyph = glyph;
2392
+ this.fileName = this.value?.FileName;
2393
+ this.recordType = this.parameters?.MediaType$Caption || 'audio';
2394
+ }
2395
+ onDelete() {
2396
+ super.onDelete();
2397
+ this.onClearRecord();
2398
+ }
2399
+ onClearRecord() {
2400
+ this.abortVideoRecording();
2401
+ this.abortAudioRecording();
2402
+ this.fileBlob = null;
2403
+ this.valueUrl = null;
2404
+ this._cdr.detectChanges();
2405
+ }
2406
+ onToggleRecord() {
2407
+ if (this.recordType === 'audio') {
2408
+ if (this.isRecording) {
2409
+ this.stopAudioRecording();
2410
+ }
2411
+ else {
2412
+ this.startAudioRecording();
2413
+ }
2414
+ }
2415
+ else if (this.recordType === 'video') {
2416
+ this.video.hidden = false;
2417
+ if (this.isRecording) {
2418
+ this.stopVideoRecording();
2419
+ }
2420
+ else {
2421
+ this.startVideoRecording();
2422
+ }
2423
+ }
2424
+ else if (this.recordType === 'photo') {
2425
+ }
2426
+ }
2427
+ onTakePhoto() {
2428
+ if (this.fileInput?.files?.length) {
2429
+ const file = this.fileInput.files.item(0);
2430
+ if (file) {
2431
+ this.fileName = file.name;
2432
+ this._uploadFile([file]).subscribe();
2433
+ }
2434
+ }
2435
+ }
2436
+ onUpload() {
2437
+ const videoFile = new File([this.fileBlob], this.fileName);
2438
+ this._uploadFile([videoFile]).subscribe();
2439
+ }
2440
+ startVideoRecording() {
2441
+ if (!this.isRecording) {
2442
+ this.video.controls = false;
2443
+ this.isRecording = true;
2444
+ this._videoRecoder
2445
+ .startRecording(this.videoConf)
2446
+ .then((stream) => {
2447
+ // this.video.src = window.URL.createObjectURL(stream);
2448
+ this.video.srcObject = stream;
2449
+ this.video.play();
2450
+ })
2451
+ .catch(function (err) {
2452
+ console.log(err.name + ': ' + err.message);
2453
+ });
2454
+ }
2455
+ }
2456
+ abortVideoRecording() {
2457
+ if (this.isRecording && this.recordType === 'video') {
2458
+ this.isRecording = false;
2459
+ this._videoRecoder.abortRecording();
2460
+ }
2461
+ if (this.video) {
2462
+ const video = this.video;
2463
+ video.controls = false;
2464
+ video.hidden = true;
2465
+ }
2466
+ }
2467
+ stopVideoRecording() {
2468
+ if (this.isRecording && this.recordType === 'video') {
2469
+ this._videoRecoder.stopRecording();
2470
+ const video = this.video;
2471
+ video.srcObject = this.valueUrl;
2472
+ video.controls = true;
2473
+ this.isRecording = false;
2474
+ }
2475
+ }
2476
+ clearVideoRecordedData() {
2477
+ this.valueUrl = null;
2478
+ const video = this.video;
2479
+ video.srcObject = null;
2480
+ video.controls = false;
2481
+ this._cdr.detectChanges();
2482
+ }
2483
+ downloadVideoRecordedData() {
2484
+ this._downloadFile(this.fileBlob, 'video/mp4', this.fileName);
2485
+ }
2486
+ startAudioRecording() {
2487
+ if (!this.isRecording) {
2488
+ this.isRecording = true;
2489
+ this._audioRecorder.startRecording();
2490
+ }
2491
+ }
2492
+ abortAudioRecording() {
2493
+ if (this.isRecording && this.recordType === 'audio') {
2494
+ this.isRecording = false;
2495
+ this._audioRecorder.abortRecording();
2496
+ }
2497
+ }
2498
+ stopAudioRecording() {
2499
+ if (this.isRecording && this.recordType === 'audio') {
2500
+ this._audioRecorder.stopRecording();
2501
+ this.isRecording = false;
2502
+ }
2503
+ }
2504
+ clearAudioRecordedData() {
2505
+ this.valueUrl = null;
2506
+ }
2507
+ downloadAudioRecordedData() {
2508
+ this._downloadFile(this.fileBlob, 'audio/mp3', this.fileName);
2509
+ }
2510
+ ngOnDestroy() {
2511
+ this.abortAudioRecording();
2512
+ }
2513
+ _downloadFile(data, type, filename) {
2514
+ const blob = new Blob([data], { type });
2515
+ const url = window.URL.createObjectURL(blob);
2516
+ // this.video.srcObject = stream;
2517
+ // const url = data;
2518
+ const anchor = document.createElement('a');
2519
+ anchor.download = filename;
2520
+ anchor.href = url;
2521
+ document.body.appendChild(anchor);
2522
+ anchor.click();
2523
+ document.body.removeChild(anchor);
2524
+ }
2525
+ _downloadFileIdCompleted(response) {
2526
+ super._downloadFileIdCompleted(response);
2527
+ if (this.valueUrl) {
2528
+ if (this.recordType === 'video') {
2529
+ this.video.controls = true;
2530
+ }
2531
+ }
2532
+ }
2533
+ _refresh(_) {
2534
+ if (BarsaApi.Ext.isEmpty(this.value)) {
2535
+ return;
2536
+ }
2537
+ const fileId = this.value.Id;
2538
+ this.DownloadFileId(fileId, true, '', null, false);
2539
+ }
2540
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MediaFileUploaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2541
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MediaFileUploaderComponent, selector: "bdc-media-file-uploader", providers: [AudioRecordingService, VideoRecordingService, UploadService], viewQueries: [{ propertyName: "videoElement", first: true, predicate: ["videoElement"], descendants: true }, { propertyName: "photoElement", first: true, predicate: ["photoElement"], descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["container"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<fd-card class=\"upload\" [ngClass]=\"recordType\">\r\n <fd-card-content class=\"file-content\">\r\n <div [class.no-recording]=\"!isRecording && valueUrl\" [ngClass]=\"recordType\" class=\"media-wrapper\">\r\n <div class=\"icon\">\r\n @if (!value && !valueUrl && !isRecording) {\r\n <i style=\"left: 45%; position: absolute\" fd-nested-list-icon [glyph]=\"glyph\"></i>\r\n }\r\n </div>\r\n @if (recordType === 'video') {\r\n <video #videoElement [class.video-novalue]=\"!valueUrl\">\r\n @if (!isRecording && valueUrl) {\r\n <source [src]=\"valueUrl\" />\r\n } @if (!value && !valueUrl && !isRecording) {\r\n <i style=\"left: 45%; position: absolute\" fd-nested-list-icon [glyph]=\"glyph\"></i>\r\n }\r\n </video>\r\n } @if (!isRecording && valueUrl && recordType === 'audio') {\r\n <audio controls>\r\n <source [src]=\"valueUrl\" type=\"audio/mp3\" />\r\n </audio>\r\n } @if (recordType === 'photo') {\r\n <input\r\n #photoElement\r\n type=\"file\"\r\n accept=\"image/*\"\r\n id=\"file-input\"\r\n capture=\"environment\"\r\n (change)=\"onTakePhoto()\"\r\n />\r\n }\r\n </div>\r\n @if (isRecording || valueUrl) {\r\n <div class=\"media-info\">\r\n <div>\r\n {{ !isRecording ? '' : ('Recording' | bbbTranslate) }} <strong>{{ recordedTime }}</strong>\r\n </div>\r\n <div>{{ fileName }}</div>\r\n </div>\r\n } @if (uploadingState$ | async; as uploadingState) { @if (uploadingState.state === 'Uploading') {\r\n <div class=\"progress\">\r\n <div>\r\n <fd-progress-indicator\r\n state=\"informative\"\r\n [valueNow]=\"uploadingState?.progress\"\r\n ></fd-progress-indicator>\r\n </div>\r\n </div>\r\n } }\r\n <div class=\"btn-wrapper\">\r\n @if (!value && !valueUrl) {\r\n <button\r\n class=\"btn-record\"\r\n fd-button\r\n [glyph]=\"isRecording ? 'stop' : 'record'\"\r\n [fdType]=\"isRecording ? 'attention' : 'ghost'\"\r\n (click)=\"onToggleRecord()\"\r\n ></button>\r\n } @if (!value && valueUrl) {\r\n <div class=\"btn-toolbar\">\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onClearRecord()\"></button>\r\n <button fd-button [label]=\"'Upload' | bbbTranslate\" [glyph]=\"'upload'\" (click)=\"onUpload()\"></button>\r\n </div>\r\n } @if (value) {\r\n <div class=\"btn-toolbar\">\r\n @if (value) {\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onDelete()\"></button>\r\n } @if (value) {\r\n <button fd-button [glyph]=\"'download'\" fdType=\"standard\" (click)=\"onDownload()\"></button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </fd-card-content>\r\n</fd-card>\r\n", styles: [":host .upload{display:flex;justify-content:center;align-items:center;flex-direction:column;max-width:380px;position:relative}:host .upload .file-content{width:100%}:host .upload i:before{color:#0a6ed1!important;font-size:2rem}fd-card.audio{min-height:120px;max-height:120px}fd-card.video{min-height:340px;max-height:340px}.icon{display:flex;align-items:center;justify-content:center;position:absolute;top:45%;left:45%}.video-novalue{border:1px dashed var(--sapObjectHeader_BorderColor);min-height:240px}audio,video{width:100%}.progress{position:absolute;width:100%;height:100%;background-color:#e4e4e4c7;z-index:4;display:flex;justify-content:center;align-items:center;top:0;left:0}.progress div{flex:.5}.file-content{width:100%;height:100%;display:flex;flex-direction:column;padding:1rem}.media-wrapper{flex-grow:1}.btn-wrapper{align-self:center}.btn-record{flex-shrink:1}.btn-toolbar{flex-grow:1;display:flex;column-gap:1rem}.media-info{flex-shrink:1;display:flex;width:100%;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$3.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i4$3.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i4$4.NestedListIconComponent, selector: "[fdNestedDirectivesIcon], [fd-nested-list-icon]", inputs: ["role"] }, { kind: "component", type: i5.ProgressIndicatorComponent, selector: "fd-progress-indicator", inputs: ["valueText", "unit", "valueMin", "valueMax", "valueNow", "state", "animate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2542
+ }
2543
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MediaFileUploaderComponent, decorators: [{
2544
+ type: Component,
2545
+ args: [{ selector: 'bdc-media-file-uploader', changeDetection: ChangeDetectionStrategy.OnPush, providers: [AudioRecordingService, VideoRecordingService, UploadService], standalone: false, template: "<fd-card class=\"upload\" [ngClass]=\"recordType\">\r\n <fd-card-content class=\"file-content\">\r\n <div [class.no-recording]=\"!isRecording && valueUrl\" [ngClass]=\"recordType\" class=\"media-wrapper\">\r\n <div class=\"icon\">\r\n @if (!value && !valueUrl && !isRecording) {\r\n <i style=\"left: 45%; position: absolute\" fd-nested-list-icon [glyph]=\"glyph\"></i>\r\n }\r\n </div>\r\n @if (recordType === 'video') {\r\n <video #videoElement [class.video-novalue]=\"!valueUrl\">\r\n @if (!isRecording && valueUrl) {\r\n <source [src]=\"valueUrl\" />\r\n } @if (!value && !valueUrl && !isRecording) {\r\n <i style=\"left: 45%; position: absolute\" fd-nested-list-icon [glyph]=\"glyph\"></i>\r\n }\r\n </video>\r\n } @if (!isRecording && valueUrl && recordType === 'audio') {\r\n <audio controls>\r\n <source [src]=\"valueUrl\" type=\"audio/mp3\" />\r\n </audio>\r\n } @if (recordType === 'photo') {\r\n <input\r\n #photoElement\r\n type=\"file\"\r\n accept=\"image/*\"\r\n id=\"file-input\"\r\n capture=\"environment\"\r\n (change)=\"onTakePhoto()\"\r\n />\r\n }\r\n </div>\r\n @if (isRecording || valueUrl) {\r\n <div class=\"media-info\">\r\n <div>\r\n {{ !isRecording ? '' : ('Recording' | bbbTranslate) }} <strong>{{ recordedTime }}</strong>\r\n </div>\r\n <div>{{ fileName }}</div>\r\n </div>\r\n } @if (uploadingState$ | async; as uploadingState) { @if (uploadingState.state === 'Uploading') {\r\n <div class=\"progress\">\r\n <div>\r\n <fd-progress-indicator\r\n state=\"informative\"\r\n [valueNow]=\"uploadingState?.progress\"\r\n ></fd-progress-indicator>\r\n </div>\r\n </div>\r\n } }\r\n <div class=\"btn-wrapper\">\r\n @if (!value && !valueUrl) {\r\n <button\r\n class=\"btn-record\"\r\n fd-button\r\n [glyph]=\"isRecording ? 'stop' : 'record'\"\r\n [fdType]=\"isRecording ? 'attention' : 'ghost'\"\r\n (click)=\"onToggleRecord()\"\r\n ></button>\r\n } @if (!value && valueUrl) {\r\n <div class=\"btn-toolbar\">\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onClearRecord()\"></button>\r\n <button fd-button [label]=\"'Upload' | bbbTranslate\" [glyph]=\"'upload'\" (click)=\"onUpload()\"></button>\r\n </div>\r\n } @if (value) {\r\n <div class=\"btn-toolbar\">\r\n @if (value) {\r\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onDelete()\"></button>\r\n } @if (value) {\r\n <button fd-button [glyph]=\"'download'\" fdType=\"standard\" (click)=\"onDownload()\"></button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </fd-card-content>\r\n</fd-card>\r\n", styles: [":host .upload{display:flex;justify-content:center;align-items:center;flex-direction:column;max-width:380px;position:relative}:host .upload .file-content{width:100%}:host .upload i:before{color:#0a6ed1!important;font-size:2rem}fd-card.audio{min-height:120px;max-height:120px}fd-card.video{min-height:340px;max-height:340px}.icon{display:flex;align-items:center;justify-content:center;position:absolute;top:45%;left:45%}.video-novalue{border:1px dashed var(--sapObjectHeader_BorderColor);min-height:240px}audio,video{width:100%}.progress{position:absolute;width:100%;height:100%;background-color:#e4e4e4c7;z-index:4;display:flex;justify-content:center;align-items:center;top:0;left:0}.progress div{flex:.5}.file-content{width:100%;height:100%;display:flex;flex-direction:column;padding:1rem}.media-wrapper{flex-grow:1}.btn-wrapper{align-self:center}.btn-record{flex-shrink:1}.btn-toolbar{flex-grow:1;display:flex;column-gap:1rem}.media-info{flex-shrink:1;display:flex;width:100%;justify-content:space-between}\n"] }]
2546
+ }], propDecorators: { videoElement: [{
2547
+ type: ViewChild,
2548
+ args: ['videoElement']
2549
+ }], photoElement: [{
2550
+ type: ViewChild,
2551
+ args: ['photoElement']
2552
+ }], dialogContainer: [{
2553
+ type: ViewChild,
2554
+ args: ['container', { read: TemplateRef }]
2555
+ }] } });
2556
+
2557
+ class SubformInRowReportComponent extends BaseItemContentPropsComponent {
2558
+ constructor() {
2559
+ super(...arguments);
2560
+ this.suggestionList$ = new Subject();
2561
+ }
2562
+ ngOnInit() {
2563
+ super.ngOnInit();
2564
+ this.suggestionList$
2565
+ .asObservable()
2566
+ .pipe(takeUntil$1(this._onDestroy$), debounceTime(500), switchMap((ulvParams) => new Promise((resolve, reject) => {
2567
+ formPanelCtrl.Save(false, (err) => {
2568
+ if (err) {
2569
+ reject(err);
2570
+ }
2571
+ this.UlvMainCtrlr.RefreshRowsByMosNoSelectionChange([formPanelCtrl.Mo], [], []);
2572
+ resolve();
2573
+ });
2574
+ })))
2575
+ .subscribe();
2576
+ const userDefineViewId = this.parameters?.ViewTypeValue?.Id;
2577
+ this.params = {
2578
+ moId: this.mo.Id,
2579
+ typeDefId: this.typeDefId,
2580
+ isSimple: true,
2581
+ viewId: userDefineViewId
2582
+ };
2583
+ const formPanelCtrl = createGridEditorFormPanel(this.formSetting, { ...this.mo }, this.typeDefId, null, false
2584
+ // BarsaApi.Common.Util.TryGetValue(this.context.Setting, 'Extra.Relation')
2585
+ );
2586
+ this.formPanelCtrl = formPanelCtrl;
2587
+ if (this.parameters?.AutoSaveOnChange) {
2588
+ formPanelCtrl.on({
2589
+ scope: this,
2590
+ ValueChange: () => {
2591
+ this.suggestionList$.next();
2592
+ }
2593
+ });
2594
+ }
2595
+ formPanelCtrl.LoadAndCreate({ MoId: this.mo.Id, TypeDefId: this.typeDefId, TypeViewId: userDefineViewId }, false, true, (t, e, r) => {
2596
+ console.log(t, e, r);
2597
+ const error = BarsaApi.Common.Util.TryGetValue(t, 'Data.ResponseData.error');
2598
+ if (error) {
2599
+ this.loaded = false;
2600
+ this.errorMessage = error.userMessage;
2601
+ }
2602
+ else {
2603
+ this.loaded = true;
2604
+ }
2605
+ this._cdr.detectChanges();
2606
+ });
2607
+ }
2608
+ ngOnChanges(changes) {
2609
+ super.ngOnChanges(changes);
2610
+ const { mo } = changes;
2611
+ if (mo && !mo.firstChange) {
2612
+ BarsaApi.Common.Merger.FastMerge(this.formPanelCtrl.Mo, mo.currentValue);
2613
+ this.formPanelCtrl.SetValue(this.formPanelCtrl.Mo);
2614
+ }
2615
+ }
2616
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SubformInRowReportComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2617
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SubformInRowReportComponent, selector: "bdc-subform-in-row-report", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (loaded) {\r\n<bnrc-form [formPanelCtrl]=\"formPanelCtrl\" class=\"subform-in-row\" [params]=\"params\"></bnrc-form>\r\n} @if(errorMessage){\r\n<span\r\n fd-object-status\r\n status=\"negative\"\r\n [label]=\"errorMessage\"\r\n [title]=\"errorMessage\"\r\n [attr.aria-label]=\"errorMessage\"\r\n></span>\r\n}\r\n", styles: [""], dependencies: [{ kind: "component", type: i1$1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "uiComponent", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "component", type: i6$3.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2618
+ }
2619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SubformInRowReportComponent, decorators: [{
2620
+ type: Component,
2621
+ args: [{ selector: 'bdc-subform-in-row-report', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (loaded) {\r\n<bnrc-form [formPanelCtrl]=\"formPanelCtrl\" class=\"subform-in-row\" [params]=\"params\"></bnrc-form>\r\n} @if(errorMessage){\r\n<span\r\n fd-object-status\r\n status=\"negative\"\r\n [label]=\"errorMessage\"\r\n [title]=\"errorMessage\"\r\n [attr.aria-label]=\"errorMessage\"\r\n></span>\r\n}\r\n" }]
2622
+ }] });
2623
+
2624
+ class MasterDetailCardFormComponent extends FormPropsBaseComponent {
2625
+ ngOnInit() {
2626
+ super.ngOnInit();
2627
+ }
2628
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MasterDetailCardFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2629
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MasterDetailCardFormComponent, selector: "bdc-master-detail-card-form", usesInheritance: true, ngImport: i0, template: "<fd-card class=\"master-tab\">\r\n <bsu-ly-tab-page [config]=\"modernTabs[0]\"></bsu-ly-tab-page>\r\n</fd-card>\r\n<fd-card class=\"details-tab\">\r\n <bsu-ly-tab-page [config]=\"modernTabs[1]\"></bsu-ly-tab-page>\r\n</fd-card>\r\n", styles: [":host{display:flex;width:100%;height:100%;column-gap:.525rem}fd-card.master-tab,fd-card.details-tab{height:100%}.master-tab{max-width:400px}.details-tab{width:100%}\n"], dependencies: [{ kind: "component", type: i2$1.LyTabPageComponent, selector: "bsu-ly-tab-page", inputs: ["renderItems", "tablist"] }, { kind: "component", type: i4$3.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2630
+ }
2631
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MasterDetailCardFormComponent, decorators: [{
2632
+ type: Component,
2633
+ args: [{ selector: 'bdc-master-detail-card-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-card class=\"master-tab\">\r\n <bsu-ly-tab-page [config]=\"modernTabs[0]\"></bsu-ly-tab-page>\r\n</fd-card>\r\n<fd-card class=\"details-tab\">\r\n <bsu-ly-tab-page [config]=\"modernTabs[1]\"></bsu-ly-tab-page>\r\n</fd-card>\r\n", styles: [":host{display:flex;width:100%;height:100%;column-gap:.525rem}fd-card.master-tab,fd-card.details-tab{height:100%}.master-tab{max-width:400px}.details-tab{width:100%}\n"] }]
2634
+ }] });
2635
+
2636
+ class ReportButtonViewComponent extends BaseFormToolbaritemPropsComponent {
2637
+ constructor() {
2638
+ super(...arguments);
2639
+ this.loaded = false;
2640
+ }
2641
+ ngOnInit() {
2642
+ super.ngOnInit();
2643
+ }
2644
+ onMainActionClick(menu) {
2645
+ if (this.parameters.MetaReport) {
2646
+ BarsaApi.Bw.RunBlMethodAsync({
2647
+ Parameters: [this.parameters.MetaReport.Id],
2648
+ Method: '_PortalExecuteReport',
2649
+ SuccessFn: (moDataList) => {
2650
+ this.moDataList = moDataList;
2651
+ menu.open();
2652
+ },
2653
+ FailFn: () => { }
2654
+ });
2655
+ }
2656
+ }
2657
+ onButtonClick(btn) { }
2658
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportButtonViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2659
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ReportButtonViewComponent, selector: "bdc-report-button-view", usesInheritance: true, ngImport: i0, template: "<!-- <fd-split-button\r\nfd-toolbar-item\r\n[fdType]=\"'transparent'\"\r\n[mainAction]=\"{\r\n keepMainAction: true,\r\n mainActionTitle: 'Choose' | bbbTranslate\r\n}\"\r\n>\r\n<fd-menu>\r\n <li fd-menu-item *ngFor=\"let mo of moDataList;let index=index\">\r\n <div fd-menu-interactive (click)=\"onRowCheck({mo,index})\">\r\n <span fd-menu-title>\r\n <fd-icon [glyph]=\"viewSetting.Icon | rval: mo:allColumns:true \"> </fd-icon>\r\n </span>\r\n </div>\r\n </li>\r\n</fd-menu>\r\n</fd-split-button> -->\r\n\r\n<fd-split-button\r\n fd-toolbar-item\r\n [mainAction]=\"{ mainActionTitle: parameters.MainActionTitle, keepMainAction: true }\"\r\n [fdType]=\"parameters.FdType$Caption\"\r\n (click)=\"onMainActionClick(menu)\"\r\n>\r\n <fd-menu #menu>\r\n @for (mo of moDataList; track mo; let index = $index) {\r\n <li fd-menu-item (click)=\"onButtonClick(mo)\">\r\n <div fd-menu-interactive>\r\n <fd-menu-addon position=\"before\"> </fd-menu-addon>\r\n <span fd-menu-title>{{ mo.$Caption | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n</fd-split-button>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1$7.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i1$7.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: i1$7.MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i1$7.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "component", type: i1$7.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "component", type: i2$5.SplitButtonComponent, selector: "fd-split-button", inputs: ["glyph", "glyphFont", "disabled", "fdType", "expandButtonTitle", "selected", "fixedWidth", "mainAction", "arialLabel"], outputs: ["primaryButtonClicked"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2660
+ }
2661
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportButtonViewComponent, decorators: [{
2662
+ type: Component,
2663
+ args: [{ selector: 'bdc-report-button-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<!-- <fd-split-button\r\nfd-toolbar-item\r\n[fdType]=\"'transparent'\"\r\n[mainAction]=\"{\r\n keepMainAction: true,\r\n mainActionTitle: 'Choose' | bbbTranslate\r\n}\"\r\n>\r\n<fd-menu>\r\n <li fd-menu-item *ngFor=\"let mo of moDataList;let index=index\">\r\n <div fd-menu-interactive (click)=\"onRowCheck({mo,index})\">\r\n <span fd-menu-title>\r\n <fd-icon [glyph]=\"viewSetting.Icon | rval: mo:allColumns:true \"> </fd-icon>\r\n </span>\r\n </div>\r\n </li>\r\n</fd-menu>\r\n</fd-split-button> -->\r\n\r\n<fd-split-button\r\n fd-toolbar-item\r\n [mainAction]=\"{ mainActionTitle: parameters.MainActionTitle, keepMainAction: true }\"\r\n [fdType]=\"parameters.FdType$Caption\"\r\n (click)=\"onMainActionClick(menu)\"\r\n>\r\n <fd-menu #menu>\r\n @for (mo of moDataList; track mo; let index = $index) {\r\n <li fd-menu-item (click)=\"onButtonClick(mo)\">\r\n <div fd-menu-interactive>\r\n <fd-menu-addon position=\"before\"> </fd-menu-addon>\r\n <span fd-menu-title>{{ mo.$Caption | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n</fd-split-button>\r\n" }]
2664
+ }] });
2665
+
2666
+ class BarsaDocumentListItemComponent extends BaseComponent {
2667
+ constructor(_cdr, _picFieldSrc) {
2668
+ super();
2669
+ this._cdr = _cdr;
2670
+ this._picFieldSrc = _picFieldSrc;
2671
+ this.statusChanged = new EventEmitter();
2672
+ this.rejectTextChange = new EventEmitter();
2673
+ this.fileSelectionChange = new EventEmitter();
2674
+ this.removeFile = new EventEmitter();
2675
+ this.fullscreen = new EventEmitter();
2676
+ this.download = new EventEmitter();
2677
+ this.downloadAll = new EventEmitter();
2678
+ this.hasFiles = false;
2679
+ }
2680
+ ngOnInit() {
2681
+ super.ngOnInit();
2682
+ const documentItem = this.documentItem;
2683
+ documentItem.$ValidExtensions = `
2684
+ ${documentItem.SupportImage ? ImageMimeType : ''},
2685
+ ${documentItem.SupportAudio ? AudioMimeType : ''},
2686
+ ${documentItem.SupportVideo ? VideoMimeType : ''},
2687
+ ${documentItem.SupportFile ? AllFilesMimeType : ''}
2688
+ `;
2689
+ }
2690
+ ngOnChanges(changes) {
2691
+ super.ngOnChanges(changes);
2692
+ const { files } = changes;
2693
+ files && Array.isArray(files.currentValue) && this._setFirstImage(files.currentValue);
2694
+ this._detectChanges();
2695
+ }
2696
+ onReject(e) {
2697
+ this.statusChanged.emit({ value: e, rejectedText: e === 2 ? '' : this.rejectedReason });
2698
+ }
2699
+ onRejectedTextChange(e) {
2700
+ this.rejectTextChange.emit(e.target.value);
2701
+ }
2702
+ onPreventClick(e) {
2703
+ PreventDefaulEvent(e);
2704
+ }
2705
+ onFileSelection(files) {
2706
+ this.fileSelectionChange.emit(files);
2707
+ }
2708
+ _setFirstImage(files) {
2709
+ files.length &&
2710
+ (this.firstImageUrl = isImage(files[0].Type)
2711
+ ? this._picFieldSrc.transform(files[0].Id, 'ID', null, '', 120, 120)
2712
+ : getIcon(files[0].Type));
2713
+ }
2714
+ _detectChanges() {
2715
+ this._cdr.detectChanges();
2716
+ }
2717
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDocumentListItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.PictureFieldSourcePipe }], target: i0.ɵɵFactoryTarget.Component }); }
2718
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaDocumentListItemComponent, selector: "bdc-barsa-document-list-item", inputs: { documentItem: "documentItem", deviceSize: "deviceSize", files: "files", accepted: "accepted", rejectedReason: "rejectedReason", readonly: "readonly", status: "status", uploadingState: "uploadingState" }, outputs: { statusChanged: "statusChanged", rejectTextChange: "rejectTextChange", fileSelectionChange: "fileSelectionChange", removeFile: "removeFile", fullscreen: "fullscreen", download: "download", downloadAll: "downloadAll" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <li fd-list-item style=\"padding: 0.5rem 1rem\">\r\n<span fd-list-thumbnail>\r\n <fd-icon *ngIf=\"documentItem.FontIcon\" [glyph]=\"documentItem.FontIcon\"></fd-icon>\r\n <fd-avatar\r\n *ngIf=\"documentItem.Avatar\"\r\n size=\"s\"\r\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:''\"\r\n [clickable]=\"true\"\r\n ></fd-avatar\r\n ></span>\r\n\r\n <div fd-list-content>\r\n <div fd-list-title>\r\n <div style=\"display: flex; column-gap: 3px\">\r\n <strong\r\n >{{ documentItem.Title }}\r\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\r\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\r\n </span>\r\n </strong>\r\n <div\r\n *ngIf=\"documentItem.$Accepted === false || documentItem.$Accepted === true\"\r\n style=\"display: flex; column-gap: 3px; flex-wrap: wrap; align-items: center\"\r\n >\r\n <span\r\n fd-object-status\r\n [status]=\"accepted ? 'positive' : 'negative'\"\r\n [label]=\"accepted ? acceptedText : rejectedText\"\r\n [clickable]=\"true\"\r\n [inverted]=\"true\"\r\n [aria-label]=\"accepted ? acceptedText : rejectedText\"\r\n ></span>\r\n <fd-popover title=\"Rejected document\" *ngIf=\"rejectedReason && !accepted\">\r\n <fd-popover-control>\r\n <span\r\n fd-object-status\r\n status=\"negative\"\r\n glyph=\"question-mark\"\r\n glyphAriaLabel=\"Negative\"\r\n title=\"Rejected document\"\r\n ></span>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <fd-message-strip type=\"error\" [dismissible]=\"false\">\r\n {{ rejectedReason }}\r\n </fd-message-strip>\r\n </fd-popover-body>\r\n </fd-popover>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-list-byline [twoCol]=\"true\" [class.smallSize]=\"deviceSize === 's'\">\r\n <div fd-list-byline-left>\r\n <div style=\"display: flex; flex-direction: column; row-gap: 5px; flex-wrap: wrap\">\r\n <span>\r\n {{ documentItem.Description }}\r\n </span>\r\n <div style=\"display: flex; flex-wrap: wrap; column-gap: 3px; align-items: center\">\r\n <ng-container *ngIf=\"hasFiles\">\r\n <button fd-button [fdType]=\"'transparent'\" glyph=\"show\" (click)=\"onFullscreen()\"></button>\r\n <ng-container *ngFor=\"let file of files\">\r\n <fd-token\r\n [readOnly]=\"readonly\"\r\n *ngIf=\"!file.IsDeleted\"\r\n (onCloseClick)=\"onRemoveFile(file)\"\r\n >{{ file.FileName }}</fd-token\r\n >\r\n </ng-container>\r\n </ng-container>\r\n <button\r\n fd-button\r\n *ngIf=\"documentItem.MaxFileCount && !readonly\"\r\n glyph=\"attachment\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n (click)=\"!readonly && uploader.open()\"\r\n ></button>\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"documentItem.ItemKey\"\r\n [name]=\"'pictures_' + documentItem.ItemKey\"\r\n [accept]=\"documentItem.$ValidExtensions\"\r\n [fileLimit]=\"documentItem.MaxFileCount\"\r\n [multiple]=\"documentItem.MaxFileCount > 0\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n ></fd-file-uploader>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-list-byline-right *ngIf=\"documentItem.CanAccept\">\r\n <bdc-accept-reject\r\n [rejectedReason]=\"rejectedReason\"\r\n [positiveText]=\"acceptedText\"\r\n [negativeText]=\"rejectedText\"\r\n [deviceSize]=\"deviceSize\"\r\n [readonly]=\"readonly\"\r\n ></bdc-accept-reject>\r\n </div>\r\n </div>\r\n </div>\r\n </li> -->\r\n\r\n<tr fd-table-row>\r\n <td fd-table-cell>\r\n @if (documentItem.Avatar && !files.length) {\r\n <fd-avatar\r\n size=\"s\"\r\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:'':64:64\"\r\n [clickable]=\"true\"\r\n [transparent]=\"true\"\r\n ></fd-avatar>\r\n } @else { @if (files.length) {\r\n <fd-avatar [transparent]=\"true\" size=\"s\" [image]=\"firstImageUrl\" [clickable]=\"true\"></fd-avatar>\r\n } @if (!files.length) {\r\n <fd-avatar [transparent]=\"true\" size=\"s\" [glyph]=\"documentItem.FontIcon\" [clickable]=\"true\"></fd-avatar>\r\n } }\r\n </td>\r\n <td fd-table-cell style=\"min-width: 140px\">\r\n <p fd-table-text>\r\n <strong\r\n >{{ documentItem.Title }}\r\n @if (documentItem.IsRequired) {\r\n <span fd-object-status status=\"negative\">*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }}) </span>\r\n }\r\n </strong>\r\n </p>\r\n <div>\r\n <span>\r\n {{ documentItem.Description }}\r\n </span>\r\n </div>\r\n </td>\r\n\r\n <td fd-table-cell>\r\n <ng-container>\r\n <!-- <ul fd-list>\r\n <li fd-list-item *ngFor=\"let file of files; let ind = index\">\r\n <span fd-list-title>\r\n {{ file.FileName }}\r\n </span>\r\n <span fd-list-secondary>\r\n <button ariaLabel=\"Remove\" title=\"Remove\" fd-button glyph=\"delete\" ></button>\r\n </span>\r\n </li>\r\n </ul> -->\r\n <div style=\"display: flex; align-items: flex-start; column-gap: 3px; row-gap: 3px; flex-direction: column\">\r\n @for (file of files; track file) {\r\n <!-- <span><fd-icon glyph=\"attachment\"></fd-icon><a fd-link>{{file.FileName}}</a></span> -->\r\n @if (!file.IsDeleted) {\r\n <bsu-file-viewer-popover\r\n [file]=\"file\"\r\n [deviceSize]=\"deviceSize\"\r\n [canDownload]=\"true\"\r\n (remove)=\"removeFile.emit(file)\"\r\n ></bsu-file-viewer-popover>\r\n } }\r\n <!-- <button\r\n fd-button\r\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\r\n glyph=\"add\"\r\n (click)=\"!readonly && uploader.open()\"\r\n ></button> -->\r\n </div>\r\n <!-- <p *ngFor=\"let file of files\" fd-table-text>\r\n <fd-action-sheet >\r\n <fd-action-sheet-control>\r\n <button\r\n fd-button\r\n glyph=\"settings\"\r\n title=\"Open Action Sheet Mobile\"\r\n id=\"fd-action-sheet-mobile-control\"\r\n aria-haspopup=\"menu\"\r\n [label]=\"file.FileName ||''\"\r\n aria-controls=\"fd-action-sheet-mobile-body\"\r\n ></button>\r\n </fd-action-sheet-control>\r\n\r\n <fd-action-sheet-body\r\n actionSheetBodyId=\"fd-action-sheet-mobile-body\"\r\n ariaLabelledBy=\"fd-action-sheet-mobile-control\"\r\n >\r\n <li fd-action-sheet-item label=\"Search\" glyph=\"search\"></li>\r\n <li fd-action-sheet-item label=\"Download\" glyph=\"download\" ></li>\r\n <li fd-action-sheet-item label=\"Accept\" glyph=\"accept\" ></li>\r\n <li fd-action-sheet-item label=\"Reject\" glyph=\"cancel\" ></li>\r\n <li fd-action-sheet-item label=\"Decide Later\" [isCloseButton]=\"true\"></li>\r\n <li fd-action-sheet-item label=\"Cancel\" [negative]=\"true\" [isCloseButton]=\"true\"></li>\r\n </fd-action-sheet-body>\r\n </fd-action-sheet>\r\n </p> -->\r\n </ng-container>\r\n </td>\r\n <td fd-table-cell>\r\n <div class=\"status\" style=\"position: relative\">\r\n @if (+documentItem.MaxFileCount && !readonly) {\r\n <button\r\n fd-button\r\n glyph=\"attachment\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n [disabled]=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\r\n (click)=\"!readonly && uploader.open()\"\r\n >\r\n @if (uploadingState?.key === documentItem.Title && uploadingState?.uploading) {\r\n <bsu-mask [marginTop]=\"'3px'\"></bsu-mask>\r\n }\r\n </button>\r\n }\r\n <button\r\n fd-button\r\n glyph=\"show\"\r\n fullscreenFiles\r\n [files]=\"files\"\r\n [title]=\"documentItem.Title\"\r\n [fd-inline-help]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n [aria-describedby]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n [ariaLabel]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n fullscreenFiles\r\n [disabled]=\"!files.length\"\r\n [files]=\"files\"\r\n ></button>\r\n <button\r\n fd-button\r\n glyph=\"download\"\r\n [fd-inline-help]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n [aria-describedby]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n [ariaLabel]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n downloadFiles\r\n [disabled]=\"!files.length\"\r\n [files]=\"files\"\r\n (click)=\"downloadAll.emit()\"\r\n ></button>\r\n </div>\r\n </td>\r\n <td fd-table-cell>\r\n <fd-action-sheet #actionSheet>\r\n <fd-action-sheet-control>\r\n <ng-container *ngTemplateOutlet=\"statusTpl\"></ng-container>\r\n </fd-action-sheet-control>\r\n <fd-action-sheet-body>\r\n <li\r\n fd-action-sheet-item\r\n [label]=\"'Accept' | bbbTranslate\"\r\n glyph=\"accept\"\r\n (click)=\"actionSheet.close(); onReject(2)\"\r\n ></li>\r\n <li\r\n fd-action-sheet-item\r\n [label]=\"'Reject' | bbbTranslate\"\r\n glyph=\"cancel\"\r\n (click)=\"actionSheet.close(); onReject(3)\"\r\n ></li>\r\n </fd-action-sheet-body>\r\n </fd-action-sheet>\r\n\r\n @if (status === 3) {\r\n <p fd-table-text maxWidth=\"400px\">\r\n @if (readonly && rejectedReason) {\r\n <span> {{ rejectedReason | bbbTranslate }} </span>\r\n } @if (!readonly) {\r\n <input\r\n fd-form-control\r\n [value]=\"rejectedReason | bbbTranslate\"\r\n [placeholder]=\"'\u062F\u0644\u0627\u06CC\u0644 \u0631\u062F \u0645\u062F\u0631\u06A9' | bbbTranslate\"\r\n />\r\n }\r\n </p>\r\n }\r\n </td>\r\n</tr>\r\n\r\n<fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"documentItem.ItemKey\"\r\n [name]=\"'pictures_' + documentItem.ItemKey\"\r\n [accept]=\"documentItem.$ValidExtensions\"\r\n [fileLimit]=\"documentItem.MaxFileCount\"\r\n [multiple]=\"documentItem.MaxFileCount > 0\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n></fd-file-uploader>\r\n<ng-template #statusTpl>\r\n <div class=\"status\">\r\n <button fd-button fdType=\"transparent\">\r\n @if (status === 1) {\r\n <span\r\n fd-object-status\r\n [label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\r\n [aria-label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\r\n ></span>\r\n } @if (status === 2) {\r\n <span\r\n fd-object-status\r\n glyph=\"message-success\"\r\n status=\"positive\"\r\n [label]=\"'Accepted' | bbbTranslate\"\r\n [label]=\"'Accepted' | bbbTranslate\"\r\n ></span>\r\n } @if (status === 3) {\r\n <span\r\n fd-object-status\r\n glyph=\"cancel\"\r\n status=\"negative\"\r\n [label]=\"'Rejected' | bbbTranslate\"\r\n [aria-label]=\"'Rejected' | bbbTranslate\"\r\n ></span>\r\n }\r\n </button>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:contents}::ng-deep .fd-list--byline .fd-list__byline-left,::ng-deep .fd-list--byline .fd-list__byline-right{line-height:1.1rem!important}.fd-list__byline.smallSize{flex-direction:column;row-gap:5px}.fd-list__byline.smallSize div{width:100%}td{white-space:nowrap;padding:.5rem}fd-avatar ::ng-deep i{font-size:2.3rem!important}.status{display:flex;align-items:center;column-gap:3px;row-gap:3px}.status span.fd-object-status{font-size:var(--sapFontSize)!important;font-weight:700!important}.status span.fd-object-status ::ng-deep fd-icon{font-size:var(--sapFontSize);font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i2$1.FileViewerPopoverComponent, selector: "bsu-file-viewer-popover", inputs: ["files", "file", "deviceSize", "canDownload", "disableRemove", "fdType"], outputs: ["remove"] }, { kind: "directive", type: i2$1.FullscreenFilesDirective, selector: "[fullscreenFiles]", inputs: ["files", "title", "deviceSize", "isImageGallery", "component"] }, { kind: "directive", type: i2$1.DownloadFilesDirective, selector: "[downloadFiles]", inputs: ["files"] }, { kind: "component", type: i4$5.ActionSheetComponent, selector: "fd-action-sheet", inputs: ["mobile", "placement", "noArrow", "isOpen", "keyboardSupport", "triggers"], outputs: ["focusEscapeList", "isOpenChange"] }, { kind: "component", type: i4$5.ActionSheetControlComponent, selector: "fd-action-sheet-control", outputs: ["clicked"] }, { kind: "component", type: i4$5.ActionSheetItemComponent, selector: "[fd-action-sheet-item]", inputs: ["label", "glyph", "glyphFont", "negative", "isCloseButton", "disabled"], outputs: ["keyDown"] }, { kind: "component", type: i4$5.ActionSheetBodyComponent, selector: "fd-action-sheet-body", inputs: ["actionSheetBodyId", "mobile", "ariaLabel", "ariaLabelledby"] }, { kind: "component", type: i3$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7$3.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i6$1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i9.InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help"] }, { kind: "component", type: i6$3.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }, { kind: "directive", type: i3$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i3$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "directive", type: i3$6.TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2719
+ }
2720
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDocumentListItemComponent, decorators: [{
2721
+ type: Component,
2722
+ args: [{ selector: 'bdc-barsa-document-list-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<!-- <li fd-list-item style=\"padding: 0.5rem 1rem\">\r\n<span fd-list-thumbnail>\r\n <fd-icon *ngIf=\"documentItem.FontIcon\" [glyph]=\"documentItem.FontIcon\"></fd-icon>\r\n <fd-avatar\r\n *ngIf=\"documentItem.Avatar\"\r\n size=\"s\"\r\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:''\"\r\n [clickable]=\"true\"\r\n ></fd-avatar\r\n ></span>\r\n\r\n <div fd-list-content>\r\n <div fd-list-title>\r\n <div style=\"display: flex; column-gap: 3px\">\r\n <strong\r\n >{{ documentItem.Title }}\r\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\r\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\r\n </span>\r\n </strong>\r\n <div\r\n *ngIf=\"documentItem.$Accepted === false || documentItem.$Accepted === true\"\r\n style=\"display: flex; column-gap: 3px; flex-wrap: wrap; align-items: center\"\r\n >\r\n <span\r\n fd-object-status\r\n [status]=\"accepted ? 'positive' : 'negative'\"\r\n [label]=\"accepted ? acceptedText : rejectedText\"\r\n [clickable]=\"true\"\r\n [inverted]=\"true\"\r\n [aria-label]=\"accepted ? acceptedText : rejectedText\"\r\n ></span>\r\n <fd-popover title=\"Rejected document\" *ngIf=\"rejectedReason && !accepted\">\r\n <fd-popover-control>\r\n <span\r\n fd-object-status\r\n status=\"negative\"\r\n glyph=\"question-mark\"\r\n glyphAriaLabel=\"Negative\"\r\n title=\"Rejected document\"\r\n ></span>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <fd-message-strip type=\"error\" [dismissible]=\"false\">\r\n {{ rejectedReason }}\r\n </fd-message-strip>\r\n </fd-popover-body>\r\n </fd-popover>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-list-byline [twoCol]=\"true\" [class.smallSize]=\"deviceSize === 's'\">\r\n <div fd-list-byline-left>\r\n <div style=\"display: flex; flex-direction: column; row-gap: 5px; flex-wrap: wrap\">\r\n <span>\r\n {{ documentItem.Description }}\r\n </span>\r\n <div style=\"display: flex; flex-wrap: wrap; column-gap: 3px; align-items: center\">\r\n <ng-container *ngIf=\"hasFiles\">\r\n <button fd-button [fdType]=\"'transparent'\" glyph=\"show\" (click)=\"onFullscreen()\"></button>\r\n <ng-container *ngFor=\"let file of files\">\r\n <fd-token\r\n [readOnly]=\"readonly\"\r\n *ngIf=\"!file.IsDeleted\"\r\n (onCloseClick)=\"onRemoveFile(file)\"\r\n >{{ file.FileName }}</fd-token\r\n >\r\n </ng-container>\r\n </ng-container>\r\n <button\r\n fd-button\r\n *ngIf=\"documentItem.MaxFileCount && !readonly\"\r\n glyph=\"attachment\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n (click)=\"!readonly && uploader.open()\"\r\n ></button>\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"documentItem.ItemKey\"\r\n [name]=\"'pictures_' + documentItem.ItemKey\"\r\n [accept]=\"documentItem.$ValidExtensions\"\r\n [fileLimit]=\"documentItem.MaxFileCount\"\r\n [multiple]=\"documentItem.MaxFileCount > 0\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n ></fd-file-uploader>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-list-byline-right *ngIf=\"documentItem.CanAccept\">\r\n <bdc-accept-reject\r\n [rejectedReason]=\"rejectedReason\"\r\n [positiveText]=\"acceptedText\"\r\n [negativeText]=\"rejectedText\"\r\n [deviceSize]=\"deviceSize\"\r\n [readonly]=\"readonly\"\r\n ></bdc-accept-reject>\r\n </div>\r\n </div>\r\n </div>\r\n </li> -->\r\n\r\n<tr fd-table-row>\r\n <td fd-table-cell>\r\n @if (documentItem.Avatar && !files.length) {\r\n <fd-avatar\r\n size=\"s\"\r\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:'':64:64\"\r\n [clickable]=\"true\"\r\n [transparent]=\"true\"\r\n ></fd-avatar>\r\n } @else { @if (files.length) {\r\n <fd-avatar [transparent]=\"true\" size=\"s\" [image]=\"firstImageUrl\" [clickable]=\"true\"></fd-avatar>\r\n } @if (!files.length) {\r\n <fd-avatar [transparent]=\"true\" size=\"s\" [glyph]=\"documentItem.FontIcon\" [clickable]=\"true\"></fd-avatar>\r\n } }\r\n </td>\r\n <td fd-table-cell style=\"min-width: 140px\">\r\n <p fd-table-text>\r\n <strong\r\n >{{ documentItem.Title }}\r\n @if (documentItem.IsRequired) {\r\n <span fd-object-status status=\"negative\">*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }}) </span>\r\n }\r\n </strong>\r\n </p>\r\n <div>\r\n <span>\r\n {{ documentItem.Description }}\r\n </span>\r\n </div>\r\n </td>\r\n\r\n <td fd-table-cell>\r\n <ng-container>\r\n <!-- <ul fd-list>\r\n <li fd-list-item *ngFor=\"let file of files; let ind = index\">\r\n <span fd-list-title>\r\n {{ file.FileName }}\r\n </span>\r\n <span fd-list-secondary>\r\n <button ariaLabel=\"Remove\" title=\"Remove\" fd-button glyph=\"delete\" ></button>\r\n </span>\r\n </li>\r\n </ul> -->\r\n <div style=\"display: flex; align-items: flex-start; column-gap: 3px; row-gap: 3px; flex-direction: column\">\r\n @for (file of files; track file) {\r\n <!-- <span><fd-icon glyph=\"attachment\"></fd-icon><a fd-link>{{file.FileName}}</a></span> -->\r\n @if (!file.IsDeleted) {\r\n <bsu-file-viewer-popover\r\n [file]=\"file\"\r\n [deviceSize]=\"deviceSize\"\r\n [canDownload]=\"true\"\r\n (remove)=\"removeFile.emit(file)\"\r\n ></bsu-file-viewer-popover>\r\n } }\r\n <!-- <button\r\n fd-button\r\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\r\n glyph=\"add\"\r\n (click)=\"!readonly && uploader.open()\"\r\n ></button> -->\r\n </div>\r\n <!-- <p *ngFor=\"let file of files\" fd-table-text>\r\n <fd-action-sheet >\r\n <fd-action-sheet-control>\r\n <button\r\n fd-button\r\n glyph=\"settings\"\r\n title=\"Open Action Sheet Mobile\"\r\n id=\"fd-action-sheet-mobile-control\"\r\n aria-haspopup=\"menu\"\r\n [label]=\"file.FileName ||''\"\r\n aria-controls=\"fd-action-sheet-mobile-body\"\r\n ></button>\r\n </fd-action-sheet-control>\r\n\r\n <fd-action-sheet-body\r\n actionSheetBodyId=\"fd-action-sheet-mobile-body\"\r\n ariaLabelledBy=\"fd-action-sheet-mobile-control\"\r\n >\r\n <li fd-action-sheet-item label=\"Search\" glyph=\"search\"></li>\r\n <li fd-action-sheet-item label=\"Download\" glyph=\"download\" ></li>\r\n <li fd-action-sheet-item label=\"Accept\" glyph=\"accept\" ></li>\r\n <li fd-action-sheet-item label=\"Reject\" glyph=\"cancel\" ></li>\r\n <li fd-action-sheet-item label=\"Decide Later\" [isCloseButton]=\"true\"></li>\r\n <li fd-action-sheet-item label=\"Cancel\" [negative]=\"true\" [isCloseButton]=\"true\"></li>\r\n </fd-action-sheet-body>\r\n </fd-action-sheet>\r\n </p> -->\r\n </ng-container>\r\n </td>\r\n <td fd-table-cell>\r\n <div class=\"status\" style=\"position: relative\">\r\n @if (+documentItem.MaxFileCount && !readonly) {\r\n <button\r\n fd-button\r\n glyph=\"attachment\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n [disabled]=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\r\n (click)=\"!readonly && uploader.open()\"\r\n >\r\n @if (uploadingState?.key === documentItem.Title && uploadingState?.uploading) {\r\n <bsu-mask [marginTop]=\"'3px'\"></bsu-mask>\r\n }\r\n </button>\r\n }\r\n <button\r\n fd-button\r\n glyph=\"show\"\r\n fullscreenFiles\r\n [files]=\"files\"\r\n [title]=\"documentItem.Title\"\r\n [fd-inline-help]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n [aria-describedby]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n [ariaLabel]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n fullscreenFiles\r\n [disabled]=\"!files.length\"\r\n [files]=\"files\"\r\n ></button>\r\n <button\r\n fd-button\r\n glyph=\"download\"\r\n [fd-inline-help]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n [aria-describedby]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n [ariaLabel]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n downloadFiles\r\n [disabled]=\"!files.length\"\r\n [files]=\"files\"\r\n (click)=\"downloadAll.emit()\"\r\n ></button>\r\n </div>\r\n </td>\r\n <td fd-table-cell>\r\n <fd-action-sheet #actionSheet>\r\n <fd-action-sheet-control>\r\n <ng-container *ngTemplateOutlet=\"statusTpl\"></ng-container>\r\n </fd-action-sheet-control>\r\n <fd-action-sheet-body>\r\n <li\r\n fd-action-sheet-item\r\n [label]=\"'Accept' | bbbTranslate\"\r\n glyph=\"accept\"\r\n (click)=\"actionSheet.close(); onReject(2)\"\r\n ></li>\r\n <li\r\n fd-action-sheet-item\r\n [label]=\"'Reject' | bbbTranslate\"\r\n glyph=\"cancel\"\r\n (click)=\"actionSheet.close(); onReject(3)\"\r\n ></li>\r\n </fd-action-sheet-body>\r\n </fd-action-sheet>\r\n\r\n @if (status === 3) {\r\n <p fd-table-text maxWidth=\"400px\">\r\n @if (readonly && rejectedReason) {\r\n <span> {{ rejectedReason | bbbTranslate }} </span>\r\n } @if (!readonly) {\r\n <input\r\n fd-form-control\r\n [value]=\"rejectedReason | bbbTranslate\"\r\n [placeholder]=\"'\u062F\u0644\u0627\u06CC\u0644 \u0631\u062F \u0645\u062F\u0631\u06A9' | bbbTranslate\"\r\n />\r\n }\r\n </p>\r\n }\r\n </td>\r\n</tr>\r\n\r\n<fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"documentItem.ItemKey\"\r\n [name]=\"'pictures_' + documentItem.ItemKey\"\r\n [accept]=\"documentItem.$ValidExtensions\"\r\n [fileLimit]=\"documentItem.MaxFileCount\"\r\n [multiple]=\"documentItem.MaxFileCount > 0\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n></fd-file-uploader>\r\n<ng-template #statusTpl>\r\n <div class=\"status\">\r\n <button fd-button fdType=\"transparent\">\r\n @if (status === 1) {\r\n <span\r\n fd-object-status\r\n [label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\r\n [aria-label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\r\n ></span>\r\n } @if (status === 2) {\r\n <span\r\n fd-object-status\r\n glyph=\"message-success\"\r\n status=\"positive\"\r\n [label]=\"'Accepted' | bbbTranslate\"\r\n [label]=\"'Accepted' | bbbTranslate\"\r\n ></span>\r\n } @if (status === 3) {\r\n <span\r\n fd-object-status\r\n glyph=\"cancel\"\r\n status=\"negative\"\r\n [label]=\"'Rejected' | bbbTranslate\"\r\n [aria-label]=\"'Rejected' | bbbTranslate\"\r\n ></span>\r\n }\r\n </button>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:contents}::ng-deep .fd-list--byline .fd-list__byline-left,::ng-deep .fd-list--byline .fd-list__byline-right{line-height:1.1rem!important}.fd-list__byline.smallSize{flex-direction:column;row-gap:5px}.fd-list__byline.smallSize div{width:100%}td{white-space:nowrap;padding:.5rem}fd-avatar ::ng-deep i{font-size:2.3rem!important}.status{display:flex;align-items:center;column-gap:3px;row-gap:3px}.status span.fd-object-status{font-size:var(--sapFontSize)!important;font-weight:700!important}.status span.fd-object-status ::ng-deep fd-icon{font-size:var(--sapFontSize);font-weight:700}\n"] }]
2723
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.PictureFieldSourcePipe }], propDecorators: { documentItem: [{
2724
+ type: Input
2725
+ }], deviceSize: [{
2726
+ type: Input
2727
+ }], files: [{
2728
+ type: Input
2729
+ }], accepted: [{
2730
+ type: Input
2731
+ }], rejectedReason: [{
2732
+ type: Input
2733
+ }], readonly: [{
2734
+ type: Input
2735
+ }], status: [{
2736
+ type: Input
2737
+ }], uploadingState: [{
2738
+ type: Input
2739
+ }], statusChanged: [{
2740
+ type: Output
2741
+ }], rejectTextChange: [{
2742
+ type: Output
2743
+ }], fileSelectionChange: [{
2744
+ type: Output
2745
+ }], removeFile: [{
2746
+ type: Output
2747
+ }], fullscreen: [{
2748
+ type: Output
2749
+ }], download: [{
2750
+ type: Output
2751
+ }], downloadAll: [{
2752
+ type: Output
2753
+ }] } });
2754
+
2755
+ class BarsaDocumentsComponent extends ReportViewBaseComponent {
2756
+ constructor(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService, _dialogService, _uploadService) {
2757
+ super(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService, _uploadService);
2758
+ this._el = _el;
2759
+ this._cdr = _cdr;
2760
+ this._renderer2 = _renderer2;
2761
+ this._findColumnByDbName = _findColumnByDbName;
2762
+ this._ulvMainService = _ulvMainService;
2763
+ this._portalService = _portalService;
2764
+ this._dialogService = _dialogService;
2765
+ this._uploadService = _uploadService;
2766
+ }
2767
+ get documentItems() {
2768
+ if (this.customFieldInfo) {
2769
+ return this.customFieldInfo.DocumentItems.MoDataList;
2770
+ }
2771
+ else {
2772
+ return this.viewSetting.FilesSetting.DocumentItems.MoDataList;
2773
+ }
2774
+ }
2775
+ ngOnInit() {
2776
+ super.ngOnInit();
2777
+ const { moDataList, viewSetting, allColumns } = this;
2778
+ this._initColumnField(allColumns, viewSetting);
2779
+ this._subscribeOnUploadFile(this.fileColumn);
2780
+ this._mapDocumentItem(moDataList, this.documentItems);
2781
+ this._checkMandatory();
2782
+ }
2783
+ ngOnChanges(changes) {
2784
+ super.ngOnChanges(changes);
2785
+ const { moDataList } = changes;
2786
+ if (moDataList && !moDataList.firstChange) {
2787
+ if (moDataList && !moDataList.firstChange) {
2788
+ this._mapDocumentItem(moDataList.currentValue, this.documentItems);
2789
+ this.detectChanges();
2790
+ }
2791
+ }
2792
+ }
2793
+ ngAfterViewInit() {
2794
+ super.ngAfterViewInit();
2795
+ setTimeout(() => {
2796
+ for (let i = 0; i < this.documentItems.length - this.moDataList.length; i++) {
2797
+ this.createNewMo.emit();
2798
+ }
2799
+ });
2800
+ }
2801
+ onFileSelection(files, documentItem, mo) {
2802
+ this.selectedMo = mo;
2803
+ this._uploadFile(files, documentItem);
2804
+ }
2805
+ onRemoveFile(file, mo) {
2806
+ const fileDbName = this.fileColumn.Name;
2807
+ let files = mo[fileDbName].Files;
2808
+ if (file.IsNew) {
2809
+ files = files.filter((c) => c.Id !== file.Id);
2810
+ }
2811
+ else {
2812
+ const existFile = files.find((c) => c.Id === file.Id);
2813
+ existFile.IsDeleted = true;
2814
+ }
2815
+ mo[fileDbName].Files = [...files];
2816
+ this._updateMo(mo);
2817
+ }
2818
+ onStatusChanged(e, mo) {
2819
+ mo[this.statusColumn.Name] = e.value;
2820
+ mo[this.rejectedReasonColumn.Name] = e.rejectedText;
2821
+ this._updateMo(mo);
2822
+ }
2823
+ onRejectedTextChange(text, mo) {
2824
+ mo[this.rejectedReasonColumn.Name] = text;
2825
+ this._updateMo(mo);
2826
+ }
2827
+ _checkMandatory() {
2828
+ const moDataList = this.moDataList;
2829
+ const items = this.documentItems.filter((c) => c.IsRequired);
2830
+ let mandatory = items.length > 0;
2831
+ const mandatory2 = items
2832
+ .map((item) => moDataList.find((c) => c[this.keyColumn.Name] === item.ItemKey))
2833
+ .filter((item) => item)
2834
+ .some((mo) => mo[this.fileColumn.Name].Files.filter((c) => !c.IsDeleted).length === 0);
2835
+ mandatory = mandatory && mandatory2;
2836
+ this.mandatory.emit(mandatory);
2837
+ }
2838
+ _mapDocumentItem(moDataList, documentItems) {
2839
+ const keyName = this.keyColumn.Name;
2840
+ moDataList.forEach((mo, index) => {
2841
+ let documentItem = documentItems.find((c) => c.ItemKey === mo[keyName]); // find setting that matches with mo by itemKey
2842
+ if (documentItem) {
2843
+ mo.$documentItem = documentItem;
2844
+ }
2845
+ else {
2846
+ documentItem = documentItems.find((item) => moDataList.map((c) => c[keyName]).indexOf(item.ItemKey) < 0); // find a setting has not have $RelatedMo yet
2847
+ if (documentItem) {
2848
+ mo[keyName] = documentItem.ItemKey;
2849
+ mo.$documentItem = documentItem;
2850
+ this.updateMo.emit(mo);
2851
+ }
2852
+ }
2853
+ });
2854
+ }
2855
+ _initColumnField(allColumns, viewSetting) {
2856
+ const keyColumn = this._findColumnByDbName.transform(allColumns, viewSetting.ItemKeyField);
2857
+ const fileColumn = this._findColumnByDbName.transform(allColumns, viewSetting.FileField);
2858
+ const acceptedColumn = this._findColumnByDbName.transform(allColumns, viewSetting.AcceptedField);
2859
+ const rejectedReasonColumn = this._findColumnByDbName.transform(allColumns, viewSetting.RejectedReasonField);
2860
+ const statusColumn = this._findColumnByDbName.transform(allColumns, viewSetting.StatusField);
2861
+ !keyColumn && this._columnNotExistsInReport(viewSetting.ItemKeyField);
2862
+ !fileColumn && this._columnNotExistsInReport(viewSetting.FileField);
2863
+ !rejectedReasonColumn && this._columnNotExistsInReport(viewSetting.RejectedReasonField);
2864
+ !acceptedColumn && this._columnNotExistsInReport(viewSetting.AcceptedField);
2865
+ !statusColumn && this._columnNotExistsInReport(viewSetting.StatusField);
2866
+ keyColumn && (this.keyColumn = keyColumn);
2867
+ fileColumn && (this.fileColumn = fileColumn);
2868
+ acceptedColumn && (this.acceptedColumn = acceptedColumn);
2869
+ rejectedReasonColumn && (this.rejectedReasonColumn = rejectedReasonColumn);
2870
+ statusColumn && (this.statusColumn = statusColumn);
2871
+ }
2872
+ _subscribeOnUploadFile(fileColumn) {
2873
+ this._filesValidationHelper = new FilesValidationHelper(0, 0, 0);
2874
+ if (this._uploadService) {
2875
+ this._createLinearHelper(this._uploadService, this._filesValidationHelper, fileColumn.FieldDefId);
2876
+ this.uploadingState$ = this._uploadService.uploadingState$;
2877
+ }
2878
+ else {
2879
+ throw new Error('UploadService not provided.');
2880
+ }
2881
+ this._linearHelper.newFileUploaded$.subscribe((file) => {
2882
+ const mo = this.moDataList.find((c) => c.Id === this.selectedMo.Id);
2883
+ if (mo) {
2884
+ mo[fileColumn.Name].Files = [...mo[fileColumn.Name].Files, file];
2885
+ this._updateMo(mo);
2886
+ }
2887
+ });
2888
+ }
2889
+ _updateMo(mo) {
2890
+ mo.$NewInlineMo = undefined;
2891
+ if (mo.$State === 'Unchanged') {
2892
+ mo.$State = 'Modified';
2893
+ }
2894
+ this.updateMo.emit(mo);
2895
+ this._checkMandatory();
2896
+ }
2897
+ _createLinearHelper(uploadService, filesValidationHelper, fieldDefId) {
2898
+ this._linearHelper = new LinearListHelper(uploadService, filesValidationHelper, fieldDefId);
2899
+ }
2900
+ _uploadFile(files, documentItem) {
2901
+ const filesValidationHelper = this._filesValidationHelper;
2902
+ filesValidationHelper.maxFileCount = +documentItem.MaxFileCount;
2903
+ filesValidationHelper.maxFileSize = +documentItem.EachFileSize;
2904
+ filesValidationHelper.maxTotalFileSize = +documentItem.MaxFileSize;
2905
+ this._linearHelper.uploadToServer(files, documentItem.Title);
2906
+ }
2907
+ _columnNotExistsInReport(columnCaption) {
2908
+ throw new Error(`can not find ${columnCaption} column in report.please add it to report columns.`);
2909
+ }
2910
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDocumentsComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1$1.FindColumnByDbNamePipe }, { token: i1$1.UlvMainService }, { token: i1$1.PortalService }, { token: i2$2.DialogService }, { token: i1$1.UploadService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
2911
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaDocumentsComponent, selector: "bdc-barsa-documents", providers: [UploadService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <ul fd-list [byline]=\"true\" fdCompact [selection]=\"false\"> -->\r\n<table fd-table aria-label=\"Default\" [allCellsFocusable]=\"true\" [noBorderX]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>{{ '\u0639\u06A9\u0633' | bbbTranslate }}</th>\r\n <th fd-table-cell style=\"min-width: 140px; width: auto\">{{ '\u0646\u0648\u0639 \u0645\u062F\u0631\u06A9' | bbbTranslate }}</th>\r\n <th fd-table-cell style=\"width: 99%\">{{ '\u0627\u0644\u0635\u0627\u0642 \u0641\u0627\u06CC\u0644' | bbbTranslate }}</th>\r\n <th fd-table-cell></th>\r\n <th fd-table-cell style=\"width: 400px; min-width: 400px; max-width: 400px\">{{ '\u0648\u0636\u0639\u06CC\u062A' | bbbTranslate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (mo of moDataList; track _trackByRow($index, mo)) { @if (mo.$documentItem) {\r\n <bdc-barsa-document-list-item\r\n [documentItem]=\"mo.$documentItem\"\r\n [accepted]=\"mo[acceptedColumn.Name]\"\r\n [files]=\"mo[fileColumn.Name].Files\"\r\n [uploadingState]=\"(uploadingState$ | async)!!\"\r\n [rejectedReason]=\"mo[rejectedReasonColumn.Name]\"\r\n [fileDbName]=\"fileColumn.Name\"\r\n [status]=\"+mo[statusColumn.Name]\"\r\n [deviceSize]=\"deviceSize\"\r\n [readonly]=\"!access.Edit\"\r\n [deviceSize]=\"deviceSize\"\r\n (removeFile)=\"onRemoveFile($event, mo)\"\r\n (fileSelectionChange)=\"onFileSelection($event, mo.$documentItem, mo)\"\r\n (rejectTextChange)=\"onRejectedTextChange($event, mo)\"\r\n (statusChanged)=\"onStatusChanged($event, mo)\"\r\n ></bdc-barsa-document-list-item>\r\n } }\r\n <!-- </ul> -->\r\n </tbody>\r\n</table>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i3$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i3$6.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY", "nonInteractive"] }, { kind: "directive", type: i3$6.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i3$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i3$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "component", type: BarsaDocumentListItemComponent, selector: "bdc-barsa-document-list-item", inputs: ["documentItem", "deviceSize", "files", "accepted", "rejectedReason", "readonly", "status", "uploadingState"], outputs: ["statusChanged", "rejectTextChange", "fileSelectionChange", "removeFile", "fullscreen", "download", "downloadAll"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2912
+ }
2913
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDocumentsComponent, decorators: [{
2914
+ type: Component,
2915
+ args: [{ selector: 'bdc-barsa-documents', changeDetection: ChangeDetectionStrategy.OnPush, providers: [UploadService], standalone: false, template: "<!-- <ul fd-list [byline]=\"true\" fdCompact [selection]=\"false\"> -->\r\n<table fd-table aria-label=\"Default\" [allCellsFocusable]=\"true\" [noBorderX]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>{{ '\u0639\u06A9\u0633' | bbbTranslate }}</th>\r\n <th fd-table-cell style=\"min-width: 140px; width: auto\">{{ '\u0646\u0648\u0639 \u0645\u062F\u0631\u06A9' | bbbTranslate }}</th>\r\n <th fd-table-cell style=\"width: 99%\">{{ '\u0627\u0644\u0635\u0627\u0642 \u0641\u0627\u06CC\u0644' | bbbTranslate }}</th>\r\n <th fd-table-cell></th>\r\n <th fd-table-cell style=\"width: 400px; min-width: 400px; max-width: 400px\">{{ '\u0648\u0636\u0639\u06CC\u062A' | bbbTranslate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (mo of moDataList; track _trackByRow($index, mo)) { @if (mo.$documentItem) {\r\n <bdc-barsa-document-list-item\r\n [documentItem]=\"mo.$documentItem\"\r\n [accepted]=\"mo[acceptedColumn.Name]\"\r\n [files]=\"mo[fileColumn.Name].Files\"\r\n [uploadingState]=\"(uploadingState$ | async)!!\"\r\n [rejectedReason]=\"mo[rejectedReasonColumn.Name]\"\r\n [fileDbName]=\"fileColumn.Name\"\r\n [status]=\"+mo[statusColumn.Name]\"\r\n [deviceSize]=\"deviceSize\"\r\n [readonly]=\"!access.Edit\"\r\n [deviceSize]=\"deviceSize\"\r\n (removeFile)=\"onRemoveFile($event, mo)\"\r\n (fileSelectionChange)=\"onFileSelection($event, mo.$documentItem, mo)\"\r\n (rejectTextChange)=\"onRejectedTextChange($event, mo)\"\r\n (statusChanged)=\"onStatusChanged($event, mo)\"\r\n ></bdc-barsa-document-list-item>\r\n } }\r\n <!-- </ul> -->\r\n </tbody>\r\n</table>\r\n", styles: [":host{display:block}\n"] }]
2916
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$1.FindColumnByDbNamePipe }, { type: i1$1.UlvMainService }, { type: i1$1.PortalService }, { type: i2$2.DialogService }, { type: i1$1.UploadService, decorators: [{
2917
+ type: Optional
2918
+ }] }] });
2919
+
2920
+ class AcceptRejectComponent extends BaseComponent {
2921
+ constructor(_cdr) {
2922
+ super();
2923
+ this._cdr = _cdr;
2924
+ this.rejectedChanged = new EventEmitter();
2925
+ this.id = getUniqueId(3);
2926
+ this.applied = false;
2927
+ }
2928
+ ngOnInit() {
2929
+ super.ngOnInit();
2930
+ this._initilaize();
2931
+ }
2932
+ onReject() {
2933
+ this._raiseEvent(true, true, this.rejectedReason);
2934
+ }
2935
+ onReset() {
2936
+ this._raiseEvent(false, false);
2937
+ }
2938
+ onAccept() {
2939
+ this._raiseEvent(true, false);
2940
+ }
2941
+ _initilaize() {
2942
+ if (this.rejectedReason) {
2943
+ this.rejected = true;
2944
+ this.applied = true;
2945
+ }
2946
+ }
2947
+ _raiseEvent(applied, rejected, rejectedReason = '') {
2948
+ this.applied = applied;
2949
+ this.rejected = rejected;
2950
+ this.rejectedReason = rejectedReason;
2951
+ this.rejectedChanged.emit({ accept: rejected, error: rejectedReason });
2952
+ this._cdr.detectChanges();
2953
+ }
2954
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AcceptRejectComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2955
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AcceptRejectComponent, selector: "bdc-accept-reject", inputs: { negativeText: "negativeText", positiveText: "positiveText", rejectedReason: "rejectedReason", acceptedText: "acceptedText", deviceSize: "deviceSize", readonly: "readonly", rejected: "rejected" }, outputs: { rejectedChanged: "rejectedChanged" }, usesInheritance: true, ngImport: i0, template: "@if (!applied && !readonly) {\r\n<div>\r\n <button\r\n fd-button\r\n [label]=\"positiveText | bbbTranslate\"\r\n fdType=\"positive\"\r\n glyph=\"message-success\"\r\n ariaLabel=\"positive\"\r\n value=\"yes\"\r\n style=\"margin: 0 5px\"\r\n (click)=\"onAccept()\"\r\n ></button>\r\n <fd-popover [focusTrapped]=\"true\" [focusAutoCapture]=\"true\" [mobile]=\"deviceSize === 's'\" #popover>\r\n <fd-popover-control>\r\n <button\r\n fd-button\r\n [label]=\"negativeText | bbbTranslate\"\r\n glyph=\"message-error\"\r\n fdType=\"negative\"\r\n ariaLabel=\"Negative\"\r\n value=\"no\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px\">\r\n <div fd-popover-body-header>\r\n <div fd-bar [cozy]=\"true\" id=\"popover-bar-header-1\">\r\n <div fd-bar-left>\r\n <span\r\n fd-object-status\r\n status=\"negative\"\r\n glyph=\"message-error\"\r\n glyphAriaLabel=\"Negative\"\r\n title=\"Negative\"\r\n ></span>\r\n <fd-bar-element>\u0639\u0644\u062A \u0631\u062F</fd-bar-element>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-form-item>\r\n <fd-form-input-message-group>\r\n <textarea fd-form-control [id]=\"id\" [(ngModel)]=\"rejectedReason\"></textarea>\r\n </fd-form-input-message-group>\r\n </div>\r\n <div fd-popover-body-footer>\r\n <div fd-bar barDesign=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n [label]=\"'Ok' | bbbTranslate\"\r\n fdType=\"emphasized\"\r\n (click)=\"popover.close(); onReject()\"\r\n ></fd-button-bar>\r\n <fd-button-bar [label]=\"'Cancel' | bbbTranslate\" (click)=\"popover.close()\"></fd-button-bar>\r\n </div>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</div>\r\n} @if (readonly || applied) {\r\n<div>\r\n <span>{{ rejected ? rejectedReason : ('\u2713' + acceptedText | bbbTranslate) }}</span>\r\n <button fd-button glyph=\"decline\" fdType=\"transparent\" (click)=\"onReset()\"></button>\r\n</div>\r\n}\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1$1.MobileDirective, selector: "[mobile]" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3$3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i3$3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i3$3.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i3$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6$1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i6$1.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i6$1.FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "component", type: i6$3.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }, { kind: "component", type: i7$2.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7$2.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "directive", type: i7$2.PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "directive", type: i7$2.PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "component", type: i7$2.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2956
+ }
2957
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AcceptRejectComponent, decorators: [{
2958
+ type: Component,
2959
+ args: [{ selector: 'bdc-accept-reject', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (!applied && !readonly) {\r\n<div>\r\n <button\r\n fd-button\r\n [label]=\"positiveText | bbbTranslate\"\r\n fdType=\"positive\"\r\n glyph=\"message-success\"\r\n ariaLabel=\"positive\"\r\n value=\"yes\"\r\n style=\"margin: 0 5px\"\r\n (click)=\"onAccept()\"\r\n ></button>\r\n <fd-popover [focusTrapped]=\"true\" [focusAutoCapture]=\"true\" [mobile]=\"deviceSize === 's'\" #popover>\r\n <fd-popover-control>\r\n <button\r\n fd-button\r\n [label]=\"negativeText | bbbTranslate\"\r\n glyph=\"message-error\"\r\n fdType=\"negative\"\r\n ariaLabel=\"Negative\"\r\n value=\"no\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px\">\r\n <div fd-popover-body-header>\r\n <div fd-bar [cozy]=\"true\" id=\"popover-bar-header-1\">\r\n <div fd-bar-left>\r\n <span\r\n fd-object-status\r\n status=\"negative\"\r\n glyph=\"message-error\"\r\n glyphAriaLabel=\"Negative\"\r\n title=\"Negative\"\r\n ></span>\r\n <fd-bar-element>\u0639\u0644\u062A \u0631\u062F</fd-bar-element>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-form-item>\r\n <fd-form-input-message-group>\r\n <textarea fd-form-control [id]=\"id\" [(ngModel)]=\"rejectedReason\"></textarea>\r\n </fd-form-input-message-group>\r\n </div>\r\n <div fd-popover-body-footer>\r\n <div fd-bar barDesign=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n [label]=\"'Ok' | bbbTranslate\"\r\n fdType=\"emphasized\"\r\n (click)=\"popover.close(); onReject()\"\r\n ></fd-button-bar>\r\n <fd-button-bar [label]=\"'Cancel' | bbbTranslate\" (click)=\"popover.close()\"></fd-button-bar>\r\n </div>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</div>\r\n} @if (readonly || applied) {\r\n<div>\r\n <span>{{ rejected ? rejectedReason : ('\u2713' + acceptedText | bbbTranslate) }}</span>\r\n <button fd-button glyph=\"decline\" fdType=\"transparent\" (click)=\"onReset()\"></button>\r\n</div>\r\n}\r\n", styles: [":host{display:block}\n"] }]
2960
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { negativeText: [{
2961
+ type: Input
2962
+ }], positiveText: [{
2963
+ type: Input
2964
+ }], rejectedReason: [{
2965
+ type: Input
2966
+ }], acceptedText: [{
2967
+ type: Input
2968
+ }], deviceSize: [{
2969
+ type: Input
2970
+ }], readonly: [{
2971
+ type: Input
2972
+ }], rejected: [{
2973
+ type: Input
2974
+ }], rejectedChanged: [{
2975
+ type: Output
2976
+ }] } });
2977
+
2978
+ class FooterComponent extends BaseComponent {
2979
+ constructor(_portalService, _cdr) {
2980
+ super();
2981
+ this._portalService = _portalService;
2982
+ this._cdr = _cdr;
2983
+ _portalService.rtl$.pipe(withLatestFrom(_portalService.deviceSize$)).subscribe(([rtl, deviceSize]) => {
2984
+ this.rtl = rtl;
2985
+ this.deviceSize = deviceSize;
2986
+ });
2987
+ }
2988
+ ngOnInit() {
2989
+ super.ngOnInit();
2990
+ const { RelatedMo } = this.settings;
2991
+ if (!RelatedMo) {
2992
+ return;
2993
+ }
2994
+ this._portalService.loadMo(RelatedMo.Id, RelatedMo.$TypeDefId).subscribe((result) => {
2995
+ this.footer = result?.Data?.Mo;
2996
+ this._cdr.detectChanges();
2997
+ });
2998
+ }
2999
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FooterComponent, deps: [{ token: i1$1.PortalService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3000
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FooterComponent, selector: "bdc-footer", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: "@if (footer) {\r\n<div fd-bar barDesign=\"footer\" [size]=\"'m_l'\" [class.rtl]=\"rtl\" class=\"footer\" [class.mobile]=\"deviceSize === 's'\">\r\n <div fd-bar-left class=\"left\">\r\n <a\r\n fd-button\r\n glyph=\"email\"\r\n [fd-inline-help]=\"('\u0627\u06CC\u0645\u06CC\u0644 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.Email\"\r\n [href]=\"'mailto:' + footer.Email\"\r\n fdType=\"transparent\"\r\n >\r\n </a>\r\n <a\r\n fd-button\r\n glyph=\"headset\"\r\n [fd-inline-help]=\"('\u0634\u0645\u0627\u0631\u0647 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.TelNumber\"\r\n [href]=\"'tel:' + footer.TelNumber\"\r\n fdType=\"transparent\"\r\n ></a>\r\n <fd-popover>\r\n <fd-popover-control>\r\n <button\r\n fd-button\r\n glyph=\"vertical-waterfall-chart\"\r\n [title]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\r\n aria-haspopup=\"menu\"\r\n fdType=\"transparent\"\r\n [fd-inline-help]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\r\n tabindex=\"0\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n <li fd-list-item class=\"all\">\r\n <i fd-list-icon glyph=\"bar-chart\"></i>\r\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u0632\u062F\u06CC\u062F\u06A9\u0646\u0646\u062F\u06AF\u0627\u0646 \u06A9\u0644 <strong>120</strong></span>\r\n </li>\r\n <li fd-list-item class=\"today\">\r\n <i fd-list-icon glyph=\"bar-chart\"></i>\r\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u0632\u062F\u06CC\u062F\u06A9\u0646\u0646\u062F\u06AF\u0627\u0646 \u0627\u0645\u0631\u0648\u0632 <strong>76</strong></span>\r\n </li>\r\n <li fd-list-item class=\"online\">\r\n <i fd-list-icon glyph=\"bar-chart\"></i>\r\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u06A9\u0627\u0631\u0628\u0631\u0627\u0646 \u0622\u0646\u0644\u0644\u0627\u06CC\u0646 <strong>10</strong></span>\r\n </li>\r\n </ul>\r\n </fd-popover-body>\r\n </fd-popover>\r\n <fd-popover>\r\n <fd-popover-control>\r\n <button\r\n [fd-inline-help]=\"'\u06A9\u0627\u0646\u0627\u0644 \u0627\u0631\u062A\u0628\u0627\u0637\u06CC' | bbbTranslate\"\r\n tabindex=\"0\"\r\n fd-button\r\n glyph=\"paper-plane\"\r\n id=\"fd-action-sheet-default-control\"\r\n aria-haspopup=\"menu\"\r\n fdType=\"transparent\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n @for (socialNetwork of footer.SocialNetworks.MoDataList; track socialNetwork) {\r\n <li fd-list-item>\r\n <a fd-list-link [href]=\"socialNetwork.Url\" style=\"display: flex; column-gap: 5px\">\r\n <i fd-list-icon class=\"sap-icon--1\"\r\n ><img [src]=\"socialNetwork.Image?.FileId | picFieldSrc: 'ID':null:'':16:16\" />\r\n </i>\r\n <span fd-list-title>{{ socialNetwork.Title }}</span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </fd-popover-body>\r\n </fd-popover>\r\n <fd-bar-element>\r\n <a fd-link [href]=\"footer.SiteAddress\" tabindex=\"0\"\r\n ><fd-icon glyph=\"world\"> </fd-icon> <span style=\"padding: 0 5px\">{{ footer.SiteTitle }}</span></a\r\n >\r\n </fd-bar-element>\r\n </div>\r\n @if (deviceSize !== 's') {\r\n <div fd-bar-middle class=\"middle\">\r\n <fd-bar-element> {{ footer.Copyright | bbbTranslate }}</fd-bar-element>\r\n </div>\r\n }\r\n <div fd-bar-right class=\"right\"></div>\r\n</div>\r\n}\r\n", styles: [".fd-bar.mobile{flex-direction:column!important}.fd-bar.mobile .left,.fd-bar.mobile .right,.fd-bar.mobile .middle{justify-content:center!important}.online i{color:#006400}.all i{color:#bebebe}.todat i{color:#000}.left{display:flex;column-gap:3px}\n"], dependencies: [{ kind: "component", type: i3$3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i3$3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3$3.BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: i3$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i3$3.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i3$4.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i2$3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "directive", type: i9.InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help"] }, { kind: "component", type: i7$1.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i7$1.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i7$1.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i7$1.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "directive", type: i7$1.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i7$2.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7$2.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i7$2.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "pipe", type: i1$1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3001
+ }
3002
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FooterComponent, decorators: [{
3003
+ type: Component,
3004
+ args: [{ selector: 'bdc-footer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (footer) {\r\n<div fd-bar barDesign=\"footer\" [size]=\"'m_l'\" [class.rtl]=\"rtl\" class=\"footer\" [class.mobile]=\"deviceSize === 's'\">\r\n <div fd-bar-left class=\"left\">\r\n <a\r\n fd-button\r\n glyph=\"email\"\r\n [fd-inline-help]=\"('\u0627\u06CC\u0645\u06CC\u0644 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.Email\"\r\n [href]=\"'mailto:' + footer.Email\"\r\n fdType=\"transparent\"\r\n >\r\n </a>\r\n <a\r\n fd-button\r\n glyph=\"headset\"\r\n [fd-inline-help]=\"('\u0634\u0645\u0627\u0631\u0647 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.TelNumber\"\r\n [href]=\"'tel:' + footer.TelNumber\"\r\n fdType=\"transparent\"\r\n ></a>\r\n <fd-popover>\r\n <fd-popover-control>\r\n <button\r\n fd-button\r\n glyph=\"vertical-waterfall-chart\"\r\n [title]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\r\n aria-haspopup=\"menu\"\r\n fdType=\"transparent\"\r\n [fd-inline-help]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\r\n tabindex=\"0\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n <li fd-list-item class=\"all\">\r\n <i fd-list-icon glyph=\"bar-chart\"></i>\r\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u0632\u062F\u06CC\u062F\u06A9\u0646\u0646\u062F\u06AF\u0627\u0646 \u06A9\u0644 <strong>120</strong></span>\r\n </li>\r\n <li fd-list-item class=\"today\">\r\n <i fd-list-icon glyph=\"bar-chart\"></i>\r\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u0632\u062F\u06CC\u062F\u06A9\u0646\u0646\u062F\u06AF\u0627\u0646 \u0627\u0645\u0631\u0648\u0632 <strong>76</strong></span>\r\n </li>\r\n <li fd-list-item class=\"online\">\r\n <i fd-list-icon glyph=\"bar-chart\"></i>\r\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u06A9\u0627\u0631\u0628\u0631\u0627\u0646 \u0622\u0646\u0644\u0644\u0627\u06CC\u0646 <strong>10</strong></span>\r\n </li>\r\n </ul>\r\n </fd-popover-body>\r\n </fd-popover>\r\n <fd-popover>\r\n <fd-popover-control>\r\n <button\r\n [fd-inline-help]=\"'\u06A9\u0627\u0646\u0627\u0644 \u0627\u0631\u062A\u0628\u0627\u0637\u06CC' | bbbTranslate\"\r\n tabindex=\"0\"\r\n fd-button\r\n glyph=\"paper-plane\"\r\n id=\"fd-action-sheet-default-control\"\r\n aria-haspopup=\"menu\"\r\n fdType=\"transparent\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n @for (socialNetwork of footer.SocialNetworks.MoDataList; track socialNetwork) {\r\n <li fd-list-item>\r\n <a fd-list-link [href]=\"socialNetwork.Url\" style=\"display: flex; column-gap: 5px\">\r\n <i fd-list-icon class=\"sap-icon--1\"\r\n ><img [src]=\"socialNetwork.Image?.FileId | picFieldSrc: 'ID':null:'':16:16\" />\r\n </i>\r\n <span fd-list-title>{{ socialNetwork.Title }}</span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </fd-popover-body>\r\n </fd-popover>\r\n <fd-bar-element>\r\n <a fd-link [href]=\"footer.SiteAddress\" tabindex=\"0\"\r\n ><fd-icon glyph=\"world\"> </fd-icon> <span style=\"padding: 0 5px\">{{ footer.SiteTitle }}</span></a\r\n >\r\n </fd-bar-element>\r\n </div>\r\n @if (deviceSize !== 's') {\r\n <div fd-bar-middle class=\"middle\">\r\n <fd-bar-element> {{ footer.Copyright | bbbTranslate }}</fd-bar-element>\r\n </div>\r\n }\r\n <div fd-bar-right class=\"right\"></div>\r\n</div>\r\n}\r\n", styles: [".fd-bar.mobile{flex-direction:column!important}.fd-bar.mobile .left,.fd-bar.mobile .right,.fd-bar.mobile .middle{justify-content:center!important}.online i{color:#006400}.all i{color:#bebebe}.todat i{color:#000}.left{display:flex;column-gap:3px}\n"] }]
3005
+ }], ctorParameters: () => [{ type: i1$1.PortalService }, { type: i0.ChangeDetectorRef }], propDecorators: { settings: [{
3006
+ type: Input
3007
+ }] } });
3008
+
3009
+ class BarsaGeographicLocationComponent extends BaseComponent {
3010
+ constructor(_el) {
3011
+ super();
3012
+ this._el = _el;
3013
+ this.move = new EventEmitter();
3014
+ this.moveEnd = new EventEmitter();
3015
+ this.fullscreen = new EventEmitter();
3016
+ this.exitFullscreen = new EventEmitter();
3017
+ this.errorEvent = new EventEmitter();
3018
+ this.markerChange = new EventEmitter();
3019
+ this._navigatorOptions = {
3020
+ enableHighAccuracy: true,
3021
+ timeout: 5000,
3022
+ maximumAge: 0
3023
+ };
3024
+ }
3025
+ ngOnChanges(changes) {
3026
+ super.ngOnChanges(changes);
3027
+ const { longitude, latitude } = changes;
3028
+ if (latitude?.firstChange === false || longitude?.firstChange === false) {
3029
+ this._setGeoLocation({
3030
+ latitude: latitude.currentValue,
3031
+ longitude: longitude.currentValue
3032
+ }, this.disableOrReadonly, true, false);
3033
+ }
3034
+ }
3035
+ ngAfterViewInit() {
3036
+ super.ngAfterViewInit();
3037
+ head.load([
3038
+ 'Lib/leaflet/leaflet.css',
3039
+ 'Lib/leaflet/leaflet-src.js',
3040
+ 'Lib/leaflet/SearchControl.js',
3041
+ 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon.css',
3042
+ 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon.js',
3043
+ 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker.js',
3044
+ 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon-barsa.js'
3045
+ ], () => this._initilaize());
3046
+ }
3047
+ onCurrentLocation() {
3048
+ if (this.disableOrReadonly) {
3049
+ return;
3050
+ }
3051
+ this._getNavigatorCurrentPosition();
3052
+ }
3053
+ onFullscreen() {
3054
+ this.fullscreen.emit();
3055
+ }
3056
+ onExitFullscreen() {
3057
+ this.exitFullscreen.emit();
3058
+ }
3059
+ _addMarkers(disableOrReadonly, pos) {
3060
+ this._setGeoLocation({ latitude: pos[0], longitude: pos[1] }, disableOrReadonly);
3061
+ }
3062
+ _initilaize() {
3063
+ this._map = L.map(this._el.nativeElement);
3064
+ const location = this.defaultLocation;
3065
+ if (this.latitude) {
3066
+ location[0] = Number(this.latitude);
3067
+ location[1] = Number(this.longitude);
3068
+ }
3069
+ this._setGeoLocation({
3070
+ latitude: location[0],
3071
+ longitude: location[1]
3072
+ }, this.disableOrReadonly, true, false);
3073
+ if (!this.disableOrReadonly && this.setAutomaticLocation && !this.latitude) {
3074
+ // درصورتی که از قبل مقدار نداشته باشد
3075
+ this._getNavigatorCurrentPosition();
3076
+ }
3077
+ }
3078
+ _onErrorNavigatorLocation(err) {
3079
+ this.errorEvent.emit(err);
3080
+ }
3081
+ _setGeoLocation(position, disableOrReadonly = false, setView = false, fireEvent = true) {
3082
+ if (this._marker) {
3083
+ this._map.removeLayer(this._marker);
3084
+ this._marker = null;
3085
+ }
3086
+ const { latitude, longitude } = position;
3087
+ L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
3088
+ attribution: '',
3089
+ maxZoom: 18,
3090
+ id: 'mapbox/streets-v11',
3091
+ tileSize: 512,
3092
+ zoomOffset: -1,
3093
+ accessToken: 'pk.eyJ1IjoibXJlemFkZXZlbG9wZXIiLCJhIjoiY2p6anlrdTE2MDBxdjNtczZtYWFqbHFmdiJ9.SzniRy2KH6U3gdbOFnwA7Q'
3094
+ }).addTo(this._map);
3095
+ if (setView) {
3096
+ this._map.setView([latitude, longitude], 18);
3097
+ }
3098
+ const marker = this._createMarker('0', { mo: 'test' }, latitude, longitude, 'my location', '', !disableOrReadonly && this.draggable === true);
3099
+ marker.addTo(this._map);
3100
+ this._marker = marker;
3101
+ if (!disableOrReadonly && fireEvent) {
3102
+ this.markerChange.emit({ latitude, longitude });
3103
+ }
3104
+ }
3105
+ _getNavigatorCurrentPosition() {
3106
+ if (navigator.geolocation) {
3107
+ navigator.geolocation.getCurrentPosition((position) => this._setGeoLocation({ latitude: position.coords.latitude, longitude: position.coords.longitude }, this.disableOrReadonly, true), (err) => this._onErrorNavigatorLocation(err), this._navigatorOptions);
3108
+ }
3109
+ }
3110
+ _createMarker(id, mo, lat, lng, text, icon, draggable) {
3111
+ const markerCfg = {
3112
+ Id: id,
3113
+ Data: mo,
3114
+ title: text,
3115
+ draggable,
3116
+ icon: L.divIcon({
3117
+ html: icon
3118
+ ? `<fd-icon style="font-size:1rem" class="sap-icon--${icon}"></fd-icon>`
3119
+ : `<img style="width:32px" src="${'assets/svg/location-sign.svg'}"/>`,
3120
+ iconSize: [20, 20],
3121
+ className: 'my-location'
3122
+ })
3123
+ };
3124
+ // var marker = L.BeautifyMarker.marker([Number(lat), Number(lng)], {
3125
+ const marker = L.marker([Number(lat), Number(lng)], markerCfg);
3126
+ marker.on('moveend', (e) => {
3127
+ this._onMoveEnd(e);
3128
+ });
3129
+ marker.on('move', (e) => {
3130
+ this._onMove(e);
3131
+ });
3132
+ return marker;
3133
+ }
3134
+ _onMove(e) {
3135
+ this.move.emit(e);
3136
+ }
3137
+ _onMoveEnd(e) {
3138
+ this.moveEnd.emit(e);
3139
+ }
3140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaGeographicLocationComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
3141
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaGeographicLocationComponent, selector: "bdc-barsa-geographic-location", inputs: { disableOrReadonly: "disableOrReadonly", setAutomaticLocation: "setAutomaticLocation", showLocationButton: "showLocationButton", showFullscreenButton: "showFullscreenButton", showExitFullscreenButton: "showExitFullscreenButton", draggable: "draggable", defaultLocation: "defaultLocation", latitude: "latitude", longitude: "longitude" }, outputs: { move: "move", moveEnd: "moveEnd", fullscreen: "fullscreen", exitFullscreen: "exitFullscreen", errorEvent: "errorEvent", markerChange: "markerChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div style=\"position: absolute; z-index: 1000; display: flex; flex-direction: column; row-gap: 5px; left: 0; bottom: 0\">\r\n @if (showFullscreenButton) {\r\n <button fd-button glyph=\"resize\" fdType=\"positive\" (click)=\"onFullscreen()\"></button>\r\n } @if (showExitFullscreenButton) {\r\n <button fd-button glyph=\"exitfullscreen\" fdType=\"positive\" (click)=\"onExitFullscreen()\"></button>\r\n } @if (showLocationButton || disableOrReadonly) {\r\n <button fd-button glyph=\"map\" fdType=\"positive\" (click)=\"onCurrentLocation()\"></button>\r\n }\r\n</div>\r\n", styles: [":host{display:block;min-height:300px;position:relative}\n"], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3142
+ }
3143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaGeographicLocationComponent, decorators: [{
3144
+ type: Component,
3145
+ args: [{ selector: 'bdc-barsa-geographic-location', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div style=\"position: absolute; z-index: 1000; display: flex; flex-direction: column; row-gap: 5px; left: 0; bottom: 0\">\r\n @if (showFullscreenButton) {\r\n <button fd-button glyph=\"resize\" fdType=\"positive\" (click)=\"onFullscreen()\"></button>\r\n } @if (showExitFullscreenButton) {\r\n <button fd-button glyph=\"exitfullscreen\" fdType=\"positive\" (click)=\"onExitFullscreen()\"></button>\r\n } @if (showLocationButton || disableOrReadonly) {\r\n <button fd-button glyph=\"map\" fdType=\"positive\" (click)=\"onCurrentLocation()\"></button>\r\n }\r\n</div>\r\n", styles: [":host{display:block;min-height:300px;position:relative}\n"] }]
3146
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { disableOrReadonly: [{
3147
+ type: Input
3148
+ }], setAutomaticLocation: [{
3149
+ type: Input
3150
+ }], showLocationButton: [{
3151
+ type: Input
3152
+ }], showFullscreenButton: [{
3153
+ type: Input
3154
+ }], showExitFullscreenButton: [{
3155
+ type: Input
3156
+ }], draggable: [{
3157
+ type: Input
3158
+ }], defaultLocation: [{
3159
+ type: Input
3160
+ }], latitude: [{
3161
+ type: Input
3162
+ }], longitude: [{
3163
+ type: Input
3164
+ }], move: [{
3165
+ type: Output
3166
+ }], moveEnd: [{
3167
+ type: Output
3168
+ }], fullscreen: [{
3169
+ type: Output
3170
+ }], exitFullscreen: [{
3171
+ type: Output
3172
+ }], errorEvent: [{
3173
+ type: Output
3174
+ }], markerChange: [{
3175
+ type: Output
3176
+ }] } });
3177
+
3178
+ class GeographicLocationComponent extends UiMoInfoSubFormUiComponent {
3179
+ constructor() {
3180
+ super(...arguments);
3181
+ this.fullscreen = false;
3182
+ }
3183
+ get latitudeUi() {
3184
+ return this.customFormPanelUi._dictFieldUi.Latitude;
3185
+ }
3186
+ get longitudeUi() {
3187
+ return this.customFormPanelUi._dictFieldUi.Longitude;
3188
+ }
3189
+ openDialog(dialog) {
3190
+ this._dialogService.open(dialog, {
3191
+ responsivePadding: true,
3192
+ fullScreen: true,
3193
+ mobile: true,
3194
+ ariaLabelledBy: 'map',
3195
+ ariaDescribedBy: 'choose location',
3196
+ focusTrapped: true
3197
+ });
3198
+ }
3199
+ ngOnInit() {
3200
+ super.ngOnInit();
3201
+ this._setDefaultLatAndLong(this.latitudeUi?.value, this.longitudeUi?.value);
3202
+ }
3203
+ onFullscreen() {
3204
+ this.fullscreen = true;
3205
+ this.openDialog(this.dialogTemplate);
3206
+ }
3207
+ onExistFullscreen() {
3208
+ this.fullscreen = false;
3209
+ this._cdr.detectChanges();
3210
+ }
3211
+ onOpenChange(isOpen) {
3212
+ this.fullscreen = isOpen;
3213
+ }
3214
+ onErrorNavigatorLocation(err) {
3215
+ const err2 = `خطا در دریافت موقعیت مکانی جاری. (${err.message})`;
3216
+ BarsaApi.Bw.Toast.Error(err2);
3217
+ }
3218
+ onMove(e) {
3219
+ this._movePos = { latitude: e.latlng.lat, longitude: e.latlng.lng };
3220
+ }
3221
+ onMoveEnd(e) {
3222
+ this._handleMarkerChange(this._movePos);
3223
+ }
3224
+ onMarkerChange(e) {
3225
+ this._handleMarkerChange(e);
3226
+ }
3227
+ _handleMarkerChange(e) {
3228
+ const { latitude, longitude } = e;
3229
+ this.latitudeUi.value = latitude;
3230
+ this.longitudeUi.value = longitude;
3231
+ this._valueChanged();
3232
+ }
3233
+ _setDefaultLatAndLong(lat, lng) {
3234
+ if (lat && lng) {
3235
+ this.latValue = lat;
3236
+ this.lngValue = lng;
3237
+ }
3238
+ }
3239
+ _titleChanged() {
3240
+ this._setDefaultLatAndLong(this.latitudeUi?.value, this.longitudeUi?.value);
3241
+ }
3242
+ _valueChanged() {
3243
+ this.latitudeUi.fireEvent('change', this.latitudeUi, this.latitudeUi.value);
3244
+ this.longitudeUi.fireEvent('change', this.longitudeUi, this.longitudeUi.value);
3245
+ }
3246
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeographicLocationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3247
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: GeographicLocationComponent, selector: "bdc-geographic-location", viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["confirmationDialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (customFormPanelUi) {\r\n<bnrc-form style=\"display: none\" *untilInView=\"el\" [customFormPanelUi]=\"customFormPanelUi\"></bnrc-form>\r\n} @if (!fullscreen) {\r\n<ng-container *ngTemplateOutlet=\"map; context: { inDialog: false }\"></ng-container>\r\n}\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #confirmationDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Map' | bbbTranslate }}</h1>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: true, dialog: dialog }\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n\r\n<ng-template #map let-inDialog=\"inDialog\" let-dialog=\"dialog\">\r\n <bdc-barsa-geographic-location\r\n [style.height]=\"inDialog ? 'height: 100% !important' : null\"\r\n [defaultLocation]=\"[35.7568, 51.412]\"\r\n [latitude]=\"latValue\"\r\n [longitude]=\"lngValue\"\r\n [showExitFullscreenButton]=\"true\"\r\n [showLocationButton]=\"customFieldInfo.ShowLocationButton\"\r\n [setAutomaticLocation]=\"customFieldInfo.GetCurrentLocation\"\r\n [disableOrReadonly]=\"(disableOrReadonly$ | async) === true\"\r\n [draggable]=\"customFieldInfo.Draggable === true\"\r\n (markerChange)=\"onMarkerChange($event)\"\r\n (move)=\"onMove($event)\"\r\n (errorEvent)=\"onErrorNavigatorLocation($event)\"\r\n (moveEnd)=\"onMoveEnd($event)\"\r\n (exitFullscreen)=\"onExistFullscreen(); dialog && dialog.close('Continue')\"\r\n ></bdc-barsa-geographic-location>\r\n</ng-template>\r\n", styles: [":host{display:block;position:relative}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "uiComponent", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "directive", type: i1$1.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "component", type: i4$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i4$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i4$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: BarsaGeographicLocationComponent, selector: "bdc-barsa-geographic-location", inputs: ["disableOrReadonly", "setAutomaticLocation", "showLocationButton", "showFullscreenButton", "showExitFullscreenButton", "draggable", "defaultLocation", "latitude", "longitude"], outputs: ["move", "moveEnd", "fullscreen", "exitFullscreen", "errorEvent", "markerChange"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3248
+ }
3249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeographicLocationComponent, decorators: [{
3250
+ type: Component,
3251
+ args: [{ selector: 'bdc-geographic-location', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (customFormPanelUi) {\r\n<bnrc-form style=\"display: none\" *untilInView=\"el\" [customFormPanelUi]=\"customFormPanelUi\"></bnrc-form>\r\n} @if (!fullscreen) {\r\n<ng-container *ngTemplateOutlet=\"map; context: { inDialog: false }\"></ng-container>\r\n}\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #confirmationDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Map' | bbbTranslate }}</h1>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: true, dialog: dialog }\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n\r\n<ng-template #map let-inDialog=\"inDialog\" let-dialog=\"dialog\">\r\n <bdc-barsa-geographic-location\r\n [style.height]=\"inDialog ? 'height: 100% !important' : null\"\r\n [defaultLocation]=\"[35.7568, 51.412]\"\r\n [latitude]=\"latValue\"\r\n [longitude]=\"lngValue\"\r\n [showExitFullscreenButton]=\"true\"\r\n [showLocationButton]=\"customFieldInfo.ShowLocationButton\"\r\n [setAutomaticLocation]=\"customFieldInfo.GetCurrentLocation\"\r\n [disableOrReadonly]=\"(disableOrReadonly$ | async) === true\"\r\n [draggable]=\"customFieldInfo.Draggable === true\"\r\n (markerChange)=\"onMarkerChange($event)\"\r\n (move)=\"onMove($event)\"\r\n (errorEvent)=\"onErrorNavigatorLocation($event)\"\r\n (moveEnd)=\"onMoveEnd($event)\"\r\n (exitFullscreen)=\"onExistFullscreen(); dialog && dialog.close('Continue')\"\r\n ></bdc-barsa-geographic-location>\r\n</ng-template>\r\n", styles: [":host{display:block;position:relative}\n"] }]
3252
+ }], propDecorators: { dialogTemplate: [{
3253
+ type: ViewChild,
3254
+ args: ['confirmationDialog']
3255
+ }] } });
3256
+
3257
+ class TokenReportViewComponent extends ReportViewBaseComponent {
3258
+ ngOnInit() {
3259
+ super.ngOnInit();
3260
+ }
3261
+ onRemoveItem(mo, index) {
3262
+ this.rowCheck.emit({ mo, index });
3263
+ let itemId = 'RemoveFromList';
3264
+ if (this.viewSetting?.DeleteAction === '1') {
3265
+ itemId = 'Delete';
3266
+ }
3267
+ this.executeToolbarButton.emit({ itemId });
3268
+ }
3269
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TokenReportViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3270
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TokenReportViewComponent, selector: "bdc-token-report-view", usesInheritance: true, ngImport: i0, template: "@for (mo of moDataList | multipleGroupBy: groupby; track mo; let index = $index; let last = $last) { @if (!mo.parent ||\r\nmo.parent?.expanded) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: mo,\r\n index: index,\r\n last: last,\r\n columns: columns,\r\n moDataList: moDataList,\r\n moDataListCount: moDataList.length\r\n }\r\n \"\r\n></ng-container>\r\n} }\r\n<ng-template\r\n #itemTemplate\r\n let-mo\r\n let-index=\"index\"\r\n let-last=\"last\"\r\n let-columns=\"columns\"\r\n let-moDataListCount=\"moDataListCount\"\r\n let-moDataList=\"moDataList\"\r\n>\r\n <fd-token fdCozy (onCloseClick)=\"onRemoveItem(mo, index)\" [readOnly]=\"false\">{{\r\n columns[0].Caption | rval: mo:columns:true\r\n }}</fd-token>\r\n</ng-template>\r\n", styles: [":host{display:flex;column-gap:5px;flex-wrap:wrap;row-gap:5px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$6.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i3$c.TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown", "elementFocused"] }, { kind: "pipe", type: i1$1.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i1$1.MoReportValuePipe, name: "rval" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3271
+ }
3272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TokenReportViewComponent, decorators: [{
3273
+ type: Component,
3274
+ args: [{ selector: 'bdc-token-report-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@for (mo of moDataList | multipleGroupBy: groupby; track mo; let index = $index; let last = $last) { @if (!mo.parent ||\r\nmo.parent?.expanded) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: mo,\r\n index: index,\r\n last: last,\r\n columns: columns,\r\n moDataList: moDataList,\r\n moDataListCount: moDataList.length\r\n }\r\n \"\r\n></ng-container>\r\n} }\r\n<ng-template\r\n #itemTemplate\r\n let-mo\r\n let-index=\"index\"\r\n let-last=\"last\"\r\n let-columns=\"columns\"\r\n let-moDataListCount=\"moDataListCount\"\r\n let-moDataList=\"moDataList\"\r\n>\r\n <fd-token fdCozy (onCloseClick)=\"onRemoveItem(mo, index)\" [readOnly]=\"false\">{{\r\n columns[0].Caption | rval: mo:columns:true\r\n }}</fd-token>\r\n</ng-template>\r\n", styles: [":host{display:flex;column-gap:5px;flex-wrap:wrap;row-gap:5px}\n"] }]
3275
+ }] });
3276
+
3277
+ class ColumnFormViewerComponent extends ColumnRendererComponent {
3278
+ /**
3279
+ *
3280
+ */
3281
+ constructor(_cdr, _dialogService, _el) {
3282
+ super(_cdr);
3283
+ this._cdr = _cdr;
3284
+ this._dialogService = _dialogService;
3285
+ this._el = _el;
3286
+ this.isOpen = false;
3287
+ this.loadForm = false;
3288
+ this.loading = true;
3289
+ this.newPage = false;
3290
+ }
3291
+ ngOnInit() {
3292
+ super.ngOnInit();
3293
+ const columnMo = this.mo[this.column.Name];
3294
+ if (!columnMo) {
3295
+ return;
3296
+ }
3297
+ this.newPage = this.parameters.NewPage;
3298
+ this.formParam = {
3299
+ moId: columnMo.Id,
3300
+ typeDefId: columnMo.$TypeDefId,
3301
+ viewId: this.parameters.MetaView?.Id
3302
+ };
3303
+ }
3304
+ openPopover() {
3305
+ this.isOpen = true;
3306
+ this.loadForm = true;
3307
+ }
3308
+ onFormRendered(popover) {
3309
+ this.loading = false;
3310
+ if (this.newPage) {
3311
+ return;
3312
+ }
3313
+ popover.close();
3314
+ setTimeout(() => {
3315
+ popover.open();
3316
+ });
3317
+ }
3318
+ openMoInNewPage() {
3319
+ const columnMo = this.mo[this.column.Name];
3320
+ BarsaApi.Bw.Form.Show({
3321
+ MoId: columnMo.Id,
3322
+ MoContext: {
3323
+ ViewId: this.parameters.MetaView?.Id
3324
+ }
3325
+ });
3326
+ }
3327
+ openDialog(dialog, container) {
3328
+ const dialogRef = this._dialogService.open(dialog, {
3329
+ responsivePadding: true,
3330
+ focusTrapped: true,
3331
+ backdropClickCloseable: true,
3332
+ closeOnNavigation: true,
3333
+ hasBackdrop: false,
3334
+ container,
3335
+ escKeyCloseable: true,
3336
+ mobile: this.deviceSize === 's'
3337
+ });
3338
+ dialogRef.afterClosed.subscribe((result) => {
3339
+ this.confirmationReason = 'Dialog closed with result: ' + result;
3340
+ }, (error) => {
3341
+ this.confirmationReason = 'Dialog dismissed with result: ' + error;
3342
+ });
3343
+ }
3344
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnFormViewerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2$2.DialogService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
3345
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ColumnFormViewerComponent, selector: "bdc-column-form-viewer", inputs: { layout94: "layout94", parameters: "parameters" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"newPage || deviceSize === 's' ? renderColumn : popoverTpl\"> </ng-container>\r\n<a href=\"http://localhost:4200/#/landingpage/query?actionlist=[{MoId:1,TypeDefId:1}]\"></a>\r\n<ng-template #popoverTpl>\r\n <fd-popover\r\n #popover\r\n [closeOnOutsideClick]=\"true\"\r\n [noArrow]=\"false\"\r\n placement=\"bottom-start\"\r\n [title]=\"column.Caption\"\r\n >\r\n <fd-popover-control>\r\n <ng-container *ngTemplateOutlet=\"renderColumn\"></ng-container>\r\n </fd-popover-control>\r\n <fd-popover-body class=\"popover-form-inColumn\">\r\n @if (loading && loadForm) {\r\n <div style=\"position: relative; height: 80px; width: 100%\">\r\n <bsu-mask [top]=\"'50%'\"></bsu-mask>\r\n </div>\r\n } @if (this.mo.Id && loadForm) {\r\n <bnrc-form\r\n [params]=\"formParam\"\r\n (formRendered)=\"onFormRendered(popover)\"\r\n (formClose)=\"popover.close()\"\r\n class=\"form-inColumn\"\r\n ></bnrc-form>\r\n }\r\n </fd-popover-body>\r\n </fd-popover>\r\n</ng-template>\r\n<ng-template #renderColumn>\r\n <bsu-column-renderer\r\n [mo]=\"mo\"\r\n [column]=\"column\"\r\n [value]=\"column | columnValue: mo | bbbTranslate\"\r\n [icon]=\"column | columnIcon: mo\"\r\n [editMode]=\"editMode\"\r\n [isChecked]=\"isChecked\"\r\n [index]=\"index\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [formLayoutShowLabel]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [controlUi]=\"column.Caption | controlUi: layout94:column.Name\"\r\n (click)=\"newPage || deviceSize === 's' ? openMoInNewPage() : openPopover()\"\r\n ></bsu-column-renderer>\r\n</ng-template>\r\n", styles: [":host{display:flex;width:100%;height:100%;align-items:stretch;justify-content:stretch}:host fd-popover{flex:1}:host ::ng-deep span{color:var(--sapLinkColor);text-decoration:var(--fdLink_Text_Content_Decoration, none);cursor:pointer}:host ::ng-deep span:hover{text-decoration:var(--fdLink_Text_Content_Decoration, none)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "uiComponent", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "directive", type: i1$1.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "component", type: i2$1.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i2$1.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "allColumns", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "isMobile", "fdTextMode", "deviceName", "deviceSize", "value", "icon"] }, { kind: "component", type: i7$2.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7$2.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i7$2.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "pipe", type: i1$1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1$1.ControlUiPipe, name: "controlUi" }, { kind: "pipe", type: i1$1.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i1$1.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3346
+ }
3347
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnFormViewerComponent, decorators: [{
3348
+ type: Component,
3349
+ args: [{ selector: 'bdc-column-form-viewer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container *ngTemplateOutlet=\"newPage || deviceSize === 's' ? renderColumn : popoverTpl\"> </ng-container>\r\n<a href=\"http://localhost:4200/#/landingpage/query?actionlist=[{MoId:1,TypeDefId:1}]\"></a>\r\n<ng-template #popoverTpl>\r\n <fd-popover\r\n #popover\r\n [closeOnOutsideClick]=\"true\"\r\n [noArrow]=\"false\"\r\n placement=\"bottom-start\"\r\n [title]=\"column.Caption\"\r\n >\r\n <fd-popover-control>\r\n <ng-container *ngTemplateOutlet=\"renderColumn\"></ng-container>\r\n </fd-popover-control>\r\n <fd-popover-body class=\"popover-form-inColumn\">\r\n @if (loading && loadForm) {\r\n <div style=\"position: relative; height: 80px; width: 100%\">\r\n <bsu-mask [top]=\"'50%'\"></bsu-mask>\r\n </div>\r\n } @if (this.mo.Id && loadForm) {\r\n <bnrc-form\r\n [params]=\"formParam\"\r\n (formRendered)=\"onFormRendered(popover)\"\r\n (formClose)=\"popover.close()\"\r\n class=\"form-inColumn\"\r\n ></bnrc-form>\r\n }\r\n </fd-popover-body>\r\n </fd-popover>\r\n</ng-template>\r\n<ng-template #renderColumn>\r\n <bsu-column-renderer\r\n [mo]=\"mo\"\r\n [column]=\"column\"\r\n [value]=\"column | columnValue: mo | bbbTranslate\"\r\n [icon]=\"column | columnIcon: mo\"\r\n [editMode]=\"editMode\"\r\n [isChecked]=\"isChecked\"\r\n [index]=\"index\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [formLayoutShowLabel]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [controlUi]=\"column.Caption | controlUi: layout94:column.Name\"\r\n (click)=\"newPage || deviceSize === 's' ? openMoInNewPage() : openPopover()\"\r\n ></bsu-column-renderer>\r\n</ng-template>\r\n", styles: [":host{display:flex;width:100%;height:100%;align-items:stretch;justify-content:stretch}:host fd-popover{flex:1}:host ::ng-deep span{color:var(--sapLinkColor);text-decoration:var(--fdLink_Text_Content_Decoration, none);cursor:pointer}:host ::ng-deep span:hover{text-decoration:var(--fdLink_Text_Content_Decoration, none)}\n"] }]
3350
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i2$2.DialogService }, { type: i0.ElementRef }], propDecorators: { layout94: [{
3351
+ type: Input
3352
+ }], parameters: [{
3353
+ type: Input
3354
+ }] } });
3355
+
3356
+ class FormReportViewItemComponent extends BaseViewItemPropsComponent {
3357
+ constructor() {
3358
+ super(...arguments);
3359
+ this.toolbarItems = [];
3360
+ }
3361
+ ngOnInit() {
3362
+ super.ngOnInit();
3363
+ this.mo.$FieldDict = this.fieldDict;
3364
+ delete this.mo.$Wrapper;
3365
+ const meFormSetting = JSON.parse(JSON.stringify(this.formSetting));
3366
+ const mo = new BarsaApi.Common.MetaObjectWeb(this.mo);
3367
+ meFormSetting.Data = { Mo: this.mo };
3368
+ const formpanelCtrlrParams = this.UlvMainCtrlr.DataCtrlr.GetEditFormParams(mo, false, false, null, null);
3369
+ this.formParams = {
3370
+ ...formpanelCtrlrParams,
3371
+ formSetting: meFormSetting,
3372
+ moId: this.mo.Id,
3373
+ typeDefId: this.typeDefId,
3374
+ isSimple: true,
3375
+ viewId: meFormSetting.View.TypeViewId
3376
+ };
3377
+ }
3378
+ onMoChanged(mo) {
3379
+ this.UlvMainCtrlr.RefreshRowsByMosNoSelectionChange([mo], [], []);
3380
+ }
3381
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormReportViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3382
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormReportViewItemComponent, selector: "bdc-form-report-view-item", inputs: { mo: "mo", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", saveOnValueChanged: "saveOnValueChanged" }, usesInheritance: true, ngImport: i0, template: "<bnrc-form\r\n class=\"form-report-view-item\"\r\n [params]=\"formParams\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n (moChanged)=\"onMoChanged($event)\"\r\n [saveOnChange]=\"saveOnValueChanged\"\r\n></bnrc-form>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1$1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "uiComponent", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3383
+ }
3384
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormReportViewItemComponent, decorators: [{
3385
+ type: Component,
3386
+ args: [{ selector: 'bdc-form-report-view-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<bnrc-form\r\n class=\"form-report-view-item\"\r\n [params]=\"formParams\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n (moChanged)=\"onMoChanged($event)\"\r\n [saveOnChange]=\"saveOnValueChanged\"\r\n></bnrc-form>\r\n" }]
3387
+ }], propDecorators: { mo: [{
3388
+ type: Input
3389
+ }], UlvMainCtrlr: [{
3390
+ type: Input
3391
+ }], fieldDict: [{
3392
+ type: Input
3393
+ }], saveOnValueChanged: [{
3394
+ type: Input
3395
+ }] } });
3396
+
3397
+ class FormReportViewComponent extends ReportViewBaseComponent {
3398
+ ngOnInit() {
3399
+ super.ngOnInit();
3400
+ const x = BarsaApi.Bw.RunBlMethod('GetSerializeFormSetting', this.parameters?.MetaTypeDefValue.Id || this.typeViewId);
3401
+ this.formSettingItem = BarsaApi.Ext.decode(x);
3402
+ }
3403
+ _trackByRow(index, row) {
3404
+ return `${row.Id}`;
3405
+ }
3406
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormReportViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3407
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FormReportViewComponent, selector: "bdc-form-report-view", viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "@if (moDataList?.length) { @if (formSettingItem) { @for (mo of moDataList; track _trackByRow(index, mo); let index =\r\n$index; let last = $last) {\r\n<bdc-form-report-view-item\r\n [setting]=\"viewSetting\"\r\n [formSetting]=\"formSettingItem\"\r\n [fieldDict]=\"fieldDict\"\r\n [typeDefId]=\"typeDefId\"\r\n [columnsCount]=\"columnsCount\"\r\n [allColumns]=\"allColumns\"\r\n [columns]=\"columns\"\r\n [moDataList]=\"moDataList\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [index]=\"index\"\r\n [mo]=\"mo\"\r\n [rtl]=\"rtl\"\r\n [saveOnValueChanged]=\"viewSetting.SaveOnValueChanged\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel(mo)\"\r\n (click)=\"onRowCheck({mo, index})\"\r\n>\r\n</bdc-form-report-view-item>\r\n} } } @else {\r\n<bsu-no-data></bsu-no-data>\r\n}\r\n", styles: [":host{display:flex;flex-direction:column;row-gap:.825rem;margin-bottom:1rem}\n"], dependencies: [{ kind: "component", type: i2$1.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "component", type: FormReportViewItemComponent, selector: "bdc-form-report-view-item", inputs: ["mo", "UlvMainCtrlr", "fieldDict", "saveOnValueChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3408
+ }
3409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormReportViewComponent, decorators: [{
3410
+ type: Component,
3411
+ args: [{ selector: 'bdc-form-report-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (moDataList?.length) { @if (formSettingItem) { @for (mo of moDataList; track _trackByRow(index, mo); let index =\r\n$index; let last = $last) {\r\n<bdc-form-report-view-item\r\n [setting]=\"viewSetting\"\r\n [formSetting]=\"formSettingItem\"\r\n [fieldDict]=\"fieldDict\"\r\n [typeDefId]=\"typeDefId\"\r\n [columnsCount]=\"columnsCount\"\r\n [allColumns]=\"allColumns\"\r\n [columns]=\"columns\"\r\n [moDataList]=\"moDataList\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [index]=\"index\"\r\n [mo]=\"mo\"\r\n [rtl]=\"rtl\"\r\n [saveOnValueChanged]=\"viewSetting.SaveOnValueChanged\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel(mo)\"\r\n (click)=\"onRowCheck({mo, index})\"\r\n>\r\n</bdc-form-report-view-item>\r\n} } } @else {\r\n<bsu-no-data></bsu-no-data>\r\n}\r\n", styles: [":host{display:flex;flex-direction:column;row-gap:.825rem;margin-bottom:1rem}\n"] }]
3412
+ }], propDecorators: { containerRef: [{
3413
+ type: ViewChild,
3414
+ args: ['containerRef', { static: true, read: ViewContainerRef }]
3415
+ }] } });
3416
+
3417
+ class FormCardComponent extends FormPropsBaseComponent {
3418
+ ngOnInit() {
3419
+ super.ngOnInit();
3420
+ }
3421
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormCardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3422
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FormCardComponent, selector: "bdc-form-card", providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<fd-card cardType=\"object\">\r\n @if (toolbarItems) {\r\n <!-- <fd-card-header *ngIf=\"toolbarVisible !== false && toolbarItems.length\">\r\n <div fd-card-title></div>\r\n <div fd-card-subtitle style=\"width: 100%\"></div>\r\n </fd-card-header> -->\r\n }\r\n <fd-card-content>\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n ></bsu-ly-layout-container-of-root>\r\n </fd-card-content>\r\n</fd-card>\r\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"], dependencies: [{ kind: "component", type: i2$1.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i4$3.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i4$3.CardContentComponent, selector: "fd-card-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3423
+ }
3424
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormCardComponent, decorators: [{
3425
+ type: Component,
3426
+ args: [{ selector: 'bdc-form-card', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], standalone: false, template: "<fd-card cardType=\"object\">\r\n @if (toolbarItems) {\r\n <!-- <fd-card-header *ngIf=\"toolbarVisible !== false && toolbarItems.length\">\r\n <div fd-card-title></div>\r\n <div fd-card-subtitle style=\"width: 100%\"></div>\r\n </fd-card-header> -->\r\n }\r\n <fd-card-content>\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n ></bsu-ly-layout-container-of-root>\r\n </fd-card-content>\r\n</fd-card>\r\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"] }]
3427
+ }] });
3428
+
3429
+ class ColumnProgressbarComponent extends ColumnRendererComponent {
3430
+ constructor() {
3431
+ super(...arguments);
3432
+ this._el = inject(ElementRef);
3433
+ this._renderer2 = inject(Renderer2);
3434
+ this._portalService = inject(PortalService);
3435
+ this._columnValueOfParametersPipe = inject(ColumnValueOfParametersPipe);
3436
+ this.isRtl = true;
3437
+ this.maxValue = signal('100');
3438
+ this.customUntitValueNow = signal(0);
3439
+ this.unit = signal('MB');
3440
+ this.valueText = signal('');
3441
+ this.state = signal('informative');
3442
+ }
3443
+ ngOnInit() {
3444
+ super.ngOnInit();
3445
+ this._setMaxValue(this.mo);
3446
+ this._setState();
3447
+ this._setUnit();
3448
+ this._setValueText();
3449
+ this._setRtl();
3450
+ }
3451
+ ngOnChanges(changes) {
3452
+ super.ngOnChanges(changes);
3453
+ const { mo } = changes;
3454
+ if (mo && !mo.firstChange) {
3455
+ this._setMaxValue(mo.currentValue);
3456
+ this._setColor(mo.currentValue);
3457
+ this._setValueText();
3458
+ }
3459
+ }
3460
+ ngAfterViewInit() {
3461
+ super.ngAfterViewInit();
3462
+ this._setColor(this.mo);
3463
+ }
3464
+ _setRtl() {
3465
+ this.isRtl = this._portalService.isRtl;
3466
+ }
3467
+ _setState() {
3468
+ this.state.set(this.parameters.State$Caption);
3469
+ }
3470
+ _setUnit() {
3471
+ if (this.parameters?.Units) {
3472
+ this.unit.set(this.parameters.Units);
3473
+ }
3474
+ }
3475
+ _setValueText() {
3476
+ const t = String.fromCharCode(0x202a);
3477
+ this.valueText.set(this.isRtl
3478
+ ? `${t} ${this.maxValue()} ${BarsaApi.BBB[this.unit()] || this.unit()} ${this.signalValue()}`
3479
+ : `${this.signalValue()} ${BarsaApi.BBB[this.unit()] || this.unit()} ${this.maxValue()}`);
3480
+ }
3481
+ _setMaxValue(mo) {
3482
+ const { MaxValue, MaxValueField } = this.parameters;
3483
+ if (MaxValue || MaxValueField) {
3484
+ this.maxValue.set(this._columnValueOfParametersPipe.transform(this.allColumns, mo, MaxValueField, MaxValue));
3485
+ }
3486
+ }
3487
+ _setColor(mo) {
3488
+ const { Color, ColorField } = this.parameters;
3489
+ if (Color || ColorField) {
3490
+ const color = this._columnValueOfParametersPipe.transform(this.allColumns, mo, ColorField, Color);
3491
+ const dom = this._el.nativeElement;
3492
+ const x = dom.querySelector('.fd-progress-indicator__progress-bar');
3493
+ if (x) {
3494
+ this._renderer2.setStyle(x, 'background-color', color);
3495
+ }
3496
+ }
3497
+ }
3498
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnProgressbarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3499
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ColumnProgressbarComponent, selector: "bdc-column-progressbar", inputs: { layout94: "layout94", parameters: "parameters" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-progress-indicator\r\n [state]=\"state()\"\r\n [valueNow]=\"signalValue() | strToNum\"\r\n [valueMax]=\"maxValue() | strToNum\"\r\n [unit]=\"unit()\"\r\n [valueText]=\"valueText()\"\r\n></fd-progress-indicator>\r\n", styles: [":host{display:flex;width:100%;height:100%;align-items:stretch;justify-content:stretch}:host fd-progress-indicator{display:block;width:100%}:host fd-progress-indicator ::ng-deep>div{margin:2px!important;display:flex;align-items:center}:host fd-progress-indicator ::ng-deep>div>div{width:100%;display:flex;align-items:center}\n"], dependencies: [{ kind: "component", type: i5.ProgressIndicatorComponent, selector: "fd-progress-indicator", inputs: ["valueText", "unit", "valueMin", "valueMax", "valueNow", "state", "animate"] }, { kind: "pipe", type: i1$1.StringToNumberPipe, name: "strToNum" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3500
+ }
3501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnProgressbarComponent, decorators: [{
3502
+ type: Component,
3503
+ args: [{ selector: 'bdc-column-progressbar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-progress-indicator\r\n [state]=\"state()\"\r\n [valueNow]=\"signalValue() | strToNum\"\r\n [valueMax]=\"maxValue() | strToNum\"\r\n [unit]=\"unit()\"\r\n [valueText]=\"valueText()\"\r\n></fd-progress-indicator>\r\n", styles: [":host{display:flex;width:100%;height:100%;align-items:stretch;justify-content:stretch}:host fd-progress-indicator{display:block;width:100%}:host fd-progress-indicator ::ng-deep>div{margin:2px!important;display:flex;align-items:center}:host fd-progress-indicator ::ng-deep>div>div{width:100%;display:flex;align-items:center}\n"] }]
3504
+ }], propDecorators: { layout94: [{
3505
+ type: Input
3506
+ }], parameters: [{
3507
+ type: Input
3508
+ }] } });
3509
+
3510
+ class ColumnChipComponent extends ColumnRendererComponent {
3511
+ constructor() {
3512
+ super(...arguments);
3513
+ this.state = signal('success');
3514
+ this._columnValueOfParametersPipe = inject(ColumnValueOfParametersPipe);
3515
+ this.chipValue = signal(this.value);
3516
+ }
3517
+ ngOnInit() {
3518
+ super.ngOnInit();
3519
+ this._setStateField(this.mo);
3520
+ }
3521
+ ngOnChanges(changes) {
3522
+ super.ngOnChanges(changes);
3523
+ const { mo } = changes;
3524
+ if (mo && !mo.firstChange) {
3525
+ this._setStateField(mo.currentValue);
3526
+ }
3527
+ }
3528
+ _setStateField(mo) {
3529
+ const { State$Caption, StateField } = this.parameters;
3530
+ if (State$Caption || StateField) {
3531
+ const x = this._columnValueOfParametersPipe.transform(this.allColumns, mo, StateField, State$Caption, true);
3532
+ if (x !== this.state()) {
3533
+ this.state.set(x);
3534
+ }
3535
+ }
3536
+ }
3537
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnChipComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3538
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ColumnChipComponent, selector: "bdc-column-chip", inputs: { layout94: "layout94", parameters: "parameters" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(value){\r\n<div\r\n fd-generic-tag\r\n [type]=\"state()\"\r\n [name]=\"parameters?.ShowColumnCaption ? column.Alias : ''\"\r\n [value]=\"signalValue()\"\r\n [attr.title]=\"value\"\r\n></div>\r\n}\r\n", styles: [":host{display:flex;width:100%;height:100%;align-items:stretch;justify-content:stretch}:host ::ng-deep fd-icon{display:none!important}\n"], dependencies: [{ kind: "component", type: i1$8.GenericTagComponent, selector: "[fd-generic-tag]", inputs: ["class", "type", "name", "value", "ariaRoleDescription"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3539
+ }
3540
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnChipComponent, decorators: [{
3541
+ type: Component,
3542
+ args: [{ selector: 'bdc-column-chip', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if(value){\r\n<div\r\n fd-generic-tag\r\n [type]=\"state()\"\r\n [name]=\"parameters?.ShowColumnCaption ? column.Alias : ''\"\r\n [value]=\"signalValue()\"\r\n [attr.title]=\"value\"\r\n></div>\r\n}\r\n", styles: [":host{display:flex;width:100%;height:100%;align-items:stretch;justify-content:stretch}:host ::ng-deep fd-icon{display:none!important}\n"] }]
3543
+ }], propDecorators: { layout94: [{
3544
+ type: Input
3545
+ }], parameters: [{
3546
+ type: Input
3547
+ }] } });
3548
+
3549
+ const components = [
3550
+ LoginFormComponent,
3551
+ LoginSocialConncetionsComponent,
3552
+ UiPersonComponent,
3553
+ BarcodeReaderComponent,
3554
+ BarcodeReaderDialogComponent,
3555
+ BarcodeReaderVideoComponent,
3556
+ SettingFormComponent,
3557
+ MicroProcessFlowViewComponent,
3558
+ UiEnumSegmentedButtonComponent,
3559
+ TabProcessViewComponent,
3560
+ UiTextFieldSearchComponent,
3561
+ ServiceDeskHeaderComponent,
3562
+ CardContentImageAndTitleComponent,
3563
+ CardHeaderLogoTitleSubtitleComponent,
3564
+ FormContentQuickViewComponent,
3565
+ ServiceDeskServcieDetailComponent,
3566
+ ServiceDeskViewOfServicesComponent,
3567
+ ServiceDeskCardContentMojavezhayAkhzShodeComponent,
3568
+ CardHeaderBigImageTitleAndSubtitleComponent,
3569
+ ServiceDeskFormLayoutContentMojavezComponent,
3570
+ UlvContextMenuItemShowFileContentComponent,
3571
+ ResendVerificationCodeComponent,
3572
+ CheckboxButtonComponent,
3573
+ ReportTabViewComponent,
3574
+ ReportLineChartViewComponent,
3575
+ CardHeaderKpiComponent,
3576
+ CardContentLineChartComponent,
3577
+ FormChartContentComponent,
3578
+ TableViewVerticalColumnsComponent,
3579
+ QueryStringObservableComponent,
3580
+ QueryStringFormObservableComponent,
3581
+ G4bDetailsComponent,
3582
+ AvatarComponent,
3583
+ G4bEstelamComponent,
3584
+ TimerCountDownComponent,
3585
+ MoInfoMicroProccessFlowComponent,
3586
+ MicroProccessFlowComponent,
3587
+ EnumInfoMicroProccessFlowComponent,
3588
+ UiPicturesCarouselComponent,
3589
+ UiNumRateComponent,
3590
+ MediaFileUploaderComponent,
3591
+ SubformInRowReportComponent,
3592
+ MasterDetailCardFormComponent,
3593
+ ReportButtonViewComponent,
3594
+ BarsaDocumentsComponent,
3595
+ BarsaDocumentListItemComponent,
3596
+ AcceptRejectComponent,
3597
+ FooterComponent,
3598
+ GeographicLocationComponent,
3599
+ BarsaGeographicLocationComponent,
3600
+ TokenReportViewComponent,
3601
+ ColumnFormViewerComponent,
3602
+ FormReportViewComponent,
3603
+ FormReportViewItemComponent,
3604
+ FormCardComponent,
3605
+ ColumnProgressbarComponent,
3606
+ ColumnChipComponent
3607
+ ];
3608
+ const pipes = [UiPersonPipe, BarcodeFormatPipe, MoListToFlowItemPipe, DataSourceToFlowItemPipe];
3609
+ class BarsaDevelopComponentsModule extends BaseModule {
3610
+ constructor(dcm, cfr) {
3611
+ super(dcm, cfr, 'BarsaDevelopComponentsModule');
3612
+ this.dcm = dcm;
3613
+ this.cfr = cfr;
3614
+ this.dynamicComponents = [...components];
3615
+ }
3616
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDevelopComponentsModule, deps: [{ token: i1$1.DynamicComponentService }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.NgModule }); }
3617
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: BarsaDevelopComponentsModule, declarations: [LoginFormComponent,
3618
+ LoginSocialConncetionsComponent,
3619
+ UiPersonComponent,
3620
+ BarcodeReaderComponent,
3621
+ BarcodeReaderDialogComponent,
3622
+ BarcodeReaderVideoComponent,
3623
+ SettingFormComponent,
3624
+ MicroProcessFlowViewComponent,
3625
+ UiEnumSegmentedButtonComponent,
3626
+ TabProcessViewComponent,
3627
+ UiTextFieldSearchComponent,
3628
+ ServiceDeskHeaderComponent,
3629
+ CardContentImageAndTitleComponent,
3630
+ CardHeaderLogoTitleSubtitleComponent,
3631
+ FormContentQuickViewComponent,
3632
+ ServiceDeskServcieDetailComponent,
3633
+ ServiceDeskViewOfServicesComponent,
3634
+ ServiceDeskCardContentMojavezhayAkhzShodeComponent,
3635
+ CardHeaderBigImageTitleAndSubtitleComponent,
3636
+ ServiceDeskFormLayoutContentMojavezComponent,
3637
+ UlvContextMenuItemShowFileContentComponent,
3638
+ ResendVerificationCodeComponent,
3639
+ CheckboxButtonComponent,
3640
+ ReportTabViewComponent,
3641
+ ReportLineChartViewComponent,
3642
+ CardHeaderKpiComponent,
3643
+ CardContentLineChartComponent,
3644
+ FormChartContentComponent,
3645
+ TableViewVerticalColumnsComponent,
3646
+ QueryStringObservableComponent,
3647
+ QueryStringFormObservableComponent,
3648
+ G4bDetailsComponent,
3649
+ AvatarComponent,
3650
+ G4bEstelamComponent,
3651
+ TimerCountDownComponent,
3652
+ MoInfoMicroProccessFlowComponent,
3653
+ MicroProccessFlowComponent,
3654
+ EnumInfoMicroProccessFlowComponent,
3655
+ UiPicturesCarouselComponent,
3656
+ UiNumRateComponent,
3657
+ MediaFileUploaderComponent,
3658
+ SubformInRowReportComponent,
3659
+ MasterDetailCardFormComponent,
3660
+ ReportButtonViewComponent,
3661
+ BarsaDocumentsComponent,
3662
+ BarsaDocumentListItemComponent,
3663
+ AcceptRejectComponent,
3664
+ FooterComponent,
3665
+ GeographicLocationComponent,
3666
+ BarsaGeographicLocationComponent,
3667
+ TokenReportViewComponent,
3668
+ ColumnFormViewerComponent,
3669
+ FormReportViewComponent,
3670
+ FormReportViewItemComponent,
3671
+ FormCardComponent,
3672
+ ColumnProgressbarComponent,
3673
+ ColumnChipComponent, UiPersonPipe, BarcodeFormatPipe, MoListToFlowItemPipe, DataSourceToFlowItemPipe], imports: [CommonModule,
3674
+ BarsaNovinRayCoreModule,
3675
+ ReactiveFormsModule,
3676
+ BarsaSapUiModule,
3677
+ BarsaEchartsModule,
3678
+ BarsaTilesModule,
3679
+ FundamentalNgxCoreModule,
3680
+ PlatformInputGroupModule,
3681
+ FormsModule], exports: [LoginFormComponent,
3682
+ LoginSocialConncetionsComponent,
3683
+ UiPersonComponent,
3684
+ BarcodeReaderComponent,
3685
+ BarcodeReaderDialogComponent,
3686
+ BarcodeReaderVideoComponent,
3687
+ SettingFormComponent,
3688
+ MicroProcessFlowViewComponent,
3689
+ UiEnumSegmentedButtonComponent,
3690
+ TabProcessViewComponent,
3691
+ UiTextFieldSearchComponent,
3692
+ ServiceDeskHeaderComponent,
3693
+ CardContentImageAndTitleComponent,
3694
+ CardHeaderLogoTitleSubtitleComponent,
3695
+ FormContentQuickViewComponent,
3696
+ ServiceDeskServcieDetailComponent,
3697
+ ServiceDeskViewOfServicesComponent,
3698
+ ServiceDeskCardContentMojavezhayAkhzShodeComponent,
3699
+ CardHeaderBigImageTitleAndSubtitleComponent,
3700
+ ServiceDeskFormLayoutContentMojavezComponent,
3701
+ UlvContextMenuItemShowFileContentComponent,
3702
+ ResendVerificationCodeComponent,
3703
+ CheckboxButtonComponent,
3704
+ ReportTabViewComponent,
3705
+ ReportLineChartViewComponent,
3706
+ CardHeaderKpiComponent,
3707
+ CardContentLineChartComponent,
3708
+ FormChartContentComponent,
3709
+ TableViewVerticalColumnsComponent,
3710
+ QueryStringObservableComponent,
3711
+ QueryStringFormObservableComponent,
3712
+ G4bDetailsComponent,
3713
+ AvatarComponent,
3714
+ G4bEstelamComponent,
3715
+ TimerCountDownComponent,
3716
+ MoInfoMicroProccessFlowComponent,
3717
+ MicroProccessFlowComponent,
3718
+ EnumInfoMicroProccessFlowComponent,
3719
+ UiPicturesCarouselComponent,
3720
+ UiNumRateComponent,
3721
+ MediaFileUploaderComponent,
3722
+ SubformInRowReportComponent,
3723
+ MasterDetailCardFormComponent,
3724
+ ReportButtonViewComponent,
3725
+ BarsaDocumentsComponent,
3726
+ BarsaDocumentListItemComponent,
3727
+ AcceptRejectComponent,
3728
+ FooterComponent,
3729
+ GeographicLocationComponent,
3730
+ BarsaGeographicLocationComponent,
3731
+ TokenReportViewComponent,
3732
+ ColumnFormViewerComponent,
3733
+ FormReportViewComponent,
3734
+ FormReportViewItemComponent,
3735
+ FormCardComponent,
3736
+ ColumnProgressbarComponent,
3737
+ ColumnChipComponent] }); }
3738
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDevelopComponentsModule, providers: [UserMediaBaseService, WebBarcodeService], imports: [CommonModule,
3739
+ BarsaNovinRayCoreModule,
3740
+ ReactiveFormsModule,
3741
+ BarsaSapUiModule,
3742
+ BarsaEchartsModule,
3743
+ BarsaTilesModule,
3744
+ FundamentalNgxCoreModule,
3745
+ PlatformInputGroupModule,
3746
+ FormsModule] }); }
3747
+ }
3748
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDevelopComponentsModule, decorators: [{
3749
+ type: NgModule,
3750
+ args: [{
3751
+ declarations: [...components, ...pipes],
3752
+ schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
3753
+ imports: [
3754
+ CommonModule,
3755
+ BarsaNovinRayCoreModule,
3756
+ ReactiveFormsModule,
3757
+ BarsaSapUiModule,
3758
+ BarsaEchartsModule,
3759
+ BarsaTilesModule,
3760
+ FundamentalNgxCoreModule,
3761
+ PlatformInputGroupModule,
3762
+ FormsModule
3763
+ ],
3764
+ providers: [UserMediaBaseService, WebBarcodeService],
3765
+ exports: [...components]
3766
+ }]
3767
+ }], ctorParameters: () => [{ type: i1$1.DynamicComponentService }, { type: i0.ComponentFactoryResolver }] });
3768
+
3769
+ /**
3770
+ * Generated bundle index. Do not edit.
3771
+ */
3772
+
3773
+ export { AcceptRejectComponent, AvatarComponent, BarcodeFormatPipe, BarcodeReaderComponent, BarcodeReaderDialogComponent, BarcodeReaderVideoComponent, BarsaDevelopComponentsModule, BarsaDocumentListItemComponent, BarsaDocumentsComponent, BarsaGeographicLocationComponent, CardContentImageAndTitleComponent, CardContentLineChartComponent, CardHeaderBigImageTitleAndSubtitleComponent, CardHeaderKpiComponent, CardHeaderLogoTitleSubtitleComponent, CheckboxButtonComponent, ColumnChipComponent, ColumnFormViewerComponent, ColumnProgressbarComponent, 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 };
3774
+ //# sourceMappingURL=barsa-develop-components.mjs.map