@workday/canvas-kit-docs 5.2.11 → 5.3.0-next.18

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 (59) hide show
  1. package/dist/commonjs/lib/specs.js +366 -18
  2. package/dist/es6/lib/specs.js +366 -18
  3. package/dist/mdx/6.0-MIGRATION-GUIDE.mdx +554 -0
  4. package/dist/mdx/COMPOUND_COMPONENTS.mdx +31 -30
  5. package/dist/mdx/labs-react/search-form/SearchForm.mdx +64 -0
  6. package/dist/mdx/labs-react/search-form/examples/Basic.tsx +61 -0
  7. package/dist/mdx/labs-react/search-form/examples/CustomTheme.tsx +72 -0
  8. package/dist/mdx/labs-react/search-form/examples/Grow.tsx +62 -0
  9. package/dist/mdx/labs-react/search-form/examples/PropTables.splitProps.tsx +4 -0
  10. package/dist/mdx/labs-react/search-form/examples/RTL.tsx +70 -0
  11. package/dist/mdx/labs-react/search-form/examples/Theming.tsx +64 -0
  12. package/dist/mdx/preview-react/form-field/FormField.mdx +27 -0
  13. package/dist/mdx/preview-react/form-field/examples/Custom.tsx +57 -0
  14. package/dist/mdx/preview-react/text-area/TextArea.mdx +122 -0
  15. package/dist/mdx/preview-react/text-area/examples/Alert.tsx +31 -0
  16. package/dist/mdx/preview-react/text-area/examples/Basic.tsx +17 -0
  17. package/dist/mdx/preview-react/text-area/examples/Disabled.tsx +17 -0
  18. package/dist/mdx/preview-react/text-area/examples/Error.tsx +40 -0
  19. package/dist/mdx/preview-react/text-area/examples/Grow.tsx +17 -0
  20. package/dist/mdx/preview-react/text-area/examples/HiddenLabel.tsx +20 -0
  21. package/dist/mdx/preview-react/text-area/examples/LabelPositionHorizontal.tsx +17 -0
  22. package/dist/mdx/preview-react/text-area/examples/LabelPositionVertical.tsx +17 -0
  23. package/dist/mdx/preview-react/text-area/examples/Placeholder.tsx +21 -0
  24. package/dist/mdx/preview-react/text-area/examples/RefForwarding.tsx +28 -0
  25. package/dist/mdx/preview-react/text-area/examples/Required.tsx +17 -0
  26. package/dist/mdx/preview-react/text-area/examples/ResizeConstraints.tsx +22 -0
  27. package/dist/mdx/preview-react/text-input/TextInput.mdx +145 -0
  28. package/dist/mdx/preview-react/text-input/examples/Alert.tsx +40 -0
  29. package/dist/mdx/preview-react/text-input/examples/Basic.tsx +17 -0
  30. package/dist/mdx/preview-react/text-input/examples/Disabled.tsx +17 -0
  31. package/dist/mdx/preview-react/text-input/examples/Error.tsx +40 -0
  32. package/dist/mdx/preview-react/text-input/examples/Grow.tsx +17 -0
  33. package/dist/mdx/preview-react/text-input/examples/HiddenLabel.tsx +20 -0
  34. package/dist/mdx/preview-react/text-input/examples/LabelPositionHorizontal.tsx +17 -0
  35. package/dist/mdx/preview-react/text-input/examples/LabelPositionVertical.tsx +17 -0
  36. package/dist/mdx/preview-react/text-input/examples/LoginForm.tsx +105 -0
  37. package/dist/mdx/preview-react/text-input/examples/Password.tsx +17 -0
  38. package/dist/mdx/preview-react/text-input/examples/Placeholder.tsx +17 -0
  39. package/dist/mdx/preview-react/text-input/examples/RefForwarding.tsx +28 -0
  40. package/dist/mdx/preview-react/text-input/examples/Required.tsx +17 -0
  41. package/dist/mdx/preview-react/text-input/examples/ThemedAlert.tsx +46 -0
  42. package/dist/mdx/preview-react/text-input/examples/ThemedError.tsx +37 -0
  43. package/dist/mdx/react/button/button/Button.mdx +27 -2
  44. package/dist/mdx/react/button/button/examples/Primary.tsx +10 -1
  45. package/dist/mdx/react/button/button/examples/PrimaryInverse.tsx +14 -0
  46. package/dist/mdx/react/button/button/examples/Secondary.tsx +10 -1
  47. package/dist/mdx/react/button/button/examples/SecondaryInverse.tsx +14 -0
  48. package/dist/mdx/react/button/button/examples/Tertiary.tsx +10 -1
  49. package/dist/mdx/react/button/button/examples/TertiaryInverse.tsx +14 -0
  50. package/dist/mdx/react/tabs/Tabs.mdx +31 -5
  51. package/dist/mdx/react/tabs/examples/DisabledTab.tsx +1 -1
  52. package/dist/mdx/react/tabs/examples/DynamicTabs.tsx +41 -13
  53. package/dist/mdx/react/tabs/examples/HoistedModel.tsx +4 -4
  54. package/dist/mdx/react/tabs/examples/Icons.tsx +36 -0
  55. package/dist/mdx/react/tabs/examples/{NamedKeys.tsx → NamedTabs.tsx} +0 -0
  56. package/dist/mdx/react/tabs/examples/OverflowTabs.tsx +58 -0
  57. package/dist/mdx/react/tabs/examples/SinglePanel.tsx +1 -1
  58. package/dist/mdx/react/text-area/TextArea.mdx +1 -1
  59. package/package.json +3 -3
@@ -1,22 +1,50 @@
1
1
  import React from 'react';
2
2
  import {space} from '@workday/canvas-kit-react/tokens';
3
3
 
4
- import {Tabs, useTabsModel} from '@workday/canvas-kit-react/tabs';
4
+ import {Tabs, useTabsModel, TabsModel} from '@workday/canvas-kit-react/tabs';
5
+ import {SelectionModel} from '../../lib/selection';
5
6
 
6
7
  export default () => {
7
8
  const [tabs, setTabs] = React.useState([
8
- {tab: 'Tab 1', name: 'tab-1'},
9
- {tab: 'Tab 2', name: 'tab-2'},
10
- {tab: 'Tab 3', name: 'tab-3'},
9
+ {tab: 'Tab 1', id: 'tab-1'},
10
+ {tab: 'Tab 2', id: 'tab-2'},
11
+ {tab: 'Tab 3', id: 'tab-3'},
11
12
  ]);
12
13
  const addedRef = React.useRef(tabs.length);
13
14
  const model = useTabsModel({
14
- shouldActivate: ({data}) => data.tab !== 'last',
15
+ shouldSelect: ({data}) => data.id !== 'last',
15
16
  });
16
17
 
17
- const onKeyDown = (e: React.KeyboardEvent<HTMLElement>, name: string) => {
18
- if (e.key === 'Backspace') {
19
- setTabs(tabs.filter(item => item.name !== name));
18
+ /**
19
+ * Helper function that should be called when an item is programmatically removed. The following
20
+ * side effects depend on state of the model:
21
+ * * **Item is focused**: Focus will be moved to next item in the list
22
+ * * **Item is selected**: Selection will be moved to the next item in the list
23
+ * @param id The id of the item that will be removed
24
+ */
25
+ const removeItem = (id: string, model: SelectionModel) => {
26
+ const index = model.state.items.findIndex(item => model.getId(item) === model.state.cursorId);
27
+ const nextIndex = index === model.state.items.length - 1 ? index - 1 : index + 1;
28
+ const nextId = model.getId(model.state.items[nextIndex]);
29
+ if (model.state.selectedIds[0] === id) {
30
+ // We're removing the currently selected item. Select next item
31
+ model.events.select({id: nextId});
32
+ }
33
+ if (model.state.cursorId === id) {
34
+ // We're removing the currently focused item. Focus next item
35
+ model.events.goTo({id: nextId});
36
+
37
+ // wait for stabilization of state
38
+ requestAnimationFrame(() => {
39
+ document.querySelector<HTMLElement>(`#${model.state.id}-${nextId}`)?.focus();
40
+ });
41
+ }
42
+ };
43
+
44
+ const onKeyDown = (e: React.KeyboardEvent<HTMLElement>, id: string) => {
45
+ if (e.key === 'Delete') {
46
+ setTabs(tabs.filter(item => item.id !== id));
47
+ removeItem(id, model);
20
48
  }
21
49
  };
22
50
 
@@ -25,10 +53,10 @@ export default () => {
25
53
  <Tabs.List>
26
54
  {tabs.map((item, index) => (
27
55
  <Tabs.Item
28
- key={item.name}
29
- name={item.name}
56
+ key={item.id}
57
+ name={item.id}
30
58
  index={index}
31
- onKeyDown={e => onKeyDown(e, item.name)}
59
+ onKeyDown={e => onKeyDown(e, item.id)}
32
60
  >
33
61
  {item.tab}
34
62
  </Tabs.Item>
@@ -40,7 +68,7 @@ export default () => {
40
68
  onClick={() => {
41
69
  addedRef.current += 1;
42
70
  setTabs(tabs =>
43
- tabs.concat({tab: `Tab ${addedRef.current}`, name: `tab-${addedRef.current}`})
71
+ tabs.concat({tab: `Tab ${addedRef.current}`, id: `tab-${addedRef.current}`})
44
72
  );
45
73
  model.events.goTo({id: 'last'});
46
74
  }}
@@ -50,7 +78,7 @@ export default () => {
50
78
  </Tabs.List>
51
79
  <div style={{marginTop: space.m}}>
52
80
  {tabs.map((item, index) => (
53
- <Tabs.Panel key={item.name} name={item.name}>
81
+ <Tabs.Panel key={item.id} name={item.id}>
54
82
  Contents of {item.tab}
55
83
  </Tabs.Panel>
56
84
  ))}
@@ -6,8 +6,8 @@ import {Tabs, useTabsModel} from '@workday/canvas-kit-react/tabs';
6
6
 
7
7
  export default () => {
8
8
  const model = useTabsModel({
9
- onActivate({data, prevState}) {
10
- console.log('Activated Tab', data, prevState);
9
+ onSelect({data, prevState}) {
10
+ console.log('Selected Tab', data, prevState);
11
11
  },
12
12
  });
13
13
 
@@ -27,10 +27,10 @@ export default () => {
27
27
  </Tabs>
28
28
  <SecondaryButton
29
29
  onClick={() => {
30
- model.events.activate({tab: 'third'});
30
+ model.events.select({id: 'third'});
31
31
  }}
32
32
  >
33
- Activate Third Tab
33
+ Select Third Tab
34
34
  </SecondaryButton>
35
35
  </>
36
36
  );
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+
3
+ import {space} from '@workday/canvas-kit-react/tokens';
4
+ import {starIcon, searchIcon, selectIcon, shareIcon} from '@workday/canvas-system-icons-web';
5
+ import {Tabs} from '@workday/canvas-kit-react/tabs';
6
+
7
+ export default () => {
8
+ return (
9
+ <Tabs>
10
+ <Tabs.List>
11
+ <Tabs.Item hasIcon>
12
+ <Tabs.Item.Icon icon={starIcon} />
13
+ <Tabs.Item.Text>First Tab</Tabs.Item.Text>
14
+ </Tabs.Item>
15
+ <Tabs.Item hasIcon>
16
+ <Tabs.Item.Icon icon={searchIcon} />
17
+ <Tabs.Item.Text>Second Tab</Tabs.Item.Text>
18
+ </Tabs.Item>
19
+ <Tabs.Item hasIcon>
20
+ <Tabs.Item.Icon icon={selectIcon} />
21
+ <Tabs.Item.Text>Third Tab</Tabs.Item.Text>
22
+ </Tabs.Item>
23
+ <Tabs.Item hasIcon>
24
+ <Tabs.Item.Icon icon={shareIcon} />
25
+ <Tabs.Item.Text>Fourth Tab</Tabs.Item.Text>
26
+ </Tabs.Item>
27
+ </Tabs.List>
28
+ <div style={{marginTop: space.m}}>
29
+ <Tabs.Panel>Contents of First Tab</Tabs.Panel>
30
+ <Tabs.Panel>Contents of Second Tab</Tabs.Panel>
31
+ <Tabs.Panel>Contents of Third Tab</Tabs.Panel>
32
+ <Tabs.Panel>Contents of Fourth Tab</Tabs.Panel>
33
+ </div>
34
+ </Tabs>
35
+ );
36
+ };
@@ -0,0 +1,58 @@
1
+ import React from 'react';
2
+
3
+ import {Tabs, useTabsModel} from '@workday/canvas-kit-react/tabs';
4
+ import {HStack} from '@workday/canvas-kit-labs-react';
5
+ import {SecondaryButton} from '../../../button';
6
+
7
+ type MyTabItem = {
8
+ id: string;
9
+ text: React.ReactNode;
10
+ contents: string;
11
+ };
12
+
13
+ export default () => {
14
+ const [items] = React.useState<MyTabItem[]>([
15
+ {id: 'first', text: 'First Tab', contents: 'Contents of First Tab'},
16
+ {id: 'second', text: 'Second Tab', contents: 'Contents of Second Tab'},
17
+ {id: 'third', text: 'Third Tab', contents: 'Contents of Third Tab'},
18
+ {id: 'fourth', text: 'Fourth Tab', contents: 'Contents of Fourth Tab'},
19
+ {id: 'fifth', text: 'Fifth Tab', contents: 'Contents of Fifth Tab'},
20
+ {id: 'sixth', text: 'Sixth Tab', contents: 'Contents of Sixth Tab'},
21
+ {id: 'seventh', text: 'Seventh Tab', contents: 'Contents of Seventh Tab'},
22
+ ]);
23
+ const model = useTabsModel({
24
+ items,
25
+ });
26
+ const [containerWidth, setContainerWidth] = React.useState('100%');
27
+ return (
28
+ <div style={{width: containerWidth}}>
29
+ <Tabs model={model}>
30
+ <Tabs.List overflowButton={<Tabs.OverflowButton>More</Tabs.OverflowButton>}>
31
+ {(item: MyTabItem) => <Tabs.Item name={item.id}>{item.text}</Tabs.Item>}
32
+ </Tabs.List>
33
+ <Tabs.Menu.Popper>
34
+ <Tabs.Menu.Card maxWidth={300} maxHeight={200}>
35
+ <Tabs.Menu.List>
36
+ {(item: MyTabItem) => <Tabs.Menu.Item name={item.id}>{item.text}</Tabs.Menu.Item>}
37
+ </Tabs.Menu.List>
38
+ </Tabs.Menu.Card>
39
+ </Tabs.Menu.Popper>
40
+ <Tabs.Panels>
41
+ {(item: MyTabItem) => (
42
+ <Tabs.Panel marginTop="m" name={item.id}>
43
+ {item.contents}
44
+ </Tabs.Panel>
45
+ )}
46
+ </Tabs.Panels>
47
+ </Tabs>
48
+ <hr />
49
+ <h4>Change tab container size</h4>
50
+ <HStack spacing="xs">
51
+ <SecondaryButton onClick={() => setContainerWidth('100%')}>100%</SecondaryButton>
52
+ <SecondaryButton onClick={() => setContainerWidth('500px')}>500px</SecondaryButton>
53
+ <SecondaryButton onClick={() => setContainerWidth('235px')}>235px</SecondaryButton>
54
+ <SecondaryButton onClick={() => setContainerWidth('150px')}>150px</SecondaryButton>
55
+ </HStack>
56
+ </div>
57
+ );
58
+ };
@@ -34,7 +34,7 @@ export default () => {
34
34
  </Tabs.Item>
35
35
  </Tabs.List>
36
36
  <Tabs.Panel style={{marginTop: space.m}} hidden={undefined} id="mytab-panel">
37
- {contents[model.state.activeTab]}
37
+ {contents[model.state.selectedIds[0]]}
38
38
  </Tabs.Panel>
39
39
  </Tabs>
40
40
  );
@@ -23,7 +23,7 @@ Text Areas allow users to enter and edit multiple lines of text.
23
23
  ## Installation
24
24
 
25
25
  ```sh
26
- yarn add @workday/canvas-kit-react
26
+ yarn add @workday/canvas-kit-labs-react
27
27
  ```
28
28
 
29
29
  ## Usage
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workday/canvas-kit-docs",
3
- "version": "5.2.11",
3
+ "version": "5.3.0-next.18+6a7c92ab",
4
4
  "description": "Documentation components of Canvas Kit components",
5
5
  "author": "Workday, Inc. (https://www.workday.com)",
6
6
  "license": "Apache-2.0",
@@ -49,7 +49,7 @@
49
49
  ],
50
50
  "dependencies": {
51
51
  "@storybook/csf": "0.0.1",
52
- "@workday/canvas-kit-react": "^5.2.11"
52
+ "@workday/canvas-kit-react": "^5.3.0-next.18+6a7c92ab"
53
53
  },
54
54
  "devDependencies": {
55
55
  "fs-extra": "^10.0.0",
@@ -57,5 +57,5 @@
57
57
  "mkdirp": "^1.0.3",
58
58
  "typescript": "^3.8.3"
59
59
  },
60
- "gitHead": "1fba31836daf2b965432b99a4bd857694fda7e0c"
60
+ "gitHead": "6a7c92ab26c236a362790dceab7a2f10d84fe9ae"
61
61
  }