diff --git a/packages/duoyun-ui/package.json b/packages/duoyun-ui/package.json index af249097..2371999a 100644 --- a/packages/duoyun-ui/package.json +++ b/packages/duoyun-ui/package.json @@ -1,6 +1,6 @@ { "name": "duoyun-ui", - "version": "1.1.6", + "version": "1.1.7", "description": "A lightweight desktop UI component library, implemented using Gem", "keywords": [ "frontend", @@ -48,7 +48,7 @@ "elkjs": "^0.7.1" }, "peerDependencies": { - "@mantou/gem": "^1.7.2" + "@mantou/gem": "^1.7.6" }, "devDependencies": { "@esm-bundle/chai": "^4.3.4-fix.0", diff --git a/packages/gem-book/src/element/elements/icons.ts b/packages/gem-book/src/element/elements/icons.ts index de7a415a..21602ff2 100644 --- a/packages/gem-book/src/element/elements/icons.ts +++ b/packages/gem-book/src/element/elements/icons.ts @@ -1,6 +1,18 @@ import { raw } from '@mantou/gem'; export const icons = { + menu: raw` + + + + + `, + close: raw` + + + + + `, i18n: raw` diff --git a/packages/gem-book/src/element/elements/nav.ts b/packages/gem-book/src/element/elements/nav.ts index dee9c51a..92d1b45c 100644 --- a/packages/gem-book/src/element/elements/nav.ts +++ b/packages/gem-book/src/element/elements/nav.ts @@ -16,6 +16,7 @@ import { capitalize, isSameOrigin } from '../lib/utils'; import { bookStore } from '../store'; import { icons } from './icons'; +import { sidebarStore, toggleSidebar } from './sidebar'; import '@mantou/gem/elements/link'; import '@mantou/gem/elements/use'; @@ -28,6 +29,7 @@ import './nav-logo'; */ @customElement('gem-book-nav') @connectStore(bookStore) +@connectStore(sidebarStore) export class Nav extends GemElement { @boolattribute logo: boolean; @@ -148,7 +150,15 @@ export class Nav extends GemElement { gem-use { width: 1em; } + .menu { + display: none; + width: 2.25rem; + margin-inline-end: 1rem; + } @media ${mediaQuery.PHONE} { + .menu { + display: block; + } gem-book-nav-logo + .item { margin-left: 0; } @@ -160,6 +170,7 @@ export class Nav extends GemElement { } } + ${this.logo ? html`` : ''} ${internals.map(this.renderInternalItem)} diff --git a/packages/gem-book/src/element/elements/sidebar.ts b/packages/gem-book/src/element/elements/sidebar.ts index e4c3a74b..d77e6cbb 100644 --- a/packages/gem-book/src/element/elements/sidebar.ts +++ b/packages/gem-book/src/element/elements/sidebar.ts @@ -1,4 +1,17 @@ -import { html, GemElement, customElement, TemplateResult, connectStore, classMap } from '@mantou/gem'; +import { + html, + GemElement, + customElement, + TemplateResult, + connectStore, + classMap, + state, + createStore, + connect, + updateStore, + history, + disconnect, +} from '@mantou/gem'; import { mediaQuery } from '@mantou/gem/helper/mediaquery'; import { NavItem } from '../../common/config'; @@ -13,9 +26,17 @@ import '@mantou/gem/elements/use'; import './side-link'; import './nav-logo'; +export const sidebarStore = createStore({ open: false }); + +const closeSidebar = () => updateStore(sidebarStore, { open: false }); +export const toggleSidebar = () => updateStore(sidebarStore, { open: !sidebarStore.open }); + @customElement('gem-book-sidebar') @connectStore(bookStore) +@connectStore(sidebarStore) export class SideBar extends GemElement { + @state open: boolean; + #toggleLinks = (e: MouseEvent) => { const ele = e.target as HTMLDivElement; ele.classList.toggle('close'); @@ -72,6 +93,7 @@ export class SideBar extends GemElement { }; render() { + this.open = sidebarStore.open; return html`