@cypress-design/react-docmenu 0.5.1 → 0.5.2
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 +6 -0
- package/DocMenu.tsx +19 -2
- package/_DocGroup.tsx +9 -8
- package/dist/DocMenu.d.ts.map +1 -1
- package/dist/_DocGroup.d.ts.map +1 -1
- package/dist/index.es.mjs +27 -11
- package/dist/index.es.mjs.map +1 -1
- package/dist/index.umd.js +27 -11
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -2,5 +2,5 @@ $ yarn build:module && yarn build:types
|
|
|
2
2
|
$ rollup -c ./rollup.config.mjs
|
|
3
3
|
[36m
|
|
4
4
|
[1m./index.ts[22m → [1m./dist/index.umd.js, ./dist/index.es.mjs[22m...[39m
|
|
5
|
-
[32mcreated [1m./dist/index.umd.js, ./dist/index.es.mjs[22m in [1m12.
|
|
5
|
+
[32mcreated [1m./dist/index.umd.js, ./dist/index.es.mjs[22m in [1m12.9s[22m[39m
|
|
6
6
|
$ tsc --project ./tsconfig.build.json
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @cypress-design/react-docmenu
|
|
2
2
|
|
|
3
|
+
## 0.5.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`5927136`](https://github.com/cypress-io/cypress-design/commit/59271366a460cbdc411a6bec75feb663d3991029) Thanks [@elevatebart](https://github.com/elevatebart)! - fix: make sure when dynamic marker reappear, it does not bounce up
|
|
8
|
+
|
|
3
9
|
## 0.5.1
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/DocMenu.tsx
CHANGED
|
@@ -23,7 +23,8 @@ export const DocMenu: React.FC<DocMenuProps> = ({
|
|
|
23
23
|
const [activeTop, setActiveTop] = React.useState(0)
|
|
24
24
|
const [activeHeight, setActiveHeight] = React.useState(36)
|
|
25
25
|
const [showMarker, setShowMarker] = React.useState(false)
|
|
26
|
-
const [markerIsMoving,
|
|
26
|
+
const [markerIsMoving, localSetMarkerIsMoving] = React.useState(false)
|
|
27
|
+
const [hasCSSTransition, setHasCSSTransition] = React.useState(true)
|
|
27
28
|
|
|
28
29
|
const container = React.useRef<HTMLDivElement>(null)
|
|
29
30
|
|
|
@@ -38,6 +39,19 @@ export const DocMenu: React.FC<DocMenuProps> = ({
|
|
|
38
39
|
)
|
|
39
40
|
|
|
40
41
|
const setShowMarkerFalse = React.useCallback(() => setShowMarker(false), [])
|
|
42
|
+
const setMarkerIsMoving = React.useCallback(
|
|
43
|
+
(val: boolean) => {
|
|
44
|
+
localSetMarkerIsMoving(val)
|
|
45
|
+
if (!val) return
|
|
46
|
+
// make sure the animation does not fire "after"
|
|
47
|
+
// the marker has reappeared at its right place
|
|
48
|
+
setHasCSSTransition(false)
|
|
49
|
+
setTimeout(() => {
|
|
50
|
+
setHasCSSTransition(true)
|
|
51
|
+
}, 300)
|
|
52
|
+
},
|
|
53
|
+
[localSetMarkerIsMoving],
|
|
54
|
+
)
|
|
41
55
|
|
|
42
56
|
return (
|
|
43
57
|
<MarkerIsMovingContext.Provider
|
|
@@ -46,10 +60,13 @@ export const DocMenu: React.FC<DocMenuProps> = ({
|
|
|
46
60
|
<div ref={container} className="relative">
|
|
47
61
|
{showMarker && !markerIsMoving && collapsible ? (
|
|
48
62
|
<div
|
|
49
|
-
className="absolute h-[36px] w-[4px] z-50 rounded-full bg-indigo-500
|
|
63
|
+
className="absolute h-[36px] w-[4px] z-50 rounded-full bg-indigo-500 ml-[6.5px] mt-[4px]"
|
|
50
64
|
style={{
|
|
51
65
|
top: `${activeTop}px`,
|
|
52
66
|
height: `${activeHeight - 8}px`,
|
|
67
|
+
transition: hasCSSTransition
|
|
68
|
+
? 'height .3s ease-in-out, top .3s ease-in-out'
|
|
69
|
+
: 'none',
|
|
53
70
|
}}
|
|
54
71
|
/>
|
|
55
72
|
) : null}
|
package/_DocGroup.tsx
CHANGED
|
@@ -46,11 +46,11 @@ export const DocGroup = React.forwardRef<DocGroupForward, DocGroupProps>(
|
|
|
46
46
|
const $groupElements = React.useRef<DocGroupElementsForward>(null)
|
|
47
47
|
const $listWrapper = React.useRef<HTMLDivElement>(null)
|
|
48
48
|
|
|
49
|
-
function toggleMenu(
|
|
49
|
+
function toggleMenu(localOpen: boolean) {
|
|
50
50
|
if (!collapsible) return
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
readjustMarkerPosition()
|
|
51
|
+
hideShowAbsoluteMarker(localOpen)
|
|
52
|
+
setOpen(localOpen)
|
|
53
|
+
readjustMarkerPosition(localOpen)
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
const hasActiveItemRecursively = React.useCallback(
|
|
@@ -87,7 +87,7 @@ export const DocGroup = React.forwardRef<DocGroupForward, DocGroupProps>(
|
|
|
87
87
|
* We replace the absolute marker by one in the link. After the transition, the
|
|
88
88
|
* marker is replaced by the absolute one again.
|
|
89
89
|
*/
|
|
90
|
-
function hideShowAbsoluteMarker() {
|
|
90
|
+
function hideShowAbsoluteMarker(localOpen: boolean) {
|
|
91
91
|
$listWrapper.current?.addEventListener(
|
|
92
92
|
'transitionstart',
|
|
93
93
|
() => {
|
|
@@ -98,7 +98,7 @@ export const DocGroup = React.forwardRef<DocGroupForward, DocGroupProps>(
|
|
|
98
98
|
$listWrapper.current?.addEventListener(
|
|
99
99
|
'transitionend',
|
|
100
100
|
() => {
|
|
101
|
-
if (
|
|
101
|
+
if (localOpen || !hasActiveItemRecursively()) {
|
|
102
102
|
updateMarkerPosition?.()
|
|
103
103
|
}
|
|
104
104
|
setMarkerIsMoving(false)
|
|
@@ -107,9 +107,9 @@ export const DocGroup = React.forwardRef<DocGroupForward, DocGroupProps>(
|
|
|
107
107
|
)
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
function readjustMarkerPosition() {
|
|
110
|
+
function readjustMarkerPosition(localOpen: boolean) {
|
|
111
111
|
if (hasActiveItemRecursively()) {
|
|
112
|
-
if (
|
|
112
|
+
if (localOpen) {
|
|
113
113
|
reTriggerSetActiveGroupParent()
|
|
114
114
|
} else {
|
|
115
115
|
hideMarker()
|
|
@@ -240,6 +240,7 @@ export const DocGroupElements = React.forwardRef<
|
|
|
240
240
|
item?.setActiveMarkerPosition()
|
|
241
241
|
})
|
|
242
242
|
// calculate the index of the calling group in the list of groups
|
|
243
|
+
// "index" is the index of the calling group in the list of items (groups and links)
|
|
243
244
|
const indexGroup =
|
|
244
245
|
index -
|
|
245
246
|
// remove all the items that are not groups from the array and count them
|
package/dist/DocMenu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocMenu.d.ts","sourceRoot":"./","sources":["DocMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAInD,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE5C,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;IAC1E,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAClC;AAED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"DocMenu.d.ts","sourceRoot":"./","sources":["DocMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAInD,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE5C,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;IAC1E,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAClC;AAED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAsE1C,CAAA;AAED,eAAe,OAAO,CAAA"}
|
package/dist/_DocGroup.d.ts.map
CHANGED
|
@@ -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,EAGL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAA;AAGnB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACjE,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,iBAAiB,CAAA;IACjC,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,uBAAuB,EAAE,MAAM,IAAI,CAAA;CACpC;AAED,eAAO,MAAM,QAAQ,uFAyJpB,CAAA;AAED,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;IAC9C,KAAK,EAAE,CAAC,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAA;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACjE,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,iBAAiB,CAAA;IAChC,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,uBAAuB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD;AAED,eAAO,MAAM,gBAAgB,
|
|
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,EAGL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAA;AAGnB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACjE,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,iBAAiB,CAAA;IACjC,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,uBAAuB,EAAE,MAAM,IAAI,CAAA;CACpC;AAED,eAAO,MAAM,QAAQ,uFAyJpB,CAAA;AAED,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;IAC9C,KAAK,EAAE,CAAC,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAA;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACjE,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,iBAAiB,CAAA;IAChC,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,uBAAuB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD;AAED,eAAO,MAAM,gBAAgB,uGA8G5B,CAAA"}
|
package/dist/index.es.mjs
CHANGED
|
@@ -210,12 +210,12 @@ var DocGroup = React.forwardRef(function (_a, ref) {
|
|
|
210
210
|
var _e = React.useState(group.collapsed !== true), open = _e[0], setOpen = _e[1];
|
|
211
211
|
var $groupElements = React.useRef(null);
|
|
212
212
|
var $listWrapper = React.useRef(null);
|
|
213
|
-
function toggleMenu(
|
|
213
|
+
function toggleMenu(localOpen) {
|
|
214
214
|
if (!collapsible)
|
|
215
215
|
return;
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
readjustMarkerPosition();
|
|
216
|
+
hideShowAbsoluteMarker(localOpen);
|
|
217
|
+
setOpen(localOpen);
|
|
218
|
+
readjustMarkerPosition(localOpen);
|
|
219
219
|
}
|
|
220
220
|
var hasActiveItemRecursively = React.useCallback(function (items) {
|
|
221
221
|
if (items === void 0) { items = group.items; }
|
|
@@ -243,21 +243,21 @@ var DocGroup = React.forwardRef(function (_a, ref) {
|
|
|
243
243
|
* We replace the absolute marker by one in the link. After the transition, the
|
|
244
244
|
* marker is replaced by the absolute one again.
|
|
245
245
|
*/
|
|
246
|
-
function hideShowAbsoluteMarker() {
|
|
246
|
+
function hideShowAbsoluteMarker(localOpen) {
|
|
247
247
|
var _a, _b;
|
|
248
248
|
(_a = $listWrapper.current) === null || _a === void 0 ? void 0 : _a.addEventListener('transitionstart', function () {
|
|
249
249
|
setMarkerIsMoving(true);
|
|
250
250
|
}, { once: true });
|
|
251
251
|
(_b = $listWrapper.current) === null || _b === void 0 ? void 0 : _b.addEventListener('transitionend', function () {
|
|
252
|
-
if (
|
|
252
|
+
if (localOpen || !hasActiveItemRecursively()) {
|
|
253
253
|
updateMarkerPosition === null || updateMarkerPosition === void 0 ? void 0 : updateMarkerPosition();
|
|
254
254
|
}
|
|
255
255
|
setMarkerIsMoving(false);
|
|
256
256
|
}, { once: true });
|
|
257
257
|
}
|
|
258
|
-
function readjustMarkerPosition() {
|
|
258
|
+
function readjustMarkerPosition(localOpen) {
|
|
259
259
|
if (hasActiveItemRecursively()) {
|
|
260
|
-
if (
|
|
260
|
+
if (localOpen) {
|
|
261
261
|
reTriggerSetActiveGroupParent();
|
|
262
262
|
}
|
|
263
263
|
else {
|
|
@@ -317,6 +317,7 @@ var DocGroupElements = React.forwardRef(function (_a, ref) {
|
|
|
317
317
|
item === null || item === void 0 ? void 0 : item.setActiveMarkerPosition();
|
|
318
318
|
});
|
|
319
319
|
// calculate the index of the calling group in the list of groups
|
|
320
|
+
// "index" is the index of the calling group in the list of items (groups and links)
|
|
320
321
|
var indexGroup = index -
|
|
321
322
|
// remove all the items that are not groups from the array and count them
|
|
322
323
|
items.slice(0, index).filter(function (item) { return !('items' in item); }).length;
|
|
@@ -355,7 +356,8 @@ var DocMenu = function (_a) {
|
|
|
355
356
|
var _e = React.useState(0), activeTop = _e[0], setActiveTop = _e[1];
|
|
356
357
|
var _f = React.useState(36), activeHeight = _f[0], setActiveHeight = _f[1];
|
|
357
358
|
var _g = React.useState(false), showMarker = _g[0], setShowMarker = _g[1];
|
|
358
|
-
var _h = React.useState(false), markerIsMoving = _h[0],
|
|
359
|
+
var _h = React.useState(false), markerIsMoving = _h[0], localSetMarkerIsMoving = _h[1];
|
|
360
|
+
var _j = React.useState(true), hasCSSTransition = _j[0], setHasCSSTransition = _j[1];
|
|
359
361
|
var container = React.useRef(null);
|
|
360
362
|
var setActivePosition = React.useCallback(function (opts) {
|
|
361
363
|
var _a;
|
|
@@ -365,11 +367,25 @@ var DocMenu = function (_a) {
|
|
|
365
367
|
setActiveHeight(opts.height);
|
|
366
368
|
}, []);
|
|
367
369
|
var setShowMarkerFalse = React.useCallback(function () { return setShowMarker(false); }, []);
|
|
370
|
+
var setMarkerIsMoving = React.useCallback(function (val) {
|
|
371
|
+
localSetMarkerIsMoving(val);
|
|
372
|
+
if (!val)
|
|
373
|
+
return;
|
|
374
|
+
// make sure the animation does not fire "after"
|
|
375
|
+
// the marker has reappeared at its right place
|
|
376
|
+
setHasCSSTransition(false);
|
|
377
|
+
setTimeout(function () {
|
|
378
|
+
setHasCSSTransition(true);
|
|
379
|
+
}, 300);
|
|
380
|
+
}, [localSetMarkerIsMoving]);
|
|
368
381
|
return (React.createElement(MarkerIsMovingContext.Provider, { value: { markerIsMoving: markerIsMoving, setMarkerIsMoving: setMarkerIsMoving } },
|
|
369
382
|
React.createElement("div", { ref: container, className: "relative" },
|
|
370
|
-
showMarker && !markerIsMoving && collapsible ? (React.createElement("div", { className: "absolute h-[36px] w-[4px] z-50 rounded-full bg-indigo-500
|
|
383
|
+
showMarker && !markerIsMoving && collapsible ? (React.createElement("div", { className: "absolute h-[36px] w-[4px] z-50 rounded-full bg-indigo-500 ml-[6.5px] mt-[4px]", style: {
|
|
371
384
|
top: "".concat(activeTop, "px"),
|
|
372
385
|
height: "".concat(activeHeight - 8, "px"),
|
|
386
|
+
transition: hasCSSTransition
|
|
387
|
+
? 'height .3s ease-in-out, top .3s ease-in-out'
|
|
388
|
+
: 'none',
|
|
373
389
|
} })) : null,
|
|
374
390
|
React.createElement(DocGroupElements, __assign$1({}, rest, { items: items, activePath: activePath, collapsible: collapsible, depth: -1, onActivePosition: setActivePosition, LinkComponent: LinkComponent, hideMarker: setShowMarkerFalse })))));
|
|
375
391
|
};
|
|
@@ -377,4 +393,4 @@ var DocMenu = function (_a) {
|
|
|
377
393
|
export { DocMenu as default };
|
|
378
394
|
//# sourceMappingURL=index.es.mjs.map
|
|
379
395
|
|
|
380
|
-
/* <wind-keep class="container relative absolute h-[36px] w-[4px] z-50 rounded-full bg-indigo-500
|
|
396
|
+
/* <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 ml-[28px] grid transition-all 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-gray-500 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"> */
|