@webex/cc-components 1.28.0-ccwidgets.45 → 1.28.0-ccwidgets.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +16 -5
- package/dist/types/components/task/task.types.d.ts +29 -8
- package/dist/wc.js +3 -3
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -2010,7 +2010,7 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n\n\n
|
|
|
2010
2010
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
2011
2011
|
|
|
2012
2012
|
"use strict";
|
|
2013
|
-
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst react_1 = __importDefault(__webpack_require__(/*! react */ \"react\"));\nconst react_collaboration_1 = __webpack_require__(/*! @momentum-ui/react-collaboration */ \"@momentum-ui/react-collaboration\");\nconst react_2 = __webpack_require__(/*! @momentum-design/components/dist/react */ \"../../../node_modules/@momentum-design/components/dist/react/index.js\");\nconst TaskTimer_1 = __importDefault(__webpack_require__(/*! ../../TaskTimer */ \"./src/components/task/TaskTimer/index.tsx\"));\nconst CallControlConsultComponent = ({ agentName, startTimeStamp, onTransfer, endConsultCall, consultCompleted,
|
|
2013
|
+
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst react_1 = __importDefault(__webpack_require__(/*! react */ \"react\"));\nconst react_collaboration_1 = __webpack_require__(/*! @momentum-ui/react-collaboration */ \"@momentum-ui/react-collaboration\");\nconst react_2 = __webpack_require__(/*! @momentum-design/components/dist/react */ \"../../../node_modules/@momentum-design/components/dist/react/index.js\");\nconst TaskTimer_1 = __importDefault(__webpack_require__(/*! ../../TaskTimer */ \"./src/components/task/TaskTimer/index.tsx\"));\nconst CallControlConsultComponent = ({ agentName, startTimeStamp, onTransfer, endConsultCall, consultCompleted, isAgentBeingConsulted, isEndConsultEnabled, }) => {\n const timerKey = `timer-${startTimeStamp}`;\n const handleTransfer = () => {\n try {\n if (onTransfer) {\n onTransfer();\n }\n }\n catch (error) {\n throw new Error('Error transferring call:', error);\n }\n };\n const handleEndConsult = () => {\n try {\n endConsultCall();\n }\n catch (error) {\n throw new Error('Error ending consult call:', error);\n }\n };\n const buttons = [\n {\n key: 'transfer',\n icon: 'next-bold',\n tooltip: 'Transfer Consult',\n onClick: handleTransfer,\n className: 'call-control-button',\n disabled: !consultCompleted,\n shouldShow: isAgentBeingConsulted && !!onTransfer,\n },\n {\n key: 'cancel',\n icon: 'headset-muted-bold',\n tooltip: 'End Consult',\n onClick: handleEndConsult,\n className: 'call-control-consult-button-cancel',\n shouldShow: isEndConsultEnabled || isAgentBeingConsulted,\n },\n ];\n // Filter buttons that should be shown, then map them\n const visibleButtons = buttons.filter((button) => button.shouldShow);\n return (react_1.default.createElement(\"div\", { className: \"call-control-consult\" },\n react_1.default.createElement(\"div\", { className: \"consult-header\" },\n react_1.default.createElement(react_2.Avatar, { iconName: \"handset-filled\", className: \"task-avatar\", size: 32 }),\n react_1.default.createElement(\"div\", null,\n react_1.default.createElement(react_collaboration_1.Text, { tagName: \"p\", type: \"body-large-bold\", className: \"consult-agent-name\" }, agentName),\n react_1.default.createElement(react_collaboration_1.Text, { tagName: \"p\", type: \"body-secondary\", className: \"consult-sub-text\" },\n consultCompleted ? 'Consulting' : 'Consult requested',\n \"\\u00A0\\u2022\\u00A0\",\n react_1.default.createElement(TaskTimer_1.default, { key: timerKey, startTimeStamp: startTimeStamp })))),\n react_1.default.createElement(\"div\", { className: \"consult-buttons consult-buttons-container\" }, visibleButtons.map((button) => (react_1.default.createElement(react_collaboration_1.TooltipNext, { key: button.key, triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonCircle, { className: button.className, onPress: button.onClick, disabled: button.disabled, \"data-testid\": `${button.key}-consult-btn` },\n react_1.default.createElement(react_2.Icon, { className: `${button.className}-icon`, name: button.icon })), color: \"primary\", delay: [0, 0], placement: \"bottom-start\", type: \"description\", variant: \"small\", className: \"tooltip\" },\n react_1.default.createElement(\"p\", null, button.tooltip)))))));\n};\nexports[\"default\"] = CallControlConsultComponent;\n\n\n//# sourceURL=webpack://@webex/cc-components/./src/components/task/CallControl/CallControlCustom/call-control-consult.tsx?");
|
|
2014
2014
|
|
|
2015
2015
|
/***/ }),
|
|
2016
2016
|
|
|
@@ -2032,7 +2032,7 @@ eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
2032
2032
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
2033
2033
|
|
|
2034
2034
|
"use strict";
|
|
2035
|
-
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst react_1 = __importStar(__webpack_require__(/*! react */ \"react\"));\nconst react_collaboration_1 = __webpack_require__(/*! @momentum-ui/react-collaboration */ \"@momentum-ui/react-collaboration\");\nconst consult_transfer_list_item_1 = __importDefault(__webpack_require__(/*! ./consult-transfer-list-item */ \"./src/components/task/CallControl/CallControlCustom/consult-transfer-list-item.tsx\"));\nconst ConsultTransferPopoverComponent = ({ heading, buttonIcon, buddyAgents, onAgentSelect, }) => {\n const [selectedTab, setSelectedTab] = (0, react_1.useState)('Agents');\n const filteredAgents = buddyAgents;\n return (react_1.default.createElement(\"div\", { className: \"agent-popover-content\" },\n react_1.default.createElement(react_collaboration_1.Text, { tagName: \"h3\", className: \"agent-popover-title\", type: \"body-large-bold\", style: { margin: '0 0 0 0' } }, heading),\n react_1.default.createElement(react_collaboration_1.TabListNext, { \"aria-label\": \"Tabs\", className: \"agent-tablist\", hasBackground: false, style: { marginTop: '0' }, onTabSelection: (key) => setSelectedTab(key) },\n react_1.default.createElement(react_collaboration_1.TabNext, { key: \"Agents\", className: \"agent-tab\", active: selectedTab === 'Agents' }, \"Agents\")
|
|
2035
|
+
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst react_1 = __importStar(__webpack_require__(/*! react */ \"react\"));\nconst react_collaboration_1 = __webpack_require__(/*! @momentum-ui/react-collaboration */ \"@momentum-ui/react-collaboration\");\nconst consult_transfer_list_item_1 = __importDefault(__webpack_require__(/*! ./consult-transfer-list-item */ \"./src/components/task/CallControl/CallControlCustom/consult-transfer-list-item.tsx\"));\nconst ConsultTransferPopoverComponent = ({ heading, buttonIcon, buddyAgents, queues, onAgentSelect, onQueueSelect, allowConsultToQueue, }) => {\n const [selectedTab, setSelectedTab] = (0, react_1.useState)('Agents');\n const filteredAgents = buddyAgents;\n const filteredQueues = queues;\n const renderList = (items, getKey, getTitle, handleSelect) => (react_1.default.createElement(react_collaboration_1.ListNext, { listSize: items.length, className: \"agent-list\" },\n items.map((item) => (react_1.default.createElement(\"div\", { key: getKey(item), onMouseDown: (e) => e.stopPropagation(), style: { cursor: 'pointer', pointerEvents: 'auto' } },\n react_1.default.createElement(consult_transfer_list_item_1.default, { title: getTitle(item), buttonIcon: buttonIcon, onButtonPress: () => handleSelect(getKey(item), getTitle(item)) })))),\n items.length === 0 && (react_1.default.createElement(react_collaboration_1.Text, { tagName: \"small\", type: \"body-secondary\" },\n \"No \",\n selectedTab.toLowerCase(),\n \" found\"))));\n return (react_1.default.createElement(\"div\", { className: \"agent-popover-content\" },\n react_1.default.createElement(react_collaboration_1.Text, { tagName: \"h3\", className: \"agent-popover-title\", type: \"body-large-bold\", style: { margin: '0 0 0 0' } }, heading),\n react_1.default.createElement(react_collaboration_1.TabListNext, { \"aria-label\": \"Tabs\", className: \"agent-tablist\", hasBackground: false, style: { marginTop: '0' }, onTabSelection: (key) => setSelectedTab(key) },\n react_1.default.createElement(react_collaboration_1.TabNext, { key: \"Agents\", className: \"agent-tab\", active: selectedTab === 'Agents' }, \"Agents\"),\n react_1.default.createElement(react_collaboration_1.TabNext, { key: \"Queues\", className: \"queue-tab\", active: selectedTab === 'Queues', disabled: !allowConsultToQueue, style: !allowConsultToQueue ? { display: 'none' } : undefined }, \"Queues\")),\n selectedTab === 'Agents' &&\n renderList(filteredAgents, (agent) => agent.agentId, (agent) => agent.agentName, onAgentSelect),\n selectedTab === 'Queues' &&\n allowConsultToQueue &&\n renderList(filteredQueues, (queue) => queue.id, (queue) => queue.name, onQueueSelect || (() => { }))));\n};\nexports[\"default\"] = ConsultTransferPopoverComponent;\n\n\n//# sourceURL=webpack://@webex/cc-components/./src/components/task/CallControl/CallControlCustom/consult-transfer-popover.tsx?");
|
|
2036
2036
|
|
|
2037
2037
|
/***/ }),
|
|
2038
2038
|
|
|
@@ -2043,7 +2043,7 @@ eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ?
|
|
|
2043
2043
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
2044
2044
|
|
|
2045
2045
|
"use strict";
|
|
2046
|
-
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst react_1 = __importStar(__webpack_require__(/*! react */ \"react\"));\n__webpack_require__(/*! ./call-control.styles.scss */ \"./src/components/task/CallControl/call-control.styles.scss\");\nconst react_collaboration_1 = __webpack_require__(/*! @momentum-ui/react-collaboration */ \"@momentum-ui/react-collaboration\");\nconst collections_1 = __webpack_require__(/*! @react-stately/collections */ \"../../../node_modules/@react-stately/collections/dist/main.js\");\nconst react_2 = __webpack_require__(/*! @momentum-design/components/dist/react */ \"../../../node_modules/@momentum-design/components/dist/react/index.js\");\nconst consult_transfer_popover_1 = __importDefault(__webpack_require__(/*! ./CallControlCustom/consult-transfer-popover */ \"./src/components/task/CallControl/CallControlCustom/consult-transfer-popover.tsx\"));\nconst call_control_consult_1 = __importDefault(__webpack_require__(/*! ./CallControlCustom/call-control-consult */ \"./src/components/task/CallControl/CallControlCustom/call-control-consult.tsx\"));\nfunction CallControlComponent(props) {\n const [selectedWrapupReason, setSelectedWrapupReason] = (0, react_1.useState)(null);\n const [selectedWrapupId, setSelectedWrapupId] = (0, react_1.useState)(null);\n const [showAgentMenu, setShowAgentMenu] = (0, react_1.useState)(false);\n const [agentMenuType, setAgentMenuType] = (0, react_1.useState)(null);\n const { currentTask, toggleHold, toggleRecording, endCall, wrapupCall, wrapupCodes, wrapupRequired, isHeld, setIsHeld, isRecording, setIsRecording, buddyAgents, loadBuddyAgents, transferCall, consultCall, endConsultCall, consultTransfer, consultInitiated, consultCompleted, consultAccepted, consultStartTimeStamp, callControlAudio, consultAgentName, setConsultAgentName, consultAgentId, setConsultAgentId, } = props;\n (0, react_1.useEffect)(() => {\n if (!currentTask || !currentTask.data || !currentTask.data.interaction)\n return;\n const { interaction, mediaResourceId } = currentTask.data;\n const { media, callProcessingDetails } = interaction;\n const isHold = media && media[mediaResourceId] && media[mediaResourceId].isHold;\n setIsHeld(isHold);\n if (callProcessingDetails) {\n const { isPaused } = callProcessingDetails;\n setIsRecording(!isPaused);\n }\n }, [currentTask]);\n const handletoggleHold = () => {\n toggleHold(!isHeld);\n setIsHeld(!isHeld);\n };\n const handleWrapupCall = () => {\n if (selectedWrapupReason && selectedWrapupId) {\n wrapupCall(selectedWrapupReason, selectedWrapupId);\n setSelectedWrapupReason(null);\n setSelectedWrapupId(null);\n }\n };\n const handleWrapupChange = (text, value) => {\n setSelectedWrapupReason(text);\n setSelectedWrapupId(value);\n };\n const handleAgentSelect = (agentId, agentName) => {\n if (agentMenuType === 'Consult') {\n consultCall(agentId, 'agent');\n setConsultAgentId(agentId);\n setConsultAgentName(agentName);\n }\n else {\n transferCall(agentId, 'agent');\n }\n };\n const buttons = [\n {\n id: 'hold',\n icon: isHeld ? 'play-bold' : 'pause-bold',\n onClick: () => handletoggleHold(),\n tooltip: isHeld ? 'Resume the call' : 'Hold the call',\n className: 'call-control-button',\n disabled: false,\n },\n {\n id: 'consult',\n icon: 'headset-bold',\n tooltip: 'Consult with another agent',\n className: 'call-control-button',\n disabled: false,\n menuType: 'Consult',\n },\n {\n id: 'transfer',\n icon: 'next-bold',\n tooltip: 'Transfer call',\n className: 'call-control-button',\n disabled: false,\n menuType: 'Transfer',\n },\n {\n id: 'record',\n icon: isRecording ? 'record-paused-bold' : 'record-bold',\n onClick: () => toggleRecording(),\n tooltip: isRecording ? 'Pause Recording' : 'Resume Recording',\n className: 'call-control-button',\n disabled: false,\n },\n {\n id: 'end',\n icon: 'cancel-regular',\n onClick: endCall,\n tooltip: 'End call',\n className: 'call-control-button-cancel',\n disabled: isHeld,\n },\n ];\n const filteredButtons = consultInitiated\n ? buttons.filter((button) => !['hold', 'consult'].includes(button.id))\n : buttons;\n if (!currentTask)\n return null;\n return (react_1.default.createElement(react_1.default.Fragment, null,\n react_1.default.createElement(\"audio\", { ref: (audioElement) => {\n if (audioElement && callControlAudio) {\n audioElement.srcObject = callControlAudio;\n }\n }, id: \"remote-audio\", autoPlay: true }),\n react_1.default.createElement(\"div\", { className: \"call-control-container\", \"data-testid\": \"call-control-container\" },\n !consultAccepted && !wrapupRequired && (react_1.default.createElement(\"div\", { className: \"button-group\" }, filteredButtons.map((button, index) => {\n if (button.menuType) {\n return (react_1.default.createElement(react_collaboration_1.PopoverNext, { key: index, onHide: () => {\n setShowAgentMenu(false);\n setAgentMenuType(null);\n }, color: \"primary\", delay: [0, 0], placement: \"bottom\", showArrow: true, variant: \"medium\", interactive: true, offsetDistance: 2, className: \"agent-popover\", trigger: \"click\", closeButtonPlacement: \"top-right\", closeButtonProps: {\n 'aria-label': 'Close popover',\n onPress: () => {\n setShowAgentMenu(false);\n setAgentMenuType(null);\n },\n outline: true,\n }, triggerComponent: react_1.default.createElement(react_collaboration_1.TooltipNext, { key: index, triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonCircle, { className: button.className, \"aria-label\": button.tooltip, disabled: button.disabled || consultInitiated, \"data-testid\": \"ButtonCircle\", onPress: () => {\n if (showAgentMenu && agentMenuType === button.menuType) {\n setShowAgentMenu(false);\n setAgentMenuType(null);\n }\n else {\n setAgentMenuType(button.menuType);\n setShowAgentMenu(true);\n loadBuddyAgents();\n }\n } },\n react_1.default.createElement(react_2.Icon, { className: button.className + '-icon', name: button.icon })), color: \"primary\", delay: [0, 0], placement: \"bottom-start\", type: \"description\", variant: \"small\", className: \"tooltip\" },\n react_1.default.createElement(\"p\", null, button.tooltip)) }, showAgentMenu && agentMenuType === button.menuType ? (react_1.default.createElement(consult_transfer_popover_1.default, { heading: button.menuType, buttonIcon: button.icon, buddyAgents: buddyAgents, onAgentSelect: handleAgentSelect })) : null));\n }\n return (react_1.default.createElement(react_collaboration_1.TooltipNext, { key: index, triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonCircle, { className: button.className, onPress: button.onClick, disabled: button.disabled || consultInitiated, \"aria-label\": button.tooltip },\n react_1.default.createElement(react_2.Icon, { className: button.className + '-icon', name: button.icon })), color: \"primary\", delay: [0, 0], placement: \"bottom-start\", type: \"description\", variant: \"small\", className: \"tooltip\" },\n react_1.default.createElement(\"p\", null, button.tooltip)));\n }))),\n wrapupRequired && (react_1.default.createElement(\"div\", { className: \"wrapup-group\" },\n react_1.default.createElement(react_collaboration_1.PopoverNext, { color: \"primary\", delay: [0, 0], placement: \"bottom-start\", showArrow: true, trigger: \"click\", triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonPill, { className: \"wrapup-button\" },\n \"Wrap up\",\n react_1.default.createElement(react_2.Icon, { name: \"arrow-down-bold\" })), variant: \"medium\", interactive: true, offsetDistance: 2, className: \"wrapup-popover\" },\n react_1.default.createElement(react_collaboration_1.Text, { className: \"wrapup-header\", tagName: 'small', type: \"body-large-bold\" }, \"Wrap-up Interaction\"),\n react_1.default.createElement(react_collaboration_1.Text, { className: \"wrapup-header\", tagName: 'small', type: \"body-secondary\" }, \"Wrap-up reason\"),\n react_1.default.createElement(react_collaboration_1.SelectNext, { \"aria-label\": \"wrapup-reason\", className: \"wrapup-select\", onSelectionChange: (key) => {\n const selectedItem = wrapupCodes === null || wrapupCodes === void 0 ? void 0 : wrapupCodes.find((code) => code.id === key);\n handleWrapupChange(selectedItem.name, selectedItem.id);\n }, items: wrapupCodes, showBorder: false, placeholder: \"Select\" }, (item) => (react_1.default.createElement(collections_1.Item, { key: item.id, textValue: item.name },\n react_1.default.createElement(react_collaboration_1.Text, { className: \"wrapup-name\", tagName: 'small' }, item.name)))),\n react_1.default.createElement(react_2.Icon, { className: \"wrapup-select-arrow-icon\", name: \"arrow-down-bold\", title: \"\" }),\n react_1.default.createElement(react_collaboration_1.ButtonPill, { className: \"submit-wrapup-button\", onPress: handleWrapupCall, disabled: selectedWrapupId && selectedWrapupReason ? false : true, \"aria-label\": \"Submit wrap-up\" }, \"Submit & Wrap up\")))),\n (consultAccepted || consultInitiated) && !wrapupRequired && (react_1.default.createElement(\"div\", { className: `call-control-consult-container ${consultAccepted ? 'no-border' : ''}` },\n react_1.default.createElement(call_control_consult_1.default, { agentName: consultAgentName, startTimeStamp: consultStartTimeStamp, endConsultCall: endConsultCall, onTransfer: () => consultTransfer(consultAgentId || currentTask.data.destAgentId, 'agent'), consultCompleted: consultCompleted, showTransfer: !consultAccepted }))))));\n}\nexports[\"default\"] = CallControlComponent;\n\n\n//# sourceURL=webpack://@webex/cc-components/./src/components/task/CallControl/call-control.tsx?");
|
|
2046
|
+
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst react_1 = __importStar(__webpack_require__(/*! react */ \"react\"));\n__webpack_require__(/*! ./call-control.styles.scss */ \"./src/components/task/CallControl/call-control.styles.scss\");\nconst react_collaboration_1 = __webpack_require__(/*! @momentum-ui/react-collaboration */ \"@momentum-ui/react-collaboration\");\nconst collections_1 = __webpack_require__(/*! @react-stately/collections */ \"../../../node_modules/@react-stately/collections/dist/main.js\");\nconst react_2 = __webpack_require__(/*! @momentum-design/components/dist/react */ \"../../../node_modules/@momentum-design/components/dist/react/index.js\");\nconst consult_transfer_popover_1 = __importDefault(__webpack_require__(/*! ./CallControlCustom/consult-transfer-popover */ \"./src/components/task/CallControl/CallControlCustom/consult-transfer-popover.tsx\"));\nconst call_control_consult_1 = __importDefault(__webpack_require__(/*! ./CallControlCustom/call-control-consult */ \"./src/components/task/CallControl/CallControlCustom/call-control-consult.tsx\"));\nfunction CallControlComponent(props) {\n const [selectedWrapupReason, setSelectedWrapupReason] = (0, react_1.useState)(null);\n const [selectedWrapupId, setSelectedWrapupId] = (0, react_1.useState)(null);\n const [showAgentMenu, setShowAgentMenu] = (0, react_1.useState)(false);\n const [agentMenuType, setAgentMenuType] = (0, react_1.useState)(null);\n const [lastTargetType, setLastTargetType] = (0, react_1.useState)('agent');\n const { currentTask, toggleHold, toggleRecording, endCall, wrapupCall, wrapupCodes, wrapupRequired, isHeld, setIsHeld, isRecording, setIsRecording, buddyAgents, loadBuddyAgents, queues, loadQueues, transferCall, consultCall, endConsultCall, consultTransfer, consultInitiated, consultCompleted, consultAccepted, consultStartTimeStamp, callControlAudio, consultAgentName, setConsultAgentName, consultAgentId, setConsultAgentId, isEndConsultEnabled, allowConsultToQueue, } = props;\n (0, react_1.useEffect)(() => {\n if (!currentTask || !currentTask.data || !currentTask.data.interaction)\n return;\n const { interaction, mediaResourceId } = currentTask.data;\n const { media, callProcessingDetails } = interaction;\n const isHold = media && media[mediaResourceId] && media[mediaResourceId].isHold;\n setIsHeld(isHold);\n if (callProcessingDetails) {\n const { isPaused } = callProcessingDetails;\n setIsRecording(!isPaused);\n }\n }, [currentTask]);\n const handletoggleHold = () => {\n toggleHold(!isHeld);\n setIsHeld(!isHeld);\n };\n const handleWrapupCall = () => {\n if (selectedWrapupReason && selectedWrapupId) {\n wrapupCall(selectedWrapupReason, selectedWrapupId);\n setSelectedWrapupReason(null);\n setSelectedWrapupId(null);\n }\n };\n const handleWrapupChange = (text, value) => {\n setSelectedWrapupReason(text);\n setSelectedWrapupId(value);\n };\n const handleTargetSelect = (id, name, type) => {\n if (agentMenuType === 'Consult') {\n try {\n consultCall(id, type);\n setConsultAgentId(id);\n setConsultAgentName(name);\n setLastTargetType(type);\n }\n catch (error) {\n throw new Error('Error during consult call', error);\n }\n }\n else if (agentMenuType === 'Transfer') {\n try {\n transferCall(id, type);\n }\n catch (error) {\n throw new Error('Error during transfer call', error);\n }\n }\n };\n const handlePopoverOpen = (menuType) => {\n if (showAgentMenu && agentMenuType === menuType) {\n setShowAgentMenu(false);\n setAgentMenuType(null);\n }\n else {\n setAgentMenuType(menuType);\n setShowAgentMenu(true);\n loadBuddyAgents();\n loadQueues();\n }\n };\n const buttons = [\n {\n id: 'hold',\n icon: isHeld ? 'play-bold' : 'pause-bold',\n onClick: () => handletoggleHold(),\n tooltip: isHeld ? 'Resume the call' : 'Hold the call',\n className: 'call-control-button',\n disabled: false,\n },\n {\n id: 'consult',\n icon: 'headset-bold',\n tooltip: 'Consult with another agent',\n className: 'call-control-button',\n disabled: false,\n menuType: 'Consult',\n },\n {\n id: 'transfer',\n icon: 'next-bold',\n tooltip: 'Transfer call',\n className: 'call-control-button',\n disabled: false,\n menuType: 'Transfer',\n },\n {\n id: 'record',\n icon: isRecording ? 'record-paused-bold' : 'record-bold',\n onClick: () => toggleRecording(),\n tooltip: isRecording ? 'Pause Recording' : 'Resume Recording',\n className: 'call-control-button',\n disabled: false,\n },\n {\n id: 'end',\n icon: 'cancel-regular',\n onClick: endCall,\n tooltip: 'End call',\n className: 'call-control-button-cancel',\n disabled: isHeld,\n },\n ];\n const filteredButtons = consultInitiated\n ? buttons.filter((button) => !['hold', 'consult'].includes(button.id))\n : buttons;\n if (!currentTask)\n return null;\n return (react_1.default.createElement(react_1.default.Fragment, null,\n react_1.default.createElement(\"audio\", { ref: (audioElement) => {\n if (audioElement && callControlAudio) {\n audioElement.srcObject = callControlAudio;\n }\n }, id: \"remote-audio\", autoPlay: true }),\n react_1.default.createElement(\"div\", { className: \"call-control-container\", \"data-testid\": \"call-control-container\" },\n !consultAccepted && !wrapupRequired && (react_1.default.createElement(\"div\", { className: \"button-group\" }, filteredButtons.map((button, index) => {\n if (button.menuType) {\n return (react_1.default.createElement(react_collaboration_1.PopoverNext, { key: index, onHide: () => {\n setShowAgentMenu(false);\n setAgentMenuType(null);\n }, color: \"primary\", delay: [0, 0], placement: \"bottom\", showArrow: true, variant: \"medium\", interactive: true, offsetDistance: 2, className: \"agent-popover\", trigger: \"click\", closeButtonPlacement: \"top-right\", closeButtonProps: {\n 'aria-label': 'Close popover',\n onPress: () => {\n setShowAgentMenu(false);\n setAgentMenuType(null);\n },\n outline: true,\n }, triggerComponent: react_1.default.createElement(react_collaboration_1.TooltipNext, { key: index, triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonCircle, { className: button.className, \"aria-label\": button.tooltip, disabled: button.disabled || consultInitiated, \"data-testid\": \"ButtonCircle\", onPress: () => handlePopoverOpen(button.menuType) },\n react_1.default.createElement(react_2.Icon, { className: button.className + '-icon', name: button.icon })), color: \"primary\", delay: [0, 0], placement: \"bottom-start\", type: \"description\", variant: \"small\", className: \"tooltip\" },\n react_1.default.createElement(\"p\", null, button.tooltip)) }, showAgentMenu && agentMenuType === button.menuType ? (react_1.default.createElement(consult_transfer_popover_1.default, { heading: button.menuType, buttonIcon: button.icon, buddyAgents: buddyAgents, queues: queues, onAgentSelect: (agentId, agentName) => handleTargetSelect(agentId, agentName, 'agent'), onQueueSelect: (queueId, queueName) => handleTargetSelect(queueId, queueName, 'queue'), allowConsultToQueue: allowConsultToQueue })) : null));\n }\n return (react_1.default.createElement(react_collaboration_1.TooltipNext, { key: index, triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonCircle, { className: button.className, onPress: button.onClick, disabled: button.disabled || consultInitiated, \"aria-label\": button.tooltip },\n react_1.default.createElement(react_2.Icon, { className: button.className + '-icon', name: button.icon })), color: \"primary\", delay: [0, 0], placement: \"bottom-start\", type: \"description\", variant: \"small\", className: \"tooltip\" },\n react_1.default.createElement(\"p\", null, button.tooltip)));\n }))),\n wrapupRequired && (react_1.default.createElement(\"div\", { className: \"wrapup-group\" },\n react_1.default.createElement(react_collaboration_1.PopoverNext, { color: \"primary\", delay: [0, 0], placement: \"bottom-start\", showArrow: true, trigger: \"click\", triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonPill, { className: \"wrapup-button\" },\n \"Wrap up\",\n react_1.default.createElement(react_2.Icon, { name: \"arrow-down-bold\" })), variant: \"medium\", interactive: true, offsetDistance: 2, className: \"wrapup-popover\" },\n react_1.default.createElement(react_collaboration_1.Text, { className: \"wrapup-header\", tagName: 'small', type: \"body-large-bold\" }, \"Wrap-up Interaction\"),\n react_1.default.createElement(react_collaboration_1.Text, { className: \"wrapup-header\", tagName: 'small', type: \"body-secondary\" }, \"Wrap-up reason\"),\n react_1.default.createElement(react_collaboration_1.SelectNext, { \"aria-label\": \"wrapup-reason\", className: \"wrapup-select\", onSelectionChange: (key) => {\n const selectedItem = wrapupCodes === null || wrapupCodes === void 0 ? void 0 : wrapupCodes.find((code) => code.id === key);\n handleWrapupChange(selectedItem.name, selectedItem.id);\n }, items: wrapupCodes, showBorder: false, placeholder: \"Select\" }, (item) => (react_1.default.createElement(collections_1.Item, { key: item.id, textValue: item.name },\n react_1.default.createElement(react_collaboration_1.Text, { className: \"wrapup-name\", tagName: 'small' }, item.name)))),\n react_1.default.createElement(react_2.Icon, { className: \"wrapup-select-arrow-icon\", name: \"arrow-down-bold\", title: \"\" }),\n react_1.default.createElement(react_collaboration_1.ButtonPill, { className: \"submit-wrapup-button\", onPress: handleWrapupCall, disabled: selectedWrapupId && selectedWrapupReason ? false : true, \"aria-label\": \"Submit wrap-up\" }, \"Submit & Wrap up\")))),\n (consultAccepted || consultInitiated) && !wrapupRequired && (react_1.default.createElement(\"div\", { className: `call-control-consult-container ${consultAccepted ? 'no-border' : ''}` },\n react_1.default.createElement(call_control_consult_1.default, { agentName: consultAgentName, startTimeStamp: consultStartTimeStamp, endConsultCall: endConsultCall, onTransfer: () => consultTransfer(consultAgentId || currentTask.data.destAgentId, lastTargetType), consultCompleted: consultCompleted, isAgentBeingConsulted: !consultAccepted, isEndConsultEnabled: isEndConsultEnabled }))))));\n}\nexports[\"default\"] = CallControlComponent;\n\n\n//# sourceURL=webpack://@webex/cc-components/./src/components/task/CallControl/call-control.tsx?");
|
|
2047
2047
|
|
|
2048
2048
|
/***/ }),
|
|
2049
2049
|
|
|
@@ -2117,10 +2117,10 @@ eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ?
|
|
|
2117
2117
|
/*!*******************************************!*\
|
|
2118
2118
|
!*** ./src/components/task/task.types.ts ***!
|
|
2119
2119
|
\*******************************************/
|
|
2120
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
2120
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
2121
2121
|
|
|
2122
2122
|
"use strict";
|
|
2123
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n\n\n//# sourceURL=webpack://@webex/cc-components/./src/components/task/task.types.ts?");
|
|
2123
|
+
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DestinationType = void 0;\nconst cc_store_1 = __webpack_require__(/*! @webex/cc-store */ \"@webex/cc-store\");\nObject.defineProperty(exports, \"DestinationType\", ({ enumerable: true, get: function () { return cc_store_1.DestinationType; } }));\n\n\n//# sourceURL=webpack://@webex/cc-components/./src/components/task/task.types.ts?");
|
|
2124
2124
|
|
|
2125
2125
|
/***/ }),
|
|
2126
2126
|
|
|
@@ -2157,6 +2157,17 @@ module.exports = require("@momentum-ui/react-collaboration");
|
|
|
2157
2157
|
|
|
2158
2158
|
/***/ }),
|
|
2159
2159
|
|
|
2160
|
+
/***/ "@webex/cc-store":
|
|
2161
|
+
/*!**********************************!*\
|
|
2162
|
+
!*** external "@webex/cc-store" ***!
|
|
2163
|
+
\**********************************/
|
|
2164
|
+
/***/ ((module) => {
|
|
2165
|
+
|
|
2166
|
+
"use strict";
|
|
2167
|
+
module.exports = require("@webex/cc-store");
|
|
2168
|
+
|
|
2169
|
+
/***/ }),
|
|
2170
|
+
|
|
2160
2171
|
/***/ "react":
|
|
2161
2172
|
/*!************************!*\
|
|
2162
2173
|
!*** external "react" ***!
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ILogger, ITask, IContactCenter, WrapupCodes, BuddyDetails, DestinationType } from '@webex/cc-store';
|
|
1
|
+
import { ILogger, ITask, IContactCenter, WrapupCodes, BuddyDetails, DestinationType, ContactServiceQueue } from '@webex/cc-store';
|
|
2
2
|
/**
|
|
3
3
|
* Interface representing the TaskProps of a user.
|
|
4
4
|
*/
|
|
@@ -225,8 +225,24 @@ export interface ControlProps {
|
|
|
225
225
|
* Time since the task is in held state
|
|
226
226
|
*/
|
|
227
227
|
holdTime: number;
|
|
228
|
+
/**
|
|
229
|
+
* List of contact queues available for consult
|
|
230
|
+
*/
|
|
231
|
+
queues: ContactServiceQueue[];
|
|
232
|
+
/**
|
|
233
|
+
* Function to load contact service queues
|
|
234
|
+
*/
|
|
235
|
+
loadQueues: () => Promise<void>;
|
|
236
|
+
/**
|
|
237
|
+
* Flag to determine if the end consult button is enabled
|
|
238
|
+
*/
|
|
239
|
+
isEndConsultEnabled: boolean;
|
|
240
|
+
/**
|
|
241
|
+
* Flag to determine if the consulting to queue is enabled for the agent
|
|
242
|
+
*/
|
|
243
|
+
allowConsultToQueue: boolean;
|
|
228
244
|
}
|
|
229
|
-
export type CallControlComponentProps = Pick<ControlProps, 'currentTask' | 'wrapupCodes' | 'wrapupRequired' | 'toggleHold' | 'toggleRecording' | 'endCall' | 'wrapupCall' | 'isHeld' | 'setIsHeld' | 'isRecording' | 'setIsRecording' | 'buddyAgents' | 'loadBuddyAgents' | 'transferCall' | 'consultCall' | 'endConsultCall' | 'consultInitiated' | 'consultTransfer' | 'consultCompleted' | 'consultAccepted' | 'consultStartTimeStamp' | 'callControlAudio' | 'consultAgentName' | 'setConsultAgentName' | 'consultAgentId' | 'setConsultAgentId' | 'holdTime'>;
|
|
245
|
+
export type CallControlComponentProps = Pick<ControlProps, 'currentTask' | 'wrapupCodes' | 'wrapupRequired' | 'toggleHold' | 'toggleRecording' | 'endCall' | 'wrapupCall' | 'isHeld' | 'setIsHeld' | 'isRecording' | 'setIsRecording' | 'buddyAgents' | 'loadBuddyAgents' | 'transferCall' | 'consultCall' | 'endConsultCall' | 'consultInitiated' | 'consultTransfer' | 'consultCompleted' | 'consultAccepted' | 'consultStartTimeStamp' | 'callControlAudio' | 'consultAgentName' | 'setConsultAgentName' | 'consultAgentId' | 'setConsultAgentId' | 'holdTime' | 'queues' | 'loadQueues' | 'isEndConsultEnabled' | 'allowConsultToQueue'>;
|
|
230
246
|
/**
|
|
231
247
|
* Interface representing the properties for OutdialCall component.
|
|
232
248
|
*/
|
|
@@ -261,12 +277,11 @@ export interface ConsultTransferListComponentProps {
|
|
|
261
277
|
export interface ConsultTransferPopoverComponentProps {
|
|
262
278
|
heading: string;
|
|
263
279
|
buttonIcon: string;
|
|
264
|
-
buddyAgents:
|
|
265
|
-
|
|
266
|
-
agentName: string;
|
|
267
|
-
dn: string;
|
|
268
|
-
}>;
|
|
280
|
+
buddyAgents: BuddyDetails[];
|
|
281
|
+
queues?: ContactServiceQueue[];
|
|
269
282
|
onAgentSelect: (agentId: string, agentName: string) => void;
|
|
283
|
+
onQueueSelect: (queueId: string, queueName: string) => void;
|
|
284
|
+
allowConsultToQueue: boolean;
|
|
270
285
|
}
|
|
271
286
|
/**
|
|
272
287
|
* Interface representing the properties for CallControlConsultComponents component.
|
|
@@ -277,5 +292,11 @@ export interface CallControlConsultComponentsProps {
|
|
|
277
292
|
onTransfer?: () => void;
|
|
278
293
|
endConsultCall: () => void;
|
|
279
294
|
consultCompleted: boolean;
|
|
280
|
-
|
|
295
|
+
isAgentBeingConsulted: boolean;
|
|
296
|
+
isEndConsultEnabled: boolean;
|
|
281
297
|
}
|
|
298
|
+
/**
|
|
299
|
+
* Type representing the possible menu types in call control.
|
|
300
|
+
*/
|
|
301
|
+
export type CallControlMenuType = 'Consult' | 'Transfer';
|
|
302
|
+
export { DestinationType };
|
package/dist/wc.js
CHANGED
|
@@ -1977,7 +1977,7 @@ eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
1977
1977
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
1978
1978
|
|
|
1979
1979
|
"use strict";
|
|
1980
|
-
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst react_1 = __importDefault(__webpack_require__(/*! react */ \"react\"));\nconst react_collaboration_1 = __webpack_require__(/*! @momentum-ui/react-collaboration */ \"@momentum-ui/react-collaboration\");\nconst react_2 = __webpack_require__(/*! @momentum-design/components/dist/react */ \"../../../node_modules/@momentum-design/components/dist/react/index.js\");\nconst TaskTimer_1 = __importDefault(__webpack_require__(/*! ../../TaskTimer */ \"./src/components/task/TaskTimer/index.tsx\"));\nconst CallControlConsultComponent = ({ agentName, startTimeStamp, onTransfer, endConsultCall, consultCompleted,
|
|
1980
|
+
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst react_1 = __importDefault(__webpack_require__(/*! react */ \"react\"));\nconst react_collaboration_1 = __webpack_require__(/*! @momentum-ui/react-collaboration */ \"@momentum-ui/react-collaboration\");\nconst react_2 = __webpack_require__(/*! @momentum-design/components/dist/react */ \"../../../node_modules/@momentum-design/components/dist/react/index.js\");\nconst TaskTimer_1 = __importDefault(__webpack_require__(/*! ../../TaskTimer */ \"./src/components/task/TaskTimer/index.tsx\"));\nconst CallControlConsultComponent = ({ agentName, startTimeStamp, onTransfer, endConsultCall, consultCompleted, isAgentBeingConsulted, isEndConsultEnabled, }) => {\n const timerKey = `timer-${startTimeStamp}`;\n const handleTransfer = () => {\n try {\n if (onTransfer) {\n onTransfer();\n }\n }\n catch (error) {\n throw new Error('Error transferring call:', error);\n }\n };\n const handleEndConsult = () => {\n try {\n endConsultCall();\n }\n catch (error) {\n throw new Error('Error ending consult call:', error);\n }\n };\n const buttons = [\n {\n key: 'transfer',\n icon: 'next-bold',\n tooltip: 'Transfer Consult',\n onClick: handleTransfer,\n className: 'call-control-button',\n disabled: !consultCompleted,\n shouldShow: isAgentBeingConsulted && !!onTransfer,\n },\n {\n key: 'cancel',\n icon: 'headset-muted-bold',\n tooltip: 'End Consult',\n onClick: handleEndConsult,\n className: 'call-control-consult-button-cancel',\n shouldShow: isEndConsultEnabled || isAgentBeingConsulted,\n },\n ];\n // Filter buttons that should be shown, then map them\n const visibleButtons = buttons.filter((button) => button.shouldShow);\n return (react_1.default.createElement(\"div\", { className: \"call-control-consult\" },\n react_1.default.createElement(\"div\", { className: \"consult-header\" },\n react_1.default.createElement(react_2.Avatar, { iconName: \"handset-filled\", className: \"task-avatar\", size: 32 }),\n react_1.default.createElement(\"div\", null,\n react_1.default.createElement(react_collaboration_1.Text, { tagName: \"p\", type: \"body-large-bold\", className: \"consult-agent-name\" }, agentName),\n react_1.default.createElement(react_collaboration_1.Text, { tagName: \"p\", type: \"body-secondary\", className: \"consult-sub-text\" },\n consultCompleted ? 'Consulting' : 'Consult requested',\n \"\\u00A0\\u2022\\u00A0\",\n react_1.default.createElement(TaskTimer_1.default, { key: timerKey, startTimeStamp: startTimeStamp })))),\n react_1.default.createElement(\"div\", { className: \"consult-buttons consult-buttons-container\" }, visibleButtons.map((button) => (react_1.default.createElement(react_collaboration_1.TooltipNext, { key: button.key, triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonCircle, { className: button.className, onPress: button.onClick, disabled: button.disabled, \"data-testid\": `${button.key}-consult-btn` },\n react_1.default.createElement(react_2.Icon, { className: `${button.className}-icon`, name: button.icon })), color: \"primary\", delay: [0, 0], placement: \"bottom-start\", type: \"description\", variant: \"small\", className: \"tooltip\" },\n react_1.default.createElement(\"p\", null, button.tooltip)))))));\n};\nexports[\"default\"] = CallControlConsultComponent;\n\n\n//# sourceURL=webpack://@webex/cc-components/./src/components/task/CallControl/CallControlCustom/call-control-consult.tsx?");
|
|
1981
1981
|
|
|
1982
1982
|
/***/ }),
|
|
1983
1983
|
|
|
@@ -1999,7 +1999,7 @@ eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
1999
1999
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
2000
2000
|
|
|
2001
2001
|
"use strict";
|
|
2002
|
-
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst react_1 = __importStar(__webpack_require__(/*! react */ \"react\"));\nconst react_collaboration_1 = __webpack_require__(/*! @momentum-ui/react-collaboration */ \"@momentum-ui/react-collaboration\");\nconst consult_transfer_list_item_1 = __importDefault(__webpack_require__(/*! ./consult-transfer-list-item */ \"./src/components/task/CallControl/CallControlCustom/consult-transfer-list-item.tsx\"));\nconst ConsultTransferPopoverComponent = ({ heading, buttonIcon, buddyAgents, onAgentSelect, }) => {\n const [selectedTab, setSelectedTab] = (0, react_1.useState)('Agents');\n const filteredAgents = buddyAgents;\n return (react_1.default.createElement(\"div\", { className: \"agent-popover-content\" },\n react_1.default.createElement(react_collaboration_1.Text, { tagName: \"h3\", className: \"agent-popover-title\", type: \"body-large-bold\", style: { margin: '0 0 0 0' } }, heading),\n react_1.default.createElement(react_collaboration_1.TabListNext, { \"aria-label\": \"Tabs\", className: \"agent-tablist\", hasBackground: false, style: { marginTop: '0' }, onTabSelection: (key) => setSelectedTab(key) },\n react_1.default.createElement(react_collaboration_1.TabNext, { key: \"Agents\", className: \"agent-tab\", active: selectedTab === 'Agents' }, \"Agents\")
|
|
2002
|
+
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst react_1 = __importStar(__webpack_require__(/*! react */ \"react\"));\nconst react_collaboration_1 = __webpack_require__(/*! @momentum-ui/react-collaboration */ \"@momentum-ui/react-collaboration\");\nconst consult_transfer_list_item_1 = __importDefault(__webpack_require__(/*! ./consult-transfer-list-item */ \"./src/components/task/CallControl/CallControlCustom/consult-transfer-list-item.tsx\"));\nconst ConsultTransferPopoverComponent = ({ heading, buttonIcon, buddyAgents, queues, onAgentSelect, onQueueSelect, allowConsultToQueue, }) => {\n const [selectedTab, setSelectedTab] = (0, react_1.useState)('Agents');\n const filteredAgents = buddyAgents;\n const filteredQueues = queues;\n const renderList = (items, getKey, getTitle, handleSelect) => (react_1.default.createElement(react_collaboration_1.ListNext, { listSize: items.length, className: \"agent-list\" },\n items.map((item) => (react_1.default.createElement(\"div\", { key: getKey(item), onMouseDown: (e) => e.stopPropagation(), style: { cursor: 'pointer', pointerEvents: 'auto' } },\n react_1.default.createElement(consult_transfer_list_item_1.default, { title: getTitle(item), buttonIcon: buttonIcon, onButtonPress: () => handleSelect(getKey(item), getTitle(item)) })))),\n items.length === 0 && (react_1.default.createElement(react_collaboration_1.Text, { tagName: \"small\", type: \"body-secondary\" },\n \"No \",\n selectedTab.toLowerCase(),\n \" found\"))));\n return (react_1.default.createElement(\"div\", { className: \"agent-popover-content\" },\n react_1.default.createElement(react_collaboration_1.Text, { tagName: \"h3\", className: \"agent-popover-title\", type: \"body-large-bold\", style: { margin: '0 0 0 0' } }, heading),\n react_1.default.createElement(react_collaboration_1.TabListNext, { \"aria-label\": \"Tabs\", className: \"agent-tablist\", hasBackground: false, style: { marginTop: '0' }, onTabSelection: (key) => setSelectedTab(key) },\n react_1.default.createElement(react_collaboration_1.TabNext, { key: \"Agents\", className: \"agent-tab\", active: selectedTab === 'Agents' }, \"Agents\"),\n react_1.default.createElement(react_collaboration_1.TabNext, { key: \"Queues\", className: \"queue-tab\", active: selectedTab === 'Queues', disabled: !allowConsultToQueue, style: !allowConsultToQueue ? { display: 'none' } : undefined }, \"Queues\")),\n selectedTab === 'Agents' &&\n renderList(filteredAgents, (agent) => agent.agentId, (agent) => agent.agentName, onAgentSelect),\n selectedTab === 'Queues' &&\n allowConsultToQueue &&\n renderList(filteredQueues, (queue) => queue.id, (queue) => queue.name, onQueueSelect || (() => { }))));\n};\nexports[\"default\"] = ConsultTransferPopoverComponent;\n\n\n//# sourceURL=webpack://@webex/cc-components/./src/components/task/CallControl/CallControlCustom/consult-transfer-popover.tsx?");
|
|
2003
2003
|
|
|
2004
2004
|
/***/ }),
|
|
2005
2005
|
|
|
@@ -2010,7 +2010,7 @@ eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ?
|
|
|
2010
2010
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
2011
2011
|
|
|
2012
2012
|
"use strict";
|
|
2013
|
-
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst react_1 = __importStar(__webpack_require__(/*! react */ \"react\"));\n__webpack_require__(/*! ./call-control.styles.scss */ \"./src/components/task/CallControl/call-control.styles.scss\");\nconst react_collaboration_1 = __webpack_require__(/*! @momentum-ui/react-collaboration */ \"@momentum-ui/react-collaboration\");\nconst collections_1 = __webpack_require__(/*! @react-stately/collections */ \"../../../node_modules/@react-stately/collections/dist/main.js\");\nconst react_2 = __webpack_require__(/*! @momentum-design/components/dist/react */ \"../../../node_modules/@momentum-design/components/dist/react/index.js\");\nconst consult_transfer_popover_1 = __importDefault(__webpack_require__(/*! ./CallControlCustom/consult-transfer-popover */ \"./src/components/task/CallControl/CallControlCustom/consult-transfer-popover.tsx\"));\nconst call_control_consult_1 = __importDefault(__webpack_require__(/*! ./CallControlCustom/call-control-consult */ \"./src/components/task/CallControl/CallControlCustom/call-control-consult.tsx\"));\nfunction CallControlComponent(props) {\n const [selectedWrapupReason, setSelectedWrapupReason] = (0, react_1.useState)(null);\n const [selectedWrapupId, setSelectedWrapupId] = (0, react_1.useState)(null);\n const [showAgentMenu, setShowAgentMenu] = (0, react_1.useState)(false);\n const [agentMenuType, setAgentMenuType] = (0, react_1.useState)(null);\n const { currentTask, toggleHold, toggleRecording, endCall, wrapupCall, wrapupCodes, wrapupRequired, isHeld, setIsHeld, isRecording, setIsRecording, buddyAgents, loadBuddyAgents, transferCall, consultCall, endConsultCall, consultTransfer, consultInitiated, consultCompleted, consultAccepted, consultStartTimeStamp, callControlAudio, consultAgentName, setConsultAgentName, consultAgentId, setConsultAgentId, } = props;\n (0, react_1.useEffect)(() => {\n if (!currentTask || !currentTask.data || !currentTask.data.interaction)\n return;\n const { interaction, mediaResourceId } = currentTask.data;\n const { media, callProcessingDetails } = interaction;\n const isHold = media && media[mediaResourceId] && media[mediaResourceId].isHold;\n setIsHeld(isHold);\n if (callProcessingDetails) {\n const { isPaused } = callProcessingDetails;\n setIsRecording(!isPaused);\n }\n }, [currentTask]);\n const handletoggleHold = () => {\n toggleHold(!isHeld);\n setIsHeld(!isHeld);\n };\n const handleWrapupCall = () => {\n if (selectedWrapupReason && selectedWrapupId) {\n wrapupCall(selectedWrapupReason, selectedWrapupId);\n setSelectedWrapupReason(null);\n setSelectedWrapupId(null);\n }\n };\n const handleWrapupChange = (text, value) => {\n setSelectedWrapupReason(text);\n setSelectedWrapupId(value);\n };\n const handleAgentSelect = (agentId, agentName) => {\n if (agentMenuType === 'Consult') {\n consultCall(agentId, 'agent');\n setConsultAgentId(agentId);\n setConsultAgentName(agentName);\n }\n else {\n transferCall(agentId, 'agent');\n }\n };\n const buttons = [\n {\n id: 'hold',\n icon: isHeld ? 'play-bold' : 'pause-bold',\n onClick: () => handletoggleHold(),\n tooltip: isHeld ? 'Resume the call' : 'Hold the call',\n className: 'call-control-button',\n disabled: false,\n },\n {\n id: 'consult',\n icon: 'headset-bold',\n tooltip: 'Consult with another agent',\n className: 'call-control-button',\n disabled: false,\n menuType: 'Consult',\n },\n {\n id: 'transfer',\n icon: 'next-bold',\n tooltip: 'Transfer call',\n className: 'call-control-button',\n disabled: false,\n menuType: 'Transfer',\n },\n {\n id: 'record',\n icon: isRecording ? 'record-paused-bold' : 'record-bold',\n onClick: () => toggleRecording(),\n tooltip: isRecording ? 'Pause Recording' : 'Resume Recording',\n className: 'call-control-button',\n disabled: false,\n },\n {\n id: 'end',\n icon: 'cancel-regular',\n onClick: endCall,\n tooltip: 'End call',\n className: 'call-control-button-cancel',\n disabled: isHeld,\n },\n ];\n const filteredButtons = consultInitiated\n ? buttons.filter((button) => !['hold', 'consult'].includes(button.id))\n : buttons;\n if (!currentTask)\n return null;\n return (react_1.default.createElement(react_1.default.Fragment, null,\n react_1.default.createElement(\"audio\", { ref: (audioElement) => {\n if (audioElement && callControlAudio) {\n audioElement.srcObject = callControlAudio;\n }\n }, id: \"remote-audio\", autoPlay: true }),\n react_1.default.createElement(\"div\", { className: \"call-control-container\", \"data-testid\": \"call-control-container\" },\n !consultAccepted && !wrapupRequired && (react_1.default.createElement(\"div\", { className: \"button-group\" }, filteredButtons.map((button, index) => {\n if (button.menuType) {\n return (react_1.default.createElement(react_collaboration_1.PopoverNext, { key: index, onHide: () => {\n setShowAgentMenu(false);\n setAgentMenuType(null);\n }, color: \"primary\", delay: [0, 0], placement: \"bottom\", showArrow: true, variant: \"medium\", interactive: true, offsetDistance: 2, className: \"agent-popover\", trigger: \"click\", closeButtonPlacement: \"top-right\", closeButtonProps: {\n 'aria-label': 'Close popover',\n onPress: () => {\n setShowAgentMenu(false);\n setAgentMenuType(null);\n },\n outline: true,\n }, triggerComponent: react_1.default.createElement(react_collaboration_1.TooltipNext, { key: index, triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonCircle, { className: button.className, \"aria-label\": button.tooltip, disabled: button.disabled || consultInitiated, \"data-testid\": \"ButtonCircle\", onPress: () => {\n if (showAgentMenu && agentMenuType === button.menuType) {\n setShowAgentMenu(false);\n setAgentMenuType(null);\n }\n else {\n setAgentMenuType(button.menuType);\n setShowAgentMenu(true);\n loadBuddyAgents();\n }\n } },\n react_1.default.createElement(react_2.Icon, { className: button.className + '-icon', name: button.icon })), color: \"primary\", delay: [0, 0], placement: \"bottom-start\", type: \"description\", variant: \"small\", className: \"tooltip\" },\n react_1.default.createElement(\"p\", null, button.tooltip)) }, showAgentMenu && agentMenuType === button.menuType ? (react_1.default.createElement(consult_transfer_popover_1.default, { heading: button.menuType, buttonIcon: button.icon, buddyAgents: buddyAgents, onAgentSelect: handleAgentSelect })) : null));\n }\n return (react_1.default.createElement(react_collaboration_1.TooltipNext, { key: index, triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonCircle, { className: button.className, onPress: button.onClick, disabled: button.disabled || consultInitiated, \"aria-label\": button.tooltip },\n react_1.default.createElement(react_2.Icon, { className: button.className + '-icon', name: button.icon })), color: \"primary\", delay: [0, 0], placement: \"bottom-start\", type: \"description\", variant: \"small\", className: \"tooltip\" },\n react_1.default.createElement(\"p\", null, button.tooltip)));\n }))),\n wrapupRequired && (react_1.default.createElement(\"div\", { className: \"wrapup-group\" },\n react_1.default.createElement(react_collaboration_1.PopoverNext, { color: \"primary\", delay: [0, 0], placement: \"bottom-start\", showArrow: true, trigger: \"click\", triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonPill, { className: \"wrapup-button\" },\n \"Wrap up\",\n react_1.default.createElement(react_2.Icon, { name: \"arrow-down-bold\" })), variant: \"medium\", interactive: true, offsetDistance: 2, className: \"wrapup-popover\" },\n react_1.default.createElement(react_collaboration_1.Text, { className: \"wrapup-header\", tagName: 'small', type: \"body-large-bold\" }, \"Wrap-up Interaction\"),\n react_1.default.createElement(react_collaboration_1.Text, { className: \"wrapup-header\", tagName: 'small', type: \"body-secondary\" }, \"Wrap-up reason\"),\n react_1.default.createElement(react_collaboration_1.SelectNext, { \"aria-label\": \"wrapup-reason\", className: \"wrapup-select\", onSelectionChange: (key) => {\n const selectedItem = wrapupCodes === null || wrapupCodes === void 0 ? void 0 : wrapupCodes.find((code) => code.id === key);\n handleWrapupChange(selectedItem.name, selectedItem.id);\n }, items: wrapupCodes, showBorder: false, placeholder: \"Select\" }, (item) => (react_1.default.createElement(collections_1.Item, { key: item.id, textValue: item.name },\n react_1.default.createElement(react_collaboration_1.Text, { className: \"wrapup-name\", tagName: 'small' }, item.name)))),\n react_1.default.createElement(react_2.Icon, { className: \"wrapup-select-arrow-icon\", name: \"arrow-down-bold\", title: \"\" }),\n react_1.default.createElement(react_collaboration_1.ButtonPill, { className: \"submit-wrapup-button\", onPress: handleWrapupCall, disabled: selectedWrapupId && selectedWrapupReason ? false : true, \"aria-label\": \"Submit wrap-up\" }, \"Submit & Wrap up\")))),\n (consultAccepted || consultInitiated) && !wrapupRequired && (react_1.default.createElement(\"div\", { className: `call-control-consult-container ${consultAccepted ? 'no-border' : ''}` },\n react_1.default.createElement(call_control_consult_1.default, { agentName: consultAgentName, startTimeStamp: consultStartTimeStamp, endConsultCall: endConsultCall, onTransfer: () => consultTransfer(consultAgentId || currentTask.data.destAgentId, 'agent'), consultCompleted: consultCompleted, showTransfer: !consultAccepted }))))));\n}\nexports[\"default\"] = CallControlComponent;\n\n\n//# sourceURL=webpack://@webex/cc-components/./src/components/task/CallControl/call-control.tsx?");
|
|
2013
|
+
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst react_1 = __importStar(__webpack_require__(/*! react */ \"react\"));\n__webpack_require__(/*! ./call-control.styles.scss */ \"./src/components/task/CallControl/call-control.styles.scss\");\nconst react_collaboration_1 = __webpack_require__(/*! @momentum-ui/react-collaboration */ \"@momentum-ui/react-collaboration\");\nconst collections_1 = __webpack_require__(/*! @react-stately/collections */ \"../../../node_modules/@react-stately/collections/dist/main.js\");\nconst react_2 = __webpack_require__(/*! @momentum-design/components/dist/react */ \"../../../node_modules/@momentum-design/components/dist/react/index.js\");\nconst consult_transfer_popover_1 = __importDefault(__webpack_require__(/*! ./CallControlCustom/consult-transfer-popover */ \"./src/components/task/CallControl/CallControlCustom/consult-transfer-popover.tsx\"));\nconst call_control_consult_1 = __importDefault(__webpack_require__(/*! ./CallControlCustom/call-control-consult */ \"./src/components/task/CallControl/CallControlCustom/call-control-consult.tsx\"));\nfunction CallControlComponent(props) {\n const [selectedWrapupReason, setSelectedWrapupReason] = (0, react_1.useState)(null);\n const [selectedWrapupId, setSelectedWrapupId] = (0, react_1.useState)(null);\n const [showAgentMenu, setShowAgentMenu] = (0, react_1.useState)(false);\n const [agentMenuType, setAgentMenuType] = (0, react_1.useState)(null);\n const [lastTargetType, setLastTargetType] = (0, react_1.useState)('agent');\n const { currentTask, toggleHold, toggleRecording, endCall, wrapupCall, wrapupCodes, wrapupRequired, isHeld, setIsHeld, isRecording, setIsRecording, buddyAgents, loadBuddyAgents, queues, loadQueues, transferCall, consultCall, endConsultCall, consultTransfer, consultInitiated, consultCompleted, consultAccepted, consultStartTimeStamp, callControlAudio, consultAgentName, setConsultAgentName, consultAgentId, setConsultAgentId, isEndConsultEnabled, allowConsultToQueue, } = props;\n (0, react_1.useEffect)(() => {\n if (!currentTask || !currentTask.data || !currentTask.data.interaction)\n return;\n const { interaction, mediaResourceId } = currentTask.data;\n const { media, callProcessingDetails } = interaction;\n const isHold = media && media[mediaResourceId] && media[mediaResourceId].isHold;\n setIsHeld(isHold);\n if (callProcessingDetails) {\n const { isPaused } = callProcessingDetails;\n setIsRecording(!isPaused);\n }\n }, [currentTask]);\n const handletoggleHold = () => {\n toggleHold(!isHeld);\n setIsHeld(!isHeld);\n };\n const handleWrapupCall = () => {\n if (selectedWrapupReason && selectedWrapupId) {\n wrapupCall(selectedWrapupReason, selectedWrapupId);\n setSelectedWrapupReason(null);\n setSelectedWrapupId(null);\n }\n };\n const handleWrapupChange = (text, value) => {\n setSelectedWrapupReason(text);\n setSelectedWrapupId(value);\n };\n const handleTargetSelect = (id, name, type) => {\n if (agentMenuType === 'Consult') {\n try {\n consultCall(id, type);\n setConsultAgentId(id);\n setConsultAgentName(name);\n setLastTargetType(type);\n }\n catch (error) {\n throw new Error('Error during consult call', error);\n }\n }\n else if (agentMenuType === 'Transfer') {\n try {\n transferCall(id, type);\n }\n catch (error) {\n throw new Error('Error during transfer call', error);\n }\n }\n };\n const handlePopoverOpen = (menuType) => {\n if (showAgentMenu && agentMenuType === menuType) {\n setShowAgentMenu(false);\n setAgentMenuType(null);\n }\n else {\n setAgentMenuType(menuType);\n setShowAgentMenu(true);\n loadBuddyAgents();\n loadQueues();\n }\n };\n const buttons = [\n {\n id: 'hold',\n icon: isHeld ? 'play-bold' : 'pause-bold',\n onClick: () => handletoggleHold(),\n tooltip: isHeld ? 'Resume the call' : 'Hold the call',\n className: 'call-control-button',\n disabled: false,\n },\n {\n id: 'consult',\n icon: 'headset-bold',\n tooltip: 'Consult with another agent',\n className: 'call-control-button',\n disabled: false,\n menuType: 'Consult',\n },\n {\n id: 'transfer',\n icon: 'next-bold',\n tooltip: 'Transfer call',\n className: 'call-control-button',\n disabled: false,\n menuType: 'Transfer',\n },\n {\n id: 'record',\n icon: isRecording ? 'record-paused-bold' : 'record-bold',\n onClick: () => toggleRecording(),\n tooltip: isRecording ? 'Pause Recording' : 'Resume Recording',\n className: 'call-control-button',\n disabled: false,\n },\n {\n id: 'end',\n icon: 'cancel-regular',\n onClick: endCall,\n tooltip: 'End call',\n className: 'call-control-button-cancel',\n disabled: isHeld,\n },\n ];\n const filteredButtons = consultInitiated\n ? buttons.filter((button) => !['hold', 'consult'].includes(button.id))\n : buttons;\n if (!currentTask)\n return null;\n return (react_1.default.createElement(react_1.default.Fragment, null,\n react_1.default.createElement(\"audio\", { ref: (audioElement) => {\n if (audioElement && callControlAudio) {\n audioElement.srcObject = callControlAudio;\n }\n }, id: \"remote-audio\", autoPlay: true }),\n react_1.default.createElement(\"div\", { className: \"call-control-container\", \"data-testid\": \"call-control-container\" },\n !consultAccepted && !wrapupRequired && (react_1.default.createElement(\"div\", { className: \"button-group\" }, filteredButtons.map((button, index) => {\n if (button.menuType) {\n return (react_1.default.createElement(react_collaboration_1.PopoverNext, { key: index, onHide: () => {\n setShowAgentMenu(false);\n setAgentMenuType(null);\n }, color: \"primary\", delay: [0, 0], placement: \"bottom\", showArrow: true, variant: \"medium\", interactive: true, offsetDistance: 2, className: \"agent-popover\", trigger: \"click\", closeButtonPlacement: \"top-right\", closeButtonProps: {\n 'aria-label': 'Close popover',\n onPress: () => {\n setShowAgentMenu(false);\n setAgentMenuType(null);\n },\n outline: true,\n }, triggerComponent: react_1.default.createElement(react_collaboration_1.TooltipNext, { key: index, triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonCircle, { className: button.className, \"aria-label\": button.tooltip, disabled: button.disabled || consultInitiated, \"data-testid\": \"ButtonCircle\", onPress: () => handlePopoverOpen(button.menuType) },\n react_1.default.createElement(react_2.Icon, { className: button.className + '-icon', name: button.icon })), color: \"primary\", delay: [0, 0], placement: \"bottom-start\", type: \"description\", variant: \"small\", className: \"tooltip\" },\n react_1.default.createElement(\"p\", null, button.tooltip)) }, showAgentMenu && agentMenuType === button.menuType ? (react_1.default.createElement(consult_transfer_popover_1.default, { heading: button.menuType, buttonIcon: button.icon, buddyAgents: buddyAgents, queues: queues, onAgentSelect: (agentId, agentName) => handleTargetSelect(agentId, agentName, 'agent'), onQueueSelect: (queueId, queueName) => handleTargetSelect(queueId, queueName, 'queue'), allowConsultToQueue: allowConsultToQueue })) : null));\n }\n return (react_1.default.createElement(react_collaboration_1.TooltipNext, { key: index, triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonCircle, { className: button.className, onPress: button.onClick, disabled: button.disabled || consultInitiated, \"aria-label\": button.tooltip },\n react_1.default.createElement(react_2.Icon, { className: button.className + '-icon', name: button.icon })), color: \"primary\", delay: [0, 0], placement: \"bottom-start\", type: \"description\", variant: \"small\", className: \"tooltip\" },\n react_1.default.createElement(\"p\", null, button.tooltip)));\n }))),\n wrapupRequired && (react_1.default.createElement(\"div\", { className: \"wrapup-group\" },\n react_1.default.createElement(react_collaboration_1.PopoverNext, { color: \"primary\", delay: [0, 0], placement: \"bottom-start\", showArrow: true, trigger: \"click\", triggerComponent: react_1.default.createElement(react_collaboration_1.ButtonPill, { className: \"wrapup-button\" },\n \"Wrap up\",\n react_1.default.createElement(react_2.Icon, { name: \"arrow-down-bold\" })), variant: \"medium\", interactive: true, offsetDistance: 2, className: \"wrapup-popover\" },\n react_1.default.createElement(react_collaboration_1.Text, { className: \"wrapup-header\", tagName: 'small', type: \"body-large-bold\" }, \"Wrap-up Interaction\"),\n react_1.default.createElement(react_collaboration_1.Text, { className: \"wrapup-header\", tagName: 'small', type: \"body-secondary\" }, \"Wrap-up reason\"),\n react_1.default.createElement(react_collaboration_1.SelectNext, { \"aria-label\": \"wrapup-reason\", className: \"wrapup-select\", onSelectionChange: (key) => {\n const selectedItem = wrapupCodes === null || wrapupCodes === void 0 ? void 0 : wrapupCodes.find((code) => code.id === key);\n handleWrapupChange(selectedItem.name, selectedItem.id);\n }, items: wrapupCodes, showBorder: false, placeholder: \"Select\" }, (item) => (react_1.default.createElement(collections_1.Item, { key: item.id, textValue: item.name },\n react_1.default.createElement(react_collaboration_1.Text, { className: \"wrapup-name\", tagName: 'small' }, item.name)))),\n react_1.default.createElement(react_2.Icon, { className: \"wrapup-select-arrow-icon\", name: \"arrow-down-bold\", title: \"\" }),\n react_1.default.createElement(react_collaboration_1.ButtonPill, { className: \"submit-wrapup-button\", onPress: handleWrapupCall, disabled: selectedWrapupId && selectedWrapupReason ? false : true, \"aria-label\": \"Submit wrap-up\" }, \"Submit & Wrap up\")))),\n (consultAccepted || consultInitiated) && !wrapupRequired && (react_1.default.createElement(\"div\", { className: `call-control-consult-container ${consultAccepted ? 'no-border' : ''}` },\n react_1.default.createElement(call_control_consult_1.default, { agentName: consultAgentName, startTimeStamp: consultStartTimeStamp, endConsultCall: endConsultCall, onTransfer: () => consultTransfer(consultAgentId || currentTask.data.destAgentId, lastTargetType), consultCompleted: consultCompleted, isAgentBeingConsulted: !consultAccepted, isEndConsultEnabled: isEndConsultEnabled }))))));\n}\nexports[\"default\"] = CallControlComponent;\n\n\n//# sourceURL=webpack://@webex/cc-components/./src/components/task/CallControl/call-control.tsx?");
|
|
2014
2014
|
|
|
2015
2015
|
/***/ }),
|
|
2016
2016
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/cc-components",
|
|
3
3
|
"description": "Webex Contact Center UI Components Library for your custom contact center solutions",
|
|
4
|
-
"version": "1.28.0-ccwidgets.
|
|
4
|
+
"version": "1.28.0-ccwidgets.46",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@r2wc/react-to-web-component": "2.0.3",
|
|
28
|
-
"@webex/cc-store": "1.28.0-ccwidgets.
|
|
28
|
+
"@webex/cc-store": "1.28.0-ccwidgets.46"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@babel/core": "7.25.2",
|