@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.
- package/dist/commonjs/lib/specs.js +366 -18
- package/dist/es6/lib/specs.js +366 -18
- package/dist/mdx/6.0-MIGRATION-GUIDE.mdx +554 -0
- package/dist/mdx/COMPOUND_COMPONENTS.mdx +31 -30
- package/dist/mdx/labs-react/search-form/SearchForm.mdx +64 -0
- package/dist/mdx/labs-react/search-form/examples/Basic.tsx +61 -0
- package/dist/mdx/labs-react/search-form/examples/CustomTheme.tsx +72 -0
- package/dist/mdx/labs-react/search-form/examples/Grow.tsx +62 -0
- package/dist/mdx/labs-react/search-form/examples/PropTables.splitProps.tsx +4 -0
- package/dist/mdx/labs-react/search-form/examples/RTL.tsx +70 -0
- package/dist/mdx/labs-react/search-form/examples/Theming.tsx +64 -0
- package/dist/mdx/preview-react/form-field/FormField.mdx +27 -0
- package/dist/mdx/preview-react/form-field/examples/Custom.tsx +57 -0
- package/dist/mdx/preview-react/text-area/TextArea.mdx +122 -0
- package/dist/mdx/preview-react/text-area/examples/Alert.tsx +31 -0
- package/dist/mdx/preview-react/text-area/examples/Basic.tsx +17 -0
- package/dist/mdx/preview-react/text-area/examples/Disabled.tsx +17 -0
- package/dist/mdx/preview-react/text-area/examples/Error.tsx +40 -0
- package/dist/mdx/preview-react/text-area/examples/Grow.tsx +17 -0
- package/dist/mdx/preview-react/text-area/examples/HiddenLabel.tsx +20 -0
- package/dist/mdx/preview-react/text-area/examples/LabelPositionHorizontal.tsx +17 -0
- package/dist/mdx/preview-react/text-area/examples/LabelPositionVertical.tsx +17 -0
- package/dist/mdx/preview-react/text-area/examples/Placeholder.tsx +21 -0
- package/dist/mdx/preview-react/text-area/examples/RefForwarding.tsx +28 -0
- package/dist/mdx/preview-react/text-area/examples/Required.tsx +17 -0
- package/dist/mdx/preview-react/text-area/examples/ResizeConstraints.tsx +22 -0
- package/dist/mdx/preview-react/text-input/TextInput.mdx +145 -0
- package/dist/mdx/preview-react/text-input/examples/Alert.tsx +40 -0
- package/dist/mdx/preview-react/text-input/examples/Basic.tsx +17 -0
- package/dist/mdx/preview-react/text-input/examples/Disabled.tsx +17 -0
- package/dist/mdx/preview-react/text-input/examples/Error.tsx +40 -0
- package/dist/mdx/preview-react/text-input/examples/Grow.tsx +17 -0
- package/dist/mdx/preview-react/text-input/examples/HiddenLabel.tsx +20 -0
- package/dist/mdx/preview-react/text-input/examples/LabelPositionHorizontal.tsx +17 -0
- package/dist/mdx/preview-react/text-input/examples/LabelPositionVertical.tsx +17 -0
- package/dist/mdx/preview-react/text-input/examples/LoginForm.tsx +105 -0
- package/dist/mdx/preview-react/text-input/examples/Password.tsx +17 -0
- package/dist/mdx/preview-react/text-input/examples/Placeholder.tsx +17 -0
- package/dist/mdx/preview-react/text-input/examples/RefForwarding.tsx +28 -0
- package/dist/mdx/preview-react/text-input/examples/Required.tsx +17 -0
- package/dist/mdx/preview-react/text-input/examples/ThemedAlert.tsx +46 -0
- package/dist/mdx/preview-react/text-input/examples/ThemedError.tsx +37 -0
- package/dist/mdx/react/button/button/Button.mdx +27 -2
- package/dist/mdx/react/button/button/examples/Primary.tsx +10 -1
- package/dist/mdx/react/button/button/examples/PrimaryInverse.tsx +14 -0
- package/dist/mdx/react/button/button/examples/Secondary.tsx +10 -1
- package/dist/mdx/react/button/button/examples/SecondaryInverse.tsx +14 -0
- package/dist/mdx/react/button/button/examples/Tertiary.tsx +10 -1
- package/dist/mdx/react/button/button/examples/TertiaryInverse.tsx +14 -0
- package/dist/mdx/react/tabs/Tabs.mdx +31 -5
- package/dist/mdx/react/tabs/examples/DisabledTab.tsx +1 -1
- package/dist/mdx/react/tabs/examples/DynamicTabs.tsx +41 -13
- package/dist/mdx/react/tabs/examples/HoistedModel.tsx +4 -4
- package/dist/mdx/react/tabs/examples/Icons.tsx +36 -0
- package/dist/mdx/react/tabs/examples/{NamedKeys.tsx → NamedTabs.tsx} +0 -0
- package/dist/mdx/react/tabs/examples/OverflowTabs.tsx +58 -0
- package/dist/mdx/react/tabs/examples/SinglePanel.tsx +1 -1
- package/dist/mdx/react/text-area/TextArea.mdx +1 -1
- 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',
|
|
9
|
-
{tab: 'Tab 2',
|
|
10
|
-
{tab: '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
|
-
|
|
15
|
+
shouldSelect: ({data}) => data.id !== 'last',
|
|
15
16
|
});
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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.
|
|
29
|
-
name={item.
|
|
56
|
+
key={item.id}
|
|
57
|
+
name={item.id}
|
|
30
58
|
index={index}
|
|
31
|
-
onKeyDown={e => onKeyDown(e, item.
|
|
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}`,
|
|
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.
|
|
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
|
-
|
|
10
|
-
console.log('
|
|
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.
|
|
30
|
+
model.events.select({id: 'third'});
|
|
31
31
|
}}
|
|
32
32
|
>
|
|
33
|
-
|
|
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
|
+
};
|
|
File without changes
|
|
@@ -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
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workday/canvas-kit-docs",
|
|
3
|
-
"version": "5.
|
|
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.
|
|
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": "
|
|
60
|
+
"gitHead": "6a7c92ab26c236a362790dceab7a2f10d84fe9ae"
|
|
61
61
|
}
|