@pega/cosmos-react-demos 3.0.0-dev.23.2 → 3.0.0-dev.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/jsx/build/ExpressionBuilder/ExpressionBuilder.mocks.d.ts +51 -2
  2. package/jsx/build/ExpressionBuilder/ExpressionBuilder.mocks.d.ts.map +1 -1
  3. package/jsx/build/ExpressionBuilder/ExpressionBuilder.mocks.js +380 -47
  4. package/jsx/build/ExpressionBuilder/ExpressionBuilder.mocks.js.map +1 -1
  5. package/jsx/build/ExpressionBuilder/ExpressionBuilder.stories.d.ts +3 -1
  6. package/jsx/build/ExpressionBuilder/ExpressionBuilder.stories.d.ts.map +1 -1
  7. package/jsx/build/ExpressionBuilder/ExpressionBuilder.stories.jsx +206 -23
  8. package/jsx/build/ExpressionBuilder/ExpressionBuilder.stories.jsx.map +1 -1
  9. package/jsx/build/ObjectSelect/ObjectSelect.stories.d.ts.map +1 -1
  10. package/jsx/build/ObjectSelect/ObjectSelect.stories.jsx +16 -3
  11. package/jsx/build/ObjectSelect/ObjectSelect.stories.jsx.map +1 -1
  12. package/jsx/core/Link/Link.stories.d.ts.map +1 -1
  13. package/jsx/core/Link/Link.stories.jsx +2 -1
  14. package/jsx/core/Link/Link.stories.jsx.map +1 -1
  15. package/jsx/core/ListToolbar/ListToolbar.stories.d.ts +1 -0
  16. package/jsx/core/ListToolbar/ListToolbar.stories.d.ts.map +1 -1
  17. package/jsx/core/ListToolbar/ListToolbar.stories.jsx +8 -3
  18. package/jsx/core/ListToolbar/ListToolbar.stories.jsx.map +1 -1
  19. package/jsx/core/Modal/Modal.stories.d.ts +10 -1
  20. package/jsx/core/Modal/Modal.stories.d.ts.map +1 -1
  21. package/jsx/core/Modal/Modal.stories.jsx +33 -6
  22. package/jsx/core/Modal/Modal.stories.jsx.map +1 -1
  23. package/jsx/core/SkipLinks/SkipLinks.stories.d.ts +6 -0
  24. package/jsx/core/SkipLinks/SkipLinks.stories.d.ts.map +1 -0
  25. package/jsx/core/SkipLinks/SkipLinks.stories.jsx +29 -0
  26. package/jsx/core/SkipLinks/SkipLinks.stories.jsx.map +1 -0
  27. package/jsx/core/SkipLinks/SkipLinks.styles.d.ts +2 -0
  28. package/jsx/core/SkipLinks/SkipLinks.styles.d.ts.map +1 -0
  29. package/jsx/core/SkipLinks/SkipLinks.styles.js +16 -0
  30. package/jsx/core/SkipLinks/SkipLinks.styles.js.map +1 -0
  31. package/jsx/cs/TaskManager/TaskManager.stories.d.ts.map +1 -1
  32. package/jsx/cs/TaskManager/TaskManager.stories.jsx +17 -10
  33. package/jsx/cs/TaskManager/TaskManager.stories.jsx.map +1 -1
  34. package/jsx/social/Chat/Chat.mocks.d.ts +14 -1
  35. package/jsx/social/Chat/Chat.mocks.d.ts.map +1 -1
  36. package/jsx/social/Chat/Chat.mocks.js +5 -5
  37. package/jsx/social/Chat/Chat.mocks.js.map +1 -1
  38. package/jsx/social/Chat/Chat.stories.d.ts.map +1 -1
  39. package/jsx/social/Chat/Chat.stories.jsx +87 -7
  40. package/jsx/social/Chat/Chat.stories.jsx.map +1 -1
  41. package/jsx/social/Email/Email.mocks.d.ts +10 -0
  42. package/jsx/social/Email/Email.mocks.d.ts.map +1 -1
  43. package/jsx/social/Email/Email.mocks.jsx +12 -2
  44. package/jsx/social/Email/Email.mocks.jsx.map +1 -1
  45. package/jsx/social/Email/Email.stories.d.ts +1 -0
  46. package/jsx/social/Email/Email.stories.d.ts.map +1 -1
  47. package/jsx/social/Email/Email.stories.jsx +147 -54
  48. package/jsx/social/Email/Email.stories.jsx.map +1 -1
  49. package/jsx/tools/Clipboard/Clipboard.mocks.d.ts +2 -2
  50. package/jsx/tools/Clipboard/Clipboard.mocks.d.ts.map +1 -1
  51. package/jsx/tools/Clipboard/Clipboard.mocks.jsx +42 -43
  52. package/jsx/tools/Clipboard/Clipboard.mocks.jsx.map +1 -1
  53. package/jsx/tools/Clipboard/Clipboard.stories.d.ts.map +1 -1
  54. package/jsx/tools/Clipboard/Clipboard.stories.jsx +32 -31
  55. package/jsx/tools/Clipboard/Clipboard.stories.jsx.map +1 -1
  56. package/jsx/work/CaseView/CaseView.mocks.jsx +4 -4
  57. package/jsx/work/CaseView/CaseView.mocks.jsx.map +1 -1
  58. package/jsx/work/CaseView/CaseView.stories.d.ts.map +1 -1
  59. package/jsx/work/CaseView/CaseView.stories.jsx +13 -9
  60. package/jsx/work/CaseView/CaseView.stories.jsx.map +1 -1
  61. package/jsx/work/Details/Details.stories.d.ts.map +1 -1
  62. package/jsx/work/Details/Details.stories.jsx +7 -0
  63. package/jsx/work/Details/Details.stories.jsx.map +1 -1
  64. package/lib/build/ExpressionBuilder/ExpressionBuilder.mocks.d.ts +51 -2
  65. package/lib/build/ExpressionBuilder/ExpressionBuilder.mocks.d.ts.map +1 -1
  66. package/lib/build/ExpressionBuilder/ExpressionBuilder.mocks.js +380 -47
  67. package/lib/build/ExpressionBuilder/ExpressionBuilder.mocks.js.map +1 -1
  68. package/lib/build/ExpressionBuilder/ExpressionBuilder.stories.d.ts +3 -1
  69. package/lib/build/ExpressionBuilder/ExpressionBuilder.stories.d.ts.map +1 -1
  70. package/lib/build/ExpressionBuilder/ExpressionBuilder.stories.js +215 -26
  71. package/lib/build/ExpressionBuilder/ExpressionBuilder.stories.js.map +1 -1
  72. package/lib/build/ObjectSelect/ObjectSelect.stories.d.ts.map +1 -1
  73. package/lib/build/ObjectSelect/ObjectSelect.stories.js +16 -3
  74. package/lib/build/ObjectSelect/ObjectSelect.stories.js.map +1 -1
  75. package/lib/core/Link/Link.stories.d.ts.map +1 -1
  76. package/lib/core/Link/Link.stories.js +2 -1
  77. package/lib/core/Link/Link.stories.js.map +1 -1
  78. package/lib/core/ListToolbar/ListToolbar.stories.d.ts +1 -0
  79. package/lib/core/ListToolbar/ListToolbar.stories.d.ts.map +1 -1
  80. package/lib/core/ListToolbar/ListToolbar.stories.js +8 -3
  81. package/lib/core/ListToolbar/ListToolbar.stories.js.map +1 -1
  82. package/lib/core/Modal/Modal.stories.d.ts +10 -1
  83. package/lib/core/Modal/Modal.stories.d.ts.map +1 -1
  84. package/lib/core/Modal/Modal.stories.js +33 -6
  85. package/lib/core/Modal/Modal.stories.js.map +1 -1
  86. package/lib/core/SkipLinks/SkipLinks.stories.d.ts +6 -0
  87. package/lib/core/SkipLinks/SkipLinks.stories.d.ts.map +1 -0
  88. package/lib/core/SkipLinks/SkipLinks.stories.js +28 -0
  89. package/lib/core/SkipLinks/SkipLinks.stories.js.map +1 -0
  90. package/lib/core/SkipLinks/SkipLinks.styles.d.ts +2 -0
  91. package/lib/core/SkipLinks/SkipLinks.styles.d.ts.map +1 -0
  92. package/lib/core/SkipLinks/SkipLinks.styles.js +16 -0
  93. package/lib/core/SkipLinks/SkipLinks.styles.js.map +1 -0
  94. package/lib/cs/TaskManager/TaskManager.stories.d.ts.map +1 -1
  95. package/lib/cs/TaskManager/TaskManager.stories.js +17 -10
  96. package/lib/cs/TaskManager/TaskManager.stories.js.map +1 -1
  97. package/lib/social/Chat/Chat.mocks.d.ts +14 -1
  98. package/lib/social/Chat/Chat.mocks.d.ts.map +1 -1
  99. package/lib/social/Chat/Chat.mocks.js +5 -5
  100. package/lib/social/Chat/Chat.mocks.js.map +1 -1
  101. package/lib/social/Chat/Chat.stories.d.ts.map +1 -1
  102. package/lib/social/Chat/Chat.stories.js +68 -6
  103. package/lib/social/Chat/Chat.stories.js.map +1 -1
  104. package/lib/social/Email/Email.mocks.d.ts +10 -0
  105. package/lib/social/Email/Email.mocks.d.ts.map +1 -1
  106. package/lib/social/Email/Email.mocks.js +12 -2
  107. package/lib/social/Email/Email.mocks.js.map +1 -1
  108. package/lib/social/Email/Email.stories.d.ts +1 -0
  109. package/lib/social/Email/Email.stories.d.ts.map +1 -1
  110. package/lib/social/Email/Email.stories.js +146 -50
  111. package/lib/social/Email/Email.stories.js.map +1 -1
  112. package/lib/tools/Clipboard/Clipboard.mocks.d.ts +2 -2
  113. package/lib/tools/Clipboard/Clipboard.mocks.d.ts.map +1 -1
  114. package/lib/tools/Clipboard/Clipboard.mocks.js +35 -40
  115. package/lib/tools/Clipboard/Clipboard.mocks.js.map +1 -1
  116. package/lib/tools/Clipboard/Clipboard.stories.d.ts.map +1 -1
  117. package/lib/tools/Clipboard/Clipboard.stories.js +40 -31
  118. package/lib/tools/Clipboard/Clipboard.stories.js.map +1 -1
  119. package/lib/work/CaseView/CaseView.mocks.js +4 -4
  120. package/lib/work/CaseView/CaseView.mocks.js.map +1 -1
  121. package/lib/work/CaseView/CaseView.stories.d.ts.map +1 -1
  122. package/lib/work/CaseView/CaseView.stories.js +12 -8
  123. package/lib/work/CaseView/CaseView.stories.js.map +1 -1
  124. package/lib/work/Details/Details.stories.d.ts.map +1 -1
  125. package/lib/work/Details/Details.stories.js +1 -1
  126. package/lib/work/Details/Details.stories.js.map +1 -1
  127. package/package.json +9 -9
@@ -1,35 +1,147 @@
1
1
  import { action } from '@storybook/addon-actions';
2
2
  import { useState, useEffect, useRef } from 'react';
3
- import { ExpressionBuilder, ExpressionItem, ExpressionList } from '@pega/cosmos-react-build';
4
- import { BuildTheme, Configuration, createUID } from '@pega/cosmos-react-core';
5
- import { errors, items, StyledExpressionBuilderDemo } from './ExpressionBuilder.mocks';
3
+ import { ExpressionBuilder, ExpressionItem, ExpressionList, ExpressionDetails } from '@pega/cosmos-react-build';
4
+ import { createUID, Input } from '@pega/cosmos-react-core';
5
+ import { errors, items, primaryDetails, StyledExpressionBuilderDemo } from './ExpressionBuilder.mocks';
6
6
  export default {
7
7
  title: 'Build/ExpressionBuilder',
8
8
  component: ExpressionBuilder
9
9
  };
10
10
  export const ExpressionItemDemo = () => {
11
- const [isExpanded, setIsExpanded] = useState(false);
12
- const onInsert = (id) => {
11
+ const [expanded, setExpanded] = useState(false);
12
+ const onAdd = (id) => {
13
13
  action(`${id} clicked`);
14
14
  };
15
15
  const onExpand = (id) => {
16
- setIsExpanded(prev => !prev);
17
- action(`${id} clicked`);
16
+ setExpanded(true);
17
+ action(`${id} expanded`);
18
+ };
19
+ const onCollapse = (id) => {
20
+ setExpanded(false);
21
+ action(`${id} collapsed`);
22
+ };
23
+ const handleChange = (id, field, value) => {
24
+ action('Input param change')(id, field, value);
18
25
  };
19
- return (<Configuration theme={BuildTheme}>
20
- <ExpressionItem id={createUID()} primary='Loan to value validation' type='Decision' onInsert={onInsert} expression='@Decision' isExpanded={isExpanded} onExpand={onExpand}/>
21
- </Configuration>);
26
+ return (<ExpressionItem id={createUID()} primary='Loan to value validation' type='Decision' onAdd={onAdd} onExpand={onExpand} onCollapse={onCollapse} expanded={expanded} details={{
27
+ primary: primaryDetails,
28
+ outputParams: [
29
+ {
30
+ id: 'type',
31
+ name: 'Type',
32
+ value: 'Text'
33
+ }
34
+ ],
35
+ inputParams: [
36
+ {
37
+ id: 'firstParam',
38
+ renderer: Input,
39
+ rendererProps: {
40
+ onChange: (e) => handleChange('Test Expression Id', 'Test Input Field', e.target.value),
41
+ label: 'Test Input'
42
+ }
43
+ },
44
+ {
45
+ id: 'secondParam',
46
+ renderer: Input,
47
+ rendererProps: {
48
+ onChange: (e) => handleChange('Test Expression Id', 'Test Input Field 2', e.target.value),
49
+ label: 'Test Input2'
50
+ }
51
+ }
52
+ ]
53
+ }}/>);
54
+ };
55
+ export const ExpressionDetailsDemo = () => {
56
+ const handleChange = (id, field, value) => {
57
+ action('Input param change')(id, field, value);
58
+ };
59
+ return (<ExpressionDetails primary={primaryDetails} outputParams={[
60
+ {
61
+ id: 'type',
62
+ name: 'Type',
63
+ value: 'Text'
64
+ }
65
+ ]} inputParams={[
66
+ {
67
+ id: 'firstParam',
68
+ renderer: Input,
69
+ rendererProps: {
70
+ onChange: (e) => handleChange('Test Expression Id', 'Test Input Field', e.target.value),
71
+ label: 'Test Input'
72
+ }
73
+ },
74
+ {
75
+ id: 'secondParam',
76
+ renderer: Input,
77
+ rendererProps: {
78
+ onChange: (e) => handleChange('Test Expression Id', 'Test Input Field 2', e.target.value),
79
+ label: 'Test Input2'
80
+ }
81
+ }
82
+ ]}/>);
22
83
  };
23
84
  export const ExpressionListDemo = () => {
24
- return (<Configuration theme={BuildTheme}>
25
- <ExpressionList items={items} onItemInsert={action('onItemInsert')} onItemExpand={action('onItemExpand')}/>
26
- </Configuration>);
85
+ const [expressionDetails, setExpressionDetails] = useState({});
86
+ const onInputParamChange = (id, field, value) => {
87
+ action('Input param change')(id, field, value);
88
+ };
89
+ const onItemExpand = (id) => {
90
+ action('onItemExpand')(id);
91
+ const itemDetails = items.find(item => item.id === id)?.details;
92
+ const fieldValueMapper = ({ field, value }) => {
93
+ return {
94
+ id: `${id}-${field}`,
95
+ name: field,
96
+ value
97
+ };
98
+ };
99
+ if (itemDetails) {
100
+ const primary = itemDetails.primary.map(fieldValueMapper);
101
+ const outputParams = itemDetails.output?.map(fieldValueMapper);
102
+ const inputParams = itemDetails.input?.map(({ id: fieldId, field, type }) => {
103
+ const inputParam = {
104
+ id: `${id}-${fieldId}`,
105
+ renderer: Input,
106
+ rendererProps: {
107
+ label: field,
108
+ onChange: (e) => onInputParamChange(id, fieldId, e.target.value),
109
+ type: type
110
+ }
111
+ };
112
+ return inputParam;
113
+ });
114
+ setExpressionDetails(prev => {
115
+ return {
116
+ ...prev,
117
+ [id]: {
118
+ primary,
119
+ outputParams,
120
+ inputParams
121
+ }
122
+ };
123
+ });
124
+ }
125
+ };
126
+ const onItemCollapse = (id) => {
127
+ action('onItemCollapse')(id);
128
+ setTimeout(() => {
129
+ setExpressionDetails(prev => {
130
+ const newExpressionDetails = { ...prev };
131
+ delete newExpressionDetails[id];
132
+ return newExpressionDetails;
133
+ });
134
+ }, 500);
135
+ };
136
+ return (<ExpressionList items={items} onItemAdd={action('onItemAdd')} onItemExpand={onItemExpand} onItemCollapse={onItemCollapse} details={expressionDetails}/>);
27
137
  };
28
138
  export const ExpressionBuilderDemo = (args) => {
29
139
  const [searchValue, setSearchValue] = useState('');
30
140
  const [searchFilter, setSearchFilter] = useState('');
31
141
  const [expressionItems, setExpressionItems] = useState(items);
32
142
  const handle = useRef(null);
143
+ const [expressionDetails, setExpressionDetails] = useState({});
144
+ const [expressionDetailsValues, setExpressionDetailsValues] = useState({});
33
145
  useEffect(() => {
34
146
  const lowerSearchFilter = searchFilter.toLowerCase();
35
147
  const lowerSearchValue = searchValue.toLowerCase();
@@ -38,18 +150,90 @@ export const ExpressionBuilderDemo = (args) => {
38
150
  item.primary.toLowerCase().includes(lowerSearchValue));
39
151
  }));
40
152
  }, [searchValue, searchFilter]);
41
- const onItemInsert = (id, insertExpression) => {
153
+ const onItemAdd = (id, addExpression) => {
42
154
  const item = items.find(instance => instance.id === id);
43
- if (item)
44
- insertExpression(item.expression);
155
+ if (!item)
156
+ return;
157
+ if (item.type.toLowerCase() === 'field') {
158
+ addExpression(item.expression);
159
+ }
160
+ else {
161
+ addExpression(`${item.expression.slice(0, item.expression.length - 1)}${expressionDetailsValues[item.id]
162
+ ? Object.keys(expressionDetailsValues[item.id])
163
+ .map(field => `${expressionDetailsValues[item.id][field]}`)
164
+ .join(', ')
165
+ : ''})`);
166
+ }
45
167
  action('Current expression')(handle.current?.getExpression());
46
168
  };
47
- return (<Configuration theme={BuildTheme}>
48
- <StyledExpressionBuilderDemo>
49
- <ExpressionBuilder list={{
169
+ const onInputParamChange = (id, field, value) => {
170
+ action('Input param change')(id, field, value);
171
+ setExpressionDetailsValues(prev => {
172
+ return {
173
+ ...prev,
174
+ [id]: { ...prev[id], [field]: value }
175
+ };
176
+ });
177
+ };
178
+ const onItemExpand = (id) => {
179
+ action('onItemExpand')(id);
180
+ const itemDetails = expressionItems.find(item => item.id === id)?.details;
181
+ const fieldValueMapper = ({ field, value }) => {
182
+ return {
183
+ id: `${id}-${field}`,
184
+ name: field,
185
+ value
186
+ };
187
+ };
188
+ if (itemDetails) {
189
+ const primary = itemDetails.primary.map(fieldValueMapper);
190
+ const outputParams = itemDetails.output?.map(fieldValueMapper);
191
+ const inputParams = itemDetails.input?.map(({ id: fieldId, field, type }) => {
192
+ const inputParam = {
193
+ id: `${id}-${fieldId}`,
194
+ renderer: Input,
195
+ rendererProps: {
196
+ label: field,
197
+ onChange: (e) => onInputParamChange(id, fieldId, e.target.value),
198
+ type: type
199
+ }
200
+ };
201
+ return inputParam;
202
+ });
203
+ setExpressionDetails(prev => {
204
+ return {
205
+ ...prev,
206
+ [id]: {
207
+ primary,
208
+ outputParams,
209
+ inputParams
210
+ }
211
+ };
212
+ });
213
+ }
214
+ };
215
+ const onItemCollapse = (id) => {
216
+ action('onItemCollapse')(id);
217
+ setTimeout(() => {
218
+ setExpressionDetails(prev => {
219
+ const newExpressionDetails = { ...prev };
220
+ delete newExpressionDetails[id];
221
+ return newExpressionDetails;
222
+ });
223
+ }, 500);
224
+ setExpressionDetailsValues(prev => {
225
+ const newValues = { ...prev };
226
+ delete newValues[id];
227
+ return newValues;
228
+ });
229
+ };
230
+ return (<StyledExpressionBuilderDemo>
231
+ <ExpressionBuilder list={{
50
232
  items: expressionItems,
51
- onItemInsert: args.onItemInsert || onItemInsert,
52
- onItemExpand: args.onItemExpand || action('onItemExpand')
233
+ onItemAdd: args.onItemAdd || onItemAdd,
234
+ onItemExpand: args.onItemExpand || onItemExpand,
235
+ onItemCollapse: args.onItemCollapse || onItemCollapse,
236
+ details: expressionDetails
53
237
  }} search={{
54
238
  filters: ['Field', 'Function', 'Decision'],
55
239
  onFilterChange: args.onFilterChange
@@ -60,8 +244,7 @@ export const ExpressionBuilderDemo = (args) => {
60
244
  : value => setSearchValue(value),
61
245
  value: searchValue
62
246
  }} errors={args.showErrors ? args.errors || errors : undefined} defaultValue={args.defaultValue === undefined ? 'testExp(arg1, arg2)' : args.defaultValue} handle={args.handle || handle}/>
63
- </StyledExpressionBuilderDemo>
64
- </Configuration>);
247
+ </StyledExpressionBuilderDemo>);
65
248
  };
66
249
  ExpressionBuilderDemo.args = {
67
250
  showErrors: false
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressionBuilder.stories.jsx","sourceRoot":"","sources":["../../../src/build/ExpressionBuilder/ExpressionBuilder.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta, Story } from '@storybook/react';\nimport { action } from '@storybook/addon-actions';\nimport { useState, useEffect, useRef } from 'react';\n\nimport {\n ExpressionBuilder,\n ExpressionItem,\n ExpressionItemProps,\n ExpressionList,\n ExpressionBuilderProps,\n HandleValue\n} from '@pega/cosmos-react-build';\nimport { BuildTheme, Configuration, createUID } from '@pega/cosmos-react-core';\n\nimport { errors, items, StyledExpressionBuilderDemo } from './ExpressionBuilder.mocks';\n\nexport default {\n title: 'Build/ExpressionBuilder',\n component: ExpressionBuilder\n} as Meta;\n\nexport const ExpressionItemDemo: Story = () => {\n const [isExpanded, setIsExpanded] = useState<ExpressionItemProps['isExpanded']>(false);\n const onInsert = (id: ExpressionItemProps['id']) => {\n action(`${id} clicked`);\n };\n\n const onExpand = (id: ExpressionItemProps['id']) => {\n setIsExpanded(prev => !prev);\n action(`${id} clicked`);\n };\n\n return (\n <Configuration theme={BuildTheme}>\n <ExpressionItem\n id={createUID()}\n primary='Loan to value validation'\n type='Decision'\n onInsert={onInsert}\n expression='@Decision'\n isExpanded={isExpanded}\n onExpand={onExpand}\n />\n </Configuration>\n );\n};\n\nexport const ExpressionListDemo: Story = () => {\n return (\n <Configuration theme={BuildTheme}>\n <ExpressionList\n items={items}\n onItemInsert={action('onItemInsert')}\n onItemExpand={action('onItemExpand')}\n />\n </Configuration>\n );\n};\ninterface ExpressionBuilderStoryProps {\n showErrors?: boolean;\n errors?: ExpressionBuilderProps['errors'];\n onItemInsert?: ExpressionBuilderProps['list']['onItemInsert'];\n onItemExpand?: ExpressionBuilderProps['list']['onItemExpand'];\n onFilterChange?: ExpressionBuilderProps['search']['onFilterChange'];\n onSearchChange?: ExpressionBuilderProps['search']['onSearchChange'];\n handle?: ExpressionBuilderProps['handle'];\n defaultValue?: string;\n}\n\nexport const ExpressionBuilderDemo: Story<ExpressionBuilderStoryProps> = (\n args: ExpressionBuilderStoryProps\n) => {\n const [searchValue, setSearchValue] = useState('');\n const [searchFilter, setSearchFilter] = useState('');\n const [expressionItems, setExpressionItems] = useState(items);\n const handle = useRef<HandleValue>(null);\n\n useEffect(() => {\n const lowerSearchFilter = searchFilter.toLowerCase();\n const lowerSearchValue = searchValue.toLowerCase();\n setExpressionItems(\n items.filter(item => {\n return (\n item.type.toLowerCase().includes(lowerSearchFilter === 'all' ? '' : lowerSearchFilter) &&\n item.primary.toLowerCase().includes(lowerSearchValue)\n );\n })\n );\n }, [searchValue, searchFilter]);\n\n const onItemInsert = (\n id: ExpressionItemProps['id'],\n insertExpression: (expression: string) => void\n ) => {\n const item = items.find(instance => instance.id === id);\n if (item) insertExpression(item.expression);\n\n // Added this action to demonstrate the usage of getExpression\n action('Current expression')(handle.current?.getExpression());\n };\n\n return (\n <Configuration theme={BuildTheme}>\n <StyledExpressionBuilderDemo>\n <ExpressionBuilder\n list={{\n items: expressionItems,\n onItemInsert: args.onItemInsert || onItemInsert,\n onItemExpand: args.onItemExpand || action('onItemExpand')\n }}\n search={{\n filters: ['Field', 'Function', 'Decision'],\n onFilterChange: args.onFilterChange\n ? args.onFilterChange\n : value => setSearchFilter(value),\n onSearchChange: args.onSearchChange\n ? args.onSearchChange\n : value => setSearchValue(value),\n value: searchValue\n }}\n errors={args.showErrors ? args.errors || errors : undefined}\n defaultValue={args.defaultValue === undefined ? 'testExp(arg1, arg2)' : args.defaultValue}\n handle={args.handle || handle}\n />\n </StyledExpressionBuilderDemo>\n </Configuration>\n );\n};\n\nExpressionBuilderDemo.args = {\n showErrors: false\n};\n\nExpressionBuilderDemo.argTypes = {\n showErrors: { control: { type: 'boolean' } }\n};\n"]}
1
+ {"version":3,"file":"ExpressionBuilder.stories.jsx","sourceRoot":"","sources":["../../../src/build/ExpressionBuilder/ExpressionBuilder.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta, Story } from '@storybook/react';\nimport { action } from '@storybook/addon-actions';\nimport { useState, useEffect, useRef, ChangeEvent } from 'react';\n\nimport {\n ExpressionBuilder,\n ExpressionItem,\n ExpressionItemProps,\n ExpressionList,\n ExpressionBuilderProps,\n ExpressionDetails,\n HandleValue,\n InputParams\n} from '@pega/cosmos-react-build';\nimport { createUID, ForwardProps, Input, InputProps } from '@pega/cosmos-react-core';\n\nimport {\n errors,\n items,\n primaryDetails,\n StyledExpressionBuilderDemo\n} from './ExpressionBuilder.mocks';\n\nexport default {\n title: 'Build/ExpressionBuilder',\n component: ExpressionBuilder\n} as Meta;\n\nexport const ExpressionItemDemo: Story = () => {\n const [expanded, setExpanded] = useState<ExpressionItemProps['expanded']>(false);\n const onAdd = (id: ExpressionItemProps['id']) => {\n action(`${id} clicked`);\n };\n\n const onExpand = (id: ExpressionItemProps['id']) => {\n setExpanded(true);\n action(`${id} expanded`);\n };\n\n const onCollapse = (id: ExpressionItemProps['id']) => {\n setExpanded(false);\n action(`${id} collapsed`);\n };\n\n const handleChange = (id: string, field: string, value: any) => {\n action('Input param change')(id, field, value);\n };\n\n return (\n <ExpressionItem\n id={createUID()}\n primary='Loan to value validation'\n type='Decision'\n onAdd={onAdd}\n onExpand={onExpand}\n onCollapse={onCollapse}\n expanded={expanded}\n details={{\n primary: primaryDetails,\n outputParams: [\n {\n id: 'type',\n name: 'Type',\n value: 'Text'\n }\n ],\n inputParams: [\n {\n id: 'firstParam',\n renderer: Input,\n rendererProps: {\n onChange: (e: ChangeEvent<HTMLInputElement>) =>\n handleChange('Test Expression Id', 'Test Input Field', e.target.value),\n label: 'Test Input'\n }\n },\n {\n id: 'secondParam',\n renderer: Input,\n rendererProps: {\n onChange: (e: ChangeEvent<HTMLInputElement>) =>\n handleChange('Test Expression Id', 'Test Input Field 2', e.target.value),\n label: 'Test Input2'\n }\n }\n ]\n }}\n />\n );\n};\n\nexport const ExpressionDetailsDemo: Story = () => {\n const handleChange = (id: string, field: string, value: any) => {\n action('Input param change')(id, field, value);\n };\n return (\n <ExpressionDetails\n primary={primaryDetails}\n outputParams={[\n {\n id: 'type',\n name: 'Type',\n value: 'Text'\n }\n ]}\n inputParams={[\n {\n id: 'firstParam',\n renderer: Input,\n rendererProps: {\n onChange: (e: ChangeEvent<HTMLInputElement>) =>\n handleChange('Test Expression Id', 'Test Input Field', e.target.value),\n label: 'Test Input'\n }\n },\n {\n id: 'secondParam',\n renderer: Input,\n rendererProps: {\n onChange: (e: ChangeEvent<HTMLInputElement>) =>\n handleChange('Test Expression Id', 'Test Input Field 2', e.target.value),\n label: 'Test Input2'\n }\n }\n ]}\n />\n );\n};\n\nexport const ExpressionListDemo: Story = () => {\n const [expressionDetails, setExpressionDetails] = useState<\n ExpressionBuilderProps['list']['details']\n >({});\n const onInputParamChange = (id: string, field: string, value: any) => {\n action('Input param change')(id, field, value);\n };\n\n const onItemExpand = (id: string) => {\n action('onItemExpand')(id);\n const itemDetails = items.find(item => item.id === id)?.details;\n\n const fieldValueMapper = ({ field, value }: { field: string; value: string }) => {\n return {\n id: `${id}-${field}`,\n name: field,\n value\n };\n };\n\n if (itemDetails) {\n const primary = itemDetails.primary.map(fieldValueMapper);\n\n const outputParams = itemDetails.output?.map(fieldValueMapper);\n\n const inputParams = itemDetails.input?.map(({ id: fieldId, field, type }) => {\n const inputParam: InputParams<InputProps & ForwardProps> = {\n id: `${id}-${fieldId}`,\n renderer: Input,\n rendererProps: {\n label: field,\n onChange: (e: ChangeEvent<HTMLInputElement>) =>\n onInputParamChange(id, fieldId, e.target.value),\n type: type as InputProps['type']\n }\n };\n return inputParam;\n });\n\n setExpressionDetails(prev => {\n return {\n ...prev,\n [id]: {\n primary,\n outputParams,\n inputParams\n }\n };\n });\n }\n };\n\n const onItemCollapse = (id: string) => {\n action('onItemCollapse')(id);\n setTimeout(() => {\n setExpressionDetails(prev => {\n const newExpressionDetails = { ...prev };\n delete newExpressionDetails[id];\n return newExpressionDetails;\n });\n }, 500);\n };\n\n return (\n <ExpressionList\n items={items}\n onItemAdd={action('onItemAdd')}\n onItemExpand={onItemExpand}\n onItemCollapse={onItemCollapse}\n details={expressionDetails}\n />\n );\n};\n\ninterface ExpressionBuilderStoryProps {\n showErrors?: boolean;\n errors?: ExpressionBuilderProps['errors'];\n onItemAdd?: ExpressionBuilderProps['list']['onItemAdd'];\n onItemExpand?: ExpressionBuilderProps['list']['onItemExpand'];\n onItemCollapse?: ExpressionBuilderProps['list']['onItemCollapse'];\n onFilterChange?: ExpressionBuilderProps['search']['onFilterChange'];\n onSearchChange?: ExpressionBuilderProps['search']['onSearchChange'];\n handle?: ExpressionBuilderProps['handle'];\n defaultValue?: string;\n}\n\nexport const ExpressionBuilderDemo: Story<ExpressionBuilderStoryProps> = (\n args: ExpressionBuilderStoryProps\n) => {\n const [searchValue, setSearchValue] = useState('');\n const [searchFilter, setSearchFilter] = useState('');\n const [expressionItems, setExpressionItems] = useState(items);\n const handle = useRef<HandleValue>(null);\n const [expressionDetails, setExpressionDetails] = useState<\n ExpressionBuilderProps['list']['details']\n >({});\n const [expressionDetailsValues, setExpressionDetailsValues] = useState<{\n [id: string]: {\n [field: string]: any;\n };\n }>({});\n\n useEffect(() => {\n const lowerSearchFilter = searchFilter.toLowerCase();\n const lowerSearchValue = searchValue.toLowerCase();\n setExpressionItems(\n items.filter(item => {\n return (\n item.type.toLowerCase().includes(lowerSearchFilter === 'all' ? '' : lowerSearchFilter) &&\n item.primary.toLowerCase().includes(lowerSearchValue)\n );\n })\n );\n }, [searchValue, searchFilter]);\n\n const onItemAdd = (\n id: ExpressionItemProps['id'],\n addExpression: (expression: string) => void\n ) => {\n const item = items.find(instance => instance.id === id);\n if (!item) return;\n if (item.type.toLowerCase() === 'field') {\n addExpression(item.expression);\n } else {\n addExpression(\n `${item.expression.slice(0, item.expression.length - 1)}${\n expressionDetailsValues[item.id]\n ? Object.keys(expressionDetailsValues[item.id])\n .map(field => `${expressionDetailsValues[item.id][field]}`)\n .join(', ')\n : ''\n })`\n );\n }\n\n // Added this action to demonstrate the usage of getExpression\n action('Current expression')(handle.current?.getExpression());\n };\n\n const onInputParamChange = (id: string, field: string, value: any) => {\n action('Input param change')(id, field, value);\n setExpressionDetailsValues(prev => {\n return {\n ...prev,\n [id]: { ...prev[id], [field]: value }\n };\n });\n };\n\n const onItemExpand = (id: string) => {\n action('onItemExpand')(id);\n const itemDetails = expressionItems.find(item => item.id === id)?.details;\n\n const fieldValueMapper = ({ field, value }: { field: string; value: string }) => {\n return {\n id: `${id}-${field}`,\n name: field,\n value\n };\n };\n\n if (itemDetails) {\n const primary = itemDetails.primary.map(fieldValueMapper);\n\n const outputParams = itemDetails.output?.map(fieldValueMapper);\n\n const inputParams = itemDetails.input?.map(({ id: fieldId, field, type }) => {\n const inputParam: InputParams<InputProps & ForwardProps> = {\n id: `${id}-${fieldId}`,\n renderer: Input,\n rendererProps: {\n label: field,\n onChange: (e: ChangeEvent<HTMLInputElement>) =>\n onInputParamChange(id, fieldId, e.target.value),\n type: type as InputProps['type']\n }\n };\n return inputParam;\n });\n\n setExpressionDetails(prev => {\n return {\n ...prev,\n [id]: {\n primary,\n outputParams,\n inputParams\n }\n };\n });\n }\n };\n\n const onItemCollapse = (id: string) => {\n action('onItemCollapse')(id);\n setTimeout(() => {\n setExpressionDetails(prev => {\n const newExpressionDetails = { ...prev };\n delete newExpressionDetails[id];\n return newExpressionDetails;\n });\n }, 500);\n\n setExpressionDetailsValues(prev => {\n const newValues = { ...prev };\n delete newValues[id];\n return newValues;\n });\n };\n\n return (\n <StyledExpressionBuilderDemo>\n <ExpressionBuilder\n list={{\n items: expressionItems,\n onItemAdd: args.onItemAdd || onItemAdd,\n onItemExpand: args.onItemExpand || onItemExpand,\n onItemCollapse: args.onItemCollapse || onItemCollapse,\n details: expressionDetails\n }}\n search={{\n filters: ['Field', 'Function', 'Decision'],\n onFilterChange: args.onFilterChange\n ? args.onFilterChange\n : value => setSearchFilter(value),\n onSearchChange: args.onSearchChange\n ? args.onSearchChange\n : value => setSearchValue(value),\n value: searchValue\n }}\n errors={args.showErrors ? args.errors || errors : undefined}\n defaultValue={args.defaultValue === undefined ? 'testExp(arg1, arg2)' : args.defaultValue}\n handle={args.handle || handle}\n />\n </StyledExpressionBuilderDemo>\n );\n};\n\nExpressionBuilderDemo.args = {\n showErrors: false\n};\n\nExpressionBuilderDemo.argTypes = {\n showErrors: { control: { type: 'boolean' } }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSelect.stories.d.ts","sourceRoot":"","sources":["../../../src/build/ObjectSelect/ObjectSelect.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAgC/C,OAAO,EAIL,sBAAsB,EAMvB,MAAM,sBAAsB,CAAC;;AAI9B,wBAGU;AAEV,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,sBAAsB,CAsC9D,CAAC;AAoCF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,sBAAsB,CAyE1D,CAAC;AAwCF,eAAO,MAAM,sBAAsB,EAAE,KAmJpC,CAAC"}
1
+ {"version":3,"file":"ObjectSelect.stories.d.ts","sourceRoot":"","sources":["../../../src/build/ObjectSelect/ObjectSelect.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAkC/C,OAAO,EAIL,sBAAsB,EAMvB,MAAM,sBAAsB,CAAC;;AAI9B,wBAGU;AAEV,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,sBAAsB,CAsC9D,CAAC;AAoCF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,sBAAsB,CAqF1D,CAAC;AAwCF,eAAO,MAAM,sBAAsB,EAAE,KAmJpC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { useReducer, useState, useCallback, useMemo } from 'react';
1
+ import { useReducer, useState, useCallback, useMemo, useRef, useEffect } from 'react';
2
2
  import { action } from '@storybook/addon-actions';
3
3
  import { Form, Button, Flex, Input, TextArea, Card, CardContent, registerIcon, menuHelpers, useToaster, StyledRegion } from '@pega/cosmos-react-core';
4
4
  import { ObjectSelect } from '@pega/cosmos-react-build';
@@ -81,6 +81,13 @@ export const ObjectSelectDemo = (args) => {
81
81
  setItems(cur => menuHelpers.selectItem(cur, id, 'single-select'));
82
82
  }, []);
83
83
  const { createNewAs, ...restArgs } = args;
84
+ const mounted = useRef(false);
85
+ useEffect(() => {
86
+ mounted.current = true;
87
+ return () => {
88
+ mounted.current = false;
89
+ };
90
+ }, []);
84
91
  return (<>
85
92
  <ObjectSelectComp {...restArgs} popoverContent={args.popoverContent} onPreview={id => {
86
93
  const data = dataPages.find(dataPage => dataPage.id === id);
@@ -101,7 +108,10 @@ export const ObjectSelectDemo = (args) => {
101
108
  onSubmit: ({ close }) => {
102
109
  if (selected) {
103
110
  setFormLoading(true);
104
- mockNetworkReq().then(close);
111
+ mockNetworkReq().then(() => {
112
+ if (mounted)
113
+ close();
114
+ });
105
115
  }
106
116
  else
107
117
  setScopeError(true);
@@ -109,7 +119,10 @@ export const ObjectSelectDemo = (args) => {
109
119
  onDismiss: ({ close }) => close(),
110
120
  onBeforeOpen: () => {
111
121
  setFormLoading(true);
112
- mockNetworkReq().then(() => setFormLoading(false));
122
+ mockNetworkReq().then(() => {
123
+ if (mounted)
124
+ setFormLoading(false);
125
+ });
113
126
  },
114
127
  onAfterClose: () => {
115
128
  setFormLoading(false);
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSelect.stories.jsx","sourceRoot":"","sources":["../../../src/build/ObjectSelect/ObjectSelect.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta, Story } from '@storybook/react';\nimport {\n FormEvent,\n useReducer,\n ChangeEvent,\n FocusEvent,\n useState,\n useCallback,\n useMemo\n} from 'react';\nimport { action } from '@storybook/addon-actions';\n\nimport {\n Form,\n Button,\n Flex,\n Input,\n TextArea,\n Card,\n CardContent,\n registerIcon,\n menuHelpers,\n useToaster,\n StyledRegion,\n MenuItemProps,\n FieldValueListProps,\n MenuProps\n} from '@pega/cosmos-react-core';\nimport { ObjectSelect, ObjectSelectProps } from '@pega/cosmos-react-build';\nimport * as times from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';\n\nimport { StyledConfigurationContent } from './ObjectSelect.styles';\nimport {\n skeletonData,\n fieldReducer,\n initFields,\n ObjectSelectStoryProps,\n ObjectSelectComp,\n dataPages,\n ViewportDrawer,\n FormRenderer,\n mockNetworkReq\n} from './ObjectSelect.mocks';\n\nregisterIcon(times);\n\nexport default {\n title: 'Build/ObjectSelect',\n component: ObjectSelect\n} as Meta;\n\nexport const ObjectSelectSkeleton: Story<ObjectSelectStoryProps> = (\n args: ObjectSelectStoryProps\n) => {\n const [value, setValue] = useState<ObjectSelectProps['value']>(args.value);\n\n return (\n <ObjectSelect\n {...args}\n items={skeletonData}\n value={value}\n onChange={id => {\n const data = menuHelpers.getItem(skeletonData, id);\n if (data) {\n setValue({\n id: data.id,\n primary: data.primary,\n href: data.href ?? '#',\n meta: data.id !== '01-4' ? data.secondary?.join(' ') : ''\n });\n } else setValue(undefined);\n }}\n configuration={{\n label: 'Gear button label',\n heading: 'Popover heading',\n onSubmit: args.onSubmit,\n children: (\n <StyledConfigurationContent>\n <StyledRegion style={{ minHeight: '20vh' }} />\n </StyledConfigurationContent>\n )\n }}\n onPreview={args.onPreview}\n onLinkClick={(id, e) => {\n e.preventDefault();\n action(`item with id - ${id} is clicked`)(e);\n }}\n />\n );\n};\n\nObjectSelectSkeleton.args = {\n label: 'Object select label',\n labelHidden: false,\n info: 'Object select info text',\n placeholder: '',\n status: undefined,\n required: false,\n disabled: false,\n readOnly: false,\n // eslint-disable-next-line demo-patterns/literal-args\n onPreview: action('Clicked preview link'),\n // eslint-disable-next-line demo-patterns/literal-args\n onSubmit: ({ close }: { close: () => void }) => {\n action('Clicked submit button');\n close();\n },\n // eslint-disable-next-line demo-patterns/literal-args\n onClose: action('Clicked cancel button')\n};\n\nObjectSelectSkeleton.argTypes = {\n label: { control: { type: 'text' } },\n labelHidden: { control: { type: 'boolean' } },\n info: { control: { type: 'text' } },\n placeholder: { control: { type: 'text' } },\n status: { options: [undefined, 'success', 'warning', 'error'], control: { type: 'select' } },\n required: { control: { type: 'boolean' } },\n disabled: { control: { type: 'boolean' } },\n readOnly: { control: { type: 'boolean' } },\n onPreview: { table: { disable: true } },\n onSubmit: { table: { disable: true } },\n onClose: { table: { disable: true } }\n};\n\nexport const ObjectSelectDemo: Story<ObjectSelectStoryProps> = (args: ObjectSelectStoryProps) => {\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [drawerData, setDrawerData] = useState<\n MenuItemProps & { metaData: FieldValueListProps['fields'] }\n >(dataPages[0]);\n\n const [scopeError, setScopeError] = useState(false);\n const [formLoading, setFormLoading] = useState(false);\n\n const [items, setItems] = useState<MenuProps['items']>((): MenuProps['items'] => {\n return menuHelpers.mapTree(dataPages, item => ({\n ...item,\n selected: item.items ? undefined : !!item.selected\n }));\n });\n\n const selected = useMemo(() => menuHelpers.getSelected(items)[0], [items]);\n\n const selectItem = useCallback((id: MenuItemProps['id']) => {\n setItems(cur => menuHelpers.selectItem(cur, id, 'single-select'));\n }, []);\n\n const { createNewAs, ...restArgs } = args;\n\n return (\n <>\n <ObjectSelectComp\n {...restArgs}\n popoverContent={args.popoverContent}\n onPreview={id => {\n const data = dataPages.find(dataPage => dataPage.id === id);\n if (data) setDrawerData(data);\n if (!drawerOpen) {\n setDrawerOpen(true);\n }\n }}\n createConfiguration={\n createNewAs === 'modal'\n ? {\n loading: formLoading,\n renderer: FormRenderer,\n rendererProps: {\n items,\n selectItem,\n scopeError\n },\n onSubmit: ({ close }) => {\n if (selected) {\n setFormLoading(true);\n mockNetworkReq().then(close);\n } else setScopeError(true);\n },\n onDismiss: ({ close }) => close(),\n onBeforeOpen: () => {\n setFormLoading(true);\n mockNetworkReq().then(() => setFormLoading(false));\n },\n onAfterClose: () => {\n // Clean up loading state when the form is closed.\n setFormLoading(false);\n setItems(dataPages);\n }\n }\n : { href: 'https://www.pega.com' }\n }\n />\n <ViewportDrawer\n drawerData={drawerData}\n drawerOpen={drawerOpen}\n setDrawerOpen={setDrawerOpen}\n />\n </>\n );\n};\n\nObjectSelectDemo.args = {\n label: 'Data source',\n labelHidden: false,\n info: 'Select an appropriate data source',\n placeholder: '',\n status: undefined,\n required: false,\n disabled: false,\n readOnly: false,\n popoverContent: 'simple',\n // eslint-disable-next-line demo-patterns/literal-args\n onPreview: () => {},\n // eslint-disable-next-line demo-patterns/literal-args\n onSubmit: ({ close }: { close: () => void }) => {\n action('Clicked submit button');\n close();\n },\n // eslint-disable-next-line demo-patterns/literal-args\n onClose: action('Clicked cancel button'),\n createNewAs: 'modal'\n};\n\nObjectSelectDemo.argTypes = {\n label: { control: { type: 'text' } },\n labelHidden: { control: { type: 'boolean' } },\n info: { control: { type: 'text' } },\n placeholder: { control: { type: 'text' } },\n status: { options: [undefined, 'success', 'warning', 'error'], control: { type: 'select' } },\n required: { control: { type: 'boolean' } },\n disabled: { control: { type: 'boolean' } },\n readOnly: { control: { type: 'boolean' } },\n popoverContent: { options: ['simple', 'advanced'], control: { type: 'radio' } },\n onPreview: { table: { disable: true } },\n onSubmit: { table: { disable: true } },\n onClose: { table: { disable: true } },\n createNewAs: { options: ['modal', 'link'], control: { type: 'radio' } }\n};\n\nexport const ObjectSelectDemoInForm: Story = () => {\n const [fields, setField] = useReducer(fieldReducer, undefined, initFields);\n const { push } = useToaster();\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [drawerData, setDrawerData] = useState<\n MenuItemProps & { metaData: FieldValueListProps['fields'] }\n >(dataPages[0]);\n\n const [scopeError, setScopeError] = useState(false);\n const [formLoading, setFormLoading] = useState(false);\n\n const [items, setItems] = useState<MenuProps['items']>((): MenuProps['items'] => {\n return menuHelpers.mapTree(dataPages, item => ({\n ...item,\n selected: item.items ? undefined : !!item.selected\n }));\n });\n\n const selected = useMemo(() => menuHelpers.getSelected(items)[0], [items]);\n\n const selectItem = useCallback((id: MenuItemProps['id']) => {\n setItems(cur => menuHelpers.selectItem(cur, id, 'single-select'));\n }, []);\n\n const name = fields.find(field => field.name === 'name');\n const description = fields.find(field => field.name === 'description');\n\n if (!name || !description) return <></>;\n\n const canSubmit = fields.every(field => field.value && field.validator());\n\n const actions = (\n <>\n <Button\n name='Cancel'\n variant='secondary'\n onClick={() => {\n push({ content: 'Form cancelled!' });\n }}\n >\n Cancel\n </Button>\n <Button name='Submit' type='submit' variant='primary' disabled={!canSubmit}>\n Submit\n </Button>\n </>\n );\n\n return (\n <Card style={{ margin: 'auto', maxWidth: '37.5rem' }}>\n <CardContent>\n <Form\n actions={actions}\n onSubmit={(e: FormEvent) => {\n e.preventDefault();\n push({ content: 'Form submitted!' });\n }}\n heading='Configure Table'\n >\n <Flex container={{ direction: 'column', gap: 2 }} item={{ grow: 1 }}>\n <Input\n name='name'\n label='Table name'\n value={name.value}\n required={name.required}\n status={name.status}\n info='Enter a valid table name'\n onChange={(e: ChangeEvent<HTMLInputElement>) => setField({ ...e })}\n onBlur={(e: FocusEvent<HTMLInputElement>) => setField({ ...e })}\n autoComplete='off'\n />\n\n <TextArea\n name='description'\n required={description.required}\n label='Table description'\n status={description.status}\n info={description.info || description.help}\n onChange={(e: ChangeEvent<HTMLTextAreaElement>) => setField({ ...e })}\n onBlur={(e: FocusEvent<HTMLInputElement>) => setField({ ...e })}\n />\n <ObjectSelectComp\n label='Data page'\n info='Select an appropriate data page'\n items={[]}\n onSubmit={({ close }) => close()}\n onClose={() => null}\n onChange={() => {}}\n onPreview={id => {\n const data = dataPages.find(dataPage => dataPage.id === id);\n if (data) setDrawerData(data);\n if (!drawerOpen) {\n setDrawerOpen(true);\n }\n }}\n createConfiguration={{ href: 'https://www.pega.com' }}\n />\n <ObjectSelectComp\n label='Visibility condition'\n info='Choose a when condition from list'\n items={[]}\n onChange={() => {}}\n onSubmit={({ close }) => close()}\n onClose={() => null}\n createConfiguration={{\n loading: formLoading,\n renderer: FormRenderer,\n rendererProps: {\n items,\n selectItem,\n scopeError\n },\n onSubmit: ({ close }) => {\n if (selected) {\n setFormLoading(true);\n mockNetworkReq().then(close);\n } else setScopeError(true);\n },\n onDismiss: ({ close }) => close(),\n onBeforeOpen: () => {\n setFormLoading(true);\n mockNetworkReq().then(() => setFormLoading(false));\n },\n onAfterClose: () => {\n // Clean up loading state when the form is closed.\n setFormLoading(false);\n setItems(dataPages);\n }\n }}\n onPreview={id => {\n const data = dataPages.find(dataPage => dataPage.id === id);\n if (data) setDrawerData(data);\n if (!drawerOpen) {\n setDrawerOpen(true);\n }\n }}\n />\n <ViewportDrawer\n drawerData={drawerData}\n drawerOpen={drawerOpen}\n setDrawerOpen={setDrawerOpen}\n />\n </Flex>\n </Form>\n </CardContent>\n </Card>\n );\n};\n"]}
1
+ {"version":3,"file":"ObjectSelect.stories.jsx","sourceRoot":"","sources":["../../../src/build/ObjectSelect/ObjectSelect.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta, Story } from '@storybook/react';\nimport {\n FormEvent,\n useReducer,\n ChangeEvent,\n FocusEvent,\n useState,\n useCallback,\n useMemo,\n useRef,\n useEffect\n} from 'react';\nimport { action } from '@storybook/addon-actions';\n\nimport {\n Form,\n Button,\n Flex,\n Input,\n TextArea,\n Card,\n CardContent,\n registerIcon,\n menuHelpers,\n useToaster,\n StyledRegion,\n MenuItemProps,\n FieldValueListProps,\n MenuProps\n} from '@pega/cosmos-react-core';\nimport { ObjectSelect, ObjectSelectProps } from '@pega/cosmos-react-build';\nimport * as times from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';\n\nimport { StyledConfigurationContent } from './ObjectSelect.styles';\nimport {\n skeletonData,\n fieldReducer,\n initFields,\n ObjectSelectStoryProps,\n ObjectSelectComp,\n dataPages,\n ViewportDrawer,\n FormRenderer,\n mockNetworkReq\n} from './ObjectSelect.mocks';\n\nregisterIcon(times);\n\nexport default {\n title: 'Build/ObjectSelect',\n component: ObjectSelect\n} as Meta;\n\nexport const ObjectSelectSkeleton: Story<ObjectSelectStoryProps> = (\n args: ObjectSelectStoryProps\n) => {\n const [value, setValue] = useState<ObjectSelectProps['value']>(args.value);\n\n return (\n <ObjectSelect\n {...args}\n items={skeletonData}\n value={value}\n onChange={id => {\n const data = menuHelpers.getItem(skeletonData, id);\n if (data) {\n setValue({\n id: data.id,\n primary: data.primary,\n href: data.href ?? '#',\n meta: data.id !== '01-4' ? data.secondary?.join(' ') : ''\n });\n } else setValue(undefined);\n }}\n configuration={{\n label: 'Gear button label',\n heading: 'Popover heading',\n onSubmit: args.onSubmit,\n children: (\n <StyledConfigurationContent>\n <StyledRegion style={{ minHeight: '20vh' }} />\n </StyledConfigurationContent>\n )\n }}\n onPreview={args.onPreview}\n onLinkClick={(id, e) => {\n e.preventDefault();\n action(`item with id - ${id} is clicked`)(e);\n }}\n />\n );\n};\n\nObjectSelectSkeleton.args = {\n label: 'Object select label',\n labelHidden: false,\n info: 'Object select info text',\n placeholder: '',\n status: undefined,\n required: false,\n disabled: false,\n readOnly: false,\n // eslint-disable-next-line demo-patterns/literal-args\n onPreview: action('Clicked preview link'),\n // eslint-disable-next-line demo-patterns/literal-args\n onSubmit: ({ close }: { close: () => void }) => {\n action('Clicked submit button');\n close();\n },\n // eslint-disable-next-line demo-patterns/literal-args\n onClose: action('Clicked cancel button')\n};\n\nObjectSelectSkeleton.argTypes = {\n label: { control: { type: 'text' } },\n labelHidden: { control: { type: 'boolean' } },\n info: { control: { type: 'text' } },\n placeholder: { control: { type: 'text' } },\n status: { options: [undefined, 'success', 'warning', 'error'], control: { type: 'select' } },\n required: { control: { type: 'boolean' } },\n disabled: { control: { type: 'boolean' } },\n readOnly: { control: { type: 'boolean' } },\n onPreview: { table: { disable: true } },\n onSubmit: { table: { disable: true } },\n onClose: { table: { disable: true } }\n};\n\nexport const ObjectSelectDemo: Story<ObjectSelectStoryProps> = (args: ObjectSelectStoryProps) => {\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [drawerData, setDrawerData] = useState<\n MenuItemProps & { metaData: FieldValueListProps['fields'] }\n >(dataPages[0]);\n\n const [scopeError, setScopeError] = useState(false);\n const [formLoading, setFormLoading] = useState(false);\n\n const [items, setItems] = useState<MenuProps['items']>((): MenuProps['items'] => {\n return menuHelpers.mapTree(dataPages, item => ({\n ...item,\n selected: item.items ? undefined : !!item.selected\n }));\n });\n\n const selected = useMemo(() => menuHelpers.getSelected(items)[0], [items]);\n\n const selectItem = useCallback((id: MenuItemProps['id']) => {\n setItems(cur => menuHelpers.selectItem(cur, id, 'single-select'));\n }, []);\n\n const { createNewAs, ...restArgs } = args;\n\n const mounted = useRef(false);\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }, []);\n\n return (\n <>\n <ObjectSelectComp\n {...restArgs}\n popoverContent={args.popoverContent}\n onPreview={id => {\n const data = dataPages.find(dataPage => dataPage.id === id);\n if (data) setDrawerData(data);\n if (!drawerOpen) {\n setDrawerOpen(true);\n }\n }}\n createConfiguration={\n createNewAs === 'modal'\n ? {\n loading: formLoading,\n renderer: FormRenderer,\n rendererProps: {\n items,\n selectItem,\n scopeError\n },\n onSubmit: ({ close }) => {\n if (selected) {\n setFormLoading(true);\n mockNetworkReq().then(() => {\n if (mounted) close();\n });\n } else setScopeError(true);\n },\n onDismiss: ({ close }) => close(),\n onBeforeOpen: () => {\n setFormLoading(true);\n mockNetworkReq().then(() => {\n if (mounted) setFormLoading(false);\n });\n },\n onAfterClose: () => {\n // Clean up loading state when the form is closed.\n setFormLoading(false);\n setItems(dataPages);\n }\n }\n : { href: 'https://www.pega.com' }\n }\n />\n <ViewportDrawer\n drawerData={drawerData}\n drawerOpen={drawerOpen}\n setDrawerOpen={setDrawerOpen}\n />\n </>\n );\n};\n\nObjectSelectDemo.args = {\n label: 'Data source',\n labelHidden: false,\n info: 'Select an appropriate data source',\n placeholder: '',\n status: undefined,\n required: false,\n disabled: false,\n readOnly: false,\n popoverContent: 'simple',\n // eslint-disable-next-line demo-patterns/literal-args\n onPreview: () => {},\n // eslint-disable-next-line demo-patterns/literal-args\n onSubmit: ({ close }: { close: () => void }) => {\n action('Clicked submit button');\n close();\n },\n // eslint-disable-next-line demo-patterns/literal-args\n onClose: action('Clicked cancel button'),\n createNewAs: 'modal'\n};\n\nObjectSelectDemo.argTypes = {\n label: { control: { type: 'text' } },\n labelHidden: { control: { type: 'boolean' } },\n info: { control: { type: 'text' } },\n placeholder: { control: { type: 'text' } },\n status: { options: [undefined, 'success', 'warning', 'error'], control: { type: 'select' } },\n required: { control: { type: 'boolean' } },\n disabled: { control: { type: 'boolean' } },\n readOnly: { control: { type: 'boolean' } },\n popoverContent: { options: ['simple', 'advanced'], control: { type: 'radio' } },\n onPreview: { table: { disable: true } },\n onSubmit: { table: { disable: true } },\n onClose: { table: { disable: true } },\n createNewAs: { options: ['modal', 'link'], control: { type: 'radio' } }\n};\n\nexport const ObjectSelectDemoInForm: Story = () => {\n const [fields, setField] = useReducer(fieldReducer, undefined, initFields);\n const { push } = useToaster();\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [drawerData, setDrawerData] = useState<\n MenuItemProps & { metaData: FieldValueListProps['fields'] }\n >(dataPages[0]);\n\n const [scopeError, setScopeError] = useState(false);\n const [formLoading, setFormLoading] = useState(false);\n\n const [items, setItems] = useState<MenuProps['items']>((): MenuProps['items'] => {\n return menuHelpers.mapTree(dataPages, item => ({\n ...item,\n selected: item.items ? undefined : !!item.selected\n }));\n });\n\n const selected = useMemo(() => menuHelpers.getSelected(items)[0], [items]);\n\n const selectItem = useCallback((id: MenuItemProps['id']) => {\n setItems(cur => menuHelpers.selectItem(cur, id, 'single-select'));\n }, []);\n\n const name = fields.find(field => field.name === 'name');\n const description = fields.find(field => field.name === 'description');\n\n if (!name || !description) return <></>;\n\n const canSubmit = fields.every(field => field.value && field.validator());\n\n const actions = (\n <>\n <Button\n name='Cancel'\n variant='secondary'\n onClick={() => {\n push({ content: 'Form cancelled!' });\n }}\n >\n Cancel\n </Button>\n <Button name='Submit' type='submit' variant='primary' disabled={!canSubmit}>\n Submit\n </Button>\n </>\n );\n\n return (\n <Card style={{ margin: 'auto', maxWidth: '37.5rem' }}>\n <CardContent>\n <Form\n actions={actions}\n onSubmit={(e: FormEvent) => {\n e.preventDefault();\n push({ content: 'Form submitted!' });\n }}\n heading='Configure Table'\n >\n <Flex container={{ direction: 'column', gap: 2 }} item={{ grow: 1 }}>\n <Input\n name='name'\n label='Table name'\n value={name.value}\n required={name.required}\n status={name.status}\n info='Enter a valid table name'\n onChange={(e: ChangeEvent<HTMLInputElement>) => setField({ ...e })}\n onBlur={(e: FocusEvent<HTMLInputElement>) => setField({ ...e })}\n autoComplete='off'\n />\n\n <TextArea\n name='description'\n required={description.required}\n label='Table description'\n status={description.status}\n info={description.info || description.help}\n onChange={(e: ChangeEvent<HTMLTextAreaElement>) => setField({ ...e })}\n onBlur={(e: FocusEvent<HTMLInputElement>) => setField({ ...e })}\n />\n <ObjectSelectComp\n label='Data page'\n info='Select an appropriate data page'\n items={[]}\n onSubmit={({ close }) => close()}\n onClose={() => null}\n onChange={() => {}}\n onPreview={id => {\n const data = dataPages.find(dataPage => dataPage.id === id);\n if (data) setDrawerData(data);\n if (!drawerOpen) {\n setDrawerOpen(true);\n }\n }}\n createConfiguration={{ href: 'https://www.pega.com' }}\n />\n <ObjectSelectComp\n label='Visibility condition'\n info='Choose a when condition from list'\n items={[]}\n onChange={() => {}}\n onSubmit={({ close }) => close()}\n onClose={() => null}\n createConfiguration={{\n loading: formLoading,\n renderer: FormRenderer,\n rendererProps: {\n items,\n selectItem,\n scopeError\n },\n onSubmit: ({ close }) => {\n if (selected) {\n setFormLoading(true);\n mockNetworkReq().then(close);\n } else setScopeError(true);\n },\n onDismiss: ({ close }) => close(),\n onBeforeOpen: () => {\n setFormLoading(true);\n mockNetworkReq().then(() => setFormLoading(false));\n },\n onAfterClose: () => {\n // Clean up loading state when the form is closed.\n setFormLoading(false);\n setItems(dataPages);\n }\n }}\n onPreview={id => {\n const data = dataPages.find(dataPage => dataPage.id === id);\n if (data) setDrawerData(data);\n if (!drawerOpen) {\n setDrawerOpen(true);\n }\n }}\n />\n <ViewportDrawer\n drawerData={drawerData}\n drawerOpen={drawerOpen}\n setDrawerOpen={setDrawerOpen}\n />\n </Flex>\n </Form>\n </CardContent>\n </Card>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Link.stories.d.ts","sourceRoot":"","sources":["../../../src/core/Link/Link.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAkC,SAAS,EAAE,MAAM,yBAAyB,CAAC;;AAKpF,wBAYU;AAEV,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,SAAS,CAMrC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAoB9B,CAAC;AAMF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,SAAS,CAM5C,CAAC"}
1
+ {"version":3,"file":"Link.stories.d.ts","sourceRoot":"","sources":["../../../src/core/Link/Link.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAkC,SAAS,EAAE,MAAM,yBAAyB,CAAC;;AAKpF,wBAYU;AAEV,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,SAAS,CAMrC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAoB9B,CAAC;AAMF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,SAAS,CAY5C,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { action } from '@storybook/addon-actions';
1
2
  import { Icon, registerIcon, Flex, Link } from '@pega/cosmos-react-core';
2
3
  import * as plusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/plus.icon';
3
4
  registerIcon(plusIcon);
@@ -42,7 +43,7 @@ LinkWithIconDemo.argTypes = {
42
43
  variant: { table: { disable: true } }
43
44
  };
44
45
  export const PreviewableLink = (args) => {
45
- return (<Link href='http://www.pega.com' variant={args.variant} previewable target='_blank'>
46
+ return (<Link href='http://www.pega.com' variant={args.variant} previewable target='_blank' onPreview={action('Preview activated')}>
46
47
  Visit Pega!
47
48
  </Link>);
48
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Link.stories.jsx","sourceRoot":"","sources":["../../../src/core/Link/Link.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAa,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,QAAQ,MAAM,6DAA6D,CAAC;AAExF,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEvB,eAAe;IACb,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,IAAI;IACf,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM;KAChB;IACD,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC;YAC3D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC5B;KACF;CACM,CAAC;AAEV,MAAM,CAAC,MAAM,QAAQ,GAAqB,CAAC,IAAe,EAAE,EAAE;IAC5D,OAAO,CACL,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CACrE;;IACF,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAU,GAAG,EAAE;IAC1C,OAAO,CACL,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CACxC;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CACrE;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EACnB;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CACvE;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EACnB;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CACpE;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EACnB;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClE;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EACnB;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClE;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EACnB;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,gBAAgB,CAAC,QAAQ,GAAG;IAC1B,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAqB,CAAC,IAAe,EAAE,EAAE;IACnE,OAAO,CACL,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CACjF;;IACF,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { Meta, Story } from '@storybook/react';\n\nimport { Icon, registerIcon, Flex, Link, LinkProps } from '@pega/cosmos-react-core';\nimport * as plusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/plus.icon';\n\nregisterIcon(plusIcon);\n\nexport default {\n title: 'Core/Link',\n component: Link,\n args: {\n variant: 'link'\n },\n argTypes: {\n variant: {\n options: ['link', 'primary', 'secondary', 'simple', 'text'],\n control: { type: 'select' }\n }\n }\n} as Meta;\n\nexport const LinkDemo: Story<LinkProps> = (args: LinkProps) => {\n return (\n <Link href='http://www.pega.com' variant={args.variant} target='_blank'>\n Visit Pega!\n </Link>\n );\n};\n\nexport const LinkWithIconDemo: Story = () => {\n return (\n <Flex container={{ alignItems: 'center' }}>\n <Link href='http://www.pega.com' variant='primary' icon target='_blank'>\n <Icon name='plus' />\n </Link>\n <Link href='http://www.pega.com' variant='secondary' icon target='_blank'>\n <Icon name='plus' />\n </Link>\n <Link href='http://www.pega.com' variant='simple' icon target='_blank'>\n <Icon name='plus' />\n </Link>\n <Link href='http://www.pega.com' variant='link' icon target='_blank'>\n <Icon name='plus' />\n </Link>\n <Link href='http://www.pega.com' variant='text' icon target='_blank'>\n <Icon name='plus' />\n </Link>\n </Flex>\n );\n};\n\nLinkWithIconDemo.argTypes = {\n variant: { table: { disable: true } }\n};\n\nexport const PreviewableLink: Story<LinkProps> = (args: LinkProps) => {\n return (\n <Link href='http://www.pega.com' variant={args.variant} previewable target='_blank'>\n Visit Pega!\n </Link>\n );\n};\n"]}
1
+ {"version":3,"file":"Link.stories.jsx","sourceRoot":"","sources":["../../../src/core/Link/Link.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAa,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,QAAQ,MAAM,6DAA6D,CAAC;AAExF,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEvB,eAAe;IACb,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,IAAI;IACf,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM;KAChB;IACD,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC;YAC3D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC5B;KACF;CACM,CAAC;AAEV,MAAM,CAAC,MAAM,QAAQ,GAAqB,CAAC,IAAe,EAAE,EAAE;IAC5D,OAAO,CACL,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CACrE;;IACF,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAU,GAAG,EAAE;IAC1C,OAAO,CACL,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CACxC;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CACrE;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EACnB;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CACvE;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EACnB;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CACpE;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EACnB;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClE;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EACnB;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClE;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EACnB;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,gBAAgB,CAAC,QAAQ,GAAG;IAC1B,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAqB,CAAC,IAAe,EAAE,EAAE;IACnE,OAAO,CACL,CAAC,IAAI,CACH,IAAI,CAAC,qBAAqB,CAC1B,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CACtB,WAAW,CACX,MAAM,CAAC,QAAQ,CACf,SAAS,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAEvC;;IACF,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { Meta, Story } from '@storybook/react';\nimport { action } from '@storybook/addon-actions';\n\nimport { Icon, registerIcon, Flex, Link, LinkProps } from '@pega/cosmos-react-core';\nimport * as plusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/plus.icon';\n\nregisterIcon(plusIcon);\n\nexport default {\n title: 'Core/Link',\n component: Link,\n args: {\n variant: 'link'\n },\n argTypes: {\n variant: {\n options: ['link', 'primary', 'secondary', 'simple', 'text'],\n control: { type: 'select' }\n }\n }\n} as Meta;\n\nexport const LinkDemo: Story<LinkProps> = (args: LinkProps) => {\n return (\n <Link href='http://www.pega.com' variant={args.variant} target='_blank'>\n Visit Pega!\n </Link>\n );\n};\n\nexport const LinkWithIconDemo: Story = () => {\n return (\n <Flex container={{ alignItems: 'center' }}>\n <Link href='http://www.pega.com' variant='primary' icon target='_blank'>\n <Icon name='plus' />\n </Link>\n <Link href='http://www.pega.com' variant='secondary' icon target='_blank'>\n <Icon name='plus' />\n </Link>\n <Link href='http://www.pega.com' variant='simple' icon target='_blank'>\n <Icon name='plus' />\n </Link>\n <Link href='http://www.pega.com' variant='link' icon target='_blank'>\n <Icon name='plus' />\n </Link>\n <Link href='http://www.pega.com' variant='text' icon target='_blank'>\n <Icon name='plus' />\n </Link>\n </Flex>\n );\n};\n\nLinkWithIconDemo.argTypes = {\n variant: { table: { disable: true } }\n};\n\nexport const PreviewableLink: Story<LinkProps> = (args: LinkProps) => {\n return (\n <Link\n href='http://www.pega.com'\n variant={args.variant}\n previewable\n target='_blank'\n onPreview={action('Preview activated')}\n >\n Visit Pega!\n </Link>\n );\n};\n"]}
@@ -4,6 +4,7 @@ declare const _default: Meta<import("@storybook/react").Args>;
4
4
  export default _default;
5
5
  interface ListToolbarStoryProps {
6
6
  condensed: ListToolbarProps['condensed'];
7
+ createNewLabel: string;
7
8
  }
8
9
  export declare const ListToolbarDemo: Story<ListToolbarStoryProps>;
9
10
  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,EAGjB,MAAM,yBAAyB,CAAC;;AAWjC,wBAGU;AAIV,UAAU,qBAAqB;IAC7B,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,qBAAqB,CAwFxD,CAAC;AAUF,eAAO,MAAM,iBAAiB,EAAE,KAa/B,CAAC"}
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,EAGjB,MAAM,yBAAyB,CAAC;;AAWjC,wBAGU;AAIV,UAAU,qBAAqB;IAC7B,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACzC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,qBAAqB,CA2FxD,CAAC;AAYF,eAAO,MAAM,iBAAiB,EAAE,KAa/B,CAAC"}
@@ -69,7 +69,10 @@ export const ListToolbarDemo = (args) => {
69
69
  return cur.map(view => ({ ...view, selected: view.id === id }));
70
70
  });
71
71
  }
72
- }} onCreateNew={action('Clicked Create New')} search={{ onSearchSubmit: action('Search submit') }} count={{
72
+ }} createNew={{
73
+ onClick: action('Clicked Create New'),
74
+ label: args.createNewLabel
75
+ }} search={{ onSearchSubmit: action('Search submit') }} count={{
73
76
  total: 32,
74
77
  selected: 4
75
78
  }} filter={filterProp} sort={sortProp} group={groupProp} actions={actions} additionalActions={<MenuButton text='Edit'/>} condensed={args.condensed}/>
@@ -78,10 +81,12 @@ export const ListToolbarDemo = (args) => {
78
81
  </Card>);
79
82
  };
80
83
  ListToolbarDemo.args = {
81
- condensed: false
84
+ condensed: false,
85
+ createNewLabel: undefined
82
86
  };
83
87
  ListToolbarDemo.argTypes = {
84
- condensed: { control: { type: 'boolean' } }
88
+ condensed: { control: { type: 'boolean' } },
89
+ createNewLabel: { control: { type: 'text' } }
85
90
  };
86
91
  export const SimpleToolbarDemo = () => {
87
92
  return (<Card>