@pega/cosmos-react-cs 5.0.0-dev.4.8 → 5.0.0-dev.5.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 (201) hide show
  1. package/lib/components/CTIPanel/CTIPanel.d.ts +13 -0
  2. package/lib/components/CTIPanel/CTIPanel.d.ts.map +1 -0
  3. package/lib/components/CTIPanel/CTIPanel.js +12 -0
  4. package/lib/components/CTIPanel/CTIPanel.js.map +1 -0
  5. package/lib/components/CTIPanel/index.d.ts +2 -0
  6. package/lib/components/CTIPanel/index.d.ts.map +1 -0
  7. package/lib/components/CTIPanel/index.js +2 -0
  8. package/lib/components/CTIPanel/index.js.map +1 -0
  9. package/lib/components/CallControlPanel/AttachInteractionDialog.d.ts +47 -0
  10. package/lib/components/CallControlPanel/AttachInteractionDialog.d.ts.map +1 -0
  11. package/lib/components/CallControlPanel/AttachInteractionDialog.js +54 -0
  12. package/lib/components/CallControlPanel/AttachInteractionDialog.js.map +1 -0
  13. package/lib/components/CallControlPanel/Call.d.ts +6 -0
  14. package/lib/components/CallControlPanel/Call.d.ts.map +1 -0
  15. package/lib/components/CallControlPanel/Call.js +145 -0
  16. package/lib/components/CallControlPanel/Call.js.map +1 -0
  17. package/lib/components/CallControlPanel/CallControlPanel.d.ts +6 -0
  18. package/lib/components/CallControlPanel/CallControlPanel.d.ts.map +1 -0
  19. package/lib/components/CallControlPanel/CallControlPanel.js +61 -0
  20. package/lib/components/CallControlPanel/CallControlPanel.js.map +1 -0
  21. package/lib/components/CallControlPanel/CallControlPanel.styles.d.ts +16 -0
  22. package/lib/components/CallControlPanel/CallControlPanel.styles.d.ts.map +1 -0
  23. package/lib/components/CallControlPanel/CallControlPanel.styles.js +105 -0
  24. package/lib/components/CallControlPanel/CallControlPanel.styles.js.map +1 -0
  25. package/lib/components/CallControlPanel/CallControlPanel.types.d.ts +120 -0
  26. package/lib/components/CallControlPanel/CallControlPanel.types.d.ts.map +1 -0
  27. package/lib/components/CallControlPanel/CallControlPanel.types.js +2 -0
  28. package/lib/components/CallControlPanel/CallControlPanel.types.js.map +1 -0
  29. package/lib/components/CallControlPanel/CallControlPanelIcon.d.ts +15 -0
  30. package/lib/components/CallControlPanel/CallControlPanelIcon.d.ts.map +1 -0
  31. package/lib/components/CallControlPanel/CallControlPanelIcon.js +81 -0
  32. package/lib/components/CallControlPanel/CallControlPanelIcon.js.map +1 -0
  33. package/lib/components/CallControlPanel/CallHandover/CallHandover.types.d.ts +17 -0
  34. package/lib/components/CallControlPanel/CallHandover/CallHandover.types.d.ts.map +1 -0
  35. package/lib/components/CallControlPanel/CallHandover/CallHandover.types.js +2 -0
  36. package/lib/components/CallControlPanel/CallHandover/CallHandover.types.js.map +1 -0
  37. package/lib/components/CallControlPanel/CallHandover/CallHandoverDialog.d.ts +16 -0
  38. package/lib/components/CallControlPanel/CallHandover/CallHandoverDialog.d.ts.map +1 -0
  39. package/lib/components/CallControlPanel/CallHandover/CallHandoverDialog.js +56 -0
  40. package/lib/components/CallControlPanel/CallHandover/CallHandoverDialog.js.map +1 -0
  41. package/lib/components/CallControlPanel/CallHandover/CallHandoverForm.d.ts +31 -0
  42. package/lib/components/CallControlPanel/CallHandover/CallHandoverForm.d.ts.map +1 -0
  43. package/lib/components/CallControlPanel/CallHandover/CallHandoverForm.js +60 -0
  44. package/lib/components/CallControlPanel/CallHandover/CallHandoverForm.js.map +1 -0
  45. package/lib/components/CallControlPanel/CallHandover/index.d.ts +4 -0
  46. package/lib/components/CallControlPanel/CallHandover/index.d.ts.map +1 -0
  47. package/lib/components/CallControlPanel/CallHandover/index.js +4 -0
  48. package/lib/components/CallControlPanel/CallHandover/index.js.map +1 -0
  49. package/lib/components/CallControlPanel/ContactList/CalleePicker.d.ts +18 -0
  50. package/lib/components/CallControlPanel/ContactList/CalleePicker.d.ts.map +1 -0
  51. package/lib/components/CallControlPanel/ContactList/CalleePicker.js +54 -0
  52. package/lib/components/CallControlPanel/ContactList/CalleePicker.js.map +1 -0
  53. package/lib/components/CallControlPanel/ContactList/ContactList.d.ts +10 -0
  54. package/lib/components/CallControlPanel/ContactList/ContactList.d.ts.map +1 -0
  55. package/lib/components/CallControlPanel/ContactList/ContactList.js +129 -0
  56. package/lib/components/CallControlPanel/ContactList/ContactList.js.map +1 -0
  57. package/lib/components/CallControlPanel/ContactList/ContactList.types.d.ts +30 -0
  58. package/lib/components/CallControlPanel/ContactList/ContactList.types.d.ts.map +1 -0
  59. package/lib/components/CallControlPanel/ContactList/ContactList.types.js +2 -0
  60. package/lib/components/CallControlPanel/ContactList/ContactList.types.js.map +1 -0
  61. package/lib/components/CallControlPanel/ContactList/index.d.ts +3 -0
  62. package/lib/components/CallControlPanel/ContactList/index.d.ts.map +1 -0
  63. package/lib/components/CallControlPanel/ContactList/index.js +2 -0
  64. package/lib/components/CallControlPanel/ContactList/index.js.map +1 -0
  65. package/lib/components/CallControlPanel/ExternalCTI.d.ts +24 -0
  66. package/lib/components/CallControlPanel/ExternalCTI.d.ts.map +1 -0
  67. package/lib/components/CallControlPanel/ExternalCTI.js +48 -0
  68. package/lib/components/CallControlPanel/ExternalCTI.js.map +1 -0
  69. package/lib/components/CallControlPanel/FloatingPanel.d.ts +36 -0
  70. package/lib/components/CallControlPanel/FloatingPanel.d.ts.map +1 -0
  71. package/lib/components/CallControlPanel/FloatingPanel.js +72 -0
  72. package/lib/components/CallControlPanel/FloatingPanel.js.map +1 -0
  73. package/lib/components/CallControlPanel/IncomingCall.d.ts +6 -0
  74. package/lib/components/CallControlPanel/IncomingCall.d.ts.map +1 -0
  75. package/lib/components/CallControlPanel/IncomingCall.js +18 -0
  76. package/lib/components/CallControlPanel/IncomingCall.js.map +1 -0
  77. package/lib/components/CallControlPanel/StopWatch.d.ts +11 -0
  78. package/lib/components/CallControlPanel/StopWatch.d.ts.map +1 -0
  79. package/lib/components/CallControlPanel/StopWatch.js +28 -0
  80. package/lib/components/CallControlPanel/StopWatch.js.map +1 -0
  81. package/lib/components/CallControlPanel/index.d.ts +5 -0
  82. package/lib/components/CallControlPanel/index.d.ts.map +1 -0
  83. package/lib/components/CallControlPanel/index.js +3 -0
  84. package/lib/components/CallControlPanel/index.js.map +1 -0
  85. package/lib/components/CallControlPanel/utils.d.ts +7 -0
  86. package/lib/components/CallControlPanel/utils.d.ts.map +1 -0
  87. package/lib/components/CallControlPanel/utils.js +34 -0
  88. package/lib/components/CallControlPanel/utils.js.map +1 -0
  89. package/lib/components/DialPad/DialPad.d.ts +18 -0
  90. package/lib/components/DialPad/DialPad.d.ts.map +1 -0
  91. package/lib/components/DialPad/DialPad.js +30 -0
  92. package/lib/components/DialPad/DialPad.js.map +1 -0
  93. package/lib/components/DialPad/DialPad.types.d.ts +33 -0
  94. package/lib/components/DialPad/DialPad.types.d.ts.map +1 -0
  95. package/lib/components/DialPad/DialPad.types.js +2 -0
  96. package/lib/components/DialPad/DialPad.types.js.map +1 -0
  97. package/lib/components/DialPad/DialPadDialog.d.ts +9 -0
  98. package/lib/components/DialPad/DialPadDialog.d.ts.map +1 -0
  99. package/lib/components/DialPad/DialPadDialog.js +35 -0
  100. package/lib/components/DialPad/DialPadDialog.js.map +1 -0
  101. package/lib/components/DialPad/DialPadKeyboard.d.ts +12 -0
  102. package/lib/components/DialPad/DialPadKeyboard.d.ts.map +1 -0
  103. package/lib/components/DialPad/DialPadKeyboard.js +89 -0
  104. package/lib/components/DialPad/DialPadKeyboard.js.map +1 -0
  105. package/lib/components/DialPad/DialPadKeyboard.styles.d.ts +5 -0
  106. package/lib/components/DialPad/DialPadKeyboard.styles.d.ts.map +1 -0
  107. package/lib/components/DialPad/DialPadKeyboard.styles.js +76 -0
  108. package/lib/components/DialPad/DialPadKeyboard.styles.js.map +1 -0
  109. package/lib/components/DialPad/KeyboardNavigation.d.ts +6 -0
  110. package/lib/components/DialPad/KeyboardNavigation.d.ts.map +1 -0
  111. package/lib/components/DialPad/KeyboardNavigation.js +156 -0
  112. package/lib/components/DialPad/KeyboardNavigation.js.map +1 -0
  113. package/lib/components/DialPad/index.d.ts +4 -0
  114. package/lib/components/DialPad/index.d.ts.map +1 -0
  115. package/lib/components/DialPad/index.js +3 -0
  116. package/lib/components/DialPad/index.js.map +1 -0
  117. package/lib/components/DialPad/utils.d.ts +4 -0
  118. package/lib/components/DialPad/utils.d.ts.map +1 -0
  119. package/lib/components/DialPad/utils.js +7 -0
  120. package/lib/components/DialPad/utils.js.map +1 -0
  121. package/lib/components/InteractionNotification/CountdownButton.d.ts +15 -0
  122. package/lib/components/InteractionNotification/CountdownButton.d.ts.map +1 -0
  123. package/lib/components/InteractionNotification/CountdownButton.js +42 -0
  124. package/lib/components/InteractionNotification/CountdownButton.js.map +1 -0
  125. package/lib/components/InteractionNotification/InteractionNotification.d.ts +35 -0
  126. package/lib/components/InteractionNotification/InteractionNotification.d.ts.map +1 -0
  127. package/lib/components/InteractionNotification/InteractionNotification.js +110 -0
  128. package/lib/components/InteractionNotification/InteractionNotification.js.map +1 -0
  129. package/lib/components/InteractionNotification/index.d.ts +2 -0
  130. package/lib/components/InteractionNotification/index.d.ts.map +1 -0
  131. package/lib/components/InteractionNotification/index.js +2 -0
  132. package/lib/components/InteractionNotification/index.js.map +1 -0
  133. package/lib/components/InteractionTimer/InteractionTimer.d.ts +29 -0
  134. package/lib/components/InteractionTimer/InteractionTimer.d.ts.map +1 -0
  135. package/lib/components/InteractionTimer/InteractionTimer.js +90 -0
  136. package/lib/components/InteractionTimer/InteractionTimer.js.map +1 -0
  137. package/lib/components/InteractionTimer/index.d.ts +3 -0
  138. package/lib/components/InteractionTimer/index.d.ts.map +1 -0
  139. package/lib/components/InteractionTimer/index.js +2 -0
  140. package/lib/components/InteractionTimer/index.js.map +1 -0
  141. package/lib/components/Picker/Picker.d.ts +6 -0
  142. package/lib/components/Picker/Picker.d.ts.map +1 -0
  143. package/lib/components/Picker/Picker.js +109 -0
  144. package/lib/components/Picker/Picker.js.map +1 -0
  145. package/lib/components/Picker/Picker.styles.d.ts +12 -0
  146. package/lib/components/Picker/Picker.styles.d.ts.map +1 -0
  147. package/lib/components/Picker/Picker.styles.js +59 -0
  148. package/lib/components/Picker/Picker.styles.js.map +1 -0
  149. package/lib/components/Picker/Picker.types.d.ts +35 -0
  150. package/lib/components/Picker/Picker.types.d.ts.map +1 -0
  151. package/lib/components/Picker/Picker.types.js +2 -0
  152. package/lib/components/Picker/Picker.types.js.map +1 -0
  153. package/lib/components/Picker/index.d.ts +2 -0
  154. package/lib/components/Picker/index.d.ts.map +1 -0
  155. package/lib/components/Picker/index.js +2 -0
  156. package/lib/components/Picker/index.js.map +1 -0
  157. package/lib/components/TaskManager/ConversationAI.d.ts +6 -0
  158. package/lib/components/TaskManager/ConversationAI.d.ts.map +1 -0
  159. package/lib/components/TaskManager/ConversationAI.js +29 -0
  160. package/lib/components/TaskManager/ConversationAI.js.map +1 -0
  161. package/lib/components/TaskManager/Dialogue.d.ts +6 -0
  162. package/lib/components/TaskManager/Dialogue.d.ts.map +1 -0
  163. package/lib/components/TaskManager/Dialogue.js +30 -0
  164. package/lib/components/TaskManager/Dialogue.js.map +1 -0
  165. package/lib/components/TaskManager/TaskManager.context.d.ts +5 -0
  166. package/lib/components/TaskManager/TaskManager.context.d.ts.map +1 -0
  167. package/lib/components/TaskManager/TaskManager.context.js +3 -0
  168. package/lib/components/TaskManager/TaskManager.context.js.map +1 -0
  169. package/lib/components/TaskManager/TaskManager.d.ts +6 -0
  170. package/lib/components/TaskManager/TaskManager.d.ts.map +1 -0
  171. package/lib/components/TaskManager/TaskManager.js +68 -0
  172. package/lib/components/TaskManager/TaskManager.js.map +1 -0
  173. package/lib/components/TaskManager/TaskManager.styles.d.ts +37 -0
  174. package/lib/components/TaskManager/TaskManager.styles.d.ts.map +1 -0
  175. package/lib/components/TaskManager/TaskManager.styles.js +325 -0
  176. package/lib/components/TaskManager/TaskManager.styles.js.map +1 -0
  177. package/lib/components/TaskManager/TaskManager.types.d.ts +98 -0
  178. package/lib/components/TaskManager/TaskManager.types.d.ts.map +1 -0
  179. package/lib/components/TaskManager/TaskManager.types.js +2 -0
  180. package/lib/components/TaskManager/TaskManager.types.js.map +1 -0
  181. package/lib/components/TaskManager/TaskManagerTabs.d.ts +6 -0
  182. package/lib/components/TaskManager/TaskManagerTabs.d.ts.map +1 -0
  183. package/lib/components/TaskManager/TaskManagerTabs.js +186 -0
  184. package/lib/components/TaskManager/TaskManagerTabs.js.map +1 -0
  185. package/lib/components/TaskManager/TaskPicker.d.ts +19 -0
  186. package/lib/components/TaskManager/TaskPicker.d.ts.map +1 -0
  187. package/lib/components/TaskManager/TaskPicker.js +89 -0
  188. package/lib/components/TaskManager/TaskPicker.js.map +1 -0
  189. package/lib/components/TaskManager/TaskView.d.ts +6 -0
  190. package/lib/components/TaskManager/TaskView.d.ts.map +1 -0
  191. package/lib/components/TaskManager/TaskView.js +10 -0
  192. package/lib/components/TaskManager/TaskView.js.map +1 -0
  193. package/lib/components/TaskManager/index.d.ts +5 -0
  194. package/lib/components/TaskManager/index.d.ts.map +1 -0
  195. package/lib/components/TaskManager/index.js +4 -0
  196. package/lib/components/TaskManager/index.js.map +1 -0
  197. package/lib/index.d.ts +13 -0
  198. package/lib/index.d.ts.map +1 -0
  199. package/lib/index.js +14 -0
  200. package/lib/index.js.map +1 -0
  201. package/package.json +3 -3
@@ -0,0 +1,105 @@
1
+ import styled, { css } from 'styled-components';
2
+ import { defaultThemeProp, StyledBackdrop, StyledButton, StyledFlex, StyledProgressBar, StyledSummaryItemActions, StyledVisual, StyledSummaryItem, StyledPrimary, StyledSecondary, Card, Status } from '@pega/cosmos-react-core';
3
+ import { StyledTabPanel } from '@pega/cosmos-react-core/lib/components/Tabs/TabPanel';
4
+ import { StyledStopWatch } from './StopWatch';
5
+ export const StyledCallContainer = styled.div(({ theme: { base: { spacing }, components: { card } } }) => {
6
+ return css `
7
+ position: relative;
8
+ > ${StyledBackdrop} {
9
+ z-index: 0;
10
+ }
11
+
12
+ ${StyledSummaryItemActions} ${StyledFlex} + ${StyledButton} {
13
+ margin-inline-start: ${spacing};
14
+ }
15
+
16
+ > ${StyledSummaryItem} {
17
+ box-sizing: content-box;
18
+ position: relative;
19
+ height: 2rem;
20
+ padding-inline: calc(2 * ${spacing});
21
+ border-top: 0;
22
+ > ${StyledVisual} {
23
+ transform: rotate(50deg);
24
+ }
25
+ > ${StyledPrimary}, > ${StyledSecondary} {
26
+ align-self: center;
27
+ }
28
+ }
29
+
30
+ > ${StyledSummaryItem} ~ ${StyledSummaryItem} {
31
+ border-top: 0.125rem solid ${card.background};
32
+ }
33
+ `;
34
+ });
35
+ StyledCallContainer.defaultProps = defaultThemeProp;
36
+ export const StyledIncomingContainer = styled(StyledCallContainer)(({ theme }) => {
37
+ return css `
38
+ background-color: ${theme.base.palette['secondary-background']};
39
+ border-radius: calc(0.5 * ${theme.base['border-radius']});
40
+
41
+ > ${StyledSummaryItem} {
42
+ height: 3rem;
43
+ }
44
+ `;
45
+ });
46
+ StyledIncomingContainer.defaultProps = defaultThemeProp;
47
+ export const StyledHoldInfo = styled(Status) `
48
+ position: absolute;
49
+ top: 0;
50
+ transform: translateY(-50%);
51
+ `;
52
+ StyledHoldInfo.defaultProps = defaultThemeProp;
53
+ export const StyledStatusRow = styled.div(({ theme: { components: { input: { height } } } }) => {
54
+ return css `
55
+ > * {
56
+ min-height: ${height};
57
+ }
58
+ > ${StyledStopWatch} {
59
+ line-height: ${height};
60
+ }
61
+ `;
62
+ });
63
+ StyledStatusRow.defaultProps = defaultThemeProp;
64
+ export const StyledSLAProgress = styled(StyledProgressBar)(({ theme, slaDuration = 0, slaLevel }) => {
65
+ const { base: { colors } } = theme;
66
+ const { bgColor = colors.red['extra-light'], fgColor = colors.red.light } = slaLevel !== undefined
67
+ ? [
68
+ { bgColor: colors.green['extra-light'], fgColor: colors.green.light },
69
+ { bgColor: colors.orange['extra-light'], fgColor: colors.orange.light },
70
+ { bgColor: colors.red['extra-light'], fgColor: colors.red.light }
71
+ ][slaLevel]
72
+ : { bgColor: colors.slate.light, fgColor: colors.slate.light };
73
+ return css `
74
+ position: absolute;
75
+ width: 100%;
76
+ height: 100%;
77
+ background-color: ${bgColor};
78
+ border-radius: calc(0.5 * ${theme.base['border-radius']});
79
+
80
+ /* Fancy way to restart the animation by changing it's name. */
81
+ @keyframes FillIn-${slaLevel} {
82
+ 0% {
83
+ transform: translateX(-100%);
84
+ }
85
+
86
+ 100% {
87
+ transform: translateX(0);
88
+ }
89
+ }
90
+
91
+ &::before {
92
+ background-color: ${fgColor};
93
+ border-radius: 0;
94
+ animation: FillIn-${slaLevel} ${slaDuration}s linear;
95
+ }
96
+ `;
97
+ });
98
+ StyledSLAProgress.defaultProps = defaultThemeProp;
99
+ export const StyledCalleePicker = styled(Card) `
100
+ ${StyledTabPanel} {
101
+ height: 24rem;
102
+ }
103
+ `;
104
+ StyledCalleePicker.defaultProps = defaultThemeProp;
105
+ //# sourceMappingURL=CallControlPanel.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallControlPanel.styles.js","sourceRoot":"","sources":["../../../src/components/CallControlPanel/CallControlPanel.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import styled, { css } from 'styled-components';\n\nimport {\n defaultThemeProp,\n StyledBackdrop,\n StyledButton,\n StyledFlex,\n StyledProgressBar,\n StyledSummaryItemActions,\n StyledVisual,\n ProgressProps,\n StyledSummaryItem,\n StyledPrimary,\n StyledSecondary,\n Card,\n Status\n} from '@pega/cosmos-react-core';\nimport { StyledTabPanel } from '@pega/cosmos-react-core/lib/components/Tabs/TabPanel';\n\nimport { StyledStopWatch } from './StopWatch';\n\nexport const StyledCallContainer = styled.div(\n ({\n theme: {\n base: { spacing },\n components: { card }\n }\n }) => {\n return css`\n position: relative;\n > ${StyledBackdrop} {\n z-index: 0;\n }\n\n ${StyledSummaryItemActions} ${StyledFlex} + ${StyledButton} {\n margin-inline-start: ${spacing};\n }\n\n > ${StyledSummaryItem} {\n box-sizing: content-box;\n position: relative;\n height: 2rem;\n padding-inline: calc(2 * ${spacing});\n border-top: 0;\n > ${StyledVisual} {\n transform: rotate(50deg);\n }\n > ${StyledPrimary}, > ${StyledSecondary} {\n align-self: center;\n }\n }\n\n > ${StyledSummaryItem} ~ ${StyledSummaryItem} {\n border-top: 0.125rem solid ${card.background};\n }\n `;\n }\n);\n\nStyledCallContainer.defaultProps = defaultThemeProp;\n\nexport const StyledIncomingContainer = styled(StyledCallContainer)(({ theme }) => {\n return css`\n background-color: ${theme.base.palette['secondary-background']};\n border-radius: calc(0.5 * ${theme.base['border-radius']});\n\n > ${StyledSummaryItem} {\n height: 3rem;\n }\n `;\n});\n\nStyledIncomingContainer.defaultProps = defaultThemeProp;\n\nexport const StyledHoldInfo = styled(Status)`\n position: absolute;\n top: 0;\n transform: translateY(-50%);\n`;\n\nStyledHoldInfo.defaultProps = defaultThemeProp;\n\nexport const StyledStatusRow = styled.div(\n ({\n theme: {\n components: {\n input: { height }\n }\n }\n }) => {\n return css`\n > * {\n min-height: ${height};\n }\n > ${StyledStopWatch} {\n line-height: ${height};\n }\n `;\n }\n);\n\nStyledStatusRow.defaultProps = defaultThemeProp;\n\nexport const StyledSLAProgress = styled(StyledProgressBar)<\n ProgressProps & { slaDuration?: number; slaLevel?: number }\n>(({ theme, slaDuration = 0, slaLevel }) => {\n const {\n base: { colors }\n } = theme;\n\n const { bgColor = colors.red['extra-light'], fgColor = colors.red.light } =\n slaLevel !== undefined\n ? [\n { bgColor: colors.green['extra-light'], fgColor: colors.green.light },\n { bgColor: colors.orange['extra-light'], fgColor: colors.orange.light },\n { bgColor: colors.red['extra-light'], fgColor: colors.red.light }\n ][slaLevel]\n : { bgColor: colors.slate.light, fgColor: colors.slate.light };\n\n return css`\n position: absolute;\n width: 100%;\n height: 100%;\n background-color: ${bgColor};\n border-radius: calc(0.5 * ${theme.base['border-radius']});\n\n /* Fancy way to restart the animation by changing it's name. */\n @keyframes FillIn-${slaLevel} {\n 0% {\n transform: translateX(-100%);\n }\n\n 100% {\n transform: translateX(0);\n }\n }\n\n &::before {\n background-color: ${fgColor};\n border-radius: 0;\n animation: FillIn-${slaLevel} ${slaDuration}s linear;\n }\n `;\n});\n\nStyledSLAProgress.defaultProps = defaultThemeProp;\n\nexport const StyledCalleePicker = styled(Card)`\n ${StyledTabPanel} {\n height: 24rem;\n }\n`;\n\nStyledCalleePicker.defaultProps = defaultThemeProp;\n"]}
@@ -0,0 +1,120 @@
1
+ import type { Ref } from 'react';
2
+ import type { BannerProps, BaseProps, NoChildrenProp } from '@pega/cosmos-react-core';
3
+ import type { FloatingPanelProps } from './FloatingPanel';
4
+ import { Contact } from './ContactList/ContactList.types';
5
+ import type { TransferData, TransferReasonOption } from './CallHandover';
6
+ export interface CallParticipant {
7
+ /** Caller id. */
8
+ id: string;
9
+ /** Caller's name. */
10
+ name: string;
11
+ /** Additional caller's info. */
12
+ info?: string;
13
+ /** Callback fired when the user ends the call. */
14
+ onHangUp?: (id: CallProps['id'], participantId: CallParticipant['id']) => void;
15
+ }
16
+ export interface CallProps {
17
+ /** Call identifier. */
18
+ id: string;
19
+ /** Timestamp when the call has begun. */
20
+ startedAt: number | Date;
21
+ /** Timestamp when the call has been put on hold. */
22
+ onHoldSince?: number | Date;
23
+ /** SLA configuration timeups. Array of numbers of seconds after which the particular SLA level
24
+ * time is up.
25
+ */
26
+ slaConfig?: number[];
27
+ /** Call participants. */
28
+ participants: CallParticipant[];
29
+ /** The flag whether the mic is muted on this call. */
30
+ muted?: boolean;
31
+ /** Callback fired when 'pause' icon has been clicked. */
32
+ onPauseToggle?: (id: CallProps['id']) => void;
33
+ /** Callback fired when 'mute' icon has been clicked. */
34
+ onMuteToggle: (id: CallProps['id']) => void;
35
+ /** Callback fired when 'Consult' action has been clicked. */
36
+ onConsultAction?: (id: CallProps['id'], transferData: TransferData) => void;
37
+ /** Callback fired when 'Conference' action has been clicked. */
38
+ onConferenceAction?: (id: CallProps['id'], transferData: TransferData) => void;
39
+ /** Callback fired when 'Merge call' action has been chosen. */
40
+ onMergeCall?: (id: CallProps['id']) => void;
41
+ /** Callback fired for every dial pad key press. */
42
+ onDTMFPress?: (id: CallProps['id'], key: string) => void;
43
+ /** Callback fired when 'Transfer' action has been clicked. */
44
+ onTransferAction?: (id: CallProps['id'], transferData: TransferData) => void;
45
+ /** Callback fired when 'Transfer' action has been clicked. */
46
+ onHandOffCall?: (id: CallProps['id']) => void;
47
+ /** Callback fired when the user ends the call. */
48
+ onEndCall?: (id: CallProps['id']) => void;
49
+ /** Initial selected transfer reason */
50
+ defaultTransfer?: TransferReasonOption['id'];
51
+ /** Transfer reason options */
52
+ transferOptions: Readonly<TransferReasonOption[]>;
53
+ /** Initial selected interaction */
54
+ defaultInteraction?: TransferReasonOption['id'];
55
+ /** Interaction options */
56
+ interactionOptions?: Readonly<TransferReasonOption[]>;
57
+ }
58
+ export interface IncomingCallProps {
59
+ /** Call identifier. */
60
+ id: string;
61
+ /** Call participants. */
62
+ participant: CallParticipant;
63
+ /** Callback fired when the user ends the call. */
64
+ onRejectCall?: (id: CallProps['id']) => void;
65
+ /** Callback fired when the user accept the call. */
66
+ onAcceptCall: (id: CallProps['id']) => void;
67
+ }
68
+ export type UserAvailabilityStatus = 'available' | 'unavailable' | 'busy' | 'after_work' | 'logout';
69
+ export interface UserAvailabilityStatusOption {
70
+ readonly id: string;
71
+ readonly label: string;
72
+ readonly status: UserAvailabilityStatus;
73
+ readonly disabled?: boolean;
74
+ }
75
+ export interface InteractionTransferData {
76
+ onCancel: () => void;
77
+ onComplete: () => void;
78
+ }
79
+ export interface CallControlPanelProps extends BaseProps, NoChildrenProp {
80
+ /** The heading rendered. */
81
+ heading: string;
82
+ /** User availability statuses. */
83
+ userStatus?: {
84
+ statusOptions: Readonly<UserAvailabilityStatusOption[]>;
85
+ /** User current status. */
86
+ status: UserAvailabilityStatusOption['id'];
87
+ /** Timestamp since the user is in the current status. */
88
+ inStatusSince: number | Date;
89
+ /**
90
+ * Callback fired when user changes their status.
91
+ * @param value new chosen status.
92
+ */
93
+ onChange: (value: UserAvailabilityStatusOption['id']) => void;
94
+ };
95
+ /** If true, the component will be draggable */
96
+ draggable?: boolean;
97
+ /** Region for messages: errors, notifications, etc. */
98
+ message?: Pick<BannerProps, 'variant' | 'messages' | 'onDismiss'>;
99
+ /**
100
+ * List of current calls. Having two or more not declared as "on hold" (onHoldSince defined) means there's
101
+ * a conference call.
102
+ */
103
+ calls: (CallProps | IncomingCallProps)[];
104
+ /**
105
+ * Callback fired on new call made by the user. 'Add call' button is not present if callback is not passed.
106
+ * @param phoneNumber the number chosen.
107
+ */
108
+ onAddCall?: (phoneNumber: string) => void;
109
+ /** Intraction transfer popup options. */
110
+ interactionTransfer?: InteractionTransferData;
111
+ /** An array of contacts objects. */
112
+ contactsList: Contact[];
113
+ /** Callback fired on adding/removing contact to/from favorites */
114
+ onFavoriteToggle: (phoneNumber: string, favorite: boolean) => void;
115
+ /** Flag driving panel visibility. */
116
+ visible?: FloatingPanelProps['visible'];
117
+ /** Reference to the root component. */
118
+ ref?: Ref<HTMLDivElement>;
119
+ }
120
+ //# sourceMappingURL=CallControlPanel.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallControlPanel.types.d.ts","sourceRoot":"","sources":["../../../src/components/CallControlPanel/CallControlPanel.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CallControlPanel.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallControlPanel.types.js","sourceRoot":"","sources":["../../../src/components/CallControlPanel/CallControlPanel.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Ref } from 'react';\n\nimport type { BannerProps, BaseProps, NoChildrenProp } from '@pega/cosmos-react-core';\n\nimport type { FloatingPanelProps } from './FloatingPanel';\nimport { Contact } from './ContactList/ContactList.types';\nimport type { TransferData, TransferReasonOption } from './CallHandover';\n\nexport interface CallParticipant {\n /** Caller id. */\n id: string;\n /** Caller's name. */\n name: string;\n /** Additional caller's info. */\n info?: string;\n /** Callback fired when the user ends the call. */\n onHangUp?: (id: CallProps['id'], participantId: CallParticipant['id']) => void;\n}\n\nexport interface CallProps {\n /** Call identifier. */\n id: string;\n /** Timestamp when the call has begun. */\n startedAt: number | Date;\n /** Timestamp when the call has been put on hold. */\n onHoldSince?: number | Date;\n /** SLA configuration timeups. Array of numbers of seconds after which the particular SLA level\n * time is up.\n */\n slaConfig?: number[];\n /** Call participants. */\n participants: CallParticipant[];\n /** The flag whether the mic is muted on this call. */\n muted?: boolean;\n /** Callback fired when 'pause' icon has been clicked. */\n onPauseToggle?: (id: CallProps['id']) => void;\n /** Callback fired when 'mute' icon has been clicked. */\n onMuteToggle: (id: CallProps['id']) => void;\n /** Callback fired when 'Consult' action has been clicked. */\n onConsultAction?: (id: CallProps['id'], transferData: TransferData) => void;\n /** Callback fired when 'Conference' action has been clicked. */\n onConferenceAction?: (id: CallProps['id'], transferData: TransferData) => void;\n /** Callback fired when 'Merge call' action has been chosen. */\n onMergeCall?: (id: CallProps['id']) => void;\n /** Callback fired for every dial pad key press. */\n onDTMFPress?: (id: CallProps['id'], key: string) => void;\n /** Callback fired when 'Transfer' action has been clicked. */\n onTransferAction?: (id: CallProps['id'], transferData: TransferData) => void;\n /** Callback fired when 'Transfer' action has been clicked. */\n onHandOffCall?: (id: CallProps['id']) => void;\n /** Callback fired when the user ends the call. */\n onEndCall?: (id: CallProps['id']) => void;\n /** Initial selected transfer reason */\n defaultTransfer?: TransferReasonOption['id'];\n /** Transfer reason options */\n transferOptions: Readonly<TransferReasonOption[]>;\n /** Initial selected interaction */\n defaultInteraction?: TransferReasonOption['id'];\n /** Interaction options */\n interactionOptions?: Readonly<TransferReasonOption[]>;\n}\n\nexport interface IncomingCallProps {\n /** Call identifier. */\n id: string;\n /** Call participants. */\n participant: CallParticipant;\n /** Callback fired when the user ends the call. */\n onRejectCall?: (id: CallProps['id']) => void;\n /** Callback fired when the user accept the call. */\n onAcceptCall: (id: CallProps['id']) => void;\n}\n\nexport type UserAvailabilityStatus = 'available' | 'unavailable' | 'busy' | 'after_work' | 'logout';\n\nexport interface UserAvailabilityStatusOption {\n readonly id: string;\n readonly label: string;\n readonly status: UserAvailabilityStatus;\n readonly disabled?: boolean;\n}\n\nexport interface InteractionTransferData {\n onCancel: () => void;\n onComplete: () => void;\n}\n\nexport interface CallControlPanelProps extends BaseProps, NoChildrenProp {\n /** The heading rendered. */\n heading: string;\n /** User availability statuses. */\n userStatus?: {\n statusOptions: Readonly<UserAvailabilityStatusOption[]>;\n /** User current status. */\n status: UserAvailabilityStatusOption['id'];\n /** Timestamp since the user is in the current status. */\n inStatusSince: number | Date;\n /**\n * Callback fired when user changes their status.\n * @param value new chosen status.\n */\n onChange: (value: UserAvailabilityStatusOption['id']) => void;\n };\n /** If true, the component will be draggable */\n draggable?: boolean;\n /** Region for messages: errors, notifications, etc. */\n message?: Pick<BannerProps, 'variant' | 'messages' | 'onDismiss'>;\n /**\n * List of current calls. Having two or more not declared as \"on hold\" (onHoldSince defined) means there's\n * a conference call.\n */\n calls: (CallProps | IncomingCallProps)[];\n /**\n * Callback fired on new call made by the user. 'Add call' button is not present if callback is not passed.\n * @param phoneNumber the number chosen.\n */\n onAddCall?: (phoneNumber: string) => void;\n /** Intraction transfer popup options. */\n interactionTransfer?: InteractionTransferData;\n /** An array of contacts objects. */\n contactsList: Contact[];\n /** Callback fired on adding/removing contact to/from favorites */\n onFavoriteToggle: (phoneNumber: string, favorite: boolean) => void;\n /** Flag driving panel visibility. */\n visible?: FloatingPanelProps['visible'];\n /** Reference to the root component. */\n ref?: Ref<HTMLDivElement>;\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import { FunctionComponent } from 'react';
2
+ import { ForwardProps, NoChildrenProp } from '@pega/cosmos-react-core';
3
+ import type { UserAvailabilityStatus } from './CallControlPanel.types';
4
+ interface CallControlPanelIconProps extends NoChildrenProp {
5
+ status?: UserAvailabilityStatus;
6
+ label: string;
7
+ panelVisible: boolean;
8
+ }
9
+ interface UserStatusIconProps extends Pick<CallControlPanelIconProps, 'status'> {
10
+ variant: 'icon' | 'dot';
11
+ }
12
+ export declare const UserStatusIcon: FunctionComponent<UserStatusIconProps>;
13
+ declare const CallControlPanelIcon: FunctionComponent<CallControlPanelIconProps & ForwardProps>;
14
+ export default CallControlPanelIcon;
15
+ //# sourceMappingURL=CallControlPanelIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallControlPanelIcon.d.ts","sourceRoot":"","sources":["../../../src/components/CallControlPanel/CallControlPanelIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAQ,MAAM,OAAO,CAAC;AAIhD,OAAO,EAEL,YAAY,EAGZ,cAAc,EAMf,MAAM,yBAAyB,CAAC;AAKjC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAOvE,UAAU,yBAA0B,SAAQ,cAAc;IACxD,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,mBAAoB,SAAQ,IAAI,CAAC,yBAAyB,EAAE,QAAQ,CAAC;IAC7E,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;CACzB;AAkFD,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAAC,mBAAmB,CA4BjE,CAAC;AAEF,QAAA,MAAM,oBAAoB,EAAE,iBAAiB,CAAC,yBAAyB,GAAG,YAAY,CAWrF,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { memo } from 'react';
3
+ import styled, { css } from 'styled-components';
4
+ import { readableColor } from 'polished';
5
+ import { defaultThemeProp, Icon, registerIcon, StyledAvatar, StyledIcon, useTheme, VisuallyHiddenText } from '@pega/cosmos-react-core';
6
+ import * as headsetIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/headset.icon';
7
+ import * as eyeOffSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/eye-off-solid.icon';
8
+ registerIcon(headsetIcon, eyeOffSolidIcon);
9
+ const colorMapping = {
10
+ unavailable: 'slate-light',
11
+ available: 'green-light',
12
+ busy: 'red-medium',
13
+ after_work: 'orange-light',
14
+ logout: 'slate-light'
15
+ };
16
+ const iconMapping = {
17
+ unavailable: 'times',
18
+ available: undefined,
19
+ busy: 'minus',
20
+ after_work: 'clock',
21
+ logout: 'times'
22
+ };
23
+ const StyledStatusIcon = styled.div(({ theme: { base: { colors } }, userStatus }) => {
24
+ const [colorName, colorVariant] = colorMapping[userStatus].split('-', 2);
25
+ const bgColor = colors[colorName][colorVariant];
26
+ const fgColor = readableColor(bgColor);
27
+ return css `
28
+ background-color: ${bgColor};
29
+ color: ${fgColor};
30
+ `;
31
+ });
32
+ StyledStatusIcon.defaultProps = defaultThemeProp;
33
+ const StyledUserStatusIcon = styled(StyledStatusIcon)(({ theme }) => {
34
+ return css `
35
+ border-radius: 50%;
36
+ border: 0.0625rem solid ${theme.components['app-shell'].nav['background-color']};
37
+
38
+ ${StyledIcon} {
39
+ display: block;
40
+ width: 100%;
41
+ margin: 0 auto;
42
+ }
43
+ `;
44
+ });
45
+ StyledUserStatusIcon.defaultProps = defaultThemeProp;
46
+ const StyledPanelVisibilityIcon = styled(Icon) `
47
+ width: 0.875rem;
48
+ height: 0.875rem;
49
+ fill: ${p => p.theme.base.colors.gray.medium};
50
+ `;
51
+ StyledPanelVisibilityIcon.defaultProps = defaultThemeProp;
52
+ const StyledCallControlPanelIcon = styled(StyledStatusIcon) `
53
+ ${StyledUserStatusIcon}, ${StyledPanelVisibilityIcon} {
54
+ position: absolute;
55
+ width: 0.875rem;
56
+ height: 0.875rem;
57
+ z-index: 1;
58
+ }
59
+
60
+ ${StyledUserStatusIcon} {
61
+ inset-block-start: -0.25rem;
62
+ inset-inline-end: -0.25rem;
63
+ }
64
+
65
+ ${StyledPanelVisibilityIcon} {
66
+ inset-block-end: -0.25rem;
67
+ inset-inline-end: -0.25rem;
68
+ }
69
+ `;
70
+ export const UserStatusIcon = memo(({ status = 'logout', variant }) => {
71
+ const { base: { colors } } = useTheme();
72
+ const [colorName, colorVariant] = colorMapping[status].split('-', 2);
73
+ const bgColor = colors[colorName][colorVariant];
74
+ const iconName = iconMapping[status];
75
+ return variant === 'dot' ? (_jsx("svg", { role: 'presentation', height: '1rem', width: '1rem', viewBox: '0 0 10 10', xmlns: 'http://www.w3.org/2000/svg', children: _jsx("circle", { cx: '50%', cy: '50%', r: '50%', fill: bgColor }) })) : (_jsx(StyledUserStatusIcon, { userStatus: status, children: iconName && _jsx(Icon, { name: iconName }) }));
76
+ });
77
+ const CallControlPanelIcon = memo(({ status = 'logout', label, panelVisible, ...restProps }) => {
78
+ return (_jsxs(StyledCallControlPanelIcon, { as: StyledAvatar, ...restProps, size: 'm', userStatus: status, children: [_jsx(Icon, { name: 'headset' }), status !== 'available' && _jsx(UserStatusIcon, { variant: 'icon', status: status }), !panelVisible && _jsx(StyledPanelVisibilityIcon, { name: 'eye-off-solid' }), _jsx(VisuallyHiddenText, { children: label })] }));
79
+ });
80
+ export default CallControlPanelIcon;
81
+ //# sourceMappingURL=CallControlPanelIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallControlPanelIcon.js","sourceRoot":"","sources":["../../../src/components/CallControlPanel/CallControlPanelIcon.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FunctionComponent, memo } from 'react';\nimport styled, { css, DefaultTheme } from 'styled-components';\nimport { readableColor } from 'polished';\n\nimport {\n defaultThemeProp,\n ForwardProps,\n Icon,\n registerIcon,\n NoChildrenProp,\n OmitStrict,\n StyledAvatar,\n StyledIcon,\n useTheme,\n VisuallyHiddenText\n} from '@pega/cosmos-react-core';\nimport { IconName } from '@pega/cosmos-react-core/lib/components/Icon/iconNames';\nimport * as headsetIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/headset.icon';\nimport * as eyeOffSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/eye-off-solid.icon';\n\nimport type { UserAvailabilityStatus } from './CallControlPanel.types';\n\nregisterIcon(headsetIcon, eyeOffSolidIcon);\n\ntype ThemeColor = keyof OmitStrict<DefaultTheme['base']['colors'], 'white' | 'black'>;\ntype ThemeColorVariant = 'extra-light' | 'light' | 'medium' | 'dark' | 'extra-dark';\n\ninterface CallControlPanelIconProps extends NoChildrenProp {\n status?: UserAvailabilityStatus;\n label: string;\n panelVisible: boolean;\n}\n\ninterface UserStatusIconProps extends Pick<CallControlPanelIconProps, 'status'> {\n variant: 'icon' | 'dot';\n}\n\nconst colorMapping: Record<UserAvailabilityStatus, `${ThemeColor}-${ThemeColorVariant}`> = {\n unavailable: 'slate-light',\n available: 'green-light',\n busy: 'red-medium',\n after_work: 'orange-light',\n logout: 'slate-light'\n};\n\nconst iconMapping: Record<UserAvailabilityStatus, IconName | undefined> = {\n unavailable: 'times',\n available: undefined,\n busy: 'minus',\n after_work: 'clock',\n logout: 'times'\n};\n\nconst StyledStatusIcon = styled.div<{ userStatus: UserAvailabilityStatus }>(\n ({\n theme: {\n base: { colors }\n },\n userStatus\n }) => {\n const [colorName, colorVariant] = colorMapping[userStatus].split('-', 2) as [\n ThemeColor,\n ThemeColorVariant\n ];\n const bgColor = colors[colorName][colorVariant];\n const fgColor = readableColor(bgColor);\n return css`\n background-color: ${bgColor};\n color: ${fgColor};\n `;\n }\n);\n\nStyledStatusIcon.defaultProps = defaultThemeProp;\n\nconst StyledUserStatusIcon = styled(StyledStatusIcon)(({ theme }) => {\n return css`\n border-radius: 50%;\n border: 0.0625rem solid ${theme.components['app-shell'].nav['background-color']};\n\n ${StyledIcon} {\n display: block;\n width: 100%;\n margin: 0 auto;\n }\n `;\n});\n\nStyledUserStatusIcon.defaultProps = defaultThemeProp;\n\nconst StyledPanelVisibilityIcon = styled(Icon)`\n width: 0.875rem;\n height: 0.875rem;\n fill: ${p => p.theme.base.colors.gray.medium};\n`;\n\nStyledPanelVisibilityIcon.defaultProps = defaultThemeProp;\n\nconst StyledCallControlPanelIcon = styled(StyledStatusIcon)`\n ${StyledUserStatusIcon}, ${StyledPanelVisibilityIcon} {\n position: absolute;\n width: 0.875rem;\n height: 0.875rem;\n z-index: 1;\n }\n\n ${StyledUserStatusIcon} {\n inset-block-start: -0.25rem;\n inset-inline-end: -0.25rem;\n }\n\n ${StyledPanelVisibilityIcon} {\n inset-block-end: -0.25rem;\n inset-inline-end: -0.25rem;\n }\n`;\n\nexport const UserStatusIcon: FunctionComponent<UserStatusIconProps> = memo(\n ({ status = 'logout', variant }) => {\n const {\n base: { colors }\n } = useTheme();\n const [colorName, colorVariant] = colorMapping[status].split('-', 2) as [\n ThemeColor,\n ThemeColorVariant\n ];\n const bgColor = colors[colorName][colorVariant];\n const iconName = iconMapping[status];\n\n return variant === 'dot' ? (\n <svg\n role='presentation'\n height='1rem'\n width='1rem'\n viewBox='0 0 10 10'\n xmlns='http://www.w3.org/2000/svg'\n >\n <circle cx='50%' cy='50%' r='50%' fill={bgColor} />\n </svg>\n ) : (\n <StyledUserStatusIcon userStatus={status}>\n {iconName && <Icon name={iconName} />}\n </StyledUserStatusIcon>\n );\n }\n);\n\nconst CallControlPanelIcon: FunctionComponent<CallControlPanelIconProps & ForwardProps> = memo(\n ({ status = 'logout', label, panelVisible, ...restProps }) => {\n return (\n <StyledCallControlPanelIcon as={StyledAvatar} {...restProps} size='m' userStatus={status}>\n <Icon name='headset' />\n {status !== 'available' && <UserStatusIcon variant='icon' status={status} />}\n {!panelVisible && <StyledPanelVisibilityIcon name='eye-off-solid' />}\n <VisuallyHiddenText>{label}</VisuallyHiddenText>\n </StyledCallControlPanelIcon>\n );\n }\n);\n\nexport default CallControlPanelIcon;\n"]}
@@ -0,0 +1,17 @@
1
+ export interface TransferReasonOption {
2
+ id: string;
3
+ label: string;
4
+ }
5
+ export interface TransferData {
6
+ /** Selected reason option identifier. */
7
+ reason?: TransferReasonOption['id'];
8
+ /** Transfer comments. */
9
+ comments?: string;
10
+ /** Flag determining where interaction should be transferred along the call. */
11
+ interaction: boolean;
12
+ /** Phone number to transfer the call to. */
13
+ phoneNumber: string;
14
+ /** Selected transferred interaction option identifier. */
15
+ transferredInteractionId?: TransferReasonOption['id'];
16
+ }
17
+ //# sourceMappingURL=CallHandover.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallHandover.types.d.ts","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/CallHandover/CallHandover.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,MAAM,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACpC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,WAAW,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,wBAAwB,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;CACvD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CallHandover.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallHandover.types.js","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/CallHandover/CallHandover.types.ts"],"names":[],"mappings":"","sourcesContent":["export interface TransferReasonOption {\n id: string;\n label: string;\n}\n\nexport interface TransferData {\n /** Selected reason option identifier. */\n reason?: TransferReasonOption['id'];\n /** Transfer comments. */\n comments?: string;\n /** Flag determining where interaction should be transferred along the call. */\n interaction: boolean;\n /** Phone number to transfer the call to. */\n phoneNumber: string;\n /** Selected transferred interaction option identifier. */\n transferredInteractionId?: TransferReasonOption['id'];\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { FunctionComponent } from 'react';
2
+ import type { TransferData, TransferReasonOption } from './CallHandover.types';
3
+ export type HandoverType = 'conferenceWithInteractions' | 'conferenceCallOnly' | 'transferWithInteractions' | 'transferCallOnly' | 'consultWithInteractions' | 'consultCallOnly';
4
+ export interface CallHandoverDialogProps {
5
+ target: HTMLElement | null;
6
+ type: HandoverType;
7
+ onCancel: () => void;
8
+ onSubmit: (data: TransferData) => void;
9
+ defaultTransfer?: TransferReasonOption['id'];
10
+ defaultInteraction?: TransferReasonOption['id'];
11
+ transferOptions: Readonly<TransferReasonOption[]>;
12
+ interactionOptions?: Readonly<TransferReasonOption[]>;
13
+ }
14
+ declare const CallHandoverDialog: FunctionComponent<CallHandoverDialogProps>;
15
+ export default CallHandoverDialog;
16
+ //# sourceMappingURL=CallHandoverDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallHandoverDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/CallHandover/CallHandoverDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAgC,MAAM,OAAO,CAAC;AAkBxE,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,MAAM,YAAY,GACpB,4BAA4B,GAC5B,oBAAoB,GACpB,0BAA0B,GAC1B,kBAAkB,GAClB,yBAAyB,GACzB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,eAAe,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7C,kBAAkB,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAChD,eAAe,EAAE,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAClD,kBAAkB,CAAC,EAAE,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;CACvD;AAED,QAAA,MAAM,kBAAkB,EAAE,iBAAiB,CAAC,uBAAuB,CAoJlE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from 'react';
3
+ import { Text, Button, Card, CardContent, CardHeader, Icon, Popover, useEscape, useFocusTrap, useI18n, useOuterEvent, getFocusables } from '@pega/cosmos-react-core';
4
+ import CallHandoverForm from './CallHandoverForm';
5
+ const CallHandoverDialog = ({ target, type, onSubmit, onCancel, transferOptions, interactionOptions, defaultTransfer, defaultInteraction }) => {
6
+ const popoverRef = useRef(null);
7
+ const t = useI18n();
8
+ useOuterEvent('mousedown', [popoverRef], onCancel);
9
+ useEscape(onCancel, popoverRef);
10
+ useFocusTrap(popoverRef);
11
+ useEffect(() => {
12
+ getFocusables(popoverRef)[0]?.focus();
13
+ }, []);
14
+ let dialogContent;
15
+ let dialogHeading;
16
+ switch (type) {
17
+ case 'conferenceCallOnly':
18
+ dialogHeading = t('call_panel_conference_heading');
19
+ dialogContent = (_jsx(CallHandoverForm, { onCancel: onCancel, variant: 'call', submitButtonText: t('call_panel_conference_submit'), onSubmit: onSubmit, transferOptions: transferOptions, interactionOptions: interactionOptions, defaultTransfer: defaultTransfer, defaultInteraction: defaultInteraction }));
20
+ break;
21
+ case 'conferenceWithInteractions':
22
+ dialogHeading = t('call_panel_conference_call_and_interactions_heading');
23
+ dialogContent = (_jsx(CallHandoverForm, { onCancel: onCancel, variant: 'call+interaction', submitButtonText: t('call_panel_conference_submit'), onSubmit: onSubmit, transferOptions: transferOptions, interactionOptions: interactionOptions, defaultTransfer: defaultTransfer, defaultInteraction: defaultInteraction }));
24
+ break;
25
+ case 'consultCallOnly':
26
+ dialogHeading = t('call_panel_consult_heading');
27
+ dialogContent = (_jsx(CallHandoverForm, { onCancel: onCancel, variant: 'call', submitButtonText: t('call_panel_consult_submit'), onSubmit: onSubmit, transferOptions: transferOptions, interactionOptions: interactionOptions, defaultTransfer: defaultTransfer, defaultInteraction: defaultInteraction }));
28
+ break;
29
+ case 'consultWithInteractions':
30
+ dialogHeading = t('call_panel_consult_call_and_interactions_heading');
31
+ dialogContent = (_jsx(CallHandoverForm, { onCancel: onCancel, variant: 'call+interaction', submitButtonText: t('call_panel_consult_submit'), onSubmit: onSubmit, transferOptions: transferOptions, interactionOptions: interactionOptions, defaultTransfer: defaultTransfer, defaultInteraction: defaultInteraction }));
32
+ break;
33
+ case 'transferCallOnly':
34
+ dialogHeading = t('call_panel_transfer_heading');
35
+ dialogContent = (_jsx(CallHandoverForm, { submitButtonText: t('call_panel_transfer_submit'), onCancel: onCancel, variant: 'call', onSubmit: onSubmit, transferOptions: transferOptions, interactionOptions: interactionOptions, defaultTransfer: defaultTransfer, defaultInteraction: defaultInteraction }));
36
+ break;
37
+ case 'transferWithInteractions':
38
+ dialogHeading = t('call_panel_transfer_call_and_interactions_heading');
39
+ dialogContent = (_jsx(CallHandoverForm, { submitButtonText: t('call_panel_transfer_submit'), onCancel: onCancel, variant: 'call+interaction', onSubmit: onSubmit, transferOptions: transferOptions, interactionOptions: interactionOptions, defaultTransfer: defaultTransfer, defaultInteraction: defaultInteraction }));
40
+ break;
41
+ default:
42
+ dialogHeading = '';
43
+ dialogContent = null;
44
+ }
45
+ return (_jsx(Popover, { target: target, ref: popoverRef, placement: 'top-end', modifiers: [
46
+ {
47
+ name: 'flip',
48
+ enabled: true,
49
+ options: {
50
+ fallbackPlacements: ['bottom-end', 'left', 'right']
51
+ }
52
+ }
53
+ ], children: _jsxs(Card, { children: [_jsx(CardHeader, { actions: _jsx(Button, { icon: true, variant: 'simple', "aria-label": t('close'), onClick: onCancel, children: _jsx(Icon, { name: 'times' }) }), children: _jsx(Text, { variant: 'h3', children: dialogHeading }) }), _jsx(CardContent, { children: dialogContent })] }) }));
54
+ };
55
+ export default CallHandoverDialog;
56
+ //# sourceMappingURL=CallHandoverDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallHandoverDialog.js","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/CallHandover/CallHandoverDialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FunctionComponent, ReactNode, useEffect, useRef } from 'react';\n\nimport {\n Text,\n Button,\n Card,\n CardContent,\n CardHeader,\n Icon,\n Popover,\n useEscape,\n useFocusTrap,\n useI18n,\n useOuterEvent,\n getFocusables\n} from '@pega/cosmos-react-core';\n\nimport CallHandoverForm from './CallHandoverForm';\nimport type { TransferData, TransferReasonOption } from './CallHandover.types';\n\nexport type HandoverType =\n | 'conferenceWithInteractions'\n | 'conferenceCallOnly'\n | 'transferWithInteractions'\n | 'transferCallOnly'\n | 'consultWithInteractions'\n | 'consultCallOnly';\n\nexport interface CallHandoverDialogProps {\n target: HTMLElement | null;\n type: HandoverType;\n onCancel: () => void;\n onSubmit: (data: TransferData) => void;\n defaultTransfer?: TransferReasonOption['id'];\n defaultInteraction?: TransferReasonOption['id'];\n transferOptions: Readonly<TransferReasonOption[]>;\n interactionOptions?: Readonly<TransferReasonOption[]>;\n}\n\nconst CallHandoverDialog: FunctionComponent<CallHandoverDialogProps> = ({\n target,\n type,\n onSubmit,\n onCancel,\n transferOptions,\n interactionOptions,\n defaultTransfer,\n defaultInteraction\n}: CallHandoverDialogProps) => {\n const popoverRef = useRef<HTMLDivElement>(null);\n const t = useI18n();\n\n useOuterEvent('mousedown', [popoverRef], onCancel);\n useEscape(onCancel, popoverRef);\n useFocusTrap(popoverRef);\n\n useEffect(() => {\n getFocusables(popoverRef)[0]?.focus();\n }, []);\n\n let dialogContent: ReactNode;\n let dialogHeading: string;\n switch (type) {\n case 'conferenceCallOnly':\n dialogHeading = t('call_panel_conference_heading');\n dialogContent = (\n <CallHandoverForm\n onCancel={onCancel}\n variant='call'\n submitButtonText={t('call_panel_conference_submit')}\n onSubmit={onSubmit}\n transferOptions={transferOptions}\n interactionOptions={interactionOptions}\n defaultTransfer={defaultTransfer}\n defaultInteraction={defaultInteraction}\n />\n );\n break;\n case 'conferenceWithInteractions':\n dialogHeading = t('call_panel_conference_call_and_interactions_heading');\n dialogContent = (\n <CallHandoverForm\n onCancel={onCancel}\n variant='call+interaction'\n submitButtonText={t('call_panel_conference_submit')}\n onSubmit={onSubmit}\n transferOptions={transferOptions}\n interactionOptions={interactionOptions}\n defaultTransfer={defaultTransfer}\n defaultInteraction={defaultInteraction}\n />\n );\n break;\n case 'consultCallOnly':\n dialogHeading = t('call_panel_consult_heading');\n dialogContent = (\n <CallHandoverForm\n onCancel={onCancel}\n variant='call'\n submitButtonText={t('call_panel_consult_submit')}\n onSubmit={onSubmit}\n transferOptions={transferOptions}\n interactionOptions={interactionOptions}\n defaultTransfer={defaultTransfer}\n defaultInteraction={defaultInteraction}\n />\n );\n break;\n case 'consultWithInteractions':\n dialogHeading = t('call_panel_consult_call_and_interactions_heading');\n dialogContent = (\n <CallHandoverForm\n onCancel={onCancel}\n variant='call+interaction'\n submitButtonText={t('call_panel_consult_submit')}\n onSubmit={onSubmit}\n transferOptions={transferOptions}\n interactionOptions={interactionOptions}\n defaultTransfer={defaultTransfer}\n defaultInteraction={defaultInteraction}\n />\n );\n break;\n case 'transferCallOnly':\n dialogHeading = t('call_panel_transfer_heading');\n dialogContent = (\n <CallHandoverForm\n submitButtonText={t('call_panel_transfer_submit')}\n onCancel={onCancel}\n variant='call'\n onSubmit={onSubmit}\n transferOptions={transferOptions}\n interactionOptions={interactionOptions}\n defaultTransfer={defaultTransfer}\n defaultInteraction={defaultInteraction}\n />\n );\n break;\n case 'transferWithInteractions':\n dialogHeading = t('call_panel_transfer_call_and_interactions_heading');\n dialogContent = (\n <CallHandoverForm\n submitButtonText={t('call_panel_transfer_submit')}\n onCancel={onCancel}\n variant='call+interaction'\n onSubmit={onSubmit}\n transferOptions={transferOptions}\n interactionOptions={interactionOptions}\n defaultTransfer={defaultTransfer}\n defaultInteraction={defaultInteraction}\n />\n );\n break;\n default:\n dialogHeading = '';\n dialogContent = null;\n }\n\n return (\n <Popover\n target={target}\n ref={popoverRef}\n placement='top-end'\n modifiers={[\n {\n name: 'flip',\n enabled: true,\n options: {\n fallbackPlacements: ['bottom-end', 'left', 'right']\n }\n }\n ]}\n >\n <Card>\n <CardHeader\n actions={\n <Button icon variant='simple' aria-label={t('close')} onClick={onCancel}>\n <Icon name='times' />\n </Button>\n }\n >\n <Text variant='h3'>{dialogHeading}</Text>\n </CardHeader>\n <CardContent>{dialogContent}</CardContent>\n </Card>\n </Popover>\n );\n};\n\nexport default CallHandoverDialog;\n"]}
@@ -0,0 +1,31 @@
1
+ import { FunctionComponent, Ref } from 'react';
2
+ import type { TransferReasonOption, TransferData } from './CallHandover.types';
3
+ export interface CallHandoverFormProps {
4
+ /**
5
+ * Callback fired on handover submission.
6
+ * @param data the transfer parameters.
7
+ */
8
+ onSubmit: (data: TransferData) => void;
9
+ /** Callback fired on clicking Cancel button. */
10
+ onCancel: () => void;
11
+ /** Current selected transfer reason */
12
+ defaultTransfer?: TransferReasonOption['id'];
13
+ /** Current selected interaction */
14
+ defaultInteraction?: TransferReasonOption['id'];
15
+ /** Transfer reason options. */
16
+ transferOptions: Readonly<TransferReasonOption[]>;
17
+ /** Interaction options. */
18
+ interactionOptions?: Readonly<TransferReasonOption[]>;
19
+ /** Reference to the root component. */
20
+ ref?: Ref<HTMLFormElement>;
21
+ /** Variant of component. */
22
+ variant?: 'call' | 'call+interaction';
23
+ /** Label of the submit button. */
24
+ submitButtonText: string;
25
+ }
26
+ export declare const StyledCallHandoverForm: import("styled-components").StyledComponent<import("react").FC<import("@pega/cosmos-react-core").FormProps & import("@pega/cosmos-react-core").ForwardProps> & {
27
+ getTestIds: (testIdProp?: string | undefined) => import("@pega/cosmos-react-core").TestIdsRecord<readonly []>;
28
+ }, import("styled-components").DefaultTheme, {}, never>;
29
+ declare const CallHandoverForm: FunctionComponent<CallHandoverFormProps>;
30
+ export default CallHandoverForm;
31
+ //# sourceMappingURL=CallHandoverForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallHandoverForm.d.ts","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/CallHandover/CallHandoverForm.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAsD,MAAM,OAAO,CAAC;AAmBnG,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAI/E,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,gDAAgD;IAChD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,uCAAuC;IACvC,eAAe,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7C,mCAAmC;IACnC,kBAAkB,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAChD,+BAA+B;IAC/B,eAAe,EAAE,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAClD,2BAA2B;IAC3B,kBAAkB,CAAC,EAAE,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACtD,uCAAuC;IACvC,GAAG,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;IAC3B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAAC;IACtC,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,sBAAsB;;uDAMlC,CAAC;AAIF,QAAA,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,CAmH9D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState, forwardRef } from 'react';
3
+ import styled from 'styled-components';
4
+ import { Button, registerIcon, defaultThemeProp, useI18n, TextArea, ComboBox, Form, Flex } from '@pega/cosmos-react-core';
5
+ import { StyledTabPanel } from '@pega/cosmos-react-core/lib/components/Tabs/TabPanel';
6
+ import * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';
7
+ import CalleePicker from '../ContactList/CalleePicker';
8
+ registerIcon(timesIcon);
9
+ export const StyledCallHandoverForm = styled(Form) `
10
+ min-width: 50ch;
11
+
12
+ ${StyledTabPanel} {
13
+ height: 24rem;
14
+ }
15
+ `;
16
+ StyledCallHandoverForm.defaultProps = defaultThemeProp;
17
+ const CallHandoverForm = forwardRef(function CallHandoverForm({ onCancel, onSubmit, transferOptions, variant, submitButtonText, interactionOptions, defaultTransfer, defaultInteraction }, ref) {
18
+ const t = useI18n();
19
+ const [selectedContact, setSelectedContact] = useState();
20
+ const initialReason = transferOptions.find(reason => reason.id === defaultTransfer);
21
+ const initialInteraction = interactionOptions?.find(interaction => interaction.id === defaultInteraction);
22
+ const [selectedReason, setSelectedReason] = useState(initialReason);
23
+ const [selectedInteraction, setSelectedInteraction] = useState(initialInteraction);
24
+ const [comments, setComments] = useState('');
25
+ return (_jsxs(StyledCallHandoverForm, { actions: _jsxs(_Fragment, { children: [_jsx(Button, { variant: 'secondary', onClick: onCancel, children: t('cancel') }), _jsx(Button, { variant: 'primary', disabled: !(selectedContact && (variant === 'call+interaction' ? comments : true)), onClick: () => {
26
+ if (!selectedContact)
27
+ return;
28
+ onSubmit({
29
+ reason: selectedReason?.id,
30
+ comments,
31
+ interaction: variant === 'call+interaction',
32
+ phoneNumber: selectedContact,
33
+ transferredInteractionId: selectedInteraction?.id
34
+ });
35
+ }, children: submitButtonText })] }), ref: ref, children: [variant === 'call+interaction' && (_jsxs(Flex, { container: { direction: 'column', gap: 1 }, children: [interactionOptions && (_jsx(ComboBox, { label: t('call_panel_handover_interaction_label'), selected: {
36
+ items: selectedInteraction
37
+ ? { id: selectedInteraction.id, text: selectedInteraction.label }
38
+ : undefined
39
+ }, menu: {
40
+ items: interactionOptions.map(({ id, label }) => ({
41
+ id,
42
+ primary: label,
43
+ selected: id === selectedInteraction?.id
44
+ })),
45
+ onItemClick: id => setSelectedInteraction(interactionOptions.find(option => option.id === id))
46
+ } })), _jsx(ComboBox, { label: t('call_panel_handover_reason_label'), selected: {
47
+ items: selectedReason
48
+ ? { id: selectedReason.id, text: selectedReason.label }
49
+ : undefined
50
+ }, menu: {
51
+ items: transferOptions.map(({ id, label }) => ({
52
+ id,
53
+ primary: label,
54
+ selected: id === selectedReason?.id
55
+ })),
56
+ onItemClick: id => setSelectedReason(transferOptions.find(option => option.id === id))
57
+ } }), _jsx(TextArea, { name: 'comments', required: true, label: t('call_panel_handover_comments_label'), displayCharCount: true, maxLength: 300, value: comments, onChange: (e) => setComments(e.target.value) })] })), _jsx(CalleePicker, { selectedContact: selectedContact, onSelection: setSelectedContact, variant: 'select' })] }));
58
+ });
59
+ export default CallHandoverForm;
60
+ //# sourceMappingURL=CallHandoverForm.js.map