From 3e40c0c32d6ec30ff7c157d3492ac6a1c39aa16e Mon Sep 17 00:00:00 2001 From: AC-0308 Date: Thu, 14 Aug 2025 20:25:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(menu):=20=E2=9C=A8=20=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0small=E5=B0=BA=E5=AF=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/opendesign/src/_styles/mixin.scss | 8 +- packages/opendesign/src/_utils/dom.ts | 11 ++ packages/opendesign/src/menu/OMenu.vue | 34 +++- packages/opendesign/src/menu/OMenuItem.vue | 36 ++-- packages/opendesign/src/menu/OSubMenu.vue | 71 +++++--- .../src/menu/__demo__/IndexMenu.vue | 8 + .../opendesign/src/menu/__demo__/MenuSize.vue | 154 ++++++++++++++++++ .../src/menu/__demo__/RecursiveSubMenu.vue | 29 ++++ .../opendesign/src/menu/__demo__/utils.ts | 64 ++++++++ packages/opendesign/src/menu/index.ts | 1 + packages/opendesign/src/menu/provide.ts | 15 +- packages/opendesign/src/menu/style/media.scss | 26 ++- packages/opendesign/src/menu/style/style.scss | 99 ++++++++--- packages/opendesign/src/menu/style/var.scss | 67 +++++++- packages/opendesign/src/menu/types.ts | 11 ++ packages/portal/package.json | 2 +- 16 files changed, 555 insertions(+), 81 deletions(-) create mode 100644 packages/opendesign/src/menu/__demo__/MenuSize.vue create mode 100644 packages/opendesign/src/menu/__demo__/RecursiveSubMenu.vue create mode 100644 packages/opendesign/src/menu/__demo__/utils.ts diff --git a/packages/opendesign/src/_styles/mixin.scss b/packages/opendesign/src/_styles/mixin.scss index cbdf2c02..f100fd65 100644 --- a/packages/opendesign/src/_styles/mixin.scss +++ b/packages/opendesign/src/_styles/mixin.scss @@ -22,7 +22,13 @@ $breakpoints: ( '<=laptop': (0, 1440px), '>laptop': 1441px, 'pad-laptop': (601px, 1440px), - 'pad_v-laptop': (841px, 1440px) + 'pad_v-laptop': (841px, 1440px), + 'pad_v-pc_s': (841px, 1680px), + 'pc_s': (1441px, 1680px), + '<=pc_s': (0px, 1680px), + 'pc_l': (1681px, 1920px), + '>pc_s': 1681px, + 'laptop-pc_s': (1201px, 1680px) ); @mixin respond-to($breakname) { diff --git a/packages/opendesign/src/_utils/dom.ts b/packages/opendesign/src/_utils/dom.ts index 77f9c9c5..b2ea905a 100644 --- a/packages/opendesign/src/_utils/dom.ts +++ b/packages/opendesign/src/_utils/dom.ts @@ -189,3 +189,14 @@ export function scrollTo(y: number, opts: ScrollTopOptions) { throttleRAF(frameFn)(); }); } + +/*判断一个元素是否触发溢出隐藏*/ +export function isOverflown(element?: HTMLElement) { + if (!element) { + return false; + } + return ( + element.scrollWidth > element.clientWidth || + element.scrollHeight > element.clientHeight + ); +} diff --git a/packages/opendesign/src/menu/OMenu.vue b/packages/opendesign/src/menu/OMenu.vue index 396cccdd..20ef636a 100644 --- a/packages/opendesign/src/menu/OMenu.vue +++ b/packages/opendesign/src/menu/OMenu.vue @@ -1,9 +1,11 @@ diff --git a/packages/opendesign/src/menu/OMenuItem.vue b/packages/opendesign/src/menu/OMenuItem.vue index 3bc5685e..6e2363a5 100644 --- a/packages/opendesign/src/menu/OMenuItem.vue +++ b/packages/opendesign/src/menu/OMenuItem.vue @@ -1,8 +1,9 @@