@pega/cosmos-react-cs 3.0.0-dev.8.0 → 3.0.0-rc.1

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 (149) hide show
  1. package/lib/components/ArticleList/ArticleListHeader.d.ts.map +1 -1
  2. package/lib/components/ArticleList/ArticleListHeader.js +2 -2
  3. package/lib/components/ArticleList/ArticleListHeader.js.map +1 -1
  4. package/lib/components/CTIPanel/CTIPanel.d.ts +13 -0
  5. package/lib/components/CTIPanel/CTIPanel.d.ts.map +1 -0
  6. package/lib/components/CTIPanel/CTIPanel.js +12 -0
  7. package/lib/components/CTIPanel/CTIPanel.js.map +1 -0
  8. package/lib/components/CTIPanel/index.d.ts +2 -0
  9. package/lib/components/CTIPanel/index.d.ts.map +1 -0
  10. package/lib/components/CTIPanel/index.js +2 -0
  11. package/lib/components/CTIPanel/index.js.map +1 -0
  12. package/lib/components/CallControlPanel/Call.d.ts +1 -1
  13. package/lib/components/CallControlPanel/Call.d.ts.map +1 -1
  14. package/lib/components/CallControlPanel/Call.js +95 -102
  15. package/lib/components/CallControlPanel/Call.js.map +1 -1
  16. package/lib/components/CallControlPanel/CallControlPanel.d.ts.map +1 -1
  17. package/lib/components/CallControlPanel/CallControlPanel.js +37 -47
  18. package/lib/components/CallControlPanel/CallControlPanel.js.map +1 -1
  19. package/lib/components/CallControlPanel/CallControlPanel.styles.d.ts +4 -5
  20. package/lib/components/CallControlPanel/CallControlPanel.styles.d.ts.map +1 -1
  21. package/lib/components/CallControlPanel/CallControlPanel.styles.js +22 -34
  22. package/lib/components/CallControlPanel/CallControlPanel.styles.js.map +1 -1
  23. package/lib/components/CallControlPanel/CallControlPanel.types.d.ts +43 -31
  24. package/lib/components/CallControlPanel/CallControlPanel.types.d.ts.map +1 -1
  25. package/lib/components/CallControlPanel/CallControlPanel.types.js.map +1 -1
  26. package/lib/components/CallControlPanel/CallControlPanelIcon.d.ts +0 -4
  27. package/lib/components/CallControlPanel/CallControlPanelIcon.d.ts.map +1 -1
  28. package/lib/components/CallControlPanel/CallControlPanelIcon.js +30 -25
  29. package/lib/components/CallControlPanel/CallControlPanelIcon.js.map +1 -1
  30. package/lib/components/CallControlPanel/CallHandover/CallHandover.types.d.ts +17 -0
  31. package/lib/components/CallControlPanel/CallHandover/CallHandover.types.d.ts.map +1 -0
  32. package/lib/components/CallControlPanel/CallHandover/CallHandover.types.js +2 -0
  33. package/lib/components/CallControlPanel/CallHandover/CallHandover.types.js.map +1 -0
  34. package/lib/components/CallControlPanel/CallHandover/CallHandoverDialog.d.ts +14 -0
  35. package/lib/components/CallControlPanel/CallHandover/CallHandoverDialog.d.ts.map +1 -0
  36. package/lib/components/CallControlPanel/CallHandover/CallHandoverDialog.js +51 -0
  37. package/lib/components/CallControlPanel/CallHandover/CallHandoverDialog.js.map +1 -0
  38. package/lib/components/CallControlPanel/CallHandover/CallHandoverForm.d.ts +25 -0
  39. package/lib/components/CallControlPanel/CallHandover/CallHandoverForm.d.ts.map +1 -0
  40. package/lib/components/CallControlPanel/CallHandover/CallHandoverForm.js +59 -0
  41. package/lib/components/CallControlPanel/CallHandover/CallHandoverForm.js.map +1 -0
  42. package/lib/components/CallControlPanel/CallHandover/index.d.ts +4 -0
  43. package/lib/components/CallControlPanel/CallHandover/index.d.ts.map +1 -0
  44. package/lib/components/CallControlPanel/CallHandover/index.js +4 -0
  45. package/lib/components/CallControlPanel/CallHandover/index.js.map +1 -0
  46. package/lib/components/CallControlPanel/{CalleePicker.d.ts → ContactList/CalleePicker.d.ts} +5 -7
  47. package/lib/components/CallControlPanel/ContactList/CalleePicker.d.ts.map +1 -0
  48. package/lib/components/CallControlPanel/ContactList/CalleePicker.js +52 -0
  49. package/lib/components/CallControlPanel/ContactList/CalleePicker.js.map +1 -0
  50. package/lib/components/CallControlPanel/ContactList/ContactList.d.ts +10 -0
  51. package/lib/components/CallControlPanel/ContactList/ContactList.d.ts.map +1 -0
  52. package/lib/components/CallControlPanel/ContactList/ContactList.js +129 -0
  53. package/lib/components/CallControlPanel/ContactList/ContactList.js.map +1 -0
  54. package/lib/components/CallControlPanel/ContactList/ContactList.types.d.ts +30 -0
  55. package/lib/components/CallControlPanel/ContactList/ContactList.types.d.ts.map +1 -0
  56. package/lib/components/CallControlPanel/ContactList/ContactList.types.js +2 -0
  57. package/lib/components/CallControlPanel/ContactList/ContactList.types.js.map +1 -0
  58. package/lib/components/CallControlPanel/ContactList/index.d.ts +3 -0
  59. package/lib/components/CallControlPanel/ContactList/index.d.ts.map +1 -0
  60. package/lib/components/CallControlPanel/ContactList/index.js +2 -0
  61. package/lib/components/CallControlPanel/ContactList/index.js.map +1 -0
  62. package/lib/components/CallControlPanel/ExternalCTI.d.ts +54 -0
  63. package/lib/components/CallControlPanel/ExternalCTI.d.ts.map +1 -0
  64. package/lib/components/CallControlPanel/ExternalCTI.js +83 -0
  65. package/lib/components/CallControlPanel/ExternalCTI.js.map +1 -0
  66. package/lib/components/CallControlPanel/FloatingPanel.d.ts +36 -0
  67. package/lib/components/CallControlPanel/FloatingPanel.d.ts.map +1 -0
  68. package/lib/components/CallControlPanel/FloatingPanel.js +70 -0
  69. package/lib/components/CallControlPanel/FloatingPanel.js.map +1 -0
  70. package/lib/components/CallControlPanel/IncomingCall.d.ts +6 -0
  71. package/lib/components/CallControlPanel/IncomingCall.d.ts.map +1 -0
  72. package/lib/components/CallControlPanel/IncomingCall.js +18 -0
  73. package/lib/components/CallControlPanel/IncomingCall.js.map +1 -0
  74. package/lib/components/CallControlPanel/index.d.ts +3 -3
  75. package/lib/components/CallControlPanel/index.d.ts.map +1 -1
  76. package/lib/components/CallControlPanel/index.js +1 -2
  77. package/lib/components/CallControlPanel/index.js.map +1 -1
  78. package/lib/components/CallControlPanel/utils.d.ts +1 -1
  79. package/lib/components/CallControlPanel/utils.d.ts.map +1 -1
  80. package/lib/components/DialPad/DialPad.js +1 -1
  81. package/lib/components/DialPad/DialPad.js.map +1 -1
  82. package/lib/components/DialPad/DialPadDialog.d.ts +10 -0
  83. package/lib/components/DialPad/DialPadDialog.d.ts.map +1 -0
  84. package/lib/components/DialPad/DialPadDialog.js +28 -0
  85. package/lib/components/DialPad/DialPadDialog.js.map +1 -0
  86. package/lib/components/DialPad/DialPadKeyboard.d.ts.map +1 -1
  87. package/lib/components/DialPad/DialPadKeyboard.js +1 -1
  88. package/lib/components/DialPad/DialPadKeyboard.js.map +1 -1
  89. package/lib/components/DialPad/DialPadKeyboard.styles.d.ts +1 -1
  90. package/lib/components/DialPad/DialPadKeyboard.styles.d.ts.map +1 -1
  91. package/lib/components/DialPad/index.d.ts +1 -0
  92. package/lib/components/DialPad/index.d.ts.map +1 -1
  93. package/lib/components/DialPad/index.js +1 -0
  94. package/lib/components/DialPad/index.js.map +1 -1
  95. package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.d.ts.map +1 -1
  96. package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.js +3 -2
  97. package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.js.map +1 -1
  98. package/lib/components/InteractionNotification/InteractionNotification.d.ts.map +1 -1
  99. package/lib/components/InteractionNotification/InteractionNotification.js +1 -1
  100. package/lib/components/InteractionNotification/InteractionNotification.js.map +1 -1
  101. package/lib/components/InteractionTimer/InteractionTimer.d.ts.map +1 -1
  102. package/lib/components/InteractionTimer/InteractionTimer.js +1 -1
  103. package/lib/components/InteractionTimer/InteractionTimer.js.map +1 -1
  104. package/lib/components/TaskManager/ConversationAI.d.ts +6 -0
  105. package/lib/components/TaskManager/ConversationAI.d.ts.map +1 -0
  106. package/lib/components/TaskManager/ConversationAI.js +29 -0
  107. package/lib/components/TaskManager/ConversationAI.js.map +1 -0
  108. package/lib/components/TaskManager/Dialogue.d.ts +6 -0
  109. package/lib/components/TaskManager/Dialogue.d.ts.map +1 -0
  110. package/lib/components/TaskManager/Dialogue.js +30 -0
  111. package/lib/components/TaskManager/Dialogue.js.map +1 -0
  112. package/lib/components/TaskManager/Picker/Picker.d.ts.map +1 -1
  113. package/lib/components/TaskManager/Picker/Picker.js +4 -3
  114. package/lib/components/TaskManager/Picker/Picker.js.map +1 -1
  115. package/lib/components/TaskManager/TaskManager.d.ts.map +1 -1
  116. package/lib/components/TaskManager/TaskManager.js +36 -36
  117. package/lib/components/TaskManager/TaskManager.js.map +1 -1
  118. package/lib/components/TaskManager/TaskManager.styles.d.ts +14 -1
  119. package/lib/components/TaskManager/TaskManager.styles.d.ts.map +1 -1
  120. package/lib/components/TaskManager/TaskManager.styles.js +119 -54
  121. package/lib/components/TaskManager/TaskManager.styles.js.map +1 -1
  122. package/lib/components/TaskManager/TaskManager.types.d.ts +27 -9
  123. package/lib/components/TaskManager/TaskManager.types.d.ts.map +1 -1
  124. package/lib/components/TaskManager/TaskManager.types.js.map +1 -1
  125. package/lib/components/TaskManager/TaskManagerTabs.js +1 -1
  126. package/lib/components/TaskManager/TaskManagerTabs.js.map +1 -1
  127. package/lib/components/TaskManager/index.d.ts +1 -1
  128. package/lib/components/TaskManager/index.d.ts.map +1 -1
  129. package/lib/components/TaskManager/index.js.map +1 -1
  130. package/lib/index.d.ts +2 -0
  131. package/lib/index.d.ts.map +1 -1
  132. package/lib/index.js +2 -0
  133. package/lib/index.js.map +1 -1
  134. package/package.json +7 -4
  135. package/lib/components/CallControlPanel/CallTransfer.d.ts +0 -19
  136. package/lib/components/CallControlPanel/CallTransfer.d.ts.map +0 -1
  137. package/lib/components/CallControlPanel/CallTransfer.js +0 -121
  138. package/lib/components/CallControlPanel/CallTransfer.js.map +0 -1
  139. package/lib/components/CallControlPanel/CalleePicker.d.ts.map +0 -1
  140. package/lib/components/CallControlPanel/CalleePicker.js +0 -61
  141. package/lib/components/CallControlPanel/CalleePicker.js.map +0 -1
  142. package/lib/components/CallControlPanel/ContactsList.d.ts +0 -23
  143. package/lib/components/CallControlPanel/ContactsList.d.ts.map +0 -1
  144. package/lib/components/CallControlPanel/ContactsList.js +0 -88
  145. package/lib/components/CallControlPanel/ContactsList.js.map +0 -1
  146. package/lib/components/CallControlPanel/DTMFKeypad.d.ts +0 -11
  147. package/lib/components/CallControlPanel/DTMFKeypad.d.ts.map +0 -1
  148. package/lib/components/CallControlPanel/DTMFKeypad.js +0 -23
  149. package/lib/components/CallControlPanel/DTMFKeypad.js.map +0 -1
@@ -0,0 +1,51 @@
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 }) => {
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 'conference':
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 }));
20
+ break;
21
+ case 'consultCallOnly':
22
+ dialogHeading = t('call_panel_consult_with_call_heading');
23
+ dialogContent = (_jsx(CallHandoverForm, { onCancel: onCancel, variant: 'call', submitButtonText: t('call_panel_consult_call_submit'), onSubmit: onSubmit, transferOptions: transferOptions, interactionOptions: interactionOptions }));
24
+ break;
25
+ case 'consultWithInteractions':
26
+ dialogHeading = t('call_panel_consult_with_call_and_interactions_heading');
27
+ dialogContent = (_jsx(CallHandoverForm, { onCancel: onCancel, variant: 'call+interaction', submitButtonText: t('call_panel_consult_call_submit'), onSubmit: onSubmit, transferOptions: transferOptions, interactionOptions: interactionOptions }));
28
+ break;
29
+ case 'transferCallOnly':
30
+ dialogHeading = t('call_panel_transfer_with_call_heading');
31
+ dialogContent = (_jsx(CallHandoverForm, { submitButtonText: t('call_panel_transfer_call_submit'), onCancel: onCancel, variant: 'call', onSubmit: onSubmit, transferOptions: transferOptions, interactionOptions: interactionOptions }));
32
+ break;
33
+ case 'transferWithInteractions':
34
+ dialogHeading = t('call_panel_transfer_with_call_and_interactions_heading');
35
+ dialogContent = (_jsx(CallHandoverForm, { submitButtonText: t('call_panel_transfer_call_submit'), onCancel: onCancel, variant: 'call+interaction', onSubmit: onSubmit, transferOptions: transferOptions, interactionOptions: interactionOptions }));
36
+ break;
37
+ default:
38
+ dialogHeading = '';
39
+ dialogContent = null;
40
+ }
41
+ return (_jsx(Popover, { target: target, ref: popoverRef, placement: 'top-end', modifiers: [
42
+ {
43
+ name: 'flip',
44
+ options: {
45
+ fallbackPlacements: ['bottom-end', 'left', 'right']
46
+ }
47
+ }
48
+ ], 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 })] }) }));
49
+ };
50
+ export default CallHandoverDialog;
51
+ //# 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 | 'conference'\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 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}: 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 'conference':\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 />\n );\n break;\n case 'consultCallOnly':\n dialogHeading = t('call_panel_consult_with_call_heading');\n dialogContent = (\n <CallHandoverForm\n onCancel={onCancel}\n variant='call'\n submitButtonText={t('call_panel_consult_call_submit')}\n onSubmit={onSubmit}\n transferOptions={transferOptions}\n interactionOptions={interactionOptions}\n />\n );\n break;\n case 'consultWithInteractions':\n dialogHeading = t('call_panel_consult_with_call_and_interactions_heading');\n dialogContent = (\n <CallHandoverForm\n onCancel={onCancel}\n variant='call+interaction'\n submitButtonText={t('call_panel_consult_call_submit')}\n onSubmit={onSubmit}\n transferOptions={transferOptions}\n interactionOptions={interactionOptions}\n />\n );\n break;\n case 'transferCallOnly':\n dialogHeading = t('call_panel_transfer_with_call_heading');\n dialogContent = (\n <CallHandoverForm\n submitButtonText={t('call_panel_transfer_call_submit')}\n onCancel={onCancel}\n variant='call'\n onSubmit={onSubmit}\n transferOptions={transferOptions}\n interactionOptions={interactionOptions}\n />\n );\n break;\n case 'transferWithInteractions':\n dialogHeading = t('call_panel_transfer_with_call_and_interactions_heading');\n dialogContent = (\n <CallHandoverForm\n submitButtonText={t('call_panel_transfer_call_submit')}\n onCancel={onCancel}\n variant='call+interaction'\n onSubmit={onSubmit}\n transferOptions={transferOptions}\n interactionOptions={interactionOptions}\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 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,25 @@
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
+ /** Transfer reason options. */
12
+ transferOptions: Readonly<TransferReasonOption[]>;
13
+ /** Interaction options. */
14
+ interactionOptions?: Readonly<TransferReasonOption[]>;
15
+ /** Reference to the root component. */
16
+ ref?: Ref<HTMLDivElement>;
17
+ /** Variant of component. */
18
+ variant?: 'call' | 'call+interaction';
19
+ /** Label of the submit button. */
20
+ submitButtonText: string;
21
+ }
22
+ export declare const StyledCallHandoverForm: import("styled-components").StyledComponent<import("react").FC<import("@pega/cosmos-react-core").FormProps & import("@pega/cosmos-react-core").ForwardProps>, import("styled-components").DefaultTheme, {}, never>;
23
+ declare const CallHandoverForm: FunctionComponent<CallHandoverFormProps>;
24
+ export default CallHandoverForm;
25
+ //# 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,EAAyB,MAAM,OAAO,CAAC;AAmBtE,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,+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,cAAc,CAAC,CAAC;IAC1B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAAC;IACtC,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,sBAAsB,oNAMlC,CAAC;AAIF,QAAA,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,CAwG9D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } 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 = ({ onCancel, onSubmit, transferOptions, variant, submitButtonText, interactionOptions }) => {
18
+ const t = useI18n();
19
+ const [selectedReason, setSelectedReason] = useState();
20
+ const [selectedContact, setSelectedContact] = useState();
21
+ const [selectedInteraction, setSelectedInteraction] = useState();
22
+ const [comments, setComments] = useState('');
23
+ return (_jsxs(StyledCallHandoverForm, { actions: _jsxs(_Fragment, { children: [_jsx(Button, { variant: 'secondary', onClick: onCancel, children: t('cancel') }), _jsx(Button, { variant: 'primary', disabled: !(selectedContact &&
24
+ (variant === 'call+interaction' ? selectedReason && comments : true)), onClick: () => {
25
+ if (!selectedContact)
26
+ return;
27
+ onSubmit({
28
+ reason: selectedReason?.id,
29
+ comments,
30
+ interaction: variant === 'call+interaction',
31
+ phoneNumber: selectedContact,
32
+ transferredInteractionId: selectedInteraction?.id
33
+ });
34
+ }, children: submitButtonText })] }), children: [variant === 'call+interaction' && (_jsxs(Flex, { container: { direction: 'column', itemGap: 1 }, children: [interactionOptions && (_jsx(ComboBox, { label: t('call_panel_handover_interaction_label'), selected: {
35
+ items: selectedInteraction
36
+ ? { id: selectedInteraction.id, text: selectedInteraction.label }
37
+ : undefined
38
+ }, menu: {
39
+ items: interactionOptions.map(({ id, label }) => ({
40
+ id,
41
+ primary: label,
42
+ selected: id === selectedInteraction?.id
43
+ })),
44
+ onItemClick: id => setSelectedInteraction(interactionOptions.find(option => option.id === id))
45
+ } })), _jsx(ComboBox, { label: t('call_panel_handover_reason_label'), required: true, selected: {
46
+ items: selectedReason
47
+ ? { id: selectedReason.id, text: selectedReason.label }
48
+ : undefined
49
+ }, menu: {
50
+ items: transferOptions.map(({ id, label }) => ({
51
+ id,
52
+ primary: label,
53
+ selected: id === selectedReason?.id
54
+ })),
55
+ onItemClick: id => setSelectedReason(transferOptions.find(option => option.id === id))
56
+ } }), _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' })] }));
57
+ };
58
+ export default CallHandoverForm;
59
+ //# sourceMappingURL=CallHandoverForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallHandoverForm.js","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/CallHandover/CallHandoverForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FunctionComponent, Ref, useState, ChangeEvent } from 'react';\nimport styled from 'styled-components';\n\nimport {\n Button,\n registerIcon,\n defaultThemeProp,\n useI18n,\n TextArea,\n ComboBox,\n Form,\n Flex\n} from '@pega/cosmos-react-core';\nimport { StyledTabPanel } from '@pega/cosmos-react-core/lib/components/Tabs/TabPanel';\nimport * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';\n\nimport type { Contact } from '../ContactList';\nimport CalleePicker from '../ContactList/CalleePicker';\n\nimport type { TransferReasonOption, TransferData } from './CallHandover.types';\n\nregisterIcon(timesIcon);\n\nexport interface CallHandoverFormProps {\n /**\n * Callback fired on handover submission.\n * @param data the transfer parameters.\n */\n onSubmit: (data: TransferData) => void;\n /** Callback fired on clicking Cancel button. */\n onCancel: () => void;\n /** Transfer reason options. */\n transferOptions: Readonly<TransferReasonOption[]>;\n /** Interaction options. */\n interactionOptions?: Readonly<TransferReasonOption[]>;\n /** Reference to the root component. */\n ref?: Ref<HTMLDivElement>;\n /** Variant of component. */\n variant?: 'call' | 'call+interaction';\n /** Label of the submit button. */\n submitButtonText: string;\n}\n\nexport const StyledCallHandoverForm = styled(Form)`\n min-width: 50ch;\n\n ${StyledTabPanel} {\n height: 24rem;\n }\n`;\n\nStyledCallHandoverForm.defaultProps = defaultThemeProp;\n\nconst CallHandoverForm: FunctionComponent<CallHandoverFormProps> = ({\n onCancel,\n onSubmit,\n transferOptions,\n variant,\n submitButtonText,\n interactionOptions\n}: CallHandoverFormProps) => {\n const t = useI18n();\n\n const [selectedReason, setSelectedReason] = useState<TransferReasonOption>();\n const [selectedContact, setSelectedContact] = useState<Contact['phoneNumber']>();\n const [selectedInteraction, setSelectedInteraction] = useState<TransferReasonOption>();\n const [comments, setComments] = useState('');\n\n return (\n <StyledCallHandoverForm\n actions={\n <>\n <Button variant='secondary' onClick={onCancel}>\n {t('cancel')}\n </Button>\n <Button\n variant='primary'\n disabled={\n !(\n selectedContact &&\n (variant === 'call+interaction' ? selectedReason && comments : true)\n )\n }\n onClick={() => {\n if (!selectedContact) return;\n onSubmit({\n reason: selectedReason?.id,\n comments,\n interaction: variant === 'call+interaction',\n phoneNumber: selectedContact,\n transferredInteractionId: selectedInteraction?.id\n });\n }}\n >\n {submitButtonText}\n </Button>\n </>\n }\n >\n {variant === 'call+interaction' && (\n <Flex container={{ direction: 'column', itemGap: 1 }}>\n {interactionOptions && (\n <ComboBox\n label={t('call_panel_handover_interaction_label')}\n selected={{\n items: selectedInteraction\n ? { id: selectedInteraction.id, text: selectedInteraction.label }\n : undefined\n }}\n menu={{\n items: interactionOptions.map(({ id, label }) => ({\n id,\n primary: label,\n selected: id === selectedInteraction?.id\n })),\n onItemClick: id =>\n setSelectedInteraction(interactionOptions.find(option => option.id === id))\n }}\n />\n )}\n\n <ComboBox\n label={t('call_panel_handover_reason_label')}\n required\n selected={{\n items: selectedReason\n ? { id: selectedReason.id, text: selectedReason.label }\n : undefined\n }}\n menu={{\n items: transferOptions.map(({ id, label }) => ({\n id,\n primary: label,\n selected: id === selectedReason?.id\n })),\n onItemClick: id => setSelectedReason(transferOptions.find(option => option.id === id))\n }}\n />\n\n <TextArea\n name='comments'\n required\n label={t('call_panel_handover_comments_label')}\n displayCharCount\n maxLength={300}\n value={comments}\n onChange={(e: ChangeEvent<HTMLTextAreaElement>) => setComments(e.target.value)}\n />\n </Flex>\n )}\n <CalleePicker\n selectedContact={selectedContact}\n onSelection={setSelectedContact}\n variant='select'\n />\n </StyledCallHandoverForm>\n );\n};\n\nexport default CallHandoverForm;\n"]}
@@ -0,0 +1,4 @@
1
+ export { default } from './CallHandoverDialog';
2
+ export { default as CallHandoverForm } from './CallHandoverForm';
3
+ export * from './CallHandover.types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/CallHandover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { default } from './CallHandoverDialog';
2
+ export { default as CallHandoverForm } from './CallHandoverForm';
3
+ export * from './CallHandover.types';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/CallHandover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,sBAAsB,CAAC","sourcesContent":["export { default } from './CallHandoverDialog';\nexport { default as CallHandoverForm } from './CallHandoverForm';\nexport * from './CallHandover.types';\n"]}
@@ -1,20 +1,18 @@
1
1
  import { FunctionComponent, Ref } from 'react';
2
2
  import { ForwardProps } from '@pega/cosmos-react-core';
3
- import { ContactsListProps } from './ContactsList';
4
3
  export interface CalleePickerProps {
5
- /** Heading for the new call. */
6
- heading: string;
4
+ /** Currently selected number. */
5
+ selectedContact?: string;
7
6
  /**
8
7
  * Callback fired on new call made by the user.
9
8
  * @param phoneNumber the number chosen.
10
9
  */
11
- onCall: (phoneNumber: string) => void;
12
- /** Callback fired on clicking close button. */
13
- onClose?: () => void;
10
+ onSelection: (phoneNumber: string) => void;
11
+ /** Variant of the list. */
12
+ variant: 'action' | 'select';
14
13
  /** Reference to the root component. */
15
14
  ref?: Ref<HTMLDivElement>;
16
15
  }
17
- export declare const ContactsContext: import("react").Context<Pick<ContactsListProps, "onFavoriteToggle" | "contacts">>;
18
16
  declare const CalleePicker: FunctionComponent<CalleePickerProps & ForwardProps>;
19
17
  export default CalleePicker;
20
18
  //# sourceMappingURL=CalleePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalleePicker.d.ts","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/ContactList/CalleePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EAEjB,GAAG,EAGJ,MAAM,OAAO,CAAC;AAGf,OAAO,EAIL,YAAY,EAGb,MAAM,yBAAyB,CAAC;AAUjC,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,2BAA2B;IAC3B,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC7B,uCAAuC;IACvC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAYD,QAAA,MAAM,YAAY,EAAE,iBAAiB,CAAC,iBAAiB,GAAG,YAAY,CAkErE,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useContext, forwardRef, useRef, useState } from 'react';
3
+ import styled, { css } from 'styled-components';
4
+ import { registerIcon, TabPanel, Tabs, defaultThemeProp, useI18n } 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 DialPad from '../../DialPad/DialPad';
8
+ import ContactList, { ContactsContext } from './ContactList';
9
+ registerIcon(timesIcon);
10
+ const StyledCalleePicker = styled.div(() => {
11
+ return css `
12
+ ${StyledTabPanel} {
13
+ height: 24rem;
14
+ }
15
+ `;
16
+ });
17
+ StyledCalleePicker.defaultProps = defaultThemeProp;
18
+ const CalleePicker = forwardRef(({ selectedContact, onSelection, variant }, ref) => {
19
+ const t = useI18n();
20
+ const [currentTab, setCurrentTab] = useState('all');
21
+ const tabsRef = useRef(null);
22
+ const { contacts, onFavoriteToggle } = useContext(ContactsContext);
23
+ const favorites = contacts.filter(item => item.favorite);
24
+ const tabs = [
25
+ { id: 'all', name: t('call_panel_contacts_list_heading'), count: contacts.length },
26
+ {
27
+ id: 'favorites',
28
+ name: t('call_panel_contacts_favorites_heading'),
29
+ count: contacts.filter(item => item.favorite).length
30
+ },
31
+ { id: 'dial-pad', name: t('call_panel_contacts_dial_pad_heading') }
32
+ ];
33
+ const tabContent = (tabId) => {
34
+ if (tabId === 'dial-pad')
35
+ return (_jsx(DialPad, { mode: 'default', ...(variant === 'action'
36
+ ? {
37
+ onCallButtonClick: onSelection
38
+ }
39
+ : {
40
+ onDialButtonClick: charCode => onSelection(charCode === 127
41
+ ? selectedContact?.slice(0, -1) ?? ''
42
+ : (selectedContact ?? '') + String.fromCharCode(charCode))
43
+ }) }));
44
+ return (_jsx(ContactList, { contacts: (tabId === 'favorites' ? favorites : contacts).map(contact => ({
45
+ ...contact,
46
+ selected: contact.phoneNumber === selectedContact
47
+ })), onFavoriteToggle: onFavoriteToggle, onItemClick: onSelection, variant: variant }));
48
+ };
49
+ return (_jsxs(StyledCalleePicker, { ref: ref, children: [_jsx(Tabs, { ref: tabsRef, tabs: tabs, type: 'horizontal', onTabClick: setCurrentTab, currentTabId: currentTab }), _jsx(TabPanel, { tabId: currentTab, children: tabContent(currentTab) })] }));
50
+ });
51
+ export default CalleePicker;
52
+ //# sourceMappingURL=CalleePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalleePicker.js","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/ContactList/CalleePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n useContext,\n forwardRef,\n FunctionComponent,\n PropsWithoutRef,\n Ref,\n useRef,\n useState\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n registerIcon,\n TabPanel,\n Tabs,\n ForwardProps,\n defaultThemeProp,\n useI18n\n} from '@pega/cosmos-react-core';\nimport { StyledTabPanel } from '@pega/cosmos-react-core/lib/components/Tabs/TabPanel';\nimport * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';\n\nimport DialPad from '../../DialPad/DialPad';\n\nimport ContactList, { ContactsContext } from './ContactList';\n\nregisterIcon(timesIcon);\n\nexport interface CalleePickerProps {\n /** Currently selected number. */\n selectedContact?: string;\n /**\n * Callback fired on new call made by the user.\n * @param phoneNumber the number chosen.\n */\n onSelection: (phoneNumber: string) => void;\n /** Variant of the list. */\n variant: 'action' | 'select';\n /** Reference to the root component. */\n ref?: Ref<HTMLDivElement>;\n}\n\nconst StyledCalleePicker = styled.div(() => {\n return css`\n ${StyledTabPanel} {\n height: 24rem;\n }\n `;\n});\n\nStyledCalleePicker.defaultProps = defaultThemeProp;\n\nconst CalleePicker: FunctionComponent<CalleePickerProps & ForwardProps> = forwardRef(\n (\n { selectedContact, onSelection, variant }: PropsWithoutRef<CalleePickerProps>,\n ref: CalleePickerProps['ref']\n ) => {\n const t = useI18n();\n const [currentTab, setCurrentTab] = useState('all');\n const tabsRef = useRef<HTMLElement>(null);\n const { contacts, onFavoriteToggle } = useContext(ContactsContext);\n const favorites = contacts.filter(item => item.favorite);\n\n const tabs = [\n { id: 'all', name: t('call_panel_contacts_list_heading'), count: contacts.length },\n {\n id: 'favorites',\n name: t('call_panel_contacts_favorites_heading'),\n count: contacts.filter(item => item.favorite).length\n },\n { id: 'dial-pad', name: t('call_panel_contacts_dial_pad_heading') }\n ];\n\n const tabContent = (tabId: string) => {\n if (tabId === 'dial-pad')\n return (\n <DialPad\n mode='default'\n {...(variant === 'action'\n ? {\n onCallButtonClick: onSelection\n }\n : {\n onDialButtonClick: charCode =>\n onSelection(\n charCode === 127\n ? selectedContact?.slice(0, -1) ?? ''\n : (selectedContact ?? '') + String.fromCharCode(charCode)\n )\n })}\n />\n );\n return (\n <ContactList\n contacts={(tabId === 'favorites' ? favorites : contacts).map(contact => ({\n ...contact,\n selected: contact.phoneNumber === selectedContact\n }))}\n onFavoriteToggle={onFavoriteToggle}\n onItemClick={onSelection}\n variant={variant}\n />\n );\n };\n\n return (\n <StyledCalleePicker ref={ref}>\n <Tabs\n ref={tabsRef}\n tabs={tabs}\n type='horizontal'\n onTabClick={setCurrentTab}\n currentTabId={currentTab}\n />\n <TabPanel tabId={currentTab}>{tabContent(currentTab)}</TabPanel>\n </StyledCalleePicker>\n );\n }\n);\n\nexport default CalleePicker;\n"]}
@@ -0,0 +1,10 @@
1
+ import { FunctionComponent } from 'react';
2
+ import { ForwardProps } from '@pega/cosmos-react-core';
3
+ import type { Contact, ContactListProps } from './ContactList.types';
4
+ export declare const ContactsContext: import("react").Context<{
5
+ contacts: Contact[];
6
+ onFavoriteToggle: ContactListProps['onFavoriteToggle'];
7
+ }>;
8
+ declare const ContactList: FunctionComponent<ContactListProps & ForwardProps>;
9
+ export default ContactList;
10
+ //# sourceMappingURL=ContactList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactList.d.ts","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/ContactList/ContactList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EAKlB,MAAM,OAAO,CAAC;AAGf,OAAO,EAGL,YAAY,EAkBb,MAAM,yBAAyB,CAAC;AASjC,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAqB,MAAM,qBAAqB,CAAC;AAiExF,eAAO,MAAM,eAAe;cAChB,OAAO,EAAE;sBACD,gBAAgB,CAAC,kBAAkB,CAAC;EAItD,CAAC;AAgDH,QAAA,MAAM,WAAW,EAAE,iBAAiB,CAAC,gBAAgB,GAAG,YAAY,CAoFnE,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,129 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, forwardRef, useCallback, useState } from 'react';
3
+ import styled, { css } from 'styled-components';
4
+ import { Button, defaultThemeProp, Icon, registerIcon, Text, useI18n, ViewAll, StyledSummaryItemActions, StyledPrimary, StyledSecondary, useArrows, useConsolidatedRef, StyledCard, RadioButton, SummaryItem, StyledSummaryItem, StyledLabel } from '@pega/cosmos-react-core';
5
+ import { StyledCardContent } from '@pega/cosmos-react-core/lib/components/Card/CardContent';
6
+ import * as starIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/star.icon';
7
+ import * as starSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/star-solid.icon';
8
+ import { StyledRadioCheckCard } from '@pega/cosmos-react-core/lib/components/RadioCheck/RadioCheck';
9
+ import BareRoleButton from '@pega/cosmos-react-core/lib/components/Button/BareRoleButton';
10
+ registerIcon(starIcon, starSolidIcon);
11
+ const StyledContactList = styled.div(({ theme: { base, components } }) => {
12
+ return css `
13
+ height: 100%;
14
+ overflow-y: auto;
15
+ overflow-x: hidden;
16
+ padding: 0 calc(0.5 * ${base.spacing}) calc(0.5 * ${base.spacing});
17
+
18
+ > ${StyledCard} > ${StyledCardContent} {
19
+ padding: 0;
20
+ gap: 0;
21
+ }
22
+
23
+ ul {
24
+ list-style: none;
25
+ }
26
+
27
+ ${StyledRadioCheckCard} {
28
+ background-color: transparent;
29
+ border: 0;
30
+ padding: 0 calc(0.5 * ${base.spacing});
31
+ height: ${components.button.height};
32
+ align-items: center;
33
+ border-radius: 0;
34
+
35
+ > ${StyledLabel} {
36
+ max-width: 100%;
37
+ width: 100%;
38
+ margin: 0;
39
+ }
40
+ }
41
+
42
+ li {
43
+ padding: 0;
44
+ height: calc(${components.button.height} + 0.125rem);
45
+
46
+ :not(:last-child) {
47
+ border-bottom: 0.0625rem solid ${base.palette['border-line']};
48
+ }
49
+ }
50
+
51
+ ${StyledSummaryItem} {
52
+ > ${StyledPrimary}, > ${StyledSecondary} {
53
+ align-self: center;
54
+ font-weight: ${base['font-weight'].normal};
55
+ }
56
+ }
57
+
58
+ ${StyledSummaryItemActions} {
59
+ color: ${base.palette.interactive};
60
+ }
61
+
62
+ @media (pointer: 'coarse') {
63
+ li {
64
+ height: ${components.button.touch.height};
65
+ }
66
+ }
67
+ `;
68
+ });
69
+ StyledContactList.defaultProps = defaultThemeProp;
70
+ export const ContactsContext = createContext({
71
+ contacts: [],
72
+ onFavoriteToggle: () => { }
73
+ });
74
+ const SelectableContactItem = ({ id, primary, secondary, checked, container, onChange }) => {
75
+ return (_jsx("li", { children: _jsx(RadioButton, { card: true, variant: 'card', label: _jsx(SummaryItem, { id: id, primary: primary, secondary: secondary, container: container }), checked: checked, onChange: onChange, name: `${id}-contact` }) }, id));
76
+ };
77
+ const CallableContactItem = ({ visual, primary, secondary, onClick, container }) => {
78
+ return (_jsx("li", { children: _jsx(BareRoleButton, { onClick: onClick, children: _jsx(SummaryItem, { visual: visual, primary: primary, secondary: secondary, container: container, actions: _jsx(Icon, { name: 'phone-solid' }) }) }) }));
79
+ };
80
+ const ContactList = forwardRef(({ contacts: items, onItemClick, onFavoriteToggle, variant }, ref) => {
81
+ const t = useI18n();
82
+ const [searchText, setSearchText] = useState('');
83
+ const containerRef = useConsolidatedRef(ref);
84
+ const onSearchChange = useCallback((value) => {
85
+ setSearchText(value.trim());
86
+ }, []);
87
+ const favoriteButton = useCallback((phoneNumber, favorite) => (_jsx(Button, { variant: 'simple', icon: true, onClick: (e) => {
88
+ e.stopPropagation();
89
+ onFavoriteToggle(phoneNumber, favorite);
90
+ }, "aria-label": favorite
91
+ ? t('call_panel_contacts_add_to_favorites')
92
+ : t('call_panel_contacts_remove_from_favorites'), children: _jsx(Icon, { name: favorite ? 'star-solid' : 'star' }) })), [onFavoriteToggle]);
93
+ const createList = (list) => {
94
+ return list.map(item => {
95
+ const commonOpts = {
96
+ id: item.phoneNumber,
97
+ primary: item.primary,
98
+ secondary: _jsx(Text, { variant: 'secondary', children: item.secondary }),
99
+ container: {
100
+ areas: '"visual primary secondary actions"',
101
+ cols: 'auto minmax(0, 2fr) minmax(0, 2fr) auto'
102
+ }
103
+ };
104
+ return variant === 'select'
105
+ ? {
106
+ ...commonOpts,
107
+ as: SelectableContactItem,
108
+ checked: item.selected,
109
+ onChange: () => onItemClick(item.phoneNumber)
110
+ }
111
+ : {
112
+ ...commonOpts,
113
+ as: CallableContactItem,
114
+ visual: favoriteButton(item.phoneNumber, item.favorite),
115
+ onClick: () => onItemClick(item.phoneNumber)
116
+ };
117
+ });
118
+ };
119
+ useArrows(containerRef, { selector: ':scope ul [role="button"]' });
120
+ return (_jsx(ViewAll, { as: StyledContactList, ref: containerRef, items: searchText
121
+ ? createList(items.filter(({ phoneNumber, primary, secondary }) => {
122
+ return (primary.toLowerCase().includes(searchText.toLowerCase()) ||
123
+ secondary.toLowerCase().includes(searchText.toLowerCase()) ||
124
+ phoneNumber.toLowerCase().includes(searchText.toLowerCase()));
125
+ }))
126
+ : createList(items), searchInputProps: { onSearchChange } }));
127
+ });
128
+ export default ContactList;
129
+ //# sourceMappingURL=ContactList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactList.js","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/ContactList/ContactList.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n forwardRef,\n FunctionComponent,\n MouseEvent,\n PropsWithoutRef,\n useCallback,\n useState\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Button,\n defaultThemeProp,\n ForwardProps,\n Icon,\n registerIcon,\n Text,\n useI18n,\n ViewAll,\n StyledSummaryItemActions,\n StyledPrimary,\n StyledSecondary,\n useArrows,\n useConsolidatedRef,\n StyledCard,\n RadioButton,\n RadioButtonProps,\n SummaryItemProps,\n SummaryItem,\n StyledSummaryItem,\n StyledLabel\n} from '@pega/cosmos-react-core';\nimport { StyledCardContent } from '@pega/cosmos-react-core/lib/components/Card/CardContent';\nimport * as starIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/star.icon';\nimport * as starSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/star-solid.icon';\nimport { StyledRadioCheckCard } from '@pega/cosmos-react-core/lib/components/RadioCheck/RadioCheck';\nimport BareRoleButton, {\n BareRoleButtonProps\n} from '@pega/cosmos-react-core/lib/components/Button/BareRoleButton';\n\nimport type { Contact, ContactListProps, SelectableContact } from './ContactList.types';\n\nregisterIcon(starIcon, starSolidIcon);\n\nconst StyledContactList = styled.div(({ theme: { base, components } }) => {\n return css`\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 0 calc(0.5 * ${base.spacing}) calc(0.5 * ${base.spacing});\n\n > ${StyledCard} > ${StyledCardContent} {\n padding: 0;\n gap: 0;\n }\n\n ul {\n list-style: none;\n }\n\n ${StyledRadioCheckCard} {\n background-color: transparent;\n border: 0;\n padding: 0 calc(0.5 * ${base.spacing});\n height: ${components.button.height};\n align-items: center;\n border-radius: 0;\n\n > ${StyledLabel} {\n max-width: 100%;\n width: 100%;\n margin: 0;\n }\n }\n\n li {\n padding: 0;\n height: calc(${components.button.height} + 0.125rem);\n\n :not(:last-child) {\n border-bottom: 0.0625rem solid ${base.palette['border-line']};\n }\n }\n\n ${StyledSummaryItem} {\n > ${StyledPrimary}, > ${StyledSecondary} {\n align-self: center;\n font-weight: ${base['font-weight'].normal};\n }\n }\n\n ${StyledSummaryItemActions} {\n color: ${base.palette.interactive};\n }\n\n @media (pointer: 'coarse') {\n li {\n height: ${components.button.touch.height};\n }\n }\n `;\n});\n\nStyledContactList.defaultProps = defaultThemeProp;\n\nexport const ContactsContext = createContext<{\n contacts: Contact[];\n onFavoriteToggle: ContactListProps['onFavoriteToggle'];\n}>({\n contacts: [],\n onFavoriteToggle: () => {}\n});\n\nconst SelectableContactItem = ({\n id,\n primary,\n secondary,\n checked,\n container,\n onChange\n}: SummaryItemProps & RadioButtonProps) => {\n return (\n <li key={id}>\n <RadioButton\n card\n variant='card'\n label={\n <SummaryItem id={id} primary={primary} secondary={secondary} container={container} />\n }\n checked={checked}\n onChange={onChange}\n name={`${id}-contact`}\n />\n </li>\n );\n};\n\nconst CallableContactItem = ({\n visual,\n primary,\n secondary,\n onClick,\n container\n}: SummaryItemProps & { onClick: BareRoleButtonProps['onClick'] }) => {\n return (\n <li>\n <BareRoleButton onClick={onClick}>\n <SummaryItem\n visual={visual}\n primary={primary}\n secondary={secondary}\n container={container}\n actions={<Icon name='phone-solid' />}\n />\n </BareRoleButton>\n </li>\n );\n};\n\nconst ContactList: FunctionComponent<ContactListProps & ForwardProps> = forwardRef(\n (\n { contacts: items, onItemClick, onFavoriteToggle, variant }: PropsWithoutRef<ContactListProps>,\n ref: ContactListProps['ref']\n ) => {\n const t = useI18n();\n const [searchText, setSearchText] = useState('');\n const containerRef = useConsolidatedRef(ref);\n\n const onSearchChange = useCallback((value: string) => {\n setSearchText(value.trim());\n }, []);\n\n const favoriteButton = useCallback(\n (phoneNumber: string, favorite: boolean) => (\n <Button\n variant='simple'\n icon\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n onFavoriteToggle(phoneNumber, favorite);\n }}\n aria-label={\n favorite\n ? t('call_panel_contacts_add_to_favorites')\n : t('call_panel_contacts_remove_from_favorites')\n }\n >\n <Icon name={favorite ? 'star-solid' : 'star'} />\n </Button>\n ),\n [onFavoriteToggle]\n );\n\n const createList = (list: SelectableContact[]) => {\n return list.map(item => {\n const commonOpts = {\n id: item.phoneNumber,\n primary: item.primary,\n secondary: <Text variant='secondary'>{item.secondary}</Text>,\n container: {\n areas: '\"visual primary secondary actions\"',\n cols: 'auto minmax(0, 2fr) minmax(0, 2fr) auto'\n }\n };\n return variant === 'select'\n ? {\n ...commonOpts,\n as: SelectableContactItem,\n checked: item.selected,\n onChange: () => onItemClick(item.phoneNumber)\n }\n : {\n ...commonOpts,\n as: CallableContactItem,\n visual: favoriteButton(item.phoneNumber, item.favorite),\n onClick: () => onItemClick(item.phoneNumber)\n };\n });\n };\n\n useArrows(containerRef, { selector: ':scope ul [role=\"button\"]' });\n\n return (\n <ViewAll\n as={StyledContactList}\n ref={containerRef}\n items={\n searchText\n ? createList(\n items.filter(({ phoneNumber, primary, secondary }) => {\n return (\n primary.toLowerCase().includes(searchText.toLowerCase()) ||\n secondary.toLowerCase().includes(searchText.toLowerCase()) ||\n phoneNumber.toLowerCase().includes(searchText.toLowerCase())\n );\n })\n )\n : createList(items)\n }\n searchInputProps={{ onSearchChange }}\n />\n );\n }\n);\n\nexport default ContactList;\n"]}
@@ -0,0 +1,30 @@
1
+ import { Ref } from 'react';
2
+ export interface Contact {
3
+ /** Contact phone number */
4
+ phoneNumber: string;
5
+ /** Contact name */
6
+ primary: string;
7
+ /** Additional contact information */
8
+ secondary: string;
9
+ /** Determines if contact is favorite */
10
+ favorite: boolean;
11
+ }
12
+ export interface SelectableContact extends Contact {
13
+ selected?: boolean;
14
+ }
15
+ export interface ContactListProps {
16
+ /** An array of contacts objects. */
17
+ contacts: SelectableContact[];
18
+ /**
19
+ * The click handler for the items.
20
+ * @param phoneNumber the number chosen.
21
+ */
22
+ onItemClick: (phoneNumber: string) => void;
23
+ /** Callback fired on adding/removing contact to/from favorites */
24
+ onFavoriteToggle: (phoneNumber: string, favorites: boolean) => void;
25
+ /** Variant of the list. */
26
+ variant: 'action' | 'select';
27
+ /** Reference to the root component. */
28
+ ref?: Ref<HTMLDivElement>;
29
+ }
30
+ //# sourceMappingURL=ContactList.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactList.types.d.ts","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/ContactList/ContactList.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,WAAW,OAAO;IACtB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B;;;OAGG;IACH,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,kEAAkE;IAClE,gBAAgB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,2BAA2B;IAC3B,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC7B,uCAAuC;IACvC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ContactList.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactList.types.js","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/ContactList/ContactList.types.ts"],"names":[],"mappings":"","sourcesContent":["import { Ref } from 'react';\n\nexport interface Contact {\n /** Contact phone number */\n phoneNumber: string;\n /** Contact name */\n primary: string;\n /** Additional contact information */\n secondary: string;\n /** Determines if contact is favorite */\n favorite: boolean;\n}\n\nexport interface SelectableContact extends Contact {\n selected?: boolean;\n}\n\nexport interface ContactListProps {\n /** An array of contacts objects. */\n contacts: SelectableContact[];\n /**\n * The click handler for the items.\n * @param phoneNumber the number chosen.\n */\n onItemClick: (phoneNumber: string) => void;\n /** Callback fired on adding/removing contact to/from favorites */\n onFavoriteToggle: (phoneNumber: string, favorites: boolean) => void;\n /** Variant of the list. */\n variant: 'action' | 'select';\n /** Reference to the root component. */\n ref?: Ref<HTMLDivElement>;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export { default, ContactsContext } from './ContactList';
2
+ export type { ContactListProps, Contact } from './ContactList.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/ContactList/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default, ContactsContext } from './ContactList';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/CallControlPanel/ContactList/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC","sourcesContent":["export { default, ContactsContext } from './ContactList';\nexport type { ContactListProps, Contact } from './ContactList.types';\n"]}
@@ -0,0 +1,54 @@
1
+ import { FunctionComponent, Ref } from 'react';
2
+ import { BannerProps, ForwardProps } from '@pega/cosmos-react-core';
3
+ import { FloatingPanelProps } from './FloatingPanel';
4
+ export interface InteractionOption {
5
+ id: string;
6
+ label: string;
7
+ }
8
+ export interface AttachInteractionData {
9
+ /** Selected reason option identifier. */
10
+ reason?: InteractionOption['id'];
11
+ /** Interaction comments. */
12
+ comments?: string;
13
+ /** Selected interation option identifier. */
14
+ interactionOption?: InteractionOption['id'];
15
+ }
16
+ export interface AttachInteractionFormProps {
17
+ /** The heading rendered. */
18
+ heading: string;
19
+ /** Callback fired when 'Submit' interaction action has been clicked. */
20
+ onAddInteraction: (data: AttachInteractionData) => void;
21
+ /** Callback fired when 'Cancel' interaction action has been clicked. */
22
+ onCancel: () => void;
23
+ /** Reason options. */
24
+ reasonOptions: Readonly<InteractionOption[]>;
25
+ /** Interaction options. */
26
+ interactionOptions?: Readonly<InteractionOption[]>;
27
+ /**
28
+ * Region for messages: errors, notifications, etc.
29
+ */
30
+ message?: Pick<BannerProps, 'id' | 'variant' | 'heading' | 'messages' | 'onDismiss'>;
31
+ }
32
+ export interface ExternalCTIProps {
33
+ /** The heading rendered. */
34
+ heading: string;
35
+ /** If true, the component will be draggable. */
36
+ draggable?: boolean;
37
+ /** If true, the component will be visible. */
38
+ visible?: FloatingPanelProps['visible'];
39
+ /** Container element size in px. */
40
+ size?: {
41
+ width: number;
42
+ height: number;
43
+ };
44
+ /** Reference to the container. */
45
+ ref?: Ref<HTMLDivElement>;
46
+ /**
47
+ * Attach intraction popup options.
48
+ */
49
+ attachInteractionProps?: AttachInteractionFormProps;
50
+ }
51
+ export declare const StyledInteractionForm: import("styled-components").StyledComponent<import("react").FC<import("@pega/cosmos-react-core").FormProps & ForwardProps>, import("styled-components").DefaultTheme, {}, never>;
52
+ declare const ExternalCTI: FunctionComponent<ExternalCTIProps & ForwardProps>;
53
+ export default ExternalCTI;
54
+ //# sourceMappingURL=ExternalCTI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExternalCTI.d.ts","sourceRoot":"","sources":["../../../src/components/CallControlPanel/ExternalCTI.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,iBAAiB,EAEjB,GAAG,EAGJ,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,WAAW,EAGX,YAAY,EAQb,MAAM,yBAAyB,CAAC;AAEjC,OAAsB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,MAAM,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,0BAA0B;IACzC,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,gBAAgB,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACxD,wEAAwE;IACxE,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,sBAAsB;IACtB,aAAa,EAAE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC7C,2BAA2B;IAC3B,kBAAkB,CAAC,EAAE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACnD;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC;CACtF;AAED,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACxC,oCAAoC;IACpC,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,kCAAkC;IAClC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B;;OAEG;IACH,sBAAsB,CAAC,EAAE,0BAA0B,CAAC;CACrD;AA8BD,eAAO,MAAM,qBAAqB,kLAUjC,CAAC;AAIF,QAAA,MAAM,WAAW,EAAE,iBAAiB,CAAC,gBAAgB,GAAG,YAAY,CAgInE,CAAC;AAEF,eAAe,WAAW,CAAC"}