@things-factory/organization 7.0.0-alpha.8 → 7.0.0
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/client/component/approval-line-brief.ts +3 -3
- package/client/component/approval-line-items-editor-popup.ts +22 -8
- package/client/component/approval-line-items-editor.ts +40 -35
- package/client/component/approval-line-selector.ts +9 -10
- package/client/component/approval-line-templates-manager.ts +9 -4
- package/client/component/approval-line-view.ts +15 -9
- package/client/component/assignees-editor-popup.ts +10 -6
- package/client/component/assignees-editor.ts +5 -2
- package/client/component/assignees-view.ts +2 -2
- package/client/component/department-selector.ts +9 -10
- package/client/component/department-view.ts +3 -1
- package/client/component/recipients-editor-popup.ts +10 -6
- package/client/component/recipients-editor.ts +10 -12
- package/client/component/recipients-view.ts +2 -2
- package/client/grist-editor/grist-editor-approval-line.ts +4 -9
- package/client/grist-editor/grist-editor-assignees.ts +4 -7
- package/client/grist-editor/grist-editor-recipients.ts +4 -10
- package/client/grist-editor/grist-renderer-approval-line.ts +4 -3
- package/client/grist-editor/grist-renderer-assignees.ts +4 -3
- package/client/grist-editor/grist-renderer-recipients.ts +4 -3
- package/client/pages/approval-line/common-approval-line-templates-page.ts +5 -5
- package/client/pages/approval-line/my-approval-line-templates-page.ts +7 -5
- package/client/pages/department/department-importer.ts +8 -19
- package/client/pages/department/department-list-page.ts +5 -5
- package/client/pages/department/department-tree-page.ts +36 -10
- package/client/pages/employee/employee-importer.ts +5 -12
- package/client/pages/employee/employee-list-page.ts +12 -31
- package/client/pages/employee/employees-by-department.ts +1 -6
- package/dist-client/component/approval-line-brief.js +3 -3
- package/dist-client/component/approval-line-brief.js.map +1 -1
- package/dist-client/component/approval-line-items-editor-popup.d.ts +2 -1
- package/dist-client/component/approval-line-items-editor-popup.js +21 -8
- package/dist-client/component/approval-line-items-editor-popup.js.map +1 -1
- package/dist-client/component/approval-line-items-editor.js +12 -7
- package/dist-client/component/approval-line-items-editor.js.map +1 -1
- package/dist-client/component/approval-line-selector.d.ts +1 -0
- package/dist-client/component/approval-line-selector.js +9 -10
- package/dist-client/component/approval-line-selector.js.map +1 -1
- package/dist-client/component/approval-line-templates-manager.d.ts +3 -2
- package/dist-client/component/approval-line-templates-manager.js +7 -3
- package/dist-client/component/approval-line-templates-manager.js.map +1 -1
- package/dist-client/component/approval-line-view.js +13 -9
- package/dist-client/component/approval-line-view.js.map +1 -1
- package/dist-client/component/assignees-editor-popup.d.ts +1 -0
- package/dist-client/component/assignees-editor-popup.js +10 -6
- package/dist-client/component/assignees-editor-popup.js.map +1 -1
- package/dist-client/component/assignees-editor.d.ts +1 -0
- package/dist-client/component/assignees-editor.js +5 -2
- package/dist-client/component/assignees-editor.js.map +1 -1
- package/dist-client/component/assignees-view.js +2 -2
- package/dist-client/component/assignees-view.js.map +1 -1
- package/dist-client/component/department-selector.d.ts +1 -0
- package/dist-client/component/department-selector.js +9 -10
- package/dist-client/component/department-selector.js.map +1 -1
- package/dist-client/component/department-view.js +3 -0
- package/dist-client/component/department-view.js.map +1 -1
- package/dist-client/component/recipients-editor-popup.d.ts +1 -0
- package/dist-client/component/recipients-editor-popup.js +10 -6
- package/dist-client/component/recipients-editor-popup.js.map +1 -1
- package/dist-client/component/recipients-editor.d.ts +1 -0
- package/dist-client/component/recipients-editor.js +10 -12
- package/dist-client/component/recipients-editor.js.map +1 -1
- package/dist-client/component/recipients-view.js +2 -2
- package/dist-client/component/recipients-view.js.map +1 -1
- package/dist-client/grist-editor/grist-editor-approval-line.d.ts +1 -0
- package/dist-client/grist-editor/grist-editor-approval-line.js +4 -9
- package/dist-client/grist-editor/grist-editor-approval-line.js.map +1 -1
- package/dist-client/grist-editor/grist-editor-assignees.d.ts +1 -0
- package/dist-client/grist-editor/grist-editor-assignees.js +4 -6
- package/dist-client/grist-editor/grist-editor-assignees.js.map +1 -1
- package/dist-client/grist-editor/grist-editor-department-object.js.map +1 -1
- package/dist-client/grist-editor/grist-editor-recipients.d.ts +1 -0
- package/dist-client/grist-editor/grist-editor-recipients.js +4 -9
- package/dist-client/grist-editor/grist-editor-recipients.js.map +1 -1
- package/dist-client/grist-editor/grist-renderer-approval-line.d.ts +1 -1
- package/dist-client/grist-editor/grist-renderer-approval-line.js +3 -3
- package/dist-client/grist-editor/grist-renderer-approval-line.js.map +1 -1
- package/dist-client/grist-editor/grist-renderer-assignees.d.ts +1 -1
- package/dist-client/grist-editor/grist-renderer-assignees.js +3 -3
- package/dist-client/grist-editor/grist-renderer-assignees.js.map +1 -1
- package/dist-client/grist-editor/grist-renderer-department-object.js.map +1 -1
- package/dist-client/grist-editor/grist-renderer-recipients.d.ts +1 -1
- package/dist-client/grist-editor/grist-renderer-recipients.js +3 -3
- package/dist-client/grist-editor/grist-renderer-recipients.js.map +1 -1
- package/dist-client/pages/approval-line/common-approval-line-templates-page.d.ts +10 -2
- package/dist-client/pages/approval-line/common-approval-line-templates-page.js +5 -5
- package/dist-client/pages/approval-line/common-approval-line-templates-page.js.map +1 -1
- package/dist-client/pages/approval-line/my-approval-line-templates-page.d.ts +10 -2
- package/dist-client/pages/approval-line/my-approval-line-templates-page.js +6 -5
- package/dist-client/pages/approval-line/my-approval-line-templates-page.js.map +1 -1
- package/dist-client/pages/department/department-importer.d.ts +1 -0
- package/dist-client/pages/department/department-importer.js +5 -12
- package/dist-client/pages/department/department-importer.js.map +1 -1
- package/dist-client/pages/department/department-list-page.d.ts +10 -2
- package/dist-client/pages/department/department-list-page.js +5 -5
- package/dist-client/pages/department/department-list-page.js.map +1 -1
- package/dist-client/pages/department/department-tree-page.d.ts +8 -0
- package/dist-client/pages/department/department-tree-page.js +33 -10
- package/dist-client/pages/department/department-tree-page.js.map +1 -1
- package/dist-client/pages/employee/employee-importer.d.ts +1 -0
- package/dist-client/pages/employee/employee-importer.js +5 -12
- package/dist-client/pages/employee/employee-importer.js.map +1 -1
- package/dist-client/pages/employee/employee-list-page.d.ts +10 -2
- package/dist-client/pages/employee/employee-list-page.js +8 -24
- package/dist-client/pages/employee/employee-list-page.js.map +1 -1
- package/dist-client/pages/employee/employees-by-department.js +1 -6
- package/dist-client/pages/employee/employees-by-department.js.map +1 -1
- package/dist-client/route.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/index.d.ts +2 -0
- package/dist-server/routes.d.ts +0 -0
- package/dist-server/routes.js +0 -1
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/approval-line/approval-line-item.d.ts +19 -0
- package/dist-server/service/approval-line/approval-line-item.js +5 -5
- package/dist-server/service/approval-line/approval-line-item.js.map +1 -1
- package/dist-server/service/approval-line/approval-line-mutation.d.ts +15 -0
- package/dist-server/service/approval-line/approval-line-mutation.js +2 -2
- package/dist-server/service/approval-line/approval-line-mutation.js.map +1 -1
- package/dist-server/service/approval-line/approval-line-query.d.ts +17 -0
- package/dist-server/service/approval-line/approval-line-query.js +6 -6
- package/dist-server/service/approval-line/approval-line-query.js.map +1 -1
- package/dist-server/service/approval-line/approval-line-type.d.ts +26 -0
- package/dist-server/service/approval-line/approval-line-type.js +8 -8
- package/dist-server/service/approval-line/approval-line-type.js.map +1 -1
- package/dist-server/service/approval-line/approval-line.d.ts +33 -0
- package/dist-server/service/approval-line/approval-line.js +14 -9
- package/dist-server/service/approval-line/approval-line.js.map +1 -1
- package/dist-server/service/approval-line/index.d.ts +6 -0
- package/dist-server/service/department/department-history.d.ts +31 -0
- package/dist-server/service/department/department-history.js +15 -7
- package/dist-server/service/department/department-history.js.map +1 -1
- package/dist-server/service/department/department-mutation.d.ts +10 -0
- package/dist-server/service/department/department-mutation.js +2 -2
- package/dist-server/service/department/department-mutation.js.map +1 -1
- package/dist-server/service/department/department-query.d.ts +17 -0
- package/dist-server/service/department/department-query.js +7 -6
- package/dist-server/service/department/department-query.js.map +1 -1
- package/dist-server/service/department/department-type.d.ts +29 -0
- package/dist-server/service/department/department-type.js +6 -6
- package/dist-server/service/department/department-type.js.map +1 -1
- package/dist-server/service/department/department.d.ts +28 -0
- package/dist-server/service/department/department.js +9 -10
- package/dist-server/service/department/department.js.map +1 -1
- package/dist-server/service/department/event-subscriber.d.ts +7 -0
- package/dist-server/service/department/event-subscriber.js +2 -2
- package/dist-server/service/department/event-subscriber.js.map +1 -1
- package/dist-server/service/department/index.d.ts +8 -0
- package/dist-server/service/employee/employee-history.d.ts +41 -0
- package/dist-server/service/employee/employee-history.js +6 -7
- package/dist-server/service/employee/employee-history.js.map +1 -1
- package/dist-server/service/employee/employee-mutation.d.ts +12 -0
- package/dist-server/service/employee/employee-mutation.js +2 -2
- package/dist-server/service/employee/employee-mutation.js.map +1 -1
- package/dist-server/service/employee/employee-query.d.ts +22 -0
- package/dist-server/service/employee/employee-query.js +3 -3
- package/dist-server/service/employee/employee-query.js.map +1 -1
- package/dist-server/service/employee/employee-type.d.ts +56 -0
- package/dist-server/service/employee/employee-type.js +10 -10
- package/dist-server/service/employee/employee-type.js.map +1 -1
- package/dist-server/service/employee/employee.d.ts +49 -0
- package/dist-server/service/employee/employee.js +13 -15
- package/dist-server/service/employee/employee.js.map +1 -1
- package/dist-server/service/employee/event-subscriber.d.ts +7 -0
- package/dist-server/service/employee/event-subscriber.js +2 -2
- package/dist-server/service/employee/event-subscriber.js.map +1 -1
- package/dist-server/service/employee/index.d.ts +8 -0
- package/dist-server/service/index.d.ts +8 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/server/routes.ts +0 -2
- package/server/service/approval-line/approval-line-query.ts +16 -4
- package/server/service/approval-line/approval-line.ts +27 -7
- package/server/service/department/department-history.ts +31 -9
- package/server/service/department/department-query.ts +13 -3
- package/server/service/department/department.ts +3 -3
- package/server/service/employee/employee-history.ts +5 -5
- package/server/service/employee/employee-query.ts +3 -3
- package/server/service/employee/employee.ts +3 -3
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import '@material/web/icon/icon.js'
|
|
1
2
|
import '../component/approval-line-items-editor-popup.js'
|
|
2
3
|
|
|
3
4
|
import { html, TemplateResult } from 'lit'
|
|
@@ -17,8 +18,8 @@ export class GristEditorApprovalLine extends OxGristEditor {
|
|
|
17
18
|
return !value || !(value instanceof Array) || value.length == 0
|
|
18
19
|
? html``
|
|
19
20
|
: value.length == 1
|
|
20
|
-
? html`<
|
|
21
|
-
: html`<
|
|
21
|
+
? html`<md-icon style="--md-icon-size:1.3em">person</md-icon>`
|
|
22
|
+
: html`<md-icon style="--md-icon-size:1.3em">group</md-icon>`
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
_onclick(e: Event): void {
|
|
@@ -58,13 +59,7 @@ export class GristEditorApprovalLine extends OxGristEditor {
|
|
|
58
59
|
var value = this.value || []
|
|
59
60
|
|
|
60
61
|
var template =
|
|
61
|
-
this.template ||
|
|
62
|
-
html`
|
|
63
|
-
<approval-line-items-editor-popup
|
|
64
|
-
.value=${value}
|
|
65
|
-
.confirmCallback=${confirmCallback.bind(this)}
|
|
66
|
-
></approval-line-items-editor-popup>
|
|
67
|
-
`
|
|
62
|
+
this.template || html` <approval-line-items-editor-popup .value=${value} .confirmCallback=${confirmCallback.bind(this)}></approval-line-items-editor-popup> `
|
|
68
63
|
|
|
69
64
|
this.popup = openPopup(template, {
|
|
70
65
|
backdrop: true,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import '@material/web/icon/icon.js'
|
|
1
2
|
import '../component/assignees-editor-popup.js'
|
|
2
3
|
|
|
3
4
|
import { html, TemplateResult } from 'lit'
|
|
@@ -17,8 +18,8 @@ export class GristEditorAssignees extends OxGristEditor {
|
|
|
17
18
|
return !value || !(value instanceof Array) || value.length == 0
|
|
18
19
|
? html``
|
|
19
20
|
: value.length == 1
|
|
20
|
-
? html`<
|
|
21
|
-
: html`<
|
|
21
|
+
? html`<md-icon style="--md-icon-size:1.3em">person</md-icon>`
|
|
22
|
+
: html`<md-icon style="--md-icon-size:1.3em">group</md-icon>`
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
_onclick(e: Event): void {
|
|
@@ -57,11 +58,7 @@ export class GristEditorAssignees extends OxGristEditor {
|
|
|
57
58
|
|
|
58
59
|
var value = this.value || []
|
|
59
60
|
|
|
60
|
-
var template =
|
|
61
|
-
this.template ||
|
|
62
|
-
html`
|
|
63
|
-
<assignees-editor-popup .value=${value} .confirmCallback=${confirmCallback.bind(this)}></assignees-editor-popup>
|
|
64
|
-
`
|
|
61
|
+
var template = this.template || html` <assignees-editor-popup .value=${value} .confirmCallback=${confirmCallback.bind(this)}></assignees-editor-popup> `
|
|
65
62
|
|
|
66
63
|
this.popup = openPopup(template, {
|
|
67
64
|
backdrop: true,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import '@material/web/icon/icon.js'
|
|
1
2
|
import '../component/recipients-editor-popup.js'
|
|
2
3
|
|
|
3
4
|
import { html, TemplateResult } from 'lit'
|
|
@@ -17,8 +18,8 @@ export class GristEditorRecipients extends OxGristEditor {
|
|
|
17
18
|
return !value || !(value instanceof Array) || value.length == 0
|
|
18
19
|
? html``
|
|
19
20
|
: value.length == 1
|
|
20
|
-
? html`<
|
|
21
|
-
: html`<
|
|
21
|
+
? html`<md-icon style="--md-icon-size:1.3em">person</md-icon>`
|
|
22
|
+
: html`<md-icon style="--md-icon-size:1.3em">group</md-icon>`
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
_onclick(e: Event): void {
|
|
@@ -57,14 +58,7 @@ export class GristEditorRecipients extends OxGristEditor {
|
|
|
57
58
|
|
|
58
59
|
var value = this.value || []
|
|
59
60
|
|
|
60
|
-
var template =
|
|
61
|
-
this.template ||
|
|
62
|
-
html`
|
|
63
|
-
<recipients-editor-popup
|
|
64
|
-
.value=${value}
|
|
65
|
-
.confirmCallback=${confirmCallback.bind(this)}
|
|
66
|
-
></recipients-editor-popup>
|
|
67
|
-
`
|
|
61
|
+
var template = this.template || html` <recipients-editor-popup .value=${value} .confirmCallback=${confirmCallback.bind(this)}></recipients-editor-popup> `
|
|
68
62
|
|
|
69
63
|
this.popup = openPopup(template, {
|
|
70
64
|
backdrop: true,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import '@material/
|
|
1
|
+
import '@material/web/icon/icon.js'
|
|
2
|
+
|
|
2
3
|
import { html } from 'lit-html'
|
|
3
4
|
|
|
4
5
|
import { FieldRenderer } from '@operato/data-grist'
|
|
@@ -7,6 +8,6 @@ export const GristRendererApprovalLine: FieldRenderer = (value, column, record,
|
|
|
7
8
|
return !value || !(value instanceof Array) || value.length == 0
|
|
8
9
|
? html``
|
|
9
10
|
: value.length == 1
|
|
10
|
-
? html`<
|
|
11
|
-
: html`<
|
|
11
|
+
? html`<md-icon style="--md-icon-size:1.3em">person</md-icon>`
|
|
12
|
+
: html`<md-icon style="--md-icon-size:1.3em">group</md-icon>`
|
|
12
13
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import '@material/
|
|
1
|
+
import '@material/web/icon/icon.js'
|
|
2
|
+
|
|
2
3
|
import { html } from 'lit-html'
|
|
3
4
|
|
|
4
5
|
import { FieldRenderer } from '@operato/data-grist'
|
|
@@ -7,6 +8,6 @@ export const GristRendererAssignees: FieldRenderer = (value, column, record, row
|
|
|
7
8
|
return !value || !(value instanceof Array) || value.length == 0
|
|
8
9
|
? html``
|
|
9
10
|
: value.length == 1
|
|
10
|
-
? html`<
|
|
11
|
-
: html`<
|
|
11
|
+
? html`<md-icon style="--md-icon-size:1.3em">person</md-icon>`
|
|
12
|
+
: html`<md-icon style="--md-icon-size:1.3em">group</md-icon>`
|
|
12
13
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import '@material/
|
|
1
|
+
import '@material/web/icon/icon.js'
|
|
2
|
+
|
|
2
3
|
import { html } from 'lit-html'
|
|
3
4
|
|
|
4
5
|
import { FieldRenderer } from '@operato/data-grist'
|
|
@@ -7,6 +8,6 @@ export const GristRendererRecipients: FieldRenderer = (value, column, record, ro
|
|
|
7
8
|
return !value || !(value instanceof Array) || value.length == 0
|
|
8
9
|
? html``
|
|
9
10
|
: value.length == 1
|
|
10
|
-
? html`<
|
|
11
|
-
: html`<
|
|
11
|
+
? html`<md-icon style="--md-icon-size:1.3em">person</md-icon>`
|
|
12
|
+
: html`<md-icon style="--md-icon-size:1.3em">group</md-icon>`
|
|
12
13
|
}
|
|
@@ -67,7 +67,10 @@ export class CommonApprovalLineTemplatesPage extends connect(store)(localize(i18
|
|
|
67
67
|
{
|
|
68
68
|
icon: 'delete',
|
|
69
69
|
title: i18next.t('button.delete'),
|
|
70
|
-
action: this.deleteApprovalLines.bind(this)
|
|
70
|
+
action: this.deleteApprovalLines.bind(this),
|
|
71
|
+
emphasis: {
|
|
72
|
+
danger: true
|
|
73
|
+
}
|
|
71
74
|
}
|
|
72
75
|
],
|
|
73
76
|
toolbar: false
|
|
@@ -80,10 +83,7 @@ export class CommonApprovalLineTemplatesPage extends connect(store)(localize(i18
|
|
|
80
83
|
return html`
|
|
81
84
|
<ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
|
|
82
85
|
<div slot="headroom" class="header">
|
|
83
|
-
<div class="title">
|
|
84
|
-
<mwc-icon>summarize</mwc-icon>
|
|
85
|
-
${i18next.t('title.common-approval-line template list')}
|
|
86
|
-
</div>
|
|
86
|
+
<div class="title">${i18next.t('title.common-approval-line template list')}</div>
|
|
87
87
|
|
|
88
88
|
<ox-context-page-toolbar class="actions" .context=${this.context}></ox-context-page-toolbar>
|
|
89
89
|
</div>
|
|
@@ -67,7 +67,10 @@ export class MyApprovalLineTemplatesPage extends connect(store)(localize(i18next
|
|
|
67
67
|
{
|
|
68
68
|
icon: 'delete',
|
|
69
69
|
title: i18next.t('button.delete'),
|
|
70
|
-
action: this.deleteApprovalLines.bind(this)
|
|
70
|
+
action: this.deleteApprovalLines.bind(this),
|
|
71
|
+
emphasis: {
|
|
72
|
+
danger: true
|
|
73
|
+
}
|
|
71
74
|
}
|
|
72
75
|
],
|
|
73
76
|
toolbar: false
|
|
@@ -80,10 +83,7 @@ export class MyApprovalLineTemplatesPage extends connect(store)(localize(i18next
|
|
|
80
83
|
return html`
|
|
81
84
|
<ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
|
|
82
85
|
<div slot="headroom" class="header">
|
|
83
|
-
<div class="title">
|
|
84
|
-
<mwc-icon>summarize</mwc-icon>
|
|
85
|
-
${i18next.t('title.my-approval-line template list')}
|
|
86
|
-
</div>
|
|
86
|
+
<div class="title">${i18next.t('title.my-approval-line template list')}</div>
|
|
87
87
|
|
|
88
88
|
<ox-context-page-toolbar class="actions" .context=${this.context}></ox-context-page-toolbar>
|
|
89
89
|
</div>
|
|
@@ -118,6 +118,8 @@ export class MyApprovalLineTemplatesPage extends connect(store)(localize(i18next
|
|
|
118
118
|
.confirmCallback=${async model => {
|
|
119
119
|
await this.updateApprovalLine(id, model)
|
|
120
120
|
await this.grist.fetch()
|
|
121
|
+
|
|
122
|
+
return false
|
|
121
123
|
}}
|
|
122
124
|
.value=${model}
|
|
123
125
|
></approval-line-items-editor-popup>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import '@material/web/icon/icon.js'
|
|
1
2
|
import '@operato/data-grist'
|
|
2
3
|
|
|
3
4
|
import gql from 'graphql-tag'
|
|
@@ -7,30 +8,22 @@ import { property } from 'lit/decorators.js'
|
|
|
7
8
|
import { client } from '@operato/graphql'
|
|
8
9
|
import { i18next } from '@operato/i18n'
|
|
9
10
|
import { isMobileDevice } from '@operato/utils'
|
|
11
|
+
import { ButtonContainerStyles } from '@operato/styles'
|
|
10
12
|
|
|
11
13
|
export class DepartmentImporter extends LitElement {
|
|
12
14
|
static styles = [
|
|
15
|
+
ButtonContainerStyles,
|
|
13
16
|
css`
|
|
14
17
|
:host {
|
|
15
18
|
display: flex;
|
|
16
19
|
flex-direction: column;
|
|
17
20
|
|
|
18
|
-
background-color:
|
|
21
|
+
background-color: var(--md-sys-color-surface);
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
ox-grist {
|
|
22
25
|
flex: 1;
|
|
23
26
|
}
|
|
24
|
-
|
|
25
|
-
.button-container {
|
|
26
|
-
display: flex;
|
|
27
|
-
margin-left: auto;
|
|
28
|
-
padding: var(--padding-default);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
mwc-button {
|
|
32
|
-
margin-left: var(--margin-default);
|
|
33
|
-
}
|
|
34
27
|
`
|
|
35
28
|
]
|
|
36
29
|
|
|
@@ -60,21 +53,18 @@ export class DepartmentImporter extends LitElement {
|
|
|
60
53
|
]
|
|
61
54
|
}
|
|
62
55
|
|
|
63
|
-
|
|
64
56
|
render() {
|
|
65
57
|
return html`
|
|
66
58
|
<ox-grist
|
|
67
59
|
.mode=${isMobileDevice() ? 'LIST' : 'GRID'}
|
|
68
60
|
.config=${this.columns}
|
|
69
|
-
.data=${
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
}
|
|
61
|
+
.data=${{
|
|
62
|
+
records: this.departments
|
|
63
|
+
}}
|
|
74
64
|
></ox-grist>
|
|
75
65
|
|
|
76
66
|
<div class="button-container">
|
|
77
|
-
<
|
|
67
|
+
<button @click="${this.save.bind(this)}"><md-icon>save</md-icon>${i18next.t('button.save')}</button>
|
|
78
68
|
</div>
|
|
79
69
|
`
|
|
80
70
|
}
|
|
@@ -94,4 +84,3 @@ export class DepartmentImporter extends LitElement {
|
|
|
94
84
|
this.dispatchEvent(new CustomEvent('imported'))
|
|
95
85
|
}
|
|
96
86
|
}
|
|
97
|
-
|
|
@@ -100,7 +100,10 @@ export class DepartmentListPage extends connect(store)(localize(i18next)(ScopedE
|
|
|
100
100
|
{
|
|
101
101
|
icon: 'delete',
|
|
102
102
|
title: i18next.t('button.delete'),
|
|
103
|
-
action: this.delete.bind(this)
|
|
103
|
+
action: this.delete.bind(this),
|
|
104
|
+
emphasis: {
|
|
105
|
+
danger: true
|
|
106
|
+
}
|
|
104
107
|
}
|
|
105
108
|
].filter(Boolean),
|
|
106
109
|
toolbar: false
|
|
@@ -115,10 +118,7 @@ export class DepartmentListPage extends connect(store)(localize(i18next)(ScopedE
|
|
|
115
118
|
return html`
|
|
116
119
|
<ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
|
|
117
120
|
<div slot="headroom" class="header">
|
|
118
|
-
<div class="title">
|
|
119
|
-
<mwc-icon>summarize</mwc-icon>
|
|
120
|
-
${i18next.t('title.department list')}
|
|
121
|
-
</div>
|
|
121
|
+
<div class="title">${i18next.t('title.department list')}</div>
|
|
122
122
|
|
|
123
123
|
<div class="filters">
|
|
124
124
|
<ox-filters-form class="filter" autofocus without-search></ox-filters-form>
|
|
@@ -2,7 +2,7 @@ import '@operato/data-tree'
|
|
|
2
2
|
import '@operato/context/ox-context-page-toolbar.js'
|
|
3
3
|
|
|
4
4
|
import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
|
|
5
|
-
import { PageView, store } from '@operato/shell'
|
|
5
|
+
import { CustomAlert, PageView, store } from '@operato/shell'
|
|
6
6
|
import { css, html } from 'lit'
|
|
7
7
|
import { customElement, property, query, state } from 'lit/decorators.js'
|
|
8
8
|
import { ScopedElementsMixin } from '@open-wc/scoped-elements'
|
|
@@ -105,7 +105,10 @@ export class DepartmentTreePage extends connect(store)(localize(i18next)(ScopedE
|
|
|
105
105
|
{
|
|
106
106
|
icon: 'delete',
|
|
107
107
|
title: i18next.t('button.delete'),
|
|
108
|
-
action: this.delete.bind(this)
|
|
108
|
+
action: this.delete.bind(this),
|
|
109
|
+
emphasis: {
|
|
110
|
+
danger: true
|
|
111
|
+
}
|
|
109
112
|
}
|
|
110
113
|
].filter(Boolean),
|
|
111
114
|
exportable: {
|
|
@@ -122,15 +125,17 @@ export class DepartmentTreePage extends connect(store)(localize(i18next)(ScopedE
|
|
|
122
125
|
render() {
|
|
123
126
|
return html`
|
|
124
127
|
<div class="header">
|
|
125
|
-
<div class="title">
|
|
126
|
-
<mwc-icon>summarize</mwc-icon>
|
|
127
|
-
${i18next.t('title.department list')}
|
|
128
|
-
</div>
|
|
128
|
+
<div class="title">${i18next.t('title.department list')}</div>
|
|
129
129
|
|
|
130
130
|
<ox-context-page-toolbar class="actions" .context=${this.context}></ox-context-page-toolbar>
|
|
131
131
|
</div>
|
|
132
132
|
|
|
133
|
-
<ox-tree-vertical
|
|
133
|
+
<ox-tree-vertical
|
|
134
|
+
.data=${this.root}
|
|
135
|
+
.selected=${this.selected}
|
|
136
|
+
@select=${this.onSelect.bind(this)}
|
|
137
|
+
label-property="name"
|
|
138
|
+
></ox-tree-vertical>
|
|
134
139
|
|
|
135
140
|
<department-view .department=${this.selected}></department-view>
|
|
136
141
|
`
|
|
@@ -193,7 +198,14 @@ export class DepartmentTreePage extends connect(store)(localize(i18next)(ScopedE
|
|
|
193
198
|
const { id, controlNo, name, description, picture, active, manager } = this.departmentView.department
|
|
194
199
|
|
|
195
200
|
if (!id) {
|
|
196
|
-
|
|
201
|
+
await CustomAlert({
|
|
202
|
+
type: 'warning',
|
|
203
|
+
title: 'department not selected',
|
|
204
|
+
text: 'Please select department first.',
|
|
205
|
+
confirmButton: { text: i18next.t('button.confirm') }
|
|
206
|
+
})
|
|
207
|
+
|
|
208
|
+
return
|
|
197
209
|
}
|
|
198
210
|
|
|
199
211
|
var patch = {
|
|
@@ -234,12 +246,26 @@ export class DepartmentTreePage extends connect(store)(localize(i18next)(ScopedE
|
|
|
234
246
|
|
|
235
247
|
async delete() {
|
|
236
248
|
if (!this.selected) {
|
|
237
|
-
|
|
249
|
+
await CustomAlert({
|
|
250
|
+
type: 'warning',
|
|
251
|
+
title: 'department not selected',
|
|
252
|
+
text: 'Please select department first.',
|
|
253
|
+
confirmButton: { text: i18next.t('button.confirm') }
|
|
254
|
+
})
|
|
255
|
+
|
|
256
|
+
return
|
|
238
257
|
}
|
|
239
258
|
|
|
240
259
|
const children = this.selected?.children
|
|
241
260
|
if (children && children.length > 0) {
|
|
242
|
-
|
|
261
|
+
await CustomAlert({
|
|
262
|
+
type: 'warning',
|
|
263
|
+
title: 'Departments with subordinates cannot be deleted.',
|
|
264
|
+
text: 'Department having children cannot be deleted.',
|
|
265
|
+
confirmButton: { text: i18next.t('button.confirm') }
|
|
266
|
+
})
|
|
267
|
+
|
|
268
|
+
return
|
|
243
269
|
}
|
|
244
270
|
|
|
245
271
|
if (confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import '@material/web/icon/icon.js'
|
|
1
2
|
import '@operato/data-grist'
|
|
2
3
|
|
|
3
4
|
import gql from 'graphql-tag'
|
|
@@ -7,30 +8,22 @@ import { property } from 'lit/decorators.js'
|
|
|
7
8
|
import { client } from '@operato/graphql'
|
|
8
9
|
import { i18next } from '@operato/i18n'
|
|
9
10
|
import { isMobileDevice } from '@operato/utils'
|
|
11
|
+
import { ButtonContainerStyles } from '@operato/styles'
|
|
10
12
|
|
|
11
13
|
export class EmployeeImporter extends LitElement {
|
|
12
14
|
static styles = [
|
|
15
|
+
ButtonContainerStyles,
|
|
13
16
|
css`
|
|
14
17
|
:host {
|
|
15
18
|
display: flex;
|
|
16
19
|
flex-direction: column;
|
|
17
20
|
|
|
18
|
-
background-color:
|
|
21
|
+
background-color: var(--md-sys-color-surface);
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
ox-grist {
|
|
22
25
|
flex: 1;
|
|
23
26
|
}
|
|
24
|
-
|
|
25
|
-
.button-container {
|
|
26
|
-
display: flex;
|
|
27
|
-
margin-left: auto;
|
|
28
|
-
padding: var(--padding-default);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
mwc-button {
|
|
32
|
-
margin-left: var(--margin-default);
|
|
33
|
-
}
|
|
34
27
|
`
|
|
35
28
|
]
|
|
36
29
|
|
|
@@ -71,7 +64,7 @@ export class EmployeeImporter extends LitElement {
|
|
|
71
64
|
></ox-grist>
|
|
72
65
|
|
|
73
66
|
<div class="button-container">
|
|
74
|
-
<
|
|
67
|
+
<button @click="${this.save.bind(this)}"><md-icon>save</md-icon>${i18next.t('button.save')}</button>
|
|
75
68
|
</div>
|
|
76
69
|
`
|
|
77
70
|
}
|
|
@@ -76,7 +76,10 @@ export class EmployeeListPage extends connect(store)(localize(i18next)(ScopedEle
|
|
|
76
76
|
{
|
|
77
77
|
icon: 'delete',
|
|
78
78
|
title: i18next.t('button.delete'),
|
|
79
|
-
action: this._deleteEmployee.bind(this)
|
|
79
|
+
action: this._deleteEmployee.bind(this),
|
|
80
|
+
emphasis: {
|
|
81
|
+
danger: true
|
|
82
|
+
}
|
|
80
83
|
}
|
|
81
84
|
],
|
|
82
85
|
exportable: {
|
|
@@ -96,10 +99,7 @@ export class EmployeeListPage extends connect(store)(localize(i18next)(ScopedEle
|
|
|
96
99
|
return html`
|
|
97
100
|
<ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
|
|
98
101
|
<div slot="headroom" class="header">
|
|
99
|
-
<div class="title">
|
|
100
|
-
<mwc-icon>summarize</mwc-icon>
|
|
101
|
-
${i18next.t('title.employee list')}
|
|
102
|
-
</div>
|
|
102
|
+
<div class="title">${i18next.t('title.employee list')}</div>
|
|
103
103
|
|
|
104
104
|
<div class="filters">
|
|
105
105
|
<ox-filters-form class="filter" autofocus without-search></ox-filters-form>
|
|
@@ -415,11 +415,7 @@ export class EmployeeListPage extends connect(store)(localize(i18next)(ScopedEle
|
|
|
415
415
|
name: 'profile',
|
|
416
416
|
record: {
|
|
417
417
|
renderer: function (value, column, record, rowIndex, field) {
|
|
418
|
-
return html`<ox-pfp-view
|
|
419
|
-
style="height:90%; width: unset; aspect-ratio: 1 / 1;"
|
|
420
|
-
.profile=${record.profile}
|
|
421
|
-
.name=${record.name}
|
|
422
|
-
></ox-pfp-view>`
|
|
418
|
+
return html`<ox-pfp-view style="height:90%; width: unset; aspect-ratio: 1 / 1;" .profile=${record.profile} .name=${record.name}></ox-pfp-view>`
|
|
423
419
|
}
|
|
424
420
|
},
|
|
425
421
|
hidden: true
|
|
@@ -574,17 +570,7 @@ export class EmployeeListPage extends connect(store)(localize(i18next)(ScopedEle
|
|
|
574
570
|
|
|
575
571
|
async exportHandler() {
|
|
576
572
|
const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records
|
|
577
|
-
const targetFieldSet = new Set([
|
|
578
|
-
'id',
|
|
579
|
-
'controlNo',
|
|
580
|
-
'name',
|
|
581
|
-
'alias',
|
|
582
|
-
'type',
|
|
583
|
-
'hiredOn',
|
|
584
|
-
'retiredAt',
|
|
585
|
-
'active',
|
|
586
|
-
'note'
|
|
587
|
-
])
|
|
573
|
+
const targetFieldSet = new Set(['id', 'controlNo', 'name', 'alias', 'type', 'hiredOn', 'retiredAt', 'active', 'note'])
|
|
588
574
|
|
|
589
575
|
return exportTargets.map(employee => {
|
|
590
576
|
let tempObj = {}
|
|
@@ -679,16 +665,11 @@ export class EmployeeListPage extends connect(store)(localize(i18next)(ScopedEle
|
|
|
679
665
|
}
|
|
680
666
|
|
|
681
667
|
async openContactSelector(record: GristRecord) {
|
|
682
|
-
const popup = openPopup(
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
backdrop: true,
|
|
688
|
-
size: 'large',
|
|
689
|
-
title: i18next.t('title.contact')
|
|
690
|
-
}
|
|
691
|
-
)
|
|
668
|
+
const popup = openPopup(html` <contact-selector .confirmCallback=${selected => this.attachContact(record, selected)}></contact-selector> `, {
|
|
669
|
+
backdrop: true,
|
|
670
|
+
size: 'large',
|
|
671
|
+
title: i18next.t('title.contact')
|
|
672
|
+
})
|
|
692
673
|
}
|
|
693
674
|
|
|
694
675
|
async attachContact(record: GristRecord, contact: Contact) {
|
|
@@ -87,12 +87,7 @@ export class EmployeesByDepartment extends connect(store)(localize(i18next)(Scop
|
|
|
87
87
|
|
|
88
88
|
render() {
|
|
89
89
|
return html`
|
|
90
|
-
<ox-tree
|
|
91
|
-
.data=${this.root}
|
|
92
|
-
.selected=${this.selected}
|
|
93
|
-
@select=${this.onSelect.bind(this)}
|
|
94
|
-
label-property="name"
|
|
95
|
-
></ox-tree>
|
|
90
|
+
<ox-tree .data=${this.root} .selected=${this.selected} @select=${this.onSelect.bind(this)} label-property="name"></ox-tree>
|
|
96
91
|
|
|
97
92
|
<ox-grist .config=${this.gristConfig} .fetchHandler=${this.fetchEmployees.bind(this)}>
|
|
98
93
|
<div slot="headroom">
|
|
@@ -81,7 +81,7 @@ ApprovalLineBrief.styles = [
|
|
|
81
81
|
margin: auto;
|
|
82
82
|
background-color: rgba(0, 0, 0, 0.4);
|
|
83
83
|
border-radius: 50%;
|
|
84
|
-
color: var(--
|
|
84
|
+
color: var(--md-sys-color-on-primary);
|
|
85
85
|
line-height: 1.2;
|
|
86
86
|
}
|
|
87
87
|
|
|
@@ -92,12 +92,12 @@ ApprovalLineBrief.styles = [
|
|
|
92
92
|
|
|
93
93
|
[current] span {
|
|
94
94
|
background-color: #84d600;
|
|
95
|
-
color: var(--
|
|
95
|
+
color: var(--md-sys-color-on-primary);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
[current] {
|
|
99
99
|
font-weight: bold;
|
|
100
|
-
color: var(--
|
|
100
|
+
color: var(--md-sys-color-on-primary);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
[past] span:before,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-line-brief.js","sourceRoot":"","sources":["../../client/component/approval-line-brief.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAS,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAGlD,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAA7D;;QA4EsB,UAAK,GAAuB,EAAE,CAAA;QAC7B,YAAO,GAAW,CAAC,CAAC,CAAA;IAiClD,CAAC;IA/BC,MAAM;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAA;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,KAAK;YACV,CAAC,CAAC,IAAI,CAAA,0BAA0B,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,GAAG,CAAC,yBAAyB;YACpG,CAAC,CAAC,IAAI,CAAA,EAAE;UACR,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;;KAEjE,CAAA;IACH,CAAC;IAED,UAAU,CAAC,IAAsB,EAAE,KAAa;QAC9C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,IAAI;YAC3B,IAAI,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC,QAAQ,CAC7G,IAAK,CACN;gBACC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;gBAC5B,CAAC,CAAC,EAAE;SACP,CAAA;QAED,OAAO,IAAI,CAAA;8BACe,IAAI,CAAC,OAAO,IAAI,KAAK,UAAU,IAAI,CAAC,OAAO,GAAG,KAAK,UAAU,IAAI,IAAI,EAAE;gBACrF,KAAK,GAAG,CAAC;eACV,IAAI;;KAEd,CAAA;IACH,CAAC;;AA5GM,wBAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuEF;CACF,
|
|
1
|
+
{"version":3,"file":"approval-line-brief.js","sourceRoot":"","sources":["../../client/component/approval-line-brief.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAS,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAGlD,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAA7D;;QA4EsB,UAAK,GAAuB,EAAE,CAAA;QAC7B,YAAO,GAAW,CAAC,CAAC,CAAA;IAiClD,CAAC;IA/BC,MAAM;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAA;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,KAAK;YACV,CAAC,CAAC,IAAI,CAAA,0BAA0B,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,GAAG,CAAC,yBAAyB;YACpG,CAAC,CAAC,IAAI,CAAA,EAAE;UACR,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;;KAEjE,CAAA;IACH,CAAC;IAED,UAAU,CAAC,IAAsB,EAAE,KAAa;QAC9C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,IAAI;YAC3B,IAAI,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC,QAAQ,CAC7G,IAAK,CACN;gBACC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;gBAC5B,CAAC,CAAC,EAAE;SACP,CAAA;QAED,OAAO,IAAI,CAAA;8BACe,IAAI,CAAC,OAAO,IAAI,KAAK,UAAU,IAAI,CAAC,OAAO,GAAG,KAAK,UAAU,IAAI,IAAI,EAAE;gBACrF,KAAK,GAAG,CAAC;eACV,IAAI;;KAEd,CAAA;IACH,CAAC;;AA5GM,wBAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuEF;CACF,AAzEY,CAyEZ;AAE0B;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;gDAA+B;AAC7B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;kDAAqB;AA7ErC,iBAAiB;IAD7B,aAAa,CAAC,qBAAqB,CAAC;GACxB,iBAAiB,CA8G7B","sourcesContent":["import { css, html, LitElement, TemplateResult } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { ApprovalLineItem } from '../types/approval-line'\nimport { OrgMemberTargetType } from '../types/org-member'\n\n@customElement('approval-line-brief')\nexport class ApprovalLineBrief extends localize(i18next)(LitElement) {\n static styles = [\n css`\n :host {\n display: block;\n }\n\n ol {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n }\n\n li {\n position: relative;\n width: 85px;\n text-align: center;\n color: rgba(255, 255, 255, 0.7);\n }\n\n li div {\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n span:before {\n content: '';\n height: 2px;\n width: 70px;\n display: block;\n position: absolute;\n margin-left: -70px;\n margin-top: 6px;\n background-color: rgba(0, 0, 0, 0.4);\n }\n\n span {\n display: block;\n width: 15px;\n height: 15px;\n margin: auto;\n background-color: rgba(0, 0, 0, 0.4);\n border-radius: 50%;\n color: var(--md-sys-color-on-primary);\n line-height: 1.2;\n }\n\n [past] span {\n background-color: rgba(255, 255, 255, 0.9);\n color: var(--primary-text-color);\n }\n\n [current] span {\n background-color: #84d600;\n color: var(--md-sys-color-on-primary);\n }\n\n [current] {\n font-weight: bold;\n color: var(--md-sys-color-on-primary);\n }\n\n [past] span:before,\n [current] span:before {\n background-color: rgba(255, 255, 255, 0.9);\n }\n\n li:first-child span:before {\n display: none;\n }\n `\n ]\n\n @property({ type: Array }) model: ApprovalLineItem[] = []\n @property({ type: Number }) current: number = -1\n\n render() {\n const items = this.model || []\n const current = this.current\n\n return html`\n <ol>\n ${this.model\n ? html` <li approver ?current=${this.current <= 0} ?past=${this.current > 0}><span>1</span>ME</li> `\n : html``}\n ${items.map((item, order) => this.renderItem(item, order + 1))}\n </ol>\n `\n }\n\n renderItem(item: ApprovalLineItem, order: number): TemplateResult {\n const { type, approver } = item\n const { name } = approver || {\n name: [OrgMemberTargetType.Myself, OrgMemberTargetType.MySupervisor, OrgMemberTargetType.MyDepartment].includes(\n type!\n )\n ? i18next.t(`label.${type}`)\n : ''\n }\n\n return html`\n <li approver ?current=${this.current == order} ?past=${this.current > order} title=${name || ''}>\n <span>${order + 1}</span>\n <div>${name}</div>\n </li>\n `\n }\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import '@material/web/icon/icon.js';
|
|
1
2
|
import { LitElement } from 'lit';
|
|
2
3
|
import { ApprovalLineItemsEditor } from './approval-line-items-editor';
|
|
3
4
|
import { ApprovalLineItem } from '../types/approval-line';
|
|
@@ -13,7 +14,7 @@ export declare class ApprovalLineItemsEditorPopup extends ApprovalLineItemsEdito
|
|
|
13
14
|
private changedValue?;
|
|
14
15
|
render(): import("lit-html").TemplateResult<1>;
|
|
15
16
|
firstUpdated(): void;
|
|
16
|
-
onEmpty(): void
|
|
17
|
+
onEmpty(): Promise<void>;
|
|
17
18
|
onCancel(): void;
|
|
18
19
|
onConfirm(): void;
|
|
19
20
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import '@material/web/icon/icon.js';
|
|
2
3
|
import { css, html, LitElement } from 'lit';
|
|
3
4
|
import { customElement, property, query } from 'lit/decorators.js';
|
|
4
5
|
import { i18next, localize } from '@operato/i18n';
|
|
5
6
|
import { ButtonContainerStyles } from '@operato/styles';
|
|
6
7
|
import { closePopup } from '@operato/popup';
|
|
8
|
+
import { OxPrompt } from '@operato/popup/ox-prompt.js';
|
|
7
9
|
import { ApprovalLineItemsEditor } from './approval-line-items-editor';
|
|
8
10
|
/**
|
|
9
11
|
* 결재선의 각 결재자 리스트를 편집한다.
|
|
@@ -23,19 +25,30 @@ let ApprovalLineItemsEditorPopup = class ApprovalLineItemsEditorPopup extends lo
|
|
|
23
25
|
}}
|
|
24
26
|
></approval-line-items-editor>
|
|
25
27
|
|
|
26
|
-
<div class="button-container">
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
<div class="button-container" style="margin-left:unset;">
|
|
29
|
+
<button @click=${this.onEmpty.bind(this)}>
|
|
30
|
+
<md-icon>check_box_outline_blank</md-icon>${i18next.t('button.empty')}
|
|
31
|
+
</button>
|
|
32
|
+
<div filler></div>
|
|
33
|
+
<button @click=${this.onCancel.bind(this)}><md-icon>cancel</md-icon>${i18next.t('button.cancel')}</button>
|
|
34
|
+
<button @click=${this.onConfirm.bind(this)}><md-icon>done</md-icon>${i18next.t('button.confirm')}</button>
|
|
30
35
|
</div>
|
|
31
36
|
`;
|
|
32
37
|
}
|
|
33
38
|
firstUpdated() {
|
|
34
39
|
this.changedValue = this.value;
|
|
35
40
|
}
|
|
36
|
-
onEmpty() {
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
async onEmpty() {
|
|
42
|
+
const reaction = await OxPrompt.open({
|
|
43
|
+
title: i18next.t('text.are_you_sure'),
|
|
44
|
+
text: i18next.t('prompt.sure to empty approval line ?'),
|
|
45
|
+
confirmButton: { text: i18next.t('button.confirm') },
|
|
46
|
+
cancelButton: { text: i18next.t('button.cancel') }
|
|
47
|
+
});
|
|
48
|
+
if (reaction) {
|
|
49
|
+
this.confirmCallback && this.confirmCallback(null);
|
|
50
|
+
closePopup(this);
|
|
51
|
+
}
|
|
39
52
|
}
|
|
40
53
|
onCancel() {
|
|
41
54
|
closePopup(this);
|
|
@@ -52,7 +65,7 @@ ApprovalLineItemsEditorPopup.styles = [
|
|
|
52
65
|
display: flex;
|
|
53
66
|
flex-direction: column;
|
|
54
67
|
|
|
55
|
-
background-color:
|
|
68
|
+
background-color: var(--md-sys-color-surface);
|
|
56
69
|
}
|
|
57
70
|
|
|
58
71
|
approval-line-items-editor {
|