@bizdoc/core 2.3.20 → 2.3.21
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.
- package/assets/themes/brown.min.css +4 -4
- package/assets/themes/dark.min.css +4 -4
- package/assets/themes/deep-purple-light-blue.min.css +4 -4
- package/assets/themes/deep-purple-teal.min.css +4 -4
- package/assets/themes/default.min.css +4 -4
- package/assets/themes/green.min.css +4 -4
- package/assets/themes/indigo.min.css +4 -4
- package/esm2022/lib/browse/browse-items.component.mjs +4 -4
- package/esm2022/lib/browse/filter/filter.component.mjs +3 -3
- package/esm2022/lib/compose/compose.pane.component.mjs +18 -11
- package/esm2022/lib/core/translations.mjs +3 -1
- package/esm2022/lib/cube/sum/sum.component.mjs +8 -6
- package/esm2022/lib/dashboard/recents/recents.widget.mjs +4 -2
- package/esm2022/lib/modules/gantt.module.mjs +3 -3
- package/esm2022/lib/system.module.mjs +2 -2
- package/esm2022/lib/views/cube/cube-base.mjs +11 -6
- package/esm2022/lib/views/cube/matrix.component.mjs +3 -1
- package/esm2022/lib/views/timeline/timeline.component.exp.mjs +39 -39
- package/esm2022/lib/views/views.pane.component.mjs +2 -2
- package/fesm2022/bizdoc-core.mjs +89 -69
- package/fesm2022/bizdoc-core.mjs.map +1 -1
- package/lib/browse/browse-items.component.d.ts +1 -1
- package/lib/compose/compose.pane.component.d.ts +4 -2
- package/lib/core/translations.d.ts +2 -0
- package/lib/views/cube/cube-base.d.ts +1 -1
- package/lib/views/timeline/timeline.component.exp.d.ts +10 -2
- package/package.json +1 -1
package/fesm2022/bizdoc-core.mjs
CHANGED
@@ -139,9 +139,9 @@ import * as i3$4 from '@syncfusion/ej2-angular-inputs';
|
|
139
139
|
import { SignatureModule } from '@syncfusion/ej2-angular-inputs';
|
140
140
|
import { LinearGaugeModule, AnnotationsService, GaugeTooltipService } from '@syncfusion/ej2-angular-lineargauge';
|
141
141
|
import * as i11 from '@syncfusion/ej2-angular-charts';
|
142
|
-
import { ChartModule, AccumulationChartModule, SparklineModule, RangeNavigatorModule, RangeTooltipService, AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService, SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService, StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService, BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService, CrosshairService, CategoryService, DateTimeService, LogarithmicService, LegendService, ZoomService, DataLabelService, SelectionService, ChartAnnotationService, WaterfallSeriesService, RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService, MultiLevelLabelService, ParetoSeriesService, TooltipRenderService, SparklineTooltipService, SplineRangeAreaSeriesService, AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService, AreaSeries, LineSeries, DateTime, RangeTooltip, RangeNavigator, SparklineTooltip, Sparkline, PieSeries, PyramidSeries, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationAnnotation, AccumulationLegend, AccumulationSelection, AccumulationChart as AccumulationChart$1, Category, Tooltip as Tooltip$1, Legend, Selection
|
142
|
+
import { ChartModule, AccumulationChartModule, SparklineModule, RangeNavigatorModule, RangeTooltipService, AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService, SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService, StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService, BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService, CrosshairService, CategoryService, DateTimeService, LogarithmicService, LegendService, ZoomService, DataLabelService, SelectionService, ChartAnnotationService, WaterfallSeriesService, RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService, MultiLevelLabelService, ParetoSeriesService, TooltipRenderService, SparklineTooltipService, SplineRangeAreaSeriesService, AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService, AreaSeries, LineSeries, DateTime, RangeTooltip, RangeNavigator, SparklineTooltip, Sparkline, PieSeries, PyramidSeries, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationAnnotation, AccumulationLegend, AccumulationSelection, AccumulationChart as AccumulationChart$1, Category, Tooltip as Tooltip$1, Legend, Selection, Zoom, Crosshair, DataLabel, BarSeries, BubbleSeries, ColumnSeries, PolarSeries, RadarSeries, SplineSeries, SplineAreaSeries, ScatterSeries, StackingStepAreaSeries, StackingLineSeries, StackingAreaSeries, StackingColumnSeries, StackingBarSeries, StepAreaSeries, StepLineSeries, Chart as Chart$1, ChartComponent } from '@syncfusion/ej2-angular-charts';
|
143
143
|
import * as i8$5 from '@syncfusion/ej2-angular-grids';
|
144
|
-
import { GridModule, PagerModule, ExcelExportService, AggregateService, FreezeService, GroupService, PageService, ResizeService, SortService, SelectionService as SelectionService$1, ExcelExport, Sort, Group, Page, Freeze, Selection as Selection$
|
144
|
+
import { GridModule, PagerModule, ExcelExportService, AggregateService, FreezeService, GroupService, PageService, ResizeService, SortService, SelectionService as SelectionService$1, ExcelExport, Sort, Group, Page, Freeze, Selection as Selection$1, Aggregate, Grid as Grid$1, GridComponent } from '@syncfusion/ej2-angular-grids';
|
145
145
|
import { Annotations, GaugeTooltip, Legend as Legend$1, CircularGauge, CircularGaugeModule, AnnotationsService as AnnotationsService$1, GaugeTooltipService as GaugeTooltipService$1, LegendService as LegendService$1 } from '@syncfusion/ej2-angular-circulargauge';
|
146
146
|
import { PivotViewModule, ExcelExportService as ExcelExportService$1, GroupingBarService, NumberFormattingService, GroupingService, PivotChartService, ConditionalFormattingService, GroupingBar, ExcelExport as ExcelExport$1, PivotChart, PivotView as PivotView$1, PivotViewComponent } from '@syncfusion/ej2-angular-pivotview';
|
147
147
|
import * as i9$4 from '@syncfusion/ej2-angular-spreadsheet';
|
@@ -1005,6 +1005,7 @@ const STRINGS = {
|
|
1005
1005
|
ContinueEditing: 'Continue editing',
|
1006
1006
|
Close: 'Close',
|
1007
1007
|
View: 'View',
|
1008
|
+
Views: 'Views',
|
1008
1009
|
FirstPage: 'First page',
|
1009
1010
|
LastPage: 'Last page',
|
1010
1011
|
NextPage: 'Next page',
|
@@ -1484,6 +1485,7 @@ const STRINGS = {
|
|
1484
1485
|
ContinueEditingMale: 'המשך לערוך',
|
1485
1486
|
ContinueEditingFemale: 'המשכי לערוך',
|
1486
1487
|
View: 'מבט',
|
1488
|
+
Views: 'מבטים',
|
1487
1489
|
Close: 'סגירה',
|
1488
1490
|
FirstPage: 'דף ראשון',
|
1489
1491
|
LastPage: 'דף אחרון',
|
@@ -7390,11 +7392,11 @@ class BrowseFilterComponent {
|
|
7390
7392
|
this._destroy.complete();
|
7391
7393
|
}
|
7392
7394
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: BrowseFilterComponent, deps: [{ token: i1$1.FormBuilder }, { token: SessionService }, { token: i0.ChangeDetectorRef }, { token: MailboxService }, { token: AccountService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
7393
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: BrowseFilterComponent, selector: "bizdoc-browse-filter", inputs: { values: "values", folderId: "folderId", exclude: "exclude" }, outputs: { valuesChange: "valuesChange" }, viewQueries: [{ propertyName: "chips", first: true, predicate: MatChipListbox, descendants: true, static: true }, { propertyName: "contains", first: true, predicate: ["contains"], descendants: true, read: ElementRef, static: true }, { propertyName: "sender", first: true, predicate: ["sender"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"column\">\n @if (!exclude || exclude.indexOf('contains') < 0) {\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput formControlName=\"contains\" autocomplete=\"off\" placeholder=\"{{'Contains' | translate}}\" #contains>\n @if (form.value.contains) {\n <button matSuffix mat-icon-button aria-label=\"\" (click)=\"form.controls.contains.setValue(null)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"senderId\" #sender />\n <mat-autocomplete #senders [displayWith]=\"displayFn\" (optionSelected)=\"senderSelected($event)\">\n @for (u of senders$ | async; track u) {\n <mat-option [value]=\"u\">\n <span>{{u.name}}</span>\n </mat-option>\n }\n </mat-autocomplete>\n @if (senderId.value) {\n <button matSuffix mat-icon-button (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\n }\n </mat-form-field>\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\n <mat-option>\n {{ 'All' | translate }}\n </mat-option>\n @for (s of states; track s) {\n <mat-option [value]=\"s.name\">\n {{s.title}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\n <mat-option>\n {{ 'All' | translate }}\n </mat-option>\n @for (f of forms; track f) {\n <mat-option [value]=\"f.name\">{{f.title}}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-chip-listbox id=\"tags\" (change)=\"toggleTag($event)\">\n @for (tag of tags; track tag) {\n <mat-chip-option color=\"accent\">\n {{tag}}\n </mat-chip-option>\n }\n </mat-chip-listbox>\n @if (filters) {\n <bizdoc-cube-filter class=\"cube-filter\"\n [cube]=\"filters.cube\"\n [include]=\"filters.axes\"\n [axes]=\"values\"\n (axesChange)=\"axesChange($event)\"></bizdoc-cube-filter>\n }\n</form>\n", styles: [".cube-filter ::ng-deep form{padding:0}\n"], dependencies: [{ kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4$2.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i4$2.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "component", type: i4$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i3$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }, { kind: "pipe", type: i9$1.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
7395
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: BrowseFilterComponent, selector: "bizdoc-browse-filter", inputs: { values: "values", folderId: "folderId", exclude: "exclude" }, outputs: { valuesChange: "valuesChange" }, viewQueries: [{ propertyName: "chips", first: true, predicate: MatChipListbox, descendants: true, static: true }, { propertyName: "contains", first: true, predicate: ["contains"], descendants: true, read: ElementRef, static: true }, { propertyName: "sender", first: true, predicate: ["sender"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"column gap\">\n @if (!exclude || exclude.indexOf('contains') < 0) {\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput formControlName=\"contains\" autocomplete=\"off\" placeholder=\"{{'Contains' | translate}}\" #contains>\n @if (form.value.contains) {\n <button matSuffix mat-icon-button aria-label=\"\" (click)=\"form.controls.contains.setValue(null)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"senderId\" #sender />\n <mat-autocomplete #senders [displayWith]=\"displayFn\" (optionSelected)=\"senderSelected($event)\">\n @for (u of senders$ | async; track u) {\n <mat-option [value]=\"u\">\n <span>{{u.name}}</span>\n </mat-option>\n }\n </mat-autocomplete>\n @if (senderId.value) {\n <button matSuffix mat-icon-button (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\n }\n </mat-form-field>\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\n <mat-option>\n {{ 'All' | translate }}\n </mat-option>\n @for (s of states; track s) {\n <mat-option [value]=\"s.name\">\n {{s.title}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\n <mat-option>\n {{ 'All' | translate }}\n </mat-option>\n @for (f of forms; track f) {\n <mat-option [value]=\"f.name\">{{f.title}}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-chip-listbox id=\"tags\" (change)=\"toggleTag($event)\">\n @for (tag of tags; track tag) {\n <mat-chip-option color=\"accent\">\n {{tag}}\n </mat-chip-option>\n }\n </mat-chip-listbox>\n @if (filters) {\n <bizdoc-cube-filter class=\"cube-filter\"\n [cube]=\"filters.cube\"\n [include]=\"filters.axes\"\n [axes]=\"values\"\n (axesChange)=\"axesChange($event)\"></bizdoc-cube-filter>\n }\n</form>\n", styles: [".cube-filter ::ng-deep form{padding:0}\n"], dependencies: [{ kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4$2.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i4$2.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "component", type: i4$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i3$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }, { kind: "pipe", type: i9$1.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
7394
7396
|
}
|
7395
7397
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: BrowseFilterComponent, decorators: [{
|
7396
7398
|
type: Component,
|
7397
|
-
args: [{ selector: 'bizdoc-browse-filter', template: "<form [formGroup]=\"form\" class=\"column\">\n @if (!exclude || exclude.indexOf('contains') < 0) {\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput formControlName=\"contains\" autocomplete=\"off\" placeholder=\"{{'Contains' | translate}}\" #contains>\n @if (form.value.contains) {\n <button matSuffix mat-icon-button aria-label=\"\" (click)=\"form.controls.contains.setValue(null)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"senderId\" #sender />\n <mat-autocomplete #senders [displayWith]=\"displayFn\" (optionSelected)=\"senderSelected($event)\">\n @for (u of senders$ | async; track u) {\n <mat-option [value]=\"u\">\n <span>{{u.name}}</span>\n </mat-option>\n }\n </mat-autocomplete>\n @if (senderId.value) {\n <button matSuffix mat-icon-button (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\n }\n </mat-form-field>\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\n <mat-option>\n {{ 'All' | translate }}\n </mat-option>\n @for (s of states; track s) {\n <mat-option [value]=\"s.name\">\n {{s.title}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\n <mat-option>\n {{ 'All' | translate }}\n </mat-option>\n @for (f of forms; track f) {\n <mat-option [value]=\"f.name\">{{f.title}}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-chip-listbox id=\"tags\" (change)=\"toggleTag($event)\">\n @for (tag of tags; track tag) {\n <mat-chip-option color=\"accent\">\n {{tag}}\n </mat-chip-option>\n }\n </mat-chip-listbox>\n @if (filters) {\n <bizdoc-cube-filter class=\"cube-filter\"\n [cube]=\"filters.cube\"\n [include]=\"filters.axes\"\n [axes]=\"values\"\n (axesChange)=\"axesChange($event)\"></bizdoc-cube-filter>\n }\n</form>\n", styles: [".cube-filter ::ng-deep form{padding:0}\n"] }]
|
7399
|
+
args: [{ selector: 'bizdoc-browse-filter', template: "<form [formGroup]=\"form\" class=\"column gap\">\n @if (!exclude || exclude.indexOf('contains') < 0) {\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput formControlName=\"contains\" autocomplete=\"off\" placeholder=\"{{'Contains' | translate}}\" #contains>\n @if (form.value.contains) {\n <button matSuffix mat-icon-button aria-label=\"\" (click)=\"form.controls.contains.setValue(null)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"senderId\" #sender />\n <mat-autocomplete #senders [displayWith]=\"displayFn\" (optionSelected)=\"senderSelected($event)\">\n @for (u of senders$ | async; track u) {\n <mat-option [value]=\"u\">\n <span>{{u.name}}</span>\n </mat-option>\n }\n </mat-autocomplete>\n @if (senderId.value) {\n <button matSuffix mat-icon-button (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\n }\n </mat-form-field>\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\n <mat-option>\n {{ 'All' | translate }}\n </mat-option>\n @for (s of states; track s) {\n <mat-option [value]=\"s.name\">\n {{s.title}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\n <mat-option>\n {{ 'All' | translate }}\n </mat-option>\n @for (f of forms; track f) {\n <mat-option [value]=\"f.name\">{{f.title}}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-chip-listbox id=\"tags\" (change)=\"toggleTag($event)\">\n @for (tag of tags; track tag) {\n <mat-chip-option color=\"accent\">\n {{tag}}\n </mat-chip-option>\n }\n </mat-chip-listbox>\n @if (filters) {\n <bizdoc-cube-filter class=\"cube-filter\"\n [cube]=\"filters.cube\"\n [include]=\"filters.axes\"\n [axes]=\"values\"\n (axesChange)=\"axesChange($event)\"></bizdoc-cube-filter>\n }\n</form>\n", styles: [".cube-filter ::ng-deep form{padding:0}\n"] }]
|
7398
7400
|
}], ctorParameters: () => [{ type: i1$1.FormBuilder }, { type: SessionService }, { type: i0.ChangeDetectorRef }, { type: MailboxService }, { type: AccountService }, { type: undefined, decorators: [{
|
7399
7401
|
type: Inject,
|
7400
7402
|
args: [BIZDOC_CONFIG]
|
@@ -8545,7 +8547,7 @@ class BrowseItemsComponent {
|
|
8545
8547
|
this._pendingItems = {};
|
8546
8548
|
this._destroy = new Subject();
|
8547
8549
|
this._loading$ = new Subject();
|
8548
|
-
this.
|
8550
|
+
this.enableViews = _session.profile.views.length > 0;
|
8549
8551
|
}
|
8550
8552
|
ngOnInit() {
|
8551
8553
|
this.selection.changed.pipe(takeUntil$1(this._destroy)).subscribe(() => this._sharedActions());
|
@@ -8927,7 +8929,7 @@ class BrowseItemsComponent {
|
|
8927
8929
|
this._destroy.complete();
|
8928
8930
|
}
|
8929
8931
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: BrowseItemsComponent, deps: [{ token: MailboxService }, { token: AccountService }, { token: CubeService }, { token: SessionService }, { token: PromptService }, { token: TranslateService }, { token: i0.ChangeDetectorRef }, { token: RouterImpl }, { token: HubService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
8930
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: { folderId: "folderId", filterType: "filterType", filters: "filters" }, outputs: { onopen: "open", onview: "view" }, host: { classAttribute: "bizdoc-browse-items" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\n@if (dataSource?.data.length === 0) {\n <bizdoc-none title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\n}\n<mat-table cdkDropList class=\"data-table\"\n [cdkDropListDisabled]=\"isMobile\"\n [cdkDropListData]=\"dataSource?.data\"\n cdkDropListConnectedTo=\"folders\"\n cdkDropListSortingDisabled\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <div class=\"\"></div>\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\n (change)=\"$event ? selection.toggle(item) : null\"\n [checked]=\"selection.isSelected(item)\">\n </mat-checkbox>\n <!-- drag -->\n <!--<button mat-icon-button cdkDragHandle\n (mousedown)=\"dragDisabled = false\"\n (mouseup)=\"dragDisabled = true\"\n (touchstart)=\"dragDisabled = false\"\n (touchend)=\"dragDisabled = true\"\n class=\"drag hide-xs\" aria-disabled=\"true\">\n <mat-icon>drag_indicator</mat-icon>\n </button>-->\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\n </mat-cell>\n</ng-container>\n<!-- Number column -->\n<ng-container matColumnDef=\"number\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\n</ng-container>\n\n<!-- Subject column -->\n<ng-container matColumnDef=\"subject\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"owner\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n @if (item.ownerId) {\n <bizdoc-identity-name [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\n }\n </mat-cell>\n</ng-container>\n<ng-container matColumnDef=\"sender\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n @if (item.senderId) {\n <bizdoc-identity-name [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\n }\n </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"received\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"receivedAgo\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"replied\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"issued\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"issuedAgo\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"state\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\n </mat-cell>\n</ng-container>\n\n@if (customColumns) {\n @for (c of customColumns; track c) {\n <ng-container [matColumnDef]=\"c.name\">\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n @switch (c.type) {\n @case ('Date') {\n <span>\n {{item.model[c.name] | amCalendar }}\n </span>\n }\n @case ('Decimal') {\n <span>\n {{item.model[c.name] | number }}\n </span>\n }\n @case ('Boolean') {\n <span>\n <bizdoc-checkbox [checked]=\"item.model[c.name]\"></bizdoc-checkbox>\n </span>\n }\n @default {\n <span>\n {{item.model[c.name]}}z\n </span>\n }\n }\n </mat-cell>\n </ng-container>\n }\n}\n\n<!-- Value column -->\n<ng-container matColumnDef=\"value\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\n</ng-container>\n\n<!-- options column -->\n<ng-container matColumnDef=\"options\">\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\n @if (enableAnalysis) {\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\n }\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool hide-xs\"><mat-icon>more_vert</mat-icon></button>\n </mat-cell>\n</ng-container>\n<!-- Expanded Content Column -->\n<ng-container matColumnDef=\"expandedDetail\">\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\n [class.read-row]=\"item.read\">\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\n @if (item == expandedElement) {\n <bizdoc-expanded-item [model]=\"item\"></bizdoc-expanded-item>\n }\n </div>\n </mat-cell>\n</ng-container>\n<mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\n<mat-row @item [@updated]=\"item == updatedElement\"\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\n cdkDrag [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"dragDisabled\"\n (cdkDragReleased)=\"dragDisabled = true\"\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\n <div *cdkDragPreview>\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\n </div>\n <div *cdkDragPlaceholder>\n <!-- none -->\n </div>\n</mat-row>\n<mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\n class=\"detail-row\" matRipple\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\n<mat-menu #menu=\"matMenu\">\n <ng-template matMenuContent let-item=\"item\">\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\n </ng-template>\n</mat-menu>\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-mdc-row .tool{opacity:.05}.mat-mdc-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i9$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2$2.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i2$2.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i2$3.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i5$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i7$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i7$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i6$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i2$4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: CheckboxComponent, selector: "bizdoc-checkbox", inputs: ["checked", "color", "icon"] }, { kind: "directive", type: StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "component", type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { kind: "component", type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { kind: "component", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: ["model"], outputs: ["sent"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i9$1.DecimalPipe, name: "number" }, { kind: "pipe", type: i9$1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], animations: [
|
8932
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: { folderId: "folderId", filterType: "filterType", filters: "filters" }, outputs: { onopen: "open", onview: "view" }, host: { classAttribute: "bizdoc-browse-items" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\n@if (dataSource?.data.length === 0) {\n <bizdoc-none title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\n}\n<mat-table cdkDropList class=\"data-table\"\n [cdkDropListDisabled]=\"isMobile\"\n [cdkDropListData]=\"dataSource?.data\"\n cdkDropListConnectedTo=\"folders\"\n cdkDropListSortingDisabled\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <div class=\"\"></div>\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\n (change)=\"$event ? selection.toggle(item) : null\"\n [checked]=\"selection.isSelected(item)\">\n </mat-checkbox>\n <!-- drag -->\n <!--<button mat-icon-button cdkDragHandle\n (mousedown)=\"dragDisabled = false\"\n (mouseup)=\"dragDisabled = true\"\n (touchstart)=\"dragDisabled = false\"\n (touchend)=\"dragDisabled = true\"\n class=\"drag hide-xs\" aria-disabled=\"true\">\n <mat-icon>drag_indicator</mat-icon>\n </button>-->\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\n </mat-cell>\n</ng-container>\n<!-- Number column -->\n<ng-container matColumnDef=\"number\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\n</ng-container>\n\n<!-- Subject column -->\n<ng-container matColumnDef=\"subject\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"owner\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n @if (item.ownerId) {\n <bizdoc-identity-name [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\n }\n </mat-cell>\n</ng-container>\n<ng-container matColumnDef=\"sender\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n @if (item.senderId) {\n <bizdoc-identity-name [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\n }\n </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"received\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"receivedAgo\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"replied\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"issued\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"issuedAgo\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"state\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\n </mat-cell>\n</ng-container>\n\n@if (customColumns) {\n @for (c of customColumns; track c) {\n <ng-container [matColumnDef]=\"c.name\">\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n @switch (c.type) {\n @case ('Date') {\n <span>\n {{item.model[c.name] | amCalendar }}\n </span>\n }\n @case ('Decimal') {\n <span>\n {{item.model[c.name] | number }}\n </span>\n }\n @case ('Boolean') {\n <span>\n <bizdoc-checkbox [checked]=\"item.model[c.name]\"></bizdoc-checkbox>\n </span>\n }\n @default {\n <span>\n {{item.model[c.name]}}z\n </span>\n }\n }\n </mat-cell>\n </ng-container>\n }\n}\n\n<!-- Value column -->\n<ng-container matColumnDef=\"value\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\n</ng-container>\n\n<!-- options column -->\n<ng-container matColumnDef=\"options\">\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\n @if (enableViews) {\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\n }\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool hide-xs\"><mat-icon>more_vert</mat-icon></button>\n </mat-cell>\n</ng-container>\n<!-- Expanded Content Column -->\n<ng-container matColumnDef=\"expandedDetail\">\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\n [class.read-row]=\"item.read\">\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\n @if (item == expandedElement) {\n <bizdoc-expanded-item [model]=\"item\"></bizdoc-expanded-item>\n }\n </div>\n </mat-cell>\n</ng-container>\n<mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\n<mat-row @item [@updated]=\"item == updatedElement\"\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\n cdkDrag [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"dragDisabled\"\n (cdkDragReleased)=\"dragDisabled = true\"\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\n <div *cdkDragPreview>\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\n </div>\n <div *cdkDragPlaceholder>\n <!-- none -->\n </div>\n</mat-row>\n<mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\n class=\"detail-row\" matRipple\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\n<mat-menu #menu=\"matMenu\">\n <ng-template matMenuContent let-item=\"item\">\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\n </ng-template>\n</mat-menu>\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-mdc-row .tool{opacity:.05}.mat-mdc-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i9$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2$2.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i2$2.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i2$3.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i5$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i7$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i7$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i6$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i2$4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: CheckboxComponent, selector: "bizdoc-checkbox", inputs: ["checked", "color", "icon"] }, { kind: "directive", type: StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "component", type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { kind: "component", type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { kind: "component", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: ["model"], outputs: ["sent"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i9$1.DecimalPipe, name: "number" }, { kind: "pipe", type: i9$1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], animations: [
|
8931
8933
|
listAnimation,
|
8932
8934
|
itemAnimation,
|
8933
8935
|
expandListItemAnimation,
|
@@ -8943,7 +8945,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
|
|
8943
8945
|
listItemUpdatedAnimation
|
8944
8946
|
], host: {
|
8945
8947
|
class: 'bizdoc-browse-items'
|
8946
|
-
}, template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\n@if (dataSource?.data.length === 0) {\n <bizdoc-none title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\n}\n<mat-table cdkDropList class=\"data-table\"\n [cdkDropListDisabled]=\"isMobile\"\n [cdkDropListData]=\"dataSource?.data\"\n cdkDropListConnectedTo=\"folders\"\n cdkDropListSortingDisabled\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <div class=\"\"></div>\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\n (change)=\"$event ? selection.toggle(item) : null\"\n [checked]=\"selection.isSelected(item)\">\n </mat-checkbox>\n <!-- drag -->\n <!--<button mat-icon-button cdkDragHandle\n (mousedown)=\"dragDisabled = false\"\n (mouseup)=\"dragDisabled = true\"\n (touchstart)=\"dragDisabled = false\"\n (touchend)=\"dragDisabled = true\"\n class=\"drag hide-xs\" aria-disabled=\"true\">\n <mat-icon>drag_indicator</mat-icon>\n </button>-->\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\n </mat-cell>\n</ng-container>\n<!-- Number column -->\n<ng-container matColumnDef=\"number\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\n</ng-container>\n\n<!-- Subject column -->\n<ng-container matColumnDef=\"subject\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"owner\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n @if (item.ownerId) {\n <bizdoc-identity-name [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\n }\n </mat-cell>\n</ng-container>\n<ng-container matColumnDef=\"sender\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n @if (item.senderId) {\n <bizdoc-identity-name [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\n }\n </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"received\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"receivedAgo\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"replied\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"issued\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"issuedAgo\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"state\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\n </mat-cell>\n</ng-container>\n\n@if (customColumns) {\n @for (c of customColumns; track c) {\n <ng-container [matColumnDef]=\"c.name\">\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n @switch (c.type) {\n @case ('Date') {\n <span>\n {{item.model[c.name] | amCalendar }}\n </span>\n }\n @case ('Decimal') {\n <span>\n {{item.model[c.name] | number }}\n </span>\n }\n @case ('Boolean') {\n <span>\n <bizdoc-checkbox [checked]=\"item.model[c.name]\"></bizdoc-checkbox>\n </span>\n }\n @default {\n <span>\n {{item.model[c.name]}}z\n </span>\n }\n }\n </mat-cell>\n </ng-container>\n }\n}\n\n<!-- Value column -->\n<ng-container matColumnDef=\"value\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\n</ng-container>\n\n<!-- options column -->\n<ng-container matColumnDef=\"options\">\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\n @if (enableAnalysis) {\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\n }\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool hide-xs\"><mat-icon>more_vert</mat-icon></button>\n </mat-cell>\n</ng-container>\n<!-- Expanded Content Column -->\n<ng-container matColumnDef=\"expandedDetail\">\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\n [class.read-row]=\"item.read\">\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\n @if (item == expandedElement) {\n <bizdoc-expanded-item [model]=\"item\"></bizdoc-expanded-item>\n }\n </div>\n </mat-cell>\n</ng-container>\n<mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\n<mat-row @item [@updated]=\"item == updatedElement\"\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\n cdkDrag [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"dragDisabled\"\n (cdkDragReleased)=\"dragDisabled = true\"\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\n <div *cdkDragPreview>\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\n </div>\n <div *cdkDragPlaceholder>\n <!-- none -->\n </div>\n</mat-row>\n<mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\n class=\"detail-row\" matRipple\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\n<mat-menu #menu=\"matMenu\">\n <ng-template matMenuContent let-item=\"item\">\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\n </ng-template>\n</mat-menu>\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-mdc-row .tool{opacity:.05}.mat-mdc-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"] }]
|
8948
|
+
}, template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\n@if (dataSource?.data.length === 0) {\n <bizdoc-none title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\n}\n<mat-table cdkDropList class=\"data-table\"\n [cdkDropListDisabled]=\"isMobile\"\n [cdkDropListData]=\"dataSource?.data\"\n cdkDropListConnectedTo=\"folders\"\n cdkDropListSortingDisabled\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <div class=\"\"></div>\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\n (change)=\"$event ? selection.toggle(item) : null\"\n [checked]=\"selection.isSelected(item)\">\n </mat-checkbox>\n <!-- drag -->\n <!--<button mat-icon-button cdkDragHandle\n (mousedown)=\"dragDisabled = false\"\n (mouseup)=\"dragDisabled = true\"\n (touchstart)=\"dragDisabled = false\"\n (touchend)=\"dragDisabled = true\"\n class=\"drag hide-xs\" aria-disabled=\"true\">\n <mat-icon>drag_indicator</mat-icon>\n </button>-->\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\n </mat-cell>\n</ng-container>\n<!-- Number column -->\n<ng-container matColumnDef=\"number\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\n</ng-container>\n\n<!-- Subject column -->\n<ng-container matColumnDef=\"subject\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"owner\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n @if (item.ownerId) {\n <bizdoc-identity-name [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\n }\n </mat-cell>\n</ng-container>\n<ng-container matColumnDef=\"sender\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n @if (item.senderId) {\n <bizdoc-identity-name [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\n }\n </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"received\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"receivedAgo\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"replied\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"issued\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"issuedAgo\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\n</ng-container>\n\n<ng-container matColumnDef=\"state\">\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\n </mat-cell>\n</ng-container>\n\n@if (customColumns) {\n @for (c of customColumns; track c) {\n <ng-container [matColumnDef]=\"c.name\">\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\n @switch (c.type) {\n @case ('Date') {\n <span>\n {{item.model[c.name] | amCalendar }}\n </span>\n }\n @case ('Decimal') {\n <span>\n {{item.model[c.name] | number }}\n </span>\n }\n @case ('Boolean') {\n <span>\n <bizdoc-checkbox [checked]=\"item.model[c.name]\"></bizdoc-checkbox>\n </span>\n }\n @default {\n <span>\n {{item.model[c.name]}}z\n </span>\n }\n }\n </mat-cell>\n </ng-container>\n }\n}\n\n<!-- Value column -->\n<ng-container matColumnDef=\"value\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\n</ng-container>\n\n<!-- options column -->\n<ng-container matColumnDef=\"options\">\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\n @if (enableViews) {\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\n }\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool hide-xs\"><mat-icon>more_vert</mat-icon></button>\n </mat-cell>\n</ng-container>\n<!-- Expanded Content Column -->\n<ng-container matColumnDef=\"expandedDetail\">\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\n [class.read-row]=\"item.read\">\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\n @if (item == expandedElement) {\n <bizdoc-expanded-item [model]=\"item\"></bizdoc-expanded-item>\n }\n </div>\n </mat-cell>\n</ng-container>\n<mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\n<mat-row @item [@updated]=\"item == updatedElement\"\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\n cdkDrag [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"dragDisabled\"\n (cdkDragReleased)=\"dragDisabled = true\"\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\n <div *cdkDragPreview>\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\n </div>\n <div *cdkDragPlaceholder>\n <!-- none -->\n </div>\n</mat-row>\n<mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\n class=\"detail-row\" matRipple\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\n<mat-menu #menu=\"matMenu\">\n <ng-template matMenuContent let-item=\"item\">\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\n </ng-template>\n</mat-menu>\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-mdc-row .tool{opacity:.05}.mat-mdc-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"] }]
|
8947
8949
|
}], ctorParameters: () => [{ type: MailboxService }, { type: AccountService }, { type: CubeService }, { type: SessionService }, { type: PromptService }, { type: TranslateService }, { type: i0.ChangeDetectorRef }, { type: RouterImpl }, { type: HubService }, { type: undefined, decorators: [{
|
8948
8950
|
type: Inject,
|
8949
8951
|
args: [BIZDOC_CONFIG]
|
@@ -9544,11 +9546,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
|
|
9544
9546
|
/** compose component responsible for editing a form */
|
9545
9547
|
class ComposePaneComponent {
|
9546
9548
|
/** compose ctor */
|
9547
|
-
constructor(_session, _mailbox, _pane, _router
|
9549
|
+
constructor(_session, _mailbox, _pane, _router) {
|
9548
9550
|
this._session = _session;
|
9549
9551
|
this._mailbox = _mailbox;
|
9550
9552
|
this._pane = _pane;
|
9551
9553
|
this._router = _router;
|
9554
|
+
this.showToolbar = true;
|
9555
|
+
this._previousTop = 0;
|
9552
9556
|
this._dragDrop = new Subject();
|
9553
9557
|
this._destroy = new Subject();
|
9554
9558
|
this.enableAnalysis = _session.profile.views.length > 0;
|
@@ -9630,6 +9634,11 @@ class ComposePaneComponent {
|
|
9630
9634
|
policy: OpenPolicy.Toggle
|
9631
9635
|
});
|
9632
9636
|
}
|
9637
|
+
onScroll(event) {
|
9638
|
+
const top = event.currentTarget.scrollTop;
|
9639
|
+
this.showToolbar = this._previousTop > top && top > 0;
|
9640
|
+
this._previousTop = top;
|
9641
|
+
}
|
9633
9642
|
handleDocumentDrop(event) {
|
9634
9643
|
event.stopPropagation();
|
9635
9644
|
event.preventDefault();
|
@@ -9689,23 +9698,23 @@ class ComposePaneComponent {
|
|
9689
9698
|
view() {
|
9690
9699
|
this._navigate('views');
|
9691
9700
|
}
|
9692
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ComposePaneComponent, deps: [{ token: SessionService }, { token: MailboxService }, { token: PaneRef }, { token: PanesRouter }
|
9693
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: ComposePaneComponent, selector: "bizdoc-compose.pane", host: { listeners: { "document:drop": "handleDocumentDrop($event)", "drop": "handleDrop($event)", "dragenter": "handleEnter($event)", "dragleave": "handleLeave($event)", "dragover": "handleOver($event)", "document:keydown": "handleKeydown($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "form", first: true, predicate: ComposeFormComponent, descendants: true, static: true }, { propertyName: "dropableElement", first: true, predicate: ["dropable"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\n @if (form.page !== undefined) {\n <button mat-icon-button color=\"primary\" (click)=\"form.back()\" [bizdocTooltip]=\"'Back'|translate\" tabindex=\"1\">\n <mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon>\n </button>\n }\n @if (model.draft) {\n <button mat-stroked-button color=\"primary\" data-help=\"submit\"\n (click)=\"submit()\" [disabled]=\"!valid||working\">\n <span>{{'Submit' | translate}}</span>\n </button>\n }\n @if (form.actions.length === 1) {\n <button mat-stroked-button color=\"primary\" [attr.data-help]=\"'action-'+form.actions[0].name\" (click)=\"send(model.actions[0])\" [disabled]=\"!valid||working\">\n <span>{{form.actions[0].title}}</span>\n </button>\n }\n @if (form.actions.length > 1) {\n <button mat-stroked-button data-help=\"send\" color=\"primary\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"!valid||working\">\n <span>{{'Send' | translate}}</span>\n </button>\n }\n <!-- action -->\n <mat-menu #actionMenu>\n <ng-template matMenuContent>\n @for (a of form.actions; track a; let i = $index) {\n @if (i > 0 && form.actions[i - 1].group !== a.group) {\n <mat-divider></mat-divider>\n }\n <button mat-menu-item (click)=\"send(a.name)\">{{a.title}}</button>\n }\n </ng-template>\n </mat-menu>\n @if (mode === 'compose') {\n <button mat-icon-button (click)=\"save()\" data-help=\"save\" [disabled]=\"!dirty||working\" [bizdocTooltip]=\"'Save'|translate\">\n <mat-icon>save</mat-icon>\n </button>\n }\n <button mat-icon-button data-help=\"tag\" (click)=\"form.tag($event)\" [bizdocTooltip]=\"'Tags' | translate\" [disabled]=\"working\"><mat-icon class=\"filled\">{{model.tags && model.tags.length ?'bookmark':'bookmark_border'}}</mat-icon></button>\n <button mat-icon-button data-help=\"flag\" [bizdocTooltip]=\"'Flagged'| translate\" [disabled]=\"working\" (click)=\"form.flag()\"><mat-icon [class.document-flag]=\"model.flag\">{{model.flag ? 'star' : 'star_border'}}</mat-icon></button>\n <button mat-icon-button (click)=\"form.attach()\" data-help=\"attach\" [bizdocTooltip]=\"'AttachFile' | translate\" [disabled]=\"working\"><mat-icon>attach_file</mat-icon></button>\n @if (mode !== 'compose' && model.pending && !model.completed) {\n <button mat-icon-button [disabled]=\"working\" data-help=\"edit\" (click)=\"edit()\" [bizdocTooltip]=\"'Edit' | translate\"><mat-icon>create</mat-icon></button>\n }\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"navTrace()\" [bizdocTooltip]=\"'Trace' | translate\" tabindex=\"1\"><mat-icon>timeline</mat-icon></button>\n <button mat-icon-button (click)=\"navComments()\" data-help=\"comments\" [bizdocTooltip]=\"'Comments' | translate\" [matBadge]=\"newCommentsCount\" [matBadgeHidden]=\"!newCommentsCount\" matBadgeColor=\"accent\">\n <mat-icon [class.filled]=\"model.comments.length > 0\">format_quote</mat-icon>\n </button>\n @if (enableAnalysis) {\n <button mat-icon-button (click)=\"view()\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\n }\n @if (expendable) {\n <button mat-icon-button (click)=\"expand()\" [bizdocTooltip]=\"'Expand' | translate\" [attr.aria-label]=\"'Expand' | translate\"><mat-icon>open_in_new</mat-icon></button>\n }\n <button mat-icon-button [matMenuTriggerFor]=\"optionsMenu\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\"><mat-icon>more_vert</mat-icon></button>\n <mat-menu #optionsMenu=\"matMenu\">\n <ng-template matMenuContent>\n <button mat-menu-item (click)=\"form.copy()\" [disabled]=\"working\">\n <!--<mat-icon>content_copy</mat-icon>-->\n <span>{{'Copy' | translate}}</span>\n </button>\n @if (model.draft && !model.issued) {\n <button mat-menu-item (click)=\"discard()\" [disabled]=\"working\">\n <!--<mat-icon>delete_outlined</mat-icon>-->\n <span>{{'Discard' | translate}}</span>\n </button>\n }\n @if (form.help) {\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"form.guide(form.help)\">\n <!--<mat-icon>help_outline</mat-icon>-->\n <span>{{'Help' | translate}}</span>\n </button>\n }\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"close()\"><!--<mat-icon></mat-icon>--><span>{{'Close'| translate}}</span></button>\n </ng-template>\n </mat-menu>\n</mat-toolbar>\n<div class=\"file-dropable flex\" #dropable>\n <bizdoc-form [model]=model #form\n (modelChange)=\"change()\"\n (saved)=\"saved()\"\n (validChange)=\"valid=$event\"\n (workingChange)=\"working=$event\"\n (dirtyChange)=\"dirty=$event\" [mode]=\"mode\"></bizdoc-form>\n</div>\n", styles: ["
|
9701
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ComposePaneComponent, deps: [{ token: SessionService }, { token: MailboxService }, { token: PaneRef }, { token: PanesRouter }], target: i0.ɵɵFactoryTarget.Component }); }
|
9702
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: ComposePaneComponent, selector: "bizdoc-compose.pane", host: { listeners: { "scroll": "onScroll($event)", "document:drop": "handleDocumentDrop($event)", "drop": "handleDrop($event)", "dragenter": "handleEnter($event)", "dragleave": "handleLeave($event)", "dragover": "handleOver($event)", "document:keydown": "handleKeydown($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "form", first: true, predicate: ComposeFormComponent, descendants: true, static: true }, { propertyName: "dropableElement", first: true, predicate: ["dropable"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\" [class.sticky]=\"showToolbar\">\n @if (form.page !== undefined) {\n <button mat-icon-button color=\"primary\" (click)=\"form.back()\" [bizdocTooltip]=\"'Back'|translate\" tabindex=\"1\">\n <mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon>\n </button>\n }\n @if (model.draft) {\n <button mat-stroked-button color=\"primary\" data-help=\"submit\"\n (click)=\"submit()\" [disabled]=\"!valid||working\">\n <span>{{'Submit' | translate}}</span>\n </button>\n }\n @if (form.actions.length === 1) {\n <button mat-stroked-button color=\"primary\" [attr.data-help]=\"'action-'+form.actions[0].name\" (click)=\"send(model.actions[0])\" [disabled]=\"!valid||working\">\n <span>{{form.actions[0].title}}</span>\n </button>\n }\n @if (form.actions.length > 1) {\n <button mat-stroked-button data-help=\"send\" color=\"primary\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"!valid||working\">\n <span>{{'Send' | translate}}</span>\n </button>\n }\n <!-- action -->\n <mat-menu #actionMenu>\n <ng-template matMenuContent>\n @for (a of form.actions; track a; let i = $index) {\n @if (i > 0 && form.actions[i - 1].group !== a.group) {\n <mat-divider></mat-divider>\n }\n <button mat-menu-item (click)=\"send(a.name)\">{{a.title}}</button>\n }\n </ng-template>\n </mat-menu>\n @if (mode === 'compose') {\n <button mat-icon-button (click)=\"save()\" data-help=\"save\" [disabled]=\"!dirty||working\" [bizdocTooltip]=\"'Save'|translate\">\n <mat-icon>save</mat-icon>\n </button>\n }\n <button mat-icon-button data-help=\"tag\" (click)=\"form.tag($event)\" [bizdocTooltip]=\"'Tags' | translate\" [disabled]=\"working\"><mat-icon class=\"filled\">{{model.tags && model.tags.length ?'bookmark':'bookmark_border'}}</mat-icon></button>\n <button mat-icon-button data-help=\"flag\" [bizdocTooltip]=\"'Flagged'| translate\" [disabled]=\"working\" (click)=\"form.flag()\"><mat-icon [class.document-flag]=\"model.flag\">{{model.flag ? 'star' : 'star_border'}}</mat-icon></button>\n <button mat-icon-button (click)=\"form.attach()\" data-help=\"attach\" [bizdocTooltip]=\"'AttachFile' | translate\" [disabled]=\"working\"><mat-icon>attach_file</mat-icon></button>\n @if (mode !== 'compose' && model.pending && !model.completed) {\n <button mat-icon-button [disabled]=\"working\" data-help=\"edit\" (click)=\"edit()\" [bizdocTooltip]=\"'Edit' | translate\"><mat-icon>create</mat-icon></button>\n }\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"navTrace()\" [bizdocTooltip]=\"'Trace' | translate\" tabindex=\"1\"><mat-icon>timeline</mat-icon></button>\n <button mat-icon-button (click)=\"navComments()\" data-help=\"comments\" [bizdocTooltip]=\"'Comments' | translate\" [matBadge]=\"newCommentsCount\" [matBadgeHidden]=\"!newCommentsCount\" matBadgeColor=\"accent\">\n <mat-icon [class.filled]=\"model.comments.length > 0\">format_quote</mat-icon>\n </button>\n @if (enableAnalysis) {\n <button mat-icon-button (click)=\"view()\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\n }\n @if (expendable) {\n <button mat-icon-button (click)=\"expand()\" [bizdocTooltip]=\"'Expand' | translate\" [attr.aria-label]=\"'Expand' | translate\"><mat-icon>open_in_new</mat-icon></button>\n }\n <button mat-icon-button [matMenuTriggerFor]=\"optionsMenu\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\"><mat-icon>more_vert</mat-icon></button>\n <mat-menu #optionsMenu=\"matMenu\">\n <ng-template matMenuContent>\n <button mat-menu-item (click)=\"form.copy()\" [disabled]=\"working\">\n <!--<mat-icon>content_copy</mat-icon>-->\n <span>{{'Copy' | translate}}</span>\n </button>\n @if (model.draft && !model.issued) {\n <button mat-menu-item (click)=\"discard()\" [disabled]=\"working\">\n <!--<mat-icon>delete_outlined</mat-icon>-->\n <span>{{'Discard' | translate}}</span>\n </button>\n }\n @if (form.help) {\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"form.guide(form.help)\">\n <!--<mat-icon>help_outline</mat-icon>-->\n <span>{{'Help' | translate}}</span>\n </button>\n }\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"close()\"><!--<mat-icon></mat-icon>--><span>{{'Close'| translate}}</span></button>\n </ng-template>\n </mat-menu>\n</mat-toolbar>\n<div class=\"file-dropable flex\" #dropable>\n <bizdoc-form [model]=model #form\n (modelChange)=\"change()\"\n (saved)=\"saved()\"\n (validChange)=\"valid=$event\"\n (workingChange)=\"working=$event\"\n (dirtyChange)=\"dirty=$event\" [mode]=\"mode\"></bizdoc-form>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i9$2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i6$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: ComposeFormComponent, selector: "bizdoc-form", inputs: ["model", "working", "dirty", "valid", "mode", "contacts"], outputs: ["modelChange", "workingChange", "dirtyChange", "validChange", "saved"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
9694
9703
|
}
|
9695
9704
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ComposePaneComponent, decorators: [{
|
9696
9705
|
type: Component,
|
9697
9706
|
args: [{ selector: 'bizdoc-compose.pane', host: {
|
9698
9707
|
class: 'pane'
|
9699
|
-
}, template: "<mat-toolbar class=\"nav-toolbar\">\n @if (form.page !== undefined) {\n <button mat-icon-button color=\"primary\" (click)=\"form.back()\" [bizdocTooltip]=\"'Back'|translate\" tabindex=\"1\">\n <mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon>\n </button>\n }\n @if (model.draft) {\n <button mat-stroked-button color=\"primary\" data-help=\"submit\"\n (click)=\"submit()\" [disabled]=\"!valid||working\">\n <span>{{'Submit' | translate}}</span>\n </button>\n }\n @if (form.actions.length === 1) {\n <button mat-stroked-button color=\"primary\" [attr.data-help]=\"'action-'+form.actions[0].name\" (click)=\"send(model.actions[0])\" [disabled]=\"!valid||working\">\n <span>{{form.actions[0].title}}</span>\n </button>\n }\n @if (form.actions.length > 1) {\n <button mat-stroked-button data-help=\"send\" color=\"primary\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"!valid||working\">\n <span>{{'Send' | translate}}</span>\n </button>\n }\n <!-- action -->\n <mat-menu #actionMenu>\n <ng-template matMenuContent>\n @for (a of form.actions; track a; let i = $index) {\n @if (i > 0 && form.actions[i - 1].group !== a.group) {\n <mat-divider></mat-divider>\n }\n <button mat-menu-item (click)=\"send(a.name)\">{{a.title}}</button>\n }\n </ng-template>\n </mat-menu>\n @if (mode === 'compose') {\n <button mat-icon-button (click)=\"save()\" data-help=\"save\" [disabled]=\"!dirty||working\" [bizdocTooltip]=\"'Save'|translate\">\n <mat-icon>save</mat-icon>\n </button>\n }\n <button mat-icon-button data-help=\"tag\" (click)=\"form.tag($event)\" [bizdocTooltip]=\"'Tags' | translate\" [disabled]=\"working\"><mat-icon class=\"filled\">{{model.tags && model.tags.length ?'bookmark':'bookmark_border'}}</mat-icon></button>\n <button mat-icon-button data-help=\"flag\" [bizdocTooltip]=\"'Flagged'| translate\" [disabled]=\"working\" (click)=\"form.flag()\"><mat-icon [class.document-flag]=\"model.flag\">{{model.flag ? 'star' : 'star_border'}}</mat-icon></button>\n <button mat-icon-button (click)=\"form.attach()\" data-help=\"attach\" [bizdocTooltip]=\"'AttachFile' | translate\" [disabled]=\"working\"><mat-icon>attach_file</mat-icon></button>\n @if (mode !== 'compose' && model.pending && !model.completed) {\n <button mat-icon-button [disabled]=\"working\" data-help=\"edit\" (click)=\"edit()\" [bizdocTooltip]=\"'Edit' | translate\"><mat-icon>create</mat-icon></button>\n }\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"navTrace()\" [bizdocTooltip]=\"'Trace' | translate\" tabindex=\"1\"><mat-icon>timeline</mat-icon></button>\n <button mat-icon-button (click)=\"navComments()\" data-help=\"comments\" [bizdocTooltip]=\"'Comments' | translate\" [matBadge]=\"newCommentsCount\" [matBadgeHidden]=\"!newCommentsCount\" matBadgeColor=\"accent\">\n <mat-icon [class.filled]=\"model.comments.length > 0\">format_quote</mat-icon>\n </button>\n @if (enableAnalysis) {\n <button mat-icon-button (click)=\"view()\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\n }\n @if (expendable) {\n <button mat-icon-button (click)=\"expand()\" [bizdocTooltip]=\"'Expand' | translate\" [attr.aria-label]=\"'Expand' | translate\"><mat-icon>open_in_new</mat-icon></button>\n }\n <button mat-icon-button [matMenuTriggerFor]=\"optionsMenu\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\"><mat-icon>more_vert</mat-icon></button>\n <mat-menu #optionsMenu=\"matMenu\">\n <ng-template matMenuContent>\n <button mat-menu-item (click)=\"form.copy()\" [disabled]=\"working\">\n <!--<mat-icon>content_copy</mat-icon>-->\n <span>{{'Copy' | translate}}</span>\n </button>\n @if (model.draft && !model.issued) {\n <button mat-menu-item (click)=\"discard()\" [disabled]=\"working\">\n <!--<mat-icon>delete_outlined</mat-icon>-->\n <span>{{'Discard' | translate}}</span>\n </button>\n }\n @if (form.help) {\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"form.guide(form.help)\">\n <!--<mat-icon>help_outline</mat-icon>-->\n <span>{{'Help' | translate}}</span>\n </button>\n }\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"close()\"><!--<mat-icon></mat-icon>--><span>{{'Close'| translate}}</span></button>\n </ng-template>\n </mat-menu>\n</mat-toolbar>\n<div class=\"file-dropable flex\" #dropable>\n <bizdoc-form [model]=model #form\n (modelChange)=\"change()\"\n (saved)=\"saved()\"\n (validChange)=\"valid=$event\"\n (workingChange)=\"working=$event\"\n (dirtyChange)=\"dirty=$event\" [mode]=\"mode\"></bizdoc-form>\n</div>\n"
|
9700
|
-
}], ctorParameters: () => [{ type: SessionService }, { type: MailboxService }, { type: PaneRef }, { type: PanesRouter },
|
9701
|
-
type: Inject,
|
9702
|
-
args: [BIZDOC_CONFIG]
|
9703
|
-
}] }], propDecorators: { form: [{
|
9708
|
+
}, template: "<mat-toolbar class=\"nav-toolbar\" [class.sticky]=\"showToolbar\">\n @if (form.page !== undefined) {\n <button mat-icon-button color=\"primary\" (click)=\"form.back()\" [bizdocTooltip]=\"'Back'|translate\" tabindex=\"1\">\n <mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon>\n </button>\n }\n @if (model.draft) {\n <button mat-stroked-button color=\"primary\" data-help=\"submit\"\n (click)=\"submit()\" [disabled]=\"!valid||working\">\n <span>{{'Submit' | translate}}</span>\n </button>\n }\n @if (form.actions.length === 1) {\n <button mat-stroked-button color=\"primary\" [attr.data-help]=\"'action-'+form.actions[0].name\" (click)=\"send(model.actions[0])\" [disabled]=\"!valid||working\">\n <span>{{form.actions[0].title}}</span>\n </button>\n }\n @if (form.actions.length > 1) {\n <button mat-stroked-button data-help=\"send\" color=\"primary\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"!valid||working\">\n <span>{{'Send' | translate}}</span>\n </button>\n }\n <!-- action -->\n <mat-menu #actionMenu>\n <ng-template matMenuContent>\n @for (a of form.actions; track a; let i = $index) {\n @if (i > 0 && form.actions[i - 1].group !== a.group) {\n <mat-divider></mat-divider>\n }\n <button mat-menu-item (click)=\"send(a.name)\">{{a.title}}</button>\n }\n </ng-template>\n </mat-menu>\n @if (mode === 'compose') {\n <button mat-icon-button (click)=\"save()\" data-help=\"save\" [disabled]=\"!dirty||working\" [bizdocTooltip]=\"'Save'|translate\">\n <mat-icon>save</mat-icon>\n </button>\n }\n <button mat-icon-button data-help=\"tag\" (click)=\"form.tag($event)\" [bizdocTooltip]=\"'Tags' | translate\" [disabled]=\"working\"><mat-icon class=\"filled\">{{model.tags && model.tags.length ?'bookmark':'bookmark_border'}}</mat-icon></button>\n <button mat-icon-button data-help=\"flag\" [bizdocTooltip]=\"'Flagged'| translate\" [disabled]=\"working\" (click)=\"form.flag()\"><mat-icon [class.document-flag]=\"model.flag\">{{model.flag ? 'star' : 'star_border'}}</mat-icon></button>\n <button mat-icon-button (click)=\"form.attach()\" data-help=\"attach\" [bizdocTooltip]=\"'AttachFile' | translate\" [disabled]=\"working\"><mat-icon>attach_file</mat-icon></button>\n @if (mode !== 'compose' && model.pending && !model.completed) {\n <button mat-icon-button [disabled]=\"working\" data-help=\"edit\" (click)=\"edit()\" [bizdocTooltip]=\"'Edit' | translate\"><mat-icon>create</mat-icon></button>\n }\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"navTrace()\" [bizdocTooltip]=\"'Trace' | translate\" tabindex=\"1\"><mat-icon>timeline</mat-icon></button>\n <button mat-icon-button (click)=\"navComments()\" data-help=\"comments\" [bizdocTooltip]=\"'Comments' | translate\" [matBadge]=\"newCommentsCount\" [matBadgeHidden]=\"!newCommentsCount\" matBadgeColor=\"accent\">\n <mat-icon [class.filled]=\"model.comments.length > 0\">format_quote</mat-icon>\n </button>\n @if (enableAnalysis) {\n <button mat-icon-button (click)=\"view()\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\n }\n @if (expendable) {\n <button mat-icon-button (click)=\"expand()\" [bizdocTooltip]=\"'Expand' | translate\" [attr.aria-label]=\"'Expand' | translate\"><mat-icon>open_in_new</mat-icon></button>\n }\n <button mat-icon-button [matMenuTriggerFor]=\"optionsMenu\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\"><mat-icon>more_vert</mat-icon></button>\n <mat-menu #optionsMenu=\"matMenu\">\n <ng-template matMenuContent>\n <button mat-menu-item (click)=\"form.copy()\" [disabled]=\"working\">\n <!--<mat-icon>content_copy</mat-icon>-->\n <span>{{'Copy' | translate}}</span>\n </button>\n @if (model.draft && !model.issued) {\n <button mat-menu-item (click)=\"discard()\" [disabled]=\"working\">\n <!--<mat-icon>delete_outlined</mat-icon>-->\n <span>{{'Discard' | translate}}</span>\n </button>\n }\n @if (form.help) {\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"form.guide(form.help)\">\n <!--<mat-icon>help_outline</mat-icon>-->\n <span>{{'Help' | translate}}</span>\n </button>\n }\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"close()\"><!--<mat-icon></mat-icon>--><span>{{'Close'| translate}}</span></button>\n </ng-template>\n </mat-menu>\n</mat-toolbar>\n<div class=\"file-dropable flex\" #dropable>\n <bizdoc-form [model]=model #form\n (modelChange)=\"change()\"\n (saved)=\"saved()\"\n (validChange)=\"valid=$event\"\n (workingChange)=\"working=$event\"\n (dirtyChange)=\"dirty=$event\" [mode]=\"mode\"></bizdoc-form>\n</div>\n" }]
|
9709
|
+
}], ctorParameters: () => [{ type: SessionService }, { type: MailboxService }, { type: PaneRef }, { type: PanesRouter }], propDecorators: { form: [{
|
9704
9710
|
type: ViewChild,
|
9705
9711
|
args: [ComposeFormComponent, { static: true }]
|
9706
9712
|
}], dropableElement: [{
|
9707
9713
|
type: ViewChild,
|
9708
9714
|
args: ['dropable', { static: true, read: ElementRef }]
|
9715
|
+
}], onScroll: [{
|
9716
|
+
type: HostListener,
|
9717
|
+
args: ['scroll', ['$event']]
|
9709
9718
|
}], handleDocumentDrop: [{
|
9710
9719
|
type: HostListener,
|
9711
9720
|
args: ['document:drop', ['$event']]
|
@@ -18052,7 +18061,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
|
|
18052
18061
|
|
18053
18062
|
class DocumentViewPaneComponent {
|
18054
18063
|
constructor(session, translate, pane) {
|
18055
|
-
pane.title = translate.get('
|
18064
|
+
pane.title = translate.get('Views');
|
18056
18065
|
pane.dataChange().subscribe(d => {
|
18057
18066
|
this.model = d['item'];
|
18058
18067
|
const form = session.profile.forms.find(f => f.name === this.model.formId);
|
@@ -21920,7 +21929,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
|
|
21920
21929
|
RangeNavigator.Inject(AreaSeries, LineSeries, DateTime, RangeTooltip);
|
21921
21930
|
Sparkline.Inject(SparklineTooltip);
|
21922
21931
|
AccumulationChart$1.Inject(PieSeries, PyramidSeries, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationAnnotation, AccumulationLegend, AccumulationSelection);
|
21923
|
-
Chart$1.Inject(Category, DateTime, Tooltip$1, Legend, Selection
|
21932
|
+
Chart$1.Inject(Category, DateTime, Tooltip$1, Legend, Selection, Zoom, Crosshair, DataLabel, BarSeries, AreaSeries, BubbleSeries, ColumnSeries, LineSeries, PolarSeries, RadarSeries, SplineSeries, SplineAreaSeries, ScatterSeries, StackingStepAreaSeries, StackingLineSeries, StackingAreaSeries, StackingColumnSeries, StackingBarSeries, StepAreaSeries, StepLineSeries);
|
21924
21933
|
|
21925
21934
|
class SyncfusionDiagramModule {
|
21926
21935
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SyncfusionDiagramModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
@@ -21970,7 +21979,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
|
|
21970
21979
|
]
|
21971
21980
|
}]
|
21972
21981
|
}] });
|
21973
|
-
Grid$1.Inject(ExcelExport, Sort, Group, Page, Freeze, Selection$
|
21982
|
+
Grid$1.Inject(ExcelExport, Sort, Group, Page, Freeze, Selection$1, Aggregate);
|
21974
21983
|
|
21975
21984
|
CircularGauge.Inject(Annotations, GaugeTooltip, Legend$1);
|
21976
21985
|
class SyncfusionCircularGaugeModule {
|
@@ -22049,8 +22058,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
|
|
22049
22058
|
}]
|
22050
22059
|
}] });
|
22051
22060
|
|
22052
|
-
Gantt.Inject(
|
22053
|
-
//Filter, Reorder, Resize, VirtualScroll, ContextMenu, ExcelExport, PdfExport,
|
22061
|
+
Gantt.Inject(Toolbar$1, DayMarkers, Sort$1, RowDD, CriticalPath);
|
22062
|
+
//Selection, Filter, Reorder, Resize, VirtualScroll, ContextMenu, ExcelExport, PdfExport,
|
22054
22063
|
class SyncfusionGanttModule {
|
22055
22064
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SyncfusionGanttModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
22056
22065
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: SyncfusionGanttModule, imports: [GanttModule], exports: [GanttModule] }); }
|
@@ -24228,7 +24237,9 @@ let RecentsWidget = class RecentsWidget {
|
|
24228
24237
|
this._navigate(item, [], { policy: OpenPolicy.Clear });
|
24229
24238
|
}
|
24230
24239
|
view(item, evt) {
|
24231
|
-
this._navigate(item, ['views'], {
|
24240
|
+
this._navigate(item, ['views'], {
|
24241
|
+
policy: OpenPolicy.Tab | OpenPolicy.Expandable
|
24242
|
+
});
|
24232
24243
|
evt.stopPropagation();
|
24233
24244
|
}
|
24234
24245
|
ngOnDestroy() {
|
@@ -27594,7 +27605,7 @@ class CubeBase {
|
|
27594
27605
|
this.model = model;
|
27595
27606
|
if (model.cubes.length) {
|
27596
27607
|
this._consolidate();
|
27597
|
-
const ids = Object.keys(this.
|
27608
|
+
const ids = Object.keys(this._consolidatedAxes);
|
27598
27609
|
const cube = this._session.profile.cubes.find(c => c.name === ids[0]);
|
27599
27610
|
this.hasdata = true;
|
27600
27611
|
this.switchTo(cube);
|
@@ -27604,7 +27615,7 @@ class CubeBase {
|
|
27604
27615
|
}
|
27605
27616
|
switchAxes(axes) {
|
27606
27617
|
this._consolidate(axes);
|
27607
|
-
this.originalAxes = this.
|
27618
|
+
this.originalAxes = this._consolidatedAxes[this.cube.name];
|
27608
27619
|
this.axes = this.aggregate(this.originalAxes);
|
27609
27620
|
}
|
27610
27621
|
_drop(axes) {
|
@@ -27618,11 +27629,11 @@ class CubeBase {
|
|
27618
27629
|
* @param cube
|
27619
27630
|
*/
|
27620
27631
|
switchTo(cube) {
|
27621
|
-
const ids = Object.keys(this.
|
27632
|
+
const ids = Object.keys(this._consolidatedAxes);
|
27622
27633
|
if (ids.length > 1)
|
27623
27634
|
this.alternate = this._session.profile.cubes.filter(c => ids.indexOf(c.name) > -1 && c != cube);
|
27624
27635
|
this.cube = cube;
|
27625
|
-
this.originalAxes = this.
|
27636
|
+
this.originalAxes = this._consolidatedAxes[cube.name];
|
27626
27637
|
this.axes = this.aggregate(this.originalAxes);
|
27627
27638
|
this.onViewBind();
|
27628
27639
|
}
|
@@ -27649,7 +27660,7 @@ class CubeBase {
|
|
27649
27660
|
i++;
|
27650
27661
|
}
|
27651
27662
|
});
|
27652
|
-
this.
|
27663
|
+
this._consolidatedAxes = consolidate;
|
27653
27664
|
}
|
27654
27665
|
async getAggregateLabel() {
|
27655
27666
|
if (!this._viewRef.options.aggregate)
|
@@ -27662,6 +27673,11 @@ class CubeBase {
|
|
27662
27673
|
const axes = { ...originalAxes };
|
27663
27674
|
if (this._viewRef.options.aggregate)
|
27664
27675
|
this._viewRef.options.aggregate.forEach(a => delete axes[a]);
|
27676
|
+
else
|
27677
|
+
this.cube.axes.forEach(a => {
|
27678
|
+
if (!a.combination)
|
27679
|
+
delete axes[a.name];
|
27680
|
+
});
|
27665
27681
|
return axes;
|
27666
27682
|
}
|
27667
27683
|
get group() { return `#${this.model.number}`; }
|
@@ -27687,6 +27703,8 @@ let CubeDocumentMatrixComponent = class CubeDocumentMatrixComponent extends Cube
|
|
27687
27703
|
this.indices = indices;
|
27688
27704
|
this.sum = sum;
|
27689
27705
|
this.scope = scope;
|
27706
|
+
delete this.axes[this.xAxis];
|
27707
|
+
delete this.axes[this.series];
|
27690
27708
|
this._service.patterns(this.cube.name).subscribe(p => this.patterns = p);
|
27691
27709
|
/** one or more axis */
|
27692
27710
|
this.filters = this.cube.axes.filter(a => isArray(filters) ?
|
@@ -27918,6 +27936,7 @@ let TimelineViewComponent = class TimelineViewComponent {
|
|
27918
27936
|
// durationUnit: 'Hour',
|
27919
27937
|
taskbarHeight: 30,
|
27920
27938
|
rowHeight: 40,
|
27939
|
+
height: '420px',
|
27921
27940
|
width: '100%', //this.width
|
27922
27941
|
// dayWorkingTime: this.dayWorkingTime
|
27923
27942
|
}, this._element.nativeElement);
|
@@ -27927,7 +27946,7 @@ let TimelineViewComponent = class TimelineViewComponent {
|
|
27927
27946
|
evt.taskbarBgColor = this._session.getAccent();
|
27928
27947
|
}
|
27929
27948
|
_prepare() {
|
27930
|
-
const
|
27949
|
+
const observables = [], tasks = [];
|
27931
27950
|
let i = 0;
|
27932
27951
|
//const observable = this._mailbox.timeline(model.documentId).pipe(tap(t => {
|
27933
27952
|
//}))
|
@@ -27956,7 +27975,7 @@ let TimelineViewComponent = class TimelineViewComponent {
|
|
27956
27975
|
}
|
27957
27976
|
else
|
27958
27977
|
task.ending = this.model.completed ? new Date(l.time) : new Date();
|
27959
|
-
|
27978
|
+
tasks.push(task);
|
27960
27979
|
break;
|
27961
27980
|
}
|
27962
27981
|
case 'ModelChange':
|
@@ -27974,14 +27993,14 @@ let TimelineViewComponent = class TimelineViewComponent {
|
|
27974
27993
|
}
|
27975
27994
|
else
|
27976
27995
|
task.ending = new Date();
|
27977
|
-
const state =
|
27996
|
+
const state = tasks.find(t => t.type === 'StateChange' && t.time <= task.time && (!t.ending || t.ending >= task.ending));
|
27978
27997
|
if (state) {
|
27979
27998
|
if (!state.subtasks)
|
27980
27999
|
state.subtasks = [];
|
27981
28000
|
state.subtasks.push(task);
|
27982
28001
|
}
|
27983
28002
|
else
|
27984
|
-
|
28003
|
+
tasks.push(task);
|
27985
28004
|
break;
|
27986
28005
|
}
|
27987
28006
|
case 'ActionTaken':
|
@@ -28001,19 +28020,19 @@ let TimelineViewComponent = class TimelineViewComponent {
|
|
28001
28020
|
};
|
28002
28021
|
if (l.nodeId) {
|
28003
28022
|
this.model.workflow.connectors.filter(c => c.targetId === l.nodeId).forEach(c => {
|
28004
|
-
const dependencies =
|
28023
|
+
const dependencies = tasks.filter(l => l.nodeId === c.sourceId).map(l => `FS${l.id}`);
|
28005
28024
|
if (dependencies.length)
|
28006
28025
|
task.dependencies = dependencies.join(',');
|
28007
28026
|
});
|
28008
28027
|
}
|
28009
|
-
const state =
|
28028
|
+
const state = tasks.find(t => t.type === 'StateChange' && t.time <= task.time && (!t.ending || t.ending >= task.ending));
|
28010
28029
|
if (state) {
|
28011
28030
|
if (!state.subtasks)
|
28012
28031
|
state.subtasks = [];
|
28013
28032
|
state.subtasks.push(task);
|
28014
28033
|
}
|
28015
28034
|
else
|
28016
|
-
|
28035
|
+
tasks.push(task);
|
28017
28036
|
break;
|
28018
28037
|
}
|
28019
28038
|
default:
|
@@ -28021,31 +28040,25 @@ let TimelineViewComponent = class TimelineViewComponent {
|
|
28021
28040
|
}
|
28022
28041
|
if (l.byId) {
|
28023
28042
|
const who = this._users.get(l.userId), by = this._users.get(l.byId);
|
28024
|
-
const
|
28043
|
+
const observe = forkJoin([who, by]).pipe(tap(ns => {
|
28025
28044
|
const [who, by] = ns;
|
28026
28045
|
task.name = this._translate.get('By', who.name, by.name);
|
28027
28046
|
// if (l.role) {
|
28028
28047
|
// const role = this.session.profile.roles.find(o => o.name === l.role);
|
28029
28048
|
// if (role) task.name += `, ${role.name}`;
|
28030
28049
|
// }
|
28031
|
-
}), catchError$1(() => {
|
28032
|
-
this._ps.error();
|
28033
|
-
throw new Error();
|
28034
28050
|
}));
|
28035
|
-
|
28051
|
+
observables.push(observe);
|
28036
28052
|
}
|
28037
28053
|
else if (l.userId) {
|
28038
|
-
const
|
28054
|
+
const observe = this._users.get(l.userId).pipe(tap(u => {
|
28039
28055
|
task.name = u.name;
|
28040
28056
|
// if (l.role) {
|
28041
28057
|
// const role = this.session.profile.roles.find(o => o.name === l.role);
|
28042
28058
|
// if (role) task.name += `, ${role.name}`;
|
28043
28059
|
// }
|
28044
|
-
}), catchError$1(() => {
|
28045
|
-
this._ps.error();
|
28046
|
-
throw new Error();
|
28047
28060
|
}));
|
28048
|
-
|
28061
|
+
observables.push(observe);
|
28049
28062
|
}
|
28050
28063
|
});
|
28051
28064
|
this.model.events.forEach(e => {
|
@@ -28066,7 +28079,7 @@ let TimelineViewComponent = class TimelineViewComponent {
|
|
28066
28079
|
if (r.substituteId) {
|
28067
28080
|
const by = this._users.get(r.substituteId);
|
28068
28081
|
const who = this._users.get(r.userId);
|
28069
|
-
const
|
28082
|
+
const observe = forkJoin([who, by]).pipe(tap(u => {
|
28070
28083
|
task.name = this._translate.get('WhoSubstituting', u[0].name, u[1].name);
|
28071
28084
|
if (u[0].role)
|
28072
28085
|
task.name += `, ${u[0].role}`;
|
@@ -28075,14 +28088,11 @@ let TimelineViewComponent = class TimelineViewComponent {
|
|
28075
28088
|
if (role)
|
28076
28089
|
task.name += `, ${role.name}`;
|
28077
28090
|
}
|
28078
|
-
}), catchError$1(() => {
|
28079
|
-
this._ps.error();
|
28080
|
-
throw new Error();
|
28081
28091
|
}));
|
28082
|
-
|
28092
|
+
observables.push(observe);
|
28083
28093
|
}
|
28084
28094
|
else {
|
28085
|
-
const
|
28095
|
+
const observe = this._users.get(r.userId).pipe(tap(u => {
|
28086
28096
|
task.name = u.name;
|
28087
28097
|
if (u.role)
|
28088
28098
|
task.name += `, ${u.role}`;
|
@@ -28091,40 +28101,45 @@ let TimelineViewComponent = class TimelineViewComponent {
|
|
28091
28101
|
if (role)
|
28092
28102
|
task.name += `, ${role.name}`;
|
28093
28103
|
}
|
28094
|
-
}), catchError$1(() => {
|
28095
|
-
this._ps.error();
|
28096
|
-
throw new Error();
|
28097
28104
|
}));
|
28098
|
-
|
28105
|
+
observables.push(observe);
|
28099
28106
|
}
|
28100
28107
|
if (r.nodeId) {
|
28101
28108
|
this.model.workflow.connectors.filter(c => c.targetId === r.nodeId).forEach(c => {
|
28102
|
-
const predecessors =
|
28109
|
+
const predecessors = tasks.filter(l => l.nodeId === c.sourceId).map(l => l.id);
|
28103
28110
|
if (predecessors.length)
|
28104
28111
|
task.dependencies = predecessors.join(',');
|
28105
28112
|
});
|
28106
28113
|
}
|
28107
|
-
const state =
|
28114
|
+
const state = tasks.find(t => t.type === 'StateChange' && t.time <= task.time && (!t.ending || t.ending >= task.time));
|
28108
28115
|
if (state) {
|
28109
28116
|
if (!state.subtasks)
|
28110
28117
|
state.subtasks = [];
|
28111
28118
|
state.subtasks.push(task);
|
28112
28119
|
}
|
28113
28120
|
else
|
28114
|
-
|
28121
|
+
tasks.push(task);
|
28115
28122
|
});
|
28116
|
-
return forkJoin(
|
28117
|
-
pipe(tap(() => this.tasks =
|
28123
|
+
return forkJoin(observables).
|
28124
|
+
pipe(tap(() => this.tasks = tasks.sort((t0, t1) => t0.time > t1.time ? 1 : -1)));
|
28118
28125
|
}
|
28119
|
-
|
28120
|
-
|
28121
|
-
|
28126
|
+
/**
|
28127
|
+
*
|
28128
|
+
* @param row
|
28129
|
+
*/
|
28130
|
+
rowSelecting(row) {
|
28131
|
+
if (row.data.taskData.type === 'ModelChange')
|
28132
|
+
this._compare(row.data);
|
28122
28133
|
}
|
28134
|
+
/**
|
28135
|
+
*
|
28136
|
+
* @param task
|
28137
|
+
*/
|
28123
28138
|
_compare(task) {
|
28124
28139
|
this._router.navigate(['mailbox/d', this.model.documentId.encodeId(), 'version', task.time.valueOf().encodeId()], { state: { item: this.model } });
|
28125
28140
|
}
|
28126
28141
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: TimelineViewComponent, deps: [{ token: PromptService }, { token: DocumentViewRef }, { token: BIZDOC_CONFIG }, { token: AccountService }, { token: SessionService }, { token: TranslateService }, { token: RouterImpl }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
28127
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: TimelineViewComponent, selector: "bizdoc-timeline", host: { properties: { "dir": "this.dir" }, classAttribute: "view" }, providers: [SelectionService$3, DayMarkersService], ngImport: i0, template: '', isInline: true, styles: [":host{padding:8px}:host ::ng-deep .e-split-bar{display:none!important}\n"] }); }
|
28142
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: TimelineViewComponent, selector: "bizdoc-timeline", host: { attributes: { "id": "doc-timeline" }, properties: { "dir": "this.dir" }, classAttribute: "view" }, providers: [SelectionService$3, DayMarkersService], ngImport: i0, template: '', isInline: true, styles: [":host{padding:8px}:host ::ng-deep .e-split-bar{display:none!important}\n"] }); }
|
28128
28143
|
};
|
28129
28144
|
TimelineViewComponent = __decorate([
|
28130
28145
|
BizDoc({ selector: 'bizdoc-timeline-view' })
|
@@ -28132,7 +28147,10 @@ TimelineViewComponent = __decorate([
|
|
28132
28147
|
], TimelineViewComponent);
|
28133
28148
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: TimelineViewComponent, decorators: [{
|
28134
28149
|
type: Component,
|
28135
|
-
args: [{ selector: 'bizdoc-timeline', template: '', host: {
|
28150
|
+
args: [{ selector: 'bizdoc-timeline', template: '', host: {
|
28151
|
+
class: 'view',
|
28152
|
+
id: 'doc-timeline'
|
28153
|
+
}, providers: [SelectionService$3, DayMarkersService], styles: [":host{padding:8px}:host ::ng-deep .e-split-bar{display:none!important}\n"] }]
|
28136
28154
|
}], ctorParameters: () => [{ type: PromptService }, { type: DocumentViewRef }, { type: undefined, decorators: [{
|
28137
28155
|
type: Inject,
|
28138
28156
|
args: [BIZDOC_CONFIG]
|
@@ -28199,10 +28217,12 @@ class CubeSumComponent {
|
|
28199
28217
|
throw 'xAxis';
|
28200
28218
|
if (this.parentAxis)
|
28201
28219
|
this._parentAxis = this._cube.axes.find(a => a.name === this.parentAxis);
|
28202
|
-
if (
|
28203
|
-
|
28204
|
-
|
28205
|
-
|
28220
|
+
if (this._cube.indices) {
|
28221
|
+
if (!this.indices)
|
28222
|
+
this.indices = this._cube.indices.map(i => i.name);
|
28223
|
+
else if (!isArray(this.indices))
|
28224
|
+
this.indices = [this.indices];
|
28225
|
+
}
|
28206
28226
|
const originalValue = this.filters[this.xAxis];
|
28207
28227
|
const axis = isArray(originalValue) ? originalValue[0] : originalValue;
|
28208
28228
|
if (this.periodPolicy === 'Strict')
|
@@ -28381,7 +28401,7 @@ class CubeSumComponent {
|
|
28381
28401
|
}
|
28382
28402
|
_calculate(level) {
|
28383
28403
|
const indices = level.indices
|
28384
|
-
.filter(i => this._cube.indices
|
28404
|
+
.filter(i => this._cube.indices?.find(m => m.name === i.name && m.accumulate !== false))
|
28385
28405
|
.sum(i => i.value);
|
28386
28406
|
const percent = indices !== 0 ?
|
28387
28407
|
Math.round(level.value / indices * 100) : 0;
|
@@ -35419,7 +35439,7 @@ class SystemModule {
|
|
35419
35439
|
policies: 'Policies',
|
35420
35440
|
Folders: 'Folders',
|
35421
35441
|
TestType: 'Test',
|
35422
|
-
Views: '
|
35442
|
+
Views: 'Views',
|
35423
35443
|
CubeView: 'View',
|
35424
35444
|
CubeViews: 'Views',
|
35425
35445
|
Label: 'Label',
|