@projectcaluma/ember-distribution 1.0.0-beta.9 → 11.0.0-beta.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/addon/abilities/distribution.js +19 -0
  3. package/addon/abilities/inquiry.js +20 -0
  4. package/addon/components/cd-document-header.hbs +8 -8
  5. package/addon/components/cd-inquiry-answer-form.hbs +21 -13
  6. package/addon/components/cd-inquiry-answer-form.js +24 -10
  7. package/addon/components/cd-inquiry-dialog/inquiry-deadline.hbs +6 -13
  8. package/addon/components/cd-inquiry-dialog/inquiry-divider.hbs +1 -1
  9. package/addon/components/cd-inquiry-dialog/inquiry-part.hbs +27 -11
  10. package/addon/components/cd-inquiry-dialog/inquiry-part.js +10 -0
  11. package/addon/components/cd-inquiry-dialog/inquiry.hbs +8 -4
  12. package/addon/components/cd-inquiry-dialog.hbs +12 -6
  13. package/addon/components/cd-inquiry-dialog.js +1 -0
  14. package/addon/components/cd-inquiry-edit-form.hbs +19 -2
  15. package/addon/components/cd-inquiry-new-form.hbs +32 -30
  16. package/addon/components/cd-inquiry-new-form.js +1 -3
  17. package/addon/components/cd-navigation/controls.hbs +46 -21
  18. package/addon/components/cd-navigation/controls.js +34 -9
  19. package/addon/components/cd-navigation/item.hbs +14 -11
  20. package/addon/components/cd-navigation/section.hbs +4 -4
  21. package/addon/components/cd-navigation/status-indicator.hbs +10 -15
  22. package/addon/components/cd-navigation.hbs +11 -14
  23. package/addon/config.js +11 -7
  24. package/addon/engine.js +3 -1
  25. package/addon/gql/fragments/inquiry.graphql +21 -4
  26. package/addon/gql/mutations/complete-inquiry-work-item.graphql +1 -1
  27. package/addon/gql/mutations/redo-work-item.graphql +8 -0
  28. package/addon/gql/queries/control-work-items.graphql +11 -0
  29. package/addon/gql/queries/inquiry-answer.graphql +3 -12
  30. package/addon/gql/queries/inquiry-dialog.graphql +2 -1
  31. package/addon/services/distribution.js +9 -1
  32. package/addon/templates/application.hbs +1 -0
  33. package/addon/utils/inquiry-answer-status.js +34 -0
  34. package/addon/utils/inquiry-deadline.js +4 -4
  35. package/addon/utils/inquiry-status.js +12 -7
  36. package/app/styles/@projectcaluma/ember-distribution.scss +1 -2
  37. package/app/styles/_group-list.scss +7 -0
  38. package/app/styles/_inquiry-divider.scss +1 -1
  39. package/app/utils/inquiry-answer-status.js +1 -0
  40. package/index.js +1 -6
  41. package/package.json +20 -21
  42. package/translations/de.yaml +24 -4
  43. package/translations/en.yaml +25 -5
  44. package/translations/fr.yaml +25 -5
  45. package/addon/components/cd-icon-button.hbs +0 -27
  46. package/addon/components/cd-icon-button.js +0 -22
  47. package/app/components/cd-icon-button.js +0 -1
  48. package/app/styles/_icon-button.scss +0 -13
  49. package/app/styles/_status-indicator.scss +0 -31
@@ -1,32 +1,57 @@
1
1
  <div class="uk-text-center uk-margin-small-top">
2
2
  {{#if (can "create inquiry of distribution")}}
3
- <CdIconButton
4
- @title={{t "caluma.distribution.new.title"}}
5
- @icon="plus"
3
+ <LinkTo
6
4
  @route="new"
7
- />
5
+ class="uk-icon-button"
6
+ uk-tooltip={{t "caluma.distribution.new.title"}}
7
+ data-test-new-inquiry
8
+ >
9
+ <UkIcon @icon="plus" />
10
+ </LinkTo>
8
11
  {{/if}}
9
12
  {{#if (can "send inquiries of distribution")}}
10
- <CdIconButton
11
- @title={{t "caluma.distribution.send"}}
12
- @icon="paper-plane-outline"
13
- @fromSvgJar={{true}}
14
- @gutterTop={{4}}
15
- @gutterRight={{6}}
16
- @gutterLeft={{4}}
17
- @gutterBottom={{4}}
18
- @onClick={{perform this.sendInquiries}}
19
- @loading={{this.sendInquiries.isRunning}}
13
+ <button
14
+ type="button"
15
+ class="uk-icon-button"
16
+ uk-tooltip={{t "caluma.distribution.send"}}
20
17
  data-test-send-pending-inquiries
21
- />
18
+ {{on "click" (perform this.sendInquiries)}}
19
+ >
20
+ {{#if this.sendInquiries.isRunning}}
21
+ <UkSpinner @ratio={{0.6}} />
22
+ {{else}}
23
+ <UkIcon @icon="comment" />
24
+ {{/if}}
25
+ </button>
22
26
  {{/if}}
23
27
  {{#if (can "complete distribution")}}
24
- <CdIconButton
25
- @icon="lock-closed-outline"
26
- @fromSvgJar={{true}}
27
- @onClick={{perform this.completeDistribution}}
28
- @loading={{this.completeDistribution.isRunning}}
28
+ <button
29
+ type="button"
30
+ class="uk-icon-button"
31
+ uk-tooltip={{t "caluma.distribution.complete"}}
29
32
  data-test-complete-distribution
30
- />
33
+ {{on "click" (perform this.completeDistribution)}}
34
+ >
35
+ {{#if this.completeDistribution.isRunning}}
36
+ <UkSpinner @ratio={{0.6}} />
37
+ {{else}}
38
+ <UkIcon @icon="lock" />
39
+ {{/if}}
40
+ </button>
41
+ {{/if}}
42
+ {{#if (can "reopen distribution")}}
43
+ <button
44
+ type="button"
45
+ class="uk-icon-button"
46
+ uk-tooltip={{t "caluma.distribution.reopen"}}
47
+ data-test-reopen-distribution
48
+ {{on "click" (perform this.reopenDistribution)}}
49
+ >
50
+ {{#if this.reopenDistribution.isRunning}}
51
+ <UkSpinner @ratio={{0.6}} />
52
+ {{else}}
53
+ <UkIcon @icon="refresh" />
54
+ {{/if}}
55
+ </button>
31
56
  {{/if}}
32
57
  </div>
@@ -8,6 +8,7 @@ import { gql } from "graphql-tag";
8
8
  import { decodeId } from "@projectcaluma/ember-core/helpers/decode-id";
9
9
  import config from "@projectcaluma/ember-distribution/config";
10
10
  import completeWorkItemMutation from "@projectcaluma/ember-distribution/gql/mutations/complete-work-item.graphql";
11
+ import redoWorkItemMutation from "@projectcaluma/ember-distribution/gql/mutations/redo-work-item.graphql";
11
12
  import incompleteInquiriesQuery from "@projectcaluma/ember-distribution/gql/queries/incomplete-inquiries.graphql";
12
13
 
13
14
  export default class CdNavigationControlsComponent extends Component {
@@ -26,21 +27,21 @@ export default class CdNavigationControlsComponent extends Component {
26
27
  {
27
28
  query: incompleteInquiriesQuery,
28
29
  variables: {
29
- caseId: this.args.caseId,
30
+ caseId: this.distribution.caseId,
30
31
  task: this.config.inquiry.task,
31
32
  },
32
33
  },
33
34
  "allWorkItems.totalCount"
34
35
  );
35
36
 
36
- if (
37
- incompleteInquiries > 0 &&
38
- !(yield confirm(
39
- this.intl.t("caluma.distribution.complete-confirm", {
40
- count: incompleteInquiries,
41
- })
42
- ))
43
- ) {
37
+ const confirmText =
38
+ incompleteInquiries === 0
39
+ ? this.intl.t("caluma.distribution.complete-confirm-empty")
40
+ : this.intl.t("caluma.distribution.complete-confirm", {
41
+ count: incompleteInquiries,
42
+ });
43
+
44
+ if (!(yield confirm(confirmText))) {
44
45
  return;
45
46
  }
46
47
 
@@ -63,6 +64,30 @@ export default class CdNavigationControlsComponent extends Component {
63
64
  }
64
65
  }
65
66
 
67
+ @dropTask
68
+ *reopenDistribution() {
69
+ try {
70
+ if (!(yield confirm(this.intl.t("caluma.distribution.reopen-confirm")))) {
71
+ return;
72
+ }
73
+
74
+ const distributionWorkItemId = decodeId(
75
+ this.distribution.controls.value?.case.edges[0]?.node.parentWorkItem.id
76
+ );
77
+
78
+ yield this.apollo.mutate({
79
+ mutation: redoWorkItemMutation,
80
+ variables: {
81
+ workItem: distributionWorkItemId,
82
+ },
83
+ });
84
+
85
+ yield this.distribution.refetchControls();
86
+ } catch (e) {
87
+ this.notification.danger(this.intl.t("caluma.distribution.reopen-error"));
88
+ }
89
+ }
90
+
66
91
  @dropTask
67
92
  *sendInquiries() {
68
93
  if (!(yield confirm(this.intl.t("caluma.distribution.send-confirm")))) {
@@ -1,15 +1,18 @@
1
- <li class={{if this.isActive "uk-active"}}>
1
+ <li class="uk-width-auto {{if this.isActive 'uk-active'}}">
2
2
  <LinkTo @route="inquiry" @model={{this.model}}>
3
- <div class="uk-flex uk-flex-middle uk-width-1-1">
4
- <div class="uk-width-expand uk-text-truncate">
5
- {{#if (eq @type "addressed")}}
6
- {{@inquiry.controllingGroupName}}
7
- {{else}}
8
- {{@inquiry.addressedGroupName}}
9
- {{/if}}
10
- </div>
3
+ {{#let
4
+ (if
5
+ (eq @type "addressed")
6
+ @inquiry.controllingGroupName
7
+ @inquiry.addressedGroupName
8
+ )
9
+ as |name|
10
+ }}
11
+ <span class="uk-width-expand uk-text-truncate" title={{name}}>
12
+ {{name}}
13
+ </span>
14
+ {{/let}}
11
15
 
12
- <CdNavigation::StatusIndicator @inquiry={{@inquiry}} @type={{@type}} />
13
- </div>
16
+ <CdNavigation::StatusIndicator @inquiry={{@inquiry}} @type={{@type}} />
14
17
  </LinkTo>
15
18
  </li>
@@ -1,5 +1,5 @@
1
- <li class="uk-margin-small-bottom">
2
- <a href="" class="uk-margin-small-bottom" {{on "click" this.toggle}}>
1
+ <li class="uk-margin-small-bottom uk-width-auto">
2
+ <a href="" {{on "click" this.toggle}}>
3
3
  <span class="uk-width-expand">
4
4
  {{t (concat "caluma.distribution.types." @type)}}
5
5
  </span>
@@ -12,7 +12,7 @@
12
12
 
13
13
  {{#if this.expanded}}
14
14
  {{#if @inquiries.length}}
15
- <ul class="uk-tab uk-tab-left uk-margin-left">
15
+ <ul class="uk-tab uk-tab-left uk-margin-left uk-width-auto">
16
16
  {{#each this.inquiries as |inquiry|}}
17
17
  <CdNavigation::Item @inquiry={{inquiry}} @type={{@type}} />
18
18
  {{/each}}
@@ -20,7 +20,7 @@
20
20
  {{/if}}
21
21
 
22
22
  {{#if (eq @type "controlling")}}
23
- <CdNavigation::Controls @caseId={{@caseId}} />
23
+ <CdNavigation::Controls />
24
24
  {{/if}}
25
25
  {{/if}}
26
26
  </li>
@@ -1,18 +1,13 @@
1
1
  {{#if this.showDeadlineIndicator}}
2
- <div
3
- class="deadline-indicator uk-flex uk-flex-middle uk-flex-center uk-margin-small-left uk-text-{{this.deadline.color}}"
4
- >
5
- {{svg-jar
6
- "notifications-outline"
7
- height=16
8
- width=16
9
- title=(format-date this.deadline.value)
10
- }}
11
- </div>
2
+ <UkIcon
3
+ @icon="clock"
4
+ class="uk-margin-small-right uk-text-{{this.deadline.color}}"
5
+ uk-tooltip={{format-date this.deadline.value}}
6
+ />
12
7
  {{/if}}
13
8
 
14
- <div
15
- class="status-indicator uk-flex uk-flex-middle uk-flex-center uk-margin-small-left uk-text-{{this.status.color}}"
16
- >
17
- {{svg-jar this.status.icon title=this.status.label}}
18
- </div>
9
+ <UkIcon
10
+ @icon={{this.status.icon}}
11
+ class="uk-text-{{this.status.color}}"
12
+ uk-tooltip={{this.status.label}}
13
+ />
@@ -1,14 +1,11 @@
1
- <aside>
2
- <ul class="uk-tab uk-tab-left uk-margin-remove-bottom">
3
- <CdNavigation::Section
4
- @type="controlling"
5
- @inquiries={{this.inquiries.controlling}}
6
- @caseId={{@caseId}}
7
- />
8
- <CdNavigation::Section
9
- @type="addressed"
10
- @inquiries={{this.inquiries.addressed}}
11
- />
12
- <CdNavigation::Section @type="more" @inquiries={{this.inquiries.more}} />
13
- </ul>
14
- </aside>
1
+ <ul class="uk-tab uk-tab-left uk-margin-remove-bottom uk-width-auto">
2
+ <CdNavigation::Section
3
+ @type="controlling"
4
+ @inquiries={{this.inquiries.controlling}}
5
+ />
6
+ <CdNavigation::Section
7
+ @type="addressed"
8
+ @inquiries={{this.inquiries.addressed}}
9
+ />
10
+ <CdNavigation::Section @type="more" @inquiries={{this.inquiries.more}} />
11
+ </ul>
package/addon/config.js CHANGED
@@ -4,6 +4,7 @@ import { cached } from "tracked-toolbox";
4
4
 
5
5
  export const INQUIRY_STATUS = {
6
6
  DRAFT: "draft",
7
+ SKIPPED: "skipped",
7
8
  SENT: "sent",
8
9
  POSITIVE: "positive",
9
10
  NEGATIVE: "negative",
@@ -15,7 +16,7 @@ export default function config(target, property) {
15
16
  get() {
16
17
  return merge(
17
18
  {
18
- ui: { stack: false, small: false },
19
+ ui: { stack: false, small: false, readonly: false },
19
20
  controls: {
20
21
  createTask: "create-inquiry",
21
22
  completeTask: "complete-distribution",
@@ -37,20 +38,22 @@ export default function config(target, property) {
37
38
  buttons: {
38
39
  "compose-inquiry-answer": {
39
40
  color: "primary",
40
- label: "caluma.distribution.answer.release-for-review",
41
+ label: "caluma.distribution.answer.buttons.compose.label",
42
+ status: "caluma.distribution.answer.buttons.compose.status",
41
43
  },
42
44
  "confirm-inquiry-answer": {
43
45
  color: "primary",
44
- label: "caluma.distribution.answer.confirm",
46
+ label: "caluma.distribution.answer.buttons.confirm.label",
47
+ status: "caluma.distribution.answer.buttons.confirm.status",
45
48
  },
46
49
  "revise-inquiry-answer": {
47
50
  color: "default",
48
- label: "caluma.distribution.answer.revise",
51
+ label: "caluma.distribution.answer.buttons.revise.label",
49
52
  },
50
53
  "adjust-inquiry-answer": {
51
54
  color: "primary",
52
- label:
53
- "caluma.distribution.answer.release-adjustment-for-review",
55
+ label: "caluma.distribution.answer.buttons.adjust.label",
56
+ status: "caluma.distribution.answer.buttons.adjust.status",
54
57
  },
55
58
  },
56
59
  },
@@ -60,11 +63,12 @@ export default function config(target, property) {
60
63
  types: {
61
64
  suggestions: {
62
65
  label: "caluma.distribution.new.suggestions",
63
- icon: "bulb-outline",
66
+ icon: "star",
64
67
  iconColor: "warning",
65
68
  },
66
69
  },
67
70
  },
71
+ permissions: {},
68
72
  },
69
73
  getOwner(this).lookup("service:calumaOptions")?.distribution ?? {}
70
74
  );
package/addon/engine.js CHANGED
@@ -16,7 +16,9 @@ export default class DistributionEngine extends Engine {
16
16
  "notification",
17
17
  "intl",
18
18
  "caluma-options",
19
- "store", // this is just in case that a custom form widget uses the store
19
+ // this is just in case that a custom form widget uses the store or fetch service
20
+ "store",
21
+ "fetch",
20
22
  ],
21
23
  };
22
24
  }
@@ -1,6 +1,21 @@
1
+ fragment InquiryAnswerButtons on Case {
2
+ workItems(filter: [{ tasks: $buttonTasks }, { status: READY }]) {
3
+ edges {
4
+ node {
5
+ id
6
+ status
7
+ task {
8
+ id
9
+ slug
10
+ }
11
+ }
12
+ }
13
+ }
14
+ }
15
+
1
16
  fragment InquiryDeadlineDocument on Document {
2
17
  id
3
- deadline: answers(question: $deadlineQuestion) {
18
+ deadline: answers(filter: [{ question: $deadlineQuestion }]) {
4
19
  edges {
5
20
  node {
6
21
  id
@@ -14,7 +29,7 @@ fragment InquiryDeadlineDocument on Document {
14
29
 
15
30
  fragment InquiryStatusDocument on Document {
16
31
  id
17
- status: answers(question: $statusQuestion) {
32
+ status: answers(filter: [{ question: $statusQuestion }]) {
18
33
  edges {
19
34
  node {
20
35
  id
@@ -33,7 +48,7 @@ fragment InquiryStatusDocument on Document {
33
48
  fragment InquiryRequest on Document {
34
49
  id
35
50
  ...InquiryDeadlineDocument
36
- info: answers(question: $infoQuestion) {
51
+ info: answers(filter: [{ question: $infoQuestion }]) {
37
52
  edges {
38
53
  node {
39
54
  id
@@ -61,15 +76,17 @@ fragment InquiryDialog on WorkItem {
61
76
  }
62
77
  childCase {
63
78
  id
79
+ ...InquiryAnswerButtons
64
80
  document {
65
81
  ...InquiryStatusDocument
66
- info: answers(questions: $answerInfoQuestions) {
82
+ info: answers(filter: [{ questions: $answerInfoQuestions }]) {
67
83
  edges {
68
84
  node {
69
85
  id
70
86
  question {
71
87
  id
72
88
  label
89
+ slug
73
90
  }
74
91
  ... on StringAnswer {
75
92
  value
@@ -15,7 +15,7 @@ mutation CompleteInquiryWorkItem(
15
15
  id
16
16
  ...InquiryStatusDocument
17
17
  }
18
- workItems(tasks: $buttonTasks, status: READY) {
18
+ workItems(filter: [{ tasks: $buttonTasks }, { status: READY }]) {
19
19
  edges {
20
20
  node {
21
21
  id
@@ -0,0 +1,8 @@
1
+ mutation RedoWorkItem($workItem: ID!) {
2
+ redoWorkItem(input: { id: $workItem }) {
3
+ workItem {
4
+ id
5
+ isRedoable
6
+ }
7
+ }
8
+ }
@@ -50,4 +50,15 @@ query ControlWorkItems(
50
50
  }
51
51
  }
52
52
  }
53
+ case: allCases(filter: [{ id: $caseId }]) {
54
+ edges {
55
+ node {
56
+ id
57
+ parentWorkItem {
58
+ id
59
+ isRedoable
60
+ }
61
+ }
62
+ }
63
+ }
53
64
  }
@@ -1,4 +1,4 @@
1
- #import InquiryDeadlineDocument, InquiryRequest from '../fragments/inquiry.graphql'
1
+ #import InquiryAnswerButtons, InquiryDeadlineDocument, InquiryRequest from '../fragments/inquiry.graphql'
2
2
 
3
3
  query InquiryAnswer(
4
4
  $inquiry: ID!
@@ -14,6 +14,7 @@ query InquiryAnswer(
14
14
  addressedGroups
15
15
  controllingGroups
16
16
  createdAt
17
+ closedAt
17
18
  task {
18
19
  id
19
20
  slug
@@ -29,17 +30,7 @@ query InquiryAnswer(
29
30
  modifiedContentAt
30
31
  modifiedContentByUser
31
32
  }
32
- workItems(tasks: $buttonTasks, status: READY) {
33
- edges {
34
- node {
35
- id
36
- task {
37
- id
38
- slug
39
- }
40
- }
41
- }
42
- }
33
+ ...InquiryAnswerButtons
43
34
  }
44
35
  }
45
36
  }
@@ -1,7 +1,8 @@
1
- #import InquiryDialog, InquiryDeadlineDocument, InquiryStatusDocument, InquiryRequest from '../fragments/inquiry.graphql'
1
+ #import InquiryAnswerButtons, InquiryDialog, InquiryDeadlineDocument, InquiryStatusDocument, InquiryRequest from '../fragments/inquiry.graphql'
2
2
 
3
3
  query InquiryDialog(
4
4
  $task: ID!
5
+ $buttonTasks: [String]!
5
6
  $statusQuestion: ID!
6
7
  $deadlineQuestion: ID!
7
8
  $infoQuestion: ID!
@@ -29,10 +29,18 @@ export default class DistributionService extends Service {
29
29
  navigation = trackedTask(this, this.fetchNavigation, () => [this.caseId]);
30
30
 
31
31
  async refetch() {
32
- await getObservable(this.controls.value)?.refetch();
32
+ await this.refetchControls();
33
+ await this.refetchNavigation();
34
+ }
35
+
36
+ async refetchNavigation() {
33
37
  await getObservable(this.navigation.value)?.refetch();
34
38
  }
35
39
 
40
+ async refetchControls() {
41
+ await getObservable(this.controls.value)?.refetch();
42
+ }
43
+
36
44
  @dropTask
37
45
  *fetchControls(caseId) {
38
46
  return yield this.apollo.watchQuery({
@@ -11,6 +11,7 @@
11
11
  <div class={{if this.config.ui.stack "uk-width-1-1" "uk-width-1-3"}}>
12
12
  <CdNavigation @caseId={{@model}} />
13
13
  </div>
14
+ {{#if this.config.ui.stack}}<div class="uk-width-1-1"><hr /></div>{{/if}}
14
15
  <div class={{if this.config.ui.stack "uk-width-1-1" "uk-width-2-3"}}>
15
16
  {{outlet}}
16
17
  </div>
@@ -0,0 +1,34 @@
1
+ import { assert } from "@ember/debug";
2
+ import { get } from "@ember/object";
3
+
4
+ import { createDecorator } from "@projectcaluma/ember-distribution/-private/decorator";
5
+
6
+ function decorator(
7
+ target,
8
+ key,
9
+ desc,
10
+ { inquiryProperty = "args.inquiry" } = {}
11
+ ) {
12
+ assert(
13
+ `The @projectcaluma/ember-distribution config must be injected in order to use @inquiryAnswerStatus: \`@config config\``,
14
+ Object.prototype.hasOwnProperty.call(target, "config")
15
+ );
16
+
17
+ return {
18
+ get() {
19
+ const inquiry = get(this, inquiryProperty);
20
+ const readyWorkItems =
21
+ inquiry.childCase?.workItems.edges
22
+ .filter((edge) => edge.node.status === "READY")
23
+ .map((edge) => edge.node.task.slug) ?? [];
24
+
25
+ const buttonConfig = Object.entries(
26
+ this.config.inquiry.answer.buttons
27
+ ).find(([task]) => readyWorkItems.includes(task))?.[1];
28
+
29
+ return buttonConfig?.status ? this.intl.t(buttonConfig.status) : null;
30
+ },
31
+ };
32
+ }
33
+
34
+ export default createDecorator(decorator);
@@ -19,18 +19,18 @@ function decorator(
19
19
  get() {
20
20
  const inquiry = get(this, inquiryProperty);
21
21
  const value = inquiry.document?.deadline.edges[0]?.node.value;
22
- const isAnswered = inquiry.status === "COMPLETED";
22
+ const isDone = ["COMPLETED", "SKIPPED"].includes(inquiry.status);
23
23
 
24
24
  const { days: diff } = DateTime.fromISO(value).diffNow("days").toObject();
25
25
 
26
- const isOverdue = !isAnswered && diff <= 0;
27
- const isWarning = !isAnswered && diff <= this.config.warningPeriod;
26
+ const isOverdue = !isDone && diff <= 0;
27
+ const isWarning = !isDone && diff <= this.config.warningPeriod;
28
28
 
29
29
  return {
30
30
  value,
31
31
  isOverdue,
32
32
  isWarning,
33
- color: isAnswered
33
+ color: isDone
34
34
  ? "muted"
35
35
  : isOverdue
36
36
  ? "danger"
@@ -5,15 +5,17 @@ import { createDecorator } from "@projectcaluma/ember-distribution/-private/deco
5
5
  import { INQUIRY_STATUS } from "@projectcaluma/ember-distribution/config";
6
6
 
7
7
  export const ICON_MAP = {
8
- [INQUIRY_STATUS.DRAFT]: "pencil-outline",
9
- [INQUIRY_STATUS.SENT]: "paper-plane-outline",
10
- [INQUIRY_STATUS.POSITIVE]: "checkmark-outline",
11
- [INQUIRY_STATUS.NEGATIVE]: "close-outline",
12
- [INQUIRY_STATUS.NEEDS_INTERACTION]: "repeat-outline",
8
+ [INQUIRY_STATUS.DRAFT]: "commenting",
9
+ [INQUIRY_STATUS.SKIPPED]: "lock",
10
+ [INQUIRY_STATUS.SENT]: "comment",
11
+ [INQUIRY_STATUS.POSITIVE]: "check",
12
+ [INQUIRY_STATUS.NEGATIVE]: "close",
13
+ [INQUIRY_STATUS.NEEDS_INTERACTION]: "file-text",
13
14
  };
14
15
 
15
16
  export const COLOR_MAP = {
16
17
  [INQUIRY_STATUS.DRAFT]: "muted",
18
+ [INQUIRY_STATUS.SKIPPED]: "muted",
17
19
  [INQUIRY_STATUS.SENT]: "emphasis",
18
20
  [INQUIRY_STATUS.POSITIVE]: "success",
19
21
  [INQUIRY_STATUS.NEGATIVE]: "danger",
@@ -44,9 +46,12 @@ function decorator(
44
46
  ? inquiry.status === "READY"
45
47
  : inquiry.status === "SUSPENDED";
46
48
  const isSent = !isAddressed && inquiry.status === "READY";
49
+ const isSkipped = inquiry.status === "SKIPPED";
47
50
 
48
51
  const answer = inquiry.childCase?.document.status.edges[0]?.node;
49
- const slug = isDraft
52
+ const slug = isSkipped
53
+ ? INQUIRY_STATUS.SKIPPED
54
+ : isDraft
50
55
  ? INQUIRY_STATUS.DRAFT
51
56
  : isSent
52
57
  ? INQUIRY_STATUS.SENT
@@ -55,7 +60,7 @@ function decorator(
55
60
  return {
56
61
  slug,
57
62
  label:
58
- !isDraft && !isSent
63
+ !isSkipped && !isDraft && !isSent
59
64
  ? answer?.selectedOption.label
60
65
  : this.intl.t(`caluma.distribution.status.${slug}`),
61
66
  color: COLOR_MAP[slug],
@@ -1,5 +1,4 @@
1
1
  @import "../answer-form";
2
- @import "../icon-button";
2
+ @import "../group-list";
3
3
  @import "../inquiry-divider";
4
- @import "../status-indicator";
5
4
  @import "../truncated";
@@ -0,0 +1,7 @@
1
+ .group-list tr {
2
+ cursor: pointer;
3
+
4
+ > td:last-of-type svg {
5
+ min-width: 20px;
6
+ }
7
+ }
@@ -3,7 +3,7 @@
3
3
  $size: 36px;
4
4
  $iconSize: $size * 0.6;
5
5
 
6
- $sizeSmall: 24px;
6
+ $sizeSmall: 32px;
7
7
  $iconSizeSmall: $sizeSmall * 0.6;
8
8
 
9
9
  $colors: (
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-distribution/utils/inquiry-answer-status";
package/index.js CHANGED
@@ -5,11 +5,6 @@ const { buildEngine } = require("ember-engines/lib/engine-addon");
5
5
 
6
6
  const name = require("./package").name;
7
7
 
8
- const ioniconAssets = [
9
- ...require.resolve("ionicons").split("/").slice(0, -1),
10
- "svg",
11
- ].join("/");
12
-
13
8
  const publicAssets = [
14
9
  ...require.resolve(name).split("/").slice(0, -1),
15
10
  "public",
@@ -19,5 +14,5 @@ const publicAssets = [
19
14
  module.exports = buildEngine({
20
15
  name,
21
16
  lazyLoading: { enabled: false },
22
- svgJar: { sourceDirs: [ioniconAssets, publicAssets] },
17
+ svgJar: { sourceDirs: [publicAssets] },
23
18
  });