barsa-develop-components 1.0.455 → 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
@@ -1,3660 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, Input, ViewChild, Injectable, EventEmitter, Output, Pipe, HostBinding, HostListener, RendererStyleFlags2, ElementRef, ViewEncapsulation, ViewChildren, ViewContainerRef, TemplateRef, Optional, NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';
3
- import * as i3$2 from 'barsa-sap-ui';
4
- import { DeviceInfoFieldBaseComponent, UiMoInfoSubFormUiComponent, UiCheckBoxComponent, UiMoInfoUlvComboComponent, UiSimpleComboComponent, UiPicturesInfoComponent, UiPdfViewerComponent, ColumnRendererComponent, BarsaSapUiModule } from 'barsa-sap-ui';
5
- import { Subject, debounceTime, distinctUntilChanged, BehaviorSubject, of, takeUntil as takeUntil$1, switchMap } from 'rxjs';
6
- import * as i2 from '@angular/forms';
7
- import { ReactiveFormsModule, FormsModule } from '@angular/forms';
8
- import * as i2$1 from '@fundamental-ngx/core/input-group';
9
- import * as i3 from '@fundamental-ngx/core/toolbar';
10
- import * as i1 from 'barsa-novin-ray-core';
11
- import { ReportViewBaseComponent, FieldBaseComponent, FormBaseComponent, FormPanelService, BaseComponent, BarsaApi, ReportBaseComponent, getDeviceIsMobile, BaseItemContentPropsComponent, FormPropsBaseComponent, FindLayoutSettingFromLayout94, BaseFormToolbaritemPropsComponent, DateService, getDateService, LogService, UploadService, AudioRecordingService, VideoRecordingService, createGridEditorFormPanel, ImageMimeType, AudioMimeType, VideoMimeType, AllFilesMimeType, PreventDefaulEvent, isImage, getIcon, FilesValidationHelper, LinearListHelper, getUniqueId, BaseViewItemPropsComponent, BaseModule, BarsaNovinRayCoreModule } from 'barsa-novin-ray-core';
12
- import { takeUntil, shareReplay, filter, map, debounceTime as debounceTime$1, tap, exhaustMap, concatMap, finalize, delay, withLatestFrom } from 'rxjs/operators';
13
- import * as i2$3 from '@fundamental-ngx/core';
14
- import { TabListComponent, PopoverBodyComponent, TabPanelComponent, FundamentalNgxCoreModule } from '@fundamental-ngx/core';
15
- import * as i1$1 from '@angular/common';
16
- import { CommonModule } from '@angular/common';
17
- import * as i2$2 from '@fundamental-ngx/core/tabs';
18
- import * as i5 from '@fundamental-ngx/core/button';
19
- import * as i4 from '@fundamental-ngx/core/segmented-button';
20
- import * as i3$1 from '@fundamental-ngx/core/micro-process-flow';
21
- import * as i4$1 from '@fundamental-ngx/core/dynamic-side-content';
22
- import { __awaiter } from 'tslib';
23
- import { NotFoundException, ChecksumException, FormatException, DecodeHintType, BarcodeFormat } from '@zxing/library';
24
- import { BrowserMultiFormatReader, BrowserCodeReader } from '@zxing/browser';
25
- import * as i4$2 from '@fundamental-ngx/core/bar';
26
- import * as i5$1 from '@fundamental-ngx/core/dialog';
27
- import * as i4$3 from '@fundamental-ngx/core/title';
28
- import * as i12 from '@fundamental-ngx/core/utils';
29
- import * as i8 from '@fundamental-ngx/core/select';
30
- import * as i1$2 from '@fundamental-ngx/platform';
31
- import { PlatformInputGroupModule } from '@fundamental-ngx/platform';
32
- import * as i4$4 from '@fundamental-ngx/core/link';
33
- import * as i5$2 from '@fundamental-ngx/core/card';
34
- import * as i7 from '@fundamental-ngx/core/form';
35
- import * as i8$1 from '@fundamental-ngx/core/icon';
36
- import * as i8$2 from '@fundamental-ngx/core/list';
37
- import * as i8$3 from '@fundamental-ngx/core/popover';
38
- import * as i4$5 from '@fundamental-ngx/core/quick-view';
39
- import * as i4$6 from '@fundamental-ngx/core/table';
40
- import * as i5$3 from '@fundamental-ngx/core/layout-grid';
41
- import * as i2$4 from 'barsa-tiles';
42
- import { TilesViewerContainerComponent, TilesViewerService, TilesViewerGroupComponent, BarsaTilesModule } from 'barsa-tiles';
43
- import * as i4$7 from '@angular/router';
44
- import * as i4$8 from '@fundamental-ngx/core/avatar';
45
- import * as i7$1 from '@fundamental-ngx/core/checkbox';
46
- import * as i3$3 from '@fundamental-ngx/core/dynamic-page';
47
- import * as i3$4 from '@angular/platform-browser';
48
- import * as i2$5 from 'barsa-echarts';
49
- import { BarsaEchartsModule } from 'barsa-echarts';
50
- import * as i7$2 from '@fundamental-ngx/core/object-status';
51
- import * as i4$9 from '@fundamental-ngx/core/carousel';
52
- import * as i1$3 from '@fundamental-ngx/core/rating-indicator';
53
- import * as i4$a from '@fundamental-ngx/core/nested-list';
54
- import * as i5$4 from '@fundamental-ngx/core/progress-indicator';
55
- import * as i2$6 from '@fundamental-ngx/core/menu';
56
- import * as i3$5 from '@fundamental-ngx/core/split-button';
57
- import * as i4$b from '@fundamental-ngx/core/action-sheet';
58
- import * as i7$3 from '@fundamental-ngx/core/file-uploader';
59
- import * as i9 from '@fundamental-ngx/core/inline-help';
60
- import * as i2$7 from '@fundamental-ngx/core/content-density';
61
- import * as i3$6 from '@fundamental-ngx/core/token';
62
-
63
- class UiTextFieldSearchComponent extends DeviceInfoFieldBaseComponent {
64
- constructor() {
65
- super(...arguments);
66
- this._debouncer = new Subject();
67
- }
68
- get MinSize() {
69
- // this call from outside.corejs
70
- return { width: 0, height: 30 };
71
- }
72
- ngOnInit() {
73
- super.ngOnInit();
74
- this._debouncer.pipe(debounceTime(300), distinctUntilChanged()).subscribe((value) => {
75
- this.value = value;
76
- this.valueChange.emit(value);
77
- });
78
- }
79
- onSearchSubmit() {
80
- this._valueChange(this.searchTerm);
81
- }
82
- _valueChange(value) {
83
- this._debouncer.next(value);
84
- }
85
- }
86
- UiTextFieldSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiTextFieldSearchComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
87
- UiTextFieldSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiTextFieldSearchComponent, selector: "bdc-ui-text-field-search", inputs: { value: "value", MinSize: "MinSize" }, usesInheritance: true, ngImport: i0, template: "<fd-input-group\n style=\"width: 100%\"\n fd-toolbar-item\n type=\"search\"\n glyph=\"search\"\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\n [placeholder]=\"'Search' | bbbTranslate\"\n [button]=\"true\"\n [disabled]=\"false\"\n [(ngModel)]=\"searchTerm\"\n (addOnButtonClicked)=\"onSearchSubmit()\"\n (keydown.enter)=\"onSearchSubmit()\"\n>\n</fd-input-group>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$1.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiTextFieldSearchComponent, decorators: [{
89
- type: Component,
90
- args: [{ selector: 'bdc-ui-text-field-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-input-group\n style=\"width: 100%\"\n fd-toolbar-item\n type=\"search\"\n glyph=\"search\"\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\n [placeholder]=\"'Search' | bbbTranslate\"\n [button]=\"true\"\n [disabled]=\"false\"\n [(ngModel)]=\"searchTerm\"\n (addOnButtonClicked)=\"onSearchSubmit()\"\n (keydown.enter)=\"onSearchSubmit()\"\n>\n</fd-input-group>\n" }]
91
- }], propDecorators: { value: [{
92
- type: Input
93
- }], MinSize: [{
94
- type: Input
95
- }] } });
96
-
97
- class TabProcessViewComponent extends ReportViewBaseComponent {
98
- ngOnInit() {
99
- super.ngOnInit();
100
- this.arrowRight = this.rtl ? 'navigation-left-arrow' : 'navigation-right-arrow';
101
- this.fieldTitle = this.viewSetting.FieldTitle;
102
- this.fieldSubtitle = this.viewSetting.FieldSubtitle;
103
- this.fieldIcon = this.viewSetting.FieldIcon;
104
- this.defaultIcon = this.viewSetting.DefaultIcon;
105
- this._ulvMainService.moDataList$.pipe(takeUntil(this._onDestroy$)).subscribe((moDataList) => {
106
- if (moDataList) {
107
- const selectedIndex = moDataList.findIndex((c) => c.$IsChecked);
108
- if (this.tabList && selectedIndex > -1) {
109
- setTimeout(() => this.tabList.tabPanels.toArray()[selectedIndex].open(true), 0);
110
- }
111
- }
112
- });
113
- }
114
- onTabChange2(e) {
115
- const index = this.moDataList.findIndex((c) => c.Id === e.Id);
116
- const mo = this.moDataList[index];
117
- if (mo.$IsChecked) {
118
- return;
119
- }
120
- super.onRowCheck({ mo, index });
121
- }
122
- onTabChange(e) {
123
- const index = this.moDataList.findIndex((c) => c.Id === e.id);
124
- const mo = this.moDataList[index];
125
- super.onRowCheck({ mo, index });
126
- }
127
- }
128
- TabProcessViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TabProcessViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
129
- TabProcessViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TabProcessViewComponent, selector: "bdc-tab-process-view", viewQueries: [{ propertyName: "tabList", first: true, predicate: TabListComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-tab-list\n *ngIf=\"moDataList?.length; else empty\"\n mode=\"process\"\n [style.min-height]=\"moDataList?.length ? '3.8rem' : null\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n>\n <fd-tab\n *ngFor=\"let item of moDataList; let index = index; let last = last\"\n [id]=\"item.Id\"\n [active]=\"item.$IsChecked\"\n >\n <ng-template fd-tab-title-template>\n <span\n (click)=\"onTabChange2(item)\"\n fd-tab-icon\n [icon]=\"(fieldIcon | rval: item:allColumns) ? (fieldIcon | rval: item:allColumns) : defaultIcon\"\n ></span>\n <div fd-tab-process (click)=\"onTabChange2(item)\">\n <span fd-tab-label>{{ fieldTitle | rval: item:allColumns }}</span>\n <span fd-tab-label>{{ fieldSubtitle | rval: item:allColumns }}</span>\n </div>\n </ng-template>\n </fd-tab>\n</fd-tab-list>\n<ng-template #empty>\n <div style=\"min-height: 3.8rem; background-color: var(--sapObjectHeader_Background)\"></div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i2$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "directive", type: i2$2.TabTitleDirective, selector: "[fdTabTitleTemplate], [fd-tab-title-template]" }, { kind: "component", type: i2$2.TabIconComponent, selector: "[fd-tab-icon]", inputs: ["class", "icon"] }, { kind: "directive", type: i2$2.TabLabelDirective, selector: "[fdTabLabel], [fd-tab-label]" }, { kind: "directive", type: i2$2.TabProcessDirective, selector: "[fdTabProcess], [fd-tab-process]" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TabProcessViewComponent, decorators: [{
131
- type: Component,
132
- args: [{ selector: 'bdc-tab-process-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-tab-list\n *ngIf=\"moDataList?.length; else empty\"\n mode=\"process\"\n [style.min-height]=\"moDataList?.length ? '3.8rem' : null\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n>\n <fd-tab\n *ngFor=\"let item of moDataList; let index = index; let last = last\"\n [id]=\"item.Id\"\n [active]=\"item.$IsChecked\"\n >\n <ng-template fd-tab-title-template>\n <span\n (click)=\"onTabChange2(item)\"\n fd-tab-icon\n [icon]=\"(fieldIcon | rval: item:allColumns) ? (fieldIcon | rval: item:allColumns) : defaultIcon\"\n ></span>\n <div fd-tab-process (click)=\"onTabChange2(item)\">\n <span fd-tab-label>{{ fieldTitle | rval: item:allColumns }}</span>\n <span fd-tab-label>{{ fieldSubtitle | rval: item:allColumns }}</span>\n </div>\n </ng-template>\n </fd-tab>\n</fd-tab-list>\n<ng-template #empty>\n <div style=\"min-height: 3.8rem; background-color: var(--sapObjectHeader_Background)\"></div>\n</ng-template>\n" }]
133
- }], propDecorators: { tabList: [{
134
- type: ViewChild,
135
- args: [TabListComponent]
136
- }] } });
137
-
138
- class UiEnumSegmentedButtonComponent extends FieldBaseComponent {
139
- onValueChange(value) {
140
- const selectedValue = value;
141
- this.setValue(selectedValue);
142
- }
143
- setValue(selectedValue) {
144
- this.value = selectedValue;
145
- this.valueChange.emit(this.value);
146
- this.fireContextEvent('select', this.value);
147
- }
148
- }
149
- UiEnumSegmentedButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiEnumSegmentedButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
150
- UiEnumSegmentedButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiEnumSegmentedButtonComponent, selector: "bdc-ui-enum-segmented-button", usesInheritance: true, ngImport: i0, template: "<fd-segmented-button style=\"width: 100%\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\r\n <ng-container *ngFor=\"let item of context.store.data[context.store.root]\">\r\n <button\r\n *ngIf=\"item.id !== '0'\"\r\n [disabled]=\"(disableOrReadonly$ | async) === true ? true : false\"\r\n fd-button\r\n [label]=\"item.txt\"\r\n [value]=\"item.id\"\r\n ></button>\r\n </ng-container>\r\n</fd-segmented-button>\r\n", styles: ["button{width:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
151
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiEnumSegmentedButtonComponent, decorators: [{
152
- type: Component,
153
- args: [{ selector: 'bdc-ui-enum-segmented-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-segmented-button style=\"width: 100%\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\r\n <ng-container *ngFor=\"let item of context.store.data[context.store.root]\">\r\n <button\r\n *ngIf=\"item.id !== '0'\"\r\n [disabled]=\"(disableOrReadonly$ | async) === true ? true : false\"\r\n fd-button\r\n [label]=\"item.txt\"\r\n [value]=\"item.id\"\r\n ></button>\r\n </ng-container>\r\n</fd-segmented-button>\r\n", styles: ["button{width:100%}\n"] }]
154
- }] });
155
-
156
- class MicroProcessFlowViewComponent extends ReportViewBaseComponent {
157
- ngOnInit() {
158
- super.ngOnInit();
159
- this.arrowRight = this.rtl ? 'navigation-left-arrow' : 'navigation-right-arrow';
160
- this.fieldTitle = this.viewSetting.FieldTitle;
161
- this.fieldIcon = this.viewSetting.FieldIcon;
162
- this.fieldState = this.viewSetting.FieldState;
163
- this.mode = this.viewSetting.ModeValue$Caption;
164
- }
165
- }
166
- MicroProcessFlowViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroProcessFlowViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
167
- MicroProcessFlowViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MicroProcessFlowViewComponent, selector: "bdc-micro-process-flow-view", usesInheritance: true, ngImport: i0, template: "<fd-micro-process-flow style=\"max-width: 100%\">\n <fd-micro-process-flow-item *ngFor=\"let item of moDataList; let index = index\">\n <ng-container\n *ngTemplateOutlet=\"\n button;\n context: {\n $implicit: item,\n index: index,\n arrow: arrowRight\n }\n \"\n ></ng-container>\n </fd-micro-process-flow-item>\n</fd-micro-process-flow>\n<ng-template #button let-mo let-index=\"index\" let-arrow=\"arrow\">\n <button\n fd-button\n (click)=\"onRowCheck({mo, index})\"\n fd-micro-process-flow-focusable-item\n [label]=\"fieldTitle | rval: mo:allColumns\"\n [fdType]=\"fieldState | rval: mo:allColumns\"\n [glyph]=\"fieldIcon | rval: mo:allColumns\"\n ></button>\n</ng-template>\n", styles: [".fd-link{cursor:pointer;font-size:1.06rem}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3$1.MicroProcessFlowComponent, selector: "fd-micro-process-flow", inputs: ["independentSteps", "transitionSpeed", "transitionTimingFunction"] }, { kind: "component", type: i3$1.MicroProcessFlowItemComponent, selector: "fd-micro-process-flow-item", inputs: ["state", "intermediate"] }, { kind: "directive", type: i3$1.MicroProcessFlowFocusableItemDirective, selector: "[fdMicroProcessFlowFocusableItem], [fd-micro-process-flow-focusable-item]" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroProcessFlowViewComponent, decorators: [{
169
- type: Component,
170
- args: [{ selector: 'bdc-micro-process-flow-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-micro-process-flow style=\"max-width: 100%\">\n <fd-micro-process-flow-item *ngFor=\"let item of moDataList; let index = index\">\n <ng-container\n *ngTemplateOutlet=\"\n button;\n context: {\n $implicit: item,\n index: index,\n arrow: arrowRight\n }\n \"\n ></ng-container>\n </fd-micro-process-flow-item>\n</fd-micro-process-flow>\n<ng-template #button let-mo let-index=\"index\" let-arrow=\"arrow\">\n <button\n fd-button\n (click)=\"onRowCheck({mo, index})\"\n fd-micro-process-flow-focusable-item\n [label]=\"fieldTitle | rval: mo:allColumns\"\n [fdType]=\"fieldState | rval: mo:allColumns\"\n [glyph]=\"fieldIcon | rval: mo:allColumns\"\n ></button>\n</ng-template>\n", styles: [".fd-link{cursor:pointer;font-size:1.06rem}\n"] }]
171
- }] });
172
-
173
- class SettingFormComponent extends FormBaseComponent {
174
- constructor() {
175
- super(...arguments);
176
- this.deviceSize = 'xl';
177
- this.selectedSetting = false;
178
- this.groupSettingFieldCaption = 'گروه تنظیمات2';
179
- this.objectSettingFieldCaption = 'شی تنظیمات';
180
- }
181
- ngOnInit() {
182
- super.ngOnInit();
183
- this.rtl$ = this._portalService.rtl$;
184
- this._portalService.deviceSize$.pipe(takeUntil(this._onDestroy$)).subscribe((deviceSize) => {
185
- switch (deviceSize) {
186
- case 's':
187
- this.deviceSize = 'sm';
188
- break;
189
- case 'm':
190
- this.deviceSize = 'md';
191
- break;
192
- default:
193
- this.deviceSize = 'xl';
194
- }
195
- });
196
- }
197
- ngAfterViewInit() {
198
- super.ngAfterViewInit();
199
- const fieldUi = Object.values(this.listFieldUi).find((c) => c.Setting.ControlFieldCaption === this.groupSettingFieldCaption);
200
- if (fieldUi) {
201
- fieldUi.viewerControl.on({
202
- rowselect: this._setSelectedSetting.bind(this)
203
- });
204
- }
205
- this._groupSettingControlUi = fieldUi;
206
- }
207
- ngOnDestroy() {
208
- super.ngOnDestroy();
209
- if (this._groupSettingControlUi) {
210
- this._groupSettingControlUi.viewerControl.un('rowselect', this._setSelectedSetting);
211
- }
212
- }
213
- onSettingClick() { }
214
- onBack() {
215
- this.selectedSetting = false;
216
- }
217
- _setSelectedSetting() {
218
- this.selectedSetting = true;
219
- }
220
- }
221
- SettingFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: SettingFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
222
- SettingFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: SettingFormComponent, selector: "bdc-setting-form", providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mo$ | async as mo; else loading\">\r\n <ng-container *ngIf=\"layout94$ | async as layout\">\r\n <div *ngIf=\"deviceSize === 'sm'; else sideContent\" style=\"display: flex; flex-direction: column\">\r\n <div *ngIf=\"selectedSetting\" style=\"width: 100%\">\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"(rtl$ | async)!! ? 'arrow-left' : 'arrow-right'\"\r\n (click)=\"onBack()\"\r\n ></button>\r\n </div>\r\n\r\n <div [class.hide]=\"selectedSetting\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderSetting;\r\n context: {\r\n $implicit: layout,\r\n isMobile: true\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n <div [class.hide]=\"!selectedSetting\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderForm;\r\n context: {\r\n $implicit: layout,\r\n isMobile: true\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n <ng-template #sideContent>\r\n <fd-dynamic-side-content [size]=\"deviceSize\">\r\n <fd-dynamic-side-content-side>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderSetting;\r\n context: {\r\n $implicit: layout,\r\n isMobile: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderForm;\r\n context: {\r\n $implicit: layout,\r\n isMobile: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-side-content-main>\r\n </fd-dynamic-side-content>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #renderForm let-layout let-isMobile=\"isMobile\">\r\n <bsu-layout-control\r\n *ngIf=\"objectSettingFieldCaption | controlUi: layout as layoutConfig\"\r\n (click)=\"onSettingClick()\"\r\n class=\"form-setting\"\r\n [class.is-mobile]=\"isMobile\"\r\n [caption]=\"objectSettingFieldCaption\"\r\n [config]=\"layoutConfig\"\r\n [focus]=\"true\"\r\n ></bsu-layout-control>\r\n </ng-template>\r\n <ng-template #renderSetting let-layout let-isMobile=\"isMobile\">\r\n <bsu-layout-control\r\n *ngIf=\"groupSettingFieldCaption | controlUi: layout as layoutConfig\"\r\n class=\"list-setting\"\r\n [class.is-mobile]=\"isMobile\"\r\n [caption]=\"groupSettingFieldCaption\"\r\n [config]=\"layoutConfig\"\r\n ></bsu-layout-control>\r\n </ng-template>\r\n</ng-container>\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n", styles: [":host{width:100%}:host ::ng-deep bsu-ulv-context-menu,:host ::ng-deep li button{display:none}.list-setting{height:100%;border-left:1px solid #ccc}.list-setting ::ng-deep bnrc-field-ui{height:100%;padding:0}.list-setting.is-mobile{border:none}.form-setting{height:100%;padding-top:5px}.form-setting ::ng-deep bnrc-field-ui{height:100%!important}fd-dynamic-side-content{height:100%}fd-dynamic-side-content-main{overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$2.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3$2.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$1.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i4$1.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i4$1.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: SettingFormComponent, decorators: [{
224
- type: Component,
225
- args: [{ selector: 'bdc-setting-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "<ng-container *ngIf=\"mo$ | async as mo; else loading\">\r\n <ng-container *ngIf=\"layout94$ | async as layout\">\r\n <div *ngIf=\"deviceSize === 'sm'; else sideContent\" style=\"display: flex; flex-direction: column\">\r\n <div *ngIf=\"selectedSetting\" style=\"width: 100%\">\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"(rtl$ | async)!! ? 'arrow-left' : 'arrow-right'\"\r\n (click)=\"onBack()\"\r\n ></button>\r\n </div>\r\n\r\n <div [class.hide]=\"selectedSetting\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderSetting;\r\n context: {\r\n $implicit: layout,\r\n isMobile: true\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n <div [class.hide]=\"!selectedSetting\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderForm;\r\n context: {\r\n $implicit: layout,\r\n isMobile: true\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n <ng-template #sideContent>\r\n <fd-dynamic-side-content [size]=\"deviceSize\">\r\n <fd-dynamic-side-content-side>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderSetting;\r\n context: {\r\n $implicit: layout,\r\n isMobile: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderForm;\r\n context: {\r\n $implicit: layout,\r\n isMobile: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-side-content-main>\r\n </fd-dynamic-side-content>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #renderForm let-layout let-isMobile=\"isMobile\">\r\n <bsu-layout-control\r\n *ngIf=\"objectSettingFieldCaption | controlUi: layout as layoutConfig\"\r\n (click)=\"onSettingClick()\"\r\n class=\"form-setting\"\r\n [class.is-mobile]=\"isMobile\"\r\n [caption]=\"objectSettingFieldCaption\"\r\n [config]=\"layoutConfig\"\r\n [focus]=\"true\"\r\n ></bsu-layout-control>\r\n </ng-template>\r\n <ng-template #renderSetting let-layout let-isMobile=\"isMobile\">\r\n <bsu-layout-control\r\n *ngIf=\"groupSettingFieldCaption | controlUi: layout as layoutConfig\"\r\n class=\"list-setting\"\r\n [class.is-mobile]=\"isMobile\"\r\n [caption]=\"groupSettingFieldCaption\"\r\n [config]=\"layoutConfig\"\r\n ></bsu-layout-control>\r\n </ng-template>\r\n</ng-container>\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n", styles: [":host{width:100%}:host ::ng-deep bsu-ulv-context-menu,:host ::ng-deep li button{display:none}.list-setting{height:100%;border-left:1px solid #ccc}.list-setting ::ng-deep bnrc-field-ui{height:100%;padding:0}.list-setting.is-mobile{border:none}.form-setting{height:100%;padding-top:5px}.form-setting ::ng-deep bnrc-field-ui{height:100%!important}fd-dynamic-side-content{height:100%}fd-dynamic-side-content-main{overflow-y:auto}\n"] }]
226
- }] });
227
-
228
- /**
229
- * Based on zxing-typescript BrowserCodeReader
230
- */
231
- class BrowserMultiFormatContinuousReader extends BrowserMultiFormatReader {
232
- /**
233
- * Returns the code reader scanner controls.
234
- */
235
- getScannerControls() {
236
- if (!this.scannerControls) {
237
- throw new Error('No scanning is running at the time.');
238
- }
239
- return this.scannerControls;
240
- }
241
- /**
242
- * Starts the decoding from the current or a new video element.
243
- *
244
- * @param deviceId The device's to be used Id
245
- * @param previewEl A new video element
246
- */
247
- scanFromDeviceObservable(deviceId, previewEl) {
248
- var _a;
249
- return __awaiter(this, void 0, void 0, function* () {
250
- const scan$ = new BehaviorSubject({});
251
- let ctrls;
252
- try {
253
- ctrls = yield this.decodeFromVideoDevice(deviceId, previewEl, (result, error) => {
254
- var _a;
255
- if (!error) {
256
- scan$.next({ result });
257
- return;
258
- }
259
- console.error(error);
260
- const errorName = error.name;
261
- // stream cannot stop on fails.
262
- if (
263
- // scan Failure - found nothing, no error
264
- errorName === NotFoundException.name ||
265
- // scan Error - found the QR but got error on decoding
266
- errorName === ChecksumException.name ||
267
- errorName === FormatException.name ||
268
- error.message.includes('No MultiFormat Readers were able to detect the code.')) {
269
- scan$.next({ error });
270
- return;
271
- }
272
- // probably fatal error
273
- scan$.error(error);
274
- (_a = this.scannerControls) === null || _a === void 0 ? void 0 : _a.stop();
275
- this.scannerControls = undefined;
276
- return;
277
- });
278
- this.scannerControls = Object.assign(Object.assign({}, ctrls), { stop() {
279
- ctrls.stop();
280
- scan$.complete();
281
- } });
282
- }
283
- catch (e) {
284
- scan$.error(e);
285
- (_a = this.scannerControls) === null || _a === void 0 ? void 0 : _a.stop();
286
- this.scannerControls = undefined;
287
- }
288
- return scan$.asObservable();
289
- });
290
- }
291
- }
292
- class UserMediaBaseService {
293
- /**
294
- *
295
- */
296
- constructor(_logService) {
297
- this._logService = _logService;
298
- this.hasNavigator = false;
299
- this.isMediaDevicesSupported = false;
300
- this._camerasSource = new BehaviorSubject([]);
301
- this.cameras$ = this._camerasSource
302
- .asObservable()
303
- .pipe(shareReplay(1))
304
- .pipe(filter((items) => items && items.length > 0));
305
- this._permissionResponse = new Subject();
306
- this.permissionResponse$ = this._permissionResponse.asObservable();
307
- this._hasDevicesSource = new BehaviorSubject(false);
308
- this.hasDevices$ = this._hasDevicesSource.asObservable().pipe(shareReplay(1));
309
- this._permissionSource = new BehaviorSubject(false);
310
- this.permission$ = this._permissionSource.asObservable().pipe();
311
- this._camerasNotFoundSource = new Subject();
312
- this.camerasNotFound$ = this._camerasNotFoundSource.asObservable().pipe(shareReplay(1));
313
- this.hasNavigator = typeof navigator !== 'undefined';
314
- this.isMediaDevicesSupported = this.hasNavigator && !!navigator.mediaDevices;
315
- }
316
- updateVideoInputDevices() {
317
- return __awaiter(this, void 0, void 0, function* () {
318
- // permissions aren't needed to get devices, but to access them and their info
319
- const devices = (yield BrowserCodeReader.listVideoInputDevices()) || [];
320
- const hasDevices = devices && devices.length > 0;
321
- // stores discovered devices and updates information
322
- this._hasDevicesSource.next(hasDevices);
323
- this._camerasSource.next([...devices]);
324
- if (!hasDevices) {
325
- const err = {
326
- code: DOMException.NOT_FOUND_ERR,
327
- message: 'Device not found.'
328
- };
329
- this._camerasNotFoundSource.next(err);
330
- }
331
- return devices;
332
- });
333
- }
334
- /**
335
- * Gets and registers all cammeras.
336
- */
337
- askForPermission() {
338
- return __awaiter(this, void 0, void 0, function* () {
339
- if (!this.hasNavigator) {
340
- this._logService.error('user media', `Can't ask permission, navigator is not present.`);
341
- this._setPermission(false);
342
- }
343
- if (!this.isMediaDevicesSupported) {
344
- this._logService.error('user media', `Can't get user media, this is not supported.`);
345
- this._setPermission(false);
346
- }
347
- let stream;
348
- let permission = false;
349
- try {
350
- // Will try to ask for permission
351
- stream = yield this._getAnyVideoDevice();
352
- permission = !!stream;
353
- }
354
- catch (err) {
355
- this._handlePermissionException(err);
356
- }
357
- finally {
358
- this.terminateStream(stream);
359
- }
360
- this._setPermission(permission);
361
- return permission;
362
- });
363
- }
364
- terminateStream(stream) {
365
- if (stream) {
366
- stream.getTracks().forEach((t) => t.stop());
367
- }
368
- stream = undefined;
369
- }
370
- _setPermission(permission) {
371
- this._permissionSource.next(permission);
372
- }
373
- _getAnyVideoDevice() {
374
- return navigator.mediaDevices.getUserMedia({ video: true });
375
- }
376
- _handlePermissionException(err) {
377
- console.error('user media', 'Error when asking for permission.', err);
378
- let permission = false;
379
- switch (err.name) {
380
- // usually caused by not secure origins
381
- case 'NotSupportedError':
382
- this._logService.warn('user media', err.message);
383
- // could not claim
384
- permission = false;
385
- // can't check devices
386
- this._hasDevicesSource.next(false);
387
- break;
388
- // user denied permission
389
- case 'NotAllowedError':
390
- this._logService.warn('user media', err.message);
391
- // claimed and denied permission
392
- permission = false;
393
- // this means that input devices exists
394
- this._hasDevicesSource.next(true);
395
- break;
396
- // the device has no attached input devices
397
- case 'NotFoundError':
398
- this._logService.warn('user media', err.message);
399
- // no permissions claimed
400
- permission = false;
401
- // because there was no devices
402
- this._hasDevicesSource.next(false);
403
- // tells the listener about the error
404
- this._camerasNotFoundSource.next(err);
405
- break;
406
- case 'NotReadableError':
407
- this._logService.warn('user media', `Couldn't read the device(s)'s stream, it's probably in use by another app.`);
408
- // no permissions claimed
409
- permission = false;
410
- // there are devices, which I couldn't use
411
- this._hasDevicesSource.next(false);
412
- // tells the listener about the error
413
- this._camerasNotFoundSource.next(err);
414
- break;
415
- default:
416
- this._logService.warn('user media', 'I was not able to define if I have permissions for camera or not.', err);
417
- // unknown
418
- permission = false;
419
- // this.hasDevices.next(undefined;
420
- break;
421
- }
422
- this._setPermission(permission);
423
- // tells the listener about the error
424
- this._permissionResponse.next(err);
425
- return permission;
426
- }
427
- }
428
- UserMediaBaseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UserMediaBaseService, deps: [{ token: i1.LogService }], target: i0.ɵɵFactoryTarget.Injectable });
429
- UserMediaBaseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UserMediaBaseService });
430
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UserMediaBaseService, decorators: [{
431
- type: Injectable
432
- }], ctorParameters: function () { return [{ type: i1.LogService }]; } });
433
- class WebBarcodeService {
434
- constructor(userMediaService) {
435
- this.userMediaService = userMediaService;
436
- this._device = undefined;
437
- this._codeReader = undefined;
438
- this._hints = new Map();
439
- this._scanErrorSource = new Subject();
440
- this._scanFailureSource = new Subject();
441
- this._scanCompleteSource = new Subject();
442
- this._scanSuccessSource = new Subject();
443
- this._options = {
444
- delayBetweenScanAttempts: 50,
445
- delayBetweenScanSuccess: 500
446
- };
447
- this.scanError$ = this._scanErrorSource.asObservable();
448
- this.scanFailure$ = this._scanFailureSource.asObservable();
449
- this.scanComplete$ = this._scanCompleteSource.asObservable();
450
- this.scanSuccess$ = this._scanSuccessSource.asObservable().pipe(map((c) => c.getText()));
451
- }
452
- startScan(device, videoEl, options = this._options) {
453
- // instantly stops the scan before changing devices
454
- this.scanStop();
455
- // correctly sets the new (or none) device
456
- this._device = device || undefined;
457
- this._videoEl = videoEl;
458
- this._options = options;
459
- if (!this._device) {
460
- // cleans the video because user removed the device
461
- BrowserCodeReader.cleanVideoSource(videoEl);
462
- }
463
- if (this._scanSubscription) {
464
- throw new Error('There is already a scan proccess running.');
465
- }
466
- if (!this._device) {
467
- throw new Error('No device defined, cannot start scan, please define a device.');
468
- }
469
- // if enabled, starts scanning
470
- if (device) {
471
- this.scanFromDevice(device.deviceId);
472
- }
473
- }
474
- setFormat(input) {
475
- if (typeof input === 'string') {
476
- throw new Error('Invalid formats, make sure the [formats] input is a binding.');
477
- }
478
- // formats may be set from html template as BarcodeFormat or string array
479
- const formats = input.map((f) => this.getBarcodeFormatOrFail(f));
480
- const hints = this._hints;
481
- // updates the hints
482
- hints.set(DecodeHintType.POSSIBLE_FORMATS, formats);
483
- // handles updating the codeReader
484
- this._hints = hints;
485
- }
486
- scanStop() {
487
- var _a, _b;
488
- if (this._scanSubscription) {
489
- (_a = this._codeReader) === null || _a === void 0 ? void 0 : _a.getScannerControls().stop();
490
- (_b = this._scanSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
491
- this._scanSubscription = undefined;
492
- }
493
- // this.torchCompatible.next(false);
494
- }
495
- destroy() {
496
- // @note apenas necessario por enquanto causa da Torch
497
- this.scanStop();
498
- this._codeReader = undefined;
499
- this._device = undefined;
500
- }
501
- getBarcodeFormatOrFail(format) {
502
- return typeof format === 'string' ? BarcodeFormat[format.trim().toUpperCase()] : format;
503
- }
504
- scanFromDevice(deviceId) {
505
- return __awaiter(this, void 0, void 0, function* () {
506
- const videoElement = this._videoEl;
507
- const codeReader = this.getCodeReader();
508
- const scanStream = yield codeReader.scanFromDeviceObservable(deviceId, videoElement);
509
- if (!scanStream) {
510
- throw new Error('Undefined decoding stream, aborting.');
511
- }
512
- const next = (x) => this._onDecodeResult(x.result, x.error);
513
- const error = (err) => this._onDecodeError(err);
514
- const complete = () => { };
515
- this._scanSubscription = scanStream.subscribe(next, error, complete);
516
- if (this._scanSubscription.closed) {
517
- return;
518
- }
519
- // const controls = codeReader.getScannerControls();
520
- // const hasTorchControl = typeof controls.switchTorch !== 'undefined';
521
- // this.torchCompatible.next(hasTorchControl);
522
- });
523
- }
524
- /**
525
- * Handles decode errors.
526
- */
527
- _onDecodeError(err) {
528
- this._scanErrorSource.next(err);
529
- // this.reset();
530
- }
531
- /**
532
- * Handles decode results.
533
- */
534
- _onDecodeResult(result, error) {
535
- if (result) {
536
- this._scanSuccessSource.next(result);
537
- }
538
- else {
539
- this._scanFailureSource.next(error);
540
- }
541
- if (result) {
542
- this._scanCompleteSource.next(result);
543
- }
544
- }
545
- getCodeReader() {
546
- if (!this._codeReader) {
547
- this._codeReader = new BrowserMultiFormatContinuousReader(this._hints, this._options);
548
- }
549
- return this._codeReader;
550
- }
551
- }
552
- WebBarcodeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: WebBarcodeService, deps: [{ token: UserMediaBaseService }], target: i0.ɵɵFactoryTarget.Injectable });
553
- WebBarcodeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: WebBarcodeService });
554
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: WebBarcodeService, decorators: [{
555
- type: Injectable
556
- }], ctorParameters: function () { return [{ type: UserMediaBaseService }]; } });
557
-
558
- class BarcodeReaderVideoComponent extends BaseComponent {
559
- constructor(_webBarcodeService) {
560
- super();
561
- this._webBarcodeService = _webBarcodeService;
562
- this.previewFitMode = 'fill';
563
- this.scanSuccess = new EventEmitter();
564
- this._cameraSource = new BehaviorSubject(null);
565
- }
566
- set selectedCamera(val) {
567
- this._cameraSource.next(val);
568
- }
569
- ngOnInit() {
570
- super.ngOnInit();
571
- this._setFormat(this.allFormats);
572
- this._cameraSource
573
- .asObservable()
574
- .pipe(takeUntil(this._onDestroy$), debounceTime$1(500), filter((camera) => camera != null), tap((camera) => {
575
- this._stopScan();
576
- this._startScan(camera);
577
- }))
578
- .subscribe();
579
- this._webBarcodeService.scanSuccess$.subscribe((result) => {
580
- this.scanSuccess.emit(result);
581
- });
582
- }
583
- ngOnDestroy() {
584
- super.ngOnDestroy();
585
- this._webBarcodeService.scanStop();
586
- }
587
- _setFormat(formats) {
588
- this._webBarcodeService.setFormat(formats);
589
- }
590
- _stopScan() {
591
- this._webBarcodeService.scanStop();
592
- }
593
- _startScan(camera) {
594
- if (this.videoElement) {
595
- this._webBarcodeService.startScan(camera, this.videoElement.nativeElement);
596
- }
597
- }
598
- }
599
- BarcodeReaderVideoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeReaderVideoComponent, deps: [{ token: WebBarcodeService }], target: i0.ɵɵFactoryTarget.Component });
600
- BarcodeReaderVideoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarcodeReaderVideoComponent, selector: "bdc-barcode-reader-video", inputs: { allFormats: "allFormats", previewFitMode: "previewFitMode", selectedCamera: "selectedCamera" }, outputs: { scanSuccess: "scanSuccess" }, viewQueries: [{ propertyName: "videoElement", first: true, predicate: ["videoElement"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<video #videoElement [style.object-fit]=\"previewFitMode\">\r\n <p>{{ 'BrowserNotSupport' | bbbTranslate }}</p>\r\n</video>\r\n", styles: [":host,video{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
601
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeReaderVideoComponent, decorators: [{
602
- type: Component,
603
- args: [{ selector: 'bdc-barcode-reader-video', changeDetection: ChangeDetectionStrategy.OnPush, template: "<video #videoElement [style.object-fit]=\"previewFitMode\">\r\n <p>{{ 'BrowserNotSupport' | bbbTranslate }}</p>\r\n</video>\r\n", styles: [":host,video{display:block;width:100%;height:100%}\n"] }]
604
- }], ctorParameters: function () { return [{ type: WebBarcodeService }]; }, propDecorators: { allFormats: [{
605
- type: Input
606
- }], previewFitMode: [{
607
- type: Input
608
- }], scanSuccess: [{
609
- type: Output
610
- }], videoElement: [{
611
- type: ViewChild,
612
- args: ['videoElement', { static: true }]
613
- }], selectedCamera: [{
614
- type: Input
615
- }] } });
616
-
617
- class BarcodeReaderDialogComponent extends BaseComponent {
618
- constructor(_dialogRef, _userMediaService) {
619
- var _a, _b;
620
- super();
621
- this._dialogRef = _dialogRef;
622
- this._userMediaService = _userMediaService;
623
- this.value = '';
624
- this.format = [BarcodeFormat.QR_CODE];
625
- this.loading = true;
626
- this._dialogRef.loading(true);
627
- this.barcodeFormats = (_b = (_a = this._dialogRef.data) === null || _a === void 0 ? void 0 : _a.barcodeFormats) !== null && _b !== void 0 ? _b : [];
628
- this.selectedFormat = this.barcodeFormats.length > 0 ? this.barcodeFormats[0] : BarcodeFormat.QR_CODE;
629
- }
630
- ngAfterViewInit() {
631
- super.ngAfterViewInit();
632
- this._initialize();
633
- }
634
- onDismiss() {
635
- this._dialogRef.dismiss();
636
- }
637
- onOk() {
638
- this._close();
639
- }
640
- onCameraChange(value) {
641
- this.selectedCamera = value;
642
- }
643
- onFormatChange(format) {
644
- this.selectedFormat = format;
645
- }
646
- onScanSuccess(result) {
647
- this.value = result;
648
- this._close();
649
- }
650
- onValueChanged(e) {
651
- this.value = e.target.value;
652
- }
653
- _close() {
654
- this._dialogRef.close(this.value);
655
- }
656
- _initialize() {
657
- of(true)
658
- .pipe(takeUntil(this._onDestroy$), exhaustMap(() => this._userMediaService.askForPermission()), concatMap((permission) => {
659
- if (permission) {
660
- return this._userMediaService.updateVideoInputDevices();
661
- }
662
- else {
663
- return of(true);
664
- }
665
- }), finalize(() => {
666
- this.loading = false;
667
- this._dialogRef.loading(false);
668
- }))
669
- .subscribe();
670
- this.hasDevice$ = this._userMediaService.hasDevices$;
671
- this.permission$ = this._userMediaService.permission$;
672
- this.cameras$ = this._userMediaService.cameras$.pipe(delay(0), tap((cameras) => {
673
- var _a;
674
- this.selectedCamera = (_a = cameras.find((c) => c.label.indexOf('back') > -1)) !== null && _a !== void 0 ? _a : cameras[0];
675
- }));
676
- }
677
- }
678
- BarcodeReaderDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeReaderDialogComponent, deps: [{ token: i2$3.DialogRef }, { token: UserMediaBaseService }], target: i0.ɵɵFactoryTarget.Component });
679
- BarcodeReaderDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarcodeReaderDialogComponent, selector: "bdc-barcode-reader-dialog", usesInheritance: true, ngImport: i0, template: "<fd-dialog>\r\n <fd-dialog-header>\r\n <h1 fd-title>{{ 'BarcodeReader' | bbbTranslate }} {{ selectedCamera?.label }}</h1>\r\n <button fd-dialog-close-button (click)=\"onDismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngIf=\"!loading\">\r\n <ng-container *ngIf=\"permission$ | async; else noPermission\">\r\n <ng-container *ngIf=\"hasDevice$ | async; else noDevice\">\r\n <bdc-barcode-reader-video\r\n *ngIf=\"selectedCamera\"\r\n [format]=\"format\"\r\n [selectedCamera]=\"selectedCamera\"\r\n [allFormats]=\"barcodeFormats\"\r\n (scanSuccess)=\"onScanSuccess($event)\"\r\n ></bdc-barcode-reader-video>\r\n </ng-container> </ng-container\r\n ></ng-container>\r\n <ng-template #noDevice>\r\n <p>BrowserNotSupport</p>\r\n </ng-template>\r\n <ng-template #noPermission>\r\n <p>NoPermission</p>\r\n </ng-template>\r\n </fd-dialog-body>\r\n <fd-dialog-footer>\r\n <ng-template fdTemplate=\"footer\">\r\n <ng-container *ngIf=\"cameras$ | async as cameraList\">\r\n <div fd-bar-left>\r\n <fd-select\r\n *ngIf=\"cameraList.length > 1\"\r\n [placeholder]=\"'Camera' | bbbTranslate\"\r\n (valueChange)=\"onCameraChange($event)\"\r\n [value]=\"selectedCamera\"\r\n >\r\n <fd-option *ngFor=\"let camera of cameraList\" [value]=\"camera\">{{ camera.label }}</fd-option>\r\n </fd-select>\r\n </div>\r\n <div fd-bar-right></div>\r\n </ng-container>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i5$1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i5$1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i5$1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i5$1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i4$3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i12.TemplateDirective, selector: "[fdTemplate]", inputs: ["fdTemplate"] }, { kind: "component", type: i8.SelectComponent, selector: "fd-select", inputs: ["controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "extendedBodyTemplate", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i8.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: BarcodeReaderVideoComponent, selector: "bdc-barcode-reader-video", inputs: ["allFormats", "previewFitMode", "selectedCamera"], outputs: ["scanSuccess"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
680
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeReaderDialogComponent, decorators: [{
681
- type: Component,
682
- args: [{ selector: 'bdc-barcode-reader-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-dialog>\r\n <fd-dialog-header>\r\n <h1 fd-title>{{ 'BarcodeReader' | bbbTranslate }} {{ selectedCamera?.label }}</h1>\r\n <button fd-dialog-close-button (click)=\"onDismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngIf=\"!loading\">\r\n <ng-container *ngIf=\"permission$ | async; else noPermission\">\r\n <ng-container *ngIf=\"hasDevice$ | async; else noDevice\">\r\n <bdc-barcode-reader-video\r\n *ngIf=\"selectedCamera\"\r\n [format]=\"format\"\r\n [selectedCamera]=\"selectedCamera\"\r\n [allFormats]=\"barcodeFormats\"\r\n (scanSuccess)=\"onScanSuccess($event)\"\r\n ></bdc-barcode-reader-video>\r\n </ng-container> </ng-container\r\n ></ng-container>\r\n <ng-template #noDevice>\r\n <p>BrowserNotSupport</p>\r\n </ng-template>\r\n <ng-template #noPermission>\r\n <p>NoPermission</p>\r\n </ng-template>\r\n </fd-dialog-body>\r\n <fd-dialog-footer>\r\n <ng-template fdTemplate=\"footer\">\r\n <ng-container *ngIf=\"cameras$ | async as cameraList\">\r\n <div fd-bar-left>\r\n <fd-select\r\n *ngIf=\"cameraList.length > 1\"\r\n [placeholder]=\"'Camera' | bbbTranslate\"\r\n (valueChange)=\"onCameraChange($event)\"\r\n [value]=\"selectedCamera\"\r\n >\r\n <fd-option *ngFor=\"let camera of cameraList\" [value]=\"camera\">{{ camera.label }}</fd-option>\r\n </fd-select>\r\n </div>\r\n <div fd-bar-right></div>\r\n </ng-container>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n" }]
683
- }], ctorParameters: function () { return [{ type: i2$3.DialogRef }, { type: UserMediaBaseService }]; } });
684
-
685
- class BarcodeReaderComponent extends UiMoInfoSubFormUiComponent {
686
- constructor() {
687
- super(...arguments);
688
- this.size = 'large';
689
- }
690
- ngOnInit() {
691
- var _a;
692
- super.ngOnInit();
693
- this.barcodeValue = this.context.Setting.FormPanelSetting.Data.Mo.Value;
694
- const format = (_a = this.context.Setting.CustomFieldInfo) === null || _a === void 0 ? void 0 : _a.Format;
695
- if (format) {
696
- this.barcodeFormat = format
697
- .split(',')
698
- .filter((c) => c)
699
- .map((c) => Number(c) - 1);
700
- }
701
- this.size = BarsaApi.Bw.GetWindowSize();
702
- }
703
- onOpenBarcodeReader() {
704
- const data = { barcodeFormats: this.barcodeFormat };
705
- const dialogRef = this._dialogService.open(BarcodeReaderDialogComponent, {
706
- data,
707
- fullScreen: this.isMobileDevice ? false : true,
708
- verticalPadding: true,
709
- responsivePadding: true,
710
- mobile: this.isMobileDevice,
711
- mobileOuterSpacing: true
712
- });
713
- dialogRef.afterClosed.pipe(takeUntil(this._onDestroy$)).subscribe((value) => {
714
- if (value) {
715
- this._setFieldValue(value);
716
- }
717
- });
718
- }
719
- onValueChange(e) {
720
- this._setFieldValue(e.target.value);
721
- }
722
- _addFormControl(formControl) {
723
- this.customFormPanelUi = formControl;
724
- }
725
- _setFieldValue(value) {
726
- this.barcodeValue = value;
727
- const valueCustomFieldUi = this.context.formControl._dictFieldUi.Value;
728
- valueCustomFieldUi.value = value;
729
- valueCustomFieldUi.fireEvent('change', value);
730
- }
731
- }
732
- BarcodeReaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeReaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
733
- BarcodeReaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarcodeReaderComponent, selector: "bdc-barcode-reader", usesInheritance: true, ngImport: i0, template: "<!-- <fd-input-group\n placement=\"after\"\n glyph=\"camera\"\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\n [button]=\"true\"\n ariaLabelledBy=\"fd-input-group-button-label-2\"\n (addOnButtonClicked)=\"onOpenBarcodeReader()\"\n (input)=\"onValueChange($event)\"\n>\n</fd-input-group> -->\n\n<fdp-input-group\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\n [value]=\"barcodeValue\"\n (input)=\"onValueChange($event)\"\n [name]=\"'barcode_' + id\"\n [disabled]=\"(disableOrReadonly$ | async)!!\"\n>\n <fdp-input-group-input type=\"text\"></fdp-input-group-input>\n <fdp-input-group-addon>\n <fdp-button glyph=\"camera\" (click)=\"onOpenBarcodeReader()\"></fdp-button>\n </fdp-input-group-addon>\n</fdp-input-group>\n", styles: [""], dependencies: [{ kind: "component", type: i1$2.InputGroupComponent, selector: "fdp-input-group", inputs: ["value"] }, { kind: "component", type: i1$2.InputGroupAddonComponent, selector: "fdp-input-group-addon" }, { kind: "component", type: i1$2.InputGroupInputComponent, selector: "fdp-input-group-input", inputs: ["type"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
734
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeReaderComponent, decorators: [{
735
- type: Component,
736
- args: [{ selector: 'bdc-barcode-reader', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <fd-input-group\n placement=\"after\"\n glyph=\"camera\"\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\n [button]=\"true\"\n ariaLabelledBy=\"fd-input-group-button-label-2\"\n (addOnButtonClicked)=\"onOpenBarcodeReader()\"\n (input)=\"onValueChange($event)\"\n>\n</fd-input-group> -->\n\n<fdp-input-group\n [placeholder]=\"'BarcodeReader' | bbbTranslate\"\n [value]=\"barcodeValue\"\n (input)=\"onValueChange($event)\"\n [name]=\"'barcode_' + id\"\n [disabled]=\"(disableOrReadonly$ | async)!!\"\n>\n <fdp-input-group-input type=\"text\"></fdp-input-group-input>\n <fdp-input-group-addon>\n <fdp-button glyph=\"camera\" (click)=\"onOpenBarcodeReader()\"></fdp-button>\n </fdp-input-group-addon>\n</fdp-input-group>\n" }]
737
- }] });
738
-
739
- class UiPersonPipe {
740
- transform(value) {
741
- let transform;
742
- switch (value) {
743
- case 'FirstName':
744
- transform = 'نام';
745
- break;
746
- case 'LastName':
747
- transform = 'نام خانوادگی';
748
- break;
749
- case 'NationalCode':
750
- transform = 'کد ملی';
751
- break;
752
- case 'FatherName':
753
- transform = 'نام پدر';
754
- break;
755
- case 'Birthplace':
756
- transform = 'محل تولد';
757
- break;
758
- case 'Mobile':
759
- transform = 'محل تولد';
760
- break;
761
- default:
762
- transform = '';
763
- break;
764
- }
765
- return transform;
766
- }
767
- }
768
- UiPersonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPersonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
769
- UiPersonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: UiPersonPipe, name: "uiPerson" });
770
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPersonPipe, decorators: [{
771
- type: Pipe,
772
- args: [{
773
- name: 'uiPerson'
774
- }]
775
- }] });
776
-
777
- class UiPersonComponent extends FieldBaseComponent {
778
- constructor() {
779
- super(...arguments);
780
- this.searchResult = [];
781
- this.personCollection = [
782
- {
783
- Id: 1,
784
- FirstName: 'zahra',
785
- LastName: 'darbandy',
786
- FatherName: 'ali',
787
- Birthplace: 'yazd',
788
- NationalCode: '123456789'
789
- },
790
- {
791
- Id: 2,
792
- FirstName: 'ali',
793
- LastName: 'kafdary',
794
- FatherName: 'reza',
795
- Birthplace: 'shiraz',
796
- NationalCode: '754123659'
797
- },
798
- {
799
- Id: 3,
800
- FirstName: 'sara',
801
- LastName: 'rezaee',
802
- FatherName: 'ali',
803
- Birthplace: 'tehran',
804
- NationalCode: '123456789'
805
- },
806
- {
807
- Id: 4,
808
- FirstName: 'علی',
809
- LastName: 'خزایی',
810
- FatherName: 'کمال',
811
- Birthplace: 'اصفهان',
812
- NationalCode: '452145698'
813
- },
814
- {
815
- Id: 5,
816
- FirstName: 'vahid',
817
- LastName: 'alipor',
818
- FatherName: 'ali',
819
- Birthplace: 'shiraz',
820
- NationalCode: '756982456'
821
- },
822
- {
823
- Id: 6,
824
- FirstName: 'mohammad',
825
- LastName: 'kamali',
826
- FatherName: 'vahid',
827
- Birthplace: 'ahvaz',
828
- NationalCode: '32165897'
829
- }
830
- ];
831
- this.onClose$ = new Subject();
832
- }
833
- ngOnInit() {
834
- super.ngOnInit();
835
- this.value = {
836
- Id: 5,
837
- FirstName: 'وحید',
838
- LastName: 'علیپور',
839
- FatherName: 'علی',
840
- Birthplace: 'شیراز',
841
- NationalCode: '756982456',
842
- Mobile: '09175623898'
843
- };
844
- this.onClose$.pipe().subscribe(() => {
845
- // console.log('closed');
846
- });
847
- }
848
- ngAfterViewInit() {
849
- super.ngAfterViewInit();
850
- this.onClose$ = this.popoverBodyDom.onClose;
851
- }
852
- filter() {
853
- this.searchResult = this.personCollection.filter((person) => {
854
- var _a, _b, _c;
855
- return person.FirstName.toLowerCase().includes(((_a = this.filterItems) === null || _a === void 0 ? void 0 : _a.FirstName.toLowerCase()) || '') &&
856
- person.LastName.toLowerCase().includes(((_b = this.filterItems) === null || _b === void 0 ? void 0 : _b.LastName.toLowerCase()) || '') &&
857
- person.NationalCode.toString().includes(((_c = this.filterItems) === null || _c === void 0 ? void 0 : _c.NationalCode.toString()) || '');
858
- });
859
- }
860
- select(person) {
861
- this.selectedPerson = person;
862
- }
863
- confirm() {
864
- var _a;
865
- this.value = (_a = this.selectedPerson) !== null && _a !== void 0 ? _a : this.value;
866
- this.valueChange.emit(this.value);
867
- this.close();
868
- }
869
- close() {
870
- this.dialogRef.close();
871
- this.selectedPerson = null;
872
- }
873
- openDialog(template) {
874
- this.resetTable();
875
- this.dialogRef = this._dialogService.open(template, {
876
- minHeight: '500px',
877
- minWidth: '700px',
878
- maxHeight: '1000px',
879
- maxWidth: '1500px',
880
- draggable: true,
881
- resizable: true,
882
- verticalPadding: false
883
- });
884
- this.dialogRef.loading(true);
885
- setTimeout(() => this.dialogRef.loading(false), 500);
886
- }
887
- resetTable() {
888
- this.filterItems = { FirstName: '', LastName: '', NationalCode: '' };
889
- this.filter();
890
- }
891
- edit() { }
892
- delete() {
893
- this.value = null;
894
- this.valueChange.emit(this.value);
895
- }
896
- openPopover() {
897
- if (!this.isPopoverOpened && this.value) {
898
- setTimeout(() => {
899
- this.popoverDom.open();
900
- }, 1000);
901
- }
902
- }
903
- openChange(isOpen) {
904
- this.isPopoverOpened = isOpen;
905
- }
906
- }
907
- UiPersonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPersonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
908
- UiPersonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPersonComponent, selector: "bdc-ui-person", viewQueries: [{ propertyName: "popoverDom", first: true, predicate: ["popover"], descendants: true }, { propertyName: "popoverBodyDom", first: true, predicate: PopoverBodyComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-popover [fillControlMode]=\"'equal'\" #popover (isOpenChange)=\"openChange($event)\">\r\n <fd-popover-control>\r\n <ul fd-list [compact]=\"true\">\r\n <li fd-list-item>\r\n <div fd-list-content>\r\n <div class=\"control-content\" (mouseover)=\"openPopover()\">\r\n <fd-icon glyph=\"person-placeholder\"></fd-icon>\r\n <div>\r\n <span>{{ value?.FirstName }}</span>\r\n </div>\r\n <div>\r\n <span>{{ value?.LastName }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"value; else selectButton\">\r\n <button fd-button fdType=\"transparent\" glyph=\"user-edit\" (click)=\"edit()\"></button>\r\n <button fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"delete()\"></button>\r\n </ng-container>\r\n <ng-template #selectButton>\r\n <button\r\n fd-button\r\n label=\"\u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062E\u0635\"\r\n fdType=\"transparent\"\r\n (click)=\"openDialog(dialogTemplate)\"\r\n ></button>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </fd-popover-control>\r\n <fd-popover-body *ngIf=\"value\" #popoverBody>\r\n <div class=\"resize-quick-view\">\r\n <fd-card cardType=\"quickView\">\r\n <fd-card-content>\r\n <fd-quick-view [id]=\"value.id\">\r\n <fd-quick-view-subheader>\r\n <fd-icon glyph=\"user\"></fd-icon>\r\n <fd-quick-view-subheader-title> \u0645\u0634\u062E\u0635\u0627\u062A </fd-quick-view-subheader-title>\r\n </fd-quick-view-subheader>\r\n\r\n <fd-quick-view-group>\r\n <fd-quick-view-group-item *ngFor=\"let item of value | keyvalue\">\r\n <div *ngIf=\"item.key !== 'Id'\" class=\"popover-body-item\">\r\n <fd-quick-view-group-item-label>\r\n {{ (item.key | uiPerson) + ':' }}\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n <ng-container [ngSwitch]=\"item.value\">\r\n <a\r\n *ngSwitchCase=\"\r\n item.key === 'Mobile' || item.key === 'Phone' ? item.key : ''\r\n \"\r\n [href]=\"'tel:' + item.value\"\r\n [innerText]=\"item.value\"\r\n fd-link\r\n ></a>\r\n <a\r\n *ngSwitchCase=\"'Email'\"\r\n [href]=\"'mailto:' + item.value\"\r\n [innerText]=\"item.value\"\r\n fd-link\r\n ></a>\r\n <div *ngSwitchDefault [innerText]=\"item.value\"></div>\r\n </ng-container>\r\n </fd-quick-view-group-item-content>\r\n </div>\r\n </fd-quick-view-group-item>\r\n </fd-quick-view-group>\r\n </fd-quick-view>\r\n </fd-card-content>\r\n </fd-card>\r\n </div>\r\n </fd-popover-body>\r\n</fd-popover>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 fd-title>\u062C\u0633\u062A\u062C\u0648\u06CC \u0634\u062E\u0635</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss('Close button')\"></button>\r\n </fd-dialog-header>\r\n\r\n <fd-dialog-body>\r\n <div class=\"filter\" (keydown.enter)=\"filter()\">\r\n <div fd-form-item>\r\n <label fd-form-label for=\"name\">\u0646\u0627\u0645</label>\r\n <input fd-form-control id=\"name\" [(ngModel)]=\"filterItems.FirstName\" />\r\n </div>\r\n <div fd-form-item>\r\n <label fd-form-label for=\"last-name\">\u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC</label>\r\n <input fd-form-control id=\"last-name\" [(ngModel)]=\"filterItems.LastName\" />\r\n </div>\r\n <div fd-form-item>\r\n <label fd-form-label for=\"national-code\">\u06A9\u062F\u0645\u0644\u06CC</label>\r\n <input fd-form-control id=\"national-code\" [(ngModel)]=\"filterItems.NationalCode\" />\r\n </div>\r\n\r\n <fd-button-bar fd-initial-focus fdType=\"emphasized\" label=\"\u062C\u0633\u062A\u062C\u0648\" (click)=\"filter()\"> </fd-button-bar>\r\n </div>\r\n\r\n <table fd-table [noBorderX]=\"true\" [noBorderY]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>\u0646\u0627\u0645</th>\r\n <th fd-table-cell>\u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC</th>\r\n <th fd-table-cell>\u06A9\u062F \u0645\u0644\u06CC</th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n <tr\r\n *ngFor=\"let person of searchResult\"\r\n (click)=\"select(person)\"\r\n [class.selected]=\"selectedPerson?.Id === person?.Id\"\r\n fd-table-row\r\n >\r\n <td fd-table-cell>\r\n {{ person.FirstName }}\r\n </td>\r\n <td fd-table-cell>{{ person.LastName }}</td>\r\n <td fd-table-cell>{{ person.NationalCode }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdTemplate=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar fdType=\"emphasized\" label=\"\u062A\u0627\u06CC\u06CC\u062F\" (click)=\"confirm()\"> </fd-button-bar>\r\n <fd-button-bar fd-initial-focus label=\"\u0627\u0646\u0635\u0631\u0627\u0641\" (click)=\"close()\"> </fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;width:100%}::ng-deep .fd-dialog__body{padding:10px 15px!important}::ng-deep .fd-dialog__body .filter{display:flex;column-gap:5px;align-items:flex-end}::ng-deep .fd-dialog__body .filter fd-button-bar{margin-bottom:5px}::ng-deep .fd-dialog__body table{margin-top:25px}::ng-deep .fd-dialog__body table tr:hover{background-color:#f0f5f8}::ng-deep .fd-dialog__body table .selected{background-color:#d0e5ef}::ng-deep .popover-body-item{display:flex;column-gap:5px;align-items:center}::ng-deep .popover-body-item fd-quick-view-group-item-label .fd-form-label__wrapper{padding-left:0}fd-popover{flex:1}fd-popover fd-popover-body{width:300px}li{height:1.625rem!important;min-height:1.625rem!important;display:flex;margin-top:.1875rem!important;margin-bottom:.25rem!important;border:.0625rem solid #89919a!important;padding-left:0}li .fd-list__content{flex:1}li .fd-list__content .control-content{display:flex;column-gap:5px;margin-top:2px;width:-moz-fit-content;width:fit-content}li .fd-list__content .control-content div{margin-top:2px}li .fd-list__content .control-content fd-icon{margin-left:5px}li .fd-list__content .control-content:hover>*{color:#062b42;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i4$2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4$4.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i5$2.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i7.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i7.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "component", type: i7.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i7.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i8$1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i8$2.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i8$2.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i8$2.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "directive", type: i8$2.DeprecatedListContentDensityDirective, selector: "[fd-list][compact], [fdList][compact]" }, { kind: "component", type: i5$1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i5$1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i5$1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i5$1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i4$3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i12.TemplateDirective, selector: "[fdTemplate]", inputs: ["fdTemplate"] }, { kind: "directive", type: i12.InitialFocusDirective, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: ["fd-initial-focus", "enabled", "focusLastElement"] }, { kind: "component", type: i8$3.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i8$3.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i8$3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i4$5.QuickViewComponent, selector: "fd-quick-view", inputs: ["id"] }, { kind: "component", type: i4$5.QuickViewSubheaderComponent, selector: "fd-quick-view-subheader" }, { kind: "component", type: i4$5.QuickViewSubheaderTitleComponent, selector: "fd-quick-view-subheader-title" }, { kind: "component", type: i4$5.QuickViewGroupComponent, selector: "fd-quick-view-group" }, { kind: "component", type: i4$5.QuickViewGroupItemComponent, selector: "fd-quick-view-group-item", inputs: ["id"] }, { kind: "component", type: i4$5.QuickViewGroupItemLabelComponent, selector: "fd-quick-view-group-item-label" }, { kind: "component", type: i4$5.QuickViewGroupItemContentComponent, selector: "fd-quick-view-group-item-content" }, { kind: "component", type: i4$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i4$6.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i4$6.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i4$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i4$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: UiPersonPipe, name: "uiPerson" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
909
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPersonComponent, decorators: [{
910
- type: Component,
911
- args: [{ selector: 'bdc-ui-person', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-popover [fillControlMode]=\"'equal'\" #popover (isOpenChange)=\"openChange($event)\">\r\n <fd-popover-control>\r\n <ul fd-list [compact]=\"true\">\r\n <li fd-list-item>\r\n <div fd-list-content>\r\n <div class=\"control-content\" (mouseover)=\"openPopover()\">\r\n <fd-icon glyph=\"person-placeholder\"></fd-icon>\r\n <div>\r\n <span>{{ value?.FirstName }}</span>\r\n </div>\r\n <div>\r\n <span>{{ value?.LastName }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"value; else selectButton\">\r\n <button fd-button fdType=\"transparent\" glyph=\"user-edit\" (click)=\"edit()\"></button>\r\n <button fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"delete()\"></button>\r\n </ng-container>\r\n <ng-template #selectButton>\r\n <button\r\n fd-button\r\n label=\"\u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062E\u0635\"\r\n fdType=\"transparent\"\r\n (click)=\"openDialog(dialogTemplate)\"\r\n ></button>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </fd-popover-control>\r\n <fd-popover-body *ngIf=\"value\" #popoverBody>\r\n <div class=\"resize-quick-view\">\r\n <fd-card cardType=\"quickView\">\r\n <fd-card-content>\r\n <fd-quick-view [id]=\"value.id\">\r\n <fd-quick-view-subheader>\r\n <fd-icon glyph=\"user\"></fd-icon>\r\n <fd-quick-view-subheader-title> \u0645\u0634\u062E\u0635\u0627\u062A </fd-quick-view-subheader-title>\r\n </fd-quick-view-subheader>\r\n\r\n <fd-quick-view-group>\r\n <fd-quick-view-group-item *ngFor=\"let item of value | keyvalue\">\r\n <div *ngIf=\"item.key !== 'Id'\" class=\"popover-body-item\">\r\n <fd-quick-view-group-item-label>\r\n {{ (item.key | uiPerson) + ':' }}\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n <ng-container [ngSwitch]=\"item.value\">\r\n <a\r\n *ngSwitchCase=\"\r\n item.key === 'Mobile' || item.key === 'Phone' ? item.key : ''\r\n \"\r\n [href]=\"'tel:' + item.value\"\r\n [innerText]=\"item.value\"\r\n fd-link\r\n ></a>\r\n <a\r\n *ngSwitchCase=\"'Email'\"\r\n [href]=\"'mailto:' + item.value\"\r\n [innerText]=\"item.value\"\r\n fd-link\r\n ></a>\r\n <div *ngSwitchDefault [innerText]=\"item.value\"></div>\r\n </ng-container>\r\n </fd-quick-view-group-item-content>\r\n </div>\r\n </fd-quick-view-group-item>\r\n </fd-quick-view-group>\r\n </fd-quick-view>\r\n </fd-card-content>\r\n </fd-card>\r\n </div>\r\n </fd-popover-body>\r\n</fd-popover>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 fd-title>\u062C\u0633\u062A\u062C\u0648\u06CC \u0634\u062E\u0635</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss('Close button')\"></button>\r\n </fd-dialog-header>\r\n\r\n <fd-dialog-body>\r\n <div class=\"filter\" (keydown.enter)=\"filter()\">\r\n <div fd-form-item>\r\n <label fd-form-label for=\"name\">\u0646\u0627\u0645</label>\r\n <input fd-form-control id=\"name\" [(ngModel)]=\"filterItems.FirstName\" />\r\n </div>\r\n <div fd-form-item>\r\n <label fd-form-label for=\"last-name\">\u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC</label>\r\n <input fd-form-control id=\"last-name\" [(ngModel)]=\"filterItems.LastName\" />\r\n </div>\r\n <div fd-form-item>\r\n <label fd-form-label for=\"national-code\">\u06A9\u062F\u0645\u0644\u06CC</label>\r\n <input fd-form-control id=\"national-code\" [(ngModel)]=\"filterItems.NationalCode\" />\r\n </div>\r\n\r\n <fd-button-bar fd-initial-focus fdType=\"emphasized\" label=\"\u062C\u0633\u062A\u062C\u0648\" (click)=\"filter()\"> </fd-button-bar>\r\n </div>\r\n\r\n <table fd-table [noBorderX]=\"true\" [noBorderY]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>\u0646\u0627\u0645</th>\r\n <th fd-table-cell>\u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC</th>\r\n <th fd-table-cell>\u06A9\u062F \u0645\u0644\u06CC</th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n <tr\r\n *ngFor=\"let person of searchResult\"\r\n (click)=\"select(person)\"\r\n [class.selected]=\"selectedPerson?.Id === person?.Id\"\r\n fd-table-row\r\n >\r\n <td fd-table-cell>\r\n {{ person.FirstName }}\r\n </td>\r\n <td fd-table-cell>{{ person.LastName }}</td>\r\n <td fd-table-cell>{{ person.NationalCode }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdTemplate=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar fdType=\"emphasized\" label=\"\u062A\u0627\u06CC\u06CC\u062F\" (click)=\"confirm()\"> </fd-button-bar>\r\n <fd-button-bar fd-initial-focus label=\"\u0627\u0646\u0635\u0631\u0627\u0641\" (click)=\"close()\"> </fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;width:100%}::ng-deep .fd-dialog__body{padding:10px 15px!important}::ng-deep .fd-dialog__body .filter{display:flex;column-gap:5px;align-items:flex-end}::ng-deep .fd-dialog__body .filter fd-button-bar{margin-bottom:5px}::ng-deep .fd-dialog__body table{margin-top:25px}::ng-deep .fd-dialog__body table tr:hover{background-color:#f0f5f8}::ng-deep .fd-dialog__body table .selected{background-color:#d0e5ef}::ng-deep .popover-body-item{display:flex;column-gap:5px;align-items:center}::ng-deep .popover-body-item fd-quick-view-group-item-label .fd-form-label__wrapper{padding-left:0}fd-popover{flex:1}fd-popover fd-popover-body{width:300px}li{height:1.625rem!important;min-height:1.625rem!important;display:flex;margin-top:.1875rem!important;margin-bottom:.25rem!important;border:.0625rem solid #89919a!important;padding-left:0}li .fd-list__content{flex:1}li .fd-list__content .control-content{display:flex;column-gap:5px;margin-top:2px;width:-moz-fit-content;width:fit-content}li .fd-list__content .control-content div{margin-top:2px}li .fd-list__content .control-content fd-icon{margin-left:5px}li .fd-list__content .control-content:hover>*{color:#062b42;font-weight:700}\n"] }]
912
- }], propDecorators: { popoverDom: [{
913
- type: ViewChild,
914
- args: ['popover']
915
- }], popoverBodyDom: [{
916
- type: ViewChild,
917
- args: [PopoverBodyComponent]
918
- }] } });
919
-
920
- class LoginSocialConncetionsComponent extends ReportBaseComponent {
921
- constructor(_ulvMainService, _portalService, reportValuePipe) {
922
- super(_portalService, _ulvMainService);
923
- this._ulvMainService = _ulvMainService;
924
- this._portalService = _portalService;
925
- this.reportValuePipe = reportValuePipe;
926
- this.rtl = BarsaApi.LoginFormData.IsRtl;
927
- }
928
- onClick(mo) {
929
- const provider = this.reportValuePipe.transform('Name', mo, this.allColumns, true);
930
- const returnUrl = encodeURIComponent(window.location.href);
931
- BarsaApi.Bw.NavigateTo(`/api/openId/signin?provider=${provider}&returnUrl=${returnUrl}`);
932
- }
933
- }
934
- LoginSocialConncetionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginSocialConncetionsComponent, deps: [{ token: i1.UlvMainService }, { token: i1.PortalService }, { token: i1.MoReportValuePipe }], target: i0.ɵɵFactoryTarget.Component });
935
- LoginSocialConncetionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: LoginSocialConncetionsComponent, selector: "bdc-login-social-conncetions", host: { properties: { "attr.rtl": "this.rtl" } }, usesInheritance: true, ngImport: i0, template: "<button\r\n *ngFor=\"let mo of moDataList$ | async\"\r\n fd-button\r\n [label]=\"'Display Text' | rval: mo:allColumns\"\r\n [fdType]=\"'FdType' | rval: mo:allColumns:true\"\r\n (click)=\"onClick(mo)\"\r\n>\r\n <img\r\n style=\"max-width: 28px\"\r\n [src]=\"('Logo' | rval: mo:allColumns)?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n />\r\n</button>\r\n", styles: [":host{display:flex;flex-wrap:wrap;width:100%;justify-content:stretch;margin-top:1rem;column-gap:5px;row-gap:5px}button{flex-grow:1;flex-direction:row-reverse}button img{padding:5px}fd-toolbar{width:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
936
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginSocialConncetionsComponent, decorators: [{
937
- type: Component,
938
- args: [{ selector: 'bdc-login-social-conncetions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n *ngFor=\"let mo of moDataList$ | async\"\r\n fd-button\r\n [label]=\"'Display Text' | rval: mo:allColumns\"\r\n [fdType]=\"'FdType' | rval: mo:allColumns:true\"\r\n (click)=\"onClick(mo)\"\r\n>\r\n <img\r\n style=\"max-width: 28px\"\r\n [src]=\"('Logo' | rval: mo:allColumns)?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n />\r\n</button>\r\n", styles: [":host{display:flex;flex-wrap:wrap;width:100%;justify-content:stretch;margin-top:1rem;column-gap:5px;row-gap:5px}button{flex-grow:1;flex-direction:row-reverse}button img{padding:5px}fd-toolbar{width:100%}\n"] }]
939
- }], ctorParameters: function () { return [{ type: i1.UlvMainService }, { type: i1.PortalService }, { type: i1.MoReportValuePipe }]; }, propDecorators: { rtl: [{
940
- type: HostBinding,
941
- args: ['attr.rtl']
942
- }] } });
943
-
944
- class LoginFormComponent extends FormBaseComponent {
945
- constructor() {
946
- super(...arguments);
947
- this._desktopmode = !getDeviceIsMobile();
948
- this.onKeyEnter = (_) => {
949
- const layoutItem = this._controlUiPipe.transform(' ورود', this.layout94);
950
- if (layoutItem) {
951
- layoutItem.FieldUi.fireEvent('click', layoutItem.FieldUi);
952
- }
953
- };
954
- }
955
- ngOnInit() {
956
- this._activatedRoute.queryParams.pipe(takeUntil(this._onDestroy$)).subscribe((params) => {
957
- BarsaApi.Bw.SetCultureByDisplayName(params.culture);
958
- });
959
- const root = document.documentElement;
960
- root.style.setProperty('--absolute-page-top', '0px');
961
- super.ngOnInit();
962
- this.layout94$.subscribe((layout94) => {
963
- this.layout94 = layout94;
964
- });
965
- this.size$ = this._portalService.deviceSize$.pipe(map((deviceSize) => {
966
- switch (deviceSize) {
967
- case 's':
968
- return 'sm';
969
- case 'm':
970
- return 'md';
971
- default:
972
- return 'xl';
973
- }
974
- }));
975
- }
976
- }
977
- LoginFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
978
- LoginFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: LoginFormComponent, selector: "bdc-login-form", host: { listeners: { "keydown.enter": "onKeyEnter($event)" }, properties: { "class.desktopmode": "this._desktopmode" } }, providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mo$ | async as mo\">\n <bsu-mask *ngIf=\"mo.IsLogging\"></bsu-mask>\n <fd-layout-grid *ngIf=\"(size$ | async) === 'sm'; else sideContent\" [class.mobile]=\"isMobile\">\n <div [fdLayoutGridCol]=\"1\"></div>\n\n <div [fdLayoutGridCol]=\"10\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n [class.desktopMode]=\"!(isMobile === true)\"\n ></bsu-ly-layout-container-of-root>\n </div>\n\n <div [fdLayoutGridCol]=\"1\"></div>\n </fd-layout-grid>\n <ng-template #sideContent>\n <fd-dynamic-side-content [size]=\"(size$ | async)!!\">\n <fd-dynamic-side-content-side>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </fd-dynamic-side-content-side>\n <fd-dynamic-side-content-main>\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\n <bsu-layout-control\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\n [config]=\"layoutConfig\"\n [showLabel]=\"false\"\n [inlineEdit]=\"true\"\n \n ></bsu-layout-control>\n </ng-container> -->\n <div\n *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\"\n id=\"bgLogin\"\n [style.backgroundImage]=\"\n 'url(' +\n (mo.Background?.FileId\n | picFieldSrc: 'PictureFileInfo':null:layoutConfig.FieldUi.Setting.FieldDefId) +\n ')'\n \"\n ></div>\n </fd-dynamic-side-content-main>\n </fd-dynamic-side-content>\n </ng-template>\n</ng-container>\n", styles: ["@charset \"UTF-8\";:host{display:block;background-color:#fff}:host ::ng-deep bsu-ly-simple-label{text-align:center}:host ::ng-deep bsu-ly-simple-label:nth-of-type(1){margin-top:15px}:host ::ng-deep bsu-ui-picture-file{text-align:center}:host ::ng-deep .wrap-content>.container-field{max-width:100%!important}fd-dynamic-side-content{min-height:100vh}fd-dynamic-side-content-side{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}bsu-ly-layout-container-of-root{padding:0 1rem;box-sizing:border-box;display:flex;align-items:center;height:100%}#bgLogin{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}@media (max-width: 599px){:host ::ng-deep bsu-layout-control{min-width:auto!important}:host ::ng-deep bsu-ly-layout-container-of-root{padding:0}}@media (max-height: 670px){:host.desktopmode bsu-ly-layout-container-of-root{padding:0}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-ly-empty-space{display:none}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-layout-control[caption=\\644\\648\\6af\\648]{display:none}}fd-layout-grid.mobile{overflow:auto;height:100vh}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i3$2.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i3$2.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i4$1.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i4$1.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i4$1.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "component", type: i5$3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i5$3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
979
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginFormComponent, decorators: [{
980
- type: Component,
981
- args: [{ selector: 'bdc-login-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "<ng-container *ngIf=\"mo$ | async as mo\">\n <bsu-mask *ngIf=\"mo.IsLogging\"></bsu-mask>\n <fd-layout-grid *ngIf=\"(size$ | async) === 'sm'; else sideContent\" [class.mobile]=\"isMobile\">\n <div [fdLayoutGridCol]=\"1\"></div>\n\n <div [fdLayoutGridCol]=\"10\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n [class.desktopMode]=\"!(isMobile === true)\"\n ></bsu-ly-layout-container-of-root>\n </div>\n\n <div [fdLayoutGridCol]=\"1\"></div>\n </fd-layout-grid>\n <ng-template #sideContent>\n <fd-dynamic-side-content [size]=\"(size$ | async)!!\">\n <fd-dynamic-side-content-side>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </fd-dynamic-side-content-side>\n <fd-dynamic-side-content-main>\n <!-- <ng-container *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\">\n <bsu-layout-control\n [caption]=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647'\"\n [config]=\"layoutConfig\"\n [showLabel]=\"false\"\n [inlineEdit]=\"true\"\n \n ></bsu-layout-control>\n </ng-container> -->\n <div\n *ngIf=\"'\u0639\u06A9\u0633 \u067E\u0633 \u0632\u0645\u06CC\u0646\u0647' | controlUi: layout94 as layoutConfig\"\n id=\"bgLogin\"\n [style.backgroundImage]=\"\n 'url(' +\n (mo.Background?.FileId\n | picFieldSrc: 'PictureFileInfo':null:layoutConfig.FieldUi.Setting.FieldDefId) +\n ')'\n \"\n ></div>\n </fd-dynamic-side-content-main>\n </fd-dynamic-side-content>\n </ng-template>\n</ng-container>\n", styles: ["@charset \"UTF-8\";:host{display:block;background-color:#fff}:host ::ng-deep bsu-ly-simple-label{text-align:center}:host ::ng-deep bsu-ly-simple-label:nth-of-type(1){margin-top:15px}:host ::ng-deep bsu-ui-picture-file{text-align:center}:host ::ng-deep .wrap-content>.container-field{max-width:100%!important}fd-dynamic-side-content{min-height:100vh}fd-dynamic-side-content-side{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}bsu-ly-layout-container-of-root{padding:0 1rem;box-sizing:border-box;display:flex;align-items:center;height:100%}#bgLogin{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}@media (max-width: 599px){:host ::ng-deep bsu-layout-control{min-width:auto!important}:host ::ng-deep bsu-ly-layout-container-of-root{padding:0}}@media (max-height: 670px){:host.desktopmode bsu-ly-layout-container-of-root{padding:0}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-ly-empty-space{display:none}:host.desktopmode bsu-ly-layout-container-of-root ::ng-deep bsu-layout-control[caption=\\644\\648\\6af\\648]{display:none}}fd-layout-grid.mobile{overflow:auto;height:100vh}\n"] }]
982
- }], propDecorators: { _desktopmode: [{
983
- type: HostBinding,
984
- args: ['class.desktopmode']
985
- }], onKeyEnter: [{
986
- type: HostListener,
987
- args: ['keydown.enter', ['$event']]
988
- }] } });
989
-
990
- class ServiceDeskHeaderComponent extends TilesViewerContainerComponent {
991
- constructor(_portalService, _tilesService, _tilesViewerService, _renderer, _viewportScroller, _cdr, _router, _activatedRoute) {
992
- super(_portalService, _tilesService, _tilesViewerService);
993
- this._portalService = _portalService;
994
- this._tilesService = _tilesService;
995
- this._tilesViewerService = _tilesViewerService;
996
- this._renderer = _renderer;
997
- this._viewportScroller = _viewportScroller;
998
- this._cdr = _cdr;
999
- this._router = _router;
1000
- this._activatedRoute = _activatedRoute;
1001
- this.selectedTabIndex = 0;
1002
- this.heightOfSpaceHolder = 88;
1003
- this.searchTerm = '';
1004
- this._enableScroll = false;
1005
- this._stickyTopPosition = 66;
1006
- this.observerList = [];
1007
- this.appGroups = [];
1008
- const root = document.documentElement;
1009
- root.style.setProperty('--absolute-page-top', this._stickyTopPosition + 'px');
1010
- }
1011
- ngOnInit() {
1012
- super.ngOnInit();
1013
- this._portalService.searchTerm$.pipe(takeUntil$1(this._onDestroy$)).subscribe((term) => {
1014
- this.searchTerm = term;
1015
- this._cdr.detectChanges();
1016
- });
1017
- this.appTileGroups$.subscribe((appTileGroups) => {
1018
- appTileGroups.forEach((c) => this._tilesViewerService.loadAppGroup(c));
1019
- this.appGroups = appTileGroups;
1020
- });
1021
- this._renderer.setStyle(this.navHolder.nativeElement, 'top', this._stickyTopPosition + 'px');
1022
- this.setGridTemplateRows(this.heightOfSpaceHolder);
1023
- this.deviceSize$ = this._portalService.deviceSize$;
1024
- this._portalService.deviceSize$.subscribe((c) => {
1025
- let newHeight = this.heightOfSpaceHolder;
1026
- this.tabSize = c;
1027
- if (c === 's') {
1028
- newHeight = 88;
1029
- }
1030
- else if (c === 'm') {
1031
- newHeight = 220;
1032
- }
1033
- else if (c === 'l') {
1034
- newHeight = 250;
1035
- }
1036
- else {
1037
- newHeight = 325;
1038
- }
1039
- newHeight = 88;
1040
- if (this.heightOfSpaceHolder !== newHeight) {
1041
- this.heightOfSpaceHolder = newHeight;
1042
- this.setGridTemplateRows(newHeight);
1043
- }
1044
- });
1045
- }
1046
- ngAfterViewInit() {
1047
- const deviceSize = this._portalService.deviceSize;
1048
- let stickyTopPosition = 20;
1049
- if (deviceSize === 's') {
1050
- stickyTopPosition = 60;
1051
- }
1052
- this._stickyDom(this.aboveSearch.nativeElement, this.searchHolder.nativeElement, -stickyTopPosition, 'sticky');
1053
- this._stickyDom(this.aboveContent.nativeElement, this.navHolder.nativeElement, -this._stickyTopPosition, 'sticky');
1054
- this._stickyDom(this.aboveContent.nativeElement, this.bgOuterHolder.nativeElement, -this._stickyTopPosition, 'sticky', () => {
1055
- this._renderer.setStyle(this.bgOuterHolder.nativeElement, 'height', this._stickyTopPosition + 'px');
1056
- }, () => {
1057
- this._renderer.setStyle(this.bgOuterHolder.nativeElement, 'height', '100%');
1058
- });
1059
- this._stickyDom(this.aboveSearch.nativeElement, this.contentAndNav.nativeElement, -stickyTopPosition, 'navAndContent_tb', () => {
1060
- this._renderer.removeAttribute(this.contentAndNav.nativeElement, 'first');
1061
- }, () => {
1062
- this._renderer.setAttribute(this.contentAndNav.nativeElement, 'first', 'true');
1063
- });
1064
- setTimeout(() => {
1065
- this._enableScroll = true;
1066
- }, 1000);
1067
- this._portalService.navigationStart$.pipe(takeUntil$1(this._onDestroy$)).subscribe((event) => {
1068
- this._lastScrollPos = window.scrollY;
1069
- if (event === null) {
1070
- return;
1071
- }
1072
- if ((event === null || event === void 0 ? void 0 : event.url) !== '/servicedesk' && (event === null || event === void 0 ? void 0 : event.url) !== '/' && !this._disableIntersection) {
1073
- this.prepareForm();
1074
- }
1075
- });
1076
- this._portalService.navigationEnd$.pipe(takeUntil$1(this._onDestroy$)).subscribe((event) => {
1077
- if (event !== null &&
1078
- ((event === null || event === void 0 ? void 0 : event.url) === '/servicedesk' || (event === null || event === void 0 ? void 0 : event.url) === '/' || event.urlAfterRedirects === '/servicedesk')) {
1079
- this.unPrepareForm();
1080
- }
1081
- });
1082
- }
1083
- onSearchSubmit() {
1084
- this._router.navigateByUrl('servicedesk/search?term=' + this.searchTerm);
1085
- // var searchMo = BarsaApi.Bw.RunBlMethod('GetSearchMo', this.searchTerm);
1086
- // BarsaApi.Bw.Form.Show({ Mo: searchMo });
1087
- }
1088
- prepareForm() {
1089
- this._disableIntersection = true;
1090
- this._cdr.detach();
1091
- this.disconnectIntersctionObserverList();
1092
- this._renderer.addClass(this.searchHolder.nativeElement, 'sticky');
1093
- this._renderer.addClass(this.contentAndNav.nativeElement, 'hide');
1094
- this.visibleContent(false);
1095
- const flags = RendererStyleFlags2.Important;
1096
- this._renderer.setStyle(document.body, 'overflow', 'hidden', flags);
1097
- this.scrollToTop();
1098
- }
1099
- unPrepareForm() {
1100
- // this.setHeightSearchHolder(this.heightOfSpaceHolder);
1101
- this.visibleContent(true);
1102
- // this._renderer.removeClass(this.searchHolder.nativeElement, 'sticky');
1103
- this._renderer.removeClass(this.searchHolder.nativeElement, 'hide');
1104
- this._renderer.removeClass(this.contentAndNav.nativeElement, 'hide');
1105
- const flags = RendererStyleFlags2.Important;
1106
- this._renderer.setStyle(document.body, 'overflow', 'auto', flags);
1107
- this.scrollToTop();
1108
- this._cdr.reattach();
1109
- this._disableIntersection = false;
1110
- this.connectIntersctionObserverList();
1111
- }
1112
- setHeightSearchHolder(height) {
1113
- this._renderer.setStyle(this.headerSpaceHolder.nativeElement, 'height', `${height}px`);
1114
- }
1115
- visibleContent(visible) {
1116
- this._renderer.setStyle(this.contentAndNav.nativeElement, 'display', visible ? 'flex' : 'none');
1117
- }
1118
- setGridTemplateRows(height) {
1119
- this._renderer.setStyle(this.headerGrid.nativeElement, 'grid-template-rows', `minmax(78px, 15%) 46px 32px 1fr auto 12%; height:${height}px`);
1120
- // this._renderer.setStyle(this.headerGrid.nativeElement, 'background-color', `red`);
1121
- this._renderer.setStyle(this.headerSpaceHolder.nativeElement, 'height', `${height}px`);
1122
- }
1123
- onSelectedTabChange3(selectedTab) {
1124
- var _a;
1125
- this.scrollToTop();
1126
- if (selectedTab.id === '0') {
1127
- return;
1128
- }
1129
- const elementRefOfselectedTileGroup = (_a = this.tilesViewerGroupElList.get(Number(selectedTab.id))) === null || _a === void 0 ? void 0 : _a.nativeElement;
1130
- elementRefOfselectedTileGroup.scrollIntoView({
1131
- block: 'start'
1132
- });
1133
- }
1134
- scrollToLastPos() {
1135
- this._viewportScroller.scrollToPosition([0, this._lastScrollPos]);
1136
- }
1137
- scrollToTop() {
1138
- if (this._enableScroll) {
1139
- this._viewportScroller.scrollToPosition([0, this.heightOfSpaceHolder - this._stickyTopPosition]);
1140
- }
1141
- }
1142
- disconnectIntersctionObserverList() {
1143
- this.observerList.forEach((c) => c.observer.disconnect());
1144
- }
1145
- connectIntersctionObserverList() {
1146
- this.observerList.forEach((c) => c.observer.observe(c.el));
1147
- }
1148
- _stickyDom(above, holder, marginTop, className, visibleCallback, hiddenCallBack) {
1149
- const handler = (entries) => {
1150
- if (this._disableIntersection) {
1151
- return;
1152
- }
1153
- if (!entries[0].isIntersecting) {
1154
- this._renderer.addClass(holder, className);
1155
- if (typeof visibleCallback === 'function') {
1156
- visibleCallback();
1157
- }
1158
- }
1159
- else {
1160
- this._renderer.removeClass(holder, className);
1161
- if (typeof hiddenCallBack === 'function') {
1162
- hiddenCallBack();
1163
- }
1164
- }
1165
- };
1166
- const options = {
1167
- rootMargin: `${marginTop}px 0px 0px 0px`,
1168
- threshold: 0.1
1169
- };
1170
- const observer = new window.IntersectionObserver(handler, options);
1171
- observer.observe(above);
1172
- this.observerList.push({ el: above, observer });
1173
- }
1174
- }
1175
- ServiceDeskHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskHeaderComponent, deps: [{ token: i1.PortalService }, { token: i2$4.TilesService }, { token: i2$4.TilesViewerService }, { token: i0.Renderer2 }, { token: i1$1.ViewportScroller }, { token: i0.ChangeDetectorRef }, { token: i4$7.Router }, { token: i4$7.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
1176
- ServiceDeskHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ServiceDeskHeaderComponent, selector: "bdc-service-desk-header", inputs: { settings: "settings" }, providers: [TilesViewerService], viewQueries: [{ propertyName: "headerSpaceHolder", first: true, predicate: ["headerSpaceHolder"], descendants: true, static: true }, { propertyName: "headerGrid", first: true, predicate: ["headerGrid"], descendants: true, static: true }, { propertyName: "aboveSearch", first: true, predicate: ["aboveSearch"], descendants: true, static: true }, { propertyName: "searchHolder", first: true, predicate: ["searchHolder"], descendants: true, static: true }, { propertyName: "navHolder", first: true, predicate: ["navHolder"], descendants: true, static: true }, { propertyName: "aboveContent", first: true, predicate: ["aboveContent"], descendants: true, static: true }, { propertyName: "bgOuterHolder", first: true, predicate: ["bgOuterHolder"], descendants: true, static: true }, { propertyName: "contentAndNav", first: true, predicate: ["contentAndNav"], descendants: true, static: true }, { propertyName: "tilesViewerGroupElList", predicate: TilesViewerGroupComponent, descendants: true, read: ElementRef }, { propertyName: "tabPanelComponents", predicate: TabPanelComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div id=\"headerGrid\" style=\"grid-template-rows: minmax(1px, 15%) 48px 32px 1fr auto 12%; height: 148px\" #headerGrid>\n <div class=\"companyLogoHolder_aboveSearch\" #aboveSearch></div>\n <div id=\"searchHolder\" style=\"grid-row: 2\" #searchHolder>\n <fd-input-group\n [style.display]=\"settings?.HideSearch ? 'none' : null\"\n class=\"input-search\"\n contentDensity=\"cozy\"\n fd-toolbar-item\n type=\"search\"\n glyph=\"search\"\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\n [placeholder]=\"'Search' | bbbTranslate\"\n [button]=\"true\"\n [disabled]=\"false\"\n [(ngModel)]=\"searchTerm\"\n (addOnButtonClicked)=\"onSearchSubmit()\"\n >\n </fd-input-group>\n </div>\n</div>\n<div id=\"headerSpaceHolder\" #headerSpaceHolder>\n <div id=\"bgOuterHolder\" #bgOuterHolder>\n <div id=\"bgInnerHolder\" style=\"height: 100vh\">\n <div class=\"backgroundImage\" id=\"backgroundImage\">\n <img class=\"picture\" src=\"/assets/back.jpg\" loading=\"lazy\" />\n <span id=\"backgroundImageOverlay\" class=\"overlay\"></span>\n </div>\n </div>\n </div>\n</div>\n<div id=\"contentHolderAndNav\" first=\"true\" #contentAndNav>\n <div class=\"aboveContent\" #aboveContent></div>\n <div id=\"contentHolder\">\n <div class=\"nav\" #navHolder>\n <div class=\"nav-container\">\n <ng-container\n *ngTemplateOutlet=\"renderTabs; context: { $implicit: (appTileGroups$ | async)!! }\"\n ></ng-container>\n </div>\n </div>\n <div class=\"nav_surrogate\" style=\"height: 10px\"></div>\n <div class=\"content-feed\">\n <ng-container\n *ngTemplateOutlet=\"renderGroups; context: { $implicit: (appTileGroups$ | async)!! }\"\n ></ng-container>\n </div>\n </div>\n</div>\n<ng-template #renderTabs let-appTileGroups>\n <fd-tab-list\n [size]=\"tabSize\"\n [collapseOverflow]=\"tabSize === 's' || appTileGroups.length > 5\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n (selectedTabChange)=\"onSelectedTabChange3($event)\"\n >\n <fd-tab\n *ngFor=\"let appTileGroup of appTileGroups; let i = index\"\n [id]=\"'' + i\"\n [title]=\"appTileGroup.navigatorTitle\"\n >\n </fd-tab>\n </fd-tab-list>\n</ng-template>\n<ng-template #renderGroups let-appTileGroups>\n <bt-tiles-viewer-group\n *ngFor=\"let appTileGroup of appTileGroups; let i = index\"\n [attr.index]=\"i\"\n [appTileGroup]=\"appTileGroup\"\n [edit]=\"false\"\n [stackContent]=\"true\"\n [isAppTileSubGroup]=\"false\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n ></bt-tiles-viewer-group>\n</ng-template>\n", styles: ["html{scroll-behavior:smooth}body{overflow-y:auto!important;overflow-x:hidden!important}bt-shellbar{position:fixed;top:10px;width:100%;z-index:6}bt-shellbar .fd-shellbar{background:transparent;box-shadow:none}bt-shellbar .fd-shellbar__product{display:none}bdc-service-desk-header{display:block}bdc-service-desk-header #headerGrid{display:grid;justify-items:center;position:absolute;top:0;width:100%}bdc-service-desk-header #headerSpaceHolder{transition:height .3s ease-out 0s;width:100%}bdc-service-desk-header #searchHolder{z-index:302}bdc-service-desk-header #searchHolder.sticky{position:fixed;top:15px;will-change:transform}bdc-service-desk-header #contentHolderAndNav{align-items:center;background:rgba(0,0,0,.318);display:flex;flex-direction:column;min-height:100vh;position:relative;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav fd-tab-list{background-color:transparent!important;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav fd-tab-list fd-tab,bdc-service-desk-header #contentHolderAndNav fd-tab-list .fd-tabs{background-color:transparent!important;box-shadow:none!important;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav[first=true] span.fd-tabs__tag{color:#fff!important}bdc-service-desk-header #contentHolderAndNav[first=true] .fd-tabs__link.is-selected>span.fd-tabs__tag:after{background-color:#fff!important}bdc-service-desk-header #contentHolderAndNav[first=true] .fd-layout-panel__title{color:#fff!important}bdc-service-desk-header #contentHolderAndNav.navAndContent_tb{background:rgb(247,247,247)}bdc-service-desk-header #contentHolder{align-items:center;display:flex;flex-direction:column}bdc-service-desk-header .nav-container{align-items:center;display:flex;gap:5px}bdc-service-desk-header .nav-container fd-tab-list{width:100%}bdc-service-desk-header .nav_surrogate{height:1px}bdc-service-desk-header .nav{display:flex;height:50px;justify-content:center;z-index:500;width:100%}bdc-service-desk-header .nav ul{height:auto;overflow:hidden;list-style:none;padding-inline:0px 15px;margin:0;display:inline-flex;align-items:center}bdc-service-desk-header .nav ul li{display:inline;list-style:none;padding:0 16px;color:#fff}bdc-service-desk-header .nav.sticky{background:rgb(247,247,247);position:fixed;will-change:transform}bt-tiles-viewer-group:first-child fd-layout-panel-header{display:none!important}bt-tiles-viewer-group:first-child .fd-panel__content{border-bottom:none}.content-feed{padding:0}.input-search{display:block}@media (max-width: 480px){.nav-container,.content-feed{width:100%}.nav-container .fd-tabs,.content-feed .fd-tabs{padding:0}#searchHolder.sticky{display:none}#searchHolder .input-search{width:250px}}@media (min-width: 481px) and (max-width: 935px){#searchHolder .input-search{width:360px}}@media (min-width: 936px) and (max-width: 1250px){#searchHolder .input-search{width:480px}}@media (min-width: 1251px){#searchHolder .input-search{width:690px}}@media (max-width: 1180){div#searchHolder.sticky .input-search{width:280px!important}}@media (min-width: 480px) and (max-width: 935px){.nav-container,.content-feed{width:860px}}@media (min-width: 1244px){.nav-container,.content-feed{width:1250px}#searchHolder.sticky .input-search{width:690px}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$4.TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "edit", "rtl", "isAppTileSubGroup", "deviceSize"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "component", type: i2$1.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i2$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i2$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1177
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskHeaderComponent, decorators: [{
1178
- type: Component,
1179
- args: [{ selector: 'bdc-service-desk-header', providers: [TilesViewerService], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div id=\"headerGrid\" style=\"grid-template-rows: minmax(1px, 15%) 48px 32px 1fr auto 12%; height: 148px\" #headerGrid>\n <div class=\"companyLogoHolder_aboveSearch\" #aboveSearch></div>\n <div id=\"searchHolder\" style=\"grid-row: 2\" #searchHolder>\n <fd-input-group\n [style.display]=\"settings?.HideSearch ? 'none' : null\"\n class=\"input-search\"\n contentDensity=\"cozy\"\n fd-toolbar-item\n type=\"search\"\n glyph=\"search\"\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\n [placeholder]=\"'Search' | bbbTranslate\"\n [button]=\"true\"\n [disabled]=\"false\"\n [(ngModel)]=\"searchTerm\"\n (addOnButtonClicked)=\"onSearchSubmit()\"\n >\n </fd-input-group>\n </div>\n</div>\n<div id=\"headerSpaceHolder\" #headerSpaceHolder>\n <div id=\"bgOuterHolder\" #bgOuterHolder>\n <div id=\"bgInnerHolder\" style=\"height: 100vh\">\n <div class=\"backgroundImage\" id=\"backgroundImage\">\n <img class=\"picture\" src=\"/assets/back.jpg\" loading=\"lazy\" />\n <span id=\"backgroundImageOverlay\" class=\"overlay\"></span>\n </div>\n </div>\n </div>\n</div>\n<div id=\"contentHolderAndNav\" first=\"true\" #contentAndNav>\n <div class=\"aboveContent\" #aboveContent></div>\n <div id=\"contentHolder\">\n <div class=\"nav\" #navHolder>\n <div class=\"nav-container\">\n <ng-container\n *ngTemplateOutlet=\"renderTabs; context: { $implicit: (appTileGroups$ | async)!! }\"\n ></ng-container>\n </div>\n </div>\n <div class=\"nav_surrogate\" style=\"height: 10px\"></div>\n <div class=\"content-feed\">\n <ng-container\n *ngTemplateOutlet=\"renderGroups; context: { $implicit: (appTileGroups$ | async)!! }\"\n ></ng-container>\n </div>\n </div>\n</div>\n<ng-template #renderTabs let-appTileGroups>\n <fd-tab-list\n [size]=\"tabSize\"\n [collapseOverflow]=\"tabSize === 's' || appTileGroups.length > 5\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n (selectedTabChange)=\"onSelectedTabChange3($event)\"\n >\n <fd-tab\n *ngFor=\"let appTileGroup of appTileGroups; let i = index\"\n [id]=\"'' + i\"\n [title]=\"appTileGroup.navigatorTitle\"\n >\n </fd-tab>\n </fd-tab-list>\n</ng-template>\n<ng-template #renderGroups let-appTileGroups>\n <bt-tiles-viewer-group\n *ngFor=\"let appTileGroup of appTileGroups; let i = index\"\n [attr.index]=\"i\"\n [appTileGroup]=\"appTileGroup\"\n [edit]=\"false\"\n [stackContent]=\"true\"\n [isAppTileSubGroup]=\"false\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n ></bt-tiles-viewer-group>\n</ng-template>\n", styles: ["html{scroll-behavior:smooth}body{overflow-y:auto!important;overflow-x:hidden!important}bt-shellbar{position:fixed;top:10px;width:100%;z-index:6}bt-shellbar .fd-shellbar{background:transparent;box-shadow:none}bt-shellbar .fd-shellbar__product{display:none}bdc-service-desk-header{display:block}bdc-service-desk-header #headerGrid{display:grid;justify-items:center;position:absolute;top:0;width:100%}bdc-service-desk-header #headerSpaceHolder{transition:height .3s ease-out 0s;width:100%}bdc-service-desk-header #searchHolder{z-index:302}bdc-service-desk-header #searchHolder.sticky{position:fixed;top:15px;will-change:transform}bdc-service-desk-header #contentHolderAndNav{align-items:center;background:rgba(0,0,0,.318);display:flex;flex-direction:column;min-height:100vh;position:relative;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav fd-tab-list{background-color:transparent!important;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav fd-tab-list fd-tab,bdc-service-desk-header #contentHolderAndNav fd-tab-list .fd-tabs{background-color:transparent!important;box-shadow:none!important;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav[first=true] span.fd-tabs__tag{color:#fff!important}bdc-service-desk-header #contentHolderAndNav[first=true] .fd-tabs__link.is-selected>span.fd-tabs__tag:after{background-color:#fff!important}bdc-service-desk-header #contentHolderAndNav[first=true] .fd-layout-panel__title{color:#fff!important}bdc-service-desk-header #contentHolderAndNav.navAndContent_tb{background:rgb(247,247,247)}bdc-service-desk-header #contentHolder{align-items:center;display:flex;flex-direction:column}bdc-service-desk-header .nav-container{align-items:center;display:flex;gap:5px}bdc-service-desk-header .nav-container fd-tab-list{width:100%}bdc-service-desk-header .nav_surrogate{height:1px}bdc-service-desk-header .nav{display:flex;height:50px;justify-content:center;z-index:500;width:100%}bdc-service-desk-header .nav ul{height:auto;overflow:hidden;list-style:none;padding-inline:0px 15px;margin:0;display:inline-flex;align-items:center}bdc-service-desk-header .nav ul li{display:inline;list-style:none;padding:0 16px;color:#fff}bdc-service-desk-header .nav.sticky{background:rgb(247,247,247);position:fixed;will-change:transform}bt-tiles-viewer-group:first-child fd-layout-panel-header{display:none!important}bt-tiles-viewer-group:first-child .fd-panel__content{border-bottom:none}.content-feed{padding:0}.input-search{display:block}@media (max-width: 480px){.nav-container,.content-feed{width:100%}.nav-container .fd-tabs,.content-feed .fd-tabs{padding:0}#searchHolder.sticky{display:none}#searchHolder .input-search{width:250px}}@media (min-width: 481px) and (max-width: 935px){#searchHolder .input-search{width:360px}}@media (min-width: 936px) and (max-width: 1250px){#searchHolder .input-search{width:480px}}@media (min-width: 1251px){#searchHolder .input-search{width:690px}}@media (max-width: 1180){div#searchHolder.sticky .input-search{width:280px!important}}@media (min-width: 480px) and (max-width: 935px){.nav-container,.content-feed{width:860px}}@media (min-width: 1244px){.nav-container,.content-feed{width:1250px}#searchHolder.sticky .input-search{width:690px}}\n"] }]
1180
- }], ctorParameters: function () { return [{ type: i1.PortalService }, { type: i2$4.TilesService }, { type: i2$4.TilesViewerService }, { type: i0.Renderer2 }, { type: i1$1.ViewportScroller }, { type: i0.ChangeDetectorRef }, { type: i4$7.Router }, { type: i4$7.ActivatedRoute }]; }, propDecorators: { headerSpaceHolder: [{
1181
- type: ViewChild,
1182
- args: ['headerSpaceHolder', { static: true }]
1183
- }], headerGrid: [{
1184
- type: ViewChild,
1185
- args: ['headerGrid', { static: true }]
1186
- }], aboveSearch: [{
1187
- type: ViewChild,
1188
- args: ['aboveSearch', { static: true }]
1189
- }], searchHolder: [{
1190
- type: ViewChild,
1191
- args: ['searchHolder', { static: true }]
1192
- }], navHolder: [{
1193
- type: ViewChild,
1194
- args: ['navHolder', { static: true }]
1195
- }], aboveContent: [{
1196
- type: ViewChild,
1197
- args: ['aboveContent', { static: true }]
1198
- }], bgOuterHolder: [{
1199
- type: ViewChild,
1200
- args: ['bgOuterHolder', { static: true }]
1201
- }], contentAndNav: [{
1202
- type: ViewChild,
1203
- args: ['contentAndNav', { static: true }]
1204
- }], tilesViewerGroupElList: [{
1205
- type: ViewChildren,
1206
- args: [TilesViewerGroupComponent, { read: ElementRef }]
1207
- }], tabPanelComponents: [{
1208
- type: ViewChildren,
1209
- args: [TabPanelComponent]
1210
- }], settings: [{
1211
- type: Input
1212
- }] } });
1213
-
1214
- class CardContentImageAndTitleComponent extends BaseItemContentPropsComponent {
1215
- constructor() {
1216
- super(...arguments);
1217
- this.backgroundColor = null;
1218
- this.color = null;
1219
- }
1220
- ngOnInit() {
1221
- super.ngOnInit();
1222
- const parameters = this.parameters;
1223
- if (parameters != null) {
1224
- this.color = this.colorSetting = parameters.Color;
1225
- this.backgroundColor = this.backgroundColorSetting = parameters.BackgroundColor;
1226
- this.picture = this._rval.transform(parameters.Picture, this.mo, this.allColumns);
1227
- this.title = this._rval.transform(parameters.Title, this.mo, this.allColumns);
1228
- this.subtitle = this._rval.transform(parameters.Subtitle, this.mo, this.allColumns);
1229
- this.icon = this._rval.transform(parameters.Icon, this.mo, this.allColumns);
1230
- this.prepareNumberSign();
1231
- }
1232
- }
1233
- prepareNumberSign() {
1234
- if (this.color && Number(this.colorSetting[0])) {
1235
- this.color = '#' + this.colorSetting;
1236
- }
1237
- if (this.backgroundColor && Number(this.backgroundColorSetting[0])) {
1238
- this.backgroundColor = '#' + this.backgroundColorSetting;
1239
- }
1240
- }
1241
- }
1242
- CardContentImageAndTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardContentImageAndTitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1243
- CardContentImageAndTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CardContentImageAndTitleComponent, selector: "bdc-card-content-image-and-title", host: { properties: { "style.background-color": "this.backgroundColor", "style.color": "this.color" } }, viewQueries: [{ propertyName: "iconRef", first: true, predicate: ["iconRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"card-content\" #elemRef>\n <div class=\"item-data\">\n <img\n *ngIf=\"picture; else iconTemplate\"\n [imgLazy]=\"picture.FileId | picFieldSrc: 'ID':null:'':100:70\"\n height=\"70\"\n width=\"100\"\n [alt]=\"title | bbbTranslate\"\n />\n <ng-template #iconTemplate>\n <fd-icon #iconRef *ngIf=\"icon\" [glyph]=\"icon\" [style.color]=\"color\"> </fd-icon>\n </ng-template>\n </div>\n <h5 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\n {{ title | bbbTranslate }}\n </h5>\n <h6 *ngIf=\"subtitle\" fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\n {{ subtitle | bbbTranslate }}\n </h6>\n</div>\n", styles: [":host{display:flex;justify-content:center;align-items:stretch;height:100%;width:100%;min-height:180px}:host:hover{opacity:.8}:host:hover{cursor:pointer}.card-content{display:flex;align-items:center;flex-direction:column;align-self:stretch;margin-top:auto;margin-bottom:auto;width:100%}.item-data{text-align:center}fd-icon{font-size:2.5rem}h4{height:60px;width:80%;text-align:center}h6{line-height:2rem}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "component", type: i8$1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i4$3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardContentImageAndTitleComponent, decorators: [{
1245
- type: Component,
1246
- args: [{ selector: 'bdc-card-content-image-and-title', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"card-content\" #elemRef>\n <div class=\"item-data\">\n <img\n *ngIf=\"picture; else iconTemplate\"\n [imgLazy]=\"picture.FileId | picFieldSrc: 'ID':null:'':100:70\"\n height=\"70\"\n width=\"100\"\n [alt]=\"title | bbbTranslate\"\n />\n <ng-template #iconTemplate>\n <fd-icon #iconRef *ngIf=\"icon\" [glyph]=\"icon\" [style.color]=\"color\"> </fd-icon>\n </ng-template>\n </div>\n <h5 fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\n {{ title | bbbTranslate }}\n </h5>\n <h6 *ngIf=\"subtitle\" fd-title class=\"item-data fd-title--wrap\" [style.color]=\"color\">\n {{ subtitle | bbbTranslate }}\n </h6>\n</div>\n", styles: [":host{display:flex;justify-content:center;align-items:stretch;height:100%;width:100%;min-height:180px}:host:hover{opacity:.8}:host:hover{cursor:pointer}.card-content{display:flex;align-items:center;flex-direction:column;align-self:stretch;margin-top:auto;margin-bottom:auto;width:100%}.item-data{text-align:center}fd-icon{font-size:2.5rem}h4{height:60px;width:80%;text-align:center}h6{line-height:2rem}\n"] }]
1247
- }], propDecorators: { iconRef: [{
1248
- type: ViewChild,
1249
- args: ['iconRef', { static: false }]
1250
- }], backgroundColor: [{
1251
- type: HostBinding,
1252
- args: ['style.background-color']
1253
- }], color: [{
1254
- type: HostBinding,
1255
- args: ['style.color']
1256
- }] } });
1257
-
1258
- class CardHeaderLogoTitleSubtitleComponent extends BaseItemContentPropsComponent {
1259
- constructor() {
1260
- super(...arguments);
1261
- this.events = new EventEmitter();
1262
- }
1263
- ngOnInit() {
1264
- var _a, _b, _c;
1265
- super.ngOnInit();
1266
- this.titleDbName =
1267
- ((_a = this._findColumnPipe.transform(this.allColumns, this.parameters.Title)) === null || _a === void 0 ? void 0 : _a.Name) || this.parameters.Title;
1268
- this.subtitleDbName =
1269
- ((_b = this._findColumnPipe.transform(this.allColumns, this.parameters.Subtitle)) === null || _b === void 0 ? void 0 : _b.Name) || this.parameters.Subtitle;
1270
- const parameters = this.parameters;
1271
- if (parameters != null) {
1272
- this.title = this._rval.transform(parameters.Title, this.mo, this.allColumns, true);
1273
- this.subtitle = this._rval.transform(parameters.Subtitle, this.mo, this.allColumns, true);
1274
- this.fontIcon = (_c = parameters.FontIcon) !== null && _c !== void 0 ? _c : 'person-placeholder';
1275
- this.imageIcon = this._rval.transform(parameters.FontIcon, this.mo, this.allColumns);
1276
- this.isIconImage = typeof this.imageIcon === 'object';
1277
- this.hasIcon = parameters.HasIcon;
1278
- this.avatarCircle = true;
1279
- if (typeof parameters.AvatarCircle !== 'undefined') {
1280
- this.avatarCircle = parameters.AvatarCircle;
1281
- }
1282
- }
1283
- }
1284
- }
1285
- CardHeaderLogoTitleSubtitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardHeaderLogoTitleSubtitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1286
- CardHeaderLogoTitleSubtitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CardHeaderLogoTitleSubtitleComponent, selector: "bdc-card-header-logo-title-subtitle", outputs: { events: "events" }, usesInheritance: true, ngImport: i0, template: "<fd-card-header\r\n [class.hide-border]=\"parameters.HideBorder\"\r\n (click)=\"!isCheckList && events.emit({ title: 'rowCheck' })\"\r\n>\r\n <fd-avatar\r\n *ngIf=\"hasIcon\"\r\n [circle]=\"avatarCircle\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n alterIcon=\"content|alt|backup|default-icon\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\r\n ></fd-avatar>\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n <fd-checkbox\r\n *ngIf=\"isCheckList\"\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n <div\r\n *ngIf=\"setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0\"\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"mo\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"titleDbName\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title | bbbTranslate }}\r\n </h2>\r\n </div>\r\n <ng-container *ngIf=\"canView\">\r\n <button\r\n fd-button\r\n (click)=\"events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n </ng-container>\r\n </div>\r\n\r\n <h3\r\n fd-card-subtitle\r\n #hEl\r\n [hostEl]=\"hEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"subtitleDbName\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ subtitle | bbbTranslate }}\r\n </h3>\r\n</fd-card-header>\r\n<div></div>\r\n", styles: ["fd-card-header{cursor:default}fd-card-header:hover{background:var(--fdCard_Background_Color)}fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:.9rem}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}fd-card-header.hide-border{border-bottom:none!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3$2.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "directive", type: i3$2.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i4$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "directive", type: i5$2.CardTitleDirective, selector: "[fd-card-title]" }, { kind: "directive", type: i5$2.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i7$1.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values"], outputs: ["focusChange"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardHeaderLogoTitleSubtitleComponent, decorators: [{
1288
- type: Component,
1289
- args: [{ selector: 'bdc-card-header-logo-title-subtitle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card-header\r\n [class.hide-border]=\"parameters.HideBorder\"\r\n (click)=\"!isCheckList && events.emit({ title: 'rowCheck' })\"\r\n>\r\n <fd-avatar\r\n *ngIf=\"hasIcon\"\r\n [circle]=\"avatarCircle\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n alterIcon=\"content|alt|backup|default-icon\"\r\n [glyph]=\"fontIcon\"\r\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\r\n ></fd-avatar>\r\n <div fd-card-title [style.justify-content]=\"'end'\">\r\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\r\n <fd-checkbox\r\n *ngIf=\"isCheckList\"\r\n [name]=\"mo.$Caption\"\r\n [ngModel]=\"isChecked\"\r\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\r\n ></fd-checkbox>\r\n <div\r\n *ngIf=\"setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0\"\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"mo\"\r\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\r\n ></div>\r\n <h2\r\n #hEl\r\n class=\"fd-card__title\"\r\n [hostEl]=\"hEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"titleDbName\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ title | bbbTranslate }}\r\n </h2>\r\n </div>\r\n <ng-container *ngIf=\"canView\">\r\n <button\r\n fd-button\r\n (click)=\"events.emit({ title: 'rowClick' })\"\r\n [glyph]=\"navigationArrow\"\r\n fdType=\"transparent\"\r\n ></button>\r\n </ng-container>\r\n </div>\r\n\r\n <h3\r\n fd-card-subtitle\r\n #hEl\r\n [hostEl]=\"hEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"subtitleDbName\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n >\r\n {{ subtitle | bbbTranslate }}\r\n </h3>\r\n</fd-card-header>\r\n<div></div>\r\n", styles: ["fd-card-header{cursor:default}fd-card-header:hover{background:var(--fdCard_Background_Color)}fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:.9rem}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}fd-card-header.hide-border{border-bottom:none!important}\n"] }]
1290
- }], propDecorators: { events: [{
1291
- type: Output
1292
- }] } });
1293
-
1294
- class FormContentQuickViewComponent extends FormPropsBaseComponent {
1295
- constructor() {
1296
- super(...arguments);
1297
- this.groups = {};
1298
- }
1299
- ngOnInit() {
1300
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
1301
- super.ngOnInit();
1302
- const groups = {};
1303
- this.title = (_c = (_b = this._controlUiPipe.transform((_a = this.settings) === null || _a === void 0 ? void 0 : _a.Title, this.layout94)) === null || _b === void 0 ? void 0 : _b.FieldUi) === null || _c === void 0 ? void 0 : _c.value;
1304
- this.subtitle = (_f = (_e = this._controlUiPipe.transform((_d = this.settings) === null || _d === void 0 ? void 0 : _d.Subtitle, this.layout94)) === null || _e === void 0 ? void 0 : _e.FieldUi) === null || _f === void 0 ? void 0 : _f.value;
1305
- const fontIcon = (_h = this._controlUiPipe.transform((_g = this.settings) === null || _g === void 0 ? void 0 : _g.FontIcon, this.layout94)) === null || _h === void 0 ? void 0 : _h.FieldUi;
1306
- if (fontIcon) {
1307
- const { imageUrl, value } = fontIcon;
1308
- this.imageUrl = imageUrl;
1309
- this.fontIcon = value;
1310
- }
1311
- const settingGroups = (_j = this.settings) === null || _j === void 0 ? void 0 : _j.Groups;
1312
- if (settingGroups) {
1313
- settingGroups.MoDataList.forEach((c) => {
1314
- groups[c.Title] = c.ListFields
1315
- .split(',')
1316
- .map((d) => ({
1317
- caption: d,
1318
- fieldUi: this._controlUiPipe.transform(d, this.layout94)
1319
- }))
1320
- .map((d) => { var _a, _b; return (Object.assign(Object.assign({}, d), { value: this.getFieldValue((_b = (_a = d.fieldUi) === null || _a === void 0 ? void 0 : _a.FieldUi) === null || _b === void 0 ? void 0 : _b.value) })); })
1321
- .map((d) => (Object.assign(Object.assign({}, d), { type: this.getFieldType(d.value) })));
1322
- });
1323
- }
1324
- this.groups = groups;
1325
- }
1326
- getFieldValue(value) {
1327
- if (!value) {
1328
- return value;
1329
- }
1330
- const t = value.toString();
1331
- if (t.indexOf(',') > -1) {
1332
- return t.split(',');
1333
- }
1334
- return value;
1335
- }
1336
- getIsPhone(value) {
1337
- if (value.startsWith('0') || (value.startsWith('+') && !Number.isNaN(value.substring(1, value.length)))) {
1338
- return true;
1339
- }
1340
- return false;
1341
- }
1342
- getIsEmail(value) {
1343
- if (value.indexOf('@') > -1) {
1344
- return true;
1345
- }
1346
- return false;
1347
- }
1348
- getIsWebsite(value) {
1349
- if (value.startsWith('http') || value.startsWith('https')) {
1350
- return true;
1351
- }
1352
- return false;
1353
- }
1354
- getFieldType(value) {
1355
- if (typeof value === 'string') {
1356
- if (this.getIsWebsite(value)) {
1357
- return 0;
1358
- }
1359
- if (this.getIsPhone(value)) {
1360
- return 1;
1361
- }
1362
- if (this.getIsEmail(value)) {
1363
- return 2;
1364
- }
1365
- return 3;
1366
- }
1367
- else if (Array.isArray(value)) {
1368
- if (value.length) {
1369
- if (this.getIsPhone(value[0])) {
1370
- return 4;
1371
- }
1372
- if (this.getIsEmail(value[0])) {
1373
- return 5;
1374
- }
1375
- if (this.getIsWebsite(value[0])) {
1376
- return 6;
1377
- }
1378
- }
1379
- }
1380
- }
1381
- }
1382
- FormContentQuickViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormContentQuickViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1383
- FormContentQuickViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormContentQuickViewComponent, selector: "bdc-form-content-quick-view", usesInheritance: true, ngImport: i0, template: "<fd-quick-view>\n <fd-quick-view-subheader>\n <fd-avatar\n title=\"avatar\"\n [glyph]=\"fontIcon\"\n [image]=\"imageUrl\"\n [size]=\"'s'\"\n [border]=\"settings.ShowLogoBorder\"\n [transparent]=\"settings.TransparentLogo\"\n [colorAccent]=\"settings.AccentColor\"\n ></fd-avatar>\n <fd-quick-view-subheader-title>\n {{ title | bbbTranslate }}\n </fd-quick-view-subheader-title>\n <fd-quick-view-subheader-subtitle>\n {{ subtitle | bbbTranslate }}\n </fd-quick-view-subheader-subtitle>\n </fd-quick-view-subheader>\n\n <fd-quick-view-group *ngFor=\"let group of groups | keyvalue\" [attr.aria-labelledby]=\"group.key\">\n <fd-quick-view-group-title [id]=\"group.key\">\n {{ group.key | bbbTranslate }}\n </fd-quick-view-group-title>\n <fd-quick-view-group-item *ngFor=\"let item of group.value\">\n <fd-quick-view-group-item-label>\n {{ item.caption | bbbTranslate }}\n </fd-quick-view-group-item-label>\n <fd-quick-view-group-item-content>\n <ng-container [ngSwitch]=\"item.type\">\n <ng-container *ngSwitchCase=\"6\">\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\n <a\n *ngFor=\"let website of item.value\"\n [href]=\"website\"\n [innerText]=\"website | bbbTranslate\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n </div>\n </ng-container>\n <a\n *ngSwitchCase=\"0\"\n [href]=\"item.value\"\n [innerText]=\"item.value | bbbTranslate\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n <a\n *ngSwitchCase=\"1\"\n [href]=\"'tel:' + item.value\"\n [innerText]=\"item.value | bbbTranslate\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n <ng-container *ngSwitchCase=\"4\">\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\n <a\n *ngFor=\"let tel of item.value\"\n [href]=\"'tel:' + tel\"\n [innerText]=\"tel\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"5\">\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\n <a\n *ngFor=\"let email of item.value\"\n style=\"direction: ltr; font-family: monospace\"\n [href]=\"'mailto:' + email\"\n [innerText]=\"email\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n </div>\n </ng-container>\n <a\n style=\"direction: ltr; font-family: monospace\"\n *ngSwitchCase=\"2\"\n [href]=\"'mailto:' + item.value\"\n [innerText]=\"item.value\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n <div\n *ngSwitchDefault\n [innerText]=\"item.value | bbbTranslate\"\n fd-quick-view-group-item-content-element\n ></div>\n </ng-container>\n </fd-quick-view-group-item-content>\n </fd-quick-view-group-item>\n </fd-quick-view-group>\n</fd-quick-view>\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4$4.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i4$5.QuickViewComponent, selector: "fd-quick-view", inputs: ["id"] }, { kind: "component", type: i4$5.QuickViewSubheaderComponent, selector: "fd-quick-view-subheader" }, { kind: "component", type: i4$5.QuickViewSubheaderTitleComponent, selector: "fd-quick-view-subheader-title" }, { kind: "component", type: i4$5.QuickViewSubheaderSubtitleComponent, selector: "fd-quick-view-subheader-subtitle" }, { kind: "component", type: i4$5.QuickViewGroupComponent, selector: "fd-quick-view-group" }, { kind: "component", type: i4$5.QuickViewGroupTitleComponent, selector: "fd-quick-view-group-title", inputs: ["id"] }, { kind: "component", type: i4$5.QuickViewGroupItemComponent, selector: "fd-quick-view-group-item", inputs: ["id"] }, { kind: "component", type: i4$5.QuickViewGroupItemLabelComponent, selector: "fd-quick-view-group-item-label" }, { kind: "component", type: i4$5.QuickViewGroupItemContentComponent, selector: "fd-quick-view-group-item-content" }, { kind: "directive", type: i4$5.QuickViewGroupItemContentElementDirective, selector: "[fd-quick-view-group-item-content-element]" }, { kind: "pipe", type: i1$1.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1384
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormContentQuickViewComponent, decorators: [{
1385
- type: Component,
1386
- args: [{ selector: 'bdc-form-content-quick-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-quick-view>\n <fd-quick-view-subheader>\n <fd-avatar\n title=\"avatar\"\n [glyph]=\"fontIcon\"\n [image]=\"imageUrl\"\n [size]=\"'s'\"\n [border]=\"settings.ShowLogoBorder\"\n [transparent]=\"settings.TransparentLogo\"\n [colorAccent]=\"settings.AccentColor\"\n ></fd-avatar>\n <fd-quick-view-subheader-title>\n {{ title | bbbTranslate }}\n </fd-quick-view-subheader-title>\n <fd-quick-view-subheader-subtitle>\n {{ subtitle | bbbTranslate }}\n </fd-quick-view-subheader-subtitle>\n </fd-quick-view-subheader>\n\n <fd-quick-view-group *ngFor=\"let group of groups | keyvalue\" [attr.aria-labelledby]=\"group.key\">\n <fd-quick-view-group-title [id]=\"group.key\">\n {{ group.key | bbbTranslate }}\n </fd-quick-view-group-title>\n <fd-quick-view-group-item *ngFor=\"let item of group.value\">\n <fd-quick-view-group-item-label>\n {{ item.caption | bbbTranslate }}\n </fd-quick-view-group-item-label>\n <fd-quick-view-group-item-content>\n <ng-container [ngSwitch]=\"item.type\">\n <ng-container *ngSwitchCase=\"6\">\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\n <a\n *ngFor=\"let website of item.value\"\n [href]=\"website\"\n [innerText]=\"website | bbbTranslate\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n </div>\n </ng-container>\n <a\n *ngSwitchCase=\"0\"\n [href]=\"item.value\"\n [innerText]=\"item.value | bbbTranslate\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n <a\n *ngSwitchCase=\"1\"\n [href]=\"'tel:' + item.value\"\n [innerText]=\"item.value | bbbTranslate\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n <ng-container *ngSwitchCase=\"4\">\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\n <a\n *ngFor=\"let tel of item.value\"\n [href]=\"'tel:' + tel\"\n [innerText]=\"tel\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"5\">\n <div style=\"display: flex; flex-direction: column; row-gap: 3px\">\n <a\n *ngFor=\"let email of item.value\"\n style=\"direction: ltr; font-family: monospace\"\n [href]=\"'mailto:' + email\"\n [innerText]=\"email\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n </div>\n </ng-container>\n <a\n style=\"direction: ltr; font-family: monospace\"\n *ngSwitchCase=\"2\"\n [href]=\"'mailto:' + item.value\"\n [innerText]=\"item.value\"\n fd-link\n fd-quick-view-group-item-content-element\n ></a>\n <div\n *ngSwitchDefault\n [innerText]=\"item.value | bbbTranslate\"\n fd-quick-view-group-item-content-element\n ></div>\n </ng-container>\n </fd-quick-view-group-item-content>\n </fd-quick-view-group-item>\n </fd-quick-view-group>\n</fd-quick-view>\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"] }]
1387
- }] });
1388
-
1389
- class ServiceDeskServcieDetailComponent extends FormPropsBaseComponent {
1390
- constructor() {
1391
- super(...arguments);
1392
- this.firstArray = [];
1393
- this.secondArray = [];
1394
- this.moByCaption = {};
1395
- this.fieldsCaption = [];
1396
- this.value = '';
1397
- this.israhnamayTasviri = false;
1398
- }
1399
- ngOnInit() {
1400
- super.ngOnInit();
1401
- const $FieldDict = this.fieldDict;
1402
- if (!$FieldDict) {
1403
- return;
1404
- }
1405
- this._prepare($FieldDict, this.mo);
1406
- }
1407
- onDownload(item) {
1408
- if (item.Attachment) {
1409
- BarsaApi.Common.File.DownloadFileId(item.Attachment.Files[0].Id);
1410
- }
1411
- }
1412
- ngAfterViewInit() {
1413
- super.ngAfterViewInit();
1414
- this.alignTablesTr();
1415
- }
1416
- onKhadamatMortabet(item) {
1417
- BarsaApi.Bw.Form.Show({
1418
- MoId: item.Id,
1419
- TypeDefId: this.khadamatmortabetReport.TypeDefId,
1420
- MoContext: { ReportId: this.khadamatmortabetReport.ReportId }
1421
- });
1422
- }
1423
- alignTablesTr() {
1424
- setTimeout(() => {
1425
- const tablesRef = this.tablesRef.toArray();
1426
- const firstTableEl = tablesRef[0].nativeElement;
1427
- const secondTableEl = tablesRef[1].nativeElement;
1428
- const trFirstTable = firstTableEl.querySelectorAll('tr');
1429
- const trSecondTable = secondTableEl.querySelectorAll('tr');
1430
- trFirstTable.forEach((tr, index) => {
1431
- if (index < trSecondTable.length) {
1432
- const trSecond = trSecondTable[index];
1433
- if (tr.offsetHeight > trSecond.offsetHeight) {
1434
- trSecond.style.height = `${tr.offsetHeight}px`;
1435
- }
1436
- else {
1437
- tr.style.height = `${trSecond.offsetHeight}px`;
1438
- }
1439
- }
1440
- });
1441
- }, 0);
1442
- }
1443
- _prepare($FieldDict, mo) {
1444
- var _a, _b, _c, _d, _e, _f;
1445
- const leftside = FindLayoutSettingFromLayout94(this.layout94, 'جدول چپ');
1446
- const rightside = FindLayoutSettingFromLayout94(this.layout94, 'جدول راست');
1447
- (_b = (_a = leftside === null || leftside === void 0 ? void 0 : leftside.items[0]) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.forEach((item2) => {
1448
- const key = item2.Caption;
1449
- const fieldName = item2.ControlId;
1450
- const item = { caption: key, fieldName };
1451
- if (key === 'آدرس سایت' ||
1452
- (typeof mo[fieldName] === 'string' &&
1453
- (mo[fieldName].startsWith('https://') || mo[fieldName].startsWith('http://')))) {
1454
- item.type = 'Link';
1455
- }
1456
- if (typeof mo[fieldName] === 'object') {
1457
- if (mo[fieldName].$Type === 'Common.MetaObjectListWeb') {
1458
- item.type = 'MoList';
1459
- }
1460
- else if (mo[fieldName].Ext) {
1461
- item.type = 'Image';
1462
- }
1463
- else if (mo[fieldName].Files) {
1464
- item.type = 'Files';
1465
- }
1466
- else {
1467
- item.type = 'Relation';
1468
- }
1469
- }
1470
- this.firstArray.push(item);
1471
- });
1472
- (_d = (_c = rightside === null || rightside === void 0 ? void 0 : rightside.items[0]) === null || _c === void 0 ? void 0 : _c.items) === null || _d === void 0 ? void 0 : _d.forEach((item2) => {
1473
- const key = item2.Caption;
1474
- const fieldName = item2.ControlId;
1475
- const item = { caption: key, fieldName };
1476
- if (key === 'آدرس سایت' ||
1477
- (typeof mo[fieldName] === 'string' &&
1478
- (mo[fieldName].startsWith('https://') || mo[fieldName].startsWith('http://')))) {
1479
- item.type = 'Link';
1480
- }
1481
- if (typeof mo[fieldName] === 'object') {
1482
- if (mo[fieldName].$Type === 'Common.MetaObjectListWeb') {
1483
- item.type = 'MoList';
1484
- }
1485
- else if (mo[fieldName].Ext) {
1486
- item.type = 'Image';
1487
- }
1488
- else if (mo[fieldName].Files) {
1489
- item.type = 'Files';
1490
- }
1491
- else {
1492
- item.type = 'Relation';
1493
- }
1494
- }
1495
- this.secondArray.push(item);
1496
- });
1497
- this.rahnamayTasviri = this._sanitizer.bypassSecurityTrustResourceUrl(mo[$FieldDict['راهنمای تصویری']]);
1498
- if (this.rahnamayTasviri) {
1499
- this.israhnamayTasviri = true;
1500
- }
1501
- // this.firstArray = filteredControls.slice(0, controlCountMiddle);
1502
- // this.secondArray = filteredControls.slice(controlCountMiddle, controlCount);
1503
- this.khadamatmortabet = (_f = (_e = mo[$FieldDict['خدمات مرتبط']]) === null || _e === void 0 ? void 0 : _e.MoDataList) !== null && _f !== void 0 ? _f : [];
1504
- this.khadamatmortabetReport = mo[$FieldDict['خدمات مرتبط']];
1505
- // this.isOdd = controlCount % 2 === 0;
1506
- this.isOdd = false;
1507
- }
1508
- }
1509
- ServiceDeskServcieDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskServcieDetailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1510
- ServiceDeskServcieDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ServiceDeskServcieDetailComponent, selector: "bdc-service-desk-servcie-detail", viewQueries: [{ propertyName: "tabContainerRef", first: true, predicate: ["tabContainerRef"], descendants: true }, { propertyName: "tablesRef", predicate: ["tablesRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-dynamic-page [size]=\"isMobile ? 'small' : 'large'\">\n <fd-tab-list\n [collapseOverflow]=\"true\"\n [stackContent]=\"false\"\n maxContentHeight=\"auto\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n #tablist\n >\n <fd-tab [title]=\"'\u0634\u0646\u0627\u0633\u0646\u0627\u0645\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\" selected>\n <fd-dynamic-page-content>\n <fd-layout-grid class=\"row\" style=\"margin: 0\">\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderTable;\n context: {\n $implicit: firstArray,\n showKhadamatMortabet: isOdd,\n classNames: 'firstTable'\n }\n \"\n >\n </ng-container>\n </div>\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderTable;\n context: {\n $implicit: secondArray,\n showKhadamatMortabet: !isOdd,\n classNames: 'secondTable'\n }\n \"\n >\n </ng-container>\n </div>\n </fd-layout-grid>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab [title]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab [title]=\"'\u0634\u0631\u0627\u064A\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n <bsu-layout-control\n *ngIf=\"'\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab [title]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u062F\u0633\u062A\u06AF\u0627\u0647 \u0647\u0627\u06CC \u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u062F\u0647\u0646\u062F\u0647' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab\n [title]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\n *ngIf=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n >\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"configUi\"\n [caption]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n </fd-tab-list>\n\n <fd-dynamic-page-footer> </fd-dynamic-page-footer>\n</fd-dynamic-page>\n\n<ng-template #renderTable let-array let-showKhadamatMortabet=\"showKhadamatMortabet\" let-classNames=\"classNames\">\n <table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\n <ng-container *ngFor=\"let controlItem of array\">\n <tr>\n <th>{{ controlItem.caption | bbbTranslate }}</th>\n <td>\n <ng-container [ngSwitch]=\"controlItem.type\">\n <ng-container *ngSwitchCase=\"'Link'\">\n <a dir=\"ltr\" target=\"_blank\" [href]=\"mo[controlItem.fieldName]\">{{\n mo[controlItem.fieldName]\n }}</a></ng-container\n >\n <ng-container *ngSwitchCase=\"'Relation'\">\n {{ controlItem.fieldName | val: mo:true | bbbTranslate }}</ng-container\n >\n <ng-container *ngSwitchCase=\"'MoList'\">\n <div *ngFor=\"let item of mo[controlItem.fieldName]?.MoDataList\" class=\"links\">\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\" style=\"color: #0854a0\"></fd-icon>\n <!-- <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon> -->\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Image'\"> {{ mo[controlItem.fieldName].Ext }}</ng-container>\n <ng-container *ngSwitchCase=\"'Files'\"> {{ mo[controlItem.fieldName].Files }}</ng-container>\n <ng-container *ngSwitchDefault>\n {{ mo[controlItem.fieldName + '$Caption'] || mo[controlItem.fieldName] | bbbTranslate }}\n </ng-container>\n </ng-container>\n </td>\n </tr>\n </ng-container>\n <!-- <ng-container *ngIf=\"showKhadamatMortabet\">\n <tr>\n <th>\u062E\u062F\u0645\u0627\u062A \u0645\u0631\u062A\u0628\u0637</th>\n <td>\n <div class=\"links\" *ngFor=\"let item of khadamatmortabet\">\n <a (click)=\"onKhadamatMortabet(item)\">{{ item.$Caption }}</a>\n </div>\n </td>\n </tr>\n </ng-container> -->\n </table>\n</ng-template>\n", styles: ["table{background-color:var(--sapBaseColor)}.cell{font-size:14px}.bod{border-bottom:1px solid gray;border-right:1px solid gray;height:30px;line-height:30px}.bod :first{border-right:0;border-bottom:0}.anwser{line-height:30px;padding:10px;text-align:justify}.box{padding:0 40px 10px 10px;line-height:30px;display:flex;flex-direction:column;column-count:2;flex-wrap:wrap;height:180px;overflow:hidden}.faq-item-link{font-size:16px;padding-right:25px;cursor:pointer;color:gray}.faq-item-link a{color:gray;cursor:pointer}.faq-item-link a:hover{text-decoration:underline!important}.law-page-header{background:#fff;color:#0854a0;font-size:1.3rem;font-weight:500;padding:5px 15px}.wrapper{border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}table.table-grid{font-family:arial,sans-serif;border-collapse:collapse;width:100%;direction:rtl}.table-grid td,.table-grid th{border:1px solid grey;text-align:left;padding:12px 8px;text-align:right}.table-grid th{background-color:#e2e2e2;font-size:.825rem;font-weight:500;vertical-align:middle;width:150px;font-family:IRANYekanDigits}.table-grid td{font-size:.825rem;vertical-align:middle;font-family:IRANYekanDigits}@media only screen and (max-width: 992px){.secondTable tr:first-child td,.secondTable tr:first-child th{border-top:0}}@media only screen and (min-width: 992px){.secondTable th{border-right:0}}.fd-icon{font-size:2rem;color:#0854a0;padding-left:10px}.links a{line-height:25px;cursor:pointer;display:inline;color:#32363a;vertical-align:top}.links a:hover{text-decoration:underline!important;color:#000}.fd-icon-link{font-size:1rem;padding-left:5px}.VideoGuide{max-width:1280px;margin:0 auto;width:auto;text-align:center}.h_iframe-aparat_embed_frame{position:relative}.h_iframe-aparat_embed_frame .ratio{display:block;width:100%;height:auto}.h_iframe-aparat_embed_frame iframe{position:absolute;top:0;left:0;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i3$2.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"] }, { kind: "component", type: i3$3.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["role", "ariaLabel", "background", "autoResponsive", "size", "offset", "expandContent"] }, { kind: "component", type: i3$3.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i3$3.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i8$1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i5$3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i5$3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: i2$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i2$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "pipe", type: i1.MoValuePipe, name: "val" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1511
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskServcieDetailComponent, decorators: [{
1512
- type: Component,
1513
- args: [{ selector: 'bdc-service-desk-servcie-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-dynamic-page [size]=\"isMobile ? 'small' : 'large'\">\n <fd-tab-list\n [collapseOverflow]=\"true\"\n [stackContent]=\"false\"\n maxContentHeight=\"auto\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n #tablist\n >\n <fd-tab [title]=\"'\u0634\u0646\u0627\u0633\u0646\u0627\u0645\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\" selected>\n <fd-dynamic-page-content>\n <fd-layout-grid class=\"row\" style=\"margin: 0\">\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderTable;\n context: {\n $implicit: firstArray,\n showKhadamatMortabet: isOdd,\n classNames: 'firstTable'\n }\n \"\n >\n </ng-container>\n </div>\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"6\" [colLg]=\"6\" [colXl]=\"6\" style=\"padding: 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderTable;\n context: {\n $implicit: secondArray,\n showKhadamatMortabet: !isOdd,\n classNames: 'secondTable'\n }\n \"\n >\n </ng-container>\n </div>\n </fd-layout-grid>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab [title]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u067E\u06CC\u0634\u0646\u06CC\u0627\u0632\u0647\u0627\u06CC \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab [title]=\"'\u0634\u0631\u0627\u064A\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0634\u0631\u0627\u06CC\u0637 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0645\u0631\u0627\u062D\u0644 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n <bsu-layout-control\n *ngIf=\"'\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0641\u0631\u0622\u06CC\u0646\u062F \u0645\u062C\u0648\u0632' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0645\u062F\u0627\u0631\u06A9 \u0645\u0648\u0631\u062F \u0646\u06CC\u0627\u0632 \u0627\u062E\u0630 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0647\u0632\u06CC\u0646\u0647 \u0647\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab [title]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0645\u0628\u0627\u0646\u06CC \u0642\u0627\u0646\u0648\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647 \u062E\u062F\u0645\u062A' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0648\u0627\u062D\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0627\u0631\u0627\u0626\u0647 \u062F\u0647\u0646\u062F\u0647' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n\n <fd-tab [title]=\"'\u062F\u0633\u062A\u06AF\u0627\u0647 \u0647\u0627\u06CC \u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u062F\u0647\u0646\u062F\u0647' | bbbTranslate\">\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"'\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | controlUi: layout94 as configUi\"\n [caption]=\"'\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n <fd-tab\n [title]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\n *ngIf=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | controlUi: layout94 as configUi\"\n >\n <fd-dynamic-page-content>\n <bsu-layout-control\n *ngIf=\"configUi\"\n [caption]=\"'SLA \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u062F\u0645\u062A' | bbbTranslate\"\n [config]=\"configUi\"\n ></bsu-layout-control>\n </fd-dynamic-page-content>\n </fd-tab>\n </fd-tab-list>\n\n <fd-dynamic-page-footer> </fd-dynamic-page-footer>\n</fd-dynamic-page>\n\n<ng-template #renderTable let-array let-showKhadamatMortabet=\"showKhadamatMortabet\" let-classNames=\"classNames\">\n <table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\n <ng-container *ngFor=\"let controlItem of array\">\n <tr>\n <th>{{ controlItem.caption | bbbTranslate }}</th>\n <td>\n <ng-container [ngSwitch]=\"controlItem.type\">\n <ng-container *ngSwitchCase=\"'Link'\">\n <a dir=\"ltr\" target=\"_blank\" [href]=\"mo[controlItem.fieldName]\">{{\n mo[controlItem.fieldName]\n }}</a></ng-container\n >\n <ng-container *ngSwitchCase=\"'Relation'\">\n {{ controlItem.fieldName | val: mo:true | bbbTranslate }}</ng-container\n >\n <ng-container *ngSwitchCase=\"'MoList'\">\n <div *ngFor=\"let item of mo[controlItem.fieldName]?.MoDataList\" class=\"links\">\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\" style=\"color: #0854a0\"></fd-icon>\n <!-- <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon> -->\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Image'\"> {{ mo[controlItem.fieldName].Ext }}</ng-container>\n <ng-container *ngSwitchCase=\"'Files'\"> {{ mo[controlItem.fieldName].Files }}</ng-container>\n <ng-container *ngSwitchDefault>\n {{ mo[controlItem.fieldName + '$Caption'] || mo[controlItem.fieldName] | bbbTranslate }}\n </ng-container>\n </ng-container>\n </td>\n </tr>\n </ng-container>\n <!-- <ng-container *ngIf=\"showKhadamatMortabet\">\n <tr>\n <th>\u062E\u062F\u0645\u0627\u062A \u0645\u0631\u062A\u0628\u0637</th>\n <td>\n <div class=\"links\" *ngFor=\"let item of khadamatmortabet\">\n <a (click)=\"onKhadamatMortabet(item)\">{{ item.$Caption }}</a>\n </div>\n </td>\n </tr>\n </ng-container> -->\n </table>\n</ng-template>\n", styles: ["table{background-color:var(--sapBaseColor)}.cell{font-size:14px}.bod{border-bottom:1px solid gray;border-right:1px solid gray;height:30px;line-height:30px}.bod :first{border-right:0;border-bottom:0}.anwser{line-height:30px;padding:10px;text-align:justify}.box{padding:0 40px 10px 10px;line-height:30px;display:flex;flex-direction:column;column-count:2;flex-wrap:wrap;height:180px;overflow:hidden}.faq-item-link{font-size:16px;padding-right:25px;cursor:pointer;color:gray}.faq-item-link a{color:gray;cursor:pointer}.faq-item-link a:hover{text-decoration:underline!important}.law-page-header{background:#fff;color:#0854a0;font-size:1.3rem;font-weight:500;padding:5px 15px}.wrapper{border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}table.table-grid{font-family:arial,sans-serif;border-collapse:collapse;width:100%;direction:rtl}.table-grid td,.table-grid th{border:1px solid grey;text-align:left;padding:12px 8px;text-align:right}.table-grid th{background-color:#e2e2e2;font-size:.825rem;font-weight:500;vertical-align:middle;width:150px;font-family:IRANYekanDigits}.table-grid td{font-size:.825rem;vertical-align:middle;font-family:IRANYekanDigits}@media only screen and (max-width: 992px){.secondTable tr:first-child td,.secondTable tr:first-child th{border-top:0}}@media only screen and (min-width: 992px){.secondTable th{border-right:0}}.fd-icon{font-size:2rem;color:#0854a0;padding-left:10px}.links a{line-height:25px;cursor:pointer;display:inline;color:#32363a;vertical-align:top}.links a:hover{text-decoration:underline!important;color:#000}.fd-icon-link{font-size:1rem;padding-left:5px}.VideoGuide{max-width:1280px;margin:0 auto;width:auto;text-align:center}.h_iframe-aparat_embed_frame{position:relative}.h_iframe-aparat_embed_frame .ratio{display:block;width:100%;height:auto}.h_iframe-aparat_embed_frame iframe{position:absolute;top:0;left:0;width:100%;height:100%}\n"] }]
1514
- }], propDecorators: { tabContainerRef: [{
1515
- type: ViewChild,
1516
- args: ['tabContainerRef']
1517
- }], tablesRef: [{
1518
- type: ViewChildren,
1519
- args: ['tablesRef']
1520
- }] } });
1521
-
1522
- class ServiceDeskViewOfServicesComponent extends ReportViewBaseComponent {
1523
- ngOnInit() {
1524
- var _a;
1525
- super.ngOnInit();
1526
- this.fieldIcon = this.viewSetting.FieldIcon;
1527
- this.fieldTitle = this.viewSetting.FieldTitle;
1528
- this.fieldDynamicCommand = this.viewSetting.FieldDynamicCommand;
1529
- (_a = this.contextMenuItems) === null || _a === void 0 ? void 0 : _a.forEach((c) => {
1530
- var _a;
1531
- const parameters = (_a = c.Command.CustomUi) === null || _a === void 0 ? void 0 : _a.Parameters;
1532
- if (parameters) {
1533
- // parameters.OnlyIcon = true;
1534
- }
1535
- });
1536
- }
1537
- onRowClick2(e, dynamicCommand) {
1538
- if (dynamicCommand) {
1539
- return;
1540
- }
1541
- super.onRowClick(e);
1542
- }
1543
- }
1544
- ServiceDeskViewOfServicesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskViewOfServicesComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1545
- ServiceDeskViewOfServicesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ServiceDeskViewOfServicesComponent, selector: "bdc-service-desk-view-of-services", usesInheritance: true, ngImport: i0, template: "<div class=\"services\">\n <div class=\"service-list\">\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <ng-container *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let i = index\">\n <div *ngIf=\"mo.$Group || mo.$Group === ''\" [fdLayoutGridCol]=\"12\">\n <h3\n fd-title\n style=\"\n padding: 0 0 0.4rem 0;\n border-bottom: var(--sapList_BorderWidth) solid var(--sapList_BorderColor);\n \"\n >\n {{ mo.$Group }}\n </h3>\n </div>\n <div *ngIf=\"!mo.$Group\" [fdLayoutGridCol]=\"12\" [colSm]=\"12\" [colMd]=\"3\" [colLg]=\"3\" [colXl]=\"3\">\n <div class=\"item\">\n <ng-container\n *ngTemplateOutlet=\"\n dynamicCommand;\n context: {\n $implicit: mo,\n index: i,\n dynCommand: fieldDynamicCommand | rval: mo:allColumns,\n title: fieldTitle | rval: mo:allColumns | bbbTranslate\n }\n \"\n ></ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </fd-layout-grid>\n </div>\n</div>\n<ng-template #dynamicCommand let-mo let-index=\"index\" let-dynCommand=\"dynCommand\" let-title=\"title\">\n <button\n fd-button\n [dynCommand]=\"dynCommand\"\n [mo]=\"mo\"\n [enableCommand]=\"dynCommand\"\n style=\"width: 100%; max-height: 2.3rem; height: 2.3rem; border-radius: 0\"\n [fdType]=\"'emphasized'\"\n (click)=\"onRowClick2({ mo, index },dynCommand)\"\n [title]=\"title\"\n >\n <span class=\"item-icon\">\n <fd-icon glyph=\"product\"></fd-icon>\n </span>\n <span class=\"item-content\"> {{ title }}</span>\n <span class=\"item-icon-arrow\">\n <fd-icon *ngIf=\"fieldIcon\" [glyph]=\"fieldIcon\"></fd-icon>\n </span>\n </button>\n <div style=\"padding: 10px; border-top: 1px solid #ccc\">\n <bsu-ulv-context-menu\n [disableOverflowContextMenu]=\"true\"\n [mo]=\"mo\"\n [index]=\"index\"\n [styleIndex]=\"mo.$StyleIndex\"\n [menuItems]=\"contextMenuItems\"\n [allColumns]=\"allColumns\"\n (commandClick)=\"this.ulvCommandClick.emit({ mo, index })\"\n ></bsu-ulv-context-menu>\n </div>\n</ng-template>\n", styles: [":host .b-b{padding-right:5px;padding-top:5px}bsu-ulv-context-menu{flex-wrap:wrap;row-gap:5px}.item{position:relative;border:1px solid #ccc}.item a{background:#0078d7;cursor:pointer;display:flex;padding:10px 5px;flex-direction:column;cursor:pointer!important}.item a:hover{background:#67b4f3}fd-icon{font-size:1.25rem;color:#fff}.item .item-content{color:#fff;margin-left:35px;margin-right:25px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}.item .item-icon{position:absolute;right:5px;top:5px}.item .item-icon-arrow{position:absolute;left:16px;top:9px}.item .item-icon-arrow fd-icon{font-size:1rem;color:#fff}.exe_cell{margin-top:10px;padding:0 5px}.service-list{margin-top:20px}.exe_cell:nth-child(1),.exe_cell:nth-child(2),.exe_cell:nth-child(3),.exe_cell:nth-child(4){margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.DynamicCommandDirective, selector: "[dynCommand]", inputs: ["dynCommand", "mo", "enableCommand"], outputs: ["commandClick"] }, { kind: "component", type: i3$2.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i8$1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i5$3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i5$3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i5$3.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i4$3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1546
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskViewOfServicesComponent, decorators: [{
1547
- type: Component,
1548
- args: [{ selector: 'bdc-service-desk-view-of-services', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"services\">\n <div class=\"service-list\">\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <ng-container *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let i = index\">\n <div *ngIf=\"mo.$Group || mo.$Group === ''\" [fdLayoutGridCol]=\"12\">\n <h3\n fd-title\n style=\"\n padding: 0 0 0.4rem 0;\n border-bottom: var(--sapList_BorderWidth) solid var(--sapList_BorderColor);\n \"\n >\n {{ mo.$Group }}\n </h3>\n </div>\n <div *ngIf=\"!mo.$Group\" [fdLayoutGridCol]=\"12\" [colSm]=\"12\" [colMd]=\"3\" [colLg]=\"3\" [colXl]=\"3\">\n <div class=\"item\">\n <ng-container\n *ngTemplateOutlet=\"\n dynamicCommand;\n context: {\n $implicit: mo,\n index: i,\n dynCommand: fieldDynamicCommand | rval: mo:allColumns,\n title: fieldTitle | rval: mo:allColumns | bbbTranslate\n }\n \"\n ></ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </fd-layout-grid>\n </div>\n</div>\n<ng-template #dynamicCommand let-mo let-index=\"index\" let-dynCommand=\"dynCommand\" let-title=\"title\">\n <button\n fd-button\n [dynCommand]=\"dynCommand\"\n [mo]=\"mo\"\n [enableCommand]=\"dynCommand\"\n style=\"width: 100%; max-height: 2.3rem; height: 2.3rem; border-radius: 0\"\n [fdType]=\"'emphasized'\"\n (click)=\"onRowClick2({ mo, index },dynCommand)\"\n [title]=\"title\"\n >\n <span class=\"item-icon\">\n <fd-icon glyph=\"product\"></fd-icon>\n </span>\n <span class=\"item-content\"> {{ title }}</span>\n <span class=\"item-icon-arrow\">\n <fd-icon *ngIf=\"fieldIcon\" [glyph]=\"fieldIcon\"></fd-icon>\n </span>\n </button>\n <div style=\"padding: 10px; border-top: 1px solid #ccc\">\n <bsu-ulv-context-menu\n [disableOverflowContextMenu]=\"true\"\n [mo]=\"mo\"\n [index]=\"index\"\n [styleIndex]=\"mo.$StyleIndex\"\n [menuItems]=\"contextMenuItems\"\n [allColumns]=\"allColumns\"\n (commandClick)=\"this.ulvCommandClick.emit({ mo, index })\"\n ></bsu-ulv-context-menu>\n </div>\n</ng-template>\n", styles: [":host .b-b{padding-right:5px;padding-top:5px}bsu-ulv-context-menu{flex-wrap:wrap;row-gap:5px}.item{position:relative;border:1px solid #ccc}.item a{background:#0078d7;cursor:pointer;display:flex;padding:10px 5px;flex-direction:column;cursor:pointer!important}.item a:hover{background:#67b4f3}fd-icon{font-size:1.25rem;color:#fff}.item .item-content{color:#fff;margin-left:35px;margin-right:25px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}.item .item-icon{position:absolute;right:5px;top:5px}.item .item-icon-arrow{position:absolute;left:16px;top:9px}.item .item-icon-arrow fd-icon{font-size:1rem;color:#fff}.exe_cell{margin-top:10px;padding:0 5px}.service-list{margin-top:20px}.exe_cell:nth-child(1),.exe_cell:nth-child(2),.exe_cell:nth-child(3),.exe_cell:nth-child(4){margin-top:10px}\n"] }]
1549
- }] });
1550
-
1551
- class ServiceDeskCardContentMojavezhayAkhzShodeComponent extends BaseComponent {
1552
- ngOnInit() {
1553
- super.ngOnInit();
1554
- this.fieldTitle = this.parameters.FieldTitle;
1555
- this.titleOfValue = this.parameters.TitleOfValue;
1556
- this.fieldValue = this.parameters.FieldValue;
1557
- }
1558
- }
1559
- ServiceDeskCardContentMojavezhayAkhzShodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskCardContentMojavezhayAkhzShodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1560
- ServiceDeskCardContentMojavezhayAkhzShodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ServiceDeskCardContentMojavezhayAkhzShodeComponent, selector: "bdc-service-desk-card-content-mojavezhay-akhz-shode", inputs: { mo: "mo", allColumns: "allColumns", parameters: "parameters", rtl: "rtl" }, usesInheritance: true, ngImport: i0, template: "<div style=\"display: flex; flex-direction: row; width: 100%\">\r\n <h2\r\n fd-title\r\n style=\"\r\n width: 60%;\r\n text-align: right;\r\n font-size: 12px;\r\n font-weight: 600;\r\n padding: 0px 16px 0 0;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n \"\r\n >\r\n {{ fieldTitle | rval: mo:allColumns:true }}\r\n </h2>\r\n <h3\r\n fd-title\r\n style=\"\r\n width: 40%;\r\n text-align: left;\r\n font-size: 12px;\r\n font-weight: 600;\r\n padding: 0px 5px 0 10px;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n display: flex;\r\n \"\r\n >\r\n <div style=\"width: 100%; font-weight: 400\">{{ titleOfValue }}:</div>\r\n <div style=\"padding-right: 5px; text-align: left\">\r\n {{ fieldValue | rval: mo:allColumns }}\r\n </div>\r\n </h3>\r\n</div>\r\n", styles: [":host{display:flex;align-items:center;padding:10px}\n"], dependencies: [{ kind: "component", type: i4$3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1561
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskCardContentMojavezhayAkhzShodeComponent, decorators: [{
1562
- type: Component,
1563
- args: [{ selector: 'bdc-service-desk-card-content-mojavezhay-akhz-shode', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div style=\"display: flex; flex-direction: row; width: 100%\">\r\n <h2\r\n fd-title\r\n style=\"\r\n width: 60%;\r\n text-align: right;\r\n font-size: 12px;\r\n font-weight: 600;\r\n padding: 0px 16px 0 0;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n \"\r\n >\r\n {{ fieldTitle | rval: mo:allColumns:true }}\r\n </h2>\r\n <h3\r\n fd-title\r\n style=\"\r\n width: 40%;\r\n text-align: left;\r\n font-size: 12px;\r\n font-weight: 600;\r\n padding: 0px 5px 0 10px;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n display: flex;\r\n \"\r\n >\r\n <div style=\"width: 100%; font-weight: 400\">{{ titleOfValue }}:</div>\r\n <div style=\"padding-right: 5px; text-align: left\">\r\n {{ fieldValue | rval: mo:allColumns }}\r\n </div>\r\n </h3>\r\n</div>\r\n", styles: [":host{display:flex;align-items:center;padding:10px}\n"] }]
1564
- }], propDecorators: { mo: [{
1565
- type: Input
1566
- }], allColumns: [{
1567
- type: Input
1568
- }], parameters: [{
1569
- type: Input
1570
- }], rtl: [{
1571
- type: Input
1572
- }] } });
1573
-
1574
- class CardHeaderBigImageTitleAndSubtitleComponent extends CardHeaderLogoTitleSubtitleComponent {
1575
- }
1576
- CardHeaderBigImageTitleAndSubtitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardHeaderBigImageTitleAndSubtitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1577
- CardHeaderBigImageTitleAndSubtitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CardHeaderBigImageTitleAndSubtitleComponent, selector: "bdc-card-header-big-image-title-and-subtitle", usesInheritance: true, ngImport: i0, template: "<fd-card-header [class.hide-border]=\"parameters.HideBorder\">\n <fd-avatar\n *ngIf=\"hasIcon\"\n [circle]=\"avatarCircle\"\n size=\"s\"\n ariaLabel=\"avatar image\"\n title=\"avatar image\"\n [glyph]=\"fontIcon\"\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\n ></fd-avatar>\n <div fd-card-title [style.justify-content]=\"'end'\">\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\n <fd-checkbox\n *ngIf=\"isCheckList\"\n [name]=\"mo.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\n ></fd-checkbox>\n <div\n *ngIf=\"!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0\"\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n [styleIndex]=\"styleIndex\"\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\n ></div>\n <h2\n #hEl\n class=\"fd-card__title\"\n [hostEl]=\"hEl\"\n [dbName]=\"titleDbName\"\n [styleIndex]=\"styleIndex\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ title }}\n </h2>\n </div>\n <ng-container *ngIf=\"canView\">\n <button\n fd-button\n (click)=\"events.emit({ title: 'rowClick' })\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n </ng-container>\n </div>\n\n <h3\n fd-card-subtitle\n #hEl\n [hostEl]=\"hEl\"\n [dbName]=\"subtitleDbName\"\n [styleIndex]=\"styleIndex\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ subtitle }}\n </h3>\n</fd-card-header>\n<div></div>\n", styles: [":host ::ng-deep .fd-card__header-text{padding:1rem}fd-card-header{cursor:default;display:flex;flex-direction:column;padding:0}fd-card-header fd-avatar{min-height:160px;max-height:160px;height:160px;width:283px;max-width:100%;min-width:100%}fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:1rem;font-weight:700}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}fd-card-header.hide-border{border-bottom:none!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3$2.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "directive", type: i3$2.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i4$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "directive", type: i5$2.CardTitleDirective, selector: "[fd-card-title]" }, { kind: "directive", type: i5$2.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i7$1.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values"], outputs: ["focusChange"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1578
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardHeaderBigImageTitleAndSubtitleComponent, decorators: [{
1579
- type: Component,
1580
- args: [{ selector: 'bdc-card-header-big-image-title-and-subtitle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card-header [class.hide-border]=\"parameters.HideBorder\">\n <fd-avatar\n *ngIf=\"hasIcon\"\n [circle]=\"avatarCircle\"\n size=\"s\"\n ariaLabel=\"avatar image\"\n title=\"avatar image\"\n [glyph]=\"fontIcon\"\n [image]=\"isIconImage ? (imageIcon?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) : ''\"\n ></fd-avatar>\n <div fd-card-title [style.justify-content]=\"'end'\">\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\n <fd-checkbox\n *ngIf=\"isCheckList\"\n [name]=\"mo.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\n ></fd-checkbox>\n <div\n *ngIf=\"!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0\"\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n [styleIndex]=\"styleIndex\"\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\n ></div>\n <h2\n #hEl\n class=\"fd-card__title\"\n [hostEl]=\"hEl\"\n [dbName]=\"titleDbName\"\n [styleIndex]=\"styleIndex\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ title }}\n </h2>\n </div>\n <ng-container *ngIf=\"canView\">\n <button\n fd-button\n (click)=\"events.emit({ title: 'rowClick' })\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n </ng-container>\n </div>\n\n <h3\n fd-card-subtitle\n #hEl\n [hostEl]=\"hEl\"\n [dbName]=\"subtitleDbName\"\n [styleIndex]=\"styleIndex\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ subtitle }}\n </h3>\n</fd-card-header>\n<div></div>\n", styles: [":host ::ng-deep .fd-card__header-text{padding:1rem}fd-card-header{cursor:default;display:flex;flex-direction:column;padding:0}fd-card-header fd-avatar{min-height:160px;max-height:160px;height:160px;width:283px;max-width:100%;min-width:100%}fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:1rem;font-weight:700}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}fd-card-header.hide-border{border-bottom:none!important}\n"] }]
1581
- }] });
1582
-
1583
- class ServiceDeskFormLayoutContentMojavezComponent extends FormPropsBaseComponent {
1584
- constructor() {
1585
- super(...arguments);
1586
- this.fieldsCaption = [];
1587
- }
1588
- ngOnInit() {
1589
- super.ngOnInit();
1590
- let fieldDict = [];
1591
- if (this.fieldDict) {
1592
- fieldDict = Object.keys(this.fieldDict);
1593
- }
1594
- if (fieldDict) {
1595
- fieldDict.forEach((key) => {
1596
- var _a;
1597
- if (this.fieldDict) {
1598
- const fieldName = this.fieldDict[key];
1599
- const item = { caption: key, fieldName, value: '' };
1600
- const customFiledUi = this._controlUiPipe.transform(key, this.layout94);
1601
- item.value = this.mo[fieldName];
1602
- const originalXtype = (_a = customFiledUi === null || customFiledUi === void 0 ? void 0 : customFiledUi.FieldUi) === null || _a === void 0 ? void 0 : _a.originalXtype;
1603
- if (key === 'آدرس سایت') {
1604
- item.type = 'Link';
1605
- }
1606
- if (this.mo[fieldName + '$Caption']) {
1607
- item.type = 'Caption';
1608
- item.value = this.mo[fieldName + '$Caption'];
1609
- }
1610
- else if (typeof item.value === 'object') {
1611
- if (item.value.$Type === 'Common.MetaObjectListWeb') {
1612
- item.type = 'MoList';
1613
- }
1614
- else if (item.value.Ext) {
1615
- item.type = 'Image';
1616
- }
1617
- else if (originalXtype === 'Ui.FileLinearListBox') {
1618
- item.type = 'Files';
1619
- }
1620
- else {
1621
- item.type = 'Relation';
1622
- }
1623
- if (key === 'خدمات قابل انجام') {
1624
- item.type = 'MoList2';
1625
- }
1626
- }
1627
- this.fieldsCaption.push(item);
1628
- }
1629
- });
1630
- }
1631
- this.fieldsCaption = this.fieldsCaption.filter((c) => c.caption !== 'عنوان مجوز' && c.caption !== 'نقش اشخاص در مجوز' && c.caption !== 'فرزند');
1632
- const controlCount = this.fieldsCaption.length;
1633
- const controlCountMiddle = Math.ceil(this.fieldsCaption.length / 2);
1634
- this.firstArray = this.fieldsCaption.slice(0, controlCountMiddle);
1635
- this.secondArray = this.fieldsCaption.slice(controlCountMiddle, controlCount);
1636
- this.isOdd = controlCount % 2 === 0;
1637
- }
1638
- ngAfterViewInit() {
1639
- super.ngAfterViewInit();
1640
- this.alignTablesTr();
1641
- }
1642
- onLink(item) {
1643
- if (item.F34) {
1644
- window.open(item.F42);
1645
- }
1646
- else {
1647
- BarsaApi.Bw.Msg.Info('سامانه ای تعریف نشده است');
1648
- }
1649
- }
1650
- onDownload(item) {
1651
- BarsaApi.Common.File.DownloadFileId(item.Id);
1652
- }
1653
- alignTablesTr() {
1654
- setTimeout(() => {
1655
- const tablesRef = this.tablesRef.toArray();
1656
- const firstTableEl = tablesRef[0].nativeElement;
1657
- const secondTableEl = tablesRef[1].nativeElement;
1658
- const trFirstTable = firstTableEl.querySelectorAll('tr');
1659
- const trSecondTable = secondTableEl.querySelectorAll('tr');
1660
- trFirstTable.forEach((tr, index) => {
1661
- if (index < trSecondTable.length) {
1662
- const trSecond = trSecondTable[index];
1663
- if (tr.offsetHeight > trSecond.offsetHeight) {
1664
- trSecond.style.height = `${tr.offsetHeight}px`;
1665
- }
1666
- else {
1667
- tr.style.height = `${trSecond.offsetHeight}px`;
1668
- }
1669
- }
1670
- });
1671
- }, 0);
1672
- }
1673
- }
1674
- ServiceDeskFormLayoutContentMojavezComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskFormLayoutContentMojavezComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1675
- ServiceDeskFormLayoutContentMojavezComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ServiceDeskFormLayoutContentMojavezComponent, selector: "bdc-service-desk-form-layout-content-mojavez", viewQueries: [{ propertyName: "tabContainerRef", first: true, predicate: ["tabContainerRef"], descendants: true }, { propertyName: "tablesRef", predicate: ["tablesRef"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<fd-layout-grid>\r\n <div [fdLayoutGridCol]=\"6\" style=\"padding: 0\">\r\n <ng-container *ngTemplateOutlet=\"renderTable; context: { $implicit: firstArray, classNames: 'firstTable' }\">\r\n </ng-container>\r\n </div>\r\n <div [fdLayoutGridCol]=\"6\" style=\"padding: 0\">\r\n <ng-container *ngTemplateOutlet=\"renderTable; context: { $implicit: secondArray, classNames: 'secondTable' }\">\r\n </ng-container>\r\n </div>\r\n</fd-layout-grid>\r\n\r\n<ng-template #renderTable let-array let-classNames=\"classNames\">\r\n <table fd-table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\r\n <ng-container *ngFor=\"let controlItem of array\">\r\n <tr fd-table-row>\r\n <th fd-tabel-cell>{{ controlItem.caption }}</th>\r\n <td fd-tabel-cell>\r\n <ng-container [ngSwitch]=\"controlItem.type\">\r\n <ng-container *ngSwitchCase=\"'Link'\">\r\n <a target=\"_blank\" [href]=\"controlItem.value\">{{ controlItem.value }}</a></ng-container\r\n >\r\n <ng-container *ngSwitchCase=\"'Relation'\">{{ controlItem.value.$Caption }}</ng-container>\r\n <ng-container *ngSwitchCase=\"'MoList'\">\r\n <div *ngFor=\"let item of controlItem.value.MoDataList\" class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon>\r\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'MoList2'\">\r\n <div *ngFor=\"let item of controlItem.value.MoDataList\" class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\"></fd-icon>\r\n <a (click)=\"onLink(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Caption'\"> {{ controlItem.value }}</ng-container>\r\n <ng-container *ngSwitchCase=\"'Image'\"> {{ controlItem.value.Ext }}</ng-container>\r\n <ng-container *ngSwitchCase=\"'Files'\">\r\n <div *ngFor=\"let item of controlItem.value.Files\" class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon>\r\n <a (click)=\"onDownload(item)\">{{ item.FileName }}</a>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ controlItem.value }}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n</ng-template>\r\n", styles: [".cell{font-size:14px}.bod{border-bottom:1px solid gray;border-right:1px solid gray;height:30px;line-height:30px}.bod :first{border-right:0;border-bottom:0}.anwser{line-height:30px;padding:10px;text-align:justify}.box{padding:0 40px 10px 10px;line-height:30px;display:flex;flex-direction:column;column-count:2;flex-wrap:wrap;height:180px;overflow:hidden}.faq-item-link{font-size:16px;padding-right:25px;cursor:pointer;color:gray}.faq-item-link a{color:gray;cursor:pointer}.faq-item-link a:hover{text-decoration:underline!important}.law-page-header{background:#fff;color:#0854a0;font-size:1.3rem;font-weight:500;padding:5px 15px}.wrapper{border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}table.table-grid{border-collapse:collapse;width:100%;direction:rtl;background-color:#fff}.table-grid td,.table-grid th{border:1px solid grey;text-align:left;padding:12px 8px;text-align:right}.table-grid th{background-color:#e2e2e2;font-size:.825rem;font-weight:500;vertical-align:middle;width:200px}.table-grid td{font-size:.825rem;vertical-align:middle}@media only screen and (max-width: 992px){.secondTable tr:first-child td,.secondTable tr:first-child th{border-top:0}}@media only screen and (min-width: 992px){.secondTable th{border-right:0}}.fd-icon{font-size:2rem;color:#0854a0;padding-left:10px}.links a{line-height:25px;cursor:pointer;display:inline;color:#32363a;vertical-align:top}.links a:hover{text-decoration:underline!important;color:#0012af}.fd-icon-link{font-size:1rem;padding-left:5px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i8$1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i5$3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i5$3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: i4$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i4$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1676
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ServiceDeskFormLayoutContentMojavezComponent, decorators: [{
1677
- type: Component,
1678
- args: [{ selector: 'bdc-service-desk-form-layout-content-mojavez', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-layout-grid>\r\n <div [fdLayoutGridCol]=\"6\" style=\"padding: 0\">\r\n <ng-container *ngTemplateOutlet=\"renderTable; context: { $implicit: firstArray, classNames: 'firstTable' }\">\r\n </ng-container>\r\n </div>\r\n <div [fdLayoutGridCol]=\"6\" style=\"padding: 0\">\r\n <ng-container *ngTemplateOutlet=\"renderTable; context: { $implicit: secondArray, classNames: 'secondTable' }\">\r\n </ng-container>\r\n </div>\r\n</fd-layout-grid>\r\n\r\n<ng-template #renderTable let-array let-classNames=\"classNames\">\r\n <table fd-table #tablesRef class=\"table-grid\" [ngClass]=\"classNames\">\r\n <ng-container *ngFor=\"let controlItem of array\">\r\n <tr fd-table-row>\r\n <th fd-tabel-cell>{{ controlItem.caption }}</th>\r\n <td fd-tabel-cell>\r\n <ng-container [ngSwitch]=\"controlItem.type\">\r\n <ng-container *ngSwitchCase=\"'Link'\">\r\n <a target=\"_blank\" [href]=\"controlItem.value\">{{ controlItem.value }}</a></ng-container\r\n >\r\n <ng-container *ngSwitchCase=\"'Relation'\">{{ controlItem.value.$Caption }}</ng-container>\r\n <ng-container *ngSwitchCase=\"'MoList'\">\r\n <div *ngFor=\"let item of controlItem.value.MoDataList\" class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon>\r\n <a (click)=\"onDownload(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'MoList2'\">\r\n <div *ngFor=\"let item of controlItem.value.MoDataList\" class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'chain-link'\"></fd-icon>\r\n <a (click)=\"onLink(item)\">{{ item.$Caption }}</a>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Caption'\"> {{ controlItem.value }}</ng-container>\r\n <ng-container *ngSwitchCase=\"'Image'\"> {{ controlItem.value.Ext }}</ng-container>\r\n <ng-container *ngSwitchCase=\"'Files'\">\r\n <div *ngFor=\"let item of controlItem.value.Files\" class=\"links\">\r\n <fd-icon class=\"fd-icon-link\" [glyph]=\"'pdf-attachment'\"></fd-icon>\r\n <a (click)=\"onDownload(item)\">{{ item.FileName }}</a>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ controlItem.value }}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n</ng-template>\r\n", styles: [".cell{font-size:14px}.bod{border-bottom:1px solid gray;border-right:1px solid gray;height:30px;line-height:30px}.bod :first{border-right:0;border-bottom:0}.anwser{line-height:30px;padding:10px;text-align:justify}.box{padding:0 40px 10px 10px;line-height:30px;display:flex;flex-direction:column;column-count:2;flex-wrap:wrap;height:180px;overflow:hidden}.faq-item-link{font-size:16px;padding-right:25px;cursor:pointer;color:gray}.faq-item-link a{color:gray;cursor:pointer}.faq-item-link a:hover{text-decoration:underline!important}.law-page-header{background:#fff;color:#0854a0;font-size:1.3rem;font-weight:500;padding:5px 15px}.wrapper{border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}table.table-grid{border-collapse:collapse;width:100%;direction:rtl;background-color:#fff}.table-grid td,.table-grid th{border:1px solid grey;text-align:left;padding:12px 8px;text-align:right}.table-grid th{background-color:#e2e2e2;font-size:.825rem;font-weight:500;vertical-align:middle;width:200px}.table-grid td{font-size:.825rem;vertical-align:middle}@media only screen and (max-width: 992px){.secondTable tr:first-child td,.secondTable tr:first-child th{border-top:0}}@media only screen and (min-width: 992px){.secondTable th{border-right:0}}.fd-icon{font-size:2rem;color:#0854a0;padding-left:10px}.links a{line-height:25px;cursor:pointer;display:inline;color:#32363a;vertical-align:top}.links a:hover{text-decoration:underline!important;color:#0012af}.fd-icon-link{font-size:1rem;padding-left:5px}\n"] }]
1679
- }], propDecorators: { tabContainerRef: [{
1680
- type: ViewChild,
1681
- args: ['tabContainerRef']
1682
- }], tablesRef: [{
1683
- type: ViewChildren,
1684
- args: ['tablesRef', { read: ElementRef }]
1685
- }] } });
1686
-
1687
- class UlvContextMenuItemShowFileContentComponent extends BaseFormToolbaritemPropsComponent {
1688
- constructor(_reportValuePipe, _cdr, _dialogService, _sanitize) {
1689
- super(_reportValuePipe, _cdr);
1690
- this._reportValuePipe = _reportValuePipe;
1691
- this._cdr = _cdr;
1692
- this._dialogService = _dialogService;
1693
- this._sanitize = _sanitize;
1694
- this.disabled = false;
1695
- }
1696
- ngOnInit() {
1697
- var _a;
1698
- super.ngOnInit();
1699
- const mo = this.mo;
1700
- this.text = this.parameters.ButtonText;
1701
- this.fdType = this.parameters.FdType$Caption;
1702
- this.compact = this.parameters.Compact;
1703
- this.icon = this.parameters.Icon;
1704
- this.iconOnly = this.parameters.IconOnly;
1705
- this.fileType = this._reportValuePipe.transform(this.parameters.FieldType, mo, this.allColumns); // نوع
1706
- this.file = this._reportValuePipe.transform(this.parameters.FieldFile, mo, this.allColumns);
1707
- this.videoUrl = this._reportValuePipe.transform(this.parameters.FieldVideoUrl, mo, this.allColumns);
1708
- if (this.fileType === '1' && ((_a = this.file.Files) === null || _a === void 0 ? void 0 : _a.length) === 0) {
1709
- this.disabled = true;
1710
- }
1711
- if (this.fileType === '2' && this.videoUrl) {
1712
- this.disabled = true;
1713
- }
1714
- }
1715
- openDialog(dialog) {
1716
- let finalUrl;
1717
- if (this.fileType === '1') {
1718
- finalUrl = this._sanitize.bypassSecurityTrustResourceUrl(BarsaApi.Common.File.CreateAttachmentUrl(this.file.Files[0].Id, true));
1719
- }
1720
- if (this.fileType === '2') {
1721
- finalUrl = this._sanitize.bypassSecurityTrustResourceUrl(this.videoUrl);
1722
- }
1723
- const isMobile = this.deviceName === 'mobile';
1724
- const x = {
1725
- data: {
1726
- url: finalUrl,
1727
- isVideo: this.fileType === '2',
1728
- responsivePadding: true,
1729
- mobile: isMobile
1730
- }
1731
- };
1732
- if (!isMobile) {
1733
- x.width = '60%';
1734
- x.height = '56%';
1735
- }
1736
- this._dialogService.open(dialog, x);
1737
- }
1738
- }
1739
- UlvContextMenuItemShowFileContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UlvContextMenuItemShowFileContentComponent, deps: [{ token: i1.MoReportValuePipe }, { token: i0.ChangeDetectorRef }, { token: i2$3.DialogService }, { token: i3$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
1740
- UlvContextMenuItemShowFileContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UlvContextMenuItemShowFileContentComponent, selector: "bdc-ulv-context-menu-item-show-file-content", usesInheritance: true, ngImport: i0, template: "<button\n fd-button\n [compact]=\"compact\"\n [label]=\"iconOnly ? '' : (text | bbbTranslate)\"\n [fdType]=\"fdType\"\n [glyph]=\"icon\"\n [compact]=\"compact\"\n (click)=\"openDialog(pdfDialog)\"\n></button>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #pdfDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTplRef>\n <fd-dialog-header>\n <ng-template fdTemplate=\"header\">\n <div fd-bar-left></div>\n <div fd-bar-right>\n <fd-button-bar\n *ngIf=\"dialogConfig.height !== '100vh'\"\n ariaLabel=\"fullscreen\"\n [glyph]=\"dialog.data.fullscreen ? 'exitfullscreen' : 'resize'\"\n fullscreenDialog\n [fullscreen]=\"dialog.data.fullscreen\"\n (fullscreenChanged)=\"dialog.data.fullscreen = $event\"\n [dialog]=\"dialog\"\n [dialogComponent]=\"dialogTplRef\"\n ></fd-button-bar>\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.dismiss()\"></fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <object\n *ngIf=\"!dialogConfig.data.isVideo\"\n [data]=\"dialogConfig.data.url\"\n type=\"application/pdf\"\n width=\"100%\"\n height=\"98%\"\n ></object>\n <video *ngIf=\"dialogConfig.data.isVideo\" controls style=\"width: 100%; height: 98%\">\n <source [src]=\"dialogConfig.data.url\" type=\"video/mp4\" />\n Your browser does not support HTML video.\n </video>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$2.FullscreenDialogDirective, selector: "[fullscreenDialog]", inputs: ["dialog", "dialogComponent", "fullscreen"], outputs: ["fullscreenChanged"] }, { kind: "directive", type: i4$2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i4$2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: i5.DeprecatedButtonContentDensityDirective, selector: "[fd-button][compact]" }, { kind: "component", type: i5$1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i5$1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i12.TemplateDirective, selector: "[fdTemplate]", inputs: ["fdTemplate"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1741
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UlvContextMenuItemShowFileContentComponent, decorators: [{
1742
- type: Component,
1743
- args: [{ selector: 'bdc-ulv-context-menu-item-show-file-content', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n fd-button\n [compact]=\"compact\"\n [label]=\"iconOnly ? '' : (text | bbbTranslate)\"\n [fdType]=\"fdType\"\n [glyph]=\"icon\"\n [compact]=\"compact\"\n (click)=\"openDialog(pdfDialog)\"\n></button>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #pdfDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTplRef>\n <fd-dialog-header>\n <ng-template fdTemplate=\"header\">\n <div fd-bar-left></div>\n <div fd-bar-right>\n <fd-button-bar\n *ngIf=\"dialogConfig.height !== '100vh'\"\n ariaLabel=\"fullscreen\"\n [glyph]=\"dialog.data.fullscreen ? 'exitfullscreen' : 'resize'\"\n fullscreenDialog\n [fullscreen]=\"dialog.data.fullscreen\"\n (fullscreenChanged)=\"dialog.data.fullscreen = $event\"\n [dialog]=\"dialog\"\n [dialogComponent]=\"dialogTplRef\"\n ></fd-button-bar>\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.dismiss()\"></fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <object\n *ngIf=\"!dialogConfig.data.isVideo\"\n [data]=\"dialogConfig.data.url\"\n type=\"application/pdf\"\n width=\"100%\"\n height=\"98%\"\n ></object>\n <video *ngIf=\"dialogConfig.data.isVideo\" controls style=\"width: 100%; height: 98%\">\n <source [src]=\"dialogConfig.data.url\" type=\"video/mp4\" />\n Your browser does not support HTML video.\n </video>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
1744
- }], ctorParameters: function () { return [{ type: i1.MoReportValuePipe }, { type: i0.ChangeDetectorRef }, { type: i2$3.DialogService }, { type: i3$4.DomSanitizer }]; } });
1745
-
1746
- class ResendVerificationCodeComponent extends FieldBaseComponent {
1747
- constructor() {
1748
- super(...arguments);
1749
- this.caption = '00:00';
1750
- this.timer = 1;
1751
- this.minutes = '0';
1752
- this.seconds = '0';
1753
- this.timeLeft = 120;
1754
- }
1755
- ngAfterViewInit() {
1756
- super.ngAfterViewInit();
1757
- this.caption = `(${this.caption})`;
1758
- this._startTimer();
1759
- }
1760
- ngOnDestroy() {
1761
- super.ngOnDestroy();
1762
- if (this.interval$) {
1763
- clearInterval(this.interval$);
1764
- }
1765
- }
1766
- onClick() {
1767
- this.context.fireEvent('click', this.context);
1768
- }
1769
- onStartTimer() {
1770
- this._startTimer();
1771
- }
1772
- _startTimer() {
1773
- this.interval$ = setInterval(() => {
1774
- if (this.timeLeft > 0) {
1775
- this.timeLeft--;
1776
- this.minutes = Math.floor(this.timeLeft / 60).toString();
1777
- this.seconds = Math.round(this.timeLeft % 60).toString();
1778
- this.minutes = Number(this.minutes) < 10 ? '0' + this.minutes : this.minutes;
1779
- this.seconds = Number(this.seconds) < 10 ? '0' + this.seconds : this.seconds;
1780
- this.caption = `(${this.minutes}:${this.seconds})`;
1781
- }
1782
- else {
1783
- this.timeLeft = 120;
1784
- this.caption = `${this.caption}`;
1785
- if (this.interval$ != null) {
1786
- clearInterval(this.interval$);
1787
- this.interval$ = null;
1788
- }
1789
- }
1790
- this._cdr.detectChanges();
1791
- }, 1000);
1792
- }
1793
- }
1794
- ResendVerificationCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ResendVerificationCodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1795
- ResendVerificationCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ResendVerificationCodeComponent, selector: "bdc-resend-verification-code", usesInheritance: true, ngImport: i0, template: "<button\r\n (click)=\"onClick()\"\r\n fd-button\r\n [attr.disabled]=\"interval$ === null ? null : true\"\r\n (click)=\"onStartTimer()\"\r\n [label]=\"'\u0627\u0631\u0633\u0627\u0644 \u0645\u062C\u062F\u062F' + caption\"\r\n></button>\r\n", styles: [""], dependencies: [{ kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1796
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ResendVerificationCodeComponent, decorators: [{
1797
- type: Component,
1798
- args: [{ selector: 'bdc-resend-verification-code', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n (click)=\"onClick()\"\r\n fd-button\r\n [attr.disabled]=\"interval$ === null ? null : true\"\r\n (click)=\"onStartTimer()\"\r\n [label]=\"'\u0627\u0631\u0633\u0627\u0644 \u0645\u062C\u062F\u062F' + caption\"\r\n></button>\r\n" }]
1799
- }] });
1800
-
1801
- class CheckboxButtonComponent extends UiCheckBoxComponent {
1802
- ngOnInit() {
1803
- var _a, _b, _c;
1804
- super.ngOnInit();
1805
- this.trueIcon = (_a = this.parameters) === null || _a === void 0 ? void 0 : _a.TrueIcon;
1806
- this.fdType = (_b = this.parameters) === null || _b === void 0 ? void 0 : _b.FdType$Caption;
1807
- this.falseIcon = (_c = this.parameters) === null || _c === void 0 ? void 0 : _c.FalseIcon;
1808
- }
1809
- onClick() {
1810
- this._valueChanged(!this.value);
1811
- }
1812
- }
1813
- CheckboxButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CheckboxButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1814
- CheckboxButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CheckboxButtonComponent, selector: "bdc-checkbox-button", usesInheritance: true, ngImport: i0, template: "<button\r\n [disabled]=\"(disableOrReadonly$ | async)!!\"\r\n fd-button\r\n [glyph]=\"value ? trueIcon : falseIcon\"\r\n [fdType]=\"fdType\"\r\n (click)=\"onClick()\"\r\n></button>\r\n", styles: [":host{display:flex;height:100%;align-items:center}button{margin-top:.25rem;margin-bottom:.25rem}\n"], dependencies: [{ kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1815
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CheckboxButtonComponent, decorators: [{
1816
- type: Component,
1817
- args: [{ selector: 'bdc-checkbox-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n [disabled]=\"(disableOrReadonly$ | async)!!\"\r\n fd-button\r\n [glyph]=\"value ? trueIcon : falseIcon\"\r\n [fdType]=\"fdType\"\r\n (click)=\"onClick()\"\r\n></button>\r\n", styles: [":host{display:flex;height:100%;align-items:center}button{margin-top:.25rem;margin-bottom:.25rem}\n"] }]
1818
- }] });
1819
-
1820
- class BarcodeFormatPipe {
1821
- transform(value) {
1822
- let format = '';
1823
- for (const enumMember of Object.keys(BarcodeFormat)) {
1824
- const isValueProperty = parseInt(enumMember, 10) >= 0;
1825
- if (isValueProperty && Number(enumMember) === value) {
1826
- format = BarcodeFormat[enumMember];
1827
- }
1828
- }
1829
- return format;
1830
- }
1831
- }
1832
- BarcodeFormatPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1833
- BarcodeFormatPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: BarcodeFormatPipe, name: "barcodeFormat" });
1834
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarcodeFormatPipe, decorators: [{
1835
- type: Pipe,
1836
- args: [{
1837
- name: 'barcodeFormat'
1838
- }]
1839
- }] });
1840
-
1841
- class ReportTabViewComponent extends ReportViewBaseComponent {
1842
- ngOnInit() {
1843
- super.ngOnInit();
1844
- this.arrowRight = this.rtl ? 'navigation-left-arrow' : 'navigation-right-arrow';
1845
- this.fieldTitle = this.viewSetting.FieldTitle;
1846
- this.fieldIcon = this.viewSetting.FieldIcon;
1847
- this.fieldState = this.viewSetting.FieldState;
1848
- this.mode = this.viewSetting.Mode$Caption;
1849
- }
1850
- onSelectedTabChange(e) {
1851
- const index = this.moDataList.findIndex((c) => c.Id === e.id);
1852
- const mo = this.moDataList[index];
1853
- super.onRowCheck({ mo, index });
1854
- }
1855
- }
1856
- ReportTabViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportTabViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1857
- ReportTabViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ReportTabViewComponent, selector: "bdc-report-tab-view", usesInheritance: true, ngImport: i0, template: "<fd-tab-list [expandOverflowText]=\"'More' | bbbTranslate\" (selectedTabChange)=\"onSelectedTabChange($event)\">\n <fd-tab *ngFor=\"let mo of moDataList\" [title]=\"mo.$Caption\" [id]=\"mo.Id\"> </fd-tab>\n</fd-tab-list>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i2$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1858
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportTabViewComponent, decorators: [{
1859
- type: Component,
1860
- args: [{ selector: 'bdc-report-tab-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-tab-list [expandOverflowText]=\"'More' | bbbTranslate\" (selectedTabChange)=\"onSelectedTabChange($event)\">\n <fd-tab *ngFor=\"let mo of moDataList\" [title]=\"mo.$Caption\" [id]=\"mo.Id\"> </fd-tab>\n</fd-tab-list>\n" }]
1861
- }] });
1862
-
1863
- class ReportLineChartViewComponent extends ReportViewBaseComponent {
1864
- }
1865
- ReportLineChartViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportLineChartViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1866
- ReportLineChartViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ReportLineChartViewComponent, selector: "bdc-report-line-chart-view", usesInheritance: true, ngImport: i0, template: "<div\r\n beChartLineTime\r\n [moDataList]=\"moDataList\"\r\n [groupByField]=\"'SlaveAddress'\"\r\n [dateTimeField]=\"'DateTime'\"\r\n [valueField]=\"'Value'\"\r\n></div>\r\n", styles: [":host{height:100vh;display:block}\n"], dependencies: [{ kind: "directive", type: i2$5.ChartLineTimeBaseDirective, selector: "[beChartLineTime]", inputs: ["chartOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1867
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportLineChartViewComponent, decorators: [{
1868
- type: Component,
1869
- args: [{ selector: 'bdc-report-line-chart-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n beChartLineTime\r\n [moDataList]=\"moDataList\"\r\n [groupByField]=\"'SlaveAddress'\"\r\n [dateTimeField]=\"'DateTime'\"\r\n [valueField]=\"'Value'\"\r\n></div>\r\n", styles: [":host{height:100vh;display:block}\n"] }]
1870
- }] });
1871
-
1872
- class CardHeaderKpiComponent extends CardHeaderLogoTitleSubtitleComponent {
1873
- ngOnInit() {
1874
- var _a;
1875
- const parentField = (_a = this.parameters.InheritanceInfo) === null || _a === void 0 ? void 0 : _a.ParentFieldName;
1876
- if (parentField) {
1877
- const val = this.parameters[parentField];
1878
- if (val) {
1879
- Object.keys(val).forEach((c) => {
1880
- if (!c.startsWith('$') && c !== 'Id') {
1881
- this.parameters[c] = val[c];
1882
- }
1883
- });
1884
- }
1885
- }
1886
- super.ngOnInit();
1887
- const parameters = this.parameters;
1888
- if (parameters != null) {
1889
- this.kpiValue = this._rval.transform(parameters.KpiValue, this.mo, this.allColumns, true);
1890
- this.kpiStatus = this._rval.transform(parameters.KpiStatus, this.mo, this.allColumns, true);
1891
- this.kpiAnalyticalLabel = parameters.KpiAnalyticalLabel;
1892
- this.kpiAnalayticalSymbol = this._rval.transform(parameters.KpiAnalayticalSymbol, this.mo, this.allColumns);
1893
- this.kpiAnalyticalContent = this._rval.transform(parameters.KpiAnalyticalContent, this.mo, this.allColumns);
1894
- }
1895
- }
1896
- }
1897
- CardHeaderKpiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardHeaderKpiComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1898
- CardHeaderKpiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CardHeaderKpiComponent, selector: "bdc-card-header-kpi", usesInheritance: true, ngImport: i0, template: "<fd-card-header>\n <div fd-card-title [style.justify-content]=\"'end'\">\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\n <fd-checkbox\n *ngIf=\"isCheckList\"\n [name]=\"mo.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\n ></fd-checkbox>\n <h2\n #hEl\n class=\"fd-card__title\"\n [hostEl]=\"hEl\"\n [dbName]=\"titleDbName\"\n [styleIndex]=\"styleIndex\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ title }}\n </h2>\n <div\n *ngIf=\"!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0\"\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [styleIndex]=\"styleIndex\"\n [mo]=\"mo\"\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\n ></div>\n </div>\n <ng-container *ngIf=\"canView\">\n <button\n fd-button\n (click)=\"events.emit({ title: 'rowClick' })\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n </ng-container>\n </div>\n\n <fd-card-kpi-header>\n <strong fd-card-kpi-value [status]=\"kpiStatus\">{{ kpiValue }}</strong>\n <span\n fd-card-kpi-scale-icon\n [glyph]=\"kpiStatus === 'positive' ? 'up' : 'down'\"\n fd-object-status\n [status]=\"kpiStatus\"\n aria-label=\"up arrow\"\n title=\"up arrow\"\n ></span>\n <span fd-card-kpi-scale-text fd-object-status status=\"positive\">\u00B0C</span>\n\n <div fd-card-kpi-analytics>\n <label fd-card-kpi-analytics-label>{{ kpiAnalyticalLabel }}</label>\n <span fd-card-kpi-analytics-content>{{ kpiAnalyticalContent }}{{ kpiAnalayticalSymbol }}</span>\n </div>\n </fd-card-kpi-header>\n\n <h4 fd-card-second-subtitle>{{ subtitle }}</h4>\n</fd-card-header>\n", styles: ["fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:.9rem}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3$2.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "directive", type: i3$2.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "directive", type: i5$2.CardTitleDirective, selector: "[fd-card-title]" }, { kind: "directive", type: i5$2.CardSecondSubtitleDirective, selector: "[fd-card-second-subtitle]" }, { kind: "component", type: i5$2.CardKpiHeaderComponent, selector: "fd-card-kpi-header" }, { kind: "directive", type: i5$2.CardKpiValueDirective, selector: "[fd-card-kpi-value]", inputs: ["status"] }, { kind: "directive", type: i5$2.CardKpiScaleIconDirective, selector: "[fd-card-kpi-scale-icon]" }, { kind: "directive", type: i5$2.CardKpiScaleTextDirective, selector: "[fd-card-kpi-scale-text]" }, { kind: "directive", type: i5$2.CardKpiAnalyticsDirective, selector: "[fd-card-kpi-analytics]" }, { kind: "directive", type: i5$2.CardKpiAnalyticsLabelDirective, selector: "[fd-card-kpi-analytics-label]" }, { kind: "directive", type: i5$2.CardKpiAnalyticsContentDirective, selector: "[fd-card-kpi-analytics-content]" }, { kind: "component", type: i7$1.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values"], outputs: ["focusChange"] }, { kind: "component", type: i7$2.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1899
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardHeaderKpiComponent, decorators: [{
1900
- type: Component,
1901
- args: [{ selector: 'bdc-card-header-kpi', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card-header>\n <div fd-card-title [style.justify-content]=\"'end'\">\n <div style=\"display: flex; justify-content: start; flex-grow: 1\">\n <fd-checkbox\n *ngIf=\"isCheckList\"\n [name]=\"mo.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"events.emit({ title: 'rowCheck' })\"\n ></fd-checkbox>\n <h2\n #hEl\n class=\"fd-card__title\"\n [hostEl]=\"hEl\"\n [dbName]=\"titleDbName\"\n [styleIndex]=\"styleIndex\"\n [applyConditionalFormats]=\"conditionalFormats\"\n >\n {{ title }}\n </h2>\n <div\n *ngIf=\"!setting.ContextMenuInFooter && contextMenuItems && contextMenuItems.length > 0\"\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [styleIndex]=\"styleIndex\"\n [mo]=\"mo\"\n (commandClick)=\"events.emit({ title: 'ulvCommand' })\"\n ></div>\n </div>\n <ng-container *ngIf=\"canView\">\n <button\n fd-button\n (click)=\"events.emit({ title: 'rowClick' })\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n </ng-container>\n </div>\n\n <fd-card-kpi-header>\n <strong fd-card-kpi-value [status]=\"kpiStatus\">{{ kpiValue }}</strong>\n <span\n fd-card-kpi-scale-icon\n [glyph]=\"kpiStatus === 'positive' ? 'up' : 'down'\"\n fd-object-status\n [status]=\"kpiStatus\"\n aria-label=\"up arrow\"\n title=\"up arrow\"\n ></span>\n <span fd-card-kpi-scale-text fd-object-status status=\"positive\">\u00B0C</span>\n\n <div fd-card-kpi-analytics>\n <label fd-card-kpi-analytics-label>{{ kpiAnalyticalLabel }}</label>\n <span fd-card-kpi-analytics-content>{{ kpiAnalyticalContent }}{{ kpiAnalayticalSymbol }}</span>\n </div>\n </fd-card-kpi-header>\n\n <h4 fd-card-second-subtitle>{{ subtitle }}</h4>\n</fd-card-header>\n", styles: ["fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card-header .fd-card__title h2{font-size:.9rem}fd-card-header .fd-card__title h3,fd-card-header .fd-card__title h2{margin:0}fd-card-header button{cursor:pointer;z-index:4}\n"] }]
1902
- }] });
1903
-
1904
- class CardContentLineChartComponent extends BaseItemContentPropsComponent {
1905
- ngOnInit() {
1906
- super.ngOnInit();
1907
- const parameters = this.parameters;
1908
- const { MethodParametersFieldName, RunBlMethodName } = parameters;
1909
- const methodParameters = [];
1910
- MethodParametersFieldName.split(',').forEach((c) => {
1911
- const value = this.mo[c];
1912
- if (typeof value === 'object' && value.Id) {
1913
- methodParameters.push(value.Id);
1914
- }
1915
- else {
1916
- methodParameters.push(value);
1917
- }
1918
- });
1919
- BarsaApi.Bw.RunBlMethodAsync({
1920
- Parameters: methodParameters,
1921
- Method: RunBlMethodName,
1922
- SuccessFn: (chartOption) => {
1923
- this.chartOption = JSON.parse(chartOption);
1924
- this._cdr.detectChanges();
1925
- },
1926
- FailFn: () => { }
1927
- });
1928
- }
1929
- }
1930
- CardContentLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardContentLineChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1931
- CardContentLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CardContentLineChartComponent, selector: "bdc-card-content-line-chart", usesInheritance: true, ngImport: i0, template: "<div class=\"card-content\" *ngIf=\"chartOption\" #elemRef>\r\n <div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n</div>\r\n", styles: [":host{display:block;padding:15px}.card-content{height:300px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$5.ChartLineTimeBaseDirective, selector: "[beChartLineTime]", inputs: ["chartOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1932
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CardContentLineChartComponent, decorators: [{
1933
- type: Component,
1934
- args: [{ selector: 'bdc-card-content-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"card-content\" *ngIf=\"chartOption\" #elemRef>\r\n <div beChartLineTime [chartOption]=\"chartOption\"></div>\r\n</div>\r\n", styles: [":host{display:block;padding:15px}.card-content{height:300px}\n"] }]
1935
- }] });
1936
-
1937
- class FormChartContentComponent extends FormPropsBaseComponent {
1938
- ngOnInit() {
1939
- super.ngOnInit();
1940
- const settings = this.settings;
1941
- const { MethodParametersFieldName, RunBlMethodName } = settings;
1942
- const methodParameters = [];
1943
- MethodParametersFieldName.split(',').forEach((c) => {
1944
- const value = this.mo[c];
1945
- if (typeof value === 'object' && value.Id) {
1946
- methodParameters.push(value.Id);
1947
- }
1948
- else {
1949
- methodParameters.push(value);
1950
- }
1951
- });
1952
- BarsaApi.Bw.RunBlMethodAsync({
1953
- Parameters: methodParameters,
1954
- Method: RunBlMethodName,
1955
- SuccessFn: (chartOption) => {
1956
- this.chartOption = JSON.parse(chartOption);
1957
- this._cdr.detectChanges();
1958
- },
1959
- FailFn: () => { }
1960
- });
1961
- }
1962
- }
1963
- FormChartContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormChartContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1964
- FormChartContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormChartContentComponent, selector: "bdc-form-chart-content", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"chartOption\" beChartLineTime [chartOption]=\"chartOption\"></div>\r\n", styles: [":host{display:block;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$5.ChartLineTimeBaseDirective, selector: "[beChartLineTime]", inputs: ["chartOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1965
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormChartContentComponent, decorators: [{
1966
- type: Component,
1967
- args: [{ selector: 'bdc-form-chart-content', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"chartOption\" beChartLineTime [chartOption]=\"chartOption\"></div>\r\n", styles: [":host{display:block;height:100%}\n"] }]
1968
- }] });
1969
-
1970
- class TableViewVerticalColumnsComponent extends ReportViewBaseComponent {
1971
- }
1972
- TableViewVerticalColumnsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TableViewVerticalColumnsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1973
- TableViewVerticalColumnsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TableViewVerticalColumnsComponent, selector: "bdc-table-view-vertical-columns", usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let index = index\">\n <ng-container *ngIf=\"mo.$Group\">\n <h3>{{ mo.$Group }}</h3>\n <ng-container\n *ngTemplateOutlet=\"tplTable; context: { $implicit: mo.$Children, index: this.index }\"\n ></ng-container>\n </ng-container>\n</ng-container>\n<ng-template #tplTable let-children let-index=\"index\">\n <table fd-table [style.margin-top]=\"index > 0 ? '2rem' : 0\">\n <tbody fd-table-body>\n <tr fd-table-row *ngFor=\"let column of columns\">\n <th fd-table-cell>\n <strong>{{ column.Alias }}:</strong>\n </th>\n <ng-container *ngFor=\"let mo of children; let index = index\">\n <td\n fd-table-cell\n #tdEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [hostEl]=\"tdEl\"\n [styleIndex]=\"mo.$StyleIndex\"\n [dbName]=\"column.Name\"\n >\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"false\"\n [isChecked]=\"false\"\n [isNewInlineMo]=\"false\"\n [index]=\"index\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [formLayoutShowLabel]=\"false\"\n [deviceSize]=\"deviceSize\"\n ></bsu-column-renderer>\n </td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$2.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "deviceName", "deviceSize", "value", "icon"] }, { kind: "directive", type: i3$2.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "component", type: i4$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i4$6.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i4$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i4$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "pipe", type: i1.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i1.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1974
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TableViewVerticalColumnsComponent, decorators: [{
1975
- type: Component,
1976
- args: [{ selector: 'bdc-table-view-vertical-columns', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let index = index\">\n <ng-container *ngIf=\"mo.$Group\">\n <h3>{{ mo.$Group }}</h3>\n <ng-container\n *ngTemplateOutlet=\"tplTable; context: { $implicit: mo.$Children, index: this.index }\"\n ></ng-container>\n </ng-container>\n</ng-container>\n<ng-template #tplTable let-children let-index=\"index\">\n <table fd-table [style.margin-top]=\"index > 0 ? '2rem' : 0\">\n <tbody fd-table-body>\n <tr fd-table-row *ngFor=\"let column of columns\">\n <th fd-table-cell>\n <strong>{{ column.Alias }}:</strong>\n </th>\n <ng-container *ngFor=\"let mo of children; let index = index\">\n <td\n fd-table-cell\n #tdEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [hostEl]=\"tdEl\"\n [styleIndex]=\"mo.$StyleIndex\"\n [dbName]=\"column.Name\"\n >\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"false\"\n [isChecked]=\"false\"\n [isNewInlineMo]=\"false\"\n [index]=\"index\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [formLayoutShowLabel]=\"false\"\n [deviceSize]=\"deviceSize\"\n ></bsu-column-renderer>\n </td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n" }]
1977
- }] });
1978
-
1979
- class QueryStringObservableComponent extends FieldBaseComponent {
1980
- ngOnInit() {
1981
- super.ngOnInit();
1982
- this._activatedRoute.queryParams.subscribe((queryParams) => {
1983
- const value = queryParams[this.Setting.ControlName];
1984
- if (value) {
1985
- this.value = value;
1986
- this.valueChange.emit(this.value);
1987
- }
1988
- });
1989
- }
1990
- }
1991
- QueryStringObservableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: QueryStringObservableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1992
- QueryStringObservableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: QueryStringObservableComponent, selector: "bdc-query-string-observable", usesInheritance: true, ngImport: i0, template: "", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1993
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: QueryStringObservableComponent, decorators: [{
1994
- type: Component,
1995
- args: [{ selector: 'bdc-query-string-observable', changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
1996
- }] });
1997
-
1998
- class QueryStringFormObservableComponent extends BaseComponent {
1999
- constructor(_activatedRoute, _router, _portalService) {
2000
- super();
2001
- this._activatedRoute = _activatedRoute;
2002
- this._router = _router;
2003
- this._portalService = _portalService;
2004
- }
2005
- ngOnInit() {
2006
- super.ngOnInit();
2007
- this._portalService.navigationEnd$.pipe(takeUntil$1(this._onDestroy$)).subscribe((event) => {
2008
- if (event === null || event === void 0 ? void 0 : event.url.endsWith('/query')) {
2009
- this._router.navigate(['../']);
2010
- }
2011
- });
2012
- const params = this._activatedRoute.snapshot.queryParams;
2013
- const strActionList = params['actionList'];
2014
- if (strActionList) {
2015
- const actionList = JSON.parse(strActionList.replaceAll("'", '"'));
2016
- if (actionList) {
2017
- BarsaApi.Ul.WorkflowPanelCtrlr.RunWorkflowActionList(actionList, null);
2018
- }
2019
- }
2020
- }
2021
- }
2022
- QueryStringFormObservableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: QueryStringFormObservableComponent, deps: [{ token: i4$7.ActivatedRoute }, { token: i4$7.Router }, { token: i1.PortalService }], target: i0.ɵɵFactoryTarget.Component });
2023
- QueryStringFormObservableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: QueryStringFormObservableComponent, selector: "bdc-query-string-form-observable", usesInheritance: true, ngImport: i0, template: "", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2024
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: QueryStringFormObservableComponent, decorators: [{
2025
- type: Component,
2026
- args: [{ selector: 'bdc-query-string-form-observable', changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
2027
- }], ctorParameters: function () { return [{ type: i4$7.ActivatedRoute }, { type: i4$7.Router }, { type: i1.PortalService }]; } });
2028
-
2029
- class G4bDetailsComponent extends BaseItemContentPropsComponent {
2030
- ngOnInit() {
2031
- super.ngOnInit();
2032
- this._containerRef.createEmbeddedView(this.setting.$detailsFormItems, {
2033
- $implicit: this.setting.$detailsColumns,
2034
- mo: this.mo,
2035
- inlineEditMode: this.inlineEditMode,
2036
- isNewInlineMo: this.isNewInlineMo,
2037
- layout94: this.layout94$
2038
- });
2039
- }
2040
- }
2041
- G4bDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: G4bDetailsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2042
- G4bDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: G4bDetailsComponent, selector: "bdc-g4b-details", viewQueries: [{ propertyName: "_containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div #container></div>\r\n<!-- <fd-info-label [label]=\"'\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\" [color]=\"'1'\" [title]=\"'\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\"></fd-info-label> -->\r\n<div fd-form-item class=\"status-wrapper\" style=\"width: 100%; padding-bottom: 1rem\" [attr.deviceSize]=\"deviceSize\">\r\n <label fd-form-label>\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A </label>\r\n <fd-micro-process-flow class=\"flow\">\r\n <fd-micro-process-flow-item [state]=\"'positive'\">\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'accept'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <!-- <h4 fd-title class=\"fd-object-number--informative\">\u0634\u0631\u0648\u0639 \u062F\u0631\u062E\u0648\u0627\u0633\u062A</h4> -->\r\n <button\r\n style=\"pointer-events: none; border: none\"\r\n fd-button\r\n [fdType]=\"'positive'\"\r\n [label]=\"'\u0634\u0631\u0648\u0639 \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\"\r\n [glyph]=\"'accept'\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <button fd-button [fdType]=\"'standard'\" [label]=\"'\u062A\u06A9\u0645\u06CC\u0644 \u0645\u062F\u0627\u0631\u06A9 \u062A\u0648\u0633\u0637 \u0645\u062A\u0642\u0627\u0636\u06CC'\" [glyph]=\"''\"></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'less'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <button\r\n [disabled]=\"true\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0645\u062F\u0627\u0631\u06A9 \u062A\u0648\u0633\u0637 \u062F\u0633\u062A\u06AF\u0627\u0647 \u0645\u0631\u0628\u0648\u0637\u0647'\"\r\n [glyph]=\"''\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'less'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <button\r\n [disabled]=\"true\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'\u062A\u0639\u06CC\u06CC\u0646 \u0648\u0636\u0639\u06CC\u062A \u0635\u062F\u0648\u0631 \u0645\u062C\u0648\u0632'\"\r\n [glyph]=\"''\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n </fd-micro-process-flow>\r\n</div>\r\n", styles: [".showdetails .form-items{display:flex;justify-content:start;padding:0 1rem 1rem;width:100%;column-gap:2rem}.showdetails .form-items .fd-form-item bsu-column-renderer{font-size:1.275rem}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}fd-info-label{font-size:1rem;width:auto;height:2rem;line-height:2rem}fd-info-label ::ng-deep span{line-height:2rem!important}.status-wrapper[deviceSize=m]{width:600px!important}.status-wrapper[deviceSize=s]{width:380px!important}\n"], dependencies: [{ kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i7.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i3$1.MicroProcessFlowComponent, selector: "fd-micro-process-flow", inputs: ["independentSteps", "transitionSpeed", "transitionTimingFunction"] }, { kind: "component", type: i3$1.MicroProcessFlowItemComponent, selector: "fd-micro-process-flow-item", inputs: ["state", "intermediate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2043
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: G4bDetailsComponent, decorators: [{
2044
- type: Component,
2045
- args: [{ selector: 'bdc-g4b-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #container></div>\r\n<!-- <fd-info-label [label]=\"'\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\" [color]=\"'1'\" [title]=\"'\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\"></fd-info-label> -->\r\n<div fd-form-item class=\"status-wrapper\" style=\"width: 100%; padding-bottom: 1rem\" [attr.deviceSize]=\"deviceSize\">\r\n <label fd-form-label>\u0648\u0636\u0639\u06CC\u062A \u062F\u0631\u062E\u0648\u0627\u0633\u062A </label>\r\n <fd-micro-process-flow class=\"flow\">\r\n <fd-micro-process-flow-item [state]=\"'positive'\">\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'accept'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <!-- <h4 fd-title class=\"fd-object-number--informative\">\u0634\u0631\u0648\u0639 \u062F\u0631\u062E\u0648\u0627\u0633\u062A</h4> -->\r\n <button\r\n style=\"pointer-events: none; border: none\"\r\n fd-button\r\n [fdType]=\"'positive'\"\r\n [label]=\"'\u0634\u0631\u0648\u0639 \u062F\u0631\u062E\u0648\u0627\u0633\u062A'\"\r\n [glyph]=\"'accept'\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <button fd-button [fdType]=\"'standard'\" [label]=\"'\u062A\u06A9\u0645\u06CC\u0644 \u0645\u062F\u0627\u0631\u06A9 \u062A\u0648\u0633\u0637 \u0645\u062A\u0642\u0627\u0636\u06CC'\" [glyph]=\"''\"></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'less'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <button\r\n [disabled]=\"true\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0645\u062F\u0627\u0631\u06A9 \u062A\u0648\u0633\u0637 \u062F\u0633\u062A\u06AF\u0627\u0647 \u0645\u0631\u0628\u0648\u0637\u0647'\"\r\n [glyph]=\"''\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n <fd-micro-process-flow-item>\r\n <div class=\"flow-item\">\r\n <!-- <fd-micro-process-flow-icon\r\n fd-micro-process-flow-focusable-item\r\n [glyph]=\"'less'\"\r\n ></fd-micro-process-flow-icon> -->\r\n <button\r\n [disabled]=\"true\"\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'\u062A\u0639\u06CC\u06CC\u0646 \u0648\u0636\u0639\u06CC\u062A \u0635\u062F\u0648\u0631 \u0645\u062C\u0648\u0632'\"\r\n [glyph]=\"''\"\r\n ></button>\r\n </div>\r\n </fd-micro-process-flow-item>\r\n </fd-micro-process-flow>\r\n</div>\r\n", styles: [".showdetails .form-items{display:flex;justify-content:start;padding:0 1rem 1rem;width:100%;column-gap:2rem}.showdetails .form-items .fd-form-item bsu-column-renderer{font-size:1.275rem}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}fd-info-label{font-size:1rem;width:auto;height:2rem;line-height:2rem}fd-info-label ::ng-deep span{line-height:2rem!important}.status-wrapper[deviceSize=m]{width:600px!important}.status-wrapper[deviceSize=s]{width:380px!important}\n"] }]
2046
- }], propDecorators: { _containerRef: [{
2047
- type: ViewChild,
2048
- args: ['container', { static: true, read: ViewContainerRef }]
2049
- }] } });
2050
-
2051
- class AvatarComponent extends BaseItemContentPropsComponent {
2052
- ngOnInit() {
2053
- super.ngOnInit();
2054
- this._setProps(this.mo);
2055
- }
2056
- ngOnChanges(changes) {
2057
- const { mo } = changes;
2058
- if (mo && !mo.firstChange) {
2059
- this._setProps(mo.currentValue);
2060
- this._cdr.detectChanges();
2061
- }
2062
- }
2063
- _setProps(mo) {
2064
- var _a;
2065
- this.pictureId = (_a = this.mo[this.parameters.FieldName]) === null || _a === void 0 ? void 0 : _a.FileId;
2066
- }
2067
- }
2068
- AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AvatarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2069
- AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: AvatarComponent, selector: "bdc-avatar", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-card>\n <fd-card-header>\n <fd-avatar\n [placeholder]=\"!mo[parameters.FieldName]\"\n [size]=\"'xs'\"\n [glyph]=\"parameters.DefaultIcon || null\"\n [circle]=\"parameters.Circle\"\n [placeHolder]=\"parameters.DefaultIcon!!\"\n [image]=\"pictureId ? (pictureId | picFieldSrc: 'PictureFileInfo':mo.Id:column.FieldDefId) : null\"\n alterIcon=\"alt|content|backup|default-icon\"\n ></fd-avatar>\n <h2 fd-card-title>\n {{ column.Name | val: mo:true | bbbTranslate }}\n </h2>\n <h3 fd-card-subtitle>{{ parameters.Subtitle | rval: mo:allColumns:true | bbbTranslate }}</h3>\n </fd-card-header>\n</fd-card>\n", styles: [":host{display:flex;align-items:start;column-gap:5px;padding:3px 0}.avatar-data{display:flex;flex-direction:column;row-gap:5px}fd-card{border:none;box-shadow:none;background:transparent!important}fd-card-header{padding:.2rem 0!important;border:none!important;background:transparent!important}fd-card-header:hover{background:transparent!important}fd-card,fd-card-header{cursor:default;font-weight:inherit!important}fd-card:focus:before,fd-card-header:focus:before{border:none!important}fd-card ::ng-deep .fd-card__title-area,fd-card ::ng-deep .fd-card__header-text,fd-card ::ng-deep .fd-card__subtitle-area,fd-card ::ng-deep h2,fd-card ::ng-deep h3,fd-card-header ::ng-deep .fd-card__title-area,fd-card-header ::ng-deep .fd-card__header-text,fd-card-header ::ng-deep .fd-card__subtitle-area,fd-card-header ::ng-deep h2,fd-card-header ::ng-deep h3{font-weight:inherit!important}fd-card-header{padding:0!important;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.PlaceHolderDirective, selector: "[placeHolder]", inputs: ["placeHolder"] }, { kind: "component", type: i4$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i5$2.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "directive", type: i5$2.CardTitleDirective, selector: "[fd-card-title]" }, { kind: "directive", type: i5$2.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "pipe", type: i1.MoValuePipe, name: "val" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2070
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AvatarComponent, decorators: [{
2071
- type: Component,
2072
- args: [{ selector: 'bdc-avatar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card>\n <fd-card-header>\n <fd-avatar\n [placeholder]=\"!mo[parameters.FieldName]\"\n [size]=\"'xs'\"\n [glyph]=\"parameters.DefaultIcon || null\"\n [circle]=\"parameters.Circle\"\n [placeHolder]=\"parameters.DefaultIcon!!\"\n [image]=\"pictureId ? (pictureId | picFieldSrc: 'PictureFileInfo':mo.Id:column.FieldDefId) : null\"\n alterIcon=\"alt|content|backup|default-icon\"\n ></fd-avatar>\n <h2 fd-card-title>\n {{ column.Name | val: mo:true | bbbTranslate }}\n </h2>\n <h3 fd-card-subtitle>{{ parameters.Subtitle | rval: mo:allColumns:true | bbbTranslate }}</h3>\n </fd-card-header>\n</fd-card>\n", styles: [":host{display:flex;align-items:start;column-gap:5px;padding:3px 0}.avatar-data{display:flex;flex-direction:column;row-gap:5px}fd-card{border:none;box-shadow:none;background:transparent!important}fd-card-header{padding:.2rem 0!important;border:none!important;background:transparent!important}fd-card-header:hover{background:transparent!important}fd-card,fd-card-header{cursor:default;font-weight:inherit!important}fd-card:focus:before,fd-card-header:focus:before{border:none!important}fd-card ::ng-deep .fd-card__title-area,fd-card ::ng-deep .fd-card__header-text,fd-card ::ng-deep .fd-card__subtitle-area,fd-card ::ng-deep h2,fd-card ::ng-deep h3,fd-card-header ::ng-deep .fd-card__title-area,fd-card-header ::ng-deep .fd-card__header-text,fd-card-header ::ng-deep .fd-card__subtitle-area,fd-card-header ::ng-deep h2,fd-card-header ::ng-deep h3{font-weight:inherit!important}fd-card-header{padding:0!important;align-items:center}\n"] }]
2073
- }] });
2074
-
2075
- class G4bEstelamComponent extends BaseItemContentPropsComponent {
2076
- constructor() {
2077
- super(...arguments);
2078
- this.natijeh = 1;
2079
- this.options = ['رد استعلام', 'تایید استعلام', 'در انتظار پاسخ'];
2080
- }
2081
- ngOnInit() {
2082
- super.ngOnInit();
2083
- }
2084
- onClick(e) {
2085
- if (this.isChecked) {
2086
- e.stopPropagation();
2087
- e.preventDefault();
2088
- }
2089
- }
2090
- }
2091
- G4bEstelamComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: G4bEstelamComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2092
- G4bEstelamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: G4bEstelamComponent, selector: "bdc-g4b-estelam", usesInheritance: true, ngImport: i0, template: "<div fd-form-item class=\"textarea\">\r\n <label fd-form-label for=\"input-2\">\u067E\u0627\u0633\u062E \u0627\u0633\u062A\u0639\u0644\u0627\u0645</label>\r\n <textarea fd-form-control style=\"height: 1.8rem\"></textarea>\r\n</div>\r\n\r\n<div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-segmented-button [(ngModel)]=\"natijeh\" (click)=\"onClick($event)\">\r\n <button fd-button [label]=\"'\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u067E\u0627\u0633\u062E'\" value=\"1\" [fdType]=\"'standard'\"></button>\r\n <button fd-button [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"2\" [fdType]=\"'positive'\"></button>\r\n <button fd-button [label]=\"'\u0631\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"3\" [fdType]=\"'negative'\"></button>\r\n </fd-segmented-button>\r\n</div>\r\n<!-- <div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-select placeholder=\"Select value\" stateMessage=\"Success message\" state=\"success\">\r\n <li fd-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</li>\r\n </fd-select>\r\n</div> -->\r\n", styles: [":host{display:flex;column-gap:1rem;padding:1rem 0}fd-segmented-button{margin:.1875rem 0}.textarea{flex-grow:1}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i7.TextareaFormControlDirective, selector: "textarea[fd-form-control]" }, { kind: "component", type: i7.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i7.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i4.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2093
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: G4bEstelamComponent, decorators: [{
2094
- type: Component,
2095
- args: [{ selector: 'bdc-g4b-estelam', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div fd-form-item class=\"textarea\">\r\n <label fd-form-label for=\"input-2\">\u067E\u0627\u0633\u062E \u0627\u0633\u062A\u0639\u0644\u0627\u0645</label>\r\n <textarea fd-form-control style=\"height: 1.8rem\"></textarea>\r\n</div>\r\n\r\n<div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-segmented-button [(ngModel)]=\"natijeh\" (click)=\"onClick($event)\">\r\n <button fd-button [label]=\"'\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u067E\u0627\u0633\u062E'\" value=\"1\" [fdType]=\"'standard'\"></button>\r\n <button fd-button [label]=\"'\u062A\u0627\u06CC\u06CC\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"2\" [fdType]=\"'positive'\"></button>\r\n <button fd-button [label]=\"'\u0631\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645'\" value=\"3\" [fdType]=\"'negative'\"></button>\r\n </fd-segmented-button>\r\n</div>\r\n<!-- <div fd-form-item>\r\n <label fd-form-label for=\"input-2\">\u0648\u0636\u0639\u06CC\u062A</label>\r\n <fd-select placeholder=\"Select value\" stateMessage=\"Success message\" state=\"success\">\r\n <li fd-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</li>\r\n </fd-select>\r\n</div> -->\r\n", styles: [":host{display:flex;column-gap:1rem;padding:1rem 0}fd-segmented-button{margin:.1875rem 0}.textarea{flex-grow:1}\n"] }]
2096
- }] });
2097
-
2098
- class TimerCountDownComponent extends FieldBaseComponent {
2099
- ngOnInit() {
2100
- super.ngOnInit();
2101
- this._setCountDown(this.value);
2102
- }
2103
- _setValue(value) {
2104
- super._setValue(value);
2105
- this._setCountDown(value);
2106
- }
2107
- _setCountDown(value) {
2108
- const keysInValue = Object.keys(value);
2109
- let _tempValue = value;
2110
- if (keysInValue.length) {
2111
- const findKeyDate = keysInValue.find((c) => !isNaN(Date.parse(value[c])));
2112
- if (findKeyDate) {
2113
- _tempValue = new Date(value[findKeyDate]);
2114
- }
2115
- }
2116
- const exp = this._dateService.getMoment(_tempValue);
2117
- if (this._interval) {
2118
- clearInterval(this._interval);
2119
- this._interval = null;
2120
- }
2121
- this._interval = setInterval(() => {
2122
- const now = this._dateService.getMoment(new Date());
2123
- const diffDuration = this._dateService.duration(exp.diff(now));
2124
- const month = diffDuration.months();
2125
- const days = diffDuration.days();
2126
- const hours = diffDuration.hours().toLocaleString('en-US', {
2127
- minimumIntegerDigits: 2,
2128
- useGrouping: false
2129
- });
2130
- const minutes = diffDuration.minutes().toLocaleString('en-US', {
2131
- minimumIntegerDigits: 2,
2132
- useGrouping: false
2133
- });
2134
- const seconds = diffDuration.seconds().toLocaleString('en-US', {
2135
- minimumIntegerDigits: 2,
2136
- useGrouping: false
2137
- });
2138
- this.countDownText = `
2139
- ${this._getMonthText(month)}
2140
- ${this._daysText(days)}
2141
- ${this._getTimeText(hours, minutes, seconds)}`;
2142
- this._cdr.detectChanges();
2143
- }, 1000);
2144
- }
2145
- _getMonthText(month) {
2146
- return month > 0 ? `${month} ماه` : '';
2147
- }
2148
- _daysText(days) {
2149
- return days > 0 ? `${days} روز` : '';
2150
- }
2151
- _getTimeText(hours, minutes, seconds) {
2152
- var _a;
2153
- if (hours < 0 || minutes < 0 || seconds < 0) {
2154
- if ((_a = this.parameters) === null || _a === void 0 ? void 0 : _a.ExpireViewMode) {
2155
- switch (this.parameters.ExpireViewMode) {
2156
- case 1:
2157
- return `00:00:00`;
2158
- break;
2159
- case 2:
2160
- return `پایان یافته`;
2161
- break;
2162
- case 3:
2163
- return '';
2164
- break;
2165
- case 4: // نمایش زمان گذشته
2166
- return `${hours}:${minutes}:${seconds}`;
2167
- break;
2168
- }
2169
- }
2170
- return `00:00:00`;
2171
- }
2172
- return `${hours}:${minutes}:${seconds}`;
2173
- }
2174
- }
2175
- TimerCountDownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TimerCountDownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2176
- TimerCountDownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TimerCountDownComponent, selector: "bdc-timer-count-down", providers: [
2177
- {
2178
- provide: DateService,
2179
- useFactory: getDateService,
2180
- deps: [LogService]
2181
- }
2182
- ], usesInheritance: true, ngImport: i0, template: "<span>{{ countDownText }}</span>\r\n", styles: [":host{display:block;width:110px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TimerCountDownComponent, decorators: [{
2184
- type: Component,
2185
- args: [{ selector: 'bdc-timer-count-down', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2186
- {
2187
- provide: DateService,
2188
- useFactory: getDateService,
2189
- deps: [LogService]
2190
- }
2191
- ], template: "<span>{{ countDownText }}</span>\r\n", styles: [":host{display:block;width:110px}\n"] }]
2192
- }] });
2193
-
2194
- class MicroProccessFlowComponent extends BaseComponent {
2195
- /**
2196
- *
2197
- */
2198
- constructor(_el) {
2199
- super();
2200
- this._el = _el;
2201
- this.selectedChange = new EventEmitter();
2202
- }
2203
- ngOnInit() {
2204
- super.ngOnInit();
2205
- this._setIndex(this.selected, this.items);
2206
- this.maxWidth = this._el.nativeElement.offsetWidth;
2207
- }
2208
- onItemClick(item) {
2209
- this.selectedChange.emit(item);
2210
- }
2211
- ngOnChanges(changes) {
2212
- const { selected, items } = changes;
2213
- if (selected && !selected.firstChange) {
2214
- this._setIndex(selected.currentValue, this.items);
2215
- }
2216
- else if (items && !items.firstChange) {
2217
- this._setIndex(this.selected, items.currentValue);
2218
- }
2219
- }
2220
- _setIndex(val, items) {
2221
- this.selectedIndex = items.findIndex((c) => (this.idIskey ? c.id === val : c.label === val));
2222
- }
2223
- }
2224
- MicroProccessFlowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroProccessFlowComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2225
- MicroProccessFlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MicroProccessFlowComponent, selector: "bdc-micro-proccess-flow", inputs: { items: "items", selected: "selected", readonly: "readonly", idIskey: "idIskey" }, outputs: { selectedChange: "selectedChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-micro-process-flow class=\"flow\" [style.max-width.px]=\"maxWidth\">\n <fd-micro-process-flow-item\n *ngFor=\"let item of items; let i = index\"\n [state]=\"i <= selectedIndex ? 'positive' : 'none'\"\n >\n <div class=\"flow-item\">\n <button\n *ngIf=\"selectedIndex > -1\"\n [class.reached]=\"i <= selectedIndex\"\n fd-button\n [fdType]=\"i <= selectedIndex ? 'positive' : i === selectedIndex + 1 ? 'standard' : 'transparent'\"\n [label]=\"item.label\"\n [glyph]=\"i <= selectedIndex ? 'accept' : null\"\n [disabled]=\"readonly || (i > selectedIndex + 1 && selectedIndex > -1)\"\n (click)=\"onItemClick(item)\"\n ></button>\n <button\n *ngIf=\"selectedIndex === -1\"\n [class.reached]=\"false\"\n fd-button\n [fdType]=\"'transparent'\"\n [label]=\"item.label\"\n [glyph]=\"null\"\n [disabled]=\"readonly\"\n (click)=\"onItemClick(item)\"\n ></button>\n </div>\n </fd-micro-process-flow-item>\n</fd-micro-process-flow>\n", styles: [":host{display:block}.reached{pointer-events:none;border:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3$1.MicroProcessFlowComponent, selector: "fd-micro-process-flow", inputs: ["independentSteps", "transitionSpeed", "transitionTimingFunction"] }, { kind: "component", type: i3$1.MicroProcessFlowItemComponent, selector: "fd-micro-process-flow-item", inputs: ["state", "intermediate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroProccessFlowComponent, decorators: [{
2227
- type: Component,
2228
- args: [{ selector: 'bdc-micro-proccess-flow', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-micro-process-flow class=\"flow\" [style.max-width.px]=\"maxWidth\">\n <fd-micro-process-flow-item\n *ngFor=\"let item of items; let i = index\"\n [state]=\"i <= selectedIndex ? 'positive' : 'none'\"\n >\n <div class=\"flow-item\">\n <button\n *ngIf=\"selectedIndex > -1\"\n [class.reached]=\"i <= selectedIndex\"\n fd-button\n [fdType]=\"i <= selectedIndex ? 'positive' : i === selectedIndex + 1 ? 'standard' : 'transparent'\"\n [label]=\"item.label\"\n [glyph]=\"i <= selectedIndex ? 'accept' : null\"\n [disabled]=\"readonly || (i > selectedIndex + 1 && selectedIndex > -1)\"\n (click)=\"onItemClick(item)\"\n ></button>\n <button\n *ngIf=\"selectedIndex === -1\"\n [class.reached]=\"false\"\n fd-button\n [fdType]=\"'transparent'\"\n [label]=\"item.label\"\n [glyph]=\"null\"\n [disabled]=\"readonly\"\n (click)=\"onItemClick(item)\"\n ></button>\n </div>\n </fd-micro-process-flow-item>\n</fd-micro-process-flow>\n", styles: [":host{display:block}.reached{pointer-events:none;border:none}\n"] }]
2229
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { items: [{
2230
- type: Input
2231
- }], selected: [{
2232
- type: Input
2233
- }], readonly: [{
2234
- type: Input
2235
- }], idIskey: [{
2236
- type: Input
2237
- }], selectedChange: [{
2238
- type: Output
2239
- }] } });
2240
-
2241
- class MoListToFlowItemPipe {
2242
- constructor() { }
2243
- transform(moList) {
2244
- const flowItems = moList.map((item) => ({
2245
- icon: '',
2246
- id: item.Id,
2247
- label: item.$Caption
2248
- }));
2249
- return flowItems;
2250
- }
2251
- }
2252
- MoListToFlowItemPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MoListToFlowItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2253
- MoListToFlowItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: MoListToFlowItemPipe, name: "moListToFlowItem" });
2254
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MoListToFlowItemPipe, decorators: [{
2255
- type: Pipe,
2256
- args: [{
2257
- name: 'moListToFlowItem'
2258
- }]
2259
- }], ctorParameters: function () { return []; } });
2260
-
2261
- class MoInfoMicroProccessFlowComponent extends UiMoInfoUlvComboComponent {
2262
- ngOnInit() {
2263
- super.ngOnInit();
2264
- this._triggerClick('Normal');
2265
- }
2266
- onSelectedChange(item) {
2267
- this._raiseValueChanged(item.label);
2268
- }
2269
- }
2270
- MoInfoMicroProccessFlowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MoInfoMicroProccessFlowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2271
- MoInfoMicroProccessFlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MoInfoMicroProccessFlowComponent, selector: "bdc-mo-info-micro-proccess-flow", usesInheritance: true, ngImport: i0, template: "<bdc-micro-proccess-flow\n [items]=\"\n (loading$ | async) === true\n | moInfoUlvMoList\n : isDataLoadedFirstTime\n : ulvAdapter?.Setting?.Data?.MoDataList\n : UlvUi?.Setting?.Data?.MoDataList\n : ulvAdapter?.Setting?.Data?.Paging\n : UlvUi?.Setting?.Data?.Paging\n | moListToFlowItem\n \"\n [selected]=\"value\"\n (selectedChange)=\"onSelectedChange($event)\"\n></bdc-micro-proccess-flow>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: MicroProccessFlowComponent, selector: "bdc-micro-proccess-flow", inputs: ["items", "selected", "readonly", "idIskey"], outputs: ["selectedChange"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.MoInfoUlvMoListPipe, name: "moInfoUlvMoList" }, { kind: "pipe", type: MoListToFlowItemPipe, name: "moListToFlowItem" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2272
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MoInfoMicroProccessFlowComponent, decorators: [{
2273
- type: Component,
2274
- args: [{ selector: 'bdc-mo-info-micro-proccess-flow', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bdc-micro-proccess-flow\n [items]=\"\n (loading$ | async) === true\n | moInfoUlvMoList\n : isDataLoadedFirstTime\n : ulvAdapter?.Setting?.Data?.MoDataList\n : UlvUi?.Setting?.Data?.MoDataList\n : ulvAdapter?.Setting?.Data?.Paging\n : UlvUi?.Setting?.Data?.Paging\n | moListToFlowItem\n \"\n [selected]=\"value\"\n (selectedChange)=\"onSelectedChange($event)\"\n></bdc-micro-proccess-flow>\n", styles: [":host{display:block}\n"] }]
2275
- }] });
2276
-
2277
- class DataSourceToFlowItemPipe {
2278
- constructor() { }
2279
- transform(datasource) {
2280
- const flowItems = datasource.map((item) => ({
2281
- icon: '',
2282
- id: item.id,
2283
- label: item.txt
2284
- }));
2285
- return flowItems;
2286
- }
2287
- }
2288
- DataSourceToFlowItemPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: DataSourceToFlowItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2289
- DataSourceToFlowItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: DataSourceToFlowItemPipe, name: "datasourceToFlowItem" });
2290
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: DataSourceToFlowItemPipe, decorators: [{
2291
- type: Pipe,
2292
- args: [{
2293
- name: 'datasourceToFlowItem'
2294
- }]
2295
- }], ctorParameters: function () { return []; } });
2296
-
2297
- class EnumInfoMicroProccessFlowComponent extends UiSimpleComboComponent {
2298
- onSelectedChange(item) {
2299
- this._handleValueChange(item.id);
2300
- }
2301
- }
2302
- EnumInfoMicroProccessFlowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: EnumInfoMicroProccessFlowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2303
- EnumInfoMicroProccessFlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: EnumInfoMicroProccessFlowComponent, selector: "bdc-enum-info-micro-proccess-flow", usesInheritance: true, ngImport: i0, template: "<bdc-micro-proccess-flow\n [items]=\"context.store.data[context.store.root] | datasourceToFlowItem\"\n [selected]=\"value\"\n [idIskey]=\"true\"\n [readonly]=\"(disableOrReadonly$ | async) === true\"\n (selectedChange)=\"onSelectedChange($event)\"\n></bdc-micro-proccess-flow>\n", styles: [""], dependencies: [{ kind: "component", type: MicroProccessFlowComponent, selector: "bdc-micro-proccess-flow", inputs: ["items", "selected", "readonly", "idIskey"], outputs: ["selectedChange"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: DataSourceToFlowItemPipe, name: "datasourceToFlowItem" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: EnumInfoMicroProccessFlowComponent, decorators: [{
2305
- type: Component,
2306
- args: [{ selector: 'bdc-enum-info-micro-proccess-flow', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bdc-micro-proccess-flow\n [items]=\"context.store.data[context.store.root] | datasourceToFlowItem\"\n [selected]=\"value\"\n [idIskey]=\"true\"\n [readonly]=\"(disableOrReadonly$ | async) === true\"\n (selectedChange)=\"onSelectedChange($event)\"\n></bdc-micro-proccess-flow>\n" }]
2307
- }] });
2308
-
2309
- class UiPicturesCarouselComponent extends UiPicturesInfoComponent {
2310
- }
2311
- UiPicturesCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPicturesCarouselComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2312
- UiPicturesCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPicturesCarouselComponent, selector: "bdc-ui-pictures-carousel", providers: [UploadService], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mediaData$ | async as mediaData; else loadingTpl\">\r\n <fd-carousel carouselIndicatorsOrientation=\"top\" width=\"100%\">\r\n <fd-carousel-item *ngFor=\"let media of mediaData; let i = index\">\r\n <img [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\r\n </fd-carousel-item>\r\n </fd-carousel>\r\n</ng-container>\r\n<ng-template #loadingTpl>\r\n <div style=\"width: 100%; position: relative\">\r\n <bsu-mask></bsu-mask>\r\n </div>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "component", type: i3$2.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i4$9.CarouselComponent, selector: "fd-carousel", inputs: ["id", "ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "pageIndicatorsOrientation", "height", "width", "loop", "leftNavigationBtnLabel", "rightNavigationBtnLabel", "navigation", "navigatorInPageIndicator", "numericIndicator", "pageIndicatorContainer", "pageIndicator", "resourceStrings", "slideTransitionDuration", "swipeEnabled", "vertical", "visibleSlidesCount"], outputs: ["slideChange"] }, { kind: "component", type: i4$9.CarouselItemComponent, selector: "fd-carousel-item", inputs: ["id", "ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "loading", "title", "initialHeight", "initialWidth", "value"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2313
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPicturesCarouselComponent, decorators: [{
2314
- type: Component,
2315
- args: [{ selector: 'bdc-ui-pictures-carousel', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"mediaData$ | async as mediaData; else loadingTpl\">\r\n <fd-carousel carouselIndicatorsOrientation=\"top\" width=\"100%\">\r\n <fd-carousel-item *ngFor=\"let media of mediaData; let i = index\">\r\n <img [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\r\n </fd-carousel-item>\r\n </fd-carousel>\r\n</ng-container>\r\n<ng-template #loadingTpl>\r\n <div style=\"width: 100%; position: relative\">\r\n <bsu-mask></bsu-mask>\r\n </div>\r\n</ng-template>\r\n" }]
2316
- }] });
2317
-
2318
- class UiNumRateComponent extends FieldBaseComponent {
2319
- onRatingChanged(val) {
2320
- this.value = val;
2321
- this.valueChange.emit(this.value);
2322
- }
2323
- _setValue(val) {
2324
- if (typeof val === 'string') {
2325
- if (isNaN(+val[0])) {
2326
- val = val.substring(1, val.length);
2327
- }
2328
- if (isNaN(+val)) {
2329
- return;
2330
- }
2331
- }
2332
- super._setValue(val);
2333
- }
2334
- }
2335
- UiNumRateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiNumRateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2336
- UiNumRateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiNumRateComponent, selector: "bdc-ui-num-rate", usesInheritance: true, ngImport: i0, template: "<fd-rating-indicator\n [ariaLabel]=\"Setting.NullText || ''\"\n [size]=\"parameters?.SizeValue$Caption\"\n [value]=\"value\"\n [disabled]=\"(disableOrReadonly$ | async) === true\"\n [displayMode]=\"parameters?.DisplayMode\"\n [dynamicTextIndicator]=\"parameters?.TextIndicator\"\n (ratingChanged)=\"onRatingChanged($event)\"\n></fd-rating-indicator>\n", styles: [":host{display:flex}\n"], dependencies: [{ kind: "component", type: i1$3.RatingIndicatorComponent, selector: "fd-rating-indicator", inputs: ["class", "name", "ariaLabel", "ariaLabelledBy", "disabled", "displayMode", "indicatorCapacity", "allowHalves", "value", "totalRatings", "ratingAverage", "ratings", "displayAllRatings", "ratedIcon", "unratedIcon", "size", "dynamicTextIndicator"], outputs: ["ratingChanged"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiNumRateComponent, decorators: [{
2338
- type: Component,
2339
- args: [{ selector: 'bdc-ui-num-rate', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-rating-indicator\n [ariaLabel]=\"Setting.NullText || ''\"\n [size]=\"parameters?.SizeValue$Caption\"\n [value]=\"value\"\n [disabled]=\"(disableOrReadonly$ | async) === true\"\n [displayMode]=\"parameters?.DisplayMode\"\n [dynamicTextIndicator]=\"parameters?.TextIndicator\"\n (ratingChanged)=\"onRatingChanged($event)\"\n></fd-rating-indicator>\n", styles: [":host{display:flex}\n"] }]
2340
- }] });
2341
-
2342
- class MediaFileUploaderComponent extends UiPdfViewerComponent {
2343
- constructor() {
2344
- super(...arguments);
2345
- this.isPlaying = false;
2346
- this.displayControls = true;
2347
- this.isRecording = false;
2348
- this.audioConf = { audio: true };
2349
- this.videoConf = { video: { facingMode: 'user', width: 320 }, audio: true };
2350
- this.recordType = 'audio';
2351
- }
2352
- get video() {
2353
- var _a;
2354
- return (_a = this.videoElement) === null || _a === void 0 ? void 0 : _a.nativeElement;
2355
- }
2356
- get fileInput() {
2357
- var _a;
2358
- return (_a = this.photoElement) === null || _a === void 0 ? void 0 : _a.nativeElement;
2359
- }
2360
- ngOnInit() {
2361
- var _a, _b;
2362
- super.ngOnInit();
2363
- this._videoRecoder.recordingFailed().subscribe(() => {
2364
- this.isRecording = false;
2365
- this._cdr.detectChanges();
2366
- });
2367
- this._videoRecoder.getRecordedTime().subscribe((time) => {
2368
- this.recordedTime = time;
2369
- this._cdr.detectChanges();
2370
- });
2371
- this._videoRecoder.getStream().subscribe((stream) => {
2372
- this.videoStream = stream;
2373
- this._cdr.detectChanges();
2374
- });
2375
- this._videoRecoder.getRecordedBlob().subscribe((data) => {
2376
- this.fileBlob = data.blob;
2377
- this.fileName = data.title;
2378
- this.valueUrl = this._domSanitizer.bypassSecurityTrustUrl(data.url);
2379
- this._cdr.detectChanges();
2380
- });
2381
- this._audioRecorder.recordingFailed().subscribe(() => {
2382
- this.isRecording = false;
2383
- this._cdr.detectChanges();
2384
- });
2385
- this._audioRecorder.getRecordedTime().subscribe((time) => {
2386
- this.recordedTime = time;
2387
- this._cdr.detectChanges();
2388
- });
2389
- this._audioRecorder.getRecordedBlob().subscribe((data) => {
2390
- this.fileBlob = data.blob;
2391
- this.fileName = data.title;
2392
- this.valueUrl = this._domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(data.blob));
2393
- this._cdr.detectChanges();
2394
- });
2395
- let glyph = '';
2396
- switch (this.recordType) {
2397
- case 'audio':
2398
- glyph = 'attachment-audio';
2399
- break;
2400
- case 'video':
2401
- glyph = 'attachment-video';
2402
- break;
2403
- default:
2404
- glyph = 'attachment-photo';
2405
- break;
2406
- }
2407
- this.glyph = glyph;
2408
- this.fileName = (_a = this.value) === null || _a === void 0 ? void 0 : _a.FileName;
2409
- this.recordType = ((_b = this.parameters) === null || _b === void 0 ? void 0 : _b.MediaType$Caption) || 'audio';
2410
- }
2411
- onDelete() {
2412
- super.onDelete();
2413
- this.onClearRecord();
2414
- }
2415
- onClearRecord() {
2416
- this.abortVideoRecording();
2417
- this.abortAudioRecording();
2418
- this.fileBlob = null;
2419
- this.valueUrl = null;
2420
- this._cdr.detectChanges();
2421
- }
2422
- onToggleRecord() {
2423
- if (this.recordType === 'audio') {
2424
- if (this.isRecording) {
2425
- this.stopAudioRecording();
2426
- }
2427
- else {
2428
- this.startAudioRecording();
2429
- }
2430
- }
2431
- else if (this.recordType === 'video') {
2432
- this.video.hidden = false;
2433
- if (this.isRecording) {
2434
- this.stopVideoRecording();
2435
- }
2436
- else {
2437
- this.startVideoRecording();
2438
- }
2439
- }
2440
- else if (this.recordType === 'photo') {
2441
- }
2442
- }
2443
- onTakePhoto() {
2444
- var _a, _b;
2445
- if ((_b = (_a = this.fileInput) === null || _a === void 0 ? void 0 : _a.files) === null || _b === void 0 ? void 0 : _b.length) {
2446
- const file = this.fileInput.files.item(0);
2447
- if (file) {
2448
- this.fileName = file.name;
2449
- this._uploadFile([file]).subscribe();
2450
- }
2451
- }
2452
- }
2453
- onUpload() {
2454
- const videoFile = new File([this.fileBlob], this.fileName);
2455
- this._uploadFile([videoFile]).subscribe();
2456
- }
2457
- startVideoRecording() {
2458
- if (!this.isRecording) {
2459
- this.video.controls = false;
2460
- this.isRecording = true;
2461
- this._videoRecoder
2462
- .startRecording(this.videoConf)
2463
- .then((stream) => {
2464
- // this.video.src = window.URL.createObjectURL(stream);
2465
- this.video.srcObject = stream;
2466
- this.video.play();
2467
- })
2468
- .catch(function (err) {
2469
- console.log(err.name + ': ' + err.message);
2470
- });
2471
- }
2472
- }
2473
- abortVideoRecording() {
2474
- if (this.isRecording && this.recordType === 'video') {
2475
- this.isRecording = false;
2476
- this._videoRecoder.abortRecording();
2477
- }
2478
- if (this.video) {
2479
- const video = this.video;
2480
- video.controls = false;
2481
- video.hidden = true;
2482
- }
2483
- }
2484
- stopVideoRecording() {
2485
- if (this.isRecording && this.recordType === 'video') {
2486
- this._videoRecoder.stopRecording();
2487
- const video = this.video;
2488
- video.srcObject = this.valueUrl;
2489
- video.controls = true;
2490
- this.isRecording = false;
2491
- }
2492
- }
2493
- clearVideoRecordedData() {
2494
- this.valueUrl = null;
2495
- const video = this.video;
2496
- video.srcObject = null;
2497
- video.controls = false;
2498
- this._cdr.detectChanges();
2499
- }
2500
- downloadVideoRecordedData() {
2501
- this._downloadFile(this.fileBlob, 'video/mp4', this.fileName);
2502
- }
2503
- startAudioRecording() {
2504
- if (!this.isRecording) {
2505
- this.isRecording = true;
2506
- this._audioRecorder.startRecording();
2507
- }
2508
- }
2509
- abortAudioRecording() {
2510
- if (this.isRecording && this.recordType === 'audio') {
2511
- this.isRecording = false;
2512
- this._audioRecorder.abortRecording();
2513
- }
2514
- }
2515
- stopAudioRecording() {
2516
- if (this.isRecording && this.recordType === 'audio') {
2517
- this._audioRecorder.stopRecording();
2518
- this.isRecording = false;
2519
- }
2520
- }
2521
- clearAudioRecordedData() {
2522
- this.valueUrl = null;
2523
- }
2524
- downloadAudioRecordedData() {
2525
- this._downloadFile(this.fileBlob, 'audio/mp3', this.fileName);
2526
- }
2527
- ngOnDestroy() {
2528
- this.abortAudioRecording();
2529
- }
2530
- _downloadFile(data, type, filename) {
2531
- const blob = new Blob([data], { type });
2532
- const url = window.URL.createObjectURL(blob);
2533
- // this.video.srcObject = stream;
2534
- // const url = data;
2535
- const anchor = document.createElement('a');
2536
- anchor.download = filename;
2537
- anchor.href = url;
2538
- document.body.appendChild(anchor);
2539
- anchor.click();
2540
- document.body.removeChild(anchor);
2541
- }
2542
- _downloadFileIdCompleted(response) {
2543
- super._downloadFileIdCompleted(response);
2544
- if (this.valueUrl) {
2545
- if (this.recordType === 'video') {
2546
- this.video.controls = true;
2547
- }
2548
- }
2549
- }
2550
- _refresh(_) {
2551
- if (BarsaApi.Ext.isEmpty(this.value)) {
2552
- return;
2553
- }
2554
- const fileId = this.value.Id;
2555
- this.DownloadFileId(fileId, true, '', null, false);
2556
- }
2557
- }
2558
- MediaFileUploaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MediaFileUploaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2559
- MediaFileUploaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MediaFileUploaderComponent, selector: "bdc-media-file-uploader", providers: [AudioRecordingService, VideoRecordingService, UploadService], viewQueries: [{ propertyName: "videoElement", first: true, predicate: ["videoElement"], descendants: true }, { propertyName: "photoElement", first: true, predicate: ["photoElement"], descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["container"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<fd-card class=\"upload\" [ngClass]=\"recordType\">\n <fd-card-content class=\"file-content\">\n <div [class.no-recording]=\"!isRecording && valueUrl\" [ngClass]=\"recordType\" class=\"media-wrapper\">\n <div class=\"icon\">\n <i\n style=\"left: 45%; position: absolute\"\n fd-nested-list-icon\n [glyph]=\"glyph\"\n *ngIf=\"!value && !valueUrl && !isRecording\"\n ></i>\n </div>\n <video #videoElement *ngIf=\"recordType === 'video'\" [class.video-novalue]=\"!valueUrl\">\n <source *ngIf=\"!isRecording && valueUrl\" [src]=\"valueUrl\" />\n <i\n style=\"left: 45%; position: absolute\"\n fd-nested-list-icon\n [glyph]=\"glyph\"\n *ngIf=\"!value && !valueUrl && !isRecording\"\n ></i>\n </video>\n <audio *ngIf=\"!isRecording && valueUrl && recordType === 'audio'\" controls>\n <source [src]=\"valueUrl\" type=\"audio/mp3\" />\n </audio>\n <input\n #photoElement\n *ngIf=\"recordType === 'photo'\"\n type=\"file\"\n accept=\"image/*\"\n id=\"file-input\"\n capture=\"environment\"\n (change)=\"onTakePhoto()\"\n />\n </div>\n <div *ngIf=\"isRecording || valueUrl\" class=\"media-info\">\n <div>\n {{ !isRecording ? '' : ('Recording' | bbbTranslate) }} <strong>{{ recordedTime }}</strong>\n </div>\n <div>{{ fileName }}</div>\n </div>\n <ng-container *ngIf=\"uploadingState$ | async as uploadingState\">\n <div class=\"progress\" *ngIf=\"uploadingState.state === 'Uploading'\">\n <div>\n <fd-progress-indicator\n state=\"informative\"\n [valueNow]=\"uploadingState?.progress\"\n ></fd-progress-indicator>\n </div>\n </div>\n </ng-container>\n <div class=\"btn-wrapper\">\n <button\n class=\"btn-record\"\n *ngIf=\"!value && !valueUrl\"\n fd-button\n [glyph]=\"isRecording ? 'stop' : 'record'\"\n [fdType]=\"isRecording ? 'attention' : 'ghost'\"\n (click)=\"onToggleRecord()\"\n ></button>\n <div *ngIf=\"!value && valueUrl\" class=\"btn-toolbar\">\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onClearRecord()\"></button>\n <button fd-button [label]=\"'Upload' | bbbTranslate\" [glyph]=\"'upload'\" (click)=\"onUpload()\"></button>\n </div>\n <div *ngIf=\"value\" class=\"btn-toolbar\">\n <button *ngIf=\"value\" fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onDelete()\"></button>\n <button *ngIf=\"value\" fd-button [glyph]=\"'download'\" fdType=\"standard\" (click)=\"onDownload()\"></button>\n </div>\n </div>\n </fd-card-content>\n</fd-card>\n", styles: [":host .upload{display:flex;justify-content:center;align-items:center;flex-direction:column;max-width:380px;position:relative}:host .upload .file-content{width:100%}:host .upload i:before{color:#0a6ed1!important;font-size:2rem}fd-card.audio{min-height:120px;max-height:120px}fd-card.video{min-height:340px;max-height:340px}.icon{display:flex;align-items:center;justify-content:center;position:absolute;top:45%;left:45%}.video-novalue{border:1px dashed var(--sapObjectHeader_BorderColor);min-height:240px}audio,video{width:100%}.progress{position:absolute;width:100%;height:100%;background-color:#e4e4e4c7;z-index:4;display:flex;justify-content:center;align-items:center;top:0;left:0}.progress div{flex:.5}.file-content{width:100%;height:100%;display:flex;flex-direction:column;padding:1rem}.media-wrapper{flex-grow:1}.btn-wrapper{align-self:center}.btn-record{flex-shrink:1}.btn-toolbar{flex-grow:1;display:flex;column-gap:1rem}.media-info{flex-shrink:1;display:flex;width:100%;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i5$2.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i4$a.NestedListIconDirective, selector: "[fdNestedDirectivesIcon], [fd-nested-list-icon]", inputs: ["class", "glyph", "role"] }, { kind: "component", type: i5$4.ProgressIndicatorComponent, selector: "fd-progress-indicator", inputs: ["valueText", "unit", "valueMin", "valueMax", "valueNow", "state", "animate"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2560
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MediaFileUploaderComponent, decorators: [{
2561
- type: Component,
2562
- args: [{ selector: 'bdc-media-file-uploader', changeDetection: ChangeDetectionStrategy.OnPush, providers: [AudioRecordingService, VideoRecordingService, UploadService], template: "<fd-card class=\"upload\" [ngClass]=\"recordType\">\n <fd-card-content class=\"file-content\">\n <div [class.no-recording]=\"!isRecording && valueUrl\" [ngClass]=\"recordType\" class=\"media-wrapper\">\n <div class=\"icon\">\n <i\n style=\"left: 45%; position: absolute\"\n fd-nested-list-icon\n [glyph]=\"glyph\"\n *ngIf=\"!value && !valueUrl && !isRecording\"\n ></i>\n </div>\n <video #videoElement *ngIf=\"recordType === 'video'\" [class.video-novalue]=\"!valueUrl\">\n <source *ngIf=\"!isRecording && valueUrl\" [src]=\"valueUrl\" />\n <i\n style=\"left: 45%; position: absolute\"\n fd-nested-list-icon\n [glyph]=\"glyph\"\n *ngIf=\"!value && !valueUrl && !isRecording\"\n ></i>\n </video>\n <audio *ngIf=\"!isRecording && valueUrl && recordType === 'audio'\" controls>\n <source [src]=\"valueUrl\" type=\"audio/mp3\" />\n </audio>\n <input\n #photoElement\n *ngIf=\"recordType === 'photo'\"\n type=\"file\"\n accept=\"image/*\"\n id=\"file-input\"\n capture=\"environment\"\n (change)=\"onTakePhoto()\"\n />\n </div>\n <div *ngIf=\"isRecording || valueUrl\" class=\"media-info\">\n <div>\n {{ !isRecording ? '' : ('Recording' | bbbTranslate) }} <strong>{{ recordedTime }}</strong>\n </div>\n <div>{{ fileName }}</div>\n </div>\n <ng-container *ngIf=\"uploadingState$ | async as uploadingState\">\n <div class=\"progress\" *ngIf=\"uploadingState.state === 'Uploading'\">\n <div>\n <fd-progress-indicator\n state=\"informative\"\n [valueNow]=\"uploadingState?.progress\"\n ></fd-progress-indicator>\n </div>\n </div>\n </ng-container>\n <div class=\"btn-wrapper\">\n <button\n class=\"btn-record\"\n *ngIf=\"!value && !valueUrl\"\n fd-button\n [glyph]=\"isRecording ? 'stop' : 'record'\"\n [fdType]=\"isRecording ? 'attention' : 'ghost'\"\n (click)=\"onToggleRecord()\"\n ></button>\n <div *ngIf=\"!value && valueUrl\" class=\"btn-toolbar\">\n <button fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onClearRecord()\"></button>\n <button fd-button [label]=\"'Upload' | bbbTranslate\" [glyph]=\"'upload'\" (click)=\"onUpload()\"></button>\n </div>\n <div *ngIf=\"value\" class=\"btn-toolbar\">\n <button *ngIf=\"value\" fd-button [glyph]=\"'delete'\" fdType=\"negative\" (click)=\"onDelete()\"></button>\n <button *ngIf=\"value\" fd-button [glyph]=\"'download'\" fdType=\"standard\" (click)=\"onDownload()\"></button>\n </div>\n </div>\n </fd-card-content>\n</fd-card>\n", styles: [":host .upload{display:flex;justify-content:center;align-items:center;flex-direction:column;max-width:380px;position:relative}:host .upload .file-content{width:100%}:host .upload i:before{color:#0a6ed1!important;font-size:2rem}fd-card.audio{min-height:120px;max-height:120px}fd-card.video{min-height:340px;max-height:340px}.icon{display:flex;align-items:center;justify-content:center;position:absolute;top:45%;left:45%}.video-novalue{border:1px dashed var(--sapObjectHeader_BorderColor);min-height:240px}audio,video{width:100%}.progress{position:absolute;width:100%;height:100%;background-color:#e4e4e4c7;z-index:4;display:flex;justify-content:center;align-items:center;top:0;left:0}.progress div{flex:.5}.file-content{width:100%;height:100%;display:flex;flex-direction:column;padding:1rem}.media-wrapper{flex-grow:1}.btn-wrapper{align-self:center}.btn-record{flex-shrink:1}.btn-toolbar{flex-grow:1;display:flex;column-gap:1rem}.media-info{flex-shrink:1;display:flex;width:100%;justify-content:space-between}\n"] }]
2563
- }], propDecorators: { videoElement: [{
2564
- type: ViewChild,
2565
- args: ['videoElement']
2566
- }], photoElement: [{
2567
- type: ViewChild,
2568
- args: ['photoElement']
2569
- }], dialogContainer: [{
2570
- type: ViewChild,
2571
- args: ['container', { read: TemplateRef }]
2572
- }] } });
2573
-
2574
- class SubformInRowReportComponent extends BaseItemContentPropsComponent {
2575
- constructor() {
2576
- super(...arguments);
2577
- this.suggestionList$ = new Subject();
2578
- }
2579
- ngOnInit() {
2580
- var _a, _b, _c;
2581
- super.ngOnInit();
2582
- this.suggestionList$
2583
- .asObservable()
2584
- .pipe(takeUntil$1(this._onDestroy$), debounceTime(500), switchMap((ulvParams) => new Promise((resolve, reject) => {
2585
- formPanelCtrl.Save(false, (err) => {
2586
- if (err) {
2587
- reject(err);
2588
- }
2589
- this.UlvMainCtrlr.RefreshRowsByMosNoSelectionChange([formPanelCtrl.Mo], [], []);
2590
- resolve();
2591
- });
2592
- })))
2593
- .subscribe();
2594
- const userDefineViewId = (_b = (_a = this.parameters) === null || _a === void 0 ? void 0 : _a.ViewTypeValue) === null || _b === void 0 ? void 0 : _b.Id;
2595
- this.params = {
2596
- moId: this.mo.Id,
2597
- typeDefId: this.typeDefId,
2598
- isSimple: true,
2599
- viewId: userDefineViewId
2600
- };
2601
- const formPanelCtrl = createGridEditorFormPanel(this.formSetting, Object.assign({}, this.mo), this.typeDefId, null, false
2602
- // BarsaApi.Common.Util.TryGetValue(this.context.Setting, 'Extra.Relation')
2603
- );
2604
- this.formPanelCtrl = formPanelCtrl;
2605
- if ((_c = this.parameters) === null || _c === void 0 ? void 0 : _c.AutoSaveOnChange) {
2606
- formPanelCtrl.on({
2607
- scope: this,
2608
- ValueChange: () => {
2609
- this.suggestionList$.next();
2610
- }
2611
- });
2612
- }
2613
- formPanelCtrl.LoadAndCreate({ MoId: this.mo.Id, TypeDefId: this.typeDefId, TypeViewId: userDefineViewId }, false, true, () => {
2614
- this.loaded = true;
2615
- this._cdr.detectChanges();
2616
- });
2617
- }
2618
- ngOnChanges(changes) {
2619
- super.ngOnChanges(changes);
2620
- const { mo } = changes;
2621
- if (mo && !mo.firstChange) {
2622
- BarsaApi.Common.Merger.FastMerge(this.formPanelCtrl.Mo, mo.currentValue);
2623
- this.formPanelCtrl.SetValue(this.formPanelCtrl.Mo);
2624
- }
2625
- }
2626
- }
2627
- SubformInRowReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: SubformInRowReportComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2628
- SubformInRowReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: SubformInRowReportComponent, selector: "bdc-subform-in-row-report", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<bnrc-form *ngIf=\"loaded\" [formPanelCtrl]=\"formPanelCtrl\" class=\"subform-in-row\" [params]=\"params\"></bnrc-form>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2629
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: SubformInRowReportComponent, decorators: [{
2630
- type: Component,
2631
- args: [{ selector: 'bdc-subform-in-row-report', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bnrc-form *ngIf=\"loaded\" [formPanelCtrl]=\"formPanelCtrl\" class=\"subform-in-row\" [params]=\"params\"></bnrc-form>\n" }]
2632
- }] });
2633
-
2634
- class MasterDetailCardFormComponent extends FormPropsBaseComponent {
2635
- ngOnInit() {
2636
- super.ngOnInit();
2637
- }
2638
- }
2639
- MasterDetailCardFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MasterDetailCardFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2640
- MasterDetailCardFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MasterDetailCardFormComponent, selector: "bdc-master-detail-card-form", usesInheritance: true, ngImport: i0, template: "<fd-card class=\"master-tab\">\n <bsu-ly-tab-page [config]=\"modernTabs[0]\"></bsu-ly-tab-page>\n</fd-card>\n<fd-card class=\"details-tab\">\n <bsu-ly-tab-page [config]=\"modernTabs[1]\"></bsu-ly-tab-page>\n</fd-card>\n", styles: [":host{display:flex;width:100%;height:100%;column-gap:.525rem}fd-card.master-tab,fd-card.details-tab{height:100%}.master-tab{max-width:400px}.details-tab{width:100%}\n"], dependencies: [{ kind: "component", type: i3$2.LyTabPageComponent, selector: "bsu-ly-tab-page", inputs: ["renderItems", "tablist"] }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2641
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MasterDetailCardFormComponent, decorators: [{
2642
- type: Component,
2643
- args: [{ selector: 'bdc-master-detail-card-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card class=\"master-tab\">\n <bsu-ly-tab-page [config]=\"modernTabs[0]\"></bsu-ly-tab-page>\n</fd-card>\n<fd-card class=\"details-tab\">\n <bsu-ly-tab-page [config]=\"modernTabs[1]\"></bsu-ly-tab-page>\n</fd-card>\n", styles: [":host{display:flex;width:100%;height:100%;column-gap:.525rem}fd-card.master-tab,fd-card.details-tab{height:100%}.master-tab{max-width:400px}.details-tab{width:100%}\n"] }]
2644
- }] });
2645
-
2646
- class ReportButtonViewComponent extends BaseFormToolbaritemPropsComponent {
2647
- constructor() {
2648
- super(...arguments);
2649
- this.loaded = false;
2650
- }
2651
- ngOnInit() {
2652
- super.ngOnInit();
2653
- }
2654
- onMainActionClick(menu) {
2655
- if (this.parameters.MetaReport) {
2656
- BarsaApi.Bw.RunBlMethodAsync({
2657
- Parameters: [this.parameters.MetaReport.Id],
2658
- Method: '_PortalExecuteReport',
2659
- SuccessFn: (moDataList) => {
2660
- this.moDataList = moDataList;
2661
- menu.open();
2662
- },
2663
- FailFn: () => { }
2664
- });
2665
- }
2666
- }
2667
- onButtonClick(btn) { }
2668
- }
2669
- ReportButtonViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportButtonViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2670
- ReportButtonViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ReportButtonViewComponent, selector: "bdc-report-button-view", usesInheritance: true, ngImport: i0, template: "<!-- <fd-split-button\nfd-toolbar-item\n[fdType]=\"'transparent'\"\n[mainAction]=\"{\n keepMainAction: true,\n mainActionTitle: 'Choose' | bbbTranslate\n}\"\n>\n<fd-menu>\n <li fd-menu-item *ngFor=\"let mo of moDataList;let index=index\">\n <div fd-menu-interactive (click)=\"onRowCheck({mo,index})\">\n <span fd-menu-title>\n <fd-icon [glyph]=\"viewSetting.Icon | rval: mo:allColumns:true \"> </fd-icon>\n </span>\n </div>\n </li>\n</fd-menu>\n</fd-split-button> -->\n\n<fd-split-button\n fd-toolbar-item\n [mainAction]=\"{ mainActionTitle: parameters.MainActionTitle, keepMainAction: true }\"\n [fdType]=\"parameters.FdType$Caption\"\n (click)=\"onMainActionClick(menu)\"\n>\n <fd-menu #menu>\n <li fd-menu-item *ngFor=\"let mo of moDataList; let index = index\" (click)=\"onButtonClick(mo)\">\n <div fd-menu-interactive>\n <fd-menu-addon position=\"before\"> </fd-menu-addon>\n <span fd-menu-title>{{ mo.$Caption | bbbTranslate }}</span>\n </div>\n </li>\n </fd-menu>\n</fd-split-button>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2$6.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i2$6.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i2$6.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i2$6.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "component", type: i2$6.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "glyph", "submenuIndicator", "ariaHidden"] }, { kind: "component", type: i3$5.SplitButtonComponent, selector: "fd-split-button", inputs: ["glyph", "disabled", "mainActionTitle", "fdType", "expandButtonAriaLabel", "expandButtonTitle", "selected", "fixedWidth", "mainAction", "arialLabel"], outputs: ["primaryButtonClicked"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2671
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReportButtonViewComponent, decorators: [{
2672
- type: Component,
2673
- args: [{ selector: 'bdc-report-button-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <fd-split-button\nfd-toolbar-item\n[fdType]=\"'transparent'\"\n[mainAction]=\"{\n keepMainAction: true,\n mainActionTitle: 'Choose' | bbbTranslate\n}\"\n>\n<fd-menu>\n <li fd-menu-item *ngFor=\"let mo of moDataList;let index=index\">\n <div fd-menu-interactive (click)=\"onRowCheck({mo,index})\">\n <span fd-menu-title>\n <fd-icon [glyph]=\"viewSetting.Icon | rval: mo:allColumns:true \"> </fd-icon>\n </span>\n </div>\n </li>\n</fd-menu>\n</fd-split-button> -->\n\n<fd-split-button\n fd-toolbar-item\n [mainAction]=\"{ mainActionTitle: parameters.MainActionTitle, keepMainAction: true }\"\n [fdType]=\"parameters.FdType$Caption\"\n (click)=\"onMainActionClick(menu)\"\n>\n <fd-menu #menu>\n <li fd-menu-item *ngFor=\"let mo of moDataList; let index = index\" (click)=\"onButtonClick(mo)\">\n <div fd-menu-interactive>\n <fd-menu-addon position=\"before\"> </fd-menu-addon>\n <span fd-menu-title>{{ mo.$Caption | bbbTranslate }}</span>\n </div>\n </li>\n </fd-menu>\n</fd-split-button>\n" }]
2674
- }] });
2675
-
2676
- class BarsaDocumentListItemComponent extends BaseComponent {
2677
- constructor(_cdr, _picFieldSrc) {
2678
- super();
2679
- this._cdr = _cdr;
2680
- this._picFieldSrc = _picFieldSrc;
2681
- this.statusChanged = new EventEmitter();
2682
- this.rejectTextChange = new EventEmitter();
2683
- this.fileSelectionChange = new EventEmitter();
2684
- this.removeFile = new EventEmitter();
2685
- this.fullscreen = new EventEmitter();
2686
- this.download = new EventEmitter();
2687
- this.downloadAll = new EventEmitter();
2688
- this.hasFiles = false;
2689
- }
2690
- ngOnInit() {
2691
- super.ngOnInit();
2692
- const documentItem = this.documentItem;
2693
- documentItem.$ValidExtensions = `
2694
- ${documentItem.SupportImage ? ImageMimeType : ''},
2695
- ${documentItem.SupportAudio ? AudioMimeType : ''},
2696
- ${documentItem.SupportVideo ? VideoMimeType : ''},
2697
- ${documentItem.SupportFile ? AllFilesMimeType : ''}
2698
- `;
2699
- }
2700
- ngOnChanges(changes) {
2701
- super.ngOnChanges(changes);
2702
- const { files } = changes;
2703
- files && Array.isArray(files.currentValue) && this._setFirstImage(files.currentValue);
2704
- this._detectChanges();
2705
- }
2706
- onReject(e) {
2707
- this.statusChanged.emit({ value: e, rejectedText: e === 2 ? '' : this.rejectedReason });
2708
- }
2709
- onRejectedTextChange(e) {
2710
- this.rejectTextChange.emit(e.target.value);
2711
- }
2712
- onPreventClick(e) {
2713
- PreventDefaulEvent(e);
2714
- }
2715
- onFileSelection(files) {
2716
- this.fileSelectionChange.emit(files);
2717
- }
2718
- _setFirstImage(files) {
2719
- files.length &&
2720
- (this.firstImageUrl = isImage(files[0].Type)
2721
- ? this._picFieldSrc.transform(files[0].Id, 'ID', null, '', 120, 120)
2722
- : getIcon(files[0].Type));
2723
- }
2724
- _detectChanges() {
2725
- this._cdr.detectChanges();
2726
- }
2727
- }
2728
- BarsaDocumentListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDocumentListItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PictureFieldSourcePipe }], target: i0.ɵɵFactoryTarget.Component });
2729
- BarsaDocumentListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaDocumentListItemComponent, selector: "bdc-barsa-document-list-item", inputs: { documentItem: "documentItem", deviceSize: "deviceSize", files: "files", accepted: "accepted", rejectedReason: "rejectedReason", readonly: "readonly", status: "status", uploadingState: "uploadingState" }, outputs: { statusChanged: "statusChanged", rejectTextChange: "rejectTextChange", fileSelectionChange: "fileSelectionChange", removeFile: "removeFile", fullscreen: "fullscreen", download: "download", downloadAll: "downloadAll" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <li fd-list-item style=\"padding: 0.5rem 1rem\">\n <span fd-list-thumbnail>\n <fd-icon *ngIf=\"documentItem.FontIcon\" [glyph]=\"documentItem.FontIcon\"></fd-icon>\n <fd-avatar\n *ngIf=\"documentItem.Avatar\"\n size=\"s\"\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:''\"\n [clickable]=\"true\"\n ></fd-avatar\n ></span>\n \n <div fd-list-content>\n <div fd-list-title>\n <div style=\"display: flex; column-gap: 3px\">\n <strong\n >{{ documentItem.Title }}\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\n </span>\n </strong>\n <div\n *ngIf=\"documentItem.$Accepted === false || documentItem.$Accepted === true\"\n style=\"display: flex; column-gap: 3px; flex-wrap: wrap; align-items: center\"\n >\n <span\n fd-object-status\n [status]=\"accepted ? 'positive' : 'negative'\"\n [label]=\"accepted ? acceptedText : rejectedText\"\n [clickable]=\"true\"\n [inverted]=\"true\"\n [aria-label]=\"accepted ? acceptedText : rejectedText\"\n ></span>\n <fd-popover title=\"Rejected document\" *ngIf=\"rejectedReason && !accepted\">\n <fd-popover-control>\n <span\n fd-object-status\n status=\"negative\"\n glyph=\"question-mark\"\n glyphAriaLabel=\"Negative\"\n title=\"Rejected document\"\n ></span>\n </fd-popover-control>\n <fd-popover-body>\n <fd-message-strip type=\"error\" [dismissible]=\"false\">\n {{ rejectedReason }}\n </fd-message-strip>\n </fd-popover-body>\n </fd-popover>\n </div>\n </div>\n </div>\n <div fd-list-byline [twoCol]=\"true\" [class.smallSize]=\"deviceSize === 's'\">\n <div fd-list-byline-left>\n <div style=\"display: flex; flex-direction: column; row-gap: 5px; flex-wrap: wrap\">\n <span>\n {{ documentItem.Description }}\n </span>\n <div style=\"display: flex; flex-wrap: wrap; column-gap: 3px; align-items: center\">\n <ng-container *ngIf=\"hasFiles\">\n <button fd-button [fdType]=\"'transparent'\" glyph=\"show\" (click)=\"onFullscreen()\"></button>\n <ng-container *ngFor=\"let file of files\">\n <fd-token\n [readOnly]=\"readonly\"\n *ngIf=\"!file.IsDeleted\"\n (onCloseClick)=\"onRemoveFile(file)\"\n >{{ file.FileName }}</fd-token\n >\n </ng-container>\n </ng-container>\n <button\n fd-button\n *ngIf=\"documentItem.MaxFileCount && !readonly\"\n glyph=\"attachment\"\n [label]=\"'AttachFile' | bbbTranslate\"\n (click)=\"!readonly && uploader.open()\"\n ></button>\n <fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"documentItem.ItemKey\"\n [name]=\"'pictures_' + documentItem.ItemKey\"\n [accept]=\"documentItem.$ValidExtensions\"\n [fileLimit]=\"documentItem.MaxFileCount\"\n [multiple]=\"documentItem.MaxFileCount > 0\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n ></fd-file-uploader>\n </div>\n </div>\n </div>\n <div fd-list-byline-right *ngIf=\"documentItem.CanAccept\">\n <bdc-accept-reject\n [rejectedReason]=\"rejectedReason\"\n [positiveText]=\"acceptedText\"\n [negativeText]=\"rejectedText\"\n [deviceSize]=\"deviceSize\"\n [readonly]=\"readonly\"\n ></bdc-accept-reject>\n </div>\n </div>\n </div>\n</li> -->\n\n<tr fd-table-row>\n <td fd-table-cell>\n <fd-avatar\n *ngIf=\"documentItem.Avatar && !files.length; else fontIconTpl\"\n size=\"s\"\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:'':64:64\"\n [clickable]=\"true\"\n [transparent]=\"true\"\n ></fd-avatar>\n <ng-template #fontIconTpl>\n <fd-avatar\n *ngIf=\"files.length\"\n [transparent]=\"true\"\n size=\"s\"\n [image]=\"firstImageUrl\"\n [clickable]=\"true\"\n ></fd-avatar>\n <fd-avatar\n *ngIf=\"!files.length\"\n [transparent]=\"true\"\n size=\"s\"\n [glyph]=\"documentItem.FontIcon\"\n [clickable]=\"true\"\n ></fd-avatar>\n </ng-template>\n </td>\n <td fd-table-cell style=\"min-width: 140px\">\n <p fd-table-text>\n <strong\n >{{ documentItem.Title }}\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\n </span>\n </strong>\n </p>\n <div>\n <span>\n {{ documentItem.Description }}\n </span>\n </div>\n </td>\n\n <td fd-table-cell>\n <ng-container>\n <!-- <ul fd-list>\n <li fd-list-item *ngFor=\"let file of files; let ind = index\">\n <span fd-list-title>\n {{ file.FileName }}\n </span>\n <span fd-list-secondary>\n <button ariaLabel=\"Remove\" title=\"Remove\" fd-button glyph=\"delete\" ></button>\n </span>\n </li>\n </ul> -->\n <div style=\"display: flex; align-items: flex-start; column-gap: 3px; row-gap: 3px; flex-direction: column\">\n <ng-container *ngFor=\"let file of files\">\n <!-- <span><fd-icon glyph=\"attachment\"></fd-icon><a fd-link>{{file.FileName}}</a></span> -->\n <bsu-file-viewer-popover\n *ngIf=\"!file.IsDeleted\"\n [file]=\"file\"\n [deviceSize]=\"deviceSize\"\n [canDownload]=\"true\"\n (remove)=\"removeFile.emit(file)\"\n ></bsu-file-viewer-popover>\n </ng-container>\n <!-- <button\n fd-button\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\n glyph=\"add\"\n (click)=\"!readonly && uploader.open()\"\n ></button> -->\n </div>\n <!-- <p *ngFor=\"let file of files\" fd-table-text>\n <fd-action-sheet >\n <fd-action-sheet-control>\n <button\n fd-button\n glyph=\"settings\"\n title=\"Open Action Sheet Mobile\"\n id=\"fd-action-sheet-mobile-control\"\n aria-haspopup=\"menu\"\n [label]=\"file.FileName ||''\"\n aria-controls=\"fd-action-sheet-mobile-body\"\n ></button>\n </fd-action-sheet-control>\n \n <fd-action-sheet-body\n actionSheetBodyId=\"fd-action-sheet-mobile-body\"\n ariaLabelledBy=\"fd-action-sheet-mobile-control\"\n >\n <li fd-action-sheet-item label=\"Search\" glyph=\"search\"></li>\n <li fd-action-sheet-item label=\"Download\" glyph=\"download\" ></li>\n <li fd-action-sheet-item label=\"Accept\" glyph=\"accept\" ></li>\n <li fd-action-sheet-item label=\"Reject\" glyph=\"cancel\" ></li>\n <li fd-action-sheet-item label=\"Decide Later\" [isCloseButton]=\"true\"></li>\n <li fd-action-sheet-item label=\"Cancel\" [negative]=\"true\" [isCloseButton]=\"true\"></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n </p> -->\n </ng-container>\n </td>\n <td fd-table-cell>\n <div class=\"status\" style=\"position: relative\">\n <button\n fd-button\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\n glyph=\"attachment\"\n [label]=\"'AttachFile' | bbbTranslate\"\n [disabled]=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\n (click)=\"!readonly && uploader.open()\"\n >\n <bsu-mask\n *ngIf=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\n [marginTop]=\"'3px'\"\n ></bsu-mask>\n </button>\n <button\n fd-button\n glyph=\"show\"\n fullscreenFiles\n [files]=\"files\"\n [title]=\"documentItem.Title\"\n [fd-inline-help]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n [aria-describedby]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n [ariaLabel]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n fullscreenFiles\n [disabled]=\"!files.length\"\n [files]=\"files\"\n ></button>\n <button\n fd-button\n glyph=\"download\"\n [fd-inline-help]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n [aria-describedby]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n [ariaLabel]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n downloadFiles\n [disabled]=\"!files.length\"\n [files]=\"files\"\n (click)=\"downloadAll.emit()\"\n ></button>\n </div>\n </td>\n <td fd-table-cell>\n <fd-action-sheet #actionSheet>\n <fd-action-sheet-control>\n <ng-container *ngTemplateOutlet=\"statusTpl\"></ng-container>\n </fd-action-sheet-control>\n <fd-action-sheet-body>\n <li\n fd-action-sheet-item\n [label]=\"'Accept' | bbbTranslate\"\n glyph=\"accept\"\n (click)=\"actionSheet.close(); onReject(2)\"\n ></li>\n <li\n fd-action-sheet-item\n [label]=\"'Reject' | bbbTranslate\"\n glyph=\"cancel\"\n (click)=\"actionSheet.close(); onReject(3)\"\n ></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n\n <p fd-table-text maxWidth=\"400px\" *ngIf=\"status === 3\">\n <span *ngIf=\"readonly && rejectedReason\"> {{ rejectedReason | bbbTranslate }} </span>\n <input\n *ngIf=\"!readonly\"\n fd-form-control\n [value]=\"rejectedReason | bbbTranslate\"\n [placeholder]=\"'\u062F\u0644\u0627\u06CC\u0644 \u0631\u062F \u0645\u062F\u0631\u06A9' | bbbTranslate\"\n />\n </p>\n </td>\n</tr>\n\n<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"documentItem.ItemKey\"\n [name]=\"'pictures_' + documentItem.ItemKey\"\n [accept]=\"documentItem.$ValidExtensions\"\n [fileLimit]=\"documentItem.MaxFileCount\"\n [multiple]=\"documentItem.MaxFileCount > 0\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n<ng-template #statusTpl>\n <div class=\"status\">\n <button fd-button fdType=\"transparent\">\n <span\n *ngIf=\"status === 1\"\n fd-object-status\n [label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\n [aria-label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\n ></span>\n <span\n *ngIf=\"status === 2\"\n fd-object-status\n glyph=\"message-success\"\n status=\"positive\"\n [label]=\"'Accepted' | bbbTranslate\"\n [label]=\"'Accepted' | bbbTranslate\"\n ></span>\n <span\n *ngIf=\"status === 3\"\n fd-object-status\n glyph=\"cancel\"\n status=\"negative\"\n [label]=\"'Rejected' | bbbTranslate\"\n [aria-label]=\"'Rejected' | bbbTranslate\"\n ></span>\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:contents}::ng-deep .fd-list--byline .fd-list__byline-left,::ng-deep .fd-list--byline .fd-list__byline-right{line-height:1.1rem!important}.fd-list__byline.smallSize{flex-direction:column;row-gap:5px}.fd-list__byline.smallSize div{width:100%}td{white-space:nowrap;padding:.5rem}fd-avatar ::ng-deep i{font-size:2.3rem!important}.status{display:flex;align-items:center;column-gap:3px;row-gap:3px}.status span.fd-object-status{font-size:var(--sapFontSize)!important;font-weight:700!important}.status span.fd-object-status ::ng-deep fd-icon{font-size:var(--sapFontSize);font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$2.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3$2.FileViewerPopoverComponent, selector: "bsu-file-viewer-popover", inputs: ["files", "file", "deviceSize", "canDownload", "disableRemove", "fdType"], outputs: ["remove"] }, { kind: "directive", type: i3$2.FullscreenFilesDirective, selector: "[fullscreenFiles]", inputs: ["files", "title", "deviceSize", "isImageGallery", "component"] }, { kind: "directive", type: i3$2.DownloadFilesDirective, selector: "[downloadFiles]", inputs: ["files"] }, { kind: "component", type: i4$b.ActionSheetComponent, selector: "fd-action-sheet", inputs: ["mobile", "placement", "noArrow", "isOpen", "keyboardSupport", "triggers"], outputs: ["focusEscapeList", "isOpenChange"] }, { kind: "component", type: i4$b.ActionSheetControlComponent, selector: "fd-action-sheet-control", outputs: ["clicked"] }, { kind: "component", type: i4$b.ActionSheetItemComponent, selector: "[fd-action-sheet-item]", inputs: ["label", "glyph", "negative", "isCloseButton", "disabled"], outputs: ["keyDown"] }, { kind: "component", type: i4$b.ActionSheetBodyComponent, selector: "fd-action-sheet-body", inputs: ["actionSheetBodyId", "mobile", "ariaLabel", "ariaLabelledby"] }, { kind: "component", type: i4$8.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7$3.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i7.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i7.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "directive", type: i9.InlineHelpDirective, selector: "[fd-inline-help], [fd-inline-help-template]", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help", "fd-inline-help-template"] }, { kind: "component", type: i7$2.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "directive", type: i4$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i4$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "directive", type: i4$6.TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2730
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDocumentListItemComponent, decorators: [{
2731
- type: Component,
2732
- args: [{ selector: 'bdc-barsa-document-list-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <li fd-list-item style=\"padding: 0.5rem 1rem\">\n <span fd-list-thumbnail>\n <fd-icon *ngIf=\"documentItem.FontIcon\" [glyph]=\"documentItem.FontIcon\"></fd-icon>\n <fd-avatar\n *ngIf=\"documentItem.Avatar\"\n size=\"s\"\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:''\"\n [clickable]=\"true\"\n ></fd-avatar\n ></span>\n \n <div fd-list-content>\n <div fd-list-title>\n <div style=\"display: flex; column-gap: 3px\">\n <strong\n >{{ documentItem.Title }}\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\n </span>\n </strong>\n <div\n *ngIf=\"documentItem.$Accepted === false || documentItem.$Accepted === true\"\n style=\"display: flex; column-gap: 3px; flex-wrap: wrap; align-items: center\"\n >\n <span\n fd-object-status\n [status]=\"accepted ? 'positive' : 'negative'\"\n [label]=\"accepted ? acceptedText : rejectedText\"\n [clickable]=\"true\"\n [inverted]=\"true\"\n [aria-label]=\"accepted ? acceptedText : rejectedText\"\n ></span>\n <fd-popover title=\"Rejected document\" *ngIf=\"rejectedReason && !accepted\">\n <fd-popover-control>\n <span\n fd-object-status\n status=\"negative\"\n glyph=\"question-mark\"\n glyphAriaLabel=\"Negative\"\n title=\"Rejected document\"\n ></span>\n </fd-popover-control>\n <fd-popover-body>\n <fd-message-strip type=\"error\" [dismissible]=\"false\">\n {{ rejectedReason }}\n </fd-message-strip>\n </fd-popover-body>\n </fd-popover>\n </div>\n </div>\n </div>\n <div fd-list-byline [twoCol]=\"true\" [class.smallSize]=\"deviceSize === 's'\">\n <div fd-list-byline-left>\n <div style=\"display: flex; flex-direction: column; row-gap: 5px; flex-wrap: wrap\">\n <span>\n {{ documentItem.Description }}\n </span>\n <div style=\"display: flex; flex-wrap: wrap; column-gap: 3px; align-items: center\">\n <ng-container *ngIf=\"hasFiles\">\n <button fd-button [fdType]=\"'transparent'\" glyph=\"show\" (click)=\"onFullscreen()\"></button>\n <ng-container *ngFor=\"let file of files\">\n <fd-token\n [readOnly]=\"readonly\"\n *ngIf=\"!file.IsDeleted\"\n (onCloseClick)=\"onRemoveFile(file)\"\n >{{ file.FileName }}</fd-token\n >\n </ng-container>\n </ng-container>\n <button\n fd-button\n *ngIf=\"documentItem.MaxFileCount && !readonly\"\n glyph=\"attachment\"\n [label]=\"'AttachFile' | bbbTranslate\"\n (click)=\"!readonly && uploader.open()\"\n ></button>\n <fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"documentItem.ItemKey\"\n [name]=\"'pictures_' + documentItem.ItemKey\"\n [accept]=\"documentItem.$ValidExtensions\"\n [fileLimit]=\"documentItem.MaxFileCount\"\n [multiple]=\"documentItem.MaxFileCount > 0\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n ></fd-file-uploader>\n </div>\n </div>\n </div>\n <div fd-list-byline-right *ngIf=\"documentItem.CanAccept\">\n <bdc-accept-reject\n [rejectedReason]=\"rejectedReason\"\n [positiveText]=\"acceptedText\"\n [negativeText]=\"rejectedText\"\n [deviceSize]=\"deviceSize\"\n [readonly]=\"readonly\"\n ></bdc-accept-reject>\n </div>\n </div>\n </div>\n</li> -->\n\n<tr fd-table-row>\n <td fd-table-cell>\n <fd-avatar\n *ngIf=\"documentItem.Avatar && !files.length; else fontIconTpl\"\n size=\"s\"\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:'':64:64\"\n [clickable]=\"true\"\n [transparent]=\"true\"\n ></fd-avatar>\n <ng-template #fontIconTpl>\n <fd-avatar\n *ngIf=\"files.length\"\n [transparent]=\"true\"\n size=\"s\"\n [image]=\"firstImageUrl\"\n [clickable]=\"true\"\n ></fd-avatar>\n <fd-avatar\n *ngIf=\"!files.length\"\n [transparent]=\"true\"\n size=\"s\"\n [glyph]=\"documentItem.FontIcon\"\n [clickable]=\"true\"\n ></fd-avatar>\n </ng-template>\n </td>\n <td fd-table-cell style=\"min-width: 140px\">\n <p fd-table-text>\n <strong\n >{{ documentItem.Title }}\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\n </span>\n </strong>\n </p>\n <div>\n <span>\n {{ documentItem.Description }}\n </span>\n </div>\n </td>\n\n <td fd-table-cell>\n <ng-container>\n <!-- <ul fd-list>\n <li fd-list-item *ngFor=\"let file of files; let ind = index\">\n <span fd-list-title>\n {{ file.FileName }}\n </span>\n <span fd-list-secondary>\n <button ariaLabel=\"Remove\" title=\"Remove\" fd-button glyph=\"delete\" ></button>\n </span>\n </li>\n </ul> -->\n <div style=\"display: flex; align-items: flex-start; column-gap: 3px; row-gap: 3px; flex-direction: column\">\n <ng-container *ngFor=\"let file of files\">\n <!-- <span><fd-icon glyph=\"attachment\"></fd-icon><a fd-link>{{file.FileName}}</a></span> -->\n <bsu-file-viewer-popover\n *ngIf=\"!file.IsDeleted\"\n [file]=\"file\"\n [deviceSize]=\"deviceSize\"\n [canDownload]=\"true\"\n (remove)=\"removeFile.emit(file)\"\n ></bsu-file-viewer-popover>\n </ng-container>\n <!-- <button\n fd-button\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\n glyph=\"add\"\n (click)=\"!readonly && uploader.open()\"\n ></button> -->\n </div>\n <!-- <p *ngFor=\"let file of files\" fd-table-text>\n <fd-action-sheet >\n <fd-action-sheet-control>\n <button\n fd-button\n glyph=\"settings\"\n title=\"Open Action Sheet Mobile\"\n id=\"fd-action-sheet-mobile-control\"\n aria-haspopup=\"menu\"\n [label]=\"file.FileName ||''\"\n aria-controls=\"fd-action-sheet-mobile-body\"\n ></button>\n </fd-action-sheet-control>\n \n <fd-action-sheet-body\n actionSheetBodyId=\"fd-action-sheet-mobile-body\"\n ariaLabelledBy=\"fd-action-sheet-mobile-control\"\n >\n <li fd-action-sheet-item label=\"Search\" glyph=\"search\"></li>\n <li fd-action-sheet-item label=\"Download\" glyph=\"download\" ></li>\n <li fd-action-sheet-item label=\"Accept\" glyph=\"accept\" ></li>\n <li fd-action-sheet-item label=\"Reject\" glyph=\"cancel\" ></li>\n <li fd-action-sheet-item label=\"Decide Later\" [isCloseButton]=\"true\"></li>\n <li fd-action-sheet-item label=\"Cancel\" [negative]=\"true\" [isCloseButton]=\"true\"></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n </p> -->\n </ng-container>\n </td>\n <td fd-table-cell>\n <div class=\"status\" style=\"position: relative\">\n <button\n fd-button\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\n glyph=\"attachment\"\n [label]=\"'AttachFile' | bbbTranslate\"\n [disabled]=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\n (click)=\"!readonly && uploader.open()\"\n >\n <bsu-mask\n *ngIf=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\n [marginTop]=\"'3px'\"\n ></bsu-mask>\n </button>\n <button\n fd-button\n glyph=\"show\"\n fullscreenFiles\n [files]=\"files\"\n [title]=\"documentItem.Title\"\n [fd-inline-help]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n [aria-describedby]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n [ariaLabel]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n fullscreenFiles\n [disabled]=\"!files.length\"\n [files]=\"files\"\n ></button>\n <button\n fd-button\n glyph=\"download\"\n [fd-inline-help]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n [aria-describedby]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n [ariaLabel]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n downloadFiles\n [disabled]=\"!files.length\"\n [files]=\"files\"\n (click)=\"downloadAll.emit()\"\n ></button>\n </div>\n </td>\n <td fd-table-cell>\n <fd-action-sheet #actionSheet>\n <fd-action-sheet-control>\n <ng-container *ngTemplateOutlet=\"statusTpl\"></ng-container>\n </fd-action-sheet-control>\n <fd-action-sheet-body>\n <li\n fd-action-sheet-item\n [label]=\"'Accept' | bbbTranslate\"\n glyph=\"accept\"\n (click)=\"actionSheet.close(); onReject(2)\"\n ></li>\n <li\n fd-action-sheet-item\n [label]=\"'Reject' | bbbTranslate\"\n glyph=\"cancel\"\n (click)=\"actionSheet.close(); onReject(3)\"\n ></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n\n <p fd-table-text maxWidth=\"400px\" *ngIf=\"status === 3\">\n <span *ngIf=\"readonly && rejectedReason\"> {{ rejectedReason | bbbTranslate }} </span>\n <input\n *ngIf=\"!readonly\"\n fd-form-control\n [value]=\"rejectedReason | bbbTranslate\"\n [placeholder]=\"'\u062F\u0644\u0627\u06CC\u0644 \u0631\u062F \u0645\u062F\u0631\u06A9' | bbbTranslate\"\n />\n </p>\n </td>\n</tr>\n\n<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"documentItem.ItemKey\"\n [name]=\"'pictures_' + documentItem.ItemKey\"\n [accept]=\"documentItem.$ValidExtensions\"\n [fileLimit]=\"documentItem.MaxFileCount\"\n [multiple]=\"documentItem.MaxFileCount > 0\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n<ng-template #statusTpl>\n <div class=\"status\">\n <button fd-button fdType=\"transparent\">\n <span\n *ngIf=\"status === 1\"\n fd-object-status\n [label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\n [aria-label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\n ></span>\n <span\n *ngIf=\"status === 2\"\n fd-object-status\n glyph=\"message-success\"\n status=\"positive\"\n [label]=\"'Accepted' | bbbTranslate\"\n [label]=\"'Accepted' | bbbTranslate\"\n ></span>\n <span\n *ngIf=\"status === 3\"\n fd-object-status\n glyph=\"cancel\"\n status=\"negative\"\n [label]=\"'Rejected' | bbbTranslate\"\n [aria-label]=\"'Rejected' | bbbTranslate\"\n ></span>\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:contents}::ng-deep .fd-list--byline .fd-list__byline-left,::ng-deep .fd-list--byline .fd-list__byline-right{line-height:1.1rem!important}.fd-list__byline.smallSize{flex-direction:column;row-gap:5px}.fd-list__byline.smallSize div{width:100%}td{white-space:nowrap;padding:.5rem}fd-avatar ::ng-deep i{font-size:2.3rem!important}.status{display:flex;align-items:center;column-gap:3px;row-gap:3px}.status span.fd-object-status{font-size:var(--sapFontSize)!important;font-weight:700!important}.status span.fd-object-status ::ng-deep fd-icon{font-size:var(--sapFontSize);font-weight:700}\n"] }]
2733
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.PictureFieldSourcePipe }]; }, propDecorators: { documentItem: [{
2734
- type: Input
2735
- }], deviceSize: [{
2736
- type: Input
2737
- }], files: [{
2738
- type: Input
2739
- }], accepted: [{
2740
- type: Input
2741
- }], rejectedReason: [{
2742
- type: Input
2743
- }], readonly: [{
2744
- type: Input
2745
- }], status: [{
2746
- type: Input
2747
- }], uploadingState: [{
2748
- type: Input
2749
- }], statusChanged: [{
2750
- type: Output
2751
- }], rejectTextChange: [{
2752
- type: Output
2753
- }], fileSelectionChange: [{
2754
- type: Output
2755
- }], removeFile: [{
2756
- type: Output
2757
- }], fullscreen: [{
2758
- type: Output
2759
- }], download: [{
2760
- type: Output
2761
- }], downloadAll: [{
2762
- type: Output
2763
- }] } });
2764
-
2765
- class BarsaDocumentsComponent extends ReportViewBaseComponent {
2766
- constructor(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService, _dialogService, _uploadService) {
2767
- super(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService, _uploadService);
2768
- this._el = _el;
2769
- this._cdr = _cdr;
2770
- this._renderer2 = _renderer2;
2771
- this._findColumnByDbName = _findColumnByDbName;
2772
- this._ulvMainService = _ulvMainService;
2773
- this._portalService = _portalService;
2774
- this._dialogService = _dialogService;
2775
- this._uploadService = _uploadService;
2776
- }
2777
- get documentItems() {
2778
- if (this.customFieldInfo) {
2779
- return this.customFieldInfo.DocumentItems.MoDataList;
2780
- }
2781
- else {
2782
- return this.viewSetting.FilesSetting.DocumentItems.MoDataList;
2783
- }
2784
- }
2785
- ngOnInit() {
2786
- super.ngOnInit();
2787
- const { moDataList, viewSetting, allColumns } = this;
2788
- this._initColumnField(allColumns, viewSetting);
2789
- this._subscribeOnUploadFile(this.fileColumn);
2790
- this._mapDocumentItem(moDataList, this.documentItems);
2791
- this._checkMandatory();
2792
- }
2793
- ngOnChanges(changes) {
2794
- super.ngOnChanges(changes);
2795
- const { moDataList } = changes;
2796
- if (moDataList && !moDataList.firstChange) {
2797
- if (moDataList && !moDataList.firstChange) {
2798
- this._mapDocumentItem(moDataList.currentValue, this.documentItems);
2799
- this.detectChanges();
2800
- }
2801
- }
2802
- }
2803
- ngAfterViewInit() {
2804
- super.ngAfterViewInit();
2805
- setTimeout(() => {
2806
- for (let i = 0; i < this.documentItems.length - this.moDataList.length; i++) {
2807
- this.createNewMo.emit();
2808
- }
2809
- });
2810
- }
2811
- onFileSelection(files, documentItem, mo) {
2812
- this.selectedMo = mo;
2813
- this._uploadFile(files, documentItem);
2814
- }
2815
- onRemoveFile(file, mo) {
2816
- const fileDbName = this.fileColumn.Name;
2817
- let files = mo[fileDbName].Files;
2818
- if (file.IsNew) {
2819
- files = files.filter((c) => c.Id !== file.Id);
2820
- }
2821
- else {
2822
- const existFile = files.find((c) => c.Id === file.Id);
2823
- existFile.IsDeleted = true;
2824
- }
2825
- mo[fileDbName].Files = [...files];
2826
- this._updateMo(mo);
2827
- }
2828
- onStatusChanged(e, mo) {
2829
- mo[this.statusColumn.Name] = e.value;
2830
- mo[this.rejectedReasonColumn.Name] = e.rejectedText;
2831
- this._updateMo(mo);
2832
- }
2833
- onRejectedTextChange(text, mo) {
2834
- mo[this.rejectedReasonColumn.Name] = text;
2835
- this._updateMo(mo);
2836
- }
2837
- _checkMandatory() {
2838
- const moDataList = this.moDataList;
2839
- const items = this.documentItems.filter((c) => c.IsRequired);
2840
- let mandatory = items.length > 0;
2841
- const mandatory2 = items
2842
- .map((item) => moDataList.find((c) => c[this.keyColumn.Name] === item.ItemKey))
2843
- .filter((item) => item)
2844
- .some((mo) => mo[this.fileColumn.Name].Files.filter((c) => !c.IsDeleted).length === 0);
2845
- mandatory = mandatory && mandatory2;
2846
- this.mandatory.emit(mandatory);
2847
- }
2848
- _mapDocumentItem(moDataList, documentItems) {
2849
- const keyName = this.keyColumn.Name;
2850
- moDataList.forEach((mo, index) => {
2851
- let documentItem = documentItems.find((c) => c.ItemKey === mo[keyName]); // find setting that matches with mo by itemKey
2852
- if (documentItem) {
2853
- mo.$documentItem = documentItem;
2854
- }
2855
- else {
2856
- documentItem = documentItems.find((item) => moDataList.map((c) => c[keyName]).indexOf(item.ItemKey) < 0); // find a setting has not have $RelatedMo yet
2857
- if (documentItem) {
2858
- mo[keyName] = documentItem.ItemKey;
2859
- mo.$documentItem = documentItem;
2860
- this.updateMo.emit(mo);
2861
- }
2862
- }
2863
- });
2864
- }
2865
- _initColumnField(allColumns, viewSetting) {
2866
- const keyColumn = this._findColumnByDbName.transform(allColumns, viewSetting.ItemKeyField);
2867
- const fileColumn = this._findColumnByDbName.transform(allColumns, viewSetting.FileField);
2868
- const acceptedColumn = this._findColumnByDbName.transform(allColumns, viewSetting.AcceptedField);
2869
- const rejectedReasonColumn = this._findColumnByDbName.transform(allColumns, viewSetting.RejectedReasonField);
2870
- const statusColumn = this._findColumnByDbName.transform(allColumns, viewSetting.StatusField);
2871
- !keyColumn && this._columnNotExistsInReport(viewSetting.ItemKeyField);
2872
- !fileColumn && this._columnNotExistsInReport(viewSetting.FileField);
2873
- !rejectedReasonColumn && this._columnNotExistsInReport(viewSetting.RejectedReasonField);
2874
- !acceptedColumn && this._columnNotExistsInReport(viewSetting.AcceptedField);
2875
- !statusColumn && this._columnNotExistsInReport(viewSetting.StatusField);
2876
- keyColumn && (this.keyColumn = keyColumn);
2877
- fileColumn && (this.fileColumn = fileColumn);
2878
- acceptedColumn && (this.acceptedColumn = acceptedColumn);
2879
- rejectedReasonColumn && (this.rejectedReasonColumn = rejectedReasonColumn);
2880
- statusColumn && (this.statusColumn = statusColumn);
2881
- }
2882
- _subscribeOnUploadFile(fileColumn) {
2883
- this._filesValidationHelper = new FilesValidationHelper(0, 0, 0);
2884
- if (this._uploadService) {
2885
- this._createLinearHelper(this._uploadService, this._filesValidationHelper, fileColumn.FieldDefId);
2886
- this.uploadingState$ = this._uploadService.uploadingState$;
2887
- }
2888
- else {
2889
- throw new Error('UploadService not provided.');
2890
- }
2891
- this._linearHelper.newFileUploaded$.subscribe((file) => {
2892
- const mo = this.moDataList.find((c) => c.Id === this.selectedMo.Id);
2893
- if (mo) {
2894
- mo[fileColumn.Name].Files = [...mo[fileColumn.Name].Files, file];
2895
- this._updateMo(mo);
2896
- }
2897
- });
2898
- }
2899
- _updateMo(mo) {
2900
- mo.$NewInlineMo = undefined;
2901
- if (mo.$State === 'Unchanged') {
2902
- mo.$State = 'Modified';
2903
- }
2904
- this.updateMo.emit(mo);
2905
- this._checkMandatory();
2906
- }
2907
- _createLinearHelper(uploadService, filesValidationHelper, fieldDefId) {
2908
- this._linearHelper = new LinearListHelper(uploadService, filesValidationHelper, fieldDefId);
2909
- }
2910
- _uploadFile(files, documentItem) {
2911
- const filesValidationHelper = this._filesValidationHelper;
2912
- filesValidationHelper.maxFileCount = +documentItem.MaxFileCount;
2913
- filesValidationHelper.maxFileSize = +documentItem.EachFileSize;
2914
- filesValidationHelper.maxTotalFileSize = +documentItem.MaxFileSize;
2915
- this._linearHelper.uploadToServer(files, documentItem.Title);
2916
- }
2917
- _columnNotExistsInReport(columnCaption) {
2918
- throw new Error(`can not find ${columnCaption} column in report.please add it to report columns.`);
2919
- }
2920
- }
2921
- BarsaDocumentsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDocumentsComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1.FindColumnByDbNamePipe }, { token: i1.UlvMainService }, { token: i1.PortalService }, { token: i2$3.DialogService }, { token: i1.UploadService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2922
- BarsaDocumentsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaDocumentsComponent, selector: "bdc-barsa-documents", providers: [UploadService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <ul fd-list [byline]=\"true\" fdCompact [selection]=\"false\"> -->\n<table fd-table aria-label=\"Default\" [allCellsFocusable]=\"true\" [noBorderX]=\"true\">\n <thead fd-table-header>\n <tr fd-table-row>\n <th fd-table-cell>{{ '\u0639\u06A9\u0633' | bbbTranslate }}</th>\n <th fd-table-cell style=\"min-width: 140px; width: auto\">{{ '\u0646\u0648\u0639 \u0645\u062F\u0631\u06A9' | bbbTranslate }}</th>\n <th fd-table-cell style=\"width: 99%\">{{ '\u0627\u0644\u0635\u0627\u0642 \u0641\u0627\u06CC\u0644' | bbbTranslate }}</th>\n <th fd-table-cell></th>\n <th fd-table-cell style=\"width: 400px; min-width: 400px; max-width: 400px\">{{ '\u0648\u0636\u0639\u06CC\u062A' | bbbTranslate }}</th>\n </tr>\n </thead>\n <tbody fd-table-body>\n <ng-container *ngFor=\"let mo of moDataList; trackBy: _trackByRow\">\n <bdc-barsa-document-list-item\n *ngIf=\"mo.$documentItem\"\n [documentItem]=\"mo.$documentItem\"\n [accepted]=\"mo[acceptedColumn.Name]\"\n [files]=\"mo[fileColumn.Name].Files\"\n [uploadingState]=\"(uploadingState$ | async)!!\"\n [rejectedReason]=\"mo[rejectedReasonColumn.Name]\"\n [fileDbName]=\"fileColumn.Name\"\n [status]=\"+mo[statusColumn.Name]\"\n [deviceSize]=\"deviceSize\"\n [readonly]=\"!access.Edit\"\n [deviceSize]=\"deviceSize\"\n (removeFile)=\"onRemoveFile($event, mo)\"\n (fileSelectionChange)=\"onFileSelection($event, mo.$documentItem, mo)\"\n (rejectTextChange)=\"onRejectedTextChange($event, mo)\"\n (statusChanged)=\"onStatusChanged($event, mo)\"\n ></bdc-barsa-document-list-item>\n </ng-container>\n <!-- </ul> -->\n </tbody>\n</table>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$6.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i4$6.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i4$6.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i4$6.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i4$6.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "component", type: BarsaDocumentListItemComponent, selector: "bdc-barsa-document-list-item", inputs: ["documentItem", "deviceSize", "files", "accepted", "rejectedReason", "readonly", "status", "uploadingState"], outputs: ["statusChanged", "rejectTextChange", "fileSelectionChange", "removeFile", "fullscreen", "download", "downloadAll"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2923
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDocumentsComponent, decorators: [{
2924
- type: Component,
2925
- args: [{ selector: 'bdc-barsa-documents', changeDetection: ChangeDetectionStrategy.OnPush, providers: [UploadService], template: "<!-- <ul fd-list [byline]=\"true\" fdCompact [selection]=\"false\"> -->\n<table fd-table aria-label=\"Default\" [allCellsFocusable]=\"true\" [noBorderX]=\"true\">\n <thead fd-table-header>\n <tr fd-table-row>\n <th fd-table-cell>{{ '\u0639\u06A9\u0633' | bbbTranslate }}</th>\n <th fd-table-cell style=\"min-width: 140px; width: auto\">{{ '\u0646\u0648\u0639 \u0645\u062F\u0631\u06A9' | bbbTranslate }}</th>\n <th fd-table-cell style=\"width: 99%\">{{ '\u0627\u0644\u0635\u0627\u0642 \u0641\u0627\u06CC\u0644' | bbbTranslate }}</th>\n <th fd-table-cell></th>\n <th fd-table-cell style=\"width: 400px; min-width: 400px; max-width: 400px\">{{ '\u0648\u0636\u0639\u06CC\u062A' | bbbTranslate }}</th>\n </tr>\n </thead>\n <tbody fd-table-body>\n <ng-container *ngFor=\"let mo of moDataList; trackBy: _trackByRow\">\n <bdc-barsa-document-list-item\n *ngIf=\"mo.$documentItem\"\n [documentItem]=\"mo.$documentItem\"\n [accepted]=\"mo[acceptedColumn.Name]\"\n [files]=\"mo[fileColumn.Name].Files\"\n [uploadingState]=\"(uploadingState$ | async)!!\"\n [rejectedReason]=\"mo[rejectedReasonColumn.Name]\"\n [fileDbName]=\"fileColumn.Name\"\n [status]=\"+mo[statusColumn.Name]\"\n [deviceSize]=\"deviceSize\"\n [readonly]=\"!access.Edit\"\n [deviceSize]=\"deviceSize\"\n (removeFile)=\"onRemoveFile($event, mo)\"\n (fileSelectionChange)=\"onFileSelection($event, mo.$documentItem, mo)\"\n (rejectTextChange)=\"onRejectedTextChange($event, mo)\"\n (statusChanged)=\"onStatusChanged($event, mo)\"\n ></bdc-barsa-document-list-item>\n </ng-container>\n <!-- </ul> -->\n </tbody>\n</table>\n", styles: [":host{display:block}\n"] }]
2926
- }], ctorParameters: function () {
2927
- return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1.FindColumnByDbNamePipe }, { type: i1.UlvMainService }, { type: i1.PortalService }, { type: i2$3.DialogService }, { type: i1.UploadService, decorators: [{
2928
- type: Optional
2929
- }] }];
2930
- } });
2931
-
2932
- class AcceptRejectComponent extends BaseComponent {
2933
- constructor(_cdr) {
2934
- super();
2935
- this._cdr = _cdr;
2936
- this.rejectedChanged = new EventEmitter();
2937
- this.id = getUniqueId(3);
2938
- this.applied = false;
2939
- }
2940
- ngOnInit() {
2941
- super.ngOnInit();
2942
- this._initilaize();
2943
- }
2944
- onReject() {
2945
- this._raiseEvent(true, true, this.rejectedReason);
2946
- }
2947
- onReset() {
2948
- this._raiseEvent(false, false);
2949
- }
2950
- onAccept() {
2951
- this._raiseEvent(true, false);
2952
- }
2953
- _initilaize() {
2954
- if (this.rejectedReason) {
2955
- this.rejected = true;
2956
- this.applied = true;
2957
- }
2958
- }
2959
- _raiseEvent(applied, rejected, rejectedReason = '') {
2960
- this.applied = applied;
2961
- this.rejected = rejected;
2962
- this.rejectedReason = rejectedReason;
2963
- this.rejectedChanged.emit({ accept: rejected, error: rejectedReason });
2964
- this._cdr.detectChanges();
2965
- }
2966
- }
2967
- AcceptRejectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AcceptRejectComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2968
- AcceptRejectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: AcceptRejectComponent, selector: "bdc-accept-reject", inputs: { negativeText: "negativeText", positiveText: "positiveText", rejectedReason: "rejectedReason", acceptedText: "acceptedText", deviceSize: "deviceSize", readonly: "readonly", rejected: "rejected" }, outputs: { rejectedChanged: "rejectedChanged" }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"!applied && !readonly\">\r\n <button\r\n fd-button\r\n [label]=\"positiveText | bbbTranslate\"\r\n fdType=\"positive\"\r\n glyph=\"message-success\"\r\n ariaLabel=\"positive\"\r\n value=\"yes\"\r\n style=\"margin: 0 5px\"\r\n (click)=\"onAccept()\"\r\n ></button>\r\n <fd-popover [focusTrapped]=\"true\" [focusAutoCapture]=\"true\" [mobile]=\"deviceSize === 's'\" #popover>\r\n <fd-popover-control>\r\n <button\r\n fd-button\r\n [label]=\"negativeText | bbbTranslate\"\r\n glyph=\"message-error\"\r\n fdType=\"negative\"\r\n ariaLabel=\"Negative\"\r\n value=\"no\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px\">\r\n <div fd-popover-body-header>\r\n <div fd-bar [cozy]=\"true\" id=\"popover-bar-header-1\">\r\n <div fd-bar-left>\r\n <span\r\n fd-object-status\r\n status=\"negative\"\r\n glyph=\"message-error\"\r\n glyphAriaLabel=\"Negative\"\r\n title=\"Negative\"\r\n ></span>\r\n <fd-bar-element>\u0639\u0644\u062A \u0631\u062F</fd-bar-element>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-form-item>\r\n <fd-form-input-message-group>\r\n <textarea fd-form-control [id]=\"id\" [(ngModel)]=\"rejectedReason\"></textarea>\r\n </fd-form-input-message-group>\r\n </div>\r\n <div fd-popover-body-footer>\r\n <div fd-bar barDesign=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n [label]=\"'Ok' | bbbTranslate\"\r\n fdType=\"emphasized\"\r\n (click)=\"popover.close(); onReject()\"\r\n ></fd-button-bar>\r\n <fd-button-bar [label]=\"'Cancel' | bbbTranslate\" (click)=\"popover.close()\"></fd-button-bar>\r\n </div>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</div>\r\n<div *ngIf=\"readonly || applied\">\r\n <span>{{ rejected ? rejectedReason : ('\u2713' + acceptedText | bbbTranslate) }}</span>\r\n <button fd-button glyph=\"decline\" fdType=\"transparent\" (click)=\"onReset()\"></button>\r\n</div>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MobileDirective, selector: "[mobile]" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4$2.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i4$2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i4$2.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i4$2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "directive", type: i4$2.DeprecatedBarContentDensityDirective, selector: "[fd-bar][cozy]" }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i7.TextareaFormControlDirective, selector: "textarea[fd-form-control]" }, { kind: "component", type: i7.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i7.FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "isOpen"], outputs: ["isOpenChange"] }, { kind: "component", type: i7$2.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "component", type: i8$3.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i8$3.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "directive", type: i8$3.PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "directive", type: i8$3.PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "component", type: i8$3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2969
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AcceptRejectComponent, decorators: [{
2970
- type: Component,
2971
- args: [{ selector: 'bdc-accept-reject', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"!applied && !readonly\">\r\n <button\r\n fd-button\r\n [label]=\"positiveText | bbbTranslate\"\r\n fdType=\"positive\"\r\n glyph=\"message-success\"\r\n ariaLabel=\"positive\"\r\n value=\"yes\"\r\n style=\"margin: 0 5px\"\r\n (click)=\"onAccept()\"\r\n ></button>\r\n <fd-popover [focusTrapped]=\"true\" [focusAutoCapture]=\"true\" [mobile]=\"deviceSize === 's'\" #popover>\r\n <fd-popover-control>\r\n <button\r\n fd-button\r\n [label]=\"negativeText | bbbTranslate\"\r\n glyph=\"message-error\"\r\n fdType=\"negative\"\r\n ariaLabel=\"Negative\"\r\n value=\"no\"\r\n ></button>\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px\">\r\n <div fd-popover-body-header>\r\n <div fd-bar [cozy]=\"true\" id=\"popover-bar-header-1\">\r\n <div fd-bar-left>\r\n <span\r\n fd-object-status\r\n status=\"negative\"\r\n glyph=\"message-error\"\r\n glyphAriaLabel=\"Negative\"\r\n title=\"Negative\"\r\n ></span>\r\n <fd-bar-element>\u0639\u0644\u062A \u0631\u062F</fd-bar-element>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-form-item>\r\n <fd-form-input-message-group>\r\n <textarea fd-form-control [id]=\"id\" [(ngModel)]=\"rejectedReason\"></textarea>\r\n </fd-form-input-message-group>\r\n </div>\r\n <div fd-popover-body-footer>\r\n <div fd-bar barDesign=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n [label]=\"'Ok' | bbbTranslate\"\r\n fdType=\"emphasized\"\r\n (click)=\"popover.close(); onReject()\"\r\n ></fd-button-bar>\r\n <fd-button-bar [label]=\"'Cancel' | bbbTranslate\" (click)=\"popover.close()\"></fd-button-bar>\r\n </div>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</div>\r\n<div *ngIf=\"readonly || applied\">\r\n <span>{{ rejected ? rejectedReason : ('\u2713' + acceptedText | bbbTranslate) }}</span>\r\n <button fd-button glyph=\"decline\" fdType=\"transparent\" (click)=\"onReset()\"></button>\r\n</div>\r\n", styles: [":host{display:block}\n"] }]
2972
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { negativeText: [{
2973
- type: Input
2974
- }], positiveText: [{
2975
- type: Input
2976
- }], rejectedReason: [{
2977
- type: Input
2978
- }], acceptedText: [{
2979
- type: Input
2980
- }], deviceSize: [{
2981
- type: Input
2982
- }], readonly: [{
2983
- type: Input
2984
- }], rejected: [{
2985
- type: Input
2986
- }], rejectedChanged: [{
2987
- type: Output
2988
- }] } });
2989
-
2990
- class FooterComponent extends BaseComponent {
2991
- constructor(_portalService, _cdr) {
2992
- super();
2993
- this._portalService = _portalService;
2994
- this._cdr = _cdr;
2995
- _portalService.rtl$.pipe(withLatestFrom(_portalService.deviceSize$)).subscribe(([rtl, deviceSize]) => {
2996
- this.rtl = rtl;
2997
- this.deviceSize = deviceSize;
2998
- });
2999
- }
3000
- ngOnInit() {
3001
- super.ngOnInit();
3002
- const { RelatedMo } = this.settings;
3003
- if (!RelatedMo) {
3004
- return;
3005
- }
3006
- this._portalService.loadMo(RelatedMo.Id, RelatedMo.$TypeDefId).subscribe((result) => {
3007
- var _a;
3008
- this.footer = (_a = result === null || result === void 0 ? void 0 : result.Data) === null || _a === void 0 ? void 0 : _a.Mo;
3009
- this._cdr.detectChanges();
3010
- });
3011
- }
3012
- }
3013
- FooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FooterComponent, deps: [{ token: i1.PortalService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3014
- FooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FooterComponent, selector: "bdc-footer", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: "<div\n fd-bar\n barDesign=\"footer\"\n [size]=\"'m_l'\"\n [class.rtl]=\"rtl\"\n class=\"footer\"\n [class.mobile]=\"deviceSize === 's'\"\n *ngIf=\"footer\"\n>\n <div fd-bar-left class=\"left\">\n <a\n fd-button\n glyph=\"email\"\n [fd-inline-help]=\"('\u0627\u06CC\u0645\u06CC\u0644 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.Email\"\n [href]=\"'mailto:' + footer.Email\"\n fdType=\"transparent\"\n >\n </a>\n <a\n fd-button\n glyph=\"headset\"\n [fd-inline-help]=\"('\u0634\u0645\u0627\u0631\u0647 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.TelNumber\"\n [href]=\"'tel:' + footer.TelNumber\"\n fdType=\"transparent\"\n ></a>\n\n <fd-popover>\n <fd-popover-control>\n <button\n fd-button\n glyph=\"vertical-waterfall-chart\"\n [title]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\n aria-haspopup=\"menu\"\n fdType=\"transparent\"\n [fd-inline-help]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\n tabindex=\"0\"\n ></button>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item class=\"all\">\n <i fd-list-icon glyph=\"bar-chart\"></i>\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u0632\u062F\u06CC\u062F\u06A9\u0646\u0646\u062F\u06AF\u0627\u0646 \u06A9\u0644 <strong>120</strong></span>\n </li>\n <li fd-list-item class=\"today\">\n <i fd-list-icon glyph=\"bar-chart\"></i>\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u0632\u062F\u06CC\u062F\u06A9\u0646\u0646\u062F\u06AF\u0627\u0646 \u0627\u0645\u0631\u0648\u0632 <strong>76</strong></span>\n </li>\n <li fd-list-item class=\"online\">\n <i fd-list-icon glyph=\"bar-chart\"></i>\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u06A9\u0627\u0631\u0628\u0631\u0627\u0646 \u0622\u0646\u0644\u0644\u0627\u06CC\u0646 <strong>10</strong></span>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n <fd-popover>\n <fd-popover-control>\n <button\n [fd-inline-help]=\"'\u06A9\u0627\u0646\u0627\u0644 \u0627\u0631\u062A\u0628\u0627\u0637\u06CC' | bbbTranslate\"\n tabindex=\"0\"\n fd-button\n glyph=\"paper-plane\"\n id=\"fd-action-sheet-default-control\"\n aria-haspopup=\"menu\"\n fdType=\"transparent\"\n ></button>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item *ngFor=\"let socialNetwork of footer.SocialNetworks.MoDataList\">\n <a fd-list-link [href]=\"socialNetwork.Url\" style=\"display: flex; column-gap: 5px\">\n <i fd-list-icon class=\"sap-icon--1\"\n ><img [src]=\"socialNetwork.Image?.FileId | picFieldSrc: 'ID':null:'':16:16\" />\n </i>\n <span fd-list-title>{{ socialNetwork.Title }}</span>\n </a>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n <fd-bar-element>\n <a fd-link [href]=\"footer.SiteAddress\" tabindex=\"0\"\n ><fd-icon glyph=\"world\"> </fd-icon> <span style=\"padding: 0 5px\">{{ footer.SiteTitle }}</span></a\n >\n </fd-bar-element>\n </div>\n <div fd-bar-middle class=\"middle\" *ngIf=\"deviceSize !== 's'\">\n <fd-bar-element> {{ footer.Copyright | bbbTranslate }}</fd-bar-element>\n </div>\n <div fd-bar-right class=\"right\"></div>\n</div>\n", styles: [".fd-bar.mobile{flex-direction:column!important}.fd-bar.mobile .left,.fd-bar.mobile .right,.fd-bar.mobile .middle{justify-content:center!important}.online i{color:#006400}.all i{color:#bebebe}.todat i{color:#000}.left{display:flex;column-gap:3px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i4$2.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i4$2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4$2.BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: i4$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i4$2.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i4$4.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i8$1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "directive", type: i9.InlineHelpDirective, selector: "[fd-inline-help], [fd-inline-help-template]", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help", "fd-inline-help-template"] }, { kind: "component", type: i8$2.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i8$2.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i8$2.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i8$2.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "class", "role"] }, { kind: "directive", type: i8$2.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated"] }, { kind: "component", type: i8$3.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i8$3.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i8$3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3015
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FooterComponent, decorators: [{
3016
- type: Component,
3017
- args: [{ selector: 'bdc-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n fd-bar\n barDesign=\"footer\"\n [size]=\"'m_l'\"\n [class.rtl]=\"rtl\"\n class=\"footer\"\n [class.mobile]=\"deviceSize === 's'\"\n *ngIf=\"footer\"\n>\n <div fd-bar-left class=\"left\">\n <a\n fd-button\n glyph=\"email\"\n [fd-inline-help]=\"('\u0627\u06CC\u0645\u06CC\u0644 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.Email\"\n [href]=\"'mailto:' + footer.Email\"\n fdType=\"transparent\"\n >\n </a>\n <a\n fd-button\n glyph=\"headset\"\n [fd-inline-help]=\"('\u0634\u0645\u0627\u0631\u0647 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC' | bbbTranslate) + ': ' + footer.TelNumber\"\n [href]=\"'tel:' + footer.TelNumber\"\n fdType=\"transparent\"\n ></a>\n\n <fd-popover>\n <fd-popover-control>\n <button\n fd-button\n glyph=\"vertical-waterfall-chart\"\n [title]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\n aria-haspopup=\"menu\"\n fdType=\"transparent\"\n [fd-inline-help]=\"'\u0622\u0645\u0627\u0631 \u0628\u0627\u0632\u062F\u06CC\u062F' | bbbTranslate\"\n tabindex=\"0\"\n ></button>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item class=\"all\">\n <i fd-list-icon glyph=\"bar-chart\"></i>\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u0632\u062F\u06CC\u062F\u06A9\u0646\u0646\u062F\u06AF\u0627\u0646 \u06A9\u0644 <strong>120</strong></span>\n </li>\n <li fd-list-item class=\"today\">\n <i fd-list-icon glyph=\"bar-chart\"></i>\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u0632\u062F\u06CC\u062F\u06A9\u0646\u0646\u062F\u06AF\u0627\u0646 \u0627\u0645\u0631\u0648\u0632 <strong>76</strong></span>\n </li>\n <li fd-list-item class=\"online\">\n <i fd-list-icon glyph=\"bar-chart\"></i>\n <span fd-list-title>\u062A\u0639\u062F\u0627\u062F \u06A9\u0627\u0631\u0628\u0631\u0627\u0646 \u0622\u0646\u0644\u0644\u0627\u06CC\u0646 <strong>10</strong></span>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n <fd-popover>\n <fd-popover-control>\n <button\n [fd-inline-help]=\"'\u06A9\u0627\u0646\u0627\u0644 \u0627\u0631\u062A\u0628\u0627\u0637\u06CC' | bbbTranslate\"\n tabindex=\"0\"\n fd-button\n glyph=\"paper-plane\"\n id=\"fd-action-sheet-default-control\"\n aria-haspopup=\"menu\"\n fdType=\"transparent\"\n ></button>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item *ngFor=\"let socialNetwork of footer.SocialNetworks.MoDataList\">\n <a fd-list-link [href]=\"socialNetwork.Url\" style=\"display: flex; column-gap: 5px\">\n <i fd-list-icon class=\"sap-icon--1\"\n ><img [src]=\"socialNetwork.Image?.FileId | picFieldSrc: 'ID':null:'':16:16\" />\n </i>\n <span fd-list-title>{{ socialNetwork.Title }}</span>\n </a>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n <fd-bar-element>\n <a fd-link [href]=\"footer.SiteAddress\" tabindex=\"0\"\n ><fd-icon glyph=\"world\"> </fd-icon> <span style=\"padding: 0 5px\">{{ footer.SiteTitle }}</span></a\n >\n </fd-bar-element>\n </div>\n <div fd-bar-middle class=\"middle\" *ngIf=\"deviceSize !== 's'\">\n <fd-bar-element> {{ footer.Copyright | bbbTranslate }}</fd-bar-element>\n </div>\n <div fd-bar-right class=\"right\"></div>\n</div>\n", styles: [".fd-bar.mobile{flex-direction:column!important}.fd-bar.mobile .left,.fd-bar.mobile .right,.fd-bar.mobile .middle{justify-content:center!important}.online i{color:#006400}.all i{color:#bebebe}.todat i{color:#000}.left{display:flex;column-gap:3px}\n"] }]
3018
- }], ctorParameters: function () { return [{ type: i1.PortalService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { settings: [{
3019
- type: Input
3020
- }] } });
3021
-
3022
- class BarsaGeographicLocationComponent extends BaseComponent {
3023
- constructor(_el) {
3024
- super();
3025
- this._el = _el;
3026
- this.move = new EventEmitter();
3027
- this.moveEnd = new EventEmitter();
3028
- this.fullscreen = new EventEmitter();
3029
- this.exitFullscreen = new EventEmitter();
3030
- this.error = new EventEmitter();
3031
- this.markerChange = new EventEmitter();
3032
- this._navigatorOptions = {
3033
- enableHighAccuracy: true,
3034
- timeout: 5000,
3035
- maximumAge: 0
3036
- };
3037
- }
3038
- ngOnChanges(changes) {
3039
- super.ngOnChanges(changes);
3040
- const { longitude, latitude } = changes;
3041
- if ((latitude === null || latitude === void 0 ? void 0 : latitude.firstChange) === false || (longitude === null || longitude === void 0 ? void 0 : longitude.firstChange) === false) {
3042
- this._setGeoLocation({
3043
- latitude: latitude.currentValue,
3044
- longitude: longitude.currentValue
3045
- }, this.disableOrReadonly, true, false);
3046
- }
3047
- }
3048
- ngAfterViewInit() {
3049
- super.ngAfterViewInit();
3050
- head.load([
3051
- 'Lib/leaflet/leaflet.css',
3052
- 'Lib/leaflet/leaflet-src.js',
3053
- 'Lib/leaflet/SearchControl.js',
3054
- 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon.css',
3055
- 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon.js',
3056
- 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker.js',
3057
- 'Lib/leaflet/BeautifyMarker-master/leaflet-beautify-marker-icon-barsa.js'
3058
- ], () => this._initilaize());
3059
- }
3060
- onCurrentLocation() {
3061
- if (this.disableOrReadonly) {
3062
- return;
3063
- }
3064
- this._getNavigatorCurrentPosition();
3065
- }
3066
- onFullscreen() {
3067
- this.fullscreen.emit();
3068
- }
3069
- onExitFullscreen() {
3070
- this.exitFullscreen.emit();
3071
- }
3072
- _addMarkers(disableOrReadonly, pos) {
3073
- this._setGeoLocation({ latitude: pos[0], longitude: pos[1] }, disableOrReadonly);
3074
- }
3075
- _initilaize() {
3076
- this._map = L.map(this._el.nativeElement);
3077
- const location = this.defaultLocation;
3078
- if (this.latitude) {
3079
- location[0] = Number(this.latitude);
3080
- location[1] = Number(this.longitude);
3081
- }
3082
- this._setGeoLocation({
3083
- latitude: location[0],
3084
- longitude: location[1]
3085
- }, this.disableOrReadonly, true, false);
3086
- if (!this.disableOrReadonly && this.setAutomaticLocation && !this.latitude) {
3087
- // درصورتی که از قبل مقدار نداشته باشد
3088
- this._getNavigatorCurrentPosition();
3089
- }
3090
- }
3091
- _onErrorNavigatorLocation(err) {
3092
- this.error.emit(err);
3093
- }
3094
- _setGeoLocation(position, disableOrReadonly = false, setView = false, fireEvent = true) {
3095
- if (this._marker) {
3096
- this._map.removeLayer(this._marker);
3097
- this._marker = null;
3098
- }
3099
- const { latitude, longitude } = position;
3100
- L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
3101
- attribution: '',
3102
- maxZoom: 18,
3103
- id: 'mapbox/streets-v11',
3104
- tileSize: 512,
3105
- zoomOffset: -1,
3106
- accessToken: 'pk.eyJ1IjoibXJlemFkZXZlbG9wZXIiLCJhIjoiY2p6anlrdTE2MDBxdjNtczZtYWFqbHFmdiJ9.SzniRy2KH6U3gdbOFnwA7Q'
3107
- }).addTo(this._map);
3108
- if (setView) {
3109
- this._map.setView([latitude, longitude], 18);
3110
- }
3111
- const marker = this._createMarker('0', { mo: 'test' }, latitude, longitude, 'my location', '', !disableOrReadonly && this.draggable === true);
3112
- marker.addTo(this._map);
3113
- this._marker = marker;
3114
- if (!disableOrReadonly && fireEvent) {
3115
- this.markerChange.emit({ latitude, longitude });
3116
- }
3117
- }
3118
- _getNavigatorCurrentPosition() {
3119
- if (navigator.geolocation) {
3120
- navigator.geolocation.getCurrentPosition((position) => this._setGeoLocation({ latitude: position.coords.latitude, longitude: position.coords.longitude }, this.disableOrReadonly, true), (err) => this._onErrorNavigatorLocation(err), this._navigatorOptions);
3121
- }
3122
- }
3123
- _createMarker(id, mo, lat, lng, text, icon, draggable) {
3124
- const markerCfg = {
3125
- Id: id,
3126
- Data: mo,
3127
- title: text,
3128
- draggable,
3129
- icon: L.divIcon({
3130
- html: icon
3131
- ? `<fd-icon style="font-size:1rem" class="sap-icon--${icon}"></fd-icon>`
3132
- : `<img style="width:32px" src="${'assets/svg/location-sign.svg'}"/>`,
3133
- iconSize: [20, 20],
3134
- className: 'my-location'
3135
- })
3136
- };
3137
- // var marker = L.BeautifyMarker.marker([Number(lat), Number(lng)], {
3138
- const marker = L.marker([Number(lat), Number(lng)], markerCfg);
3139
- marker.on('moveend', (e) => {
3140
- this._onMoveEnd(e);
3141
- });
3142
- marker.on('move', (e) => {
3143
- this._onMove(e);
3144
- });
3145
- return marker;
3146
- }
3147
- _onMove(e) {
3148
- this.move.emit(e);
3149
- }
3150
- _onMoveEnd(e) {
3151
- this.moveEnd.emit(e);
3152
- }
3153
- }
3154
- BarsaGeographicLocationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaGeographicLocationComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
3155
- BarsaGeographicLocationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaGeographicLocationComponent, selector: "bdc-barsa-geographic-location", inputs: { disableOrReadonly: "disableOrReadonly", setAutomaticLocation: "setAutomaticLocation", showLocationButton: "showLocationButton", showFullscreenButton: "showFullscreenButton", showExitFullscreenButton: "showExitFullscreenButton", draggable: "draggable", defaultLocation: "defaultLocation", latitude: "latitude", longitude: "longitude" }, outputs: { move: "move", moveEnd: "moveEnd", fullscreen: "fullscreen", exitFullscreen: "exitFullscreen", error: "error", markerChange: "markerChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div style=\"position: absolute; z-index: 1000; display: flex; flex-direction: column; row-gap: 5px; left: 0; bottom: 0\">\n <button *ngIf=\"showFullscreenButton\" fd-button glyph=\"resize\" fdType=\"positive\" (click)=\"onFullscreen()\"></button>\n <button\n *ngIf=\"showExitFullscreenButton\"\n fd-button\n glyph=\"exitfullscreen\"\n fdType=\"positive\"\n (click)=\"onExitFullscreen()\"\n ></button>\n <button\n *ngIf=\"showLocationButton || disableOrReadonly\"\n fd-button\n glyph=\"map\"\n fdType=\"positive\"\n (click)=\"onCurrentLocation()\"\n ></button>\n</div>\n", styles: [":host{display:block;min-height:300px;position:relative}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaGeographicLocationComponent, decorators: [{
3157
- type: Component,
3158
- args: [{ selector: 'bdc-barsa-geographic-location', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div style=\"position: absolute; z-index: 1000; display: flex; flex-direction: column; row-gap: 5px; left: 0; bottom: 0\">\n <button *ngIf=\"showFullscreenButton\" fd-button glyph=\"resize\" fdType=\"positive\" (click)=\"onFullscreen()\"></button>\n <button\n *ngIf=\"showExitFullscreenButton\"\n fd-button\n glyph=\"exitfullscreen\"\n fdType=\"positive\"\n (click)=\"onExitFullscreen()\"\n ></button>\n <button\n *ngIf=\"showLocationButton || disableOrReadonly\"\n fd-button\n glyph=\"map\"\n fdType=\"positive\"\n (click)=\"onCurrentLocation()\"\n ></button>\n</div>\n", styles: [":host{display:block;min-height:300px;position:relative}\n"] }]
3159
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { disableOrReadonly: [{
3160
- type: Input
3161
- }], setAutomaticLocation: [{
3162
- type: Input
3163
- }], showLocationButton: [{
3164
- type: Input
3165
- }], showFullscreenButton: [{
3166
- type: Input
3167
- }], showExitFullscreenButton: [{
3168
- type: Input
3169
- }], draggable: [{
3170
- type: Input
3171
- }], defaultLocation: [{
3172
- type: Input
3173
- }], latitude: [{
3174
- type: Input
3175
- }], longitude: [{
3176
- type: Input
3177
- }], move: [{
3178
- type: Output
3179
- }], moveEnd: [{
3180
- type: Output
3181
- }], fullscreen: [{
3182
- type: Output
3183
- }], exitFullscreen: [{
3184
- type: Output
3185
- }], error: [{
3186
- type: Output
3187
- }], markerChange: [{
3188
- type: Output
3189
- }] } });
3190
-
3191
- class GeographicLocationComponent extends UiMoInfoSubFormUiComponent {
3192
- constructor() {
3193
- super(...arguments);
3194
- this.fullscreen = false;
3195
- }
3196
- get latitudeUi() {
3197
- return this.customFormPanelUi._dictFieldUi.Latitude;
3198
- }
3199
- get longitudeUi() {
3200
- return this.customFormPanelUi._dictFieldUi.Longitude;
3201
- }
3202
- openDialog(dialog) {
3203
- this._dialogService.open(dialog, {
3204
- responsivePadding: true,
3205
- fullScreen: true,
3206
- mobile: true,
3207
- ariaLabelledBy: 'map',
3208
- ariaDescribedBy: 'choose location',
3209
- focusTrapped: true
3210
- });
3211
- }
3212
- ngOnInit() {
3213
- var _a, _b;
3214
- super.ngOnInit();
3215
- this._setDefaultLatAndLong((_a = this.latitudeUi) === null || _a === void 0 ? void 0 : _a.value, (_b = this.longitudeUi) === null || _b === void 0 ? void 0 : _b.value);
3216
- }
3217
- onFullscreen() {
3218
- this.fullscreen = true;
3219
- this.openDialog(this.dialogTemplate);
3220
- }
3221
- onExistFullscreen() {
3222
- this.fullscreen = false;
3223
- this._cdr.detectChanges();
3224
- }
3225
- onOpenChange(isOpen) {
3226
- this.fullscreen = isOpen;
3227
- }
3228
- onErrorNavigatorLocation(err) {
3229
- const err2 = `خطا در دریافت موقعیت مکانی جاری. (${err.message})`;
3230
- BarsaApi.Bw.Toast.Error(err2);
3231
- }
3232
- onMove(e) {
3233
- this._movePos = { latitude: e.latlng.lat, longitude: e.latlng.lng };
3234
- }
3235
- onMoveEnd(e) {
3236
- this._handleMarkerChange(this._movePos);
3237
- }
3238
- onMarkerChange(e) {
3239
- this._handleMarkerChange(e);
3240
- }
3241
- _handleMarkerChange(e) {
3242
- const { latitude, longitude } = e;
3243
- this.latitudeUi.value = latitude;
3244
- this.longitudeUi.value = longitude;
3245
- this._valueChanged();
3246
- }
3247
- _setDefaultLatAndLong(lat, lng) {
3248
- if (lat && lng) {
3249
- this.latValue = lat;
3250
- this.lngValue = lng;
3251
- }
3252
- }
3253
- _titleChanged() {
3254
- var _a, _b;
3255
- this._setDefaultLatAndLong((_a = this.latitudeUi) === null || _a === void 0 ? void 0 : _a.value, (_b = this.longitudeUi) === null || _b === void 0 ? void 0 : _b.value);
3256
- }
3257
- _valueChanged() {
3258
- this.latitudeUi.fireEvent('change', this.latitudeUi, this.latitudeUi.value);
3259
- this.longitudeUi.fireEvent('change', this.longitudeUi, this.longitudeUi.value);
3260
- }
3261
- }
3262
- GeographicLocationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: GeographicLocationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3263
- GeographicLocationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: GeographicLocationComponent, selector: "bdc-geographic-location", viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["confirmationDialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"customFormPanelUi\">\n <bnrc-form style=\"display: none\" *untilInView=\"el\" [customFormPanelUi]=\"customFormPanelUi\"></bnrc-form>\n</ng-container>\n\n<ng-container *ngIf=\"!fullscreen\">\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: false }\"></ng-container>\n</ng-container>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #confirmationDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Map' | bbbTranslate }}</h1>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: true, dialog: dialog }\"></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n\n<ng-template #map let-inDialog=\"inDialog\" let-dialog=\"dialog\">\n <bdc-barsa-geographic-location\n [style.height]=\"inDialog ? 'height: 100% !important' : null\"\n [defaultLocation]=\"[35.7568, 51.412]\"\n [latitude]=\"latValue\"\n [longitude]=\"lngValue\"\n [showExitFullscreenButton]=\"true\"\n [showLocationButton]=\"customFieldInfo.ShowLocationButton\"\n [setAutomaticLocation]=\"customFieldInfo.GetCurrentLocation\"\n [disableOrReadonly]=\"(disableOrReadonly$ | async) === true\"\n [draggable]=\"customFieldInfo.Draggable === true\"\n (markerChange)=\"onMarkerChange($event)\"\n (move)=\"onMove($event)\"\n (error)=\"onErrorNavigatorLocation($event)\"\n (moveEnd)=\"onMoveEnd($event)\"\n (exitFullscreen)=\"onExistFullscreen(); dialog && dialog.close('Continue')\"\n ></bdc-barsa-geographic-location>\n</ng-template>\n", styles: [":host{display:block;position:relative}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "directive", type: i1.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "component", type: i5$1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i5$1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i4$3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: BarsaGeographicLocationComponent, selector: "bdc-barsa-geographic-location", inputs: ["disableOrReadonly", "setAutomaticLocation", "showLocationButton", "showFullscreenButton", "showExitFullscreenButton", "draggable", "defaultLocation", "latitude", "longitude"], outputs: ["move", "moveEnd", "fullscreen", "exitFullscreen", "error", "markerChange"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3264
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: GeographicLocationComponent, decorators: [{
3265
- type: Component,
3266
- args: [{ selector: 'bdc-geographic-location', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"customFormPanelUi\">\n <bnrc-form style=\"display: none\" *untilInView=\"el\" [customFormPanelUi]=\"customFormPanelUi\"></bnrc-form>\n</ng-container>\n\n<ng-container *ngIf=\"!fullscreen\">\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: false }\"></ng-container>\n</ng-container>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #confirmationDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Map' | bbbTranslate }}</h1>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"map; context: { inDialog: true, dialog: dialog }\"></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n\n<ng-template #map let-inDialog=\"inDialog\" let-dialog=\"dialog\">\n <bdc-barsa-geographic-location\n [style.height]=\"inDialog ? 'height: 100% !important' : null\"\n [defaultLocation]=\"[35.7568, 51.412]\"\n [latitude]=\"latValue\"\n [longitude]=\"lngValue\"\n [showExitFullscreenButton]=\"true\"\n [showLocationButton]=\"customFieldInfo.ShowLocationButton\"\n [setAutomaticLocation]=\"customFieldInfo.GetCurrentLocation\"\n [disableOrReadonly]=\"(disableOrReadonly$ | async) === true\"\n [draggable]=\"customFieldInfo.Draggable === true\"\n (markerChange)=\"onMarkerChange($event)\"\n (move)=\"onMove($event)\"\n (error)=\"onErrorNavigatorLocation($event)\"\n (moveEnd)=\"onMoveEnd($event)\"\n (exitFullscreen)=\"onExistFullscreen(); dialog && dialog.close('Continue')\"\n ></bdc-barsa-geographic-location>\n</ng-template>\n", styles: [":host{display:block;position:relative}\n"] }]
3267
- }], propDecorators: { dialogTemplate: [{
3268
- type: ViewChild,
3269
- args: ['confirmationDialog']
3270
- }] } });
3271
-
3272
- class TokenReportViewComponent extends ReportViewBaseComponent {
3273
- ngOnInit() {
3274
- super.ngOnInit();
3275
- }
3276
- onRemoveItem(mo, index) {
3277
- var _a;
3278
- this.rowCheck.emit({ mo, index });
3279
- let itemId = 'RemoveFromList';
3280
- if (((_a = this.viewSetting) === null || _a === void 0 ? void 0 : _a.DeleteAction) === '1') {
3281
- itemId = 'Delete';
3282
- }
3283
- this.executeToolbarButton.emit({ itemId });
3284
- }
3285
- }
3286
- TokenReportViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TokenReportViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3287
- TokenReportViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TokenReportViewComponent, selector: "bdc-token-report-view", usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let index = index; let last = last\">\n <ng-container *ngIf=\"!mo.parent || mo.parent?.expanded\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: mo,\n index: index,\n last: last,\n columns: columns,\n moDataList: moDataList,\n moDataListCount: moDataList.length\n }\n \"\n ></ng-container>\n </ng-container>\n</ng-container>\n<ng-template\n #itemTemplate\n let-mo\n let-index=\"index\"\n let-last=\"last\"\n let-columns=\"columns\"\n let-moDataListCount=\"moDataListCount\"\n let-moDataList=\"moDataList\"\n>\n <fd-token fdCozy (onCloseClick)=\"onRemoveItem(mo, index)\" [readOnly]=\"false\">{{\n columns[0].Caption | rval: mo:columns:true\n }}</fd-token>\n</ng-template>\n", styles: [":host{display:flex;column-gap:5px;flex-wrap:wrap;row-gap:5px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$7.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i3$6.TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly", "deleteButtonLabel", "ariaRoleDescription"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown"] }, { kind: "pipe", type: i1.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i1.MoReportValuePipe, name: "rval" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3288
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TokenReportViewComponent, decorators: [{
3289
- type: Component,
3290
- args: [{ selector: 'bdc-token-report-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let index = index; let last = last\">\n <ng-container *ngIf=\"!mo.parent || mo.parent?.expanded\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: mo,\n index: index,\n last: last,\n columns: columns,\n moDataList: moDataList,\n moDataListCount: moDataList.length\n }\n \"\n ></ng-container>\n </ng-container>\n</ng-container>\n<ng-template\n #itemTemplate\n let-mo\n let-index=\"index\"\n let-last=\"last\"\n let-columns=\"columns\"\n let-moDataListCount=\"moDataListCount\"\n let-moDataList=\"moDataList\"\n>\n <fd-token fdCozy (onCloseClick)=\"onRemoveItem(mo, index)\" [readOnly]=\"false\">{{\n columns[0].Caption | rval: mo:columns:true\n }}</fd-token>\n</ng-template>\n", styles: [":host{display:flex;column-gap:5px;flex-wrap:wrap;row-gap:5px}\n"] }]
3291
- }] });
3292
-
3293
- class ColumnFormViewerComponent extends ColumnRendererComponent {
3294
- /**
3295
- *
3296
- */
3297
- constructor(_cdr, _dialogService, _el) {
3298
- super(_cdr);
3299
- this._cdr = _cdr;
3300
- this._dialogService = _dialogService;
3301
- this._el = _el;
3302
- this.isOpen = false;
3303
- this.loadForm = false;
3304
- this.loading = true;
3305
- this.newPage = false;
3306
- }
3307
- ngOnInit() {
3308
- var _a;
3309
- super.ngOnInit();
3310
- const columnMo = this.mo[this.column.Name];
3311
- if (!columnMo) {
3312
- return;
3313
- }
3314
- this.newPage = this.parameters.NewPage;
3315
- this.formParam = {
3316
- moId: columnMo.Id,
3317
- typeDefId: columnMo.$TypeDefId,
3318
- viewId: (_a = this.parameters.MetaView) === null || _a === void 0 ? void 0 : _a.Id
3319
- };
3320
- }
3321
- openPopover() {
3322
- this.isOpen = true;
3323
- this.loadForm = true;
3324
- }
3325
- onFormRendered(popover) {
3326
- this.loading = false;
3327
- if (this.newPage) {
3328
- return;
3329
- }
3330
- popover.close();
3331
- setTimeout(() => {
3332
- popover.open();
3333
- });
3334
- }
3335
- openMoInNewPage() {
3336
- var _a;
3337
- const columnMo = this.mo[this.column.Name];
3338
- BarsaApi.Bw.Form.Show({
3339
- MoId: columnMo.Id,
3340
- MoContext: {
3341
- ViewId: (_a = this.parameters.MetaView) === null || _a === void 0 ? void 0 : _a.Id
3342
- }
3343
- });
3344
- }
3345
- openDialog(dialog, container) {
3346
- const dialogRef = this._dialogService.open(dialog, {
3347
- responsivePadding: true,
3348
- focusTrapped: true,
3349
- backdropClickCloseable: true,
3350
- closeOnNavigation: true,
3351
- hasBackdrop: false,
3352
- container,
3353
- escKeyCloseable: true,
3354
- fullScreen: this.deviceSize === 's'
3355
- });
3356
- dialogRef.afterClosed.subscribe((result) => {
3357
- this.confirmationReason = 'Dialog closed with result: ' + result;
3358
- }, (error) => {
3359
- this.confirmationReason = 'Dialog dismissed with result: ' + error;
3360
- });
3361
- }
3362
- }
3363
- ColumnFormViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ColumnFormViewerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2$3.DialogService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
3364
- ColumnFormViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ColumnFormViewerComponent, selector: "bdc-column-form-viewer", inputs: { layout94: "layout94", parameters: "parameters" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"newPage || deviceSize === 's' ? renderColumn : popoverTpl\"> </ng-container>\n<a href=\"http://localhost:4200/#/landingpage/query?actionlist=[{MoId:1,TypeDefId:1}]\"></a>\n<ng-template #popoverTpl>\n <fd-popover\n #popover\n [closeOnOutsideClick]=\"true\"\n [noArrow]=\"false\"\n placement=\"bottom-start\"\n [title]=\"column.Caption\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"renderColumn\"></ng-container>\n </fd-popover-control>\n <fd-popover-body class=\"popover-form-inColumn\">\n <div *ngIf=\"loading && loadForm\" style=\"position: relative; height: 80px; width: 100%\">\n <bsu-mask [top]=\"'50%'\"></bsu-mask>\n </div>\n <bnrc-form\n *ngIf=\"this.mo.Id && loadForm\"\n [params]=\"formParam\"\n (formRendered)=\"onFormRendered(popover)\"\n (formClose)=\"popover.close()\"\n class=\"form-inColumn\"\n ></bnrc-form>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #renderColumn>\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"editMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [formLayoutShowLabel]=\"false\"\n [deviceSize]=\"deviceSize\"\n [controlUi]=\"column.Caption | controlUi: layout94\"\n (click)=\"newPage || deviceSize === 's' ? openMoInNewPage() : openPopover()\"\n ></bsu-column-renderer>\n</ng-template>\n", styles: [":host{display:flex;width:100%;height:100%;align-items:stretch;justify-content:stretch}:host fd-popover{flex:1}:host ::ng-deep span{color:var(--sapLinkColor);-webkit-text-decoration:var(--fdLink_Text_Content_Decoration, none);text-decoration:var(--fdLink_Text_Content_Decoration, none);cursor:pointer}:host ::ng-deep span:hover{-webkit-text-decoration:var(--fdLink_Text_Content_Decoration, none);text-decoration:var(--fdLink_Text_Content_Decoration, none)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "directive", type: i1.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "component", type: i3$2.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3$2.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "deviceName", "deviceSize", "value", "icon"] }, { kind: "component", type: i8$3.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i8$3.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i8$3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }, { kind: "pipe", type: i1.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i1.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3365
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ColumnFormViewerComponent, decorators: [{
3366
- type: Component,
3367
- args: [{ selector: 'bdc-column-form-viewer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngTemplateOutlet=\"newPage || deviceSize === 's' ? renderColumn : popoverTpl\"> </ng-container>\n<a href=\"http://localhost:4200/#/landingpage/query?actionlist=[{MoId:1,TypeDefId:1}]\"></a>\n<ng-template #popoverTpl>\n <fd-popover\n #popover\n [closeOnOutsideClick]=\"true\"\n [noArrow]=\"false\"\n placement=\"bottom-start\"\n [title]=\"column.Caption\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"renderColumn\"></ng-container>\n </fd-popover-control>\n <fd-popover-body class=\"popover-form-inColumn\">\n <div *ngIf=\"loading && loadForm\" style=\"position: relative; height: 80px; width: 100%\">\n <bsu-mask [top]=\"'50%'\"></bsu-mask>\n </div>\n <bnrc-form\n *ngIf=\"this.mo.Id && loadForm\"\n [params]=\"formParam\"\n (formRendered)=\"onFormRendered(popover)\"\n (formClose)=\"popover.close()\"\n class=\"form-inColumn\"\n ></bnrc-form>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #renderColumn>\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"editMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [formLayoutShowLabel]=\"false\"\n [deviceSize]=\"deviceSize\"\n [controlUi]=\"column.Caption | controlUi: layout94\"\n (click)=\"newPage || deviceSize === 's' ? openMoInNewPage() : openPopover()\"\n ></bsu-column-renderer>\n</ng-template>\n", styles: [":host{display:flex;width:100%;height:100%;align-items:stretch;justify-content:stretch}:host fd-popover{flex:1}:host ::ng-deep span{color:var(--sapLinkColor);-webkit-text-decoration:var(--fdLink_Text_Content_Decoration, none);text-decoration:var(--fdLink_Text_Content_Decoration, none);cursor:pointer}:host ::ng-deep span:hover{-webkit-text-decoration:var(--fdLink_Text_Content_Decoration, none);text-decoration:var(--fdLink_Text_Content_Decoration, none)}\n"] }]
3368
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i2$3.DialogService }, { type: i0.ElementRef }]; }, propDecorators: { layout94: [{
3369
- type: Input
3370
- }], parameters: [{
3371
- type: Input
3372
- }] } });
3373
-
3374
- class FormReportViewItemComponent extends BaseViewItemPropsComponent {
3375
- constructor() {
3376
- super(...arguments);
3377
- this.toolbarItems = [];
3378
- }
3379
- ngOnInit() {
3380
- super.ngOnInit();
3381
- this.mo.$FieldDict = this.fieldDict;
3382
- delete this.mo.$Wrapper;
3383
- const meFormSetting = JSON.parse(JSON.stringify(this.formSetting));
3384
- const mo = new BarsaApi.Common.MetaObjectWeb(this.mo);
3385
- meFormSetting.Data = { Mo: this.mo };
3386
- const formpanelCtrlrParams = this.UlvMainCtrlr.DataCtrlr.GetEditFormParams(mo, false, false, null, null);
3387
- this.formParams = Object.assign(Object.assign({}, formpanelCtrlrParams), { formSetting: meFormSetting, moId: this.mo.Id, typeDefId: this.typeDefId, isSimple: true, viewId: meFormSetting.View.TypeViewId });
3388
- }
3389
- onMoChanged(mo) {
3390
- this.UlvMainCtrlr.RefreshRowsByMosNoSelectionChange([mo], [], []);
3391
- }
3392
- }
3393
- FormReportViewItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormReportViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3394
- FormReportViewItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormReportViewItemComponent, selector: "bdc-form-report-view-item", inputs: { mo: "mo", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", saveOnValueChanged: "saveOnValueChanged" }, usesInheritance: true, ngImport: i0, template: "<bnrc-form\n class=\"form-report-view-item\"\n [params]=\"formParams\"\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\n (moChanged)=\"onMoChanged($event)\"\n [saveOnChange]=\"saveOnValueChanged\"\n></bnrc-form>\n", styles: [""], dependencies: [{ kind: "component", type: i1.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3395
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormReportViewItemComponent, decorators: [{
3396
- type: Component,
3397
- args: [{ selector: 'bdc-form-report-view-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bnrc-form\n class=\"form-report-view-item\"\n [params]=\"formParams\"\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\n (moChanged)=\"onMoChanged($event)\"\n [saveOnChange]=\"saveOnValueChanged\"\n></bnrc-form>\n" }]
3398
- }], propDecorators: { mo: [{
3399
- type: Input
3400
- }], UlvMainCtrlr: [{
3401
- type: Input
3402
- }], fieldDict: [{
3403
- type: Input
3404
- }], saveOnValueChanged: [{
3405
- type: Input
3406
- }] } });
3407
-
3408
- class FormReportViewComponent extends ReportViewBaseComponent {
3409
- ngOnInit() {
3410
- var _a;
3411
- super.ngOnInit();
3412
- const x = BarsaApi.Bw.RunBlMethod('GetSerializeFormSetting', ((_a = this.parameters) === null || _a === void 0 ? void 0 : _a.MetaTypeDefValue.Id) || this.typeViewId);
3413
- this.formSettingItem = BarsaApi.Ext.decode(x);
3414
- }
3415
- _trackByRow(index, row) {
3416
- return `${row.Id}`;
3417
- }
3418
- }
3419
- FormReportViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormReportViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3420
- FormReportViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormReportViewComponent, selector: "bdc-form-report-view", viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"moDataList?.length; else empty\">\n <ng-container *ngIf=\"formSettingItem\">\n <ng-container *ngFor=\"let mo of moDataList; let index = index; let last = last; trackBy: _trackByRow\">\n <bdc-form-report-view-item\n [setting]=\"viewSetting\"\n [formSetting]=\"formSettingItem\"\n [fieldDict]=\"fieldDict\"\n [typeDefId]=\"typeDefId\"\n [columnsCount]=\"columnsCount\"\n [allColumns]=\"allColumns\"\n [columns]=\"columns\"\n [moDataList]=\"moDataList\"\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\n [index]=\"index\"\n [mo]=\"mo\"\n [rtl]=\"rtl\"\n [saveOnValueChanged]=\"viewSetting.SaveOnValueChanged\"\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\n (editFormPanelCancel)=\"onEditFormPanelCancel(mo)\"\n (click)=\"onRowCheck({mo, index})\"\n >\n </bdc-form-report-view-item>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #empty>\n <bsu-no-data></bsu-no-data>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;row-gap:.825rem;margin-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "component", type: FormReportViewItemComponent, selector: "bdc-form-report-view-item", inputs: ["mo", "UlvMainCtrlr", "fieldDict", "saveOnValueChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3421
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormReportViewComponent, decorators: [{
3422
- type: Component,
3423
- args: [{ selector: 'bdc-form-report-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"moDataList?.length; else empty\">\n <ng-container *ngIf=\"formSettingItem\">\n <ng-container *ngFor=\"let mo of moDataList; let index = index; let last = last; trackBy: _trackByRow\">\n <bdc-form-report-view-item\n [setting]=\"viewSetting\"\n [formSetting]=\"formSettingItem\"\n [fieldDict]=\"fieldDict\"\n [typeDefId]=\"typeDefId\"\n [columnsCount]=\"columnsCount\"\n [allColumns]=\"allColumns\"\n [columns]=\"columns\"\n [moDataList]=\"moDataList\"\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\n [index]=\"index\"\n [mo]=\"mo\"\n [rtl]=\"rtl\"\n [saveOnValueChanged]=\"viewSetting.SaveOnValueChanged\"\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\n (editFormPanelCancel)=\"onEditFormPanelCancel(mo)\"\n (click)=\"onRowCheck({mo, index})\"\n >\n </bdc-form-report-view-item>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #empty>\n <bsu-no-data></bsu-no-data>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;row-gap:.825rem;margin-bottom:1rem}\n"] }]
3424
- }], propDecorators: { containerRef: [{
3425
- type: ViewChild,
3426
- args: ['containerRef', { static: true, read: ViewContainerRef }]
3427
- }] } });
3428
-
3429
- class FormCardComponent extends FormPropsBaseComponent {
3430
- ngOnInit() {
3431
- super.ngOnInit();
3432
- }
3433
- }
3434
- FormCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormCardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3435
- FormCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormCardComponent, selector: "bdc-form-card", providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<fd-card cardType=\"object\">\n <ng-container *ngIf=\"toolbarItems\">\n <!-- <fd-card-header *ngIf=\"toolbarVisible !== false && toolbarItems.length\">\n <div fd-card-title></div>\n <div fd-card-subtitle style=\"width: 100%\"></div>\n </fd-card-header> -->\n </ng-container>\n <fd-card-content>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </fd-card-content>\n</fd-card>\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i5$2.CardContentComponent, selector: "fd-card-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3436
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormCardComponent, decorators: [{
3437
- type: Component,
3438
- args: [{ selector: 'bdc-form-card', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "<fd-card cardType=\"object\">\n <ng-container *ngIf=\"toolbarItems\">\n <!-- <fd-card-header *ngIf=\"toolbarVisible !== false && toolbarItems.length\">\n <div fd-card-title></div>\n <div fd-card-subtitle style=\"width: 100%\"></div>\n </fd-card-header> -->\n </ng-container>\n <fd-card-content>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n </fd-card-content>\n</fd-card>\n", styles: [":host{display:block;background-color:var(--sapField_Background)}\n"] }]
3439
- }] });
3440
-
3441
- const components = [
3442
- LoginFormComponent,
3443
- LoginSocialConncetionsComponent,
3444
- UiPersonComponent,
3445
- BarcodeReaderComponent,
3446
- BarcodeReaderDialogComponent,
3447
- BarcodeReaderVideoComponent,
3448
- SettingFormComponent,
3449
- MicroProcessFlowViewComponent,
3450
- UiEnumSegmentedButtonComponent,
3451
- TabProcessViewComponent,
3452
- UiTextFieldSearchComponent,
3453
- ServiceDeskHeaderComponent,
3454
- CardContentImageAndTitleComponent,
3455
- CardHeaderLogoTitleSubtitleComponent,
3456
- FormContentQuickViewComponent,
3457
- ServiceDeskServcieDetailComponent,
3458
- ServiceDeskViewOfServicesComponent,
3459
- ServiceDeskCardContentMojavezhayAkhzShodeComponent,
3460
- CardHeaderBigImageTitleAndSubtitleComponent,
3461
- ServiceDeskFormLayoutContentMojavezComponent,
3462
- UlvContextMenuItemShowFileContentComponent,
3463
- ResendVerificationCodeComponent,
3464
- CheckboxButtonComponent,
3465
- ReportTabViewComponent,
3466
- ReportLineChartViewComponent,
3467
- CardHeaderKpiComponent,
3468
- CardContentLineChartComponent,
3469
- FormChartContentComponent,
3470
- TableViewVerticalColumnsComponent,
3471
- QueryStringObservableComponent,
3472
- QueryStringFormObservableComponent,
3473
- G4bDetailsComponent,
3474
- AvatarComponent,
3475
- G4bEstelamComponent,
3476
- TimerCountDownComponent,
3477
- MoInfoMicroProccessFlowComponent,
3478
- MicroProccessFlowComponent,
3479
- EnumInfoMicroProccessFlowComponent,
3480
- UiPicturesCarouselComponent,
3481
- UiNumRateComponent,
3482
- MediaFileUploaderComponent,
3483
- SubformInRowReportComponent,
3484
- MasterDetailCardFormComponent,
3485
- ReportButtonViewComponent,
3486
- BarsaDocumentsComponent,
3487
- BarsaDocumentListItemComponent,
3488
- AcceptRejectComponent,
3489
- FooterComponent,
3490
- GeographicLocationComponent,
3491
- BarsaGeographicLocationComponent,
3492
- TokenReportViewComponent,
3493
- ColumnFormViewerComponent,
3494
- FormReportViewComponent,
3495
- FormReportViewItemComponent,
3496
- FormCardComponent
3497
- ];
3498
- const pipes = [UiPersonPipe, BarcodeFormatPipe, MoListToFlowItemPipe, DataSourceToFlowItemPipe];
3499
- class BarsaDevelopComponentsModule extends BaseModule {
3500
- constructor(dcm, cfr) {
3501
- super(dcm, cfr, 'BarsaDevelopComponentsModule');
3502
- this.dcm = dcm;
3503
- this.cfr = cfr;
3504
- this.dynamicComponents = [...components];
3505
- }
3506
- }
3507
- BarsaDevelopComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDevelopComponentsModule, deps: [{ token: i1.DynamicComponentService }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.NgModule });
3508
- BarsaDevelopComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: BarsaDevelopComponentsModule, declarations: [LoginFormComponent,
3509
- LoginSocialConncetionsComponent,
3510
- UiPersonComponent,
3511
- BarcodeReaderComponent,
3512
- BarcodeReaderDialogComponent,
3513
- BarcodeReaderVideoComponent,
3514
- SettingFormComponent,
3515
- MicroProcessFlowViewComponent,
3516
- UiEnumSegmentedButtonComponent,
3517
- TabProcessViewComponent,
3518
- UiTextFieldSearchComponent,
3519
- ServiceDeskHeaderComponent,
3520
- CardContentImageAndTitleComponent,
3521
- CardHeaderLogoTitleSubtitleComponent,
3522
- FormContentQuickViewComponent,
3523
- ServiceDeskServcieDetailComponent,
3524
- ServiceDeskViewOfServicesComponent,
3525
- ServiceDeskCardContentMojavezhayAkhzShodeComponent,
3526
- CardHeaderBigImageTitleAndSubtitleComponent,
3527
- ServiceDeskFormLayoutContentMojavezComponent,
3528
- UlvContextMenuItemShowFileContentComponent,
3529
- ResendVerificationCodeComponent,
3530
- CheckboxButtonComponent,
3531
- ReportTabViewComponent,
3532
- ReportLineChartViewComponent,
3533
- CardHeaderKpiComponent,
3534
- CardContentLineChartComponent,
3535
- FormChartContentComponent,
3536
- TableViewVerticalColumnsComponent,
3537
- QueryStringObservableComponent,
3538
- QueryStringFormObservableComponent,
3539
- G4bDetailsComponent,
3540
- AvatarComponent,
3541
- G4bEstelamComponent,
3542
- TimerCountDownComponent,
3543
- MoInfoMicroProccessFlowComponent,
3544
- MicroProccessFlowComponent,
3545
- EnumInfoMicroProccessFlowComponent,
3546
- UiPicturesCarouselComponent,
3547
- UiNumRateComponent,
3548
- MediaFileUploaderComponent,
3549
- SubformInRowReportComponent,
3550
- MasterDetailCardFormComponent,
3551
- ReportButtonViewComponent,
3552
- BarsaDocumentsComponent,
3553
- BarsaDocumentListItemComponent,
3554
- AcceptRejectComponent,
3555
- FooterComponent,
3556
- GeographicLocationComponent,
3557
- BarsaGeographicLocationComponent,
3558
- TokenReportViewComponent,
3559
- ColumnFormViewerComponent,
3560
- FormReportViewComponent,
3561
- FormReportViewItemComponent,
3562
- FormCardComponent, UiPersonPipe, BarcodeFormatPipe, MoListToFlowItemPipe, DataSourceToFlowItemPipe], imports: [CommonModule,
3563
- BarsaNovinRayCoreModule,
3564
- ReactiveFormsModule,
3565
- BarsaSapUiModule,
3566
- BarsaEchartsModule,
3567
- BarsaTilesModule,
3568
- FundamentalNgxCoreModule,
3569
- PlatformInputGroupModule,
3570
- FormsModule], exports: [LoginFormComponent,
3571
- LoginSocialConncetionsComponent,
3572
- UiPersonComponent,
3573
- BarcodeReaderComponent,
3574
- BarcodeReaderDialogComponent,
3575
- BarcodeReaderVideoComponent,
3576
- SettingFormComponent,
3577
- MicroProcessFlowViewComponent,
3578
- UiEnumSegmentedButtonComponent,
3579
- TabProcessViewComponent,
3580
- UiTextFieldSearchComponent,
3581
- ServiceDeskHeaderComponent,
3582
- CardContentImageAndTitleComponent,
3583
- CardHeaderLogoTitleSubtitleComponent,
3584
- FormContentQuickViewComponent,
3585
- ServiceDeskServcieDetailComponent,
3586
- ServiceDeskViewOfServicesComponent,
3587
- ServiceDeskCardContentMojavezhayAkhzShodeComponent,
3588
- CardHeaderBigImageTitleAndSubtitleComponent,
3589
- ServiceDeskFormLayoutContentMojavezComponent,
3590
- UlvContextMenuItemShowFileContentComponent,
3591
- ResendVerificationCodeComponent,
3592
- CheckboxButtonComponent,
3593
- ReportTabViewComponent,
3594
- ReportLineChartViewComponent,
3595
- CardHeaderKpiComponent,
3596
- CardContentLineChartComponent,
3597
- FormChartContentComponent,
3598
- TableViewVerticalColumnsComponent,
3599
- QueryStringObservableComponent,
3600
- QueryStringFormObservableComponent,
3601
- G4bDetailsComponent,
3602
- AvatarComponent,
3603
- G4bEstelamComponent,
3604
- TimerCountDownComponent,
3605
- MoInfoMicroProccessFlowComponent,
3606
- MicroProccessFlowComponent,
3607
- EnumInfoMicroProccessFlowComponent,
3608
- UiPicturesCarouselComponent,
3609
- UiNumRateComponent,
3610
- MediaFileUploaderComponent,
3611
- SubformInRowReportComponent,
3612
- MasterDetailCardFormComponent,
3613
- ReportButtonViewComponent,
3614
- BarsaDocumentsComponent,
3615
- BarsaDocumentListItemComponent,
3616
- AcceptRejectComponent,
3617
- FooterComponent,
3618
- GeographicLocationComponent,
3619
- BarsaGeographicLocationComponent,
3620
- TokenReportViewComponent,
3621
- ColumnFormViewerComponent,
3622
- FormReportViewComponent,
3623
- FormReportViewItemComponent,
3624
- FormCardComponent] });
3625
- BarsaDevelopComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDevelopComponentsModule, providers: [UserMediaBaseService, WebBarcodeService], imports: [CommonModule,
3626
- BarsaNovinRayCoreModule,
3627
- ReactiveFormsModule,
3628
- BarsaSapUiModule,
3629
- BarsaEchartsModule,
3630
- BarsaTilesModule,
3631
- FundamentalNgxCoreModule,
3632
- PlatformInputGroupModule,
3633
- FormsModule] });
3634
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDevelopComponentsModule, decorators: [{
3635
- type: NgModule,
3636
- args: [{
3637
- declarations: [...components, ...pipes],
3638
- schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
3639
- imports: [
3640
- CommonModule,
3641
- BarsaNovinRayCoreModule,
3642
- ReactiveFormsModule,
3643
- BarsaSapUiModule,
3644
- BarsaEchartsModule,
3645
- BarsaTilesModule,
3646
- FundamentalNgxCoreModule,
3647
- PlatformInputGroupModule,
3648
- FormsModule
3649
- ],
3650
- providers: [UserMediaBaseService, WebBarcodeService],
3651
- exports: [...components]
3652
- }]
3653
- }], ctorParameters: function () { return [{ type: i1.DynamicComponentService }, { type: i0.ComponentFactoryResolver }]; } });
3654
-
3655
- /**
3656
- * Generated bundle index. Do not edit.
3657
- */
3658
-
3659
- export { AcceptRejectComponent, AvatarComponent, BarcodeFormatPipe, BarcodeReaderComponent, BarcodeReaderDialogComponent, BarcodeReaderVideoComponent, BarsaDevelopComponentsModule, BarsaDocumentListItemComponent, BarsaDocumentsComponent, BarsaGeographicLocationComponent, CardContentImageAndTitleComponent, CardContentLineChartComponent, CardHeaderBigImageTitleAndSubtitleComponent, CardHeaderKpiComponent, CardHeaderLogoTitleSubtitleComponent, CheckboxButtonComponent, ColumnFormViewerComponent, EnumInfoMicroProccessFlowComponent, FooterComponent, FormCardComponent, FormChartContentComponent, FormContentQuickViewComponent, FormReportViewComponent, FormReportViewItemComponent, G4bDetailsComponent, G4bEstelamComponent, GeographicLocationComponent, LoginFormComponent, LoginSocialConncetionsComponent, MasterDetailCardFormComponent, MediaFileUploaderComponent, MicroProccessFlowComponent, MicroProcessFlowViewComponent, MoInfoMicroProccessFlowComponent, QueryStringFormObservableComponent, QueryStringObservableComponent, ReportButtonViewComponent, ReportLineChartViewComponent, ReportTabViewComponent, ResendVerificationCodeComponent, ServiceDeskCardContentMojavezhayAkhzShodeComponent, ServiceDeskFormLayoutContentMojavezComponent, ServiceDeskHeaderComponent, ServiceDeskServcieDetailComponent, ServiceDeskViewOfServicesComponent, SettingFormComponent, SubformInRowReportComponent, TabProcessViewComponent, TableViewVerticalColumnsComponent, TimerCountDownComponent, TokenReportViewComponent, UiEnumSegmentedButtonComponent, UiNumRateComponent, UiPersonComponent, UiPicturesCarouselComponent, UiTextFieldSearchComponent, UlvContextMenuItemShowFileContentComponent };
3660
- //# sourceMappingURL=barsa-develop-components.mjs.map