@workday/canvas-kit-docs 8.5.2 → 8.5.3
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/es6/lib/widgetUtils.d.ts.map +1 -1
- package/dist/es6/lib/widgetUtils.js +78 -22
- package/lib/widgetUtils.tsx +150 -34
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgetUtils.d.ts","sourceRoot":"","sources":["../../../lib/widgetUtils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAkB,UAAU,EAAC,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"widgetUtils.d.ts","sourceRoot":"","sources":["../../../lib/widgetUtils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAkB,UAAU,EAAC,MAAM,kCAAkC,CAAC;AAS7E,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAC;AAc5C,yFAAyF;AACzF,eAAO,MAAM,aAAa,mCAAmD,CAAC;AAC9E;;;GAGG;AACH,eAAO,MAAM,mBAAmB,uBAAyB,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,kBAAkB,uBAAyB,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,UAEnC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,UAEvC;AAED,UAAU,YAAY;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AACD;;;GAGG;AACH,eAAO,MAAM,OAAO,iFAOlB,CAAC;AAEH,wBAAgB,oBAAoB,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,oBAiB1E;AAID,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC;CAC1B;AAED,eAAO,MAAM,YAAY,cAAa,iBAAiB,gBAkItD,CAAC;AAsEF,eAAO,MAAM,MAAM,aAAc,aAAa,kDAK7C,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,UAAW,aAAa,gBAI/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,UAAW,aAAa,uBAIrD,CAAC;AAEF,MAAM,WAAW,cAAe,SAAQ,aAAa,EAAE,UAAU;IAC/D;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,4GASnB,cAAc,gBAsDhB,CAAC"}
|
|
@@ -30,10 +30,19 @@ import styled from '@emotion/styled';
|
|
|
30
30
|
import { createComponent } from '@workday/canvas-kit-react/common';
|
|
31
31
|
import { useDialogModel, Dialog } from '@workday/canvas-kit-react/dialog';
|
|
32
32
|
import { colors, space, type } from '@workday/canvas-kit-react/tokens';
|
|
33
|
+
import { Breadcrumbs } from '@workday/canvas-kit-react/breadcrumbs';
|
|
33
34
|
import { MDX, MdxJSToJSX } from './MDXElements';
|
|
34
35
|
import { Hyperlink } from '@workday/canvas-kit-react/button';
|
|
35
36
|
import { docs } from './docs';
|
|
36
37
|
import { Value } from './Value';
|
|
38
|
+
/**
|
|
39
|
+
* This context allows us to keep track if we're within a nested stack of dialog
|
|
40
|
+
*/
|
|
41
|
+
var NestedContext = React.createContext(false);
|
|
42
|
+
/**
|
|
43
|
+
* Context to help keep track of breadcrumbs and update them
|
|
44
|
+
*/
|
|
45
|
+
var SymbolDocBreadcrumbsContext = React.createContext(undefined);
|
|
37
46
|
/** React context to track the current rendering context to avoid tables inside tables */
|
|
38
47
|
export var RenderContext = React.createContext('table');
|
|
39
48
|
/**
|
|
@@ -83,30 +92,67 @@ var ButtonHyperLink = Hyperlink.as('button');
|
|
|
83
92
|
export var SymbolDialog = function (_a) {
|
|
84
93
|
var value = _a.value;
|
|
85
94
|
var _b = React.useState(undefined), symbol = _b[0], setSymbol = _b[1];
|
|
95
|
+
var _c = React.useContext(SymbolDocBreadcrumbsContext), breadcrumbsList = _c.breadcrumbsList, updateBreadcrumbs = _c.updateBreadcrumbs;
|
|
96
|
+
var nestedContext = React.useContext(NestedContext);
|
|
86
97
|
var model = useDialogModel({
|
|
87
98
|
onShow: function () {
|
|
88
99
|
setSymbol(docs.find(function (d) { return value.name === d.name; }) || undefined);
|
|
89
100
|
},
|
|
101
|
+
onHide: function () {
|
|
102
|
+
// Reset breadcrumbs when the dialog is closed
|
|
103
|
+
updateBreadcrumbs([]);
|
|
104
|
+
},
|
|
90
105
|
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
106
|
+
var handleTargetClick = function (e) {
|
|
107
|
+
e.preventDefault();
|
|
108
|
+
updateBreadcrumbs(breadcrumbsList.concat(value.name));
|
|
109
|
+
};
|
|
110
|
+
var handleBreadcrumbClick = function (e, index) {
|
|
111
|
+
e.preventDefault();
|
|
112
|
+
if (e.currentTarget.textContent &&
|
|
113
|
+
breadcrumbsList.length &&
|
|
114
|
+
breadcrumbsList.indexOf(e.currentTarget.textContent) > -1) {
|
|
115
|
+
// Slice breadcrumbs list up to but not including the current item clicked
|
|
116
|
+
updateBreadcrumbs(breadcrumbsList.slice(0, index + 1));
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
// If we're inside a nested context, we render a Hyperlink. This button will update the dialog instead of rendering a new one.
|
|
120
|
+
if (nestedContext) {
|
|
121
|
+
return (React.createElement(ButtonHyperLink, { style: {
|
|
122
|
+
border: 'none',
|
|
123
|
+
background: 'transparent',
|
|
124
|
+
fontSize: 'inherit',
|
|
125
|
+
fontFamily: 'inherit',
|
|
126
|
+
}, onClick: handleTargetClick }, value.displayName || value.name));
|
|
127
|
+
}
|
|
128
|
+
return (React.createElement(NestedContext.Provider, { value: true },
|
|
129
|
+
React.createElement(Dialog, { model: model },
|
|
130
|
+
React.createElement(Dialog.Target, { as: ButtonHyperLink, className: "token symbol", onClick: handleTargetClick, style: {
|
|
94
131
|
border: 'none',
|
|
95
132
|
background: 'transparent',
|
|
96
133
|
fontSize: 'inherit',
|
|
97
134
|
fontFamily: 'inherit',
|
|
98
135
|
}, "aria-haspopup": "true" }, value.displayName || value.name),
|
|
99
|
-
renderTypeParameters(value.typeParameters)
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
React.createElement(
|
|
109
|
-
React.createElement(
|
|
136
|
+
renderTypeParameters(value.typeParameters),
|
|
137
|
+
React.createElement(Dialog.Popper, null,
|
|
138
|
+
React.createElement(Dialog.Card, { maxHeight: "50vh", maxWidth: "90vh", minWidth: '600px' },
|
|
139
|
+
React.createElement(Dialog.CloseIcon, null),
|
|
140
|
+
React.createElement(Dialog.Heading, null,
|
|
141
|
+
value.name,
|
|
142
|
+
" "),
|
|
143
|
+
breadcrumbsList.length > 1 && (React.createElement(Breadcrumbs, { "aria-label": "Breadcrumbs" },
|
|
144
|
+
React.createElement(Breadcrumbs.List, { paddingX: "xxs" }, breadcrumbsList.map(function (item, index) {
|
|
145
|
+
return (React.createElement(React.Fragment, null, item === breadcrumbsList[breadcrumbsList.length - 1] ? (React.createElement(Breadcrumbs.CurrentItem, { key: index }, item)) : (React.createElement(Breadcrumbs.Item, { key: index },
|
|
146
|
+
React.createElement(Breadcrumbs.Link, { onClick: function (e) { return handleBreadcrumbClick(e, index); }, href: '#' }, item)))));
|
|
147
|
+
})))),
|
|
148
|
+
React.createElement(Dialog.Body, null,
|
|
149
|
+
React.createElement(RenderContext.Provider, { value: "table" },
|
|
150
|
+
React.createElement(IndentLevelContext.Provider, { value: 0 }, symbol ? (React.createElement(SymbolDoc, { name: breadcrumbsList.length >= 1
|
|
151
|
+
? breadcrumbsList[breadcrumbsList.length - 1]
|
|
152
|
+
: value.name, headingStart: 3, hideHeading: true })) : (React.createElement(React.Fragment, null,
|
|
153
|
+
React.createElement("p", null, "Basic type information:"),
|
|
154
|
+
React.createElement("pre", null,
|
|
155
|
+
React.createElement("code", null, value.name))))))))))));
|
|
110
156
|
};
|
|
111
157
|
function createColor(color) {
|
|
112
158
|
return {
|
|
@@ -141,14 +187,18 @@ var StyledSymbolDoc = styled('div')({
|
|
|
141
187
|
},
|
|
142
188
|
},
|
|
143
189
|
});
|
|
144
|
-
function getSymbolDocChildren(doc, meta) {
|
|
190
|
+
function getSymbolDocChildren(doc, meta, name) {
|
|
145
191
|
if (!doc) {
|
|
146
|
-
|
|
192
|
+
// We're within a symbol doc context, but there's no information, so we still want to render the basic type information
|
|
193
|
+
return (React.createElement(React.Fragment, null,
|
|
194
|
+
React.createElement("p", null, "Basic type information:"),
|
|
195
|
+
React.createElement("pre", null,
|
|
196
|
+
React.createElement("code", null, name))));
|
|
147
197
|
}
|
|
148
198
|
if (doc && doc.type) {
|
|
149
199
|
return React.createElement(Value, { value: doc.type, doc: doc, meta: meta });
|
|
150
200
|
}
|
|
151
|
-
return React.createElement("div", null, "Not
|
|
201
|
+
return React.createElement("div", null, "Not found");
|
|
152
202
|
}
|
|
153
203
|
function findDoc(_a) {
|
|
154
204
|
var name = _a.name, fileName = _a.fileName;
|
|
@@ -161,9 +211,8 @@ function findDoc(_a) {
|
|
|
161
211
|
return doc;
|
|
162
212
|
}
|
|
163
213
|
export var useDoc = function (criteria) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
})[0];
|
|
214
|
+
// Listen to criteria.name and criteria.fileName so that we can re-fetch docs in the dialog
|
|
215
|
+
var doc = React.useMemo(function () { return findDoc(criteria); }, [criteria.name, criteria.fileName || '']);
|
|
167
216
|
return doc;
|
|
168
217
|
};
|
|
169
218
|
/**
|
|
@@ -188,7 +237,8 @@ export var SymbolDescription = function (props) {
|
|
|
188
237
|
export var SymbolDoc = function (_a) {
|
|
189
238
|
var name = _a.name, fileName = _a.fileName, _b = _a.headingStart, headingStart = _b === void 0 ? 3 : _b, _c = _a.hideDescription, hideDescription = _c === void 0 ? false : _c, _d = _a.hideHeading, hideHeading = _d === void 0 ? false : _d, descriptionOverride = _a.descriptionOverride, meta = _a.meta, elemProps = __rest(_a, ["name", "fileName", "headingStart", "hideDescription", "hideHeading", "descriptionOverride", "meta"]);
|
|
190
239
|
var doc = useDoc({ name: name, fileName: fileName });
|
|
191
|
-
var
|
|
240
|
+
var symbolDocBreadcrumb = React.useContext(SymbolDocBreadcrumbsContext);
|
|
241
|
+
var children = getSymbolDocChildren(doc, meta, name);
|
|
192
242
|
var requiresCodeWrapper = [
|
|
193
243
|
'symbol',
|
|
194
244
|
'generic',
|
|
@@ -214,9 +264,15 @@ export var SymbolDoc = function (_a) {
|
|
|
214
264
|
'callExpression',
|
|
215
265
|
].includes((doc === null || doc === void 0 ? void 0 : doc.type.kind) || 'notFound');
|
|
216
266
|
var contents = requiresCodeWrapper ? (React.createElement("code", { style: { display: 'block' } }, children)) : (children);
|
|
217
|
-
|
|
267
|
+
var symbolDocContents = (React.createElement(StyledSymbolDoc, __assign({}, elemProps),
|
|
218
268
|
React.createElement(HeadingLevelContext.Provider, { value: headingStart },
|
|
219
269
|
!hideHeading && React.createElement(Heading, null, name),
|
|
220
270
|
!hideDescription && doc && (React.createElement(MdxJSToJSX, null, descriptionOverride || doc.description)),
|
|
221
271
|
contents)));
|
|
272
|
+
return symbolDocBreadcrumb === undefined ? (React.createElement(SymbolDocWrapper, null, symbolDocContents)) : (symbolDocContents);
|
|
273
|
+
};
|
|
274
|
+
var SymbolDocWrapper = function (_a) {
|
|
275
|
+
var children = _a.children;
|
|
276
|
+
var _b = React.useState([]), breadcrumbsList = _b[0], updateBreadcrumbs = _b[1];
|
|
277
|
+
return (React.createElement(SymbolDocBreadcrumbsContext.Provider, { value: { breadcrumbsList: breadcrumbsList, updateBreadcrumbs: updateBreadcrumbs } }, children));
|
|
222
278
|
};
|
package/lib/widgetUtils.tsx
CHANGED
|
@@ -4,6 +4,7 @@ import styled from '@emotion/styled';
|
|
|
4
4
|
import {createComponent, StyledType} from '@workday/canvas-kit-react/common';
|
|
5
5
|
import {useDialogModel, Dialog} from '@workday/canvas-kit-react/dialog';
|
|
6
6
|
import {CanvasColor, colors, space, type} from '@workday/canvas-kit-react/tokens';
|
|
7
|
+
import {Breadcrumbs} from '@workday/canvas-kit-react/breadcrumbs';
|
|
7
8
|
|
|
8
9
|
import {MDX, MdxJSToJSX} from './MDXElements';
|
|
9
10
|
import {Hyperlink} from '@workday/canvas-kit-react/button';
|
|
@@ -11,6 +12,18 @@ import {docs} from './docs';
|
|
|
11
12
|
import {Value} from './Value';
|
|
12
13
|
import * as types from '../docgen/docTypes';
|
|
13
14
|
|
|
15
|
+
/**
|
|
16
|
+
* This context allows us to keep track if we're within a nested stack of dialog
|
|
17
|
+
*/
|
|
18
|
+
const NestedContext = React.createContext(false);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Context to help keep track of breadcrumbs and update them
|
|
22
|
+
*/
|
|
23
|
+
const SymbolDocBreadcrumbsContext = React.createContext<
|
|
24
|
+
{breadcrumbsList: string[]; updateBreadcrumbs: (value: string[]) => void} | undefined
|
|
25
|
+
>(undefined);
|
|
26
|
+
|
|
14
27
|
/** React context to track the current rendering context to avoid tables inside tables */
|
|
15
28
|
export const RenderContext = React.createContext<'table' | 'inline'>('table');
|
|
16
29
|
/**
|
|
@@ -80,18 +93,62 @@ export interface SymbolDialogProps {
|
|
|
80
93
|
|
|
81
94
|
export const SymbolDialog = ({value}: SymbolDialogProps) => {
|
|
82
95
|
const [symbol, setSymbol] = React.useState<types.ExportedSymbol | undefined>(undefined);
|
|
96
|
+
const {breadcrumbsList, updateBreadcrumbs} = React.useContext(SymbolDocBreadcrumbsContext)!;
|
|
97
|
+
|
|
98
|
+
const nestedContext = React.useContext(NestedContext);
|
|
99
|
+
|
|
83
100
|
const model = useDialogModel({
|
|
84
101
|
onShow() {
|
|
85
102
|
setSymbol(docs.find(d => value.name === d.name) || undefined);
|
|
86
103
|
},
|
|
104
|
+
onHide() {
|
|
105
|
+
// Reset breadcrumbs when the dialog is closed
|
|
106
|
+
updateBreadcrumbs([]);
|
|
107
|
+
},
|
|
87
108
|
});
|
|
88
109
|
|
|
110
|
+
const handleTargetClick = (e: React.MouseEvent) => {
|
|
111
|
+
e.preventDefault();
|
|
112
|
+
|
|
113
|
+
updateBreadcrumbs(breadcrumbsList.concat(value.name));
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
const handleBreadcrumbClick = (e: React.MouseEvent, index: number) => {
|
|
117
|
+
e.preventDefault();
|
|
118
|
+
if (
|
|
119
|
+
e.currentTarget.textContent &&
|
|
120
|
+
breadcrumbsList.length &&
|
|
121
|
+
breadcrumbsList.indexOf(e.currentTarget.textContent) > -1
|
|
122
|
+
) {
|
|
123
|
+
// Slice breadcrumbs list up to but not including the current item clicked
|
|
124
|
+
updateBreadcrumbs(breadcrumbsList.slice(0, index + 1));
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
// If we're inside a nested context, we render a Hyperlink. This button will update the dialog instead of rendering a new one.
|
|
129
|
+
if (nestedContext) {
|
|
130
|
+
return (
|
|
131
|
+
<ButtonHyperLink
|
|
132
|
+
style={{
|
|
133
|
+
border: 'none',
|
|
134
|
+
background: 'transparent',
|
|
135
|
+
fontSize: 'inherit',
|
|
136
|
+
fontFamily: 'inherit',
|
|
137
|
+
}}
|
|
138
|
+
onClick={handleTargetClick}
|
|
139
|
+
>
|
|
140
|
+
{value.displayName || value.name}
|
|
141
|
+
</ButtonHyperLink>
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
|
|
89
145
|
return (
|
|
90
|
-
<
|
|
91
|
-
|
|
146
|
+
<NestedContext.Provider value={true}>
|
|
147
|
+
<Dialog model={model}>
|
|
92
148
|
<Dialog.Target
|
|
93
149
|
as={ButtonHyperLink}
|
|
94
150
|
className="token symbol"
|
|
151
|
+
onClick={handleTargetClick}
|
|
95
152
|
style={{
|
|
96
153
|
border: 'none',
|
|
97
154
|
background: 'transparent',
|
|
@@ -102,31 +159,67 @@ export const SymbolDialog = ({value}: SymbolDialogProps) => {
|
|
|
102
159
|
>
|
|
103
160
|
{value.displayName || value.name}
|
|
104
161
|
</Dialog.Target>
|
|
162
|
+
|
|
105
163
|
{renderTypeParameters(value.typeParameters)}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
<
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
164
|
+
|
|
165
|
+
<Dialog.Popper>
|
|
166
|
+
<Dialog.Card maxHeight="50vh" maxWidth="90vh" minWidth={'600px'}>
|
|
167
|
+
<Dialog.CloseIcon />
|
|
168
|
+
|
|
169
|
+
<Dialog.Heading>{value.name} </Dialog.Heading>
|
|
170
|
+
{breadcrumbsList.length > 1 && (
|
|
171
|
+
<Breadcrumbs aria-label="Breadcrumbs">
|
|
172
|
+
<Breadcrumbs.List paddingX="xxs">
|
|
173
|
+
{breadcrumbsList.map((item, index) => {
|
|
174
|
+
return (
|
|
175
|
+
<>
|
|
176
|
+
{item === breadcrumbsList[breadcrumbsList.length - 1] ? (
|
|
177
|
+
<Breadcrumbs.CurrentItem key={index}>{item}</Breadcrumbs.CurrentItem>
|
|
178
|
+
) : (
|
|
179
|
+
<Breadcrumbs.Item key={index}>
|
|
180
|
+
<Breadcrumbs.Link
|
|
181
|
+
onClick={e => handleBreadcrumbClick(e, index)}
|
|
182
|
+
href={'#'}
|
|
183
|
+
>
|
|
184
|
+
{item}
|
|
185
|
+
</Breadcrumbs.Link>
|
|
186
|
+
</Breadcrumbs.Item>
|
|
187
|
+
)}
|
|
188
|
+
</>
|
|
189
|
+
);
|
|
190
|
+
})}
|
|
191
|
+
</Breadcrumbs.List>
|
|
192
|
+
</Breadcrumbs>
|
|
193
|
+
)}
|
|
194
|
+
|
|
195
|
+
<Dialog.Body>
|
|
196
|
+
<RenderContext.Provider value="table">
|
|
197
|
+
<IndentLevelContext.Provider value={0}>
|
|
198
|
+
{symbol ? (
|
|
199
|
+
<SymbolDoc
|
|
200
|
+
name={
|
|
201
|
+
breadcrumbsList.length >= 1
|
|
202
|
+
? breadcrumbsList[breadcrumbsList.length - 1]
|
|
203
|
+
: value.name
|
|
204
|
+
}
|
|
205
|
+
headingStart={3}
|
|
206
|
+
hideHeading
|
|
207
|
+
/>
|
|
208
|
+
) : (
|
|
209
|
+
<>
|
|
210
|
+
<p>Basic type information:</p>
|
|
211
|
+
<pre>
|
|
212
|
+
<code>{value.name}</code>
|
|
213
|
+
</pre>
|
|
214
|
+
</>
|
|
215
|
+
)}
|
|
216
|
+
</IndentLevelContext.Provider>
|
|
217
|
+
</RenderContext.Provider>
|
|
218
|
+
</Dialog.Body>
|
|
219
|
+
</Dialog.Card>
|
|
220
|
+
</Dialog.Popper>
|
|
221
|
+
</Dialog>
|
|
222
|
+
</NestedContext.Provider>
|
|
130
223
|
);
|
|
131
224
|
};
|
|
132
225
|
|
|
@@ -166,16 +259,24 @@ const StyledSymbolDoc = styled('div')({
|
|
|
166
259
|
},
|
|
167
260
|
});
|
|
168
261
|
|
|
169
|
-
function getSymbolDocChildren(doc?: types.ExportedSymbol, meta?: any) {
|
|
262
|
+
function getSymbolDocChildren(doc?: types.ExportedSymbol, meta?: any, name?: string) {
|
|
170
263
|
if (!doc) {
|
|
171
|
-
|
|
264
|
+
// We're within a symbol doc context, but there's no information, so we still want to render the basic type information
|
|
265
|
+
return (
|
|
266
|
+
<>
|
|
267
|
+
<p>Basic type information:</p>
|
|
268
|
+
<pre>
|
|
269
|
+
<code>{name}</code>
|
|
270
|
+
</pre>
|
|
271
|
+
</>
|
|
272
|
+
);
|
|
172
273
|
}
|
|
173
274
|
|
|
174
275
|
if (doc && doc.type) {
|
|
175
276
|
return <Value value={doc.type} doc={doc} meta={meta} />;
|
|
176
277
|
}
|
|
177
278
|
|
|
178
|
-
return <div>Not
|
|
279
|
+
return <div>Not found</div>;
|
|
179
280
|
}
|
|
180
281
|
|
|
181
282
|
function findDoc({name, fileName}: ValueDocProps): types.ExportedSymbol<types.Value> | undefined {
|
|
@@ -191,9 +292,8 @@ function findDoc({name, fileName}: ValueDocProps): types.ExportedSymbol<types.Va
|
|
|
191
292
|
}
|
|
192
293
|
|
|
193
294
|
export const useDoc = (criteria: ValueDocProps) => {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
});
|
|
295
|
+
// Listen to criteria.name and criteria.fileName so that we can re-fetch docs in the dialog
|
|
296
|
+
const doc = React.useMemo(() => findDoc(criteria), [criteria.name, criteria.fileName || '']);
|
|
197
297
|
|
|
198
298
|
return doc;
|
|
199
299
|
};
|
|
@@ -264,8 +364,9 @@ export const SymbolDoc = ({
|
|
|
264
364
|
...elemProps
|
|
265
365
|
}: SymbolDocProps) => {
|
|
266
366
|
const doc = useDoc({name, fileName});
|
|
367
|
+
const symbolDocBreadcrumb = React.useContext(SymbolDocBreadcrumbsContext);
|
|
267
368
|
|
|
268
|
-
const children = getSymbolDocChildren(doc, meta);
|
|
369
|
+
const children = getSymbolDocChildren(doc, meta, name);
|
|
269
370
|
|
|
270
371
|
const requiresCodeWrapper = [
|
|
271
372
|
'symbol',
|
|
@@ -298,7 +399,7 @@ export const SymbolDoc = ({
|
|
|
298
399
|
children
|
|
299
400
|
);
|
|
300
401
|
|
|
301
|
-
|
|
402
|
+
const symbolDocContents = (
|
|
302
403
|
<StyledSymbolDoc {...elemProps}>
|
|
303
404
|
<HeadingLevelContext.Provider value={headingStart}>
|
|
304
405
|
{!hideHeading && <Heading>{name}</Heading>}
|
|
@@ -309,4 +410,19 @@ export const SymbolDoc = ({
|
|
|
309
410
|
</HeadingLevelContext.Provider>
|
|
310
411
|
</StyledSymbolDoc>
|
|
311
412
|
);
|
|
413
|
+
|
|
414
|
+
return symbolDocBreadcrumb === undefined ? (
|
|
415
|
+
<SymbolDocWrapper>{symbolDocContents}</SymbolDocWrapper>
|
|
416
|
+
) : (
|
|
417
|
+
symbolDocContents
|
|
418
|
+
);
|
|
419
|
+
};
|
|
420
|
+
|
|
421
|
+
const SymbolDocWrapper = ({children}: any) => {
|
|
422
|
+
const [breadcrumbsList, updateBreadcrumbs] = React.useState<string[]>([]);
|
|
423
|
+
return (
|
|
424
|
+
<SymbolDocBreadcrumbsContext.Provider value={{breadcrumbsList, updateBreadcrumbs}}>
|
|
425
|
+
{children}
|
|
426
|
+
</SymbolDocBreadcrumbsContext.Provider>
|
|
427
|
+
);
|
|
312
428
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workday/canvas-kit-docs",
|
|
3
|
-
"version": "8.5.
|
|
3
|
+
"version": "8.5.3",
|
|
4
4
|
"description": "Documentation components of Canvas Kit components",
|
|
5
5
|
"author": "Workday, Inc. (https://www.workday.com)",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@emotion/styled": "^11.6.0",
|
|
46
46
|
"@storybook/csf": "0.0.1",
|
|
47
|
-
"@workday/canvas-kit-labs-react": "^8.5.
|
|
48
|
-
"@workday/canvas-kit-preview-react": "^8.5.
|
|
49
|
-
"@workday/canvas-kit-react": "^8.5.
|
|
47
|
+
"@workday/canvas-kit-labs-react": "^8.5.3",
|
|
48
|
+
"@workday/canvas-kit-preview-react": "^8.5.3",
|
|
49
|
+
"@workday/canvas-kit-react": "^8.5.3",
|
|
50
50
|
"@workday/canvas-system-icons-web": "^3.0.0",
|
|
51
51
|
"markdown-to-jsx": "^6.10.3",
|
|
52
52
|
"ts-node": "^10.9.1"
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"mkdirp": "^1.0.3",
|
|
58
58
|
"typescript": "4.2"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "11d4414baa4badc5930342698647aa84fd9d156b"
|
|
61
61
|
}
|