@pega/cosmos-react-demos 3.0.0-dev.4.0 → 3.0.0-dev.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/jsx/core/FieldGroup/FieldGroupList.mocks.jsx +1 -1
  2. package/jsx/core/FieldGroup/FieldGroupList.mocks.jsx.map +1 -1
  3. package/jsx/core/FieldGroup/FieldGroupList.stories.d.ts +9 -8
  4. package/jsx/core/FieldGroup/FieldGroupList.stories.d.ts.map +1 -1
  5. package/jsx/core/FieldGroup/FieldGroupList.stories.jsx +51 -20
  6. package/jsx/core/FieldGroup/FieldGroupList.stories.jsx.map +1 -1
  7. package/jsx/core/ListToolbar/ListToolbar.mocks.d.ts +9 -0
  8. package/jsx/core/ListToolbar/ListToolbar.mocks.d.ts.map +1 -0
  9. package/jsx/core/ListToolbar/ListToolbar.mocks.jsx +71 -0
  10. package/jsx/core/ListToolbar/ListToolbar.mocks.jsx.map +1 -0
  11. package/jsx/core/ListToolbar/ListToolbar.stories.d.ts +7 -0
  12. package/jsx/core/ListToolbar/ListToolbar.stories.d.ts.map +1 -0
  13. package/jsx/core/ListToolbar/ListToolbar.stories.jsx +87 -0
  14. package/jsx/core/ListToolbar/ListToolbar.stories.jsx.map +1 -0
  15. package/jsx/cs/ArticleList/ArticleList.stories.d.ts.map +1 -1
  16. package/jsx/cs/ArticleList/ArticleList.stories.jsx +2 -1
  17. package/jsx/cs/ArticleList/ArticleList.stories.jsx.map +1 -1
  18. package/jsx/work/Timeline/Timeline.stories.d.ts +2 -0
  19. package/jsx/work/Timeline/Timeline.stories.d.ts.map +1 -1
  20. package/jsx/work/Timeline/Timeline.stories.jsx +28 -1
  21. package/jsx/work/Timeline/Timeline.stories.jsx.map +1 -1
  22. package/lib/core/FieldGroup/FieldGroupList.mocks.js +1 -1
  23. package/lib/core/FieldGroup/FieldGroupList.mocks.js.map +1 -1
  24. package/lib/core/FieldGroup/FieldGroupList.stories.d.ts +9 -8
  25. package/lib/core/FieldGroup/FieldGroupList.stories.d.ts.map +1 -1
  26. package/lib/core/FieldGroup/FieldGroupList.stories.js +51 -20
  27. package/lib/core/FieldGroup/FieldGroupList.stories.js.map +1 -1
  28. package/lib/core/ListToolbar/ListToolbar.mocks.d.ts +9 -0
  29. package/lib/core/ListToolbar/ListToolbar.mocks.d.ts.map +1 -0
  30. package/lib/core/ListToolbar/ListToolbar.mocks.js +50 -0
  31. package/lib/core/ListToolbar/ListToolbar.mocks.js.map +1 -0
  32. package/lib/core/ListToolbar/ListToolbar.stories.d.ts +7 -0
  33. package/lib/core/ListToolbar/ListToolbar.stories.d.ts.map +1 -0
  34. package/lib/core/ListToolbar/ListToolbar.stories.js +79 -0
  35. package/lib/core/ListToolbar/ListToolbar.stories.js.map +1 -0
  36. package/lib/cs/ArticleList/ArticleList.stories.d.ts.map +1 -1
  37. package/lib/cs/ArticleList/ArticleList.stories.js +2 -1
  38. package/lib/cs/ArticleList/ArticleList.stories.js.map +1 -1
  39. package/lib/work/Timeline/Timeline.stories.d.ts +2 -0
  40. package/lib/work/Timeline/Timeline.stories.d.ts.map +1 -1
  41. package/lib/work/Timeline/Timeline.stories.js +22 -2
  42. package/lib/work/Timeline/Timeline.stories.js.map +1 -1
  43. package/package.json +9 -9
@@ -20,7 +20,7 @@ export const fieldGroupReducer = (groupMeta, FieldRenderer) => (items, payload)
20
20
  };
21
21
  export const DemoFieldRenderer = ({ label, type }) => {
22
22
  if (type === 'text') {
23
- return <Input label={label}/>;
23
+ return <Input label={label} key={label}/>;
24
24
  }
25
25
  return null;
26
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FieldGroupList.mocks.jsx","sourceRoot":"","sources":["../../../src/core/FieldGroup/FieldGroupList.mocks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA2B,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAqBpF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,CAAC,SAAoB,EAAE,aAAuD,EAAE,EAAE,CAClF,CACE,KAAgC,EAChC,OAAiC,EACN,EAAE;IAC7B,QAAQ,OAAO,CAAC,MAAM,EAAE;QACtB,KAAK,KAAK;YACR,OAAO;gBACL,GAAG,KAAK;gBACR;oBACE,IAAI,EAAE,GAAG,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC9C,EAAE,EAAE,SAAS,EAAE;oBACf,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAG,CAAC;iBACxF;aACF,CAAC;QAEJ,KAAK,QAAQ;YACX,OAAO,KAAK;iBACT,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;iBACxC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAE5E;YACE,OAAO,KAAK,CAAC;KAChB;AACH,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAa,EAAE,EAAE;IAC9D,IAAI,IAAI,KAAK,MAAM,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAG,CAAC;KAChC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE;QACN;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,gBAAgB;SACxB;KACF;CACF,CAAC","sourcesContent":["import { createUID, FieldGroupListItemProps, Input } from '@pega/cosmos-react-core';\n\ntype FieldGroupReducerPayload =\n | {\n action: 'add';\n }\n | {\n action: 'delete';\n id: string;\n };\n\nexport interface FieldMeta {\n label: string;\n type: 'text' | 'date' | 'file' | 'select' | 'textarea';\n}\n\nexport interface GroupMeta {\n label: string;\n fields: FieldMeta[];\n}\n\nexport const fieldGroupReducer =\n (groupMeta: GroupMeta, FieldRenderer: (props: FieldMeta) => JSX.Element | null) =>\n (\n items: FieldGroupListItemProps[],\n payload: FieldGroupReducerPayload\n ): FieldGroupListItemProps[] => {\n switch (payload.action) {\n case 'add':\n return [\n ...items,\n {\n name: `${groupMeta.label} ${items.length + 1}`,\n id: createUID(),\n children: groupMeta.fields.map(props => <FieldRenderer {...props} key={props.label} />)\n }\n ];\n\n case 'delete':\n return items\n .filter(group => group.id !== payload.id)\n .map((group, i) => ({ ...group, name: `${groupMeta.label} ${i + 1}` }));\n\n default:\n return items;\n }\n };\n\nexport const DemoFieldRenderer = ({ label, type }: FieldMeta) => {\n if (type === 'text') {\n return <Input label={label} />;\n }\n\n return null;\n};\n\nexport const demoGroupMeta: GroupMeta = {\n label: 'Applicant',\n fields: [\n {\n type: 'text',\n label: 'Applicant name'\n }\n ]\n};\n"]}
1
+ {"version":3,"file":"FieldGroupList.mocks.jsx","sourceRoot":"","sources":["../../../src/core/FieldGroup/FieldGroupList.mocks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA2B,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAqBpF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,CAAC,SAAoB,EAAE,aAAuD,EAAE,EAAE,CAClF,CACE,KAAgC,EAChC,OAAiC,EACN,EAAE;IAC7B,QAAQ,OAAO,CAAC,MAAM,EAAE;QACtB,KAAK,KAAK;YACR,OAAO;gBACL,GAAG,KAAK;gBACR;oBACE,IAAI,EAAE,GAAG,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC9C,EAAE,EAAE,SAAS,EAAE;oBACf,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAG,CAAC;iBACxF;aACF,CAAC;QAEJ,KAAK,QAAQ;YACX,OAAO,KAAK;iBACT,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;iBACxC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAE5E;YACE,OAAO,KAAK,CAAC;KAChB;AACH,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAa,EAAE,EAAE;IAC9D,IAAI,IAAI,KAAK,MAAM,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAG,CAAC;KAC5C;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE;QACN;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,gBAAgB;SACxB;KACF;CACF,CAAC","sourcesContent":["import { createUID, FieldGroupListItemProps, Input } from '@pega/cosmos-react-core';\n\ntype FieldGroupReducerPayload =\n | {\n action: 'add';\n }\n | {\n action: 'delete';\n id: string;\n };\n\nexport interface FieldMeta {\n label: string;\n type: 'text' | 'date' | 'file' | 'select' | 'textarea';\n}\n\nexport interface GroupMeta {\n label: string;\n fields: FieldMeta[];\n}\n\nexport const fieldGroupReducer =\n (groupMeta: GroupMeta, FieldRenderer: (props: FieldMeta) => JSX.Element | null) =>\n (\n items: FieldGroupListItemProps[],\n payload: FieldGroupReducerPayload\n ): FieldGroupListItemProps[] => {\n switch (payload.action) {\n case 'add':\n return [\n ...items,\n {\n name: `${groupMeta.label} ${items.length + 1}`,\n id: createUID(),\n children: groupMeta.fields.map(props => <FieldRenderer {...props} key={props.label} />)\n }\n ];\n\n case 'delete':\n return items\n .filter(group => group.id !== payload.id)\n .map((group, i) => ({ ...group, name: `${groupMeta.label} ${i + 1}` }));\n\n default:\n return items;\n }\n };\n\nexport const DemoFieldRenderer = ({ label, type }: FieldMeta) => {\n if (type === 'text') {\n return <Input label={label} key={label} />;\n }\n\n return null;\n};\n\nexport const demoGroupMeta: GroupMeta = {\n label: 'Applicant',\n fields: [\n {\n type: 'text',\n label: 'Applicant name'\n }\n ]\n};\n"]}
@@ -1,10 +1,11 @@
1
- /// <reference types="react" />
2
- declare const _default: {
3
- title: string;
4
- component: import("react").FunctionComponent<import("@pega/cosmos-react-core").FieldGroupListProps & import("@pega/cosmos-react-core").ForwardProps>;
5
- };
1
+ import { Meta, Story } from '@storybook/react';
2
+ declare const _default: Meta<import("@storybook/react").Args>;
6
3
  export default _default;
7
- export declare const ExpensesDemo: () => JSX.Element;
8
- export declare const InsuranceDemo: () => JSX.Element;
9
- export declare const FieldGroupListDemo: () => JSX.Element;
4
+ interface FieldGroupListDemoProps {
5
+ allowAdd?: boolean;
6
+ allowDelete?: boolean;
7
+ }
8
+ export declare const ExpensesDemo: Story<FieldGroupListDemoProps>;
9
+ export declare const InsuranceDemo: Story<FieldGroupListDemoProps>;
10
+ export declare const FieldGroupListDemo: Story<FieldGroupListDemoProps>;
10
11
  //# sourceMappingURL=FieldGroupList.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldGroupList.stories.d.ts","sourceRoot":"","sources":["../../../src/core/FieldGroup/FieldGroupList.stories.tsx"],"names":[],"mappings":";;;;;AAyBA,wBAGE;AAiDF,eAAO,MAAM,YAAY,mBAiDxB,CAAC;AAiCF,eAAO,MAAM,aAAa,mBAkDzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,mBAwB9B,CAAC"}
1
+ {"version":3,"file":"FieldGroupList.stories.d.ts","sourceRoot":"","sources":["../../../src/core/FieldGroup/FieldGroupList.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;;AAyB/C,wBAOU;AAEV,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAiDD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,uBAAuB,CA8DvD,CAAC;AAiCF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,uBAAuB,CA+DxD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,uBAAuB,CAuC7D,CAAC"}
@@ -1,10 +1,14 @@
1
1
  import { useReducer } from 'react';
2
2
  import { action } from '@storybook/addon-actions';
3
- import { Button, createUID, DateInput, FieldGroupList, FileInput, Form, Input, Select, Option, Text, TextArea } from '@pega/cosmos-react-core';
3
+ import { Button, createUID, DateInput, FieldGroupList, FileInput, Form, Input, Select, Option, Text, TextArea, Flex } from '@pega/cosmos-react-core';
4
4
  import { DemoFieldRenderer, demoGroupMeta, fieldGroupReducer } from './FieldGroupList.mocks';
5
5
  export default {
6
6
  title: 'Core/FieldGroupList',
7
- component: FieldGroupList
7
+ component: FieldGroupList,
8
+ args: {
9
+ allowAdd: true,
10
+ allowDelete: true
11
+ }
8
12
  };
9
13
  const ExpensesFieldRenderer = ({ label, type }) => {
10
14
  if (type === 'text') {
@@ -48,7 +52,7 @@ const expensesGroupMeta = {
48
52
  { type: 'textarea', label: 'Notes' }
49
53
  ]
50
54
  };
51
- export const ExpensesDemo = () => {
55
+ export const ExpensesDemo = (args) => {
52
56
  const [state, dispatch] = useReducer(fieldGroupReducer(expensesGroupMeta, ExpensesFieldRenderer), undefined, () => [
53
57
  {
54
58
  name: `${expensesGroupMeta.label} 1`,
@@ -70,11 +74,20 @@ export const ExpensesDemo = () => {
70
74
  action('Submit')(`Form:${e.type}`);
71
75
  }} style={{ margin: 'auto', maxWidth: '37.5rem' }}>
72
76
  <Text variant='h2'>Expense report</Text>
73
- <FieldGroupList items={state} onAdd={() => {
74
- dispatch({ action: 'add' });
75
- }} onDelete={id => {
76
- dispatch({ action: 'delete', id });
77
- }}/>
77
+ <FieldGroupList items={state.map(fields => {
78
+ return {
79
+ ...fields,
80
+ children: <Flex container={{ direction: 'column', gap: 2 }}>{fields.children}</Flex>
81
+ };
82
+ })} onAdd={args.allowAdd
83
+ ? () => {
84
+ dispatch({ action: 'add' });
85
+ }
86
+ : undefined} onDelete={args.allowDelete
87
+ ? id => {
88
+ dispatch({ action: 'delete', id });
89
+ }
90
+ : undefined}/>
78
91
  </Form>);
79
92
  };
80
93
  const InsuranceFieldRenderer = ({ label, type }) => {
@@ -103,7 +116,7 @@ const insuranceGroupMeta = {
103
116
  { type: 'select', label: 'Relationship' }
104
117
  ]
105
118
  };
106
- export const InsuranceDemo = () => {
119
+ export const InsuranceDemo = (args) => {
107
120
  const [state, dispatch] = useReducer(fieldGroupReducer(insuranceGroupMeta, InsuranceFieldRenderer), undefined, () => [
108
121
  {
109
122
  name: `${insuranceGroupMeta.label} 1`,
@@ -126,14 +139,23 @@ export const InsuranceDemo = () => {
126
139
  }} style={{ margin: 'auto', maxWidth: '37.5rem' }}>
127
140
  <Text variant='h1'>Insurance step 1</Text>
128
141
  <Text variant='h2'>Dependants</Text>
129
- <FieldGroupList items={state} onAdd={() => {
130
- dispatch({ action: 'add' });
131
- }} onDelete={id => {
132
- dispatch({ action: 'delete', id });
133
- }}/>
142
+ <FieldGroupList items={state.map(fields => {
143
+ return {
144
+ ...fields,
145
+ children: <Flex container={{ direction: 'column', gap: 2 }}>{fields.children}</Flex>
146
+ };
147
+ })} onAdd={args.allowAdd
148
+ ? () => {
149
+ dispatch({ action: 'add' });
150
+ }
151
+ : undefined} onDelete={args.allowDelete
152
+ ? id => {
153
+ dispatch({ action: 'delete', id });
154
+ }
155
+ : undefined}/>
134
156
  </Form>);
135
157
  };
136
- export const FieldGroupListDemo = () => {
158
+ export const FieldGroupListDemo = (args) => {
137
159
  const [state, dispatch] = useReducer(fieldGroupReducer(demoGroupMeta, DemoFieldRenderer), undefined, () => [
138
160
  {
139
161
  name: `${demoGroupMeta.label} 1`,
@@ -141,10 +163,19 @@ export const FieldGroupListDemo = () => {
141
163
  children: demoGroupMeta.fields.map(DemoFieldRenderer)
142
164
  }
143
165
  ]);
144
- return (<FieldGroupList items={state} onAdd={() => {
145
- dispatch({ action: 'add' });
146
- }} onDelete={id => {
147
- dispatch({ action: 'delete', id });
148
- }}/>);
166
+ return (<FieldGroupList items={state.map(fields => {
167
+ return {
168
+ ...fields,
169
+ children: <Flex container={{ direction: 'column', gap: 2 }}>{fields.children}</Flex>
170
+ };
171
+ })} onAdd={args.allowAdd
172
+ ? () => {
173
+ dispatch({ action: 'add' });
174
+ }
175
+ : undefined} onDelete={args.allowDelete
176
+ ? id => {
177
+ dispatch({ action: 'delete', id });
178
+ }
179
+ : undefined}/>);
149
180
  };
150
181
  //# sourceMappingURL=FieldGroupList.stories.jsx.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldGroupList.stories.jsx","sourceRoot":"","sources":["../../../src/core/FieldGroup/FieldGroupList.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useReducer, MouseEvent, FormEvent } from 'react';\nimport { action } from '@storybook/addon-actions';\n\nimport {\n Button,\n createUID,\n DateInput,\n FieldGroupList,\n FileInput,\n Form,\n Input,\n Select,\n Option,\n Text,\n TextArea\n} from '@pega/cosmos-react-core';\n\nimport {\n DemoFieldRenderer,\n demoGroupMeta,\n fieldGroupReducer,\n FieldMeta,\n GroupMeta\n} from './FieldGroupList.mocks';\n\nexport default {\n title: 'Core/FieldGroupList',\n component: FieldGroupList\n};\n\nconst ExpensesFieldRenderer = ({ label, type }: FieldMeta) => {\n if (type === 'text') {\n return <Input label={label} />;\n }\n if (type === 'select') {\n return (\n <Select label={label}>\n <Option>Select</Option>\n <Option>Advertising</Option>\n <Option>Car and truck expenses</Option>\n <Option>Commissions and fees</Option>\n <Option>Contract labor</Option>\n <Option>Legal and professional services</Option>\n <Option>Office expense</Option>\n <Option>Rent or lease</Option>\n <Option>Vehicles, machinery, and equipment</Option>\n <Option>Repairs and maintenance</Option>\n <Option>Travel and meals</Option>\n <Option>Deductible meals</Option>\n <Option>Utilities</Option>\n <Option>Other</Option>\n </Select>\n );\n }\n if (type === 'file') {\n return <FileInput label={label} multiple />;\n }\n if (type === 'textarea') {\n return <TextArea label={label} />;\n }\n if (type === 'date') {\n return <DateInput label={label} />;\n }\n\n return null;\n};\n\nconst expensesGroupMeta: GroupMeta = {\n label: 'Expense',\n fields: [\n { type: 'select', label: 'Type of expense' },\n { type: 'date', label: 'Date of expense' },\n { type: 'file', label: 'Receipts' },\n { type: 'textarea', label: 'Notes' }\n ]\n};\n\nexport const ExpensesDemo = () => {\n const [state, dispatch] = useReducer(\n fieldGroupReducer(expensesGroupMeta, ExpensesFieldRenderer),\n undefined,\n () => [\n {\n name: `${expensesGroupMeta.label} 1`,\n id: createUID(),\n children: expensesGroupMeta.fields.map(ExpensesFieldRenderer)\n }\n ]\n );\n\n return (\n <Form\n actions={\n <>\n <Button\n name='Cancel'\n variant='secondary'\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n action('Click')(`${e.currentTarget.name}:${e.type}`);\n }}\n >\n Cancel\n </Button>\n <Button name='Submit' type='submit' variant='primary'>\n Submit\n </Button>\n </>\n }\n onSubmit={(e: FormEvent) => {\n e.preventDefault();\n action('Submit')(`Form:${e.type}`);\n }}\n style={{ margin: 'auto', maxWidth: '37.5rem' }}\n >\n <Text variant='h2'>Expense report</Text>\n <FieldGroupList\n items={state}\n onAdd={() => {\n dispatch({ action: 'add' });\n }}\n onDelete={id => {\n dispatch({ action: 'delete', id });\n }}\n />\n </Form>\n );\n};\n\nconst InsuranceFieldRenderer = ({ label, type }: FieldMeta) => {\n if (type === 'text') {\n return <Input label={label} />;\n }\n if (type === 'select') {\n return (\n <Select label={label}>\n <Option>Select</Option>\n <Option>Mother</Option>\n <Option>Father</Option>\n <Option>Guardian</Option>\n <Option>Child</Option>\n <Option>Spouse</Option>\n <Option>Sibling</Option>\n <Option>Other</Option>\n </Select>\n );\n }\n\n return null;\n};\n\nconst insuranceGroupMeta: GroupMeta = {\n label: 'Entry',\n fields: [\n { type: 'text', label: 'First name' },\n { type: 'text', label: 'Last name' },\n { type: 'select', label: 'Relationship' }\n ]\n};\n\nexport const InsuranceDemo = () => {\n const [state, dispatch] = useReducer(\n fieldGroupReducer(insuranceGroupMeta, InsuranceFieldRenderer),\n undefined,\n () => [\n {\n name: `${insuranceGroupMeta.label} 1`,\n id: createUID(),\n children: insuranceGroupMeta.fields.map(InsuranceFieldRenderer)\n }\n ]\n );\n\n return (\n <Form\n actions={\n <>\n <Button\n name='Cancel'\n variant='secondary'\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n action('Click')(`${e.currentTarget.name}:${e.type}`);\n }}\n >\n Cancel\n </Button>\n <Button name='Submit' type='submit' variant='primary'>\n Submit\n </Button>\n </>\n }\n onSubmit={(e: FormEvent) => {\n e.preventDefault();\n action('Submit')(`Form:${e.type}`);\n }}\n style={{ margin: 'auto', maxWidth: '37.5rem' }}\n >\n <Text variant='h1'>Insurance step 1</Text>\n <Text variant='h2'>Dependants</Text>\n <FieldGroupList\n items={state}\n onAdd={() => {\n dispatch({ action: 'add' });\n }}\n onDelete={id => {\n dispatch({ action: 'delete', id });\n }}\n />\n </Form>\n );\n};\n\nexport const FieldGroupListDemo = () => {\n const [state, dispatch] = useReducer(\n fieldGroupReducer(demoGroupMeta, DemoFieldRenderer),\n undefined,\n () => [\n {\n name: `${demoGroupMeta.label} 1`,\n id: createUID(),\n children: demoGroupMeta.fields.map(DemoFieldRenderer)\n }\n ]\n );\n\n return (\n <FieldGroupList\n items={state}\n onAdd={() => {\n dispatch({ action: 'add' });\n }}\n onDelete={id => {\n dispatch({ action: 'delete', id });\n }}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"FieldGroupList.stories.jsx","sourceRoot":"","sources":["../../../src/core/FieldGroup/FieldGroupList.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useReducer, MouseEvent, FormEvent } from 'react';\nimport { action } from '@storybook/addon-actions';\nimport { Meta, Story } from '@storybook/react';\n\nimport {\n Button,\n createUID,\n DateInput,\n FieldGroupList,\n FileInput,\n Form,\n Input,\n Select,\n Option,\n Text,\n TextArea,\n Flex\n} from '@pega/cosmos-react-core';\n\nimport {\n DemoFieldRenderer,\n demoGroupMeta,\n fieldGroupReducer,\n FieldMeta,\n GroupMeta\n} from './FieldGroupList.mocks';\n\nexport default {\n title: 'Core/FieldGroupList',\n component: FieldGroupList,\n args: {\n allowAdd: true,\n allowDelete: true\n }\n} as Meta;\n\ninterface FieldGroupListDemoProps {\n allowAdd?: boolean;\n allowDelete?: boolean;\n}\n\nconst ExpensesFieldRenderer = ({ label, type }: FieldMeta) => {\n if (type === 'text') {\n return <Input label={label} />;\n }\n if (type === 'select') {\n return (\n <Select label={label}>\n <Option>Select</Option>\n <Option>Advertising</Option>\n <Option>Car and truck expenses</Option>\n <Option>Commissions and fees</Option>\n <Option>Contract labor</Option>\n <Option>Legal and professional services</Option>\n <Option>Office expense</Option>\n <Option>Rent or lease</Option>\n <Option>Vehicles, machinery, and equipment</Option>\n <Option>Repairs and maintenance</Option>\n <Option>Travel and meals</Option>\n <Option>Deductible meals</Option>\n <Option>Utilities</Option>\n <Option>Other</Option>\n </Select>\n );\n }\n if (type === 'file') {\n return <FileInput label={label} multiple />;\n }\n if (type === 'textarea') {\n return <TextArea label={label} />;\n }\n if (type === 'date') {\n return <DateInput label={label} />;\n }\n\n return null;\n};\n\nconst expensesGroupMeta: GroupMeta = {\n label: 'Expense',\n fields: [\n { type: 'select', label: 'Type of expense' },\n { type: 'date', label: 'Date of expense' },\n { type: 'file', label: 'Receipts' },\n { type: 'textarea', label: 'Notes' }\n ]\n};\n\nexport const ExpensesDemo: Story<FieldGroupListDemoProps> = (args: FieldGroupListDemoProps) => {\n const [state, dispatch] = useReducer(\n fieldGroupReducer(expensesGroupMeta, ExpensesFieldRenderer),\n undefined,\n () => [\n {\n name: `${expensesGroupMeta.label} 1`,\n id: createUID(),\n children: expensesGroupMeta.fields.map(ExpensesFieldRenderer)\n }\n ]\n );\n\n return (\n <Form\n actions={\n <>\n <Button\n name='Cancel'\n variant='secondary'\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n action('Click')(`${e.currentTarget.name}:${e.type}`);\n }}\n >\n Cancel\n </Button>\n <Button name='Submit' type='submit' variant='primary'>\n Submit\n </Button>\n </>\n }\n onSubmit={(e: FormEvent) => {\n e.preventDefault();\n action('Submit')(`Form:${e.type}`);\n }}\n style={{ margin: 'auto', maxWidth: '37.5rem' }}\n >\n <Text variant='h2'>Expense report</Text>\n <FieldGroupList\n items={state.map(fields => {\n return {\n ...fields,\n children: <Flex container={{ direction: 'column', gap: 2 }}>{fields.children}</Flex>\n };\n })}\n onAdd={\n args.allowAdd\n ? () => {\n dispatch({ action: 'add' });\n }\n : undefined\n }\n onDelete={\n args.allowDelete\n ? id => {\n dispatch({ action: 'delete', id });\n }\n : undefined\n }\n />\n </Form>\n );\n};\n\nconst InsuranceFieldRenderer = ({ label, type }: FieldMeta) => {\n if (type === 'text') {\n return <Input label={label} />;\n }\n if (type === 'select') {\n return (\n <Select label={label}>\n <Option>Select</Option>\n <Option>Mother</Option>\n <Option>Father</Option>\n <Option>Guardian</Option>\n <Option>Child</Option>\n <Option>Spouse</Option>\n <Option>Sibling</Option>\n <Option>Other</Option>\n </Select>\n );\n }\n\n return null;\n};\n\nconst insuranceGroupMeta: GroupMeta = {\n label: 'Entry',\n fields: [\n { type: 'text', label: 'First name' },\n { type: 'text', label: 'Last name' },\n { type: 'select', label: 'Relationship' }\n ]\n};\n\nexport const InsuranceDemo: Story<FieldGroupListDemoProps> = (args: FieldGroupListDemoProps) => {\n const [state, dispatch] = useReducer(\n fieldGroupReducer(insuranceGroupMeta, InsuranceFieldRenderer),\n undefined,\n () => [\n {\n name: `${insuranceGroupMeta.label} 1`,\n id: createUID(),\n children: insuranceGroupMeta.fields.map(InsuranceFieldRenderer)\n }\n ]\n );\n\n return (\n <Form\n actions={\n <>\n <Button\n name='Cancel'\n variant='secondary'\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n action('Click')(`${e.currentTarget.name}:${e.type}`);\n }}\n >\n Cancel\n </Button>\n <Button name='Submit' type='submit' variant='primary'>\n Submit\n </Button>\n </>\n }\n onSubmit={(e: FormEvent) => {\n e.preventDefault();\n action('Submit')(`Form:${e.type}`);\n }}\n style={{ margin: 'auto', maxWidth: '37.5rem' }}\n >\n <Text variant='h1'>Insurance step 1</Text>\n <Text variant='h2'>Dependants</Text>\n <FieldGroupList\n items={state.map(fields => {\n return {\n ...fields,\n children: <Flex container={{ direction: 'column', gap: 2 }}>{fields.children}</Flex>\n };\n })}\n onAdd={\n args.allowAdd\n ? () => {\n dispatch({ action: 'add' });\n }\n : undefined\n }\n onDelete={\n args.allowDelete\n ? id => {\n dispatch({ action: 'delete', id });\n }\n : undefined\n }\n />\n </Form>\n );\n};\n\nexport const FieldGroupListDemo: Story<FieldGroupListDemoProps> = (\n args: FieldGroupListDemoProps\n) => {\n const [state, dispatch] = useReducer(\n fieldGroupReducer(demoGroupMeta, DemoFieldRenderer),\n undefined,\n () => [\n {\n name: `${demoGroupMeta.label} 1`,\n id: createUID(),\n children: demoGroupMeta.fields.map(DemoFieldRenderer)\n }\n ]\n );\n\n return (\n <FieldGroupList\n items={state.map(fields => {\n return {\n ...fields,\n children: <Flex container={{ direction: 'column', gap: 2 }}>{fields.children}</Flex>\n };\n })}\n onAdd={\n args.allowAdd\n ? () => {\n dispatch({ action: 'add' });\n }\n : undefined\n }\n onDelete={\n args.allowDelete\n ? id => {\n dispatch({ action: 'delete', id });\n }\n : undefined\n }\n />\n );\n};\n"]}
@@ -0,0 +1,9 @@
1
+ import { Dispatch } from 'react';
2
+ import { Action } from '@pega/cosmos-react-core';
3
+ import { ViewSelectorProps } from '@pega/cosmos-react-core/lib/components/ListToolbar/ListToolbar.types';
4
+ export declare const actions: Action[];
5
+ export declare const mockViews: ViewSelectorProps['views'];
6
+ export declare const StagedStateDispatchContext: import("react").Context<Dispatch<object>>;
7
+ export declare const FilterRenderer: () => JSX.Element;
8
+ export declare const GroupRenderer: () => JSX.Element;
9
+ //# sourceMappingURL=ListToolbar.mocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListToolbar.mocks.d.ts","sourceRoot":"","sources":["../../../src/core/ListToolbar/ListToolbar.mocks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA8B,QAAQ,EAAwB,MAAM,OAAO,CAAC;AAEnF,OAAO,EAGL,MAAM,EAQP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sEAAsE,CAAC;AAEzG,eAAO,MAAM,OAAO,EAAE,MAAM,EAIzB,CAAC;AAEJ,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAIhD,CAAC;AAEF,eAAO,MAAM,0BAA0B,2CAA4C,CAAC;AA6DpF,eAAO,MAAM,cAAc,mBAoB1B,CAAC;AAEF,eAAO,MAAM,aAAa,mBAEzB,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { createContext, useContext, useState } from 'react';
2
+ import { useAfterInitialEffect, useUID, Input, Select, Option, Flex, Button, Icon, Grid } from '@pega/cosmos-react-core';
3
+ export const actions = ['Action 1', 'Action 2', 'Action 3'].map(text => ({
4
+ text,
5
+ id: text,
6
+ icon: 'filter'
7
+ }));
8
+ export const mockViews = [
9
+ { id: '1', text: 'Data view 1', selected: true },
10
+ { id: '2', text: 'Data view 2', selected: false },
11
+ { id: '3', text: 'Data view 3', selected: false }
12
+ ];
13
+ export const StagedStateDispatchContext = createContext(() => { });
14
+ const mockFields = Array.from({ length: 10 }, (_, i) => `Field ${i + 1}`);
15
+ const MockCondition = () => {
16
+ const setStagedState = useContext(StagedStateDispatchContext);
17
+ const conditionId = useUID();
18
+ const [localState, setLocalState] = useState({
19
+ lhs: 'Field 1',
20
+ comparator: 'Equals',
21
+ rhs: ''
22
+ });
23
+ useAfterInitialEffect(() => {
24
+ setStagedState({
25
+ [conditionId]: localState
26
+ });
27
+ }, [conditionId, localState, setStagedState]);
28
+ return (<Grid container={{ gap: 2, cols: 'repeat(3, minmax(0, 1fr))' }}>
29
+ <Select label='Field' onChange={(e) => {
30
+ setLocalState(cur => ({ ...cur, lhs: e.target.value }));
31
+ }}>
32
+ {mockFields.map(field => {
33
+ return (<Option value={field} key={field}>
34
+ {field}
35
+ </Option>);
36
+ })}
37
+ </Select>
38
+ <Select label='Comparator' onChange={(e) => {
39
+ setLocalState(cur => ({ ...cur, comparator: e.target.value }));
40
+ }}>
41
+ {['Equals', 'Contains', 'Starts with'].map(comparator => {
42
+ return (<Option value={comparator} key={comparator}>
43
+ {comparator}
44
+ </Option>);
45
+ })}
46
+ </Select>
47
+ <Input label='Value' value={localState.rhs} onChange={(e) => {
48
+ setLocalState(cur => ({ ...cur, rhs: e.target.value }));
49
+ }}/>
50
+ </Grid>);
51
+ };
52
+ export const FilterRenderer = () => {
53
+ const [conditions, setConditions] = useState(() => [<MockCondition key={1}/>]);
54
+ return (<Flex container={{ direction: 'column', gap: 2 }}>
55
+ {conditions}
56
+ <div>
57
+ <Button variant='link' onClick={() => {
58
+ setConditions(cur => [...cur, <MockCondition key={cur.length + 1}/>]);
59
+ }}>
60
+ <Flex container={{ inline: true, alignItems: 'start', gap: 1 }} as='span'>
61
+ <Icon name='plus'/>
62
+ <span>Add condition</span>
63
+ </Flex>
64
+ </Button>
65
+ </div>
66
+ </Flex>);
67
+ };
68
+ export const GroupRenderer = () => {
69
+ return <>GroupBy content goes here...</>;
70
+ };
71
+ //# sourceMappingURL=ListToolbar.mocks.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListToolbar.mocks.jsx","sourceRoot":"","sources":["../../../src/core/ListToolbar/ListToolbar.mocks.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ChangeEvent, createContext, Dispatch, useContext, useState } from 'react';\n\nimport {\n useAfterInitialEffect,\n useUID,\n Action,\n Input,\n Select,\n Option,\n Flex,\n Button,\n Icon,\n Grid\n} from '@pega/cosmos-react-core';\nimport { ViewSelectorProps } from '@pega/cosmos-react-core/lib/components/ListToolbar/ListToolbar.types';\n\nexport const actions: Action[] = ['Action 1', 'Action 2', 'Action 3'].map(text => ({\n text,\n id: text,\n icon: 'filter'\n}));\n\nexport const mockViews: ViewSelectorProps['views'] = [\n { id: '1', text: 'Data view 1', selected: true },\n { id: '2', text: 'Data view 2', selected: false },\n { id: '3', text: 'Data view 3', selected: false }\n];\n\nexport const StagedStateDispatchContext = createContext<Dispatch<object>>(() => {});\n\nconst mockFields = Array.from({ length: 10 }, (_, i) => `Field ${i + 1}`);\n\nconst MockCondition = () => {\n const setStagedState = useContext(StagedStateDispatchContext);\n const conditionId = useUID();\n\n const [localState, setLocalState] = useState({\n lhs: 'Field 1',\n comparator: 'Equals',\n rhs: ''\n });\n\n useAfterInitialEffect(() => {\n setStagedState({\n [conditionId]: localState\n });\n }, [conditionId, localState, setStagedState]);\n\n return (\n <Grid container={{ gap: 2, cols: 'repeat(3, minmax(0, 1fr))' }}>\n <Select\n label='Field'\n onChange={(e: ChangeEvent<HTMLSelectElement>) => {\n setLocalState(cur => ({ ...cur, lhs: e.target.value }));\n }}\n >\n {mockFields.map(field => {\n return (\n <Option value={field} key={field}>\n {field}\n </Option>\n );\n })}\n </Select>\n <Select\n label='Comparator'\n onChange={(e: ChangeEvent<HTMLSelectElement>) => {\n setLocalState(cur => ({ ...cur, comparator: e.target.value }));\n }}\n >\n {['Equals', 'Contains', 'Starts with'].map(comparator => {\n return (\n <Option value={comparator} key={comparator}>\n {comparator}\n </Option>\n );\n })}\n </Select>\n <Input\n label='Value'\n value={localState.rhs}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n setLocalState(cur => ({ ...cur, rhs: e.target.value }));\n }}\n />\n </Grid>\n );\n};\n\nexport const FilterRenderer = () => {\n const [conditions, setConditions] = useState<JSX.Element[]>(() => [<MockCondition key={1} />]);\n return (\n <Flex container={{ direction: 'column', gap: 2 }}>\n {conditions}\n <div>\n <Button\n variant='link'\n onClick={() => {\n setConditions(cur => [...cur, <MockCondition key={cur.length + 1} />]);\n }}\n >\n <Flex container={{ inline: true, alignItems: 'start', gap: 1 }} as='span'>\n <Icon name='plus' />\n <span>Add condition</span>\n </Flex>\n </Button>\n </div>\n </Flex>\n );\n};\n\nexport const GroupRenderer = () => {\n return <>GroupBy content goes here...</>;\n};\n"]}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { Meta } from '@storybook/react';
3
+ declare const _default: Meta<import("@storybook/react").Args>;
4
+ export default _default;
5
+ export declare const ListToolbarDemo: () => JSX.Element;
6
+ export declare const SimpleToolbarDemo: () => JSX.Element;
7
+ //# sourceMappingURL=ListToolbar.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListToolbar.stories.d.ts","sourceRoot":"","sources":["../../../src/core/ListToolbar/ListToolbar.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;;AAexC,wBAGU;AAIV,eAAO,MAAM,eAAe,mBAsF3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,mBAa7B,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { useMemo, useState } from 'react';
2
+ import { action } from '@storybook/addon-actions';
3
+ import { Card, CardHeader, ListToolbar } from '@pega/cosmos-react-core';
4
+ import { mockViews, actions, FilterRenderer, StagedStateDispatchContext, GroupRenderer } from './ListToolbar.mocks';
5
+ export default {
6
+ title: 'Core/ListToolbar',
7
+ component: ListToolbar
8
+ };
9
+ export const ListToolbarDemo = () => {
10
+ const [stagedQueryOptionState, setStagedQueryOptionState] = useState(null);
11
+ const [views, setViews] = useState(mockViews);
12
+ const [currentSort, setCurrentSort] = useState(null);
13
+ const filterProp = useMemo(() => {
14
+ return {
15
+ value: stagedQueryOptionState,
16
+ count: undefined,
17
+ renderer: FilterRenderer,
18
+ onCancel: () => {
19
+ setStagedQueryOptionState(null);
20
+ },
21
+ onSubmit: () => {
22
+ setStagedQueryOptionState(cur => {
23
+ console.table(cur);
24
+ return null;
25
+ });
26
+ }
27
+ };
28
+ }, [stagedQueryOptionState]);
29
+ const sortProp = useMemo(() => {
30
+ return {
31
+ mode: 'single-select',
32
+ count: currentSort ? 1 : undefined,
33
+ items: [
34
+ {
35
+ id: 'asc',
36
+ text: 'Ascending',
37
+ icon: 'arrow-up',
38
+ selected: currentSort === 'asc'
39
+ },
40
+ {
41
+ id: 'desc',
42
+ text: 'Descending',
43
+ icon: 'arrow-down',
44
+ selected: currentSort === 'desc'
45
+ }
46
+ ],
47
+ onItemClick: id => {
48
+ setCurrentSort(cur => {
49
+ return cur === id ? null : id;
50
+ });
51
+ }
52
+ };
53
+ }, [currentSort]);
54
+ const groupProp = useMemo(() => {
55
+ return {
56
+ count: undefined,
57
+ renderer: GroupRenderer,
58
+ onCancel: () => { },
59
+ onSubmit: () => { }
60
+ };
61
+ }, []);
62
+ return (<Card>
63
+ <CardHeader>
64
+ <StagedStateDispatchContext.Provider value={setStagedQueryOptionState}>
65
+ <ListToolbar heading={{
66
+ views,
67
+ onViewSelect: id => {
68
+ setViews(cur => {
69
+ return cur.map(view => ({ ...view, selected: view.id === id }));
70
+ });
71
+ }
72
+ }} onCreateNew={action('Clicked Create New')} search={{ onSearchSubmit: action('Search submit') }} count={{
73
+ total: 32,
74
+ selected: 4
75
+ }} filter={filterProp} sort={sortProp} group={groupProp} actions={actions}/>
76
+ </StagedStateDispatchContext.Provider>
77
+ </CardHeader>
78
+ </Card>);
79
+ };
80
+ export const SimpleToolbarDemo = () => {
81
+ return (<Card>
82
+ <CardHeader>
83
+ <ListToolbar heading='Top accounts in California' search={{ onSearchSubmit: action('Search submit') }} count={{ total: 212 }} actions={actions}/>
84
+ </CardHeader>
85
+ </Card>);
86
+ };
87
+ //# sourceMappingURL=ListToolbar.stories.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListToolbar.stories.jsx","sourceRoot":"","sources":["../../../src/core/ListToolbar/ListToolbar.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta } from '@storybook/react';\nimport { useMemo, useState } from 'react';\nimport { action } from '@storybook/addon-actions';\n\nimport { Card, CardHeader, ListToolbar } from '@pega/cosmos-react-core';\nimport { PresetMenuProps } from '@pega/cosmos-react-core/lib/components/ListToolbar/ListToolbar.types';\n\nimport {\n mockViews,\n actions,\n FilterRenderer,\n StagedStateDispatchContext,\n GroupRenderer\n} from './ListToolbar.mocks';\n\nexport default {\n title: 'Core/ListToolbar',\n component: ListToolbar\n} as Meta;\n\ntype SortString = 'asc' | 'desc';\n\nexport const ListToolbarDemo = () => {\n const [stagedQueryOptionState, setStagedQueryOptionState] = useState<object | null>(null);\n const [views, setViews] = useState(mockViews);\n const [currentSort, setCurrentSort] = useState<SortString | null>(null);\n\n const filterProp = useMemo(() => {\n return {\n value: stagedQueryOptionState,\n count: undefined,\n renderer: FilterRenderer,\n onCancel: () => {\n setStagedQueryOptionState(null);\n },\n onSubmit: () => {\n setStagedQueryOptionState(cur => {\n // eslint-disable-next-line no-console\n console.table(cur);\n return null;\n });\n }\n };\n }, [stagedQueryOptionState]);\n\n const sortProp: PresetMenuProps = useMemo(() => {\n return {\n mode: 'single-select',\n count: currentSort ? 1 : undefined,\n items: [\n {\n id: 'asc',\n text: 'Ascending',\n icon: 'arrow-up',\n selected: currentSort === 'asc'\n },\n {\n id: 'desc',\n text: 'Descending',\n icon: 'arrow-down',\n selected: currentSort === 'desc'\n }\n ],\n onItemClick: id => {\n setCurrentSort(cur => {\n return cur === id ? null : (id as SortString);\n });\n }\n };\n }, [currentSort]);\n\n const groupProp = useMemo(() => {\n return {\n count: undefined,\n renderer: GroupRenderer,\n onCancel: () => {},\n onSubmit: () => {}\n };\n }, []);\n\n return (\n <Card>\n <CardHeader>\n <StagedStateDispatchContext.Provider value={setStagedQueryOptionState}>\n <ListToolbar\n heading={{\n views,\n onViewSelect: id => {\n setViews(cur => {\n return cur.map(view => ({ ...view, selected: view.id === id }));\n });\n }\n }}\n onCreateNew={action('Clicked Create New')}\n search={{ onSearchSubmit: action('Search submit') }}\n count={{\n total: 32,\n selected: 4\n }}\n filter={filterProp}\n sort={sortProp}\n group={groupProp}\n actions={actions}\n />\n </StagedStateDispatchContext.Provider>\n </CardHeader>\n </Card>\n );\n};\n\nexport const SimpleToolbarDemo = () => {\n return (\n <Card>\n <CardHeader>\n <ListToolbar\n heading='Top accounts in California'\n search={{ onSearchSubmit: action('Search submit') }}\n count={{ total: 212 }}\n actions={actions}\n />\n </CardHeader>\n </Card>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleList.stories.d.ts","sourceRoot":"","sources":["../../../src/cs/ArticleList/ArticleList.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;AA0BA,wBAOE;AAIF,eAAO,MAAM,gBAAgB,mBAyJ5B,CAAC;AAEF,eAAO,MAAM,uBAAuB,mBASnC,CAAC"}
1
+ {"version":3,"file":"ArticleList.stories.d.ts","sourceRoot":"","sources":["../../../src/cs/ArticleList/ArticleList.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;AA0BA,wBAOE;AAIF,eAAO,MAAM,gBAAgB,mBA2J5B,CAAC;AAEF,eAAO,MAAM,uBAAuB,mBASnC,CAAC"}
@@ -33,6 +33,7 @@ export const FirstArticleList = () => {
33
33
  const ALHeader = {
34
34
  icon: <Icon name='help'/>,
35
35
  headerText: 'Knowledge articles',
36
+ count: 5,
36
37
  primary: {
37
38
  search: (<SearchInput value={query} onChange={(event) => setQuery(event.target.value)} onSearchChange={action('Search query')} onSearchSubmit={action('Search submit')} placeholder='Search…'/>),
38
39
  actions: [
@@ -75,7 +76,7 @@ export const FirstArticleList = () => {
75
76
  width: '31.25rem',
76
77
  maxHeight: '100vh'
77
78
  }}>
78
- <ArticleList skeletonize={false} header={<ArticleListHeader icon={ALHeader.icon} headerText={ALHeader.headerText} primary={ALHeader.primary} secondary={ALHeader.secondary} onSubmit={action('Filter details submitted')}/>} footer={<Flex container={{ alignItems: 'center', justify: 'end' }} item={{ grow: 1 }}>
79
+ <ArticleList skeletonize={false} header={<ArticleListHeader icon={ALHeader.icon} count={ALHeader.count} headerText={ALHeader.headerText} primary={ALHeader.primary} secondary={ALHeader.secondary} onSubmit={action('Filter details submitted')}/>} footer={<Flex container={{ alignItems: 'center', justify: 'end' }} item={{ grow: 1 }}>
79
80
  <Pagination total={70} pageNumber={currentPage} onPageChange={pageNumber => {
80
81
  setCurrentPage(pageNumber);
81
82
  }}/>
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleList.stories.jsx","sourceRoot":"","sources":["../../../src/cs/ArticleList/ArticleList.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, MouseEvent, SetStateAction } from 'react';\nimport { action } from '@storybook/addon-actions';\n\nimport {\n ComboBox,\n Flex,\n FormField,\n Icon,\n Link,\n MenuButton,\n Pagination,\n SearchInput,\n Select,\n Option,\n Text,\n menuHelpers,\n MenuProps,\n registerIcon\n} from '@pega/cosmos-react-core';\nimport * as thumbsUpSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-up-solid.icon';\nimport * as thumbsDownSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-down-solid.icon';\nimport * as helpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/help.icon';\nimport { ArticleList, ArticleSummary, ArticleListHeader } from '@pega/cosmos-react-cs';\n\nimport { ArticleListMockData } from './ArticleList.mocks';\n\nexport default {\n title: 'Customer Service/ArticleList',\n component: ArticleList,\n subcomponents: { ArticleSummary, ArticleListHeader },\n parameters: {\n layout: 'fullscreen'\n }\n};\n\nregisterIcon(thumbsUpSolidIcon, thumbsDownSolidIcon, helpIcon);\n\nexport const FirstArticleList = () => {\n const [query, setQuery] = useState('');\n const [currentPage, setCurrentPage] = useState(1);\n const [categoryFilter, setCategoryFilter] = useState<{ id: string; text: string } | undefined>(\n undefined\n );\n const [categoriesList, setCategoriesList] = useState<MenuProps['items']>(\n ArticleListMockData.categoriesList.map(({ id, name, level, category }) => {\n return {\n id,\n primary: name,\n secondary: [level, category],\n selected: false\n };\n })\n );\n\n const handleArticleLinkClick = (event: MouseEvent) => {\n event.preventDefault();\n };\n\n const ALHeader = {\n icon: <Icon name='help' />,\n headerText: 'Knowledge articles',\n primary: {\n search: (\n <SearchInput\n value={query}\n onChange={(event: { target: { value: SetStateAction<string> } }) =>\n setQuery(event.target.value)\n }\n onSearchChange={action('Search query')}\n onSearchSubmit={action('Search submit')}\n placeholder='Search…'\n />\n ),\n actions: [\n { text: 'Option Number 1', id: '1a' },\n { text: 'Option Number 2', id: '2a' }\n ],\n followedFilter: (\n <Flex container={{ gap: 1 }}>\n <MenuButton\n variant='simple'\n menu={{\n items: [\n {\n primary: 'Filter 1',\n id: 'f1a'\n },\n {\n primary: 'Filter 2',\n id: 'f2a'\n }\n ]\n }}\n icon='filter'\n text='filter'\n iconOnly\n />\n </Flex>\n )\n },\n secondary: (\n <>\n <FormField label='Category'>\n <ComboBox\n selected={{ items: categoryFilter }}\n placeholder='Filter by category'\n menu={{\n items: categoriesList,\n onItemClick: id => {\n const newList = menuHelpers.selectItem(categoriesList, id, 'single-select');\n const { primary: itemText } = menuHelpers.getSelected(newList)[0];\n setCategoriesList(newList);\n setCategoryFilter({ text: itemText, id });\n }\n }}\n />\n </FormField>\n <Select label='Sort by'>\n {ArticleListMockData.sortByOptions.map(opt => (\n <Option key={opt}>{opt}</Option>\n ))}\n </Select>\n </>\n )\n };\n return (\n <div\n style={{\n width: '31.25rem',\n maxHeight: '100vh'\n }}\n >\n <ArticleList\n skeletonize={false}\n header={\n <ArticleListHeader\n icon={ALHeader.icon}\n headerText={ALHeader.headerText}\n primary={ALHeader.primary}\n secondary={ALHeader.secondary}\n onSubmit={action('Filter details submitted')}\n />\n }\n footer={\n <Flex container={{ alignItems: 'center', justify: 'end' }} item={{ grow: 1 }}>\n <Pagination\n total={70}\n pageNumber={currentPage}\n onPageChange={pageNumber => {\n setCurrentPage(pageNumber);\n }}\n />\n </Flex>\n }\n >\n {ArticleListMockData.articleList.map((dataItem, id) => {\n return (\n <ArticleSummary\n key={id.toString()}\n header={\n <Link\n href='design.pega.com'\n data-article-id={dataItem.articleId}\n onClick={handleArticleLinkClick}\n >\n {dataItem.header}\n </Link>\n }\n content={<Text>{dataItem.abstract}</Text>}\n articleID={`article-${id}`}\n meta={[\n <Text>{dataItem.meta.category}</Text>,\n dataItem.meta.publishedDate,\n <Flex container={{ gap: 2, alignItems: 'center' }}>\n <Flex container={{ gap: 1, alignItems: 'center' }}>\n <Icon name='thumbs-up-solid' />\n <Text>({dataItem.meta.likes})</Text>\n </Flex>\n <Flex container={{ gap: 1, alignItems: 'center' }}>\n <Icon name='thumbs-down-solid' />\n <Text>({dataItem.meta.disLikes})</Text>\n </Flex>\n </Flex>\n ]}\n />\n );\n })}\n </ArticleList>\n </div>\n );\n};\n\nexport const ArticleListWithSkeleton = () => (\n <div\n style={{\n maxWidth: '31.25rem',\n maxHeight: '100vh'\n }}\n >\n <ArticleList skeletonize />\n </div>\n);\n"]}
1
+ {"version":3,"file":"ArticleList.stories.jsx","sourceRoot":"","sources":["../../../src/cs/ArticleList/ArticleList.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, MouseEvent, SetStateAction } from 'react';\nimport { action } from '@storybook/addon-actions';\n\nimport {\n ComboBox,\n Flex,\n FormField,\n Icon,\n Link,\n MenuButton,\n Pagination,\n SearchInput,\n Select,\n Option,\n Text,\n menuHelpers,\n MenuProps,\n registerIcon\n} from '@pega/cosmos-react-core';\nimport * as thumbsUpSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-up-solid.icon';\nimport * as thumbsDownSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-down-solid.icon';\nimport * as helpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/help.icon';\nimport { ArticleList, ArticleSummary, ArticleListHeader } from '@pega/cosmos-react-cs';\n\nimport { ArticleListMockData } from './ArticleList.mocks';\n\nexport default {\n title: 'Customer Service/ArticleList',\n component: ArticleList,\n subcomponents: { ArticleSummary, ArticleListHeader },\n parameters: {\n layout: 'fullscreen'\n }\n};\n\nregisterIcon(thumbsUpSolidIcon, thumbsDownSolidIcon, helpIcon);\n\nexport const FirstArticleList = () => {\n const [query, setQuery] = useState('');\n const [currentPage, setCurrentPage] = useState(1);\n const [categoryFilter, setCategoryFilter] = useState<{ id: string; text: string } | undefined>(\n undefined\n );\n const [categoriesList, setCategoriesList] = useState<MenuProps['items']>(\n ArticleListMockData.categoriesList.map(({ id, name, level, category }) => {\n return {\n id,\n primary: name,\n secondary: [level, category],\n selected: false\n };\n })\n );\n\n const handleArticleLinkClick = (event: MouseEvent) => {\n event.preventDefault();\n };\n\n const ALHeader = {\n icon: <Icon name='help' />,\n headerText: 'Knowledge articles',\n count: 5,\n primary: {\n search: (\n <SearchInput\n value={query}\n onChange={(event: { target: { value: SetStateAction<string> } }) =>\n setQuery(event.target.value)\n }\n onSearchChange={action('Search query')}\n onSearchSubmit={action('Search submit')}\n placeholder='Search…'\n />\n ),\n actions: [\n { text: 'Option Number 1', id: '1a' },\n { text: 'Option Number 2', id: '2a' }\n ],\n followedFilter: (\n <Flex container={{ gap: 1 }}>\n <MenuButton\n variant='simple'\n menu={{\n items: [\n {\n primary: 'Filter 1',\n id: 'f1a'\n },\n {\n primary: 'Filter 2',\n id: 'f2a'\n }\n ]\n }}\n icon='filter'\n text='filter'\n iconOnly\n />\n </Flex>\n )\n },\n secondary: (\n <>\n <FormField label='Category'>\n <ComboBox\n selected={{ items: categoryFilter }}\n placeholder='Filter by category'\n menu={{\n items: categoriesList,\n onItemClick: id => {\n const newList = menuHelpers.selectItem(categoriesList, id, 'single-select');\n const { primary: itemText } = menuHelpers.getSelected(newList)[0];\n setCategoriesList(newList);\n setCategoryFilter({ text: itemText, id });\n }\n }}\n />\n </FormField>\n <Select label='Sort by'>\n {ArticleListMockData.sortByOptions.map(opt => (\n <Option key={opt}>{opt}</Option>\n ))}\n </Select>\n </>\n )\n };\n return (\n <div\n style={{\n width: '31.25rem',\n maxHeight: '100vh'\n }}\n >\n <ArticleList\n skeletonize={false}\n header={\n <ArticleListHeader\n icon={ALHeader.icon}\n count={ALHeader.count}\n headerText={ALHeader.headerText}\n primary={ALHeader.primary}\n secondary={ALHeader.secondary}\n onSubmit={action('Filter details submitted')}\n />\n }\n footer={\n <Flex container={{ alignItems: 'center', justify: 'end' }} item={{ grow: 1 }}>\n <Pagination\n total={70}\n pageNumber={currentPage}\n onPageChange={pageNumber => {\n setCurrentPage(pageNumber);\n }}\n />\n </Flex>\n }\n >\n {ArticleListMockData.articleList.map((dataItem, id) => {\n return (\n <ArticleSummary\n key={id.toString()}\n header={\n <Link\n href='design.pega.com'\n data-article-id={dataItem.articleId}\n onClick={handleArticleLinkClick}\n >\n {dataItem.header}\n </Link>\n }\n content={<Text>{dataItem.abstract}</Text>}\n articleID={`article-${id}`}\n meta={[\n <Text>{dataItem.meta.category}</Text>,\n dataItem.meta.publishedDate,\n <Flex container={{ gap: 2, alignItems: 'center' }}>\n <Flex container={{ gap: 1, alignItems: 'center' }}>\n <Icon name='thumbs-up-solid' />\n <Text>({dataItem.meta.likes})</Text>\n </Flex>\n <Flex container={{ gap: 1, alignItems: 'center' }}>\n <Icon name='thumbs-down-solid' />\n <Text>({dataItem.meta.disLikes})</Text>\n </Flex>\n </Flex>\n ]}\n />\n );\n })}\n </ArticleList>\n </div>\n );\n};\n\nexport const ArticleListWithSkeleton = () => (\n <div\n style={{\n maxWidth: '31.25rem',\n maxHeight: '100vh'\n }}\n >\n <ArticleList skeletonize />\n </div>\n);\n"]}
@@ -1,7 +1,9 @@
1
+ /// <reference types="react" />
1
2
  import { Meta, Story } from '@storybook/react';
2
3
  import { OmitStrict } from '@pega/cosmos-react-core';
3
4
  import { TimelineProps } from '@pega/cosmos-react-work';
4
5
  declare const _default: Meta<import("@storybook/react").Args>;
5
6
  export default _default;
6
7
  export declare const TimelineDemo: Story<OmitStrict<TimelineProps, 'activity' | 'currentTime'>>;
8
+ export declare const TimelineToolbarDemo: () => JSX.Element;
7
9
  //# sourceMappingURL=Timeline.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Timeline.stories.d.ts","sourceRoot":"","sources":["../../../src/work/Timeline/Timeline.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAY,aAAa,EAAE,MAAM,yBAAyB,CAAC;;AAIlE,wBAGU;AAEV,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,GAAG,aAAa,CAAC,CA6CrF,CAAC"}
1
+ {"version":3,"file":"Timeline.stories.d.ts","sourceRoot":"","sources":["../../../src/work/Timeline/Timeline.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAiC,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAY,aAAa,EAAmB,MAAM,yBAAyB,CAAC;;AAQnF,wBAGU;AAEV,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,GAAG,aAAa,CAAC,CA6CrF,CAAC;AAeF,eAAO,MAAM,mBAAmB,mBAwC/B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { useCallback, useState } from 'react';
2
- import { Timeline } from '@pega/cosmos-react-work';
2
+ import { Card, CardContent, CardHeader } from '@pega/cosmos-react-core';
3
+ import { Timeline, TimelineToolbar } from '@pega/cosmos-react-work';
3
4
  import { activity } from './Timeline.mocks';
4
5
  export default {
5
6
  title: 'Work/Timeline',
@@ -40,4 +41,30 @@ TimelineDemo.argTypes = {
40
41
  control: { type: 'select' }
41
42
  }
42
43
  };
44
+ export const TimelineToolbarDemo = () => {
45
+ const [sortOrder, setSortOrder] = useState();
46
+ const [groupBy, setGroupBy] = useState();
47
+ const [items, setItems] = useState(activity);
48
+ const onSearchSubmit = useCallback((value) => {
49
+ setItems(activity.filter(item => JSON.stringify(item.title).includes(value)));
50
+ }, []);
51
+ return (<Card>
52
+ <CardHeader>
53
+ <TimelineToolbar heading='Timeline Demo' search={{ onSearchSubmit }} count={{ total: items.length }} sort={{
54
+ selected: sortOrder,
55
+ onItemClick: (id) => {
56
+ setSortOrder(id);
57
+ }
58
+ }} group={{
59
+ selected: groupBy,
60
+ onItemClick: (id) => {
61
+ setGroupBy(id);
62
+ }
63
+ }}/>
64
+ </CardHeader>
65
+ <CardContent>
66
+ <Timeline activity={items} currentTime={new Date()} sortOrder={sortOrder} groupBy={groupBy}/>
67
+ </CardContent>
68
+ </Card>);
69
+ };
43
70
  //# sourceMappingURL=Timeline.stories.jsx.map