@cypress-design/react-docmenu 0.5.0 → 0.5.1
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/_DocGroup.tsx +34 -56
- package/_DocLink.tsx +2 -8
- package/dist/_DocGroup.d.ts.map +1 -1
- package/dist/_DocLink.d.ts.map +1 -1
- package/dist/index.es.mjs +30 -54
- package/dist/index.es.mjs.map +1 -1
- package/dist/index.umd.js +30 -54
- 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 [
|
|
5
|
+
[32mcreated [1m./dist/index.umd.js, ./dist/index.es.mjs[22m in [1m12.8s[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.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`171cf54`](https://github.com/cypress-io/cypress-design/commit/171cf546bd79e96b8ef140b2af34d1949d022a4b) Thanks [@elevatebart](https://github.com/elevatebart)! - fix: make docmenu transition properly
|
|
8
|
+
|
|
3
9
|
## 0.5.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
package/_DocGroup.tsx
CHANGED
|
@@ -13,18 +13,6 @@ import {
|
|
|
13
13
|
} from './_DocLink'
|
|
14
14
|
import { MarkerIsMovingContext } from './markerIsMoving'
|
|
15
15
|
|
|
16
|
-
const useIsMounted = () => {
|
|
17
|
-
const isMounted = React.useRef(false)
|
|
18
|
-
|
|
19
|
-
React.useEffect(() => {
|
|
20
|
-
isMounted.current = true
|
|
21
|
-
return () => {
|
|
22
|
-
isMounted.current = false
|
|
23
|
-
}
|
|
24
|
-
}, [])
|
|
25
|
-
return isMounted
|
|
26
|
-
}
|
|
27
|
-
|
|
28
16
|
export interface DocGroupProps {
|
|
29
17
|
group: NavGroup
|
|
30
18
|
activePath: string
|
|
@@ -57,11 +45,12 @@ export const DocGroup = React.forwardRef<DocGroupForward, DocGroupProps>(
|
|
|
57
45
|
const [open, setOpen] = React.useState(group.collapsed !== true)
|
|
58
46
|
const $groupElements = React.useRef<DocGroupElementsForward>(null)
|
|
59
47
|
const $listWrapper = React.useRef<HTMLDivElement>(null)
|
|
60
|
-
const didMount = useIsMounted()
|
|
61
48
|
|
|
62
49
|
function toggleMenu(open: boolean) {
|
|
63
50
|
if (!collapsible) return
|
|
64
51
|
setOpen(open)
|
|
52
|
+
hideShowAbsoluteMarker()
|
|
53
|
+
readjustMarkerPosition()
|
|
65
54
|
}
|
|
66
55
|
|
|
67
56
|
const hasActiveItemRecursively = React.useCallback(
|
|
@@ -93,53 +82,42 @@ export const DocGroup = React.forwardRef<DocGroupForward, DocGroupProps>(
|
|
|
93
82
|
$groupElements.current?.reTriggerSetActiveGroup()
|
|
94
83
|
}
|
|
95
84
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
)
|
|
115
|
-
}
|
|
116
|
-
}, [
|
|
117
|
-
open,
|
|
118
|
-
setMarkerIsMoving,
|
|
119
|
-
updateMarkerPosition,
|
|
120
|
-
hasActiveItemRecursively,
|
|
121
|
-
didMount,
|
|
122
|
-
])
|
|
123
|
-
|
|
124
|
-
React.useEffect(() => {
|
|
125
|
-
if (didMount.current) {
|
|
126
|
-
if (hasActiveItemRecursively()) {
|
|
127
|
-
if (open) {
|
|
128
|
-
reTriggerSetActiveGroupParent()
|
|
129
|
-
} else {
|
|
130
|
-
hideMarker()
|
|
85
|
+
/**
|
|
86
|
+
* To make the marker follow smooth open/close animation of the menu groups
|
|
87
|
+
* We replace the absolute marker by one in the link. After the transition, the
|
|
88
|
+
* marker is replaced by the absolute one again.
|
|
89
|
+
*/
|
|
90
|
+
function hideShowAbsoluteMarker() {
|
|
91
|
+
$listWrapper.current?.addEventListener(
|
|
92
|
+
'transitionstart',
|
|
93
|
+
() => {
|
|
94
|
+
setMarkerIsMoving(true)
|
|
95
|
+
},
|
|
96
|
+
{ once: true },
|
|
97
|
+
)
|
|
98
|
+
$listWrapper.current?.addEventListener(
|
|
99
|
+
'transitionend',
|
|
100
|
+
() => {
|
|
101
|
+
if (open || !hasActiveItemRecursively()) {
|
|
102
|
+
updateMarkerPosition?.()
|
|
131
103
|
}
|
|
104
|
+
setMarkerIsMoving(false)
|
|
105
|
+
},
|
|
106
|
+
{ once: true },
|
|
107
|
+
)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function readjustMarkerPosition() {
|
|
111
|
+
if (hasActiveItemRecursively()) {
|
|
112
|
+
if (open) {
|
|
113
|
+
reTriggerSetActiveGroupParent()
|
|
132
114
|
} else {
|
|
133
|
-
|
|
115
|
+
hideMarker()
|
|
134
116
|
}
|
|
117
|
+
} else {
|
|
118
|
+
updateMarkerPosition?.()
|
|
135
119
|
}
|
|
136
|
-
}
|
|
137
|
-
open,
|
|
138
|
-
updateMarkerPosition,
|
|
139
|
-
hideMarker,
|
|
140
|
-
hasActiveItemRecursively,
|
|
141
|
-
didMount,
|
|
142
|
-
])
|
|
120
|
+
}
|
|
143
121
|
|
|
144
122
|
React.useImperativeHandle(ref, () => ({
|
|
145
123
|
reTriggerSetActiveGroup: reTriggerSetActiveGroupParent,
|
package/_DocLink.tsx
CHANGED
|
@@ -30,9 +30,7 @@ export const DocLink = React.forwardRef<DocLinkForward, DocLinkProps>(
|
|
|
30
30
|
) => {
|
|
31
31
|
const activeLIRef = React.useRef<HTMLLIElement>(null)
|
|
32
32
|
|
|
33
|
-
const { markerIsMoving
|
|
34
|
-
MarkerIsMovingContext,
|
|
35
|
-
)
|
|
33
|
+
const { markerIsMoving } = React.useContext(MarkerIsMovingContext)
|
|
36
34
|
|
|
37
35
|
const setActiveMarkerPosition = () => {
|
|
38
36
|
if (active) {
|
|
@@ -47,11 +45,7 @@ export const DocLink = React.forwardRef<DocLinkForward, DocLinkProps>(
|
|
|
47
45
|
|
|
48
46
|
// on mount, if the item is active,
|
|
49
47
|
// send the top position to the parent
|
|
50
|
-
React.useEffect(setActiveMarkerPosition, [
|
|
51
|
-
onActive,
|
|
52
|
-
active,
|
|
53
|
-
setMarkerIsMoving,
|
|
54
|
-
])
|
|
48
|
+
React.useEffect(setActiveMarkerPosition, [onActive, active])
|
|
55
49
|
|
|
56
50
|
React.useImperativeHandle(ref, () => ({
|
|
57
51
|
setActiveMarkerPosition,
|
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;
|
|
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,uGA6G5B,CAAA"}
|
package/dist/_DocLink.d.ts.map
CHANGED
|
@@ -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;AAG/D,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,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC1D,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,uBAAuB,EAAE,MAAM,IAAI,CAAA;CACpC;AAED,eAAO,MAAM,OAAO,
|
|
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;AAG/D,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,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC1D,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,uBAAuB,EAAE,MAAM,IAAI,CAAA;CACpC;AAED,eAAO,MAAM,OAAO,qFA2DnB,CAAA"}
|
package/dist/index.es.mjs
CHANGED
|
@@ -170,7 +170,7 @@ var MarkerIsMovingContext = createContext({
|
|
|
170
170
|
var DocLink = React.forwardRef(function (_a, ref) {
|
|
171
171
|
var item = _a.item, active = _a.active, collapsible = _a.collapsible, _b = _a.depth, depth = _b === void 0 ? -1 : _b, onActive = _a.onActive, _c = _a.LinkComponent, LinkComponent = _c === void 0 ? 'a' : _c;
|
|
172
172
|
var activeLIRef = React.useRef(null);
|
|
173
|
-
var
|
|
173
|
+
var markerIsMoving = React.useContext(MarkerIsMovingContext).markerIsMoving;
|
|
174
174
|
var setActiveMarkerPosition = function () {
|
|
175
175
|
var _a;
|
|
176
176
|
if (active) {
|
|
@@ -183,11 +183,7 @@ var DocLink = React.forwardRef(function (_a, ref) {
|
|
|
183
183
|
};
|
|
184
184
|
// on mount, if the item is active,
|
|
185
185
|
// send the top position to the parent
|
|
186
|
-
React.useEffect(setActiveMarkerPosition, [
|
|
187
|
-
onActive,
|
|
188
|
-
active,
|
|
189
|
-
setMarkerIsMoving,
|
|
190
|
-
]);
|
|
186
|
+
React.useEffect(setActiveMarkerPosition, [onActive, active]);
|
|
191
187
|
React.useImperativeHandle(ref, function () { return ({
|
|
192
188
|
setActiveMarkerPosition: setActiveMarkerPosition,
|
|
193
189
|
}); });
|
|
@@ -208,27 +204,18 @@ var DocLink = React.forwardRef(function (_a, ref) {
|
|
|
208
204
|
item.label)));
|
|
209
205
|
});
|
|
210
206
|
|
|
211
|
-
var useIsMounted = function () {
|
|
212
|
-
var isMounted = React.useRef(false);
|
|
213
|
-
React.useEffect(function () {
|
|
214
|
-
isMounted.current = true;
|
|
215
|
-
return function () {
|
|
216
|
-
isMounted.current = false;
|
|
217
|
-
};
|
|
218
|
-
}, []);
|
|
219
|
-
return isMounted;
|
|
220
|
-
};
|
|
221
207
|
var DocGroup = React.forwardRef(function (_a, ref) {
|
|
222
208
|
var _b;
|
|
223
209
|
var group = _a.group, activePath = _a.activePath, collapsible = _a.collapsible, _c = _a.depth, depth = _c === void 0 ? 0 : _c, onActivePosition = _a.onActivePosition, updateMarkerPosition = _a.updateMarkerPosition, _d = _a.LinkComponent, LinkComponent = _d === void 0 ? 'a' : _d, hideMarker = _a.hideMarker;
|
|
224
210
|
var _e = React.useState(group.collapsed !== true), open = _e[0], setOpen = _e[1];
|
|
225
211
|
var $groupElements = React.useRef(null);
|
|
226
212
|
var $listWrapper = React.useRef(null);
|
|
227
|
-
var didMount = useIsMounted();
|
|
228
213
|
function toggleMenu(open) {
|
|
229
214
|
if (!collapsible)
|
|
230
215
|
return;
|
|
231
216
|
setOpen(open);
|
|
217
|
+
hideShowAbsoluteMarker();
|
|
218
|
+
readjustMarkerPosition();
|
|
232
219
|
}
|
|
233
220
|
var hasActiveItemRecursively = React.useCallback(function (items) {
|
|
234
221
|
if (items === void 0) { items = group.items; }
|
|
@@ -251,47 +238,36 @@ var DocGroup = React.forwardRef(function (_a, ref) {
|
|
|
251
238
|
var _a;
|
|
252
239
|
(_a = $groupElements.current) === null || _a === void 0 ? void 0 : _a.reTriggerSetActiveGroup();
|
|
253
240
|
}
|
|
254
|
-
|
|
241
|
+
/**
|
|
242
|
+
* To make the marker follow smooth open/close animation of the menu groups
|
|
243
|
+
* We replace the absolute marker by one in the link. After the transition, the
|
|
244
|
+
* marker is replaced by the absolute one again.
|
|
245
|
+
*/
|
|
246
|
+
function hideShowAbsoluteMarker() {
|
|
255
247
|
var _a, _b;
|
|
256
|
-
|
|
257
|
-
(
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
(
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
updateMarkerPosition,
|
|
271
|
-
hasActiveItemRecursively,
|
|
272
|
-
didMount,
|
|
273
|
-
]);
|
|
274
|
-
React.useEffect(function () {
|
|
275
|
-
if (didMount.current) {
|
|
276
|
-
if (hasActiveItemRecursively()) {
|
|
277
|
-
if (open) {
|
|
278
|
-
reTriggerSetActiveGroupParent();
|
|
279
|
-
}
|
|
280
|
-
else {
|
|
281
|
-
hideMarker();
|
|
282
|
-
}
|
|
248
|
+
(_a = $listWrapper.current) === null || _a === void 0 ? void 0 : _a.addEventListener('transitionstart', function () {
|
|
249
|
+
setMarkerIsMoving(true);
|
|
250
|
+
}, { once: true });
|
|
251
|
+
(_b = $listWrapper.current) === null || _b === void 0 ? void 0 : _b.addEventListener('transitionend', function () {
|
|
252
|
+
if (open || !hasActiveItemRecursively()) {
|
|
253
|
+
updateMarkerPosition === null || updateMarkerPosition === void 0 ? void 0 : updateMarkerPosition();
|
|
254
|
+
}
|
|
255
|
+
setMarkerIsMoving(false);
|
|
256
|
+
}, { once: true });
|
|
257
|
+
}
|
|
258
|
+
function readjustMarkerPosition() {
|
|
259
|
+
if (hasActiveItemRecursively()) {
|
|
260
|
+
if (open) {
|
|
261
|
+
reTriggerSetActiveGroupParent();
|
|
283
262
|
}
|
|
284
263
|
else {
|
|
285
|
-
|
|
264
|
+
hideMarker();
|
|
286
265
|
}
|
|
287
266
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
hasActiveItemRecursively,
|
|
293
|
-
didMount,
|
|
294
|
-
]);
|
|
267
|
+
else {
|
|
268
|
+
updateMarkerPosition === null || updateMarkerPosition === void 0 ? void 0 : updateMarkerPosition();
|
|
269
|
+
}
|
|
270
|
+
}
|
|
295
271
|
React.useImperativeHandle(ref, function () { return ({
|
|
296
272
|
reTriggerSetActiveGroup: reTriggerSetActiveGroupParent,
|
|
297
273
|
}); });
|
|
@@ -401,4 +377,4 @@ var DocMenu = function (_a) {
|
|
|
401
377
|
export { DocMenu as default };
|
|
402
378
|
//# sourceMappingURL=index.es.mjs.map
|
|
403
379
|
|
|
404
|
-
/* <wind-keep class="container relative absolute h-[36px] w-[4px] z-50 rounded-full bg-indigo-500 transition-all duration-300 ml-[6.5px] mt-[4px] text-indigo-500 rotate-0 -rotate-90 ml-[28px] 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-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"> */
|
|
380
|
+
/* <wind-keep class="container relative absolute h-[36px] w-[4px] z-50 rounded-full bg-indigo-500 transition-all duration-300 ml-[6.5px] mt-[4px] transition text-indigo-500 rotate-0 -rotate-90 ml-[28px] 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-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"> */
|