@workday/canvas-kit-docs 8.5.2 → 8.5.4

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.
@@ -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;AAQ7E,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAC;AAE5C,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,gBAkDtD,CAAC;AA8DF,eAAO,MAAM,MAAM,aAAc,aAAa,kDAM7C,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,gBA+ChB,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
- return (React.createElement(Dialog, { model: model },
92
- React.createElement(React.Fragment, null,
93
- React.createElement(Dialog.Target, { as: ButtonHyperLink, className: "token symbol", style: {
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
- React.createElement(Dialog.Popper, null,
101
- React.createElement(Dialog.Card, { maxHeight: "50vh", maxWidth: "90vh" },
102
- React.createElement(Dialog.CloseIcon, null),
103
- React.createElement(Dialog.Heading, null, value.name),
104
- React.createElement(Dialog.Body, null,
105
- React.createElement(RenderContext.Provider, { value: "table" },
106
- React.createElement(IndentLevelContext.Provider, { value: 0 }, symbol ? (React.createElement(SymbolDoc, { name: value.name, headingStart: 3, hideHeading: true })) : (React.createElement(React.Fragment, null,
107
- React.createElement("p", null, "Basic type information:"),
108
- React.createElement("pre", null,
109
- React.createElement("code", null, value.value)))))))))));
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
- return React.createElement("div", null, "Not Found");
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 Found");
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
- var doc = React.useState(function () {
165
- return findDoc(criteria);
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 children = getSymbolDocChildren(doc, meta);
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
- return (React.createElement(StyledSymbolDoc, __assign({}, elemProps),
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
  };
@@ -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
- <Dialog model={model}>
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
- <Dialog.Popper>
108
- <Dialog.Card maxHeight="50vh" maxWidth="90vh">
109
- <Dialog.CloseIcon />
110
- <Dialog.Heading>{value.name}</Dialog.Heading>
111
- <Dialog.Body>
112
- <RenderContext.Provider value="table">
113
- <IndentLevelContext.Provider value={0}>
114
- {symbol ? (
115
- <SymbolDoc name={value.name} headingStart={3} hideHeading />
116
- ) : (
117
- <>
118
- <p>Basic type information:</p>
119
- <pre>
120
- <code>{value.value}</code>
121
- </pre>
122
- </>
123
- )}
124
- </IndentLevelContext.Provider>
125
- </RenderContext.Provider>
126
- </Dialog.Body>
127
- </Dialog.Card>
128
- </Dialog.Popper>
129
- </Dialog>
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
- return <div>Not Found</div>;
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 Found</div>;
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
- const [doc] = React.useState(() => {
195
- return findDoc(criteria);
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
- return (
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.2",
3
+ "version": "8.5.4",
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.2",
48
- "@workday/canvas-kit-preview-react": "^8.5.2",
49
- "@workday/canvas-kit-react": "^8.5.2",
47
+ "@workday/canvas-kit-labs-react": "^8.5.4",
48
+ "@workday/canvas-kit-preview-react": "^8.5.4",
49
+ "@workday/canvas-kit-react": "^8.5.4",
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": "c30236eca6db540b0c7bd0809b40d98ea5a0f658"
60
+ "gitHead": "b21ecde5c0a16627550283dea528a3371107a513"
61
61
  }