@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.
Files changed (179) hide show
  1. package/client/component/approval-line-brief.ts +3 -3
  2. package/client/component/approval-line-items-editor-popup.ts +22 -8
  3. package/client/component/approval-line-items-editor.ts +40 -35
  4. package/client/component/approval-line-selector.ts +9 -10
  5. package/client/component/approval-line-templates-manager.ts +9 -4
  6. package/client/component/approval-line-view.ts +15 -9
  7. package/client/component/assignees-editor-popup.ts +10 -6
  8. package/client/component/assignees-editor.ts +5 -2
  9. package/client/component/assignees-view.ts +2 -2
  10. package/client/component/department-selector.ts +9 -10
  11. package/client/component/department-view.ts +3 -1
  12. package/client/component/recipients-editor-popup.ts +10 -6
  13. package/client/component/recipients-editor.ts +10 -12
  14. package/client/component/recipients-view.ts +2 -2
  15. package/client/grist-editor/grist-editor-approval-line.ts +4 -9
  16. package/client/grist-editor/grist-editor-assignees.ts +4 -7
  17. package/client/grist-editor/grist-editor-recipients.ts +4 -10
  18. package/client/grist-editor/grist-renderer-approval-line.ts +4 -3
  19. package/client/grist-editor/grist-renderer-assignees.ts +4 -3
  20. package/client/grist-editor/grist-renderer-recipients.ts +4 -3
  21. package/client/pages/approval-line/common-approval-line-templates-page.ts +5 -5
  22. package/client/pages/approval-line/my-approval-line-templates-page.ts +7 -5
  23. package/client/pages/department/department-importer.ts +8 -19
  24. package/client/pages/department/department-list-page.ts +5 -5
  25. package/client/pages/department/department-tree-page.ts +36 -10
  26. package/client/pages/employee/employee-importer.ts +5 -12
  27. package/client/pages/employee/employee-list-page.ts +12 -31
  28. package/client/pages/employee/employees-by-department.ts +1 -6
  29. package/dist-client/component/approval-line-brief.js +3 -3
  30. package/dist-client/component/approval-line-brief.js.map +1 -1
  31. package/dist-client/component/approval-line-items-editor-popup.d.ts +2 -1
  32. package/dist-client/component/approval-line-items-editor-popup.js +21 -8
  33. package/dist-client/component/approval-line-items-editor-popup.js.map +1 -1
  34. package/dist-client/component/approval-line-items-editor.js +12 -7
  35. package/dist-client/component/approval-line-items-editor.js.map +1 -1
  36. package/dist-client/component/approval-line-selector.d.ts +1 -0
  37. package/dist-client/component/approval-line-selector.js +9 -10
  38. package/dist-client/component/approval-line-selector.js.map +1 -1
  39. package/dist-client/component/approval-line-templates-manager.d.ts +3 -2
  40. package/dist-client/component/approval-line-templates-manager.js +7 -3
  41. package/dist-client/component/approval-line-templates-manager.js.map +1 -1
  42. package/dist-client/component/approval-line-view.js +13 -9
  43. package/dist-client/component/approval-line-view.js.map +1 -1
  44. package/dist-client/component/assignees-editor-popup.d.ts +1 -0
  45. package/dist-client/component/assignees-editor-popup.js +10 -6
  46. package/dist-client/component/assignees-editor-popup.js.map +1 -1
  47. package/dist-client/component/assignees-editor.d.ts +1 -0
  48. package/dist-client/component/assignees-editor.js +5 -2
  49. package/dist-client/component/assignees-editor.js.map +1 -1
  50. package/dist-client/component/assignees-view.js +2 -2
  51. package/dist-client/component/assignees-view.js.map +1 -1
  52. package/dist-client/component/department-selector.d.ts +1 -0
  53. package/dist-client/component/department-selector.js +9 -10
  54. package/dist-client/component/department-selector.js.map +1 -1
  55. package/dist-client/component/department-view.js +3 -0
  56. package/dist-client/component/department-view.js.map +1 -1
  57. package/dist-client/component/recipients-editor-popup.d.ts +1 -0
  58. package/dist-client/component/recipients-editor-popup.js +10 -6
  59. package/dist-client/component/recipients-editor-popup.js.map +1 -1
  60. package/dist-client/component/recipients-editor.d.ts +1 -0
  61. package/dist-client/component/recipients-editor.js +10 -12
  62. package/dist-client/component/recipients-editor.js.map +1 -1
  63. package/dist-client/component/recipients-view.js +2 -2
  64. package/dist-client/component/recipients-view.js.map +1 -1
  65. package/dist-client/grist-editor/grist-editor-approval-line.d.ts +1 -0
  66. package/dist-client/grist-editor/grist-editor-approval-line.js +4 -9
  67. package/dist-client/grist-editor/grist-editor-approval-line.js.map +1 -1
  68. package/dist-client/grist-editor/grist-editor-assignees.d.ts +1 -0
  69. package/dist-client/grist-editor/grist-editor-assignees.js +4 -6
  70. package/dist-client/grist-editor/grist-editor-assignees.js.map +1 -1
  71. package/dist-client/grist-editor/grist-editor-department-object.js.map +1 -1
  72. package/dist-client/grist-editor/grist-editor-recipients.d.ts +1 -0
  73. package/dist-client/grist-editor/grist-editor-recipients.js +4 -9
  74. package/dist-client/grist-editor/grist-editor-recipients.js.map +1 -1
  75. package/dist-client/grist-editor/grist-renderer-approval-line.d.ts +1 -1
  76. package/dist-client/grist-editor/grist-renderer-approval-line.js +3 -3
  77. package/dist-client/grist-editor/grist-renderer-approval-line.js.map +1 -1
  78. package/dist-client/grist-editor/grist-renderer-assignees.d.ts +1 -1
  79. package/dist-client/grist-editor/grist-renderer-assignees.js +3 -3
  80. package/dist-client/grist-editor/grist-renderer-assignees.js.map +1 -1
  81. package/dist-client/grist-editor/grist-renderer-department-object.js.map +1 -1
  82. package/dist-client/grist-editor/grist-renderer-recipients.d.ts +1 -1
  83. package/dist-client/grist-editor/grist-renderer-recipients.js +3 -3
  84. package/dist-client/grist-editor/grist-renderer-recipients.js.map +1 -1
  85. package/dist-client/pages/approval-line/common-approval-line-templates-page.d.ts +10 -2
  86. package/dist-client/pages/approval-line/common-approval-line-templates-page.js +5 -5
  87. package/dist-client/pages/approval-line/common-approval-line-templates-page.js.map +1 -1
  88. package/dist-client/pages/approval-line/my-approval-line-templates-page.d.ts +10 -2
  89. package/dist-client/pages/approval-line/my-approval-line-templates-page.js +6 -5
  90. package/dist-client/pages/approval-line/my-approval-line-templates-page.js.map +1 -1
  91. package/dist-client/pages/department/department-importer.d.ts +1 -0
  92. package/dist-client/pages/department/department-importer.js +5 -12
  93. package/dist-client/pages/department/department-importer.js.map +1 -1
  94. package/dist-client/pages/department/department-list-page.d.ts +10 -2
  95. package/dist-client/pages/department/department-list-page.js +5 -5
  96. package/dist-client/pages/department/department-list-page.js.map +1 -1
  97. package/dist-client/pages/department/department-tree-page.d.ts +8 -0
  98. package/dist-client/pages/department/department-tree-page.js +33 -10
  99. package/dist-client/pages/department/department-tree-page.js.map +1 -1
  100. package/dist-client/pages/employee/employee-importer.d.ts +1 -0
  101. package/dist-client/pages/employee/employee-importer.js +5 -12
  102. package/dist-client/pages/employee/employee-importer.js.map +1 -1
  103. package/dist-client/pages/employee/employee-list-page.d.ts +10 -2
  104. package/dist-client/pages/employee/employee-list-page.js +8 -24
  105. package/dist-client/pages/employee/employee-list-page.js.map +1 -1
  106. package/dist-client/pages/employee/employees-by-department.js +1 -6
  107. package/dist-client/pages/employee/employees-by-department.js.map +1 -1
  108. package/dist-client/route.js.map +1 -1
  109. package/dist-client/tsconfig.tsbuildinfo +1 -1
  110. package/dist-server/index.d.ts +2 -0
  111. package/dist-server/routes.d.ts +0 -0
  112. package/dist-server/routes.js +0 -1
  113. package/dist-server/routes.js.map +1 -1
  114. package/dist-server/service/approval-line/approval-line-item.d.ts +19 -0
  115. package/dist-server/service/approval-line/approval-line-item.js +5 -5
  116. package/dist-server/service/approval-line/approval-line-item.js.map +1 -1
  117. package/dist-server/service/approval-line/approval-line-mutation.d.ts +15 -0
  118. package/dist-server/service/approval-line/approval-line-mutation.js +2 -2
  119. package/dist-server/service/approval-line/approval-line-mutation.js.map +1 -1
  120. package/dist-server/service/approval-line/approval-line-query.d.ts +17 -0
  121. package/dist-server/service/approval-line/approval-line-query.js +6 -6
  122. package/dist-server/service/approval-line/approval-line-query.js.map +1 -1
  123. package/dist-server/service/approval-line/approval-line-type.d.ts +26 -0
  124. package/dist-server/service/approval-line/approval-line-type.js +8 -8
  125. package/dist-server/service/approval-line/approval-line-type.js.map +1 -1
  126. package/dist-server/service/approval-line/approval-line.d.ts +33 -0
  127. package/dist-server/service/approval-line/approval-line.js +14 -9
  128. package/dist-server/service/approval-line/approval-line.js.map +1 -1
  129. package/dist-server/service/approval-line/index.d.ts +6 -0
  130. package/dist-server/service/department/department-history.d.ts +31 -0
  131. package/dist-server/service/department/department-history.js +15 -7
  132. package/dist-server/service/department/department-history.js.map +1 -1
  133. package/dist-server/service/department/department-mutation.d.ts +10 -0
  134. package/dist-server/service/department/department-mutation.js +2 -2
  135. package/dist-server/service/department/department-mutation.js.map +1 -1
  136. package/dist-server/service/department/department-query.d.ts +17 -0
  137. package/dist-server/service/department/department-query.js +7 -6
  138. package/dist-server/service/department/department-query.js.map +1 -1
  139. package/dist-server/service/department/department-type.d.ts +29 -0
  140. package/dist-server/service/department/department-type.js +6 -6
  141. package/dist-server/service/department/department-type.js.map +1 -1
  142. package/dist-server/service/department/department.d.ts +28 -0
  143. package/dist-server/service/department/department.js +9 -10
  144. package/dist-server/service/department/department.js.map +1 -1
  145. package/dist-server/service/department/event-subscriber.d.ts +7 -0
  146. package/dist-server/service/department/event-subscriber.js +2 -2
  147. package/dist-server/service/department/event-subscriber.js.map +1 -1
  148. package/dist-server/service/department/index.d.ts +8 -0
  149. package/dist-server/service/employee/employee-history.d.ts +41 -0
  150. package/dist-server/service/employee/employee-history.js +6 -7
  151. package/dist-server/service/employee/employee-history.js.map +1 -1
  152. package/dist-server/service/employee/employee-mutation.d.ts +12 -0
  153. package/dist-server/service/employee/employee-mutation.js +2 -2
  154. package/dist-server/service/employee/employee-mutation.js.map +1 -1
  155. package/dist-server/service/employee/employee-query.d.ts +22 -0
  156. package/dist-server/service/employee/employee-query.js +3 -3
  157. package/dist-server/service/employee/employee-query.js.map +1 -1
  158. package/dist-server/service/employee/employee-type.d.ts +56 -0
  159. package/dist-server/service/employee/employee-type.js +10 -10
  160. package/dist-server/service/employee/employee-type.js.map +1 -1
  161. package/dist-server/service/employee/employee.d.ts +49 -0
  162. package/dist-server/service/employee/employee.js +13 -15
  163. package/dist-server/service/employee/employee.js.map +1 -1
  164. package/dist-server/service/employee/event-subscriber.d.ts +7 -0
  165. package/dist-server/service/employee/event-subscriber.js +2 -2
  166. package/dist-server/service/employee/event-subscriber.js.map +1 -1
  167. package/dist-server/service/employee/index.d.ts +8 -0
  168. package/dist-server/service/index.d.ts +8 -0
  169. package/dist-server/tsconfig.tsbuildinfo +1 -1
  170. package/package.json +10 -10
  171. package/server/routes.ts +0 -2
  172. package/server/service/approval-line/approval-line-query.ts +16 -4
  173. package/server/service/approval-line/approval-line.ts +27 -7
  174. package/server/service/department/department-history.ts +31 -9
  175. package/server/service/department/department-query.ts +13 -3
  176. package/server/service/department/department.ts +3 -3
  177. package/server/service/employee/employee-history.ts +5 -5
  178. package/server/service/employee/employee-query.ts +3 -3
  179. 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`<mwc-icon style="--mdc-icon-size:1.3em">person</mwc-icon>`
21
- : html`<mwc-icon style="--mdc-icon-size:1.3em">group</mwc-icon>`
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`<mwc-icon style="--mdc-icon-size:1.3em">person</mwc-icon>`
21
- : html`<mwc-icon style="--mdc-icon-size:1.3em">group</mwc-icon>`
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`<mwc-icon style="--mdc-icon-size:1.3em">person</mwc-icon>`
21
- : html`<mwc-icon style="--mdc-icon-size:1.3em">group</mwc-icon>`
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/mwc-icon'
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`<mwc-icon style="--mdc-icon-size:1.3em">person</mwc-icon>`
11
- : html`<mwc-icon style="--mdc-icon-size:1.3em">group</mwc-icon>`
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/mwc-icon'
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`<mwc-icon style="--mdc-icon-size:1.3em">person</mwc-icon>`
11
- : html`<mwc-icon style="--mdc-icon-size:1.3em">group</mwc-icon>`
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/mwc-icon'
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`<mwc-icon style="--mdc-icon-size:1.3em">person</mwc-icon>`
11
- : html`<mwc-icon style="--mdc-icon-size:1.3em">group</mwc-icon>`
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: #fff;
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
- records: this.departments
72
- }
73
- }
61
+ .data=${{
62
+ records: this.departments
63
+ }}
74
64
  ></ox-grist>
75
65
 
76
66
  <div class="button-container">
77
- <mwc-button raised @click="${this.save.bind(this)}">${i18next.t('button.save')}</mwc-button>
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 .data=${this.root} .selected=${this.selected} @select=${this.onSelect.bind(this)} label-property="name"></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
- alert('Please select department first.')
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
- alert('select department first.')
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
- alert('Department having children cannot be deleted.')
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: #fff;
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
- <mwc-button raised @click="${this.save.bind(this)}">${i18next.t('button.save')}</mwc-button>
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
- html`
684
- <contact-selector .confirmCallback=${selected => this.attachContact(record, selected)}></contact-selector>
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(--theme-white-color);
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(--theme-white-color);
95
+ color: var(--md-sys-color-on-primary);
96
96
  }
97
97
 
98
98
  [current] {
99
99
  font-weight: bold;
100
- color: var(--theme-white-color);
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,CAAA;AAED;IAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;gDAA+B;AACzD;IAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;kDAAqB;AA7ErC,iBAAiB;IAD7B,aAAa,CAAC,qBAAqB,CAAC;GACxB,iBAAiB,CA8G7B;SA9GY,iBAAiB","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(--theme-white-color);\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(--theme-white-color);\n }\n\n [current] {\n font-weight: bold;\n color: var(--theme-white-color);\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
+ {"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
- <mwc-button @click=${this.onEmpty.bind(this)}>${i18next.t('button.empty')}</mwc-button>
28
- <mwc-button @click=${this.onCancel.bind(this)}>${i18next.t('button.cancel')}</mwc-button>
29
- <mwc-button @click=${this.onConfirm.bind(this)}>${i18next.t('button.confirm')}</mwc-button>
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
- this.confirmCallback && this.confirmCallback(null);
38
- closePopup(this);
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: #fff;
68
+ background-color: var(--md-sys-color-surface);
56
69
  }
57
70
 
58
71
  approval-line-items-editor {