@pega/cosmos-react-demos 3.0.0-dev.26.0 → 3.0.0-dev.27.2
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/jsx/build/ExpressionBuilder/ExpressionBuilder.mocks.d.ts +9 -13
- package/jsx/build/ExpressionBuilder/ExpressionBuilder.mocks.d.ts.map +1 -1
- package/jsx/build/ExpressionBuilder/ExpressionBuilder.mocks.js +46 -13
- package/jsx/build/ExpressionBuilder/ExpressionBuilder.mocks.js.map +1 -1
- package/jsx/build/ExpressionBuilder/ExpressionBuilder.stories.d.ts +1 -0
- package/jsx/build/ExpressionBuilder/ExpressionBuilder.stories.d.ts.map +1 -1
- package/jsx/build/ExpressionBuilder/ExpressionBuilder.stories.jsx +67 -11
- package/jsx/build/ExpressionBuilder/ExpressionBuilder.stories.jsx.map +1 -1
- package/jsx/core/FieldGroup/FieldGroup.stories.d.ts +2 -0
- package/jsx/core/FieldGroup/FieldGroup.stories.d.ts.map +1 -1
- package/jsx/core/FieldGroup/FieldGroup.stories.jsx +12 -4
- package/jsx/core/FieldGroup/FieldGroup.stories.jsx.map +1 -1
- package/jsx/core/ListToolbar/ListToolbar.stories.d.ts +2 -1
- package/jsx/core/ListToolbar/ListToolbar.stories.d.ts.map +1 -1
- package/jsx/core/ListToolbar/ListToolbar.stories.jsx +9 -5
- package/jsx/core/ListToolbar/ListToolbar.stories.jsx.map +1 -1
- package/jsx/core/Tree/Tree.stories.d.ts.map +1 -1
- package/jsx/core/Tree/Tree.stories.jsx +14 -0
- package/jsx/core/Tree/Tree.stories.jsx.map +1 -1
- package/jsx/cs/CallControlPanel/CallControlPanel.mocks.d.ts +4 -0
- package/jsx/cs/CallControlPanel/CallControlPanel.mocks.d.ts.map +1 -1
- package/jsx/cs/CallControlPanel/CallControlPanel.mocks.js +14 -0
- package/jsx/cs/CallControlPanel/CallControlPanel.mocks.js.map +1 -1
- package/jsx/cs/CallControlPanel/CallControlPanel.stories.d.ts.map +1 -1
- package/jsx/cs/CallControlPanel/CallControlPanel.stories.jsx +64 -6
- package/jsx/cs/CallControlPanel/CallControlPanel.stories.jsx.map +1 -1
- package/jsx/social/Email/Email.mocks.d.ts +0 -1
- package/jsx/social/Email/Email.mocks.d.ts.map +1 -1
- package/jsx/social/Email/Email.mocks.jsx +0 -13
- package/jsx/social/Email/Email.mocks.jsx.map +1 -1
- package/jsx/social/Email/Email.stories.d.ts +19 -2
- package/jsx/social/Email/Email.stories.d.ts.map +1 -1
- package/jsx/social/Email/Email.stories.jsx +159 -65
- package/jsx/social/Email/Email.stories.jsx.map +1 -1
- package/jsx/work/SearchResults/SearchResults.mocks.d.ts +6 -0
- package/jsx/work/SearchResults/SearchResults.mocks.d.ts.map +1 -1
- package/jsx/work/SearchResults/SearchResults.mocks.jsx +39 -38
- package/jsx/work/SearchResults/SearchResults.mocks.jsx.map +1 -1
- package/jsx/work/SearchResults/SearchResults.stories.d.ts.map +1 -1
- package/jsx/work/SearchResults/SearchResults.stories.jsx +71 -43
- package/jsx/work/SearchResults/SearchResults.stories.jsx.map +1 -1
- package/lib/build/ExpressionBuilder/ExpressionBuilder.mocks.d.ts +9 -13
- package/lib/build/ExpressionBuilder/ExpressionBuilder.mocks.d.ts.map +1 -1
- package/lib/build/ExpressionBuilder/ExpressionBuilder.mocks.js +46 -13
- package/lib/build/ExpressionBuilder/ExpressionBuilder.mocks.js.map +1 -1
- package/lib/build/ExpressionBuilder/ExpressionBuilder.stories.d.ts +1 -0
- package/lib/build/ExpressionBuilder/ExpressionBuilder.stories.d.ts.map +1 -1
- package/lib/build/ExpressionBuilder/ExpressionBuilder.stories.js +65 -12
- package/lib/build/ExpressionBuilder/ExpressionBuilder.stories.js.map +1 -1
- package/lib/core/FieldGroup/FieldGroup.stories.d.ts +2 -0
- package/lib/core/FieldGroup/FieldGroup.stories.d.ts.map +1 -1
- package/lib/core/FieldGroup/FieldGroup.stories.js +11 -3
- package/lib/core/FieldGroup/FieldGroup.stories.js.map +1 -1
- package/lib/core/ListToolbar/ListToolbar.stories.d.ts +2 -1
- package/lib/core/ListToolbar/ListToolbar.stories.d.ts.map +1 -1
- package/lib/core/ListToolbar/ListToolbar.stories.js +9 -5
- package/lib/core/ListToolbar/ListToolbar.stories.js.map +1 -1
- package/lib/core/Tree/Tree.stories.d.ts.map +1 -1
- package/lib/core/Tree/Tree.stories.js +16 -0
- package/lib/core/Tree/Tree.stories.js.map +1 -1
- package/lib/cs/CallControlPanel/CallControlPanel.mocks.d.ts +4 -0
- package/lib/cs/CallControlPanel/CallControlPanel.mocks.d.ts.map +1 -1
- package/lib/cs/CallControlPanel/CallControlPanel.mocks.js +14 -0
- package/lib/cs/CallControlPanel/CallControlPanel.mocks.js.map +1 -1
- package/lib/cs/CallControlPanel/CallControlPanel.stories.d.ts.map +1 -1
- package/lib/cs/CallControlPanel/CallControlPanel.stories.js +64 -6
- package/lib/cs/CallControlPanel/CallControlPanel.stories.js.map +1 -1
- package/lib/social/Email/Email.mocks.d.ts +0 -1
- package/lib/social/Email/Email.mocks.d.ts.map +1 -1
- package/lib/social/Email/Email.mocks.js +0 -13
- package/lib/social/Email/Email.mocks.js.map +1 -1
- package/lib/social/Email/Email.stories.d.ts +19 -2
- package/lib/social/Email/Email.stories.d.ts.map +1 -1
- package/lib/social/Email/Email.stories.js +127 -52
- package/lib/social/Email/Email.stories.js.map +1 -1
- package/lib/work/SearchResults/SearchResults.mocks.d.ts +6 -0
- package/lib/work/SearchResults/SearchResults.mocks.d.ts.map +1 -1
- package/lib/work/SearchResults/SearchResults.mocks.js +39 -38
- package/lib/work/SearchResults/SearchResults.mocks.js.map +1 -1
- package/lib/work/SearchResults/SearchResults.stories.d.ts.map +1 -1
- package/lib/work/SearchResults/SearchResults.stories.js +71 -43
- package/lib/work/SearchResults/SearchResults.stories.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldGroup.stories.jsx","sourceRoot":"","sources":["../../../src/core/FieldGroup/FieldGroup.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,UAAU,EACV,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACT,MAAM,yBAAyB,CAAC;AAEjC,eAAe;IACb,KAAK,EAAE,iBAAiB;IACxB,SAAS,EAAE,UAAU;CACd,CAAC;
|
|
1
|
+
{"version":3,"file":"FieldGroup.stories.jsx","sourceRoot":"","sources":["../../../src/core/FieldGroup/FieldGroup.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta, Story } from '@storybook/react';\n\nimport {\n DateInput,\n FieldGroup,\n Grid,\n Input,\n Select,\n Option,\n TextArea\n} from '@pega/cosmos-react-core';\n\nexport default {\n title: 'Core/FieldGroup',\n component: FieldGroup\n} as Meta;\n\ninterface FieldGroupStoryProps {\n firstGroupName?: string;\n firstGroupCollapsible?: boolean;\n firstGroupDescription?: string;\n showFirstAdditionalInfo?: boolean;\n secondGroupName?: string;\n secondGroupCollapsible?: boolean;\n secondGroupDescription?: string;\n showSecondAdditionalInfo?: boolean;\n}\n\nexport const FieldGroupDemo: Story<FieldGroupStoryProps> = (args: FieldGroupStoryProps) => {\n return (\n <Grid container={{ rowGap: 1 }}>\n <FieldGroup\n name={args.firstGroupName}\n description={args.firstGroupDescription}\n collapsible={args.firstGroupCollapsible}\n additionalInfo={\n args.showFirstAdditionalInfo\n ? { heading: 'Additional Info', content: 'This is a field group' }\n : undefined\n }\n >\n <Grid container={{ gap: 1, cols: 'repeat(auto-fit, minmax(min(40ch, 100%), 1fr))' }}>\n <Input type='text' label='Text 1' />\n <Select label='Select 1'>\n <Option value='A'>Option 1A</Option>\n <Option value='B'>Option 1B</Option>\n </Select>\n <DateInput label='Date 1' />\n <Grid item={{ colStart: '1', colEnd: '-1' }}>\n <TextArea label='TextArea 1' />\n </Grid>\n <Input required type='text' label='Required 1' />\n <Input disabled type='text' label='Disabled 1' />\n </Grid>\n </FieldGroup>\n <FieldGroup\n name={args.secondGroupName}\n description={args.secondGroupDescription}\n collapsible={args.secondGroupCollapsible}\n additionalInfo={\n args.showSecondAdditionalInfo\n ? { heading: 'Additional Info', content: 'This is another field group' }\n : undefined\n }\n >\n <Grid container={{ gap: 1, cols: 'repeat(auto-fill, minmax(min(40ch, 100%), 1fr))' }}>\n <Input type='text' label='Text 2' />\n <Select label='Select 2'>\n <Option value='A'>Option 2A</Option>\n <Option value='B'>Option 2B</Option>\n </Select>\n <DateInput label='Date 2' />\n <Grid item={{ colStart: '1', colEnd: '-1' }}>\n <TextArea label='TextArea 2' />\n </Grid>\n <Input required type='text' label='Required 2' />\n <Input disabled type='text' label='Disabled 2' />\n </Grid>\n </FieldGroup>\n </Grid>\n );\n};\n\nFieldGroupDemo.args = {\n firstGroupName: 'Field group 1',\n firstGroupCollapsible: true,\n firstGroupDescription: '',\n showFirstAdditionalInfo: true,\n secondGroupName: 'Field group 2',\n secondGroupCollapsible: true,\n secondGroupDescription: '',\n showSecondAdditionalInfo: true\n};\n\nFieldGroupDemo.argTypes = {\n firstGroupName: { control: { type: 'text' } },\n firstGroupCollapsible: { control: { type: 'boolean' } },\n firstGroupDescription: { control: { type: 'text' } },\n showFirstAdditionalInfo: { control: { type: 'boolean' } },\n secondGroupName: { control: { type: 'text' } },\n secondGroupCollapsible: { control: { type: 'boolean' } },\n secondGroupDescription: { control: { type: 'text' } },\n showSecondAdditionalInfo: { control: { type: 'boolean' } }\n};\n"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Meta, Story } from '@storybook/react';
|
|
2
|
-
import { ListToolbarProps } from '@pega/cosmos-react-core';
|
|
2
|
+
import { ListToolbarProps, FormControlProps } from '@pega/cosmos-react-core';
|
|
3
3
|
declare const _default: Meta<import("@storybook/react").Args>;
|
|
4
4
|
export default _default;
|
|
5
5
|
interface ListToolbarStoryProps {
|
|
6
6
|
condensed: ListToolbarProps['condensed'];
|
|
7
7
|
createNewLabel: string;
|
|
8
|
+
required: FormControlProps['required'];
|
|
8
9
|
}
|
|
9
10
|
export declare const ListToolbarDemo: Story<ListToolbarStoryProps>;
|
|
10
11
|
export declare const SimpleToolbarDemo: Story;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListToolbar.stories.d.ts","sourceRoot":"","sources":["../../../src/core/ListToolbar/ListToolbar.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAGL,gBAAgB,
|
|
1
|
+
{"version":3,"file":"ListToolbar.stories.d.ts","sourceRoot":"","sources":["../../../src/core/ListToolbar/ListToolbar.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAGL,gBAAgB,EAGhB,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;;AAWjC,wBAGU;AAIV,UAAU,qBAAqB;IAC7B,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;CACxC;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,qBAAqB,CA8FxD,CAAC;AAcF,eAAO,MAAM,iBAAiB,EAAE,KAc/B,CAAC"}
|
|
@@ -68,30 +68,34 @@ export const ListToolbarDemo = (args) => {
|
|
|
68
68
|
setViews(cur => {
|
|
69
69
|
return cur.map(view => ({ ...view, selected: view.id === id }));
|
|
70
70
|
});
|
|
71
|
-
}
|
|
71
|
+
},
|
|
72
|
+
defaultId: '1',
|
|
73
|
+
appDefaultId: '2'
|
|
72
74
|
}} createNew={{
|
|
73
75
|
onClick: action('Clicked Create New'),
|
|
74
76
|
label: args.createNewLabel
|
|
75
77
|
}} search={{ onSearchSubmit: action('Search submit') }} count={{
|
|
76
78
|
total: 32,
|
|
77
79
|
selected: 4
|
|
78
|
-
}} filter={filterProp} sort={sortProp} group={groupProp} actions={actions} additionalActions={<MenuButton text='Edit'/>} condensed={args.condensed}/>
|
|
80
|
+
}} filter={filterProp} sort={sortProp} group={groupProp} actions={actions} additionalActions={<MenuButton text='Edit'/>} condensed={args.condensed} formControlProps={{ required: args.required }}/>
|
|
79
81
|
</StagedStateDispatchContext.Provider>
|
|
80
82
|
</CardHeader>
|
|
81
83
|
</Card>);
|
|
82
84
|
};
|
|
83
85
|
ListToolbarDemo.args = {
|
|
84
86
|
condensed: false,
|
|
85
|
-
createNewLabel: undefined
|
|
87
|
+
createNewLabel: undefined,
|
|
88
|
+
required: false
|
|
86
89
|
};
|
|
87
90
|
ListToolbarDemo.argTypes = {
|
|
88
91
|
condensed: { control: { type: 'boolean' } },
|
|
89
|
-
createNewLabel: { control: { type: 'text' } }
|
|
92
|
+
createNewLabel: { control: { type: 'text' } },
|
|
93
|
+
required: { control: { type: 'boolean' } }
|
|
90
94
|
};
|
|
91
95
|
export const SimpleToolbarDemo = () => {
|
|
92
96
|
return (<Card>
|
|
93
97
|
<CardHeader>
|
|
94
|
-
<ListToolbar heading='Top accounts in California' search={{ onSearchSubmit: action('Search submit') }} count={{ total: 212, totalHasMore: true }} actions={actions}/>
|
|
98
|
+
<ListToolbar heading='Top accounts in California' search={{ onSearchSubmit: action('Search submit') }} count={{ total: 212, totalHasMore: true }} actions={actions} formControlProps={{ required: true }}/>
|
|
95
99
|
</CardHeader>
|
|
96
100
|
</Card>);
|
|
97
101
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListToolbar.stories.jsx","sourceRoot":"","sources":["../../../src/core/ListToolbar/ListToolbar.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EACL,IAAI,EACJ,UAAU,EAEV,WAAW,EACX,UAAU,
|
|
1
|
+
{"version":3,"file":"ListToolbar.stories.jsx","sourceRoot":"","sources":["../../../src/core/ListToolbar/ListToolbar.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta, Story } from '@storybook/react';\nimport { useMemo, useState } from 'react';\nimport { action } from '@storybook/addon-actions';\n\nimport {\n Card,\n CardHeader,\n ListToolbarProps,\n ListToolbar,\n MenuButton,\n FormControlProps\n} from '@pega/cosmos-react-core';\nimport { PresetMenuProps } from '@pega/cosmos-react-core/lib/components/ListToolbar/ListToolbar.types';\n\nimport {\n mockViews,\n actions,\n FilterRenderer,\n StagedStateDispatchContext,\n GroupRenderer\n} from './ListToolbar.mocks';\n\nexport default {\n title: 'Core/ListToolbar',\n component: ListToolbar\n} as Meta;\n\ntype SortString = 'asc' | 'desc';\n\ninterface ListToolbarStoryProps {\n condensed: ListToolbarProps['condensed'];\n createNewLabel: string;\n required: FormControlProps['required'];\n}\n\nexport const ListToolbarDemo: Story<ListToolbarStoryProps> = (args: ListToolbarStoryProps) => {\n const [stagedQueryOptionState, setStagedQueryOptionState] = useState<object | null>(null);\n const [views, setViews] = useState(mockViews);\n const [currentSort, setCurrentSort] = useState<SortString | null>(null);\n\n const filterProp = useMemo(() => {\n return {\n value: stagedQueryOptionState,\n count: undefined,\n renderer: FilterRenderer,\n onCancel: () => {\n setStagedQueryOptionState(null);\n },\n onSubmit: () => {\n setStagedQueryOptionState(cur => {\n // eslint-disable-next-line no-console\n console.table(cur);\n return null;\n });\n }\n };\n }, [stagedQueryOptionState]);\n\n const sortProp: PresetMenuProps = useMemo(() => {\n return {\n mode: 'single-select',\n count: currentSort ? 1 : undefined,\n items: [\n {\n id: 'asc',\n text: 'Ascending',\n icon: 'arrow-up',\n selected: currentSort === 'asc'\n },\n {\n id: 'desc',\n text: 'Descending',\n icon: 'arrow-down',\n selected: currentSort === 'desc'\n }\n ],\n onItemClick: id => {\n setCurrentSort(cur => {\n return cur === id ? null : (id as SortString);\n });\n }\n };\n }, [currentSort]);\n\n const groupProp = useMemo(() => {\n return {\n count: undefined,\n renderer: GroupRenderer,\n onCancel: () => {},\n onSubmit: () => {}\n };\n }, []);\n\n return (\n <Card>\n <CardHeader>\n <StagedStateDispatchContext.Provider value={setStagedQueryOptionState}>\n <ListToolbar\n heading={{\n views,\n onViewSelect: id => {\n setViews(cur => {\n return cur.map(view => ({ ...view, selected: view.id === id }));\n });\n },\n defaultId: '1',\n appDefaultId: '2'\n }}\n createNew={{\n onClick: action('Clicked Create New'),\n label: args.createNewLabel\n }}\n search={{ onSearchSubmit: action('Search submit') }}\n count={{\n total: 32,\n selected: 4\n }}\n filter={filterProp}\n sort={sortProp}\n group={groupProp}\n actions={actions}\n additionalActions={<MenuButton text='Edit' />}\n condensed={args.condensed}\n formControlProps={{ required: args.required }}\n />\n </StagedStateDispatchContext.Provider>\n </CardHeader>\n </Card>\n );\n};\n\nListToolbarDemo.args = {\n condensed: false,\n createNewLabel: undefined,\n required: false\n};\n\nListToolbarDemo.argTypes = {\n condensed: { control: { type: 'boolean' } },\n createNewLabel: { control: { type: 'text' } },\n required: { control: { type: 'boolean' } }\n};\n\nexport const SimpleToolbarDemo: Story = () => {\n return (\n <Card>\n <CardHeader>\n <ListToolbar\n heading='Top accounts in California'\n search={{ onSearchSubmit: action('Search submit') }}\n count={{ total: 212, totalHasMore: true }}\n actions={actions}\n formControlProps={{ required: true }}\n />\n </CardHeader>\n </Card>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tree.stories.d.ts","sourceRoot":"","sources":["../../../src/core/Tree/Tree.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAGL,iBAAiB,EAMlB,MAAM,yBAAyB,CAAC;;AAKjC,wBAGU;AAEV,eAAO,MAAM,QAAQ,EAAE,KActB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"Tree.stories.d.ts","sourceRoot":"","sources":["../../../src/core/Tree/Tree.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAGL,iBAAiB,EAMlB,MAAM,yBAAyB,CAAC;;AAKjC,wBAGU;AAEV,eAAO,MAAM,QAAQ,EAAE,KActB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAyGpE,CAAC"}
|
|
@@ -24,6 +24,7 @@ export const StandardTreeDemo = (args) => {
|
|
|
24
24
|
id,
|
|
25
25
|
label: isParent ? 'Parent' : 'Leaf',
|
|
26
26
|
icon: isParent ? 'folder-solid' : 'document-solid',
|
|
27
|
+
secondary: 'This is secondary text',
|
|
27
28
|
nodes: isParent ? [] : undefined,
|
|
28
29
|
actions: [
|
|
29
30
|
{ id: 'star', text: 'Star', icon: 'star', onClick: action(`Star node: ${id}`) },
|
|
@@ -63,6 +64,19 @@ export const StandardTreeDemo = (args) => {
|
|
|
63
64
|
<StandardTree lined={args.lined} currentNodeId={currentNodeId} nodes={allNodes} onNodeClick={id => {
|
|
64
65
|
const clickedNode = treeHelpers.getNode(allNodes, id);
|
|
65
66
|
setCurrentNodeId(id);
|
|
67
|
+
if (!clickedNode?.nodes)
|
|
68
|
+
return;
|
|
69
|
+
setAllNodes(tree => treeHelpers.mapNode(tree, id, node => {
|
|
70
|
+
return {
|
|
71
|
+
...node,
|
|
72
|
+
loading: node.nodes?.length === 0
|
|
73
|
+
};
|
|
74
|
+
}));
|
|
75
|
+
if (clickedNode?.nodes?.length > 0)
|
|
76
|
+
return;
|
|
77
|
+
loadChildNodes(id);
|
|
78
|
+
}} onNodeToggle={id => {
|
|
79
|
+
const clickedNode = treeHelpers.getNode(allNodes, id);
|
|
66
80
|
if (!clickedNode?.nodes)
|
|
67
81
|
return;
|
|
68
82
|
setAllNodes(tree => treeHelpers.mapNode(tree, id, node => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tree.stories.jsx","sourceRoot":"","sources":["../../../src/core/Tree/Tree.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState } from 'react';\nimport { action } from '@storybook/addon-actions';\nimport { Meta, Story } from '@storybook/react';\n\nimport {\n Button,\n StandardTree,\n StandardTreeProps,\n Tree,\n TreeNode,\n treeHelpers,\n createUID,\n themeDefinition\n} from '@pega/cosmos-react-core';\n\nimport { themeToTree } from './Tree.mocks';\nimport { StyledBaseTree } from './Tree.styles';\n\nexport default {\n title: 'Core/Tree',\n component: Tree\n} as Meta;\n\nexport const BaseTree: Story = () => {\n return (\n <StyledBaseTree\n nodes={themeToTree(themeDefinition)}\n nodeRenderer={({ id, subTree }) => {\n return (\n <>\n <span>{id}</span>\n {subTree}\n </>\n );\n }}\n />\n );\n};\n\nexport const StandardTreeDemo: Story<Pick<StandardTreeProps, 'lined'>> = (\n args: Pick<StandardTreeProps, 'lined'>\n) => {\n const getMockNodes = ({\n length = 5,\n parent = true\n }: { length?: number; parent?: boolean } = {}): StandardTreeProps['nodes'] => {\n return Array.from({ length }, (_, i) => {\n const isParent = parent && i !== 2;\n const id = createUID();\n return {\n id,\n label: isParent ? 'Parent' : 'Leaf',\n icon: isParent ? 'folder-solid' : 'document-solid',\n nodes: isParent ? [] : undefined,\n actions: [\n { id: 'star', text: 'Star', icon: 'star', onClick: action(`Star node: ${id}`) },\n { id: 'pin', text: 'Pin', icon: 'pin', onClick: action(`Pin node: ${id}`) }\n ],\n onClick: isParent\n ? undefined\n : nodeId => {\n action(`Action for node: ${nodeId}`)();\n }\n };\n });\n };\n\n const [currentNodeId, setCurrentNodeId] = useState<string | undefined>();\n const [allNodes, setAllNodes] = useState<StandardTreeProps['nodes']>(() => {\n return getMockNodes({ length: 10 });\n });\n\n const loadChildNodes = (id: string) => {\n setTimeout(() => {\n setAllNodes(tree => {\n return treeHelpers.mapNode(tree, id, node => {\n return {\n ...node,\n loading: false,\n nodes: [...(node.nodes ?? []), ...getMockNodes()]\n };\n });\n });\n }, 1000);\n };\n\n const expandTo = (id: TreeNode['id']) => {\n setAllNodes(tree => {\n return treeHelpers.expandTo(tree, id);\n });\n };\n\n return (\n <>\n <StandardTree\n lined={args.lined}\n currentNodeId={currentNodeId}\n nodes={allNodes}\n onNodeClick={id => {\n const clickedNode = treeHelpers.getNode(allNodes, id);\n setCurrentNodeId(id);\n // If a leaf node, just set to current\n if (!clickedNode?.nodes) return;\n\n setAllNodes(tree =>\n treeHelpers.mapNode(tree, id, node => {\n return {\n ...node,\n expanded: !node.expanded,\n loading: node.nodes?.length === 0\n };\n })\n );\n\n // If a parent node with children already loaded, we're done.\n if (clickedNode?.nodes?.length > 0) return;\n\n loadChildNodes(id);\n }}\n />\n <Button onClick={() => expandTo('')}>Collapse All</Button>\n <Button onClick={() => expandTo(currentNodeId || '')}>Expand to active item</Button>\n </>\n );\n};\n\nStandardTreeDemo.args = {\n lined: false\n};\n\nStandardTreeDemo.argTypes = {\n lined: { control: { type: 'boolean' } }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"Tree.stories.jsx","sourceRoot":"","sources":["../../../src/core/Tree/Tree.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGlD,OAAO,EACL,MAAM,EACN,YAAY,EAEZ,IAAI,EAEJ,WAAW,EACX,SAAS,EACT,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,eAAe;IACb,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,IAAI;CACR,CAAC;AAEV,MAAM,CAAC,MAAM,QAAQ,GAAU,GAAG,EAAE;IAClC,OAAO,CACL,CAAC,cAAc,CACb,KAAK,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CACpC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YAChC,OAAO,CACL,EACE;YAAA,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAChB;YAAA,CAAC,OAAO,CACV;UAAA,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC,EACF,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAA4C,CACvE,IAAsC,EACtC,EAAE;IACF,MAAM,YAAY,GAAG,CAAC,EACpB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,IAAI,KAC4B,EAAE,EAA8B,EAAE;QAC3E,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;YACvB,OAAO;gBACL,EAAE;gBACF,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;gBACnC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB;gBAClD,SAAS,EAAE,wBAAwB;gBACnC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;gBAChC,OAAO,EAAE;oBACP,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE;oBAC/E,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;iBAC5E;gBACD,OAAO,EAAE,QAAQ;oBACf,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,MAAM,CAAC,EAAE;wBACP,MAAM,CAAC,oBAAoB,MAAM,EAAE,CAAC,EAAE,CAAC;oBACzC,CAAC;aACN,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,EAAsB,CAAC;IACzE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAA6B,GAAG,EAAE;QACxE,OAAO,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,CAAC,EAAU,EAAE,EAAE;QACpC,UAAU,CAAC,GAAG,EAAE;YACd,WAAW,CAAC,IAAI,CAAC,EAAE;gBACjB,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE;oBAC1C,OAAO;wBACL,GAAG,IAAI;wBACP,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC;qBAClD,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,EAAkB,EAAE,EAAE;QACtC,WAAW,CAAC,IAAI,CAAC,EAAE;YACjB,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CACL,EACE;MAAA,CAAC,YAAY,CACX,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAClB,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,KAAK,CAAC,CAAC,QAAQ,CAAC,CAChB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE;YAChB,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACtD,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAErB,IAAI,CAAC,WAAW,EAAE,KAAK;gBAAE,OAAO;YAEhC,WAAW,CAAC,IAAI,CAAC,EAAE,CACjB,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE;gBACnC,OAAO;oBACL,GAAG,IAAI;oBACP,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC;iBAClC,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;YAGF,IAAI,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;gBAAE,OAAO;YAE3C,cAAc,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC,CAAC,CACF,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;YACjB,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAEtD,IAAI,CAAC,WAAW,EAAE,KAAK;gBAAE,OAAO;YAEhC,WAAW,CAAC,IAAI,CAAC,EAAE,CACjB,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE;gBACnC,OAAO;oBACL,GAAG,IAAI;oBACP,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ;oBACxB,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC;iBAClC,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;YAGF,IAAI,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;gBAAE,OAAO;YAE3C,cAAc,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC,CAAC,EAEJ;MAAA,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,CACzD;MAAA,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE,MAAM,CACrF;IAAA,GAAG,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,gBAAgB,CAAC,IAAI,GAAG;IACtB,KAAK,EAAE,KAAK;CACb,CAAC;AAEF,gBAAgB,CAAC,QAAQ,GAAG;IAC1B,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;CACxC,CAAC","sourcesContent":["import { useState } from 'react';\nimport { action } from '@storybook/addon-actions';\nimport { Meta, Story } from '@storybook/react';\n\nimport {\n Button,\n StandardTree,\n StandardTreeProps,\n Tree,\n TreeNode,\n treeHelpers,\n createUID,\n themeDefinition\n} from '@pega/cosmos-react-core';\n\nimport { themeToTree } from './Tree.mocks';\nimport { StyledBaseTree } from './Tree.styles';\n\nexport default {\n title: 'Core/Tree',\n component: Tree\n} as Meta;\n\nexport const BaseTree: Story = () => {\n return (\n <StyledBaseTree\n nodes={themeToTree(themeDefinition)}\n nodeRenderer={({ id, subTree }) => {\n return (\n <>\n <span>{id}</span>\n {subTree}\n </>\n );\n }}\n />\n );\n};\n\nexport const StandardTreeDemo: Story<Pick<StandardTreeProps, 'lined'>> = (\n args: Pick<StandardTreeProps, 'lined'>\n) => {\n const getMockNodes = ({\n length = 5,\n parent = true\n }: { length?: number; parent?: boolean } = {}): StandardTreeProps['nodes'] => {\n return Array.from({ length }, (_, i) => {\n const isParent = parent && i !== 2;\n const id = createUID();\n return {\n id,\n label: isParent ? 'Parent' : 'Leaf',\n icon: isParent ? 'folder-solid' : 'document-solid',\n secondary: 'This is secondary text',\n nodes: isParent ? [] : undefined,\n actions: [\n { id: 'star', text: 'Star', icon: 'star', onClick: action(`Star node: ${id}`) },\n { id: 'pin', text: 'Pin', icon: 'pin', onClick: action(`Pin node: ${id}`) }\n ],\n onClick: isParent\n ? undefined\n : nodeId => {\n action(`Action for node: ${nodeId}`)();\n }\n };\n });\n };\n\n const [currentNodeId, setCurrentNodeId] = useState<string | undefined>();\n const [allNodes, setAllNodes] = useState<StandardTreeProps['nodes']>(() => {\n return getMockNodes({ length: 10 });\n });\n\n const loadChildNodes = (id: string) => {\n setTimeout(() => {\n setAllNodes(tree => {\n return treeHelpers.mapNode(tree, id, node => {\n return {\n ...node,\n loading: false,\n nodes: [...(node.nodes ?? []), ...getMockNodes()]\n };\n });\n });\n }, 1000);\n };\n\n const expandTo = (id: TreeNode['id']) => {\n setAllNodes(tree => {\n return treeHelpers.expandTo(tree, id);\n });\n };\n\n return (\n <>\n <StandardTree\n lined={args.lined}\n currentNodeId={currentNodeId}\n nodes={allNodes}\n onNodeClick={id => {\n const clickedNode = treeHelpers.getNode(allNodes, id);\n setCurrentNodeId(id);\n // If a leaf node, just set to current\n if (!clickedNode?.nodes) return;\n\n setAllNodes(tree =>\n treeHelpers.mapNode(tree, id, node => {\n return {\n ...node,\n loading: node.nodes?.length === 0\n };\n })\n );\n\n // If a parent node with children already loaded, we're done.\n if (clickedNode?.nodes?.length > 0) return;\n\n loadChildNodes(id);\n }}\n onNodeToggle={id => {\n const clickedNode = treeHelpers.getNode(allNodes, id);\n // If a leaf node, just set to current\n if (!clickedNode?.nodes) return;\n\n setAllNodes(tree =>\n treeHelpers.mapNode(tree, id, node => {\n return {\n ...node,\n expanded: !node.expanded,\n loading: node.nodes?.length === 0\n };\n })\n );\n\n // If a parent node with children already loaded, we're done.\n if (clickedNode?.nodes?.length > 0) return;\n\n loadChildNodes(id);\n }}\n />\n <Button onClick={() => expandTo('')}>Collapse All</Button>\n <Button onClick={() => expandTo(currentNodeId || '')}>Expand to active item</Button>\n </>\n );\n};\n\nStandardTreeDemo.args = {\n lined: false\n};\n\nStandardTreeDemo.argTypes = {\n lined: { control: { type: 'boolean' } }\n};\n"]}
|
|
@@ -9,6 +9,10 @@ export declare const transferReasons: {
|
|
|
9
9
|
id: string;
|
|
10
10
|
label: string;
|
|
11
11
|
}[];
|
|
12
|
+
export declare const interactionOptions: {
|
|
13
|
+
id: string;
|
|
14
|
+
label: string;
|
|
15
|
+
}[];
|
|
12
16
|
export declare const userStatusOptions: UserAvailabilityStatusOption[];
|
|
13
17
|
declare type StyleVariableName = '--app-bg-color' | '--header-border-color' | '--text-color' | '--msg-border-radius' | '--msg-you-bg-color' | '--msg-you-text-color' | '--msg-me-bg-color' | '--msg-me-text-color' | '--input-height' | '--input-background-color' | '--input-border-color' | '--input-border-width' | '--input-border-radius' | '--input-focus-border-color' | '--input-focus-box-shadow' | '--input-text-color' | '--button-text-color' | '--button-height' | '--button-bg-color' | '--button-border-color' | '--button-border-radius' | '--button-hover-bg-color' | '--footer-bg-color';
|
|
14
18
|
export declare type ExternalStyles = Partial<Record<StyleVariableName, string>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallControlPanel.mocks.d.ts","sourceRoot":"","sources":["../../../src/cs/CallControlPanel/CallControlPanel.mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAE1E,eAAO,MAAM,YAAY;;;;;GAmExB,CAAC;AAEF,eAAO,MAAM,eAAe;;;GAa3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,4BAA4B,EA4B3D,CAAC;AAEF,aAAK,iBAAiB,GAClB,gBAAgB,GAChB,uBAAuB,GACvB,cAAc,GACd,qBAAqB,GACrB,oBAAoB,GACpB,sBAAsB,GACtB,mBAAmB,GACnB,qBAAqB,GACrB,gBAAgB,GAChB,0BAA0B,GAC1B,sBAAsB,GACtB,sBAAsB,GACtB,uBAAuB,GACvB,4BAA4B,GAC5B,0BAA0B,GAC1B,oBAAoB,GACpB,qBAAqB,GACrB,iBAAiB,GACjB,mBAAmB,GACnB,uBAAuB,GACvB,wBAAwB,GACxB,yBAAyB,GACzB,mBAAmB,CAAC;AAExB,oBAAY,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;AAExE,eAAO,MAAM,2BAA2B,YAAY,cAAc,GAAG,SAAS,WA6H7E,CAAC"}
|
|
1
|
+
{"version":3,"file":"CallControlPanel.mocks.d.ts","sourceRoot":"","sources":["../../../src/cs/CallControlPanel/CallControlPanel.mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAE1E,eAAO,MAAM,YAAY;;;;;GAmExB,CAAC;AAEF,eAAO,MAAM,eAAe;;;GAa3B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;GAa9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,4BAA4B,EA4B3D,CAAC;AAEF,aAAK,iBAAiB,GAClB,gBAAgB,GAChB,uBAAuB,GACvB,cAAc,GACd,qBAAqB,GACrB,oBAAoB,GACpB,sBAAsB,GACtB,mBAAmB,GACnB,qBAAqB,GACrB,gBAAgB,GAChB,0BAA0B,GAC1B,sBAAsB,GACtB,sBAAsB,GACtB,uBAAuB,GACvB,4BAA4B,GAC5B,0BAA0B,GAC1B,oBAAoB,GACpB,qBAAqB,GACrB,iBAAiB,GACjB,mBAAmB,GACnB,uBAAuB,GACvB,wBAAwB,GACxB,yBAAyB,GACzB,mBAAmB,CAAC;AAExB,oBAAY,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;AAExE,eAAO,MAAM,2BAA2B,YAAY,cAAc,GAAG,SAAS,WA6H7E,CAAC"}
|
|
@@ -80,6 +80,20 @@ export const transferReasons = [
|
|
|
80
80
|
label: 'On break'
|
|
81
81
|
}
|
|
82
82
|
];
|
|
83
|
+
export const interactionOptions = [
|
|
84
|
+
{
|
|
85
|
+
id: '4545455',
|
|
86
|
+
label: 'Gregory Rhodes'
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: '123243434',
|
|
90
|
+
label: 'Ella Bridges'
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: '4545455',
|
|
94
|
+
label: 'Carrie Hanson'
|
|
95
|
+
}
|
|
96
|
+
];
|
|
83
97
|
export const userStatusOptions = [
|
|
84
98
|
{
|
|
85
99
|
id: 'available',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallControlPanel.mocks.js","sourceRoot":"","sources":["../../../src/cs/CallControlPanel/CallControlPanel.mocks.ts"],"names":[],"mappings":"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","sourcesContent":["import type { UserAvailabilityStatusOption } from '@pega/cosmos-react-cs';\n\nexport const contactsList = [\n {\n phoneNumber: '343445656',\n primary: 'Gregory Rhodes',\n secondary: 'Supervisor',\n favorite: true\n },\n {\n phoneNumber: '123243434',\n primary: 'Ella Bridges',\n secondary: 'Representative',\n favorite: true\n },\n {\n phoneNumber: '4545455',\n primary: 'Carrie Hanson',\n secondary: 'Representative',\n favorite: false\n },\n {\n phoneNumber: '48436346',\n primary: 'Chris Wallas',\n secondary: 'Supervisor',\n favorite: false\n },\n {\n phoneNumber: '34455656',\n primary: 'Craig Marsh',\n secondary: 'Supervisor',\n favorite: false\n },\n {\n phoneNumber: '45565678',\n primary: 'Derrick Sutton',\n secondary: 'Representative',\n favorite: false\n },\n {\n phoneNumber: '54367578',\n primary: 'Lizzie Johnson',\n secondary: 'Supervisor',\n favorite: false\n },\n {\n phoneNumber: '65345789',\n primary: 'Ivan Fuller',\n secondary: 'Representative',\n favorite: false\n },\n {\n phoneNumber: '764455478',\n primary: 'Sam Smith',\n secondary: 'Supervisor',\n favorite: false\n },\n {\n phoneNumber: '876464003',\n primary: 'Joe Doe',\n secondary: 'Representative',\n favorite: false\n },\n {\n phoneNumber: '426464003',\n primary: 'Jane Doe',\n secondary: 'Representative',\n favorite: false\n }\n];\n\nexport const transferReasons = [\n {\n id: 'offline',\n label: 'Offline'\n },\n {\n id: 'busy',\n label: 'Busy'\n },\n {\n id: 'on_break',\n label: 'On break'\n }\n];\n\nexport const userStatusOptions: UserAvailabilityStatusOption[] = [\n {\n id: 'available',\n label: 'Available',\n status: 'available'\n },\n {\n id: 'not_available',\n label: 'Not available',\n status: 'busy',\n disabled: true\n },\n {\n id: 'after_call_work',\n label: 'After call work',\n status: 'after_work'\n },\n {\n id: 'reconnecting',\n label: 'Reconnecting',\n status: 'unavailable',\n disabled: true\n },\n {\n id: 'offline',\n label: 'Offline',\n status: 'logout'\n }\n];\n\ntype StyleVariableName =\n | '--app-bg-color'\n | '--header-border-color'\n | '--text-color'\n | '--msg-border-radius'\n | '--msg-you-bg-color'\n | '--msg-you-text-color'\n | '--msg-me-bg-color'\n | '--msg-me-text-color'\n | '--input-height'\n | '--input-background-color'\n | '--input-border-color'\n | '--input-border-width'\n | '--input-border-radius'\n | '--input-focus-border-color'\n | '--input-focus-box-shadow'\n | '--input-text-color'\n | '--button-text-color'\n | '--button-height'\n | '--button-bg-color'\n | '--button-border-color'\n | '--button-border-radius'\n | '--button-hover-bg-color'\n | '--footer-bg-color';\n\nexport type ExternalStyles = Partial<Record<StyleVariableName, string>>;\n\nexport const createExternalIframeContent = (styles: ExternalStyles | undefined = {}) => `\n<!DOCTYPE html>\n<html>\n <head>\n <style>\n :root {\n ${Object.entries(styles)\n .map(([key, value]) => `${key}: ${value};`)\n .join('\\n')}\n }\n </style>\n <style>\n html {\n height: 100vh;\n background-color: var(--app-bg-color, #F5F0EF);\n color: var(--text-color, black);\n }\n body {\n max-width: 100vw;\n height: 100%;\n display: flex;\n flex-direction: column;\n margin: 0;\n }\n header {\n height: 3rem;\n font-size: 10px;\n border-bottom: 2px solid var(--header-border-color, black);\n padding: 0 8px;\n }\n main {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n max-height: calc(100% - 3rem);\n }\n ul {\n flex-grow: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n list-style: none;\n padding-inline: 10px;\n gap: 6px;\n margin-block-end: 0;\n }\n li {\n padding: 8px;\n }\n li.you {\n align-self: start;\n background-color: var(--msg-you-bg-color, lightblue);\n color: var(--msg-you-text-color, black);\n border-radius: 0 var(--msg-border-radius, 4px) var(--msg-border-radius, 4px);\n }\n li.you:before {\n content: \"\\\\00B7\";\n margin-inline-end: 4px;\n }\n li.me {\n align-self: end;\n background-color: var(--msg-me-bg-color, pink);\n color: var(--msg-me-text-color, black);\n border-radius: var(--msg-border-radius, 4px) 0 var(--msg-border-radius, 4px) var(--msg-border-radius, 4px);\n }\n li.me:after {\n content: \"\\\\00B7\";\n margin-inline-start: 4px;\n }\n div {\n display: flex;\n justify-content: stretch;\n align-items: center;\n gap: 8px;\n padding: 8px;\n background-color: var(--footer-bg-color, transparent);\n }\n input {\n outline: none;\n color: var(--input-text-color, black);\n height: var(--input-height, 2rem);\n background-color: var(--input-background-color, white);\n border-color: var(--input-border-color, black);\n border-width: var(--input-border-width, 1px);\n border-radius: var(--input-border-radius, 4px);\n flex-grow: 1;\n }\n input:focus {\n border-color: var(--input-focus-border-color, lightblue);\n box-shadow: var(--input-focus-box-shadow, none);\n }\n button {\n padding: 0 8px;\n color: var(--button-text-color, black);\n height: var(--button-height, 2rem);\n background-color: var(--button-bg-color, white);\n border: 1px solid var(--button-border-color, blue);\n border-radius: var(--button-border-radius, 4px);\n }\n button:hover {\n background-color: var(--button-hover-bg-color, gray);\n }\n </style>\n </head>\n <body>\n <header><h1>Customer: Julian Brewster</h1></header>\n <main>\n <ul>\n <li class=\"you\">Hey!</li>\n <li class=\"you\">I want to check my account balance.</li>\n <li class=\"me\">Hello Mr Brewster.</li>\n <li class=\"me\">You have two accounts open. Which one do you want to check?</li>\n <li class=\"you\">The default one.</li>\n <li class=\"me\">Your account balance is $12345.45.</li>\n <li class=\"me\">Is there anything I can help you, Mr Brewster?</li>\n <li class=\"you\">I want to close the other account.</li>\n <li class=\"me\">Alright. What account the money should be transferred to?</li>\n </ul>\n <div>\n <input name=\"message\" autocomplete=\"off\" />\n <button>Send</button>\n </div>\n </main>\n </body>\n</html>\n`;\n"]}
|
|
1
|
+
{"version":3,"file":"CallControlPanel.mocks.js","sourceRoot":"","sources":["../../../src/cs/CallControlPanel/CallControlPanel.mocks.ts"],"names":[],"mappings":"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","sourcesContent":["import type { UserAvailabilityStatusOption } from '@pega/cosmos-react-cs';\n\nexport const contactsList = [\n {\n phoneNumber: '343445656',\n primary: 'Gregory Rhodes',\n secondary: 'Supervisor',\n favorite: true\n },\n {\n phoneNumber: '123243434',\n primary: 'Ella Bridges',\n secondary: 'Representative',\n favorite: true\n },\n {\n phoneNumber: '4545455',\n primary: 'Carrie Hanson',\n secondary: 'Representative',\n favorite: false\n },\n {\n phoneNumber: '48436346',\n primary: 'Chris Wallas',\n secondary: 'Supervisor',\n favorite: false\n },\n {\n phoneNumber: '34455656',\n primary: 'Craig Marsh',\n secondary: 'Supervisor',\n favorite: false\n },\n {\n phoneNumber: '45565678',\n primary: 'Derrick Sutton',\n secondary: 'Representative',\n favorite: false\n },\n {\n phoneNumber: '54367578',\n primary: 'Lizzie Johnson',\n secondary: 'Supervisor',\n favorite: false\n },\n {\n phoneNumber: '65345789',\n primary: 'Ivan Fuller',\n secondary: 'Representative',\n favorite: false\n },\n {\n phoneNumber: '764455478',\n primary: 'Sam Smith',\n secondary: 'Supervisor',\n favorite: false\n },\n {\n phoneNumber: '876464003',\n primary: 'Joe Doe',\n secondary: 'Representative',\n favorite: false\n },\n {\n phoneNumber: '426464003',\n primary: 'Jane Doe',\n secondary: 'Representative',\n favorite: false\n }\n];\n\nexport const transferReasons = [\n {\n id: 'offline',\n label: 'Offline'\n },\n {\n id: 'busy',\n label: 'Busy'\n },\n {\n id: 'on_break',\n label: 'On break'\n }\n];\n\nexport const interactionOptions = [\n {\n id: '4545455',\n label: 'Gregory Rhodes'\n },\n {\n id: '123243434',\n label: 'Ella Bridges'\n },\n {\n id: '4545455',\n label: 'Carrie Hanson'\n }\n];\n\nexport const userStatusOptions: UserAvailabilityStatusOption[] = [\n {\n id: 'available',\n label: 'Available',\n status: 'available'\n },\n {\n id: 'not_available',\n label: 'Not available',\n status: 'busy',\n disabled: true\n },\n {\n id: 'after_call_work',\n label: 'After call work',\n status: 'after_work'\n },\n {\n id: 'reconnecting',\n label: 'Reconnecting',\n status: 'unavailable',\n disabled: true\n },\n {\n id: 'offline',\n label: 'Offline',\n status: 'logout'\n }\n];\n\ntype StyleVariableName =\n | '--app-bg-color'\n | '--header-border-color'\n | '--text-color'\n | '--msg-border-radius'\n | '--msg-you-bg-color'\n | '--msg-you-text-color'\n | '--msg-me-bg-color'\n | '--msg-me-text-color'\n | '--input-height'\n | '--input-background-color'\n | '--input-border-color'\n | '--input-border-width'\n | '--input-border-radius'\n | '--input-focus-border-color'\n | '--input-focus-box-shadow'\n | '--input-text-color'\n | '--button-text-color'\n | '--button-height'\n | '--button-bg-color'\n | '--button-border-color'\n | '--button-border-radius'\n | '--button-hover-bg-color'\n | '--footer-bg-color';\n\nexport type ExternalStyles = Partial<Record<StyleVariableName, string>>;\n\nexport const createExternalIframeContent = (styles: ExternalStyles | undefined = {}) => `\n<!DOCTYPE html>\n<html>\n <head>\n <style>\n :root {\n ${Object.entries(styles)\n .map(([key, value]) => `${key}: ${value};`)\n .join('\\n')}\n }\n </style>\n <style>\n html {\n height: 100vh;\n background-color: var(--app-bg-color, #F5F0EF);\n color: var(--text-color, black);\n }\n body {\n max-width: 100vw;\n height: 100%;\n display: flex;\n flex-direction: column;\n margin: 0;\n }\n header {\n height: 3rem;\n font-size: 10px;\n border-bottom: 2px solid var(--header-border-color, black);\n padding: 0 8px;\n }\n main {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n max-height: calc(100% - 3rem);\n }\n ul {\n flex-grow: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n list-style: none;\n padding-inline: 10px;\n gap: 6px;\n margin-block-end: 0;\n }\n li {\n padding: 8px;\n }\n li.you {\n align-self: start;\n background-color: var(--msg-you-bg-color, lightblue);\n color: var(--msg-you-text-color, black);\n border-radius: 0 var(--msg-border-radius, 4px) var(--msg-border-radius, 4px);\n }\n li.you:before {\n content: \"\\\\00B7\";\n margin-inline-end: 4px;\n }\n li.me {\n align-self: end;\n background-color: var(--msg-me-bg-color, pink);\n color: var(--msg-me-text-color, black);\n border-radius: var(--msg-border-radius, 4px) 0 var(--msg-border-radius, 4px) var(--msg-border-radius, 4px);\n }\n li.me:after {\n content: \"\\\\00B7\";\n margin-inline-start: 4px;\n }\n div {\n display: flex;\n justify-content: stretch;\n align-items: center;\n gap: 8px;\n padding: 8px;\n background-color: var(--footer-bg-color, transparent);\n }\n input {\n outline: none;\n color: var(--input-text-color, black);\n height: var(--input-height, 2rem);\n background-color: var(--input-background-color, white);\n border-color: var(--input-border-color, black);\n border-width: var(--input-border-width, 1px);\n border-radius: var(--input-border-radius, 4px);\n flex-grow: 1;\n }\n input:focus {\n border-color: var(--input-focus-border-color, lightblue);\n box-shadow: var(--input-focus-box-shadow, none);\n }\n button {\n padding: 0 8px;\n color: var(--button-text-color, black);\n height: var(--button-height, 2rem);\n background-color: var(--button-bg-color, white);\n border: 1px solid var(--button-border-color, blue);\n border-radius: var(--button-border-radius, 4px);\n }\n button:hover {\n background-color: var(--button-hover-bg-color, gray);\n }\n </style>\n </head>\n <body>\n <header><h1>Customer: Julian Brewster</h1></header>\n <main>\n <ul>\n <li class=\"you\">Hey!</li>\n <li class=\"you\">I want to check my account balance.</li>\n <li class=\"me\">Hello Mr Brewster.</li>\n <li class=\"me\">You have two accounts open. Which one do you want to check?</li>\n <li class=\"you\">The default one.</li>\n <li class=\"me\">Your account balance is $12345.45.</li>\n <li class=\"me\">Is there anything I can help you, Mr Brewster?</li>\n <li class=\"you\">I want to close the other account.</li>\n <li class=\"me\">Alright. What account the money should be transferred to?</li>\n </ul>\n <div>\n <input name=\"message\" autocomplete=\"off\" />\n <button>Send</button>\n </div>\n </main>\n </body>\n</html>\n`;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallControlPanel.stories.d.ts","sourceRoot":"","sources":["../../../src/cs/CallControlPanel/CallControlPanel.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAI/C,OAAO,
|
|
1
|
+
{"version":3,"file":"CallControlPanel.stories.d.ts","sourceRoot":"","sources":["../../../src/cs/CallControlPanel/CallControlPanel.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAOL,4BAA4B,EAC5B,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;;AAW/B,wBAWU;AAEV,UAAU,0BAA0B;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAC5C,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,4BAA4B,KAAK,IAAI,CAAC;IACnE,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;CAC5C;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,0BAA0B,CAyQlE,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,0BAA0B,GAAG;IAAE,eAAe,EAAE,OAAO,CAAA;CAAE,CA0D5F,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { useEffect, useRef, useState } from 'react';
|
|
|
3
3
|
import { lighten, readableColor } from 'polished';
|
|
4
4
|
import { createUID, tryCatch, useTheme } from '@pega/cosmos-react-core';
|
|
5
5
|
import { CallControlPanel, ExternalCTI } from '@pega/cosmos-react-cs';
|
|
6
|
-
import { contactsList, createExternalIframeContent, transferReasons, userStatusOptions } from './CallControlPanel.mocks';
|
|
6
|
+
import { contactsList, createExternalIframeContent, interactionOptions, transferReasons, userStatusOptions } from './CallControlPanel.mocks';
|
|
7
7
|
export default {
|
|
8
8
|
title: 'Customer Service/CallControlPanel',
|
|
9
9
|
component: CallControlPanel,
|
|
@@ -38,17 +38,20 @@ export const CallControlPanelDemo = (args) => {
|
|
|
38
38
|
const onMergeCall = (id) => {
|
|
39
39
|
const thisCall = callsList.current.find(call => call.id === id);
|
|
40
40
|
const activeCallIndex = callsList.current.findIndex(call => !call.onHoldSince);
|
|
41
|
+
const currentCall = callsList.current[activeCallIndex];
|
|
41
42
|
if (!thisCall || !activeCallIndex)
|
|
42
43
|
return;
|
|
43
44
|
callsList.current.splice(activeCallIndex, 1, {
|
|
44
|
-
...
|
|
45
|
-
participants: [...
|
|
45
|
+
...currentCall,
|
|
46
|
+
participants: [...currentCall.participants, ...thisCall.participants],
|
|
46
47
|
onHoldSince: undefined
|
|
47
48
|
});
|
|
48
49
|
setCalls([...callsList.current.filter(call => call.id !== id)]);
|
|
49
50
|
};
|
|
50
51
|
const onHandOffCall = (id) => {
|
|
51
|
-
setCalls([
|
|
52
|
+
setCalls([
|
|
53
|
+
...callsList.current.filter(call => call.id !== id && call.onHoldSince)
|
|
54
|
+
]);
|
|
52
55
|
};
|
|
53
56
|
const onPauseToggle = (id) => {
|
|
54
57
|
const thisCall = callsList.current.find(call => call.id === id);
|
|
@@ -96,6 +99,7 @@ export const CallControlPanelDemo = (args) => {
|
|
|
96
99
|
startedAt: Date.now(),
|
|
97
100
|
onMergeCall,
|
|
98
101
|
transferOptions: transferReasons,
|
|
102
|
+
interactionOptions,
|
|
99
103
|
muted: false,
|
|
100
104
|
onMuteToggle,
|
|
101
105
|
onPauseToggle,
|
|
@@ -110,9 +114,10 @@ export const CallControlPanelDemo = (args) => {
|
|
|
110
114
|
}
|
|
111
115
|
]
|
|
112
116
|
};
|
|
117
|
+
const currentCall = callsList.current[0];
|
|
113
118
|
callsList.current.splice(0, 1, {
|
|
114
119
|
...callsList.current[0],
|
|
115
|
-
participants: [...
|
|
120
|
+
participants: [...currentCall.participants, ...conferenceCall.participants],
|
|
116
121
|
onHoldSince: undefined
|
|
117
122
|
});
|
|
118
123
|
setCalls([...callsList.current.filter(call => call.id !== conferenceCall.id)]);
|
|
@@ -153,6 +158,52 @@ export const CallControlPanelDemo = (args) => {
|
|
|
153
158
|
updatedCalls.push(consultCall);
|
|
154
159
|
setCalls(updatedCalls);
|
|
155
160
|
};
|
|
161
|
+
useEffect(() => {
|
|
162
|
+
const timeoutId = setTimeout(() => {
|
|
163
|
+
const caller = contactsList[0];
|
|
164
|
+
const consultCall = {
|
|
165
|
+
id: createUID(),
|
|
166
|
+
startedAt: Date.now(),
|
|
167
|
+
transferOptions: transferReasons,
|
|
168
|
+
muted: false,
|
|
169
|
+
onMuteToggle,
|
|
170
|
+
onPauseToggle,
|
|
171
|
+
onMergeCall,
|
|
172
|
+
onHandOffCall,
|
|
173
|
+
onDTMFPress: action('onDTMFPress'),
|
|
174
|
+
onTransferAction: (callId, transferData) => {
|
|
175
|
+
action('onTransferAction')(callId, transferData);
|
|
176
|
+
if (transferData.interaction)
|
|
177
|
+
setShowInteractionTransfer(true);
|
|
178
|
+
onEndCall(callId);
|
|
179
|
+
},
|
|
180
|
+
onConsultAction,
|
|
181
|
+
onConferenceAction,
|
|
182
|
+
onEndCall,
|
|
183
|
+
participants: [
|
|
184
|
+
{
|
|
185
|
+
name: caller?.primary || '',
|
|
186
|
+
info: caller?.secondary || '',
|
|
187
|
+
id: caller?.primary || '',
|
|
188
|
+
onHangUp
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
};
|
|
192
|
+
const incomingCall = {
|
|
193
|
+
id: createUID(),
|
|
194
|
+
onAcceptCall: () => {
|
|
195
|
+
setCalls([consultCall]);
|
|
196
|
+
},
|
|
197
|
+
participant: {
|
|
198
|
+
name: contactsList[0].primary,
|
|
199
|
+
info: contactsList[0].secondary,
|
|
200
|
+
id: contactsList[0].primary
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
setCalls([incomingCall, ...callsList.current]);
|
|
204
|
+
}, 4000);
|
|
205
|
+
return () => clearTimeout(timeoutId);
|
|
206
|
+
}, []);
|
|
156
207
|
return (<CallControlPanel visible={args.visible ?? true} heading={args.heading} statusOptions={userStatusOptions} status={currentStatus} inStatusSince={inStatusSince.current} onStatusChange={value => {
|
|
157
208
|
setCurrentStatus(value);
|
|
158
209
|
args.onStatusChange?.(userStatusOptions.find(s => s.id === value) ?? userStatusOptions[0]);
|
|
@@ -169,6 +220,7 @@ export const CallControlPanelDemo = (args) => {
|
|
|
169
220
|
onConsultAction,
|
|
170
221
|
onConferenceAction,
|
|
171
222
|
transferOptions: transferReasons,
|
|
223
|
+
interactionOptions,
|
|
172
224
|
onTransferAction: (id, data) => {
|
|
173
225
|
action('onTransferAction')(id, data);
|
|
174
226
|
if (data.interaction)
|
|
@@ -233,7 +285,13 @@ export const ExternalCTIDemo = (args) => {
|
|
|
233
285
|
`;
|
|
234
286
|
}
|
|
235
287
|
}, [containerRef.current, styling]);
|
|
236
|
-
return (<ExternalCTI heading={args.heading} draggable={args.isDraggable} visible={args.visible} ref={containerRef}
|
|
288
|
+
return (<ExternalCTI heading={args.heading} draggable={args.isDraggable} visible={args.visible} ref={containerRef} attachInteractionProps={{
|
|
289
|
+
onAddInteraction: () => { },
|
|
290
|
+
onCancel: () => null,
|
|
291
|
+
reasonOptions: transferReasons,
|
|
292
|
+
interactionOptions,
|
|
293
|
+
heading: 'Attach interaction to call'
|
|
294
|
+
}}/>);
|
|
237
295
|
};
|
|
238
296
|
ExternalCTIDemo.args = {
|
|
239
297
|
heading: 'External CTI',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallControlPanel.stories.jsx","sourceRoot":"","sources":["../../../src/cs/CallControlPanel/CallControlPanel.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { action } from '@storybook/addon-actions';\nimport { useEffect, useRef, useState } from 'react';\nimport { Meta, Story } from '@storybook/react';\nimport { lighten, readableColor } from 'polished';\n\nimport { createUID, tryCatch, useTheme } from '@pega/cosmos-react-core';\nimport {\n CallControlPanel,\n ExternalCTI,\n CallProps,\n CallParticipant,\n TransferData,\n UserAvailabilityStatusOption,\n CallControlPanelProps\n} from '@pega/cosmos-react-cs';\n\nimport {\n contactsList,\n createExternalIframeContent,\n ExternalStyles,\n transferReasons,\n userStatusOptions\n} from './CallControlPanel.mocks';\n\nexport default {\n title: 'Customer Service/CallControlPanel',\n component: CallControlPanel,\n args: {\n heading: 'Agent',\n isDraggable: true\n },\n argTypes: {\n heading: { control: { type: 'text' } },\n isDraggable: { control: { type: 'boolean' } }\n }\n} as Meta;\n\ninterface CallControlPanelStoryProps {\n heading: string;\n isDraggable?: boolean;\n status?: UserAvailabilityStatusOption['id'];\n onStatusChange?: (newStatus: UserAvailabilityStatusOption) => void;\n visible?: CallControlPanelProps['visible'];\n}\n\nexport const CallControlPanelDemo: Story<CallControlPanelStoryProps> = (\n args: CallControlPanelStoryProps\n) => {\n const [currentStatus, setCurrentStatus] = useState<UserAvailabilityStatusOption['id']>(\n args.status || 'available'\n );\n const inStatusSince = useRef(Date.now());\n const [calls, setCalls] = useState<CallProps[]>([]);\n const [contacts, setContacts] = useState(contactsList);\n const callsList = useRef(calls);\n callsList.current = calls;\n\n const [showInteractionTransfer, setShowInteractionTransfer] = useState(false);\n\n const onMuteToggle = (id: CallProps['id']) => {\n const thisCallIndex = callsList.current.findIndex(call => call.id === id);\n if (thisCallIndex < 0) return;\n const thisCall = callsList.current[thisCallIndex];\n callsList.current.splice(thisCallIndex, 1, {\n ...thisCall,\n muted: !thisCall.muted\n });\n setCalls([...callsList.current]);\n };\n\n const onMergeCall = (id: CallProps['id']) => {\n const thisCall = callsList.current.find(call => call.id === id);\n const activeCallIndex = callsList.current.findIndex(call => !call.onHoldSince);\n\n if (!thisCall || !activeCallIndex) return;\n callsList.current.splice(activeCallIndex, 1, {\n ...callsList.current[activeCallIndex],\n participants: [...callsList.current[activeCallIndex].participants, ...thisCall.participants],\n onHoldSince: undefined\n });\n setCalls([...callsList.current.filter(call => call.id !== id)]);\n };\n\n const onHandOffCall = (id: CallProps['id']) => {\n setCalls([...callsList.current.filter(call => call.id !== id && call.onHoldSince)]);\n };\n\n const onPauseToggle = (id: CallProps['id']) => {\n const thisCall = callsList.current.find(call => call.id === id);\n if (!thisCall) return;\n const wasPaused = !!thisCall.onHoldSince;\n callsList.current = callsList.current.map(call => {\n if (thisCall.id === call.id)\n return {\n ...call,\n onHoldSince: wasPaused ? undefined : Date.now(),\n onMergeCall: wasPaused ? onMergeCall : undefined,\n onHandOffCall: wasPaused ? onHandOffCall : undefined\n };\n return {\n ...call,\n onPauseToggle: wasPaused ? undefined : onPauseToggle,\n onMergeCall: wasPaused ? onMergeCall : undefined,\n onHandOffCall: wasPaused ? onHandOffCall : undefined\n };\n });\n setCalls([...callsList.current]);\n };\n\n const onEndCall = (id: CallProps['id']) => {\n setCalls(callsList.current.filter(item => item.id !== id));\n setCurrentStatus('available');\n };\n\n const onHangUp = (callId: CallProps['id'], participantId: CallParticipant['id']) => {\n const currentCallIndex = callsList.current.findIndex(call => call.id === callId);\n if (currentCallIndex < 0) return;\n const currentCall = callsList.current[currentCallIndex];\n callsList.current.splice(currentCallIndex, 1, {\n ...currentCall,\n participants: [\n ...currentCall.participants.filter(participant => participant.id !== participantId)\n ]\n });\n setCalls([...callsList.current]);\n };\n\n const onConferenceAction = (id: CallProps['id'], data: TransferData) => {\n const caller = contactsList.find(person => person.phoneNumber === data.phoneNumber);\n const conferenceCall: CallProps = {\n id: createUID(),\n startedAt: Date.now(),\n onMergeCall,\n transferOptions: transferReasons,\n muted: false,\n onMuteToggle,\n onPauseToggle,\n onHandOffCall,\n onEndCall,\n participants: [\n {\n name: caller?.primary || '',\n info: caller?.secondary || '',\n id: caller?.primary || '',\n onHangUp\n }\n ]\n };\n\n callsList.current.splice(0, 1, {\n ...callsList.current[0],\n participants: [...callsList.current[0].participants, ...conferenceCall.participants],\n onHoldSince: undefined\n });\n setCalls([...callsList.current.filter(call => call.id !== conferenceCall.id)]);\n };\n\n const onConsultAction = (id: CallProps['id'], data: TransferData) => {\n const caller = contactsList.find(person => person.phoneNumber === data.phoneNumber);\n const consultCall: CallProps = {\n id: createUID(),\n startedAt: Date.now(),\n transferOptions: transferReasons,\n muted: false,\n onMuteToggle,\n onPauseToggle,\n onMergeCall,\n onHandOffCall,\n onDTMFPress: action('onDTMFPress'),\n onTransferAction: (callId, transferData) => {\n action('onTransferAction')(callId, transferData);\n if (transferData.interaction) setShowInteractionTransfer(true);\n onEndCall(id);\n },\n onConsultAction,\n onConferenceAction,\n onEndCall,\n participants: [\n {\n name: caller?.primary || '',\n info: caller?.secondary || '',\n id: caller?.primary || '',\n onHangUp\n }\n ]\n };\n const updatedCalls: CallProps[] = callsList.current.map(call => {\n return { ...call, onHoldSince: Date.now(), onMergeCall, onPauseToggle: undefined };\n });\n updatedCalls.push(consultCall);\n setCalls(updatedCalls);\n };\n\n return (\n <CallControlPanel\n visible={args.visible ?? true}\n heading={args.heading}\n statusOptions={userStatusOptions}\n status={currentStatus}\n inStatusSince={inStatusSince.current}\n onStatusChange={value => {\n setCurrentStatus(value);\n args.onStatusChange?.(userStatusOptions.find(s => s.id === value) ?? userStatusOptions[0]);\n }}\n interactionTransfer={\n showInteractionTransfer\n ? {\n onCancel: () => setShowInteractionTransfer(false),\n onComplete: () => setShowInteractionTransfer(false)\n }\n : undefined\n }\n calls={calls}\n draggable={args.isDraggable}\n onAddCall={(phoneNumber: string) => {\n const call: CallProps = {\n id: createUID(),\n startedAt: Date.now(),\n slaConfig: [30, 50],\n onConsultAction,\n onConferenceAction,\n transferOptions: transferReasons,\n onTransferAction: (id, data) => {\n action('onTransferAction')(id, data);\n if (data.interaction) setShowInteractionTransfer(true);\n onEndCall(id);\n },\n muted: false,\n onMuteToggle,\n onPauseToggle,\n onMergeCall,\n onDTMFPress: action('onDTMFPress'),\n onEndCall: () => onEndCall(call.id),\n participants: [\n {\n id: contactsList.find(person => person.phoneNumber === phoneNumber)?.primary || '',\n name:\n contactsList.find(person => person.phoneNumber === phoneNumber)?.primary ||\n 'Unknown',\n onHangUp\n }\n ]\n };\n setCalls([call]);\n setCurrentStatus('not_available');\n }}\n contactsList={contacts}\n onFavoriteToggle={(phoneNumber: string, favorite: boolean) => {\n const element = contacts.find(item => item.phoneNumber === phoneNumber);\n element!.favorite = !favorite;\n setContacts([...contacts]);\n }}\n />\n );\n};\n\nexport const ExternalCTIDemo: Story<CallControlPanelStoryProps & { applyAppStyling: boolean }> = (\n args: CallControlPanelStoryProps & { applyAppStyling: boolean }\n) => {\n const containerRef = useRef<HTMLDivElement>(null);\n\n const { base, components } = useTheme();\n\n const styling: ExternalStyles | undefined = args.applyAppStyling\n ? {\n '--app-bg-color': base.palette['app-background'],\n '--header-border-color': base.palette['secondary-background'],\n '--text-color': base.palette['foreground-color'],\n '--msg-me-bg-color': base.palette.interactive,\n '--msg-me-text-color': tryCatch(() => readableColor(base.palette.interactive)),\n '--msg-you-bg-color': base.palette['primary-background'],\n '--msg-you-text-color': tryCatch(() => readableColor(base.palette['primary-background'])),\n '--msg-border-radius': '16px',\n '--button-text-color': tryCatch(() => readableColor(components.button.color)),\n '--button-bg-color': components.button.color,\n '--button-border-color': 'transparent',\n '--button-border-radius': `calc(${components.button['border-radius']} * ${base['border-radius']})`,\n '--button-hover-bg-color': tryCatch(() => lighten(0.1, components.button.color)),\n '--button-height': components.input.height,\n '--input-height': components.input.height,\n '--input-background-color': components.input['background-color'],\n '--input-text-color': base.palette['foreground-color'],\n '--input-border-radius': `calc(0.5 * ${base['border-radius']})`,\n '--input-focus-border-color': 'transparent',\n '--input-focus-box-shadow': components.button['focus-shadow'],\n '--footer-bg-color': base.palette['app-background']\n }\n : undefined;\n\n useEffect(() => {\n if (containerRef.current) {\n containerRef.current.innerHTML = `\n <iframe id='external-cti' srcdoc='${createExternalIframeContent(\n styling\n )}' width='100%' height='500px'></iframe>\n `;\n }\n }, [containerRef.current, styling]);\n\n return (\n <ExternalCTI\n heading={args.heading}\n draggable={args.isDraggable}\n visible={args.visible}\n ref={containerRef}\n />\n );\n};\n\nExternalCTIDemo.args = {\n heading: 'External CTI',\n isDraggable: true,\n applyAppStyling: false\n};\n\nExternalCTIDemo.argTypes = {\n heading: { control: { type: 'text' } },\n isDraggable: { control: { type: 'boolean' } },\n applyAppStyling: { control: { type: 'boolean' } }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"CallControlPanel.stories.jsx","sourceRoot":"","sources":["../../../src/cs/CallControlPanel/CallControlPanel.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { action } from '@storybook/addon-actions';\nimport { useEffect, useRef, useState } from 'react';\nimport { Meta, Story } from '@storybook/react';\nimport { lighten, readableColor } from 'polished';\n\nimport { createUID, tryCatch, useTheme } from '@pega/cosmos-react-core';\nimport {\n CallControlPanel,\n ExternalCTI,\n CallProps,\n IncomingCallProps,\n CallParticipant,\n TransferData,\n UserAvailabilityStatusOption,\n CallControlPanelProps\n} from '@pega/cosmos-react-cs';\n\nimport {\n contactsList,\n createExternalIframeContent,\n ExternalStyles,\n interactionOptions,\n transferReasons,\n userStatusOptions\n} from './CallControlPanel.mocks';\n\nexport default {\n title: 'Customer Service/CallControlPanel',\n component: CallControlPanel,\n args: {\n heading: 'Agent',\n isDraggable: true\n },\n argTypes: {\n heading: { control: { type: 'text' } },\n isDraggable: { control: { type: 'boolean' } }\n }\n} as Meta;\n\ninterface CallControlPanelStoryProps {\n heading: string;\n isDraggable?: boolean;\n status?: UserAvailabilityStatusOption['id'];\n onStatusChange?: (newStatus: UserAvailabilityStatusOption) => void;\n visible?: CallControlPanelProps['visible'];\n}\n\nexport const CallControlPanelDemo: Story<CallControlPanelStoryProps> = (\n args: CallControlPanelStoryProps\n) => {\n const [currentStatus, setCurrentStatus] = useState<UserAvailabilityStatusOption['id']>(\n args.status || 'available'\n );\n const inStatusSince = useRef(Date.now());\n const [calls, setCalls] = useState<(CallProps | IncomingCallProps)[]>([]);\n\n const [contacts, setContacts] = useState(contactsList);\n const callsList = useRef(calls);\n callsList.current = calls;\n\n const [showInteractionTransfer, setShowInteractionTransfer] = useState(false);\n\n const onMuteToggle = (id: CallProps['id']) => {\n const thisCallIndex = callsList.current.findIndex(call => call.id === id);\n if (thisCallIndex < 0) return;\n const thisCall = callsList.current[thisCallIndex];\n callsList.current.splice(thisCallIndex, 1, {\n ...thisCall,\n muted: !(thisCall as CallProps).muted\n });\n setCalls([...callsList.current]);\n };\n\n const onMergeCall = (id: CallProps['id']) => {\n const thisCall = callsList.current.find(call => call.id === id) as CallProps;\n const activeCallIndex = callsList.current.findIndex(call => !(call as CallProps).onHoldSince);\n const currentCall = callsList.current[activeCallIndex] as CallProps;\n\n if (!thisCall || !activeCallIndex) return;\n callsList.current.splice(activeCallIndex, 1, {\n ...currentCall,\n participants: [...currentCall.participants, ...thisCall.participants],\n onHoldSince: undefined\n });\n setCalls([...callsList.current.filter(call => call.id !== id)]);\n };\n\n const onHandOffCall = (id: CallProps['id']) => {\n setCalls([\n ...callsList.current.filter(call => call.id !== id && (call as CallProps).onHoldSince)\n ]);\n };\n\n const onPauseToggle = (id: CallProps['id']) => {\n const thisCall = callsList.current.find(call => call.id === id);\n if (!thisCall) return;\n const wasPaused = !!(thisCall as CallProps).onHoldSince;\n callsList.current = callsList.current.map(call => {\n if (thisCall.id === call.id)\n return {\n ...call,\n onHoldSince: wasPaused ? undefined : Date.now(),\n onMergeCall: wasPaused ? onMergeCall : undefined,\n onHandOffCall: wasPaused ? onHandOffCall : undefined\n };\n return {\n ...call,\n onPauseToggle: wasPaused ? undefined : onPauseToggle,\n onMergeCall: wasPaused ? onMergeCall : undefined,\n onHandOffCall: wasPaused ? onHandOffCall : undefined\n };\n });\n setCalls([...callsList.current]);\n };\n\n const onEndCall = (id: CallProps['id']) => {\n setCalls(callsList.current.filter(item => item.id !== id));\n setCurrentStatus('available');\n };\n\n const onHangUp = (callId: CallProps['id'], participantId: CallParticipant['id']) => {\n const currentCallIndex = callsList.current.findIndex(call => call.id === callId);\n if (currentCallIndex < 0) return;\n const currentCall = callsList.current[currentCallIndex] as CallProps;\n callsList.current.splice(currentCallIndex, 1, {\n ...currentCall,\n participants: [\n ...currentCall.participants.filter(participant => participant.id !== participantId)\n ]\n });\n setCalls([...callsList.current]);\n };\n\n const onConferenceAction = (id: CallProps['id'], data: TransferData) => {\n const caller = contactsList.find(person => person.phoneNumber === data.phoneNumber);\n const conferenceCall: CallProps = {\n id: createUID(),\n startedAt: Date.now(),\n onMergeCall,\n transferOptions: transferReasons,\n interactionOptions,\n muted: false,\n onMuteToggle,\n onPauseToggle,\n onHandOffCall,\n onEndCall,\n participants: [\n {\n name: caller?.primary || '',\n info: caller?.secondary || '',\n id: caller?.primary || '',\n onHangUp\n }\n ]\n };\n\n const currentCall = callsList.current[0] as CallProps;\n callsList.current.splice(0, 1, {\n ...callsList.current[0],\n participants: [...currentCall.participants, ...conferenceCall.participants],\n onHoldSince: undefined\n });\n setCalls([...callsList.current.filter(call => call.id !== conferenceCall.id)]);\n };\n\n const onConsultAction = (id: CallProps['id'], data: TransferData) => {\n const caller = contactsList.find(person => person.phoneNumber === data.phoneNumber);\n const consultCall: CallProps = {\n id: createUID(),\n startedAt: Date.now(),\n transferOptions: transferReasons,\n muted: false,\n onMuteToggle,\n onPauseToggle,\n onMergeCall,\n onHandOffCall,\n onDTMFPress: action('onDTMFPress'),\n onTransferAction: (callId, transferData) => {\n action('onTransferAction')(callId, transferData);\n if (transferData.interaction) setShowInteractionTransfer(true);\n onEndCall(id);\n },\n onConsultAction,\n onConferenceAction,\n onEndCall,\n participants: [\n {\n name: caller?.primary || '',\n info: caller?.secondary || '',\n id: caller?.primary || '',\n onHangUp\n }\n ]\n };\n\n const updatedCalls: (CallProps | IncomingCallProps)[] = callsList.current.map(call => {\n return { ...call, onHoldSince: Date.now(), onMergeCall, onPauseToggle: undefined };\n });\n updatedCalls.push(consultCall);\n setCalls(updatedCalls);\n };\n\n useEffect(() => {\n const timeoutId = setTimeout(() => {\n const caller = contactsList[0];\n const consultCall: CallProps = {\n id: createUID(),\n startedAt: Date.now(),\n transferOptions: transferReasons,\n muted: false,\n onMuteToggle,\n onPauseToggle,\n onMergeCall,\n onHandOffCall,\n onDTMFPress: action('onDTMFPress'),\n onTransferAction: (callId, transferData) => {\n action('onTransferAction')(callId, transferData);\n if (transferData.interaction) setShowInteractionTransfer(true);\n onEndCall(callId);\n },\n onConsultAction,\n onConferenceAction,\n onEndCall,\n participants: [\n {\n name: caller?.primary || '',\n info: caller?.secondary || '',\n id: caller?.primary || '',\n onHangUp\n }\n ]\n };\n\n const incomingCall: IncomingCallProps = {\n id: createUID(),\n onAcceptCall: () => {\n setCalls([consultCall]);\n },\n participant: {\n name: contactsList[0].primary,\n info: contactsList[0].secondary,\n id: contactsList[0].primary\n }\n };\n setCalls([incomingCall, ...callsList.current]);\n }, 4000);\n return () => clearTimeout(timeoutId);\n }, []);\n\n return (\n <CallControlPanel\n visible={args.visible ?? true}\n heading={args.heading}\n statusOptions={userStatusOptions}\n status={currentStatus}\n inStatusSince={inStatusSince.current}\n onStatusChange={value => {\n setCurrentStatus(value);\n args.onStatusChange?.(userStatusOptions.find(s => s.id === value) ?? userStatusOptions[0]);\n }}\n interactionTransfer={\n showInteractionTransfer\n ? {\n onCancel: () => setShowInteractionTransfer(false),\n onComplete: () => setShowInteractionTransfer(false)\n }\n : undefined\n }\n calls={calls}\n draggable={args.isDraggable}\n onAddCall={(phoneNumber: string) => {\n const call: CallProps = {\n id: createUID(),\n startedAt: Date.now(),\n slaConfig: [30, 50],\n onConsultAction,\n onConferenceAction,\n transferOptions: transferReasons,\n interactionOptions,\n onTransferAction: (id, data) => {\n action('onTransferAction')(id, data);\n if (data.interaction) setShowInteractionTransfer(true);\n onEndCall(id);\n },\n muted: false,\n onMuteToggle,\n onPauseToggle,\n onMergeCall,\n onDTMFPress: action('onDTMFPress'),\n onEndCall: () => onEndCall(call.id),\n participants: [\n {\n id: contactsList.find(person => person.phoneNumber === phoneNumber)?.primary || '',\n name:\n contactsList.find(person => person.phoneNumber === phoneNumber)?.primary ||\n 'Unknown',\n onHangUp\n }\n ]\n };\n\n setCalls([call]);\n setCurrentStatus('not_available');\n }}\n contactsList={contacts}\n onFavoriteToggle={(phoneNumber: string, favorite: boolean) => {\n const element = contacts.find(item => item.phoneNumber === phoneNumber);\n element!.favorite = !favorite;\n setContacts([...contacts]);\n }}\n />\n );\n};\n\nexport const ExternalCTIDemo: Story<CallControlPanelStoryProps & { applyAppStyling: boolean }> = (\n args: CallControlPanelStoryProps & { applyAppStyling: boolean }\n) => {\n const containerRef = useRef<HTMLDivElement>(null);\n\n const { base, components } = useTheme();\n\n const styling: ExternalStyles | undefined = args.applyAppStyling\n ? {\n '--app-bg-color': base.palette['app-background'],\n '--header-border-color': base.palette['secondary-background'],\n '--text-color': base.palette['foreground-color'],\n '--msg-me-bg-color': base.palette.interactive,\n '--msg-me-text-color': tryCatch(() => readableColor(base.palette.interactive)),\n '--msg-you-bg-color': base.palette['primary-background'],\n '--msg-you-text-color': tryCatch(() => readableColor(base.palette['primary-background'])),\n '--msg-border-radius': '16px',\n '--button-text-color': tryCatch(() => readableColor(components.button.color)),\n '--button-bg-color': components.button.color,\n '--button-border-color': 'transparent',\n '--button-border-radius': `calc(${components.button['border-radius']} * ${base['border-radius']})`,\n '--button-hover-bg-color': tryCatch(() => lighten(0.1, components.button.color)),\n '--button-height': components.input.height,\n '--input-height': components.input.height,\n '--input-background-color': components.input['background-color'],\n '--input-text-color': base.palette['foreground-color'],\n '--input-border-radius': `calc(0.5 * ${base['border-radius']})`,\n '--input-focus-border-color': 'transparent',\n '--input-focus-box-shadow': components.button['focus-shadow'],\n '--footer-bg-color': base.palette['app-background']\n }\n : undefined;\n\n useEffect(() => {\n if (containerRef.current) {\n containerRef.current.innerHTML = `\n <iframe id='external-cti' srcdoc='${createExternalIframeContent(\n styling\n )}' width='100%' height='500px'></iframe>\n `;\n }\n }, [containerRef.current, styling]);\n\n return (\n <ExternalCTI\n heading={args.heading}\n draggable={args.isDraggable}\n visible={args.visible}\n ref={containerRef}\n attachInteractionProps={{\n onAddInteraction: () => {},\n onCancel: () => null,\n reasonOptions: transferReasons,\n interactionOptions,\n heading: 'Attach interaction to call'\n }}\n />\n );\n};\n\nExternalCTIDemo.args = {\n heading: 'External CTI',\n isDraggable: true,\n applyAppStyling: false\n};\n\nExternalCTIDemo.argTypes = {\n heading: { control: { type: 'text' } },\n isDraggable: { control: { type: 'boolean' } },\n applyAppStyling: { control: { type: 'boolean' } }\n};\n"]}
|
|
@@ -221,7 +221,6 @@ export declare const mockEmailBodyTemplates: {
|
|
|
221
221
|
content: string;
|
|
222
222
|
}[];
|
|
223
223
|
export declare const launchEmailComposer: (id: string, launchAction: LaunchAction, composerProps: EmailComposerProps, create: ModalManagerContextValue['create']) => void;
|
|
224
|
-
export declare const emailActions: EmailProps['actions'];
|
|
225
224
|
export declare const emailDemoActions: (id: EmailProps['id'], subject: EmailProps['subject'], createOrActivateComposer: (id: EmailProps['id'], launchAction: LaunchAction, composerProps: EmailComposerProps) => void, draft: boolean, body: EmailProps['body'], deleteEmail?: ((id: EmailProps['id']) => void) | undefined) => JSX.Element;
|
|
226
225
|
export declare const generateEmailConversationParticipants: (emails: EmailProps[], fields?: string[]) => EmailUser[];
|
|
227
226
|
export declare const sentiment: SentimentProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Email.mocks.d.ts","sourceRoot":"","sources":["../../../src/social/Email/Email.mocks.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Email.mocks.d.ts","sourceRoot":"","sources":["../../../src/social/Email/Email.mocks.tsx"],"names":[],"mappings":"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"}
|
|
@@ -510,19 +510,6 @@ export const launchEmailComposer = (id, launchAction, composerProps, create) =>
|
|
|
510
510
|
composerHandle
|
|
511
511
|
};
|
|
512
512
|
};
|
|
513
|
-
export const emailActions = (<MenuButton text='Email actions' variant='simple' icon='more' iconOnly menu={{
|
|
514
|
-
items: [
|
|
515
|
-
{
|
|
516
|
-
primary: 'Reply'
|
|
517
|
-
},
|
|
518
|
-
{
|
|
519
|
-
primary: 'Reply all'
|
|
520
|
-
},
|
|
521
|
-
{
|
|
522
|
-
primary: 'Forward'
|
|
523
|
-
}
|
|
524
|
-
].map((item, i) => ({ ...item, id: `item_${i}` }))
|
|
525
|
-
}}/>);
|
|
526
513
|
export const emailDemoActions = (id, subject, createOrActivateComposer, draft, body, deleteEmail) => {
|
|
527
514
|
const menuItems = draft
|
|
528
515
|
? [
|