@pega/cosmos-react-demos 4.0.0-dev.18.0 → 4.0.0-dev.18.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.
Files changed (123) hide show
  1. package/jsx/core/AIButton/AIButton.stories.d.ts +5 -1
  2. package/jsx/core/AIButton/AIButton.stories.d.ts.map +1 -1
  3. package/jsx/core/AIButton/AIButton.stories.jsx +55 -28
  4. package/jsx/core/AIButton/AIButton.stories.jsx.map +1 -1
  5. package/jsx/core/AppShell/AppShell.stories.d.ts.map +1 -1
  6. package/jsx/core/AppShell/AppShell.stories.jsx +8 -54
  7. package/jsx/core/AppShell/AppShell.stories.jsx.map +1 -1
  8. package/jsx/core/Banner/Banner.stories.d.ts.map +1 -1
  9. package/jsx/core/Banner/Banner.stories.jsx +17 -11
  10. package/jsx/core/Banner/Banner.stories.jsx.map +1 -1
  11. package/jsx/core/Dialog/FormDialog.mocks.d.ts.map +1 -1
  12. package/jsx/core/Dialog/FormDialog.mocks.jsx +4 -2
  13. package/jsx/core/Dialog/FormDialog.mocks.jsx.map +1 -1
  14. package/jsx/core/Dialog/InfoDialog.mocks.d.ts.map +1 -1
  15. package/jsx/core/Dialog/InfoDialog.mocks.jsx +2 -1
  16. package/jsx/core/Dialog/InfoDialog.mocks.jsx.map +1 -1
  17. package/jsx/core/Modal/Modal.stories.d.ts.map +1 -1
  18. package/jsx/core/Modal/Modal.stories.jsx +2 -1
  19. package/jsx/core/Modal/Modal.stories.jsx.map +1 -1
  20. package/jsx/core/MultiStepForm/MultiStepForm.mocks.d.ts +36 -3
  21. package/jsx/core/MultiStepForm/MultiStepForm.mocks.d.ts.map +1 -1
  22. package/jsx/core/MultiStepForm/MultiStepForm.mocks.jsx +294 -39
  23. package/jsx/core/MultiStepForm/MultiStepForm.mocks.jsx.map +1 -1
  24. package/jsx/core/MultiStepForm/MultiStepForm.stories.d.ts +2 -5
  25. package/jsx/core/MultiStepForm/MultiStepForm.stories.d.ts.map +1 -1
  26. package/jsx/core/MultiStepForm/MultiStepForm.stories.jsx +59 -172
  27. package/jsx/core/MultiStepForm/MultiStepForm.stories.jsx.map +1 -1
  28. package/jsx/core/Progress/Progress.mocks.d.ts +2 -0
  29. package/jsx/core/Progress/Progress.mocks.d.ts.map +1 -0
  30. package/jsx/core/Progress/Progress.mocks.js +2 -0
  31. package/jsx/core/Progress/Progress.mocks.js.map +1 -0
  32. package/jsx/core/Progress/Progress.stories.d.ts.map +1 -1
  33. package/jsx/core/Progress/Progress.stories.jsx +2 -2
  34. package/jsx/core/Progress/Progress.stories.jsx.map +1 -1
  35. package/jsx/core/Tooltip/Tooltip.stories.d.ts +1 -0
  36. package/jsx/core/Tooltip/Tooltip.stories.d.ts.map +1 -1
  37. package/jsx/core/Tooltip/Tooltip.stories.jsx +21 -1
  38. package/jsx/core/Tooltip/Tooltip.stories.jsx.map +1 -1
  39. package/jsx/core/Tooltip/Tooltip.styles.d.ts +2 -0
  40. package/jsx/core/Tooltip/Tooltip.styles.d.ts.map +1 -0
  41. package/jsx/core/Tooltip/Tooltip.styles.js +23 -0
  42. package/jsx/core/Tooltip/Tooltip.styles.js.map +1 -0
  43. package/jsx/work/Assignments/Assignments.stories.d.ts.map +1 -1
  44. package/jsx/work/Assignments/Assignments.stories.jsx +3 -29
  45. package/jsx/work/Assignments/Assignments.stories.jsx.map +1 -1
  46. package/jsx/work/CaseView/Attachments.mocks.d.ts.map +1 -1
  47. package/jsx/work/CaseView/Attachments.mocks.jsx +62 -60
  48. package/jsx/work/CaseView/Attachments.mocks.jsx.map +1 -1
  49. package/jsx/work/CaseView/CaseView.mocks.d.ts.map +1 -1
  50. package/jsx/work/CaseView/CaseView.mocks.jsx +97 -9
  51. package/jsx/work/CaseView/CaseView.mocks.jsx.map +1 -1
  52. package/jsx/work/CaseView/CaseView.stories.d.ts +2 -2
  53. package/jsx/work/CaseView/CaseView.stories.d.ts.map +1 -1
  54. package/jsx/work/CaseView/CaseView.stories.jsx +2 -2
  55. package/jsx/work/CaseView/CaseView.stories.jsx.map +1 -1
  56. package/jsx/work/CaseView/FileService.mock.d.ts.map +1 -1
  57. package/jsx/work/CaseView/FileService.mock.jsx +2 -6
  58. package/jsx/work/CaseView/FileService.mock.jsx.map +1 -1
  59. package/jsx/work/Tasks/Tasks.stories.d.ts.map +1 -1
  60. package/jsx/work/Tasks/Tasks.stories.jsx +3 -29
  61. package/jsx/work/Tasks/Tasks.stories.jsx.map +1 -1
  62. package/lib/core/AIButton/AIButton.stories.d.ts +5 -1
  63. package/lib/core/AIButton/AIButton.stories.d.ts.map +1 -1
  64. package/lib/core/AIButton/AIButton.stories.js +57 -29
  65. package/lib/core/AIButton/AIButton.stories.js.map +1 -1
  66. package/lib/core/AppShell/AppShell.stories.d.ts.map +1 -1
  67. package/lib/core/AppShell/AppShell.stories.js +9 -21
  68. package/lib/core/AppShell/AppShell.stories.js.map +1 -1
  69. package/lib/core/Banner/Banner.stories.d.ts.map +1 -1
  70. package/lib/core/Banner/Banner.stories.js +17 -11
  71. package/lib/core/Banner/Banner.stories.js.map +1 -1
  72. package/lib/core/Dialog/FormDialog.mocks.d.ts.map +1 -1
  73. package/lib/core/Dialog/FormDialog.mocks.js +4 -2
  74. package/lib/core/Dialog/FormDialog.mocks.js.map +1 -1
  75. package/lib/core/Dialog/InfoDialog.mocks.d.ts.map +1 -1
  76. package/lib/core/Dialog/InfoDialog.mocks.js +2 -1
  77. package/lib/core/Dialog/InfoDialog.mocks.js.map +1 -1
  78. package/lib/core/Modal/Modal.stories.d.ts.map +1 -1
  79. package/lib/core/Modal/Modal.stories.js +2 -1
  80. package/lib/core/Modal/Modal.stories.js.map +1 -1
  81. package/lib/core/MultiStepForm/MultiStepForm.mocks.d.ts +36 -3
  82. package/lib/core/MultiStepForm/MultiStepForm.mocks.d.ts.map +1 -1
  83. package/lib/core/MultiStepForm/MultiStepForm.mocks.js +269 -31
  84. package/lib/core/MultiStepForm/MultiStepForm.mocks.js.map +1 -1
  85. package/lib/core/MultiStepForm/MultiStepForm.stories.d.ts +2 -5
  86. package/lib/core/MultiStepForm/MultiStepForm.stories.d.ts.map +1 -1
  87. package/lib/core/MultiStepForm/MultiStepForm.stories.js +54 -170
  88. package/lib/core/MultiStepForm/MultiStepForm.stories.js.map +1 -1
  89. package/lib/core/Progress/Progress.mocks.d.ts +2 -0
  90. package/lib/core/Progress/Progress.mocks.d.ts.map +1 -0
  91. package/lib/core/Progress/Progress.mocks.js +2 -0
  92. package/lib/core/Progress/Progress.mocks.js.map +1 -0
  93. package/lib/core/Progress/Progress.stories.d.ts.map +1 -1
  94. package/lib/core/Progress/Progress.stories.js +2 -2
  95. package/lib/core/Progress/Progress.stories.js.map +1 -1
  96. package/lib/core/Tooltip/Tooltip.stories.d.ts +1 -0
  97. package/lib/core/Tooltip/Tooltip.stories.d.ts.map +1 -1
  98. package/lib/core/Tooltip/Tooltip.stories.js +9 -1
  99. package/lib/core/Tooltip/Tooltip.stories.js.map +1 -1
  100. package/lib/core/Tooltip/Tooltip.styles.d.ts +2 -0
  101. package/lib/core/Tooltip/Tooltip.styles.d.ts.map +1 -0
  102. package/lib/core/Tooltip/Tooltip.styles.js +23 -0
  103. package/lib/core/Tooltip/Tooltip.styles.js.map +1 -0
  104. package/lib/work/Assignments/Assignments.stories.d.ts.map +1 -1
  105. package/lib/work/Assignments/Assignments.stories.js +4 -10
  106. package/lib/work/Assignments/Assignments.stories.js.map +1 -1
  107. package/lib/work/CaseView/Attachments.mocks.d.ts.map +1 -1
  108. package/lib/work/CaseView/Attachments.mocks.js +77 -70
  109. package/lib/work/CaseView/Attachments.mocks.js.map +1 -1
  110. package/lib/work/CaseView/CaseView.mocks.d.ts.map +1 -1
  111. package/lib/work/CaseView/CaseView.mocks.js +61 -9
  112. package/lib/work/CaseView/CaseView.mocks.js.map +1 -1
  113. package/lib/work/CaseView/CaseView.stories.d.ts +2 -2
  114. package/lib/work/CaseView/CaseView.stories.d.ts.map +1 -1
  115. package/lib/work/CaseView/CaseView.stories.js +2 -2
  116. package/lib/work/CaseView/CaseView.stories.js.map +1 -1
  117. package/lib/work/CaseView/FileService.mock.d.ts.map +1 -1
  118. package/lib/work/CaseView/FileService.mock.js +2 -6
  119. package/lib/work/CaseView/FileService.mock.js.map +1 -1
  120. package/lib/work/Tasks/Tasks.stories.d.ts.map +1 -1
  121. package/lib/work/Tasks/Tasks.stories.js +4 -10
  122. package/lib/work/Tasks/Tasks.stories.js.map +1 -1
  123. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"Progress.stories.jsx","sourceRoot":"","sources":["../../../src/core/Progress/Progress.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useState } from 'react';\nimport { Meta, Story } from '@storybook/react';\n\nimport { Configuration, Flex, Progress, ProgressProps, Text } from '@pega/cosmos-react-core';\n\nimport { StyledDemoWrap } from './Progress.styles';\n\nexport default {\n title: 'Core/Progress',\n component: Progress,\n excludeStories: ['ConfigurableProgress'],\n args: {\n variant: 'ring',\n placement: 'local',\n message: '',\n determinate: false,\n value: 67,\n focusOnVisible: false,\n visible: true,\n announce: false,\n cycleProp: 'none'\n },\n argTypes: {\n variant: { options: ['ring', 'bar', 'ellipsis'], control: { type: 'select' } },\n placement: { options: ['local', 'global', 'block', 'inline'], control: { type: 'select' } },\n message: { control: { type: 'text' } },\n focusOnVisible: { control: { type: 'boolean' } },\n determinate: { control: { type: 'boolean' } },\n value: { control: { type: 'number' } },\n visible: { control: { type: 'boolean' } },\n announce: { control: { type: 'boolean' } },\n cycleProp: { control: { type: 'select' }, options: ['none', 'value', 'message', 'visible'] }\n }\n} as Meta;\n\ninterface ProgressDemoProps extends ProgressProps {\n announce?: boolean;\n determinate?: boolean;\n focusOnVisible?: boolean;\n cycleProp?: 'none' | 'value' | 'message' | 'visible';\n}\n\nexport const ProgressDemo: Story<ProgressDemoProps> = (args: ProgressDemoProps) => {\n const cycling = args.cycleProp !== 'none';\n const [visible, setVisible] = useState(args.visible);\n const [value, setValue] = useState(args.value ?? 0);\n const messages = ['Loading', 'Getting ready', 'Working on your request', 'Resolving content'];\n const [messageIndex, setMessageIndex] = useState(0);\n const message = useMemo(() => {\n if (args.cycleProp === 'message') {\n return messages[messageIndex];\n }\n\n return args.message;\n }, [args.cycleProp, args.message, messageIndex]);\n\n useEffect(() => {\n if (args.cycleProp !== 'value') {\n setValue(args.value ?? 0);\n }\n }, [args.cycleProp, args.value]);\n\n useEffect(() => {\n if (args.cycleProp !== 'visible') {\n setVisible(args.visible);\n }\n }, [args.cycleProp, args.visible]);\n\n useEffect(() => {\n if (args.cycleProp === 'none') return;\n\n const duration = args.cycleProp === 'value' ? 2000 : 3000;\n const timeout = setTimeout(() => {\n switch (args.cycleProp) {\n case 'message': {\n if (messageIndex < messages.length - 1) setMessageIndex(messageIndex + 1);\n else setMessageIndex(0);\n break;\n }\n case 'value': {\n if (value < 100) setValue(Math.min(value + 10, 100));\n else setValue(0);\n break;\n }\n case 'visible': {\n setVisible(!visible);\n break;\n }\n default:\n break;\n }\n }, duration);\n\n if (!cycling) {\n clearTimeout(timeout);\n }\n\n return () => clearTimeout(timeout);\n }, [args.cycleProp, message, visible, value, cycling]);\n\n return (\n <Flex container={{ direction: 'column', gap: 1 }}>\n <Text variant='h1'>Demo Content</Text>\n\n <StyledDemoWrap>\n {['block', 'local'].includes(args.placement || '') && (\n <Text>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud\n exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure\n dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt\n mollit anim id est laborum.\n </Text>\n )}\n {args.placement === 'inline' && <Text>Progress demo </Text>}\n <Progress\n variant={args.variant}\n placement={args.placement}\n message={message}\n value={args.determinate || args.cycleProp === 'value' ? value : undefined}\n visible={visible}\n focusOnVisible={args.focusOnVisible}\n liveConfig={args.announce ? { contextualLabel: 'Demo' } : undefined}\n />\n </StyledDemoWrap>\n </Flex>\n );\n};\n\ninterface ConfigurableProgressProps extends ProgressProps {\n progressColor?: string;\n}\n\nexport const ConfigurableProgress: Story<ConfigurableProgressProps> = (\n args: ConfigurableProgressProps\n) => {\n return (\n <Configuration\n theme={{\n components: {\n progress: {\n 'progress-color': args.progressColor\n }\n }\n }}\n >\n <Flex container={{ justify: 'center', alignItems: 'center' }} as={StyledDemoWrap}>\n <Progress variant={args.variant} placement='local' message='Loading' visible />\n </Flex>\n </Configuration>\n );\n};\n\nConfigurableProgress.args = {\n progressColor: '#076bc9'\n};\n\nConfigurableProgress.argTypes = {\n progressColor: { control: { type: 'color' } },\n placement: { table: { disable: true } },\n message: { table: { disable: true } }\n};\n"]}
1
+ {"version":3,"file":"Progress.stories.jsx","sourceRoot":"","sources":["../../../src/core/Progress/Progress.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useState } from 'react';\nimport { Meta, Story } from '@storybook/react';\n\nimport { Configuration, Flex, Progress, ProgressProps, Text } from '@pega/cosmos-react-core';\n\nimport { StyledDemoWrap } from './Progress.styles';\nimport { loadingTimeoutMS } from './Progress.mocks';\n\nexport default {\n title: 'Core/Progress',\n component: Progress,\n excludeStories: ['ConfigurableProgress'],\n args: {\n variant: 'ring',\n placement: 'local',\n message: '',\n determinate: false,\n value: 67,\n focusOnVisible: false,\n visible: true,\n announce: false,\n cycleProp: 'none'\n },\n argTypes: {\n variant: { options: ['ring', 'bar', 'ellipsis'], control: { type: 'select' } },\n placement: { options: ['local', 'global', 'block', 'inline'], control: { type: 'select' } },\n message: { control: { type: 'text' } },\n focusOnVisible: { control: { type: 'boolean' } },\n determinate: { control: { type: 'boolean' } },\n value: { control: { type: 'number' } },\n visible: { control: { type: 'boolean' } },\n announce: { control: { type: 'boolean' } },\n cycleProp: { control: { type: 'select' }, options: ['none', 'value', 'message', 'visible'] }\n }\n} as Meta;\n\ninterface ProgressDemoProps extends ProgressProps {\n announce?: boolean;\n determinate?: boolean;\n focusOnVisible?: boolean;\n cycleProp?: 'none' | 'value' | 'message' | 'visible';\n}\n\nexport const ProgressDemo: Story<ProgressDemoProps> = (args: ProgressDemoProps) => {\n const cycling = args.cycleProp !== 'none';\n const [visible, setVisible] = useState(args.visible);\n const [value, setValue] = useState(args.value ?? 0);\n const messages = ['Loading', 'Getting ready', 'Working on your request', 'Resolving content'];\n const [messageIndex, setMessageIndex] = useState(0);\n const message = useMemo(() => {\n if (args.cycleProp === 'message') {\n return messages[messageIndex];\n }\n\n return args.message;\n }, [args.cycleProp, args.message, messageIndex]);\n\n useEffect(() => {\n if (args.cycleProp !== 'value') {\n setValue(args.value ?? 0);\n }\n }, [args.cycleProp, args.value]);\n\n useEffect(() => {\n if (args.cycleProp !== 'visible') {\n setVisible(args.visible);\n }\n }, [args.cycleProp, args.visible]);\n\n useEffect(() => {\n if (args.cycleProp === 'none') return;\n\n const timeout = setTimeout(() => {\n switch (args.cycleProp) {\n case 'message': {\n if (messageIndex < messages.length - 1) setMessageIndex(messageIndex + 1);\n else setMessageIndex(0);\n break;\n }\n case 'value': {\n if (value < 100) setValue(Math.min(value + 10, 100));\n else setValue(0);\n break;\n }\n case 'visible': {\n setVisible(!visible);\n break;\n }\n default:\n break;\n }\n }, loadingTimeoutMS);\n\n if (!cycling) {\n clearTimeout(timeout);\n }\n\n return () => clearTimeout(timeout);\n }, [args.cycleProp, message, visible, value, cycling]);\n\n return (\n <Flex container={{ direction: 'column', gap: 1 }}>\n <Text variant='h1'>Demo Content</Text>\n\n <StyledDemoWrap>\n {['block', 'local'].includes(args.placement || '') && (\n <Text>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud\n exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure\n dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt\n mollit anim id est laborum.\n </Text>\n )}\n {args.placement === 'inline' && <Text>Progress demo </Text>}\n <Progress\n variant={args.variant}\n placement={args.placement}\n message={message}\n value={args.determinate || args.cycleProp === 'value' ? value : undefined}\n visible={visible}\n focusOnVisible={args.focusOnVisible}\n liveConfig={args.announce ? { contextualLabel: 'Demo' } : undefined}\n />\n </StyledDemoWrap>\n </Flex>\n );\n};\n\ninterface ConfigurableProgressProps extends ProgressProps {\n progressColor?: string;\n}\n\nexport const ConfigurableProgress: Story<ConfigurableProgressProps> = (\n args: ConfigurableProgressProps\n) => {\n return (\n <Configuration\n theme={{\n components: {\n progress: {\n 'progress-color': args.progressColor\n }\n }\n }}\n >\n <Flex container={{ justify: 'center', alignItems: 'center' }} as={StyledDemoWrap}>\n <Progress variant={args.variant} placement='local' message='Loading' visible />\n </Flex>\n </Configuration>\n );\n};\n\nConfigurableProgress.args = {\n progressColor: '#076bc9'\n};\n\nConfigurableProgress.argTypes = {\n progressColor: { control: { type: 'color' } },\n placement: { table: { disable: true } },\n message: { table: { disable: true } }\n};\n"]}
@@ -7,4 +7,5 @@ interface ConfigurableTooltipProps {
7
7
  backgroundColor?: string;
8
8
  }
9
9
  export declare const ConfigurableTooltip: Story<ConfigurableTooltipProps>;
10
+ export declare const SmartTooltip: Story;
10
11
  //# sourceMappingURL=Tooltip.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.stories.d.ts","sourceRoot":"","sources":["../../../src/core/Tooltip/Tooltip.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;;AAI/C,wBAIU;AAEV,eAAO,MAAM,WAAW,EAAE,KAgBzB,CAAC;AAEF,UAAU,wBAAwB;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,wBAAwB,CA2B/D,CAAC"}
1
+ {"version":3,"file":"Tooltip.stories.d.ts","sourceRoot":"","sources":["../../../src/core/Tooltip/Tooltip.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;;AAM/C,wBAIU;AAEV,eAAO,MAAM,WAAW,EAAE,KAgBzB,CAAC;AAEF,UAAU,wBAAwB;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,wBAAwB,CA2B/D,CAAC;AAYF,eAAO,MAAM,YAAY,EAAE,KAyB1B,CAAC"}
@@ -1,4 +1,5 @@
1
- import { Button, Configuration, Tooltip, useElement } from '@pega/cosmos-react-core';
1
+ import { Button, Configuration, Flex, Tooltip, useElement } from '@pega/cosmos-react-core';
2
+ import { ResizeableEl } from './Tooltip.styles';
2
3
  export default {
3
4
  title: 'Core/Tooltip',
4
5
  component: Tooltip,
@@ -43,4 +44,23 @@ ConfigurableTooltip.argTypes = {
43
44
  foregroundColor: { control: { type: 'color' } },
44
45
  backgroundColor: { control: { type: 'color' } }
45
46
  };
47
+ export const SmartTooltip = () => {
48
+ const [el1, setEl1] = useElement();
49
+ const [el2, setEl2] = useElement();
50
+ const textContent1 = 'Resize me and hover: Lorem ipsum dolor sit amet';
51
+ const textContent2 = 'Hover or focus me: Lorem ipsum dolor sit amet';
52
+ return (<Flex container={{ direction: 'column', gap: 4 }}>
53
+ <ResizeableEl ref={setEl1}>{textContent1}</ResizeableEl>
54
+ {el1 && (<Tooltip target={el1} smart showDelay='none' hideDelay='none'>
55
+ {textContent1}
56
+ </Tooltip>)}
57
+
58
+ <Button as={ResizeableEl} variant='link' ref={setEl2}>
59
+ {textContent2}
60
+ </Button>
61
+ {el2 && (<Tooltip target={el2} smart showDelay='none' hideDelay='none'>
62
+ {textContent2}
63
+ </Tooltip>)}
64
+ </Flex>);
65
+ };
46
66
  //# sourceMappingURL=Tooltip.stories.jsx.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.stories.jsx","sourceRoot":"","sources":["../../../src/core/Tooltip/Tooltip.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErF,eAAe;IACb,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,OAAO;IAClB,cAAc,EAAE,CAAC,qBAAqB,CAAC;CAChC,CAAC;AAEV,MAAM,CAAC,MAAM,WAAW,GAAU,GAAG,EAAE;IACrC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,UAAU,EAAE,CAAC;IAEjC,OAAO,CACL,EACE;MAAA,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,CAEpC;;MAAA,CAAC,EAAE,IAAI,CACL,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAClB;;;;QAGF,EAAE,OAAO,CAAC,CACX,CACH;IAAA,GAAG,CACJ,CAAC;AACJ,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,mBAAmB,GAAoC,CAClE,IAA8B,EAC9B,EAAE;IACF,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,UAAU,EAAE,CAAC;IAEjC,OAAO,CACL,CAAC,aAAa,CACZ,KAAK,CAAC,CAAC;YACL,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,kBAAkB,EAAE,IAAI,CAAC,eAAe;oBACxC,kBAAkB,EAAE,IAAI,CAAC,eAAe;iBACzC;aACF;SACF,CAAC,CAEF;MAAA,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,CAEpC;;MAAA,CAAC,EAAE,IAAI,CACL,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAClB;;;;QAGF,EAAE,OAAO,CAAC,CACX,CACH;IAAA,EAAE,aAAa,CAAC,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,mBAAmB,CAAC,IAAI,GAAG;IACzB,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;CAC3B,CAAC;AAEF,mBAAmB,CAAC,QAAQ,GAAG;IAC7B,eAAe,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAC/C,eAAe,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;CAChD,CAAC","sourcesContent":["import { Meta, Story } from '@storybook/react';\n\nimport { Button, Configuration, Tooltip, useElement } from '@pega/cosmos-react-core';\n\nexport default {\n title: 'Core/Tooltip',\n component: Tooltip,\n excludeStories: ['ConfigurableTooltip']\n} as Meta;\n\nexport const TooltipDemo: Story = () => {\n const [el, setEl] = useElement();\n\n return (\n <>\n <Button ref={setEl}>Hover me</Button>\n\n {el && (\n <Tooltip target={el}>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur finibus scelerisque\n viverra. Fusce consequat, justo at laoreet lobortis, mauris ipsum aliquet arcu, non\n convallis nisl elit id erat. Pellentesque posuere sagittis velit a molestie.\n </Tooltip>\n )}\n </>\n );\n};\n\ninterface ConfigurableTooltipProps {\n foregroundColor?: string;\n backgroundColor?: string;\n}\n\nexport const ConfigurableTooltip: Story<ConfigurableTooltipProps> = (\n args: ConfigurableTooltipProps\n) => {\n const [el, setEl] = useElement();\n\n return (\n <Configuration\n theme={{\n components: {\n tooltip: {\n 'foreground-color': args.foregroundColor,\n 'background-color': args.backgroundColor\n }\n }\n }}\n >\n <Button ref={setEl}>Hover me</Button>\n\n {el && (\n <Tooltip target={el}>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur finibus scelerisque\n viverra. Fusce consequat, justo at laoreet lobortis, mauris ipsum aliquet arcu, non\n convallis nisl elit id erat. Pellentesque posuere sagittis velit a molestie.\n </Tooltip>\n )}\n </Configuration>\n );\n};\n\nConfigurableTooltip.args = {\n foregroundColor: '#f5f5f5',\n backgroundColor: '#3f3f3f'\n};\n\nConfigurableTooltip.argTypes = {\n foregroundColor: { control: { type: 'color' } },\n backgroundColor: { control: { type: 'color' } }\n};\n"]}
1
+ {"version":3,"file":"Tooltip.stories.jsx","sourceRoot":"","sources":["../../../src/core/Tooltip/Tooltip.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta, Story } from '@storybook/react';\n\nimport { Button, Configuration, Flex, Tooltip, useElement } from '@pega/cosmos-react-core';\n\nimport { ResizeableEl } from './Tooltip.styles';\n\nexport default {\n title: 'Core/Tooltip',\n component: Tooltip,\n excludeStories: ['ConfigurableTooltip']\n} as Meta;\n\nexport const TooltipDemo: Story = () => {\n const [el, setEl] = useElement();\n\n return (\n <>\n <Button ref={setEl}>Hover me</Button>\n\n {el && (\n <Tooltip target={el}>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur finibus scelerisque\n viverra. Fusce consequat, justo at laoreet lobortis, mauris ipsum aliquet arcu, non\n convallis nisl elit id erat. Pellentesque posuere sagittis velit a molestie.\n </Tooltip>\n )}\n </>\n );\n};\n\ninterface ConfigurableTooltipProps {\n foregroundColor?: string;\n backgroundColor?: string;\n}\n\nexport const ConfigurableTooltip: Story<ConfigurableTooltipProps> = (\n args: ConfigurableTooltipProps\n) => {\n const [el, setEl] = useElement();\n\n return (\n <Configuration\n theme={{\n components: {\n tooltip: {\n 'foreground-color': args.foregroundColor,\n 'background-color': args.backgroundColor\n }\n }\n }}\n >\n <Button ref={setEl}>Hover me</Button>\n\n {el && (\n <Tooltip target={el}>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur finibus scelerisque\n viverra. Fusce consequat, justo at laoreet lobortis, mauris ipsum aliquet arcu, non\n convallis nisl elit id erat. Pellentesque posuere sagittis velit a molestie.\n </Tooltip>\n )}\n </Configuration>\n );\n};\n\nConfigurableTooltip.args = {\n foregroundColor: '#f5f5f5',\n backgroundColor: '#3f3f3f'\n};\n\nConfigurableTooltip.argTypes = {\n foregroundColor: { control: { type: 'color' } },\n backgroundColor: { control: { type: 'color' } }\n};\n\nexport const SmartTooltip: Story = () => {\n const [el1, setEl1] = useElement();\n const [el2, setEl2] = useElement();\n const textContent1 = 'Resize me and hover: Lorem ipsum dolor sit amet';\n const textContent2 = 'Hover or focus me: Lorem ipsum dolor sit amet';\n\n return (\n <Flex container={{ direction: 'column', gap: 4 }}>\n <ResizeableEl ref={setEl1}>{textContent1}</ResizeableEl>\n {el1 && (\n <Tooltip target={el1} smart showDelay='none' hideDelay='none'>\n {textContent1}\n </Tooltip>\n )}\n\n <Button as={ResizeableEl} variant='link' ref={setEl2}>\n {textContent2}\n </Button>\n {el2 && (\n <Tooltip target={el2} smart showDelay='none' hideDelay='none'>\n {textContent2}\n </Tooltip>\n )}\n </Flex>\n );\n};\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const ResizeableEl: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
2
+ //# sourceMappingURL=Tooltip.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.styles.d.ts","sourceRoot":"","sources":["../../../src/core/Tooltip/Tooltip.styles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,yGAkBvB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import styled, { css } from 'styled-components';
2
+ import { defaultThemeProp } from '@pega/cosmos-react-core/lib/theme';
3
+ export const ResizeableEl = styled.div(({ theme }) => {
4
+ return css `
5
+ position: relative;
6
+ display: inline-block;
7
+ resize: horizontal;
8
+ width: 26ch;
9
+ overflow: hidden;
10
+ white-space: nowrap;
11
+ text-overflow: ellipsis;
12
+
13
+ &::after {
14
+ content: '';
15
+ display: block;
16
+ position: absolute;
17
+ inset: 0;
18
+ border: 0.0625rem dashed ${theme.base.palette['border-line']};
19
+ }
20
+ `;
21
+ });
22
+ ResizeableEl.defaultProps = defaultThemeProp;
23
+ //# sourceMappingURL=Tooltip.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.styles.js","sourceRoot":"","sources":["../../../src/core/Tooltip/Tooltip.styles.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACnD,OAAO,GAAG,CAAA;;;;;;;;;;;;;;iCAcqB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;GAE/D,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,YAAY,CAAC,YAAY,GAAG,gBAAgB,CAAC","sourcesContent":["import styled, { css } from 'styled-components';\n\nimport { defaultThemeProp } from '@pega/cosmos-react-core/lib/theme';\n\nexport const ResizeableEl = styled.div(({ theme }) => {\n return css`\n position: relative;\n display: inline-block;\n resize: horizontal;\n width: 26ch;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n\n &::after {\n content: '';\n display: block;\n position: absolute;\n inset: 0;\n border: 0.0625rem dashed ${theme.base.palette['border-line']};\n }\n `;\n});\n\nResizeableEl.defaultProps = defaultThemeProp;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Assignments.stories.d.ts","sourceRoot":"","sources":["../../../src/work/Assignments/Assignments.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAqB/C,OAAO,EAEL,gBAAgB,EAGjB,MAAM,yBAAyB,CAAC;;AAIjC,wBAGU;AAEV,UAAU,qBAAqB;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,qBAAqB,CAuGxD,CAAC"}
1
+ {"version":3,"file":"Assignments.stories.d.ts","sourceRoot":"","sources":["../../../src/work/Assignments/Assignments.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAEL,gBAAgB,EAGjB,MAAM,yBAAyB,CAAC;;AAKjC,wBAGU;AAEV,UAAU,qBAAqB;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,qBAAqB,CAqExD,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { useState } from 'react';
2
- import { Button, MetaList, Text, Form, Input, TextArea, RadioCheckGroup, RadioButton, Checkbox, DateInput, NumberInput, FileInput, Link, DateTimeDisplay, Flex, Avatar } from '@pega/cosmos-react-core';
2
+ import { MetaList, Text, Link, DateTimeDisplay, Avatar } from '@pega/cosmos-react-core';
3
3
  import { Assignments, tasksHelpers as helpers } from '@pega/cosmos-react-work';
4
+ import { AIButtonFormDemo } from '../../core/AIButton/AIButton.stories';
4
5
  import viewGroups from '../Tasks/Tasks.mocks';
5
6
  export default {
6
7
  title: 'Work/Assignments',
@@ -9,29 +10,6 @@ export default {
9
10
  export const AssignmentsDemo = (args) => {
10
11
  const [hasOpenTask, setHasOpenTask] = useState(false);
11
12
  const [open, setOpen] = useState(true);
12
- const DemoTaskForm = ({ onSubmit, onCancel }) => {
13
- return (<Form actions={<>
14
- <Button onClick={onCancel}>Cancel</Button>
15
- <Button variant='primary' onClick={onSubmit}>
16
- Submit
17
- </Button>
18
- </>}>
19
- <Flex container={{ direction: 'column', itemGap: 2 }}>
20
- <Input label='Text field 1' required/>
21
- <Input label='Text field 2'/>
22
- <NumberInput onChange={() => { }} label='Number field'/>
23
- <Checkbox label='Boolean field' required/>
24
- <RadioCheckGroup label='Picklist options' name='picklist-1'>
25
- <RadioButton label='option 1' defaultChecked/>
26
- <RadioButton label='option 2'/>
27
- <RadioButton label='option 3'/>
28
- </RadioCheckGroup>
29
- <TextArea label='Text paragraph field' required/>
30
- <FileInput label='File field'/>
31
- <DateInput label='Datetime field'/>
32
- </Flex>
33
- </Form>);
34
- };
35
13
  const activeView = helpers.getSelectedView(viewGroups);
36
14
  const activeViewTaskCount = args.count ?? activeView?.count ?? 0;
37
15
  const taskArray = Array.from({
@@ -64,11 +42,7 @@ export const AssignmentsDemo = (args) => {
64
42
  setHasOpenTask(true);
65
43
  }
66
44
  : undefined,
67
- content: hasOpenTask ? (<DemoTaskForm onSubmit={() => {
68
- setHasOpenTask(false);
69
- }} onCancel={() => {
70
- setHasOpenTask(false);
71
- }}/>) : null
45
+ content: hasOpenTask ? (<AIButtonFormDemo onCancel={() => setHasOpenTask(false)} onSubmit={() => setHasOpenTask(false)}/>) : null
72
46
  };
73
47
  });
74
48
  return (<Assignments count={activeViewTaskCount} items={taskArray} collapsed={args.collapsed !== false ? open : undefined} onToggleCollapsed={args.collapsed !== false
@@ -1 +1 @@
1
- {"version":3,"file":"Assignments.stories.jsx","sourceRoot":"","sources":["../../../src/work/Assignments/Assignments.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta, Story } from '@storybook/react';\nimport { useState } from 'react';\n\nimport {\n Button,\n MetaList,\n Text,\n Form,\n Input,\n TextArea,\n RadioCheckGroup,\n RadioButton,\n Checkbox,\n DateInput,\n NumberInput,\n FileInput,\n Link,\n DateTimeDisplay,\n Flex,\n Avatar\n} from '@pega/cosmos-react-core';\nimport {\n Assignments,\n AssignmentsProps,\n TaskItemProps,\n tasksHelpers as helpers\n} from '@pega/cosmos-react-work';\n\nimport viewGroups from '../Tasks/Tasks.mocks';\n\nexport default {\n title: 'Work/Assignments',\n component: Assignments\n} as Meta;\n\ninterface AssignmentsStoryProps {\n collapsed?: boolean;\n count?: AssignmentsProps['count'];\n openableTasks?: boolean;\n}\n\nexport const AssignmentsDemo: Story<AssignmentsStoryProps> = (args: AssignmentsStoryProps) => {\n const [hasOpenTask, setHasOpenTask] = useState(false);\n const [open, setOpen] = useState(true);\n\n const DemoTaskForm = ({ onSubmit, onCancel }: { onSubmit: () => void; onCancel: () => void }) => {\n return (\n <Form\n actions={\n <>\n <Button onClick={onCancel}>Cancel</Button>\n <Button variant='primary' onClick={onSubmit}>\n Submit\n </Button>\n </>\n }\n >\n <Flex container={{ direction: 'column', itemGap: 2 }}>\n <Input label='Text field 1' required />\n <Input label='Text field 2' />\n <NumberInput onChange={() => {}} label='Number field' />\n <Checkbox label='Boolean field' required />\n <RadioCheckGroup label='Picklist options' name='picklist-1'>\n <RadioButton label='option 1' defaultChecked />\n <RadioButton label='option 2' />\n <RadioButton label='option 3' />\n </RadioCheckGroup>\n <TextArea label='Text paragraph field' required />\n <FileInput label='File field' />\n <DateInput label='Datetime field' />\n </Flex>\n </Form>\n );\n };\n\n const activeView = helpers.getSelectedView(viewGroups);\n const activeViewTaskCount = args.count ?? activeView?.count ?? 0;\n\n const taskArray: TaskItemProps[] = Array.from(\n {\n length: args.count ?? activeViewTaskCount\n },\n (_, i) => {\n const dueIn = 86400000 * i;\n\n return {\n id: `${i}`,\n name: `Task ${i + 1}`,\n processName: i % 2 ? 'Demo process' : undefined,\n avatar: !hasOpenTask && <Avatar name='James Gregory' />,\n meta: !hasOpenTask && (\n <MetaList\n items={[\n <Text variant='secondary'>\n Due <DateTimeDisplay variant='relative' value={Date.now() + dueIn} />\n </Text>,\n <Link href='#demo'>Parent case link</Link>\n ]}\n />\n ),\n additionalActions: [\n {\n id: '1',\n text: 'Action 1'\n },\n {\n id: '2',\n text: 'Action 2'\n }\n ],\n onOpen:\n args.openableTasks !== false\n ? () => {\n setHasOpenTask(true);\n }\n : undefined,\n content: hasOpenTask ? (\n <DemoTaskForm\n onSubmit={() => {\n setHasOpenTask(false);\n }}\n onCancel={() => {\n setHasOpenTask(false);\n }}\n />\n ) : null\n };\n }\n );\n\n return (\n <Assignments\n count={activeViewTaskCount}\n items={taskArray}\n collapsed={args.collapsed !== false ? open : undefined}\n onToggleCollapsed={\n args.collapsed !== false\n ? () => {\n setOpen(cur => !cur);\n }\n : undefined\n }\n />\n );\n};\n\nAssignmentsDemo.args = {\n openableTasks: true,\n count: undefined,\n collapsed: true\n};\n\nAssignmentsDemo.argTypes = {\n count: { control: { type: 'number' } },\n openableTasks: { control: { type: 'boolean' } },\n collapsed: { control: { type: 'boolean' } }\n};\n"]}
1
+ {"version":3,"file":"Assignments.stories.jsx","sourceRoot":"","sources":["../../../src/work/Assignments/Assignments.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EACL,WAAW,EAGX,YAAY,IAAI,OAAO,EACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAE9C,eAAe;IACb,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,WAAW;CACf,CAAC;AAQV,MAAM,CAAC,MAAM,eAAe,GAAiC,CAAC,IAA2B,EAAE,EAAE;IAC3F,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEvC,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,EAAE,KAAK,IAAI,CAAC,CAAC;IAEjE,MAAM,SAAS,GAAoB,KAAK,CAAC,IAAI,CAC3C;QACE,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,mBAAmB;KAC1C,EACD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACP,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;QAE3B,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;YACrB,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;YAC/C,MAAM,EAAE,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAG;YACvD,IAAI,EAAE,CAAC,WAAW,IAAI,CACpB,CAAC,QAAQ,CACP,KAAK,CAAC,CAAC;oBACL,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CACvB;oBAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,EACpE;cAAA,EAAE,IAAI,CAAC;oBACP,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;iBAC3C,CAAC,EACF,CACH;YACD,iBAAiB,EAAE;gBACjB;oBACE,EAAE,EAAE,GAAG;oBACP,IAAI,EAAE,UAAU;iBACjB;gBACD;oBACE,EAAE,EAAE,GAAG;oBACP,IAAI,EAAE,UAAU;iBACjB;aACF;YACD,MAAM,EACJ,IAAI,CAAC,aAAa,KAAK,KAAK;gBAC1B,CAAC,CAAC,GAAG,EAAE;oBACH,cAAc,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;gBACH,CAAC,CAAC,SAAS;YACf,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CACrB,CAAC,gBAAgB,CACf,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CACtC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EACtC,CACH,CAAC,CAAC,CAAC,IAAI;SACT,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,OAAO,CACL,CAAC,WAAW,CACV,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAC3B,KAAK,CAAC,CAAC,SAAS,CAAC,CACjB,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CACvD,iBAAiB,CAAC,CAChB,IAAI,CAAC,SAAS,KAAK,KAAK;YACtB,CAAC,CAAC,GAAG,EAAE;gBACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;YACH,CAAC,CAAC,SAAS,CACd,EACD,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,CAAC,IAAI,GAAG;IACrB,aAAa,EAAE,IAAI;IACnB,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,eAAe,CAAC,QAAQ,GAAG;IACzB,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IACtC,aAAa,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;IAC/C,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;CAC5C,CAAC","sourcesContent":["import { Meta, Story } from '@storybook/react';\nimport { useState } from 'react';\n\nimport { MetaList, Text, Link, DateTimeDisplay, Avatar } from '@pega/cosmos-react-core';\nimport {\n Assignments,\n AssignmentsProps,\n TaskItemProps,\n tasksHelpers as helpers\n} from '@pega/cosmos-react-work';\n\nimport { AIButtonFormDemo } from '../../core/AIButton/AIButton.stories';\nimport viewGroups from '../Tasks/Tasks.mocks';\n\nexport default {\n title: 'Work/Assignments',\n component: Assignments\n} as Meta;\n\ninterface AssignmentsStoryProps {\n collapsed?: boolean;\n count?: AssignmentsProps['count'];\n openableTasks?: boolean;\n}\n\nexport const AssignmentsDemo: Story<AssignmentsStoryProps> = (args: AssignmentsStoryProps) => {\n const [hasOpenTask, setHasOpenTask] = useState(false);\n const [open, setOpen] = useState(true);\n\n const activeView = helpers.getSelectedView(viewGroups);\n const activeViewTaskCount = args.count ?? activeView?.count ?? 0;\n\n const taskArray: TaskItemProps[] = Array.from(\n {\n length: args.count ?? activeViewTaskCount\n },\n (_, i) => {\n const dueIn = 86400000 * i;\n\n return {\n id: `${i}`,\n name: `Task ${i + 1}`,\n processName: i % 2 ? 'Demo process' : undefined,\n avatar: !hasOpenTask && <Avatar name='James Gregory' />,\n meta: !hasOpenTask && (\n <MetaList\n items={[\n <Text variant='secondary'>\n Due <DateTimeDisplay variant='relative' value={Date.now() + dueIn} />\n </Text>,\n <Link href='#demo'>Parent case link</Link>\n ]}\n />\n ),\n additionalActions: [\n {\n id: '1',\n text: 'Action 1'\n },\n {\n id: '2',\n text: 'Action 2'\n }\n ],\n onOpen:\n args.openableTasks !== false\n ? () => {\n setHasOpenTask(true);\n }\n : undefined,\n content: hasOpenTask ? (\n <AIButtonFormDemo\n onCancel={() => setHasOpenTask(false)}\n onSubmit={() => setHasOpenTask(false)}\n />\n ) : null\n };\n }\n );\n\n return (\n <Assignments\n count={activeViewTaskCount}\n items={taskArray}\n collapsed={args.collapsed !== false ? open : undefined}\n onToggleCollapsed={\n args.collapsed !== false\n ? () => {\n setOpen(cur => !cur);\n }\n : undefined\n }\n />\n );\n};\n\nAssignmentsDemo.args = {\n openableTasks: true,\n count: undefined,\n collapsed: true\n};\n\nAssignmentsDemo.argTypes = {\n count: { control: { type: 'number' } },\n openableTasks: { control: { type: 'boolean' } },\n collapsed: { control: { type: 'boolean' } }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Attachments.mocks.d.ts","sourceRoot":"","sources":["../../../src/work/CaseView/Attachments.mocks.tsx"],"names":[],"mappings":";AA4fA,eAAO,MAAM,eAAe,mBAoI3B,CAAC"}
1
+ {"version":3,"file":"Attachments.mocks.d.ts","sourceRoot":"","sources":["../../../src/work/CaseView/Attachments.mocks.tsx"],"names":[],"mappings":";AAkgBA,eAAO,MAAM,eAAe,mBAiI3B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { useState, useCallback, useContext, useEffect, useRef, useMemo, forwardRef } from 'react';
2
- import { Button, FileInput, FileVisual, Progress, Modal, Text, SummaryList, ViewAll, getKindFromMimeType, getMimeTypeFromFile, Popover, Flex, Input, ComboBox, createUID, useModalManager, useModalContext, useOuterEvent, useToaster, DateTimeDisplay, MetaList } from '@pega/cosmos-react-core';
2
+ import { Button, FileInput, FileVisual, Progress, Modal, Text, SummaryList, ViewAll, getKindFromMimeType, getMimeTypeFromFile, Flex, Input, ComboBox, createUID, useModalManager, useModalContext, useToaster, DateTimeDisplay, MetaList, FormDialog } from '@pega/cosmos-react-core';
3
+ import { loadingTimeoutMS } from '../../core/Progress/Progress.mocks';
3
4
  import { FileServiceContext, mockAttachmentListRequest, mockCategories } from './FileService.mock';
4
5
  const getSummaryListItemProps = ({ ref, file, editFile, cancelFile, deleteFile }) => {
5
6
  let actions;
@@ -62,9 +63,10 @@ const getSummaryListItemProps = ({ ref, file, editFile, cancelFile, deleteFile }
62
63
  actions
63
64
  };
64
65
  };
65
- const EditPopover = forwardRef(({ file, target, onSubmit, onCancel }, ref) => {
66
+ const EditDialog = forwardRef(({ file, target, onSubmit, onCancel }, ref) => {
66
67
  const [name, setName] = useState(file.name);
67
68
  const [error, setError] = useState('');
69
+ const [loading, setLoading] = useState(false);
68
70
  const [categories, setCategories] = useState(() => {
69
71
  return [
70
72
  { id: createUID(), primary: 'No category', selected: false },
@@ -88,12 +90,22 @@ const EditPopover = forwardRef(({ file, target, onSubmit, onCancel }, ref) => {
88
90
  }
89
91
  : undefined;
90
92
  }, [categories]);
91
- return (<Popover ref={ref} target={target} style={{ width: '40ch' }} placement='bottom-start'>
92
- <Flex container={{ direction: 'column', gap: 2, pad: 2 }}>
93
- <Text variant='h3'>Details</Text>
94
-
95
- <Flex container={{ direction: 'column', gap: 2 }}>
96
- <Input label='Name' placeholder='Enter name…' value={name} info={error} status={error ? 'error' : undefined} autoFocus required onChange={(e) => {
93
+ return (<FormDialog ref={ref} heading='Edit attachment' target={target} progress={loading ? 'Updating attachment...' : undefined} placement='bottom-start' onCancel={onCancel} onSubmit={() => {
94
+ if (error)
95
+ return;
96
+ setLoading(true);
97
+ setTimeout(() => {
98
+ onSubmit({
99
+ name,
100
+ category: !selectedCategory || selectedCategory.items.text === 'No category'
101
+ ? ''
102
+ : selectedCategory.items.text
103
+ });
104
+ setLoading(false);
105
+ }, loadingTimeoutMS);
106
+ }}>
107
+ <Flex container={{ direction: 'column', gap: 2 }}>
108
+ <Input label='Name' placeholder='Enter name…' value={name} info={error} status={error ? 'error' : undefined} autoFocus required onChange={(e) => {
97
109
  setName(e.target.value);
98
110
  if (error && e.target.value) {
99
111
  setError('');
@@ -103,7 +115,7 @@ const EditPopover = forwardRef(({ file, target, onSubmit, onCancel }, ref) => {
103
115
  setError('Name is required.');
104
116
  }
105
117
  }}/>
106
- <ComboBox label='Category' placeholder='Choose…' selected={selectedCategory} menu={{
118
+ <ComboBox label='Category' placeholder='Choose…' selected={selectedCategory} menu={{
107
119
  mode: 'single-select',
108
120
  items: categories,
109
121
  onItemClick: id => {
@@ -117,25 +129,8 @@ const EditPopover = forwardRef(({ file, target, onSubmit, onCancel }, ref) => {
117
129
  });
118
130
  }
119
131
  }}/>
120
- </Flex>
121
-
122
- <Flex container={{ justify: 'between' }}>
123
- <Button onClick={onCancel}>Cancel</Button>
124
- <Button variant='primary' onClick={() => {
125
- if (error)
126
- return;
127
- onSubmit({
128
- name,
129
- category: !selectedCategory || selectedCategory.items.text === 'No category'
130
- ? ''
131
- : selectedCategory.items.text
132
- });
133
- }}>
134
- Submit
135
- </Button>
136
- </Flex>
137
132
  </Flex>
138
- </Popover>);
133
+ </FormDialog>);
139
134
  });
140
135
  const AttachmentsModal = ({ defaultMode }) => {
141
136
  const [mode, setMode] = useState(defaultMode);
@@ -143,7 +138,8 @@ const AttachmentsModal = ({ defaultMode }) => {
143
138
  const { dismiss } = useModalContext();
144
139
  const { files, setFiles, cancelFile, attachFile, deleteFile } = useContext(FileServiceContext);
145
140
  const [search, setSearch] = useState('');
146
- const [loading, setLoading] = useState(true);
141
+ const [viewAllLoading, setViewAllLoading] = useState(true);
142
+ const [addNewLoading, setAddNewLoading] = useState(false);
147
143
  const [newFiles, setNewFiles] = useState([]);
148
144
  const attachSelected = useCallback(() => {
149
145
  newFiles.forEach(attachFile);
@@ -151,29 +147,28 @@ const AttachmentsModal = ({ defaultMode }) => {
151
147
  }, [newFiles, attachFile]);
152
148
  const listItemEls = useRef([]);
153
149
  const [editFileIndex, setEditFileIndex] = useState(-1);
154
- const editPopoverTargetLi = useMemo(() => {
150
+ const editDialogTargetLi = useMemo(() => {
155
151
  return editFileIndex !== undefined ? listItemEls.current[editFileIndex] : undefined;
156
152
  }, [editFileIndex, listItemEls]);
157
- const menuButton = useMemo(() => editPopoverTargetLi
158
- ? editPopoverTargetLi.querySelector('button[aria-haspopup="menu"]')
159
- : null, [editPopoverTargetLi]);
160
- const handlePopoverClose = useCallback(() => {
161
- if (!editPopoverTargetLi)
153
+ const menuButton = useMemo(() => editDialogTargetLi
154
+ ? editDialogTargetLi.querySelector('button[aria-haspopup="menu"]')
155
+ : null, [editDialogTargetLi]);
156
+ const handleDialogClose = useCallback(() => {
157
+ if (!editDialogTargetLi)
162
158
  return;
163
159
  setEditFileIndex(-1);
164
160
  menuButton?.focus();
165
- }, [menuButton, editPopoverTargetLi]);
161
+ }, [menuButton, editDialogTargetLi]);
166
162
  const handleKeydown = useCallback((e) => {
167
163
  if (e.key === 'Escape') {
168
164
  setEditFileIndex(-1);
169
165
  }
170
166
  }, []);
171
- const editPopoverRef = useRef(null);
172
- useOuterEvent('mousedown', [editPopoverRef], handlePopoverClose);
167
+ const editDialogRef = useRef(null);
173
168
  useEffect(() => {
174
169
  if (mode === 'viewAll') {
175
170
  const timeout = setTimeout(() => {
176
- setLoading(false);
171
+ setViewAllLoading(false);
177
172
  }, 1000);
178
173
  return () => {
179
174
  clearTimeout(timeout);
@@ -181,13 +176,13 @@ const AttachmentsModal = ({ defaultMode }) => {
181
176
  }
182
177
  }, [mode]);
183
178
  useEffect(() => {
184
- if (!editPopoverTargetLi)
179
+ if (!editDialogTargetLi)
185
180
  return;
186
181
  document.addEventListener('keydown', handleKeydown);
187
182
  return () => {
188
183
  document.removeEventListener('keydown', handleKeydown);
189
184
  };
190
- }, [editPopoverTargetLi]);
185
+ }, [editDialogTargetLi]);
191
186
  useEffect(() => {
192
187
  listItemEls.current = [];
193
188
  }, [mode]);
@@ -215,12 +210,20 @@ const AttachmentsModal = ({ defaultMode }) => {
215
210
  ]);
216
211
  }, [files]);
217
212
  const actions = mode === 'addNew' ? (<>
218
- <Button onClick={dismiss}>Cancel</Button>
219
- <Button type='submit' variant='primary' onClick={attachSelected} disabled={newFiles.length === 0}>
213
+ <Button onClick={dismiss} disabled={addNewLoading}>
214
+ Cancel
215
+ </Button>
216
+ <Button type='submit' variant='primary' onClick={() => {
217
+ setAddNewLoading(true);
218
+ setTimeout(() => {
219
+ attachSelected();
220
+ setAddNewLoading(false);
221
+ }, loadingTimeoutMS);
222
+ }} disabled={newFiles.length === 0 || addNewLoading}>
220
223
  Upload files
221
224
  </Button>
222
225
  </>) : null;
223
- const content = mode === 'addNew' ? (<FileInput multiple label='Select files to upload' onFilesAdded={onFilesAdded} files={newFiles.map(f => ({ ...f, meta: f.category || undefined }))}/>) : (<ViewAll loading={loading} items={(search ? files.filter(f => f.name.includes(search)) : files).map((file, i) => {
226
+ const content = mode === 'addNew' ? (<FileInput multiple label='Select files to upload' onFilesAdded={onFilesAdded} files={newFiles.map(f => ({ ...f, meta: f.category || undefined }))}/>) : (<ViewAll loading={viewAllLoading} items={(search ? files.filter(f => f.name.includes(search)) : files).map((file, i) => {
224
227
  return getSummaryListItemProps({
225
228
  ref: (el) => {
226
229
  listItemEls.current[i] = el;
@@ -256,8 +259,8 @@ const AttachmentsModal = ({ defaultMode }) => {
256
259
  }
257
260
  }
258
261
  ]} searchInputProps={{ onSearchChange: value => setSearch(value) }}/>);
259
- return (<Modal as={mode === 'addNew' ? 'form' : undefined} heading={mode === 'addNew' ? 'Add attachments' : 'Attachments'} actions={actions} onRequestDismiss={() => {
260
- return !editPopoverTargetLi;
262
+ return (<Modal as={mode === 'addNew' ? 'form' : undefined} heading={mode === 'addNew' ? 'Add attachments' : 'Attachments'} actions={actions} progress={addNewLoading ? { message: 'Adding attachments...' } : undefined} onRequestDismiss={() => {
263
+ return !editDialogTargetLi;
261
264
  }} onSubmit={mode === 'addNew'
262
265
  ? (e) => {
263
266
  e.preventDefault();
@@ -265,8 +268,8 @@ const AttachmentsModal = ({ defaultMode }) => {
265
268
  : undefined}>
266
269
  <>
267
270
  {content}
268
- {editPopoverTargetLi && (<EditPopover ref={editPopoverRef} target={menuButton} file={mode === 'addNew' ? newFiles[editFileIndex] : files[editFileIndex]} onCancel={handlePopoverClose} onSubmit={({ name, category }) => {
269
- handlePopoverClose();
271
+ {editDialogTargetLi && menuButton && (<EditDialog ref={editDialogRef} target={menuButton} file={mode === 'addNew' ? newFiles[editFileIndex] : files[editFileIndex]} onCancel={handleDialogClose} onSubmit={({ name, category }) => {
272
+ handleDialogClose();
270
273
  if (mode === 'addNew') {
271
274
  setNewFiles(cur => {
272
275
  return cur.map((file, i) => {
@@ -304,25 +307,24 @@ export const AttachmentsMock = () => {
304
307
  const { files, setFiles, cancelFile, deleteFile } = useContext(FileServiceContext);
305
308
  const listItemEls = useRef([]);
306
309
  const [editFileIndex, setEditFileIndex] = useState(-1);
307
- const editPopoverTargetLi = useMemo(() => {
310
+ const editDialogTargetLi = useMemo(() => {
308
311
  return editFileIndex !== undefined ? listItemEls.current[editFileIndex] : undefined;
309
312
  }, [editFileIndex, listItemEls]);
310
- const menuButton = useMemo(() => editPopoverTargetLi
311
- ? editPopoverTargetLi.querySelector('button[aria-haspopup="menu"]')
312
- : null, [editPopoverTargetLi]);
313
- const handlePopoverClose = useCallback(() => {
314
- if (!editPopoverTargetLi)
313
+ const menuButton = useMemo(() => editDialogTargetLi
314
+ ? editDialogTargetLi.querySelector('button[aria-haspopup="menu"]')
315
+ : null, [editDialogTargetLi]);
316
+ const handleDialogClose = useCallback(() => {
317
+ if (!editDialogTargetLi)
315
318
  return;
316
319
  setEditFileIndex(-1);
317
320
  menuButton?.focus();
318
- }, [menuButton, editPopoverTargetLi]);
321
+ }, [menuButton, editDialogTargetLi]);
319
322
  const handleKeydown = useCallback((e) => {
320
323
  if (e.key === 'Escape') {
321
324
  setEditFileIndex(-1);
322
325
  }
323
326
  }, []);
324
- const editPopoverRef = useRef(null);
325
- useOuterEvent('mousedown', [editPopoverRef], handlePopoverClose);
327
+ const editDialogRef = useRef(null);
326
328
  useEffect(() => {
327
329
  let mounted = true;
328
330
  (async () => {
@@ -337,13 +339,13 @@ export const AttachmentsMock = () => {
337
339
  };
338
340
  }, []);
339
341
  useEffect(() => {
340
- if (!editPopoverTargetLi)
342
+ if (!editDialogTargetLi)
341
343
  return;
342
344
  document.addEventListener('keydown', handleKeydown);
343
345
  return () => {
344
346
  document.removeEventListener('keydown', handleKeydown);
345
347
  };
346
- }, [editPopoverTargetLi]);
348
+ }, [editDialogTargetLi]);
347
349
  return (<>
348
350
  <SummaryList icon='paper-clip' name='Attachments' loading={loading} count={!loading && Array.isArray(files) ? files.length : undefined} actions={[
349
351
  {
@@ -377,8 +379,8 @@ export const AttachmentsMock = () => {
377
379
  })} onViewAll={() => {
378
380
  createModal(AttachmentsModal, { defaultMode: 'viewAll' });
379
381
  }}/>
380
- {editPopoverTargetLi && (<EditPopover ref={editPopoverRef} target={menuButton} file={files[editFileIndex]} onCancel={handlePopoverClose} onSubmit={({ name, category }) => {
381
- handlePopoverClose();
382
+ {editDialogTargetLi && menuButton && (<EditDialog ref={editDialogRef} target={menuButton} file={files[editFileIndex]} onCancel={handleDialogClose} onSubmit={({ name, category }) => {
383
+ handleDialogClose();
382
384
  setFiles(cur => cur.map((file, i) => {
383
385
  if (i === editFileIndex) {
384
386
  return {