@bizdoc/core 3.9.0 → 3.9.3
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/system/icons.json +1 -1
- package/assets/themes/default.min.css +1 -1
- package/fesm2022/bizdoc-core.mjs +240 -207
- package/fesm2022/bizdoc-core.mjs.map +1 -1
- package/index.d.ts +12 -5
- package/package.json +1 -1
package/fesm2022/bizdoc-core.mjs
CHANGED
@@ -499,6 +499,10 @@ const MATERIAL_PALETTES = {
|
|
499
499
|
};
|
500
500
|
|
501
501
|
const IMAGE_TYPE = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif'];
|
502
|
+
const START_CAP = /^[A-Z][^A-Z]/;
|
503
|
+
function decapitalize(str) {
|
504
|
+
return str.replace(START_CAP, e => e.toLowerCase());
|
505
|
+
}
|
502
506
|
function anyKeys(obj) {
|
503
507
|
return obj && Object.keys(obj).find(k => obj[k] != null && obj[k] !== undefined) !== undefined;
|
504
508
|
}
|
@@ -9031,100 +9035,104 @@ class ExpandedItemComponent {
|
|
9031
9035
|
this.actions = actions && actions.length ? this._session.profile.actions.filter(a => actions.indexOf(a.name) > -1) : undefined;
|
9032
9036
|
this._sender();
|
9033
9037
|
this._comments();
|
9034
|
-
this._note();
|
9038
|
+
this.note = await this._note();
|
9035
9039
|
this._awaiting();
|
9036
9040
|
}
|
9037
9041
|
/** */
|
9038
9042
|
async _note() {
|
9039
|
-
const { ownerId, ownerBy, issued, substituteId, received, replied, log, id, note, repliedBy, actionId, escalated, originId, draft } = this.model;
|
9040
|
-
let target;
|
9041
|
-
if (actionId)
|
9042
|
-
target = await this._target(id);
|
9043
|
+
const { ownerId, ownerBy, issued, substituteId, received, replied, log, id, note, repliedBy, actionId, escalated, originId, draft } = this.model, { profile } = this._session;
|
9043
9044
|
if (substituteId) {
|
9044
9045
|
const substituting = await firstValueFrom(this._accounts.get(substituteId));
|
9045
9046
|
if (replied) {
|
9046
|
-
const time = this._fromNow(replied),
|
9047
|
+
const time = this._fromNow(replied), action = this._actionName(actionId, 'adjective');
|
9048
|
+
const target = await this._target(id);
|
9047
9049
|
if (target)
|
9048
|
-
|
9050
|
+
return this._translate.personalize('YouSubstituteActionTakenTo', substituting.gender, action, target, this._formatUserElement(substituting), time);
|
9049
9051
|
else
|
9050
|
-
|
9052
|
+
return this._translate.personalize('YouSubstituteActionTaken', substituting.gender, action, this._formatUserElement(substituting), time);
|
9051
9053
|
}
|
9052
9054
|
else if (escalated) {
|
9053
9055
|
const escalation = log.find(l => l.type === 'Escalation' && l.recipientId === originId);
|
9054
|
-
|
9056
|
+
return this._translate.personalize('EscalatedFrom', substituting.gender, this._formatUserElement(substituting), this._duration(escalation.duration));
|
9055
9057
|
}
|
9056
9058
|
else {
|
9057
9059
|
const time = this._fromNow(received);
|
9058
|
-
|
9060
|
+
return this._translate.personalize('SubstitutingNote', substituting.gender, this._formatUserElement(substituting), time, note || '');
|
9059
9061
|
}
|
9060
9062
|
}
|
9061
|
-
else if (
|
9063
|
+
else if (actionId) {
|
9064
|
+
const target = await this._target(id);
|
9062
9065
|
const time = this._fromNow(replied);
|
9063
9066
|
if (repliedBy) {
|
9064
9067
|
if (repliedBy === this._session.userId) {
|
9068
|
+
const action = this._actionName(actionId, 'you');
|
9065
9069
|
if (target)
|
9066
|
-
|
9070
|
+
return this._translate.get('ActionTakenByYouTo', action, target, profile.name, time);
|
9067
9071
|
else
|
9068
|
-
|
9072
|
+
return this._translate.get('ActionTakenByYou', action, profile.name, time);
|
9073
|
+
}
|
9074
|
+
else {
|
9075
|
+
const by = await firstValueFrom(this._accounts.get(repliedBy));
|
9076
|
+
const action = this._actionName(actionId, by.gender);
|
9077
|
+
if (target)
|
9078
|
+
return this._translate.get('YouTakenActionByTo', this._formatUserElement(by), action, target, time);
|
9079
|
+
else
|
9080
|
+
return this._translate.get('YouTakenActionBy', this._formatUserElement(by), action, time);
|
9069
9081
|
}
|
9070
|
-
else
|
9071
|
-
this._accounts.get(repliedBy).subscribe(u => {
|
9072
|
-
if (target)
|
9073
|
-
this.note = this._translate.get('YouTakenActionByTo', this._formatUserElement(u), this._actionName(actionId, u.gender), target, time);
|
9074
|
-
else
|
9075
|
-
this.note = this._translate.get('YouTakenActionBy', this._formatUserElement(u), this._actionName(actionId, u.gender), time);
|
9076
|
-
});
|
9077
9082
|
}
|
9078
|
-
else if (this._session.
|
9083
|
+
else if (this._session.isImpersonating) {
|
9084
|
+
const action = this._actionName(actionId, profile.gender);
|
9079
9085
|
if (target)
|
9080
|
-
|
9086
|
+
return this._translate.personalize('ActionTakenTo', profile.gender, profile.name, action, target, time);
|
9081
9087
|
else
|
9082
|
-
|
9088
|
+
return this._translate.personalize('ActionTaken', profile.gender, profile.name, action, time);
|
9083
9089
|
}
|
9084
9090
|
else {
|
9091
|
+
const action = this._actionName(actionId, 'you');
|
9085
9092
|
if (target)
|
9086
|
-
|
9093
|
+
return this._translate.get('YouTakenActionTo', action, target, time);
|
9087
9094
|
else
|
9088
|
-
|
9095
|
+
return this._translate.get('YouTakenAction', action, time);
|
9089
9096
|
}
|
9090
9097
|
}
|
9091
9098
|
else if (note)
|
9092
|
-
|
9099
|
+
return note;
|
9093
9100
|
else if (originId) {
|
9094
9101
|
const origin = this.model.recipients.find(r => r.id === originId);
|
9095
|
-
const action = this.
|
9102
|
+
const action = this._actionName(origin.actionId, 'adjective');
|
9096
9103
|
if ((origin.repliedBy || origin.userId) === this._session.userId)
|
9097
|
-
|
9104
|
+
return this._translate.get('ActionByYou', action);
|
9098
9105
|
else if (origin.repliedBy) {
|
9099
9106
|
const who = await firstValueFrom(this._accounts.get(origin.userId));
|
9100
9107
|
const by = await firstValueFrom(this._accounts.get(origin.repliedBy));
|
9101
|
-
|
9108
|
+
return this._translate.get('ActionByBy', action, by.name, who.name);
|
9102
9109
|
}
|
9103
9110
|
else {
|
9104
9111
|
const who = await firstValueFrom(this._accounts.get(origin.userId));
|
9105
|
-
|
9112
|
+
return this._translate.get('ActionBy', action, who.name);
|
9106
9113
|
}
|
9107
9114
|
}
|
9108
9115
|
else if (ownerId === this._session.userId && !draft) {
|
9109
9116
|
const time = this._fromNow(issued);
|
9110
9117
|
if (ownerBy) {
|
9111
9118
|
if (ownerBy === this._session.userId)
|
9112
|
-
|
9119
|
+
return this._translate.personalize('YouSubmittedNoteBy', profile.byGender, profile.name, time);
|
9113
9120
|
else {
|
9114
9121
|
const by = await firstValueFrom(this._accounts.get(ownerBy));
|
9115
9122
|
if (this._session.isImpersonating)
|
9116
|
-
|
9123
|
+
return this._translate.personalize('SubmittedNoteBy', by.gender, this._formatUserElement(by), profile.name, time);
|
9117
9124
|
else
|
9118
|
-
|
9125
|
+
return this._translate.personalize('SubmittedNoteYouBy', by.gender, this._formatUserElement(by), time);
|
9119
9126
|
}
|
9120
9127
|
}
|
9121
9128
|
else {
|
9122
9129
|
if (this._session.isImpersonating)
|
9123
|
-
|
9130
|
+
return this._translate.personalize('SubmittedNote', profile.gender, profile.name, time);
|
9124
9131
|
else
|
9125
|
-
|
9132
|
+
return this._translate.get('YouSubmittedNote', time);
|
9126
9133
|
}
|
9127
9134
|
}
|
9135
|
+
return null;
|
9128
9136
|
}
|
9129
9137
|
async _target(id) {
|
9130
9138
|
const origins = this.model.recipients.filter(r => r.originId === id);
|
@@ -9132,23 +9140,30 @@ class ExpandedItemComponent {
|
|
9132
9140
|
const users = await firstValueFrom(this._accounts.getAll(origins.map(r => r.userId)));
|
9133
9141
|
return this._translate.join(users.map(u => this._formatUserElement(u)));
|
9134
9142
|
}
|
9135
|
-
return
|
9143
|
+
return null;
|
9136
9144
|
}
|
9137
9145
|
_actionName(name, gender) {
|
9138
9146
|
const action = this._session.profile.actions.find(a => a.name === name);
|
9139
9147
|
if (!action)
|
9140
9148
|
return name;
|
9141
|
-
|
9142
|
-
|
9143
|
-
|
9144
|
-
|
9145
|
-
|
9146
|
-
action.
|
9147
|
-
|
9148
|
-
|
9149
|
-
|
9150
|
-
|
9151
|
-
|
9149
|
+
switch (gender) {
|
9150
|
+
case 'adjective':
|
9151
|
+
return decapitalize(action.adjective || action.past || action.title);
|
9152
|
+
case 'you':
|
9153
|
+
const gender = this._session.gender;
|
9154
|
+
return decapitalize((gender === 'Male' ? (action.youMale || action.you) :
|
9155
|
+
gender === 'Female' ? (action.youFemale || action.you) :
|
9156
|
+
action.you) || action.past ||
|
9157
|
+
action.title);
|
9158
|
+
case 'Male':
|
9159
|
+
return decapitalize(action.pastMale || action.past ||
|
9160
|
+
action.title);
|
9161
|
+
case 'Female':
|
9162
|
+
return decapitalize(action.pastFemale || action.past ||
|
9163
|
+
action.title);
|
9164
|
+
default:
|
9165
|
+
return decapitalize(action.past || action.title);
|
9166
|
+
}
|
9152
9167
|
}
|
9153
9168
|
_fromNow(date) {
|
9154
9169
|
return dayjs(date).fromNow();
|
@@ -9234,7 +9249,7 @@ class ExpandedItemComponent {
|
|
9234
9249
|
this._mailbox.send(id, version, formId, null, action, args).subscribe({
|
9235
9250
|
next: async (r) => {
|
9236
9251
|
const target = await this._target(id);
|
9237
|
-
const adjective = this.
|
9252
|
+
const adjective = this._actionName(action, 'adjective');
|
9238
9253
|
if (target)
|
9239
9254
|
this._sb.toast('SentTo', number, adjective, target);
|
9240
9255
|
else
|
@@ -9250,10 +9265,6 @@ class ExpandedItemComponent {
|
|
9250
9265
|
}
|
9251
9266
|
});
|
9252
9267
|
}
|
9253
|
-
_getActionAdjective(action) {
|
9254
|
-
const caction = this._session.profile.actions.find(a => a.name === action), adjective = caction.adjective || caction.title;
|
9255
|
-
return adjective.toLowerCase();
|
9256
|
-
}
|
9257
9268
|
/**
|
9258
9269
|
*
|
9259
9270
|
* @param response
|
@@ -9724,7 +9735,7 @@ class BrowseItemsComponent {
|
|
9724
9735
|
}
|
9725
9736
|
_getActionAdjective(name, plural) {
|
9726
9737
|
const action = this._session.profile.actions.find(a => a.name === name);
|
9727
|
-
return ((plural ? (action.adjectivePlural || action.adjective) : action.adjective) || action.title)
|
9738
|
+
return decapitalize((plural ? (action.adjectivePlural || action.adjective) : action.adjective) || action.title);
|
9728
9739
|
}
|
9729
9740
|
ngOnDestroy() {
|
9730
9741
|
this._destroy.next();
|
@@ -10040,7 +10051,7 @@ class ComposeFormComponent {
|
|
10040
10051
|
}
|
10041
10052
|
_getActionAdjective(name) {
|
10042
10053
|
const action = this._session.profile.actions.find(a => a.name === name);
|
10043
|
-
return (action.adjective || action.past || action.title)
|
10054
|
+
return decapitalize(action.adjective || action.past || action.title);
|
10044
10055
|
}
|
10045
10056
|
/**
|
10046
10057
|
*
|
@@ -10577,11 +10588,11 @@ class ComposePaneComponent {
|
|
10577
10588
|
this._destroy.complete();
|
10578
10589
|
}
|
10579
10590
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ComposePaneComponent, deps: [{ token: SessionService }, { token: MailboxService }, { token: PaneRef }, { token: PanesRouter }], target: i0.ɵɵFactoryTarget.Component }); }
|
10580
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: ComposePaneComponent, isStandalone: false, 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)" } }, 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\">\r\n @if (page !== undefined) {\r\n <button mat-icon-button (click)=\"form.back()\" [bizdocTooltip]=\"'Back'|translate\" tabindex=\"1\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">arrow_circle_left</mat-icon>\r\n </button>\r\n }\r\n @if (model.draft) {\r\n <button mat-stroked-button color=\"primary\" data-help=\"submit\"\r\n (click)=\"submit()\" [disabled]=\"!valid||working\">\r\n <span>{{'Submit' | translate}}</span>\r\n </button>\r\n }\r\n @if (form.actions.length === 1) {\r\n <button mat-stroked-button [color]=\"!model.draft ? 'primary' : null\" [attr.data-help]=\"'action-'+form.actions[0].name\" (click)=\"send(model.actions![0])\" [disabled]=\"!valid||working\">\r\n <span>{{form.actions[0].title}}</span>\r\n @if (form.actions[0].icon) {\r\n <mat-icon>{{form.actions[0].icon}}</mat-icon>\r\n }\r\n </button>\r\n }\r\n @else if (form.actions.length > 1) {\r\n <button mat-stroked-button data-help=\"send\" [color]=\"!model.draft ? 'primary' : null\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"!valid||working\">\r\n <span>{{'Send' | translate}}</span>\r\n </button>\r\n }\r\n <!-- action -->\r\n <mat-menu #actionMenu>\r\n <ng-template matMenuContent>\r\n @for (a of form.actions; track a; let i = $index) {\r\n @if (i > 0 && form.actions[i - 1].group !== a.group) {\r\n <mat-divider></mat-divider>\r\n }\r\n <button mat-menu-item (click)=\"send(a.name)\">{{a.title}}</button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n <!--<ng-template #actionsPane>\r\n <mat-list>\r\n
|
10591
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: ComposePaneComponent, isStandalone: false, 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)" } }, 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\">\r\n @if (page !== undefined) {\r\n <button mat-icon-button (click)=\"form.back()\" [bizdocTooltip]=\"'Back'|translate\" tabindex=\"1\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">arrow_circle_left</mat-icon>\r\n </button>\r\n }\r\n @if (model.draft) {\r\n <button mat-stroked-button color=\"primary\" data-help=\"submit\"\r\n (click)=\"submit()\" [disabled]=\"!valid||working\">\r\n <span>{{'Submit' | translate}}</span>\r\n </button>\r\n }\r\n @if (form.actions.length === 1) {\r\n <button mat-stroked-button [color]=\"!model.draft ? 'primary' : null\" [attr.data-help]=\"'action-'+form.actions[0].name\" (click)=\"send(model.actions![0])\" [disabled]=\"!valid||working\">\r\n <span>{{form.actions[0].title}}</span>\r\n @if (form.actions[0].icon) {\r\n <mat-icon>{{form.actions[0].icon}}</mat-icon>\r\n }\r\n </button>\r\n }\r\n @else if (form.actions.length > 1) {\r\n <button mat-stroked-button data-help=\"send\" [color]=\"!model.draft ? 'primary' : null\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"!valid||working\">\r\n <span>{{'Send' | translate}}</span>\r\n </button>\r\n }\r\n <!-- action -->\r\n <mat-menu #actionMenu>\r\n <ng-template matMenuContent>\r\n @for (a of form.actions; track a; let i = $index) {\r\n @if (i > 0 && form.actions[i - 1].group !== a.group) {\r\n <mat-divider></mat-divider>\r\n }\r\n <button mat-menu-item (click)=\"send(a.name)\">{{a.title}}</button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n <!--<ng-template #actionsPane>\r\n <mat-list>\r\n <mat-list-item (click)=\"send(a.name)\">\r\n @if(a.icon) {\r\n <mat-icon matListItemIcon>{{a.icon}}</mat-icon>\r\n }\r\n <span matListItemTitle>{{a.title}}</span>\r\n <span matListItemLine>{{a.note}}</span>\r\n </mat-list-item>\r\n </mat-list>\r\n </ng-template>-->\r\n @if (mode === 'compose') {\r\n <button mat-icon-button (click)=\"save()\" data-help=\"save\" [disabled]=\"!dirty||working\" [bizdocTooltip]=\"'Save'|translate\">\r\n <mat-icon>save</mat-icon>\r\n </button>\r\n }\r\n <button mat-icon-button data-help=\"tag\" (click)=\"form.tag($event)\" [bizdocTooltip]=\"'Tags' | translate\" [disabled]=\"working\"><mat-icon [class.filled]=\"form.userTags\">bookmark</mat-icon></button>\r\n <button mat-icon-button data-help=\"flag\" [bizdocTooltip]=\"'Flagged'| translate\" [disabled]=\"working\" (click)=\"form.flag()\"><mat-icon [class.filled]=\"model.flag\">star</mat-icon></button>\r\n <button mat-icon-button (click)=\"form.attach()\" data-help=\"attach\" [bizdocTooltip]=\"'AttachFile' | translate\" [disabled]=\"working\"><mat-icon>attach_file</mat-icon></button>\r\n @if (mode !== 'compose' && model.pending && !model.completed) {\r\n <button mat-icon-button [disabled]=\"working\" data-help=\"edit\" (click)=\"edit()\" [bizdocTooltip]=\"'Edit' | translate\"><mat-icon>create</mat-icon></button>\r\n }\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"navTrace()\" [bizdocTooltip]=\"'Trace' | translate\" tabindex=\"1\"><mat-icon>network_node</mat-icon></button>\r\n <button mat-icon-button (click)=\"navComments()\" data-help=\"comments\" [bizdocTooltip]=\"'Comments' | translate\">\r\n <mat-icon [matBadge]=\"newCommentsCount\" [matBadgeHidden]=\"!newCommentsCount\" matBadgeColor=\"accent\" [class.filled]=\"model.comments.length > 0\">format_quote</mat-icon>\r\n </button>\r\n @if (enableInsights) {\r\n <button mat-icon-button (click)=\"insights()\" [bizdocTooltip]=\"'Insights' | translate\" [attr.aria-label]=\"'Insight' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\r\n }\r\n @if (expendable) {\r\n <button mat-icon-button (click)=\"expand()\" [bizdocTooltip]=\"'Expand' | translate\" [attr.aria-label]=\"'Expand' | translate\"><mat-icon>open_in_new</mat-icon></button>\r\n }\r\n <button mat-icon-button [matMenuTriggerFor]=\"optionsMenu\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n <ng-template matMenuContent>\r\n <button mat-menu-item (click)=\"form.copy()\" [disabled]=\"working\">\r\n <!--<mat-icon>content_copy</mat-icon>-->\r\n <span>{{'Copy' | translate}}</span>\r\n </button>\r\n @if (model.draft && !model.issued) {\r\n <button mat-menu-item (click)=\"discard()\" [disabled]=\"working\">\r\n <!--<mat-icon>delete_outlined</mat-icon>-->\r\n <span>{{'Discard' | translate}}</span>\r\n </button>\r\n }\r\n @if (form.help) {\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"form.guide(form.help)\">\r\n <!--<mat-icon>help_outline</mat-icon>-->\r\n <span>{{'Help' | translate}}</span>\r\n </button>\r\n }\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"close()\"><!--<mat-icon></mat-icon>--><span>{{'Close'| translate}}</span></button>\r\n </ng-template>\r\n </mat-menu>\r\n</mat-toolbar>\r\n<div class=\"file-dropable form-container\" #dropable>\r\n <bizdoc-form [model]=model [page]=\"page\" #form\r\n (modelChange)=\"change()\"\r\n (saved)=\"saved()\"\r\n (validChange)=\"valid=$event\"\r\n (workingChange)=\"working=$event\"\r\n (dirtyChange)=\"dirty=$event\" [mode]=\"mode\"></bizdoc-form>\r\n</div>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;height:100%}.form-container{-ms-flex:1;-webkit-flex:1;flex:1;overflow:auto}button{margin-inline-end:6px}\n"], dependencies: [{ kind: "directive", type: i7$1.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i2$5.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[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.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", "page", "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" }] }); }
|
10581
10592
|
}
|
10582
10593
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ComposePaneComponent, decorators: [{
|
10583
10594
|
type: Component,
|
10584
|
-
args: [{ standalone: false, selector: 'bizdoc-compose-pane', template: "<mat-toolbar class=\"nav-toolbar\">\r\n @if (page !== undefined) {\r\n <button mat-icon-button (click)=\"form.back()\" [bizdocTooltip]=\"'Back'|translate\" tabindex=\"1\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">arrow_circle_left</mat-icon>\r\n </button>\r\n }\r\n @if (model.draft) {\r\n <button mat-stroked-button color=\"primary\" data-help=\"submit\"\r\n (click)=\"submit()\" [disabled]=\"!valid||working\">\r\n <span>{{'Submit' | translate}}</span>\r\n </button>\r\n }\r\n @if (form.actions.length === 1) {\r\n <button mat-stroked-button [color]=\"!model.draft ? 'primary' : null\" [attr.data-help]=\"'action-'+form.actions[0].name\" (click)=\"send(model.actions![0])\" [disabled]=\"!valid||working\">\r\n <span>{{form.actions[0].title}}</span>\r\n @if (form.actions[0].icon) {\r\n <mat-icon>{{form.actions[0].icon}}</mat-icon>\r\n }\r\n </button>\r\n }\r\n @else if (form.actions.length > 1) {\r\n <button mat-stroked-button data-help=\"send\" [color]=\"!model.draft ? 'primary' : null\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"!valid||working\">\r\n <span>{{'Send' | translate}}</span>\r\n </button>\r\n }\r\n <!-- action -->\r\n <mat-menu #actionMenu>\r\n <ng-template matMenuContent>\r\n @for (a of form.actions; track a; let i = $index) {\r\n @if (i > 0 && form.actions[i - 1].group !== a.group) {\r\n <mat-divider></mat-divider>\r\n }\r\n <button mat-menu-item (click)=\"send(a.name)\">{{a.title}}</button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n <!--<ng-template #actionsPane>\r\n <mat-list>\r\n
|
10595
|
+
args: [{ standalone: false, selector: 'bizdoc-compose-pane', template: "<mat-toolbar class=\"nav-toolbar\">\r\n @if (page !== undefined) {\r\n <button mat-icon-button (click)=\"form.back()\" [bizdocTooltip]=\"'Back'|translate\" tabindex=\"1\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">arrow_circle_left</mat-icon>\r\n </button>\r\n }\r\n @if (model.draft) {\r\n <button mat-stroked-button color=\"primary\" data-help=\"submit\"\r\n (click)=\"submit()\" [disabled]=\"!valid||working\">\r\n <span>{{'Submit' | translate}}</span>\r\n </button>\r\n }\r\n @if (form.actions.length === 1) {\r\n <button mat-stroked-button [color]=\"!model.draft ? 'primary' : null\" [attr.data-help]=\"'action-'+form.actions[0].name\" (click)=\"send(model.actions![0])\" [disabled]=\"!valid||working\">\r\n <span>{{form.actions[0].title}}</span>\r\n @if (form.actions[0].icon) {\r\n <mat-icon>{{form.actions[0].icon}}</mat-icon>\r\n }\r\n </button>\r\n }\r\n @else if (form.actions.length > 1) {\r\n <button mat-stroked-button data-help=\"send\" [color]=\"!model.draft ? 'primary' : null\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"!valid||working\">\r\n <span>{{'Send' | translate}}</span>\r\n </button>\r\n }\r\n <!-- action -->\r\n <mat-menu #actionMenu>\r\n <ng-template matMenuContent>\r\n @for (a of form.actions; track a; let i = $index) {\r\n @if (i > 0 && form.actions[i - 1].group !== a.group) {\r\n <mat-divider></mat-divider>\r\n }\r\n <button mat-menu-item (click)=\"send(a.name)\">{{a.title}}</button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n <!--<ng-template #actionsPane>\r\n <mat-list>\r\n <mat-list-item (click)=\"send(a.name)\">\r\n @if(a.icon) {\r\n <mat-icon matListItemIcon>{{a.icon}}</mat-icon>\r\n }\r\n <span matListItemTitle>{{a.title}}</span>\r\n <span matListItemLine>{{a.note}}</span>\r\n </mat-list-item>\r\n </mat-list>\r\n </ng-template>-->\r\n @if (mode === 'compose') {\r\n <button mat-icon-button (click)=\"save()\" data-help=\"save\" [disabled]=\"!dirty||working\" [bizdocTooltip]=\"'Save'|translate\">\r\n <mat-icon>save</mat-icon>\r\n </button>\r\n }\r\n <button mat-icon-button data-help=\"tag\" (click)=\"form.tag($event)\" [bizdocTooltip]=\"'Tags' | translate\" [disabled]=\"working\"><mat-icon [class.filled]=\"form.userTags\">bookmark</mat-icon></button>\r\n <button mat-icon-button data-help=\"flag\" [bizdocTooltip]=\"'Flagged'| translate\" [disabled]=\"working\" (click)=\"form.flag()\"><mat-icon [class.filled]=\"model.flag\">star</mat-icon></button>\r\n <button mat-icon-button (click)=\"form.attach()\" data-help=\"attach\" [bizdocTooltip]=\"'AttachFile' | translate\" [disabled]=\"working\"><mat-icon>attach_file</mat-icon></button>\r\n @if (mode !== 'compose' && model.pending && !model.completed) {\r\n <button mat-icon-button [disabled]=\"working\" data-help=\"edit\" (click)=\"edit()\" [bizdocTooltip]=\"'Edit' | translate\"><mat-icon>create</mat-icon></button>\r\n }\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"navTrace()\" [bizdocTooltip]=\"'Trace' | translate\" tabindex=\"1\"><mat-icon>network_node</mat-icon></button>\r\n <button mat-icon-button (click)=\"navComments()\" data-help=\"comments\" [bizdocTooltip]=\"'Comments' | translate\">\r\n <mat-icon [matBadge]=\"newCommentsCount\" [matBadgeHidden]=\"!newCommentsCount\" matBadgeColor=\"accent\" [class.filled]=\"model.comments.length > 0\">format_quote</mat-icon>\r\n </button>\r\n @if (enableInsights) {\r\n <button mat-icon-button (click)=\"insights()\" [bizdocTooltip]=\"'Insights' | translate\" [attr.aria-label]=\"'Insight' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\r\n }\r\n @if (expendable) {\r\n <button mat-icon-button (click)=\"expand()\" [bizdocTooltip]=\"'Expand' | translate\" [attr.aria-label]=\"'Expand' | translate\"><mat-icon>open_in_new</mat-icon></button>\r\n }\r\n <button mat-icon-button [matMenuTriggerFor]=\"optionsMenu\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #optionsMenu=\"matMenu\">\r\n <ng-template matMenuContent>\r\n <button mat-menu-item (click)=\"form.copy()\" [disabled]=\"working\">\r\n <!--<mat-icon>content_copy</mat-icon>-->\r\n <span>{{'Copy' | translate}}</span>\r\n </button>\r\n @if (model.draft && !model.issued) {\r\n <button mat-menu-item (click)=\"discard()\" [disabled]=\"working\">\r\n <!--<mat-icon>delete_outlined</mat-icon>-->\r\n <span>{{'Discard' | translate}}</span>\r\n </button>\r\n }\r\n @if (form.help) {\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"form.guide(form.help)\">\r\n <!--<mat-icon>help_outline</mat-icon>-->\r\n <span>{{'Help' | translate}}</span>\r\n </button>\r\n }\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"close()\"><!--<mat-icon></mat-icon>--><span>{{'Close'| translate}}</span></button>\r\n </ng-template>\r\n </mat-menu>\r\n</mat-toolbar>\r\n<div class=\"file-dropable form-container\" #dropable>\r\n <bizdoc-form [model]=model [page]=\"page\" #form\r\n (modelChange)=\"change()\"\r\n (saved)=\"saved()\"\r\n (validChange)=\"valid=$event\"\r\n (workingChange)=\"working=$event\"\r\n (dirtyChange)=\"dirty=$event\" [mode]=\"mode\"></bizdoc-form>\r\n</div>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;height:100%}.form-container{-ms-flex:1;-webkit-flex:1;flex:1;overflow:auto}button{margin-inline-end:6px}\n"] }]
|
10585
10596
|
}], ctorParameters: () => [{ type: SessionService }, { type: MailboxService }, { type: PaneRef }, { type: PanesRouter }], propDecorators: { form: [{
|
10586
10597
|
type: ViewChild,
|
10587
10598
|
args: [ComposeFormComponent, { static: true }]
|
@@ -13692,13 +13703,13 @@ class CommentComponent {
|
|
13692
13703
|
});
|
13693
13704
|
}
|
13694
13705
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: CommentComponent, deps: [{ token: SessionService }, { token: PromptService }, { token: TranslateService }, { token: ChatInfo }, { token: AccountService }, { token: Popup }, { token: i2$3.Overlay }, { token: MailboxService }, { token: i0.ViewContainerRef }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
13695
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: CommentComponent, isStandalone: false, selector: "bizdoc-comment", inputs: { model: "model", item: "item" }, outputs: { deleted: "deleted", reply: "reply" }, host: { classAttribute: "comment" }, viewQueries: [{ propertyName: "bodyElement", first: true, predicate: ["body"], descendants: true }, { propertyName: "previewTemplate", first: true, predicate: ["previewTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"comment-body\" #body>\r\n <div [innerHTML]=\"item.text|taggingHtml:item.resource\" class=\"comment-text mat-body-1\"></div>\r\n @if (item.image) {\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview()\" />\r\n }\r\n </div>\r\n <!-- menu -->\r\n @if (me) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" class=\"comment-menu\" (click)=\"$event.stopPropagation()\"><mat-icon>more_vert</mat-icon></button>\r\n }\r\n <mat-menu #menu>\r\n <ng-template matMenuContent>\r\n @if (!item.deleted) {\r\n <button mat-menu-item (click)=\"edit()\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete(true)\">{{'Delete'|translate}}</button>\r\n }\r\n @else {\r\n <button mat-menu-item (click)=\"delete(false)\">{{'Undo'|translate}}</button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n</div>\r\n<!-- reply -->\r\n@if(item.reply) {\r\n<div class=\"column comment-reply\">\r\n <div class=\"row\">\r\n <div [innerHTML]=\"item.reply.text|taggingHtml:item.reply.resource\" class=\"comment-text mat-body-1\"></div>\r\n @if (item.reply.image) {\r\n <img [src]=\"'data:image/png;base64,'+item.reply.image\" alt=\"\" (click)=\"null\" />\r\n }\r\n </div>\r\n <div class=\"row\">\r\n <small class=\"comment-tools\">\r\n <span
|
13706
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: CommentComponent, isStandalone: false, selector: "bizdoc-comment", inputs: { model: "model", item: "item" }, outputs: { deleted: "deleted", reply: "reply" }, host: { classAttribute: "comment" }, viewQueries: [{ propertyName: "bodyElement", first: true, predicate: ["body"], descendants: true }, { propertyName: "previewTemplate", first: true, predicate: ["previewTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"comment-body\" #body>\r\n <div [innerHTML]=\"item.text|taggingHtml:item.resource\" class=\"comment-text mat-body-1\"></div>\r\n @if (item.image) {\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview()\" />\r\n }\r\n </div>\r\n <!-- menu -->\r\n @if (me) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" class=\"comment-menu\" (click)=\"$event.stopPropagation()\"><mat-icon>more_vert</mat-icon></button>\r\n }\r\n <mat-menu #menu>\r\n <ng-template matMenuContent>\r\n @if (!item.deleted) {\r\n <button mat-menu-item (click)=\"edit()\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete(true)\">{{'Delete'|translate}}</button>\r\n }\r\n @else {\r\n <button mat-menu-item (click)=\"delete(false)\">{{'Undo'|translate}}</button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n</div>\r\n<!-- reply -->\r\n@if(item.reply) {\r\n<div class=\"column comment-reply\">\r\n <div class=\"row\">\r\n <div [innerHTML]=\"item.reply.text|taggingHtml:item.reply.resource\" class=\"comment-text mat-body-1\"></div>\r\n @if (item.reply.image) {\r\n <img [src]=\"'data:image/png;base64,'+item.reply.image\" alt=\"\" (click)=\"null\" />\r\n }\r\n </div>\r\n <div class=\"row\">\r\n <small class=\"comment-tools\">\r\n <span [bizdocTooltip]=\"item.reply.time | amDateFormat: 'lll'\">{{item.reply.time | amTimeAgo}}</span>\r\n </small>\r\n </div>\r\n</div>\r\n}\r\n<div class=\"row\">\r\n <div class=\"column\">\r\n <small [innerHTML]=\"name | sanitizeHtml\" (click)=\"chat($event)\" class=\"uname\"></small>\r\n <small class=\"comment-tools flex\">\r\n <span class=\"flex\" [bizdocTooltip]=\"(item.edited || item.time) | amDateFormat: 'lll'\">{{(item.edited || item.time) | amTimeAgo}}</span>\r\n @if (item.edited) {\r\n <a (click)=\"edits()\">{{'Edited'| translate}}</a>\r\n }\r\n @if (!me) {\r\n <a (click)=\"reply.emit()\">{{'Reply'| translate}}</a>\r\n }\r\n </small>\r\n </div>\r\n @if (voting) {\r\n <div class=\"comment-actions\">\r\n @if (item.votes > 0 || item.votes < 0) {\r\n <a [class.score-negative]=\"item.votes < 0\" class=\"comment-score\" dir=\"ltr\" (click)=\"votes()\" [bizdocTooltip]=\"'Votes'|translate\">{{item.votes}}</a>\r\n }\r\n <mat-icon matRipple (click)=\"vote(1, $event)\" [class.voted-true]=\"item.voted===1\">thumb_up_alt</mat-icon>\r\n <mat-icon matRipple (click)=\"vote(-1, $event)\" [class.voted-false]=\"item.voted===-1\">thumb_down_alt</mat-icon>\r\n </div>\r\n }\r\n</div>\r\n<ng-template #previewTemplate>\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" />\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i2$3.ɵɵDir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i1$3.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i2$5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.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: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: TaggingPipe, name: "taggingHtml" }] }); }
|
13696
13707
|
}
|
13697
13708
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: CommentComponent, decorators: [{
|
13698
13709
|
type: Component,
|
13699
13710
|
args: [{ standalone: false, selector: 'bizdoc-comment', host: {
|
13700
13711
|
class: 'comment'
|
13701
|
-
}, template: "<div class=\"row\">\r\n <div class=\"comment-body\" #body>\r\n <div [innerHTML]=\"item.text|taggingHtml:item.resource\" class=\"comment-text mat-body-1\"></div>\r\n @if (item.image) {\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview()\" />\r\n }\r\n </div>\r\n <!-- menu -->\r\n @if (me) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" class=\"comment-menu\" (click)=\"$event.stopPropagation()\"><mat-icon>more_vert</mat-icon></button>\r\n }\r\n <mat-menu #menu>\r\n <ng-template matMenuContent>\r\n @if (!item.deleted) {\r\n <button mat-menu-item (click)=\"edit()\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete(true)\">{{'Delete'|translate}}</button>\r\n }\r\n @else {\r\n <button mat-menu-item (click)=\"delete(false)\">{{'Undo'|translate}}</button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n</div>\r\n<!-- reply -->\r\n@if(item.reply) {\r\n<div class=\"column comment-reply\">\r\n <div class=\"row\">\r\n <div [innerHTML]=\"item.reply.text|taggingHtml:item.reply.resource\" class=\"comment-text mat-body-1\"></div>\r\n @if (item.reply.image) {\r\n <img [src]=\"'data:image/png;base64,'+item.reply.image\" alt=\"\" (click)=\"null\" />\r\n }\r\n </div>\r\n <div class=\"row\">\r\n <small class=\"comment-tools\">\r\n <span
|
13712
|
+
}, template: "<div class=\"row\">\r\n <div class=\"comment-body\" #body>\r\n <div [innerHTML]=\"item.text|taggingHtml:item.resource\" class=\"comment-text mat-body-1\"></div>\r\n @if (item.image) {\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview()\" />\r\n }\r\n </div>\r\n <!-- menu -->\r\n @if (me) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" class=\"comment-menu\" (click)=\"$event.stopPropagation()\"><mat-icon>more_vert</mat-icon></button>\r\n }\r\n <mat-menu #menu>\r\n <ng-template matMenuContent>\r\n @if (!item.deleted) {\r\n <button mat-menu-item (click)=\"edit()\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete(true)\">{{'Delete'|translate}}</button>\r\n }\r\n @else {\r\n <button mat-menu-item (click)=\"delete(false)\">{{'Undo'|translate}}</button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n</div>\r\n<!-- reply -->\r\n@if(item.reply) {\r\n<div class=\"column comment-reply\">\r\n <div class=\"row\">\r\n <div [innerHTML]=\"item.reply.text|taggingHtml:item.reply.resource\" class=\"comment-text mat-body-1\"></div>\r\n @if (item.reply.image) {\r\n <img [src]=\"'data:image/png;base64,'+item.reply.image\" alt=\"\" (click)=\"null\" />\r\n }\r\n </div>\r\n <div class=\"row\">\r\n <small class=\"comment-tools\">\r\n <span [bizdocTooltip]=\"item.reply.time | amDateFormat: 'lll'\">{{item.reply.time | amTimeAgo}}</span>\r\n </small>\r\n </div>\r\n</div>\r\n}\r\n<div class=\"row\">\r\n <div class=\"column\">\r\n <small [innerHTML]=\"name | sanitizeHtml\" (click)=\"chat($event)\" class=\"uname\"></small>\r\n <small class=\"comment-tools flex\">\r\n <span class=\"flex\" [bizdocTooltip]=\"(item.edited || item.time) | amDateFormat: 'lll'\">{{(item.edited || item.time) | amTimeAgo}}</span>\r\n @if (item.edited) {\r\n <a (click)=\"edits()\">{{'Edited'| translate}}</a>\r\n }\r\n @if (!me) {\r\n <a (click)=\"reply.emit()\">{{'Reply'| translate}}</a>\r\n }\r\n </small>\r\n </div>\r\n @if (voting) {\r\n <div class=\"comment-actions\">\r\n @if (item.votes > 0 || item.votes < 0) {\r\n <a [class.score-negative]=\"item.votes < 0\" class=\"comment-score\" dir=\"ltr\" (click)=\"votes()\" [bizdocTooltip]=\"'Votes'|translate\">{{item.votes}}</a>\r\n }\r\n <mat-icon matRipple (click)=\"vote(1, $event)\" [class.voted-true]=\"item.voted===1\">thumb_up_alt</mat-icon>\r\n <mat-icon matRipple (click)=\"vote(-1, $event)\" [class.voted-false]=\"item.voted===-1\">thumb_down_alt</mat-icon>\r\n </div>\r\n }\r\n</div>\r\n<ng-template #previewTemplate>\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" />\r\n</ng-template>\r\n" }]
|
13702
13713
|
}], ctorParameters: () => [{ type: SessionService }, { type: PromptService }, { type: TranslateService }, { type: ChatInfo }, { type: AccountService }, { type: Popup }, { type: i2$3.Overlay }, { type: MailboxService }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
13703
13714
|
type: Inject,
|
13704
13715
|
args: [BIZDOC_CONFIG]
|
@@ -13824,12 +13835,12 @@ class CommentsComponent {
|
|
13824
13835
|
reply(item) {
|
13825
13836
|
this._replyTo = item;
|
13826
13837
|
this._accounts.get(item.byId || item.userId).
|
13827
|
-
subscribe(u => this.replyName =
|
13838
|
+
subscribe(u => this.replyName = u.name);
|
13828
13839
|
this.input.focus();
|
13829
13840
|
}
|
13830
13841
|
clearReply() {
|
13831
|
-
this._replyTo =
|
13832
|
-
this.replyName =
|
13842
|
+
this._replyTo = null;
|
13843
|
+
this.replyName = null;
|
13833
13844
|
}
|
13834
13845
|
ngAfterViewInit() {
|
13835
13846
|
const { comments } = this.model;
|
@@ -13912,13 +13923,13 @@ class CommentsComponent {
|
|
13912
13923
|
window.localStorage.setItem(id, this.input.text);
|
13913
13924
|
}
|
13914
13925
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: CommentsComponent, deps: [{ token: AccountService }, { token: SessionService }, { token: PromptService }, { token: TranslateService }, { token: ChatInfo }, { token: MailboxService }, { token: HubService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
13915
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: CommentsComponent, isStandalone: false, selector: "bizdoc-comments", inputs: { model: "model" }, outputs: { change: "change" }, host: { classAttribute: "comments" }, viewQueries: [{ propertyName: "threadElement", first: true, predicate: ["thread"], descendants: true, read: ElementRef, static: true }, { propertyName: "input", first: true, predicate: EditInputComponent, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "@if (!model.comments.length) {\r\n <bizdoc-none icon=\"format_quote\"></bizdoc-none>\r\n}\r\n\r\n<div class=\"column comments-thread mat-body\" #thread (scroll)=\"onScroll($event)\">\r\n @for (c of model.comments; track c.id) {\r\n <ng-container>\r\n @if (!c.deleted || showDeleted.has(c.id)) {\r\n <bizdoc-comment role=\"listitem\"\r\n [model]=\"model\"\r\n [item]=\"c\"\r\n (reply)=\"reply(c)\">\r\n </bizdoc-comment>\r\n } @else {\r\n <a (click)=\"showDeleted.add(c.id)\" class=\"comment-deleted\">{{'Deleted' | translate}}</a>\r\n }\r\n </ng-container>\r\n }\r\n</div>\r\n\r\n<
|
13926
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: CommentsComponent, isStandalone: false, selector: "bizdoc-comments", inputs: { model: "model" }, outputs: { change: "change" }, host: { classAttribute: "comments" }, viewQueries: [{ propertyName: "threadElement", first: true, predicate: ["thread"], descendants: true, read: ElementRef, static: true }, { propertyName: "input", first: true, predicate: EditInputComponent, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "@if (!model.comments.length) {\r\n <bizdoc-none icon=\"format_quote\"></bizdoc-none>\r\n}\r\n\r\n<div class=\"column comments-thread mat-body\" #thread (scroll)=\"onScroll($event)\">\r\n @for (c of model.comments; track c.id) {\r\n <ng-container>\r\n @if (!c.deleted || showDeleted.has(c.id)) {\r\n <bizdoc-comment role=\"listitem\"\r\n [model]=\"model\"\r\n [item]=\"c\"\r\n (reply)=\"reply(c)\">\r\n </bizdoc-comment>\r\n } @else {\r\n <a (click)=\"showDeleted.add(c.id)\" class=\"comment-deleted\">{{'Deleted' | translate}}</a>\r\n }\r\n </ng-container>\r\n }\r\n</div>\r\n\r\n<small class=\"mat-body comments-typing\" [style.visibility]=\"typing ? 'visible': 'hidden'\">{{'Typing' | translate : typing}}</small>\r\n\r\n@if (replyName) {\r\n<small class=\"mat-body comments-reply\">\r\n {{'ReplyTo' |translate : replyName }}\r\n <a class=\"comment-cancel-reply\" (click)=\"clearReply()\">{{'Cancel'|translate}}</a>\r\n</small>\r\n}\r\n\r\n<bizdoc-edit-text (ok)=\"post($event)\" (change)=\"_textChange.next()\"\r\n placeholder=\"CommentHere\"\r\n [disabled]=\"sending\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\r\n</bizdoc-edit-text>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;height:100%}.comments-thread{flex:1 1 auto;overflow:auto;padding:8px 12px 0}.comment-deleted{align-self:center}.comments-typing,.comments-reply{font-size:11px;padding:0 8px}.comments-reply .comment-cancel-reply{font-variant:small-caps}\n"], dependencies: [{ kind: "component", type: EditInputComponent, selector: "bizdoc-edit-text", inputs: ["placeholder", "text", "image", "resource", "disabled", "autofocus", "cache"], outputs: ["change", "ok", "focus", "blur"] }, { kind: "component", type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { kind: "component", type: CommentComponent, selector: "bizdoc-comment", inputs: ["model", "item"], outputs: ["deleted", "reply"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
13916
13927
|
}
|
13917
13928
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: CommentsComponent, decorators: [{
|
13918
13929
|
type: Component,
|
13919
13930
|
args: [{ standalone: false, selector: 'bizdoc-comments', host: {
|
13920
13931
|
class: 'comments'
|
13921
|
-
}, template: "@if (!model.comments.length) {\r\n <bizdoc-none icon=\"format_quote\"></bizdoc-none>\r\n}\r\n\r\n<div class=\"column comments-thread mat-body\" #thread (scroll)=\"onScroll($event)\">\r\n @for (c of model.comments; track c.id) {\r\n <ng-container>\r\n @if (!c.deleted || showDeleted.has(c.id)) {\r\n <bizdoc-comment role=\"listitem\"\r\n [model]=\"model\"\r\n [item]=\"c\"\r\n (reply)=\"reply(c)\">\r\n </bizdoc-comment>\r\n } @else {\r\n <a (click)=\"showDeleted.add(c.id)\" class=\"comment-deleted\">{{'Deleted' | translate}}</a>\r\n }\r\n </ng-container>\r\n }\r\n</div>\r\n\r\n<
|
13932
|
+
}, template: "@if (!model.comments.length) {\r\n <bizdoc-none icon=\"format_quote\"></bizdoc-none>\r\n}\r\n\r\n<div class=\"column comments-thread mat-body\" #thread (scroll)=\"onScroll($event)\">\r\n @for (c of model.comments; track c.id) {\r\n <ng-container>\r\n @if (!c.deleted || showDeleted.has(c.id)) {\r\n <bizdoc-comment role=\"listitem\"\r\n [model]=\"model\"\r\n [item]=\"c\"\r\n (reply)=\"reply(c)\">\r\n </bizdoc-comment>\r\n } @else {\r\n <a (click)=\"showDeleted.add(c.id)\" class=\"comment-deleted\">{{'Deleted' | translate}}</a>\r\n }\r\n </ng-container>\r\n }\r\n</div>\r\n\r\n<small class=\"mat-body comments-typing\" [style.visibility]=\"typing ? 'visible': 'hidden'\">{{'Typing' | translate : typing}}</small>\r\n\r\n@if (replyName) {\r\n<small class=\"mat-body comments-reply\">\r\n {{'ReplyTo' |translate : replyName }}\r\n <a class=\"comment-cancel-reply\" (click)=\"clearReply()\">{{'Cancel'|translate}}</a>\r\n</small>\r\n}\r\n\r\n<bizdoc-edit-text (ok)=\"post($event)\" (change)=\"_textChange.next()\"\r\n placeholder=\"CommentHere\"\r\n [disabled]=\"sending\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\r\n</bizdoc-edit-text>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;height:100%}.comments-thread{flex:1 1 auto;overflow:auto;padding:8px 12px 0}.comment-deleted{align-self:center}.comments-typing,.comments-reply{font-size:11px;padding:0 8px}.comments-reply .comment-cancel-reply{font-variant:small-caps}\n"] }]
|
13922
13933
|
}], ctorParameters: () => [{ type: AccountService }, { type: SessionService }, { type: PromptService }, { type: TranslateService }, { type: ChatInfo }, { type: MailboxService }, { type: HubService }, { type: undefined, decorators: [{
|
13923
13934
|
type: Inject,
|
13924
13935
|
args: [BIZDOC_CONFIG]
|
@@ -15579,10 +15590,11 @@ const FYI_PATH = 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 1
|
|
15579
15590
|
/** flow-view component*/
|
15580
15591
|
class FlowViewComponent extends TraceBase {
|
15581
15592
|
/** workflow-view ctor */
|
15582
|
-
constructor(_accounts, _translate, _duration, _elementRef, session, hub) {
|
15593
|
+
constructor(_accounts, _translate, _popup, _duration, _elementRef, session, hub) {
|
15583
15594
|
super(session, hub);
|
15584
15595
|
this._accounts = _accounts;
|
15585
15596
|
this._translate = _translate;
|
15597
|
+
this._popup = _popup;
|
15586
15598
|
this._duration = _duration;
|
15587
15599
|
this._elementRef = _elementRef;
|
15588
15600
|
this.connectorType = 'Bezier';
|
@@ -15661,6 +15673,7 @@ class FlowViewComponent extends TraceBase {
|
|
15661
15673
|
snapSettings: this.snapSettings,
|
15662
15674
|
scrollSettings: this.scrollSettings,
|
15663
15675
|
height: 560,
|
15676
|
+
// mouseEnter: this._mouseEnter.bind(this),
|
15664
15677
|
//layers: [
|
15665
15678
|
// {
|
15666
15679
|
// zIndex: 0,
|
@@ -15715,6 +15728,10 @@ class FlowViewComponent extends TraceBase {
|
|
15715
15728
|
n.tooltip.content = this._tooltip(n.addInfo.tooltip);
|
15716
15729
|
});
|
15717
15730
|
}
|
15731
|
+
_mouseEnter(evt) {
|
15732
|
+
evt.element.addInfo && evt.element.addInfo.tooltip &&
|
15733
|
+
this._popup.open('', evt.actualObject);
|
15734
|
+
}
|
15718
15735
|
/** */
|
15719
15736
|
async _prepare() {
|
15720
15737
|
const { connectors: dconnectors, nodes: dnodes } = this.model.workflow;
|
@@ -15731,24 +15748,24 @@ class FlowViewComponent extends TraceBase {
|
|
15731
15748
|
if (recipients.length) {
|
15732
15749
|
let r = 0;
|
15733
15750
|
do {
|
15734
|
-
|
15751
|
+
let { userId, estimate } = recipients[r];
|
15735
15752
|
let exists = false;
|
15736
15753
|
// remove duplicate user recipient on same node
|
15737
15754
|
let j = 0;
|
15738
15755
|
while (j < r && !exists) {
|
15739
|
-
if (recipients[j].userId ===
|
15756
|
+
if (recipients[j].userId === userId)
|
15740
15757
|
exists = true;
|
15741
15758
|
else
|
15742
15759
|
j++;
|
15743
15760
|
}
|
15744
15761
|
if (exists)
|
15745
|
-
recipients.splice(
|
15762
|
+
recipients.splice(estimate ? r : j, 1);
|
15746
15763
|
else
|
15747
15764
|
r++;
|
15748
15765
|
} while (r < recipients.length);
|
15749
15766
|
for (r = 0; r < recipients.length; r++) {
|
15750
|
-
let recipient = recipients[r];
|
15751
|
-
|
15767
|
+
let recipient = recipients[r], { userId, actionId, escalated, fyi, pending } = recipient;
|
15768
|
+
let { annotation, tooltip } = await this._note(node, recipient), content = this._tooltip(tooltip), id = r === 0 ? node.id : node.id + r.toString();
|
15752
15769
|
nodes.push({
|
15753
15770
|
id,
|
15754
15771
|
width: 50,
|
@@ -15757,8 +15774,8 @@ class FlowViewComponent extends TraceBase {
|
|
15757
15774
|
strokeWidth: 2,
|
15758
15775
|
//opacity: node.estimate ? .6 : 1,
|
15759
15776
|
strokeColor: node.estimate ? this.dimColor : this._accentColor,
|
15760
|
-
fill: !node.estimate &&
|
15761
|
-
this._session.getAccent(
|
15777
|
+
fill: !node.estimate && pending ?
|
15778
|
+
this._session.getAccent(userId === this._session.userId ? 500 : 400) : this.transparentColor
|
15762
15779
|
},
|
15763
15780
|
shape: this._configuration[node.type].shape,
|
15764
15781
|
zIndex: zIndex++,
|
@@ -15790,9 +15807,9 @@ class FlowViewComponent extends TraceBase {
|
|
15790
15807
|
}]
|
15791
15808
|
});
|
15792
15809
|
// add action indicator
|
15793
|
-
if (
|
15794
|
-
const action = this._session.profile.actions.find(a => a.name ===
|
15795
|
-
action.shape && !
|
15810
|
+
if (actionId) {
|
15811
|
+
const action = this._session.profile.actions.find(a => a.name === actionId);
|
15812
|
+
action.shape && !pending &&
|
15796
15813
|
indicators.push({
|
15797
15814
|
id: id + 'action',
|
15798
15815
|
width: 15,
|
@@ -15814,7 +15831,7 @@ class FlowViewComponent extends TraceBase {
|
|
15814
15831
|
});
|
15815
15832
|
}
|
15816
15833
|
// fyi indicator
|
15817
|
-
|
15834
|
+
fyi &&
|
15818
15835
|
indicators.push({
|
15819
15836
|
id: id + 'fyi',
|
15820
15837
|
width: 15,
|
@@ -15835,7 +15852,7 @@ class FlowViewComponent extends TraceBase {
|
|
15835
15852
|
}
|
15836
15853
|
});
|
15837
15854
|
// escalate indicator
|
15838
|
-
|
15855
|
+
escalated &&
|
15839
15856
|
indicators.push({
|
15840
15857
|
id: id + 'escalate',
|
15841
15858
|
width: 15,
|
@@ -16111,66 +16128,67 @@ class FlowViewComponent extends TraceBase {
|
|
16111
16128
|
async _note(node, recipient) {
|
16112
16129
|
const tooltip = {};
|
16113
16130
|
let annotation;
|
16131
|
+
const { userId, id, pending, fyi, roleId, escalated, originId, replied, repliedBy, actionId, estimate, substituteId, received } = recipient;
|
16114
16132
|
// you
|
16115
|
-
if (
|
16133
|
+
if (userId === this._session.userId) {
|
16116
16134
|
if (this._session.isImpersonating)
|
16117
16135
|
annotation = this._session.profile.name;
|
16118
16136
|
else
|
16119
16137
|
annotation = this._translate.get('You');
|
16120
|
-
if (
|
16121
|
-
const
|
16122
|
-
tooltip.role = `- ${
|
16138
|
+
if (roleId) {
|
16139
|
+
const roleName = this._roleName(roleId);
|
16140
|
+
tooltip.role = `- ${roleName}`;
|
16123
16141
|
}
|
16124
16142
|
}
|
16125
16143
|
else
|
16126
16144
|
// someone else
|
16127
16145
|
{
|
16128
|
-
const who = await firstValueFrom(this._accounts.get(
|
16146
|
+
const who = await firstValueFrom(this._accounts.get(userId));
|
16129
16147
|
annotation = who.name;
|
16130
16148
|
if (who.role)
|
16131
16149
|
tooltip.role = `- ${who.role}`;
|
16132
|
-
else if (
|
16133
|
-
const
|
16134
|
-
tooltip.role = `- ${
|
16150
|
+
else if (roleId) {
|
16151
|
+
const roleName = this._roleName(roleId);
|
16152
|
+
tooltip.role = `- ${roleName}`;
|
16135
16153
|
}
|
16136
16154
|
}
|
16137
|
-
if (
|
16138
|
-
const ago = dayjs(
|
16139
|
-
const targets = this.model.recipients.filter(r => r.originId ===
|
16155
|
+
if (replied) {
|
16156
|
+
const ago = dayjs(replied).fromNow();
|
16157
|
+
const targets = this.model.recipients.filter(r => r.originId === id), to = [];
|
16140
16158
|
if (targets.length)
|
16141
16159
|
for (let sibling of targets) {
|
16142
16160
|
const who = await firstValueFrom(this._accounts.get(sibling.userId));
|
16143
16161
|
to.push(who.name);
|
16144
16162
|
}
|
16145
|
-
if (
|
16146
|
-
if (
|
16147
|
-
const action = this._action(
|
16163
|
+
if (repliedBy) {
|
16164
|
+
if (repliedBy === this._session.profile.byId) {
|
16165
|
+
const action = this._action(actionId, this._session.profile.byGender);
|
16148
16166
|
if (to.length) {
|
16149
|
-
if (
|
16167
|
+
if (userId === this._session.profile.userId)
|
16150
16168
|
tooltip.note = this._translate.get('ActionTakenByYouTo', action, this._translate.join(to), this._session.profile.name, ago);
|
16151
16169
|
else {
|
16152
|
-
const who = await firstValueFrom(this._accounts.get(
|
16170
|
+
const who = await firstValueFrom(this._accounts.get(userId));
|
16153
16171
|
tooltip.note = this._translate.get('ActionTakenByYouTo', action, this._translate.join(to), who.name, ago);
|
16154
16172
|
}
|
16155
16173
|
}
|
16156
|
-
else if (
|
16174
|
+
else if (userId === this._session.profile.userId)
|
16157
16175
|
tooltip.note = this._translate.get('ActionTakenByYou', action, this._session.profile.name, ago);
|
16158
16176
|
else {
|
16159
|
-
const who = await firstValueFrom(this._accounts.get(
|
16177
|
+
const who = await firstValueFrom(this._accounts.get(userId));
|
16160
16178
|
tooltip.note = this._translate.get('ActionTakenByYou', action, who.name, ago);
|
16161
16179
|
}
|
16162
16180
|
}
|
16163
16181
|
else {
|
16164
|
-
const by = await firstValueFrom(this._accounts.get(
|
16165
|
-
const action = this._action(
|
16166
|
-
if (
|
16182
|
+
const by = await firstValueFrom(this._accounts.get(repliedBy));
|
16183
|
+
const action = this._action(actionId, by.gender);
|
16184
|
+
if (userId === this._session.profile.userId) {
|
16167
16185
|
if (to.length)
|
16168
16186
|
tooltip.note = this._translate.get('YouTakenActionByTo', by.name, action, this._translate.join(to), ago);
|
16169
16187
|
else
|
16170
16188
|
tooltip.note = this._translate.get('YouTakenActionBy', by.name, action, ago);
|
16171
16189
|
}
|
16172
16190
|
else {
|
16173
|
-
const who = await firstValueFrom(this._accounts.get(
|
16191
|
+
const who = await firstValueFrom(this._accounts.get(userId));
|
16174
16192
|
if (to.length)
|
16175
16193
|
tooltip.note = this._translate.get('ActionTakenByTo', by.name, action, this._translate.join(to), who.name, ago);
|
16176
16194
|
else
|
@@ -16179,80 +16197,80 @@ class FlowViewComponent extends TraceBase {
|
|
16179
16197
|
}
|
16180
16198
|
}
|
16181
16199
|
else if (to.length) {
|
16182
|
-
if (
|
16183
|
-
const action = this._action(
|
16200
|
+
if (userId === this._session.profile.userId) {
|
16201
|
+
const action = this._action(actionId, this._session.profile.gender);
|
16184
16202
|
if (this._session.isImpersonating)
|
16185
16203
|
tooltip.note = this._translate.get('ActionTakenTo', this._session.profile.name, action, this._translate.join(to), ago);
|
16186
16204
|
else
|
16187
16205
|
tooltip.note = this._translate.get('YouTakenActionTo', action, this._translate.join(to), ago);
|
16188
16206
|
}
|
16189
16207
|
else {
|
16190
|
-
const who = await firstValueFrom(this._accounts.get(
|
16191
|
-
const action = this._action(
|
16192
|
-
tooltip.note = this._translate.get('ActionTakenTo', who.name, action, this._translate.join(to));
|
16208
|
+
const who = await firstValueFrom(this._accounts.get(userId));
|
16209
|
+
const action = this._action(actionId, who.gender);
|
16210
|
+
tooltip.note = this._translate.get('ActionTakenTo', who.name, action, this._translate.join(to), ago);
|
16193
16211
|
}
|
16194
16212
|
}
|
16195
16213
|
else if (this._session.isImpersonating) {
|
16196
|
-
const action = this._action(
|
16214
|
+
const action = this._action(actionId, this._session.profile.gender);
|
16197
16215
|
tooltip.note = this._translate.get('ActionTaken', this._session.profile.name, action, ago);
|
16198
16216
|
}
|
16199
|
-
else if (
|
16200
|
-
const action = this._action(
|
16217
|
+
else if (userId === this._session.profile.userId) {
|
16218
|
+
const action = this._action(actionId, You);
|
16201
16219
|
tooltip.note = this._translate.get('YouTakenAction', action, ago);
|
16202
16220
|
}
|
16203
16221
|
else {
|
16204
|
-
const who = await firstValueFrom(this._accounts.get(
|
16205
|
-
const action = this._action(
|
16222
|
+
const who = await firstValueFrom(this._accounts.get(userId));
|
16223
|
+
const action = this._action(actionId, who.gender);
|
16206
16224
|
tooltip.note = this._translate.get('ActionTaken', who.name, action, ago);
|
16207
16225
|
}
|
16208
16226
|
}
|
16209
|
-
else if (!
|
16210
|
-
const ago = dayjs(
|
16211
|
-
if (
|
16227
|
+
else if (!estimate) {
|
16228
|
+
const ago = dayjs(received).fromNow();
|
16229
|
+
if (userId === this._session.userId) {
|
16212
16230
|
if (this._session.isImpersonating)
|
16213
16231
|
tooltip.note = this._translate.personalize('ReceivedBy', this._session.profile.gender, this._session.profile.name, ago);
|
16214
16232
|
else
|
16215
16233
|
tooltip.note = this._translate.get('YouReceived', ago);
|
16216
16234
|
}
|
16217
16235
|
else {
|
16218
|
-
const who = await firstValueFrom(this._accounts.get(
|
16236
|
+
const who = await firstValueFrom(this._accounts.get(userId));
|
16219
16237
|
tooltip.note = this._translate.personalize('ReceivedTime', who.gender, ago);
|
16220
16238
|
}
|
16221
16239
|
}
|
16222
|
-
if (
|
16223
|
-
if (
|
16240
|
+
if (substituteId) {
|
16241
|
+
if (substituteId === this._session.userId)
|
16224
16242
|
tooltip.substituting = this._translate.personalize('SubstitutingYou', this._session.gender);
|
16225
16243
|
else {
|
16226
|
-
const substituting = await firstValueFrom(this._accounts.get(
|
16244
|
+
const substituting = await firstValueFrom(this._accounts.get(substituteId));
|
16227
16245
|
tooltip.substituting = this._translate.personalize('SubstitutingFor', substituting.gender, substituting.name);
|
16228
16246
|
}
|
16229
16247
|
}
|
16230
|
-
if (
|
16231
|
-
const origin = this.model.recipients.find(r => r.id ===
|
16248
|
+
if (originId && !replied) {
|
16249
|
+
const origin = this.model.recipients.find(r => r.id === originId), action = this._action(origin.actionId, 'adjective');
|
16232
16250
|
if ((origin.repliedBy || origin.userId) === this._session.userId)
|
16233
|
-
tooltip.substituting = this._translate.get('ActionByYou',
|
16251
|
+
tooltip.substituting = this._translate.get('ActionByYou', action);
|
16234
16252
|
else if (origin.repliedBy) {
|
16235
16253
|
const who = await firstValueFrom(this._accounts.get(origin.userId));
|
16236
16254
|
const by = await firstValueFrom(this._accounts.get(origin.repliedBy));
|
16237
|
-
tooltip.substituting = this._translate.get('ActionByBy',
|
16255
|
+
tooltip.substituting = this._translate.get('ActionByBy', action, by.name, who.name);
|
16238
16256
|
}
|
16239
16257
|
else {
|
16240
16258
|
const who = await firstValueFrom(this._accounts.get(origin.userId));
|
16241
|
-
tooltip.substituting = this._translate.get('ActionBy',
|
16259
|
+
tooltip.substituting = this._translate.get('ActionBy', action, who.name);
|
16242
16260
|
}
|
16243
16261
|
}
|
16244
|
-
if (
|
16245
|
-
const escalation = this.model.log.find(l => l.type === 'Escalation' && l.recipientId ===
|
16262
|
+
if (escalated) {
|
16263
|
+
const escalation = this.model.log.find(l => l.type === 'Escalation' && l.recipientId === originId);
|
16246
16264
|
const who = await firstValueFrom(this._accounts.get(escalation.userId));
|
16247
16265
|
const duration = this._duration.transform(dayjs.duration(escalation.duration, 's'));
|
16248
16266
|
tooltip.escalation = this._translate.get('EscalatedFrom', who.name, duration);
|
16249
16267
|
}
|
16250
|
-
if (
|
16251
|
-
const duration = dayjs(
|
16268
|
+
if (replied) {
|
16269
|
+
const duration = dayjs(replied).diff(received, 's');
|
16252
16270
|
tooltip.duration = this._translate.get('DurationTime', this._duration.transform(duration));
|
16253
16271
|
}
|
16254
|
-
else if (
|
16255
|
-
if (
|
16272
|
+
else if (pending) {
|
16273
|
+
if (estimate)
|
16256
16274
|
tooltip.estimatedTime = this._timeEstimate(node);
|
16257
16275
|
else if (node.standardTime) {
|
16258
16276
|
const diff = node.standardTime - dayjs().diff(node.time, 's');
|
@@ -16262,27 +16280,41 @@ class FlowViewComponent extends TraceBase {
|
|
16262
16280
|
}
|
16263
16281
|
else if (node.standardTime)
|
16264
16282
|
tooltip.standardTime = this._translate.get('NodeStandardTime', this._duration.transform(node.standardTime));
|
16265
|
-
if (
|
16283
|
+
if (fyi)
|
16266
16284
|
tooltip.fyi = this._translate.get('FYI');
|
16267
16285
|
return { annotation, tooltip };
|
16268
16286
|
}
|
16287
|
+
/**
|
16288
|
+
*
|
16289
|
+
* @param name
|
16290
|
+
* @param gender
|
16291
|
+
* @returns
|
16292
|
+
*/
|
16269
16293
|
_action(name, gender) {
|
16270
16294
|
const action = this._session.profile.actions.find(a => a.name === name);
|
16271
|
-
if (
|
16272
|
-
|
16273
|
-
|
16274
|
-
|
16275
|
-
|
16295
|
+
if (!action)
|
16296
|
+
return name;
|
16297
|
+
switch (gender) {
|
16298
|
+
case 'adjective':
|
16299
|
+
return decapitalize(action.adjective || action.past || action.title);
|
16300
|
+
case You:
|
16301
|
+
const gender = this._session.gender, you = gender === 'Male' ? action.youMale :
|
16302
|
+
gender === 'Female' ? action.youFemale :
|
16303
|
+
null;
|
16304
|
+
return decapitalize(you || action.you || action.past || action.title);
|
16305
|
+
case 'Male':
|
16306
|
+
return decapitalize(action.pastMale || action.past || action.title);
|
16307
|
+
case 'Female':
|
16308
|
+
return decapitalize(action.pastFemale || action.past || action.title);
|
16309
|
+
default:
|
16310
|
+
return decapitalize(action.past || action.title);
|
16276
16311
|
}
|
16277
|
-
const past = gender === 'Male' ? action?.pastMale :
|
16278
|
-
gender === 'Female' ? action?.pastFemale : null;
|
16279
|
-
return (past || action?.past || action?.title || name).toLowerCase();
|
16280
16312
|
}
|
16281
16313
|
ngOnDestroy() {
|
16282
16314
|
this.diagram?.destroy();
|
16283
16315
|
super.ngOnDestroy();
|
16284
16316
|
}
|
16285
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: FlowViewComponent, deps: [{ token: AccountService }, { token: TranslateService }, { token: DurationFormatPipe }, { token: i0.ElementRef }, { token: SessionService }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component }); }
|
16317
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: FlowViewComponent, deps: [{ token: AccountService }, { token: TranslateService }, { token: Popup }, { token: DurationFormatPipe }, { token: i0.ElementRef }, { token: SessionService }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component }); }
|
16286
16318
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.2", type: FlowViewComponent, isStandalone: false, selector: "bizdoc-flow", inputs: { model: "model", version: "version", connectorType: "connectorType" }, host: { attributes: { "id": "diagram1", "dir": "ltr" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, styles: [":host{min-height:500px;min-width:400px;background-color:transparent!important}\n"] }); }
|
16287
16319
|
}
|
16288
16320
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: FlowViewComponent, decorators: [{
|
@@ -16291,7 +16323,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
16291
16323
|
id: 'diagram1',
|
16292
16324
|
dir: 'ltr'
|
16293
16325
|
}, styles: [":host{min-height:500px;min-width:400px;background-color:transparent!important}\n"] }]
|
16294
|
-
}], ctorParameters: () => [{ type: AccountService }, { type: TranslateService }, { type: DurationFormatPipe }, { type: i0.ElementRef }, { type: SessionService }, { type: HubService }], propDecorators: { model: [{
|
16326
|
+
}], ctorParameters: () => [{ type: AccountService }, { type: TranslateService }, { type: Popup }, { type: DurationFormatPipe }, { type: i0.ElementRef }, { type: SessionService }, { type: HubService }], propDecorators: { model: [{
|
16295
16327
|
type: Input
|
16296
16328
|
}], version: [{
|
16297
16329
|
type: Input
|
@@ -16444,90 +16476,90 @@ class TraceViewComponent extends TraceBase {
|
|
16444
16476
|
};
|
16445
16477
|
trace.push(step);
|
16446
16478
|
if (l.recipientId) {
|
16447
|
-
let recipient = recipients.find(r => r.id === l.recipientId);
|
16448
|
-
if (
|
16449
|
-
step.role = this._roleName(
|
16450
|
-
step.fyi =
|
16451
|
-
if (
|
16452
|
-
if (
|
16453
|
-
if (
|
16454
|
-
let who = await profileOf(
|
16455
|
-
if (
|
16479
|
+
let recipient = recipients.find(r => r.id === l.recipientId), { roleId, fyi, id, repliedBy, substituteId, userId } = recipient;
|
16480
|
+
if (roleId)
|
16481
|
+
step.role = this._roleName(roleId);
|
16482
|
+
step.fyi = fyi;
|
16483
|
+
if (substituteId) {
|
16484
|
+
if (repliedBy) {
|
16485
|
+
if (repliedBy === this._session.userId) {
|
16486
|
+
let who = await profileOf(userId);
|
16487
|
+
if (substituteId === this._session.userId)
|
16456
16488
|
step.name = this._translate.get('ByYou', nameOf(who));
|
16457
16489
|
else {
|
16458
|
-
let substituting = await profileOf(
|
16490
|
+
let substituting = await profileOf(substituteId);
|
16459
16491
|
step.name = this._translate.personalize('SubstitutingByYou', who.gender, nameOf(who), nameOf(substituting));
|
16460
16492
|
}
|
16461
16493
|
if (action)
|
16462
|
-
step.action = await actionBy(action, You,
|
16494
|
+
step.action = await actionBy(action, You, id);
|
16463
16495
|
}
|
16464
16496
|
else {
|
16465
|
-
let by = await profileOf(
|
16497
|
+
let by = await profileOf(repliedBy), who = await profileOf(userId), substituting = await profileOf(substituteId);
|
16466
16498
|
step.name = this._translate.get('SubstitutingBy', nameOf(who), nameOf(substituting), nameOf(by));
|
16467
16499
|
if (by.role)
|
16468
16500
|
step.role = by.role;
|
16469
16501
|
if (action)
|
16470
|
-
step.action = await actionBy(action, by.gender,
|
16502
|
+
step.action = await actionBy(action, by.gender, id);
|
16471
16503
|
}
|
16472
16504
|
}
|
16473
|
-
else if (
|
16474
|
-
let substituting = await profileOf(
|
16505
|
+
else if (userId === this._session.userId) {
|
16506
|
+
let substituting = await profileOf(substituteId);
|
16475
16507
|
step.name = this._translate.personalize('YouSubstituting', this._session.gender, nameOf(substituting));
|
16476
16508
|
if (action)
|
16477
|
-
step.action = await actionBy(action, this._session.gender,
|
16509
|
+
step.action = await actionBy(action, this._session.gender, id);
|
16478
16510
|
}
|
16479
|
-
else if (
|
16480
|
-
let who = await profileOf(
|
16511
|
+
else if (substituteId === this._session.userId) {
|
16512
|
+
let who = await profileOf(userId);
|
16481
16513
|
step.name = this._translate.personalize('SubstitutingForYou', who.gender, nameOf(who));
|
16482
16514
|
if (action)
|
16483
|
-
step.action = await actionBy(action, who.gender,
|
16515
|
+
step.action = await actionBy(action, who.gender, id);
|
16484
16516
|
}
|
16485
16517
|
else {
|
16486
|
-
let who = await profileOf(
|
16518
|
+
let who = await profileOf(userId), substituting = await profileOf(substituteId);
|
16487
16519
|
step.name = this._translate.personalize('Substituting', who.gender, nameOf(who), nameOf(substituting));
|
16488
16520
|
if (who.role)
|
16489
16521
|
step.role = who.role;
|
16490
16522
|
if (action)
|
16491
|
-
step.action = await actionBy(action, who.gender,
|
16523
|
+
step.action = await actionBy(action, who.gender, id);
|
16492
16524
|
}
|
16493
16525
|
}
|
16494
|
-
else if (
|
16495
|
-
if (
|
16496
|
-
let by = await profileOf(
|
16526
|
+
else if (repliedBy) {
|
16527
|
+
if (userId === this._session.userId) {
|
16528
|
+
let by = await profileOf(repliedBy);
|
16497
16529
|
step.name = this._translate.get('YouBy', nameOf(by));
|
16498
16530
|
if (action)
|
16499
|
-
step.action = await actionBy(action, by.gender,
|
16531
|
+
step.action = await actionBy(action, by.gender, id);
|
16500
16532
|
}
|
16501
16533
|
else {
|
16502
|
-
let who = await profileOf(
|
16503
|
-
if (
|
16534
|
+
let who = await profileOf(userId);
|
16535
|
+
if (repliedBy === this._session.userId) {
|
16504
16536
|
step.name = this._translate.get('ByYou', nameOf(who));
|
16505
16537
|
if (action)
|
16506
|
-
step.action = await actionBy(action, You,
|
16538
|
+
step.action = await actionBy(action, You, id);
|
16507
16539
|
}
|
16508
16540
|
else {
|
16509
|
-
let by = await profileOf(
|
16541
|
+
let by = await profileOf(repliedBy);
|
16510
16542
|
step.name = this._translate.get('By', nameOf(who), nameOf(by));
|
16511
16543
|
if (by.role)
|
16512
16544
|
step.role = by.role;
|
16513
16545
|
if (action)
|
16514
|
-
step.action = await actionBy(action, by.gender,
|
16546
|
+
step.action = await actionBy(action, by.gender, id);
|
16515
16547
|
}
|
16516
16548
|
}
|
16517
16549
|
}
|
16518
16550
|
else {
|
16519
|
-
if (
|
16551
|
+
if (userId === this._session.userId) {
|
16520
16552
|
step.name = this._translate.get('You');
|
16521
16553
|
if (action)
|
16522
|
-
step.action = await actionBy(action, You,
|
16554
|
+
step.action = await actionBy(action, You, id);
|
16523
16555
|
}
|
16524
16556
|
else {
|
16525
|
-
let who = await profileOf(
|
16557
|
+
let who = await profileOf(userId);
|
16526
16558
|
step.name = nameOf(who);
|
16527
16559
|
if (who.role)
|
16528
16560
|
step.role = who.role;
|
16529
16561
|
if (action)
|
16530
|
-
step.action = await actionBy(action, who.gender,
|
16562
|
+
step.action = await actionBy(action, who.gender, id);
|
16531
16563
|
}
|
16532
16564
|
}
|
16533
16565
|
}
|
@@ -16559,23 +16591,24 @@ class TraceViewComponent extends TraceBase {
|
|
16559
16591
|
}
|
16560
16592
|
}
|
16561
16593
|
for (let recipient of recipients) {
|
16562
|
-
|
16594
|
+
const { repliedBy, originId, note, escalated, pending, substituteId, actionId, userId, estimate, fyi, received, roleId, nodeId } = recipient;
|
16595
|
+
if (!pending && !estimate)
|
16563
16596
|
continue;
|
16564
16597
|
let step = {
|
16565
|
-
time:
|
16566
|
-
fyi
|
16567
|
-
estimate
|
16568
|
-
pending
|
16569
|
-
action:
|
16570
|
-
note
|
16571
|
-
type:
|
16572
|
-
duration:
|
16573
|
-
role:
|
16598
|
+
time: received,
|
16599
|
+
fyi,
|
16600
|
+
estimate,
|
16601
|
+
pending,
|
16602
|
+
action: actionId,
|
16603
|
+
note,
|
16604
|
+
type: estimate ? 'Estimate' : 'Pending',
|
16605
|
+
duration: pending ? dayjs().diff(received, 's') : null,
|
16606
|
+
role: roleId ? this._roleName(roleId) : null
|
16574
16607
|
};
|
16575
|
-
if (
|
16576
|
-
const node = this.model.workflow.nodes.find(n => n.id ===
|
16608
|
+
if (nodeId) {
|
16609
|
+
const node = this.model.workflow.nodes.find(n => n.id === nodeId);
|
16577
16610
|
if (node) {
|
16578
|
-
if (
|
16611
|
+
if (estimate) {
|
16579
16612
|
const { min, max } = super._estimateTime(node);
|
16580
16613
|
if (max)
|
16581
16614
|
step.durationMin = min,
|
@@ -16583,36 +16616,36 @@ class TraceViewComponent extends TraceBase {
|
|
16583
16616
|
}
|
16584
16617
|
}
|
16585
16618
|
}
|
16586
|
-
if (
|
16587
|
-
if (
|
16588
|
-
let who = await profileOf(
|
16619
|
+
if (substituteId) {
|
16620
|
+
if (substituteId === this._session.userId) {
|
16621
|
+
let who = await profileOf(userId);
|
16589
16622
|
step.name = this._translate.personalize('SubstitutingForYou', who.gender, nameOf(who));
|
16590
16623
|
}
|
16591
|
-
else if (
|
16592
|
-
let substituting = await profileOf(
|
16624
|
+
else if (userId === this._session.userId) {
|
16625
|
+
let substituting = await profileOf(substituteId);
|
16593
16626
|
step.name = this._translate.personalize('YouSubstituting', this._session.gender, nameOf(substituting));
|
16594
16627
|
}
|
16595
16628
|
else {
|
16596
|
-
let who = await profileOf(
|
16629
|
+
let who = await profileOf(userId), substituting = await profileOf(substituteId);
|
16597
16630
|
step.name = this._translate.personalize('Substituting', who.gender, nameOf(who), nameOf(substituting));
|
16598
16631
|
if (who.role)
|
16599
16632
|
step.role = who.role;
|
16600
16633
|
}
|
16601
16634
|
}
|
16602
|
-
else if (
|
16603
|
-
let who = await profileOf(
|
16604
|
-
if (
|
16635
|
+
else if (repliedBy) {
|
16636
|
+
let who = await profileOf(userId);
|
16637
|
+
if (repliedBy === this._session.userId)
|
16605
16638
|
step.name = this._translate.get('ByYou', nameOf(who));
|
16606
16639
|
else {
|
16607
|
-
let by = await profileOf(
|
16640
|
+
let by = await profileOf(repliedBy);
|
16608
16641
|
step.name = this._translate.get('By', nameOf(who), nameOf(by));
|
16609
16642
|
if (by.role)
|
16610
16643
|
step.role = by.role;
|
16611
16644
|
}
|
16612
16645
|
}
|
16613
|
-
else if (
|
16614
|
-
let escalation = this.model.log.find(l => l.type === 'Escalation' && l.recipientId ===
|
16615
|
-
let to = await profileOf(
|
16646
|
+
else if (escalated) {
|
16647
|
+
let escalation = this.model.log.find(l => l.type === 'Escalation' && l.recipientId === originId);
|
16648
|
+
let to = await profileOf(userId);
|
16616
16649
|
if (escalation.userId === this._session.userId)
|
16617
16650
|
step.name = this._translate.get('EscalatedByYou', nameOf(to));
|
16618
16651
|
else {
|
@@ -16621,10 +16654,10 @@ class TraceViewComponent extends TraceBase {
|
|
16621
16654
|
}
|
16622
16655
|
}
|
16623
16656
|
else {
|
16624
|
-
if (
|
16657
|
+
if (userId === this._session.userId)
|
16625
16658
|
step.name = this._translate.get('You');
|
16626
16659
|
else {
|
16627
|
-
let who = await profileOf(
|
16660
|
+
let who = await profileOf(userId);
|
16628
16661
|
step.name = nameOf(who);
|
16629
16662
|
if (who.role)
|
16630
16663
|
step.role = who.role;
|
@@ -21588,11 +21621,11 @@ class HomeComponent extends HomeBase {
|
|
21588
21621
|
item.instance.onPick();
|
21589
21622
|
}
|
21590
21623
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: HomeComponent, deps: [{ token: PanesRouter }, { token: SearchService }, { token: DocumentFactory }, { token: Popup }, { token: GuideService }, { token: AuthenticationImpl }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
21591
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: HomeComponent, isStandalone: false, selector: "bizdoc-home", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "mat-app-background" }, viewQueries: [{ propertyName: "drawer", first: true, predicate: MatSidenav, descendants: true, static: true }, { propertyName: "main", first: true, predicate: ["main"], descendants: true, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["input"], descendants: true, read: MatAutocompleteTrigger }], usesInheritance: true, ngImport: i0, template: "<!-- menu -->\r\n<div [class.nav-collapsed]=\"collapsed\" [class.nav-open]=\"subMenu\"\r\n [class.dialog]=\"isDialogMode\"\r\n class=\"nav-menu row\">\r\n\r\n <div class=\"column\">\r\n <!--@if(appLogo){\r\n <img [src]=\"appLogo\" class=\"app-logo\" />\r\n }-->\r\n @if (forms.length) {\r\n <div [class.active]=\"activeMenu === 'new'\" class=\"new-container\">\r\n <button mat-raised-button\r\n [bizdocTooltip]=\"'Compose'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n (click)=\"openNew()\" [disabled]=\"creating\"\r\n [attr.aria-label]=\"'Compose'| translate\" color=\"primary\" data-help=\"compose\">\r\n <mat-icon>add</mat-icon>\r\n <span class=\"nav-label\">{{'Compose'| translate}}</span>\r\n </button>\r\n </div>\r\n }\r\n <mat-nav-list>\r\n <mat-list-item class=\"nav-menu\" [attr.aria-label]=\"'Dashboard' | translate\"\r\n (click)=\"nav('dashboard')\" [class.active]=\"activeMenu === 'dashboard'\"\r\n data-help=\"dashboard\"\r\n [bizdocTooltip]=\"'Dashboard'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon>apps</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Dashboard' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item class=\"nav-menu\" (click)=\"openMailbox()\" [bizdocTooltip]=\"'Mailbox'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n [class.active]=\"activeMenu === 'mailbox'\"\r\n [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\r\n <mat-icon matListItemIcon [matBadge]=\"profile.inboxCount\" [matBadgeHidden]=\"!profile.inboxCount\" matBadgeColor=\"accent\" aria-hidden=\"false\">inbox</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{'Mailbox' | translate}}</span>\r\n </mat-list-item>\r\n @if (schedulerEnabled) {\r\n <mat-list-item class=\"nav-menu\" [attr.aria-label]=\"'Scheduler' | translate\"\r\n (click)=\"nav('schedule')\" [class.active]=\"activeMenu === 'schedule'\"\r\n [bizdocTooltip]=\"'Scheduler'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon><span class=\"nav-label\" matListItemTitle>{{ 'Scheduler' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n @if (chatEnabled) {\r\n <mat-list-item class=\"nav-menu\" data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\"\r\n (click)=\"nav('contacts')\" [class.active]=\"activeMenu === 'contacts'\"\r\n [bizdocTooltip]=\"'Chat'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\" aria-hidden=\"false\">chat</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{ 'Chat' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n <mat-divider></mat-divider>\r\n @if (enableAnalysis && profile.cubes.length) {\r\n <mat-list-item class=\"nav-menu\" (click)=\"openSubMenu('cube')\"\r\n [class.active]=\"activeMenu === 'cube'\"\r\n [bizdocTooltip]=\"'Cube'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n data-help=\"cube\" [attr.aria-label]=\"'Cube' | translate\">\r\n <mat-icon matListItemIcon>equalizer</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Cube' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n @if (profile.reports.length) {\r\n <mat-list-item class=\"nav-menu\" (click)=\"openSubMenu('reports')\"\r\n [class.active]=\"activeMenu === 'reports'\"\r\n [bizdocTooltip]=\"'Reports'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" data-help=\"reports\" [attr.aria-label]=\"'Reports' | translate\">\r\n <mat-icon matListItemIcon>list_alt</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Reports' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n @if (isSysAdmin) {\r\n <mat-divider></mat-divider>\r\n <mat-list-item class=\"nav-menu\" (click)=\"openSubMenu('admin')\"\r\n [class.active]=\"activeMenu === 'admin'\"\r\n [bizdocTooltip]=\"'System'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" [attr.aria-label]=\"'System' | translate\">\r\n <mat-icon matListItemIcon>device_hub</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{'Workflow' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n </mat-nav-list>\r\n <span class=\"divider\"></span>\r\n <!--<lottie name=\"lf30_editor_qr7zgmcs\" *ngIf=\"loading\"></lottie>-->\r\n <div class=\"sign-in\">\r\n <button mat-icon-button data-help=\"settings\" [bizdocTooltip]=\"'Settings' | translate\" bizdocTooltipPosition=\"above\"\r\n [attr.aria-label]=\"'Settings' | translate\" (click)=\"options($event)\">\r\n <mat-icon matAnimate=\"rotate\">settingson</mat-icon>\r\n </button>\r\n @if(canSignOut) {\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button data-help=\"sign-in\" [attr.aria-label]=\"'Power' | translate\" (click)=\"signout($event)\" [bizdocTooltip]=\"'Exit'|translate\" bizdocTooltipPosition=\"above\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">logout</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n <!-- -->\r\n @if (subMenu) {\r\n <div class=\"sub-menu\" (mouseleave)=\"collapseSubMenu()\" [@subMenu]=\"subMenuMode\" (@subMenu.done)=\"resize()\">\r\n @if (subMenu !== 'new') {\r\n <div class=\"action\">\r\n <button mat-icon-button (click)=\"togglePinned()\" [bizdocTooltip]=\"(pinned?'Collapse':'Expand')|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">{{pinned ? 'push_pin' : 'menu'}}</mat-icon></button>\r\n </div>\r\n }\r\n @switch (subMenu) {\r\n @case ('new') {\r\n <bizdoc-new-menu (change)=\"closeSubMenu()\"></bizdoc-new-menu>\r\n }\r\n @case ('mailbox') {\r\n <bizdoc-folders-menu [collapsed]=\"subMenuMode === 'shrink'\" (change)=\"collapseSubMenu()\"></bizdoc-folders-menu>\r\n }\r\n @case ('admin') {\r\n <bizdoc-admin-menu [collapsed]=\"subMenuMode === 'shrink'\"></bizdoc-admin-menu>\r\n }\r\n @case ('reports') {\r\n <bizdoc-reports-menu [collapsed]=\"subMenuMode === 'shrink'\" (change)=\"collapseSubMenu()\"></bizdoc-reports-menu>\r\n }\r\n @case ('cube') {\r\n <bizdoc-cube-menu [collapsed]=\"subMenuMode === 'shrink'\" (change)=\"collapseSubMenu()\"></bizdoc-cube-menu>\r\n }\r\n }\r\n </div>\r\n }\r\n @if (isDialogMode) {\r\n <div class=\"backdrop\"></div>\r\n }\r\n</div>\r\n<div class=\"main\">\r\n <!-- title -->\r\n <div class=\"row header\" [@title]=\"main.titleVariant\">\r\n <h1>\r\n @if (main.swap) {\r\n <button mat-icon-button (click)=\"main.back()\" [bizdocTooltip]=\"'Back'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_circle_left</mat-icon></button>\r\n }\r\n @for (p of main.panes; track p.id; let first = $first) {\r\n @if (!first) {\r\n <span class=\"breadcrumbs\">\\</span>\r\n }\r\n {{p.title}}\r\n }\r\n @if (guide) {\r\n <button mat-icon-button (click)=\"openGuide(guide)\" [bizdocTooltip]=\"'Help'|translate\"><mat-icon>help</mat-icon></button>\r\n }\r\n </h1>\r\n <span class=\"divider\">\r\n </span>\r\n <!--search-->\r\n <input type=\"text\"\r\n [@search]=\"searching\"\r\n (@search.done)=\"searching && focus()\"\r\n #input\r\n (keydown.escape)=\"collapse($event)\"\r\n [attr.aria-label]=\"'Search'|translate\"\r\n [formControl]=\"search\"\r\n [matAutocomplete]=\"auto\" class=\"search-box\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"goto($event)\" [displayWith]=\"displayWith\">\r\n @for (o of results | async; track o) {\r\n <mat-option [value]=\"o\">\r\n <ng-container (attached)=\"onAttached(o, $event)\" [cdkPortalOutlet]=\"o.portal\"></ng-container>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n <button mat-icon-button (click)=\"toggle($event)\" [bizdocTooltip]=\"'Search'|translate\" class=\"tool\"><mat-icon>search</mat-icon></button>\r\n <!--notifications-->\r\n <button mat-icon-button (click)=\"openNotifs($event)\" [bizdocTooltip]=\"'Notifications'|translate\" bizdocTooltipPosition=\"start\" class=\"tool\"\r\n [attr.aria-label]=\"'Notifications'| translate\"\r\n data-help=\"notifications\">\r\n <mat-icon [matBadge]=\"profile.messagesCount\" [matBadgeHidden]=\"!profile.messagesCount\"\r\n matBadgeColor=\"accent\" aria-hidden=\"false\"\r\n [class.filled]=\"profile.messagesCount\">\r\n {{profile.options.notifications?.active === true ? 'notifications':'notifications_off'}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <!--panes & tabs-->\r\n <bizdoc-panes-outlet (dialogChange)=\"isDialogMode = $event\" #main></bizdoc-panes-outlet>\r\n</div>\r\n", styles: [":host{display:flex;height:100%}::ng-deep .nav-collapsed .mdc-list-item{padding-right:0}::ng-deep [dir=rtl] .nav-collapsed .mdc-list-item{padding-left:0}.nav-menu{z-index:1}.nav-menu .sub-menu{min-width:210px;display:block;z-index:1;overflow-x:hidden;align-self:stretch}.nav-menu .sub-menu .action{display:flex;-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.nav-menu .new-container{margin:8px 8px 0;text-align:center}.nav-menu .new-container button{min-width:35px;padding:0 14px;height:40px}.nav-menu .new-container button .mat-icon{margin-right:2px;margin-left:2px}.nav-menu .nav-icon{display:none}.nav-menu.nav-collapsed .nav-menu{padding:0}.nav-menu.nav-collapsed .nav-icon{display:unset}.nav-menu.nav-collapsed .nav-label{display:none}.nav-menu.nav-collapsed .sign-in{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;align-items:center}.nav-menu .sign-in{display:flex;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;overflow:hidden;margin-bottom:5px;align-items:baseline}.backdrop{position:absolute;z-index:200;width:100%;height:100%;display:block;background:#424242;opacity:.8}.main{flex:1;overflow-x:hidden;display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.main .header{margin:4px 4px 0 0;align-items:center;min-width:max-content}.main .header h1{font-size:xx-large;margin:12px;font-weight:100}.main .header h1 button{vertical-align:middle}.main .header h1 .breadcrumbs{font-size:smaller}.main .header .search-box{font-size:large}\n"], dependencies: [{ kind: "directive", type: i1$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i7$1.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i2$5.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "component", type: i2$5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i2$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i2$6.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$6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i8.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatIconAnimate, selector: "[matAnimate]" }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: AdminMenuComponent, selector: "bizdoc-admin-menu", inputs: ["collapsed"] }, { kind: "component", type: SlotsComponent, selector: "bizdoc-panes-outlet", outputs: ["dialogChange"] }, { kind: "component", type: CubeMenuComponent, selector: "bizdoc-cube-menu", inputs: ["collapsed"], outputs: ["change"] }, { kind: "component", type: ReportsMenuComponent, selector: "bizdoc-reports-menu", inputs: ["collapsed"], outputs: ["change"] }, { kind: "component", type: FoldersMenuComponent, selector: "bizdoc-folders-menu", inputs: ["collapsed"], outputs: ["change"] }, { kind: "component", type: ComposeMenuComponent, selector: "bizdoc-new-menu", outputs: ["change"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], animations: [subMenuAnimation, panesTitleAnimation, searchAnimation] }); }
|
21624
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: HomeComponent, isStandalone: false, selector: "bizdoc-home", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "mat-app-background" }, viewQueries: [{ propertyName: "drawer", first: true, predicate: MatSidenav, descendants: true, static: true }, { propertyName: "main", first: true, predicate: ["main"], descendants: true, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["input"], descendants: true, read: MatAutocompleteTrigger }], usesInheritance: true, ngImport: i0, template: "<!-- menu -->\r\n<div [class.nav-collapsed]=\"collapsed\" [class.nav-open]=\"subMenu\"\r\n [class.dialog]=\"isDialogMode\"\r\n class=\"nav-menu row\">\r\n\r\n <div class=\"column\">\r\n <!--@if(appLogo){\r\n <img [src]=\"appLogo\" class=\"app-logo\" />\r\n }-->\r\n @if (forms.length) {\r\n <div [class.active]=\"activeMenu === 'new'\" class=\"new-container\">\r\n <button mat-raised-button\r\n [bizdocTooltip]=\"'Compose'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n (click)=\"openNew()\" [disabled]=\"creating\"\r\n [attr.aria-label]=\"'Compose'| translate\" color=\"primary\" data-help=\"compose\">\r\n <mat-icon>add</mat-icon>\r\n <span class=\"nav-label\">{{'Compose'| translate}}</span>\r\n </button>\r\n </div>\r\n }\r\n <mat-nav-list>\r\n <mat-list-item class=\"nav-menu\" [attr.aria-label]=\"'Dashboard' | translate\"\r\n (click)=\"nav('dashboard')\" [class.active]=\"activeMenu === 'dashboard'\"\r\n data-help=\"dashboard\"\r\n [bizdocTooltip]=\"'Dashboard'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon>apps</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Dashboard' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item class=\"nav-menu\" (click)=\"openMailbox()\" [bizdocTooltip]=\"'Mailbox'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n [class.active]=\"activeMenu === 'mailbox'\"\r\n [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\r\n <mat-icon matListItemIcon [matBadge]=\"profile.inboxCount\" [matBadgeHidden]=\"!profile.inboxCount\" matBadgeColor=\"accent\" aria-hidden=\"false\">inbox</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{'Mailbox' | translate}}</span>\r\n </mat-list-item>\r\n @if (schedulerEnabled) {\r\n <mat-list-item class=\"nav-menu\" [attr.aria-label]=\"'Scheduler' | translate\"\r\n (click)=\"nav('schedule')\" [class.active]=\"activeMenu === 'schedule'\"\r\n [bizdocTooltip]=\"'Scheduler'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon><span class=\"nav-label\" matListItemTitle>{{ 'Scheduler' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n @if (chatEnabled) {\r\n <mat-list-item class=\"nav-menu\" data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\"\r\n (click)=\"nav('contacts')\" [class.active]=\"activeMenu === 'contacts'\"\r\n [bizdocTooltip]=\"'Chat'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\" aria-hidden=\"false\">chat</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{ 'Chat' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n <mat-divider></mat-divider>\r\n @if (enableAnalysis && profile.cubes.length) {\r\n <mat-list-item class=\"nav-menu\" (click)=\"openSubMenu('cube')\"\r\n [class.active]=\"activeMenu === 'cube'\"\r\n [bizdocTooltip]=\"'Cube'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n data-help=\"cube\" [attr.aria-label]=\"'Cube' | translate\">\r\n <mat-icon matListItemIcon>equalizer</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Cube' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n @if (profile.reports.length) {\r\n <mat-list-item class=\"nav-menu\" (click)=\"openSubMenu('reports')\"\r\n [class.active]=\"activeMenu === 'reports'\"\r\n [bizdocTooltip]=\"'Reports'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" data-help=\"reports\" [attr.aria-label]=\"'Reports' | translate\">\r\n <mat-icon matListItemIcon>list_alt</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Reports' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n @if (isSysAdmin) {\r\n <mat-divider></mat-divider>\r\n <mat-list-item class=\"nav-menu\" (click)=\"openSubMenu('admin')\"\r\n [class.active]=\"activeMenu === 'admin'\"\r\n [bizdocTooltip]=\"'Tools'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" [attr.aria-label]=\"'System' | translate\">\r\n <mat-icon matListItemIcon>build</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{'Workflow' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n </mat-nav-list>\r\n <span class=\"divider\"></span>\r\n <!--<lottie name=\"lf30_editor_qr7zgmcs\" *ngIf=\"loading\"></lottie>-->\r\n <div class=\"sign-in\">\r\n <button mat-icon-button data-help=\"settings\" [bizdocTooltip]=\"'Settings' | translate\" bizdocTooltipPosition=\"above\"\r\n [attr.aria-label]=\"'Settings' | translate\" (click)=\"options($event)\">\r\n <mat-icon matAnimate=\"rotate\">settingson</mat-icon>\r\n </button>\r\n @if(canSignOut) {\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button data-help=\"sign-in\" [attr.aria-label]=\"'Power' | translate\" (click)=\"signout($event)\" [bizdocTooltip]=\"'Exit'|translate\" bizdocTooltipPosition=\"above\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">logout</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n <!-- -->\r\n @if (subMenu) {\r\n <div class=\"sub-menu\" (mouseleave)=\"collapseSubMenu()\" [@subMenu]=\"subMenuMode\" (@subMenu.done)=\"resize()\">\r\n @if (subMenu !== 'new') {\r\n <div class=\"action\">\r\n <button mat-icon-button (click)=\"togglePinned()\" [bizdocTooltip]=\"(pinned?'Collapse':'Expand')|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">{{pinned ? 'push_pin' : 'menu'}}</mat-icon></button>\r\n </div>\r\n }\r\n @switch (subMenu) {\r\n @case ('new') {\r\n <bizdoc-new-menu (change)=\"closeSubMenu()\"></bizdoc-new-menu>\r\n }\r\n @case ('mailbox') {\r\n <bizdoc-folders-menu [collapsed]=\"subMenuMode === 'shrink'\" (change)=\"collapseSubMenu()\"></bizdoc-folders-menu>\r\n }\r\n @case ('admin') {\r\n <bizdoc-admin-menu [collapsed]=\"subMenuMode === 'shrink'\"></bizdoc-admin-menu>\r\n }\r\n @case ('reports') {\r\n <bizdoc-reports-menu [collapsed]=\"subMenuMode === 'shrink'\" (change)=\"collapseSubMenu()\"></bizdoc-reports-menu>\r\n }\r\n @case ('cube') {\r\n <bizdoc-cube-menu [collapsed]=\"subMenuMode === 'shrink'\" (change)=\"collapseSubMenu()\"></bizdoc-cube-menu>\r\n }\r\n }\r\n </div>\r\n }\r\n @if (isDialogMode) {\r\n <div class=\"backdrop\"></div>\r\n }\r\n</div>\r\n<div class=\"main\">\r\n <!-- title -->\r\n <div class=\"row header\" [@title]=\"main.titleVariant\">\r\n <h1>\r\n @if (main.swap) {\r\n <button mat-icon-button (click)=\"main.back()\" [bizdocTooltip]=\"'Back'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_circle_left</mat-icon></button>\r\n }\r\n @for (p of main.panes; track p.id; let first = $first) {\r\n @if (!first) {\r\n <span class=\"breadcrumbs\">\\</span>\r\n }\r\n {{p.title}}\r\n }\r\n @if (guide) {\r\n <button mat-icon-button (click)=\"openGuide(guide)\" [bizdocTooltip]=\"'Help'|translate\"><mat-icon>help</mat-icon></button>\r\n }\r\n </h1>\r\n <span class=\"divider\">\r\n </span>\r\n <!--search-->\r\n <input type=\"text\"\r\n [@search]=\"searching\"\r\n (@search.done)=\"searching && focus()\"\r\n #input\r\n (keydown.escape)=\"collapse($event)\"\r\n [attr.aria-label]=\"'Search'|translate\"\r\n [formControl]=\"search\"\r\n [matAutocomplete]=\"auto\" class=\"search-box\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"goto($event)\" [displayWith]=\"displayWith\">\r\n @for (o of results | async; track o) {\r\n <mat-option [value]=\"o\">\r\n <ng-container (attached)=\"onAttached(o, $event)\" [cdkPortalOutlet]=\"o.portal\"></ng-container>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n <button mat-icon-button (click)=\"toggle($event)\" [bizdocTooltip]=\"'Search'|translate\" class=\"tool\"><mat-icon>search</mat-icon></button>\r\n <!--notifications-->\r\n <button mat-icon-button (click)=\"openNotifs($event)\" [bizdocTooltip]=\"'Notifications'|translate\" bizdocTooltipPosition=\"start\" class=\"tool\"\r\n [attr.aria-label]=\"'Notifications'| translate\"\r\n data-help=\"notifications\">\r\n <mat-icon [matBadge]=\"profile.messagesCount\" [matBadgeHidden]=\"!profile.messagesCount\"\r\n matBadgeColor=\"accent\" aria-hidden=\"false\"\r\n [class.filled]=\"profile.messagesCount\">\r\n {{profile.options.notifications?.active === true ? 'notifications':'notifications_off'}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <!--panes & tabs-->\r\n <bizdoc-panes-outlet (dialogChange)=\"isDialogMode = $event\" #main></bizdoc-panes-outlet>\r\n</div>\r\n", styles: [":host{display:flex;height:100%}::ng-deep .nav-collapsed .mdc-list-item{padding-right:0}::ng-deep [dir=rtl] .nav-collapsed .mdc-list-item{padding-left:0}.nav-menu{z-index:1}.nav-menu .sub-menu{min-width:210px;display:block;z-index:1;overflow-x:hidden;align-self:stretch}.nav-menu .sub-menu .action{display:flex;-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.nav-menu .new-container{margin:8px 8px 0;text-align:center}.nav-menu .new-container button{min-width:35px;padding:0 14px;height:40px}.nav-menu .new-container button .mat-icon{margin-right:2px;margin-left:2px}.nav-menu .nav-icon{display:none}.nav-menu.nav-collapsed .nav-menu{padding:0}.nav-menu.nav-collapsed .nav-icon{display:unset}.nav-menu.nav-collapsed .nav-label{display:none}.nav-menu.nav-collapsed .sign-in{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;align-items:center}.nav-menu .sign-in{display:flex;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;overflow:hidden;margin-bottom:5px;align-items:baseline}.backdrop{position:absolute;z-index:200;width:100%;height:100%;display:block;background:#424242;opacity:.8}.main{flex:1;overflow-x:hidden;display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.main .header{margin:4px 4px 0 0;align-items:center;min-width:max-content}.main .header h1{font-size:xx-large;margin:12px;font-weight:100}.main .header h1 button{vertical-align:middle}.main .header h1 .breadcrumbs{font-size:smaller}.main .header .search-box{font-size:large}\n"], dependencies: [{ kind: "directive", type: i1$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i7$1.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i2$5.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "component", type: i2$5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i2$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i2$6.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$6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i8.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatIconAnimate, selector: "[matAnimate]" }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: AdminMenuComponent, selector: "bizdoc-admin-menu", inputs: ["collapsed"] }, { kind: "component", type: SlotsComponent, selector: "bizdoc-panes-outlet", outputs: ["dialogChange"] }, { kind: "component", type: CubeMenuComponent, selector: "bizdoc-cube-menu", inputs: ["collapsed"], outputs: ["change"] }, { kind: "component", type: ReportsMenuComponent, selector: "bizdoc-reports-menu", inputs: ["collapsed"], outputs: ["change"] }, { kind: "component", type: FoldersMenuComponent, selector: "bizdoc-folders-menu", inputs: ["collapsed"], outputs: ["change"] }, { kind: "component", type: ComposeMenuComponent, selector: "bizdoc-new-menu", outputs: ["change"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], animations: [subMenuAnimation, panesTitleAnimation, searchAnimation] }); }
|
21592
21625
|
}
|
21593
21626
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: HomeComponent, decorators: [{
|
21594
21627
|
type: Component,
|
21595
|
-
args: [{ standalone: false, selector: 'bizdoc-home', host: { class: 'mat-app-background' }, animations: [subMenuAnimation, panesTitleAnimation, searchAnimation], template: "<!-- menu -->\r\n<div [class.nav-collapsed]=\"collapsed\" [class.nav-open]=\"subMenu\"\r\n [class.dialog]=\"isDialogMode\"\r\n class=\"nav-menu row\">\r\n\r\n <div class=\"column\">\r\n <!--@if(appLogo){\r\n <img [src]=\"appLogo\" class=\"app-logo\" />\r\n }-->\r\n @if (forms.length) {\r\n <div [class.active]=\"activeMenu === 'new'\" class=\"new-container\">\r\n <button mat-raised-button\r\n [bizdocTooltip]=\"'Compose'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n (click)=\"openNew()\" [disabled]=\"creating\"\r\n [attr.aria-label]=\"'Compose'| translate\" color=\"primary\" data-help=\"compose\">\r\n <mat-icon>add</mat-icon>\r\n <span class=\"nav-label\">{{'Compose'| translate}}</span>\r\n </button>\r\n </div>\r\n }\r\n <mat-nav-list>\r\n <mat-list-item class=\"nav-menu\" [attr.aria-label]=\"'Dashboard' | translate\"\r\n (click)=\"nav('dashboard')\" [class.active]=\"activeMenu === 'dashboard'\"\r\n data-help=\"dashboard\"\r\n [bizdocTooltip]=\"'Dashboard'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon>apps</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Dashboard' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item class=\"nav-menu\" (click)=\"openMailbox()\" [bizdocTooltip]=\"'Mailbox'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n [class.active]=\"activeMenu === 'mailbox'\"\r\n [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\r\n <mat-icon matListItemIcon [matBadge]=\"profile.inboxCount\" [matBadgeHidden]=\"!profile.inboxCount\" matBadgeColor=\"accent\" aria-hidden=\"false\">inbox</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{'Mailbox' | translate}}</span>\r\n </mat-list-item>\r\n @if (schedulerEnabled) {\r\n <mat-list-item class=\"nav-menu\" [attr.aria-label]=\"'Scheduler' | translate\"\r\n (click)=\"nav('schedule')\" [class.active]=\"activeMenu === 'schedule'\"\r\n [bizdocTooltip]=\"'Scheduler'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon><span class=\"nav-label\" matListItemTitle>{{ 'Scheduler' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n @if (chatEnabled) {\r\n <mat-list-item class=\"nav-menu\" data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\"\r\n (click)=\"nav('contacts')\" [class.active]=\"activeMenu === 'contacts'\"\r\n [bizdocTooltip]=\"'Chat'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\" aria-hidden=\"false\">chat</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{ 'Chat' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n <mat-divider></mat-divider>\r\n @if (enableAnalysis && profile.cubes.length) {\r\n <mat-list-item class=\"nav-menu\" (click)=\"openSubMenu('cube')\"\r\n [class.active]=\"activeMenu === 'cube'\"\r\n [bizdocTooltip]=\"'Cube'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n data-help=\"cube\" [attr.aria-label]=\"'Cube' | translate\">\r\n <mat-icon matListItemIcon>equalizer</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Cube' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n @if (profile.reports.length) {\r\n <mat-list-item class=\"nav-menu\" (click)=\"openSubMenu('reports')\"\r\n [class.active]=\"activeMenu === 'reports'\"\r\n [bizdocTooltip]=\"'Reports'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" data-help=\"reports\" [attr.aria-label]=\"'Reports' | translate\">\r\n <mat-icon matListItemIcon>list_alt</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Reports' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n @if (isSysAdmin) {\r\n <mat-divider></mat-divider>\r\n <mat-list-item class=\"nav-menu\" (click)=\"openSubMenu('admin')\"\r\n [class.active]=\"activeMenu === 'admin'\"\r\n [bizdocTooltip]=\"'System'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" [attr.aria-label]=\"'System' | translate\">\r\n <mat-icon matListItemIcon>device_hub</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{'Workflow' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n </mat-nav-list>\r\n <span class=\"divider\"></span>\r\n <!--<lottie name=\"lf30_editor_qr7zgmcs\" *ngIf=\"loading\"></lottie>-->\r\n <div class=\"sign-in\">\r\n <button mat-icon-button data-help=\"settings\" [bizdocTooltip]=\"'Settings' | translate\" bizdocTooltipPosition=\"above\"\r\n [attr.aria-label]=\"'Settings' | translate\" (click)=\"options($event)\">\r\n <mat-icon matAnimate=\"rotate\">settingson</mat-icon>\r\n </button>\r\n @if(canSignOut) {\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button data-help=\"sign-in\" [attr.aria-label]=\"'Power' | translate\" (click)=\"signout($event)\" [bizdocTooltip]=\"'Exit'|translate\" bizdocTooltipPosition=\"above\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">logout</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n <!-- -->\r\n @if (subMenu) {\r\n <div class=\"sub-menu\" (mouseleave)=\"collapseSubMenu()\" [@subMenu]=\"subMenuMode\" (@subMenu.done)=\"resize()\">\r\n @if (subMenu !== 'new') {\r\n <div class=\"action\">\r\n <button mat-icon-button (click)=\"togglePinned()\" [bizdocTooltip]=\"(pinned?'Collapse':'Expand')|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">{{pinned ? 'push_pin' : 'menu'}}</mat-icon></button>\r\n </div>\r\n }\r\n @switch (subMenu) {\r\n @case ('new') {\r\n <bizdoc-new-menu (change)=\"closeSubMenu()\"></bizdoc-new-menu>\r\n }\r\n @case ('mailbox') {\r\n <bizdoc-folders-menu [collapsed]=\"subMenuMode === 'shrink'\" (change)=\"collapseSubMenu()\"></bizdoc-folders-menu>\r\n }\r\n @case ('admin') {\r\n <bizdoc-admin-menu [collapsed]=\"subMenuMode === 'shrink'\"></bizdoc-admin-menu>\r\n }\r\n @case ('reports') {\r\n <bizdoc-reports-menu [collapsed]=\"subMenuMode === 'shrink'\" (change)=\"collapseSubMenu()\"></bizdoc-reports-menu>\r\n }\r\n @case ('cube') {\r\n <bizdoc-cube-menu [collapsed]=\"subMenuMode === 'shrink'\" (change)=\"collapseSubMenu()\"></bizdoc-cube-menu>\r\n }\r\n }\r\n </div>\r\n }\r\n @if (isDialogMode) {\r\n <div class=\"backdrop\"></div>\r\n }\r\n</div>\r\n<div class=\"main\">\r\n <!-- title -->\r\n <div class=\"row header\" [@title]=\"main.titleVariant\">\r\n <h1>\r\n @if (main.swap) {\r\n <button mat-icon-button (click)=\"main.back()\" [bizdocTooltip]=\"'Back'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_circle_left</mat-icon></button>\r\n }\r\n @for (p of main.panes; track p.id; let first = $first) {\r\n @if (!first) {\r\n <span class=\"breadcrumbs\">\\</span>\r\n }\r\n {{p.title}}\r\n }\r\n @if (guide) {\r\n <button mat-icon-button (click)=\"openGuide(guide)\" [bizdocTooltip]=\"'Help'|translate\"><mat-icon>help</mat-icon></button>\r\n }\r\n </h1>\r\n <span class=\"divider\">\r\n </span>\r\n <!--search-->\r\n <input type=\"text\"\r\n [@search]=\"searching\"\r\n (@search.done)=\"searching && focus()\"\r\n #input\r\n (keydown.escape)=\"collapse($event)\"\r\n [attr.aria-label]=\"'Search'|translate\"\r\n [formControl]=\"search\"\r\n [matAutocomplete]=\"auto\" class=\"search-box\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"goto($event)\" [displayWith]=\"displayWith\">\r\n @for (o of results | async; track o) {\r\n <mat-option [value]=\"o\">\r\n <ng-container (attached)=\"onAttached(o, $event)\" [cdkPortalOutlet]=\"o.portal\"></ng-container>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n <button mat-icon-button (click)=\"toggle($event)\" [bizdocTooltip]=\"'Search'|translate\" class=\"tool\"><mat-icon>search</mat-icon></button>\r\n <!--notifications-->\r\n <button mat-icon-button (click)=\"openNotifs($event)\" [bizdocTooltip]=\"'Notifications'|translate\" bizdocTooltipPosition=\"start\" class=\"tool\"\r\n [attr.aria-label]=\"'Notifications'| translate\"\r\n data-help=\"notifications\">\r\n <mat-icon [matBadge]=\"profile.messagesCount\" [matBadgeHidden]=\"!profile.messagesCount\"\r\n matBadgeColor=\"accent\" aria-hidden=\"false\"\r\n [class.filled]=\"profile.messagesCount\">\r\n {{profile.options.notifications?.active === true ? 'notifications':'notifications_off'}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <!--panes & tabs-->\r\n <bizdoc-panes-outlet (dialogChange)=\"isDialogMode = $event\" #main></bizdoc-panes-outlet>\r\n</div>\r\n", styles: [":host{display:flex;height:100%}::ng-deep .nav-collapsed .mdc-list-item{padding-right:0}::ng-deep [dir=rtl] .nav-collapsed .mdc-list-item{padding-left:0}.nav-menu{z-index:1}.nav-menu .sub-menu{min-width:210px;display:block;z-index:1;overflow-x:hidden;align-self:stretch}.nav-menu .sub-menu .action{display:flex;-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.nav-menu .new-container{margin:8px 8px 0;text-align:center}.nav-menu .new-container button{min-width:35px;padding:0 14px;height:40px}.nav-menu .new-container button .mat-icon{margin-right:2px;margin-left:2px}.nav-menu .nav-icon{display:none}.nav-menu.nav-collapsed .nav-menu{padding:0}.nav-menu.nav-collapsed .nav-icon{display:unset}.nav-menu.nav-collapsed .nav-label{display:none}.nav-menu.nav-collapsed .sign-in{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;align-items:center}.nav-menu .sign-in{display:flex;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;overflow:hidden;margin-bottom:5px;align-items:baseline}.backdrop{position:absolute;z-index:200;width:100%;height:100%;display:block;background:#424242;opacity:.8}.main{flex:1;overflow-x:hidden;display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.main .header{margin:4px 4px 0 0;align-items:center;min-width:max-content}.main .header h1{font-size:xx-large;margin:12px;font-weight:100}.main .header h1 button{vertical-align:middle}.main .header h1 .breadcrumbs{font-size:smaller}.main .header .search-box{font-size:large}\n"] }]
|
21628
|
+
args: [{ standalone: false, selector: 'bizdoc-home', host: { class: 'mat-app-background' }, animations: [subMenuAnimation, panesTitleAnimation, searchAnimation], template: "<!-- menu -->\r\n<div [class.nav-collapsed]=\"collapsed\" [class.nav-open]=\"subMenu\"\r\n [class.dialog]=\"isDialogMode\"\r\n class=\"nav-menu row\">\r\n\r\n <div class=\"column\">\r\n <!--@if(appLogo){\r\n <img [src]=\"appLogo\" class=\"app-logo\" />\r\n }-->\r\n @if (forms.length) {\r\n <div [class.active]=\"activeMenu === 'new'\" class=\"new-container\">\r\n <button mat-raised-button\r\n [bizdocTooltip]=\"'Compose'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n (click)=\"openNew()\" [disabled]=\"creating\"\r\n [attr.aria-label]=\"'Compose'| translate\" color=\"primary\" data-help=\"compose\">\r\n <mat-icon>add</mat-icon>\r\n <span class=\"nav-label\">{{'Compose'| translate}}</span>\r\n </button>\r\n </div>\r\n }\r\n <mat-nav-list>\r\n <mat-list-item class=\"nav-menu\" [attr.aria-label]=\"'Dashboard' | translate\"\r\n (click)=\"nav('dashboard')\" [class.active]=\"activeMenu === 'dashboard'\"\r\n data-help=\"dashboard\"\r\n [bizdocTooltip]=\"'Dashboard'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon>apps</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Dashboard' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item class=\"nav-menu\" (click)=\"openMailbox()\" [bizdocTooltip]=\"'Mailbox'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n [class.active]=\"activeMenu === 'mailbox'\"\r\n [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\r\n <mat-icon matListItemIcon [matBadge]=\"profile.inboxCount\" [matBadgeHidden]=\"!profile.inboxCount\" matBadgeColor=\"accent\" aria-hidden=\"false\">inbox</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{'Mailbox' | translate}}</span>\r\n </mat-list-item>\r\n @if (schedulerEnabled) {\r\n <mat-list-item class=\"nav-menu\" [attr.aria-label]=\"'Scheduler' | translate\"\r\n (click)=\"nav('schedule')\" [class.active]=\"activeMenu === 'schedule'\"\r\n [bizdocTooltip]=\"'Scheduler'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon><span class=\"nav-label\" matListItemTitle>{{ 'Scheduler' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n @if (chatEnabled) {\r\n <mat-list-item class=\"nav-menu\" data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\"\r\n (click)=\"nav('contacts')\" [class.active]=\"activeMenu === 'contacts'\"\r\n [bizdocTooltip]=\"'Chat'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\" aria-hidden=\"false\">chat</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{ 'Chat' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n <mat-divider></mat-divider>\r\n @if (enableAnalysis && profile.cubes.length) {\r\n <mat-list-item class=\"nav-menu\" (click)=\"openSubMenu('cube')\"\r\n [class.active]=\"activeMenu === 'cube'\"\r\n [bizdocTooltip]=\"'Cube'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n data-help=\"cube\" [attr.aria-label]=\"'Cube' | translate\">\r\n <mat-icon matListItemIcon>equalizer</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Cube' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n @if (profile.reports.length) {\r\n <mat-list-item class=\"nav-menu\" (click)=\"openSubMenu('reports')\"\r\n [class.active]=\"activeMenu === 'reports'\"\r\n [bizdocTooltip]=\"'Reports'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" data-help=\"reports\" [attr.aria-label]=\"'Reports' | translate\">\r\n <mat-icon matListItemIcon>list_alt</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Reports' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n @if (isSysAdmin) {\r\n <mat-divider></mat-divider>\r\n <mat-list-item class=\"nav-menu\" (click)=\"openSubMenu('admin')\"\r\n [class.active]=\"activeMenu === 'admin'\"\r\n [bizdocTooltip]=\"'Tools'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" [attr.aria-label]=\"'System' | translate\">\r\n <mat-icon matListItemIcon>build</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{'Workflow' | translate}}</span>\r\n </mat-list-item>\r\n }\r\n </mat-nav-list>\r\n <span class=\"divider\"></span>\r\n <!--<lottie name=\"lf30_editor_qr7zgmcs\" *ngIf=\"loading\"></lottie>-->\r\n <div class=\"sign-in\">\r\n <button mat-icon-button data-help=\"settings\" [bizdocTooltip]=\"'Settings' | translate\" bizdocTooltipPosition=\"above\"\r\n [attr.aria-label]=\"'Settings' | translate\" (click)=\"options($event)\">\r\n <mat-icon matAnimate=\"rotate\">settingson</mat-icon>\r\n </button>\r\n @if(canSignOut) {\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button data-help=\"sign-in\" [attr.aria-label]=\"'Power' | translate\" (click)=\"signout($event)\" [bizdocTooltip]=\"'Exit'|translate\" bizdocTooltipPosition=\"above\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">logout</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n <!-- -->\r\n @if (subMenu) {\r\n <div class=\"sub-menu\" (mouseleave)=\"collapseSubMenu()\" [@subMenu]=\"subMenuMode\" (@subMenu.done)=\"resize()\">\r\n @if (subMenu !== 'new') {\r\n <div class=\"action\">\r\n <button mat-icon-button (click)=\"togglePinned()\" [bizdocTooltip]=\"(pinned?'Collapse':'Expand')|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">{{pinned ? 'push_pin' : 'menu'}}</mat-icon></button>\r\n </div>\r\n }\r\n @switch (subMenu) {\r\n @case ('new') {\r\n <bizdoc-new-menu (change)=\"closeSubMenu()\"></bizdoc-new-menu>\r\n }\r\n @case ('mailbox') {\r\n <bizdoc-folders-menu [collapsed]=\"subMenuMode === 'shrink'\" (change)=\"collapseSubMenu()\"></bizdoc-folders-menu>\r\n }\r\n @case ('admin') {\r\n <bizdoc-admin-menu [collapsed]=\"subMenuMode === 'shrink'\"></bizdoc-admin-menu>\r\n }\r\n @case ('reports') {\r\n <bizdoc-reports-menu [collapsed]=\"subMenuMode === 'shrink'\" (change)=\"collapseSubMenu()\"></bizdoc-reports-menu>\r\n }\r\n @case ('cube') {\r\n <bizdoc-cube-menu [collapsed]=\"subMenuMode === 'shrink'\" (change)=\"collapseSubMenu()\"></bizdoc-cube-menu>\r\n }\r\n }\r\n </div>\r\n }\r\n @if (isDialogMode) {\r\n <div class=\"backdrop\"></div>\r\n }\r\n</div>\r\n<div class=\"main\">\r\n <!-- title -->\r\n <div class=\"row header\" [@title]=\"main.titleVariant\">\r\n <h1>\r\n @if (main.swap) {\r\n <button mat-icon-button (click)=\"main.back()\" [bizdocTooltip]=\"'Back'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_circle_left</mat-icon></button>\r\n }\r\n @for (p of main.panes; track p.id; let first = $first) {\r\n @if (!first) {\r\n <span class=\"breadcrumbs\">\\</span>\r\n }\r\n {{p.title}}\r\n }\r\n @if (guide) {\r\n <button mat-icon-button (click)=\"openGuide(guide)\" [bizdocTooltip]=\"'Help'|translate\"><mat-icon>help</mat-icon></button>\r\n }\r\n </h1>\r\n <span class=\"divider\">\r\n </span>\r\n <!--search-->\r\n <input type=\"text\"\r\n [@search]=\"searching\"\r\n (@search.done)=\"searching && focus()\"\r\n #input\r\n (keydown.escape)=\"collapse($event)\"\r\n [attr.aria-label]=\"'Search'|translate\"\r\n [formControl]=\"search\"\r\n [matAutocomplete]=\"auto\" class=\"search-box\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"goto($event)\" [displayWith]=\"displayWith\">\r\n @for (o of results | async; track o) {\r\n <mat-option [value]=\"o\">\r\n <ng-container (attached)=\"onAttached(o, $event)\" [cdkPortalOutlet]=\"o.portal\"></ng-container>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n <button mat-icon-button (click)=\"toggle($event)\" [bizdocTooltip]=\"'Search'|translate\" class=\"tool\"><mat-icon>search</mat-icon></button>\r\n <!--notifications-->\r\n <button mat-icon-button (click)=\"openNotifs($event)\" [bizdocTooltip]=\"'Notifications'|translate\" bizdocTooltipPosition=\"start\" class=\"tool\"\r\n [attr.aria-label]=\"'Notifications'| translate\"\r\n data-help=\"notifications\">\r\n <mat-icon [matBadge]=\"profile.messagesCount\" [matBadgeHidden]=\"!profile.messagesCount\"\r\n matBadgeColor=\"accent\" aria-hidden=\"false\"\r\n [class.filled]=\"profile.messagesCount\">\r\n {{profile.options.notifications?.active === true ? 'notifications':'notifications_off'}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <!--panes & tabs-->\r\n <bizdoc-panes-outlet (dialogChange)=\"isDialogMode = $event\" #main></bizdoc-panes-outlet>\r\n</div>\r\n", styles: [":host{display:flex;height:100%}::ng-deep .nav-collapsed .mdc-list-item{padding-right:0}::ng-deep [dir=rtl] .nav-collapsed .mdc-list-item{padding-left:0}.nav-menu{z-index:1}.nav-menu .sub-menu{min-width:210px;display:block;z-index:1;overflow-x:hidden;align-self:stretch}.nav-menu .sub-menu .action{display:flex;-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.nav-menu .new-container{margin:8px 8px 0;text-align:center}.nav-menu .new-container button{min-width:35px;padding:0 14px;height:40px}.nav-menu .new-container button .mat-icon{margin-right:2px;margin-left:2px}.nav-menu .nav-icon{display:none}.nav-menu.nav-collapsed .nav-menu{padding:0}.nav-menu.nav-collapsed .nav-icon{display:unset}.nav-menu.nav-collapsed .nav-label{display:none}.nav-menu.nav-collapsed .sign-in{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;align-items:center}.nav-menu .sign-in{display:flex;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;overflow:hidden;margin-bottom:5px;align-items:baseline}.backdrop{position:absolute;z-index:200;width:100%;height:100%;display:block;background:#424242;opacity:.8}.main{flex:1;overflow-x:hidden;display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.main .header{margin:4px 4px 0 0;align-items:center;min-width:max-content}.main .header h1{font-size:xx-large;margin:12px;font-weight:100}.main .header h1 button{vertical-align:middle}.main .header h1 .breadcrumbs{font-size:smaller}.main .header .search-box{font-size:large}\n"] }]
|
21596
21629
|
}], ctorParameters: () => [{ type: PanesRouter }, { type: SearchService }, { type: DocumentFactory }, { type: Popup }, { type: GuideService }, { type: AuthenticationImpl }, { type: undefined, decorators: [{
|
21597
21630
|
type: Inject,
|
21598
21631
|
args: [BIZDOC_CONFIG]
|
@@ -22053,7 +22086,7 @@ const PANES_CONFIG = [
|
|
22053
22086
|
]
|
22054
22087
|
}, {
|
22055
22088
|
path: 'trace',
|
22056
|
-
icon: '
|
22089
|
+
icon: 'network_node',
|
22057
22090
|
component: TracePaneComponent,
|
22058
22091
|
policy: OpenPolicy.Tab | OpenPolicy.Expandable
|
22059
22092
|
}, {
|
@@ -22077,7 +22110,7 @@ const PANES_CONFIG = [
|
|
22077
22110
|
policy: OpenPolicy.Tab | OpenPolicy.Expandable
|
22078
22111
|
}, {
|
22079
22112
|
path: 'trace',
|
22080
|
-
icon: '
|
22113
|
+
icon: 'network_node',
|
22081
22114
|
component: TracePaneComponent,
|
22082
22115
|
policy: OpenPolicy.Tab | OpenPolicy.Expandable
|
22083
22116
|
}, {
|
@@ -28975,8 +29008,8 @@ let TimelineViewComponent = class TimelineViewComponent {
|
|
28975
29008
|
task.name = this._translate.get('WhoSubstituting', u[0].name, u[1].name);
|
28976
29009
|
if (u[0].role)
|
28977
29010
|
task.name += `, ${u[0].role}`;
|
28978
|
-
if (r.
|
28979
|
-
const role = this._session.profile.roles.find(o => o.name === r.
|
29011
|
+
if (r.roleId) {
|
29012
|
+
const role = this._session.profile.roles.find(o => o.name === r.roleId);
|
28980
29013
|
if (role)
|
28981
29014
|
task.name += `, ${role.name}`;
|
28982
29015
|
}
|
@@ -28988,8 +29021,8 @@ let TimelineViewComponent = class TimelineViewComponent {
|
|
28988
29021
|
task.name = u.name;
|
28989
29022
|
if (u.role)
|
28990
29023
|
task.name += `, ${u.role}`;
|
28991
|
-
else if (r.
|
28992
|
-
const role = this._session.profile.roles.find(o => o.name === r.
|
29024
|
+
else if (r.roleId) {
|
29025
|
+
const role = this._session.profile.roles.find(o => o.name === r.roleId);
|
28993
29026
|
if (role)
|
28994
29027
|
task.name += `, ${role.name}`;
|
28995
29028
|
}
|