@pega/cosmos-react-demos 3.0.0-dev.5.0 → 3.0.0-dev.8.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 (138) hide show
  1. package/jsx/build/AppHeader/AppHeader.stories.d.ts.map +1 -1
  2. package/jsx/build/AppHeader/AppHeader.stories.jsx +6 -1
  3. package/jsx/build/AppHeader/AppHeader.stories.jsx.map +1 -1
  4. package/jsx/build/AppShell/AppShell.mocks.d.ts +2 -0
  5. package/jsx/build/AppShell/AppShell.mocks.d.ts.map +1 -1
  6. package/jsx/build/AppShell/{AppShell.mocks.js → AppShell.mocks.jsx} +18 -1
  7. package/jsx/build/AppShell/AppShell.mocks.jsx.map +1 -0
  8. package/jsx/build/AppShell/AppShell.stories.d.ts +2 -4
  9. package/jsx/build/AppShell/AppShell.stories.d.ts.map +1 -1
  10. package/jsx/build/AppShell/AppShell.stories.jsx +20 -30
  11. package/jsx/build/AppShell/AppShell.stories.jsx.map +1 -1
  12. package/jsx/build/ObjectPreview/ObjectPreview.mocks.d.ts +4 -0
  13. package/jsx/build/ObjectPreview/ObjectPreview.mocks.d.ts.map +1 -0
  14. package/jsx/build/ObjectPreview/ObjectPreview.mocks.jsx +9 -0
  15. package/jsx/build/ObjectPreview/ObjectPreview.mocks.jsx.map +1 -0
  16. package/jsx/build/ObjectPreview/ObjectPreview.stories.d.ts +8 -0
  17. package/jsx/build/ObjectPreview/ObjectPreview.stories.d.ts.map +1 -0
  18. package/jsx/build/ObjectPreview/ObjectPreview.stories.jsx +93 -0
  19. package/jsx/build/ObjectPreview/ObjectPreview.stories.jsx.map +1 -0
  20. package/jsx/build/ObjectPreview/ObjectPreview.styles.d.ts +3 -0
  21. package/jsx/build/ObjectPreview/ObjectPreview.styles.d.ts.map +1 -0
  22. package/jsx/build/ObjectPreview/ObjectPreview.styles.js +22 -0
  23. package/jsx/build/ObjectPreview/ObjectPreview.styles.js.map +1 -0
  24. package/jsx/build/ObjectSelect/ObjectSelect.mocks.d.ts +7 -1
  25. package/jsx/build/ObjectSelect/ObjectSelect.mocks.d.ts.map +1 -1
  26. package/jsx/build/ObjectSelect/ObjectSelect.mocks.jsx +59 -43
  27. package/jsx/build/ObjectSelect/ObjectSelect.mocks.jsx.map +1 -1
  28. package/jsx/build/ObjectSelect/ObjectSelect.stories.d.ts.map +1 -1
  29. package/jsx/build/ObjectSelect/ObjectSelect.stories.jsx +37 -5
  30. package/jsx/build/ObjectSelect/ObjectSelect.stories.jsx.map +1 -1
  31. package/jsx/build/PageTemplates/GalleryPage.mocks.d.ts +10 -9
  32. package/jsx/build/PageTemplates/GalleryPage.mocks.d.ts.map +1 -1
  33. package/jsx/build/PageTemplates/GalleryPage.mocks.jsx +7 -9
  34. package/jsx/build/PageTemplates/GalleryPage.mocks.jsx.map +1 -1
  35. package/jsx/build/PageTemplates/GalleryPage.stories.d.ts +0 -1
  36. package/jsx/build/PageTemplates/GalleryPage.stories.d.ts.map +1 -1
  37. package/jsx/build/PageTemplates/GalleryPage.stories.jsx +12 -14
  38. package/jsx/build/PageTemplates/GalleryPage.stories.jsx.map +1 -1
  39. package/jsx/build/PageTemplates/PageTemplates.mocks.d.ts +2 -1
  40. package/jsx/build/PageTemplates/PageTemplates.mocks.d.ts.map +1 -1
  41. package/jsx/build/PageTemplates/PageTemplates.mocks.jsx +17 -2
  42. package/jsx/build/PageTemplates/PageTemplates.mocks.jsx.map +1 -1
  43. package/jsx/build/PageTemplates/PageTemplates.stories.d.ts +2 -4
  44. package/jsx/build/PageTemplates/PageTemplates.stories.d.ts.map +1 -1
  45. package/jsx/build/PageTemplates/PageTemplates.stories.jsx +206 -140
  46. package/jsx/build/PageTemplates/PageTemplates.stories.jsx.map +1 -1
  47. package/jsx/core/DateTime/DateTime.stories.jsx +1 -1
  48. package/jsx/core/DateTime/DateTime.stories.jsx.map +1 -1
  49. package/jsx/core/Modal/Modal.stories.d.ts.map +1 -1
  50. package/jsx/core/Modal/Modal.stories.jsx +6 -1
  51. package/jsx/core/Modal/Modal.stories.jsx.map +1 -1
  52. package/jsx/core/PageTemplates/PageTemplates.stories.d.ts.map +1 -1
  53. package/jsx/core/PageTemplates/PageTemplates.stories.jsx +20 -32
  54. package/jsx/core/PageTemplates/PageTemplates.stories.jsx.map +1 -1
  55. package/jsx/core/SearchInput/SearchInput.stories.d.ts +0 -1
  56. package/jsx/core/SearchInput/SearchInput.stories.d.ts.map +1 -1
  57. package/jsx/core/SearchInput/SearchInput.stories.jsx +0 -28
  58. package/jsx/core/SearchInput/SearchInput.stories.jsx.map +1 -1
  59. package/jsx/rte/Editor/Editor.mocks.d.ts +307 -4
  60. package/jsx/rte/Editor/Editor.mocks.d.ts.map +1 -1
  61. package/jsx/rte/Editor/Editor.mocks.jsx +16 -13
  62. package/jsx/rte/Editor/Editor.mocks.jsx.map +1 -1
  63. package/jsx/rte/Editor/Editor.stories.jsx +3 -3
  64. package/jsx/rte/Editor/Editor.stories.jsx.map +1 -1
  65. package/lib/build/AppHeader/AppHeader.stories.d.ts.map +1 -1
  66. package/lib/build/AppHeader/AppHeader.stories.js +6 -1
  67. package/lib/build/AppHeader/AppHeader.stories.js.map +1 -1
  68. package/lib/build/AppShell/AppShell.mocks.d.ts +2 -0
  69. package/lib/build/AppShell/AppShell.mocks.d.ts.map +1 -1
  70. package/lib/build/AppShell/AppShell.mocks.js +16 -0
  71. package/lib/build/AppShell/AppShell.mocks.js.map +1 -1
  72. package/lib/build/AppShell/AppShell.stories.d.ts +2 -4
  73. package/lib/build/AppShell/AppShell.stories.d.ts.map +1 -1
  74. package/lib/build/AppShell/AppShell.stories.js +20 -28
  75. package/lib/build/AppShell/AppShell.stories.js.map +1 -1
  76. package/lib/build/ObjectPreview/ObjectPreview.mocks.d.ts +4 -0
  77. package/lib/build/ObjectPreview/ObjectPreview.mocks.d.ts.map +1 -0
  78. package/lib/build/ObjectPreview/ObjectPreview.mocks.js +8 -0
  79. package/lib/build/ObjectPreview/ObjectPreview.mocks.js.map +1 -0
  80. package/lib/build/ObjectPreview/ObjectPreview.stories.d.ts +8 -0
  81. package/lib/build/ObjectPreview/ObjectPreview.stories.d.ts.map +1 -0
  82. package/lib/build/ObjectPreview/ObjectPreview.stories.js +90 -0
  83. package/lib/build/ObjectPreview/ObjectPreview.stories.js.map +1 -0
  84. package/lib/build/ObjectPreview/ObjectPreview.styles.d.ts +3 -0
  85. package/lib/build/ObjectPreview/ObjectPreview.styles.d.ts.map +1 -0
  86. package/lib/build/ObjectPreview/ObjectPreview.styles.js +22 -0
  87. package/lib/build/ObjectPreview/ObjectPreview.styles.js.map +1 -0
  88. package/lib/build/ObjectSelect/ObjectSelect.mocks.d.ts +7 -1
  89. package/lib/build/ObjectSelect/ObjectSelect.mocks.d.ts.map +1 -1
  90. package/lib/build/ObjectSelect/ObjectSelect.mocks.js +58 -26
  91. package/lib/build/ObjectSelect/ObjectSelect.mocks.js.map +1 -1
  92. package/lib/build/ObjectSelect/ObjectSelect.stories.d.ts.map +1 -1
  93. package/lib/build/ObjectSelect/ObjectSelect.stories.js +32 -4
  94. package/lib/build/ObjectSelect/ObjectSelect.stories.js.map +1 -1
  95. package/lib/build/PageTemplates/GalleryPage.mocks.d.ts +10 -9
  96. package/lib/build/PageTemplates/GalleryPage.mocks.d.ts.map +1 -1
  97. package/lib/build/PageTemplates/GalleryPage.mocks.js +7 -9
  98. package/lib/build/PageTemplates/GalleryPage.mocks.js.map +1 -1
  99. package/lib/build/PageTemplates/GalleryPage.stories.d.ts +0 -1
  100. package/lib/build/PageTemplates/GalleryPage.stories.d.ts.map +1 -1
  101. package/lib/build/PageTemplates/GalleryPage.stories.js +12 -14
  102. package/lib/build/PageTemplates/GalleryPage.stories.js.map +1 -1
  103. package/lib/build/PageTemplates/PageTemplates.mocks.d.ts +2 -1
  104. package/lib/build/PageTemplates/PageTemplates.mocks.d.ts.map +1 -1
  105. package/lib/build/PageTemplates/PageTemplates.mocks.js +14 -3
  106. package/lib/build/PageTemplates/PageTemplates.mocks.js.map +1 -1
  107. package/lib/build/PageTemplates/PageTemplates.stories.d.ts +2 -4
  108. package/lib/build/PageTemplates/PageTemplates.stories.d.ts.map +1 -1
  109. package/lib/build/PageTemplates/PageTemplates.stories.js +213 -148
  110. package/lib/build/PageTemplates/PageTemplates.stories.js.map +1 -1
  111. package/lib/core/DateTime/DateTime.stories.js +1 -1
  112. package/lib/core/DateTime/DateTime.stories.js.map +1 -1
  113. package/lib/core/Modal/Modal.stories.d.ts.map +1 -1
  114. package/lib/core/Modal/Modal.stories.js +6 -1
  115. package/lib/core/Modal/Modal.stories.js.map +1 -1
  116. package/lib/core/PageTemplates/PageTemplates.stories.d.ts.map +1 -1
  117. package/lib/core/PageTemplates/PageTemplates.stories.js +15 -27
  118. package/lib/core/PageTemplates/PageTemplates.stories.js.map +1 -1
  119. package/lib/core/SearchInput/SearchInput.stories.d.ts +0 -1
  120. package/lib/core/SearchInput/SearchInput.stories.d.ts.map +1 -1
  121. package/lib/core/SearchInput/SearchInput.stories.js +0 -28
  122. package/lib/core/SearchInput/SearchInput.stories.js.map +1 -1
  123. package/lib/rte/Editor/Editor.mocks.d.ts +307 -4
  124. package/lib/rte/Editor/Editor.mocks.d.ts.map +1 -1
  125. package/lib/rte/Editor/Editor.mocks.js +16 -13
  126. package/lib/rte/Editor/Editor.mocks.js.map +1 -1
  127. package/lib/rte/Editor/Editor.stories.js +3 -3
  128. package/lib/rte/Editor/Editor.stories.js.map +1 -1
  129. package/package.json +14 -9
  130. package/jsx/build/AppShell/AppShell.mocks.js.map +0 -1
  131. package/jsx/core/SearchInput/SearchInput.mocks.d.ts +0 -11
  132. package/jsx/core/SearchInput/SearchInput.mocks.d.ts.map +0 -1
  133. package/jsx/core/SearchInput/SearchInput.mocks.js +0 -25
  134. package/jsx/core/SearchInput/SearchInput.mocks.js.map +0 -1
  135. package/lib/core/SearchInput/SearchInput.mocks.d.ts +0 -11
  136. package/lib/core/SearchInput/SearchInput.mocks.d.ts.map +0 -1
  137. package/lib/core/SearchInput/SearchInput.mocks.js +0 -25
  138. package/lib/core/SearchInput/SearchInput.mocks.js.map +0 -1
@@ -6,6 +6,7 @@ interface Field extends FormControlProps {
6
6
  validator: (this: Field) => boolean;
7
7
  }
8
8
  export declare const initFields: () => Field[];
9
- export declare const OneColumnForm: () => JSX.Element | null;
9
+ export declare const OneColumnForm: (props: any) => JSX.Element | null;
10
+ export declare const PreviewMainContent: () => JSX.Element;
10
11
  export {};
11
12
  //# sourceMappingURL=PageTemplates.mocks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageTemplates.mocks.d.ts","sourceRoot":"","sources":["../../../src/build/PageTemplates/PageTemplates.mocks.tsx"],"names":[],"mappings":";AAEA,OAAO,EAcL,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAKjC,UAAU,KAAM,SAAQ,gBAAgB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;CACrC;AAGD,eAAO,MAAM,UAAU,QAAO,KAAK,EAmClC,CAAC;AA6BF,eAAO,MAAM,aAAa,0BAkIzB,CAAC"}
1
+ {"version":3,"file":"PageTemplates.mocks.d.ts","sourceRoot":"","sources":["../../../src/build/PageTemplates/PageTemplates.mocks.tsx"],"names":[],"mappings":";AAGA,OAAO,EAcL,gBAAgB,EAEjB,MAAM,yBAAyB,CAAC;AAMjC,UAAU,KAAM,SAAQ,gBAAgB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;CACrC;AAGD,eAAO,MAAM,UAAU,QAAO,KAAK,EAmClC,CAAC;AA6BF,eAAO,MAAM,aAAa,UAAW,GAAG,uBA0IvC,CAAC;AAEF,eAAO,MAAM,kBAAkB,mBAe9B,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { useReducer, useRef, useContext } from 'react';
2
- import { Button, Flex, Form, Input, CheckboxGroup, RadioButtonGroup, RadioButton, Checkbox, Select, Option, TextArea, ToasterContext, Text } from '@pega/cosmos-react-core';
2
+ import styled from 'styled-components';
3
+ import { Button, Flex, Form, Input, CheckboxGroup, RadioButtonGroup, RadioButton, Checkbox, Select, Option, TextArea, ToasterContext, Text, useTheme } from '@pega/cosmos-react-core';
3
4
  import { RichTextEditor } from '@pega/cosmos-react-rte';
4
5
  import { FileInputDemo } from '../../core/File/FileInput.stories';
6
+ import { dataPages, ObjectSelectComp } from '../ObjectSelect/ObjectSelect.mocks';
5
7
  export const initFields = () => {
6
8
  const common = { value: undefined, status: undefined };
7
9
  return [
@@ -59,7 +61,7 @@ const fieldReducer = (fields, { target, type }) => {
59
61
  return field;
60
62
  });
61
63
  };
62
- export const OneColumnForm = () => {
64
+ export const OneColumnForm = (props) => {
63
65
  const editorRef = useRef(null);
64
66
  const [fields, setField] = useReducer(fieldReducer, undefined, initFields);
65
67
  const { push } = useContext(ToasterContext);
@@ -110,6 +112,8 @@ export const OneColumnForm = () => {
110
112
  <Option>Salad</Option>
111
113
  </Select>
112
114
 
115
+ <ObjectSelectComp label='Date page' info='Choose a when condition from list' items={dataPages} onChange={() => { }} onPreview={() => props.previewCallback()}/>
116
+
113
117
  <TextArea name='notes' required={notes.required} label='Meeting Notes' status={notes.status} info={notes.info || notes.help} onChange={(e) => setField({ ...e })} onBlur={(e) => setField({ ...e })}/>
114
118
  <RichTextEditor label='Detailed meeting notes' info='The rich text editor can be used in forms, comments, and documents' toolbar={[
115
119
  'inline-styling',
@@ -126,4 +130,15 @@ export const OneColumnForm = () => {
126
130
  </Flex>
127
131
  </Form>);
128
132
  };
133
+ export const PreviewMainContent = () => {
134
+ const { base: { palette } } = useTheme();
135
+ const StyledRegion = styled.div `
136
+ min-height: 120vh;
137
+ border: dotted 0.1rem ${palette['border-line']};
138
+ background: ${palette.skeleton};
139
+ `;
140
+ return (<Flex as={StyledRegion} container={{ alignItems: 'center', justify: 'center' }}>
141
+ <Text>This is a react region</Text>
142
+ </Flex>);
143
+ };
129
144
  //# sourceMappingURL=PageTemplates.mocks.jsx.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageTemplates.mocks.jsx","sourceRoot":"","sources":["../../../src/build/PageTemplates/PageTemplates.mocks.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FormEvent, ChangeEvent, FocusEvent, useReducer, useRef, useContext } from 'react';\n\nimport {\n Button,\n Flex,\n Form,\n Input,\n CheckboxGroup,\n RadioButtonGroup,\n RadioButton,\n Checkbox,\n Select,\n Option,\n TextArea,\n ToasterContext,\n Text,\n FormControlProps\n} from '@pega/cosmos-react-core';\nimport { RichTextEditor, RichTextEditorState } from '@pega/cosmos-react-rte';\n\nimport { FileInputDemo } from '../../core/File/FileInput.stories';\n\ninterface Field extends FormControlProps {\n help?: string;\n error?: string;\n validator: (this: Field) => boolean;\n}\n\n// Get initial field properties\nexport const initFields = (): Field[] => {\n const common = { value: undefined, status: undefined };\n return [\n {\n ...common,\n name: 'name',\n required: true,\n error: 'Please enter first and last name',\n validator() {\n if (!this.value) return false;\n return /^[a-z]+\\s[a-z]+$/i.test(this.value);\n }\n },\n {\n ...common,\n name: 'email',\n required: true,\n error: 'Enter a @pega.com address',\n validator() {\n if (!this.value) return false;\n return /^\\S+@pega\\.com$/.test(this.value);\n }\n },\n {\n ...common,\n name: 'notes',\n required: true,\n help: 'See how fast you can type 20 characters go',\n error: 'You need to tell us more than 20 characters',\n validator() {\n if (!this.value) return false;\n return this.value.length >= 20;\n }\n }\n ];\n};\n\n// Handles setting of state for all fields\nconst fieldReducer = (\n fields: Field[],\n {\n target,\n type\n }:\n | ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n | FocusEvent<HTMLInputElement | HTMLTextAreaElement>\n) => {\n return fields.map(field => {\n if (field.name === target.name) {\n field.value = target.value;\n if (type === 'blur' || field.status === 'error') {\n if ((field.required || field.value) && !field.validator()) {\n field.status = 'error';\n field.info = field.error;\n } else {\n field.status = undefined;\n field.info = field.help;\n }\n }\n }\n return field;\n });\n};\n\nexport const OneColumnForm = () => {\n const editorRef = useRef<RichTextEditorState>(null);\n const [fields, setField] = useReducer(fieldReducer, undefined, initFields);\n const { push } = useContext(ToasterContext);\n\n const name = fields.find(field => field.name === 'name');\n const email = fields.find(field => field.name === 'email');\n const notes = fields.find(field => field.name === 'notes');\n\n if (!name || !email || !notes) return null;\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 const onImageAdded = (image: File, id: string) => {\n const src = URL.createObjectURL(image);\n editorRef.current?.appendImage({ src, alt: image.name }, id);\n };\n\n return (\n <Form\n actions={actions}\n onSubmit={(e: FormEvent) => {\n e.preventDefault();\n push({ content: 'Form submitted!' });\n }}\n style={{ maxWidth: '37.5rem' }}\n >\n <Text variant='h4' as='h4'>\n Demo Form\n </Text>\n <Flex container={{ direction: 'column', gap: 2 }} item={{ grow: 1 }}>\n <Input\n name='name'\n label='Name'\n value={name.value}\n required={name.required}\n status={name.status}\n info='some help text here'\n onChange={(e: ChangeEvent<HTMLInputElement>) => setField({ ...e })}\n onBlur={(e: FocusEvent<HTMLInputElement>) => setField({ ...e })}\n autoComplete='off'\n />\n\n <Input\n name='email'\n value={email.value}\n type='email'\n label='Email'\n required={email.required}\n status={email.status}\n info='some help text here'\n onChange={(e: ChangeEvent<HTMLInputElement>) => setField({ ...e })}\n onBlur={(e: FocusEvent<HTMLInputElement>) => setField({ ...e })}\n autoComplete='off'\n />\n\n <CheckboxGroup name='visited' label='Places you have worked'>\n {['Cambridge', 'Krakow', 'Hyderabad', 'Bangalore'].map(office => (\n <Checkbox\n key={office}\n label={office}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setField({ ...e })}\n />\n ))}\n </CheckboxGroup>\n\n <RadioButtonGroup name='meetings' label='Do you enjoy early morning meetings?'>\n {['Yes', \"No...no I don't\"].map(option => (\n <RadioButton\n key={option}\n label={option}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setField({ ...e })}\n />\n ))}\n </RadioButtonGroup>\n\n <Select label='What would you like to eat?' info='FYI: options are limited'>\n <Option>choose meal...</Option>\n <Option>Pizza</Option>\n <Option>Sandwich</Option>\n <Option>Salad</Option>\n </Select>\n\n <TextArea\n name='notes'\n required={notes.required}\n label='Meeting Notes'\n status={notes.status}\n info={notes.info || notes.help}\n onChange={(e: ChangeEvent<HTMLTextAreaElement>) => setField({ ...e })}\n onBlur={(e: FocusEvent<HTMLInputElement>) => setField({ ...e })}\n />\n <RichTextEditor\n label='Detailed meeting notes'\n info='The rich text editor can be used in forms, comments, and documents'\n toolbar={[\n 'inline-styling',\n 'headers',\n 'tables',\n 'links',\n 'images',\n 'lists',\n 'cut-copy-paste',\n 'indentation'\n ]}\n onImageAdded={onImageAdded}\n ref={editorRef}\n />\n\n <FileInputDemo />\n </Flex>\n </Form>\n );\n};\n"]}
1
+ {"version":3,"file":"PageTemplates.mocks.jsx","sourceRoot":"","sources":["../../../src/build/PageTemplates/PageTemplates.mocks.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FormEvent, ChangeEvent, FocusEvent, useReducer, useRef, useContext } from 'react';\nimport styled from 'styled-components';\n\nimport {\n Button,\n Flex,\n Form,\n Input,\n CheckboxGroup,\n RadioButtonGroup,\n RadioButton,\n Checkbox,\n Select,\n Option,\n TextArea,\n ToasterContext,\n Text,\n FormControlProps,\n useTheme\n} from '@pega/cosmos-react-core';\nimport { RichTextEditor, RichTextEditorState } from '@pega/cosmos-react-rte';\n\nimport { FileInputDemo } from '../../core/File/FileInput.stories';\nimport { dataPages, ObjectSelectComp } from '../ObjectSelect/ObjectSelect.mocks';\n\ninterface Field extends FormControlProps {\n help?: string;\n error?: string;\n validator: (this: Field) => boolean;\n}\n\n// Get initial field properties\nexport const initFields = (): Field[] => {\n const common = { value: undefined, status: undefined };\n return [\n {\n ...common,\n name: 'name',\n required: true,\n error: 'Please enter first and last name',\n validator() {\n if (!this.value) return false;\n return /^[a-z]+\\s[a-z]+$/i.test(this.value);\n }\n },\n {\n ...common,\n name: 'email',\n required: true,\n error: 'Enter a @pega.com address',\n validator() {\n if (!this.value) return false;\n return /^\\S+@pega\\.com$/.test(this.value);\n }\n },\n {\n ...common,\n name: 'notes',\n required: true,\n help: 'See how fast you can type 20 characters go',\n error: 'You need to tell us more than 20 characters',\n validator() {\n if (!this.value) return false;\n return this.value.length >= 20;\n }\n }\n ];\n};\n\n// Handles setting of state for all fields\nconst fieldReducer = (\n fields: Field[],\n {\n target,\n type\n }:\n | ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n | FocusEvent<HTMLInputElement | HTMLTextAreaElement>\n) => {\n return fields.map(field => {\n if (field.name === target.name) {\n field.value = target.value;\n if (type === 'blur' || field.status === 'error') {\n if ((field.required || field.value) && !field.validator()) {\n field.status = 'error';\n field.info = field.error;\n } else {\n field.status = undefined;\n field.info = field.help;\n }\n }\n }\n return field;\n });\n};\n\nexport const OneColumnForm = (props: any) => {\n const editorRef = useRef<RichTextEditorState>(null);\n const [fields, setField] = useReducer(fieldReducer, undefined, initFields);\n const { push } = useContext(ToasterContext);\n\n const name = fields.find(field => field.name === 'name');\n const email = fields.find(field => field.name === 'email');\n const notes = fields.find(field => field.name === 'notes');\n\n if (!name || !email || !notes) return null;\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 const onImageAdded = (image: File, id: string) => {\n const src = URL.createObjectURL(image);\n editorRef.current?.appendImage({ src, alt: image.name }, id);\n };\n\n return (\n <Form\n actions={actions}\n onSubmit={(e: FormEvent) => {\n e.preventDefault();\n push({ content: 'Form submitted!' });\n }}\n style={{ maxWidth: '37.5rem' }}\n >\n <Text variant='h4' as='h4'>\n Demo Form\n </Text>\n <Flex container={{ direction: 'column', gap: 2 }} item={{ grow: 1 }}>\n <Input\n name='name'\n label='Name'\n value={name.value}\n required={name.required}\n status={name.status}\n info='some help text here'\n onChange={(e: ChangeEvent<HTMLInputElement>) => setField({ ...e })}\n onBlur={(e: FocusEvent<HTMLInputElement>) => setField({ ...e })}\n autoComplete='off'\n />\n\n <Input\n name='email'\n value={email.value}\n type='email'\n label='Email'\n required={email.required}\n status={email.status}\n info='some help text here'\n onChange={(e: ChangeEvent<HTMLInputElement>) => setField({ ...e })}\n onBlur={(e: FocusEvent<HTMLInputElement>) => setField({ ...e })}\n autoComplete='off'\n />\n\n <CheckboxGroup name='visited' label='Places you have worked'>\n {['Cambridge', 'Krakow', 'Hyderabad', 'Bangalore'].map(office => (\n <Checkbox\n key={office}\n label={office}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setField({ ...e })}\n />\n ))}\n </CheckboxGroup>\n\n <RadioButtonGroup name='meetings' label='Do you enjoy early morning meetings?'>\n {['Yes', \"No...no I don't\"].map(option => (\n <RadioButton\n key={option}\n label={option}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setField({ ...e })}\n />\n ))}\n </RadioButtonGroup>\n\n <Select label='What would you like to eat?' info='FYI: options are limited'>\n <Option>choose meal...</Option>\n <Option>Pizza</Option>\n <Option>Sandwich</Option>\n <Option>Salad</Option>\n </Select>\n\n <ObjectSelectComp\n label='Date page'\n info='Choose a when condition from list'\n items={dataPages}\n onChange={() => {}}\n onPreview={() => props.previewCallback()}\n />\n\n <TextArea\n name='notes'\n required={notes.required}\n label='Meeting Notes'\n status={notes.status}\n info={notes.info || notes.help}\n onChange={(e: ChangeEvent<HTMLTextAreaElement>) => setField({ ...e })}\n onBlur={(e: FocusEvent<HTMLInputElement>) => setField({ ...e })}\n />\n <RichTextEditor\n label='Detailed meeting notes'\n info='The rich text editor can be used in forms, comments, and documents'\n toolbar={[\n 'inline-styling',\n 'headers',\n 'tables',\n 'links',\n 'images',\n 'lists',\n 'cut-copy-paste',\n 'indentation'\n ]}\n onImageAdded={onImageAdded}\n ref={editorRef}\n />\n\n <FileInputDemo />\n </Flex>\n </Form>\n );\n};\n\nexport const PreviewMainContent = () => {\n const {\n base: { palette }\n } = useTheme();\n const StyledRegion = styled.div`\n min-height: 120vh;\n border: dotted 0.1rem ${palette['border-line']};\n background: ${palette.skeleton};\n `;\n\n return (\n <Flex as={StyledRegion} container={{ alignItems: 'center', justify: 'center' }}>\n <Text>This is a react region</Text>\n </Flex>\n );\n};\n"]}
@@ -11,9 +11,8 @@ export interface PageTemplatesStoryProps extends PageTemplateProps {
11
11
  showActions?: boolean;
12
12
  showBanners?: boolean;
13
13
  subTitle?: string;
14
- showBranch?: boolean;
15
- branchName?: string;
16
- statusVariant?: StatusProps['variant'];
14
+ showStatus?: boolean;
15
+ statusVariant: StatusProps['variant'];
17
16
  statusLabel: string;
18
17
  showEditButton?: boolean;
19
18
  onEdit?: (e: MouseEvent<HTMLButtonElement>) => void;
@@ -22,6 +21,5 @@ interface AppShellStory {
22
21
  main: AppShellProps['main'];
23
22
  hideNavigation?: boolean;
24
23
  }
25
- export declare const AppShellWithMenuNavigation: (args: AppShellStory) => JSX.Element;
26
24
  export declare const PageTemplatesDemo: Story<PageTemplatesStoryProps & AppShellStory>;
27
25
  //# sourceMappingURL=PageTemplates.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageTemplates.stories.d.ts","sourceRoot":"","sources":["../../../src/build/PageTemplates/PageTemplates.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAiC,UAAU,EAAE,MAAM,OAAO,CAAC;AAGlE,OAAO,EAaL,WAAW,EACX,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAY,aAAa,EAA6B,MAAM,0BAA0B,CAAC;;AAa9F,wBAKU;AAEV,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,QAAQ,EACJ,YAAY,GACZ,YAAY,GACZ,cAAc,GACd,aAAa,GACb,aAAa,GACb,aAAa,GACb,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,QAAQ,CAAC;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACrD;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,0BAA0B,SAAU,aAAa,gBAyI7D,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,uBAAuB,GAAG,aAAa,CAkL5E,CAAC"}
1
+ {"version":3,"file":"PageTemplates.stories.d.ts","sourceRoot":"","sources":["../../../src/build/PageTemplates/PageTemplates.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAiC,UAAU,EAAE,MAAM,OAAO,CAAC;AAGlE,OAAO,EAaL,WAAW,EACX,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,aAAa,EAId,MAAM,0BAA0B,CAAC;;AAalC,wBAKU;AAEV,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,QAAQ,EACJ,YAAY,GACZ,YAAY,GACZ,cAAc,GACd,aAAa,GACb,aAAa,GACb,aAAa,GACb,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,QAAQ,CAAC;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACrD;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,uBAAuB,GAAG,aAAa,CA6Y5E,CAAC"}
@@ -1,135 +1,18 @@
1
1
  import { useState, useMemo, useContext } from 'react';
2
2
  import { action } from '@storybook/addon-actions';
3
3
  import { Button, Banner, treeHelpers, StandardTree, Configuration, Modal, ModalManagerContext, BuildTheme, Flex, Text, Actions } from '@pega/cosmos-react-core';
4
- import { AppShell, TabbedPage, OneColumnPage } from '@pega/cosmos-react-build';
4
+ import { AppShell, TabbedPage, OneColumnPage, ObjectPreview } from '@pega/cosmos-react-build';
5
5
  import { TableDemo } from '../../core/Table/Table.stories';
6
6
  import { WorkbenchDemo } from '../Workbench/Workbench.stories';
7
7
  import { appExplorerMenuList, branchesMenuList, recordMenuList, treeList } from '../AppShell/AppShell.mocks';
8
- import { OneColumnForm } from './PageTemplates.mocks';
8
+ import { OneColumnForm, PreviewMainContent } from './PageTemplates.mocks';
9
9
  export default {
10
10
  title: 'Build/PageTemplates',
11
11
  parameters: {
12
12
  layout: 'fullscreen'
13
13
  }
14
14
  };
15
- export const AppShellWithMenuNavigation = (args) => {
16
- const [currentNodeId, setCurrentNodeId] = useState();
17
- const [allNodes, setAllNodes] = useState(treeList);
18
- const onNodeClick = (id) => {
19
- const clickedNode = treeHelpers.getNode(allNodes, id);
20
- if (!clickedNode?.nodes) {
21
- setCurrentNodeId(id);
22
- return;
23
- }
24
- setAllNodes(tree => treeHelpers.mapNode(tree, id, node => {
25
- return {
26
- ...node,
27
- expanded: !node.expanded
28
- };
29
- }));
30
- return (<StandardTree nodes={recordMenuList} onNodeClick={onNodeClick} currentNodeId={currentNodeId}/>);
31
- };
32
- const appHeader = {
33
- brand: {
34
- name: 'AppStudioX'
35
- },
36
- utils: {
37
- avatar: { name: 'Alan' },
38
- search: {
39
- placeholder: 'Search anything, anywhere'
40
- },
41
- branchName: 'test',
42
- actions: [
43
- {
44
- primary: 'Switch branch',
45
- id: 'switchbranch',
46
- onClick: action('Clicked switchbranch')
47
- },
48
- {
49
- primary: 'Create branch',
50
- id: 'createbranch',
51
- onClick: action('Clicked createbranch')
52
- }
53
- ]
54
- },
55
- links: [
56
- {
57
- id: '1',
58
- name: 'Applications',
59
- onClick: action('Clicked Applications')
60
- },
61
- {
62
- id: '2',
63
- name: 'Shared resources',
64
- onClick: action('Clicked Shared resources')
65
- },
66
- {
67
- id: '3',
68
- name: 'Teams',
69
- onClick: () => { }
70
- },
71
- {
72
- id: '4',
73
- name: 'AI & Analytics',
74
- onClick: action('Clicked AI & Analytics')
75
- },
76
- {
77
- id: '5',
78
- name: 'Deploy',
79
- onClick: action('Clicked Deploy')
80
- }
81
- ]
82
- };
83
- return (<Configuration theme={BuildTheme}>
84
- <AppShell main={args.main} appHeader={appHeader} hideNav={args.hideNavigation} appInfo={{
85
- text: 'xCompass',
86
- visual: {
87
- icon: {
88
- name: 'compass',
89
- bgColor: '#20AA50'
90
- }
91
- }
92
- }} navigation={{
93
- nodes: allNodes,
94
- currentNodeId,
95
- onNodeClick
96
- }} utils={{
97
- onItemClick: id => {
98
- if (id === 'explorer') {
99
- setAllNodes(appExplorerMenuList);
100
- }
101
- if (id === 'branches') {
102
- setAllNodes(branchesMenuList);
103
- }
104
- if (id === 'records') {
105
- setAllNodes(recordMenuList);
106
- }
107
- },
108
- items: [
109
- {
110
- label: 'App Explorer',
111
- id: 'explorer'
112
- },
113
- {
114
- label: 'Branches',
115
- id: 'branches'
116
- },
117
- {
118
- label: 'Records',
119
- id: 'records'
120
- }
121
- ],
122
- drawer: {
123
- onBeforeClose: () => setAllNodes(treeList)
124
- }
125
- }}/>
126
- </Configuration>);
127
- };
128
15
  export const PageTemplatesDemo = (args) => {
129
- const [currentTabId, setCurrentTabId] = useState('accounts');
130
- const [content, setContent] = useState(<>
131
- <TableDemo />
132
- </>);
133
16
  const { create } = useContext(ModalManagerContext);
134
17
  const getPath = () => {
135
18
  if (args.showBreadcrumbs) {
@@ -165,9 +48,122 @@ export const PageTemplatesDemo = (args) => {
165
48
  <Text>This is the content of the Modal.</Text>
166
49
  </Modal>
167
50
  </Configuration>);
51
+ const AppShellWithMenuNavigation = ({ main, hideNavigation }) => {
52
+ const [currentNodeId, setCurrentNodeId] = useState();
53
+ const [allNodes, setAllNodes] = useState(treeList);
54
+ const onNodeClick = (id) => {
55
+ const clickedNode = treeHelpers.getNode(allNodes, id);
56
+ if (!clickedNode?.nodes) {
57
+ setCurrentNodeId(id);
58
+ return;
59
+ }
60
+ setAllNodes(tree => treeHelpers.mapNode(tree, id, node => {
61
+ return {
62
+ ...node,
63
+ expanded: !node.expanded
64
+ };
65
+ }));
66
+ return (<StandardTree nodes={recordMenuList} onNodeClick={onNodeClick} currentNodeId={currentNodeId}/>);
67
+ };
68
+ const appHeader = {
69
+ brand: {
70
+ name: 'AppStudioX',
71
+ visual: {
72
+ icon: 'pegasus'
73
+ }
74
+ },
75
+ utils: {
76
+ avatar: { name: 'Alan' },
77
+ search: {
78
+ placeholder: 'Search anything, anywhere'
79
+ },
80
+ branchName: 'test',
81
+ actions: [
82
+ {
83
+ primary: 'Switch branch',
84
+ id: 'switchbranch',
85
+ onClick: action('Clicked switchbranch')
86
+ },
87
+ {
88
+ primary: 'Create branch',
89
+ id: 'createbranch',
90
+ onClick: action('Clicked createbranch')
91
+ }
92
+ ]
93
+ },
94
+ links: [
95
+ {
96
+ id: '1',
97
+ name: 'Applications',
98
+ onClick: action('Clicked Applications')
99
+ },
100
+ {
101
+ id: '2',
102
+ name: 'Shared resources',
103
+ onClick: action('Clicked Shared resources')
104
+ },
105
+ {
106
+ id: '3',
107
+ name: 'Teams',
108
+ onClick: () => { }
109
+ },
110
+ {
111
+ id: '4',
112
+ name: 'AI & Analytics',
113
+ onClick: action('Clicked AI & Analytics')
114
+ },
115
+ {
116
+ id: '5',
117
+ name: 'Deploy',
118
+ onClick: action('Clicked Deploy')
119
+ }
120
+ ]
121
+ };
122
+ return (<Configuration theme={BuildTheme}>
123
+ <AppShell main={main} appHeader={appHeader} hideNav={hideNavigation} appInfo={{
124
+ text: 'xCompass',
125
+ visual: {
126
+ icon: 'compass',
127
+ backgroundColor: '#20AA50'
128
+ }
129
+ }} navigation={{
130
+ nodes: allNodes,
131
+ currentNodeId,
132
+ onNodeClick
133
+ }} utils={{
134
+ onItemClick: id => {
135
+ if (id === 'explorer') {
136
+ setAllNodes(appExplorerMenuList);
137
+ }
138
+ if (id === 'branches') {
139
+ setAllNodes(branchesMenuList);
140
+ }
141
+ if (id === 'records') {
142
+ setAllNodes(recordMenuList);
143
+ }
144
+ },
145
+ items: [
146
+ {
147
+ label: 'App Explorer',
148
+ id: 'explorer'
149
+ },
150
+ {
151
+ label: 'Branches',
152
+ id: 'branches'
153
+ },
154
+ {
155
+ label: 'Records',
156
+ id: 'records'
157
+ }
158
+ ],
159
+ drawer: {
160
+ onBeforeClose: () => setAllNodes(treeList)
161
+ }
162
+ }}/>
163
+ </Configuration>);
164
+ };
168
165
  const pageTemplateProps = useMemo(() => {
169
- const branchName = args.showBranch ? args.branchName : '';
170
- const status = args.showBranch
166
+ const status = args.showStatus
171
167
  ? {
172
168
  type: args.statusVariant,
173
169
  label: args.statusLabel
@@ -178,7 +174,6 @@ export const PageTemplatesDemo = (args) => {
178
174
  actions,
179
175
  banners,
180
176
  path: getPath(),
181
- branchName,
182
177
  status,
183
178
  metadata: [
184
179
  { id: '1', name: 'ID', value: 'InterestRate' },
@@ -229,37 +224,110 @@ export const PageTemplatesDemo = (args) => {
229
224
  }
230
225
  };
231
226
  }, [args]);
227
+ const [tabs, setTabs] = useState([
228
+ { id: 'accounts', name: 'Accounts', content: <TableDemo /> },
229
+ { id: 'form', name: 'Form', content: null },
230
+ { id: 'workbench', name: 'Workbench', content: null }
231
+ ]);
232
232
  let demo;
233
+ const [openDrawer, setOpenDrawer] = useState(false);
233
234
  switch (args.template) {
234
235
  case 'one column':
235
236
  demo = <OneColumnPage a={mainContent} {...pageTemplateProps}/>;
236
237
  break;
237
238
  case 'tabbed':
238
239
  default:
239
- demo = (<TabbedPage a={content} tabs={{
240
- tabs: [
241
- { id: 'accounts', name: 'Accounts' },
242
- { id: 'form', name: 'Form' },
243
- { id: 'workbench', name: 'Workbench' }
244
- ],
240
+ demo = (<>
241
+ <TabbedPage tabs={{
242
+ tabs,
245
243
  type: 'horizontal',
246
- currentTabId,
247
244
  onTabClick: id => {
248
- setCurrentTabId(id);
249
245
  switch (id) {
250
246
  case 'form':
251
- setContent(<OneColumnForm />);
252
- break;
253
- case 'accounts':
254
- setContent(<TableDemo />);
247
+ if (tabs[1].content === null) {
248
+ const updatedTabs = [...tabs];
249
+ updatedTabs[1].content = (<OneColumnForm previewCallback={() => {
250
+ setOpenDrawer(true);
251
+ }}/>);
252
+ setTabs(updatedTabs);
253
+ }
255
254
  break;
256
255
  case 'workbench':
257
- setContent(<WorkbenchDemo />);
256
+ if (tabs[2].content === null) {
257
+ const updatedTabs = [...tabs];
258
+ updatedTabs[2].content = <WorkbenchDemo />;
259
+ setTabs(updatedTabs);
260
+ }
258
261
  break;
259
262
  default:
260
263
  }
261
264
  }
262
- }} {...pageTemplateProps}/>);
265
+ }} {...pageTemplateProps}/>
266
+ <ObjectPreview open={openDrawer} onDismiss={() => setOpenDrawer(false)} header={{
267
+ title: 'Interest rate',
268
+ metadata: [
269
+ { id: '1', name: 'ID', value: 'InterestRate' },
270
+ { id: '2', name: 'Rule type', value: 'Field' },
271
+ {
272
+ id: '3',
273
+ name: 'Scope',
274
+ value: 'O1XPTI-CCompass-Work-MortgageRequest'
275
+ },
276
+ { id: '4', name: 'Application', value: 'XCompass' }
277
+ ],
278
+ additionalInfo: {
279
+ title: 'Interest rate',
280
+ description: 'Interest rate for the savings account',
281
+ fields: [
282
+ {
283
+ id: '1',
284
+ name: 'Id',
285
+ value: 'InterestRate'
286
+ },
287
+ {
288
+ id: '2',
289
+ name: 'Rule type',
290
+ value: 'Field'
291
+ },
292
+ {
293
+ id: '3',
294
+ name: 'Scope',
295
+ value: 'O1XPTI-CCompass-Work-MortgageRequest'
296
+ },
297
+ {
298
+ id: '4',
299
+ name: 'Branch',
300
+ value: 'xCompass (Main)'
301
+ },
302
+ {
303
+ id: '5',
304
+ name: 'Application',
305
+ value: 'XCompass'
306
+ }
307
+ ],
308
+ onEdit: () => { }
309
+ }
310
+ }} content={<PreviewMainContent />} primaryAction={{
311
+ id: 'PA',
312
+ text: 'Save',
313
+ onClick: () => { }
314
+ }} secondaryAction={{
315
+ id: 'SA',
316
+ text: 'Open rule',
317
+ onClick: () => { }
318
+ }} additionalActions={{
319
+ items: [
320
+ {
321
+ id: '1',
322
+ text: 'Page action 1'
323
+ },
324
+ {
325
+ id: '2',
326
+ text: 'Page action 2'
327
+ }
328
+ ]
329
+ }}/>
330
+ </>);
263
331
  break;
264
332
  }
265
333
  return (<AppShellWithMenuNavigation main={demo} hideNavigation={args.hideNavigation}/>);
@@ -273,10 +341,9 @@ PageTemplatesDemo.args = {
273
341
  pathData: 'Home,xCompass,Fields',
274
342
  showActions: true,
275
343
  showBanners: false,
276
- showBranch: true,
344
+ showStatus: true,
277
345
  statusVariant: 'pending',
278
346
  statusLabel: 'private change',
279
- branchName: 'xCompass (Main)',
280
347
  showEditButton: true,
281
348
  onEdit: action('Clicked edit button in popover')
282
349
  };
@@ -292,13 +359,12 @@ PageTemplatesDemo.argTypes = {
292
359
  pathData: { control: { type: 'text' } },
293
360
  showActions: { control: { type: 'boolean' } },
294
361
  showBanners: { control: { type: 'boolean' } },
295
- showBranch: { control: { type: 'boolean' } },
362
+ showStatus: { control: { type: 'boolean' } },
296
363
  statusVariant: {
297
364
  options: ['success', 'urgent', 'warn', 'pending', 'info'],
298
365
  control: { type: 'select' }
299
366
  },
300
367
  statusLabel: { control: { type: 'text' } },
301
- branchName: { control: { type: 'text' } },
302
368
  showEditButton: { control: { type: 'boolean' } },
303
369
  onEdit: { table: { disable: true } }
304
370
  };