@cypress-design/react-docmenu 0.5.4 → 0.6.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.
@@ -2,5 +2,5 @@ $ yarn build:module && yarn build:types
2
2
  $ rollup -c ./rollup.config.mjs
3
3
  
4
4
  ./index.ts → ./dist/index.umd.js, ./dist/index.es.mjs...
5
- created ./dist/index.umd.js, ./dist/index.es.mjs in 11.7s
5
+ created ./dist/index.umd.js, ./dist/index.es.mjs in 16.1s
6
6
  $ tsc --project ./tsconfig.build.json
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @cypress-design/react-docmenu
2
2
 
3
+ ## 0.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`bb4e507`](https://github.com/cypress-io/cypress-design/commit/bb4e507ca14e57e3400f0444446e1b3a0eb598ad) Thanks [@elevatebart](https://github.com/elevatebart)! - add a test and the names of components in dev tools
8
+
9
+ ### Patch Changes
10
+
11
+ - [#387](https://github.com/cypress-io/cypress-design/pull/387) [`05b67c5`](https://github.com/cypress-io/cypress-design/commit/05b67c5389df1c0619d2f01e2b36fb5bd6bb30b9) Thanks [@elevatebart](https://github.com/elevatebart)! - when activePath changes, expand sections that contain the newly activated element
12
+
3
13
  ## 0.5.4
4
14
 
5
15
  ### Patch Changes
@@ -169,7 +169,50 @@ describe('<DocMenu/>', () => {
169
169
  </div>,
170
170
  )
171
171
  }
172
- assertions(mountStory)
172
+
173
+ assertions(mountStory, () => {
174
+ const SUT = () => {
175
+ const [pathState, setPathState] = React.useState<string>('/foo')
176
+ return (
177
+ <>
178
+ <button onClick={() => setPathState('/kephren')}>
179
+ Set path to /kephren
180
+ </button>
181
+ <DocMenu
182
+ items={[
183
+ {
184
+ label: 'Section 1',
185
+ items: [
186
+ { href: '/foo', label: 'Foo' },
187
+ {
188
+ label: 'Subsection',
189
+ items: [{ href: '/sub', label: 'Sub' }],
190
+ },
191
+ ],
192
+ },
193
+ {
194
+ label: 'Pyramid',
195
+ items: [{ href: '/kephren', label: 'Kephren' }],
196
+ collapsed: true,
197
+ },
198
+ ]}
199
+ LinkComponent={({ href, children, style, ...props }) => (
200
+ <button
201
+ onClick={() => setPathState(href)}
202
+ {...props}
203
+ style={{ ...style, textAlign: 'left' }}
204
+ >
205
+ {children}
206
+ </button>
207
+ )}
208
+ activePath={pathState}
209
+ collapsible
210
+ />
211
+ </>
212
+ )
213
+ }
214
+ mount(<SUT />)
215
+ })
173
216
  })
174
217
 
175
218
  // pseudo text
package/_DocGroup.tsx CHANGED
@@ -63,6 +63,12 @@ export const DocGroup = React.forwardRef<DocGroupForward, DocGroupProps>(
63
63
  React.useState<NodeJS.Timeout>()
64
64
  const $groupElements = React.useRef<DocGroupElementsForward>(null)
65
65
 
66
+ React.useEffect(() => {
67
+ if (hasActiveItemRecursivelyMemo && !open) {
68
+ setOpen(true)
69
+ }
70
+ }, [hasActiveItemRecursivelyMemo, activePath, open])
71
+
66
72
  const toggleMenu = (localOpen: boolean) => {
67
73
  if (!collapsible || markerIsMoving) return
68
74
  setMarkerIsMoving(true)
@@ -197,6 +203,8 @@ export const DocGroup = React.forwardRef<DocGroupForward, DocGroupProps>(
197
203
  },
198
204
  )
199
205
 
206
+ DocGroup.displayName = 'DocMenuDocGroup'
207
+
200
208
  export interface DocGroupElementsProps
201
209
  extends React.HTMLAttributes<HTMLUListElement> {
202
210
  items: (NavGroup | NavItemLink)[]
@@ -312,3 +320,5 @@ export const DocGroupElements = React.forwardRef<
312
320
  )
313
321
  },
314
322
  )
323
+
324
+ DocGroupElements.displayName = 'DocMenuDocGroupElements'
package/_DocLink.tsx CHANGED
@@ -30,22 +30,16 @@ export interface DocLinkForward {
30
30
  }
31
31
 
32
32
  export const DocLink = React.forwardRef<DocLinkForward, DocLinkProps>(
33
- (
34
- {
35
- item: { label, ...itemRest },
36
- depth,
37
- markerIsMoving,
38
- context,
39
- onActive,
40
- LinkComponent,
41
- },
42
- ref,
43
- ) => {
33
+ ({ item, depth, markerIsMoving, context, onActive, LinkComponent }, ref) => {
44
34
  const activeLIRef = React.useRef<HTMLLIElement>(null)
45
35
 
46
- const { collapsible, activePath } = context
36
+ const active = React.useMemo(
37
+ () => item.href === context.activePath,
38
+ [item.href, context.activePath],
39
+ )
47
40
 
48
- const active = itemRest.href === activePath
41
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
42
+ const { label, ...itemRest } = item
49
43
 
50
44
  const setActiveMarkerPosition = () => {
51
45
  if (active) {
@@ -86,15 +80,18 @@ export const DocLink = React.forwardRef<DocLinkForward, DocLinkProps>(
86
80
  'left-[6.5px] absolute top-[4px] bottom-[4px] w-[4px] z-10 rounded-full',
87
81
  {
88
82
  hidden: !markerIsMoving || !active,
89
- 'group-hover:block bg-gray-300': !active && collapsible,
83
+ 'group-hover:block bg-gray-300':
84
+ !active && context.collapsible,
90
85
  'bg-indigo-500 dark:bg-indigo-400': active && markerIsMoving,
91
86
  },
92
87
  )}
93
88
  />
94
89
  ) : null}
95
- {label}
90
+ {item.label}
96
91
  </LinkComponent>
97
92
  </li>
98
93
  )
99
94
  },
100
95
  )
96
+
97
+ DocLink.displayName = 'DocMenuDocLink'
@@ -1 +1 @@
1
- {"version":3,"file":"_DocGroup.d.ts","sourceRoot":"./","sources":["_DocGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,WAAW,EAEjB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAEL,KAAK,OAAO,EAEZ,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACjE,oBAAoB,EAAE,MAAM,IAAI,CAAA;IAChC,cAAc,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,uBAAuB,EAAE,MAAM,IAAI,CAAA;CACpC;AAcD,eAAO,MAAM,QAAQ,uFA4JpB,CAAA;AAED,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;IAC9C,KAAK,EAAE,CAAC,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAA;IACjC,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACjE,cAAc,EAAE,OAAO,CAAA;IACvB,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,iBAAiB,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,uBAAuB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD;AAED,eAAO,MAAM,gBAAgB,uGAkG5B,CAAA"}
1
+ {"version":3,"file":"_DocGroup.d.ts","sourceRoot":"./","sources":["_DocGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,WAAW,EAEjB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAEL,KAAK,OAAO,EAEZ,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACjE,oBAAoB,EAAE,MAAM,IAAI,CAAA;IAChC,cAAc,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,uBAAuB,EAAE,MAAM,IAAI,CAAA;CACpC;AAcD,eAAO,MAAM,QAAQ,uFAkKpB,CAAA;AAID,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;IAC9C,KAAK,EAAE,CAAC,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAA;IACjC,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACjE,cAAc,EAAE,OAAO,CAAA;IACvB,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,iBAAiB,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,uBAAuB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD;AAED,eAAO,MAAM,gBAAgB,uGAkG5B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"_DocLink.d.ts","sourceRoot":"./","sources":["_DocLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAE/D,MAAM,WAAW,OAAO;IACtB,iBAAiB,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAA;IACpD,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAC,aAAa,CAAA;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAC,CAAA;AAEF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,OAAO,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACzD,aAAa,EAAE,iBAAiB,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,uBAAuB,EAAE,MAAM,IAAI,CAAA;CACpC;AAED,eAAO,MAAM,OAAO,qFAoEnB,CAAA"}
1
+ {"version":3,"file":"_DocLink.d.ts","sourceRoot":"./","sources":["_DocLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAE/D,MAAM,WAAW,OAAO;IACtB,iBAAiB,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAA;IACpD,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAC,aAAa,CAAA;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAC,CAAA;AAEF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,OAAO,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACzD,aAAa,EAAE,iBAAiB,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,uBAAuB,EAAE,MAAM,IAAI,CAAA;CACpC;AAED,eAAO,MAAM,OAAO,qFA+DnB,CAAA"}
package/dist/index.es.mjs CHANGED
@@ -162,10 +162,11 @@ const classes = {
162
162
  };
163
163
 
164
164
  var DocLink = React.forwardRef(function (_a, ref) {
165
- var _b = _a.item, label = _b.label, itemRest = __rest$1(_b, ["label"]), depth = _a.depth, markerIsMoving = _a.markerIsMoving, context = _a.context, onActive = _a.onActive, LinkComponent = _a.LinkComponent;
165
+ var item = _a.item, depth = _a.depth, markerIsMoving = _a.markerIsMoving, context = _a.context, onActive = _a.onActive, LinkComponent = _a.LinkComponent;
166
166
  var activeLIRef = React.useRef(null);
167
- var collapsible = context.collapsible, activePath = context.activePath;
168
- var active = itemRest.href === activePath;
167
+ var active = React.useMemo(function () { return item.href === context.activePath; }, [item.href, context.activePath]);
168
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
169
+ item.label; var itemRest = __rest$1(item, ["label"]);
169
170
  var setActiveMarkerPosition = function () {
170
171
  var _a;
171
172
  if (active) {
@@ -193,11 +194,12 @@ var DocLink = React.forwardRef(function (_a, ref) {
193
194
  } }),
194
195
  depth >= 0 ? (React.createElement("div", { className: clsx('left-[6.5px] absolute top-[4px] bottom-[4px] w-[4px] z-10 rounded-full', {
195
196
  hidden: !markerIsMoving || !active,
196
- 'group-hover:block bg-gray-300': !active && collapsible,
197
+ 'group-hover:block bg-gray-300': !active && context.collapsible,
197
198
  'bg-indigo-500 dark:bg-indigo-400': active && markerIsMoving,
198
199
  }) })) : null,
199
- label)));
200
+ item.label)));
200
201
  });
202
+ DocLink.displayName = 'DocMenuDocLink';
201
203
 
202
204
  var hasActiveItemRecursively = function (items, localActivePath) {
203
205
  return items.some(function (item) {
@@ -217,6 +219,11 @@ var DocGroup = React.forwardRef(function (_a, ref) {
217
219
  var _e = React.useState(!group.collapsed), open = _e[0], setOpen = _e[1];
218
220
  var _f = React.useState(), markerIsMovingTimeout = _f[0], setMarkerIsMovingTimeout = _f[1];
219
221
  var $groupElements = React.useRef(null);
222
+ React.useEffect(function () {
223
+ if (hasActiveItemRecursivelyMemo && !open) {
224
+ setOpen(true);
225
+ }
226
+ }, [hasActiveItemRecursivelyMemo, activePath, open]);
220
227
  var toggleMenu = function (localOpen) {
221
228
  if (!collapsible || markerIsMoving)
222
229
  return;
@@ -306,6 +313,7 @@ var DocGroup = React.forwardRef(function (_a, ref) {
306
313
  open && collapsible && depth === 0 ? (React.createElement("div", { className: classes.openListBorderLeft })) : null,
307
314
  React.createElement(DocGroupElements, { ref: $groupElements, className: "overflow-hidden", items: group.items, depth: depth, context: context, markerIsMoving: markerIsMoving, onActivePosition: setActivePosition, updateMarkerPosition: onUpdateMarkerPosition, LinkComponent: LinkComponent }))));
308
315
  });
316
+ DocGroup.displayName = 'DocMenuDocGroup';
309
317
  var DocGroupElements = React.forwardRef(function (_a, ref) {
310
318
  var items = _a.items, _b = _a.depth, depth = _b === void 0 ? 0 : _b, onActivePosition = _a.onActivePosition, updateMarkerPosition = _a.updateMarkerPosition, markerIsMoving = _a.markerIsMoving, LinkComponent = _a.LinkComponent, className = _a.className, context = _a.context, rest = __rest$1(_a, ["items", "depth", "onActivePosition", "updateMarkerPosition", "markerIsMoving", "LinkComponent", "className", "context"]);
311
319
  var $groups = React.useRef([]);
@@ -350,6 +358,7 @@ var DocGroupElements = React.forwardRef(function (_a, ref) {
350
358
  }, LinkComponent: LinkComponent }));
351
359
  })));
352
360
  });
361
+ DocGroupElements.displayName = 'DocMenuDocGroupElements';
353
362
 
354
363
  var DocMenu = function (_a) {
355
364
  var items = _a.items, _b = _a.activePath, activePath = _b === void 0 ? '<unknown>' : _b, _c = _a.collapsible, collapsible = _c === void 0 ? true : _c, _d = _a.LinkComponent, LinkComponent = _d === void 0 ? 'a' : _d, rest = __rest$1(_a, ["items", "activePath", "collapsible", "LinkComponent"]);