@cypress-design/react-docmenu 0.5.2 → 0.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +12 -0
- package/DocMenu.tsx +29 -29
- package/DocMenuReact.cy.tsx +10 -4
- package/_DocGroup.tsx +85 -84
- package/_DocLink.tsx +28 -13
- package/dist/DocMenu.d.ts.map +1 -1
- package/dist/_DocGroup.d.ts +6 -8
- package/dist/_DocGroup.d.ts.map +1 -1
- package/dist/_DocLink.d.ts +11 -5
- package/dist/_DocLink.d.ts.map +1 -1
- package/dist/index.es.mjs +87 -83
- package/dist/index.es.mjs.map +1 -1
- package/dist/index.umd.js +87 -82
- package/dist/index.umd.js.map +1 -1
- package/package.json +2 -2
- package/dist/markerIsMoving.d.ts +0 -6
- package/dist/markerIsMoving.d.ts.map +0 -1
- package/markerIsMoving.ts +0 -9
package/dist/index.umd.js
CHANGED
|
@@ -182,20 +182,16 @@ const classes = {
|
|
|
182
182
|
openListBorderLeft: 'absolute left-[8px] top-0 w-[1px] h-full bg-gray-100 dark:bg-gray-900',
|
|
183
183
|
};
|
|
184
184
|
|
|
185
|
-
var MarkerIsMovingContext = React.createContext({
|
|
186
|
-
setMarkerIsMoving: function () { },
|
|
187
|
-
markerIsMoving: false,
|
|
188
|
-
});
|
|
189
|
-
|
|
190
185
|
var DocLink = React__namespace.forwardRef(function (_a, ref) {
|
|
191
|
-
var
|
|
186
|
+
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;
|
|
192
187
|
var activeLIRef = React__namespace.useRef(null);
|
|
193
|
-
var
|
|
188
|
+
var collapsible = context.collapsible, activePath = context.activePath;
|
|
189
|
+
var active = itemRest.href === activePath;
|
|
194
190
|
var setActiveMarkerPosition = function () {
|
|
195
191
|
var _a;
|
|
196
192
|
if (active) {
|
|
197
193
|
var box = (_a = activeLIRef === null || activeLIRef === void 0 ? void 0 : activeLIRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
198
|
-
onActive
|
|
194
|
+
onActive({
|
|
199
195
|
top: (box === null || box === void 0 ? void 0 : box.top) || 0,
|
|
200
196
|
height: (box === null || box === void 0 ? void 0 : box.height) || 0,
|
|
201
197
|
});
|
|
@@ -208,44 +204,53 @@ var DocLink = React__namespace.forwardRef(function (_a, ref) {
|
|
|
208
204
|
setActiveMarkerPosition: setActiveMarkerPosition,
|
|
209
205
|
}); });
|
|
210
206
|
return (React__namespace.createElement("li", { ref: activeLIRef, className: "list-none p-0" },
|
|
211
|
-
React__namespace.createElement(LinkComponent, { className: clsx('group relative block w-full pl-[24px]', {
|
|
212
|
-
'text-indigo-500': active,
|
|
207
|
+
React__namespace.createElement(LinkComponent, __assign$1({}, itemRest, { className: clsx('group relative block w-full pl-[24px]', {
|
|
208
|
+
'text-indigo-500 dark:text-indigo-400': active,
|
|
213
209
|
'text-gray-700 dark:text-gray-500': !active,
|
|
214
210
|
'py-[8px] text-[16px] leading-[24px]': depth < 0,
|
|
215
211
|
'leading-[20px] text-[14px] py-[12px]': depth >= 0,
|
|
216
|
-
}),
|
|
212
|
+
}), style: {
|
|
217
213
|
paddingLeft: depth >= 0 ? "".concat(depth * 12 + 48, "px") : undefined,
|
|
218
|
-
} },
|
|
214
|
+
} }),
|
|
219
215
|
depth >= 0 ? (React__namespace.createElement("div", { className: clsx('left-[6.5px] absolute top-[4px] bottom-[4px] w-[4px] z-10 rounded-full', {
|
|
220
216
|
hidden: !markerIsMoving || !active,
|
|
221
217
|
'group-hover:block bg-gray-300': !active && collapsible,
|
|
222
|
-
'bg-indigo-500': active && markerIsMoving,
|
|
218
|
+
'bg-indigo-500 dark:bg-indigo-400': active && markerIsMoving,
|
|
223
219
|
}) })) : null,
|
|
224
|
-
|
|
220
|
+
label)));
|
|
225
221
|
});
|
|
226
222
|
|
|
223
|
+
var hasActiveItemRecursively = function (items, localActivePath) {
|
|
224
|
+
return items.some(function (item) {
|
|
225
|
+
if ('items' in item) {
|
|
226
|
+
return hasActiveItemRecursively(item.items, localActivePath);
|
|
227
|
+
}
|
|
228
|
+
return item.href === localActivePath;
|
|
229
|
+
});
|
|
230
|
+
};
|
|
227
231
|
var DocGroup = React__namespace.forwardRef(function (_a, ref) {
|
|
228
232
|
var _b;
|
|
229
|
-
var group = _a.group,
|
|
230
|
-
var
|
|
233
|
+
var group = _a.group, _c = _a.depth, depth = _c === void 0 ? 0 : _c, onActivePosition = _a.onActivePosition, markerIsMoving = _a.markerIsMoving, context = _a.context, updateMarkerPosition = _a.updateMarkerPosition, _d = _a.LinkComponent, LinkComponent = _d === void 0 ? 'a' : _d;
|
|
234
|
+
var setMarkerIsMoving = context.setMarkerIsMoving, activePath = context.activePath, collapsible = context.collapsible, hideMarker = context.hideMarker;
|
|
235
|
+
var hasActiveItemRecursivelyMemo = React__namespace.useMemo(function () {
|
|
236
|
+
return hasActiveItemRecursively(group.items, activePath);
|
|
237
|
+
}, [group.items, activePath]);
|
|
238
|
+
var _e = React__namespace.useState(!group.collapsed), open = _e[0], setOpen = _e[1];
|
|
239
|
+
var _f = React__namespace.useState(), markerIsMovingTimeout = _f[0], setMarkerIsMovingTimeout = _f[1];
|
|
231
240
|
var $groupElements = React__namespace.useRef(null);
|
|
232
|
-
var
|
|
233
|
-
|
|
234
|
-
if (!collapsible)
|
|
241
|
+
var toggleMenu = function (localOpen) {
|
|
242
|
+
if (!collapsible || markerIsMoving)
|
|
235
243
|
return;
|
|
236
|
-
|
|
244
|
+
setMarkerIsMoving(true);
|
|
245
|
+
// on browsers than do not support transitionend event
|
|
246
|
+
// we need to set a timeout to remove the markerIsMoving
|
|
247
|
+
var timeout = setTimeout(function () {
|
|
248
|
+
setMarkerIsMoving(false);
|
|
249
|
+
}, 350);
|
|
250
|
+
setMarkerIsMovingTimeout(timeout);
|
|
237
251
|
setOpen(localOpen);
|
|
238
252
|
readjustMarkerPosition(localOpen);
|
|
239
|
-
}
|
|
240
|
-
var hasActiveItemRecursively = React__namespace.useCallback(function (items) {
|
|
241
|
-
if (items === void 0) { items = group.items; }
|
|
242
|
-
return items.some(function (item) {
|
|
243
|
-
if ('items' in item) {
|
|
244
|
-
return hasActiveItemRecursively(item.items);
|
|
245
|
-
}
|
|
246
|
-
return item.href === activePath;
|
|
247
|
-
});
|
|
248
|
-
}, [group.items, activePath]);
|
|
253
|
+
};
|
|
249
254
|
var Head = collapsible ? 'button' : group.href ? 'a' : 'div';
|
|
250
255
|
var setActivePosition = React__namespace.useCallback(function (_a) {
|
|
251
256
|
var top = _a.top, height = _a.height;
|
|
@@ -253,7 +258,6 @@ var DocGroup = React__namespace.forwardRef(function (_a, ref) {
|
|
|
253
258
|
onActivePosition({ top: top, height: height });
|
|
254
259
|
}
|
|
255
260
|
}, [onActivePosition, open]);
|
|
256
|
-
var setMarkerIsMoving = React__namespace.useContext(MarkerIsMovingContext).setMarkerIsMoving;
|
|
257
261
|
function reTriggerSetActiveGroupParent() {
|
|
258
262
|
var _a;
|
|
259
263
|
(_a = $groupElements.current) === null || _a === void 0 ? void 0 : _a.reTriggerSetActiveGroup();
|
|
@@ -263,20 +267,17 @@ var DocGroup = React__namespace.forwardRef(function (_a, ref) {
|
|
|
263
267
|
* We replace the absolute marker by one in the link. After the transition, the
|
|
264
268
|
* marker is replaced by the absolute one again.
|
|
265
269
|
*/
|
|
266
|
-
function
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
setMarkerIsMoving(false);
|
|
276
|
-
}, { once: true });
|
|
277
|
-
}
|
|
270
|
+
var restoreActiveMarkerAfterTransition = function () {
|
|
271
|
+
if (!markerIsMovingTimeout) {
|
|
272
|
+
clearTimeout(markerIsMovingTimeout);
|
|
273
|
+
}
|
|
274
|
+
if (open || !hasActiveItemRecursivelyMemo) {
|
|
275
|
+
updateMarkerPosition();
|
|
276
|
+
}
|
|
277
|
+
setMarkerIsMoving(false);
|
|
278
|
+
};
|
|
278
279
|
function readjustMarkerPosition(localOpen) {
|
|
279
|
-
if (
|
|
280
|
+
if (hasActiveItemRecursivelyMemo) {
|
|
280
281
|
if (localOpen) {
|
|
281
282
|
reTriggerSetActiveGroupParent();
|
|
282
283
|
}
|
|
@@ -285,52 +286,51 @@ var DocGroup = React__namespace.forwardRef(function (_a, ref) {
|
|
|
285
286
|
}
|
|
286
287
|
}
|
|
287
288
|
else {
|
|
288
|
-
updateMarkerPosition
|
|
289
|
+
updateMarkerPosition();
|
|
289
290
|
}
|
|
290
291
|
}
|
|
291
292
|
React__namespace.useImperativeHandle(ref, function () { return ({
|
|
292
293
|
reTriggerSetActiveGroup: reTriggerSetActiveGroupParent,
|
|
293
294
|
}); });
|
|
294
295
|
var onUpdateMarkerPosition = React__namespace.useCallback(function () {
|
|
295
|
-
if (
|
|
296
|
+
if (hasActiveItemRecursivelyMemo) {
|
|
296
297
|
reTriggerSetActiveGroupParent();
|
|
297
298
|
}
|
|
298
299
|
else {
|
|
299
300
|
updateMarkerPosition === null || updateMarkerPosition === void 0 ? void 0 : updateMarkerPosition();
|
|
300
301
|
}
|
|
301
|
-
}, [
|
|
302
|
+
}, [hasActiveItemRecursivelyMemo, updateMarkerPosition]);
|
|
302
303
|
return (React__namespace.createElement(React__namespace.Fragment, null,
|
|
303
304
|
React__namespace.createElement(Head, { onClick: function () { return toggleMenu(!open); }, href: group.href, className: clsx(classes.button, (_b = {},
|
|
304
305
|
_b[classes.topButton] = depth === 0,
|
|
305
306
|
_b[classes.leafButton] = depth,
|
|
306
|
-
_b['text-indigo-500'] = activePath === group.href,
|
|
307
|
-
_b
|
|
307
|
+
_b['text-indigo-500 dark:text-indigo-400'] = activePath === group.href,
|
|
308
|
+
_b['text-gray-900 dark:text-gray-100'] = hasActiveItemRecursivelyMemo && activePath !== group.href,
|
|
309
|
+
_b['text-gray-800 dark:text-gray-200'] = !hasActiveItemRecursivelyMemo && activePath !== group.href,
|
|
310
|
+
_b)), style: {
|
|
311
|
+
paddingLeft: depth >= 1 ? "".concat((depth - 1) * 12 + 48, "px") : undefined,
|
|
312
|
+
} },
|
|
308
313
|
collapsible ? (React__namespace.createElement(IconChevronDownSmall, { "stroke-color": "gray-400", size: depth ? '8' : '16', className: clsx(classes.expandedIcon, {
|
|
309
314
|
'rotate-0': open,
|
|
310
315
|
'-rotate-90': !open,
|
|
311
|
-
|
|
312
|
-
|
|
316
|
+
}), style: {
|
|
317
|
+
marginLeft: depth >= 1 ? "".concat((depth - 1) * 12 + 28, "px") : undefined,
|
|
318
|
+
} })) : null,
|
|
313
319
|
group.label),
|
|
314
|
-
React__namespace.createElement("div", { className: clsx('
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
320
|
+
React__namespace.createElement("div", { className: clsx('relative', collapsible
|
|
321
|
+
? {
|
|
322
|
+
'transition-all grid': true,
|
|
323
|
+
'grid-rows-[0fr]': !open,
|
|
324
|
+
'grid-rows-[1fr]': open,
|
|
325
|
+
}
|
|
326
|
+
: null), onTransitionEnd: restoreActiveMarkerAfterTransition },
|
|
318
327
|
open && collapsible && depth === 0 ? (React__namespace.createElement("div", { className: classes.openListBorderLeft })) : null,
|
|
319
|
-
React__namespace.createElement(DocGroupElements, { ref: $groupElements, className: "overflow-hidden", items: group.items,
|
|
328
|
+
React__namespace.createElement(DocGroupElements, { ref: $groupElements, className: "overflow-hidden", items: group.items, depth: depth, context: context, markerIsMoving: markerIsMoving, onActivePosition: setActivePosition, updateMarkerPosition: onUpdateMarkerPosition, LinkComponent: LinkComponent }))));
|
|
320
329
|
});
|
|
321
330
|
var DocGroupElements = React__namespace.forwardRef(function (_a, ref) {
|
|
322
|
-
var items = _a.items,
|
|
331
|
+
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"]);
|
|
323
332
|
var $groups = React__namespace.useRef([]);
|
|
324
333
|
var $items = React__namespace.useRef([]);
|
|
325
|
-
var hasActiveItemRecursively = React__namespace.useCallback(function (localItems) {
|
|
326
|
-
if (localItems === void 0) { localItems = items; }
|
|
327
|
-
return localItems.some(function (item) {
|
|
328
|
-
if ('items' in item) {
|
|
329
|
-
return hasActiveItemRecursively(item.items);
|
|
330
|
-
}
|
|
331
|
-
return item.href === activePath;
|
|
332
|
-
});
|
|
333
|
-
}, [items, activePath]);
|
|
334
334
|
var reTriggerSetActiveGroup = React__namespace.useCallback(function (index) {
|
|
335
335
|
if (index === void 0) { index = 0; }
|
|
336
336
|
$items.current.forEach(function (item) {
|
|
@@ -351,21 +351,22 @@ var DocGroupElements = React__namespace.forwardRef(function (_a, ref) {
|
|
|
351
351
|
React__namespace.useImperativeHandle(ref, function () { return ({
|
|
352
352
|
reTriggerSetActiveGroup: reTriggerSetActiveGroup,
|
|
353
353
|
}); });
|
|
354
|
+
var activePath = context.activePath, hideMarker = context.hideMarker;
|
|
354
355
|
var onUpdateMarkerPosition = React__namespace.useCallback(function (index) {
|
|
355
|
-
if (hasActiveItemRecursively()) {
|
|
356
|
+
if (hasActiveItemRecursively(items, activePath)) {
|
|
356
357
|
reTriggerSetActiveGroup(index);
|
|
357
358
|
}
|
|
358
359
|
else {
|
|
359
360
|
updateMarkerPosition === null || updateMarkerPosition === void 0 ? void 0 : updateMarkerPosition();
|
|
360
361
|
}
|
|
361
|
-
}, [
|
|
362
|
+
}, [updateMarkerPosition, reTriggerSetActiveGroup, items, activePath]);
|
|
362
363
|
return (React__namespace.createElement("ul", __assign$1({}, rest, { className: clsx('list-none p-0', className) }), items.map(function (item, index) {
|
|
363
364
|
return 'items' in item ? (React__namespace.createElement("li", { key: index, className: "relative list-none p-0" },
|
|
364
365
|
React__namespace.createElement(DocGroup, { ref: function (el) {
|
|
365
366
|
$groups.current[index] = el;
|
|
366
|
-
}, group: item,
|
|
367
|
+
}, group: item, depth: depth + 1, LinkComponent: LinkComponent, markerIsMoving: markerIsMoving, context: context, onActivePosition: onActivePosition, updateMarkerPosition: function () { return onUpdateMarkerPosition(index); } }))) : (React__namespace.createElement(DocLink, { ref: function (el) {
|
|
367
368
|
$items.current[index] = el;
|
|
368
|
-
}, key: index, item: item,
|
|
369
|
+
}, key: index, item: item, depth: depth, markerIsMoving: markerIsMoving, context: context, onActive: function (opts) {
|
|
369
370
|
return depth < 0 ? hideMarker() : onActivePosition(opts);
|
|
370
371
|
}, LinkComponent: LinkComponent }));
|
|
371
372
|
})));
|
|
@@ -386,7 +387,7 @@ var DocMenu = function (_a) {
|
|
|
386
387
|
setActiveTop(opts.top - containerTop);
|
|
387
388
|
setActiveHeight(opts.height);
|
|
388
389
|
}, []);
|
|
389
|
-
var
|
|
390
|
+
var hideMarker = React__namespace.useCallback(function () { return setShowMarker(false); }, []);
|
|
390
391
|
var setMarkerIsMoving = React__namespace.useCallback(function (val) {
|
|
391
392
|
localSetMarkerIsMoving(val);
|
|
392
393
|
if (!val)
|
|
@@ -398,19 +399,23 @@ var DocMenu = function (_a) {
|
|
|
398
399
|
setHasCSSTransition(true);
|
|
399
400
|
}, 300);
|
|
400
401
|
}, [localSetMarkerIsMoving]);
|
|
401
|
-
return (React__namespace.createElement(
|
|
402
|
-
React__namespace.createElement("div", {
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
402
|
+
return (React__namespace.createElement("div", { ref: container, className: "relative" },
|
|
403
|
+
showMarker && !markerIsMoving && collapsible ? (React__namespace.createElement("div", { "data-cy": "doc-menu-active-marker", className: "absolute h-[36px] w-[4px] z-50 rounded-full bg-indigo-500 dark:bg-indigo-400 ml-[6.5px] mt-[4px]", style: {
|
|
404
|
+
top: "".concat(activeTop, "px"),
|
|
405
|
+
height: "".concat(activeHeight - 8, "px"),
|
|
406
|
+
transition: hasCSSTransition
|
|
407
|
+
? 'height .3s ease-in-out, top .3s ease-in-out'
|
|
408
|
+
: 'none',
|
|
409
|
+
} })) : null,
|
|
410
|
+
React__namespace.createElement(DocGroupElements, __assign$1({}, rest, { items: items, depth: -1, markerIsMoving: markerIsMoving, onActivePosition: setActivePosition, LinkComponent: LinkComponent, context: {
|
|
411
|
+
setMarkerIsMoving: setMarkerIsMoving,
|
|
412
|
+
activePath: activePath,
|
|
413
|
+
collapsible: collapsible,
|
|
414
|
+
hideMarker: hideMarker,
|
|
415
|
+
} }))));
|
|
411
416
|
};
|
|
412
417
|
|
|
413
418
|
module.exports = DocMenu;
|
|
414
419
|
//# sourceMappingURL=index.umd.js.map
|
|
415
420
|
|
|
416
|
-
/* <wind-keep class="container relative absolute h-[36px] w-[4px] z-50 rounded-full bg-indigo-500 ml-[6.5px] mt-[4px] transition ease-in-out text-indigo-500 rotate-0 -rotate-90
|
|
421
|
+
/* <wind-keep class="container relative absolute h-[36px] w-[4px] z-50 rounded-full bg-indigo-500 dark:bg-indigo-400 ml-[6.5px] mt-[4px] transition ease-in-out text-indigo-500 dark:text-indigo-400 text-gray-900 dark:text-gray-100 text-gray-800 dark:text-gray-200 rotate-0 -rotate-90 transition-all grid grid-rows-[0fr] grid-rows-[1fr] overflow-hidden filter list-none p-0 block w-full pl-[24px] text-gray-700 dark:text-gray-500 py-[8px] text-[16px] leading-[24px] leading-[20px] text-[14px] py-[12px] left-[6.5px] top-[4px] bottom-[4px] z-10 hidden group-hover:block bg-gray-300 text-indigo-400 text-gray-500 bg-indigo-400 left-0 transform transition-transform text-gray-400 dark:text-gray-700 flex py-[10px] items-center text-start font-medium pl-[48px] left-[8px] top-0 w-[1px] h-full bg-gray-100 dark:bg-gray-900"> */
|