@brillout/docpress 0.15.13-commit-9b3f898 → 0.15.13-commit-39924f0

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/Layout.tsx CHANGED
@@ -15,7 +15,12 @@ import { getNavItemsWithComputed, NavItem, NavItemComponent } from './NavItemCom
15
15
  import { parseMarkdownMini } from './parseMarkdownMini'
16
16
  import { usePageContext } from './renderer/usePageContext'
17
17
  import { ExternalLinks } from './ExternalLinks'
18
- import { coseMenuModalOnMouseLeave, openMenuModal, toggleMenuModal } from './MenuModal/toggleMenuModal'
18
+ import {
19
+ closeMenuModalOnMouseLeaveToggle,
20
+ ignoreHoverOnTouchStart,
21
+ openMenuModalOnMouseEnter,
22
+ toggleMenuModal,
23
+ } from './MenuModal/toggleMenuModal'
19
24
  import { MenuModal } from './MenuModal'
20
25
  import { autoScrollNav_SSR } from './autoScrollNav'
21
26
  import { initializeJsToggle_SSR } from './code-blocks/hooks/useSelectCodeLang'
@@ -280,8 +285,8 @@ function NavHead({ isNavLeft }: { isNavLeft?: true }) {
280
285
  style={{
281
286
  display: 'inline-flex',
282
287
  fontSize: '1.06em',
283
- padding: '0 var(--padding-side)',
284
- marginLeft: -8,
288
+ paddingRight: 'var(--main-view-padding)',
289
+ paddingLeft: 'var(--padding-side)',
285
290
  }}
286
291
  />
287
292
  </div>
@@ -321,7 +326,7 @@ function NavHead({ isNavLeft }: { isNavLeft?: true }) {
321
326
  justifyContent: 'center',
322
327
  }}
323
328
  >
324
- {!hideNavHeadLogo && <NavHeadLogo />}
329
+ {!hideNavHeadLogo && <NavHeadLogo isNavLeft={isNavLeft} />}
325
330
  <div className="desktop-grow" style={{ display: 'none' }} />
326
331
  {algolia && <SearchLink className="always-shown" style={menuLinkStyle} />}
327
332
  <MenuToggleMain className="always-shown nav-head-menu-toggle" style={menuLinkStyle} />
@@ -338,10 +343,6 @@ function getStyleNav() {
338
343
  style += css`
339
344
  @container container-viewport (max-width: ${viewMobile}px) {
340
345
  .nav-head:not(.is-nav-left) {
341
- .nav-head-logo {
342
- always-shown: flex-start !important;
343
- padding-left: var(--main-view-padding);
344
- }
345
346
  .nav-head-menu-toggle {
346
347
  justify-content: flex-end !important;
347
348
  padding-right: var(--main-view-padding) !important;
@@ -373,9 +374,6 @@ function getStyleNav() {
373
374
  --icon-text-padding: 8px;
374
375
  --padding-side: 20px;
375
376
  }
376
- .nav-head-logo {
377
- padding: 0 var(--padding-side);
378
- }
379
377
  }
380
378
  }`
381
379
 
@@ -385,10 +383,7 @@ function getStyleNav() {
385
383
  .nav-head:not(.is-nav-left) {
386
384
  .nav-head-content {
387
385
  --icon-text-padding: min(8px, 0.5cqw);
388
- --padding-side: min(20px, 1.3cqw);
389
- }
390
- .nav-head-logo {
391
- padding: 0 var(--padding-side);
386
+ --padding-side: min(20px, 1.2cqw);
392
387
  }
393
388
  &.has-max-width {
394
389
  .desktop-grow {
@@ -423,10 +418,6 @@ function getStyleNav() {
423
418
  flex-grow: 1;
424
419
  }
425
420
  }
426
- .nav-head-logo {
427
- padding-left: 15px;
428
- margin-left: -15px;
429
- }
430
421
  }
431
422
  .show-on-nav-hover {
432
423
  opacity: 0;
@@ -512,7 +503,7 @@ function NavHeadLeftFullWidthBackground() {
512
503
  )
513
504
  }
514
505
 
515
- function NavHeadLogo({ className }: { className?: string }) {
506
+ function NavHeadLogo({ isNavLeft }: { isNavLeft?: true }) {
516
507
  const pageContext = usePageContext()
517
508
 
518
509
  const { navLogo } = pageContext.globalContext.config.docpress
@@ -546,12 +537,17 @@ function NavHeadLogo({ className }: { className?: string }) {
546
537
 
547
538
  return (
548
539
  <a
549
- className={cls(['nav-head-logo', className])}
550
540
  style={{
551
541
  display: 'flex',
552
542
  alignItems: 'center',
553
543
  height: '100%',
554
544
  color: 'inherit',
545
+ ...(!isNavLeft
546
+ ? {
547
+ paddingLeft: 'var(--main-view-padding)',
548
+ paddingRight: 'var(--padding-side)',
549
+ }
550
+ : {}),
555
551
  }}
556
552
  href="/"
557
553
  onContextMenu={!navLogo ? undefined : onContextMenu}
@@ -571,7 +567,6 @@ function isProjectNameShort(name: string) {
571
567
  return name.length <= 4
572
568
  }
573
569
 
574
- let onMouseIgnore: ReturnType<typeof setTimeout> | undefined
575
570
  type PropsDiv = React.HTMLProps<HTMLDivElement>
576
571
  function MenuToggleMain(props: PropsDiv) {
577
572
  return (
@@ -616,20 +611,12 @@ function MenuToggle({ menuId, ...props }: PropsDiv & { menuId: number }) {
616
611
  toggleMenuModal(menuId)
617
612
  }}
618
613
  onMouseEnter={() => {
619
- if (onMouseIgnore) return
620
- if (isMobileNav()) return
621
- openMenuModal(menuId)
614
+ openMenuModalOnMouseEnter(menuId)
622
615
  }}
623
616
  onMouseLeave={() => {
624
- if (onMouseIgnore) return
625
- if (isMobileNav()) return
626
- coseMenuModalOnMouseLeave(menuId)
627
- }}
628
- onTouchStart={() => {
629
- onMouseIgnore = setTimeout(() => {
630
- onMouseIgnore = undefined
631
- }, 1000)
617
+ closeMenuModalOnMouseLeaveToggle(menuId)
632
618
  }}
619
+ onTouchStart={ignoreHoverOnTouchStart}
633
620
  >
634
621
  <Style>{getAnimation()}</Style>
635
622
  {props.children}
@@ -737,7 +724,3 @@ function MenuIcon() {
737
724
  </svg>
738
725
  )
739
726
  }
740
-
741
- function isMobileNav() {
742
- return window.innerWidth <= viewTablet
743
- }
@@ -1,8 +1,11 @@
1
1
  export { toggleMenuModal }
2
- export { openMenuModal }
3
- export { keepMenuModalOpen }
4
2
  export { closeMenuModal }
5
- export { coseMenuModalOnMouseLeave }
3
+ // Hover handling
4
+ export { ignoreHoverOnTouchStart }
5
+ export { openMenuModalOnMouseEnter }
6
+ export { keepMenuModalOpenOnMouseOver }
7
+ export { closeMenuModalOnMouseLeave }
8
+ export { closeMenuModalOnMouseLeaveToggle }
6
9
 
7
10
  import { viewTablet } from '../Layout'
8
11
  import { getHydrationPromise } from '../renderer/getHydrationPromise'
@@ -11,9 +14,6 @@ import { isBrowser } from '../utils/isBrowser'
11
14
 
12
15
  initScrollListener()
13
16
 
14
- function keepMenuModalOpen() {
15
- open()
16
- }
17
17
  function openMenuModal(menuNavigationId: number) {
18
18
  open(menuNavigationId)
19
19
  }
@@ -72,7 +72,8 @@ let toggleLock:
72
72
  timeoutAction: NodeJS.Timeout
73
73
  }
74
74
  | undefined
75
- function coseMenuModalOnMouseLeave(menuId: number) {
75
+ function closeMenuModalOnMouseLeaveToggle(menuId: number) {
76
+ if (ignoreHover()) return
76
77
  clearTimeout(toggleLock?.timeoutAction)
77
78
  const timeoutAction = setTimeout(action, 100)
78
79
  toggleLock = {
@@ -111,7 +112,7 @@ function toggleMenuModal(menuId: number) {
111
112
  closeMenuModal()
112
113
  } else {
113
114
  openMenuModal(menuId)
114
- if (getViewportWidth() < viewTablet) autoScroll()
115
+ if (isMobileNav()) autoScroll()
115
116
  }
116
117
  }
117
118
 
@@ -137,3 +138,29 @@ function findCollapsibleEl(navLink: HTMLElement | undefined) {
137
138
  }
138
139
  return null
139
140
  }
141
+
142
+ function closeMenuModalOnMouseLeave() {
143
+ if (ignoreHover()) return
144
+ closeMenuModal()
145
+ }
146
+ function keepMenuModalOpenOnMouseOver() {
147
+ if (ignoreHover()) return
148
+ open()
149
+ }
150
+
151
+ let isTouchStart: ReturnType<typeof setTimeout> | undefined
152
+ function ignoreHoverOnTouchStart() {
153
+ isTouchStart = setTimeout(() => {
154
+ isTouchStart = undefined
155
+ }, 1000)
156
+ }
157
+ function openMenuModalOnMouseEnter(menuId: number) {
158
+ if (ignoreHover()) return
159
+ openMenuModal(menuId)
160
+ }
161
+ function ignoreHover() {
162
+ return isTouchStart || isMobileNav()
163
+ }
164
+ function isMobileNav() {
165
+ return getViewportWidth() <= viewTablet
166
+ }
package/MenuModal.tsx CHANGED
@@ -7,7 +7,7 @@ import { viewDesktop, viewTablet } from './Layout'
7
7
  import { ExternalLinks } from './ExternalLinks'
8
8
  import { Style } from './utils/Style'
9
9
  import { NavigationWithColumnLayout } from './MenuModal/NavigationWithColumnLayout'
10
- import { closeMenuModal, keepMenuModalOpen } from './MenuModal/toggleMenuModal'
10
+ import { closeMenuModal, closeMenuModalOnMouseLeave, keepMenuModalOpenOnMouseOver } from './MenuModal/toggleMenuModal'
11
11
  import { EditLink } from './EditLink'
12
12
 
13
13
  function MenuModal({ isTopNav }: { isTopNav: boolean }) {
@@ -27,8 +27,8 @@ function MenuModal({ isTopNav }: { isTopNav: boolean }) {
27
27
  transitionProperty: 'opacity',
28
28
  transitionTimingFunction: 'ease',
29
29
  }}
30
- onMouseOver={() => keepMenuModalOpen()}
31
- onMouseLeave={closeMenuModal}
30
+ onMouseOver={keepMenuModalOpenOnMouseOver}
31
+ onMouseLeave={closeMenuModalOnMouseLeave}
32
32
  >
33
33
  <div
34
34
  id="menu-modal-scroll-container"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brillout/docpress",
3
- "version": "0.15.13-commit-9b3f898",
3
+ "version": "0.15.13-commit-39924f0",
4
4
  "type": "module",
5
5
  "dependencies": {
6
6
  "@brillout/picocolors": "^1.0.10",
@@ -1,4 +1,4 @@
1
1
  export function getViewportWidth(): number {
2
- // `window.innerWidth` inlcudes scrollbar width: https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
3
- return document.documentElement.clientWidth
2
+ // Width without scrollbar
3
+ return document.documentElement.scrollWidth
4
4
  }