From e7827bf2868c6592da7302c1725b297c115b4d4e Mon Sep 17 00:00:00 2001 From: catouse Date: Fri, 2 Aug 2024 03:08:06 +0000 Subject: [PATCH] deploy: 6976e82948533f8639bd22b04262badc500871ca --- dev/404.html | 6 +- ...gw.js => guide_start_index.md.CCziB0kD.js} | 22 +++--- ... => guide_start_index.md.CCziB0kD.lean.js} | 22 +++--- dev/guide/config/base/color.html | 6 +- dev/guide/config/base/font.html | 6 +- dev/guide/config/base/rounded.html | 6 +- dev/guide/config/base/screens.html | 6 +- dev/guide/config/base/shadow.html | 6 +- dev/guide/config/base/spacing.html | 6 +- dev/guide/customize/build.html | 6 +- dev/guide/customize/dev.html | 6 +- dev/guide/customize/exts-lib.html | 6 +- dev/guide/index.html | 6 +- dev/guide/start/compatibility.html | 6 +- dev/guide/start/index.html | 10 +-- dev/guide/start/intro.html | 6 +- dev/guide/start/tutorial.html | 6 +- dev/hashmap.json | 2 +- dev/index.html | 6 +- dev/lib/basic/core/cash.html | 6 +- dev/lib/basic/core/component.html | 10 +-- dev/lib/basic/core/css-component.html | 8 +-- dev/lib/basic/core/react.html | 6 +- dev/lib/basic/core/zui-create.html | 6 +- dev/lib/basic/core/zui-on.html | 6 +- dev/lib/basic/core/zui-toggle.html | 6 +- dev/lib/components/alert/index.html | 6 +- dev/lib/components/avatar-group/index.html | 8 +-- dev/lib/components/avatar/index.html | 8 +-- dev/lib/components/breadcrumb/index.html | 6 +- dev/lib/components/btn-group/index.html | 6 +- dev/lib/components/button/index.html | 6 +- dev/lib/components/color-picker/index.html | 6 +- dev/lib/components/contextmenu/index.html | 6 +- dev/lib/components/dashboard/index.html | 6 +- dev/lib/components/dropdown/index.html | 6 +- dev/lib/components/dtable/index.html | 6 +- dev/lib/components/dtable/plugins.html | 6 +- dev/lib/components/file-selector/index.html | 8 +-- dev/lib/components/kanban/index.html | 6 +- dev/lib/components/label/index.html | 8 +-- dev/lib/components/menu/index.html | 6 +- dev/lib/components/menu/js.html | 6 +- dev/lib/components/messager/index.html | 8 +-- dev/lib/components/modal/index.html | 8 +-- dev/lib/components/modal/trigger.html | 6 +- dev/lib/components/nav/index.html | 10 +-- dev/lib/components/nav/js.html | 6 +- dev/lib/components/pager/index.html | 8 +-- dev/lib/components/pager/js.html | 6 +- dev/lib/components/panel/index.html | 8 +-- dev/lib/components/progress-circle/index.html | 8 +-- dev/lib/components/progress/index.html | 6 +- dev/lib/components/scrollbar/index.html | 6 +- dev/lib/components/search-box/index.html | 8 +-- dev/lib/components/table/index.html | 10 +-- dev/lib/components/tabs/index.html | 8 +-- dev/lib/components/toolbar/index.html | 8 +-- dev/lib/components/toolbar/js.html | 6 +- dev/lib/components/tooltip/index.html | 8 +-- dev/lib/components/tree/index.html | 6 +- dev/lib/components/upload-imgs/index.html | 6 +- dev/lib/components/upload/index.html | 6 +- dev/lib/forms/checkbox/index.html | 8 +-- dev/lib/forms/checkbox/switch.html | 8 +-- dev/lib/forms/datetime-picker/date.html | 8 +-- dev/lib/forms/datetime-picker/datetime.html | 8 +-- dev/lib/forms/datetime-picker/time.html | 8 +-- dev/lib/forms/form-control/index.html | 8 +-- dev/lib/forms/form/index.html | 6 +- dev/lib/forms/input-control/index.html | 8 +-- dev/lib/forms/input-group/index.html | 8 +-- dev/lib/forms/picker/index.html | 8 +-- dev/lib/helpers/helpers/date-helper.html | 6 +- dev/lib/helpers/helpers/string-helper.html | 6 +- dev/lib/helpers/store/index.html | 6 +- dev/lib/index.html | 6 +- dev/public/zui/icons/fontawesome-license.html | 6 +- dev/themes/index.html | 6 +- .../backgrounds/utilities/index.html | 6 +- .../borders/utilities/border-color.html | 6 +- .../borders/utilities/border-radius.html | 6 +- .../borders/utilities/border-width.html | 6 +- dev/utilities/borders/utilities/divider.html | 6 +- .../borders/utilities/ring-color.html | 6 +- .../borders/utilities/ring-offset.html | 6 +- .../borders/utilities/ring-width.html | 6 +- .../effects/utilities/animation.html | 6 +- dev/utilities/effects/utilities/filter.html | 6 +- dev/utilities/effects/utilities/opacity.html | 6 +- dev/utilities/effects/utilities/shadow.html | 6 +- .../effects/utilities/transform.html | 6 +- .../effects/utilities/transition.html | 6 +- .../flex/utilities/align-content.html | 6 +- dev/utilities/flex/utilities/align-items.html | 6 +- dev/utilities/flex/utilities/align-self.html | 6 +- dev/utilities/flex/utilities/basis.html | 6 +- dev/utilities/flex/utilities/direction.html | 6 +- dev/utilities/flex/utilities/flex.html | 6 +- dev/utilities/flex/utilities/gap.html | 6 +- dev/utilities/flex/utilities/grow.html | 6 +- .../flex/utilities/justify-content.html | 6 +- dev/utilities/flex/utilities/order.html | 6 +- dev/utilities/flex/utilities/shrink.html | 6 +- dev/utilities/flex/utilities/wrap.html | 6 +- dev/utilities/index.html | 6 +- .../interactivity/utilities/cursor.html | 8 +-- .../interactivity/utilities/disabled.html | 8 +-- .../interactivity/utilities/loading.html | 8 +-- .../utilities/pointer-events.html | 8 +-- .../interactivity/utilities/scroll.html | 6 +- .../interactivity/utilities/state.html | 8 +-- .../interactivity/utilities/user-select.html | 8 +-- .../layout/utilities/aspect-ratio.html | 8 +-- dev/utilities/layout/utilities/container.html | 8 +-- dev/utilities/layout/utilities/display.html | 6 +- dev/utilities/layout/utilities/floats.html | 6 +- .../layout/utilities/object-fit.html | 6 +- dev/utilities/layout/utilities/overflow.html | 8 +-- dev/utilities/layout/utilities/position.html | 8 +-- .../utilities/top-right-bottom-left.html | 8 +-- .../layout/utilities/visibility.html | 8 +-- dev/utilities/layout/utilities/z-index.html | 8 +-- dev/utilities/sizing/utilities/height.html | 6 +- dev/utilities/sizing/utilities/width.html | 6 +- dev/utilities/skin/utilities/ghost.html | 8 +-- dev/utilities/skin/utilities/outline.html | 8 +-- dev/utilities/skin/utilities/pale.html | 8 +-- dev/utilities/skin/utilities/solid.html | 8 +-- dev/utilities/skin/utilities/surface.html | 8 +-- dev/utilities/spacing/utilities/margin.html | 8 +-- dev/utilities/spacing/utilities/padding.html | 8 +-- dev/utilities/spacing/utilities/space.html | 8 +-- .../typography/utilities/font-family.html | 8 +-- .../typography/utilities/font-size.html | 8 +-- .../typography/utilities/font-weight.html | 8 +-- .../typography/utilities/leading.html | 8 +-- .../typography/utilities/line-clamp.html | 8 +-- .../typography/utilities/list-style.html | 8 +-- .../typography/utilities/text-align.html | 8 +-- .../typography/utilities/text-color.html | 6 +- .../typography/utilities/text-decoration.html | 8 +-- .../typography/utilities/text-overflow.html | 8 +-- .../typography/utilities/text-transform.html | 8 +-- .../typography/utilities/vertical-align.html | 8 +-- .../typography/utilities/whitespace.html | 14 ++-- .../typography/utilities/word-break.html | 12 ++-- dev/zui-3.0.0.zip | Bin 982613 -> 983785 bytes dev/zui/zui.esm.js | 65 ++++++++++-------- dev/zui/zui.esm.js.map | 2 +- dev/zui/zui.js | 2 +- dev/zui/zui.js.map | 2 +- 152 files changed, 565 insertions(+), 556 deletions(-) rename dev/assets/{guide_start_index.md.DX2noFgw.js => guide_start_index.md.CCziB0kD.js} (95%) rename dev/assets/{guide_start_index.md.DX2noFgw.lean.js => guide_start_index.md.CCziB0kD.lean.js} (87%) diff --git a/dev/404.html b/dev/404.html index 97550ed1c1..4493599c25 100644 --- a/dev/404.html +++ b/dev/404.html @@ -11,14 +11,14 @@ - - + +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/assets/guide_start_index.md.DX2noFgw.js b/dev/assets/guide_start_index.md.CCziB0kD.js similarity index 95% rename from dev/assets/guide_start_index.md.DX2noFgw.js rename to dev/assets/guide_start_index.md.CCziB0kD.js index 842def802c..c05385f4b1 100644 --- a/dev/assets/guide_start_index.md.DX2noFgw.js +++ b/dev/assets/guide_start_index.md.CCziB0kD.js @@ -14,7 +14,7 @@ import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f a <a class="btn" href="/">访问 ZUI 网站</a> <script src="./zui/zui.js"></script> </body> -</html>

使用 CDN

使用 CDN 可以快速使用 ZUI,与下载使用基本一样,只需要将相关资源文件替换为 CDN 上的地址即可:

`,6),m={class:"vp-code-group vp-adaptive-theme"},B=a('
',1),b={class:"blocks"},v={class:"language-html vp-adaptive-theme active"},S=s("button",{title:"Copy Code",class:"copy"},null,-1),I=s("span",{class:"lang"},"html",-1),q={class:"shiki shiki-themes github-light github-dark vp-code"},P=a('<!doctype html>',1),z=a('<html lang="zh-CN">',1),V=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),N=a(' <meta charset="utf-8">',1),f=a(' <meta name="viewport" content="width=device-width, initial-scale=1">',1),w=a(' <title>ZUI</title>',1),R={class:"line highlighted"},U=a(' <link rel="stylesheet" href=',7),j={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},x=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Z=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),M=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),H=a(' <h1>ZUI is awesome!</h1>',1),J=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),$={class:"line highlighted"},G=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),W=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),L=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),O=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),X={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Y=a(' crossorigin="anonymous"></script>',6),K=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Q=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),ss={class:"language-html vp-adaptive-theme"},is=s("button",{title:"Copy Code",class:"copy"},null,-1),as=s("span",{class:"lang"},"html",-1),ts={class:"shiki shiki-themes github-light github-dark vp-code"},hs=a('<!doctype html>',1),ns=a('<html lang="zh-CN">',1),ls=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ks=a(' <meta charset="utf-8">',1),ps=a(' <meta name="viewport" content="width=device-width, initial-scale=1">',1),es=a(' <title>ZUI</title>',1),Es={class:"line highlighted"},ds=a(' <link rel="stylesheet" href=',7),rs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},gs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),_s=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),os=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ys=a(' <h1>ZUI is awesome!</h1>',1),cs=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),Fs={class:"line highlighted"},us=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Cs=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),As=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Ts=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Ds={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},ms=a(' crossorigin="anonymous"></script>',6),Bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),vs={class:"language-html vp-adaptive-theme"},Ss=s("button",{title:"Copy Code",class:"copy"},null,-1),Is=s("span",{class:"lang"},"html",-1),qs={class:"shiki shiki-themes github-light github-dark vp-code"},Ps=a('<!doctype html>',1),zs=a('<html lang="zh-CN">',1),Vs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),Ns=a(' <meta charset="utf-8">',1),fs=a(' <meta name="viewport" content="width=device-width, initial-scale=1">',1),ws=a(' <title>ZUI</title>',1),Rs={class:"line highlighted"},Us=a(' <link rel="stylesheet" href=',7),js={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},xs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Zs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Ms=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),Hs=a(' <h1>ZUI is awesome!</h1>',1),Js=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),$s={class:"line highlighted"},Gs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Ws=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Ls=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Os=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Xs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Ys=a(' crossorigin="anonymous"></script>',6),Ks=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Qs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),si=a(`

使用 JS 组件

无论是下载还是使用 CDN,导入 zui.js 之后,你就可以使用 ZUI 中的 JS 组件了,ZUI 提供的所有 JS 辅助方法和组件类都在全局对象 zui 上进行访问,例如:

html
<nav id="myNav"></nav>
+</html>

使用 CDN

使用 CDN 可以快速使用 ZUI,与下载使用基本一样,只需要将相关资源文件替换为 CDN 上的地址即可:

`,6),m={class:"vp-code-group vp-adaptive-theme"},B=a('
',1),b={class:"blocks"},v={class:"language-html vp-adaptive-theme active"},S=s("button",{title:"Copy Code",class:"copy"},null,-1),I=s("span",{class:"lang"},"html",-1),q={class:"shiki shiki-themes github-light github-dark vp-code"},P=a('<!doctype html>',1),z=a('<html lang="zh-CN">',1),V=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),f=a(' <meta charset="utf-8">',1),N=a(' <meta name="viewport" content="width=device-width, initial-scale=1">',1),w=a(' <title>ZUI</title>',1),R={class:"line highlighted"},x=a(' <link rel="stylesheet" href=',7),U={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},j=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Z=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),M=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),J=a(' <h1>ZUI is awesome!</h1>',1),H=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),Y={class:"line highlighted"},$=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),W=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),L=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),O=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Q={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},G=a(' crossorigin="anonymous"></script>',6),K=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),X=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),ss={class:"language-html vp-adaptive-theme"},is=s("button",{title:"Copy Code",class:"copy"},null,-1),as=s("span",{class:"lang"},"html",-1),ts={class:"shiki shiki-themes github-light github-dark vp-code"},hs=a('<!doctype html>',1),ns=a('<html lang="zh-CN">',1),ls=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ks=a(' <meta charset="utf-8">',1),ps=a(' <meta name="viewport" content="width=device-width, initial-scale=1">',1),es=a(' <title>ZUI</title>',1),Es={class:"line highlighted"},ds=a(' <link rel="stylesheet" href=',7),rs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},gs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),_s=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),os=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ys=a(' <h1>ZUI is awesome!</h1>',1),cs=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),Fs={class:"line highlighted"},us=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Cs=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),As=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Ts=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Ds={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},ms=a(' crossorigin="anonymous"></script>',6),Bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),vs={class:"language-html vp-adaptive-theme"},Ss=s("button",{title:"Copy Code",class:"copy"},null,-1),Is=s("span",{class:"lang"},"html",-1),qs={class:"shiki shiki-themes github-light github-dark vp-code"},Ps=a('<!doctype html>',1),zs=a('<html lang="zh-CN">',1),Vs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),fs=a(' <meta charset="utf-8">',1),Ns=a(' <meta name="viewport" content="width=device-width, initial-scale=1">',1),ws=a(' <title>ZUI</title>',1),Rs={class:"line highlighted"},xs=a(' <link rel="stylesheet" href=',7),Us={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},js=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Zs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Ms=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),Js=a(' <h1>ZUI is awesome!</h1>',1),Hs=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),Ys={class:"line highlighted"},$s=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Ws=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Ls=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Os=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Qs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Gs=a(' crossorigin="anonymous"></script>',6),Ks=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Xs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),si=a(`

使用 JS 组件

无论是下载还是使用 CDN,导入 zui.js 之后,你就可以使用 ZUI 中的 JS 组件了,ZUI 提供的所有 JS 辅助方法和组件类都在全局对象 zui 上进行访问,例如:

html
<nav id="myNav"></nav>
 
 <script>
 const {Nav, Messager} = zui;
@@ -54,17 +54,17 @@ import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f a
 const myTable = new DTable('#myTable', {...});
`,8),di=JSON.parse('{"title":"快速上手","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/index.md","filePath":"guide/start/index.md","lastUpdated":null}'),ki={name:"guide/start/index.md"},ri=Object.assign(ki,{setup(pi){return(t,ei)=>{const e=p("Example"),k=p("PluginTabsTab"),E=p("PluginTabs");return g(),d("div",null,[o,y,c,s("div",F,[s("a",{class:"rounded-full btn primary size-lg",href:r(_)(`/zui-${t.zui.version}.zip`),download:""},[C,i(" 点击下载")],8,u),s("a",{class:"rounded-full btn outline size-lg",href:`https://github.com/easysoft/zui/releases/tag/v${t.zui.version}`,target:"_blank"},[T,i(" 从 GitHub 下载")],8,A)]),D,s("div",m,[B,s("div",b,[s("div",v,[S,I,s("pre",q,[s("code",null,[P,i(` `),z,i(` `),V,i(` -`),N,i(` `),f,i(` +`),N,i(` `),w,i(` -`),s("span",R,[U,s("span",j,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.css"',1),x]),i(` +`),s("span",R,[x,s("span",U,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.css"',1),j]),i(` `),Z,i(` `),M,i(` -`),H,i(` `),J,i(` -`),s("span",$,[G,W,L,O,s("span",X,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.js"',1),Y]),i(` +`),H,i(` +`),s("span",Y,[$,W,L,O,s("span",Q,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.js"',1),G]),i(` `),K,i(` -`),Q])])]),s("div",ss,[is,as,s("pre",ts,[s("code",null,[hs,i(` +`),X])])]),s("div",ss,[is,as,s("pre",ts,[s("code",null,[hs,i(` `),ns,i(` `),ls,i(` `),ks,i(` @@ -80,14 +80,14 @@ import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f a `),bs])])]),s("div",vs,[Ss,Is,s("pre",qs,[s("code",null,[Ps,i(` `),zs,i(` `),Vs,i(` -`),Ns,i(` `),fs,i(` +`),Ns,i(` `),ws,i(` -`),s("span",Rs,[Us,s("span",js,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.css"',1),xs]),i(` +`),s("span",Rs,[xs,s("span",Us,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.css"',1),js]),i(` `),Zs,i(` `),Ms,i(` -`),Hs,i(` `),Js,i(` -`),s("span",$s,[Gs,Ws,Ls,Os,s("span",Xs,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.js"',1),Ys]),i(` +`),Hs,i(` +`),s("span",Ys,[$s,Ws,Ls,Os,s("span",Qs,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.js"',1),Gs]),i(` `),Ks,i(` -`),Qs])])])])]),si,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[ii]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ai]),_:1})]),_:1}),ti,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[hi]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ni]),_:1})]),_:1}),li])}}});export{di as __pageData,ri as default}; +`),Xs])])])])]),si,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[ii]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ai]),_:1})]),_:1}),ti,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[hi]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ni]),_:1})]),_:1}),li])}}});export{di as __pageData,ri as default}; diff --git a/dev/assets/guide_start_index.md.DX2noFgw.lean.js b/dev/assets/guide_start_index.md.CCziB0kD.lean.js similarity index 87% rename from dev/assets/guide_start_index.md.DX2noFgw.lean.js rename to dev/assets/guide_start_index.md.CCziB0kD.lean.js index 2f72cbee51..142a08e326 100644 --- a/dev/assets/guide_start_index.md.DX2noFgw.lean.js +++ b/dev/assets/guide_start_index.md.CCziB0kD.lean.js @@ -1,4 +1,4 @@ -import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f as _}from"./chunks/framework.DeE3OwZJ.js";const o=s("h1",{id:"快速上手",tabindex:"-1"},[i("快速上手 "),s("a",{class:"header-anchor",href:"#快速上手","aria-label":'Permalink to "快速上手"'},"​")],-1),y=s("h2",{id:"下载使用",tabindex:"-1"},[i("下载使用 "),s("a",{class:"header-anchor",href:"#下载使用","aria-label":'Permalink to "下载使用"'},"​")],-1),c=s("p",null,"你可以从如下地址下载 ZUI 的最新版本:",-1),F={class:"gap-4 vp-raw row"},u=["href"],C=s("i",{class:"icon icon-download-alt icon-lg"},null,-1),A=["href"],T=s("i",{class:"icon icon-github icon-lg"},null,-1),D=a("",6),m={class:"vp-code-group vp-adaptive-theme"},B=a("",1),b={class:"blocks"},v={class:"language-html vp-adaptive-theme active"},S=s("button",{title:"Copy Code",class:"copy"},null,-1),I=s("span",{class:"lang"},"html",-1),q={class:"shiki shiki-themes github-light github-dark vp-code"},P=a("",1),z=a("",1),V=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),N=a("",1),f=a("",1),w=a("",1),R={class:"line highlighted"},U=a("",7),j={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},x=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Z=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),M=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),H=a("",1),J=a("",1),$={class:"line highlighted"},G=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),W=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),L=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),O=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),X={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Y=a("",6),K=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Q=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),ss={class:"language-html vp-adaptive-theme"},is=s("button",{title:"Copy Code",class:"copy"},null,-1),as=s("span",{class:"lang"},"html",-1),ts={class:"shiki shiki-themes github-light github-dark vp-code"},hs=a("",1),ns=a("",1),ls=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ks=a("",1),ps=a("",1),es=a("",1),Es={class:"line highlighted"},ds=a("",7),rs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},gs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),_s=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),os=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ys=a("",1),cs=a("",1),Fs={class:"line highlighted"},us=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Cs=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),As=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Ts=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Ds={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},ms=a("",6),Bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),vs={class:"language-html vp-adaptive-theme"},Ss=s("button",{title:"Copy Code",class:"copy"},null,-1),Is=s("span",{class:"lang"},"html",-1),qs={class:"shiki shiki-themes github-light github-dark vp-code"},Ps=a("",1),zs=a("",1),Vs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),Ns=a("",1),fs=a("",1),ws=a("",1),Rs={class:"line highlighted"},Us=a("",7),js={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},xs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Zs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Ms=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),Hs=a("",1),Js=a("",1),$s={class:"line highlighted"},Gs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Ws=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Ls=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Os=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Xs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Ys=a("",6),Ks=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Qs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),si=a("",8),ii=s("div",{"zui-create":"datePicker"},null,-1),ai=s("div",{class:"language-html vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"html"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div"),s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," zui-create"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"datePicker"'),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")])])])],-1),ti=s("p",null,[i("使用 "),s("code",null,"zui-create-"),i(" 来定义组件选项,例如:")],-1),hi=s("div",{"zui-create":"","zui-create-list":"{items: [{text: 'item1'}, {text: 'item2'}], onClickItem: (e) => console.log('You clicked', e)}"},null,-1),ni=s("div",{class:"language-html vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"html"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div"),s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," zui-create"),s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," zui-create-list"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"')]),i(` +import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f as _}from"./chunks/framework.DeE3OwZJ.js";const o=s("h1",{id:"快速上手",tabindex:"-1"},[i("快速上手 "),s("a",{class:"header-anchor",href:"#快速上手","aria-label":'Permalink to "快速上手"'},"​")],-1),y=s("h2",{id:"下载使用",tabindex:"-1"},[i("下载使用 "),s("a",{class:"header-anchor",href:"#下载使用","aria-label":'Permalink to "下载使用"'},"​")],-1),c=s("p",null,"你可以从如下地址下载 ZUI 的最新版本:",-1),F={class:"gap-4 vp-raw row"},u=["href"],C=s("i",{class:"icon icon-download-alt icon-lg"},null,-1),A=["href"],T=s("i",{class:"icon icon-github icon-lg"},null,-1),D=a("",6),m={class:"vp-code-group vp-adaptive-theme"},B=a("",1),b={class:"blocks"},v={class:"language-html vp-adaptive-theme active"},S=s("button",{title:"Copy Code",class:"copy"},null,-1),I=s("span",{class:"lang"},"html",-1),q={class:"shiki shiki-themes github-light github-dark vp-code"},P=a("",1),z=a("",1),V=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),f=a("",1),N=a("",1),w=a("",1),R={class:"line highlighted"},x=a("",7),U={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},j=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Z=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),M=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),J=a("",1),H=a("",1),Y={class:"line highlighted"},$=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),W=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),L=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),O=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Q={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},G=a("",6),K=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),X=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),ss={class:"language-html vp-adaptive-theme"},is=s("button",{title:"Copy Code",class:"copy"},null,-1),as=s("span",{class:"lang"},"html",-1),ts={class:"shiki shiki-themes github-light github-dark vp-code"},hs=a("",1),ns=a("",1),ls=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ks=a("",1),ps=a("",1),es=a("",1),Es={class:"line highlighted"},ds=a("",7),rs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},gs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),_s=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),os=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ys=a("",1),cs=a("",1),Fs={class:"line highlighted"},us=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Cs=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),As=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Ts=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Ds={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},ms=a("",6),Bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),vs={class:"language-html vp-adaptive-theme"},Ss=s("button",{title:"Copy Code",class:"copy"},null,-1),Is=s("span",{class:"lang"},"html",-1),qs={class:"shiki shiki-themes github-light github-dark vp-code"},Ps=a("",1),zs=a("",1),Vs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),fs=a("",1),Ns=a("",1),ws=a("",1),Rs={class:"line highlighted"},xs=a("",7),Us={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},js=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Zs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Ms=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),Js=a("",1),Hs=a("",1),Ys={class:"line highlighted"},$s=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Ws=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Ls=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Os=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Qs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Gs=a("",6),Ks=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Xs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),si=a("",8),ii=s("div",{"zui-create":"datePicker"},null,-1),ai=s("div",{class:"language-html vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"html"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div"),s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," zui-create"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"datePicker"'),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")])])])],-1),ti=s("p",null,[i("使用 "),s("code",null,"zui-create-"),i(" 来定义组件选项,例如:")],-1),hi=s("div",{"zui-create":"","zui-create-list":"{items: [{text: 'item1'}, {text: 'item2'}], onClickItem: (e) => console.log('You clicked', e)}"},null,-1),ni=s("div",{class:"language-html vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"html"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div"),s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," zui-create"),s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," zui-create-list"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"')]),i(` `),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," {")]),i(` `),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," items: [{text: 'item1'}, {text: 'item2'}],")]),i(` `),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," onClickItem: (e) => console.log('You clicked', e)")]),i(` @@ -6,17 +6,17 @@ import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f a `),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"'),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")])])])],-1),li=a("",8),di=JSON.parse('{"title":"快速上手","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/index.md","filePath":"guide/start/index.md","lastUpdated":null}'),ki={name:"guide/start/index.md"},ri=Object.assign(ki,{setup(pi){return(t,ei)=>{const e=p("Example"),k=p("PluginTabsTab"),E=p("PluginTabs");return g(),d("div",null,[o,y,c,s("div",F,[s("a",{class:"rounded-full btn primary size-lg",href:r(_)(`/zui-${t.zui.version}.zip`),download:""},[C,i(" 点击下载")],8,u),s("a",{class:"rounded-full btn outline size-lg",href:`https://github.com/easysoft/zui/releases/tag/v${t.zui.version}`,target:"_blank"},[T,i(" 从 GitHub 下载")],8,A)]),D,s("div",m,[B,s("div",b,[s("div",v,[S,I,s("pre",q,[s("code",null,[P,i(` `),z,i(` `),V,i(` -`),N,i(` `),f,i(` +`),N,i(` `),w,i(` -`),s("span",R,[U,s("span",j,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.css"',1),x]),i(` +`),s("span",R,[x,s("span",U,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.css"',1),j]),i(` `),Z,i(` `),M,i(` -`),H,i(` `),J,i(` -`),s("span",$,[G,W,L,O,s("span",X,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.js"',1),Y]),i(` +`),H,i(` +`),s("span",Y,[$,W,L,O,s("span",Q,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.js"',1),G]),i(` `),K,i(` -`),Q])])]),s("div",ss,[is,as,s("pre",ts,[s("code",null,[hs,i(` +`),X])])]),s("div",ss,[is,as,s("pre",ts,[s("code",null,[hs,i(` `),ns,i(` `),ls,i(` `),ks,i(` @@ -32,14 +32,14 @@ import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f a `),bs])])]),s("div",vs,[Ss,Is,s("pre",qs,[s("code",null,[Ps,i(` `),zs,i(` `),Vs,i(` -`),Ns,i(` `),fs,i(` +`),Ns,i(` `),ws,i(` -`),s("span",Rs,[Us,s("span",js,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.css"',1),xs]),i(` +`),s("span",Rs,[xs,s("span",Us,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.css"',1),js]),i(` `),Zs,i(` `),Ms,i(` -`),Hs,i(` `),Js,i(` -`),s("span",$s,[Gs,Ws,Ls,Os,s("span",Xs,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.js"',1),Ys]),i(` +`),Hs,i(` +`),s("span",Ys,[$s,Ws,Ls,Os,s("span",Qs,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.js"',1),Gs]),i(` `),Ks,i(` -`),Qs])])])])]),si,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[ii]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ai]),_:1})]),_:1}),ti,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[hi]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ni]),_:1})]),_:1}),li])}}});export{di as __pageData,ri as default}; +`),Xs])])])])]),si,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[ii]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ai]),_:1})]),_:1}),ti,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[hi]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ni]),_:1})]),_:1}),li])}}});export{di as __pageData,ri as default}; diff --git a/dev/guide/config/base/color.html b/dev/guide/config/base/color.html index 89187d41d9..9494cd4412 100644 --- a/dev/guide/config/base/color.html +++ b/dev/guide/config/base/color.html @@ -14,8 +14,8 @@ - - + + @@ -49,7 +49,7 @@ --color-primary-900-rgb: 88, 34, 133; --color-primary-950-rgb: 59, 14, 99; }

提示

在定义 CSS 变量覆盖调色板时,除了定义 50~950 的十六进制颜色外,还需要定义对应的 RGB 颜色,这是为了在一些特殊场景下通过改变透明度来实现颜色的变化。

注意

如果你需要自定义配色,建议只通过修改调色板来实现,不建议修改界面颜色,除非主题需要实现对比度更明显的风格,任何时候都不应该修改特殊颜色的定义。

更多关于主题的内容参考 主题 文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/config/base/font.html b/dev/guide/config/base/font.html index 65fe329515..f7eba9209c 100644 --- a/dev/guide/config/base/font.html +++ b/dev/guide/config/base/font.html @@ -14,8 +14,8 @@ - - + + @@ -44,7 +44,7 @@ 月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。
leading-relaxed
.leading-relaxed
宽松
line-height: line-height
So I started to walk into the water. I won't lie to you boys, I was terrified. But I pressed on, and as I made my way past the breakers a strange calm came over me. I don't know if it was divine intervention or the kinship of all living things but I tell you Jerry at that moment, I was a marine biologist.
 月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。
leading-loose
.leading-loose
松散
line-height: line-height
So I started to walk into the water. I won't lie to you boys, I was terrified. But I pressed on, and as I made my way past the breakers a strange calm came over me. I don't know if it was divine intervention or the kinship of all living things but I tell you Jerry at that moment, I was a marine biologist.
 月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。

在 ZUI 中可以通过 CSS 工具类来设置行高,详细用法参加 CSS 工具类 / 排版 / 行高 文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/config/base/rounded.html b/dev/guide/config/base/rounded.html index 4f3166b3f0..67d19ece9f 100644 --- a/dev/guide/config/base/rounded.html +++ b/dev/guide/config/base/rounded.html @@ -14,8 +14,8 @@ - - + + @@ -31,7 +31,7 @@ --radius-3xl: 1.5rem; --radius-full: 9999px; }

自定义主题

可以通过定制主题来修改圆角设置,具体参见 主题 文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/config/base/screens.html b/dev/guide/config/base/screens.html index 0846872fca..3a9b8600dc 100644 --- a/dev/guide/config/base/screens.html +++ b/dev/guide/config/base/screens.html @@ -14,8 +14,8 @@ - - + + @@ -54,7 +54,7 @@ --screen-xl: 1280px; --screen-2xl: 1536px; }

自定义主题

可以通过定制主题来修改屏幕断点设置,具体参见 主题 文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/config/base/shadow.html b/dev/guide/config/base/shadow.html index eeadb4949b..19180896ea 100644 --- a/dev/guide/config/base/shadow.html +++ b/dev/guide/config/base/shadow.html @@ -14,8 +14,8 @@ - - + + @@ -30,7 +30,7 @@ --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); --shadow-none: none; }

自定义主题

可以通过定制主题来修改阴影设置,具体参见 主题 文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/config/base/spacing.html b/dev/guide/config/base/spacing.html index 3b583f14c2..989fd1affa 100644 --- a/dev/guide/config/base/spacing.html +++ b/dev/guide/config/base/spacing.html @@ -14,14 +14,14 @@ - - + +
Skip to content

间距

间距配置

为了方便实现风格一致的交互界面,ZUI 预置了间距设置。下面为默认的间距配置:

名称
实际值
预览
0
width
px
width
0.5
width
1
width
1.5
width
2
width
2.5
width
3
width
3.5
width
4
width
5
width
6
width
7
width
8
width
9
width
10
width
11
width
12
width
14
width
16
width
20
width
24
width
28
width
32
width
36
width
40
width
44
width
48
width
52
width
56
width
60
width
64
width
72
width
80
width
96
width

4px 约定

通过上表可以看到,除了 0px 比较特殊的设置,其他间距实际值都是 4px 的倍数,这是有意设计,无论是设计还是开发都应该将间距为 4px 的倍数作为约定,这样更有利于实现风格一致的交互界面。

当以上间距无法满足要求时,如果需要引入新的间距值也应当遵从 4px 约定。

间距会影响所有相关 CSS 属性配置,包括 paddingmarginwidthheightmaxHeightgapinset 等。

使用间距

在 ZUI 中提供了大量 CSS 工具类,可以非常方便的来应用间距配置,包括:

如需了解,请参考对应的文档。

自定义间距

可以通过定制主题来修改间距设置,具体参见 主题 文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/customize/build.html b/dev/guide/customize/build.html index 2ebe9b11c4..7a99b50326 100644 --- a/dev/guide/customize/build.html +++ b/dev/guide/customize/build.html @@ -14,14 +14,14 @@ - - + +
Skip to content

打包

打包组件库

执行如下命令进行打包操作:

sh
pnpm build

该命令提供了一些参数用户个性化打包,例如打包命令后可以直接指定需要打包的组件库,通过 --name 来指定打包生成的文件名:

sh
pnpm build -- utilities dtable --name=zui-table

打包文档

执行如下命令进行打包文档网站:

sh
pnpm docs:build

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/customize/dev.html b/dev/guide/customize/dev.html index 24f130a052..ee0443d3d1 100644 --- a/dev/guide/customize/dev.html +++ b/dev/guide/customize/dev.html @@ -14,14 +14,14 @@ - - + +
Skip to content

开发

开发服务

执行如下命令启动开发服务:

shell
$ pnpm dev

开发服务器启动后,默认情况下可以通过网址:http://localhost:5173/ 来访问开发服务页面。通过页面上的组件导航,可以访问对应的组件开发页面。也可以将组件名附加到网址后面,直接访问对应的组件页面,例如 http://localhost:5173/button/

在开发服务页面上支持热更新,当开发文件变更后会自动反馈到开发服务页面上。

对组件进行开发调试

组件开发目录

ZUI3 每个组件在一个独立的目录内,拥有自己的 package.json 文件,使得组件可以独立作为 npm 包来使用,也可以单独作为子项目进行开发维护。

提示

通常组件通过在 package.json 文件中设置属性 private: true 来让包仅在 zui3 工作空间内可用,但组件仍然拥有作为公开的包发布到 npm 上进行独立使用。

文档开发服务

启动 ZUI 文档网站开发服务执行如下命令:

shell
$ pnpm docs:dev

此命令会先打包 ZUI 并启动文档开发服务器,默认情况下可以通过网址:http://localhost:5174/ 来访问文档开发服务页面。在文档开发服务启动时,修改文档源文件,会自动更新文档页面。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/customize/exts-lib.html b/dev/guide/customize/exts-lib.html index 55d094167e..1e18fb482b 100644 --- a/dev/guide/customize/exts-lib.html +++ b/dev/guide/customize/exts-lib.html @@ -14,8 +14,8 @@ - - + + @@ -23,7 +23,7 @@
Skip to content

组件库扩展

ZUI3 组件库内置了大量组件,并支持集中开发、调试和打包,其中打包还支持只选择指定的组件进行个性化定制,同步输出组件库文档。但当需求扩展到组件库之外时,就需要用到扩展组件库了。ZUI3 支持扩展组件库模式,可以从其他位置引入一个或多个组件库目录,享受集中开发、调试和打包。下面介绍扩展组件库的使用方法。

定义扩展库

扩展组件库可以来自本地系统的任意位置,只需要提供一个路径,例如:

txt
/Users/TaiJi/Projects/zui3_exts/lib/

扩展组件库的目录结构与 ZUI3 /lib/ 下的目录结构一致,下面的每个子目录为一个独立的组件,详细定义参考 开发文档

添加扩展库

zui3 项目根目录执行:

shell
$ pnpm extend-lib -- <ext_lib_path> <lib_name>

其中参数 ext_lib_path 为扩展组件库路径,<lib_name> 为扩展组件库名称。例如:

shell
$ pnpm extend-lib -- /Users/TaiJi/Projects/zui3_exts/lib/ zentao

执行上述命令之后,会将组件库目录文件拷贝到 zui3/lib_name 目录下,同时会在 zui3/exts/libs.json 文件中记录此扩展库的名称和路径。

json
{
     "zentao": "/Users/TaiJi/Projects/zui3_exts/lib/*"
 }

实际上,你也可以通过自己编辑这个文件来添加扩展库。

启动开发服务

要在开发模式中包含对扩展组件库的开发调试,只需要执行如下命令代替 pnpm dev 命令即可:

shell
$ pnpm dev:exts

当添加了多个扩展库时,上述命令会包含所有扩展库,有时只需要包含特定的扩展库,只需要自定义 --lib 参数即可:

shell
$ pnpm dev:exts --lib=zui,zentao

启动文档服务器

要在文档网站服务模式中包含对扩展组件库的文档支持,只需要如下命令代替 pnpm docs:dev 命令即可:

shell
$ pnpm docs:dev:exts

打包

打包时如果需要将扩展库中的组件也进行打包,则需要添加 --exts 参数,然后就可以在需要打包的组件清单中指定扩展库中的组件名称:

shell
$ pnpm build -- label @zentao/status-label --exts

如果不指定名称,则默认打包仍然只打包内置组件库的组件,例如下面的命令仍然相当于 pnpm build

shell
$ pnpm build -- --exts

如果需要将所有内置组件库和扩展库中的所有组件一并打包,可以使用如下命令:

shell
$ pnpm build -- zui+exts --exts --name=zentao

当添加了多个扩展库时,上述命令会包含所有扩展库,有时只需要包含特定的扩展库,只需要自定义 --exts 参数即可:

shell
$ pnpm build -- zui+exts --exts=zui,zentao

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/index.html b/dev/guide/index.html index 9c836648d6..2ea68b914c 100644 --- a/dev/guide/index.html +++ b/dev/guide/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/start/compatibility.html b/dev/guide/start/compatibility.html index aeaeecff81..a6a57f9d21 100644 --- a/dev/guide/start/compatibility.html +++ b/dev/guide/start/compatibility.html @@ -14,14 +14,14 @@ - - + +
Skip to content

兼容性

支持的浏览器

  • Chrome:84+
  • Firefox:63+
  • Safari:14.1+
  • Edge:84+
  • Chrome for Android:126+
  • iOS Safari:14.5+

用到的第三方库

在 ZUI 3 中使用了一些精心挑选的第三方库,这些库通常足够小巧但实用:

  • preact - 基于 Preact 实现了大部分 JS 组件,通过封装支持原生调用
  • cash-dom - 提供了大量辅助方法方便操作 DOM,同时提供了对 jQuery 的兼容实用方式
  • floating UI - 实现浮动交互定位,例如下拉菜单、工具提示等
  • tinykeys - 实现快捷键功能

技术栈

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/start/index.html b/dev/guide/start/index.html index 968cef50ad..1efaa475c1 100644 --- a/dev/guide/start/index.html +++ b/dev/guide/start/index.html @@ -12,10 +12,10 @@ - + - - + + @@ -36,7 +36,7 @@ <a class="btn" href="/">访问 ZUI 网站</a> <script src="./zui/zui.js"></script> </body> -</html>

使用 CDN

使用 CDN 可以快速使用 ZUI,与下载使用基本一样,只需要将相关资源文件替换为 CDN 上的地址即可:

html
<!doctype html>
+</html>

使用 CDN

使用 CDN 可以快速使用 ZUI,与下载使用基本一样,只需要将相关资源文件替换为 CDN 上的地址即可:

html
<!doctype html>
 <html lang="zh-CN">
   <head>
     <meta charset="utf-8">
@@ -108,7 +108,7 @@
 import 'zui/lib/dtable/css';
 
 const myTable = new DTable('#myTable', {...});

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/start/intro.html b/dev/guide/start/intro.html index f7cbef70fa..99014013e3 100644 --- a/dev/guide/start/intro.html +++ b/dev/guide/start/intro.html @@ -14,14 +14,14 @@ - - + +
Skip to content

介绍

ZUI 3 是一个的开源 UI 组件库,提供了大量实用组件,支持最大限度的定制,不依赖任何其他 JS 框架,可以在任何 Web 应用中通过原生的方式使用。

功能特性

  • 📡 统一的 UI 配置:基于 CSS 变量实现的全局 UI 配置,为组件提供了统一的风格基础,支持深色模式,方便定制主题;
  • 👔 丰富的 CSS 工具类:基于 Tailwind CSS 提供了丰富的 CSS 工具类,包括特别的语义化外观工具类,轻松实现常见布局、文字排版、动画、外观定义;
  • ⭐️ 实用的 CSS 组件:提供了大量实用的 CSS 组件,无需借助 JS 即可实现界面基本功能,例如按钮、表单、导航、卡片、表格等;
  • 💎 强大的 JS 组件:通过 JS 实现很多功能强大的组件,包括下拉菜单、工具提示、对话框、数据表格、文件上传等;
  • 📦 使用灵活:不依赖具体的框架,所有 CSS 工具类开箱即用,所有 JS 组件支持原生调用,丰富的引入方式,支持通过 ESM 导入,或者直接在浏览器中引用整个 JS 和 CSS,支持打包定制自己的组合版本。

与 ZUI1 的区别

相比较 ZUI 1,ZUI 3 是一个全新的更加现代的 UI 组件库,主要有如下区别:

区别ZUI 1ZUI 3
外部依赖jQuery
内部依赖Bootstrap 3
网格布局实现floatFlex
工具类部分样式、布局、排版工具类丰富的样式、布局、排版、交互效果工具类
主题定制CSS 覆盖CSS 变量
CSS 组件大部分由 Bootstrap 提供全新的 CSS 组件,更方便定制外观
JS 组件基于 jQuery 实现基于 Preact 实现,功能更强大

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/start/tutorial.html b/dev/guide/start/tutorial.html index c1a29125be..4763d899e6 100644 --- a/dev/guide/start/tutorial.html +++ b/dev/guide/start/tutorial.html @@ -14,8 +14,8 @@ - - + + @@ -238,7 +238,7 @@ /* Extend StepsEditor to zui object. */ $.extend(zui, {StepsEditor});

开发定制入门

参考打包开发扩展文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/hashmap.json b/dev/hashmap.json index 01a65f77e9..c8152a00af 100644 --- a/dev/hashmap.json +++ b/dev/hashmap.json @@ -1 +1 @@ -{"guide_config_base_font.md":"Ba4TxUmX","guide_start_intro.md":"DEIJsFre","guide_config_base_color.md":"B_i0YNBV","lib_components_color-picker_index.md":"TddEDwtA","lib_basic_core_css-component.md":"BwdGvlia","guide_config_base_screens.md":"CXV8MRfe","guide_start_index.md":"DX2noFgw","utilities_flex_utilities_basis.md":"CD8bfBkC","utilities_flex_utilities_align-self.md":"FvSQ-0Fm","utilities_borders_utilities_ring-color.md":"s0nb0vey","public_zui_icons_fontawesome-license.md":"gfk3cURr","lib_components_breadcrumb_index.md":"9pymY2C8","utilities_borders_utilities_border-color.md":"YFsIdVzo","utilities_flex_utilities_direction.md":"ByjEgbMo","lib_basic_core_zui-toggle.md":"D_sPxQQs","guide_index.md":"t3LZT4QY","index.md":"0I4m7CHi","lib_basic_core_zui-on.md":"IjDbHIdO","guide_config_base_spacing.md":"B653NiFv","lib_basic_core_cash.md":"Bzo_CH3I","guide_config_base_shadow.md":"BNzZgBvC","guide_customize_build.md":"BnMDMPqz","lib_basic_core_component.md":"uPNn0zXQ","lib_components_avatar_index.md":"7j-ew9BZ","lib_components_menu_js.md":"CtCBsfaZ","lib_components_modal_trigger.md":"BMBZZybJ","lib_components_messager_index.md":"BW-SbOyW","lib_components_scrollbar_index.md":"BjI3vUqu","lib_components_nav_js.md":"OePgMXXa","lib_components_pager_index.md":"D-bROEeS","lib_components_pager_js.md":"DDMQ9lXw","lib_helpers_helpers_string-helper.md":"me2jtoF5","lib_index.md":"Ci-MFpvh","lib_components_nav_index.md":"LeXRijcV","lib_components_search-box_index.md":"C6d4tMjv","themes_index.md":"BufleTaf","utilities_borders_utilities_ring-width.md":"DzwqJDAb","utilities_borders_utilities_border-radius.md":"Dh1Nfe3A","lib_components_table_index.md":"Ck9c8Ek4","lib_components_progress-circle_index.md":"B0UUIqGM","lib_components_modal_index.md":"CgbVseyc","lib_components_panel_index.md":"CoS14bNk","utilities_flex_utilities_align-items.md":"CoFxBC8U","lib_components_kanban_index.md":"BFBze8B1","utilities_flex_utilities_gap.md":"DArM8pom","utilities_flex_utilities_grow.md":"Cn0nOehN","utilities_flex_utilities_justify-content.md":"D4BVZfVC","utilities_flex_utilities_flex.md":"BlvjgLjv","utilities_flex_utilities_wrap.md":"DZ1moX26","utilities_flex_utilities_shrink.md":"CangfHwT","utilities_index.md":"CTpyUmIw","utilities_flex_utilities_order.md":"CfeTP7tL","utilities_interactivity_utilities_disabled.md":"CEB7Waub","utilities_interactivity_utilities_cursor.md":"DvV2lotG","utilities_interactivity_utilities_loading.md":"Da_3FM-1","utilities_interactivity_utilities_pointer-events.md":"EHN_kBvp","utilities_interactivity_utilities_scroll.md":"-0JODEPX","utilities_interactivity_utilities_state.md":"0ZTXUBo7","utilities_interactivity_utilities_user-select.md":"BrNPbIfK","utilities_layout_utilities_aspect-ratio.md":"_oWsoIYV","utilities_layout_utilities_floats.md":"pUvtfQiw","utilities_layout_utilities_container.md":"Bb3Lxa_7","utilities_layout_utilities_display.md":"DcXW9WtS","utilities_layout_utilities_top-right-bottom-left.md":"C3lYdIa5","utilities_layout_utilities_object-fit.md":"D4YmLxEC","utilities_layout_utilities_visibility.md":"CKuADuoh","utilities_layout_utilities_overflow.md":"DVHk2FQA","utilities_sizing_utilities_height.md":"CdF7aUuw","utilities_layout_utilities_z-index.md":"DKY1uWyd","utilities_skin_utilities_ghost.md":"DIt2ElJv","utilities_skin_utilities_outline.md":"bsC71Qhi","utilities_sizing_utilities_width.md":"DNXQWQFd","utilities_skin_utilities_pale.md":"D1L1NRKs","utilities_layout_utilities_position.md":"rEqgc51a","utilities_skin_utilities_solid.md":"Cst9ctTO","utilities_spacing_utilities_padding.md":"DuVwhAAe","utilities_spacing_utilities_margin.md":"C9jBOzP9","utilities_spacing_utilities_space.md":"xgZHI4vS","utilities_typography_utilities_font-size.md":"B3W8gyR3","utilities_typography_utilities_font-family.md":"BHWBVXg4","utilities_typography_utilities_font-weight.md":"CV3nf15_","utilities_typography_utilities_line-clamp.md":"CvO9OG4z","utilities_typography_utilities_leading.md":"DOlxRw-6","utilities_skin_utilities_surface.md":"CN20jMqq","utilities_typography_utilities_text-align.md":"CtJ4rtrI","utilities_typography_utilities_text-color.md":"D1fjRsa-","utilities_typography_utilities_text-decoration.md":"BvY6hqYi","utilities_typography_utilities_list-style.md":"LuK8VgZf","utilities_typography_utilities_text-transform.md":"CM7k043G","utilities_typography_utilities_vertical-align.md":"DiLQT3Ni","utilities_typography_utilities_whitespace.md":"BFKZWjDW","lib_components_tree_index.md":"Dn03SufJ","lib_basic_core_zui-create.md":"DLe7A4Hj","lib_forms_form_index.md":"sRq2u4jF","lib_components_alert_index.md":"Bep50ZBz","lib_forms_input-group_index.md":"BMbSYMAL","lib_helpers_helpers_date-helper.md":"8AhG85Op","lib_forms_input-control_index.md":"Cv0HAFHI","guide_customize_dev.md":"BHKWgm2m","lib_components_file-selector_index.md":"DvywDJ4t","lib_components_menu_index.md":"GncmWrZR","lib_components_dashboard_index.md":"DRaM25zK","lib_forms_checkbox_switch.md":"QH8sYaT3","lib_components_tooltip_index.md":"Co1ECN3g","lib_forms_datetime-picker_datetime.md":"CPkUUpoa","lib_forms_datetime-picker_time.md":"BTTIPCd8","lib_components_avatar-group_index.md":"BqwB9RZP","lib_components_button_index.md":"B_1XMQuI","lib_forms_checkbox_index.md":"D_VspyHI","guide_customize_exts-lib.md":"BKuxQGR7","guide_start_compatibility.md":"CltyrLny","guide_config_base_rounded.md":"-jZtXV-b","lib_forms_datetime-picker_date.md":"D59eL2rp","lib_components_upload_index.md":"CzVklHlh","utilities_effects_utilities_transition.md":"SqXrre1m","utilities_effects_utilities_animation.md":"B91izYvM","utilities_effects_utilities_opacity.md":"BcIL05hy","utilities_backgrounds_utilities_index.md":"83vrBdjK","utilities_effects_utilities_filter.md":"BECjG4KT","lib_helpers_store_index.md":"Bb0Q5VMq","utilities_borders_utilities_border-width.md":"DVKauZHZ","utilities_effects_utilities_transform.md":"DOI7WnD2","utilities_borders_utilities_ring-offset.md":"DVb4azgP","utilities_borders_utilities_divider.md":"khTQtOjv","lib_components_progress_index.md":"CEtektTK","utilities_flex_utilities_align-content.md":"BXGtlw9g","lib_components_toolbar_js.md":"ih1Bb-Rr","utilities_typography_utilities_text-overflow.md":"CCaD8PoB","utilities_typography_utilities_word-break.md":"BxSlEVBy","lib_components_toolbar_index.md":"DvojQFd3","lib_components_dtable_plugins.md":"CrBZnIMk","lib_basic_core_react.md":"BTwYD_hf","lib_components_tabs_index.md":"D-2YSS_0","lib_forms_form-control_index.md":"BiHmr69s","lib_components_contextmenu_index.md":"DmEkUwKC","utilities_effects_utilities_shadow.md":"CaSFSOMl","lib_components_label_index.md":"q76w0qb_","lib_components_btn-group_index.md":"5V7X7r4P","lib_components_upload-imgs_index.md":"erXa6IN9","lib_components_dropdown_index.md":"DbbvFq7u","lib_forms_picker_index.md":"DRGaAh8C","guide_start_tutorial.md":"CmfMgriO","lib_components_dtable_index.md":"BffsFMb4"} +{"lib_basic_core_cash.md":"Bzo_CH3I","guide_customize_dev.md":"BHKWgm2m","guide_customize_build.md":"BnMDMPqz","guide_customize_exts-lib.md":"BKuxQGR7","guide_start_tutorial.md":"CmfMgriO","index.md":"0I4m7CHi","lib_basic_core_zui-on.md":"IjDbHIdO","guide_index.md":"t3LZT4QY","guide_start_compatibility.md":"CltyrLny","guide_config_base_shadow.md":"BNzZgBvC","lib_basic_core_zui-toggle.md":"D_sPxQQs","guide_config_base_spacing.md":"B653NiFv","lib_basic_core_zui-create.md":"DLe7A4Hj","guide_start_index.md":"CCziB0kD","lib_basic_core_css-component.md":"BwdGvlia","lib_components_progress-circle_index.md":"B0UUIqGM","lib_components_progress_index.md":"CEtektTK","lib_components_scrollbar_index.md":"BjI3vUqu","lib_components_search-box_index.md":"C6d4tMjv","lib_components_toolbar_js.md":"ih1Bb-Rr","lib_components_tooltip_index.md":"Co1ECN3g","lib_components_tree_index.md":"Dn03SufJ","lib_components_upload-imgs_index.md":"erXa6IN9","lib_components_upload_index.md":"CzVklHlh","lib_components_btn-group_index.md":"5V7X7r4P","lib_components_tabs_index.md":"D-2YSS_0","utilities_typography_utilities_text-color.md":"D1fjRsa-","utilities_layout_utilities_visibility.md":"CKuADuoh","utilities_layout_utilities_z-index.md":"DKY1uWyd","lib_basic_core_component.md":"uPNn0zXQ","utilities_sizing_utilities_width.md":"DNXQWQFd","utilities_sizing_utilities_height.md":"CdF7aUuw","lib_basic_core_react.md":"BTwYD_hf","lib_forms_form-control_index.md":"BiHmr69s","utilities_flex_utilities_gap.md":"DArM8pom","lib_components_menu_index.md":"GncmWrZR","utilities_flex_utilities_order.md":"CfeTP7tL","lib_forms_form_index.md":"sRq2u4jF","utilities_interactivity_utilities_user-select.md":"BrNPbIfK","utilities_layout_utilities_aspect-ratio.md":"_oWsoIYV","utilities_effects_utilities_filter.md":"BECjG4KT","guide_config_base_screens.md":"CXV8MRfe","utilities_layout_utilities_floats.md":"pUvtfQiw","utilities_layout_utilities_object-fit.md":"D4YmLxEC","lib_forms_input-group_index.md":"BMbSYMAL","lib_forms_picker_index.md":"DRGaAh8C","lib_helpers_helpers_date-helper.md":"8AhG85Op","utilities_layout_utilities_overflow.md":"DVHk2FQA","lib_forms_checkbox_index.md":"D_VspyHI","lib_components_nav_js.md":"OePgMXXa","utilities_flex_utilities_align-items.md":"CoFxBC8U","utilities_typography_utilities_text-overflow.md":"CCaD8PoB","lib_components_pager_js.md":"DDMQ9lXw","utilities_layout_utilities_container.md":"Bb3Lxa_7","utilities_flex_utilities_wrap.md":"DZ1moX26","utilities_interactivity_utilities_pointer-events.md":"EHN_kBvp","utilities_interactivity_utilities_scroll.md":"-0JODEPX","lib_forms_datetime-picker_time.md":"BTTIPCd8","guide_config_base_font.md":"Ba4TxUmX","lib_components_pager_index.md":"D-bROEeS","lib_components_color-picker_index.md":"TddEDwtA","utilities_interactivity_utilities_loading.md":"Da_3FM-1","lib_components_breadcrumb_index.md":"9pymY2C8","guide_config_base_rounded.md":"-jZtXV-b","lib_components_dashboard_index.md":"DRaM25zK","utilities_interactivity_utilities_state.md":"0ZTXUBo7","lib_components_alert_index.md":"Bep50ZBz","lib_components_table_index.md":"Ck9c8Ek4","utilities_skin_utilities_pale.md":"D1L1NRKs","utilities_spacing_utilities_space.md":"xgZHI4vS","utilities_spacing_utilities_padding.md":"DuVwhAAe","utilities_typography_utilities_font-size.md":"B3W8gyR3","utilities_typography_utilities_font-weight.md":"CV3nf15_","lib_forms_datetime-picker_date.md":"D59eL2rp","utilities_typography_utilities_leading.md":"DOlxRw-6","utilities_skin_utilities_solid.md":"Cst9ctTO","utilities_typography_utilities_line-clamp.md":"CvO9OG4z","utilities_interactivity_utilities_cursor.md":"DvV2lotG","utilities_skin_utilities_surface.md":"CN20jMqq","utilities_typography_utilities_list-style.md":"LuK8VgZf","utilities_layout_utilities_position.md":"rEqgc51a","utilities_typography_utilities_text-align.md":"CtJ4rtrI","public_zui_icons_fontawesome-license.md":"gfk3cURr","themes_index.md":"BufleTaf","utilities_effects_utilities_opacity.md":"BcIL05hy","utilities_backgrounds_utilities_index.md":"83vrBdjK","lib_components_file-selector_index.md":"DvywDJ4t","utilities_borders_utilities_border-color.md":"YFsIdVzo","utilities_borders_utilities_border-radius.md":"Dh1Nfe3A","utilities_borders_utilities_border-width.md":"DVKauZHZ","utilities_borders_utilities_divider.md":"khTQtOjv","utilities_borders_utilities_ring-color.md":"s0nb0vey","utilities_borders_utilities_ring-offset.md":"DVb4azgP","utilities_layout_utilities_top-right-bottom-left.md":"C3lYdIa5","utilities_effects_utilities_shadow.md":"CaSFSOMl","guide_config_base_color.md":"B_i0YNBV","utilities_effects_utilities_animation.md":"B91izYvM","utilities_typography_utilities_text-decoration.md":"BvY6hqYi","lib_helpers_store_index.md":"Bb0Q5VMq","lib_components_dropdown_index.md":"DbbvFq7u","lib_components_avatar_index.md":"7j-ew9BZ","lib_components_toolbar_index.md":"DvojQFd3","utilities_typography_utilities_word-break.md":"BxSlEVBy","lib_index.md":"Ci-MFpvh","utilities_typography_utilities_text-transform.md":"CM7k043G","utilities_flex_utilities_flex.md":"BlvjgLjv","utilities_skin_utilities_ghost.md":"DIt2ElJv","utilities_flex_utilities_align-self.md":"FvSQ-0Fm","lib_components_panel_index.md":"CoS14bNk","lib_components_button_index.md":"B_1XMQuI","utilities_effects_utilities_transform.md":"DOI7WnD2","guide_start_intro.md":"DEIJsFre","utilities_flex_utilities_justify-content.md":"D4BVZfVC","utilities_typography_utilities_vertical-align.md":"DiLQT3Ni","lib_components_contextmenu_index.md":"DmEkUwKC","utilities_borders_utilities_ring-width.md":"DzwqJDAb","lib_components_modal_trigger.md":"BMBZZybJ","utilities_typography_utilities_whitespace.md":"BFKZWjDW","utilities_layout_utilities_display.md":"DcXW9WtS","lib_helpers_helpers_string-helper.md":"me2jtoF5","lib_forms_datetime-picker_datetime.md":"CPkUUpoa","utilities_effects_utilities_transition.md":"SqXrre1m","lib_forms_input-control_index.md":"Cv0HAFHI","lib_components_label_index.md":"q76w0qb_","lib_components_dtable_plugins.md":"CrBZnIMk","lib_components_nav_index.md":"LeXRijcV","lib_components_dtable_index.md":"BffsFMb4","lib_components_kanban_index.md":"BFBze8B1","utilities_flex_utilities_basis.md":"CD8bfBkC","lib_components_messager_index.md":"BW-SbOyW","utilities_interactivity_utilities_disabled.md":"CEB7Waub","utilities_flex_utilities_grow.md":"Cn0nOehN","utilities_flex_utilities_shrink.md":"CangfHwT","utilities_skin_utilities_outline.md":"bsC71Qhi","utilities_index.md":"CTpyUmIw","utilities_flex_utilities_align-content.md":"BXGtlw9g","utilities_flex_utilities_direction.md":"ByjEgbMo","lib_forms_checkbox_switch.md":"QH8sYaT3","utilities_typography_utilities_font-family.md":"BHWBVXg4","lib_components_modal_index.md":"CgbVseyc","lib_components_avatar-group_index.md":"BqwB9RZP","utilities_spacing_utilities_margin.md":"C9jBOzP9","lib_components_menu_js.md":"CtCBsfaZ"} diff --git a/dev/index.html b/dev/index.html index e7909636c4..809274f281 100644 --- a/dev/index.html +++ b/dev/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

ZUI 3

开箱即用的组合式前端 UI 框架

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/cash.html b/dev/lib/basic/core/cash.html index 2832247a16..90c6a2c7d9 100644 --- a/dev/lib/basic/core/cash.html +++ b/dev/lib/basic/core/cash.html @@ -14,8 +14,8 @@ - - + + @@ -82,7 +82,7 @@ /* 销毁。 */ datePicker.destroy();

辅助方法

$.fn.resize() 监听元素尺寸变化

定义:

ts
$.fn.resize(callback: ResizeObserverCallback): ResizeObserver;

参数

  • callback:回调函数,定义为 (entries: ResizeObserverEntry[], observer: ResizeObserver): void;

返回值ResizeObserverResizeObserver 对象。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/component.html b/dev/lib/basic/core/component.html index ed72b38f17..dee88e7046 100644 --- a/dev/lib/basic/core/component.html +++ b/dev/lib/basic/core/component.html @@ -14,8 +14,8 @@ - - + + @@ -76,7 +76,7 @@ * @param key 组件的唯一标识。 */ static query(element: HTMLElement | string, key?: string): Component; -}

创建组件实例

每个组件通常对应一个元素,只有使用对应元素创建了组件实例,组件才会生效,例如:

html
<nav id="myNav"></nav>
+}

创建组件实例

每个组件通常对应一个元素,只有使用对应元素创建了组件实例,组件才会生效,例如:

html
<nav id="myNav"></nav>
 
 <script>
 const nav = new zui.Nav('#myNav', {
@@ -85,7 +85,7 @@
         {text: 'Blog'},
     ]
 });
-</script>

另一种方式是通过 zui-create 属性来声明组件,例如:

html
<div zui-create="datePicker"></div>

调用组件方法

当创建了组件实例后,就可以调用组件实例上的方法,例如:

html
<nav id="myNav"></nav>
+</script>

另一种方式是通过 zui-create 属性来声明组件,例如:

html
<div zui-create="datePicker"></div>

调用组件方法

当创建了组件实例后,就可以调用组件实例上的方法,例如:

html
<nav id="myNav"></nav>
 <button id="myNavRenderBtn">重新渲染</button>
 
 <script>
@@ -117,7 +117,7 @@
 
 const nav = zui.Nav.get('#myNav');
 </script>

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/css-component.html b/dev/lib/basic/core/css-component.html index 8638723362..5001596661 100644 --- a/dev/lib/basic/core/css-component.html +++ b/dev/lib/basic/core/css-component.html @@ -14,14 +14,14 @@ - - + + -
Skip to content

CSS 组件

基本使用

CSS 组件通常提供了界面所需的基本功能,例如按钮、表单、导航、卡片、表格等,这些组件通常不需要 JS 的支持,只需要在 HTML 中使用对应的组件类名即可,例如按钮:

提示

一些 JS 组件也提供了纯 CSS 使用的方式,也就是说 CSS 组件也可能是一个 JS 组件。

组件样式

通用样式修饰

CSS 组件通常提供了多种样式修饰,例如按钮的颜色、大小、形状、状态等,大部分通用样式的修饰都可以通过 CSS 工具类来实现,例如:

专用样式修饰

部分组件提供了专用样式修饰类,这些类名通常为组件类加后缀实现,例如按钮组件的 btn-link

CSS 变量

CSS 组件通常提供了一些 CSS 变量用于自定义组件的样式,例如按钮组件提供了 --btn-bg 用于自定义按钮的颜色:

MIT License (MIT)

- +
Skip to content

CSS 组件

基本使用

CSS 组件通常提供了界面所需的基本功能,例如按钮、表单、导航、卡片、表格等,这些组件通常不需要 JS 的支持,只需要在 HTML 中使用对应的组件类名即可,例如按钮:

提示

一些 JS 组件也提供了纯 CSS 使用的方式,也就是说 CSS 组件也可能是一个 JS 组件。

组件样式

通用样式修饰

CSS 组件通常提供了多种样式修饰,例如按钮的颜色、大小、形状、状态等,大部分通用样式的修饰都可以通过 CSS 工具类来实现,例如:

专用样式修饰

部分组件提供了专用样式修饰类,这些类名通常为组件类加后缀实现,例如按钮组件的 btn-link

CSS 变量

CSS 组件通常提供了一些 CSS 变量用于自定义组件的样式,例如按钮组件提供了 --btn-bg 用于自定义按钮的颜色:

MIT License (MIT)

+ \ No newline at end of file diff --git a/dev/lib/basic/core/react.html b/dev/lib/basic/core/react.html index bb870b0542..6a7f3b7026 100644 --- a/dev/lib/basic/core/react.html +++ b/dev/lib/basic/core/react.html @@ -14,8 +14,8 @@ - - + + @@ -33,7 +33,7 @@ */ static renderHTML(options: object): string; }

React 组件相比较普通的组件有如下特点:

  • 组件采用 Preact 开发,当重新进行渲染时,只会更新组件的部分内容,而不是整个元素;
  • 组件对应的元素内部禁止直接进行修改,因为每次渲染时都会重新生成组件的内容。

React 组件实例上的 $ 属性是组件的 React 实例,可以通过这个属性来访问组件的属性和方法。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/zui-create.html b/dev/lib/basic/core/zui-create.html index d83a0a5e16..7ee0c89aa7 100644 --- a/dev/lib/basic/core/zui-create.html +++ b/dev/lib/basic/core/zui-create.html @@ -14,14 +14,14 @@ - - + +
Skip to content

便捷组件声明

在 ZUI 中,所有 JS 组件支持通过声明 zui-create 属性来自动创建,例如:

使用 zui-create-<component> 来定义组件选项,例如:

注意

通过 zui-create 创建的组件,只会在页面加载完成后自动扫描一次,如果需要在动态添加的元素上利用 zui-create 创建组件,需要手动执行 $(element).zuiInit() 初始化。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/zui-on.html b/dev/lib/basic/core/zui-on.html index 50b66e98e7..dc86fea249 100644 --- a/dev/lib/basic/core/zui-on.html +++ b/dev/lib/basic/core/zui-on.html @@ -14,14 +14,14 @@ - - + +
Skip to content

便捷事件绑定

介绍

便捷事件机制允许通过 HTML 元素属性 [zui-on-*] 来绑定事件。下面为一个例子:

上例中,通过 [zui-on-click] 属性绑定点击事件,通过属性指定需要执行的 JS 代码,从而实现当点击按钮时,将会弹出一个对话框。

提示

编辑事件机制实际原理为在 document 元素上绑定了一个事件监听器,当事件触发时,会检查事件源元素是否存在 [data-on-*] 属性,如果存在,则会根据 [data-on-*] 属性的值来执行 JS 代码。根据此原理,需要被监听的元素上的事件能够被冒泡到 document 上。

事件类型

在 ZUI3 中默认支持的便捷绑定事件类型包括:

  • click:点击事件;
  • inited:组件初始化事件;
  • change:变更事件。

自定义选项

除了可以直接指定要执行的 JS 代码,还可以通过一个对象来指定事件绑定选项,例如:

所有可用的选项包括:

选项说明
on事件类型,必须,目前支持点击('click')和变更('change')事件
selector事件是否仅能触发在符合指定选择器的内部元素上,相当于事件委托
do要执行的 JS 代码,可选
call要执行的回调函数,可选
params需要传递给 JS 代码的参数,多个参数使用 , 分隔,也可以通过 JSON 数组的形式指定
if在执行 JS 代码和回调函数之前进行判断,如果结果为 false 则不会执行
once是否只执行一次,默认 false
stop是否阻止事件冒泡,相当于调用 stopPropagation,默认 false
prevent是否阻止默认行为,相当于调用 preventDefault,默认 false
self是否尽在点击自身时触发。

内置参数

在指定执行代码和回调函数参数时有一些内置参数可以直接通过约定名称引用,包括:

  • event:事件对象;
  • options:事件绑定选项;
  • $element:事件源元素(Cash 类型)。

例如:

内置参数还可以直接用于 do 代码中和 call 回调函数定义中,例如:

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/zui-toggle.html b/dev/lib/basic/core/zui-toggle.html index 049a3a28d2..81cbaee284 100644 --- a/dev/lib/basic/core/zui-toggle.html +++ b/dev/lib/basic/core/zui-toggle.html @@ -14,14 +14,14 @@ - - + +
Skip to content

全局触发调用

使用

全局触发调用允许在元素上通过 zui-toggle 属性来声明组件调用,在某个事件(通常为点击)触发时,自动使用选项进行初始化,并执行操作。例如下拉菜单按钮,在点击时声明下拉菜单组件,并打开下拉菜单。下面为一个下拉菜单的例子:

兼容模式

在兼容模式下,可以通过 data-toggle 属性生命组件,使用其他 data-* 属性声明组件初始化选项。

支持的组件

支持全局触发调用的组件包括:

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/alert/index.html b/dev/lib/components/alert/index.html index b040df0719..9ae3f961d5 100644 --- a/dev/lib/components/alert/index.html +++ b/dev/lib/components/alert/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

消息框

消息框能够轻松展示一些需要引起用户注意的内容。

基本使用

为元素添加 alert 类来获得消息框的外观。

嘿!这是一则提示。

包含链接

使用 .alert-link 类来为消息框内的链接添加样式。

Hi! 这条消息可能需要你注意。了解更多

包含关闭按钮

使用 .alert-close 类来为消息框内的关闭按钮添加样式。絮语注意到是当需要在消息框中包含更多内容时,需要将消息文本放置在 .alert-text 中。

嘿!这是一则提示。了解更多

包含操作按钮

像添加关闭按钮一样,还可以添加其他操作按钮:

嘿!这是一则提示。了解更多

可以将多个按钮放在工具栏中:

嘿!这是一则提示。了解更多

外观类型

配合丰富的 CSS 工具类 来实现不同消息框的外观。

嘿!这是一则提示。
嘿!这是一则提示。
嘿!这是一则提示。
嘿!这是一则提示。
嘿!这是一则提示。
嘿!这是一则提示。
嘿!这是一则提示。

CSS 类

消息框提供了如下 CSS 类:

类型作用
alert实体类元素作为消息框组件
alert-icon实体类元素作为消息框内左侧图标
alert-close实体类元素作为消息框关闭按钮
alert-text实体类元素作为消息框文本内容

CSS 变量

消息框提供了如下 CSS 变量:

变量名称变量含义
--alert-bg消息框默认背景色

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/avatar-group/index.html b/dev/lib/components/avatar-group/index.html index efce4b1636..778dc0036f 100644 --- a/dev/lib/components/avatar-group/index.html +++ b/dev/lib/components/avatar-group/index.html @@ -14,14 +14,14 @@ - - + + -
Skip to content

头像组

头像组用于将多个头像堆叠显示。

基本使用

将多个头像放置在 <div class="avatar-group"> 内即可创建一个头像组。

+10

尺寸

当使用不同大小的头像时,可以通过为 .avatar-group 添加同样等级的 size-* 辅助类已获得统一的堆叠间距。

堆叠间距

使用工具类 gap-* 来调整堆叠间距。默认间距等同于 gap-2.5,小于 2.5 将使得间距比默认间距更小,反之则更大。

0
1
2
2.5
3
3.5

CSS 类

头像组提供了如下 CSS 类:

类型作用
avatar-group实体类元素作为头像组组件
size-xs工具类头像组使用超小号尺寸
size-sm工具类头像组使用小号尺寸
size-lg工具类头像组使用大号尺寸
size-xl工具类头像组使用超大号尺寸

参考

MIT License (MIT)

- +
Skip to content

头像组

头像组用于将多个头像堆叠显示。

基本使用

将多个头像放置在 <div class="avatar-group"> 内即可创建一个头像组。

+10

尺寸

当使用不同大小的头像时,可以通过为 .avatar-group 添加同样等级的 size-* 辅助类已获得统一的堆叠间距。

堆叠间距

使用工具类 gap-* 来调整堆叠间距。默认间距等同于 gap-2.5,小于 2.5 将使得间距比默认间距更小,反之则更大。

0
1
2
2.5
3
3.5

CSS 类

头像组提供了如下 CSS 类:

类型作用
avatar-group实体类元素作为头像组组件
size-xs工具类头像组使用超小号尺寸
size-sm工具类头像组使用小号尺寸
size-lg工具类头像组使用大号尺寸
size-xl工具类头像组使用超大号尺寸

参考

MIT License (MIT)

+ \ No newline at end of file diff --git a/dev/lib/components/avatar/index.html b/dev/lib/components/avatar/index.html index 9db3bb7e6d..8b6671ff62 100644 --- a/dev/lib/components/avatar/index.html +++ b/dev/lib/components/avatar/index.html @@ -14,14 +14,14 @@ - - + + -
Skip to content

头像

头像是用图片、图标或者文字的形式展示用户及具有特殊标识的其他对象。

基本使用

为元素并添加类 .avatar,然后将作为图像的图片、文字或图标放置在此元素内。

Z

提示

当使用文字作为头像时,建议文字数目不要超过 2 个,如果需要显示更多文字进行个性化排版,推荐使用 JavaScript 增强的头像插件。

头像形状

搭配 CSS 工具类 rounded-* 为头像应用不同的圆角样式。

外观类型

当使用文字或图标作为头像时,配合使用CSS 工具类来实现不同头像的外观。下面展示各种工具类的外观效果。

Z
Z
Z
Z

尺寸

除了默认大小,还提供了额外的 4 种预设尺寸,通过 size-* 来为头像设置尺寸。

X
S
Z
LG
XL

CSS 类

头像提供了如下 CSS 类:

类型作用
avatar实体类元素作为头像组件
size-xs工具类头像使用超小号尺寸
size-sm工具类头像使用小号尺寸
size-lg工具类头像使用大号尺寸
size-xl工具类头像使用超大号尺寸

CSS 变量

头像提供了如下 CSS 变量,可进行全局修改:

CSS 变量名作用
--avatar-radius头像默认圆角大小
--avatar-bg头像默认背景颜色

参考

MIT License (MIT)

- +
Skip to content

头像

头像是用图片、图标或者文字的形式展示用户及具有特殊标识的其他对象。

基本使用

为元素并添加类 .avatar,然后将作为图像的图片、文字或图标放置在此元素内。

Z

提示

当使用文字作为头像时,建议文字数目不要超过 2 个,如果需要显示更多文字进行个性化排版,推荐使用 JavaScript 增强的头像插件。

头像形状

搭配 CSS 工具类 rounded-* 为头像应用不同的圆角样式。

外观类型

当使用文字或图标作为头像时,配合使用CSS 工具类来实现不同头像的外观。下面展示各种工具类的外观效果。

Z
Z
Z
Z

尺寸

除了默认大小,还提供了额外的 4 种预设尺寸,通过 size-* 来为头像设置尺寸。

X
S
Z
LG
XL

CSS 类

头像提供了如下 CSS 类:

类型作用
avatar实体类元素作为头像组件
size-xs工具类头像使用超小号尺寸
size-sm工具类头像使用小号尺寸
size-lg工具类头像使用大号尺寸
size-xl工具类头像使用超大号尺寸

CSS 变量

头像提供了如下 CSS 变量,可进行全局修改:

CSS 变量名作用
--avatar-radius头像默认圆角大小
--avatar-bg头像默认背景颜色

参考

MIT License (MIT)

+ \ No newline at end of file diff --git a/dev/lib/components/breadcrumb/index.html b/dev/lib/components/breadcrumb/index.html index df645f19a4..dd22eaef93 100644 --- a/dev/lib/components/breadcrumb/index.html +++ b/dev/lib/components/breadcrumb/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

面包屑

基本使用

使用类 .breadcrumb 来实现面包屑,通常搭配 <ol><li> 元素使用。

CSS 类

面包屑提供了如下 CSS 类

类型作用
breadcrumb实体类元素作为面包屑组件

CSS 变量

变量名称变量含义
--breadcrumb-divider面包屑分割元素标签类型
--breadcrumb-divider-color面包屑分割元素颜色
--breadcrumb-color-active面包屑选中态元素颜色

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/btn-group/index.html b/dev/lib/components/btn-group/index.html index 2d974989e8..6a76777434 100644 --- a/dev/lib/components/btn-group/index.html +++ b/dev/lib/components/btn-group/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

按钮组

按钮组可以将多个按钮成组展示。

使用方法

将多个 按钮 放置在 <div class="btn-group"> 内即可创建一个按钮组。

多组按钮

使用 CSS 工具类 .row 搭配 .gap-* 实现多组按钮效果。

尺寸

.btn-group 上配合使用工具类 size-* 来获得不同大小的按钮组。

外观

在按钮上加 CSS 工具类,以获得不同的按钮外观显示。

使用下拉菜单

可以在按钮组中使用下拉菜单,只需要将启用下拉菜单的按钮放置于按钮组中即可。

CSS 类

按钮提供了如下 CSS 类:

类型作用
btn-group实体类元素作为按钮组组件
size-xs工具类按钮组使用超小号尺寸
size-sm工具类按钮组使用小号尺寸
size-lg工具类按钮组使用大号尺寸
size-xl工具类按钮组使用超大号尺寸

参考

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/button/index.html b/dev/lib/components/button/index.html index 847c054c4f..4174e70c68 100644 --- a/dev/lib/components/button/index.html +++ b/dev/lib/components/button/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

按钮

按钮是用来触发一些动作。通常用在表单、对话框、菜单上面。好的按钮设计能够引导用户高效的达到目的。

使用方法

使用 .btn 类来获得按钮的外观和交互体验,通常用在元素 <button><a> 上。

配合丰富的CSS 工具类来实现不同按钮的外观。

图标按钮

按钮配合图标组件一起使用时,自动呈现为图标按钮。

外观

外观类型

配合使用CSS 工具类来实现不同按钮的外观。下面展示各种工具类的外观效果。

链接按钮

使用 .btn-link 类来获得链接按钮的外观。

按钮圆角

搭配 CSS 工具类 rounded-* 为按钮应用不同的圆角样式。

按钮阴影效果

搭配 CSS 工具类 shadow-* 为按钮应用不同的阴影样式。

尺寸

除了默认大小,按钮还提供了额外的 4 种预设尺寸。

形状

正方形按钮

通过工具类 square 可以让按钮获得正方形外观,通常作为图标按钮使用。

圆形按钮

当与工具类 circlesquare 一起使用时则获得圆形按钮。

状态

禁用状态

为按钮提供 disabled="disabled" 属性或 disabled 工具类来禁用按钮。被禁用的按钮将无法响应点击事件。

激活状态

为按钮添加 active 类启用激活状态。

加载中状态

为按钮提供动画图标实现加载中状态。

CSS 类

按钮提供了如下 CSS 类:

类型作用
btn实体类元素作为按钮组件
btn-link修饰类使用链接按钮外观
square工具类按钮使用正方形外观
size-xs工具类按钮使用超小号尺寸
size-sm工具类按钮使用小号尺寸
size-lg工具类按钮使用大号尺寸
size-xl工具类按钮使用超大号尺寸

CSS 变量

变量名称变量含义
--btn-radius按钮圆角
--btn-bg按钮背景颜色
--btn-border-color按钮边框颜色
--btn-height按钮高度

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/color-picker/index.html b/dev/lib/components/color-picker/index.html index 0c7843d0a4..9d575cead4 100644 --- a/dev/lib/components/color-picker/index.html +++ b/dev/lib/components/color-picker/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

颜色选择器

基于下拉选择器实现的颜色选择器。

基本使用

在选定元素上调用初始化函数即可使用颜色选择器。

自定义颜色

通过设置 colors 属性自定义颜色列表,可以指定一个表示颜色的字符串数组,也可以通过英文逗号拼接多个颜色一起指定。

自定义图标

通过设置 icon 属性自定义颜色显示图标。

同步颜色

通过为 syncValuesyncColorsyncBackgroundsyncBorder 设置选择器可实现将当前选中的颜色信息同步到相应元素。

颜色值:
文字颜色
背景色
边框色

配合使用

作为按钮

在输入组中使用

在输入框中使用

选项

名称类型默认值说明
headingstringnull颜色面板标题。 colors?: string | string[]; // 颜色选项列表。 icon?: string; // 显示为图标的名称。 closeBtn?: boolean = true; // 颜色面板是否使用关闭按钮。 syncValue?: string; // 颜色值容器选择器。 syncColor?: string; // 文本色同步容器选择器。 syncBackground?: string; // 背景色同步容器选择器。 syncBorder?: string; // 边框色同步容器选择器。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/contextmenu/index.html b/dev/lib/components/contextmenu/index.html index a4e54828cd..93c33aac7a 100644 --- a/dev/lib/components/contextmenu/index.html +++ b/dev/lib/components/contextmenu/index.html @@ -14,8 +14,8 @@ - - + + @@ -115,7 +115,7 @@ }); }); </script>

API

items 的单个对象属性

text

名称。

  • 类型:string
  • 必选:否。

icon

左侧图标。

  • 类型:string
  • 必选:否。

trailingIcon

右侧图标。

  • 类型:string | VNode
  • 必选:否。

className

类名。

  • 类型:string
  • 必选:否。

style

样式。

  • 类型:ClassNameLike
  • 必选:否。

url

跳转链接地址。

  • 类型:string
  • 必选:否。

target

在何处打开链接地址。

  • 类型:string
  • 必选:否;
  • 可选项: _self | _self | _black | _top | _parent

disabled

是否禁用。

  • 类型:boolean
  • 必选:否;
  • 默认: false

active

是否是激活状态。

  • 类型:boolean
  • 必选:否;
  • 默认: false

type

单项类型。

  • 类型:string
  • 必选:否;
  • 可选项:item | divider | heading | custom
  • 默认: item

rootClass

menu-item 同级类名。

  • 类型:string
  • 必选:否。

items

子级操作数据。

  • 类型:array
  • 必选:否。

onClick

点击操作菜单项的回调事件。

  • 类型:function
  • 必选:否。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/dashboard/index.html b/dev/lib/components/dashboard/index.html index 1d9c74eaaf..88ed6fa652 100644 --- a/dev/lib/components/dashboard/index.html +++ b/dev/lib/components/dashboard/index.html @@ -14,8 +14,8 @@ - - + + @@ -82,7 +82,7 @@ blockMenu?: ContextMenuOptions; onLayoutChange?: (blocks: BlockSetting[]) => void; };

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/dropdown/index.html b/dev/lib/components/dropdown/index.html index cda39c945b..8b6867c25d 100644 --- a/dev/lib/components/dropdown/index.html +++ b/dev/lib/components/dropdown/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

下拉菜单

将动作或菜单折叠到下拉菜单中。

使用方法

为触发按钮添加属性 data-toggle="dropdown",然后在触发按钮之后添加一个 .dropdown-menu 用于定义菜单列表。

关联菜单元素

你还可以在触发按钮上通过 data-target 属性来指定要打开的菜单列表元素,这样不用要求触发按钮和菜单列表元素之间必须按顺序紧邻。

手动初始化

你可以通过 new zui.Dropdown() 方法在触发按钮上动态初始化下拉菜单组件,这样无需为触发按钮添加属性 data-toggle="dropdown",以及预先创建下拉菜单列表元素 .dropdown-menu

显示箭头

通过给下拉菜单菜单按钮添加 data-arrow="true" 来使下拉菜单展示箭头。

改变箭头大小

通过给下拉菜单按钮添加 data-arrow={size} 来控制下拉菜单的箭头的大小。

data-arrow = 4
data-arrow = 8
data-arrow = 12

鼠标悬停展开菜单

为触发按钮添加属性 data-trigger="hover" 实现鼠标悬停展开菜单。

浮动方向

通过 data-placement=* 属性控制弹出方向。

data-placement = top-start
data-placement = top
data-placement = top-end
data-placement = bottom-start
data-placement = bottom
data-placement = bottom-end
data-placement = left-start
data-placement = left
data-placement = left-end
data-placement = right-start
data-placement = right
data-placement = right-end

多级子菜单

多级子菜单仅支持通过手动初始化的方式创建。

自定义菜单

通常情况下下拉菜单列表使用 <menu> 元素,你也可以替换为其他元素或内容

51015202530354045505560

禁用的菜单项

为菜单项 <li> 添加 .disabled 类即可获得禁用外观。

标题和分割线

.dropdown-menuli 标签使用 .dropdown-header类 来显示标题,使用 .divider 来创建分割线。

  • CSS 类

    按钮提供了如下 CSS 类:

    类型作用
    dropdown实体类元素作为下拉菜单组件
    dropdown-menu实体类元素作为下拉菜单列表
    dropdown-header实体类元素作为下拉菜单中的标题
    caret实体类元素作为下拉菜单icon图标
    divider实体类元素作为下拉菜单分割线
    dropup工具类下拉框浮动方向为上方

    CSS 变量

    变量名称变量含义
    --dropmenu-radius下拉菜单圆角
    --dropmenu-border-color下拉菜单边框颜色
    --dropmenu-bg下拉菜单背景颜色
    --dropmenu-active-color下拉菜单条目激活状态文字颜色
    --dropmenu-active-bg下拉菜单条目激活状态背景颜色

    API

    操作菜单定义对象。

    trigger

    触发方式

    • 类型:click | hover | manual
    • 必选:否。

    arrow

    箭头大小 为 true 则为默认12

    • 类型:boolean | number
    • 必选:否。

    offset

    偏移量

    • 类型:number
    • 必选:否。

    菜单对象 详细配置可参考 菜单

    • 类型:object
    • 必选:否。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/dtable/index.html b/dev/lib/components/dtable/index.html index a29eb42b03..c1394845d8 100644 --- a/dev/lib/components/dtable/index.html +++ b/dev/lib/components/dtable/index.html @@ -14,8 +14,8 @@ - - + + @@ -360,7 +360,7 @@ render(): void; }

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/dtable/plugins.html b/dev/lib/components/dtable/plugins.html index 4d4ee2afc5..74b3227aea 100644 --- a/dev/lib/components/dtable/plugins.html +++ b/dev/lib/components/dtable/plugins.html @@ -14,8 +14,8 @@ - - + + @@ -750,7 +750,7 @@ /* 表头分组名称。 */ headerGroup?: string; }

    更多插件开发中

    • 拖放改变列宽 resize
    • 上下文菜单 contextmenu
    • 快捷键 hotkey
    • 鼠标移动事件支持 mousemove
    • 拖放选择 selectable
    • 过滤 filter
    • 拖放移动 moveable
    • 数据网格 datagrid
    • 编辑状态 draft
    • 可编辑 editable
    • 历史记录 history
    • 自动滚动 autoscroll

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/file-selector/index.html b/dev/lib/components/file-selector/index.html index 75f91813f1..56c5f26bd8 100644 --- a/dev/lib/components/file-selector/index.html +++ b/dev/lib/components/file-selector/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    文件选择

    界面模式

    文件选择器支持多种界面模式,包括按钮模式、方框模式和网格模式,另外还提供了单独的图片选择器用于选择图片文件。

    按钮模式

    默认模式为按钮模式,点击按钮选择文件,所选择的文件会显示在按钮上方。

    方框模式

    通过设置 mode 属性为 'box' 可以切换为方框模式,所选择的文件会显示在方框下方。方框模式提供了更大的拖放文件放置区域。

    网格模式

    通过设置 mode 属性为 'grid' 可以切换为网格模式,所选择的文件会显示在网格中。网格模式提供了更大的文件预览区域。

    图片选择

    图片选择是基于网格模式的一种预设模式,通过 ImageSelector 可以快速创建一个图片选择器。

    文件限制

    限制文件类型

    通过 accept 来限制文件类型,可以使用 MIME 类型、文件扩展名或通配符,定义与 HTML 的 accept 属性相同。

    限制文件大小

    通过 maxFileSize 来限制单个文件大小,通过 totalFileSize 来限制总文件大小。

    限制文件数目

    通过 maxFileCount 来限制文件数目,如果设置为非大于 0 的数则不限制。

    预设文件

    通过设置 defaultFiles 属性可以预设文件列表,预设文件不会触发 onAdd 回调函数和 onSelect 回调函数。

    禁用

    通过设置 disabled 属性为 true 可以禁用文件选择器。

    个性化配置

    提示信息

    通过 tip 属性可以设置提示信息,在提示信息中可以使用如下占位文本:

    • {size}:文件总大小;
    • {count}:文件数目;
    • {maxFileSize}:最大文件大小;
    • {maxFileCount}:最大文件数目。

    文件图标

    通过设置 fileIcons 属性可以为不同类型的文件(根据扩展名)显示不同的图标。

    显示缩略图

    默认会为图片文件显示缩略图,通过设置 thumbnail 属性为 false 可以关闭缩略图显示。

    文件拖放

    默认情况下用户可以拖放文件到文件选择器中,通过设置 draggable 属性为 false 可以禁用拖放。

    一次选择一个文件

    默认情况下用户可以在操作系统文件选择对话框中一次选择多个文件,通过设置 multiple 属性为 false 可以限制一次只能选择一个文件。

    网格模式配置

    网格模式下可以通过设置 gridWidthgridHeightgridGap 来调整网格的宽度、高度和间距。

    自定义文件上传按钮

    通过设置 uploadBtn 属性可以自定义文件上传按钮。

    文件操作

    文件重命名

    默认情况下支持对文件进行重命名,通过设置 renameBtn 属性为 false 可以禁用重命名按钮,通过为 renameBtn 属性设置字符串可以自定义重命名按钮的文字,通过为 renameBtn 属性设置对象可以自定义重命名按钮。

    文件移除

    默认情况下支持对文件进行移除,通过设置 removeBtn 属性为 false 可以禁用移除按钮,通过为 removeBtn 属性设置字符串可以自定义移除按钮的文字,通过为 removeBtn 属性设置对象可以自定义移除按钮。

    自定义操作提示信息

    通过设置 removeConfirmduplicatedTipexceededSizeTipexceededTotalSizeTipexceededCountTip 属性可以自定义操作提示信息。

    在提示信息中可以使用如下占位文本:

    • {name}:当前文件名;
    • {size}:当前文件大小;
    • {count}:当前已选择文件数目;
    • {maxFileSize}:最大文件大小;
    • {maxFileCount}:最大文件数目;
    • {totalFileSize}:最大文件数目,仅适用于 exceededTotalSizeTip 提示;
    • {exceededCount}:超出数量,仅适用于 exceededCountTip 提示。

    操作拦截

    通过设置 onRenameonRemoveonAddonRemove 选项设置回调函数可以拦截文件操作,通常在回调函数中返回 false 可以阻止继续操作,相关回调函数定义参加选项和 API。

    文件限制拦截

    通过设置 onDuplicatedonExceededSizeonExceededTotalSizeonExceededCount 选项可以在触发文件限制时拦截文件操作,通过在回调函数中返回 true 来忽略文件限制,相关回调函数定义参加选项和 API。

    选项

    FileSelectorProps

    名称类型默认值说明
    namestringnull作为表单字段的名称。 accept?: string; // 限制文件类型。 disabled?: boolean; // 是否禁用。 mode?: 'button' | 'box' | 'grid' = "button"; // 界面模式。 tip?: string; // 提示信息。 thumbnail?: boolean=true; // 是否显示缩略图。 gridWidth?: string | number; // 网格模式的宽度。 gridHeight?: string | number; // 网格模式的高度。 gridGap?: string | number; // 网格模式的间距。 defaultFiles?: DefaltFileInfo[]; // 默认显示的文件列表。 multiple?: boolean = true; // 是否允许在文件选择对话框中一次性选择多个文件(需要操作系统支持)。 itemProps?: ButtonProps | FileButtonGenerator; // 文件项的属性。 draggable?: boolean = true; // 是否允许拖拽。 fileIcons?: IconType | Record = "file"; // 文件图标。 uploadBtn?: string | ButtonProps; // 上传按钮。 renameBtn?: boolean | string | ButtonProps | FileButtonGenerator = true; // 重命名按钮。 removeBtn?: boolean | string | ButtonProps | FileButtonGenerator = true; // 删除按钮。 removeConfirm?: string | ModalConfirmOptions; // 删除确认提示。 maxFileSize?: FileSize = "100MB"; // 限制文件大小。 maxFileCount?: number = 0; // 限制文件数目,如果设置为非大于 0 的数则不限制。 totalFileSize?: FileSize; // 限制总文件大小,如果设置为非大于 0 的数则不限制。 allowSameName?: boolean; // 是否允许同名文件。 duplicatedTip?: string | ModalAlertOptions; // 重名提示。 exceededSizeTip?: string | ModalAlertOptions; // 超出大小提示。 exceededTotalSizeTip?: string | ModalAlertOptions; // 超出总大小提示。 exceededCountTip?: string | ModalAlertOptions; // 超出数量提示。 onSelect?: FileSelectCallback; // 选择文件时的回调。 onAdd?: FileAddCallback; // 添加文件时的回调。 onRemove?: RemoveFileCallback; // 删除文件时的回调。 onRename?: RenameFileCallback; // 重命名文件时的回调,返回 false 取消重命名。 onDuplicated?: DuplicatedCallback; // 重名时的回调,返回 true 保留重复文件。 onExceededSize?: ExceededLimitCallback; // 超出大小时的回调,返回 true 保留超出大小文件。 onExceededTotalSize?: ExceededLimitCallback; // 超出总大小时的回调,返回 true 保留超出总大小文件。 onExceededCount?: ExceededLimitCallback; // 超出数量时的回调,返回 true 保留超出数量文件。

    API

    FileInfo

    文件信息对象。

    名称类型默认值说明
    namestring文件名。 size: number; // 文件大小。 id: string; // 文件唯一标识。 type: string; // 文件类型。 ext: string; // 文件扩展名。 url?: string; // 文件地址。 file?: File; // 文件对象。

    StaticFileInfo

    预设文件信息对象。

    名称类型默认值说明
    namestring文件名。 size: FileSize; // 文件大小。 type?: string; // 文件类型。 id?: string; // 文件唯一标识。 url?: string; // 文件地址。

    FileSize

    文件大小,字节数或带单位的大小,例如 1024'1KB'

    ts
    type FileSize = number | `${number}${'B' | 'KB' | 'MB' | 'GB' | 'TB'}`;

    DefaltFileInfo

    默认文件信息对象。

    ts
    type DefaltFileInfo = File | FileInfo | StaticFileInfo;

    FileButtonGenerator

    文件操作按钮属性生成器,返回 false 不显示按钮,返回 true 使用默认按钮,返回字符串使用默认按钮并设置文字,返回对象使用自定义按钮。

    ts
    type FileButtonGenerator = ((file: FileInfo) => (boolean | string | ButtonProps));

    FileAddCallback

    添加文件时的回调函数,返回 false 取消添加文件。

    ts
    type FileAddCallback = (file: FileInfo) => void | false;

    FileSelectCallback

    选择文件时的回调函数。

    ts
    type FileSelectCallback = (files: File[] | FileList) => void | false;

    RemoveFileCallback

    删除文件时的回调函数。

    ts
    (file: FileInfo) => void | false | Promise<void | false>;

    RenameFileCallback

    重命名文件时的回调函数,返回 false 取消重命名。

    ts
    type RenameFileCallback = (newName: string, oldName: string, file: FileInfo) => void | false | Promise<void | false>;

    DuplicatedCallback

    重名时的回调,返回 true 保留重复文件。

    ts
    type DuplicatedCallback = (name: string, currentFile: FileInfo, existFile: FileInfo) => void | true;

    ExceededLimitCallback

    超出限制时的回调函数,返回 true 忽略限制,否则取消添加文件。

    ts
    type ExceededLimitCallback = (limit: number, file: FileInfo) => void | true;

    MIT License (MIT)

    - +
    Skip to content

    文件选择

    界面模式

    文件选择器支持多种界面模式,包括按钮模式、方框模式和网格模式,另外还提供了单独的图片选择器用于选择图片文件。

    按钮模式

    默认模式为按钮模式,点击按钮选择文件,所选择的文件会显示在按钮上方。

    方框模式

    通过设置 mode 属性为 'box' 可以切换为方框模式,所选择的文件会显示在方框下方。方框模式提供了更大的拖放文件放置区域。

    网格模式

    通过设置 mode 属性为 'grid' 可以切换为网格模式,所选择的文件会显示在网格中。网格模式提供了更大的文件预览区域。

    图片选择

    图片选择是基于网格模式的一种预设模式,通过 ImageSelector 可以快速创建一个图片选择器。

    文件限制

    限制文件类型

    通过 accept 来限制文件类型,可以使用 MIME 类型、文件扩展名或通配符,定义与 HTML 的 accept 属性相同。

    限制文件大小

    通过 maxFileSize 来限制单个文件大小,通过 totalFileSize 来限制总文件大小。

    限制文件数目

    通过 maxFileCount 来限制文件数目,如果设置为非大于 0 的数则不限制。

    预设文件

    通过设置 defaultFiles 属性可以预设文件列表,预设文件不会触发 onAdd 回调函数和 onSelect 回调函数。

    禁用

    通过设置 disabled 属性为 true 可以禁用文件选择器。

    个性化配置

    提示信息

    通过 tip 属性可以设置提示信息,在提示信息中可以使用如下占位文本:

    • {size}:文件总大小;
    • {count}:文件数目;
    • {maxFileSize}:最大文件大小;
    • {maxFileCount}:最大文件数目。

    文件图标

    通过设置 fileIcons 属性可以为不同类型的文件(根据扩展名)显示不同的图标。

    显示缩略图

    默认会为图片文件显示缩略图,通过设置 thumbnail 属性为 false 可以关闭缩略图显示。

    文件拖放

    默认情况下用户可以拖放文件到文件选择器中,通过设置 draggable 属性为 false 可以禁用拖放。

    一次选择一个文件

    默认情况下用户可以在操作系统文件选择对话框中一次选择多个文件,通过设置 multiple 属性为 false 可以限制一次只能选择一个文件。

    网格模式配置

    网格模式下可以通过设置 gridWidthgridHeightgridGap 来调整网格的宽度、高度和间距。

    自定义文件上传按钮

    通过设置 uploadBtn 属性可以自定义文件上传按钮。

    文件操作

    文件重命名

    默认情况下支持对文件进行重命名,通过设置 renameBtn 属性为 false 可以禁用重命名按钮,通过为 renameBtn 属性设置字符串可以自定义重命名按钮的文字,通过为 renameBtn 属性设置对象可以自定义重命名按钮。

    文件移除

    默认情况下支持对文件进行移除,通过设置 removeBtn 属性为 false 可以禁用移除按钮,通过为 removeBtn 属性设置字符串可以自定义移除按钮的文字,通过为 removeBtn 属性设置对象可以自定义移除按钮。

    自定义操作提示信息

    通过设置 removeConfirmduplicatedTipexceededSizeTipexceededTotalSizeTipexceededCountTip 属性可以自定义操作提示信息。

    在提示信息中可以使用如下占位文本:

    • {name}:当前文件名;
    • {size}:当前文件大小;
    • {count}:当前已选择文件数目;
    • {maxFileSize}:最大文件大小;
    • {maxFileCount}:最大文件数目;
    • {totalFileSize}:最大文件数目,仅适用于 exceededTotalSizeTip 提示;
    • {exceededCount}:超出数量,仅适用于 exceededCountTip 提示。

    操作拦截

    通过设置 onRenameonRemoveonAddonRemove 选项设置回调函数可以拦截文件操作,通常在回调函数中返回 false 可以阻止继续操作,相关回调函数定义参加选项和 API。

    文件限制拦截

    通过设置 onDuplicatedonExceededSizeonExceededTotalSizeonExceededCount 选项可以在触发文件限制时拦截文件操作,通过在回调函数中返回 true 来忽略文件限制,相关回调函数定义参加选项和 API。

    选项

    FileSelectorProps

    名称类型默认值说明
    namestringnull作为表单字段的名称。 accept?: string; // 限制文件类型。 disabled?: boolean; // 是否禁用。 mode?: 'button' | 'box' | 'grid' = "button"; // 界面模式。 tip?: string; // 提示信息。 thumbnail?: boolean=true; // 是否显示缩略图。 gridWidth?: string | number; // 网格模式的宽度。 gridHeight?: string | number; // 网格模式的高度。 gridGap?: string | number; // 网格模式的间距。 defaultFiles?: DefaltFileInfo[]; // 默认显示的文件列表。 multiple?: boolean = true; // 是否允许在文件选择对话框中一次性选择多个文件(需要操作系统支持)。 itemProps?: ButtonProps | FileButtonGenerator; // 文件项的属性。 draggable?: boolean = true; // 是否允许拖拽。 fileIcons?: IconType | Record = "file"; // 文件图标。 uploadBtn?: string | ButtonProps; // 上传按钮。 renameBtn?: boolean | string | ButtonProps | FileButtonGenerator = true; // 重命名按钮。 removeBtn?: boolean | string | ButtonProps | FileButtonGenerator = true; // 删除按钮。 removeConfirm?: string | ModalConfirmOptions; // 删除确认提示。 maxFileSize?: FileSize = "100MB"; // 限制文件大小。 maxFileCount?: number = 0; // 限制文件数目,如果设置为非大于 0 的数则不限制。 totalFileSize?: FileSize; // 限制总文件大小,如果设置为非大于 0 的数则不限制。 allowSameName?: boolean; // 是否允许同名文件。 duplicatedTip?: string | ModalAlertOptions; // 重名提示。 exceededSizeTip?: string | ModalAlertOptions; // 超出大小提示。 exceededTotalSizeTip?: string | ModalAlertOptions; // 超出总大小提示。 exceededCountTip?: string | ModalAlertOptions; // 超出数量提示。 onSelect?: FileSelectCallback; // 选择文件时的回调。 onAdd?: FileAddCallback; // 添加文件时的回调。 onRemove?: RemoveFileCallback; // 删除文件时的回调。 onRename?: RenameFileCallback; // 重命名文件时的回调,返回 false 取消重命名。 onDuplicated?: DuplicatedCallback; // 重名时的回调,返回 true 保留重复文件。 onExceededSize?: ExceededLimitCallback; // 超出大小时的回调,返回 true 保留超出大小文件。 onExceededTotalSize?: ExceededLimitCallback; // 超出总大小时的回调,返回 true 保留超出总大小文件。 onExceededCount?: ExceededLimitCallback; // 超出数量时的回调,返回 true 保留超出数量文件。

    API

    FileInfo

    文件信息对象。

    名称类型默认值说明
    namestring文件名。 size: number; // 文件大小。 id: string; // 文件唯一标识。 type: string; // 文件类型。 ext: string; // 文件扩展名。 url?: string; // 文件地址。 file?: File; // 文件对象。

    StaticFileInfo

    预设文件信息对象。

    名称类型默认值说明
    namestring文件名。 size: FileSize; // 文件大小。 type?: string; // 文件类型。 id?: string; // 文件唯一标识。 url?: string; // 文件地址。

    FileSize

    文件大小,字节数或带单位的大小,例如 1024'1KB'

    ts
    type FileSize = number | `${number}${'B' | 'KB' | 'MB' | 'GB' | 'TB'}`;

    DefaltFileInfo

    默认文件信息对象。

    ts
    type DefaltFileInfo = File | FileInfo | StaticFileInfo;

    FileButtonGenerator

    文件操作按钮属性生成器,返回 false 不显示按钮,返回 true 使用默认按钮,返回字符串使用默认按钮并设置文字,返回对象使用自定义按钮。

    ts
    type FileButtonGenerator = ((file: FileInfo) => (boolean | string | ButtonProps));

    FileAddCallback

    添加文件时的回调函数,返回 false 取消添加文件。

    ts
    type FileAddCallback = (file: FileInfo) => void | false;

    FileSelectCallback

    选择文件时的回调函数。

    ts
    type FileSelectCallback = (files: File[] | FileList) => void | false;

    RemoveFileCallback

    删除文件时的回调函数。

    ts
    (file: FileInfo) => void | false | Promise<void | false>;

    RenameFileCallback

    重命名文件时的回调函数,返回 false 取消重命名。

    ts
    type RenameFileCallback = (newName: string, oldName: string, file: FileInfo) => void | false | Promise<void | false>;

    DuplicatedCallback

    重名时的回调,返回 true 保留重复文件。

    ts
    type DuplicatedCallback = (name: string, currentFile: FileInfo, existFile: FileInfo) => void | true;

    ExceededLimitCallback

    超出限制时的回调函数,返回 true 忽略限制,否则取消添加文件。

    ts
    type ExceededLimitCallback = (limit: number, file: FileInfo) => void | true;

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/kanban/index.html b/dev/lib/components/kanban/index.html index 028a0d0bea..dc545d7020 100644 --- a/dev/lib/components/kanban/index.html +++ b/dev/lib/components/kanban/index.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/lib/components/label/index.html b/dev/lib/components/label/index.html index 7b752c674c..e5eb18c284 100644 --- a/dev/lib/components/label/index.html +++ b/dev/lib/components/label/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    标签

    标签通常用于对内容进行标记。

    使用方法

    使用 .label 类来获得标签的外观和交互体验,通常用在元素 <span> 上。

    标签

    外观类型

    配合丰富的CSS 工具类来实现不同标签的外观。

    主要标签黑色标签描边浅色

    尺寸

    除了默认大小,标签还提供了额外的 2 种预设尺寸。

    小标签普通大小大标签

    圆角

    通过工具类 rounded-* 来应用不同的圆角样式。

    无圆角小圆角普通圆角中等圆角大圆角超大圆角完整圆角

    圆点标签

    当与工具类 label-dot 一起使用时则获得圆点标签。

    与按钮组合使用

    CSS 类

    标签提供了如下 CSS 类:

    类型作用
    label实体类元素作为标签组件
    label-dot工具类标签使用圆形外观
    size-sm工具类标签使用小号尺寸
    size-lg工具类标签使用大号尺寸

    CSS 变量

    变量名称变量含义
    --label-bg标签背景色
    --label-color标签文字颜色
    --label-border-color标签边框颜色
    --label-radius标签圆角

    MIT License (MIT)

    - +
    Skip to content

    标签

    标签通常用于对内容进行标记。

    使用方法

    使用 .label 类来获得标签的外观和交互体验,通常用在元素 <span> 上。

    标签

    外观类型

    配合丰富的CSS 工具类来实现不同标签的外观。

    主要标签黑色标签描边浅色

    尺寸

    除了默认大小,标签还提供了额外的 2 种预设尺寸。

    小标签普通大小大标签

    圆角

    通过工具类 rounded-* 来应用不同的圆角样式。

    无圆角小圆角普通圆角中等圆角大圆角超大圆角完整圆角

    圆点标签

    当与工具类 label-dot 一起使用时则获得圆点标签。

    与按钮组合使用

    CSS 类

    标签提供了如下 CSS 类:

    类型作用
    label实体类元素作为标签组件
    label-dot工具类标签使用圆形外观
    size-sm工具类标签使用小号尺寸
    size-lg工具类标签使用大号尺寸

    CSS 变量

    变量名称变量含义
    --label-bg标签背景色
    --label-color标签文字颜色
    --label-border-color标签边框颜色
    --label-radius标签圆角

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/menu/index.html b/dev/lib/components/menu/index.html index 27f2f30267..cd0c7d5fec 100644 --- a/dev/lib/components/menu/index.html +++ b/dev/lib/components/menu/index.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    菜单

    菜单用于展示一个操作列表,也可以用于构建更复杂的组件,例如右键菜单、下拉菜单等。如果需要通过 JS 动态创建菜单,可以使用菜单生成器

    使用方法

    使用类 .menu.menu-item 按照如下结构来构建一个静态菜单:

    标题

    使用类 .menu-heading 来创建一个标题:

    分割线

    使用类 .divider 来添加一个分割线:

    包含图标

    可以在菜单项内添加图标,但如果是部分菜单项拥有图标,可以通过为 .menu 添加工具类 .has-icons 来让图标以及文本进行对齐:

    禁用的菜单项

    .menu-item 添加工具类 .disabled 来将菜单项禁用:

    标记激活项

    .menu-item 内的 <a> 元素添加工具类 .active 来将菜单项标记为激活状态:

    标记选中项

    .menu-item 内的 <a> 元素添加工具类 .active 来将菜单项标记为选中项状态:

    尾部图标

    直接将图标 .icon 元素添加到菜单项 .menu-item 内尾部,图标将自动靠右侧对齐:

    自定义菜单项

    .menu 内可以放置其他内容来自定义菜单项:

    CSS 类

    头像提供了如下 CSS 类:

    类型作用
    menu实体类元素作为菜单
    menu-item实体类元素作为菜单项
    menu-heading实体类元素作为菜单标题
    divider实体类元素作为分割线
    has-icons工具类menu 一起使用,标记菜单内包含图标
    active工具类标记菜单项为激活状态
    selected工具类标记菜单项为选中状态
    disabled工具类标记菜单项为禁用状态

    CSS 变量

    头像提供了如下 CSS 变量,可进行全局修改:

    CSS 变量名作用默认值
    --menu-radius菜单圆角var(--radius)
    --menu-bg菜单背景颜色var(--color-canvas)
    --menu-border菜单边框1px solid var(--color-border)
    --menu-shadow菜单阴影var(--shadow-lg)
    --menu-hover-bg菜单项鼠标悬停背景色var(--color-primary-500)
    --menu-hover-color菜单项鼠标悬停文字颜色var(--color-canvas)
    --menu-active-bg菜单项激活状态背景色var(--color-primary-50)
    --menu-active-color菜单项激活状态文字颜色var(--color-primary-500)
    --menu-icon-opacity菜单项图标透明度.5
    --menu-heading-color菜单标题文字颜色var(--color-gray-500)

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/menu/js.html b/dev/lib/components/menu/js.html index 7fbf9f5c4c..c0c381d3b1 100644 --- a/dev/lib/components/menu/js.html +++ b/dev/lib/components/menu/js.html @@ -14,8 +14,8 @@ - - + + @@ -150,7 +150,7 @@ key?: string | number, items?: MenuListItem[], };

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/messager/index.html b/dev/lib/components/messager/index.html index eb122163b3..67912af24b 100644 --- a/dev/lib/components/messager/index.html +++ b/dev/lib/components/messager/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    浮动消息

    通过 JS 动态创建一个浮动消息。

    基本用法

    通过构造一个 messager 实例,页面上创建一个浮动消息。

    显示位置

    提供 9 个预设的显示位置,通过 placement 选项进行指定。

    颜色主题

    提供多种预设颜色主题,通过 type 选项指定外观工具类即可。

    禁用关闭按钮

    默认会在右侧显示关闭按钮,如果需要禁用关闭按钮,将 close 选项设置为 false

    自定义操作按钮

    通过 actions 数组来自定义一组操作。详细配置可参考 工具栏

    禁用自动隐藏

    默认超过 5000ms 自动隐藏,通过设置 time0 取消自动隐藏。

    禁用动画效果

    设置 animationfalse 禁用动画效果。

    选项

    名称类型默认值说明
    typestringnull消息类型 placement?: string; // 浮动消息定位方式,支持 'top' | 'center' | 'bottom' | 'left-top' | 'left' | 'left-bottom' | 'right' | 'right-top' | 'right-bottom' time?: number; // 浮动消息持续时间 content?: string; // 浮动消息内容 icon?: string; // 图标名称 actions?: object[]; // 操作按钮定义列表 margin?: number; // 外边距

    MIT License (MIT)

    - +
    Skip to content

    浮动消息

    通过 JS 动态创建一个浮动消息。

    基本用法

    通过构造一个 messager 实例,页面上创建一个浮动消息。

    显示位置

    提供 9 个预设的显示位置,通过 placement 选项进行指定。

    颜色主题

    提供多种预设颜色主题,通过 type 选项指定外观工具类即可。

    禁用关闭按钮

    默认会在右侧显示关闭按钮,如果需要禁用关闭按钮,将 close 选项设置为 false

    自定义操作按钮

    通过 actions 数组来自定义一组操作。详细配置可参考 工具栏

    禁用自动隐藏

    默认超过 5000ms 自动隐藏,通过设置 time0 取消自动隐藏。

    禁用动画效果

    设置 animationfalse 禁用动画效果。

    选项

    名称类型默认值说明
    typestringnull消息类型 placement?: string; // 浮动消息定位方式,支持 'top' | 'center' | 'bottom' | 'left-top' | 'left' | 'left-bottom' | 'right' | 'right-top' | 'right-bottom' time?: number; // 浮动消息持续时间 content?: string; // 浮动消息内容 icon?: string; // 图标名称 actions?: object[]; // 操作按钮定义列表 margin?: number; // 外边距

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/modal/index.html b/dev/lib/components/modal/index.html index cbf750b80a..a1b2e4faba 100644 --- a/dev/lib/components/modal/index.html +++ b/dev/lib/components/modal/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    对话框

    在保留当前页面状态的情况下,直接使用触发按钮即可展现对话框,告知用户展示相关操作。

    使用方法

    使用 .modal.modal-dialog 类获得对话框的外观展示,通常用在元素 <div> 上。使用 [data-toggle="modal"] 指定对话框触发按钮,在触发按钮上通过 data-target 属性指定要打开的对话框。

    点击 a 标签按钮打开

    自定义位置

    使用 data-position 自定义设置对话框位置。可设置 fitcenter 或其具体像素值。

    尺寸

    除了默认大小,还提供了额外的 3 种预设尺寸。

    信息提示

    展示各种类型的信息提示,只提供一个按钮用于关闭。

    控制遮罩层

    通过 data-backdrop="false" 移除遮罩层,设置后可以操作模态框之外的交互。

    CSS 类

    对话框提供了如下 CSS 类:

    类型作用
    modal实体类元素作为对话框遮罩组件
    modal-dialog实体类元素作为对话框组件
    size-sm工具类对话框使用小号尺寸
    size-lg工具类对话框使用大号尺寸
    size-xl工具类对话框使用超大号尺寸

    CSS 变量

    对话框提供了如下 CSS 变量,可进行全局修改。

    CSS 变量名作用
    --modal-radius对话框默认圆角大小
    --modal-bg对话框遮挡层颜色
    --modal-sm对话框小号尺寸宽度
    --modal-base对话框默认宽度
    --modal-lg对话框大号尺寸宽度
    --modal-xl对话框超大号尺寸宽度

    MIT License (MIT)

    - +
    Skip to content

    对话框

    在保留当前页面状态的情况下,直接使用触发按钮即可展现对话框,告知用户展示相关操作。

    使用方法

    使用 .modal.modal-dialog 类获得对话框的外观展示,通常用在元素 <div> 上。使用 [data-toggle="modal"] 指定对话框触发按钮,在触发按钮上通过 data-target 属性指定要打开的对话框。

    点击 a 标签按钮打开

    自定义位置

    使用 data-position 自定义设置对话框位置。可设置 fitcenter 或其具体像素值。

    尺寸

    除了默认大小,还提供了额外的 3 种预设尺寸。

    信息提示

    展示各种类型的信息提示,只提供一个按钮用于关闭。

    控制遮罩层

    通过 data-backdrop="false" 移除遮罩层,设置后可以操作模态框之外的交互。

    CSS 类

    对话框提供了如下 CSS 类:

    类型作用
    modal实体类元素作为对话框遮罩组件
    modal-dialog实体类元素作为对话框组件
    size-sm工具类对话框使用小号尺寸
    size-lg工具类对话框使用大号尺寸
    size-xl工具类对话框使用超大号尺寸

    CSS 变量

    对话框提供了如下 CSS 变量,可进行全局修改。

    CSS 变量名作用
    --modal-radius对话框默认圆角大小
    --modal-bg对话框遮挡层颜色
    --modal-sm对话框小号尺寸宽度
    --modal-base对话框默认宽度
    --modal-lg对话框大号尺寸宽度
    --modal-xl对话框超大号尺寸宽度

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/modal/trigger.html b/dev/lib/components/modal/trigger.html index aaa75a9fc2..c29a64c389 100644 --- a/dev/lib/components/modal/trigger.html +++ b/dev/lib/components/modal/trigger.html @@ -14,8 +14,8 @@ - - + + @@ -55,7 +55,7 @@ /* 当用户点击确认或取消时的回调函数 */ onResult?: (confirmed: boolean, modal: Modal) => void; }

    该方法会通过 Promise 异步返回用户点击的按钮名称。

    下面为一个示例:

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/nav/index.html b/dev/lib/components/nav/index.html index 7f3f186f01..fb6bfbcfef 100644 --- a/dev/lib/components/nav/index.html +++ b/dev/lib/components/nav/index.html @@ -14,17 +14,17 @@ - - + + -
    Skip to content

    导航

    基础用法

    使用组件类 .nav 来获得导航外观 通常搭配 <ul><menu><li> 标签来使用。

    带标题的导航

    可以通过 CSS 类 nav-heading 给导航项设置标题样式。

    html
    <menu class="nav">
    +    
    Skip to content

    导航

    基础用法

    使用组件类 .nav 来获得导航外观 通常搭配 <ul><menu><li> 标签来使用。

    带标题的导航

    可以通过 CSS 类 nav-heading 给导航项设置标题样式。

    html
    <menu class="nav">
       <li class="nav-heading">导航标题</li>
       ...
    -</menu>

    导航样式

    除了默认样式,还可以通过修饰类为导航应用不同的样式。

    主要导航 .nav-primary

    次要导航 .nav-secondary

    圆点导航 .nav-pills

    标签导航 .nav-tabs

    步骤条 .nav-steps

    垂直排列

    使用修饰类 nav-stacked 使导航获得垂直排列样式,可搭配其他各种样式的导航使用。

    .nav-primary
    .nav-secondary
    .nav-pills
    .nav-tabs

    自适应宽度的导航

    使用修饰类 nav-justified 使导航获得自适应宽度样式,可搭配其他各种样式的导航使用。

    提示

    自适应宽度修饰类不能和垂直排列修饰类混用。

    CSS 类

    导航提供了如下 CSS 类

    类型作用
    nav实体类元素导航组件
    nav-item实体类元素导航条目组件
    nav-heading实体类导航标题组件
    nav-divider实体类导航分割线组件
    active修饰类为导航元素启用选中态样式
    nav-simple修饰类为导航元素启用简单样式
    nav-primary修饰类为导航元素启用主要导航样式
    nav-secondary修饰类为导航元素启用次要导航样式
    nav-tabs修饰类为导航元素启用标签风格导航样式
    nav-pills修饰类为导航元素启用标签风格导航样式
    nav-stacked修饰类为导航元素启用垂直排列导航样式
    nav-justified修饰类为导航元素启用自适应宽度导航样式

    CSS 变量

    变量名称变量含义
    --nav-heading-color导航标题字体颜色

    MIT License (MIT)

    - +</menu>

    导航样式

    除了默认样式,还可以通过修饰类为导航应用不同的样式。

    主要导航 .nav-primary

    次要导航 .nav-secondary

    圆点导航 .nav-pills

    标签导航 .nav-tabs

    步骤条 .nav-steps

    垂直排列

    使用修饰类 nav-stacked 使导航获得垂直排列样式,可搭配其他各种样式的导航使用。

    .nav-primary
    .nav-secondary
    .nav-pills
    .nav-tabs

    自适应宽度的导航

    使用修饰类 nav-justified 使导航获得自适应宽度样式,可搭配其他各种样式的导航使用。

    提示

    自适应宽度修饰类不能和垂直排列修饰类混用。

    CSS 类

    导航提供了如下 CSS 类

    类型作用
    nav实体类元素导航组件
    nav-item实体类元素导航条目组件
    nav-heading实体类导航标题组件
    nav-divider实体类导航分割线组件
    active修饰类为导航元素启用选中态样式
    nav-simple修饰类为导航元素启用简单样式
    nav-primary修饰类为导航元素启用主要导航样式
    nav-secondary修饰类为导航元素启用次要导航样式
    nav-tabs修饰类为导航元素启用标签风格导航样式
    nav-pills修饰类为导航元素启用标签风格导航样式
    nav-stacked修饰类为导航元素启用垂直排列导航样式
    nav-justified修饰类为导航元素启用自适应宽度导航样式

    CSS 变量

    变量名称变量含义
    --nav-heading-color导航标题字体颜色

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/nav/js.html b/dev/lib/components/nav/js.html index e2ff40bd0f..445fa33a15 100644 --- a/dev/lib/components/nav/js.html +++ b/dev/lib/components/nav/js.html @@ -14,8 +14,8 @@ - - + + @@ -62,7 +62,7 @@ afterRender?: (info: {nav: nav, firstRender: boolean}) => void; beforeDestroy?: (info: {nav: nav}) => void; }

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/pager/index.html b/dev/lib/components/pager/index.html index 32ed2fb144..3421d8fd0f 100644 --- a/dev/lib/components/pager/index.html +++ b/dev/lib/components/pager/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    分页

    使用方法

    将多个按钮放置在 <div class="pager"> 内即可创建一个分页组件。

    简洁样式

    简单的翻页。

    状态

    为分页按钮添加 active 类标记选中,添加 disabled 类来禁用页码,被禁用的页码将无法响应点击事件。

    外观

    分页按钮间距

    使用 gap-* CSS 工具类 可获得宽松的分页组件。

    两边对齐

    结合使用 justify-between CSS 工具类 可获得页面两端对齐的分页组件。

    尺寸

    除了默认大小,还提供了额外的 2 种预设尺寸。可以通过为 pager 添加 size-* 类来获取其他尺寸外观。

    调整每页显示数

    结合使用 dropdown 下拉菜单组件 可展示调整每页显示数的分页组件。

    前往页码

    结合使用 input-group 输入组组件 可展示快速跳转到某一页的分页组件。

    CSS 类

    分页提供了如下 CSS 类:

    类型作用
    pager实体类元素作为分页组件
    pager-goto实体类元素作为分页的跳转组件
    pager-size-menu实体类元素作为分页的每页条数的下拉组件

    MIT License (MIT)

    - +
    Skip to content

    分页

    使用方法

    将多个按钮放置在 <div class="pager"> 内即可创建一个分页组件。

    简洁样式

    简单的翻页。

    状态

    为分页按钮添加 active 类标记选中,添加 disabled 类来禁用页码,被禁用的页码将无法响应点击事件。

    外观

    分页按钮间距

    使用 gap-* CSS 工具类 可获得宽松的分页组件。

    两边对齐

    结合使用 justify-between CSS 工具类 可获得页面两端对齐的分页组件。

    尺寸

    除了默认大小,还提供了额外的 2 种预设尺寸。可以通过为 pager 添加 size-* 类来获取其他尺寸外观。

    调整每页显示数

    结合使用 dropdown 下拉菜单组件 可展示调整每页显示数的分页组件。

    前往页码

    结合使用 input-group 输入组组件 可展示快速跳转到某一页的分页组件。

    CSS 类

    分页提供了如下 CSS 类:

    类型作用
    pager实体类元素作为分页组件
    pager-goto实体类元素作为分页的跳转组件
    pager-size-menu实体类元素作为分页的每页条数的下拉组件

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/pager/js.html b/dev/lib/components/pager/js.html index 510bfa6c21..5e71d1faf2 100644 --- a/dev/lib/components/pager/js.html +++ b/dev/lib/components/pager/js.html @@ -14,8 +14,8 @@ - - + + @@ -167,7 +167,7 @@ render(element, <Pager {...options} />);

    使用Jquery 扩展

    js
    $(element).pager(options);
     
     const pager = $(element).data('zui.pager');

    选项

    linkCreator

    导航链接生成器,点击页码时进行页面地址更换。

    • 类型:string | ((info: PagerInfo) => string)
    • 必选:否

    page

    初始状态的当前页码。

    • 类型:number

    recTotal

    总记录数目。

    • 类型:number

    recPerPage

    每页记录数。

    • 类型:number

    pageTotal

    总页数。

    • 类型:number

    items

    定义分页项的列表,可以通过一个函数动态返回分页组件。

    基于 工具栏 选项 和 自定义 PagerItemOptions 选项。

    onClickItem

    指定分页按钮的点击回调事件。

    API

    PagerInfo

    参数:

    page

    • 含义:初始状态的当前页码;
    • 类型:number

    recTotal

    • 含义:总记录数目;
    • 类型:number

    recPerPage

    • 含义:每页记录数;
    • 类型:number

    pageTotal

    • 含义:总页数;
    • 类型:number

    PagerItemOptions

    参数:

    type

    • 含义:子项类型;
    • 类型:string
    • 可选项:info | link | nav | size-menu | goto

    page

    • 含义:页码名称;
    • 类型:'first' | 'last' | 'prev' | 'next' | 'current' | number

    text

    • 含义:指定类型为 info | size-menu 的显示文案;
    • 类型:string | ((info: PagerInfo) => string)

    count

    • 含义:指定类型为 nav 的展示数量;
    • 类型:number

    format

    • 含义:指定类型为 link | nav 的显示格式;
    • 类型:string | ((info: PagerInfo) => string)
    • 含义:指定下拉菜单的属性;
    • 类型:object

    items

    • 含义:指定类型为 size-menu 下拉菜单里的选项;
    • 类型:number[]

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/panel/index.html b/dev/lib/components/panel/index.html index ccba797824..58607e3e7a 100644 --- a/dev/lib/components/panel/index.html +++ b/dev/lib/components/panel/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    面板

    基本使用

    一个面板通常包含标题,内容,底部三部分。标题,底部可按需选择使用。

    面板标题

    面板内容

    不同主题

    除默认主题外,另外提供6种主题样式。

    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容

    面板组

    搭配CSS工具类 space-* 可实现面板组效果。

    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容

    与表格组合使用

    包含表格
    项目名称负责人计划开始计划完成
    ZUI1研发今天今天
    ZUI2研发明天明天
    ZUI3研发后天后天

    CSS 类

    面板提供了如下 CSS 类:

    类型作用
    panel实体类元素作为面板组件
    panel-heading实体类元素作为面板头部组件
    panel-title实体类元素作为面板头部标题组件
    panel-body实体类元素作为面板主体组件
    panel-footer实体类元素作为面板尾部组件

    CSS 变量

    面板提供了如下 CSS 变量:

    变量名称变量含义
    --panel-heading-bg标题背景色
    --panel-footer-bg底部背景色

    MIT License (MIT)

    - +
    Skip to content

    面板

    基本使用

    一个面板通常包含标题,内容,底部三部分。标题,底部可按需选择使用。

    面板标题

    面板内容

    不同主题

    除默认主题外,另外提供6种主题样式。

    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容

    面板组

    搭配CSS工具类 space-* 可实现面板组效果。

    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容

    与表格组合使用

    包含表格
    项目名称负责人计划开始计划完成
    ZUI1研发今天今天
    ZUI2研发明天明天
    ZUI3研发后天后天

    CSS 类

    面板提供了如下 CSS 类:

    类型作用
    panel实体类元素作为面板组件
    panel-heading实体类元素作为面板头部组件
    panel-title实体类元素作为面板头部标题组件
    panel-body实体类元素作为面板主体组件
    panel-footer实体类元素作为面板尾部组件

    CSS 变量

    面板提供了如下 CSS 变量:

    变量名称变量含义
    --panel-heading-bg标题背景色
    --panel-footer-bg底部背景色

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/progress-circle/index.html b/dev/lib/components/progress-circle/index.html index fd70024676..0b06003a34 100644 --- a/dev/lib/components/progress-circle/index.html +++ b/dev/lib/components/progress-circle/index.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/lib/components/progress/index.html b/dev/lib/components/progress/index.html index c43c117ead..c8503a2681 100644 --- a/dev/lib/components/progress/index.html +++ b/dev/lib/components/progress/index.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    进度条

    使用方法

    使用 CSS 类 .progress.progress-bar 来创建进度条,通过为 .progress-bar 设置 CSS width 来展示进度。

    颜色主题

    .progress-bar 元素添加 .* 等颜色CSS工具类,得到各种颜色的进度条。

    圆角大小

    .progress 元素添加 .rounded-* CSS工具类,给进度条添加不同大小的圆角。

    特殊效果

    条纹效果

    .progress 元素添加 .progress-striped 工具类,给进度条添加条纹效果。

    动画效果

    给使用了 progress-striped 工具类的元素添加 .active 工具类,给条纹进度条添加向左滑动的动画。

    堆叠效果

    .progress 元素添加多个 progress-bar 元素,使多个进度条堆叠展示。

    CSS 类

    进度条提供了如下 CSS 类:

    类型作用
    progress实体类元素作为进度条容器组件
    progress-bar实体类元素作为进度条组件
    progress-striped工具类为进度条组件启用条纹样式
    active工具类为条纹样式进度条组件启用动画效果

    CSS 变量

    变量名称变量含义
    --progress-bg进度条组件背景颜色
    --progress-bar-color进度条组件颜色
    --progress-radius进度条组件圆角大小
    --progress-striped-size进度条组件条纹大小

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/scrollbar/index.html b/dev/lib/components/scrollbar/index.html index 57e641b54d..4e4c1e9e74 100644 --- a/dev/lib/components/scrollbar/index.html +++ b/dev/lib/components/scrollbar/index.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    滚动条

    滚动条样式

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Veniam, accusamus.Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Explicabo asperiores recusandae qui? Aliquam similique eaque animi nemo? Fugiat.Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Pariatur sapiente laboriosam cumque itaque, id saepe commodi accusantium neque?

    Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Quidem eum, reiciendis iusto rem perspiciatis neque optio! Quae, sint!

    Maxime animi iure enim sint aperiam tempora non voluptatibus dolore.

    Suscipit cumque minus veritatis labore dolor corporis molestias. Rem, pariatur.

    Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Repellendus rerum tempora eos praesentium at placeat, quas quibusdam sunt?

    Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!

    窄滚动条样式

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Veniam, accusamus.Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Explicabo asperiores recusandae qui? Aliquam similique eaque animi nemo? Fugiat.Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Pariatur sapiente laboriosam cumque itaque, id saepe commodi accusantium neque?

    Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Quidem eum, reiciendis iusto rem perspiciatis neque optio! Quae, sint!

    Maxime animi iure enim sint aperiam tempora non voluptatibus dolore.

    Suscipit cumque minus veritatis labore dolor corporis molestias. Rem, pariatur.

    Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Repellendus rerum tempora eos praesentium at placeat, quas quibusdam sunt?

    Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!

    仅鼠标悬停时显示

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Veniam, accusamus.Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Explicabo asperiores recusandae qui? Aliquam similique eaque animi nemo? Fugiat.Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Pariatur sapiente laboriosam cumque itaque, id saepe commodi accusantium neque?

    Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Quidem eum, reiciendis iusto rem perspiciatis neque optio! Quae, sint!

    Maxime animi iure enim sint aperiam tempora non voluptatibus dolore.

    Suscipit cumque minus veritatis labore dolor corporis molestias. Rem, pariatur.

    Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Repellendus rerum tempora eos praesentium at placeat, quas quibusdam sunt?

    Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/search-box/index.html b/dev/lib/components/search-box/index.html index 67ea33cdec..0862742a41 100644 --- a/dev/lib/components/search-box/index.html +++ b/dev/lib/components/search-box/index.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/lib/components/table/index.html b/dev/lib/components/table/index.html index b885086a07..0df41ffa79 100644 --- a/dev/lib/components/table/index.html +++ b/dev/lib/components/table/index.html @@ -14,16 +14,16 @@ - - + + -
    Skip to content

    表格

    表格用于展示二维数据。

    使用方法

    <table> 元素添加 CSS 类 .table 来使用表格。

    组成部分元素标签说明
    表头<thead>表头通常作为表格第一行,用于展示所有数据的各个属性名称。
    主体<tbody>一个或多个行组成表格的主体,每行用于展示一个数据。
    表尾<tfoot>表尾通常用于展示一些数据的汇总信息。
    总计3 个部分

    斑马纹表格

    <table class="table"> 上使用工具类 .table-striped 斑马纹表格外观(隔行变色)效果。

    :: tabs

    == 示例

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    == HTML

    html
    <table class="table table-striped">
    +    
    Skip to content

    表格

    表格用于展示二维数据。

    使用方法

    <table> 元素添加 CSS 类 .table 来使用表格。

    组成部分元素标签说明
    表头<thead>表头通常作为表格第一行,用于展示所有数据的各个属性名称。
    主体<tbody>一个或多个行组成表格的主体,每行用于展示一个数据。
    表尾<tfoot>表尾通常用于展示一些数据的汇总信息。
    总计3 个部分

    斑马纹表格

    <table class="table"> 上使用工具类 .table-striped 斑马纹表格外观(隔行变色)效果。

    :: tabs

    == 示例

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    == HTML

    html
    <table class="table table-striped">
       ...
    -</table>

    :::

    鼠标悬停变色

    <table class="table"> 上使用工具类 .table-hover,当鼠标悬停在行上时显示不一样的背景。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    完整边框

    <table class="table"> 上使用工具类 .bordered,为表格添加所有边框。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    无边框

    <table class="table"> 上使用工具类 .borderless,为表格移除所有边框。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    紧凑的表格

    <table class="table"> 上使用工具类 .condensed 来获得更紧凑的表格。表格中的单元格拥有更小的间距,整体行高减少。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    固定布局的表格

    <table class="table"> 上使用工具类 .table-fixed 来将表格布局方式设置为 fixed

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观。
    3.02021-07-31这一次说说关于表格的固定布局,当启用固定布局时,后续行中的单元格内容将不会对表格布局产生影响,当单元格内的文本过长时会被截断隐藏。

    关于表格的固定布局

    表格和列的宽度通过表格的宽度来设置,某一列的宽度仅由该列首行的单元格决定。在当前列中,该单元格所在行之后的行并不会影响整个列宽。

    使用“fixed”布局方式时,整个表格可以在其首行被下载后就被解析和渲染。这样对于“automatic”自动布局方式来说可以加速渲染,但是其后的单元格内容并不会自适应当前列宽。任何一个包含溢出内容的单元格可以使用 overflow 属性控制是否允许内容溢出。

    参考:https://developer.mozilla.org/zh-CN/docs/Web/CSS/table-layout

    自动宽度

    通常表格宽度为 100%,与表格所属的父级元素宽度保持一致,但有时希望表格的宽度能够按照实际内容宽度展示。此时可以通过配合使用 CSS 工具类 w-auto 来设置表格宽度为自动,同时推荐使用工具类 max-w-full 来限制表格最大宽度不超过父级元素宽度(100%)。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    特殊外观

    为行元素 <tr> 或单元格 <td><th> 应用 CSS 工具类 来获得特殊外观。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    CSS 类

    按钮提供了如下 CSS 类:

    类型作用
    table实体类元素作为表格组件
    table-striped工具类为表格启用斑马纹效果
    table-hover工具类为表格启用行悬停变色效果
    table-fixed工具类为表格启用固定布局
    borderless工具类移除表格所有边框
    bordered工具类为表格添加完整边框
    condensed工具类为表格启用紧凑布局

    CSS 变量

    变量名称变量含义
    --table-head-bg表头背景色
    --table-striped-color表格斑马纹行背景色
    --table-hover-color表格行响应鼠标悬停变化背景颜色
    --table-border-color表格边框颜色

    MIT License (MIT)

    - +</table>

    :::

    鼠标悬停变色

    <table class="table"> 上使用工具类 .table-hover,当鼠标悬停在行上时显示不一样的背景。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    完整边框

    <table class="table"> 上使用工具类 .bordered,为表格添加所有边框。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    无边框

    <table class="table"> 上使用工具类 .borderless,为表格移除所有边框。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    紧凑的表格

    <table class="table"> 上使用工具类 .condensed 来获得更紧凑的表格。表格中的单元格拥有更小的间距,整体行高减少。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    固定布局的表格

    <table class="table"> 上使用工具类 .table-fixed 来将表格布局方式设置为 fixed

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观。
    3.02021-07-31这一次说说关于表格的固定布局,当启用固定布局时,后续行中的单元格内容将不会对表格布局产生影响,当单元格内的文本过长时会被截断隐藏。

    关于表格的固定布局

    表格和列的宽度通过表格的宽度来设置,某一列的宽度仅由该列首行的单元格决定。在当前列中,该单元格所在行之后的行并不会影响整个列宽。

    使用“fixed”布局方式时,整个表格可以在其首行被下载后就被解析和渲染。这样对于“automatic”自动布局方式来说可以加速渲染,但是其后的单元格内容并不会自适应当前列宽。任何一个包含溢出内容的单元格可以使用 overflow 属性控制是否允许内容溢出。

    参考:https://developer.mozilla.org/zh-CN/docs/Web/CSS/table-layout

    自动宽度

    通常表格宽度为 100%,与表格所属的父级元素宽度保持一致,但有时希望表格的宽度能够按照实际内容宽度展示。此时可以通过配合使用 CSS 工具类 w-auto 来设置表格宽度为自动,同时推荐使用工具类 max-w-full 来限制表格最大宽度不超过父级元素宽度(100%)。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    特殊外观

    为行元素 <tr> 或单元格 <td><th> 应用 CSS 工具类 来获得特殊外观。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    CSS 类

    按钮提供了如下 CSS 类:

    类型作用
    table实体类元素作为表格组件
    table-striped工具类为表格启用斑马纹效果
    table-hover工具类为表格启用行悬停变色效果
    table-fixed工具类为表格启用固定布局
    borderless工具类移除表格所有边框
    bordered工具类为表格添加完整边框
    condensed工具类为表格启用紧凑布局

    CSS 变量

    变量名称变量含义
    --table-head-bg表头背景色
    --table-striped-color表格斑马纹行背景色
    --table-hover-color表格行响应鼠标悬停变化背景颜色
    --table-border-color表格边框颜色

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/tabs/index.html b/dev/lib/components/tabs/index.html index 40a0d5a4c5..6a6a9cbfd9 100644 --- a/dev/lib/components/tabs/index.html +++ b/dev/lib/components/tabs/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    标签页

    使用方法

    标签页一般配合导航使用,通过 .nav 来定义切换的触发器,通过 .tab-content 来定义切换的内容。标签页内容使用 .tab-pane 作为容器元素,所有供切换显示的 .tab-pane 放置在 .tab-content 容器元素内。

    提示

    为确保在页面显示的时候标签页能够指示正确的标签和显示正确的内容,在初始状态需要为当前选中的导航项目 li.nav-item > a 元素添加 .active 类,并且为当前显示的标签页内容元素 .tab-pane 添加 .active 类。

    为导航上每个用于切换标签内容的链接添加 hrefdata-target 属性指向当前标签页内容 .tab-paneid ,并添加 data-toggle="tab" 属性。

    我是标签1。

    我是标签2。

    我是标签3。

    动画效果

    为每个 .tab-pane 添加 .fade,可以使得标签内容在显示时获得渐变动画效果。在初始状态要显示的标签页内容 .tab-pane 不仅需要添加 .active 类,还需要添加 .in 类。

    我是标签1。

    我是标签2。

    我是标签3。

    垂直标签页

    使用 .nav-tabs.nav-stacked 获得垂直排列的标签导航,使用 flex 布局来使得导航和标签页内容水平排列。

    我是标签1。

    我是标签2。

    我是标签3。

    事件

    当显示一个新的标签页时,这些事件会被触发:

    • show: 当前标签页在显示时触发;
    • shown: 当前标签页在显示后(动画执行完毕)触发。

    通过为 [data-toggle="tab"] 链接添加 data-name 属性,这样事件触发时会传递该属性值作为参数,如果不指定则使用 [data-target] 的值作为参数。

    我是标签1。

    我是标签2。

    我是标签3。

    MIT License (MIT)

    - +
    Skip to content

    标签页

    使用方法

    标签页一般配合导航使用,通过 .nav 来定义切换的触发器,通过 .tab-content 来定义切换的内容。标签页内容使用 .tab-pane 作为容器元素,所有供切换显示的 .tab-pane 放置在 .tab-content 容器元素内。

    提示

    为确保在页面显示的时候标签页能够指示正确的标签和显示正确的内容,在初始状态需要为当前选中的导航项目 li.nav-item > a 元素添加 .active 类,并且为当前显示的标签页内容元素 .tab-pane 添加 .active 类。

    为导航上每个用于切换标签内容的链接添加 hrefdata-target 属性指向当前标签页内容 .tab-paneid ,并添加 data-toggle="tab" 属性。

    我是标签1。

    我是标签2。

    我是标签3。

    动画效果

    为每个 .tab-pane 添加 .fade,可以使得标签内容在显示时获得渐变动画效果。在初始状态要显示的标签页内容 .tab-pane 不仅需要添加 .active 类,还需要添加 .in 类。

    我是标签1。

    我是标签2。

    我是标签3。

    垂直标签页

    使用 .nav-tabs.nav-stacked 获得垂直排列的标签导航,使用 flex 布局来使得导航和标签页内容水平排列。

    我是标签1。

    我是标签2。

    我是标签3。

    事件

    当显示一个新的标签页时,这些事件会被触发:

    • show: 当前标签页在显示时触发;
    • shown: 当前标签页在显示后(动画执行完毕)触发。

    通过为 [data-toggle="tab"] 链接添加 data-name 属性,这样事件触发时会传递该属性值作为参数,如果不指定则使用 [data-target] 的值作为参数。

    我是标签1。

    我是标签2。

    我是标签3。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/toolbar/index.html b/dev/lib/components/toolbar/index.html index 0aaffe4d58..8b3c4c4482 100644 --- a/dev/lib/components/toolbar/index.html +++ b/dev/lib/components/toolbar/index.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/lib/components/toolbar/js.html b/dev/lib/components/toolbar/js.html index cf148b8613..726dd0e73c 100644 --- a/dev/lib/components/toolbar/js.html +++ b/dev/lib/components/toolbar/js.html @@ -14,8 +14,8 @@ - - + + @@ -152,7 +152,7 @@ render(element, <Toolbar {...options} />);

    使用 jQuery 扩展

    js
    $(element).toolbar(options);
     
     const toolbar = $(element).data('zui.toolbar');

    选项

    操作菜单 选项基础上添加新的参数选项。

    wrap

    限制工具栏按钮过多超出时是否换行。

    • 类型:boolean
    • 必选:否;
    • 默认值:false

    gap

    自定义工具栏按钮的间距,与 .toolbar 同级生成 .gap-* 的工具类控制按钮间距。

    • 类型:number | string
    • 必选:否

    items

    继承了 操作菜单 选项和按钮选项,同时添加了其他选项。

    btnProps

    继承按钮组件的属性, 统一处理工具栏按钮属性外观等。

    itemRender

    指定一个回调函数用于对组件渲染进行自定义。

    参数items 选项的单个配置;

    返回值items 选项的单个配置。

    beforeRender

    指定一个回调函数在渲染之前调用,可重新配置组件选项。

    参数:用户为按钮组组件件设置的 options

    返回值:组件选项数据。

    afterRender

    指定一个回调函数在渲染之后调用。

    参数:

    • firstRender:判断是否第一次渲染;
    • menu:组件信息。

    beforeDestroy

    指定一个回调函数在组件销毁之前调用,无参数。

    API

    ToolbarItemOptions

    ts
    type ToolbarItemOptions = ToolbarItemProps | ToolbarDropdownProps | ToolbarBtnGroupProps | ToolbarDividerProps | ToolbarSpaceProps;

    ToolbarItemProps

    选项:

    继承了操作菜单的 ActionItemProps 选项和按钮的 ButtonProps ,同时添加了其他选项 btnType,用来设置按钮外观类型。

    btnType

    设置工具栏单个按钮的外观类型。

    • 类型:string
    • 必选:否。

    ToolbarDropdownProps

    选项:

    在原有属性基础上固定 type 属性,并继承了下拉菜单的 DropdownButtonOptions 选项,同时添加了其他选项。

    type
    • 类型:string
    • 属性值:dropdown
    • 必选:是。
    children

    ToolbarBtnGroupProps

    选项:

    在原有属性基础上固定 type 属性,并继承了操作菜单的 ActionBasicProps 选项和按钮组的 BtnGroupOptions选项,同时添加了其他选项。

    type
    • 类型:string
    • 属性值:btn-group
    • 必选:是。

    ToolbarDividerProps

    选项:

    继承了工具栏的 ActionDividerProps 选项。

    ToolbarSpaceProps

    选项:

    继承了工具栏的 ActionSpaceProps 选项。

    type
    • 类型:string
    • 属性值:space
    • 必选:是。
    space
    • 类型:number | [leading: number, trailing: number]
    • 必选:否。
    flex
    • 类型:number | 'auto' | 'none'
    • 必选:否。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/tooltip/index.html b/dev/lib/components/tooltip/index.html index 6d6a9bd456..5ecc2564dd 100644 --- a/dev/lib/components/tooltip/index.html +++ b/dev/lib/components/tooltip/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    提示消息

    提示消息又称“工具提示”,在鼠标悬停在元素上时及时显示额外的内容。

    使用方法

    组件提供多种不同方向的展示方式,可以根据需求选择你要的效果。

    触发方式

    除了默认的鼠标悬浮展示信息外,组件也提供了点击触发的方式。

    外观

    指定 type 选项来更改外观类型。

    选项

    名称类型默认值说明
    titlestringnull提示消息内容 placement?: string; // 弹出方向,可选值包括:'top-start' | 'top' | 'top-end' | 'bottom-start' | 'bottom' | 'bottom-end' | 'left-start' | 'left' | 'left-end' | 'right-start' | 'right' | 'right-end' trigger?: string; // 触发方式,可选值包括:'click' | 'hover' className?: string; // 类名 type?: string; // 外观类型,可选值包括:'primary' | 'secondary' | 'warning' | 'success' | 'danger' | 'important' | 'gray' animation?: boolean; // 是否应用淡入淡出动画 arrow?: number | number; // 箭头大小 delay?: boolean | number; // 延迟显示,可选值包括:true | false | number hideOthers?: boolean; // 显示时隐藏其他已经显示的提示消息

    MIT License (MIT)

    - +
    Skip to content

    提示消息

    提示消息又称“工具提示”,在鼠标悬停在元素上时及时显示额外的内容。

    使用方法

    组件提供多种不同方向的展示方式,可以根据需求选择你要的效果。

    触发方式

    除了默认的鼠标悬浮展示信息外,组件也提供了点击触发的方式。

    外观

    指定 type 选项来更改外观类型。

    选项

    名称类型默认值说明
    titlestringnull提示消息内容 placement?: string; // 弹出方向,可选值包括:'top-start' | 'top' | 'top-end' | 'bottom-start' | 'bottom' | 'bottom-end' | 'left-start' | 'left' | 'left-end' | 'right-start' | 'right' | 'right-end' trigger?: string; // 触发方式,可选值包括:'click' | 'hover' className?: string; // 类名 type?: string; // 外观类型,可选值包括:'primary' | 'secondary' | 'warning' | 'success' | 'danger' | 'important' | 'gray' animation?: boolean; // 是否应用淡入淡出动画 arrow?: number | number; // 箭头大小 delay?: boolean | number; // 延迟显示,可选值包括:true | false | number hideOthers?: boolean; // 显示时隐藏其他已经显示的提示消息

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/tree/index.html b/dev/lib/components/tree/index.html index 719c3aa616..48b3ffe755 100644 --- a/dev/lib/components/tree/index.html +++ b/dev/lib/components/tree/index.html @@ -14,8 +14,8 @@ - - + + @@ -181,7 +181,7 @@ /** 工具栏定义。 */ actions?: ToolbarOptions | ToolbarItemOptions[]; };

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/upload-imgs/index.html b/dev/lib/components/upload-imgs/index.html index bb452f7020..715fd55eb7 100644 --- a/dev/lib/components/upload-imgs/index.html +++ b/dev/lib/components/upload-imgs/index.html @@ -14,8 +14,8 @@ - - + + @@ -40,7 +40,7 @@ tip: '可点击添加或拖拽上传,图片格式支持jpg、jpeg', accept: 'image/jpg, image/jpeg' });

    选项

    name

    表单字段名。

    • 类型:string
    • 必选:是

    showSize

    是否显示文件大小。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    multiple

    是否开启多文件上传。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    uploadText

    上传按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'添加文件'

    uploadIcon

    上传按钮图标。

    • 类型:string
    • 必选:否

    renameBtn

    是否启用重命名按钮。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    renameIcon

    重命名按钮图标。

    • 类型:string
    • 必选:否
    • 默认值:'edit'

    renameText

    重命名按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'重命名'

    renameClass

    重命名按钮类。

    • 类型:string
    • 必选:否

    deleteBtn

    是否启用删除按钮。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    deleteIcon

    删除按钮图标。

    • 类型:string
    • 必选:否
    • 默认值:'trash'

    deleteText

    删除按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'删除'

    deleteClass

    删除按钮类。

    • 类型:string
    • 必选:否

    tip

    文件上传提示。

    • 类型:string
    • 必选:否

    btnClass

    上传按钮类。

    • 类型:string
    • 必选:否

    onAdd

    文件变更回调。

    • 类型:(files: File[] | File) => void
    • 必选:否

    onDelete

    删除文件回调。

    • 类型:(file: File) => void
    • 必选:否

    onRename

    重命名文件回调。

    • 类型:(newName: string, oldName: string) => void
    • 必选:否

    onSizeChange

    文件大小变更回调。

    • 类型:(size: number) => void
    • 必选:否

    limitCount

    上传文件最大数量限制。

    • 类型:number
    • 必选:否

    accept

    上传文件类型。

    • 类型:string
    • 必选:否

    defaultFileList

    默认文件列表。

    • 类型:File[]
    • 必选:否

    limitSize

    上传文件最大大小限制。

    • 类型:${number}${'B' | 'KB' | 'MB' | 'GB'} | false
    • 必选:否

    duplicatedHint

    重复文件提示。

    • 类型:string
    • 必选:否

    onDuplicated

    文件重复回调。

    • 类型:(name: string) => void
    • 必选:否

    exceededSizeHint

    超出大小限制提示。

    • 类型:string
    • 必选:否

    onExceededSize

    超出大小限制回调。

    • 类型:(limit: number) => void
    • 必选:否

    exceededCountHint

    超过数量限制提示。

    • 类型:string
    • 必选:否

    onExceededCount

    超过数量限制回调

    • 类型:(limit: number) => void
    • 必选:否

    totalCountText

    文件数量提示。

    • 类型:string
    • 必选:否
    • 默认值:'共 <span class="font-bold text-black">%s</span> 个文件 <span class="font-bold text-black">%s</span> 个文件等待上传。'

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/upload/index.html b/dev/lib/components/upload/index.html index 56dec60944..ab34febf75 100644 --- a/dev/lib/components/upload/index.html +++ b/dev/lib/components/upload/index.html @@ -14,8 +14,8 @@ - - + + @@ -56,7 +56,7 @@ name: 'files8', defaultFileList: [file1, file2] });

    选项

    name

    表单字段名。

    • 类型:string
    • 必选:是

    icon

    文件图标。

    • 类型:string
    • 必选:否
    • 默认值:'file-o'

    showIcon

    是否显示文件图标。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    showSize

    是否显示文件大小。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    multiple

    是否开启多文件上传。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    listPosition

    文件列表位置。

    • 类型:'bottom' | 'top'
    • 必选:否
    • 默认值:'bottom'

    uploadText

    上传按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'上传文件'

    uploadIcon

    上传按钮图标。

    • 类型:string
    • 必选:否

    renameBtn

    是否启用重命名按钮。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    renameIcon

    重命名按钮图标。

    • 类型:string
    • 必选:否
    • 默认值:'edit'

    renameText

    重命名按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'重命名'

    renameClass

    重命名按钮类。

    • 类型:string
    • 必选:否

    deleteBtn

    是否启用删除按钮。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    deleteIcon

    删除按钮图标。

    • 类型:string
    • 必选:否
    • 默认值:'trash'

    deleteText

    删除按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'删除'

    deleteClass

    删除按钮类。

    • 类型:string
    • 必选:否

    confirmText

    确认重命名按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'确定'

    cancelText

    取消重命名按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'取消'

    useIconBtn

    是否使用图标按钮。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    tip

    文件上传提示。

    • 类型:string
    • 必选:否

    btnClass

    上传按钮类。

    • 类型:string
    • 必选:否

    onAdd

    文件变更回调。

    • 类型:(files: File[] | File) => void
    • 必选:否

    onDelete

    删除文件回调。

    • 类型:(file: File) => void
    • 必选:否

    onRename

    重命名文件回调。

    • 类型:(newName: string, oldName: string) => void
    • 必选:否

    onSizeChange

    文件大小变更回调。

    • 类型:(size: number) => void
    • 必选:否

    draggable

    是否启用拖拽功能。

    • 类型:boolean
    • 必选:否
    • 默认值:false

    limitCount

    上传文件最大数量限制。

    • 类型:number
    • 必选:否

    accept

    上传文件类型。

    • 类型:string
    • 必选:否

    defaultFileList

    默认文件列表。

    • 类型:File[]
    • 必选:否

    limitSize

    上传文件最大大小限制。

    • 类型:${number}${'B' | 'KB' | 'MB' | 'GB'} | false
    • 必选:否

    duplicatedHint

    重复文件提示。

    • 类型:string
    • 必选:否

    onDuplicated

    文件重复回调。

    • 类型:(name: string) => void
    • 必选:否

    exceededSizeHint

    超出大小限制提示。

    • 类型:string
    • 必选:否

    onExceededSize

    超出大小限制回调。

    • 类型:(limit: number) => void
    • 必选:否

    exceededCountHint

    超过数量限制提示。

    • 类型:string
    • 必选:否

    onExceededCount

    超过数量限制回调

    • 类型:(limit: number) => void
    • 必选:否

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/forms/checkbox/index.html b/dev/lib/forms/checkbox/index.html index b0638e265e..2f92cf8a18 100644 --- a/dev/lib/forms/checkbox/index.html +++ b/dev/lib/forms/checkbox/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    复选框和单选框

    复选框(checkbox)允许用户选择多个选项,不同于 <select>,这些选项是直接展示的。为 <input type="checkbox"> 设置 disabled 属性来应用禁用样式,如果为 .checkbox 添加 disabled 类,则整个复选框包括文字部分都会应用禁用样式。将多个复选框堆叠形成一个复选框组。

    基本使用

    复选框

    单选框列表

    单选框通常多个一起使用组成列表,将多个单选框放在 .check-list 中即可。

    复选框列表

    复选框也支持多个一起使用组成列表,将多个复选框放在 .check-list 中即可。

    不包含文字样式

    复选框

    单选框

    内联形式

    为让多个复选框或单选框内联显示,可以将他们放置在一个 .check-list-inline 中。

    内联多选框

    内联单选框

    内联间距

    可以通过工具类 gap-* 来设置内联的复选框和单选框间的间距。

    高级外观

    高级外观的多选框和单选框使用自定义的外观代替原生外观,在所有浏览器都具有一致的体验。

    高级外观的复选框

    高级外观的单选框

    <input> 选择框

    高级外观还可以不使用 <input> 元素,在此种情况下,为 .checkbox-primary.radio-primary 添加 .checked 类标记为选中状态,通过 focus 类来标记激活状态,用户无法通过点击来切换选中状态,但可以通过程序手动添加或移除 .checked 来更改选中状态。

    设置高级外观颜色

    通过设置 CSS 变量 --checkbox-color 可以设置高级外观颜色。

    CSS 类

    单选框和复选框提供了如下 CSS 类:

    类型作用
    checkbox实体类复选框组件
    radio实体类单选框组件
    check-list实体类复选框或单选框列表组件
    check-list-inline实体类复选框或单选框内联列表组件
    checkbox-primary实体类高级外观的复选框组件
    radio-primary实体类高级外观的单选框组件
    checked修饰类强制使用选中外观
    focus修饰类强制使用激活外观
    disabled修饰类强制使用禁用外观
    indeterminate修饰类强制使用 Indeterminate 外观

    CSS 变量

    单选框和复选框提供了如下 CSS 变量:

    CSS 变量名作用
    --checkbox-size复选框或单选框大小,仅当使用高级外观时有效
    --checkbox-color复选框或单选框颜色,仅当使用高级外观时有效

    MIT License (MIT)

    - +
    Skip to content

    复选框和单选框

    复选框(checkbox)允许用户选择多个选项,不同于 <select>,这些选项是直接展示的。为 <input type="checkbox"> 设置 disabled 属性来应用禁用样式,如果为 .checkbox 添加 disabled 类,则整个复选框包括文字部分都会应用禁用样式。将多个复选框堆叠形成一个复选框组。

    基本使用

    复选框

    单选框列表

    单选框通常多个一起使用组成列表,将多个单选框放在 .check-list 中即可。

    复选框列表

    复选框也支持多个一起使用组成列表,将多个复选框放在 .check-list 中即可。

    不包含文字样式

    复选框

    单选框

    内联形式

    为让多个复选框或单选框内联显示,可以将他们放置在一个 .check-list-inline 中。

    内联多选框

    内联单选框

    内联间距

    可以通过工具类 gap-* 来设置内联的复选框和单选框间的间距。

    高级外观

    高级外观的多选框和单选框使用自定义的外观代替原生外观,在所有浏览器都具有一致的体验。

    高级外观的复选框

    高级外观的单选框

    <input> 选择框

    高级外观还可以不使用 <input> 元素,在此种情况下,为 .checkbox-primary.radio-primary 添加 .checked 类标记为选中状态,通过 focus 类来标记激活状态,用户无法通过点击来切换选中状态,但可以通过程序手动添加或移除 .checked 来更改选中状态。

    设置高级外观颜色

    通过设置 CSS 变量 --checkbox-color 可以设置高级外观颜色。

    CSS 类

    单选框和复选框提供了如下 CSS 类:

    类型作用
    checkbox实体类复选框组件
    radio实体类单选框组件
    check-list实体类复选框或单选框列表组件
    check-list-inline实体类复选框或单选框内联列表组件
    checkbox-primary实体类高级外观的复选框组件
    radio-primary实体类高级外观的单选框组件
    checked修饰类强制使用选中外观
    focus修饰类强制使用激活外观
    disabled修饰类强制使用禁用外观
    indeterminate修饰类强制使用 Indeterminate 外观

    CSS 变量

    单选框和复选框提供了如下 CSS 变量:

    CSS 变量名作用
    --checkbox-size复选框或单选框大小,仅当使用高级外观时有效
    --checkbox-color复选框或单选框颜色,仅当使用高级外观时有效

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/forms/checkbox/switch.html b/dev/lib/forms/checkbox/switch.html index 403c13f0ba..05056a86fa 100644 --- a/dev/lib/forms/checkbox/switch.html +++ b/dev/lib/forms/checkbox/switch.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    开关

    基本使用

    与单选框和复选框的高级外观一样,通过 .switch 类来启用开关外观。

    开关颜色

    通过设置 CSS 变量 --checkbox-color 可以设置高级外观颜色。

    开关列表

    垂直列表

    通过将多个开关放置在 .check-list 中,可以实现一个开关列表:

    内联列表

    通过将多个开关放置在 .check-list 中,可以实现一个开关内联列表:

    列表联动

    通过开关内部使用的 input[type="checkbox"] 更换为 input[type="radio"],并指定为相同的 name 属性,即可实现多个开关单选联动:

    CSS 类

    开关提供了如下 CSS 类:

    类型作用
    switch实体类开关组件
    check-list实体类开关列表组件
    check-list-inline实体类开关内联列表组件
    checked修饰类强制使用选中外观
    focus修饰类强制使用激活外观
    disabled修饰类强制使用禁用外观

    CSS 变量

    单选框和复选框提供了如下 CSS 变量:

    CSS 变量名作用
    --checkbox-color开关颜色,仅当使用高级外观时有效

    MIT License (MIT)

    - +
    Skip to content

    开关

    基本使用

    与单选框和复选框的高级外观一样,通过 .switch 类来启用开关外观。

    开关颜色

    通过设置 CSS 变量 --checkbox-color 可以设置高级外观颜色。

    开关列表

    垂直列表

    通过将多个开关放置在 .check-list 中,可以实现一个开关列表:

    内联列表

    通过将多个开关放置在 .check-list 中,可以实现一个开关内联列表:

    列表联动

    通过开关内部使用的 input[type="checkbox"] 更换为 input[type="radio"],并指定为相同的 name 属性,即可实现多个开关单选联动:

    CSS 类

    开关提供了如下 CSS 类:

    类型作用
    switch实体类开关组件
    check-list实体类开关列表组件
    check-list-inline实体类开关内联列表组件
    checked修饰类强制使用选中外观
    focus修饰类强制使用激活外观
    disabled修饰类强制使用禁用外观

    CSS 变量

    单选框和复选框提供了如下 CSS 变量:

    CSS 变量名作用
    --checkbox-color开关颜色,仅当使用高级外观时有效

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/forms/datetime-picker/date.html b/dev/lib/forms/datetime-picker/date.html index 99e4685d56..5268b8f3f3 100644 --- a/dev/lib/forms/datetime-picker/date.html +++ b/dev/lib/forms/datetime-picker/date.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    日期选择器

    用法

    设置默认值

    通过 defaultValue 选项设置默认值,设置为 'today' 可以将默认值设置为当天。

    格式化

    通过 format 选项设置日期格式化形式,支持日期辅助方法 formatDate 中的所有格式。

    限制日期范围

    通过 minDatemaxDate 来限制可选的日期范围。

    自定义菜单

    通过 menu 选项可以在弹出面板侧面显示一个自定义菜单,通过 actions 可以自定义底部工具栏上的按钮。在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    自定义侧边菜单

    通过 menu 选项可以在弹出面板左侧显示一个自定义菜单,在菜单项配置上通过 [data-set-date] 属性指定点击菜单项时要设定的日期。

    自定义底部按钮

    通过 actions 可以自定义底部工具栏上的按钮,在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    选项

    名称类型默认值说明
    classNameanynull组件根元素的类名。 style?: object; // 组件根元素的样式。 tagName?: string; // 组件根元素的标签名。 attrs?: object; // 附加到组件根元素上的属性。 clickType?: 'toggle' | 'open'; // 点击类型,toggle 表示点击按钮时切换显示隐藏,open 表示点击按钮时只打开。 name?: string; // 作为表单项的名称。 defaultValue?: 'today' | string; // 默认值。 onChange?: function; // 值变更时的回调函数。 disabled?: boolean; // 是否禁用。 readonly?: boolean; // 是否只读,不允许手动修改。 required?: boolean; // 是否必须提供值(不能清除和选择空值)。 placeholder?: string; // 输入框上占位文本。 format?: string; // 日期格式,默认 yyyy-MM-dd。 icon?: string | object; // 在输入框右侧显示的图标。 weekNames?: string[]; // 星期名称,索引为 0 表示周日。 monthNames?: string[]; // 月份名称,索引为 0 表示一月份。 yearText?: string; // 用于显示年份的格式化文本。 todayText?: string; // 用于显示“今天”的文本。 clearText?: string; // 用于显示“清除”的文本。 weekStart?: number; // 一周从星期几开始,默认 1。 minDate?: DateLike; // 最小可选的日期。 maxDate?: DateLike; // 最大可选的日期。 menu?: object[] | object; // 左侧显示的菜单设置。 actions?: object[] | object; // 底部工具栏设置。 onInvalid?: function; // 日期值无效时的回调函数。

    MIT License (MIT)

    - +
    Skip to content

    日期选择器

    用法

    设置默认值

    通过 defaultValue 选项设置默认值,设置为 'today' 可以将默认值设置为当天。

    格式化

    通过 format 选项设置日期格式化形式,支持日期辅助方法 formatDate 中的所有格式。

    限制日期范围

    通过 minDatemaxDate 来限制可选的日期范围。

    自定义菜单

    通过 menu 选项可以在弹出面板侧面显示一个自定义菜单,通过 actions 可以自定义底部工具栏上的按钮。在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    自定义侧边菜单

    通过 menu 选项可以在弹出面板左侧显示一个自定义菜单,在菜单项配置上通过 [data-set-date] 属性指定点击菜单项时要设定的日期。

    自定义底部按钮

    通过 actions 可以自定义底部工具栏上的按钮,在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    选项

    名称类型默认值说明
    classNameanynull组件根元素的类名。 style?: object; // 组件根元素的样式。 tagName?: string; // 组件根元素的标签名。 attrs?: object; // 附加到组件根元素上的属性。 clickType?: 'toggle' | 'open'; // 点击类型,toggle 表示点击按钮时切换显示隐藏,open 表示点击按钮时只打开。 name?: string; // 作为表单项的名称。 defaultValue?: 'today' | string; // 默认值。 onChange?: function; // 值变更时的回调函数。 disabled?: boolean; // 是否禁用。 readonly?: boolean; // 是否只读,不允许手动修改。 required?: boolean; // 是否必须提供值(不能清除和选择空值)。 placeholder?: string; // 输入框上占位文本。 format?: string; // 日期格式,默认 yyyy-MM-dd。 icon?: string | object; // 在输入框右侧显示的图标。 weekNames?: string[]; // 星期名称,索引为 0 表示周日。 monthNames?: string[]; // 月份名称,索引为 0 表示一月份。 yearText?: string; // 用于显示年份的格式化文本。 todayText?: string; // 用于显示“今天”的文本。 clearText?: string; // 用于显示“清除”的文本。 weekStart?: number; // 一周从星期几开始,默认 1。 minDate?: DateLike; // 最小可选的日期。 maxDate?: DateLike; // 最大可选的日期。 menu?: object[] | object; // 左侧显示的菜单设置。 actions?: object[] | object; // 底部工具栏设置。 onInvalid?: function; // 日期值无效时的回调函数。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/forms/datetime-picker/datetime.html b/dev/lib/forms/datetime-picker/datetime.html index c61d06fe46..0c7eb3824c 100644 --- a/dev/lib/forms/datetime-picker/datetime.html +++ b/dev/lib/forms/datetime-picker/datetime.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    日期时间选择器

    日期时间选择器允许用户通过下拉面板同时选择日期和时间。

    用法

    设置默认值

    通过 defaultValue 选项设置默认值,设置为 'today' 可以将默认值设置为现在时间。

    格式化

    通过 format 选项设置日期和时间的格式化形式。

    限制日期范围

    通过 minDatemaxDate 来限制可选的日期范围。

    自定义菜单

    通过 menu 选项可以在弹出面板左侧显示一个自定义菜单,通过 actions 可以自定义底部工具栏上的按钮。在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    自定义左侧菜单

    通过 menu 选项可以在弹出面板左侧显示一个自定义菜单,在菜单项配置上通过 [data-set-date] 属性指定点击菜单项时要设定的日期。

    自定义底部按钮

    通过 actions 可以自定义底部工具栏上的按钮,在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    选项

    名称类型默认值说明
    classNameanynull组件根元素的类名。 style?: object; // 组件根元素的样式。 tagName?: string; // 组件根元素的标签名。 attrs?: object; // 附加到组件根元素上的属性。 clickType?: 'toggle' | 'open'; // 点击类型,toggle 表示点击按钮时切换显示隐藏,open 表示点击按钮时只打开。 name?: string; // 作为表单项的名称。 defaultValue?: 'today' | string; // 默认值。 onChange?: function; // 值变更时的回调函数。 disabled?: boolean; // 是否禁用。 readonly?: boolean; // 是否只读,不允许手动修改。 required?: boolean; // 是否必须提供值(不能清除和选择空值)。 placeholder?: string; // 输入框上占位文本。 format?: string; // 日期格式,默认 yyyy-MM-dd。 icon?: string | object; // 在输入框右侧显示的图标。 weekNames?: string[]; // 星期名称,索引为 0 表示周日。 monthNames?: string[]; // 月份名称,索引为 0 表示一月份。 yearText?: string; // 用于显示年份的格式化文本。 todayText?: string; // 用于显示“今天”的文本。 clearText?: string; // 用于显示“清除”的文本。 weekStart?: number; // 一周从星期几开始,默认 1。 minDate?: DateLike; // 最小可选的日期。 maxDate?: DateLike; // 最大可选的日期。 menu?: object[] | object; // 左侧显示的菜单设置。 actions?: object[] | object; // 底部工具栏设置。 onInvalid?: function; // 日期值无效时的回调函数。 minuteStep?: number; // 分钟选择间隔,默认 5(分钟)。

    MIT License (MIT)

    - +
    Skip to content

    日期时间选择器

    日期时间选择器允许用户通过下拉面板同时选择日期和时间。

    用法

    设置默认值

    通过 defaultValue 选项设置默认值,设置为 'today' 可以将默认值设置为现在时间。

    格式化

    通过 format 选项设置日期和时间的格式化形式。

    限制日期范围

    通过 minDatemaxDate 来限制可选的日期范围。

    自定义菜单

    通过 menu 选项可以在弹出面板左侧显示一个自定义菜单,通过 actions 可以自定义底部工具栏上的按钮。在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    自定义左侧菜单

    通过 menu 选项可以在弹出面板左侧显示一个自定义菜单,在菜单项配置上通过 [data-set-date] 属性指定点击菜单项时要设定的日期。

    自定义底部按钮

    通过 actions 可以自定义底部工具栏上的按钮,在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    选项

    名称类型默认值说明
    classNameanynull组件根元素的类名。 style?: object; // 组件根元素的样式。 tagName?: string; // 组件根元素的标签名。 attrs?: object; // 附加到组件根元素上的属性。 clickType?: 'toggle' | 'open'; // 点击类型,toggle 表示点击按钮时切换显示隐藏,open 表示点击按钮时只打开。 name?: string; // 作为表单项的名称。 defaultValue?: 'today' | string; // 默认值。 onChange?: function; // 值变更时的回调函数。 disabled?: boolean; // 是否禁用。 readonly?: boolean; // 是否只读,不允许手动修改。 required?: boolean; // 是否必须提供值(不能清除和选择空值)。 placeholder?: string; // 输入框上占位文本。 format?: string; // 日期格式,默认 yyyy-MM-dd。 icon?: string | object; // 在输入框右侧显示的图标。 weekNames?: string[]; // 星期名称,索引为 0 表示周日。 monthNames?: string[]; // 月份名称,索引为 0 表示一月份。 yearText?: string; // 用于显示年份的格式化文本。 todayText?: string; // 用于显示“今天”的文本。 clearText?: string; // 用于显示“清除”的文本。 weekStart?: number; // 一周从星期几开始,默认 1。 minDate?: DateLike; // 最小可选的日期。 maxDate?: DateLike; // 最大可选的日期。 menu?: object[] | object; // 左侧显示的菜单设置。 actions?: object[] | object; // 底部工具栏设置。 onInvalid?: function; // 日期值无效时的回调函数。 minuteStep?: number; // 分钟选择间隔,默认 5(分钟)。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/forms/datetime-picker/time.html b/dev/lib/forms/datetime-picker/time.html index 77c22e5ab6..dd254dc553 100644 --- a/dev/lib/forms/datetime-picker/time.html +++ b/dev/lib/forms/datetime-picker/time.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    时间选择器

    用法

    设置默认值

    通过 defaultValue 选项设置默认值,设置为 'now' 可以将默认值设置为页面显示的时刻。

    格式化

    通过 format 选项设置日期格式化形式,支持日期辅助方法 formatDate 中的所有格式。

    选项

    名称类型默认值说明

    MIT License (MIT)

    - +
    Skip to content

    时间选择器

    用法

    设置默认值

    通过 defaultValue 选项设置默认值,设置为 'now' 可以将默认值设置为页面显示的时刻。

    格式化

    通过 format 选项设置日期格式化形式,支持日期辅助方法 formatDate 中的所有格式。

    选项

    名称类型默认值说明

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/forms/form-control/index.html b/dev/lib/forms/form-control/index.html index a9b38dfb16..478e660e21 100644 --- a/dev/lib/forms/form-control/index.html +++ b/dev/lib/forms/form-control/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    表单控件

    输入框

    输入框通过为 <input> 元素添加类 form-control 实现,支持通过 type 属性设置输入框类型。

    选择框

    通过为 <select> 元素添加 form-control 类来使用选择框,包括单选和多选模式。

    单选框

    多选框

    TIP

    使用多选框时通常需要指定多选框高度。

    多行文本框

    通过为 <textarea> 元素添加 form-control 类来使用多行文本框。

    特殊表单控件

    在浏览器支持的情况下,还可以为 type 设置一些特殊类型。

    日期

    设置 <input type="date">

    时间

    设置 <input type="time">

    日期时间

    设置 <input type="datetime-local">

    月份

    设置 <input type="month">

    周数

    设置 <input type="week">

    范围

    设置 <input type="range">

    颜色

    设置 <input type="color">

    文件

    设置 <input type="file">

    尺寸

    通过为表单控件添加 size-* 工具类来设置尺寸。

    禁用

    通过为表单控件添加 disabled 属性来禁用表单控件。

    只读

    通过为表单控件添加 readonly 属性来表单控件只读。

    特殊状态

    通过为表单控件或者其直接父级元素添加工具类 has-errorhas-warninghas-error 来让其拥有特殊语义的状态。

    CSS 类

    表单控件提供了如下 CSS 类:

    类型作用
    form-control实体类元素作为表单控件组件
    size-sm工具类表单控件使用小号尺寸
    size-lg工具类表单控件使用大号尺寸

    CSS 变量

    表单控件提供了如下 CSS 变量,可进行全局修改。

    CSS 变量名作用
    --form-control-radius圆角
    --form-control-border边框颜色
    --form-control-focus激活颜色
    --form-control-disabled禁用颜色
    --form-control-readonly只读颜色

    MIT License (MIT)

    - +
    Skip to content

    表单控件

    输入框

    输入框通过为 <input> 元素添加类 form-control 实现,支持通过 type 属性设置输入框类型。

    选择框

    通过为 <select> 元素添加 form-control 类来使用选择框,包括单选和多选模式。

    单选框

    多选框

    TIP

    使用多选框时通常需要指定多选框高度。

    多行文本框

    通过为 <textarea> 元素添加 form-control 类来使用多行文本框。

    特殊表单控件

    在浏览器支持的情况下,还可以为 type 设置一些特殊类型。

    日期

    设置 <input type="date">

    时间

    设置 <input type="time">

    日期时间

    设置 <input type="datetime-local">

    月份

    设置 <input type="month">

    周数

    设置 <input type="week">

    范围

    设置 <input type="range">

    颜色

    设置 <input type="color">

    文件

    设置 <input type="file">

    尺寸

    通过为表单控件添加 size-* 工具类来设置尺寸。

    禁用

    通过为表单控件添加 disabled 属性来禁用表单控件。

    只读

    通过为表单控件添加 readonly 属性来表单控件只读。

    特殊状态

    通过为表单控件或者其直接父级元素添加工具类 has-errorhas-warninghas-error 来让其拥有特殊语义的状态。

    CSS 类

    表单控件提供了如下 CSS 类:

    类型作用
    form-control实体类元素作为表单控件组件
    size-sm工具类表单控件使用小号尺寸
    size-lg工具类表单控件使用大号尺寸

    CSS 变量

    表单控件提供了如下 CSS 变量,可进行全局修改。

    CSS 变量名作用
    --form-control-radius圆角
    --form-control-border边框颜色
    --form-control-focus激活颜色
    --form-control-disabled禁用颜色
    --form-control-readonly只读颜色

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/forms/form/index.html b/dev/lib/forms/form/index.html index e40d0eba9f..824f6f4e48 100644 --- a/dev/lib/forms/form/index.html +++ b/dev/lib/forms/form/index.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    表单

    基本用法

    <form> 元素使用类 .form 类来获得表单外观,将表单控件放置在表单控件组 .form-group 内,将表单操作按钮放置在表单操作栏 .form-actions 中。

    水平布局的表单

    <form> 元素使用类 .form-horz 类来让表单实现水平布局。

    在水平布局表单中,如果需要在一行包含多个表单控件,可以使用 .form-row 类,下面是一个更复杂的例子:

    可以放在同一行的字段满足:可连着填写,字段意义上有相似性
    此表单项为必填
    强关联字段,有灰色底色进行连接,3个以上框的自适应宽度

    网格布局

    <form> 元素使用类 .form-grid 类来让表单实现网格布局。

    .form-group 添加 w-* 辅助类来设置宽度
    项目类型
    -

    帮助性文本

    使用 form-tip 来显示帮助性的文本并添加到表单控件组中。

    校验状态

    通过为表单控件组添加 has-warninghas-errorhas-success 类即可应用相应的效验状态样式。这些样式会影响到表单控件组内的 label.form-control.form-tip 元素。

    表单分组

    使用fieldset 将多个表单控件放置在一起进行分组。在<fieldset> 内使用 <legend> 来定义分组标题。

    账号信息
    额外内容

    标记必填项

    标记必填项的一种通用方法是在标签上添加星标 * , 在表单控件组中只需要为表单组标签 .form-label 添加 required 类。

    水平布局的表单中也可以使用:

    CSS 类

    表单提供了如下 CSS 类

    类型作用
    form-group实体类元素作为表单组件
    form-label实体类元素作为表单组标签
    form-control实体类元素作为表单控件组件
    form-tip实体类元素作为表单控件的提示性文本
    form-actions实体类元素作为表单按钮容器
    form-grid修饰类为表单启用水平排列样式
    required修饰类为表单控件启用必填标记样式
    has-error修饰类为表单控件启用报错样式
    has-warning修饰类为表单控件启用警告样式
    has-success修饰类为表单控件启用成功样式

    CSS 变量

    变量名称变量含义
    --form-label-color表单组标签颜色
    --form-tip-color帮助性文本默认颜色
    --form-grid-label-width水平布局时表单表单组标签宽度

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/forms/input-control/index.html b/dev/lib/forms/input-control/index.html index 5733ffdc09..ce73ef1cbf 100644 --- a/dev/lib/forms/input-control/index.html +++ b/dev/lib/forms/input-control/index.html @@ -14,19 +14,19 @@ - - + + -
    Skip to content

    输入框

    通过鼠标或键盘输入内容,可以在输入框前后位置包含额外的文本或图标,通常用在表单、对话框上面。

    基本使用

    使用 input-control 类来获得输入框的外观和交互体验。

    用户名
    用户名验证失败

    包含图标和按钮

    前缀和后缀

    通过结合类 has-prefix has-suffix 在输入框上添加前缀或后缀图标或字符。

    除了预设的前 / 后缀宽度,还预设了其他两种尺寸,结合 has-prefix-*has-suffix-* 类进行不同宽度展示。

    用户名
    有效身份证号码

    尺寸

    除了默认大小,输入框还提供了额外的 2 种预设尺寸。

    小号尺寸

    用户名
    有效身份证号码

    默认尺寸

    用户名
    有效身份证号码

    大号尺寸

    用户名
    有效身份证号码

    外观类型

    配合使用CSS 工具类来实现不同输入框的外观。下面展示各种工具类的外观效果。

    html
    <div class="input-control">
    +    
    Skip to content

    输入框

    通过鼠标或键盘输入内容,可以在输入框前后位置包含额外的文本或图标,通常用在表单、对话框上面。

    基本使用

    使用 input-control 类来获得输入框的外观和交互体验。

    用户名
    用户名验证失败

    包含图标和按钮

    前缀和后缀

    通过结合类 has-prefix has-suffix 在输入框上添加前缀或后缀图标或字符。

    除了预设的前 / 后缀宽度,还预设了其他两种尺寸,结合 has-prefix-*has-suffix-* 类进行不同宽度展示。

    用户名
    有效身份证号码

    尺寸

    除了默认大小,输入框还提供了额外的 2 种预设尺寸。

    小号尺寸

    用户名
    有效身份证号码

    默认尺寸

    用户名
    有效身份证号码

    大号尺寸

    用户名
    有效身份证号码

    外观类型

    配合使用CSS 工具类来实现不同输入框的外观。下面展示各种工具类的外观效果。

    html
    <div class="input-control">
       <input type="text" class="form-control circle" placeholder="请填写" />
     </div>
     <div class="input-control">
       <input type="text" class="form-control shadow" placeholder="请填写" />
     </div>

    CSS 类

    输入框提供了如下 CSS 类:

    类型作用
    input-control实体类元素作为输入框组件
    input-control-prefix工具类输入框前缀元素样式
    input-control-suffix工具类输入框后缀元素样式
    has-prefix工具类标记输入框拥有前缀元素
    has-suffix工具类标记输入框拥有后缀元素
    has-prefix-icon工具类标记输入框拥有前缀图标
    has-suffix-icon工具类标记输入框拥有后缀图标
    size-sm工具类输入框使用小号尺寸
    size-lg工具类输入框使用大号尺寸

    CSS 变量

    输入框提供了如下 CSS 变量,可进行全局修改。

    CSS 变量名作用
    --input-fix-width输入框前/后缀的默认宽度
    --input-fix-width-sm输入框前/后缀的小号宽度
    --input-fix-width-lg输入框前/后缀的大号宽度

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/forms/input-group/index.html b/dev/lib/forms/input-group/index.html index c0fe9332d3..9afb75ac6a 100644 --- a/dev/lib/forms/input-group/index.html +++ b/dev/lib/forms/input-group/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    输入组

    通过在文本输入框 <input> 前面、后面或是两边加上文字、图标或按钮,可以实现对表单控件的扩展。

    使用方法

    在元素使用工具类 .input-group 作为输入组容器,然后在内部添加表单控件、按钮或附加文本(.input-group-addon)。

    账号
    密码

    组合方式

    在输入组内部可以将不同的内容按需组合使用,包括附加文本(.input-group-addon)、表单控件(.form-control)、按钮(.btn)。

    登录

    尺寸

    除了默认大小,输入组还提供了额外的 2 种预设尺寸,通过修饰类 .size-* 来应用尺寸。

    登录
    登录
    登录

    CSS 类

    输入组提供了如下 CSS 类:

    类型作用
    input-group实体类元素作为输入组组件
    input-group-addon实体类元素作为输入组内部额外元素
    size-sm工具类输入组使用小号尺寸
    size-lg工具类输入组使用大号尺寸

    CSS 变量

    变量名称变量含义
    --input-group-addon-bg输入组附加部分背景颜色

    MIT License (MIT)

    - +
    Skip to content

    输入组

    通过在文本输入框 <input> 前面、后面或是两边加上文字、图标或按钮,可以实现对表单控件的扩展。

    使用方法

    在元素使用工具类 .input-group 作为输入组容器,然后在内部添加表单控件、按钮或附加文本(.input-group-addon)。

    账号
    密码

    组合方式

    在输入组内部可以将不同的内容按需组合使用,包括附加文本(.input-group-addon)、表单控件(.form-control)、按钮(.btn)。

    登录

    尺寸

    除了默认大小,输入组还提供了额外的 2 种预设尺寸,通过修饰类 .size-* 来应用尺寸。

    登录
    登录
    登录

    CSS 类

    输入组提供了如下 CSS 类:

    类型作用
    input-group实体类元素作为输入组组件
    input-group-addon实体类元素作为输入组内部额外元素
    size-sm工具类输入组使用小号尺寸
    size-lg工具类输入组使用大号尺寸

    CSS 变量

    变量名称变量含义
    --input-group-addon-bg输入组附加部分背景颜色

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/forms/picker/index.html b/dev/lib/forms/picker/index.html index 642d80626a..acaafce81a 100644 --- a/dev/lib/forms/picker/index.html +++ b/dev/lib/forms/picker/index.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/lib/helpers/helpers/date-helper.html b/dev/lib/helpers/helpers/date-helper.html index 6f89da04ec..65382ddf3b 100644 --- a/dev/lib/helpers/helpers/date-helper.html +++ b/dev/lib/helpers/helpers/date-helper.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    日期辅助方法

    createDate

    创建日期时间对象。

    定义:

    ts
    function createDate(dateLike: string | number | Date): Date;

    参数

    • dateLike:日期时间对象或者日期时间字符串或者时间戳。

    返回值Date:日期时间对象。

    addDate

    在一个日期时间对象上增加指定的时间。

    定义:

    ts
    function addDate(dateLike: string | number | Date, value: number, unit: string): Date;

    参数:

    • dateLike:日期时间对象或者日期时间字符串或者时间戳;
    • value:增加的时间值;
    • unit:增加的时间单位,可选值为:yearmonthdayhourminutesecond

    返回值: Date:日期时间对象。

    formatDate

    格式化日期时间对象。

    定义:

    ts
    function formatDate(dateLike: string | number | Date, format = 'yyyy-MM-dd hh:mm', invalidDateValue = ''): string;

    参数:

    • dateLike:日期时间对象或者日期时间字符串或者时间戳;
    • format:格式化字符串,可选值为:yyyyMMddhhmmssSSS
    • invalidDateValue:无效日期时间对象时的返回值。

    返回值: string:格式化后的日期时间字符串。

    所有支持的格式化占位符包括:

      • yyyy,例如:2018,表示四位数字表示的年份
      • yy,例如:18,表示两位数字表示的年份
      • MM,例如:07,表示两位数字表示的月份,不足两位在起始用 0 填充
      • M,例如:10,表示一位或两位数字表示的月份
      • dd,例如:05,表示两位数字表示的日期,不足两位在起始用 0 填充
      • d,例如:5,表示一位或两位数字表示的日期
      • hh,例如:08,表示两位数字表示的小时,不足两位在起始用 0 填充
      • h,例如:8,表示一位或两位数字表示的小时
      • mm,例如:03,表示两位数字表示的分钟,不足两位在起始用 0 填充
      • m,例如:3,表示一位或两位数字表示的分钟
      • ss,例如:05,表示两位数字表示的秒数,不足两位在起始用 0 填充
      • s,例如:5,表示一位或两位数字表示的秒数
      • S,例如:236,表示毫秒数
      • SSS,例如:036,表示毫秒数,不足3位在起始用 0 填充

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/helpers/helpers/string-helper.html b/dev/lib/helpers/helpers/string-helper.html index d8540844ea..4d2f45f907 100644 --- a/dev/lib/helpers/helpers/string-helper.html +++ b/dev/lib/helpers/helpers/string-helper.html @@ -14,8 +14,8 @@ - - + + @@ -25,7 +25,7 @@ /** 通过映射对象的形式格式化字符串。 */ function formatString(str: string, map: Record<string, unknown>): string;

    参数

    • str:字符串;
    • args:格式化参数;
    • map:格式化参数映射对象。

    返回值string:格式化后的字符串。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/helpers/store/index.html b/dev/lib/helpers/store/index.html index ad80514425..f34d2a1166 100644 --- a/dev/lib/helpers/store/index.html +++ b/dev/lib/helpers/store/index.html @@ -14,8 +14,8 @@ - - + + @@ -41,7 +41,7 @@ store.get('mySecretCode'); // 返回 1 myStore.get('mySecretCode'); // 返回 2 mySessionStore.get('mySecretCode'); // 返回 3

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/index.html b/dev/lib/index.html index ea4d947658..b2fa672c0c 100644 --- a/dev/lib/index.html +++ b/dev/lib/index.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/public/zui/icons/fontawesome-license.html b/dev/public/zui/icons/fontawesome-license.html index fc6409947b..8eed4e357e 100644 --- a/dev/public/zui/icons/fontawesome-license.html +++ b/dev/public/zui/icons/fontawesome-license.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    License

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/themes/index.html b/dev/themes/index.html index 6f6c808581..4f08d01c44 100644 --- a/dev/themes/index.html +++ b/dev/themes/index.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/backgrounds/utilities/index.html b/dev/utilities/backgrounds/utilities/index.html index 7bec43447e..46ef904b53 100644 --- a/dev/utilities/backgrounds/utilities/index.html +++ b/dev/utilities/backgrounds/utilities/index.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    背景色

    效果

    使用工具类 bg-* 给元素添加背景色。

    语义化
    bg-primary
    bg-secondary
    bg-success
    bg-warning
    bg-danger
    bg-important
    bg-special
    主色系列
    bg-primary-50
    bg-primary-100
    bg-primary-200
    bg-primary-300
    bg-primary-400
    bg-primary-500
    bg-primary-600
    bg-primary-700
    bg-primary-800
    bg-primary-900
    bg-primary-950
    次要系列
    bg-secondary-50
    bg-secondary-100
    bg-secondary-200
    bg-secondary-300
    bg-secondary-400
    bg-secondary-500
    bg-secondary-600
    bg-secondary-700
    bg-secondary-800
    bg-secondary-900
    bg-secondary-950
    灰度
    bg-gray-50
    bg-gray-100
    bg-gray-200
    bg-gray-300
    bg-gray-400
    gray
    bg-gray-500 别名: bg-gray
    bg-gray-600
    bg-gray-700
    bg-gray-800
    bg-gray-900
    bg-gray-950
    界面
    bg-white
    纯白
    bg-black
    纯黑
    bg-transparent
    透明
    bg-canvas
    画布
    bg-inverse
    反色
    bg-surface-light
    加重的控件
    bg-surface
    控件
    bg-surface-strong
    轻量的控件
    bg-fore
    前景色作为背景
    bg-focus
    焦点色作为背景
    特殊
    bg-current
    CSS 值 currentColor
    bg-inherit
    CSS 值 inherit
    bg-none
    无背景

    背景色透明度

    使用工具类 bg-opacity-* 给元素设置背景色透明度。

    bg-opacity-0
    透明度:0%
    bg-opacity-5
    透明度:5%
    bg-opacity-10
    透明度:10%
    bg-opacity-20
    透明度:20%
    bg-opacity-25
    透明度:25%
    bg-opacity-30
    透明度:30%
    bg-opacity-40
    透明度:40%
    bg-opacity-50
    透明度:60%
    bg-opacity-60
    透明度:60%
    bg-opacity-70
    透明度:70%
    bg-opacity-75
    透明度:75%
    bg-opacity-80
    透明度:80%
    bg-opacity-90
    透明度:90%
    bg-opacity-95
    透明度:95%
    bg-opacity-100
    透明度:0%

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/border-color.html b/dev/utilities/borders/utilities/border-color.html index 76992ecf6a..de725d2c2a 100644 --- a/dev/utilities/borders/utilities/border-color.html +++ b/dev/utilities/borders/utilities/border-color.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    边框颜色

    效果

    使用工具类 border-* 给元素添加边框颜色。

    默认
    border-light
    border
    border-strong
    语义化
    border-primary
    border-secondary
    border-success
    border-warning
    border-danger
    border-important
    border-special
    灰度
    border-gray-50
    border-gray-100
    border-gray-200
    border-gray-300
    border-gray-400
    gray
    border-gray-500 别名: border-gray
    border-gray-600
    border-gray-700
    border-gray-800
    border-gray-900
    border-gray-950
    界面
    border-white
    纯白
    border-black
    纯黑
    border-transparent
    透明
    border-canvas
    画布
    border-inverse
    反色
    border-surface-light
    加重的控件
    border-surface
    控件
    border-surface-strong
    轻量的控件
    border-fore
    前景色作为边框颜
    border-focus
    焦点色作为边框颜
    特殊
    border-current
    CSS 值 currentColor
    border-inherit
    CSS 值 inherit

    提示

    border 外,其他工具类只设置边框颜色,如果需要启用边框,需要将 border-*border 类一起使用,例如 border border-primary

    边框颜色透明度

    使用工具类 border-opacity-* 给元素添加边框颜色透明度。

    border-opacity-0
    透明度:0%
    border-opacity-5
    透明度:5%
    border-opacity-10
    透明度:10%
    border-opacity-20
    透明度:20%
    border-opacity-25
    透明度:25%
    border-opacity-30
    透明度:30%
    border-opacity-40
    透明度:40%
    border-opacity-50
    透明度:60%
    border-opacity-60
    透明度:60%
    border-opacity-70
    透明度:70%
    border-opacity-75
    透明度:75%
    border-opacity-80
    透明度:80%
    border-opacity-90
    透明度:90%
    border-opacity-95
    透明度:95%
    border-opacity-100
    透明度:0%

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/border-radius.html b/dev/utilities/borders/utilities/border-radius.html index fb02ed63cc..d8795d4176 100644 --- a/dev/utilities/borders/utilities/border-radius.html +++ b/dev/utilities/borders/utilities/border-radius.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    边框圆角

    效果

    使用 'rounded-* 设置元素边框圆角大小。

    所有边
    rounded-none
    rounded-sm
    rounded
    rounded-lg
    rounded-xl
    rounded-2xl
    rounded-3xl
    rounded-full
    禁用特定边
    rounded-t-none
    rounded-r-none
    rounded-b-none
    rounded-l-none
    rounded-br-none
    rounded-bl-none
    rounded-tr-none
    rounded-tl-none

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/border-width.html b/dev/utilities/borders/utilities/border-width.html index 875122397d..8205a6aec8 100644 --- a/dev/utilities/borders/utilities/border-width.html +++ b/dev/utilities/borders/utilities/border-width.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    边框大小

    效果

    使用 'rounded-* 设置元素边框大小。

    所有边
    border-0
    border
    border-2
    border-4
    上边框
    border-t-0
    border-t
    border-t-2
    border-t-4
    右边框
    border-r-0
    border-r
    border-r-2
    border-r-4
    下边框
    border-b-0
    border-b
    border-b-2
    border-b-4
    左边框
    border-l-0
    border-l
    border-l-2
    border-l-4

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/divider.html b/dev/utilities/borders/utilities/divider.html index a61a471589..0d9f2977c4 100644 --- a/dev/utilities/borders/utilities/divider.html +++ b/dev/utilities/borders/utilities/divider.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/ring-color.html b/dev/utilities/borders/utilities/ring-color.html index 15807bc44d..92ed12e54e 100644 --- a/dev/utilities/borders/utilities/ring-color.html +++ b/dev/utilities/borders/utilities/ring-color.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    环颜色

    效果

    通过 ring-* 来为元素添加通过 box-shadow 实现的环边框颜色。

    作为边框
    ring-border-light
    ring-border
    ring-border-strong
    透明度反色
    ring-light
    ring-gray
    ring-dark
    ring-darker
    ring-darkest
    语义化
    ring-primary
    ring-secondary
    ring-success
    ring-warning
    ring-danger
    ring-important
    ring-special
    灰度
    ring-gray-50
    ring-gray-100
    ring-gray-200
    ring-gray-300
    ring-gray-400
    ring-gray-500
    ring-gray-600
    ring-gray-700
    ring-gray-800
    ring-gray-900
    ring-gray-950
    界面
    ring-white
    纯白
    ring-black
    纯黑
    ring-canvas
    画布
    ring-inverse
    反色
    ring-surface
    控件
    ring-fore
    前景色
    ring-focus
    焦点色
    特殊
    ring-current
    CSS 值 currentColor
    ring-inherit
    CSS 值 inherit

    环颜色透明度

    使用工具类 ring-opacity-* 给元素添加背景色透明度。

    ring-opacity-0
    透明度:0%
    ring-opacity-5
    透明度:5%
    ring-opacity-10
    透明度:10%
    ring-opacity-20
    透明度:20%
    ring-opacity-25
    透明度:25%
    ring-opacity-30
    透明度:30%
    ring-opacity-40
    透明度:40%
    ring-opacity-50
    透明度:60%
    ring-opacity-60
    透明度:60%
    ring-opacity-70
    透明度:70%
    ring-opacity-75
    透明度:75%
    ring-opacity-80
    透明度:80%
    ring-opacity-90
    透明度:90%
    ring-opacity-95
    透明度:95%
    ring-opacity-100
    透明度:0%

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/ring-offset.html b/dev/utilities/borders/utilities/ring-offset.html index b46f64efdc..e8e48e7553 100644 --- a/dev/utilities/borders/utilities/ring-offset.html +++ b/dev/utilities/borders/utilities/ring-offset.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/ring-width.html b/dev/utilities/borders/utilities/ring-width.html index e8c3d8404b..d0eec40f63 100644 --- a/dev/utilities/borders/utilities/ring-width.html +++ b/dev/utilities/borders/utilities/ring-width.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/effects/utilities/animation.html b/dev/utilities/effects/utilities/animation.html index de5c5b5d31..880a4d63e5 100644 --- a/dev/utilities/effects/utilities/animation.html +++ b/dev/utilities/effects/utilities/animation.html @@ -14,8 +14,8 @@ - - + + @@ -35,7 +35,7 @@ </div>

    弹跳

    使用 animate-bounce 给元素添加弹跳动画。

    html
    <button type="button" class="btn primary">
       <i class="bounce icon icon-arrow-down"></i> 下载
     </button>

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/effects/utilities/filter.html b/dev/utilities/effects/utilities/filter.html index 63b22767bf..d401b4c7b8 100644 --- a/dev/utilities/effects/utilities/filter.html +++ b/dev/utilities/effects/utilities/filter.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    CSS 滤镜

    高斯模糊

    通过 blur-* 给图片添加高斯模糊样式。

    原始
    blur-none
    blur-sm
    blur
    blur-md
    blur-lg
    blur-xl

    灰度和反色

    通过 grayscale 将图像转为灰度图像;通过 invert 将图像设置为反色。

    原始
    grayscale
    invert

    形状阴影

    通过 drop-shadow-* 给元素设置形状阴影效果,通常用在图片上。

    原始
    drop-shadow-none
    drop-shadow-sm
    drop-shadow
    drop-shadow-md
    drop-shadow-lg
    drop-shadow-xl
    drop-shadow-2xl

    背景模糊

    通过 backdrop-blur-* 添加覆盖区域模糊样式。

    原始
    backdrop-blur-none
    backdrop-blur-sm
    backdrop-blur
    backdrop-blur-md
    backdrop-blur-lg
    backdrop-blur-xl
    backdrop-blur-2xl
    backdrop-blur-3xl

    禁用滤镜

    通过 filter-none 来禁用之前添加的滤镜效果。

    filter-none

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/effects/utilities/opacity.html b/dev/utilities/effects/utilities/opacity.html index 8c117bd3b9..642d7e0d4a 100644 --- a/dev/utilities/effects/utilities/opacity.html +++ b/dev/utilities/effects/utilities/opacity.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/effects/utilities/shadow.html b/dev/utilities/effects/utilities/shadow.html index 680cf5815d..bf65dfdb39 100644 --- a/dev/utilities/effects/utilities/shadow.html +++ b/dev/utilities/effects/utilities/shadow.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/effects/utilities/transform.html b/dev/utilities/effects/utilities/transform.html index f0e4fe31fb..9c88c228e1 100644 --- a/dev/utilities/effects/utilities/transform.html +++ b/dev/utilities/effects/utilities/transform.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    变换

    使用 CSS transform 对元素应用变换效果。

    缩放

    通过 scale-* 为元素应用缩放效果。

    原始
    scale-0
    scale-50
    scale-75
    scale-90
    scale-95
    scale-100
    scale-105
    scale-110
    scale-125
    scale-150

    旋转

    通过 rotate-* 为元素应用旋转效果。

    原始
    rotate-0
    rotate-1
    rotate-2
    rotate-3
    rotate-6
    rotate-12
    rotate-45
    rotate-90
    rotate-135
    rotate-180
    rotate-270

    翻转

    添加 flip-* 给元素添加翻转效果。

    原始
    flip-x
    flip-y

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/effects/utilities/transition.html b/dev/utilities/effects/utilities/transition.html index 9744cadaf9..e14b2ef4c4 100644 --- a/dev/utilities/effects/utilities/transition.html +++ b/dev/utilities/effects/utilities/transition.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    过渡动画

    过渡属性

    通过 transition-* 为元素应用过渡动画,并制定过渡目标属性。

    transition
    transition
    all
    transition-all
    colors
    transition-colors
    opacity
    transition-opacity
    shadow
    transition-shadow
    transform
    transition-transform

    过渡时间

    通过 duration-* 为元素应用过渡动画时间。

    75ms
    duration-75
    100ms
    duration-100
    200ms
    duration-200
    300ms
    duration-300
    500ms
    duration-500
    1000ms
    duration-1000

    渐隐渐显

    通过 fade-* 来为元素设置渐隐渐显动画效果,默认元素不显示,通过控制添加 in 类让元素渐显。

    默认
    默认
    fade
    从中心显示
    从中心显示
    fade-from-center
    从下方显示
    从下方显示
    fade-from-bottom
    从上方显示
    从上方显示
    fade-from-top
    从左侧显示
    从左侧显示
    fade-from-left
    从右侧显示
    从右侧显示
    fade-from-right

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/align-content.html b/dev/utilities/flex/utilities/align-content.html index e05c1ba07f..37405e16f6 100644 --- a/dev/utilities/flex/utilities/align-content.html +++ b/dev/utilities/flex/utilities/align-content.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    align-content

    使用 content-* 应用CSS align-content 属性设置 Flex 容器中多行子元素沿交叉轴的对齐方式。

    效果展示

    content-center

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    content-start

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    content-end

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    content-between

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    content-around

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    content-evenly

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/align-items.html b/dev/utilities/flex/utilities/align-items.html index 600abf7d3c..df94e0cf48 100644 --- a/dev/utilities/flex/utilities/align-items.html +++ b/dev/utilities/flex/utilities/align-items.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/align-self.html b/dev/utilities/flex/utilities/align-self.html index 507ceb0aa3..fe1780ff89 100644 --- a/dev/utilities/flex/utilities/align-self.html +++ b/dev/utilities/flex/utilities/align-self.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    align-self

    使用 self-* 应用 CSS align-self 属性设置当前元素在 Grid 或 Flex 容器中的交叉轴方向上的对齐方式。

    self-auto

    self-auto
    default
    default
    default
    default

    self-start

    self-start
    default
    default
    default
    default

    self-end

    self-end
    default
    default
    default
    default

    self-center

    self-center
    default
    default
    default
    default

    self-stretch

    self-stretch
    default
    default
    default
    default

    self-baseline

    self-baseline
    default
    default
    default
    default

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/basis.html b/dev/utilities/flex/utilities/basis.html index 18824ed489..6395db948c 100644 --- a/dev/utilities/flex/utilities/basis.html +++ b/dev/utilities/flex/utilities/basis.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/direction.html b/dev/utilities/flex/utilities/direction.html index 36e473974f..e35d0d3423 100644 --- a/dev/utilities/flex/utilities/direction.html +++ b/dev/utilities/flex/utilities/direction.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/flex.html b/dev/utilities/flex/utilities/flex.html index d0f51dfc49..9d13efee82 100644 --- a/dev/utilities/flex/utilities/flex.html +++ b/dev/utilities/flex/utilities/flex.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    flex

    效果

    使用 flex-* 应用CSS flex 属性设置当前元素在 Grid 或 Flex 容器中的伸缩方式。

    flex-auto

    24 × 8
    24 × 8
    24 × 8

    flex-1

    24 × 8
    24 × 8
    24 × 8

    flex-initial

    24 × 8
    24 × 8
    24 × 8

    flex-none

    24 × 8
    24 × 8
    24 × 8

    混合使用

    flex-auto
    flex-1
    flex-initial
    flex-none

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/gap.html b/dev/utilities/flex/utilities/gap.html index e0dcfce948..dbad53aa0b 100644 --- a/dev/utilities/flex/utilities/gap.html +++ b/dev/utilities/flex/utilities/gap.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    gap

    效果

    使用 gap-* 应用CSS属性 gap 设置 Flex 容器中元素间距。

    gap-0

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-0

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-0

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-3

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-3

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-3

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-4

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-4

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-4

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-5

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-5

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-5

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-6

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-6

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-6

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-7

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-7

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-7

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-8

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-8

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-8

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/grow.html b/dev/utilities/flex/utilities/grow.html index e8f3b020c2..ba090af0c9 100644 --- a/dev/utilities/flex/utilities/grow.html +++ b/dev/utilities/flex/utilities/grow.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/justify-content.html b/dev/utilities/flex/utilities/justify-content.html index 897c183738..ec60b54210 100644 --- a/dev/utilities/flex/utilities/justify-content.html +++ b/dev/utilities/flex/utilities/justify-content.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/order.html b/dev/utilities/flex/utilities/order.html index 6b66990f26..3d98e08b06 100644 --- a/dev/utilities/flex/utilities/order.html +++ b/dev/utilities/flex/utilities/order.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    order

    效果

    使用 order-* 应用CSS属性 order 设置当前元素在 Flex 容器中的排列顺序。

    1
    order-12
    2
    order-11
    3
    order-10
    4
    order-9
    5
    order-8
    6
    order-7
    7
    order-6
    8
    order-5
    9
    order-4
    10
    order-3
    11
    order-2
    12
    order-1

    使用 order-firstorder-lastorder-none 也可以改变 Flex 子元素排列顺序。

    0
    order-last
    1
    order-first
    2
    order-none

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/shrink.html b/dev/utilities/flex/utilities/shrink.html index 3c0deb7bc5..3da7e3c180 100644 --- a/dev/utilities/flex/utilities/shrink.html +++ b/dev/utilities/flex/utilities/shrink.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/wrap.html b/dev/utilities/flex/utilities/wrap.html index f24a5d835d..857f1e4923 100644 --- a/dev/utilities/flex/utilities/wrap.html +++ b/dev/utilities/flex/utilities/wrap.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/index.html b/dev/utilities/index.html index fd818e5364..b722751896 100644 --- a/dev/utilities/index.html +++ b/dev/utilities/index.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/cursor.html b/dev/utilities/interactivity/utilities/cursor.html index e64e8f8a89..4c883c3013 100644 --- a/dev/utilities/interactivity/utilities/cursor.html +++ b/dev/utilities/interactivity/utilities/cursor.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    光标

    效果

    通过 cursor-* 类可以改变光标的样式。

    cursor-auto
    cursor-auto
    cursor-default
    cursor-default
    cursor-pointer
    cursor-pointer
    cursor-wait
    cursor-wait
    cursor-text
    cursor-text
    cursor-move
    cursor-move
    cursor-help
    cursor-help
    cursor-not-allowed
    cursor-not-allowed

    MIT License (MIT)

    - +
    Skip to content

    光标

    效果

    通过 cursor-* 类可以改变光标的样式。

    cursor-auto
    cursor-auto
    cursor-default
    cursor-default
    cursor-pointer
    cursor-pointer
    cursor-wait
    cursor-wait
    cursor-text
    cursor-text
    cursor-move
    cursor-move
    cursor-help
    cursor-help
    cursor-not-allowed
    cursor-not-allowed

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/disabled.html b/dev/utilities/interactivity/utilities/disabled.html index e111514350..ecd10da7d7 100644 --- a/dev/utilities/interactivity/utilities/disabled.html +++ b/dev/utilities/interactivity/utilities/disabled.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    禁用

    效果

    使用 disabled 类设置元素为禁用,禁用的元素会以半透明的形式显示,并强制使用灰度显示。

    注意

    禁用元素仍然响应鼠标事件,如果需要完全禁用鼠标事件,需要添加 pointer-events-none,如果是表单元素或按钮则可以添加 disabled="disabled" 属性实现完全禁用。

    MIT License (MIT)

    - +
    Skip to content

    禁用

    效果

    使用 disabled 类设置元素为禁用,禁用的元素会以半透明的形式显示,并强制使用灰度显示。

    注意

    禁用元素仍然响应鼠标事件,如果需要完全禁用鼠标事件,需要添加 pointer-events-none,如果是表单元素或按钮则可以添加 disabled="disabled" 属性实现完全禁用。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/loading.html b/dev/utilities/interactivity/utilities/loading.html index 5680fee203..49e82891db 100644 --- a/dev/utilities/interactivity/utilities/loading.html +++ b/dev/utilities/interactivity/utilities/loading.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/pointer-events.html b/dev/utilities/interactivity/utilities/pointer-events.html index 8c43574a70..05fdb5a028 100644 --- a/dev/utilities/interactivity/utilities/pointer-events.html +++ b/dev/utilities/interactivity/utilities/pointer-events.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/scroll.html b/dev/utilities/interactivity/utilities/scroll.html index 5db0405148..2ef391d4bc 100644 --- a/dev/utilities/interactivity/utilities/scroll.html +++ b/dev/utilities/interactivity/utilities/scroll.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    滚动

    平滑滚动

    使用 scroll-smooth 工具类来为元素应用 scroll-behavior: smooth 属性,指定其进行平滑滚动。

    1
    2
    3
    4
    滚动到:

    立即滚动

    使用 scroll-auto 工具类来为元素应用 scroll-behavior: auto 属性,指定其进行立即滚动。

    1
    2
    3
    4
    滚动到:

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/state.html b/dev/utilities/interactivity/utilities/state.html index 7bfb7c9823..fabcbaa36a 100644 --- a/dev/utilities/interactivity/utilities/state.html +++ b/dev/utilities/interactivity/utilities/state.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    状态响应

    效果

    通过为元素添加工具类 state 让按钮响应用户的鼠标交互,包括鼠标悬停、鼠标按下、获得焦点时拥有不同的样式。

    提示

    在按钮(.btn)和导航中的链接(.item > a )已经默认应用了 state 工具类,无需再次添加。

    MIT License (MIT)

    - +
    Skip to content

    状态响应

    效果

    通过为元素添加工具类 state 让按钮响应用户的鼠标交互,包括鼠标悬停、鼠标按下、获得焦点时拥有不同的样式。

    提示

    在按钮(.btn)和导航中的链接(.item > a )已经默认应用了 state 工具类,无需再次添加。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/user-select.html b/dev/utilities/interactivity/utilities/user-select.html index 352f0d26c7..f8f9ac02d6 100644 --- a/dev/utilities/interactivity/utilities/user-select.html +++ b/dev/utilities/interactivity/utilities/user-select.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    文本选择

    用于控制用户能否选中文本的工具类。

    效果

    通过工具类 select-* 来控制用户能否选中元素中的文本。

    禁止选择文本
    select-none
    允许选择文本
    select-text
    点击自动选择所有文本
    select-all
    浏览器默认行为
    select-auto

    MIT License (MIT)

    - +
    Skip to content

    文本选择

    用于控制用户能否选中文本的工具类。

    效果

    通过工具类 select-* 来控制用户能否选中元素中的文本。

    禁止选择文本
    select-none
    允许选择文本
    select-text
    点击自动选择所有文本
    select-all
    浏览器默认行为
    select-auto

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/aspect-ratio.html b/dev/utilities/layout/utilities/aspect-ratio.html index ef8b6698b1..75b0e0aea4 100644 --- a/dev/utilities/layout/utilities/aspect-ratio.html +++ b/dev/utilities/layout/utilities/aspect-ratio.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/container.html b/dev/utilities/layout/utilities/container.html index c1b6101523..fda239345c 100644 --- a/dev/utilities/layout/utilities/container.html +++ b/dev/utilities/layout/utilities/container.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    容器

    定义

    使用 container 类将元素宽度限制为当前屏幕断点,具体规则如下:

    屏幕断点CSS 属性
    默认width: 100%;
    @media (min-width: --screen-sm)max-width: --screen-sm;
    @media (min-width: --screen-md)max-width: --screen-md;
    @media (min-width: --screen-lg)max-width: --screen-lg;
    @media (min-width: --screen-xl)max-width: --screen-xl;
    @media (min-width: --screen-2xl)max-width: --screen-2xl;

    提示

    .container 还会为元素添加 margin-left: auto; margin-right: auto;,使得元素默认居中显示。

    用法

    .container

    MIT License (MIT)

    - +
    Skip to content

    容器

    定义

    使用 container 类将元素宽度限制为当前屏幕断点,具体规则如下:

    屏幕断点CSS 属性
    默认width: 100%;
    @media (min-width: --screen-sm)max-width: --screen-sm;
    @media (min-width: --screen-md)max-width: --screen-md;
    @media (min-width: --screen-lg)max-width: --screen-lg;
    @media (min-width: --screen-xl)max-width: --screen-xl;
    @media (min-width: --screen-2xl)max-width: --screen-2xl;

    提示

    .container 还会为元素添加 margin-left: auto; margin-right: auto;,使得元素默认居中显示。

    用法

    .container

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/display.html b/dev/utilities/layout/utilities/display.html index 3b31f51342..12da873e5f 100644 --- a/dev/utilities/layout/utilities/display.html +++ b/dev/utilities/layout/utilities/display.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    显示类型

    定义

    在 ZUI 中提供了各种工具类来设置 CSS display 属性,主要包括:

    工具类属性
    blockdisplay: block;
    inline-blockdisplay: inline-block;
    inlinedisplay: inline;
    flexdisplay: flex;
    inline-flexdisplay: inline-flex;
    tabledisplay: table;
    table-celldisplay: table-cell;
    table-rowdisplay: table-row;
    list-itemdisplay: list-item;
    hiddendisplay: hidden;

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/floats.html b/dev/utilities/layout/utilities/floats.html index d7f57b538b..f796b960f2 100644 --- a/dev/utilities/layout/utilities/floats.html +++ b/dev/utilities/layout/utilities/floats.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    浮动

    定义

    用于设置元素浮动或清除浮动影响的工具类。

    工具类属性
    pull-rightfloat: right;
    pull-leftfloat: left;
    clearfix.clearfix::after {content: ""; display: block; clear: both;}

    提示

    浮动应当仅适用于实现文字环绕效果,布局请使用 Flex 工具类

    效果展示

    向右浮动

    使用工具类 pull-right 将一个元素浮动到其容器的右边。

    So I started to walk into the water. I won't lie to you boys, I was terrified. But I pressed on, and as I made my way past the breakers a strange calm came over me. I don't know if it was divine intervention or the kinship of all living things but I tell you Jerry at that moment, I was a marine biologist.

    月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。

    向左浮动

    使用工具类 pull-left 将一个元素浮动到其容器的左边。

    So I started to walk into the water. I won't lie to you boys, I was terrified. But I pressed on, and as I made my way past the breakers a strange calm came over me. I don't know if it was divine intervention or the kinship of all living things but I tell you Jerry at that moment, I was a marine biologist.

    月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/object-fit.html b/dev/utilities/layout/utilities/object-fit.html index 730bf34e9d..bfae466aab 100644 --- a/dev/utilities/layout/utilities/object-fit.html +++ b/dev/utilities/layout/utilities/object-fit.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    内容适配

    定义

    元素的内容应该如何去适应指定容器的高度与宽度。

    工具类属性
    object-containobject-fit: contain;
    object-coverobject-fit: cover;
    object-fillobject-fit: fill;
    object-noneobject-fit: none;
    object-scale-downobject-fit: scale-down;

    效果展示

    包含

    使用工具类 object-contain 调整元素内容的大小,使其保持在容器内。

    覆盖

    使用工具类 object-cover 调整元素内容的大小以覆盖其容器。

    充满

    使用工具类 object-fill 拉伸元素的内容以适应其容器。

    使用工具类 object-none 以原始大小显示元素的内容,忽略容器大小。

    缩小

    以原始大小显示元素的内容,但必要时使用 object-scale-down 将其缩小以适应其容器。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/overflow.html b/dev/utilities/layout/utilities/overflow.html index 425ff3c021..66a50f1112 100644 --- a/dev/utilities/layout/utilities/overflow.html +++ b/dev/utilities/layout/utilities/overflow.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    溢出

    定义

    用于控制元素如何处理超出容器的内容的工具类。

    工具类属性
    overflow-autooverflow: auto;
    overflow-hiddenoverflow: hidden;
    overflow-cliptext-overflow: clip;
    overflow-visibleoverflow: visible;
    overflow-scrolloverflow: scroll;
    overflow-x-autooverflow-x: auto;
    overflow-y-autooverflow-y: auto;
    overflow-x-hiddenoverflow-x: hidden;
    overflow-y-hiddenoverflow-y: hidden;
    overflow-x-visibleoverflow-x: visible;
    overflow-y-visibleoverflow-y: visible;
    overflow-x-scrolloverflow-x: scroll;
    overflow-y-scrolloverflow-y: scroll;

    效果展示

    自动

    使用工具类 overflow-auto 在一个元素的内容溢出该元素的边界时为其添加滚动条。不像 overflow-scroll 总是显示滚动条,这个工具类只在需要滚动时才会显示。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。
    小楼昨夜又东风,故国不堪回首月明中。
    雕栏玉砌应犹在,只是朱颜改。
    问君能有几多愁?恰似一江春水向东流

    隐藏

    使用工具类 overflow-hidden 来剪切元素中任何溢出该元素边界的内容。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。
    小楼昨夜又东风,故国不堪回首月明中。
    雕栏玉砌应犹在,只是朱颜改。
    问君能有几多愁?恰似一江春水向东流

    可见

    使用工具类 overflow-visible 来防止元素内的内容被剪切。请注意,任何溢出元素边界的内容都将是可见的。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。
    小楼昨夜又东风,故国不堪回首月明中。
    雕栏玉砌应犹在,只是朱颜改。
    问君能有几多愁?恰似一江春水向东流

    需要时水平滚动

    如果需要,使用工具类 overflow-x-auto 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    需要时垂直滚动

    如果需要,使用工具类 overflow-y-auto 来允许垂直滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    始终水平滚动

    如果需要,使用工具类 overflow-x-scroll 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    始终垂直滚动

    如果需要,使用工具类 overflow-y-scroll 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    在所有方向上滚动

    如果需要,使用工具类 overflow-scroll 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    MIT License (MIT)

    - +
    Skip to content

    溢出

    定义

    用于控制元素如何处理超出容器的内容的工具类。

    工具类属性
    overflow-autooverflow: auto;
    overflow-hiddenoverflow: hidden;
    overflow-cliptext-overflow: clip;
    overflow-visibleoverflow: visible;
    overflow-scrolloverflow: scroll;
    overflow-x-autooverflow-x: auto;
    overflow-y-autooverflow-y: auto;
    overflow-x-hiddenoverflow-x: hidden;
    overflow-y-hiddenoverflow-y: hidden;
    overflow-x-visibleoverflow-x: visible;
    overflow-y-visibleoverflow-y: visible;
    overflow-x-scrolloverflow-x: scroll;
    overflow-y-scrolloverflow-y: scroll;

    效果展示

    自动

    使用工具类 overflow-auto 在一个元素的内容溢出该元素的边界时为其添加滚动条。不像 overflow-scroll 总是显示滚动条,这个工具类只在需要滚动时才会显示。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。
    小楼昨夜又东风,故国不堪回首月明中。
    雕栏玉砌应犹在,只是朱颜改。
    问君能有几多愁?恰似一江春水向东流

    隐藏

    使用工具类 overflow-hidden 来剪切元素中任何溢出该元素边界的内容。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。
    小楼昨夜又东风,故国不堪回首月明中。
    雕栏玉砌应犹在,只是朱颜改。
    问君能有几多愁?恰似一江春水向东流

    可见

    使用工具类 overflow-visible 来防止元素内的内容被剪切。请注意,任何溢出元素边界的内容都将是可见的。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。
    小楼昨夜又东风,故国不堪回首月明中。
    雕栏玉砌应犹在,只是朱颜改。
    问君能有几多愁?恰似一江春水向东流

    需要时水平滚动

    如果需要,使用工具类 overflow-x-auto 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    需要时垂直滚动

    如果需要,使用工具类 overflow-y-auto 来允许垂直滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    始终水平滚动

    如果需要,使用工具类 overflow-x-scroll 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    始终垂直滚动

    如果需要,使用工具类 overflow-y-scroll 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    在所有方向上滚动

    如果需要,使用工具类 overflow-scroll 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/position.html b/dev/utilities/layout/utilities/position.html index f1c04b9e52..13fab71ecf 100644 --- a/dev/utilities/layout/utilities/position.html +++ b/dev/utilities/layout/utilities/position.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    定位

    定义

    用于控制元素在DOM中的位置的工具类。

    工具类属性
    staticposition: static;
    fixedposition: fixed;
    absoluteposition: absolute;
    relativeposition: relative;
    stickyposition: sticky;

    使用方法

    staticabsolute

    使用 static 根据常规的文档流来定位元素,浏览器默认 position 取值就是 static。任何偏移都将被忽略,而且该元素不会作为绝对定位的子元素的位置参考。

    Static 父元素

    Absolute 子元素

    relativeabsolute

    使用 relative 根据常规的文档流来定位元素。偏移量是相对于元素的正常位置计算的,并且该元素将作为绝对定位的子元素的位置参考。

    使用 absolute 将一个元素定位在文档常规流之外,使相邻元素的行为就像该元素不存在一样。偏移量是相对于最近的位置不是 static 的父元素计算的,而且该元素将作为其他绝对定位的子元素的位置参考。

    Relative 父元素

    Absolute 子元素

    sticky

    sticky 元素根据正常文档流进行定位,然后相对它的最近滚动祖先和 containing block,包括 table-related 元素,基于 top、right、bottom 和 left 的值进行偏移。偏移值不会影响任何其他元素的位置。

    黄鹤楼送孟浩然之广陵

    故人西辞黄鹤楼,

    烟花三月下扬州。

    孤帆远影碧空尽,

    唯见长江天际流。

    闻王昌龄左迁龙标遥有此寄

    杨花落尽子规啼,

    闻道龙标过五溪。

    我寄愁心与明月,

    随君直到夜郎西。

    宣州谢朓楼饯别校书叔云

    弃我去者,昨日之日不可留;

    乱我心者,今日之日多烦忧。

    长风万里送秋雁,对此可以酣高楼。

    蓬莱文章建安骨,中间小谢又清发。

    俱怀逸兴壮思飞,欲上青天揽明月。

    抽刀断水水更流,举杯消愁愁更愁。

    人生在世不称意,明朝散发弄扁舟。

    fixed

    使用 fixed 来定位一个元素相对于浏览器窗视口的位置。偏移量是相对于视口计算的,且该元素将作为绝对定位的子元素的位置参考。

    MIT License (MIT)

    - +
    Skip to content

    定位

    定义

    用于控制元素在DOM中的位置的工具类。

    工具类属性
    staticposition: static;
    fixedposition: fixed;
    absoluteposition: absolute;
    relativeposition: relative;
    stickyposition: sticky;

    使用方法

    staticabsolute

    使用 static 根据常规的文档流来定位元素,浏览器默认 position 取值就是 static。任何偏移都将被忽略,而且该元素不会作为绝对定位的子元素的位置参考。

    Static 父元素

    Absolute 子元素

    relativeabsolute

    使用 relative 根据常规的文档流来定位元素。偏移量是相对于元素的正常位置计算的,并且该元素将作为绝对定位的子元素的位置参考。

    使用 absolute 将一个元素定位在文档常规流之外,使相邻元素的行为就像该元素不存在一样。偏移量是相对于最近的位置不是 static 的父元素计算的,而且该元素将作为其他绝对定位的子元素的位置参考。

    Relative 父元素

    Absolute 子元素

    sticky

    sticky 元素根据正常文档流进行定位,然后相对它的最近滚动祖先和 containing block,包括 table-related 元素,基于 top、right、bottom 和 left 的值进行偏移。偏移值不会影响任何其他元素的位置。

    黄鹤楼送孟浩然之广陵

    故人西辞黄鹤楼,

    烟花三月下扬州。

    孤帆远影碧空尽,

    唯见长江天际流。

    闻王昌龄左迁龙标遥有此寄

    杨花落尽子规啼,

    闻道龙标过五溪。

    我寄愁心与明月,

    随君直到夜郎西。

    宣州谢朓楼饯别校书叔云

    弃我去者,昨日之日不可留;

    乱我心者,今日之日多烦忧。

    长风万里送秋雁,对此可以酣高楼。

    蓬莱文章建安骨,中间小谢又清发。

    俱怀逸兴壮思飞,欲上青天揽明月。

    抽刀断水水更流,举杯消愁愁更愁。

    人生在世不称意,明朝散发弄扁舟。

    fixed

    使用 fixed 来定位一个元素相对于浏览器窗视口的位置。偏移量是相对于视口计算的,且该元素将作为绝对定位的子元素的位置参考。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/top-right-bottom-left.html b/dev/utilities/layout/utilities/top-right-bottom-left.html index a04cff1f9d..a269d19cd8 100644 --- a/dev/utilities/layout/utilities/top-right-bottom-left.html +++ b/dev/utilities/layout/utilities/top-right-bottom-left.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    上下左右

    定义

    用于控制定位元素的位置的工具类。

    工具类属性
    inset-0top: 0px; right: 0px; bottom: 0px; left: 0px;
    inset-autotop: auto; right: auto; bottom: auto; left: auto;
    inset-x-0left: 0px; right: 0px;
    inset-y-0top: 0px; bottom: 0px;
    top-0top: 0px;
    right-0right: 0px;
    bottom-0bottom: 0px;
    left-0left: 0px;
    top-pxtop: 1px;
    right-pxright: 1px;
    bottom-pxbottom: 1px;
    left-pxleft: 1px;
    top-0.5top: 2px;
    right-0.5right: 2px;
    bottom-0.5bottom: 2px;
    left-0.5left: 2px;
    top-1top: 4px;
    right-1right: 4px;
    bottom-1bottom: 4px;
    left-1left: 4px;
    top-1.5top: 6px;
    right-1.5right: 6px;
    bottom-1.5bottom: 6px;
    left-1.5left: 6px;
    top-2top: 8px;
    right-2right: 8px;
    bottom-2bottom: 8px;
    left-2left: 8px;
    top-fulltop: 100%;
    right-fullright: 100%;
    bottom-fullbottom: 100%;
    left-fullleft: 100%;
    top-autotop: auto;
    right-autoright: auto;
    bottom-autobottom: auto;
    left-autoleft: auto;

    效果展示

    1
    2
    3
    4
    5
    6
    7
    8

    MIT License (MIT)

    - +
    Skip to content

    上下左右

    定义

    用于控制定位元素的位置的工具类。

    工具类属性
    inset-0top: 0px; right: 0px; bottom: 0px; left: 0px;
    inset-autotop: auto; right: auto; bottom: auto; left: auto;
    inset-x-0left: 0px; right: 0px;
    inset-y-0top: 0px; bottom: 0px;
    top-0top: 0px;
    right-0right: 0px;
    bottom-0bottom: 0px;
    left-0left: 0px;
    top-pxtop: 1px;
    right-pxright: 1px;
    bottom-pxbottom: 1px;
    left-pxleft: 1px;
    top-0.5top: 2px;
    right-0.5right: 2px;
    bottom-0.5bottom: 2px;
    left-0.5left: 2px;
    top-1top: 4px;
    right-1right: 4px;
    bottom-1bottom: 4px;
    left-1left: 4px;
    top-1.5top: 6px;
    right-1.5right: 6px;
    bottom-1.5bottom: 6px;
    left-1.5left: 6px;
    top-2top: 8px;
    right-2right: 8px;
    bottom-2bottom: 8px;
    left-2left: 8px;
    top-fulltop: 100%;
    right-fullright: 100%;
    bottom-fullbottom: 100%;
    left-fullleft: 100%;
    top-autotop: auto;
    right-autoright: auto;
    bottom-autobottom: auto;
    left-autoleft: auto;

    效果展示

    1
    2
    3
    4
    5
    6
    7
    8

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/visibility.html b/dev/utilities/layout/utilities/visibility.html index 3ecb98165d..bf16aa180e 100644 --- a/dev/utilities/layout/utilities/visibility.html +++ b/dev/utilities/layout/utilities/visibility.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/z-index.html b/dev/utilities/layout/utilities/z-index.html index 4ed5344266..3db3c21d80 100644 --- a/dev/utilities/layout/utilities/z-index.html +++ b/dev/utilities/layout/utilities/z-index.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/utilities/sizing/utilities/height.html b/dev/utilities/sizing/utilities/height.html index d43daf4221..424984215c 100644 --- a/dev/utilities/sizing/utilities/height.html +++ b/dev/utilities/sizing/utilities/height.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    高度

    固定值

    通过工具类 h-* 设置高度为固定值,包含如下工具类:

    工具类CSS 属性
    h-0height: 0px;
    h-pxheight: 1px;
    h-0.5height: 2px;
    h-1height: 4px;
    h-1.5height: 6px;
    h-2height: 8px;
    h-2.5height: 10px;
    h-3height: 12px;
    h-3.5height: 14px;
    h-4height: 16px;
    h-5height: 20px;
    h-6height: 24px;
    h-7height: 28px;
    h-8height: 32px;
    h-9height: 36px;
    h-10height: 40px;
    h-11height: 44px;
    h-12height: 48px;
    h-14height: 56px;
    h-16height: 64px;
    h-20height: 80px;
    h-24height: 96px;
    h-28height: 112px;
    h-32height: 128px;
    h-36height: 144px;
    h-40height: 160px;
    h-44height: 176px;
    h-48height: 192px;
    h-52height: 208px;
    h-56height: 224px;
    h-60height: 240px;
    h-64height: 256px;
    h-72height: 288px;
    h-80height: 320px;
    h-96height: 384px;

    百分比

    通过工具类 h-* 设置高度为百分比,包含如下工具类:

    工具类CSS 属性
    h-1/2height: 50%;
    h-1/3height: 33.3333333%;
    h-2/3height: 66.6666667%;
    h-1/4height: 25%;
    h-2/4height: 50%;
    h-3/4height: 75%;
    h-1/5height: 20%;
    h-2/5height: 40%;
    h-3/5height: 60%;
    h-4/5height: 80%;
    h-1/6height: 16.6666667%;
    h-2/6height: 33.3333333%;
    h-3/6height: 50%;
    h-4/6height: 66.6666667%;
    h-5/6height: 83.3333333%;
    h-fullheight: 100%;

    特殊值

    通过工具类 h-* 设置高度为特殊值,包含如下工具类:

    工具类CSS 属性
    h-autoheight: auto;
    h-screenheight: 100vh;
    h-fitheight: fit-content;
    h-minheight: min-content;
    h-maxheight: max-content;

    限制最大高度

    通过工具类 max-h-* 设置限制元素最大高度,包含如下工具类:

    工具类CSS 属性
    max-h-0max-height: 0px;
    max-h-fullmax-height: 100%;
    max-h-screenmax-height: 100vh;
    max-h-nonemax-height: none;
    max-h-minmax-height: min-content;
    max-h-maxmax-height: max-content;
    max-h-fitmax-height: fit-content;

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/sizing/utilities/width.html b/dev/utilities/sizing/utilities/width.html index 6798e05936..27645a91b5 100644 --- a/dev/utilities/sizing/utilities/width.html +++ b/dev/utilities/sizing/utilities/width.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    宽度

    固定值

    通过工具类 w-* 设置宽度为固定值,包含如下工具类:

    工具类CSS 属性
    w-0width: 0px;
    w-pxwidth: 1px;
    w-0.5width: 2px;
    w-1width: 4px;
    w-1.5width: 6px;
    w-2width: 8px;
    w-2.5width: 10px;
    w-3width: 12px;
    w-3.5width: 14px;
    w-4width: 16px;
    w-5width: 20px;
    w-6width: 24px;
    w-7width: 28px;
    w-8width: 32px;
    w-9width: 36px;
    w-10width: 40px;
    w-11width: 44px;
    w-12width: 48px;
    w-14width: 56px;
    w-16width: 64px;
    w-20width: 80px;
    w-24width: 96px;
    w-28width: 112px;
    w-32width: 128px;
    w-36width: 144px;
    w-40width: 160px;
    w-44width: 176px;
    w-48width: 192px;
    w-52width: 208px;
    w-56width: 224px;
    w-60width: 240px;
    w-64width: 256px;
    w-72width: 288px;
    w-80width: 320px;
    w-96width: 384px;

    百分比

    通过工具类 w-* 设置宽度为百分比,包含如下工具类:

    工具类CSS 属性
    w-1/2width: 50%;
    w-1/3width: 33.3333333%;
    w-2/3width: 66.6666667%;
    w-1/4width: 25%;
    w-2/4width: 50%;
    w-3/4width: 75%;
    w-1/5width: 20%;
    w-2/5width: 40%;
    w-3/5width: 60%;
    w-4/5width: 80%;
    w-1/6width: 16.6666667%;
    w-2/6width: 33.3333333%;
    w-3/6width: 50%;
    w-4/6width: 66.6666667%;
    w-5/6width: 83.3333333%;
    w-fullwidth: 100%;

    特殊值

    通过工具类 w-* 设置宽度为特殊值,包含如下工具类:

    工具类CSS 属性
    w-autowidth: auto;
    w-screenwidth: 100vw;
    w-fitwidth: fit-content;
    w-minwidth: min-content;
    w-maxwidth: max-content;

    限制最大宽度

    通过工具类 max-w-* 设置限制元素最大宽度,包含如下工具类:

    工具类CSS 属性
    max-w-0max-width: 0px;
    max-w-fullmax-width: 100%;
    max-w-screenmax-width: 100vw;
    max-w-nonemax-width: none;
    max-w-minmax-width: min-content;
    max-w-maxmax-width: max-content;
    max-w-fitmax-width: fit-content;

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/skin/utilities/ghost.html b/dev/utilities/skin/utilities/ghost.html index b42c594b9b..fa31add9c6 100644 --- a/dev/utilities/skin/utilities/ghost.html +++ b/dev/utilities/skin/utilities/ghost.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    透明

    用于快速为元素或组件实现特定文字颜色带透明背景外观。

    效果

    默认
    ghost
    语义化
    primary-ghost
    secondary-ghost
    success-ghost
    warning-ghost
    danger-ghost
    important-ghost
    special-ghost

    示例

    Ghost Element

    MIT License (MIT)

    - +
    Skip to content

    透明

    用于快速为元素或组件实现特定文字颜色带透明背景外观。

    效果

    默认
    ghost
    语义化
    primary-ghost
    secondary-ghost
    success-ghost
    warning-ghost
    danger-ghost
    important-ghost
    special-ghost

    示例

    Ghost Element

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/skin/utilities/outline.html b/dev/utilities/skin/utilities/outline.html index 707489b628..3832fede93 100644 --- a/dev/utilities/skin/utilities/outline.html +++ b/dev/utilities/skin/utilities/outline.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    轮廓

    用于快速为元素或组件实现特定颜色的轮廓描边外观。

    效果

    默认
    outline
    语义化
    primary-outline
    secondary-outline
    success-outline
    warning-outline
    danger-outline
    important-outline
    special-outline
    灰度
    gray-outline

    提示

    轮廓的描边效果使用 box-shadow 实现。

    示例

    Success Label
    Gray Element

    MIT License (MIT)

    - +
    Skip to content

    轮廓

    用于快速为元素或组件实现特定颜色的轮廓描边外观。

    效果

    默认
    outline
    语义化
    primary-outline
    secondary-outline
    success-outline
    warning-outline
    danger-outline
    important-outline
    special-outline
    灰度
    gray-outline

    提示

    轮廓的描边效果使用 box-shadow 实现。

    示例

    Success Label
    Gray Element

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/skin/utilities/pale.html b/dev/utilities/skin/utilities/pale.html index d266adc352..5878670f14 100644 --- a/dev/utilities/skin/utilities/pale.html +++ b/dev/utilities/skin/utilities/pale.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    浅色

    用于快速为元素或组件实现特定颜色的浅色填充外观,包含语义化和灰度工具类。

    效果

    语义化
    primary-pale
    secondary-pale
    success-pale
    warning-pale
    danger-pale
    important-pale
    special-pale
    灰度
    gray-50-pale
    gray-100-pale
    gray-200-pale
    gray-300-pale
    gray-400-pale
    gray-pale
    gray-500-pale 别名: gray-pale
    gray-600-pale
    gray-700-pale
    gray-800-pale
    gray-900-pale
    gray-950-pale

    示例

    Success Label
    Gray Element

    MIT License (MIT)

    - +
    Skip to content

    浅色

    用于快速为元素或组件实现特定颜色的浅色填充外观,包含语义化和灰度工具类。

    效果

    语义化
    primary-pale
    secondary-pale
    success-pale
    warning-pale
    danger-pale
    important-pale
    special-pale
    灰度
    gray-50-pale
    gray-100-pale
    gray-200-pale
    gray-300-pale
    gray-400-pale
    gray-pale
    gray-500-pale 别名: gray-pale
    gray-600-pale
    gray-700-pale
    gray-800-pale
    gray-900-pale
    gray-950-pale

    示例

    Success Label
    Gray Element

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/skin/utilities/solid.html b/dev/utilities/skin/utilities/solid.html index 070f797669..16ef41f07b 100644 --- a/dev/utilities/skin/utilities/solid.html +++ b/dev/utilities/skin/utilities/solid.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    实心

    用于快速为元素或组件实现特定颜色的实心填充外观,包含语义化和灰度工具类。

    效果

    语义化
    primary
    secondary
    success
    warning
    danger
    important
    special
    灰度
    gray-50
    gray-100
    gray-200
    gray-300
    gray-400
    gray
    gray-500 别名: gray
    gray-600
    gray-700
    gray-800
    gray-900
    gray-950

    示例

    Success Label
    Gray Element

    MIT License (MIT)

    - +
    Skip to content

    实心

    用于快速为元素或组件实现特定颜色的实心填充外观,包含语义化和灰度工具类。

    效果

    语义化
    primary
    secondary
    success
    warning
    danger
    important
    special
    灰度
    gray-50
    gray-100
    gray-200
    gray-300
    gray-400
    gray
    gray-500 别名: gray
    gray-600
    gray-700
    gray-800
    gray-900
    gray-950

    示例

    Success Label
    Gray Element

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/skin/utilities/surface.html b/dev/utilities/skin/utilities/surface.html index 595174f508..7d5cdce709 100644 --- a/dev/utilities/skin/utilities/surface.html +++ b/dev/utilities/skin/utilities/surface.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    界面

    用于快速为元素或组件实现特定功能界面颜色外观。

    效果

    white
    纯白
    black
    纯黑
    transparent
    透明
    canvas
    画布
    inverse
    反色
    surface-light
    加重的控件
    surface
    控件
    surface-strong
    轻量的控件

    示例

    Surface Element

    MIT License (MIT)

    - +
    Skip to content

    界面

    用于快速为元素或组件实现特定功能界面颜色外观。

    效果

    white
    纯白
    black
    纯黑
    transparent
    透明
    canvas
    画布
    inverse
    反色
    surface-light
    加重的控件
    surface
    控件
    surface-strong
    轻量的控件

    示例

    Surface Element

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/spacing/utilities/margin.html b/dev/utilities/spacing/utilities/margin.html index 9287bbe1aa..3ad0666267 100644 --- a/dev/utilities/spacing/utilities/margin.html +++ b/dev/utilities/spacing/utilities/margin.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    外边距

    定义

    通过 m-* 工具类设置外边距,可用的工具类包括:

    工具类CSS 属性
    m-automargin: auto;
    mx-automargin-left: auto; margin-right: auto;
    my-automargin-top: auto; margin-bottom: auto;
    mt-automargin-top: auto;
    mr-automargin-right: auto;
    mb-automargin-bottom: auto;
    ml-automargin-left: auto;
    m-0margin: 0px;
    m-pxmargin: 1px;
    m-0.5margin: 2px;
    m-1margin: 4px;
    m-1.5margin: 6px;
    m-2margin: 8px;
    m-2.5margin: 10px;
    m-3margin: 12px;
    m-3.5margin: 14px;
    m-4margin: 16px;
    m-5margin: 20px;
    m-6margin: 24px;
    m-7margin: 28px;
    m-8margin: 32px;
    m-9margin: 36px;
    m-10margin: 40px;
    mx-0margin-left: 0px; margin-right: 0px;
    my-0margin-top: 0px; margin-bottom: 0px;
    mt-0margin-top: 0px;
    mr-0margin-right: 0px;
    mb-0margin-bottom: 0px;
    ml-0margin-left: 0px;
    mx-pxmargin-left: 1px; margin-right: 1px;
    my-pxmargin-top: 1px; margin-bottom: 1px;
    mt-pxmargin-top: 1px;
    mr-pxmargin-right: 1px;
    mb-pxmargin-bottom: 1px;
    ml-pxmargin-left: 1px;
    mx-0.5margin-left: 2px; margin-right: 2px;
    my-0.5margin-top: 2px; margin-bottom: 2px;
    mt-0.5margin-top: 2px;
    mr-0.5margin-right: 2px;
    mb-0.5margin-bottom: 2px;
    ml-0.5margin-left: 2px;
    mx-1margin-left: 4px; margin-right: 4px;
    my-1margin-top: 4px; margin-bottom: 4px;
    mt-1margin-top: 4px;
    mr-1margin-right: 4px;
    mb-1margin-bottom: 4px;
    ml-1margin-left: 4px;
    mx-1.5margin-left: 6px; margin-right: 6px;
    my-1.5margin-top: 6px; margin-bottom: 6px;
    mt-1.5margin-top: 6px;
    mr-1.5margin-right: 6px;
    mb-1.5margin-bottom: 6px;
    ml-1.5margin-left: 6px;
    mx-2margin-left: 8px; margin-right: 8px;
    my-2margin-top: 8px; margin-bottom: 8px;
    mt-2margin-top: 8px;
    mr-2margin-right: 8px;
    mb-2margin-bottom: 8px;
    ml-2margin-left: 8px;
    mx-2.5margin-left: 10px; margin-right: 10px;
    my-2.5margin-top: 10px; margin-bottom: 10px;
    mt-2.5margin-top: 10px;
    mr-2.5margin-right: 10px;
    mb-2.5margin-bottom: 10px;
    ml-2.5margin-left: 10px;
    mx-3margin-left: 12px; margin-right: 12px;
    my-3margin-top: 12px; margin-bottom: 12px;
    mt-3margin-top: 12px;
    mr-3margin-right: 12px;
    mb-3margin-bottom: 12px;
    ml-3margin-left: 12px;
    mx-3.5margin-left: 14px; margin-right: 14px;
    my-3.5margin-top: 14px; margin-bottom: 14px;
    mt-3.5margin-top: 14px;
    mr-3.5margin-right: 14px;
    mb-3.5margin-bottom: 14px;
    ml-3.5margin-left: 14px;
    mx-4margin-left: 16px; margin-right: 16px;
    my-4margin-top: 16px; margin-bottom: 16px;
    mt-4margin-top: 16px;
    mr-4margin-right: 16px;
    mb-4margin-bottom: 16px;
    ml-4margin-left: 16px;
    mx-5margin-left: 20px; margin-right: 20px;
    my-5margin-top: 20px; margin-bottom: 20px;
    mt-5margin-top: 20px;
    mr-5margin-right: 20px;
    mb-5margin-bottom: 20px;
    ml-5margin-left: 20px;
    mx-6margin-left: 24px; margin-right: 24px;
    my-6margin-top: 24px; margin-bottom: 24px;
    mt-6margin-top: 24px;
    mr-6margin-right: 24px;
    mb-6margin-bottom: 24px;
    ml-6margin-left: 24px;
    mx-7margin-left: 28px; margin-right: 28px;
    my-7margin-top: 28px; margin-bottom: 28px;
    mt-7margin-top: 28px;
    mr-7margin-right: 28px;
    mb-7margin-bottom: 28px;
    ml-7margin-left: 28px;
    mx-8margin-left: 32px; margin-right: 32px;
    my-8margin-top: 32px; margin-bottom: 32px;
    mt-8margin-top: 32px;
    mr-8margin-right: 32px;
    mb-8margin-bottom: 32px;
    ml-8margin-left: 32px;
    mx-9margin-left: 36px; margin-right: 36px;
    my-9margin-top: 36px; margin-bottom: 36px;
    mt-9margin-top: 36px;
    mr-9margin-right: 36px;
    mb-9margin-bottom: 36px;
    ml-9margin-left: 36px;
    mx-10margin-left: 40px; margin-right: 40px;
    my-10margin-top: 40px; margin-bottom: 40px;
    mt-10margin-top: 40px;
    mr-10margin-right: 40px;
    mb-10margin-bottom: 40px;
    ml-10margin-left: 40px;

    示例

    MIT License (MIT)

    - +
    Skip to content

    外边距

    定义

    通过 m-* 工具类设置外边距,可用的工具类包括:

    工具类CSS 属性
    m-automargin: auto;
    mx-automargin-left: auto; margin-right: auto;
    my-automargin-top: auto; margin-bottom: auto;
    mt-automargin-top: auto;
    mr-automargin-right: auto;
    mb-automargin-bottom: auto;
    ml-automargin-left: auto;
    m-0margin: 0px;
    m-pxmargin: 1px;
    m-0.5margin: 2px;
    m-1margin: 4px;
    m-1.5margin: 6px;
    m-2margin: 8px;
    m-2.5margin: 10px;
    m-3margin: 12px;
    m-3.5margin: 14px;
    m-4margin: 16px;
    m-5margin: 20px;
    m-6margin: 24px;
    m-7margin: 28px;
    m-8margin: 32px;
    m-9margin: 36px;
    m-10margin: 40px;
    mx-0margin-left: 0px; margin-right: 0px;
    my-0margin-top: 0px; margin-bottom: 0px;
    mt-0margin-top: 0px;
    mr-0margin-right: 0px;
    mb-0margin-bottom: 0px;
    ml-0margin-left: 0px;
    mx-pxmargin-left: 1px; margin-right: 1px;
    my-pxmargin-top: 1px; margin-bottom: 1px;
    mt-pxmargin-top: 1px;
    mr-pxmargin-right: 1px;
    mb-pxmargin-bottom: 1px;
    ml-pxmargin-left: 1px;
    mx-0.5margin-left: 2px; margin-right: 2px;
    my-0.5margin-top: 2px; margin-bottom: 2px;
    mt-0.5margin-top: 2px;
    mr-0.5margin-right: 2px;
    mb-0.5margin-bottom: 2px;
    ml-0.5margin-left: 2px;
    mx-1margin-left: 4px; margin-right: 4px;
    my-1margin-top: 4px; margin-bottom: 4px;
    mt-1margin-top: 4px;
    mr-1margin-right: 4px;
    mb-1margin-bottom: 4px;
    ml-1margin-left: 4px;
    mx-1.5margin-left: 6px; margin-right: 6px;
    my-1.5margin-top: 6px; margin-bottom: 6px;
    mt-1.5margin-top: 6px;
    mr-1.5margin-right: 6px;
    mb-1.5margin-bottom: 6px;
    ml-1.5margin-left: 6px;
    mx-2margin-left: 8px; margin-right: 8px;
    my-2margin-top: 8px; margin-bottom: 8px;
    mt-2margin-top: 8px;
    mr-2margin-right: 8px;
    mb-2margin-bottom: 8px;
    ml-2margin-left: 8px;
    mx-2.5margin-left: 10px; margin-right: 10px;
    my-2.5margin-top: 10px; margin-bottom: 10px;
    mt-2.5margin-top: 10px;
    mr-2.5margin-right: 10px;
    mb-2.5margin-bottom: 10px;
    ml-2.5margin-left: 10px;
    mx-3margin-left: 12px; margin-right: 12px;
    my-3margin-top: 12px; margin-bottom: 12px;
    mt-3margin-top: 12px;
    mr-3margin-right: 12px;
    mb-3margin-bottom: 12px;
    ml-3margin-left: 12px;
    mx-3.5margin-left: 14px; margin-right: 14px;
    my-3.5margin-top: 14px; margin-bottom: 14px;
    mt-3.5margin-top: 14px;
    mr-3.5margin-right: 14px;
    mb-3.5margin-bottom: 14px;
    ml-3.5margin-left: 14px;
    mx-4margin-left: 16px; margin-right: 16px;
    my-4margin-top: 16px; margin-bottom: 16px;
    mt-4margin-top: 16px;
    mr-4margin-right: 16px;
    mb-4margin-bottom: 16px;
    ml-4margin-left: 16px;
    mx-5margin-left: 20px; margin-right: 20px;
    my-5margin-top: 20px; margin-bottom: 20px;
    mt-5margin-top: 20px;
    mr-5margin-right: 20px;
    mb-5margin-bottom: 20px;
    ml-5margin-left: 20px;
    mx-6margin-left: 24px; margin-right: 24px;
    my-6margin-top: 24px; margin-bottom: 24px;
    mt-6margin-top: 24px;
    mr-6margin-right: 24px;
    mb-6margin-bottom: 24px;
    ml-6margin-left: 24px;
    mx-7margin-left: 28px; margin-right: 28px;
    my-7margin-top: 28px; margin-bottom: 28px;
    mt-7margin-top: 28px;
    mr-7margin-right: 28px;
    mb-7margin-bottom: 28px;
    ml-7margin-left: 28px;
    mx-8margin-left: 32px; margin-right: 32px;
    my-8margin-top: 32px; margin-bottom: 32px;
    mt-8margin-top: 32px;
    mr-8margin-right: 32px;
    mb-8margin-bottom: 32px;
    ml-8margin-left: 32px;
    mx-9margin-left: 36px; margin-right: 36px;
    my-9margin-top: 36px; margin-bottom: 36px;
    mt-9margin-top: 36px;
    mr-9margin-right: 36px;
    mb-9margin-bottom: 36px;
    ml-9margin-left: 36px;
    mx-10margin-left: 40px; margin-right: 40px;
    my-10margin-top: 40px; margin-bottom: 40px;
    mt-10margin-top: 40px;
    mr-10margin-right: 40px;
    mb-10margin-bottom: 40px;
    ml-10margin-left: 40px;

    示例

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/spacing/utilities/padding.html b/dev/utilities/spacing/utilities/padding.html index 4a076ca988..8295f22d95 100644 --- a/dev/utilities/spacing/utilities/padding.html +++ b/dev/utilities/spacing/utilities/padding.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    内边距

    定义

    通过 p-* 工具类设置内边距,可用的工具类包括:

    工具类CSS 属性
    p-autopadding: auto;
    px-autopadding-left: auto; padding-right: auto;
    py-autopadding-top: auto; padding-bottom: auto;
    pt-autopadding-top: auto;
    pr-autopadding-right: auto;
    pb-autopadding-bottom: auto;
    pl-autopadding-left: auto;
    p-0padding: 0px;
    p-pxpadding: 1px;
    p-0.5padding: 2px;
    p-1padding: 4px;
    p-1.5padding: 6px;
    p-2padding: 8px;
    p-2.5padding: 10px;
    p-3padding: 12px;
    p-3.5padding: 14px;
    p-4padding: 16px;
    p-5padding: 20px;
    p-6padding: 24px;
    p-7padding: 28px;
    p-8padding: 32px;
    p-9padding: 36px;
    p-10padding: 40px;
    px-0padding-left: 0px; padding-right: 0px;
    py-0padding-top: 0px; padding-bottom: 0px;
    pt-0padding-top: 0px;
    pr-0padding-right: 0px;
    pb-0padding-bottom: 0px;
    pl-0padding-left: 0px;
    px-pxpadding-left: 1px; padding-right: 1px;
    py-pxpadding-top: 1px; padding-bottom: 1px;
    pt-pxpadding-top: 1px;
    pr-pxpadding-right: 1px;
    pb-pxpadding-bottom: 1px;
    pl-pxpadding-left: 1px;
    px-0.5padding-left: 2px; padding-right: 2px;
    py-0.5padding-top: 2px; padding-bottom: 2px;
    pt-0.5padding-top: 2px;
    pr-0.5padding-right: 2px;
    pb-0.5padding-bottom: 2px;
    pl-0.5padding-left: 2px;
    px-1padding-left: 4px; padding-right: 4px;
    py-1padding-top: 4px; padding-bottom: 4px;
    pt-1padding-top: 4px;
    pr-1padding-right: 4px;
    pb-1padding-bottom: 4px;
    pl-1padding-left: 4px;
    px-1.5padding-left: 6px; padding-right: 6px;
    py-1.5padding-top: 6px; padding-bottom: 6px;
    pt-1.5padding-top: 6px;
    pr-1.5padding-right: 6px;
    pb-1.5padding-bottom: 6px;
    pl-1.5padding-left: 6px;
    px-2padding-left: 8px; padding-right: 8px;
    py-2padding-top: 8px; padding-bottom: 8px;
    pt-2padding-top: 8px;
    pr-2padding-right: 8px;
    pb-2padding-bottom: 8px;
    pl-2padding-left: 8px;
    px-2.5padding-left: 10px; padding-right: 10px;
    py-2.5padding-top: 10px; padding-bottom: 10px;
    pt-2.5padding-top: 10px;
    pr-2.5padding-right: 10px;
    pb-2.5padding-bottom: 10px;
    pl-2.5padding-left: 10px;
    px-3padding-left: 12px; padding-right: 12px;
    py-3padding-top: 12px; padding-bottom: 12px;
    pt-3padding-top: 12px;
    pr-3padding-right: 12px;
    pb-3padding-bottom: 12px;
    pl-3padding-left: 12px;
    px-3.5padding-left: 14px; padding-right: 14px;
    py-3.5padding-top: 14px; padding-bottom: 14px;
    pt-3.5padding-top: 14px;
    pr-3.5padding-right: 14px;
    pb-3.5padding-bottom: 14px;
    pl-3.5padding-left: 14px;
    px-4padding-left: 16px; padding-right: 16px;
    py-4padding-top: 16px; padding-bottom: 16px;
    pt-4padding-top: 16px;
    pr-4padding-right: 16px;
    pb-4padding-bottom: 16px;
    pl-4padding-left: 16px;
    px-5padding-left: 20px; padding-right: 20px;
    py-5padding-top: 20px; padding-bottom: 20px;
    pt-5padding-top: 20px;
    pr-5padding-right: 20px;
    pb-5padding-bottom: 20px;
    pl-5padding-left: 20px;
    px-6padding-left: 24px; padding-right: 24px;
    py-6padding-top: 24px; padding-bottom: 24px;
    pt-6padding-top: 24px;
    pr-6padding-right: 24px;
    pb-6padding-bottom: 24px;
    pl-6padding-left: 24px;
    px-7padding-left: 28px; padding-right: 28px;
    py-7padding-top: 28px; padding-bottom: 28px;
    pt-7padding-top: 28px;
    pr-7padding-right: 28px;
    pb-7padding-bottom: 28px;
    pl-7padding-left: 28px;
    px-8padding-left: 32px; padding-right: 32px;
    py-8padding-top: 32px; padding-bottom: 32px;
    pt-8padding-top: 32px;
    pr-8padding-right: 32px;
    pb-8padding-bottom: 32px;
    pl-8padding-left: 32px;
    px-9padding-left: 36px; padding-right: 36px;
    py-9padding-top: 36px; padding-bottom: 36px;
    pt-9padding-top: 36px;
    pr-9padding-right: 36px;
    pb-9padding-bottom: 36px;
    pl-9padding-left: 36px;
    px-10padding-left: 40px; padding-right: 40px;
    py-10padding-top: 40px; padding-bottom: 40px;
    pt-10padding-top: 40px;
    pr-10padding-right: 40px;
    pb-10padding-bottom: 40px;
    pl-10padding-left: 40px;

    示例

    MIT License (MIT)

    - +
    Skip to content

    内边距

    定义

    通过 p-* 工具类设置内边距,可用的工具类包括:

    工具类CSS 属性
    p-autopadding: auto;
    px-autopadding-left: auto; padding-right: auto;
    py-autopadding-top: auto; padding-bottom: auto;
    pt-autopadding-top: auto;
    pr-autopadding-right: auto;
    pb-autopadding-bottom: auto;
    pl-autopadding-left: auto;
    p-0padding: 0px;
    p-pxpadding: 1px;
    p-0.5padding: 2px;
    p-1padding: 4px;
    p-1.5padding: 6px;
    p-2padding: 8px;
    p-2.5padding: 10px;
    p-3padding: 12px;
    p-3.5padding: 14px;
    p-4padding: 16px;
    p-5padding: 20px;
    p-6padding: 24px;
    p-7padding: 28px;
    p-8padding: 32px;
    p-9padding: 36px;
    p-10padding: 40px;
    px-0padding-left: 0px; padding-right: 0px;
    py-0padding-top: 0px; padding-bottom: 0px;
    pt-0padding-top: 0px;
    pr-0padding-right: 0px;
    pb-0padding-bottom: 0px;
    pl-0padding-left: 0px;
    px-pxpadding-left: 1px; padding-right: 1px;
    py-pxpadding-top: 1px; padding-bottom: 1px;
    pt-pxpadding-top: 1px;
    pr-pxpadding-right: 1px;
    pb-pxpadding-bottom: 1px;
    pl-pxpadding-left: 1px;
    px-0.5padding-left: 2px; padding-right: 2px;
    py-0.5padding-top: 2px; padding-bottom: 2px;
    pt-0.5padding-top: 2px;
    pr-0.5padding-right: 2px;
    pb-0.5padding-bottom: 2px;
    pl-0.5padding-left: 2px;
    px-1padding-left: 4px; padding-right: 4px;
    py-1padding-top: 4px; padding-bottom: 4px;
    pt-1padding-top: 4px;
    pr-1padding-right: 4px;
    pb-1padding-bottom: 4px;
    pl-1padding-left: 4px;
    px-1.5padding-left: 6px; padding-right: 6px;
    py-1.5padding-top: 6px; padding-bottom: 6px;
    pt-1.5padding-top: 6px;
    pr-1.5padding-right: 6px;
    pb-1.5padding-bottom: 6px;
    pl-1.5padding-left: 6px;
    px-2padding-left: 8px; padding-right: 8px;
    py-2padding-top: 8px; padding-bottom: 8px;
    pt-2padding-top: 8px;
    pr-2padding-right: 8px;
    pb-2padding-bottom: 8px;
    pl-2padding-left: 8px;
    px-2.5padding-left: 10px; padding-right: 10px;
    py-2.5padding-top: 10px; padding-bottom: 10px;
    pt-2.5padding-top: 10px;
    pr-2.5padding-right: 10px;
    pb-2.5padding-bottom: 10px;
    pl-2.5padding-left: 10px;
    px-3padding-left: 12px; padding-right: 12px;
    py-3padding-top: 12px; padding-bottom: 12px;
    pt-3padding-top: 12px;
    pr-3padding-right: 12px;
    pb-3padding-bottom: 12px;
    pl-3padding-left: 12px;
    px-3.5padding-left: 14px; padding-right: 14px;
    py-3.5padding-top: 14px; padding-bottom: 14px;
    pt-3.5padding-top: 14px;
    pr-3.5padding-right: 14px;
    pb-3.5padding-bottom: 14px;
    pl-3.5padding-left: 14px;
    px-4padding-left: 16px; padding-right: 16px;
    py-4padding-top: 16px; padding-bottom: 16px;
    pt-4padding-top: 16px;
    pr-4padding-right: 16px;
    pb-4padding-bottom: 16px;
    pl-4padding-left: 16px;
    px-5padding-left: 20px; padding-right: 20px;
    py-5padding-top: 20px; padding-bottom: 20px;
    pt-5padding-top: 20px;
    pr-5padding-right: 20px;
    pb-5padding-bottom: 20px;
    pl-5padding-left: 20px;
    px-6padding-left: 24px; padding-right: 24px;
    py-6padding-top: 24px; padding-bottom: 24px;
    pt-6padding-top: 24px;
    pr-6padding-right: 24px;
    pb-6padding-bottom: 24px;
    pl-6padding-left: 24px;
    px-7padding-left: 28px; padding-right: 28px;
    py-7padding-top: 28px; padding-bottom: 28px;
    pt-7padding-top: 28px;
    pr-7padding-right: 28px;
    pb-7padding-bottom: 28px;
    pl-7padding-left: 28px;
    px-8padding-left: 32px; padding-right: 32px;
    py-8padding-top: 32px; padding-bottom: 32px;
    pt-8padding-top: 32px;
    pr-8padding-right: 32px;
    pb-8padding-bottom: 32px;
    pl-8padding-left: 32px;
    px-9padding-left: 36px; padding-right: 36px;
    py-9padding-top: 36px; padding-bottom: 36px;
    pt-9padding-top: 36px;
    pr-9padding-right: 36px;
    pb-9padding-bottom: 36px;
    pl-9padding-left: 36px;
    px-10padding-left: 40px; padding-right: 40px;
    py-10padding-top: 40px; padding-bottom: 40px;
    pt-10padding-top: 40px;
    pr-10padding-right: 40px;
    pb-10padding-bottom: 40px;
    pl-10padding-left: 40px;

    示例

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/spacing/utilities/space.html b/dev/utilities/spacing/utilities/space.html index dab94fd732..3fcf113ddf 100644 --- a/dev/utilities/spacing/utilities/space.html +++ b/dev/utilities/spacing/utilities/space.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    子元素间距

    定义

    通过工具类 space-x-* 来为元素内的所有子元素之间设置水平间距;通过工具类 space-y-* 来为元素内的所有子元素之间设置水平间距,所有可用的工具类定义如下:

    工具类CSS 属性
    space-x-0 > * + *margin-left: 0px;
    space-y-0 > * + *margin-top: 0px;
    space-x-0.5 > * + *margin-left: 2px;
    space-y-0.5 > * + *margin-top: 2px;
    space-x-1 > * + *margin-left: 4px;
    space-y-1 > * + *margin-top: 4px;
    space-x-1.5 > * + *margin-left: 6px;
    space-y-1.5 > * + *margin-top: 6px;
    space-x-2 > * + *margin-left: 8px;
    space-y-2 > * + *margin-top: 8px;
    space-x-2.5 > * + *margin-left: 10px;
    space-y-2.5 > * + *margin-top: 10px;
    space-x-3 > * + *margin-left: 12px;
    space-y-3 > * + *margin-top: 12px;
    space-x-3.5 > * + *margin-left: 14px;
    space-y-3.5 > * + *margin-top: 14px;
    space-x-4 > * + *margin-left: 16px;
    space-y-4 > * + *margin-top: 16px;
    space-x-5 > * + *margin-left: 20px;
    space-y-5 > * + *margin-top: 20px;
    space-x-6 > * + *margin-left: 24px;
    space-y-6 > * + *margin-top: 24px;
    space-x-7 > * + *margin-left: 28px;
    space-y-7 > * + *margin-top: 28px;
    space-x-8 > * + *margin-left: 32px;
    space-y-8 > * + *margin-top: 32px;
    space-x-9 > * + *margin-left: 36px;
    space-y-9 > * + *margin-top: 36px;
    space-x-10 > * + *margin-left: 40px;
    space-y-10 > * + *margin-top: 40px;
    space-x-px > * + *margin-left: 1px;
    space-y-px > * + *margin-top: 1px;

    示例

    水平间距

    1
    2
    3

    垂直间距

    1
    2
    3

    MIT License (MIT)

    - +
    Skip to content

    子元素间距

    定义

    通过工具类 space-x-* 来为元素内的所有子元素之间设置水平间距;通过工具类 space-y-* 来为元素内的所有子元素之间设置水平间距,所有可用的工具类定义如下:

    工具类CSS 属性
    space-x-0 > * + *margin-left: 0px;
    space-y-0 > * + *margin-top: 0px;
    space-x-0.5 > * + *margin-left: 2px;
    space-y-0.5 > * + *margin-top: 2px;
    space-x-1 > * + *margin-left: 4px;
    space-y-1 > * + *margin-top: 4px;
    space-x-1.5 > * + *margin-left: 6px;
    space-y-1.5 > * + *margin-top: 6px;
    space-x-2 > * + *margin-left: 8px;
    space-y-2 > * + *margin-top: 8px;
    space-x-2.5 > * + *margin-left: 10px;
    space-y-2.5 > * + *margin-top: 10px;
    space-x-3 > * + *margin-left: 12px;
    space-y-3 > * + *margin-top: 12px;
    space-x-3.5 > * + *margin-left: 14px;
    space-y-3.5 > * + *margin-top: 14px;
    space-x-4 > * + *margin-left: 16px;
    space-y-4 > * + *margin-top: 16px;
    space-x-5 > * + *margin-left: 20px;
    space-y-5 > * + *margin-top: 20px;
    space-x-6 > * + *margin-left: 24px;
    space-y-6 > * + *margin-top: 24px;
    space-x-7 > * + *margin-left: 28px;
    space-y-7 > * + *margin-top: 28px;
    space-x-8 > * + *margin-left: 32px;
    space-y-8 > * + *margin-top: 32px;
    space-x-9 > * + *margin-left: 36px;
    space-y-9 > * + *margin-top: 36px;
    space-x-10 > * + *margin-left: 40px;
    space-y-10 > * + *margin-top: 40px;
    space-x-px > * + *margin-left: 1px;
    space-y-px > * + *margin-top: 1px;

    示例

    水平间距

    1
    2
    3

    垂直间距

    1
    2
    3

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/font-family.html b/dev/utilities/typography/utilities/font-family.html index 32346eee11..062d67a29e 100644 --- a/dev/utilities/typography/utilities/font-family.html +++ b/dev/utilities/typography/utilities/font-family.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    字体风格

    定义

    在 ZUI 中提供了一些 CSS 工具类方便为元素设置不同风格的字体,包括:

    工具类CSS 属性
    font-sansfont-family
    font-seriffont-family
    font-monofont-family

    无衬线字体 font-sans

    The quick brown fox jumps over the lazy dog.

    白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    衬线字体 font-serif

    The quick brown fox jumps over the lazy dog.

    白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    等宽字体 font-mono

    The quick brown fox jumps over the lazy dog.

    白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    参考

    MIT License (MIT)

    - +
    Skip to content

    字体风格

    定义

    在 ZUI 中提供了一些 CSS 工具类方便为元素设置不同风格的字体,包括:

    工具类CSS 属性
    font-sansfont-family
    font-seriffont-family
    font-monofont-family

    无衬线字体 font-sans

    The quick brown fox jumps over the lazy dog.

    白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    衬线字体 font-serif

    The quick brown fox jumps over the lazy dog.

    白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    等宽字体 font-mono

    The quick brown fox jumps over the lazy dog.

    白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    参考

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/font-size.html b/dev/utilities/typography/utilities/font-size.html index 86706bed14..981cece6d2 100644 --- a/dev/utilities/typography/utilities/font-size.html +++ b/dev/utilities/typography/utilities/font-size.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    字体大小

    定义

    使用 text-* 工具类控制元素的字体大小。

    工具类CSS 属性
    text-rootfont-size
    text-smfont-size
    text-basefont-size
    text-mdfont-size
    text-lgfont-size
    text-xlfont-size
    text-2xlfont-size
    text-3xlfont-size
    text-4xlfont-size

    示例

    text-root 字体大小
    text-xs 字体大小
    text-sm 字体大小
    text-base 字体大小
    text-md 字体大小
    text-lg 字体大小
    text-xl 字体大小
    text-2xl 字体大小
    text-3xl 字体大小
    text-4xl 字体大小

    MIT License (MIT)

    - +
    Skip to content

    字体大小

    定义

    使用 text-* 工具类控制元素的字体大小。

    工具类CSS 属性
    text-rootfont-size
    text-smfont-size
    text-basefont-size
    text-mdfont-size
    text-lgfont-size
    text-xlfont-size
    text-2xlfont-size
    text-3xlfont-size
    text-4xlfont-size

    示例

    text-root 字体大小
    text-xs 字体大小
    text-sm 字体大小
    text-base 字体大小
    text-md 字体大小
    text-lg 字体大小
    text-xl 字体大小
    text-2xl 字体大小
    text-3xl 字体大小
    text-4xl 字体大小

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/font-weight.html b/dev/utilities/typography/utilities/font-weight.html index 00ed2f3aff..68f48b9449 100644 --- a/dev/utilities/typography/utilities/font-weight.html +++ b/dev/utilities/typography/utilities/font-weight.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    字体粗细

    定义

    使用 font-* 工具类来控制元素字体粗细。

    工具类CSS 属性
    font-thinfont-weight
    font-lightfont-weight
    font-mediumfont-weight
    font-semiboldfont-weight
    font-boldfont-weight
    font-blackfont-weight

    示例

    font-thin 字体粗细
    font-light 字体粗细
    font-medium 字体粗细
    font-semibold 字体粗细
    font-bold 字体粗细
    font-black 字体粗细

    MIT License (MIT)

    - +
    Skip to content

    字体粗细

    定义

    使用 font-* 工具类来控制元素字体粗细。

    工具类CSS 属性
    font-thinfont-weight
    font-lightfont-weight
    font-mediumfont-weight
    font-semiboldfont-weight
    font-boldfont-weight
    font-blackfont-weight

    示例

    font-thin 字体粗细
    font-light 字体粗细
    font-medium 字体粗细
    font-semibold 字体粗细
    font-bold 字体粗细
    font-black 字体粗细

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/leading.html b/dev/utilities/typography/utilities/leading.html index a2744a00bc..205055beb9 100644 --- a/dev/utilities/typography/utilities/leading.html +++ b/dev/utilities/typography/utilities/leading.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    行高

    定义

    使用 leading-* 工具类来控制元素文字行高。

    工具类CSS 属性
    leading-3line-height: .75rem;
    leading-4line-height: 1rem;
    leading-5line-height: 1.25rem;
    leading-6line-height: 1.5rem;
    leading-7line-height: 1.75rem;
    leading-8line-height: 2rem;
    leading-9line-height: 2.25rem;
    leading-10line-height: 2.5rem;
    leading-noneline-height: 1;
    leading-tightline-height: 1.25;
    leading-snugline-height: 1.375;
    leading-normalline-height: 1.5;
    leading-relaxedline-height: 1.625;
    leading-looseline-height: 2;

    固定行高

    使用 leading-* 工具类给一个元素一个固定的行高。

    leading-3 行高展示
    leading-4 行高展示
    leading-5 行高展示
    leading-6 行高展示
    leading-7 行高展示
    leading-8 行高展示
    leading-9 行高展示
    leading-10 行高展示

    相对行高

    使用 leading-noneleading-tightleading-snugleading-normalleading-relaxedleading-loose 等工具类,根据元素当前的字体大小,给它一个相对的行高。

    leading-none 行高展示
    leading-none 行高展示
    leading-none 行高展示
    leading-tight 行高展示
    leading-tight 行高展示
    leading-tight 行高展示
    leading-snug 行高展示
    leading-snug 行高展示
    leading-snug 行高展示
    leading-normal 行高展示
    leading-normal 行高展示
    leading-normal 行高展示
    leading-relaxed 行高展示
    leading-relaxed 行高展示
    leading-relaxed 行高展示
    leading-loose 行高展示
    leading-loose 行高展示
    leading-loose 行高展示

    MIT License (MIT)

    - +
    Skip to content

    行高

    定义

    使用 leading-* 工具类来控制元素文字行高。

    工具类CSS 属性
    leading-3line-height: .75rem;
    leading-4line-height: 1rem;
    leading-5line-height: 1.25rem;
    leading-6line-height: 1.5rem;
    leading-7line-height: 1.75rem;
    leading-8line-height: 2rem;
    leading-9line-height: 2.25rem;
    leading-10line-height: 2.5rem;
    leading-noneline-height: 1;
    leading-tightline-height: 1.25;
    leading-snugline-height: 1.375;
    leading-normalline-height: 1.5;
    leading-relaxedline-height: 1.625;
    leading-looseline-height: 2;

    固定行高

    使用 leading-* 工具类给一个元素一个固定的行高。

    leading-3 行高展示
    leading-4 行高展示
    leading-5 行高展示
    leading-6 行高展示
    leading-7 行高展示
    leading-8 行高展示
    leading-9 行高展示
    leading-10 行高展示

    相对行高

    使用 leading-noneleading-tightleading-snugleading-normalleading-relaxedleading-loose 等工具类,根据元素当前的字体大小,给它一个相对的行高。

    leading-none 行高展示
    leading-none 行高展示
    leading-none 行高展示
    leading-tight 行高展示
    leading-tight 行高展示
    leading-tight 行高展示
    leading-snug 行高展示
    leading-snug 行高展示
    leading-snug 行高展示
    leading-normal 行高展示
    leading-normal 行高展示
    leading-normal 行高展示
    leading-relaxed 行高展示
    leading-relaxed 行高展示
    leading-relaxed 行高展示
    leading-loose 行高展示
    leading-loose 行高展示
    leading-loose 行高展示

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/line-clamp.html b/dev/utilities/typography/utilities/line-clamp.html index b53b56c85e..75dded2240 100644 --- a/dev/utilities/typography/utilities/line-clamp.html +++ b/dev/utilities/typography/utilities/line-clamp.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    行数限制

    定义

    使用 line-clamp-* 工具类限制显示多少行文本,在文本超出时进行截断:

    工具类属性
    line-clamp-1overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;
    line-clamp-2overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
    line-clamp-3overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3;
    line-clamp-4overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4;
    line-clamp-5overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5;
    line-clamp-6overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 6;

    示例

    至多显示 clamp-1 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-2 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-3 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-4 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-5 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-6 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    MIT License (MIT)

    - +
    Skip to content

    行数限制

    定义

    使用 line-clamp-* 工具类限制显示多少行文本,在文本超出时进行截断:

    工具类属性
    line-clamp-1overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;
    line-clamp-2overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
    line-clamp-3overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3;
    line-clamp-4overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4;
    line-clamp-5overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5;
    line-clamp-6overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 6;

    示例

    至多显示 clamp-1 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-2 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-3 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-4 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-5 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-6 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/list-style.html b/dev/utilities/typography/utilities/list-style.html index 5dca094d96..2c5af1fa9b 100644 --- a/dev/utilities/typography/utilities/list-style.html +++ b/dev/utilities/typography/utilities/list-style.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    列表样式

    定义

    使用工具类 list-* 为元素(通常是 <ul><ol>)设置 CSS 属性 list-style

    工具类属性
    list-unstyledlist-style-type: none; padding-left: 0;
    list-nonelist-style-type: none;
    list-disclist-style-type: disc;
    list-decimallist-style-type: decimal;

    示例

    无样式 list-unstyled

    • 这是一个列表
    • 含四个列表项
    • 作为示例
    • 最后一个列表有嵌套的子列表
      • 子列表项 1
      • 子列表项 2
      • 子列表项 3

    空白样式 list-none

    • 这是一个列表
    • 含四个列表项
    • 作为示例
    • 最后一个列表有嵌套的子列表
      • 子列表项 1
      • 子列表项 2
      • 子列表项 3

    圆点样式 list-disc

    • 这是一个列表
    • 含四个列表项
    • 作为示例
    • 最后一个列表有嵌套的子列表
      • 子列表项 1
      • 子列表项 2
      • 子列表项 3

    序号样式 list-decimal

    • 这是一个列表
    • 含四个列表项
    • 作为示例
    • 最后一个列表有嵌套的子列表
      • 子列表项 1
      • 子列表项 2
      • 子列表项 3

    MIT License (MIT)

    - +
    Skip to content

    列表样式

    定义

    使用工具类 list-* 为元素(通常是 <ul><ol>)设置 CSS 属性 list-style

    工具类属性
    list-unstyledlist-style-type: none; padding-left: 0;
    list-nonelist-style-type: none;
    list-disclist-style-type: disc;
    list-decimallist-style-type: decimal;

    示例

    无样式 list-unstyled

    • 这是一个列表
    • 含四个列表项
    • 作为示例
    • 最后一个列表有嵌套的子列表
      • 子列表项 1
      • 子列表项 2
      • 子列表项 3

    空白样式 list-none

    • 这是一个列表
    • 含四个列表项
    • 作为示例
    • 最后一个列表有嵌套的子列表
      • 子列表项 1
      • 子列表项 2
      • 子列表项 3

    圆点样式 list-disc

    • 这是一个列表
    • 含四个列表项
    • 作为示例
    • 最后一个列表有嵌套的子列表
      • 子列表项 1
      • 子列表项 2
      • 子列表项 3

    序号样式 list-decimal

    • 这是一个列表
    • 含四个列表项
    • 作为示例
    • 最后一个列表有嵌套的子列表
      • 子列表项 1
      • 子列表项 2
      • 子列表项 3

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/text-align.html b/dev/utilities/typography/utilities/text-align.html index 429f5d0ec3..5f84073b53 100644 --- a/dev/utilities/typography/utilities/text-align.html +++ b/dev/utilities/typography/utilities/text-align.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    文本对齐

    定义

    使用 text-* 工具类来控制元素的文本对齐方式。

    工具类属性
    text-lefttext-align: left;
    text-centertext-align: center;
    text-righttext-align: right;
    text-justifytext-align: justify;

    示例

    文本左对齐

    文本居中对齐

    文本右对齐

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    MIT License (MIT)

    - +
    Skip to content

    文本对齐

    定义

    使用 text-* 工具类来控制元素的文本对齐方式。

    工具类属性
    text-lefttext-align: left;
    text-centertext-align: center;
    text-righttext-align: right;
    text-justifytext-align: justify;

    示例

    文本左对齐

    文本居中对齐

    文本右对齐

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/text-color.html b/dev/utilities/typography/utilities/text-color.html index aab32b3e1b..b744bb234d 100644 --- a/dev/utilities/typography/utilities/text-color.html +++ b/dev/utilities/typography/utilities/text-color.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    文本颜色

    效果

    使用工具类 text-* 给元素添加文本颜色。

    语义化
    Text 文本
    text-primary
    Text 文本
    text-secondary
    Text 文本
    text-success
    Text 文本
    text-warning
    Text 文本
    text-danger
    Text 文本
    text-important
    Text 文本
    text-special
    主色系列
    Text 文本
    text-primary-50
    Text 文本
    text-primary-100
    Text 文本
    text-primary-200
    Text 文本
    text-primary-300
    Text 文本
    text-primary-400
    Text 文本
    text-primary-500
    Text 文本
    text-primary-600
    Text 文本
    text-primary-700
    Text 文本
    text-primary-800
    Text 文本
    text-primary-900
    Text 文本
    text-primary-950
    次要系列
    Text 文本
    text-secondary-50
    Text 文本
    text-secondary-100
    Text 文本
    text-secondary-200
    Text 文本
    text-secondary-300
    Text 文本
    text-secondary-400
    Text 文本
    text-secondary-500
    Text 文本
    text-secondary-600
    Text 文本
    text-secondary-700
    Text 文本
    text-secondary-800
    Text 文本
    text-secondary-900
    Text 文本
    text-secondary-950
    灰度
    Text 文本
    text-gray-50
    Text 文本
    text-gray-100
    Text 文本
    text-gray-200
    Text 文本
    text-gray-300
    Text 文本
    text-gray-400
    Text 文本
    gray
    text-gray-500 别名: text-gray
    Text 文本
    text-gray-600
    Text 文本
    text-gray-700
    Text 文本
    text-gray-800
    Text 文本
    text-gray-900
    Text 文本
    text-gray-950
    界面
    Text 文本
    text-white
    纯白
    Text 文本
    text-black
    纯黑
    Text 文本
    text-transparent
    透明
    Text 文本
    text-canvas
    画布
    Text 文本
    text-inverse
    反色
    Text 文本
    text-surface-light
    加重的控件
    Text 文本
    text-surface
    控件
    Text 文本
    text-surface-strong
    轻量的控件
    Text 文本
    text-fore
    前景色作为背景
    Text 文本
    text-focus
    焦点色作为背景
    特殊
    Text 文本
    text-current
    CSS 值 currentColor
    Text 文本
    text-inherit
    CSS 值 inherit

    文本颜色透明度

    使用工具类 text-opacity-* 给元素设置文本颜色透明度。

    Text 文本
    text-opacity-0
    透明度:0%
    Text 文本
    text-opacity-5
    透明度:5%
    Text 文本
    text-opacity-10
    透明度:10%
    Text 文本
    text-opacity-20
    透明度:20%
    Text 文本
    text-opacity-25
    透明度:25%
    Text 文本
    text-opacity-30
    透明度:30%
    Text 文本
    text-opacity-40
    透明度:40%
    Text 文本
    text-opacity-50
    透明度:60%
    Text 文本
    text-opacity-60
    透明度:60%
    Text 文本
    text-opacity-70
    透明度:70%
    Text 文本
    text-opacity-75
    透明度:75%
    Text 文本
    text-opacity-80
    透明度:80%
    Text 文本
    text-opacity-90
    透明度:90%
    Text 文本
    text-opacity-95
    透明度:95%
    Text 文本
    text-opacity-100
    透明度:0%

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/text-decoration.html b/dev/utilities/typography/utilities/text-decoration.html index f461ddd713..f7affe1ab8 100644 --- a/dev/utilities/typography/utilities/text-decoration.html +++ b/dev/utilities/typography/utilities/text-decoration.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    文本装饰

    定义

    在 ZUI 中,你可以通过如下工具类来设置文本装饰样式:

    工具类属性
    underlinetext-decoration-line: underline;
    overlinetext-decoration-line: overline;
    line-throughtext-decoration-line: line-through;
    no-underlinetext-decoration-line: none;

    示例

    下划线 underline

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。

    上划线 overline

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。

    中间划线 line-through

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。

    无划线 no-underline

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。

    MIT License (MIT)

    - +
    Skip to content

    文本装饰

    定义

    在 ZUI 中,你可以通过如下工具类来设置文本装饰样式:

    工具类属性
    underlinetext-decoration-line: underline;
    overlinetext-decoration-line: overline;
    line-throughtext-decoration-line: line-through;
    no-underlinetext-decoration-line: none;

    示例

    下划线 underline

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。

    上划线 overline

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。

    中间划线 line-through

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。

    无划线 no-underline

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/text-overflow.html b/dev/utilities/typography/utilities/text-overflow.html index cd98c44ad7..91e263ed7c 100644 --- a/dev/utilities/typography/utilities/text-overflow.html +++ b/dev/utilities/typography/utilities/text-overflow.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    文本溢出

    定义

    文字溢出包括两种方式,分布为省略和裁剪,在 ZUI 中可以通过如下工具类实现:

    工具类属性
    text-ellipsisoverflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    text-clipoverflow: hidden; text-overflow: clip; white-space: nowrap;

    文字省略 text-ellipsis

    使用 text-ellipsis 用省略号(…)来截断溢出的文本。

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    文字裁剪 text-clip

    使用 text-clip 在内容区域的极限处截断文本。

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    MIT License (MIT)

    - +
    Skip to content

    文本溢出

    定义

    文字溢出包括两种方式,分布为省略和裁剪,在 ZUI 中可以通过如下工具类实现:

    工具类属性
    text-ellipsisoverflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    text-clipoverflow: hidden; text-overflow: clip; white-space: nowrap;

    文字省略 text-ellipsis

    使用 text-ellipsis 用省略号(…)来截断溢出的文本。

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    文字裁剪 text-clip

    使用 text-clip 在内容区域的极限处截断文本。

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/text-transform.html b/dev/utilities/typography/utilities/text-transform.html index 19732a42ff..f658fad0a8 100644 --- a/dev/utilities/typography/utilities/text-transform.html +++ b/dev/utilities/typography/utilities/text-transform.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    文本大小写

    定义

    在 ZUI 中,你可以通过如下工具类来设置文本大小写显示规则:

    工具类属性
    uppercasetext-transform: uppercase;
    lowercasetext-transform: lowercase;
    capitalizetext-transform: capitalize;
    normal-casetext-transform: none;

    示例

    显示为大写 uppercase

    The quick brown fox jumps over the lazy dog.

    显示为小写 lowercase

    The quick brown fox jumps over the lazy dog.

    显示为单词首字母大写 capitalize

    The quick brown fox jumps over the lazy dog.

    默认大小写 normal-case

    The quick brown fox jumps over the lazy dog.

    MIT License (MIT)

    - +
    Skip to content

    文本大小写

    定义

    在 ZUI 中,你可以通过如下工具类来设置文本大小写显示规则:

    工具类属性
    uppercasetext-transform: uppercase;
    lowercasetext-transform: lowercase;
    capitalizetext-transform: capitalize;
    normal-casetext-transform: none;

    示例

    显示为大写 uppercase

    The quick brown fox jumps over the lazy dog.

    显示为小写 lowercase

    The quick brown fox jumps over the lazy dog.

    显示为单词首字母大写 capitalize

    The quick brown fox jumps over the lazy dog.

    默认大小写 normal-case

    The quick brown fox jumps over the lazy dog.

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/vertical-align.html b/dev/utilities/typography/utilities/vertical-align.html index 5bf77ce746..dc4c27b6d7 100644 --- a/dev/utilities/typography/utilities/vertical-align.html +++ b/dev/utilities/typography/utilities/vertical-align.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    垂直对齐

    定义

    用于控制内联或表格单元格的垂直对齐的工具类。

    工具类属性
    align-middlevertical-align: middle;
    align-topvertical-align: top;
    align-bottomvertical-align: bottom;
    align-subvertical-align: sub;
    align-supervertical-align: super;

    示例

    参照文本中部对齐

    参照文本顶端对齐

    参照文本底部对齐

    参照文本文本下标对齐

    参照文本文本上标对齐

    MIT License (MIT)

    - +
    Skip to content

    垂直对齐

    定义

    用于控制内联或表格单元格的垂直对齐的工具类。

    工具类属性
    align-middlevertical-align: middle;
    align-topvertical-align: top;
    align-bottomvertical-align: bottom;
    align-subvertical-align: sub;
    align-supervertical-align: super;

    示例

    参照文本中部对齐

    参照文本顶端对齐

    参照文本底部对齐

    参照文本文本下标对齐

    参照文本文本上标对齐

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/whitespace.html b/dev/utilities/typography/utilities/whitespace.html index 663de6983f..0b24063d77 100644 --- a/dev/utilities/typography/utilities/whitespace.html +++ b/dev/utilities/typography/utilities/whitespace.html @@ -14,22 +14,22 @@ - - + + -
    Skip to content

    空白处理

    定义

    用于控制元素的空格属性的工具类。

    工具类属性
    whitespace-nowrapwhite-space: nowrap;
    whitespace-prewhite-space: pre;
    whitespace-pre-linewhite-space: pre-line;
    whitespace-pre-wrapwhite-space: pre-wrap;

    示例

    不保留空格不自动换行

    使用 whitespace-nowrap 来防止文本在元素中被包裹。换行和空格将被折叠。

    The quick brown fox jumps over the lazy dog. +
    Skip to content

    空白处理

    定义

    用于控制元素的空格属性的工具类。

    工具类属性
    whitespace-nowrapwhite-space: nowrap;
    whitespace-prewhite-space: pre;
    whitespace-pre-linewhite-space: pre-line;
    whitespace-pre-wrapwhite-space: pre-wrap;

    示例

    不保留空格不自动换行

    使用 whitespace-nowrap 来防止文本在元素中被包裹。换行和空格将被折叠。

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。 - 欲穷千里目,更上一层楼。

    保留空格不自动换行

    使用 pre 来保留元素中的换行和空格。文本不会被包装。

    The quick brown fox jumps over the lazy dog. + 欲穷千里目,更上一层楼。

    保留空格不自动换行

    使用 pre 来保留元素中的换行和空格。文本不会被包装。

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。 - 欲穷千里目,更上一层楼。

    不保留空格自动换行

    使用 whitespace-pre-line 保留换行,但不保留元素中的空格。文本将被正常包装。

    The quick brown fox jumps over the lazy dog. + 欲穷千里目,更上一层楼。

    不保留空格自动换行

    使用 whitespace-pre-line 保留换行,但不保留元素中的空格。文本将被正常包装。

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。 - 欲穷千里目,更上一层楼。

    保留空格自动换行

    使用 whitespace-pre-wrap 来保留元素中的换行和空格。文本将被正常包装。

    The quick brown fox jumps over the lazy dog. + 欲穷千里目,更上一层楼。

    保留空格自动换行

    使用 whitespace-pre-wrap 来保留元素中的换行和空格。文本将被正常包装。

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。 欲穷千里目,更上一层楼。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/word-break.html b/dev/utilities/typography/utilities/word-break.html index 1a56beca2f..8e1fed7e12 100644 --- a/dev/utilities/typography/utilities/word-break.html +++ b/dev/utilities/typography/utilities/word-break.html @@ -14,20 +14,20 @@ - - + + -
    Skip to content

    文本换行

    定义

    用于控制元素中的换行符的工具类。

    工具类属性
    break-normaloverflow-wrap: normal;word-break: normal;
    break-wordsoverflow-wrap: break-word;
    break-allword-break: break-all;

    示例

    字内换行

    使用 break-normal 只在正常的换行点添加换行符。

    The quick brown fox jumps over the lazy dog. +
    Skip to content

    文本换行

    定义

    用于控制元素中的换行符的工具类。

    工具类属性
    break-normaloverflow-wrap: normal;word-break: normal;
    break-wordsoverflow-wrap: break-word;
    break-allword-break: break-all;

    示例

    字内换行

    使用 break-normal 只在正常的换行点添加换行符。

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。 - 欲穷千里目,更上一层楼。

    单词内换行

    使用 break-words 在词中间添加换行符。

    The quick brown fox jumps over the lazy dog. + 欲穷千里目,更上一层楼。

    单词内换行

    使用 break-words 在词中间添加换行符。

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。 - 欲穷千里目,更上一层楼。

    任意字内断开

    使用 break-all 在必要的时候添加换行符,而不是试图保留整个单词。

    The quick brown fox jumps over the lazy dog. + 欲穷千里目,更上一层楼。

    任意字内断开

    使用 break-all 在必要的时候添加换行符,而不是试图保留整个单词。

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。 欲穷千里目,更上一层楼。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/zui-3.0.0.zip b/dev/zui-3.0.0.zip index 672d4f253cf4f5ea616e973dee22245d92ea4a59..8fd2d056f085f86aed773fa91869a012e515142e 100644 GIT binary patch delta 411075 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 }2nAw7R5O2QzGvvYqg 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%0D&ucop;D=?q5MFSP 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

    cz7k|O| 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 Ph2ay45bEITKkfeqZ^lv# delta 409981 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

  • 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 (bn(s, t, "read from private field"), e ? e.call(s) : t.ge t instanceof WeakSet ? t.add(s) : t.set(s, e); }, mt = (s, t, e, n) => (bn(s, t, "write to private field"), n ? n.call(s, e) : t.set(s, e), e); var wn = (s, t, e) => (bn(s, t, "access private method"), e); -const Pu = "3.0.0", Ru = 1722237295398, Ht = document, Es = window, Hr = Ht.documentElement, de = Ht.createElement.bind(Ht), Wr = de("div"), Cn = de("table"), Ja = de("tbody"), ar = de("tr"), { isArray: Xs, prototype: jr } = Array, { concat: Za, filter: oi, indexOf: Br, map: Vr, push: Xa, slice: Ur, some: ai, splice: Qa } = jr, tl = /^#(?:[\w-]|\\.|[^\x00-\xa0])*$/, el = /^\.(?:[\w-]|\\.|[^\x00-\xa0])*$/, sl = /<.+>/, nl = /^\w+$/; +const Pu = "3.0.0", Ru = 1722568029152, Ht = document, Es = window, Hr = Ht.documentElement, de = Ht.createElement.bind(Ht), Wr = de("div"), Cn = de("table"), Ja = de("tbody"), ar = de("tr"), { isArray: Xs, prototype: jr } = Array, { concat: Za, filter: oi, indexOf: Br, map: Vr, push: Xa, slice: Ur, some: ai, splice: Qa } = jr, tl = /^#(?:[\w-]|\\.|[^\x00-\xa0])*$/, el = /^\.(?:[\w-]|\\.|[^\x00-\xa0])*$/, sl = /<.+>/, nl = /^\w+$/; function li(s, t) { const e = il(t); return !s || !e && !le(t) && !X(t) ? [] : !e && el.test(s) ? t.getElementsByClassName(s.slice(1).replace(/\\/g, "")) : !e && nl.test(s) ? t.getElementsByTagName(s) : t.querySelectorAll(s); @@ -9158,7 +9158,16 @@ function Ta(s, t, e) { }), s; } function Bh(s = [], t = !0) { - return t && js.length && s.unshift(...js), s != null && s.length ? Ta([], s, /* @__PURE__ */ new Set()) : []; + if (t && js.length && s.unshift(...js), !(s != null && s.length)) + return []; + const e = Ta([], s, /* @__PURE__ */ new Set()), n = [], i = e.reduce((r, o, a) => { + var l; + return r.set(o.name, a * 1e3), (l = o.requireAfter) != null && l.length && n.push(o), r; + }, /* @__PURE__ */ new Map()); + return n.length && (n.forEach((r) => { + const o = r.requireAfter.reduce((a, l) => (i.has(l) && a.push(i.get(l)), a), []); + o.length && i.set(r.name, Math.max(...o) + 1); + }), e.sort((r, o) => i.get(r.name) - i.get(o.name))), e; } function Na() { return { @@ -9714,7 +9723,7 @@ let rr = class extends B { return; G(this, Et, void 0); } - this.setState(i ?? ((r) => ({ renderCount: r.renderCount + 1 })), e); + this.setState(i || ((r) => ({ renderCount: r.renderCount + 1 })), e); } getPointerInfo(t) { const e = t.target; @@ -10551,6 +10560,7 @@ function qa(s, t, e, n, i) { const bs = "dtable-nested-toggle", uu = { name: "nested", plugins: [lu], + requireAfter: ["sortable"], defaultOptions: { nested: "auto", nestedParentKey: "parent", @@ -10602,37 +10612,39 @@ const bs = "dtable-nested-toggle", uu = { }, onAddRows(s) { const { nestedMap: t, nestedRowMap: e } = this.data; - return s.forEach((n) => { - var a, l; - const i = t.get(n.id) ?? { + s.forEach((i) => { + var l, c; + const r = t.get(i.id) ?? { state: "", level: 0 }; - let r = ((a = n.data) == null ? void 0 : a[this.options.nestedParentKey ?? "parent"]) ?? []; - Array.isArray(r) || (r = [r]); - let o; - for (r = [...r]; r.length; ) { - let c = r.pop(); - if (c === void 0) + let o = ((l = i.data) == null ? void 0 : l[this.options.nestedParentKey ?? "parent"]) ?? []; + Array.isArray(o) || (o = [o]); + let a; + for (o = [...o]; o.length; ) { + let u = o.pop(); + if (u === void 0) continue; - if (c = String(c), e.get(c)) { - o = c; + if (u = String(u), e.get(u)) { + a = u; break; } } - if (i.parent = o === "0" ? void 0 : o, (l = n.data) != null && l[this.options.asParentKey ?? "asParent"] && (i.children = []), t.set(n.id, i), o) { - let c = t.get(o); - c || (c = { + if (r.parent = a === "0" ? void 0 : a, (c = i.data) != null && c[this.options.asParentKey ?? "asParent"] && (r.children = []), t.set(i.id, r), a) { + let u = t.get(a); + u || (u = { state: "", level: 0 - }, t.set(o, c)), c.children || (c.children = []), c.children.push(n.id); + }, t.set(a, u)), u.children || (u.children = []), u.children.push(i.id); } - }), s = s.filter( - (n) => this.getNestedRowInfo(n.id).state !== "hidden" - /* hidden */ - ), Ua(this.data.nestedMap), s.sort((n, i) => { - const r = this.getNestedRowInfo(n.id), o = this.getNestedRowInfo(i.id), a = (r.order ?? 0) - (o.order ?? 0); - return a === 0 ? n.index - i.index : a; + }); + const n = /* @__PURE__ */ new Map(); + return s = s.filter((i) => { + const r = this.getNestedRowInfo(i.id); + return n.set(i.id, r), r.state !== "hidden"; + }), Ua(n), s.sort((i, r) => { + const o = n.get(i.id), a = n.get(r.id), l = (o.order ?? 0) - (a.order ?? 0); + return l === 0 ? i.index - r.index : l; }), s; }, onRenderCell(s, t) { @@ -10971,10 +10983,7 @@ const xu = { const Nu = { name: "sortable", defaultOptions: { - sortable: !0, - canSortTo(s, t) { - return this.options.nested ? this.getNestedRowInfo(s.id).parent === this.getNestedRowInfo(t.id).parent : !0; - } + sortable: !0 }, when: (s) => !!s.sortable, plugins: [Ga, Tu], diff --git a/dev/zui/zui.esm.js.map b/dev/zui/zui.esm.js.map index 4ae72252c4..3f701c5a72 100644 --- a/dev/zui/zui.esm.js.map +++ b/dev/zui/zui.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"zui.esm.js","sources":["../../../../lib/core/src/config/index.ts","../../../../node_modules/cash-dom/dist/cash.esm.js","../../../../lib/core/src/cash/cash.ts","../../../../lib/helpers/src/object/deep-get.ts","../../../../lib/helpers/src/format-string.ts","../../../../lib/core/src/i18n/i18n.ts","../../../../lib/core/src/i18n/common.ts","../../../../lib/core/src/ajax/ajax.ts","../../../../lib/core/src/ajax/helper.ts","../../../../lib/core/src/ajax/fetcher.ts","../../../../lib/core/src/helpers/gid.ts","../../../../lib/core/src/helpers/is-diff.ts","../../../../lib/core/src/helpers/computed.ts","../../../../lib/core/src/helpers/classes.ts","../../../../lib/core/src/helpers/data.ts","../../../../lib/core/src/helpers/raw-data.ts","../../../../lib/core/src/helpers/z.ts","../../../../lib/core/src/helpers/attr.ts","../../../../lib/core/src/helpers/event.ts","../../../../lib/core/src/helpers/delay.ts","../../../../lib/core/src/helpers/share-data.ts","../../../../node_modules/preact/dist/preact.module.js","../../../../lib/core/src/helpers/merge-props.ts","../../../../lib/core/src/helpers/scroll.ts","../../../../lib/core/src/helpers/global-event.ts","../../../../lib/core/src/helpers/size.ts","../../../../lib/core/src/helpers/download-file.ts","../../../../lib/core/src/helpers/bus.ts","../../../../node_modules/tinykeys/dist/tinykeys.module.js","../../../../lib/core/src/helpers/hotkeys.ts","../../../../lib/core/src/helpers/fullscreen.ts","../../../../lib/core/src/dom/is-detached.ts","../../../../lib/core/src/component/component.ts","../../../../lib/core/src/component/creator.ts","../../../../lib/core/src/helpers/sticky.ts","../../../../lib/core/src/dom/is-visible.ts","../../../../lib/core/src/dom/run-js.ts","../../../../lib/core/src/dom/scroll-into-view.ts","../../../../lib/core/src/dom/get-lib.ts","../../../../lib/core/src/dom/resize.ts","../../../../lib/core/src/react/components/components.ts","../../../../lib/core/src/react/components/h-element.ts","../../../../node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../../../../lib/core/src/react/components/html-content.tsx","../../../../lib/core/src/react/components/custom-render.tsx","../../../../lib/core/src/react/components/custom-content.tsx","../../../../lib/core/src/react/components/icon.tsx","../../../../lib/core/src/react/components/portals.ts","../../../../lib/core/src/react/components/share.ts","../../../../lib/core/src/react/component-from-react.ts","../../../../lib/button/src/component/button.tsx","../../../../lib/button/src/component/share.ts","../../../../lib/common-list/src/component/common-list.tsx","../../../../lib/common-list/src/vanilla/common-list.ts","../../../../lib/common-list/src/component/share.ts","../../../../lib/helpers/src/color-helper.ts","../../../../lib/helpers/src/string-code.ts","../../../../lib/avatar/src/component/avatar.tsx","../../../../lib/btn-group/src/component/btn-group.tsx","../../../../lib/toolbar/src/component/toolbar.tsx","../../../../lib/checkbox/src/component/checkbox.tsx","../../../../lib/checkbox/src/component/radio.tsx","../../../../lib/checkbox/src/component/switch.tsx","../../../../lib/list/src/component/listitem.tsx","../../../../lib/list/src/component/list.tsx","../../../../lib/store/src/store.ts","../../../../lib/store/src/main.ts","../../../../lib/list/src/component/nested-list.tsx","../../../../lib/menu/src/component/menu.tsx","../../../../lib/search-box/src/components/search-box.tsx","../../../../lib/menu/src/component/search-menu.tsx","../../../../lib/menu/src/vanilla/menu.ts","../../../../lib/menu/src/vanilla/search-menu.ts","../../../../lib/menu/src/component/share.ts","../../../../lib/alert/src/component/alert.tsx","../../../../lib/messager/src/component/messager-item.tsx","../../../../lib/messager/src/vanilla/messager-item.ts","../../../../lib/messager/src/vanilla/messager.ts","../../../../lib/progress/src/components/progress-bar.tsx","../../../../lib/progress/src/components/share.ts","../../../../lib/progress/src/vanilla/index.ts","../../../../lib/progress-circle/src/component/progress-circle.tsx","../../../../lib/progress-circle/src/vanilla/index.ts","../../../../lib/progress-circle/src/component/share.ts","../../../../lib/avatar/src/vanilla/index.ts","../../../../lib/avatar/src/component/share.ts","../../../../lib/btn-group/src/vanilla/index.ts","../../../../lib/btn-group/src/component/share.ts","../../../../lib/pick/src/components/pick-trigger.tsx","../../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../../lib/pick/src/components/pick-pop.tsx","../../../../lib/pick/src/components/pick.tsx","../../../../lib/color-picker/src/components/color-picker.tsx","../../../../lib/color-picker/src/vanilla/color-picker.ts","../../../../lib/helpers/src/date-helper.ts","../../../../lib/datetime-picker/src/component/time-picker-menu.tsx","../../../../lib/datetime-picker/src/component/time-picker.tsx","../../../../lib/datetime-picker/src/helpers/date-helper.ts","../../../../lib/datetime-picker/src/i18n/index.ts","../../../../lib/datetime-picker/src/component/mini-calendar.tsx","../../../../lib/datetime-picker/src/component/value-selector.tsx","../../../../lib/datetime-picker/src/component/date-picker-menu.tsx","../../../../lib/datetime-picker/src/component/date-picker.tsx","../../../../lib/datetime-picker/src/component/datetime-picker.tsx","../../../../lib/datetime-picker/src/vanilla/time-picker.ts","../../../../lib/datetime-picker/src/vanilla/date-picker.ts","../../../../lib/datetime-picker/src/vanilla/datetime-picker.ts","../../../../lib/modal/src/vanilla/modal-base.ts","../../../../lib/modal/src/component/modal-dialog.tsx","../../../../lib/modal/src/component/modal-iframe-content.tsx","../../../../lib/modal/src/vanilla/modal.tsx","../../../../lib/modal/src/vanilla/modal-trigger.ts","../../../../lib/file-selector/src/i18n/index.ts","../../../../lib/file-selector/src/components/file-selector.tsx","../../../../lib/file-selector/src/components/image-selector.tsx","../../../../lib/file-selector/src/vanilla/file-selector.ts","../../../../lib/file-selector/src/vanilla/image-selector.ts","../../../../lib/file-selector/src/components/share.ts","../../../../lib/nav/src/component/nav.tsx","../../../../lib/nav/src/vanilla/nav.ts","../../../../lib/nav/src/component/share.ts","../../../../lib/pager/src/helpers/update-pager-info.ts","../../../../lib/pager/src/component/pager-link.tsx","../../../../lib/pager/src/component/pager-info.tsx","../../../../lib/pager/src/component/pager-nav.tsx","../../../../lib/popover/src/component/popover-panel.tsx","../../../../lib/popover/src/vanilla/popover-panel.ts","../../../../lib/popover/src/vanilla/popover.ts","../../../../lib/dropdown/src/vanilla/dropdown.ts","../../../../lib/dropdown/src/component/dropdown-button.tsx","../../../../lib/dropdown/src/component/dropdown-menu.tsx","../../../../lib/pager/src/component/pager-size-menu.tsx","../../../../lib/pager/src/component/pager-goto.tsx","../../../../lib/pager/src/component/pager.tsx","../../../../lib/pager/src/vanilla/index.ts","../../../../lib/pager/src/component/share.ts","../../../../lib/pick/src/vanilla/pick.ts","../../../../lib/picker/src/component/picker-search.tsx","../../../../lib/picker/src/component/picker-multi-select.tsx","../../../../lib/picker/src/component/picker-single-select.tsx","../../../../lib/tree/src/components/tree.tsx","../../../../lib/tree/src/components/search-tree.tsx","../../../../lib/picker/src/component/picker-menu.tsx","../../../../lib/picker/src/component/picker.tsx","../../../../lib/picker/src/vanilla/picker.ts","../../../../lib/picker/src/i18n/index.ts","../../../../lib/search-box/src/vanilla/search-box.ts","../../../../lib/search-box/src/components/share.ts","../../../../lib/toolbar/src/vanilla/index.ts","../../../../lib/toolbar/src/component/share.ts","../../../../lib/tooltip/src/vanilla/tooltip.ts","../../../../lib/scrollbar/src/component/scrollbar.tsx","../../../../lib/dtable/src/helpers/shared-plugins.ts","../../../../lib/dtable/src/helpers/default-options.ts","../../../../lib/dtable/src/helpers/number.ts","../../../../lib/dtable/src/helpers/layout.ts","../../../../lib/dtable/src/components/cell.tsx","../../../../lib/dtable/src/components/cells.tsx","../../../../lib/dtable/src/components/block.tsx","../../../../lib/dtable/src/components/dtable.tsx","../../../../lib/dtable/src/plugins/rich/index.tsx","../../../../lib/dtable/src/plugins/sort/index.tsx","../../../../lib/dtable/src/plugins/custom/index.tsx","../../../../lib/dtable/src/plugins/checkable/index.tsx","../../../../lib/dtable/src/plugins/store/index.ts","../../../../lib/dtable/src/plugins/nested/index.tsx","../../../../lib/dtable/src/plugins/avatar/index.tsx","../../../../lib/dtable/src/plugins/sort-type/index.tsx","../../../../lib/dtable/src/plugins/group/index.tsx","../../../../lib/dtable/src/plugins/header-group/index.tsx","../../../../lib/dtable/src/plugins/cellspan/index.ts","../../../../lib/dtable/src/plugins/mousemove/index.ts","../../../../lib/dtable/src/plugins/autoscroll/index.ts","../../../../lib/dtable/src/plugins/sortable/index.tsx","../../../../lib/dtable/src/vanilla/index.ts","../../../../lib/tabs/src/vanilla/tabs.ts"],"sourcesContent":["\n// eslint-disable-next-line @typescript-eslint/naming-convention\ndeclare const __APP_VERSION__: string;\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\ndeclare const __BUILD_TIME__: number;\n\nexport const VERSION = __APP_VERSION__;\nexport const BUILD = __BUILD_TIME__;\n","const doc = document;\nconst win = window;\nconst docEle = doc.documentElement;\nconst createElement = doc.createElement.bind(doc);\nconst div = createElement('div');\nconst table = createElement('table');\nconst tbody = createElement('tbody');\nconst tr = createElement('tr');\nconst { isArray, prototype: ArrayPrototype } = Array;\nconst { concat, filter, indexOf, map, push, slice, some, splice } = ArrayPrototype;\nconst idRe = /^#(?:[\\w-]|\\\\.|[^\\x00-\\xa0])*$/;\nconst classRe = /^\\.(?:[\\w-]|\\\\.|[^\\x00-\\xa0])*$/;\nconst htmlRe = /<.+>/;\nconst tagRe = /^\\w+$/;\n// @require ./variables.ts\nfunction find(selector, context) {\n const isFragment = isDocumentFragment(context);\n return !selector || (!isFragment && !isDocument(context) && !isElement(context))\n ? []\n : !isFragment && classRe.test(selector)\n ? context.getElementsByClassName(selector.slice(1).replace(/\\\\/g, ''))\n : !isFragment && tagRe.test(selector)\n ? context.getElementsByTagName(selector)\n : context.querySelectorAll(selector);\n}\n// @require ./find.ts\n// @require ./variables.ts\nclass Cash {\n constructor(selector, context) {\n if (!selector)\n return;\n if (isCash(selector))\n return selector;\n let eles = selector;\n if (isString(selector)) {\n const ctx = context || doc;\n eles = idRe.test(selector) && isDocument(ctx)\n ? ctx.getElementById(selector.slice(1).replace(/\\\\/g, ''))\n : htmlRe.test(selector)\n ? parseHTML(selector)\n : isCash(ctx)\n ? ctx.find(selector)\n : isString(ctx)\n ? cash(ctx).find(selector)\n : find(selector, ctx);\n if (!eles)\n return;\n }\n else if (isFunction(selector)) {\n return this.ready(selector); //FIXME: `fn.ready` is not included in `core`, but it's actually a core functionality\n }\n if (eles.nodeType || eles === win)\n eles = [eles];\n this.length = eles.length;\n for (let i = 0, l = this.length; i < l; i++) {\n this[i] = eles[i];\n }\n }\n init(selector, context) {\n return new Cash(selector, context);\n }\n}\nconst fn = Cash.prototype;\nconst cash = fn.init;\ncash.fn = cash.prototype = fn; // Ensuring that `cash () instanceof cash`\nfn.length = 0;\nfn.splice = splice; // Ensuring a cash collection gets printed as array-like in Chrome's devtools\nif (typeof Symbol === 'function') { // Ensuring a cash collection is iterable\n fn[Symbol['iterator']] = ArrayPrototype[Symbol['iterator']];\n}\nfunction isCash(value) {\n return value instanceof Cash;\n}\nfunction isWindow(value) {\n return !!value && value === value.window;\n}\nfunction isDocument(value) {\n return !!value && value.nodeType === 9;\n}\nfunction isDocumentFragment(value) {\n return !!value && value.nodeType === 11;\n}\nfunction isElement(value) {\n return !!value && value.nodeType === 1;\n}\nfunction isText(value) {\n return !!value && value.nodeType === 3;\n}\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nfunction isString(value) {\n return typeof value === 'string';\n}\nfunction isUndefined(value) {\n return value === undefined;\n}\nfunction isNull(value) {\n return value === null;\n}\nfunction isNumeric(value) {\n return !isNaN(parseFloat(value)) && isFinite(value);\n}\nfunction isPlainObject(value) {\n if (typeof value !== 'object' || value === null)\n return false;\n const proto = Object.getPrototypeOf(value);\n return proto === null || proto === Object.prototype;\n}\ncash.isWindow = isWindow;\ncash.isFunction = isFunction;\ncash.isArray = isArray;\ncash.isNumeric = isNumeric;\ncash.isPlainObject = isPlainObject;\nfunction each(arr, callback, _reverse) {\n if (_reverse) {\n let i = arr.length;\n while (i--) {\n if (callback.call(arr[i], i, arr[i]) === false)\n return arr;\n }\n }\n else if (isPlainObject(arr)) {\n const keys = Object.keys(arr);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n if (callback.call(arr[key], key, arr[key]) === false)\n return arr;\n }\n }\n else {\n for (let i = 0, l = arr.length; i < l; i++) {\n if (callback.call(arr[i], i, arr[i]) === false)\n return arr;\n }\n }\n return arr;\n}\ncash.each = each;\nfn.each = function (callback) {\n return each(this, callback);\n};\nfn.empty = function () {\n return this.each((i, ele) => {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n });\n};\nfunction extend(...sources) {\n const deep = isBoolean(sources[0]) ? sources.shift() : false;\n const target = sources.shift();\n const length = sources.length;\n if (!target)\n return {};\n if (!length)\n return extend(deep, cash, target);\n for (let i = 0; i < length; i++) {\n const source = sources[i];\n for (const key in source) {\n if (deep && (isArray(source[key]) || isPlainObject(source[key]))) {\n if (!target[key] || target[key].constructor !== source[key].constructor)\n target[key] = new source[key].constructor();\n extend(deep, target[key], source[key]);\n }\n else {\n target[key] = source[key];\n }\n }\n }\n return target;\n}\ncash.extend = extend;\nfn.extend = function (plugins) {\n return extend(fn, plugins);\n};\n// @require ./type_checking.ts\nconst splitValuesRe = /\\S+/g;\nfunction getSplitValues(str) {\n return isString(str) ? str.match(splitValuesRe) || [] : [];\n}\nfn.toggleClass = function (cls, force) {\n const classes = getSplitValues(cls);\n const isForce = !isUndefined(force);\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n each(classes, (i, c) => {\n if (isForce) {\n force ? ele.classList.add(c) : ele.classList.remove(c);\n }\n else {\n ele.classList.toggle(c);\n }\n });\n });\n};\nfn.addClass = function (cls) {\n return this.toggleClass(cls, true);\n};\nfn.removeAttr = function (attr) {\n const attrs = getSplitValues(attr);\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n each(attrs, (i, a) => {\n ele.removeAttribute(a);\n });\n });\n};\nfunction attr(attr, value) {\n if (!attr)\n return;\n if (isString(attr)) {\n if (arguments.length < 2) {\n if (!this[0] || !isElement(this[0]))\n return;\n const value = this[0].getAttribute(attr);\n return isNull(value) ? undefined : value;\n }\n if (isUndefined(value))\n return this;\n if (isNull(value))\n return this.removeAttr(attr);\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n ele.setAttribute(attr, value);\n });\n }\n for (const key in attr) {\n this.attr(key, attr[key]);\n }\n return this;\n}\nfn.attr = attr;\nfn.removeClass = function (cls) {\n if (arguments.length)\n return this.toggleClass(cls, false);\n return this.attr('class', '');\n};\nfn.hasClass = function (cls) {\n return !!cls && some.call(this, (ele) => isElement(ele) && ele.classList.contains(cls));\n};\nfn.get = function (index) {\n if (isUndefined(index))\n return slice.call(this);\n index = Number(index);\n return this[index < 0 ? index + this.length : index];\n};\nfn.eq = function (index) {\n return cash(this.get(index));\n};\nfn.first = function () {\n return this.eq(0);\n};\nfn.last = function () {\n return this.eq(-1);\n};\nfunction text(text) {\n if (isUndefined(text)) {\n return this.get().map(ele => isElement(ele) || isText(ele) ? ele.textContent : '').join('');\n }\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n ele.textContent = text;\n });\n}\nfn.text = text;\n// @require core/type_checking.ts\n// @require core/variables.ts\nfunction computeStyle(ele, prop, isVariable) {\n if (!isElement(ele))\n return;\n const style = win.getComputedStyle(ele, null);\n return isVariable ? style.getPropertyValue(prop) || undefined : style[prop] || ele.style[prop];\n}\n// @require ./compute_style.ts\nfunction computeStyleInt(ele, prop) {\n return parseInt(computeStyle(ele, prop), 10) || 0;\n}\n// @require css/helpers/compute_style_int.ts\nfunction getExtraSpace(ele, xAxis) {\n return computeStyleInt(ele, `border${xAxis ? 'Left' : 'Top'}Width`) + computeStyleInt(ele, `padding${xAxis ? 'Left' : 'Top'}`) + computeStyleInt(ele, `padding${xAxis ? 'Right' : 'Bottom'}`) + computeStyleInt(ele, `border${xAxis ? 'Right' : 'Bottom'}Width`);\n}\n// @require css/helpers/compute_style.ts\nconst defaultDisplay = {};\nfunction getDefaultDisplay(tagName) {\n if (defaultDisplay[tagName])\n return defaultDisplay[tagName];\n const ele = createElement(tagName);\n doc.body.insertBefore(ele, null);\n const display = computeStyle(ele, 'display');\n doc.body.removeChild(ele);\n return defaultDisplay[tagName] = display !== 'none' ? display : 'block';\n}\n// @require css/helpers/compute_style.ts\nfunction isHidden(ele) {\n return computeStyle(ele, 'display') === 'none';\n}\n// @require ./cash.ts\nfunction matches(ele, selector) {\n const matches = ele && (ele['matches'] || ele['webkitMatchesSelector'] || ele['msMatchesSelector']);\n return !!matches && !!selector && matches.call(ele, selector);\n}\n// @require ./matches.ts\n// @require ./type_checking.ts\nfunction getCompareFunction(comparator) {\n return isString(comparator)\n ? (i, ele) => matches(ele, comparator)\n : isFunction(comparator)\n ? comparator\n : isCash(comparator)\n ? (i, ele) => comparator.is(ele)\n : !comparator\n ? () => false\n : (i, ele) => ele === comparator;\n}\nfn.filter = function (comparator) {\n const compare = getCompareFunction(comparator);\n return cash(filter.call(this, (ele, i) => compare.call(ele, i, ele)));\n};\n// @require collection/filter.ts\nfunction filtered(collection, comparator) {\n return !comparator ? collection : collection.filter(comparator);\n}\nfn.detach = function (comparator) {\n filtered(this, comparator).each((i, ele) => {\n if (ele.parentNode) {\n ele.parentNode.removeChild(ele);\n }\n });\n return this;\n};\nconst fragmentRe = /^\\s*<(\\w+)[^>]*>/;\nconst singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\nconst containers = {\n '*': div,\n tr: tbody,\n td: tr,\n th: tr,\n thead: table,\n tbody: table,\n tfoot: table\n};\n//TODO: Create elements inside a document fragment, in order to prevent inline event handlers from firing\n//TODO: Ensure the created elements have the fragment as their parent instead of null, this also ensures we can deal with detatched nodes more reliably\nfunction parseHTML(html) {\n if (!isString(html))\n return [];\n if (singleTagRe.test(html))\n return [createElement(RegExp.$1)];\n const fragment = fragmentRe.test(html) && RegExp.$1;\n const container = containers[fragment] || containers['*'];\n container.innerHTML = html;\n return cash(container.childNodes).detach().get();\n}\ncash.parseHTML = parseHTML;\nfn.has = function (selector) {\n const comparator = isString(selector)\n ? (i, ele) => find(selector, ele).length\n : (i, ele) => ele.contains(selector);\n return this.filter(comparator);\n};\nfn.not = function (comparator) {\n const compare = getCompareFunction(comparator);\n return this.filter((i, ele) => (!isString(comparator) || isElement(ele)) && !compare.call(ele, i, ele));\n};\nfunction pluck(arr, prop, deep, until) {\n const plucked = [];\n const isCallback = isFunction(prop);\n const compare = until && getCompareFunction(until);\n for (let i = 0, l = arr.length; i < l; i++) {\n if (isCallback) {\n const val = prop(arr[i]);\n if (val.length)\n push.apply(plucked, val);\n }\n else {\n let val = arr[i][prop];\n while (val != null) {\n if (until && compare(-1, val))\n break;\n plucked.push(val);\n val = deep ? val[prop] : null;\n }\n }\n }\n return plucked;\n}\n// @require core/pluck.ts\n// @require core/variables.ts\nfunction getValue(ele) {\n if (ele.multiple && ele.options)\n return pluck(filter.call(ele.options, option => option.selected && !option.disabled && !option.parentNode.disabled), 'value');\n return ele.value || '';\n}\nfunction val(value) {\n if (!arguments.length)\n return this[0] && getValue(this[0]);\n return this.each((i, ele) => {\n const isSelect = ele.multiple && ele.options;\n if (isSelect || checkableRe.test(ele.type)) {\n const eleValue = isArray(value) ? map.call(value, String) : (isNull(value) ? [] : [String(value)]);\n if (isSelect) {\n each(ele.options, (i, option) => {\n option.selected = eleValue.indexOf(option.value) >= 0;\n }, true);\n }\n else {\n ele.checked = eleValue.indexOf(ele.value) >= 0;\n }\n }\n else {\n ele.value = isUndefined(value) || isNull(value) ? '' : value;\n }\n });\n}\nfn.val = val;\nfn.is = function (comparator) {\n const compare = getCompareFunction(comparator);\n return some.call(this, (ele, i) => compare.call(ele, i, ele));\n};\ncash.guid = 1;\nfunction unique(arr) {\n return arr.length > 1 ? filter.call(arr, (item, index, self) => indexOf.call(self, item) === index) : arr;\n}\ncash.unique = unique;\nfn.add = function (selector, context) {\n return cash(unique(this.get().concat(cash(selector, context).get())));\n};\nfn.children = function (comparator) {\n return filtered(cash(unique(pluck(this, ele => ele.children))), comparator);\n};\nfn.parent = function (comparator) {\n return filtered(cash(unique(pluck(this, 'parentNode'))), comparator);\n};\nfn.index = function (selector) {\n const child = selector ? cash(selector)[0] : this[0];\n const collection = selector ? this : cash(child).parent().children();\n return indexOf.call(collection, child);\n};\nfn.closest = function (comparator) {\n const filtered = this.filter(comparator);\n if (filtered.length)\n return filtered;\n const $parent = this.parent();\n if (!$parent.length)\n return filtered;\n return $parent.closest(comparator);\n};\nfn.siblings = function (comparator) {\n return filtered(cash(unique(pluck(this, ele => cash(ele).parent().children().not(ele)))), comparator);\n};\nfn.find = function (selector) {\n return cash(unique(pluck(this, ele => find(selector, ele))));\n};\n// @require core/variables.ts\n// @require collection/filter.ts\n// @require traversal/find.ts\nconst HTMLCDATARe = /^\\s*\\s*$/g;\nconst scriptTypeRe = /^$|^module$|\\/(java|ecma)script/i;\nconst scriptAttributes = ['type', 'src', 'nonce', 'noModule'];\nfunction evalScripts(node, doc) {\n const collection = cash(node);\n collection.filter('script').add(collection.find('script')).each((i, ele) => {\n if (scriptTypeRe.test(ele.type) && docEle.contains(ele)) { // The script type is supported // The element is attached to the DOM // Using `documentElement` for broader browser support\n const script = createElement('script');\n script.text = ele.textContent.replace(HTMLCDATARe, '');\n each(scriptAttributes, (i, attr) => {\n if (ele[attr])\n script[attr] = ele[attr];\n });\n doc.head.insertBefore(script, null);\n doc.head.removeChild(script);\n }\n });\n}\n// @require ./eval_scripts.ts\nfunction insertElement(anchor, target, left, inside, evaluate) {\n if (inside) { // prepend/append\n anchor.insertBefore(target, left ? anchor.firstChild : null);\n }\n else { // before/after\n if (anchor.nodeName === 'HTML') {\n anchor.parentNode.replaceChild(target, anchor);\n }\n else {\n anchor.parentNode.insertBefore(target, left ? anchor : anchor.nextSibling);\n }\n }\n if (evaluate) {\n evalScripts(target, anchor.ownerDocument);\n }\n}\n// @require ./insert_element.ts\nfunction insertSelectors(selectors, anchors, inverse, left, inside, reverseLoop1, reverseLoop2, reverseLoop3) {\n each(selectors, (si, selector) => {\n each(cash(selector), (ti, target) => {\n each(cash(anchors), (ai, anchor) => {\n const anchorFinal = inverse ? target : anchor;\n const targetFinal = inverse ? anchor : target;\n const indexFinal = inverse ? ti : ai;\n insertElement(anchorFinal, !indexFinal ? targetFinal : targetFinal.cloneNode(true), left, inside, !indexFinal);\n }, reverseLoop3);\n }, reverseLoop2);\n }, reverseLoop1);\n return anchors;\n}\nfn.after = function () {\n return insertSelectors(arguments, this, false, false, false, true, true);\n};\nfn.append = function () {\n return insertSelectors(arguments, this, false, false, true);\n};\nfunction html(html) {\n if (!arguments.length)\n return this[0] && this[0].innerHTML;\n if (isUndefined(html))\n return this;\n const hasScript = /]/.test(html);\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n if (hasScript) {\n cash(ele).empty().append(html);\n }\n else {\n ele.innerHTML = html;\n }\n });\n}\nfn.html = html;\nfn.appendTo = function (selector) {\n return insertSelectors(arguments, this, true, false, true);\n};\nfn.wrapInner = function (selector) {\n return this.each((i, ele) => {\n const $ele = cash(ele);\n const contents = $ele.contents();\n contents.length ? contents.wrapAll(selector) : $ele.append(selector);\n });\n};\nfn.before = function () {\n return insertSelectors(arguments, this, false, true);\n};\nfn.wrapAll = function (selector) {\n let structure = cash(selector);\n let wrapper = structure[0];\n while (wrapper.children.length)\n wrapper = wrapper.firstElementChild;\n this.first().before(structure);\n return this.appendTo(wrapper);\n};\nfn.wrap = function (selector) {\n return this.each((i, ele) => {\n const wrapper = cash(selector)[0];\n cash(ele).wrapAll(!i ? wrapper : wrapper.cloneNode(true));\n });\n};\nfn.insertAfter = function (selector) {\n return insertSelectors(arguments, this, true, false, false, false, false, true);\n};\nfn.insertBefore = function (selector) {\n return insertSelectors(arguments, this, true, true);\n};\nfn.prepend = function () {\n return insertSelectors(arguments, this, false, true, true, true, true);\n};\nfn.prependTo = function (selector) {\n return insertSelectors(arguments, this, true, true, true, false, false, true);\n};\nfn.contents = function () {\n return cash(unique(pluck(this, ele => ele.tagName === 'IFRAME' ? [ele.contentDocument] : (ele.tagName === 'TEMPLATE' ? ele.content.childNodes : ele.childNodes))));\n};\nfn.next = function (comparator, _all, _until) {\n return filtered(cash(unique(pluck(this, 'nextElementSibling', _all, _until))), comparator);\n};\nfn.nextAll = function (comparator) {\n return this.next(comparator, true);\n};\nfn.nextUntil = function (until, comparator) {\n return this.next(comparator, true, until);\n};\nfn.parents = function (comparator, _until) {\n return filtered(cash(unique(pluck(this, 'parentElement', true, _until))), comparator);\n};\nfn.parentsUntil = function (until, comparator) {\n return this.parents(comparator, until);\n};\nfn.prev = function (comparator, _all, _until) {\n return filtered(cash(unique(pluck(this, 'previousElementSibling', _all, _until))), comparator);\n};\nfn.prevAll = function (comparator) {\n return this.prev(comparator, true);\n};\nfn.prevUntil = function (until, comparator) {\n return this.prev(comparator, true, until);\n};\nfn.map = function (callback) {\n return cash(concat.apply([], map.call(this, (ele, i) => callback.call(ele, i, ele))));\n};\nfn.clone = function () {\n return this.map((i, ele) => ele.cloneNode(true));\n};\nfn.offsetParent = function () {\n return this.map((i, ele) => {\n let offsetParent = ele.offsetParent;\n while (offsetParent && computeStyle(offsetParent, 'position') === 'static') {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || docEle;\n });\n};\nfn.slice = function (start, end) {\n return cash(slice.call(this, start, end));\n};\n// @require ./cash.ts\nconst dashAlphaRe = /-([a-z])/g;\nfunction camelCase(str) {\n return str.replace(dashAlphaRe, (match, letter) => letter.toUpperCase());\n}\nfn.ready = function (callback) {\n const cb = () => setTimeout(callback, 0, cash);\n if (doc.readyState !== 'loading') {\n cb();\n }\n else {\n doc.addEventListener('DOMContentLoaded', cb);\n }\n return this;\n};\nfn.unwrap = function () {\n this.parent().each((i, ele) => {\n if (ele.tagName === 'BODY')\n return;\n const $ele = cash(ele);\n $ele.replaceWith($ele.children());\n });\n return this;\n};\nfn.offset = function () {\n const ele = this[0];\n if (!ele)\n return;\n const rect = ele.getBoundingClientRect();\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset\n };\n};\nfn.position = function () {\n const ele = this[0];\n if (!ele)\n return;\n const isFixed = (computeStyle(ele, 'position') === 'fixed');\n const offset = isFixed ? ele.getBoundingClientRect() : this.offset();\n if (!isFixed) {\n const doc = ele.ownerDocument;\n let offsetParent = ele.offsetParent || doc.documentElement;\n while ((offsetParent === doc.body || offsetParent === doc.documentElement) && computeStyle(offsetParent, 'position') === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent !== ele && isElement(offsetParent)) {\n const parentOffset = cash(offsetParent).offset();\n offset.top -= parentOffset.top + computeStyleInt(offsetParent, 'borderTopWidth');\n offset.left -= parentOffset.left + computeStyleInt(offsetParent, 'borderLeftWidth');\n }\n }\n return {\n top: offset.top - computeStyleInt(ele, 'marginTop'),\n left: offset.left - computeStyleInt(ele, 'marginLeft')\n };\n};\nconst propMap = {\n /* GENERAL */\n class: 'className',\n contenteditable: 'contentEditable',\n /* LABEL */\n for: 'htmlFor',\n /* INPUT */\n readonly: 'readOnly',\n maxlength: 'maxLength',\n tabindex: 'tabIndex',\n /* TABLE */\n colspan: 'colSpan',\n rowspan: 'rowSpan',\n /* IMAGE */\n usemap: 'useMap'\n};\nfn.prop = function (prop, value) {\n if (!prop)\n return;\n if (isString(prop)) {\n prop = propMap[prop] || prop;\n if (arguments.length < 2)\n return this[0] && this[0][prop];\n return this.each((i, ele) => { ele[prop] = value; });\n }\n for (const key in prop) {\n this.prop(key, prop[key]);\n }\n return this;\n};\nfn.removeProp = function (prop) {\n return this.each((i, ele) => { delete ele[propMap[prop] || prop]; });\n};\nconst cssVariableRe = /^--/;\n// @require ./variables.ts\nfunction isCSSVariable(prop) {\n return cssVariableRe.test(prop);\n}\n// @require core/camel_case.ts\n// @require core/cash.ts\n// @require core/each.ts\n// @require core/variables.ts\n// @require ./is_css_variable.ts\nconst prefixedProps = {};\nconst { style } = div;\nconst vendorsPrefixes = ['webkit', 'moz', 'ms'];\nfunction getPrefixedProp(prop, isVariable = isCSSVariable(prop)) {\n if (isVariable)\n return prop;\n if (!prefixedProps[prop]) {\n const propCC = camelCase(prop);\n const propUC = `${propCC[0].toUpperCase()}${propCC.slice(1)}`;\n const props = (`${propCC} ${vendorsPrefixes.join(`${propUC} `)}${propUC}`).split(' ');\n each(props, (i, p) => {\n if (p in style) {\n prefixedProps[prop] = p;\n return false;\n }\n });\n }\n return prefixedProps[prop];\n}\n// @require core/type_checking.ts\n// @require ./is_css_variable.ts\nconst numericProps = {\n animationIterationCount: true,\n columnCount: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n gridArea: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnStart: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowStart: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n widows: true,\n zIndex: true\n};\nfunction getSuffixedValue(prop, value, isVariable = isCSSVariable(prop)) {\n return !isVariable && !numericProps[prop] && isNumeric(value) ? `${value}px` : value;\n}\nfunction css(prop, value) {\n if (isString(prop)) {\n const isVariable = isCSSVariable(prop);\n prop = getPrefixedProp(prop, isVariable);\n if (arguments.length < 2)\n return this[0] && computeStyle(this[0], prop, isVariable);\n if (!prop)\n return this;\n value = getSuffixedValue(prop, value, isVariable);\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n if (isVariable) {\n ele.style.setProperty(prop, value);\n }\n else {\n ele.style[prop] = value;\n }\n });\n }\n for (const key in prop) {\n this.css(key, prop[key]);\n }\n return this;\n}\n;\nfn.css = css;\nfunction attempt(fn, arg) {\n try {\n return fn(arg);\n }\n catch (_a) {\n return arg;\n }\n}\n// @require core/attempt.ts\n// @require core/camel_case.ts\nconst JSONStringRe = /^\\s+|\\s+$/;\nfunction getData(ele, key) {\n const value = ele.dataset[key] || ele.dataset[camelCase(key)];\n if (JSONStringRe.test(value))\n return value;\n return attempt(JSON.parse, value);\n}\n// @require core/attempt.ts\n// @require core/camel_case.ts\nfunction setData(ele, key, value) {\n value = attempt(JSON.stringify, value);\n ele.dataset[camelCase(key)] = value;\n}\nfunction data(name, value) {\n if (!name) {\n if (!this[0])\n return;\n const datas = {};\n for (const key in this[0].dataset) {\n datas[key] = getData(this[0], key);\n }\n return datas;\n }\n if (isString(name)) {\n if (arguments.length < 2)\n return this[0] && getData(this[0], name);\n if (isUndefined(value))\n return this;\n return this.each((i, ele) => { setData(ele, name, value); });\n }\n for (const key in name) {\n this.data(key, name[key]);\n }\n return this;\n}\nfn.data = data;\nfunction getDocumentDimension(doc, dimension) {\n const docEle = doc.documentElement;\n return Math.max(doc.body[`scroll${dimension}`], docEle[`scroll${dimension}`], doc.body[`offset${dimension}`], docEle[`offset${dimension}`], docEle[`client${dimension}`]);\n}\neach([true, false], (i, outer) => {\n each(['Width', 'Height'], (i, prop) => {\n const name = `${outer ? 'outer' : 'inner'}${prop}`;\n fn[name] = function (includeMargins) {\n if (!this[0])\n return;\n if (isWindow(this[0]))\n return outer ? this[0][`inner${prop}`] : this[0].document.documentElement[`client${prop}`];\n if (isDocument(this[0]))\n return getDocumentDimension(this[0], prop);\n return this[0][`${outer ? 'offset' : 'client'}${prop}`] + (includeMargins && outer ? computeStyleInt(this[0], `margin${i ? 'Top' : 'Left'}`) + computeStyleInt(this[0], `margin${i ? 'Bottom' : 'Right'}`) : 0);\n };\n });\n});\neach(['Width', 'Height'], (index, prop) => {\n const propLC = prop.toLowerCase();\n fn[propLC] = function (value) {\n if (!this[0])\n return isUndefined(value) ? undefined : this;\n if (!arguments.length) {\n if (isWindow(this[0]))\n return this[0].document.documentElement[`client${prop}`];\n if (isDocument(this[0]))\n return getDocumentDimension(this[0], prop);\n return this[0].getBoundingClientRect()[propLC] - getExtraSpace(this[0], !index);\n }\n const valueNumber = parseInt(value, 10);\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n const boxSizing = computeStyle(ele, 'boxSizing');\n ele.style[propLC] = getSuffixedValue(propLC, valueNumber + (boxSizing === 'border-box' ? getExtraSpace(ele, !index) : 0));\n });\n };\n});\nconst displayProperty = '___cd';\nfn.toggle = function (force) {\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n const hidden = isHidden(ele);\n const show = isUndefined(force) ? hidden : force;\n if (show) {\n ele.style.display = ele[displayProperty] || '';\n if (isHidden(ele)) {\n ele.style.display = getDefaultDisplay(ele.tagName);\n }\n }\n else if (!hidden) {\n ele[displayProperty] = computeStyle(ele, 'display');\n ele.style.display = 'none';\n }\n });\n};\nfn.hide = function () {\n return this.toggle(false);\n};\nfn.show = function () {\n return this.toggle(true);\n};\nconst eventsNamespace = '___ce';\nconst eventsNamespacesSeparator = '.';\nconst eventsFocus = { focus: 'focusin', blur: 'focusout' };\nconst eventsHover = { mouseenter: 'mouseover', mouseleave: 'mouseout' };\nconst eventsMouseRe = /^(mouse|pointer|contextmenu|drag|drop|click|dblclick)/i;\n// @require ./variables.ts\nfunction getEventNameBubbling(name) {\n return eventsHover[name] || eventsFocus[name] || name;\n}\n// @require ./variables.ts\nfunction parseEventName(eventName) {\n const parts = eventName.split(eventsNamespacesSeparator);\n return [parts[0], parts.slice(1).sort()]; // [name, namespace[]]\n}\nfn.trigger = function (event, data) {\n if (isString(event)) {\n const [nameOriginal, namespaces] = parseEventName(event);\n const name = getEventNameBubbling(nameOriginal);\n if (!name)\n return this;\n const type = eventsMouseRe.test(name) ? 'MouseEvents' : 'HTMLEvents';\n event = doc.createEvent(type);\n event.initEvent(name, true, true);\n event.namespace = namespaces.join(eventsNamespacesSeparator);\n event.___ot = nameOriginal;\n }\n event.___td = data;\n const isEventFocus = (event.___ot in eventsFocus);\n return this.each((i, ele) => {\n if (isEventFocus && isFunction(ele[event.___ot])) {\n ele[`___i${event.type}`] = true; // Ensuring the native event is ignored\n ele[event.___ot]();\n ele[`___i${event.type}`] = false; // Ensuring the custom event is not ignored\n }\n ele.dispatchEvent(event);\n });\n};\n// @require ./variables.ts\nfunction getEventsCache(ele) {\n return ele[eventsNamespace] = (ele[eventsNamespace] || {});\n}\n// @require core/guid.ts\n// @require events/helpers/get_events_cache.ts\nfunction addEvent(ele, name, namespaces, selector, callback) {\n const eventCache = getEventsCache(ele);\n eventCache[name] = (eventCache[name] || []);\n eventCache[name].push([namespaces, selector, callback]);\n ele.addEventListener(name, callback);\n}\nfunction hasNamespaces(ns1, ns2) {\n return !ns2 || !some.call(ns2, (ns) => ns1.indexOf(ns) < 0);\n}\n// @require ./get_events_cache.ts\n// @require ./has_namespaces.ts\n// @require ./parse_event_name.ts\nfunction removeEvent(ele, name, namespaces, selector, callback) {\n const cache = getEventsCache(ele);\n if (!name) {\n for (name in cache) {\n removeEvent(ele, name, namespaces, selector, callback);\n }\n }\n else if (cache[name]) {\n cache[name] = cache[name].filter(([ns, sel, cb]) => {\n if ((callback && cb.guid !== callback.guid) || !hasNamespaces(ns, namespaces) || (selector && selector !== sel))\n return true;\n ele.removeEventListener(name, cb);\n });\n }\n}\nfn.off = function (eventFullName, selector, callback) {\n if (isUndefined(eventFullName)) {\n this.each((i, ele) => {\n if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))\n return;\n removeEvent(ele);\n });\n }\n else if (!isString(eventFullName)) {\n for (const key in eventFullName) {\n this.off(key, eventFullName[key]);\n }\n }\n else {\n if (isFunction(selector)) {\n callback = selector;\n selector = '';\n }\n each(getSplitValues(eventFullName), (i, eventFullName) => {\n const [nameOriginal, namespaces] = parseEventName(eventFullName);\n const name = getEventNameBubbling(nameOriginal);\n this.each((i, ele) => {\n if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))\n return;\n removeEvent(ele, name, namespaces, selector, callback);\n });\n });\n }\n return this;\n};\nfn.remove = function (comparator) {\n filtered(this, comparator).detach().off();\n return this;\n};\nfn.replaceWith = function (selector) {\n return this.before(selector).remove();\n};\nfn.replaceAll = function (selector) {\n cash(selector).replaceWith(this);\n return this;\n};\nfunction on(eventFullName, selector, data, callback, _one) {\n if (!isString(eventFullName)) {\n for (const key in eventFullName) {\n this.on(key, selector, data, eventFullName[key], _one);\n }\n return this;\n }\n if (!isString(selector)) {\n if (isUndefined(selector) || isNull(selector)) {\n selector = '';\n }\n else if (isUndefined(data)) {\n data = selector;\n selector = '';\n }\n else {\n callback = data;\n data = selector;\n selector = '';\n }\n }\n if (!isFunction(callback)) {\n callback = data;\n data = undefined;\n }\n if (!callback)\n return this;\n each(getSplitValues(eventFullName), (i, eventFullName) => {\n const [nameOriginal, namespaces] = parseEventName(eventFullName);\n const name = getEventNameBubbling(nameOriginal);\n const isEventHover = (nameOriginal in eventsHover);\n const isEventFocus = (nameOriginal in eventsFocus);\n if (!name)\n return;\n this.each((i, ele) => {\n if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))\n return;\n const finalCallback = function (event) {\n if (event.target[`___i${event.type}`])\n return event.stopImmediatePropagation(); // Ignoring native event in favor of the upcoming custom one\n if (event.namespace && !hasNamespaces(namespaces, event.namespace.split(eventsNamespacesSeparator)))\n return;\n if (!selector && ((isEventFocus && (event.target !== ele || event.___ot === name)) || (isEventHover && event.relatedTarget && ele.contains(event.relatedTarget))))\n return;\n let thisArg = ele;\n if (selector) {\n let target = event.target;\n while (!matches(target, selector)) {\n if (target === ele)\n return;\n target = target.parentNode;\n if (!target)\n return;\n }\n thisArg = target;\n }\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n get() {\n return thisArg;\n }\n });\n Object.defineProperty(event, 'delegateTarget', {\n configurable: true,\n get() {\n return ele;\n }\n });\n Object.defineProperty(event, 'data', {\n configurable: true,\n get() {\n return data;\n }\n });\n const returnValue = callback.call(thisArg, event, event.___td);\n if (_one) {\n removeEvent(ele, name, namespaces, selector, finalCallback);\n }\n if (returnValue === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n finalCallback.guid = callback.guid = (callback.guid || cash.guid++);\n addEvent(ele, name, namespaces, selector, finalCallback);\n });\n });\n return this;\n}\nfn.on = on;\nfunction one(eventFullName, selector, data, callback) {\n return this.on(eventFullName, selector, data, callback, true);\n}\n;\nfn.one = one;\nconst queryEncodeCRLFRe = /\\r?\\n/g;\nfunction queryEncode(prop, value) {\n return `&${encodeURIComponent(prop)}=${encodeURIComponent(value.replace(queryEncodeCRLFRe, '\\r\\n'))}`;\n}\nconst skippableRe = /file|reset|submit|button|image/i;\nconst checkableRe = /radio|checkbox/i;\nfn.serialize = function () {\n let query = '';\n this.each((i, ele) => {\n each(ele.elements || [ele], (i, ele) => {\n if (ele.disabled || !ele.name || ele.tagName === 'FIELDSET' || skippableRe.test(ele.type) || (checkableRe.test(ele.type) && !ele.checked))\n return;\n const value = getValue(ele);\n if (!isUndefined(value)) {\n const values = isArray(value) ? value : [value];\n each(values, (i, value) => {\n query += queryEncode(ele.name, value);\n });\n }\n });\n });\n return query.slice(1);\n};\n// @require core/types.ts\n// @require core/cash.ts\n// @require core/type_checking.ts\n// @require core/variables.ts\n// @require core/each.ts\n// @require core/extend.ts\n// @require core/find.ts\n// @require core/get_compare_function.ts\n// @require core/get_split_values.ts\n// @require core/guid.ts\n// @require core/parse_html.ts\n// @require core/unique.ts\n// @require attributes/add_class.ts\n// @require attributes/attr.ts\n// @require attributes/has_class.ts\n// @require attributes/prop.ts\n// @require attributes/remove_attr.ts\n// @require attributes/remove_class.ts\n// @require attributes/remove_prop.ts\n// @require attributes/toggle_class.ts\n// @require collection/add.ts\n// @require collection/each.ts\n// @require collection/eq.ts\n// @require collection/filter.ts\n// @require collection/first.ts\n// @require collection/get.ts\n// @require collection/index.ts\n// @require collection/last.ts\n// @require collection/map.ts\n// @require collection/slice.ts\n// @require css/css.ts\n// @require data/data.ts\n// @require dimensions/inner_outer.ts\n// @require dimensions/normal.ts\n// @require effects/hide.ts\n// @require effects/show.ts\n// @require effects/toggle.ts\n// @require events/off.ts\n// @require events/on.ts\n// @require events/one.ts\n// @require events/ready.ts\n// @require events/trigger.ts\n// @require forms/serialize.ts\n// @require forms/val.ts\n// @require manipulation/after.ts\n// @require manipulation/append.ts\n// @require manipulation/append_to.ts\n// @require manipulation/before.ts\n// @require manipulation/clone.ts\n// @require manipulation/detach.ts\n// @require manipulation/empty.ts\n// @require manipulation/html.ts\n// @require manipulation/insert_after.ts\n// @require manipulation/insert_before.ts\n// @require manipulation/prepend.ts\n// @require manipulation/prepend_to.ts\n// @require manipulation/remove.ts\n// @require manipulation/replace_all.ts\n// @require manipulation/replace_with.ts\n// @require manipulation/text.ts\n// @require manipulation/unwrap.ts\n// @require manipulation/wrap.ts\n// @require manipulation/wrap_all.ts\n// @require manipulation/wrap_inner.ts\n// @require offset/offset.ts\n// @require offset/offset_parent.ts\n// @require offset/position.ts\n// @require traversal/children.ts\n// @require traversal/closest.ts\n// @require traversal/contents.ts\n// @require traversal/find.ts\n// @require traversal/has.ts\n// @require traversal/is.ts\n// @require traversal/next.ts\n// @require traversal/next_all.ts\n// @require traversal/next_until.ts\n// @require traversal/not.ts\n// @require traversal/parent.ts\n// @require traversal/parents.ts\n// @require traversal/parents_until.ts\n// @require traversal/prev.ts\n// @require traversal/prev_all.ts\n// @require traversal/prev_until.ts\n// @require traversal/siblings.ts\n// @no-require extras/get_script.ts\n// @no-require extras/shorthands.ts\n// @require methods.ts\nexport default cash;\nexport { Cash };\n","import $ from 'cash-dom';\nexport type * from 'cash-dom';\n\ndeclare global {\n interface Window {\n $: typeof $\n }\n}\n\nwindow.$ = $;\n\nexport {$, $ as cash};\n","/**\n * Get all values in path from an object\n * @param object The object to access\n * @param pathName Access path\n * @returns All values in path\n * @example\n * const object = {\n * a: [{b: {c: 1}, d: 2}]\n * };\n *\n * deepGetPath(object, 'a[0].b.c'); // Output [[{b: {c: 1}, d: 2}], {b: {c: 1}, {c: 1}, 1]\n */\nexport function deepGetPath(object: object, pathName: string | string[]): (object | undefined)[] {\n if (object === null || object === undefined) {\n return [object, undefined];\n }\n\n if (typeof pathName === 'string') {\n pathName = pathName.split('.');\n }\n\n const fullPath = pathName.join('.');\n let context = object;\n const way = [context];\n while (typeof context === 'object' && context !== null && pathName.length) {\n let name = pathName.shift()!;\n let subName: string | undefined;\n const bracketIndex = name.indexOf('[');\n if (bracketIndex > 0 && bracketIndex < (name.length - 1) && name.endsWith(']')) {\n subName = name.substring(bracketIndex + 1, name.length - 1);\n name = name.substring(0, bracketIndex);\n }\n\n context = (context as Record)[name];\n way.push(context);\n if (subName !== undefined) {\n if (typeof context === 'object' && context !== null) {\n if (context instanceof Map) {\n context = context.get(subName);\n } else {\n context = (context as Record)[subName];\n }\n way.push(context);\n } else {\n throw new Error(`Cannot access property \"${name}[${subName}]\", the full path is \"${fullPath}\".`);\n }\n }\n }\n\n if (pathName.length) {\n throw new Error(`Cannot access property with rest path \"${pathName.join('.')}\", the full path is \"${fullPath}\".`);\n }\n\n return way;\n}\n\n/**\n * Get object inner value with dot-strings\n * @param object The object to access\n * @param pathName Access path\n * @param defaultValue Default value\n * @returns Final value\n * @example\n * const object = {\n * a: [{b: {c: 1}, d: 2}]\n * };\n *\n * deepGetPath(object, 'a[0].b.c'); // Output 1\n * deepGetPath(object, 'a[0].d'); // Output 2\n * deepGetPath(object, 'a'); // Output [{b: {c: 1}, d: 2}]\n */\nexport function deepGet(object: object, pathName: string | string[], defaultValue?: T): T | undefined {\n try {\n const way = deepGetPath(object, pathName);\n const lastValue = way[way.length - 1] as T | undefined;\n return lastValue === undefined ? defaultValue : lastValue;\n } catch (_) {\n return defaultValue;\n }\n}\n","\n/**\n * 格式化字符串\n * @param str 要格式化的字符串\n * @param args 格式化参数\n * @returns 格式化后的字符串\n * @example 通过参数序号格式化\n * const hello = formatString('{0} {1}!', 'Hello', 'world');\n * // hello 值为 'Hello world!'\n */\nexport function formatString(str: string, ...args: unknown[]): string;\n\n/**\n * 格式化字符串\n * @param str 要格式化的字符串\n * @param obj 格式化参数\n * @returns 格式化后的字符串\n * @example 通过对象名称格式化\n * const say = formatString('Say {what} to {who}', {what: 'hello', who: 'you'});\n * // say 值为 'Say hello to you'\n */\nexport function formatString(str: string, obj: Record): string;\n\nexport function formatString(str: string, ...args: [Record] | unknown[]): string {\n if (args.length === 0) {\n return str;\n }\n if (args.length === 1 && typeof args[0] === 'object' && args[0]) {\n const obj = args[0];\n Object.keys(obj).forEach(key => {\n const value = (obj as Record)[key] ?? '';\n str = str.replace(new RegExp(`\\\\{${key}\\\\}`, 'g'), `${value}`);\n });\n return str;\n }\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i] ?? '';\n str = str.replace(new RegExp(`\\\\{${i}\\\\}`, 'g'), `${arg}`);\n }\n return str;\n}\n\n/**\n * 字节单位表\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nenum BYTE_UNITS {\n B = 1,\n KB = 1024,\n MB = 1024 * 1024,\n GB = 1024 * 1024 * 1024,\n TB = 1024 * 1024 * 1024 * 1024,\n}\n\n/**\n * 格式化字节值为包含单位的字符串\n * @param size 字节大小\n * @param fixed 保留的小数点位数\n * @param unit 单位,如果留空,则自动使用最合适的单位\n * @returns 格式化后的字符串\n */\nexport function formatBytes(size: number, fixed = 2, unit?: keyof typeof BYTE_UNITS) {\n if (Number.isNaN(size)) {\n return '?KB';\n }\n if (!unit) {\n if (size < BYTE_UNITS.KB) {\n unit = 'B';\n } else if (size < BYTE_UNITS.MB) {\n unit = 'KB';\n } else if (size < BYTE_UNITS.GB) {\n unit = 'MB';\n } else if (size < BYTE_UNITS.TB) {\n unit = 'GB';\n } else {\n unit = 'TB';\n }\n }\n\n return (size / BYTE_UNITS[unit]).toFixed(fixed) + unit;\n}\n\n/**\n * 转换带单位的字节字符串为字节数\n * @param str 带单位的字节字符串\n * @returns 字节数\n */\nexport const convertBytes = (str: string) => {\n const pattern = /^[0-9]*(B|KB|MB|GB|TB)$/;\n str = str.toUpperCase();\n const matchRes = str.match(pattern);\n if (!matchRes) {\n return 0;\n }\n const unit = matchRes[1] as keyof typeof BYTE_UNITS;\n str = str.replace(unit, '');\n return Number.parseInt(str, 10) * BYTE_UNITS[unit];\n};\n","import {$} from '../cash';\nimport {deepGet} from '@zui/helpers/src/object/deep-get';\nimport {formatString} from '@zui/helpers/src/format-string';\nimport {I18nLangMap, I18nLangCode, I18nValuesMap} from './types';\n\nlet globalLangCode = (document.documentElement.getAttribute('lang') || 'zh_cn').toLowerCase().replace('-', '_');\n\nlet globalLangMap: I18nLangMap | undefined;\n\nexport function getLangCode() {\n return globalLangCode;\n}\n\nexport function setLangCode(langCode: I18nLangCode) {\n globalLangCode = langCode.toLowerCase().replace('-', '_');\n}\n\nexport function addI18nMap(map: I18nLangMap): void;\nexport function addI18nMap(code: I18nLangCode, values: I18nValuesMap): void;\nexport function addI18nMap(codeOrMap: I18nLangCode | I18nLangMap, values?: I18nValuesMap): void {\n if (!globalLangMap) {\n globalLangMap = {};\n }\n if (typeof codeOrMap === 'string') {\n codeOrMap = {[codeOrMap]: values ?? {}};\n }\n $.extend(true, globalLangMap, codeOrMap);\n}\n\nexport function i18n(maps: I18nLangMap | (I18nLangMap | undefined)[] | undefined, key: string, defaultValue?: T, langCode?: I18nLangCode, globalPrefix?: string): T | undefined;\nexport function i18n(maps: I18nLangMap | (I18nLangMap | undefined)[] | undefined, key: string, args?: string | (string | number)[] | Record, defaultValue?: T, langCode?: I18nLangCode, globalPrefix?: string): T | undefined;\nexport function i18n(maps: I18nLangMap | (I18nLangMap | undefined)[] | undefined, key: string, args?: string | (string | number)[] | Record, defaultValue?: T | I18nLangCode, langCode?: I18nLangCode, globalPrefix?: string): T | undefined {\n if (!Array.isArray(maps)) {\n maps = globalLangMap ? [globalLangMap, maps] : [maps];\n } else if (globalLangMap) {\n maps.unshift(globalLangMap);\n }\n if (typeof args === 'string') {\n globalPrefix = langCode;\n langCode = defaultValue as I18nLangCode;\n defaultValue = args;\n args = undefined;\n }\n const lang = langCode || globalLangCode;\n let value: T | undefined;\n for (const map of maps) {\n if (!map) {\n continue;\n }\n const mapValues = map[lang] || map.default;\n if (!mapValues) {\n continue;\n }\n const mapKey = (globalPrefix && map === globalLangMap) ? `${globalPrefix}.${key}` : key;\n value = deepGet(mapValues, mapKey);\n if (value !== undefined) {\n break;\n }\n }\n if (value === undefined) {\n return defaultValue as T;\n }\n if (args) {\n return formatString(value as string, ...(Array.isArray(args) ? args : [args])) as T;\n }\n return value;\n}\n\nexport function getLang(key: string, args?: string | (string | number)[] | Record, defaultValue?: T, langCode?: I18nLangCode): T | undefined {\n return i18n(undefined, key, args, defaultValue, langCode);\n}\n\ni18n.addLang = addI18nMap;\ni18n.getLang = getLang;\ni18n.getCode = getLangCode;\ni18n.setCode = setLangCode;\ni18n.map = globalLangMap;\n","import {addI18nMap} from './i18n';\n\naddI18nMap({\n 'zh_cn': {\n confirm: '确定',\n save: '保存',\n cancel: '取消',\n delete: '删除',\n reset: '重置',\n add: '添加',\n copy: '复制',\n close: '关闭',\n },\n 'zh_tw': {\n confirm: '確定',\n save: '儲存',\n cancel: '取消',\n delete: '刪除',\n reset: '重置',\n add: '添加',\n Copy: '複製',\n close: '關閉',\n },\n en: {\n confirm: 'Confirm',\n save: 'Save',\n cancel: 'Cancel',\n delete: 'Delete',\n reset: 'Reset',\n add: 'Add',\n copy: 'Copy',\n close: 'Close',\n },\n});\n","import {$} from '@zui/core';\n\nimport type {AjaxCallbackMap, AjaxCompleteCallback, AjaxErrorCallback, AjaxFormItemValue, AjaxSetting, AjaxSuccessCallback} from './types';\n\nfunction setHeader(headers: HeadersInit, name: string, value: string) {\n if (headers instanceof Headers) {\n headers.set(name, value);\n } else if (Array.isArray(headers)) {\n headers.push([name, value]);\n } else {\n headers[name] = value;\n }\n}\n\nfunction setFormItem(formData: FormData, name: string, value: AjaxFormItemValue | AjaxFormItemValue[] | Record) {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => setFormItem(formData, name, v));\n } else if (!(value instanceof Blob) && $.isPlainObject(value)) {\n Object.entries(value).forEach(([key, v]) => {\n setFormItem(formData, `${name}[${key}]`, v);\n });\n } else {\n formData.append(name, value instanceof Blob ? value : String(value));\n }\n}\n\nfunction getDataType(contentType: string | undefined | null, accepts: Record | undefined) {\n if (contentType) {\n const map = {\n text: 'text/plain',\n html: 'text/html',\n json: 'application/json',\n ...accepts,\n };\n for (const [key, value] of Object.entries(map)) {\n if (value.split(',').map(x => x.trim()).includes(contentType)) {\n return key;\n }\n }\n }\n\n return 'text';\n}\n\nexport function createFormData(data: string | FormData | URLSearchParams | Record | [name: string, value: AjaxFormItemValue][], existingFormData?: FormData): FormData {\n const formData = existingFormData || new FormData();\n if (data) {\n if (typeof data === 'string') {\n data = new URLSearchParams(data);\n }\n if (data instanceof URLSearchParams) {\n data.forEach((value, name) => {\n setFormItem(formData, name, value);\n });\n } else if (Array.isArray(data)) {\n data.forEach(([name, value]) => {\n setFormItem(formData, name, value);\n });\n } else if (data instanceof FormData) {\n data.forEach((value, name) => {\n setFormItem(formData, name, value);\n });\n } else if ($.isPlainObject(data)) {\n Object.entries(data).forEach(([name, value]) => {\n setFormItem(formData, name, value);\n });\n }\n }\n return formData;\n}\n\nexport class Ajax {\n private declare _timeoutID: number;\n\n private _controller: AbortController;\n\n private _callbacks: {[P in keyof AjaxCallbackMap]: AjaxCallbackMap[P][];};\n\n private declare _abortError?: Error;\n\n setting: AjaxSetting;\n\n declare data: T;\n\n declare error: Error;\n\n declare response: Response;\n\n declare url: string;\n\n declare request: RequestInit;\n\n get completed() {\n return this.data !== undefined || this.error !== undefined;\n }\n\n get [Symbol.toStringTag]() {\n return 'Ajax';\n }\n\n constructor(setting: AjaxSetting) {\n this.setting = setting;\n this._controller = new AbortController();\n this._callbacks = {success: [], error: [], complete: []};\n }\n\n on(name: N, callback: AjaxCallbackMap[N]) {\n (this._callbacks[name]).push(callback);\n return this;\n }\n\n success(calback: AjaxSuccessCallback) {\n return this.on('success', calback);\n }\n\n done(calback: AjaxSuccessCallback) {\n return this.success(calback);\n }\n\n fail(calback: AjaxErrorCallback) {\n return this.on('error', calback);\n }\n\n complete(calback: AjaxCompleteCallback) {\n return this.on('complete', calback);\n }\n\n always(calback: AjaxCompleteCallback) {\n return this.complete(calback);\n }\n\n then(resolve: (data: T) => void, reject?: (error: Error) => void) {\n if (this.completed) {\n if (reject && this.error) {\n reject(this.error);\n } else {\n resolve(this.data);\n }\n } else {\n this.success((data) => resolve(data as T));\n if (reject) {\n this.fail(reject);\n }\n }\n return this;\n }\n\n catch(calback: (error: Error) => void) {\n if (this.error) {\n calback(this.error);\n return this;\n }\n return this.on('error', (error) => calback(error));\n }\n\n finally(onFinally: () => void) {\n if (this.completed) {\n onFinally();\n return this;\n }\n return this.complete(() => onFinally());\n }\n\n abort(abortError?: Error) {\n if (this.completed) {\n return false;\n }\n this._abortError = abortError;\n this._controller.abort();\n return true;\n }\n\n getResponseHeader(name: string) {\n return this.response?.headers.get(name);\n }\n\n private _init() {\n if (this.completed) {\n return;\n }\n const {\n url,\n type,\n data,\n processData = true,\n contentType,\n crossDomain,\n accepts,\n dataType,\n timeout,\n dataFilter,\n beforeSend,\n success,\n error,\n complete,\n ...initOptions\n } = this.setting;\n\n if (beforeSend?.(initOptions) === false) {\n return;\n }\n if (type) {\n initOptions.method = type;\n }\n let dataSetting = data;\n if (dataSetting) {\n if (processData) {\n dataSetting = createFormData(dataSetting);\n }\n initOptions.body = dataSetting as BodyInit;\n }\n if (crossDomain) {\n initOptions.mode = 'cors';\n }\n const headers = initOptions.headers || {};\n setHeader(headers, 'X-Requested-With', 'XMLHttpRequest');\n if (contentType) {\n setHeader(headers, 'Content-Type', contentType);\n }\n initOptions.headers = headers;\n\n if (initOptions.signal) {\n initOptions.signal.addEventListener('abort', () => {\n this.abort();\n });\n }\n if (success) {\n this.success(success);\n }\n if (error) {\n this.fail(error);\n }\n if (complete) {\n this.complete(complete);\n }\n initOptions.signal = this._controller.signal;\n this.url = url;\n this.request = initOptions;\n }\n\n private _emit(name: N, ...args: Parameters) {\n this._callbacks[name].forEach((callback) => {\n callback.call(this, ...(args as [arg0: Error & Response, statusText: string, arg2: string & Response]));\n });\n }\n\n async send(): Promise<[data?: D | undefined, error?: Error | undefined, response?: Response | undefined]> {\n if (this.completed) {\n return [];\n }\n this._init();\n\n const {timeout, dataType: dataTypeSetting, accepts, dataFilter, throws, jsonParser} = this.setting;\n if (timeout) {\n this._timeoutID = window.setTimeout(() => {\n this.abort(new Error('timeout'));\n }, timeout);\n }\n\n let response: Response | undefined;\n let error: Error | undefined;\n let data: unknown | undefined;\n try {\n response = await fetch(this.url, this.request);\n this.response = response;\n const {statusText} = response;\n if (response.ok) {\n const isAttachment = response.headers.get('Content-Disposition')?.startsWith('attachment');\n const dataType = isAttachment ? 'blob' : (dataTypeSetting || getDataType(response.headers.get('Content-Type'), accepts));\n if (isAttachment || dataType === 'blob' || dataType === 'file') {\n data = await response.blob();\n } else if (dataType === 'json') {\n if (typeof jsonParser === 'function') {\n data = await response.text();\n data = jsonParser(data as string);\n } else {\n data = await response.json();\n }\n } else {\n data = await response.text();\n }\n this.data = data as T;\n const filteredData = dataFilter?.(data, dataType) ?? data;\n this._emit('success', filteredData, statusText, response);\n } else {\n this.data = await response.text() as T;\n throw new Error(statusText);\n }\n } catch (err) {\n error = err as Error;\n let skipTriggerError = false;\n if (error.name === 'AbortError') {\n if (this._abortError) {\n error = this._abortError;\n } else {\n skipTriggerError = true;\n }\n }\n this.error = error;\n if (!skipTriggerError) {\n this._emit('error', error, response?.statusText, error.message);\n }\n }\n\n if (this._timeoutID) {\n clearTimeout(this._timeoutID);\n }\n\n this._emit('complete', response, response?.statusText);\n if (error && throws) {\n throw error;\n }\n return [data as D, error, response];\n }\n}\n","import {$, Cash} from '@zui/core';\nimport {Ajax} from './ajax';\nimport type {AjaxFormData, AjaxSetting, AjaxSuccessCallback} from './types';\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n ajax(urlOrSetting: string | AjaxSetting, setting?: Partial): Ajax;\n\n getJSON(url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, success?: AjaxSuccessCallback): Ajax;\n\n get(url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, successOrDataType?: AjaxSuccessCallback | string, dataType?: string, method?: string): Ajax;\n\n post(url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, successOrDataType?: AjaxSuccessCallback | string, dataType?: string): Ajax;\n }\n\n interface Cash {\n load(this: Cash, url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, success?: AjaxSuccessCallback): Cash;\n }\n}\n\n/* Extend as $.ajax() to create ajax for cash. */\n$.ajax = (urlOrSetting: string | AjaxSetting, setting?: Partial) => {\n setting = setting || {};\n if (typeof urlOrSetting === 'string') {\n setting.url = urlOrSetting;\n } else {\n $.extend(setting, urlOrSetting);\n }\n const ajax = new Ajax(setting as AjaxSetting);\n ajax.send();\n return ajax;\n};\n\n/* Extend as $.getJSON() to create getJSON for cash. */\n$.getJSON = (url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, success?: AjaxSuccessCallback) => {\n if (typeof dataOrSuccess === 'function') {\n success = dataOrSuccess;\n dataOrSuccess = undefined;\n }\n return $.ajax({\n url,\n data: dataOrSuccess,\n success,\n dataType: 'json',\n });\n};\n\n/* Extend as $.get() to create get for cash. */\n$.get = (url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, successOrDataType?: AjaxSuccessCallback | string, dataType?: string, method = 'GET') => {\n let success: AjaxSuccessCallback | undefined;\n let data: AjaxFormData | undefined;\n if (typeof dataOrSuccess === 'function') {\n success = dataOrSuccess;\n data = undefined;\n } else {\n data = dataOrSuccess;\n }\n if (typeof successOrDataType === 'function') {\n success = successOrDataType;\n dataType = undefined;\n } else {\n dataType = successOrDataType;\n }\n return $.ajax({\n method,\n url,\n data,\n success,\n dataType,\n });\n};\n\n/* Extend as $.post() to create post for cash. */\n$.post = (url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, successOrDataType?: AjaxSuccessCallback | string, dataType?: string) => {\n return $.get(url, dataOrSuccess, successOrDataType, dataType, 'POST');\n};\n\n/* Extend as $.load() to create load for cash. */\n$.fn.load = function (this: Cash, url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, success?: AjaxSuccessCallback): Cash {\n if (typeof dataOrSuccess === 'function') {\n success = dataOrSuccess;\n dataOrSuccess = undefined;\n }\n const [realUrl, selector] = url.split(' ');\n $.get(realUrl, dataOrSuccess, (data, statusText, response) => {\n if (selector) {\n data = $(data as string).find(selector).html();\n }\n $(this).html(data as string).zuiInit();\n success?.call(this, data, statusText, response);\n }, 'html');\n return this;\n};\n","import {$} from '../cash';\nimport {Ajax} from './ajax';\nimport type {AjaxSetting, FetcherSetting} from './types';\n\nexport async function fetchData(setting: FetcherSetting, args: A = ([] as unknown as A), extraAjaxSetting?: Partial | ((ajaxSetting: AjaxSetting) => Partial)): Promise {\n const ajaxSetting = {throws: true, dataType: 'json'} as AjaxSetting;\n if (typeof setting === 'string') {\n ajaxSetting.url = setting;\n } else if (typeof setting === 'object') {\n $.extend(ajaxSetting, setting);\n } else if (typeof setting === 'function') {\n const result = setting(...args);\n if (result instanceof Promise) {\n const data = await result;\n return data;\n }\n return result;\n }\n if (extraAjaxSetting) {\n $.extend(ajaxSetting, typeof extraAjaxSetting === 'function' ? extraAjaxSetting(ajaxSetting) : extraAjaxSetting);\n }\n const ajax = new Ajax(ajaxSetting);\n const [data] = await ajax.send();\n return data as T;\n}\n\nexport function isFetchSetting(setting: FetcherSetting | unknown): setting is FetcherSetting {\n return !!(setting && (typeof setting === 'string' || (typeof setting === 'object' && (setting as AjaxSetting).url) || typeof setting === 'function'));\n}\n\ndeclare module 'cash-dom' {\n interface CashStatic {\n fetch(setting: FetcherSetting, args?: A, extraAjaxSetting?: Partial | ((ajaxSetting: AjaxSetting) => Partial)): Promise\n }\n}\n\n$.fetch = fetchData;\n","import {$} from '../cash';\n\nexport function nextGid() {\n return $.guid++;\n}\n","export function isDiff(value1: unknown, value2: unknown) {\n if (value1 === value2) {\n return false;\n }\n if (value1 && value2) {\n const typeOfValue1 = typeof value1;\n const typeOfValue2 = typeof value2;\n if (typeOfValue1 !== typeOfValue2) {\n return true;\n }\n if (typeOfValue1 === 'object' && typeOfValue2 === 'object') {\n const isArray1 = Array.isArray(value1);\n const isArray2 = Array.isArray(value2);\n if (isArray1 !== isArray2) {\n return true;\n }\n if (isArray1 && isArray2) {\n if (value1.length !== value2.length) {\n return true;\n }\n for (let i = 0; i < value1.length; i++) {\n if (isDiff(value1[i], value2[i])) {\n return true;\n }\n }\n return true;\n }\n\n const keys1 = Object.keys(value1);\n const keys2 = Object.keys(value2);\n if (keys1.length !== keys2.length) {\n return true;\n }\n for (const key of keys1) {\n if (isDiff((value1 as Record)[key], (value2 as Record)[key])) {\n return true;\n }\n }\n return true;\n }\n if (typeOfValue1 === 'function' && typeOfValue2 === 'function') {\n return value1.toString() !== value2.toString();\n }\n }\n return true;\n}\n","import {isDiff} from './is-diff';\n\n/**\n * A class representing a computed value that can be cached and recomputed when its dependencies change.\n * @template T The type of the computed value.\n * @template D The type of the dependencies array.\n */\nexport class Computed {\n /**\n * The dependencies of the computed value.\n */\n protected _dependencies: D | (() => D);\n\n /**\n * The function that computes the value.\n */\n protected _compute: () => T;\n\n /**\n * The cached value of the computed value.\n */\n protected _value?: T;\n\n /**\n * The last dependencies array used to compute the value.\n */\n protected _lastDependencies: D | undefined;\n\n /**\n * Creates a new Computed instance.\n * @param compute The function that computes the value.\n * @param dependencies The dependencies of the computed value.\n */\n constructor(compute: () => T, dependencies: D | (() => D)) {\n this._compute = compute;\n this._dependencies = dependencies;\n }\n\n /**\n * Gets the computed value.\n */\n get value(): T {\n return this.compute();\n }\n\n /**\n * Gets the cached value of the computed value.\n */\n get cache(): T {\n return this._lastDependencies ? this._value as T : this.compute();\n }\n\n /**\n * Forces the computed value to be recomputed.\n * @param dependencies The new dependencies to use for recomputing the value.\n * @returns The recomputed value.\n */\n forceCompute(dependencies?: D | (() => D)) {\n this._lastDependencies = undefined;\n return this.compute(dependencies);\n }\n\n /**\n * Computes the value of the computed value.\n * @param dependencies The dependencies to use for computing the value.\n * @returns The computed value.\n */\n compute(dependencies?: D | (() => D)): T {\n if (dependencies !== undefined) {\n this._dependencies = dependencies;\n }\n\n dependencies = this._dependencies;\n if (typeof dependencies === 'function') {\n dependencies = dependencies();\n }\n\n // Check if dependencies changed.\n const lastDependencies = this._lastDependencies;\n if (!lastDependencies || dependencies.some((dept, index) => {\n return isDiff(dept instanceof Computed ? dept.value : dept, lastDependencies[index]);\n })) {\n this._value = this._compute();\n this._lastDependencies = dependencies.map(x => x instanceof Computed ? x.cache : x) as D;\n }\n\n return this._value as T;\n }\n}\n","import {$, Cash} from '../cash';\n\n/**\n * Classname like.\n */\nexport type ClassNameLike = string | null | undefined | boolean | {[key: string]: unknown} | (() => ClassNameLike) | ClassNameLike[];\n\n/**\n * Classname setting.\n */\nexport type ClassNameSetting = [name: string, toggle: boolean];\n\n/**\n * Get class name setting list from arguments.\n *\n * @param args Classname like arguments.\n * @returns Classname setting list.\n */\nexport function getClassList(...args: ClassNameLike[]): ClassNameSetting[] {\n const settings: ClassNameSetting[] = [];\n\n /* Indexes map to keep classname's order. */\n const indexes = new Map();\n\n const setSetting = (name: string | [name: string, toggle?: unknown], toggle?: unknown) => {\n if (Array.isArray(name)) {\n toggle = name[1];\n name = name[0];\n }\n if (!name.length) {\n return;\n }\n const index = indexes.get(name);\n if (typeof index === 'number') {\n settings[index][1] = !!toggle;\n } else {\n indexes.set(name, settings.length);\n settings.push([name, !!toggle]);\n }\n };\n\n args.forEach((arg) => {\n if (typeof arg === 'function') {\n arg = arg();\n }\n\n if (Array.isArray(arg)) {\n getClassList(...arg).forEach(setSetting);\n } else if (arg && typeof arg === 'object') {\n Object.entries(arg).forEach(setSetting);\n } else if (typeof arg === 'string') {\n arg.split(' ').forEach(name => setSetting(name, true));\n }\n });\n\n return settings.sort((a, b) => (indexes.get(a[0]) || 0) - (indexes.get(b[0]) || 0));\n}\n\n/**\n * Get classname string from arguments.\n *\n * @param args Classname like arguments.\n * @returns Classname string.\n */\nexport const classes = (...args: ClassNameLike[]): string => {\n return getClassList(...args).reduce((classList, [name, toggle]) => {\n if (toggle) {\n classList.push(name);\n }\n return classList;\n }, []).join(' ');\n};\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n classes(...args: ClassNameLike[]): string;\n }\n\n interface Cash {\n setClass(merge: ClassNameLike | boolean, ...args: ClassNameLike[]): Cash;\n }\n}\n\n/* Extend as $.classes() */\n$.classes = classes;\n\n/* Extend as $.fn.setClass() */\n$.fn.setClass = function (this: Cash, merge: ClassNameLike | boolean, ...args: ClassNameLike[]): Cash {\n return this.each((_, ele) => {\n const $ele = $(ele);\n if (merge === true) {\n $ele.attr('class', classes($ele.attr('class'), ...args));\n } else {\n $ele.addClass(classes(merge, ...args));\n }\n });\n};\n","import {$, Cash} from '../cash';\n\n/**\n * Cache for data associated with the target object.\n */\nconst cache = new WeakMap>();\n\n/**\n * Store data associated with the target object with key value in the cache.\n *\n * @param target Target object to store data.\n * @param key Key to store.\n * @param value Value to store.\n */\nexport function storeData(target: object, key: string | null, value?: unknown): void;\n\n/**\n * Store data associated with the target object in the cache.\n *\n * @param target Target object to store data.\n * @param data Data to store.\n */\nexport function storeData(target: object, data: Record): void;\n\n/**\n * Store data associated with the target object in the cache.\n *\n * @param target Target object to store data.\n * @param keyOrData Key or data to store.\n * @param value Value to store.\n */\nexport function storeData(target: object, keyOrData: string | Record | null, value?: unknown): void {\n const hasCache = cache.has(target);\n const data = hasCache ? cache.get(target)! : {};\n if (typeof keyOrData === 'string') {\n data[keyOrData] = value;\n } else if (keyOrData === null) {\n Object.keys(data).forEach((key) => {\n delete data[key];\n });\n } else {\n Object.assign(data, keyOrData);\n }\n\n Object.keys(data).forEach((key) => {\n if (data[key] === undefined) {\n delete data[key];\n }\n });\n\n if (Object.keys(data).length) {\n if (!hasCache && target instanceof Element) {\n Object.assign(data, $(target).dataset(), data);\n }\n cache.set(target, data);\n } else {\n cache.delete(target);\n }\n}\n\n/**\n * Take data associated with the target object from the cache.\n *\n * @param target Target object to take data.\n */\nexport function takeData(target: object): Record;\n\n/**\n * Take data associated by key with the target object from the cache.\n *\n * @param target Target object to take data.\n * @param key Key to take.\n */\nexport function takeData(target: object, key: string): unknown;\n\n/**\n * Take data associated by key with the target object from the cache.\n *\n * @param target Target object to take data.\n * @param key Key to take.\n * @param mergeElementData Whether to merge element dataset.\n */\nexport function takeData(target: object, key: string | undefined, mergeElementData: boolean): unknown;\n\n/**\n * Take data associated with the target object from the cache.\n *\n * @param target Target object to take data.\n * @param key Key to take.\n * @param mergeElementData Whether to merge element dataset.\n * @returns Data associated with the target object.\n */\nexport function takeData(target: object, key?: string, mergeElementData?: boolean): unknown {\n let data = cache.get(target) || {};\n if (mergeElementData && target instanceof Element) {\n data = Object.assign({}, $(target).dataset(), data);\n }\n if (key === undefined) {\n return data;\n }\n return data[key];\n}\n\n/**\n * Clear data associated with the target object from the cache.\n */\nexport function clearData(target: object): void {\n cache.delete(target);\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n dataset(): Record | undefined;\n dataset(name: string): unknown | undefined;\n dataset(name: string, value: unknown): Cash;\n dataset(dataset: Record): Cash;\n\n removeData(name?: string): Cash;\n }\n}\n\n/* Backup the origin $.fn.data method. */\n$.fn.dataset = $.fn.data;\n\n/* Extend as $.fn.data() */\n$.fn.data = function (this: Cash, ...args: (string | Record | unknown)[]) {\n const [data, value] = args;\n if (!args.length || (args.length === 1 && typeof data === 'string')) {\n if (!this.length) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return takeData(this[0]!, data as string, true) as any;\n }\n return this.each((_, ele) => {\n return storeData(ele, data as string, value);\n });\n};\n\n/* Extend as $.fn.removeData() */\n$.fn.removeData = function (this: Cash, name: string | null = null) {\n return this.each((_, ele) => {\n return storeData(ele, name);\n });\n};\n","export function evalValue(value: string, ...args: unknown[]): T {\n if (value.includes('RAWJS')) {\n value = value.split('\"RAWJS<').join('').split('>RAWJS\"').join('').split('').join('\"').split('').join('\\n');\n }\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n const func = new Function(`return ${value}`);\n return func(...args);\n}\n\nexport function parseRawData(data: string, ...args: unknown[]): T {\n if (data.includes('RAWJS')) {\n return evalValue(data, ...args);\n }\n\n return JSON.parse(data);\n}\n","import {$, Cash, Selector} from '../cash';\nimport {evalValue} from './raw-data';\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n z(): Record | undefined;\n z(name: string): unknown | undefined;\n z(name: string, value: unknown): Cash;\n z(data: Record): Cash;\n }\n}\n\ntype ZDataGetterOptions = {\n prefix?: string;\n evalValue?: boolean | string[];\n evalArgs?: unknown[];\n json?: boolean;\n getter?: (name: string, value: unknown) => unknown;\n};\n\nexport function getZData(selector: Selector, prefixOrOptions?: ZDataGetterOptions | string): Record | undefined {\n const element = $(selector)[0];\n if (!element) {\n return;\n }\n const {prefix, getter, evalValue: evalValueSetting, json = true, evalArgs = []} = {\n prefix: 'z-',\n ...(typeof prefixOrOptions === 'string' ? {prefix: prefixOrOptions} : prefixOrOptions),\n };\n const evalValueSet = Array.isArray(evalValueSetting) ? new Set(evalValueSetting) : undefined;\n return Array.from(element.attributes).reduce>((data, attribute) => {\n let {name} = attribute;\n const {value} = attribute;\n let finalValue: unknown = value;\n if (name.startsWith(prefix)) {\n name = name.slice(prefix.length).replace(/-([a-z])/g, (g) => g[1].toUpperCase());\n if (getter) {\n finalValue = getter(name, value);\n } else {\n try {\n if ((evalValueSetting && (!evalValueSet || evalValueSet.has(name))) || (evalValueSetting === undefined && value.includes('RAWJS'))) {\n finalValue = evalValue(value, ...evalArgs);\n } else if (json) {\n finalValue = JSON.parse(value);\n }\n } catch (error) {\n // Ignore.\n }\n }\n data[name] = finalValue;\n }\n return data;\n }, {});\n}\n\nexport function setZData(selector: Selector, data: Record, prefix = 'z-') {\n const $element = $(selector);\n Object.keys(data).forEach((name) => {\n let value = data[name];\n if (typeof value === 'function') {\n value = `RAWJS<${value}>RAWJS`;\n }\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n name = name.replace(/[A-Z]/g, (g) => `-${g.toLowerCase()}`);\n $element.attr(`${prefix}${name}`, value as string);\n });\n}\n\nfunction z(): Record | undefined;\nfunction z(name: string): unknown | undefined;\nfunction z(name: string, value: unknown): Cash;\nfunction z(data: Record): Cash;\nfunction z(this: Cash, ...args: unknown[]): Record | unknown | Cash | undefined {\n const argsLength = args.length;\n if (!argsLength) {\n return getZData(this);\n }\n if (argsLength === 1) {\n const [nameOrData] = args;\n if (typeof nameOrData === 'string') {\n return getZData(this)?.[nameOrData];\n }\n if ($.isPlainObject(nameOrData)) {\n setZData(this, nameOrData);\n }\n return this;\n }\n setZData(this, {[args[0] as string]: args[1]});\n return this;\n}\n\n/* Extend as $.fn.z() */\n$.fn.z = z;\n","import {$, Cash} from '../cash';\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n _attr(): undefined;\n _attr(attrs: string): string | null;\n _attr(attrs: string, value: string): this;\n _attr(attrs: Record): this;\n\n attr(attrs: string, value: string | null): Cash;\n attr(attrs: Record): Cash;\n }\n}\n\n/* Backup the origin $.fn.attr() method. */\n$.fn._attr = $.fn.attr;\n\n/* Extend the attr method. */\n$.fn.extend({\n attr(this: Cash, ...args: (string | Record | null)[]): Cash | string | null | undefined {\n const [attrs, value] = args;\n if (!args.length || (args.length === 1 && typeof attrs === 'string')) {\n // eslint-disable-next-line prefer-spread\n return this._attr.apply(this, args as [attrs: Record]);\n }\n if (typeof attrs === 'object') {\n if (attrs) {\n Object.keys(attrs).forEach((key) => {\n const val = attrs[key];\n if (val === null) {\n this.removeAttr(key);\n } else {\n this._attr(key, val);\n }\n });\n }\n return this;\n }\n if (value === null) {\n return this.removeAttr(attrs as string);\n }\n return this._attr(attrs as string, value as string);\n },\n});\n","import {$} from '../cash';\n\n/**\n * Cash event.\n */\ntype CashEvent = Exclude[0], string>;\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n Event(event: string, data?: unknown): CashEvent;\n }\n}\n\n/* Extend as $.Event() to create custom event for cash. */\nif (!$.Event) {\n $.Event = (event: string, data?: unknown): CashEvent => {\n const [name, ...namespaces] = event.split('.');\n const eventObject = new Event(name, {\n bubbles: true,\n cancelable: true,\n });\n (eventObject as Event & {namespace: string}).namespace = namespaces.join('.');\n (eventObject as Event & {___ot: string}).___ot = name;\n (eventObject as Event & {___td: unknown}).___td = data;\n return eventObject as unknown as CashEvent;\n };\n}\n","export const delay = (ms: number, setTimerID?: (timerID: number) => void) => new Promise(resolve => {\n const id = window.setTimeout(resolve, ms);\n if (setTimerID) {\n setTimerID(id);\n }\n});\n","import {$} from '../cash';\n\nexport const shareData: Record = {};\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n share: Record;\n }\n}\n\n/** Define $.share helper. */\n$.share = shareData;\n","var n,l,u,t,i,o,r,f,e,c,s,a,h={},p=[],v=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,y=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function w(n){var l=n.parentNode;l&&l.removeChild(n)}function _(l,u,t){var i,o,r,f={};for(r in u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return g(l,f,i,o,null)}function g(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++u:r,__i:-1,__u:0};return null==r&&null!=l.vnode&&l.vnode(f),f}function m(){return{current:null}}function k(n){return n.children}function b(n,l){this.props=n,this.context=l}function x(n,l){if(null==l)return n.__?x(n.__,n.__i+1):null;for(var u;lu&&i.sort(f));P.__r=0}function S(n,l,u,t,i,o,r,f,e,c,s){var a,v,y,d,w,_=t&&t.__k||p,g=l.length;for(u.__d=e,$(u,l,_),e=u.__d,a=0;a0?g(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):i)?(i.__=n,i.__b=n.__b+1,f=L(i,u,r,s),i.__i=f,o=null,-1!==f&&(s--,(o=u[f])&&(o.__u|=131072)),null==o||null===o.__v?(-1==f&&a--,\"function\"!=typeof i.type&&(i.__u|=65536)):f!==r&&(f==r-1?a=f-r:f==r+1?a++:f>r?s>e-r?a+=f-r:a--:f(null!=e&&0==(131072&e.__u)?1:0))for(;r>=0||f=0){if((e=l[r])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return r;r--}if(f2&&(e.children=arguments.length>3?n.call(arguments,2):t),g(l.type,e,i||l.key,o||l.ref,null)}function G(n,l){var u={__c:l=\"__cC\"+a++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=[],(t={})[l]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=p.slice,l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},b.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},b.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},b.prototype.render=k,i=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},P.__r=0,e=0,c=F(!1),s=F(!0),a=0;export{b as Component,k as Fragment,E as cloneElement,G as createContext,_ as createElement,m as createRef,_ as h,D as hydrate,t as isValidElement,l as options,B as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import {ComponentChildren, toChildArray} from 'preact';\nimport {$} from '../cash';\n\nexport function mergeProps = Record>(props: Record, ...args: unknown[]) {\n args.forEach(arg => {\n if (!arg || typeof arg !== 'object') {\n return;\n }\n Object.keys(arg as Partial).forEach(key => {\n let value = (arg as Record)[key];\n const oldValue = props[key];\n if (value === oldValue) {\n return;\n }\n if (oldValue !== undefined) {\n if (key === 'className' || key.endsWith('Class')) {\n value = [oldValue, value];\n } else if (key === 'children') {\n value = [...toChildArray(oldValue), ...toChildArray(value as ComponentChildren)];\n } else if (typeof oldValue == 'object' && (key === 'style' || key.endsWith('Style') || key === 'attrs' || key.endsWith('Attrs') || key === 'props')) {\n value = $.extend(oldValue, value);\n }\n }\n props[key] = value;\n });\n });\n return props;\n}\n\nexport function removeUndefinedProps(props: Record) {\n Object.keys(props).forEach(key => {\n if (props[key] === undefined) {\n delete props[key];\n }\n });\n return props;\n}\n","import {$, Cash, Selector} from '../cash';\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n disableScroll(disable?: boolean): Cash;\n enableScroll(enable?: boolean): Cash;\n }\n}\n\nexport function disableScroll(selector: Selector, disable = true): void {\n const $element = $(selector);\n const element = $element[0] as HTMLElement;\n const dataName = 'zui-disable-scroll';\n if (disable) {\n if ($element.data(dataName)) {\n return;\n }\n if (($element.css('scrollbar-gutter') || '').includes('stable')) {\n $element.data(dataName, {overflow: $element.css('overflow')}).css('overflow', 'hidden');\n return;\n }\n const scrollbarWidth = (element === document.body || $element.is('html')) ? (window.innerWidth - document.body.clientWidth) : (element.offsetWidth - element.clientWidth);\n if (!scrollbarWidth) {\n return;\n }\n const paddingRight = $element.css('paddingRight') || '0';\n $element.data(dataName, {\n paddingRight: paddingRight,\n overflow: $element.css('overflow'),\n }).css({\n paddingRight: `${scrollbarWidth + Number.parseInt(paddingRight, 10)}px`,\n overflow: 'hidden',\n });\n } else {\n const oldStyle = $element.data(dataName);\n if (!oldStyle) {\n return;\n }\n $element.css(oldStyle).removeData(dataName);\n }\n}\n\n/* Extend as $.fn.disableScroll() */\n$.fn.disableScroll = function (this: Cash, disable = true): Cash {\n return this.each((_, ele) => {\n disableScroll(ele, disable);\n });\n};\n\n$.fn.enableScroll = function (this: Cash, enable = true): Cash {\n return this.disableScroll(!enable);\n};\n","import {$, Cash} from '../cash';\nimport {evalValue} from './raw-data';\nimport {deepGet} from '@zui/helpers/src/object/deep-get';\nimport {getZData} from './z';\n\nexport type GlobalEventOptions = {\n on: string;\n selector?: string;\n prevent?: boolean;\n stop?: boolean;\n call?: string | ((...args: unknown[]) => void);\n self?: boolean;\n params?: unknown[] | string;\n once?: boolean;\n if?: string | ((...args: unknown[]) => boolean);\n do?: string | ((...args: unknown[]) => void);\n [option: string]: unknown;\n};\n\nfunction processGlobalEvent($element: Cash, event: Event, options: GlobalEventOptions) {\n if (!(options.on as string || 'click').split(' ').includes(event.type)) {\n return;\n }\n const $target = options.selector ? $(event.target as HTMLElement).closest(options.selector as string) : $element;\n if (!$target.length) {\n return;\n }\n const parseBool = (value: unknown) => {\n return value === '' ? true : value;\n };\n const parseVal = (value: unknown) => {\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value);\n // eslint-disable-next-line no-empty\n } catch (_) {}\n }\n return value;\n };\n if (parseBool(options.once)) {\n if (options.onceCalled) {\n return;\n }\n $element.dataset('once-called', true);\n }\n if (parseBool(options.prevent)) {\n event.preventDefault();\n }\n if (parseBool(options.stop)) {\n event.stopPropagation();\n }\n if (parseBool(options.self) && event.currentTarget !== event.target) {\n return;\n }\n\n const runParams: [string, unknown][] = [['$element', $element], ['event', event], ['options', options], ['$target', $target]];\n const runCode = (code: string | ((...args: unknown[]) => boolean)) => {\n if (typeof code === 'function') {\n return code(...runParams);\n }\n return $.runJS(code as string, ...runParams);\n };\n if (options.if !== undefined && !runCode(options.if)) {\n return;\n }\n\n const call = options.call;\n if (call) {\n let callback: unknown;\n if (typeof call === 'string') {\n const isFuncName = /^[$A-Z_][0-9A-Z_$.]*$/i.test(call);\n callback = isFuncName ? deepGet(window, call) : runCode(call);\n } else {\n callback = call;\n }\n if (typeof callback === 'function') {\n const params: unknown[] = [];\n const paramsOption = options.params;\n options.params = params;\n if (typeof paramsOption === 'string' && paramsOption.length) {\n if (paramsOption[0] === '[') {\n params.push(...(parseVal(paramsOption) as unknown[]));\n } else {\n params.push(...paramsOption.split(', ').map(x => {\n x = x.trim();\n if (x === '$element') return $element;\n if (x === 'event') return event;\n if (x === 'options') return options;\n if (x.startsWith('$element.') || x.startsWith('event.') || x.startsWith('options.')) return runCode(x);\n return parseVal(x);\n }));\n }\n } else if (Array.isArray(paramsOption)) {\n params.push(...paramsOption);\n } else {\n params.push(paramsOption);\n }\n callback(...params);\n }\n }\n\n if (options.do) {\n runCode(options.do as string);\n }\n}\n\n/**\n * Handle global event.\n * @param event The event object\n * @example\n * ```html\n * Click or changed\n * console.log('clicked or changed'), if: () => confirm('continue?')}\">Click or changed\n * Click\n * Click or changed\n * console.log('clicked')}\">Click or changed\n *\n * [data-on] is deprecated\n * ```\n */\nfunction handleGlobalEvent(this: Cash, event: Event) {\n const $element = $(this);\n const type = event.type;\n const zuiOn = $element.attr('zui-on');\n if (zuiOn) {\n const [events, code] = zuiOn.split('~').map(x => x.trim());\n if (events) {\n processGlobalEvent($element, event, $.extend({\n on: events,\n }, code ? (code.startsWith('{') ? evalValue(code) : {do: code}) : getZData($element, {prefix: 'data-', evalValue: ['call', 'if', 'do']})));\n }\n }\n const zuiOnEvent = $element.attr(`zui-on-${type}`);\n if (zuiOnEvent) {\n processGlobalEvent($element, event, $.extend({\n on: type,\n }, zuiOnEvent.startsWith('{') ? evalValue(zuiOnEvent) : {do: zuiOnEvent}));\n }\n\n const dataOn = $element.attr('data-on');\n if (dataOn) {\n processGlobalEvent($element, event, getZData($element, {prefix: 'data-', evalValue: ['call', 'if', 'do']}) as GlobalEventOptions);\n }\n}\n\nexport function registerGlobalListener(events: string[]) {\n $(document).off('.zui.global').on(events.map(event => `${event}.zui.global`).join(' '), `[zui-on],${events.map(x => `[zui-on-${x}]`)},[data-on]`, handleGlobalEvent);\n}\n\nregisterGlobalListener(['click', 'change', 'inited']);\n","export type SizeSetting = number | `${number}%` | `${number}px` | `${number}/${number}` | (string & {}) | (() => SizeSetting);\n\nexport function parseSize(size: SizeSetting): [value: number, type?: 'px' | '%'] {\n if (typeof size === 'function') {\n return parseSize(size());\n }\n if (typeof size === 'number') {\n return [size];\n }\n let match = size.match(/(\\d+)(%|px)?/);\n if (match) {\n return [parseInt(match[1]), match[2] as 'px' | '%'];\n }\n match = size.match(/(\\d+)\\/(\\d+)/);\n if (match) {\n return [100 * parseInt(match[1]) / parseInt(match[2]), '%'];\n }\n return [NaN];\n}\n\nexport function toCssSize(size: SizeSetting | undefined | null): string | null {\n if (size === undefined || size === null) {\n return null;\n }\n const [val, unit = 'px'] = parseSize(size);\n if (Number.isNaN(val)) {\n return typeof size === 'string' ? size : null;\n }\n return `${val}${unit}`;\n}\n","export async function downloadFile(file: Blob | Response | string, fileName?: string): Promise {\n if (file instanceof Blob) {\n const link = document.createElement('a');\n link.href = window.URL.createObjectURL(file);\n if (fileName) {\n link.download = decodeURIComponent(fileName);\n }\n link.click();\n link.remove();\n return file;\n }\n if (file instanceof Response) {\n const blob = await file.blob();\n fileName = fileName || file.headers.get('Content-Disposition')?.split(';')[1]?.split('=')[1]?.replace(/\"/g, '');\n return downloadFile(blob, fileName);\n }\n const response = await fetch(file);\n return downloadFile(response);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {$, type Cash, type Selector} from '../cash';\n\ntype EventCallback = {\n (event: any, data?: any): any;\n guid?: number;\n};\n\nexport class Bus {\n protected _$target: Cash;\n\n constructor(target: Selector) {\n this._$target = $(target);\n }\n\n on(events: Record): this;\n on(events: Record, selector: string): this;\n on(events: Record, data: any): this;\n on(events: Record, selector: string | null | undefined, data: any): this;\n on(events: string, callback: EventCallback): this;\n on(events: string, selector: string, callback: EventCallback): this;\n on(events: string, data: any, callback: EventCallback): this;\n on(events: string, selector: string | null | undefined, data: any, callback: EventCallback, _one?: boolean): this;\n on(...args: any[]): this {\n this._$target.on(...(args as Parameters));\n return this;\n }\n\n one(events: Record): this;\n one(events: Record, selector: string): this;\n one(events: Record, data: any): this;\n one(events: Record, selector: string | null | undefined, data: any): this;\n one(events: string, callback: EventCallback): this;\n one(events: string, selector: string, callback: EventCallback): this;\n one(events: string, data: any, callback: EventCallback): this;\n one(events: string, selector: string | null | undefined, data: any, callback: EventCallback): this;\n one(...args: any[]): this {\n this._$target.one(...(args as Parameters));\n return this;\n }\n\n off(): this;\n off(events: string): this;\n off(events: Record): this;\n off(events: string, callback: EventCallback): this;\n off(events: string, selector: string, callback: EventCallback): this;\n off(...args: any[]): this {\n this._$target.off(...(args as Parameters));\n return this;\n }\n\n trigger(event: Event | string, data?: any): this;\n trigger(...args: any[]): this {\n this._$target.trigger(...(args as Parameters));\n return this;\n }\n}\n\nexport const bus = new Bus(document);\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n bus: Bus;\n\n on(events: Record): Bus;\n on(events: Record, selector: string): Bus;\n on(events: Record, data: any): Bus;\n on(events: Record, selector: string | null | undefined, data: any): Bus;\n on(events: string, callback: EventCallback): Bus;\n on(events: string, selector: string, callback: EventCallback): Bus;\n on(events: string, data: any, callback: EventCallback): Bus;\n on(events: string, selector: string | null | undefined, data: any, callback: EventCallback, _one?: boolean): Bus;\n\n one(events: Record): Bus;\n one(events: Record, selector: string): Bus;\n one(events: Record, data: any): Bus;\n one(events: Record, selector: string | null | undefined, data: any): Bus;\n one(events: string, callback: EventCallback): Bus;\n one(events: string, selector: string, callback: EventCallback): Bus;\n one(events: string, data: any, callback: EventCallback): Bus;\n one(events: string, selector: string | null | undefined, data: any, callback: EventCallback): Bus;\n\n off(): Bus;\n off(events: string): Bus;\n off(events: Record): Bus;\n off(events: string, callback: EventCallback): Bus;\n off(events: string, selector: string, callback: EventCallback): Bus;\n\n trigger(event: Event | string, data?: any): Bus;\n }\n}\n\n$.bus = bus;\n$.on = bus.on.bind(bus);\n$.one = bus.one.bind(bus);\n$.off = bus.off.bind(bus);\n$.trigger = bus.trigger.bind(bus);\n","var t=[\"Shift\",\"Meta\",\"Alt\",\"Control\"],e=\"object\"==typeof navigator?navigator.platform:\"\",n=/Mac|iPod|iPhone|iPad/.test(e),r=n?\"Meta\":\"Control\",o=\"Win32\"===e?[\"Control\",\"Alt\"]:n?[\"Alt\"]:[];function i(t,e){return\"function\"==typeof t.getModifierState&&(t.getModifierState(e)||o.includes(e)&&t.getModifierState(\"AltGraph\"))}function a(t){return t.trim().split(\" \").map(function(t){var e=t.split(/\\b\\+/),n=e.pop();return[e=e.map(function(t){return\"$mod\"===t?r:t}),n]})}function u(e,n){var r;void 0===n&&(n={});var o=null!=(r=n.timeout)?r:1e3,u=Object.keys(e).map(function(t){return[a(t),e[t]]}),c=new Map,f=null;return function(e){e instanceof KeyboardEvent&&(u.forEach(function(n){var r=n[0],o=n[1],a=c.get(r)||r;!function(e,n){return!(n[1].toUpperCase()!==e.key.toUpperCase()&&n[1]!==e.code||n[0].find(function(t){return!i(e,t)})||t.find(function(t){return!n[0].includes(t)&&n[1]!==t&&i(e,t)}))}(e,a[0])?i(e,e.key)||c.delete(r):a.length>1?c.set(r,a.slice(1)):(c.delete(r),o(e))}),f&&clearTimeout(f),f=setTimeout(c.clear.bind(c),o))}}function c(t,e,n){var r;void 0===n&&(n={});var o=null!=(r=n.event)?r:\"keydown\",i=u(e,n);return t.addEventListener(o,i),function(){t.removeEventListener(o,i)}}export{u as createKeybindingsHandler,a as parseKeybinding,c as tinykeys};\n//# sourceMappingURL=tinykeys.module.js.map\n","import {tinykeys, createKeybindingsHandler, type KeyBindingMap, type KeyBindingHandlerOptions} from 'tinykeys';\nimport {$, type Selector, Cash} from '../cash';\n\nexport type HotkeysBindingOptions = KeyBindingHandlerOptions & {\n scope?: string;\n event?: 'keydown' | 'keyup' | 'keypress';\n when?: (event: KeyboardEvent) => boolean;\n};\n\nexport type HotkeysBindingMap = KeyBindingMap;\n\nexport type HotkeyBindingCallback = (event: KeyboardEvent) => void;\n\nexport type HotkeySetting = {\n keys: string | string[];\n handler: HotkeyBindingCallback;\n optional?: boolean;\n};\n\nexport type HotkeyName = string;\n\nexport type HotkeysMap = Record;\n\nexport type HotkeysSettings = boolean | Record;\n\nexport function getHotkeysMap(settings: HotkeysSettings, defaultMap: HotkeysMap = {}): HotkeysBindingMap | undefined {\n if (!settings) {\n return;\n }\n\n const map = Object.keys(defaultMap).reduce((currentMap, name) => {\n if (!defaultMap[name].optional) {\n currentMap[name] = {\n ...defaultMap[name],\n };\n }\n return currentMap;\n }, {});\n Object.keys(settings).forEach((name) => {\n const setting = (settings as Record)[name];\n if (!setting) {\n delete map[name];\n } else if (setting === true) {\n if (defaultMap[name]) {\n map[name] = {\n ...defaultMap[name],\n };\n }\n } else {\n map[name] = setting;\n }\n });\n\n return Object.keys(map).reduce((bindingMap, name) => {\n const {keys, handler} = map[name];\n if (typeof keys === 'string') {\n bindingMap[keys] = handler;\n } else {\n keys.forEach((key) => {\n bindingMap[key] = handler;\n });\n }\n return bindingMap;\n }, {});\n}\n\nexport function bindHotkeys(selector: Selector, bindingMap: HotkeysBindingMap, options?: HotkeysBindingOptions) {\n const {timeout, event = 'keydown', scope, when} = options || {};\n const handler = createKeybindingsHandler(bindingMap, {timeout});\n const namespace = `.zui.hotkeys${scope ? `.${scope}` : ''}`;\n const composingDataKey = 'zui-hotkeys-composing';\n return $(selector).on(`${event}${namespace}`, function (e: KeyboardEvent) {\n if (when && when(e) === false) {\n return;\n }\n if ($(e.target as HTMLElement).data(composingDataKey)) {\n return;\n }\n handler(e);\n }).on(`compositionstart${namespace}`, (e: Event) => {\n $(e.target as HTMLElement).data(composingDataKey, true);\n }).on(`compositionend${namespace}`, (e: Event) => {\n $(e.target as HTMLElement).removeData(composingDataKey);\n });\n}\n\nexport function unbindHotkeys(selector: Selector, scope?: string) {\n return $(selector).off(`.zui.hotkeys${scope ? `.${scope}` : ''}`);\n}\n\nexport const hotkeys = tinykeys;\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n hotkeys(bindingMap: HotkeysBindingMap, options?: HotkeysBindingOptions): void;\n\n unbindHotkeys(scope?: string): void;\n }\n\n interface Cash {\n hotkeys(bindingMap: HotkeysBindingMap, options?: HotkeysBindingOptions): Cash;\n\n unbindHotkeys(scope?: string): Cash;\n }\n}\n\n/* Extend $.fn.hotkeys(). */\n$.fn.hotkeys = function (this: Cash, bindingMap: HotkeysBindingMap, options?: HotkeysBindingOptions): Cash {\n return bindHotkeys(this, bindingMap, options);\n};\n\n/* Extend $.fn.unbindHotkeys. */\n$.fn.unbindHotkeys = function (this: Cash, scope?: string): Cash {\n return unbindHotkeys(this, scope);\n};\n\n/* Extend $.hotkeys(). */\n$.hotkeys = function (bindingMap: HotkeysBindingMap, options?: HotkeysBindingOptions): void {\n bindHotkeys(window, bindingMap, options);\n};\n\n/* Extend $.unbindHotkeys. */\n$.unbindHotkeys = function (scope?: string): void {\n unbindHotkeys(window, scope);\n};\n","import {$, Cash, type Selector} from '../cash';\n\nexport type EnterFullscreenOptions = {\n target: Selector;\n onError?: (error: Error) => void;\n onSuccess?: () => void;\n afterEnter?: (event: Event) => void;\n afterExit?: (event: Event) => void;\n};\n\nexport function getFullscreenElement() {\n return document.fullscreenElement || (document as {webkitFullscreenElement?: typeof document.fullscreenElement}).webkitFullscreenElement || (document as {mozFullScreenElement?: typeof document.fullscreenElement}).mozFullScreenElement;\n}\n\nexport async function enterFullscreen(options: Selector | EnterFullscreenOptions) {\n if (typeof options === 'string' || options instanceof Element || options instanceof $) {\n options = {target: options as Selector};\n }\n const {target, onError, onSuccess, afterExit, afterEnter} = options as EnterFullscreenOptions;\n const $target = $(target);\n const element = $target[0] as Element;\n if (!element) {\n return;\n }\n const requestMethod = element.requestFullscreen || (element as {webkitRequestFullscreen?: typeof element.requestFullscreen}).webkitRequestFullscreen || (element as {mozRequestFullScreen?: typeof element.requestFullscreen}).mozRequestFullScreen;\n if (!requestMethod) {\n onError?.call(element, new Error('[ZUI] The browser does not support full screen feature.'));\n return;\n }\n\n try {\n await requestMethod.call(element);\n onSuccess?.call(element);\n $(element).off('.zui.fullscreen');\n if (afterExit) {\n $target.on('exitFullscreen.zui.fullscreen', afterExit);\n }\n if (afterEnter) {\n $target.on('enterFullscreen.zui.fullscreen', afterEnter);\n }\n } catch (error) {\n onError?.call(element, error as Error);\n }\n\n if (!(document as {zuiBindFullscreenChange?: boolean}).zuiBindFullscreenChange) {\n (document as {zuiBindFullscreenChange?: boolean}).zuiBindFullscreenChange = true;\n $(document).on('fullscreenchange.zui webkitfullscreenchange.zui mozfullscreenchange.zui', (event) => {\n const fullscreenElement = getFullscreenElement();\n let triggerElement: Element | Document | null | undefined = fullscreenElement;\n if (fullscreenElement) {\n $(fullscreenElement).addClass('is-in-fullscreen');\n } else {\n triggerElement = $(document).find('.is-in-fullscreen')[0] || document;\n $(triggerElement).removeClass('is-in-fullscreen');\n }\n $('body').toggleClass('has-in-fullscreen', !!fullscreenElement);\n const data = {event, target: triggerElement, fullscreenElement};\n $(triggerElement).trigger(fullscreenElement ? 'enterFullscreen' : 'exitFullscreen', data).trigger('toggleFullscreen', data);\n });\n }\n}\n\nexport async function toggleFullscreen(options?: Selector | EnterFullscreenOptions | false) {\n const fullscreenElement = getFullscreenElement();\n if (options === false) {\n if (!!fullscreenElement === options) {\n return options;\n }\n }\n\n if (fullscreenElement) {\n document.exitFullscreen();\n return false;\n }\n await enterFullscreen(options);\n return true;\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n fullscreen(this: Cash, options?: EnterFullscreenOptions | false): Promise;\n }\n\n interface CashStatic {\n getFullscreenElement: typeof getFullscreenElement;\n toggleFullscreen: typeof toggleFullscreen;\n }\n}\n\n/** Extend the $.fn.fullscreen. */\n$.fn.fullscreen = function (this: Cash, options?: EnterFullscreenOptions | false) {\n return toggleFullscreen({\n target: this,\n ...options,\n });\n};\n\n/** Extend the $.getFullscreenElement. */\n$.getFullscreenElement = getFullscreenElement;\n\n/** Extend the $.toggleFullscreen. */\n$.toggleFullscreen = toggleFullscreen;\n","import {$, Cash} from '../cash';\n\n/**\n * Check whether the element is detached from document.\n * @param element The element to check.\n * @returns Whether the element is detached from document.\n */\nexport function isElementDetached(element: Node): boolean {\n if (element.parentNode === document) {\n return false;\n }\n if (!element.parentNode) {\n return true;\n }\n return isElementDetached(element.parentNode);\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n isDetached(element: Node): boolean;\n }\n\n interface Cash {\n isDetached(): boolean;\n }\n}\n\n/* Extend $.isDetached. */\n$.isDetached = isElementDetached;\n\n/* Extend as $.fn.isDisabled(). */\n$.fn.isDetached = function (this: Cash) {\n const element = this[0];\n return !element || isElementDetached(element);\n};\n","import {I18nLangMap, i18n} from '../i18n';\nimport {$} from '../cash';\nimport {nextGid} from '../helpers';\nimport {isElementDetached} from '../dom/is-detached';\n\nimport type {Cash, Element, Selector} from '../cash';\nimport type {ComponentEventArgs, ComponentEventName, ComponentOptions, ComponentEvents, ComponentEventsDefnition, ComponentToggleConfig} from './types';\n\n/**\n * The event callback for component.\n */\nexport type ComponentEventCallback> = (event: N extends keyof HTMLElementEventMap ? HTMLElementEventMap[N] : Event, args: [Component, ComponentEventArgs]) => void | false;\n\n/**\n * The component base class.\n */\nexport class Component {\n /**\n * The default options.\n */\n static DEFAULT = {};\n\n /**\n * The component name.\n * It usually equals to the class name.\n * The name must be provided in subclass.\n */\n static NAME: string;\n\n /**\n * Whether the component supports multiple instances.\n */\n static MULTI_INSTANCE = false;\n\n /**\n * The component i18n data.\n * It will be merged with global i18n data.\n */\n static i18n: I18nLangMap | undefined;\n\n /**\n * The component toggle config.\n */\n static toggle: ComponentToggleConfig | undefined;\n\n /**\n * ZUI name\n */\n static get ZUI() {\n return this.NAME.replace(/(^[A-Z]+)/, (match) => match.toLowerCase());\n }\n\n /**\n * Component data key, like \"zui.menu\"\n */\n static get KEY(): `zui.${string}` {\n return `zui.${this.NAME}`;\n }\n\n /**\n * Component namespace, like \".zui.menu\"\n */\n static get NAMESPACE(): `.zui.${string}` {\n return `.zui.${this.ZUI}`;\n }\n\n /**\n * @deprecated Use ATTR_KEY instead.\n */\n static get DATA_KEY(): `data-zui-${string}` {\n return `data-zui-${this.NAME}`;\n }\n\n /**\n * Component attribute key, like \"z-use-menu\"\n */\n static get ATTR_KEY(): `z-use-${string}` {\n return `z-use-${this.NAME}`;\n }\n\n /**\n * The component default selector.\n */\n static get SELECTOR() {\n return `[${this.DATA_KEY}]`;\n }\n\n /**\n * Access to static properties via this.constructor.\n *\n * @see https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-337560146\n */\n declare ['constructor']: typeof Component;\n\n /**\n * Store the component options.\n */\n private _options?: ComponentOptions;\n\n /**\n * Store the component element.\n */\n private _element?: U;\n\n /**\n * The component global ID.\n */\n private _gid: number;\n\n /**\n * The component key.\n */\n protected _key: string | number;\n\n /**\n * The component initialized flag.\n */\n private _inited = false;\n\n /**\n * Auto destroy flag.\n */\n private _autoDestory = 0;\n\n /**\n * The component destroyed flag.\n */\n protected _destroyed = false;\n\n /**\n * The component constructor.\n *\n * @param options The component initial options.\n */\n constructor(selector: Selector, options?: Partial>) {\n const {KEY, DATA_KEY, DEFAULT, MULTI_INSTANCE, NAME, ATTR_KEY, ALL, TYPED_ALL} = this.constructor;\n\n if (!NAME) {\n throw new Error('[ZUI] The component must have a \"NAME\" static property.');\n }\n\n const $element = $(selector);\n if ($element.data(KEY) && !MULTI_INSTANCE) {\n throw new Error(`[ZUI] The component \"${NAME}\" has been initialized on element.`);\n }\n\n const element = $element[0] as U;\n const gid = nextGid();\n this._gid = gid;\n this._element = element;\n\n this._options = {...DEFAULT, ...(options?.$optionsFromDataset !== false ? $element.dataset() : {})} as ComponentOptions;\n this.setOptions(options);\n this._key = this.options.key ?? `__${gid}`;\n\n if (ALL.has(element)) {\n ALL.get(element)!.add(this);\n } else {\n ALL.set(element, new Set([this]));\n }\n\n if (TYPED_ALL.has(NAME)) {\n TYPED_ALL.get(NAME)!.add(this);\n } else {\n TYPED_ALL.set(NAME, new Set([this]));\n }\n\n $element.data(KEY, this).attr(ATTR_KEY, '').attr(DATA_KEY, `${gid}`);\n if (MULTI_INSTANCE) {\n const dataName = `${KEY}:ALL`;\n let instanceMap: Map | undefined = $element.data(dataName);\n if (!instanceMap) {\n instanceMap = new Map();\n $element.data(dataName, instanceMap);\n }\n instanceMap.set(this._key, this);\n }\n\n this.init();\n requestAnimationFrame(async () => {\n this._inited = true;\n await this.afterInit();\n this.emit('inited', this.options);\n });\n }\n\n /**\n * Get the component initialized flag.\n */\n get inited() {\n return this._inited;\n }\n\n /**\n * Get the component destroyed flag.\n */\n get destroyed() {\n return this._destroyed;\n }\n\n /**\n * Get the component element.\n */\n get element() {\n return this._element!;\n }\n\n get key() {\n return this._key;\n }\n\n /**\n * Get the component options.\n */\n get options() {\n return this._options!;\n }\n\n /**\n * Get the component global id.\n */\n get gid() {\n return this._gid;\n }\n\n /**\n * Get the component element as a jQuery like object.\n */\n get $element() {\n return $(this.element);\n }\n\n /**\n * Get the component event emitter.\n */\n get $emitter() {\n return this.$element;\n }\n\n /**\n * Get the component i18n data.\n */\n get i18nData(): (I18nLangMap | undefined)[] {\n return [this.options.i18n, this.constructor.i18n];\n }\n\n /**\n * Initialize the component.\n */\n init() {}\n\n /**\n * Do something after the component initialized.\n */\n afterInit(): void | Promise {}\n\n /**\n * Render the component.\n *\n * @param options The component options to override before render.\n */\n render(options?: Partial>, reset?: boolean) {\n this.setOptions(options, reset);\n }\n\n /**\n * Destroy the component.\n */\n destroy() {\n const {KEY, DATA_KEY, ALL, TYPED_ALL, NAME, MULTI_INSTANCE, ATTR_KEY} = this.constructor;\n const {$element, element} = this;\n\n (this.emit as ((event: string, ...args: unknown[]) => void))('destroyed');\n\n this._destroyed = true;\n\n $element\n .off(this.namespace)\n .removeData(KEY)\n .removeAttr(ATTR_KEY)\n .removeAttr(DATA_KEY);\n\n if (MULTI_INSTANCE) {\n const map = this.$element.data(`${KEY}:ALL`) as Map>;\n if (map) {\n map.delete(this._key);\n if (map.size === 0) {\n this.$element.removeData(`${KEY}:ALL`);\n } else {\n const nextInstance = map.values().next().value;\n $element.data(KEY, nextInstance).attr(DATA_KEY, nextInstance.gid);\n }\n }\n }\n\n const map = ALL.get(element);\n if (map) {\n map.delete(this);\n if (map.size === 0) {\n ALL.delete(element);\n }\n }\n\n const typedMap = TYPED_ALL.get(NAME);\n if (typedMap) {\n typedMap.delete(this);\n if (typedMap.size === 0) {\n TYPED_ALL.delete(NAME);\n }\n }\n }\n\n /**\n * Auto destroy the component when detached.\n */\n autoDestroy(delay = 100) {\n if (this._autoDestory) {\n clearTimeout(this._autoDestory);\n }\n this._autoDestory = window.setTimeout(() => {\n this._autoDestory = 0;\n if (isElementDetached(this.element)) {\n this.destroy();\n }\n }, delay);\n }\n\n /**\n * Set the component options.\n *\n * @param options The component options to set.\n * @returns The component options.\n */\n setOptions(options?: Partial>, reset?: boolean): ComponentOptions {\n if (reset) {\n this._options = {\n ...this.constructor.DEFAULT,\n ...(options?.$optionsFromDataset !== false ? this.$element.dataset() : {}),\n ...options,\n } as ComponentOptions;\n } else if (options) {\n $.extend(this._options, options);\n }\n return this._options!;\n }\n\n /**\n * Emit a component event.\n * @param event The event name.\n * @param args The event arguments.\n */\n emit>(event: N, ...args: ComponentEventArgs): Event {\n const eventObject = $.Event(event);\n (eventObject as unknown as {__src?: unknown}).__src = this;\n this.$emitter.trigger(eventObject, [this, ...args]);\n return eventObject as unknown as Event;\n }\n\n /**\n * Listen to a component event.\n *\n * @param event The event name.\n * @param callback The event callback.\n */\n on>(event: N | (string & {}), callback: ComponentEventCallback, options?: {once?: boolean}) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const component = this;\n this.$element[options?.once ? 'one' : 'on'](this._wrapEvent(event), function (this: Component, e: N extends keyof HTMLElementEventMap ? HTMLElementEventMap[N] : Event, info: [Component, ComponentEventArgs]) {\n if (!(e as {__src?: unknown}).__src || (e as {__src?: unknown}).__src === component) {\n callback.call(this, e, info);\n }\n });\n }\n\n /**\n * Listen to a component event.\n *\n * @param event The event name.\n * @param callback The event callback.\n */\n one>(event: N, callback: ComponentEventCallback) {\n this.on(event, callback, {once: true});\n }\n\n /**\n * Stop listening to a component event.\n * @param event The event name.\n * @param callback The event callback.\n */\n off>(event: N | (string & {})) {\n this.$element.off(this._wrapEvent(event));\n }\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param defaultValue The default value if the key is not found.\n */\n i18n(key: string, defaultValue?: string): string;\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param args The i18n arguments.\n * @param defaultValue The default value if the key is not found.\n */\n i18n(key: string, args?: (string | number)[], defaultValue?: string): string;\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param args The i18n arguments.\n * @param defaultValue The default value if the key is not found.\n */\n i18n(key: string, args?: Record, defaultValue?: string): string;\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param args The i18n arguments or the default value.\n * @param defaultValue The default value if the key is not found.\n * @returns The i18n text.\n */\n i18n(key: string, args?: string | (string | number)[] | Record, defaultValue?: string): string {\n const {i18nData} = this;\n return i18n(i18nData, key, args, defaultValue, this.options.lang, this.constructor.NAME)\n ?? i18n(i18nData, key, args, defaultValue, this.options.lang)\n ?? `{i18n:${key}}`;\n }\n\n /**\n * Get event namespace.\n * @returns Event namespace.\n */\n get namespace(): `.zui.${string}` {\n return `${this.constructor.NAMESPACE}.${this._key}`;\n }\n\n /**\n * Wrap event names with component namespace.\n *\n * @param names The event names.\n * @returns The wrapped event names.\n */\n protected _wrapEvent(names: string) {\n return names.split(' ').map(name => name.includes('.') ? name : `${name}${this.namespace}`).join(' ');\n }\n\n static ALL = new Map>();\n\n static TYPED_ALL = new Map>();\n\n /**\n * Get the component instance of the given element.\n *\n * @param this Current component constructor.\n * @param selector The component element selector.\n * @returns The component instance.\n */\n static get>(this: T, selector: Selector, key?: string | number): InstanceType | undefined {\n const $element = $(selector);\n if (this.MULTI_INSTANCE && key !== undefined) {\n const instanceMap = $element.data(`${this.KEY}:ALL`);\n if (instanceMap) {\n return instanceMap.get(key);\n }\n return;\n }\n return $element.data(this.KEY);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static isValid>(this: T, _instance: InstanceType): boolean {\n return true;\n }\n\n /**\n * Ensure the component instance of the given element.\n *\n * @param this Current component constructor.\n * @param selector The component element selector.\n * @param options The component options.\n * @returns The component instance.\n */\n static ensure>(this: T, selector: Selector, options?: Partial>): InstanceType {\n const instance = this.get(selector, options?.key);\n if (instance) {\n if (this.isValid(instance)) {\n if (options) {\n instance.setOptions(options);\n }\n return instance;\n } else {\n instance.destroy();\n }\n }\n return new this(selector, options) as InstanceType;\n }\n\n /**\n * Get all component instances.\n *\n * @param this Current component constructor.\n * @param selector The component element selector.\n * @returns All component instances.\n */\n static getAll>(this: T, selector?: Selector, filter?: (instance: InstanceType) => boolean): InstanceType[] {\n const {SELECTOR, ALL, TYPED_ALL} = this;\n const list: InstanceType[] = [];\n const checkInstance = (instance: Component) => {\n if (instance instanceof this && (!filter || filter(instance as InstanceType) !== false)) {\n list.push(instance as InstanceType);\n }\n };\n if (selector) {\n $(selector)\n .find(SELECTOR)\n .each((_, element) => {\n ALL.get(element)?.forEach(checkInstance);\n });\n } else if (this !== Component) {\n TYPED_ALL.get(this.NAME)?.forEach(checkInstance);\n } else {\n ALL.forEach((components) => {\n components.forEach(checkInstance);\n });\n }\n return list.sort((a, b) => a.gid - b.gid);\n }\n\n /**\n * Query the component instance.\n *\n * @param this Current component constructor.\n * @param selector The component element selector.\n * @returns The component instance.\n */\n static query>(this: T, selector?: Selector, key?: string | number, filter?: (instance: InstanceType) => boolean): InstanceType | undefined {\n if (selector === undefined) {\n return this.getAll(undefined, filter).pop();\n }\n return this.get($(selector).closest(this.SELECTOR), key);\n }\n\n /**\n * Create cash fn.method for current component.\n *\n * @param name The method name.\n */\n static defineFn(name?: string) {\n let fnName = (name || this.ZUI) as keyof Cash;\n if ($.fn[fnName]) {\n fnName = `zui${this.NAME}` as keyof Cash;\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const ZUIComponent = this;\n $.fn.extend({\n [fnName](options: Partial> | string, ...args: unknown[]) {\n const initOptions = typeof options === 'object' ? options : undefined;\n const callMethod = typeof options === 'string' ? options : undefined;\n let callResult: unknown;\n this.each((_: number, element: Element) => {\n let instance = ZUIComponent.get(element);\n if (instance) {\n if (initOptions) {\n instance.render(initOptions);\n }\n } else {\n instance = new ZUIComponent(element, initOptions);\n }\n if (callMethod) {\n let method: ((...args: unknown[]) => void) = (instance as unknown as Record void>)[callMethod];\n let callThis: unknown = instance;\n if (method === undefined) {\n callThis = (instance as unknown as {$: Record void>}).$;\n method = (callThis as Record void>)[callMethod as string];\n }\n if (typeof method === 'function') {\n callResult = method.call(callThis, ...args);\n } else {\n callResult = method;\n }\n }\n });\n return callResult !== undefined ? callResult : this;\n },\n });\n }\n\n static map = new Map();\n\n static toggleMap = new Map();\n\n static register(ComponentClass?: typeof Component, name?: string) {\n ComponentClass = ComponentClass || this;\n name = (name ?? ComponentClass.NAME).toLowerCase();\n this.map.set(name, ComponentClass);\n\n const toggleName = ComponentClass.toggle?.name?.toLowerCase();\n if (toggleName && toggleName !== name) {\n this.toggleMap.set(toggleName, ComponentClass);\n }\n }\n}\n","import {$, Cash} from '../cash';\nimport {type GetLibOptions} from '../dom';\nimport {evalValue} from '../helpers';\nimport {storeData, takeData} from '../helpers/data';\nimport {getZData} from '../helpers/z';\nimport {Component} from './component';\n\nimport type {ComponentOptions} from './types';\n\nexport type ComponentClass = typeof Component;\n\nexport type ComponentCreateOptions = ComponentOptions & {\n $update?: boolean | 'reset';\n $reset?: boolean;\n};\n\nexport type ZUIInitOptions = {\n update?: boolean | 'reset';\n beforeCreate?: BeforeCreateCallback;\n onCreate?: OnCreateCallback;\n};\n\nexport function getComponent(name: string): ComponentClass | undefined {\n return Component.map.get(name.toLowerCase());\n}\n\nexport function create(name: string, element: HTMLElement, options: ComponentCreateOptions = {}) {\n let TheComponentClass = getComponent(name);\n if (!TheComponentClass) {\n TheComponentClass = initGlobalComponents(name);\n }\n if (!TheComponentClass) {\n return null;\n }\n const {$update, ...componentOptions} = options;\n if (!TheComponentClass.MULTI_INSTANCE) {\n const component = TheComponentClass.get(element);\n if (component) {\n if ($update) {\n component.render(componentOptions, $update === 'reset');\n }\n return component;\n }\n }\n return new TheComponentClass(element, componentOptions);\n}\n\nfunction createInAnimationFrame(name: string, element: HTMLElement, options: ComponentCreateOptions = {}) {\n requestAnimationFrame(() => create(name, element, options));\n}\n\nexport function registerComponent(component: ComponentClass, name?: string) {\n Component.register(component, name);\n}\n\nexport function initGlobalComponents(name?: string): ComponentClass | undefined {\n const {zui} = window as unknown as {zui: Record};\n if (!zui) {\n return;\n }\n name = name?.toLowerCase();\n for (const n in zui) {\n const isMatch = n.toLowerCase() === name;\n if (name && !isMatch) {\n continue;\n }\n const TheComponentClass = zui[n];\n if (typeof TheComponentClass !== 'function' || !TheComponentClass.NAME || !TheComponentClass.ZUI) {\n continue;\n }\n if (!Component.map.has(n.toLowerCase())) {\n registerComponent(TheComponentClass);\n }\n if (isMatch) {\n return TheComponentClass;\n }\n }\n}\n\nexport function defineFn(name?: string) {\n if (name) {\n getComponent(name)?.defineFn();\n } else if (!(window as unknown as {_zuiDefined: Record})._zuiDefined) {\n initGlobalComponents();\n Component.map.forEach((TheComponentClass) => {\n TheComponentClass.defineFn();\n });\n Object.assign(window, {_zuiDefined: true});\n }\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n zuiInit(this: Cash, options?: ZUIInitOptions): Cash;\n zui(this: Cash, name?: string, key?: string | number | true): ComponentClass | ComponentClass[] | Record | undefined;\n zuiCall(this: Cash, method: string, args?: unknown[]): Cash;\n }\n}\n\nexport type BeforeCreateCallback = (element: HTMLElement) => boolean | void;\n\nexport type OnCreateCallback = (name: string, options: Record) => false | Record | void;\n\n/**\n * Create zui component instance from elements which match [zui-create], [data-zui], [data-zui] is deprecated, use [zui-create] instead.\n * 为匹配 [zui-create], [data-zui] 的元素创建 zui 组件实例,[data-zui] 被弃用,优先使用 [zui-create]。\n *\n * @param element - The element to create zui components. 要创建 zui 组件的元素。\n * @param options - The options. 选项。\n *\n * @example\n * ```html\n *
    \n * \n * Create multiple components\n *\n *
    Deprecated usage
    \n * ```\n */\nfunction initCreators(element: HTMLElement, options: ZUIInitOptions = {}): void {\n const $element = $(element);\n let createNames = $element.attr('zui-create');\n const {update: $update, onCreate} = options;\n const createInstance = (name: string, createOptions?: Record) => {\n createOptions = {\n $update,\n $optionsFromDataset: false,\n ...createOptions,\n };\n if (onCreate) {\n const newCreateOptions = onCreate(name, createOptions);\n if (newCreateOptions === false) {\n return;\n }\n if (newCreateOptions) {\n createOptions = newCreateOptions;\n }\n }\n const $lib = createOptions.$lib as (GetLibOptions | undefined);\n if ($lib) {\n delete createOptions.$lib;\n $.getLib($lib).then(() => create(name, element, createOptions));\n return;\n }\n createInAnimationFrame(name, element, createOptions);\n };\n if (typeof createNames === 'string') {\n createNames = createNames.trim();\n const names = createNames.length ? createNames.split(',').map((name) => name.trim()) : [];\n const createOptionsMap = getZData(element, {prefix: 'zui-create-', evalValue: true})!;\n const createOptionsNames = Object.keys(createOptionsMap);\n if (!createOptionsNames.length && names.length === 1) {\n createInstance(names[0], $element.dataset());\n } else {\n const initedNames = new Set();\n [...names, ...createOptionsNames].forEach(name => {\n if (initedNames.has(name)) {\n return;\n }\n const createOptions = createOptionsMap[name] as ComponentCreateOptions | undefined;\n createInstance(name, createOptions);\n delete createOptionsMap[name];\n initedNames.add(name);\n });\n }\n } else {\n const initOptions = $element.dataset();\n const name = initOptions?.zui as string;\n if (!name) {\n return;\n }\n console.warn('[ZUI] create component instance with [data-zui] is deprecated, use [zui-create] instead.', {element, options});\n delete initOptions!.zui;\n createInstance(name, initOptions);\n }\n}\n\n/**\n * Bind toggle events.\n */\nfunction bindToggleEvents() {\n $(document).on('click.zui.toggle mouseenter.zui.toggle', '[data-toggle],[zui-toggle]', function (this: HTMLElement, event) {\n const $this = $(this);\n const toggleName = ($this.dataset('toggle') || $this.attr('zui-toggle')) as string;\n if (!toggleName) {\n return;\n }\n const TheComponentClass = Component.toggleMap.get(toggleName) || getComponent(toggleName);\n const toggleConfig = TheComponentClass?.toggle;\n if (!toggleConfig) {\n return;\n }\n\n const {trigger = 'click', skip = '[disabled],.disabled', check} = toggleConfig;\n const eventTriggerType = event.type === 'mouseover' ? 'hover' : 'click';\n if (!trigger.includes(eventTriggerType) || (check && !check.call(TheComponentClass, this, eventTriggerType, event)) || (skip && $this.is(skip))) {\n return;\n }\n\n const {onGet, onCreate, setOptions = true, getOptions, prevent = true, handler, onToggle, convertHref} = toggleConfig;\n let options = $this.dataset() as Record;\n const toggleOptions = $this.attr(`zui-toggle-${toggleName}`);\n if (toggleOptions) {\n options = $.extend(options, evalValue(toggleOptions));\n }\n if (convertHref && $this.is('a')) {\n const href = $this.attr('href');\n if (href) {\n const hrefMap = convertHref === true ? {selector: 'target', url: 'url'} : convertHref;\n if ('#.'.includes(href[0])) {\n if (hrefMap.selector && options[hrefMap.selector] === undefined) {\n options[hrefMap.selector] = href;\n }\n } else if (hrefMap.url && options[hrefMap.url] === undefined) {\n options[hrefMap.url] = href;\n }\n }\n }\n if (getOptions) {\n options = getOptions.call(TheComponentClass, this, options, event);\n }\n\n if (handler) {\n handler.call(TheComponentClass, this, options, eventTriggerType, event);\n if (prevent) {\n event.preventDefault();\n }\n return;\n }\n\n let component = onGet ? onGet.call(TheComponentClass, this) : TheComponentClass.get(this);\n if (!component) {\n const newComponent = onCreate ? onCreate.call(TheComponentClass, this, event, options) : (new TheComponentClass(this, options));\n if (!newComponent) {\n return;\n }\n component = newComponent;\n } else if (setOptions) {\n component.setOptions(options);\n }\n\n if (onToggle) {\n if (onToggle.call(TheComponentClass, component, this, event) === false) {\n return;\n }\n } else {\n const {shown, show, hide, toggle: toggleFunc} = component as unknown as {\n shown?: boolean,\n show?: () => void,\n hide?: () => void,\n toggle?: () => void,\n };\n\n let func: (() => void) | undefined;\n if (toggleFunc) {\n func = toggleFunc;\n } else if (show && hide) {\n if (shown) {\n func = hide;\n } else {\n func = show;\n }\n } else if (show) {\n func = show;\n }\n if (func) {\n func.call(component);\n } else {\n return;\n }\n }\n\n if (prevent) {\n event.preventDefault();\n }\n });\n}\n\nfunction getComponentsOnElement(element: HTMLElement, forEach?: (component: Component, dataKey: string) => void | boolean): Component[] {\n const data = takeData(element) as Record;\n const components: Component[] = [];\n Object.keys(data).forEach((dataKey) => {\n if (!dataKey.startsWith('zui.')) {\n return;\n }\n const component = data[dataKey] as Component;\n if (forEach?.(component, dataKey) === false) {\n return;\n }\n components.push(data[dataKey] as Component);\n });\n return components;\n}\n\nlet checkComponentsTimer = 0;\n\nfunction checkComponents(delay = 100) {\n if (checkComponentsTimer) {\n clearTimeout(checkComponentsTimer);\n }\n if (delay) {\n checkComponentsTimer = window.setTimeout(() => checkComponents(0), delay);\n return;\n }\n checkComponentsTimer = 0;\n Component.ALL.forEach((components) => {\n components.forEach((component) => component.autoDestroy());\n });\n}\n\nfunction autoDestroyComponents() {\n if (takeData(document.body, '_autoDestoryMob')) {\n return;\n }\n const mob = new MutationObserver((mutations) => {\n let hasRemovedNodes = false;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length) {\n hasRemovedNodes = true;\n break;\n }\n }\n\n if (hasRemovedNodes) {\n checkComponents();\n }\n });\n mob.observe(document.body, {childList: true, subtree: true});\n storeData(document.body, '_autoDestoryMob', mob);\n}\n\n/** Define the $.fn.zuiInit method. */\n$.fn.zuiInit = function (this: Cash, options?: ZUIInitOptions) {\n this.find('[zui-create],[data-zui]').each(function () {\n if (options?.beforeCreate?.(this) === false) {\n return;\n }\n initCreators(this, options);\n });\n this.find('[zui-init]').each(function () {\n if (this.hasAttribute('z-zui-inited')) {\n return;\n }\n this.setAttribute('z-zui-inited', '');\n $.runJS(this.getAttribute('zui-init')!, ['$element', $(this)]);\n });\n this.find('.hide-before-init').removeClass('invisible hidden opacity-0');\n this.find('.scroll-into-view').scrollIntoView();\n this.find('[data-on=\"inited\"],[zui-on-inited]').each((_, ele) => {\n const $ele = $(ele);\n if (!$ele.zui()) {\n $ele.trigger('inited');\n }\n });\n return this;\n};\n\n/** Define the $.fn.zui method. */\n$.fn.zui = function (this: Cash, name?: string | true, key?: string | number | true) {\n const element = this[0];\n if (!element) {\n return;\n }\n if (typeof name !== 'string') {\n const result: Record = {};\n let lastComponent: Component | undefined;\n getComponentsOnElement(element, (component, dataKey) => {\n result[dataKey] = component;\n if (!lastComponent || lastComponent.gid < component.gid) {\n lastComponent = result[dataKey];\n }\n });\n return name === true ? result : lastComponent;\n }\n const TheComponentClass = getComponent(name);\n if (!TheComponentClass) {\n return $(element).data(`zui.${name}`);\n }\n if (key === true) {\n return TheComponentClass.getAll(element);\n }\n return TheComponentClass.query(element, key);\n};\n\n$.fn.zuiCall = function (this: Cash, componentMethod: string, args: unknown[] = []) {\n this.each(function () {\n const parts = componentMethod.split('.');\n const name = parts.length > 1 ? parts[0] : undefined;\n const method = parts[parts.length > 1 ? 1 : 0];\n const component = $(this).zui(name) as (Component | undefined);\n const methodFunc = component?.[method as keyof Component];\n if (typeof methodFunc === 'function') {\n (methodFunc as ((...args: unknown[]) => void)).apply(component, args);\n }\n });\n return this;\n};\n\n$(() => {\n // Init zui creators and call [zui-init] code.\n $('body').zuiInit({update: true});\n\n // Bind toggle events.\n bindToggleEvents();\n\n // Auto destroy components when detached.\n autoDestroyComponents();\n});\n","import {Component} from '../component';\n\nexport type StickyOptions = {\n side?: 'top' | 'bottom';\n offset?: number;\n zIndex?: number;\n pinnedClass?: string;\n targets?: string;\n scrollContainer?: string;\n};\n\nexport class Sticky extends Component {\n static NAME = 'Sticky';\n\n protected declare _ob: IntersectionObserver;\n\n protected declare _container: HTMLElement;\n\n protected declare _scrollListener: () => void;\n\n protected declare _raf: number;\n\n init() {\n const {offset = 1, side, zIndex, pinnedClass = 'is-pinned', targets, scrollContainer} = this.options;\n const {$element} = this;\n const $targets = targets ? $element.find(targets) : $element;\n $targets.css({position: 'sticky', zIndex});\n if (side) $targets.css(side, -offset);\n\n if (scrollContainer) {\n const container = $element.closest(scrollContainer)[0] as HTMLElement;\n if (container) {\n const listener = () => {\n if (this._raf) {\n cancelAnimationFrame(this._raf);\n }\n this._raf = requestAnimationFrame(() => {\n this._raf = 0;\n if (container.scrollTop === 0 && (!side || side === 'top')) {\n $targets.toggleClass(pinnedClass, false);\n return;\n }\n const containerRect = container.getBoundingClientRect();\n $targets.each((_, target) => {\n const rect = target.getBoundingClientRect();\n const pinned = rect[side || 'top'] === containerRect[side || 'top'];\n target.classList.toggle(pinnedClass, pinned);\n });\n });\n };\n this._scrollListener = listener;\n container.addEventListener('scroll', listener);\n }\n this._container = container;\n } else {\n this._ob = new IntersectionObserver(\n (entries) => {\n entries.forEach(e => {\n e.target.classList.toggle(pinnedClass, e.intersectionRatio < offset);\n });\n },\n {threshold: [1]},\n );\n\n $targets.each((_, e) => this._ob.observe(e));\n }\n }\n\n destroy() {\n this._ob?.disconnect();\n if (this._container) {\n this._container.removeEventListener('scroll', this._scrollListener);\n if (this._raf) {\n cancelAnimationFrame(this._raf);\n }\n }\n }\n}\n","import {$, Cash, Selector, Comparator} from '../cash';\n\n/**\n * Options for {@link isVisible}.\n */\ntype ISVisibleOptions = {\n /** Whether to check if the element is fully visible. */\n fullyCheck?: boolean;\n viewport?: {left: number, top: number, width: number, height: number} | DOMRectReadOnly;\n container?: Comparator;\n checkZeroSize?: boolean;\n};\n\n/**\n * Check an element whethear is visible in the current viewport.\n *\n * @param selector Element selector to check.\n * @param options Options.\n * @returns True if the element is visible.\n * @see https://stackoverflow.com/a/26039199\n */\nexport function isVisible(selector: Selector, options: ISVisibleOptions = {}): boolean {\n const element = $(selector)[0];\n if (!element) {\n return false;\n }\n\n let {viewport} = options;\n const {left, top, width, height} = element.getBoundingClientRect();\n if (options.checkZeroSize && !(width * height)) {\n return false;\n }\n if (!viewport) {\n if (options.container) {\n viewport = $(element).closest(options.container)[0]!.getBoundingClientRect();\n } else {\n const {innerHeight, innerWidth} = window;\n const {clientHeight, clientWidth} = document.documentElement;\n viewport = {left: 0, top: 0, width: innerWidth || clientWidth, height: innerHeight || clientHeight};\n }\n }\n const {left: viewportLeft, top: viewportTop, width: viewportWidth, height: viewportHeight} = viewport;\n if (options.fullyCheck) {\n return (\n (left >= viewportLeft)\n && (top >= viewportTop)\n && ((left + width) <= (viewportWidth + viewportLeft))\n && ((top + height) <= (viewportHeight + viewportTop))\n );\n }\n // http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap\n const horInView = (left <= (viewportLeft + viewportWidth)) && ((left + width) >= viewportLeft);\n const vertInView = (top <= (viewportTop + viewportHeight)) && ((top + height) >= viewportTop);\n\n return vertInView && horInView;\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n isVisible(options?: ISVisibleOptions): boolean;\n }\n}\n\n/* Extend as $.fn.isVisible() */\n$.fn.isVisible = function (this: Cash, options?: ISVisibleOptions) {\n return isVisible(this, options);\n};\n","import {$, Cash} from '../cash';\nimport {nextGid} from '../helpers';\n\nimport type {Selector} from '../cash';\n\n/**\n * Run javascript in an element.\n *\n * @param selector Element selector to run.\n * @param jsCode If not set, run all scripts in the element.\n */\nexport function runJS(selector: Selector, jsCode?: string | null, removeAfterRun = false) {\n const $element = $(selector);\n if (jsCode !== undefined) {\n if (typeof jsCode === 'string' && jsCode.length) {\n const id = `zui-runjs-${nextGid()}`;\n $element.append(``);\n if (removeAfterRun) {\n $element.find(`#${id}`).remove();\n }\n }\n return;\n }\n if ($element.is('script')) {\n const code = $element[0]?.textContent;\n if (code) {\n runJS($element.parent(), code);\n }\n return;\n }\n $element.find('script').each((_, script) => {\n runJS($element, (script as HTMLScriptElement).textContent);\n script.remove();\n });\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n runJS(jsCode?: string): this;\n }\n\n interface CashStatic {\n runJS(jsCode: string, ...args: [name: string, value: unknown][]): T;\n }\n}\n\n/* Extend as $.runJS() */\n$.runJS = (jsCode: string, ...args: [name: string, value: unknown][]): T => {\n jsCode = jsCode.trim();\n if (!jsCode.startsWith('return ') && !jsCode.endsWith(';')) {\n jsCode = `return ${jsCode}`;\n }\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n const func = new Function(...args.map(([name]) => name), jsCode);\n return func(...args.map(([, value]) => value));\n};\n\n/* Extend as $.fn.runJS() */\n$.fn.runJS = function (this: Cash, jsCode?: string) {\n return this.each((_, ele) => {\n runJS(ele, jsCode);\n });\n};\n","import {$, Cash, Selector, Comparator} from '../cash';\nimport {isVisible} from './is-visible';\n\n/**\n * Options for {@link scrollIntoView}.\n */\ntype CashScrollIntoViewOptions = ScrollIntoViewOptions & {\n ifNeeded?: boolean;\n container?: Comparator;\n};\n\nfunction hasScrollbar(element: HTMLElement, direction: 'vert' | 'horz' | 'both' = 'both') {\n if (direction === 'vert' || direction === 'both') {\n if (element.clientHeight < element.scrollHeight) {\n return true;\n }\n }\n\n if (direction === 'horz' || direction === 'both') {\n if (element.clientWidth < element.scrollWidth) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Scroll into view.\n *\n * @param selector Element selector to scroll into view.\n * @param options Options.\n * @returns True if the element is visible.\n * @see https://stackoverflow.com/a/26039199\n */\nexport function scrollIntoView(selector: Selector, options?: CashScrollIntoViewOptions): Cash {\n const $element = $(selector);\n const {ifNeeded = true, container, ...other} = options || {};\n $element.each((_, ele) => {\n if (container) {\n const $container = $(ele).closest(container);\n if (!$container.length || !hasScrollbar($container[0] as HTMLElement)) {\n return;\n }\n }\n if (ifNeeded) {\n if ((ele as unknown as {scrollIntoViewIfNeeded?: (options: ScrollIntoViewOptions) => void}).scrollIntoViewIfNeeded) {\n return (ele as unknown as {scrollIntoViewIfNeeded: (options: ScrollIntoViewOptions) => void}).scrollIntoViewIfNeeded(other);\n }\n if (isVisible(ele, {viewport: ele.getBoundingClientRect()})) {\n return;\n }\n }\n ele.scrollIntoView(other);\n });\n return $element;\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n scrollIntoView(options?: CashScrollIntoViewOptions): this;\n }\n}\n\n/* Extend as $.fn.scrollIntoView() */\n$.fn.scrollIntoView = function (this: Cash, options?: CashScrollIntoViewOptions) {\n return this.each((_, ele) => {\n scrollIntoView(ele, options);\n });\n};\n","import {$} from '../cash';\n\nexport type GetLibCallback = () => void;\n\nexport interface LoadJSOptions {\n src: string;\n id?: string;\n async?: boolean;\n defer?: boolean;\n noModule?: boolean;\n type?: string;\n integrity?: string;\n}\n\nexport interface LoadCSSOptions {\n src: string;\n id?: string;\n type?: 'css';\n}\n\nexport type GetLibOptions = {\n src: string | (string | LoadJSOptions | LoadCSSOptions)[];\n id?: string;\n async?: boolean;\n defer?: boolean;\n noModule?: boolean;\n type?: string;\n integrity?: string;\n name?: string;\n root?: string;\n css?: string;\n check?: string | boolean | (() => boolean | Promise);\n success?: GetLibCallback;\n};\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n libRoot?: string;\n\n libMap?: Record;\n\n setLibRoot(root: string): void;\n\n registerLib(name: string, options: GetLibOptions): void;\n\n getLib(options: GetLibOptions): Promise;\n getLib(src: string | string[]): Promise;\n getLib(src: string | string[], options: Omit): Promise;\n getLib(src: string | string[], callback: GetLibCallback): Promise;\n getLib(src: string | string[], options: GetLibCallback, callback?: GetLibCallback): Promise;\n getLib(optionsOrSrc: string | string[] | GetLibOptions, optionsOrCallback?: Omit | GetLibCallback, callback?: GetLibCallback): Promise;\n\n /**\n * @deprecated Use $.getLib instead.\n */\n getScript(optionsOrSrc: string | (GetLibOptions & {src: string}), optionsOrCallback?: Omit | GetLibCallback, callback?: GetLibCallback): Promise;\n }\n}\n\n/** Define the $.libRoot property. */\n$.setLibRoot = function (root: string): void {\n $.libRoot = root;\n};\n\n/** Define the $.libMap property. */\n$.registerLib = function (name: string, options: GetLibOptions): void {\n if (!$.libMap) {\n $.libMap = {};\n }\n if (!options.name && options.id) {\n options.id = `zui-lib-${name}`;\n }\n $.libMap[name] = options;\n};\n\n/**\n * Load a CSS file by append a link tag to the head.\n */\nfunction loadCSS(options: string | LoadCSSOptions): Promise {\n return new Promise((resolve, reject) => {\n if (typeof options === 'string') {\n options = {src: options};\n }\n const {src, id} = options;\n const $oldLinks = $(id ? `#${id}` : `link[href=\"${src}\"]`);\n if ($oldLinks.length) {\n resolve();\n return;\n }\n const link = document.createElement('link');\n link.onload = () => {\n resolve();\n };\n link.onerror = () => {\n reject(new Error(`[ZUI] Failed to load CSS from: ${src}`));\n };\n link.rel = 'stylesheet';\n link.href = src;\n if (id) {\n link.id = id;\n }\n $('head').append(link);\n });\n}\n\nfunction loadJS(options: string | LoadJSOptions): Promise {\n return new Promise((resolve, reject) => {\n if (typeof options === 'string') {\n options = {src: options};\n }\n const {src, id} = options;\n const $oldScripts = $(id ? `#${id}` : `script[src=\"${src}\"]`);\n if ($oldScripts.length) {\n if ($oldScripts.dataset('loaded')) {\n resolve();\n } else {\n const callbacks = $oldScripts.data('loadCalls') || [];\n callbacks.push(resolve);\n $oldScripts.data('loadCalls', callbacks);\n }\n return;\n }\n const {async = true, defer = false, noModule = false, type, integrity} = options;\n const script = document.createElement('script');\n script.async = async;\n script.defer = defer;\n script.noModule = noModule;\n if (type) {\n script.type = type;\n }\n if (integrity) {\n script.integrity = integrity;\n }\n\n script.onload = () => {\n resolve();\n const callbacks: GetLibCallback[] = $(script).dataset('loaded', true).data('loadCalls') || [];\n callbacks.forEach(x => x());\n $(script).removeData('loadCalls');\n };\n script.onerror = () => {\n reject(new Error(`[ZUI] Failed to load JS from: ${src}`));\n };\n $('head').append(script);\n script.src = src;\n });\n}\n\n/** Define the $.getLib method. */\n$.getLib = async function (optionsOrSrc: string | string[] | GetLibOptions, optionsOrCallback?: Omit | GetLibCallback, callback?: GetLibCallback): Promise {\n if (typeof optionsOrSrc === 'string') {\n optionsOrSrc = ($.libMap?.[optionsOrSrc] || {src: optionsOrSrc}) as GetLibOptions;\n }\n let options: GetLibOptions = Array.isArray(optionsOrSrc) ? {src: optionsOrSrc} : $.extend({}, optionsOrSrc);\n if (typeof optionsOrCallback === 'function') {\n options.success = optionsOrCallback;\n } else if (optionsOrCallback) {\n $.extend(options, optionsOrCallback);\n }\n if (callback) {\n options.success = callback;\n }\n\n let {src: srcList} = options;\n const {name, success} = options;\n const lib = ($.libMap && name) ? $.libMap[name] : null;\n if (lib) {\n options = $.extend({}, lib, options);\n srcList = lib.src || options.src;\n }\n if (typeof srcList === 'string') {\n srcList = [srcList];\n }\n if (!srcList || !srcList.length) {\n throw new Error('[ZUI] No src provided for $.getLib.');\n }\n\n let {check = true} = options;\n if (check === true && name) {\n check = name;\n }\n const libVarName = typeof check === 'string' ? check : name;\n const getLibVar = (): T | undefined => {\n return libVarName ? ((window as unknown as Record)[libVarName] as T) : undefined;\n };\n if (typeof check === 'string') {\n check = () => !!getLibVar();\n }\n const onSuccess = () => {\n success?.();\n return getLibVar();\n };\n if (typeof check === 'function') {\n const checkResult = await check();\n if (checkResult) {\n return onSuccess();\n }\n }\n\n const {root = $.libRoot} = options;\n for (let srcOptions of srcList) {\n if (typeof srcOptions === 'string') {\n srcOptions = {src: srcOptions};\n }\n let {src} = srcOptions;\n if (root) {\n src = `${root}${(root.endsWith('/') || src.startsWith('/')) ? '' : '/'}${src}`;\n }\n const loadOptions = {\n ...options,\n ...srcOptions,\n src,\n };\n if (srcOptions.type === 'css' || (!srcOptions.type && src.endsWith('.css'))) {\n await loadCSS(loadOptions as LoadCSSOptions);\n continue;\n }\n await loadJS(loadOptions as LoadJSOptions);\n }\n return onSuccess();\n};\n\n/** Define the $.getScript method. */\n$.getScript = $.getLib;\n","import {$, Cash, Selector} from '../cash';\n\n/**\n * Listen element resize with ResizeObserver.\n *\n * @param selector Element selector to check.\n * @returns True if the element is disabled.\n */\nexport function listenResize(selector: Selector, callback: ResizeObserverCallback): ResizeObserver {\n const $elements = $(selector);\n const observer = new ResizeObserver(callback);\n\n $elements.each((_, ele) => {\n observer.observe(ele);\n });\n\n return observer;\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n resize(callback: ResizeObserverCallback): ResizeObserver;\n }\n}\n\n/* Extend as $.fn.resize() */\n$.fn.resize = function (this: Cash, callback: ResizeObserverCallback) {\n return listenResize(this, callback);\n};\n","import type {ComponentType} from 'preact';\n\nexport const reactComponents: Record = {};\n\nexport function registerReactComponent

    (name: string, component?: ComponentType

    ): void;\n\nexport function registerReactComponent(componentMap: Record): void;\n\nexport function registerReactComponent(nameOrMap: string | Record, component?: ComponentType): void {\n if (typeof nameOrMap === 'object') {\n Object.keys(nameOrMap).forEach(name => {\n registerReactComponent(name, nameOrMap[name] as ComponentType);\n });\n } else if (component) {\n reactComponents[nameOrMap.toLowerCase()] = component;\n }\n}\n\nexport function getReactComponent

    (name: string): ComponentType

    | undefined {\n return reactComponents[name.toLowerCase()] as (ComponentType

    | undefined);\n}\n","import {h, Component} from 'preact';\nimport {nextGid} from '../../helpers/gid';\nimport {classes} from '../../helpers/classes';\nimport {getReactComponent} from './components';\nimport {i18n} from '../../i18n';\n\nimport type {JSX, ComponentType, RenderableProps, ComponentChildren} from 'preact';\nimport type {ClassNameLike} from '../../helpers/classes';\nimport type {HElementProps} from '../types';\nimport type {I18nLangMap} from '../../i18n';\n\n/**\n * The base HTML element.\n */\nexport class HElement

    extends Component {\n static HElement = true;\n\n static customProps: string[] = [];\n\n /**\n * The component name.\n * It usually equals to the class name.\n * The name must be provided in subclass.\n */\n static NAME: string;\n\n /**\n * The component i18n data.\n * It will be merged with global i18n data.\n */\n static i18n: I18nLangMap | undefined;\n\n /**\n * Access to static properties via this.constructor.\n *\n * @see https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-337560146\n */\n declare ['constructor']: typeof HElement;\n\n protected _gid = nextGid();\n\n constructor(props: P) {\n super(props);\n\n this.state = this.getDefaultState(props);\n }\n\n get gid() {\n return this._gid;\n }\n\n get element() {\n return document.querySelector(`[z-gid-${this._gid}]`);\n }\n\n /**\n * Get the component i18n data.\n */\n get i18nData(): (I18nLangMap | undefined)[] {\n return [this.props.i18n, this.constructor.i18n];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getDefaultState(_props?: RenderableProps

    ): S {\n return {} as S;\n }\n\n resetState(props?: RenderableProps

    , init?: boolean) {\n const defaultState = this.getDefaultState(props);\n if (init) {\n this.state = defaultState;\n } else {\n this.changeState(defaultState);\n }\n }\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param defaultValue The default value if the key is not found.\n */\n i18n(key: string, defaultValue?: string): string;\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param args The i18n arguments.\n * @param defaultValue The default value if the key is not found.\n */\n i18n(key: string, args?: (string | number)[], defaultValue?: string): string;\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param args The i18n arguments.\n * @param defaultValue The default value if the key is not found.\n */\n i18n(key: string, args?: Record, defaultValue?: string): string;\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param args The i18n arguments or the default value.\n * @param defaultValue The default value if the key is not found.\n * @returns The i18n text.\n */\n i18n(key: string, args?: string | (string | number)[] | Record, defaultValue?: string): string {\n const {i18nData} = this;\n return i18n(i18nData, key, args, defaultValue, this.props.lang, this.constructor.NAME)\n ?? i18n(i18nData, key, args, defaultValue, this.props.lang)\n ?? `{i18n:${key}}`;\n }\n\n changeState(state: Partial | ((prevState: Readonly) => Partial), callback?: () => void): Promise {\n return new Promise(resolve => {\n this.setState(state, () => {\n callback?.();\n resolve(this.state);\n });\n });\n }\n\n protected _getClassName(props: RenderableProps

    ): ClassNameLike {\n return props.className;\n }\n\n protected _getProps(props: RenderableProps

    ): Record {\n const {className, attrs, props: componentProps, data, forwardRef, children, component, style, class: classNameAlt, ...others} = props;\n const customProps = new Set((this.constructor as typeof HElement).customProps);\n const strDangerouslySetInnerHTML = 'dangerouslySetInnerHTML';\n const other = Object.keys(others).reduce>((map, key) => {\n if (!customProps.has(key) && (key === strDangerouslySetInnerHTML || /^(on[A-Z]|data-|zui-|z-)[a-zA-Z-]+/.test(key))) {\n const val = others[key as keyof typeof others];\n map[key] = (key !== strDangerouslySetInnerHTML && val && typeof val === 'object') ? JSON.stringify(val) : val;\n }\n return map;\n }, {});\n return {ref: forwardRef, className: classes(this._getClassName(props), classNameAlt) || undefined, style, [`z-gid-${this._gid}`]: '', ...other, ...attrs, ...componentProps};\n }\n\n protected _getComponent(props: RenderableProps

    ): ComponentType | keyof JSX.IntrinsicElements {\n const {component = 'div'} = props;\n return (typeof component === 'string' ? getReactComponent(component as string) : component) || component;\n }\n\n protected _getChildren(props: RenderableProps

    ): ComponentChildren {\n return props.children;\n }\n\n protected _beforeRender(props: RenderableProps

    ): RenderableProps

    | undefined | void {\n return props;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected _onRender(component: ComponentType | keyof JSX.IntrinsicElements, componentProps: Record, children: ComponentChildren, _props: RenderableProps

    ): [component: ComponentType | keyof JSX.IntrinsicElements, componentProps: Record, children: ComponentChildren] | void {\n return [component, componentProps, children];\n }\n\n render(props: RenderableProps

    ) {\n props = this._beforeRender(props) || props;\n let component = this._getComponent(props);\n let children = this._getChildren(props);\n let componentProps = this._getProps(props);\n const renderResult = this._onRender(component, componentProps, children, props);\n if (renderResult) {\n [component, componentProps, children] = renderResult;\n }\n return h(component as ComponentType, componentProps, children);\n }\n}\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n

    Hello world

    XPBqlD$G`LaA+O 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±#u?nTtK70B$>3$r5?;VX#1NIFvzUMvae)qT7DUM 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 XUu{mpQ{;)KW%&dkA+@_i0AJCHvFgx25 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"gkvnAW5jS1xB$hk~7cLeq&J?#)akN{%&MoG|1H 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

  • \n * Hello world\" />\n *\n * // Render and execute script\n * alert('Hello world')\" executeScript />\n */\nexport class HtmlContent extends Component {\n protected _ref = createRef();\n\n protected _runJS() {\n if (!this.props.executeScript) {\n return;\n }\n $(this._ref.current).runJS().zuiInit();\n }\n\n componentDidMount(): void {\n this._runJS();\n }\n\n componentDidUpdate(previousProps: Readonly): void {\n if (this.props.html !== previousProps.html) {\n this._runJS();\n }\n }\n\n render(props: HtmlContentProps) {\n const {executeScript, html, ...others} = props;\n return ;\n }\n}\n","import {h as _h, isValidElement, ComponentChildren, JSX, Attributes} from 'preact';\nimport {classes, ClassNameLike} from '../../helpers';\n\n/**\n * @deprecated Use `CustomContent` instead.\n */\nexport type CustomRenderResultItem = Partial<{\n html: string;\n __html: string;\n style: JSX.CSSProperties;\n className: ClassNameLike;\n children: ComponentChildren;\n attrs: JSX.HTMLAttributes;\n [prop: string]: unknown;\n}>;\n\n/**\n * @deprecated Use `CustomContent` instead.\n */\nexport type CustomRenderResultGenerator = unknown[], THIS = unknown> = (this: THIS, result: ComponentChildren[], ...args: T) => (ComponentChildren | CustomRenderResultItem)[] | undefined | void;\n\n/**\n * @deprecated Use `CustomContent` instead.\n */\nexport type CustomRenderResult = unknown[], THIS = unknown> = CustomRenderResultGenerator | CustomRenderResultItem | ComponentChildren;\n\n/**\n * @deprecated Use `CustomContent` instead.\n */\nexport type CustomRenderResultList = unknown[], THIS = unknown> = CustomRenderResult[];\n\n/**\n * @deprecated Use `CustomContent` instead.\n */\nexport type CustomRenderProps = unknown[], THIS = unknown> = {\n tag?: string;\n className?: ClassNameLike;\n style?: JSX.CSSProperties;\n renders: CustomRenderResultList;\n generateArgs?: T;\n generators?: Record>;\n generatorThis?: THIS;\n onGenerate?: (this: THIS, generator: CustomRenderResultGenerator, result: ComponentChildren[], ...args: T) => (ComponentChildren | CustomRenderResultItem)[];\n onRenderItem?: (item: CustomRenderResultItem) => ComponentChildren;\n children?: ComponentChildren;\n};\n\n/**\n * @deprecated Use `renderCustomContent` instead.\n */\nexport function renderCustomResult(props: CustomRenderProps): [JSX.HTMLAttributes, ComponentChildren[]] {\n const {\n tag,\n className,\n style,\n renders,\n generateArgs = [],\n generatorThis,\n generators,\n onGenerate,\n onRenderItem,\n ...others\n } = props;\n const classList: ClassNameLike = [className];\n const rootStyle: JSX.CSSProperties = {...style};\n const result: ComponentChildren[] = [];\n const rawHtml: string[] = [];\n renders.forEach(render => {\n const items: (CustomRenderResultItem | ComponentChildren)[] = [];\n if (typeof render === 'string' && generators && generators[render]) {\n render = generators[render];\n }\n if (typeof render === 'function') {\n if (onGenerate) {\n items.push(...onGenerate.call(generatorThis, render as CustomRenderResultGenerator, result, ...generateArgs));\n } else {\n const renderResult = (render as CustomRenderResultGenerator).call(generatorThis, result, ...generateArgs);\n if (renderResult) {\n if (Array.isArray(renderResult)) {\n items.push(...renderResult);\n } else {\n items.push(renderResult);\n }\n }\n }\n } else {\n items.push(render);\n }\n items.forEach(item => {\n if (item === undefined || item === null) {\n return;\n }\n if (typeof item === 'object' && !isValidElement(item) && ('html' in item || '__html' in item || 'className' in item || 'style' in item || 'attrs' in item || 'children' in item)) {\n if (item.html) {\n result.push(\n
    )}>
    ,\n );\n } else if (item.__html) {\n rawHtml.push(item.__html);\n } else {\n if (item.style) {\n Object.assign(rootStyle, item.style);\n }\n if (item.className) {\n classList.push(item.className);\n }\n if (item.children) {\n result.push(item.children);\n }\n if (item.attrs) {\n Object.assign(others, item.attrs);\n }\n }\n } else {\n result.push(item);\n }\n });\n });\n\n if (rawHtml.length) {\n Object.assign(others, {dangerouslySetInnerHTML: {__html: rawHtml}});\n }\n\n return [{\n className: classes(classList),\n style: rootStyle,\n ...others,\n }, result];\n}\n\n/**\n * @deprecated Use `CustomContent` instead.\n */\nexport function CustomRender({\n tag = 'div',\n ...props\n}: CustomRenderProps) {\n const [attrs, children] = renderCustomResult(props);\n return _h(tag, attrs as Attributes, ...children);\n}\n","import {isValidElement} from 'preact';\nimport {HtmlContent} from './html-content';\nimport {HElement} from './h-element';\nimport {mergeProps} from '../../helpers';\n\nimport type {ComponentChildren, VNode} from 'preact';\nimport type {HtmlContentProps, HElementProps, CustomContentType, CustomContentGenerator, CustomContentProps} from '../types';\n\n/**\n * Render custom content.\n *\n * @param content The content to render.\n * @param generatorThis The `this` value to use when calling the generator.\n * @param generatorArgs The arguments to pass to the generator.\n * @returns The rendered content.\n */\nexport function renderCustomContent(props: CustomContentProps): ComponentChildren {\n const {content: contentSetting, generatorArgs, generatorThis, ...others} = props;\n let content = contentSetting;\n if (typeof content === 'function') {\n content = (content as CustomContentGenerator).call(generatorThis, ...(generatorArgs || []));\n }\n if (Array.isArray(content)) {\n return content.map((x) => renderCustomContent({...others, content: x, generatorThis, generatorArgs}));\n }\n if ((typeof content === 'string' || typeof content === 'number')) {\n if (Object.keys(others).length) {\n return
    {content}
    ;\n }\n return content;\n }\n if (content && typeof content === 'object' && (typeof (content as HtmlContentProps).html === 'string' || (content as HtmlContentProps).component)) {\n if ((content as HtmlContentProps).html) {\n return ;\n }\n const {children, ...contentOthers} = content as HElementProps;\n if (children) {\n content = mergeProps({children: ((Array.isArray(children) ? children : [children]) as CustomContentType[]).map((x) => renderCustomContent({...others, content: x, generatorThis, generatorArgs}))}, contentOthers);\n }\n return ;\n }\n if (isValidElement(content)) {\n return content;\n }\n if (content) {\n console.groupCollapsed('[ZUI] CustomContent format error');\n console.trace('content:', content);\n console.log('props:', props);\n console.groupEnd();\n }\n return null;\n}\n\n/**\n * Component for rendering custom content.\n *\n * @param props Custom content props.\n * @returns Custom content.\n */\nexport function CustomContent(props: CustomContentProps): VNode | null {\n const result = renderCustomContent(props);\n if (result === undefined || result === null || typeof result === 'boolean') {\n return null;\n }\n if (isValidElement(result)) {\n return result;\n }\n return <>{result};\n}\n","import {isValidElement} from 'preact';\nimport {classes} from '../../helpers/classes';\n\nimport type {ClassNameLike} from '../../helpers/classes';\nimport type {IconProps} from '../types';\n\nconst createIconClass = (icon: string) => icon.startsWith('icon-') ? icon : `icon-${icon}`;\n\n/**\n * Component for rendering icons.\n *\n * @param props Icon properties.\n * @returns Icon element.\n */\nexport function Icon(props: IconProps) {\n const {icon, className, ...others} = props;\n if (!icon) {\n return null;\n }\n if (isValidElement(icon)) {\n return icon;\n }\n const classList: ClassNameLike[] = ['icon', className as string];\n if (typeof icon === 'string') {\n classList.push(createIconClass(icon));\n } else if (typeof icon === 'object') {\n const {className: iconClass, icon: finalIcon, ...iconOthers} = icon;\n classList.push(iconClass as string, finalIcon ? createIconClass(finalIcon as string) : '');\n Object.assign(others, iconOthers);\n }\n return ;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {createElement, render} from 'preact';\n\nimport type {VNode, RenderableProps, ContainerNode} from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider(this: any, props: RenderableProps<{context: any}>) {\n this.getChildContext = () => props.context;\n return props.children;\n}\n\n/**\n * Portal component\n * @this {import('preact').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nexport function Portal(this: any, props: any) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const container = props._container;\n\n that.componentWillUnmount = function () {\n render(null, that._temp);\n that._temp = null;\n that._container = null;\n };\n\n // When we change container we should clear our old container and\n // indicate a new mount.\n if (that._container && that._container !== container) {\n that.componentWillUnmount();\n }\n\n // When props.vnode is undefined/false/null we are dealing with some kind of\n // conditional vnode. This should not trigger a render.\n if (props._vnode) {\n if (!that._temp) {\n that._container = container;\n\n // Create a fake DOM parent node that manages a subset of `container`'s children:\n that._temp = {\n nodeType: 1,\n parentNode: container,\n childNodes: [],\n appendChild(child: VNode) {\n this.childNodes.push(child);\n that._container.appendChild(child);\n },\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(child: VNode, _before: VNode) {\n this.childNodes.push(child);\n that._container.appendChild(child);\n },\n removeChild(child: VNode) {\n this.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\n that._container.removeChild(child);\n },\n };\n }\n\n // Render our wrapping element into temp.\n render(\n createElement(ContextProvider as any, {context: that.context}, props._vnode),\n that._temp,\n );\n } else if (that._temp) {\n // When we come from a conditional render, on a mounted\n // portal we should clear the DOM.\n that.componentWillUnmount();\n }\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n *\n * @param {import('preact').VNode} vnode The vnode to render\n * @param {import('preact').PreactElement} container The DOM node to continue rendering in to.\n * @see https://github.com/developit/preact-portal/blob/master/src/preact-portal.js\n */\nexport function createPortal(vnode: VNode, container: ContainerNode): VNode {\n const el = createElement(Portal as any, {_vnode: vnode, _container: container}) as any;\n el.containerInfo = container;\n return el;\n}\n","import {HElement} from './h-element';\nimport {HtmlContent} from './html-content';\nimport {CustomContent} from './custom-content';\nimport {Icon} from './icon';\nimport {Portal} from './portals';\nimport {registerReactComponent} from './components';\n\nregisterReactComponent({\n HElement,\n element: HElement,\n HtmlContent,\n html: HtmlContent,\n CustomContent,\n custom: CustomContent,\n Icon,\n Portal,\n});\n","import {createRef, render, h} from 'preact';\nimport {Component as ComponentBase} from '../component';\nimport {mergeProps} from '../helpers';\n\nimport type {Component as ComponentReact, ComponentClass} from 'preact';\nimport {type I18nLangMap} from '../i18n';\nimport type {ComponentEventsDefnition} from '../component';\n\nexport class ComponentFromReact = ComponentReact, E extends ComponentEventsDefnition = {}, U extends HTMLElement = HTMLElement> extends ComponentBase {\n /**\n * The React component class.\n */\n static Component: unknown;\n\n /**\n * Whether replace the element.\n */\n static replace: boolean | keyof HTMLElementTagNameMap | (string & {}) = false;\n\n /**\n * Access to static properties via this.constructor.\n *\n * @see https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-337560146\n */\n declare ['constructor']: typeof ComponentFromReact;\n\n /**\n * The React ref for component instance.\n */\n protected _ref = createRef();\n\n /**\n * The React component instance.\n */\n get $(): C | null {\n return this._ref.current;\n }\n\n /**\n * The i18n data.\n */\n get i18nData() {\n const {i18n, i18nData} = this.constructor.Component as {i18n?: I18nLangMap, i18nData?: (I18nLangMap | undefined)[]};\n if (i18nData) {\n return [...i18nData, this.constructor.i18n];\n }\n return [i18n, ...super.i18nData];\n }\n\n /**\n * Render after component init.\n */\n afterInit() {\n this.render();\n }\n\n /**\n * Destroy component.\n */\n destroy() {\n this.$?.componentWillUnmount?.();\n if (this.element) {\n this.element.innerHTML = '';\n }\n super.destroy();\n }\n\n /**\n * Render component.\n *\n * @param options new options.\n */\n render(options?: Partial, reset?: boolean) {\n const {element, $: instance} = this;\n const {Component, replace} = this.constructor;\n const {$replace = replace, $optionsFromDataset, ...userOptions} = this.setOptions(options, reset);\n const props = {\n ref: this._ref,\n ...userOptions,\n };\n if (reset) {\n (instance as {resetState?: (props?: Record, init?: boolean) => void})?.resetState?.(userOptions);\n }\n\n if ($replace && (Component as {HElement?: boolean}).HElement && (element.tagName.toLowerCase() === $replace || $replace === true)) {\n const attrs = Array.from(element.attributes).reduce>((data, attribute) => {\n const {name, value} = attribute;\n data[name === 'class' ? 'className' : name] = value;\n return data;\n }, {});\n render(\n h(Component as ComponentClass, mergeProps({component: element.tagName.toLowerCase(), attrs}, props)),\n element.parentElement!,\n element,\n );\n } else {\n render(\n h(Component as ComponentClass, props),\n element,\n );\n }\n }\n\n static renderHTML(options: Record): string {\n const tmpNode = document.createElement('div');\n render(h(this.Component as ComponentClass, options), tmpNode);\n return tmpNode.innerHTML;\n }\n}\n","import {HElement, Icon, classes} from '@zui/core';\n\nimport type {ClassNameLike} from '@zui/core';\nimport type {ButtonProps} from '../types/button-props';\nimport type {RenderableProps} from 'preact';\n\nexport class Button

    extends HElement

    {\n protected declare _isEmptyText?: boolean;\n\n protected declare _onlyCaret?: boolean;\n\n protected _beforeRender(props: RenderableProps

    ) {\n const {text, loading, loadingText, caret, icon, trailingIcon, children} = props;\n this._isEmptyText = text === undefined || text === null || (typeof text === 'string' && !text.length) || loading && !loadingText;\n this._onlyCaret = caret && this._isEmptyText && !icon && !trailingIcon && !children && !loading;\n }\n\n protected _getChildren(props: RenderableProps

    ) {\n const {loading, loadingIcon, loadingText, icon, text, children, trailingIcon, caret} = props;\n return [\n loading ? : ,\n this._isEmptyText ? null : {loading ? loadingText : text},\n loading ? null : children,\n loading ? null : ,\n loading ? null : caret ? : null,\n ];\n }\n\n protected _getClassName(props: RenderableProps

    ) {\n const {type, className, disabled, loading, active, children, square, size, rounded} = props;\n return ['btn', type, className, {\n 'btn-caret': this._onlyCaret,\n disabled: disabled || loading,\n active,\n loading,\n square: square === undefined ? (!this._onlyCaret && !children && this._isEmptyText) : square,\n }, size ? `size-${size}` : '', typeof rounded === 'string' ? `rounded-${rounded}` : {rounded}];\n }\n\n protected _getComponent(props: RenderableProps

    ) {\n return props.component || (props.url ? 'a' : 'button');\n }\n\n protected _getProps(props: RenderableProps

    ) {\n const component = this._getComponent(props);\n const {url, target, disabled, btnType = 'button', hint} = props;\n const asLink = component === 'a';\n const componentProps: Record = {\n ...super._getProps(props),\n type: asLink ? undefined : 'button',\n disabled: (!asLink && disabled) ? '' : undefined,\n title: hint,\n };\n if (btnType) {\n if (['button', 'reset', 'submit'].includes(btnType)) {\n if (component === 'button') {\n componentProps.type = btnType;\n }\n } else {\n componentProps.className = classes([componentProps.className as ClassNameLike, btnType]);\n }\n }\n if (!disabled) {\n if (url !== undefined) {\n componentProps[asLink ? 'href' : 'data-url'] = url;\n }\n if (target !== undefined) {\n componentProps[asLink ? 'target' : 'data-target'] = target;\n }\n }\n return componentProps;\n }\n}\n","import {registerReactComponent} from '@zui/core';\nimport * as components from './index';\n\nregisterReactComponent(components);\n","import {CustomContent, HElement, mergeProps} from '@zui/core';\n\nimport type {ComponentChild, ComponentChildren, ComponentType, JSX, RenderableProps} from 'preact';\nimport type {ClassNameLike} from '../../../core/src/helpers';\nimport type {CommonListProps, Item, ItemKey, ItemType} from '../types';\n\n/**\n * Generic list component.\n */\nexport class CommonList

    extends HElement {\n /**\n * Root element default name, used for class name.\n */\n static NAME = '';\n\n /**\n * Item default name, used for class name.\n */\n static ITEM_NAME = 'item';\n\n /**\n * Root element default tag name, used for DOM rendering.\n */\n static TAG = 'ul';\n\n /**\n * Item components, used for rendering for different item types.\n */\n static ItemComponents: Partial | ((this: CommonList, item: Item, props: CommonListProps) => Partial)]>> = {\n default: HElement,\n divider: [HElement, {className: 'divider'}],\n space: [HElement, (item) => {\n const {space, flex, style} = item as {space: JSX.CSSProperties['width'], flex: JSX.CSSProperties['flex'], style: JSX.CSSProperties};\n return {\n style: {width: space, height: space, flex, ...style},\n };\n }],\n };\n\n /**\n * Item default common props, used for rendering for all item types.\n */\n static defaultItemProps: Partial = {\n component: 'li',\n };\n\n /**\n * Item default props, used for rendering for different item types.\n */\n static defaultItemPropsMap: Partial>> = {};\n\n /**\n * Item default type, used for rendering for item without type.\n */\n static defaultItemType = 'item';\n\n static defaultProps: Partial = {\n itemKey: 'id',\n };\n\n /**\n * Access to static properties via this.constructor.\n *\n * @see https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-337560146\n */\n declare ['constructor']: typeof CommonList;\n\n /**\n * Store the raw items.\n */\n protected declare _items: Item[];\n\n /**\n * Store the rendered items.\n */\n protected declare _renderedItems: Item[];\n\n constructor(props: P) {\n super(props);\n this._handleClick = this._handleClick.bind(this);\n }\n\n /**\n * Get the root element name, used for class name.\n */\n get name() {\n return this.props.name || this.constructor.NAME;\n }\n\n /**\n * Get the item element name, used for class name.\n */\n get itemName() {\n return this.props.itemName || this.constructor.ITEM_NAME;\n }\n\n getItems() {\n return this._items;\n }\n\n getRenderedItem(key: ItemKey) {\n return this._renderedItems.find((item) => item.key === key);\n }\n\n getItem(key: ItemKey): Item | undefined {\n return this._items[this.getItemIndex(key)];\n }\n\n getItemIndex(key: ItemKey) {\n return this._renderedItems.findIndex((item) => item.key === key);\n }\n\n getItemByIndex(index: number) {\n return this._items[index];\n }\n\n /**\n * Get the item key by index.\n *\n * @param index The rendered item index.\n * @returns The item key, if the item is not rendered, return undefined.\n */\n getKey(index: number): ItemKey | undefined {\n return this._renderedItems?.[index]?.key;\n }\n\n protected _getItemFromEvent(event: MouseEvent, target?: HTMLElement): {\n index: number;\n item: Item;\n renderedItem: Item;\n element: HTMLElement;\n event: MouseEvent;\n key: ItemKey;\n relativeTarget?: unknown;\n } | undefined {\n const element = (target || event.target as HTMLElement).closest('[z-item]') as HTMLElement;\n if (!element || !element.parentElement?.hasAttribute(`z-gid-${this._gid}`)) {\n return;\n }\n const index = +element.getAttribute('z-item')!;\n const item = this._items[index];\n if (!item) {\n return;\n }\n const key = this.getKey(index);\n if (key === undefined) {\n return;\n }\n const renderedItem = this._renderedItems[index];\n return {index, item, element, event, key, renderedItem, relativeTarget: this.props.relativeTarget};\n }\n\n protected _handleClick(event: MouseEvent) {\n const info = this._getItemFromEvent(event);\n if (!info) {\n return;\n }\n this.props.onClickItem?.call(this, info);\n info.item.onClick?.call(this, event, info);\n return info;\n }\n\n /**\n * Render the item content.\n *\n * @param props Current list properties.\n * @param item The item to render.\n * @param index The item index.\n * @returns The item rendered content.\n */\n protected _renderItem(props: RenderableProps

    , item: Item, index: number): ComponentChildren {\n const {beforeRenderItem} = props;\n if (beforeRenderItem) {\n const result = beforeRenderItem.call(this, item, index);\n if (result !== undefined) {\n item = result;\n }\n }\n\n const {type} = item;\n let {itemRender} = props;\n if (itemRender && typeof itemRender === 'object') {\n itemRender = itemRender[type!];\n }\n if (itemRender) {\n const customResult = itemRender.call(this, item, index);\n if (customResult !== undefined) {\n return ;\n }\n }\n\n const {ItemComponents} = this.constructor;\n let ItemComponent = ItemComponents[type!];\n if (!ItemComponent && item.component) {\n return ;\n }\n ItemComponent = ItemComponent || ItemComponents.default || HElement;\n if (Array.isArray(ItemComponent)) {\n let defaultItemProps = ItemComponent[1];\n if (typeof defaultItemProps === 'function') {\n defaultItemProps = defaultItemProps.call(this as CommonList, item, props);\n }\n item = mergeProps({}, defaultItemProps, item);\n ItemComponent = ItemComponent[0];\n }\n return ;\n }\n\n /**\n * Get the rendered item final properties.\n *\n * @param props Current list properties.\n * @param item The item to render.\n * @param index The item index.\n * @returns The item to rendered, if return false, the item will not be rendered.\n */\n protected _getItem(props: RenderableProps

    , item: Item, index: number): Item | false {\n if (!item) {\n return false;\n }\n const {itemProps, itemPropsMap = {}, getItem, itemKey} = props;\n const {type = this.constructor.defaultItemType} = item;\n const {name, itemName} = this;\n const {defaultItemProps = {}, defaultItemPropsMap = {}} = this.constructor;\n\n item = mergeProps(\n {type},\n defaultItemProps,\n defaultItemPropsMap[type],\n itemProps,\n itemPropsMap[type],\n {className: [name ? `${name}-${type}` : '', itemName]},\n item,\n {\n _item: item,\n _index: index,\n key: String((itemKey ? item[itemKey] : item.key) ?? (item.key ?? index)),\n onClick: undefined,\n },\n );\n\n if (getItem) {\n const result = getItem.call(this, item, index);\n if (result !== undefined) {\n return result;\n }\n }\n return item;\n }\n\n protected _getProps(props: RenderableProps

    ): Record {\n const finalProps = super._getProps(props);\n return {onClick: this._handleClick, ...finalProps};\n }\n\n /**\n * Get the list root element classname list.\n *\n * @param props Current list properties.\n * @returns The list root element classname list.\n */\n protected _getClassName(props: RenderableProps

    ): ClassNameLike {\n return [this.name, props.className];\n }\n\n /**\n * Get final rendered item list.\n *\n * @param props Current list properties.\n * @returns Item list.\n */\n protected _getItems(props: RenderableProps

    ): Item[] {\n let {items = []} = props;\n if (typeof items === 'function') {\n items = items.call(this);\n } else if (!Array.isArray(items)) {\n items = [];\n }\n return items as Item[];\n }\n\n /**\n * Render items.\n *\n * @param props props Current list properties.\n * @param items Render items.\n * @returns React render children.\n */\n protected _renderItems(props: RenderableProps

    , items: Item[]): ComponentChild[] {\n this._renderedItems = items.map((item, index) => {\n const finalItem = this._getItem(props, item, index);\n return finalItem ? finalItem : undefined;\n }) as Item[];\n return this._renderedItems.reduce((children, item, index) => {\n if (item) {\n children.push(this._renderItem(props, item, index));\n }\n return children;\n }, []);\n }\n\n /**\n * Get root element rendered children.\n *\n * @param props Current list properties.\n * @returns React render children.\n */\n protected _getChildren(props: RenderableProps

    ): ComponentChildren {\n const items = this._getItems(props);\n this._items = items;\n const children = this._renderItems(props, items);\n if (props.children) {\n children.push(props.children);\n }\n return children;\n }\n\n /**\n * Get root element rendered component type.\n *\n * @param props Current list properties.\n * @returns React component type.\n */\n protected _getComponent(props: RenderableProps

    ): ComponentType | keyof JSX.IntrinsicElements {\n return props.component || (this.constructor.TAG as keyof JSX.IntrinsicElements);\n }\n}\n","import {ComponentFromReact} from '@zui/core';\nimport {CommonList as CommonListReact} from '../component';\n\nimport type {CommonListProps} from '../types';\n\nexport class CommonList extends ComponentFromReact {\n static NAME = 'CommonList';\n\n static Component = CommonListReact;\n\n static replace = CommonListReact.TAG;\n}\n\nCommonList.register();\n","import {registerReactComponent} from '@zui/core';\nimport * as components from './index';\n\nregisterReactComponent(components);\n","export type RGBColor = [r: number, g: number, b: number];\n\nexport function hex2Rgb(hex: string): RGBColor {\n if (hex.indexOf('#') === 0) {\n hex = hex.slice(1);\n }\n // convert 3-digit hex to 6-digits.\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n if (hex.length !== 6) {\n throw new Error(`Invalid HEX color \"${hex}\".`);\n }\n return [\n parseInt(hex.slice(0, 2), 16), // r\n parseInt(hex.slice(2, 4), 16), // g\n parseInt(hex.slice(4, 6), 16), // b\n ];\n}\n\nexport function isLightColor(color: string | RGBColor): boolean {\n const [r, g, b] = typeof color === 'string' ? hex2Rgb(color) : color;\n return (r * 0.299 + g * 0.587 + b * 0.114) > 186;\n}\n\nexport function contrastColor(color: string | RGBColor, options?: {dark: string, light: string}) {\n return isLightColor(color) ? (options?.dark ?? '#333333') : (options?.light ?? '#ffffff');\n}\n\nfunction clamp(value: number, max = 255): number {\n return Math.min(Math.max(value, 0), max);\n}\n\nexport function hslToRgb(h: number, s: number, l: number): RGBColor {\n h = (h % 360) / 360;\n s = clamp(s);\n l = clamp(l);\n\n const m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n const m1 = l * 2 - m2;\n\n const hue = (value: number): number => {\n value = value < 0 ? value + 1 : (value > 1 ? value - 1 : value);\n if (value * 6 < 1) {\n return m1 + (m2 - m1) * value * 6;\n } else if (value * 2 < 1) {\n return m2;\n } else if (value * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - value) * 6;\n } else {\n return m1;\n }\n };\n\n return [\n hue(h + 1 / 3) * 255,\n hue(h) * 255,\n hue(h - 1 / 3) * 255,\n ];\n}\n","export function getUniqueCode(str: string): number {\n let code = 0;\n if (typeof str !== 'string') str = String(str);\n if (str && str.length) {\n for (let i = 0; i < str.length; ++i) {\n code += (i + 1) * str.charCodeAt(i);\n }\n }\n return code;\n}\n","import {Component, ComponentChildren, JSX} from 'preact';\nimport {classes, Icon} from '@zui/core';\nimport {contrastColor, hslToRgb} from '@zui/helpers/src/color-helper';\nimport {getUniqueCode} from '@zui/helpers/src/string-code';\nimport {AvatarOptions} from '../types/';\n\nfunction getAvatarText(text: string, maxTextLength: number) {\n if (/^[\\u4e00-\\u9fa5\\s]+$/.test(text)) {\n return text.length <= maxTextLength ? text : text.substring(text.length - maxTextLength);\n }\n if (/^[A-Za-z\\d\\s]+$/.test(text)) {\n return text[0].toUpperCase();\n }\n return text.length <= maxTextLength ? text : text.substring(0, maxTextLength);\n}\n\nexport class Avatar extends Component {\n render() {\n const {\n className,\n style,\n size = '',\n circle,\n rounded,\n background,\n foreColor,\n icon,\n text,\n code,\n maxTextLength = 2,\n src,\n hueDistance = 43,\n saturation = 0.4,\n lightness = 0.6,\n children,\n ...others\n } = this.props;\n\n const finalClass = ['avatar', className];\n const finalStyle = {...style, background, color: foreColor};\n\n let actualSize = 32;\n if (size) {\n if (typeof size === 'number') {\n finalStyle.width = `${size}px`;\n finalStyle.height = `${size}px`;\n finalStyle.fontSize = `${Math.max(12, Math.round(size / 2))}px`;\n actualSize = size;\n } else {\n finalClass.push(`size-${size}`);\n actualSize = ({xs: 20, sm: 24, lg: 48, xl: 80})[size];\n }\n }\n if (circle) {\n finalClass.push('circle');\n } else if (rounded) {\n if (typeof rounded === 'number') {\n finalStyle.borderRadius = `${rounded}px`;\n } else {\n finalClass.push(`rounded-${rounded}`);\n }\n }\n\n let content: ComponentChildren | undefined;\n if (src) {\n finalClass.push('has-img');\n content = {text};\n } else if (icon) {\n finalClass.push('has-icon');\n content = ;\n } else if (text?.length) {\n const displayText = getAvatarText(text, maxTextLength);\n const displayTextLength = displayText.length;\n finalClass.push('has-text', `has-text-${displayTextLength}`);\n\n if (background === undefined) {\n const avatarCode = code ?? text;\n const hue = (typeof avatarCode === 'number' ? avatarCode : getUniqueCode(avatarCode)) * hueDistance % 360;\n finalStyle.background = `hsl(${hue},${saturation * 100}%,${lightness * 100}%)`;\n if (!foreColor) {\n const rgb = hslToRgb(hue, saturation, lightness);\n finalStyle.color = contrastColor(rgb);\n }\n } else if (!foreColor && background) {\n finalStyle.color = contrastColor(background);\n }\n let textStyle: JSX.CSSProperties | undefined;\n if (actualSize && actualSize < (16 * displayTextLength)) {\n textStyle = {transform: `scale(${actualSize / (16 * displayTextLength)})`, whiteSpace: 'nowrap'};\n }\n\n content =

    {displayText}
    ;\n }\n\n return (\n \n {content}\n {children}\n
    \n );\n }\n}\n","import {$, mergeProps, removeUndefinedProps} from '@zui/core';\nimport {Button} from '@zui/button/src/component';\nimport {CommonList} from '@zui/common-list/src/component';\n\nimport type {RenderableProps} from 'preact';\nimport type {ButtonProps} from '@zui/button';\nimport type {Item} from '@zui/common-list';\nimport type {BtnGroupOptions} from '../types';\n\nexport class BtnGroup extends CommonList {\n static NAME = 'btn-group';\n\n /**\n * Root element default tag name, used for DOM rendering.\n */\n static TAG = 'nav';\n\n static ItemComponents = {\n ...CommonList.ItemComponents,\n default: Button,\n };\n\n /**\n * Item default common props, used for rendering for all item types.\n */\n static defaultItemProps: Partial = {\n component: undefined,\n };\n\n protected _shareBtnProps?: Partial;\n\n protected _isBtnType({type}: Item): boolean {\n return type === 'item' || type === 'dropdown';\n }\n\n protected _getItem(props: RenderableProps, item: Item, index: number): false | Item {\n if (!item) {\n return false;\n }\n if (!item.type) {\n item = $.extend({type: (item.dropdown || item.items) ? 'dropdown' : 'item'}, item);\n }\n let itemProps = super._getItem(props, item, index);\n if (!itemProps) {\n return itemProps;\n }\n if (this._isBtnType(itemProps)) {\n itemProps = mergeProps({}, this._shareBtnProps, itemProps);\n }\n return itemProps;\n }\n\n protected _beforeRender(props: RenderableProps): void | RenderableProps | undefined {\n const {btnProps, btnType, size} = props;\n\n this._shareBtnProps = mergeProps({}, btnProps, removeUndefinedProps({btnType, size}));\n }\n}\n","import {classes, $, mergeProps} from '@zui/core';\nimport {BtnGroup} from '@zui/btn-group/src/component/btn-group';\n\nimport type {Item} from '@zui/common-list';\nimport type {ToolbarOptions, ToolbarSetting} from '../types';\nimport type {ClassNameLike} from '@zui/core/src/helpers';\nimport type {Attributes, RenderableProps} from 'preact';\n\nexport class Toolbar extends BtnGroup {\n static NAME = 'toolbar';\n\n static defaultProps: Partial = {\n btnProps: {\n btnType: 'ghost',\n },\n };\n\n static ItemComponents = {\n ...BtnGroup.ItemComponents,\n btnGroup: BtnGroup,\n 'btn-group': BtnGroup,\n };\n\n protected _getProps(props: RenderableProps): Record {\n const {gap} = props;\n const propsMap = super._getProps(props);\n if (gap) {\n if (typeof gap === 'number') {\n propsMap.className = classes(propsMap.className as ClassNameLike, `gap-${gap}`);\n } else {\n propsMap.style = $.extend(propsMap.style || {}, {gap: gap});\n }\n }\n return propsMap;\n }\n\n protected _getItem(props: RenderableProps, item: Item, index: number): false | Item {\n const itemProps = super._getItem(props, item, index);\n if (!itemProps) {\n return itemProps;\n }\n const {type} = itemProps;\n const isBtnGroup = type === 'btn-group' || type === 'btnGroup';\n if (isBtnGroup) {\n itemProps.btnProps = mergeProps({}, this._shareBtnProps, itemProps.btnProps);\n }\n if ((isBtnGroup || type === 'dropdown') && !itemProps.relativeTarget) {\n itemProps.relativeTarget = props.relativeTarget;\n }\n return itemProps;\n }\n\n static render(this: unknown, setting: ToolbarSetting | undefined, args: T, defaultProps?: Partial & Attributes, thisObject?: unknown) {\n let toolbarOptions = typeof setting === 'function' ? setting.call(thisObject ?? this, ...args) : setting;\n if (!toolbarOptions) {\n return;\n }\n if (Array.isArray(toolbarOptions)) {\n toolbarOptions = {\n items: toolbarOptions,\n };\n }\n if (defaultProps) {\n toolbarOptions = mergeProps(defaultProps as Record, toolbarOptions);\n }\n return ;\n }\n}\n","import {CustomContent, HElement} from '@zui/core';\n\nimport type {ClassNameLike} from '@zui/core';\nimport type {ComponentChildren, RenderableProps} from 'preact';\nimport type {CheckboxProps, CheckboxState} from '../types';\n\nexport class Checkbox

    extends HElement {\n protected _controlled: boolean;\n\n constructor(props: P) {\n super(props);\n this.state = {\n checked: props.checked ?? props.defaultChecked ?? false,\n };\n this._controlled = props.checked !== undefined;\n }\n\n get checked() {\n return this._controlled ? this.props.checked : this.state.checked;\n }\n\n protected _getClassName(props: RenderableProps

    ): ClassNameLike {\n const {disabled, type = 'checkbox'} = props;\n const {checked} = this;\n return [props.className, type === 'switch' ? type : `${type}-primary`, {\n disabled,\n checked: checked === true,\n indeterminate: checked === 'indeterminate',\n }];\n }\n\n protected _handleChange = (event: Event) => {\n const {onChange} = this.props;\n const checked = (event.target as HTMLInputElement).indeterminate ? 'indeterminate' : (event.target as HTMLInputElement).checked;\n if (onChange) {\n onChange.call(this, event, checked);\n }\n if (!this._controlled) {\n this.setState({checked});\n }\n };\n\n protected _getChildren(props: RenderableProps

    ): ComponentChildren {\n const {name, type, value, id, label} = props;\n const {checked} = this;\n return [\n name ? (\n \n ) : null,\n (),\n ];\n }\n}\n","import {RadioProps} from '../types';\nimport {Checkbox} from './checkbox';\n\nexport class Radio

    extends Checkbox

    {\n static defaultProps: Partial = {\n type: 'radio',\n };\n}\n","import {SwitchProps} from '../types';\nimport {Checkbox} from './checkbox';\n\nexport class Switch

    extends Checkbox

    {\n static defaultProps: Partial = {\n type: 'switch',\n };\n}\n","import {toChildArray} from 'preact';\nimport {CustomContent, HElement, Icon, classes, mergeProps} from '@zui/core';\nimport {Avatar} from '@zui/avatar/src/component';\nimport {Toolbar} from '@zui/toolbar/src/component';\nimport {Checkbox} from '@zui/checkbox/src/component';\n\nimport type {ComponentChild, ComponentChildren, ComponentType, JSX, RenderableProps} from 'preact';\nimport type {ListitemProps} from '../types';\n\nexport class Listitem

    extends HElement {\n protected _renderLeading(props: RenderableProps

    ): ComponentChild[] {\n const {\n icon,\n avatar,\n toggleIcon,\n leading,\n leadingClass,\n checked,\n checkbox,\n multiline,\n } = props;\n const contents: ComponentChild[] = [];\n if (toggleIcon) {\n contents.push();\n }\n if (checked !== undefined) {\n contents.push();\n }\n if (icon) {\n contents.push();\n }\n if (avatar) {\n const avatarProps = typeof avatar === 'function' ? avatar.call(this, props) : avatar;\n if (avatarProps) {\n avatarProps.className = classes('item-avatar', avatarProps.className);\n contents.push();\n }\n }\n const customLeading = leading ? : null;\n if (customLeading) {\n contents.push(customLeading);\n }\n if (multiline) {\n return contents.length ? [\n

    {contents}
    ,\n ] : [];\n }\n return contents;\n }\n\n protected _renderContent(props: RenderableProps

    , linkRendered?: boolean): ComponentChild[] {\n const {\n textClass,\n titleClass,\n titleAttrs,\n subtitle,\n subtitleClass,\n url,\n target,\n content,\n contentClass,\n contentAttrs,\n } = props;\n const titleAsLink = url && !linkRendered;\n const TitleComponent = titleAsLink ? 'a' : 'div';\n let {title, text} = props;\n if (title === undefined) {\n title = text;\n text = null;\n }\n return [\n

    \n {title ? : null}\n {subtitle ?
    : null}\n {text ?
    {text}
    : null}\n {content ? : null}\n
    ,\n ];\n }\n\n protected _renderTrailing(props: RenderableProps

    ): ComponentChild[] {\n const {\n multiline,\n trailing,\n trailingClass,\n trailingIcon,\n actions,\n } = props;\n const contents: ComponentChild[] = [];\n if (trailingIcon) {\n contents.push();\n }\n if (actions) {\n contents.push(Toolbar.render(actions, [props], {key: 'actions', relativeTarget: props, size: 'sm'}, this));\n }\n const customTrailing = trailing ? : null;\n if (customTrailing) {\n contents.push(customTrailing);\n }\n if (multiline) {\n return contents.length ? [\n

    {contents}{customTrailing}
    ,\n ] : [];\n }\n return contents;\n }\n\n protected _render(props: RenderableProps

    , extraAttrs?: Record): ComponentChild {\n const {\n innerComponent,\n innerClass,\n innerAttrs,\n url,\n actions,\n target,\n active,\n disabled,\n divider,\n checked,\n multiline,\n title,\n subtitle,\n hint,\n selected,\n } = props;\n const ComponentName = innerComponent || ((url && !actions) ? 'a' : 'div');\n const asLink = ComponentName === 'a';\n const attrs = mergeProps({\n key: 'item',\n title: hint,\n className: classes('listitem', innerClass, {\n active,\n disabled,\n 'has-divider': divider,\n selected,\n checked,\n multiline: multiline ?? !!(title && subtitle),\n state: asLink && !disabled,\n }),\n }, asLink ? {href: url || 'javascript:;', target} : null, extraAttrs, innerAttrs);\n return (\n \n {this._renderLeading(props)}\n {this._renderContent(props, asLink)}\n {this._renderTrailing(props)}\n \n );\n }\n\n protected _onRender(component: ComponentType | keyof JSX.IntrinsicElements, componentProps: Record, children: ComponentChildren, _props: RenderableProps

    ): void | [component: ComponentType | keyof JSX.IntrinsicElements, componentProps: Record, children: ComponentChildren] {\n const innerAttrs = Object.keys(componentProps).reduce>((attrs, key) => {\n if (key.startsWith('data-')) {\n attrs[key] = componentProps[key];\n delete componentProps[key];\n }\n return attrs;\n }, {});\n return [component, componentProps, [this._render(_props, innerAttrs), ...toChildArray(children)]];\n }\n}\n","import {$, Computed, HElement, classes, fetchData, mergeProps, removeUndefinedProps} from '@zui/core';\nimport {CommonList} from '@zui/common-list/src/component';\nimport {Listitem} from './listitem';\n\nimport type {ComponentChild, ComponentChildren, RenderableProps} from 'preact';\nimport type {ClassNameLike, CustomContentType} from '@zui/core';\nimport type {Item, ItemKey} from '@zui/common-list';\nimport type {CheckedType} from '@zui/checkbox';\nimport type {ListProps, ListState, ListItemsSetting, ListItemsFetcher} from '../types';\n\nexport class List

    extends CommonList {\n static ItemComponents: typeof CommonList.ItemComponents = {\n ...CommonList.ItemComponents,\n default: HElement,\n item: Listitem,\n heading: Listitem,\n };\n\n static NAME = 'list';\n\n protected _loadedSetting?: ListItemsSetting;\n\n protected declare _hasIcons: boolean;\n\n protected declare _hasCheckbox: boolean;\n\n protected _activeSet = new Computed>(() => {\n const map = new Set();\n const {active} = this.props;\n if (Array.isArray(active)) {\n active.forEach(x => map.add(x));\n } else if (typeof active === 'string') {\n map.add(active);\n } else if (active) {\n Object.keys(active).forEach(x => active[x] && map.add(x));\n }\n const {activeMap} = this.state;\n Object.keys(activeMap).forEach(x => activeMap[x] ? map.add(x) : map.delete(x));\n return map;\n }, () => [this.state.activeMap, this.props.active]);\n\n constructor(props: P) {\n super(props);\n this.state = {\n checked: {},\n activeMap: {},\n } as S;\n }\n\n get namespace() {\n return `.zui.${this.constructor.NAME}.list_${this.gid}`;\n }\n\n get isLazyItems() {\n const {items} = this.props;\n return items && !Array.isArray(items);\n }\n\n componentDidMount() {\n this._afterRender(true);\n this.tryLoad();\n\n if (this.props.activeOnHover && !this.props.multipleActive) {\n $(this.element).on(`mouseenter${this.namespace}`, '[z-item]', (event) => {\n const info = this._getItemFromEvent(event);\n if (info && info.renderedItem.type === 'item' && !info.renderedItem.disabled && !this.isActive(info.key)) {\n this.toggleActive(info.key, true);\n }\n });\n }\n }\n\n componentDidUpdate(): void {\n this._afterRender(false);\n this.tryLoad();\n }\n\n componentWillUnmount(): void {\n $(this.element).off(this.namespace);\n this.props.beforeDestroy?.call(this);\n }\n\n setItems(items?: Item[], error?: Error) {\n const {onLoadFail} = this.props;\n return this.changeState({\n loading: false,\n items: items || [],\n loadFailed: error ? (typeof onLoadFail === 'function' ? (onLoadFail as (error: Error) => CustomContentType | undefined).call(this, error as Error) : onLoadFail) || String(error) : undefined,\n } as S);\n }\n\n load(): void {\n const {items, onLoad} = this.props;\n this._loadedSetting = items;\n this.setState({loading: true, items: []}, async () => {\n try {\n const newItems = await fetchData(items as ListItemsFetcher, [this], {throws: true});\n this.setItems(onLoad?.call(this, newItems) || newItems);\n } catch (error) {\n this.setItems(undefined, error as Error);\n }\n });\n }\n\n tryLoad() {\n const {loading} = this.state;\n const {items} = this.props;\n if (loading || !items || Array.isArray(items) || items === this._loadedSetting) {\n return false;\n }\n this.load();\n return true;\n }\n\n isChecked(key: ItemKey, index?: number, defaultChecked: CheckedType = false): CheckedType {\n const item = (typeof index === 'number' ? this._items[index] : this.getItem(key)) || {};\n return this.state.checked[key] ?? item.checked ?? defaultChecked;\n }\n\n isAllChecked(): boolean {\n return this._renderedItems.every(({key}, index) => this.isChecked(key!, index) === true);\n }\n\n toggleAllChecked(checked?: boolean) {\n if (checked === undefined) {\n checked = !this.isAllChecked();\n }\n return this.toggleChecked(this._renderedItems.map(x => x.key!), checked);\n }\n\n async toggleChecked(keyOrChange: ItemKey | ItemKey[] | Record, checked?: boolean) {\n let change: Record;\n if (Array.isArray(keyOrChange)) {\n if (!keyOrChange.length) {\n return;\n }\n if (checked === undefined) {\n checked = !this.isChecked(keyOrChange[0]);\n }\n change = keyOrChange.reduce>((map, key) => {\n map[key] = checked!;\n return map;\n }, {});\n } else if (typeof keyOrChange === 'object') {\n change = keyOrChange;\n } else {\n const isChecked = this.isChecked(keyOrChange);\n if (checked === undefined) {\n checked = !isChecked;\n }\n change = {[keyOrChange]: checked!};\n }\n if (!Object.keys(change).length) {\n return;\n }\n\n await this.changeState(prevState => ({\n checked: {\n ...prevState.checked,\n ...change,\n },\n } as Partial), () => {\n const checkState = this.state.checked;\n this.props.onCheck?.call(this, change, Object.keys(checkState).filter(x => checkState[x] === true));\n });\n }\n\n getChecks() {\n return this._renderedItems.reduce((checks, {key}, index) => {\n if (key !== undefined && this.isChecked(key, index) === true) {\n checks.push(key);\n }\n return checks;\n }, []);\n }\n\n isActive(key: string | Item) {\n if (typeof key === 'object') {\n key = key.key!;\n }\n return this._activeSet.cache.has(key);\n }\n\n getActiveKeys() {\n return [...this._activeSet.value];\n }\n\n getActiveKey() {\n return this.getActiveKeys()[0];\n }\n\n async toggleActive(keys: string | string[], active?: boolean) {\n if (typeof keys === 'string') {\n keys = [keys];\n }\n if (!keys.length) {\n return;\n }\n active = active ?? !this.isActive(keys[0]);\n await this.changeState(prevState => {\n const activeMap = this.props.multipleActive ? (keys as string[]).reduce>((map, key) => {\n map[key] = active!;\n return map;\n }, {...prevState.activeMap}) : {[keys[0]]: active!};\n return {activeMap} as Partial;\n }, () => {\n this.props.onActive?.call(this, keys as string[], active!);\n });\n }\n\n getNextItem(key: string | undefined, condition?: (item: Item, index: number) => boolean, step = 1, items: Item[] | undefined = undefined): Item | undefined {\n items = items || this._renderedItems;\n const count = items.length;\n if (key === undefined) {\n return items[step ? 0 : count - 1];\n }\n let index = items.findIndex(x => x.key === key);\n if (index < 0 || count < 2) {\n return items[step ? 0 : count - 1];\n }\n let checkCount = 0;\n condition = condition || ((x) => x.type === 'item' && !x.disabled);\n while (checkCount < count) {\n index = (index + step + count) % count;\n const nextItem = items[index];\n if (nextItem && !nextItem.disabled && !nextItem.hidden && condition.call(this, nextItem, index)) {\n return nextItem;\n }\n checkCount++;\n }\n }\n\n getPrevItem(key: string | undefined, condition?: (item: Item, index: number) => boolean): Item | undefined {\n return this.getNextItem(key, condition, -1);\n }\n\n activeNext(condition?: (item: Item, index: number) => boolean, step = 1) {\n const nextItem = this.getNextItem(this.getActiveKey(), condition, step);\n if (nextItem) {\n this.toggleActive(nextItem.key!);\n }\n }\n\n activePrev(condition?: (item: Item, index: number) => boolean) {\n this.activeNext(condition, -1);\n }\n\n protected _afterRender(firstRender: boolean) {\n this.props.afterRender?.call(this, firstRender);\n }\n\n protected _getItems(props: RenderableProps

    ): Item[] {\n const {items} = props;\n const {items: stateItems} = this.state;\n return stateItems || (Array.isArray(items) ? items : []);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected _getRenderedItem(props: RenderableProps

    , renderedItem: Item, index: number): Item {\n const {divider, multiline} = props;\n renderedItem = mergeProps({}, removeUndefinedProps({\n divider,\n multiline,\n }), renderedItem);\n\n const {itemName, name} = this;\n renderedItem.innerClass = [itemName ? `${itemName}-inner${name ? ` ${name}-${renderedItem.type}-inner` : ''}` : '', renderedItem.innerClass];\n\n if (renderedItem.type === 'item') {\n const {checkbox} = props;\n if (checkbox) {\n renderedItem.checked = this.isChecked(renderedItem.key!, index, renderedItem.checked as CheckedType);\n if (typeof checkbox === 'object') {\n renderedItem.checkbox = renderedItem.checkbox ? $.extend({}, checkbox, renderedItem.checkbox) : checkbox;\n }\n if (props.selectOnChecked && renderedItem.checked === true) {\n renderedItem.selected = true;\n }\n }\n if (renderedItem.active === undefined && this.isActive(renderedItem)) {\n renderedItem.active = true;\n }\n }\n\n if (renderedItem.icon) {\n this._hasIcons = true;\n }\n if (renderedItem.checked !== undefined) {\n this._hasCheckbox = true;\n }\n\n return renderedItem;\n }\n\n protected _getItem(props: RenderableProps

    , item: Item, index: number): Item | false {\n const renderedItem = super._getItem(props, item, index);\n if (!renderedItem) {\n return renderedItem;\n }\n return this._getRenderedItem(props, renderedItem, index);\n }\n\n protected _renderItem(props: RenderableProps

    , item: Item, index: number): ComponentChildren {\n if (item.type === 'item' && this._hasIcons && item.icon === undefined) {\n item.icon = 'EMPTY';\n }\n return super._renderItem(props, item, index);\n }\n\n protected _handleClick(event: MouseEvent) {\n const info = super._handleClick(event);\n let {checkOnClick} = this.props;\n if (checkOnClick === 'any') {\n checkOnClick = '.item-checkbox,.item-content,.item-icon';\n } else if (checkOnClick === true) {\n checkOnClick = '.item-checkbox';\n }\n if (checkOnClick && !info?.renderedItem.disabled && info && (event.target as HTMLElement).closest(checkOnClick)) {\n this.toggleChecked(info.key);\n event.stopPropagation();\n return;\n }\n return info;\n }\n\n protected _getClassName(props: RenderableProps

    ): ClassNameLike {\n const {loading, loadFailed} = this.state;\n return [super._getClassName(props), loading ? 'loading' : (loadFailed ? 'is-load-failed' : '')];\n }\n\n protected _getProps(props: RenderableProps

    ): Record {\n const {className, ...others} = super._getProps(props);\n return {\n ...others,\n className: classes(className as ClassNameLike, this._hasIcons ? 'has-icons' : '', this._hasCheckbox ? 'has-checkbox' : ''),\n };\n }\n\n protected _getChildren(props: RenderableProps

    ): ComponentChildren {\n this._hasIcons = false;\n this._hasCheckbox = false;\n this._activeSet.compute();\n const children = super._getChildren(props) as ComponentChild[];\n const {loadFailed} = this.state;\n if (loadFailed) {\n children.push(loadFailed);\n }\n return children;\n }\n}\n","/** Store type. */\nexport type StoreType = 'local' | 'session';\n\nconst STR_PREFIX = '```ZUI_STR\\n';\n\n/**\n * Store for using localStorage and sessionStorage.\n */\nexport class Store {\n protected _type: StoreType;\n\n protected _name: string;\n\n protected _id: string;\n\n protected _storage: Storage;\n\n protected _altStorage?: Store;\n\n /**\n * Create new store instance.\n * @param id Store profile ID.\n * @param type Store type.\n */\n constructor(id: string = '', type: StoreType = 'local') {\n this._type = type;\n this._id = id;\n this._name = `ZUI_STORE:${this._id}`;\n this._storage = type === 'local' ? localStorage : sessionStorage;\n }\n\n /**\n * Get store type.\n */\n get type(): StoreType {\n return this._type;\n }\n\n /**\n * Get session type store instance.\n */\n get session(): Store {\n if (this.type === 'session') {\n return this;\n }\n if (!this._altStorage) {\n this._altStorage = new Store(this._id, 'session');\n }\n return this._altStorage;\n }\n\n protected _getKey(key: string): string {\n return `${this._name}:${key}`;\n }\n\n /**\n * Switch store profile.\n *\n * @param id Store profile ID.\n */\n switch(id: string) {\n this._id = id;\n this._name = `ZUI_STORE:${this._id}`;\n }\n\n /**\n * Get value from store.\n *\n * @param key Key to get\n * @returns Value of key or undefined if key is not found\n */\n get(key: string): T | undefined;\n\n /**\n * Get value from store, if key is not found, return defaultValue.\n *\n * @param key Key to get.\n * @param defaultValue Default value to return if key is not found.\n */\n get(key: string, defaultValue: T): T;\n\n /**\n * Get value from store.\n *\n * @param key Key to get.\n * @param defaultValue Default value to return if key is not found.\n * @returns Value of key or defaultValue if key is not found.\n */\n get(key: string, defaultValue?: T): T | undefined {\n const value = this._storage.getItem(this._getKey(key));\n if (typeof value === 'string') {\n if (value.startsWith(STR_PREFIX)) {\n return value.substring(STR_PREFIX.length) as T;\n }\n try {\n return JSON.parse(value);\n // eslint-disable-next-line no-empty\n } catch (_error) {}\n }\n return (value as T) ?? defaultValue;\n }\n\n /**\n * Set key-value pair in store.\n *\n * @param key Key to set.\n * @param value Value to set.\n */\n set(key: string, value: unknown): void {\n if (value === undefined || value === null) {\n return this.remove(key);\n }\n this._storage.setItem(this._getKey(key), typeof value === 'string' ? `${STR_PREFIX}${value}` : JSON.stringify(value));\n }\n\n /**\n * Remove key-value pair from store.\n *\n * @param key Key to remove.\n */\n remove(key: string): void {\n this._storage.removeItem(this._getKey(key));\n }\n\n /**\n * Iterate all key-value pairs in store.\n *\n * @param callback Callback function to call for each key-value pair in the store.\n */\n each(callback: (name: string, value: unknown) => void): void {\n for (let i = 0; i < this._storage.length; i++) {\n const key = this._storage.key(i);\n if (key?.startsWith(this._name)) {\n const value = this._storage.getItem(key);\n if (typeof value === 'string') {\n callback(key.substring(this._name.length + 1), JSON.parse(value));\n }\n }\n }\n }\n\n /**\n * Get all key values in store.\n *\n * @returns All key-value pairs in the store.\n */\n getAll(): Record {\n const result: Record = {};\n this.each((key, value) => {\n result[key] = value;\n });\n return result;\n }\n}\n","import {Store, StoreType} from './store';\n\nexport type {Store} from './store';\n\nexport const store = new Store('DEFAULT');\n\nfunction createStore(name?: string, type: StoreType = 'local') {\n return new Store(name, type);\n}\n\nObject.assign(store, {create: createStore});\n","import {Icon, classes, mergeProps, $} from '@zui/core';\nimport {store} from '@zui/store';\nimport {List} from './list';\nimport '@zui/css-icons/src/icons/caret.css';\n\nimport type {ComponentChild, ComponentChildren, RenderableProps} from 'preact';\nimport type {ClassNameLike} from '@zui/core';\nimport type {Item, ItemKey} from '@zui/common-list';\nimport type {CheckedType} from '@zui/checkbox';\nimport type {ListItemsSetting, NestedItem, NestedListProps, NestedListState} from '../types';\n\nexport type MouseEventInfo = {\n index: number;\n item: NestedItem;\n renderedItem: NestedItem;\n element: HTMLElement;\n target: HTMLElement;\n event: MouseEvent;\n key: ItemKey;\n parentKey?: ItemKey;\n hover?: boolean;\n keyPath: string;\n};\n\nexport type ItemInfo = {\n key: string;\n level: number;\n keyPath: string;\n parentKey?: string;\n parent?: ItemInfo;\n children: ItemInfo[];\n data: Item;\n};\n\nfunction forEachChild(item: ItemInfo, callback: (child: ItemInfo) => void) {\n const {children} = item;\n if (!children.length) {\n return;\n }\n children.forEach(child => {\n callback(child);\n forEachChild(child, callback);\n });\n}\n\nfunction forEachParent(item: ItemInfo, callback: (parent: ItemInfo) => void) {\n let parent = item.parent;\n while (parent) {\n callback(parent);\n parent = parent.parent;\n }\n}\n\nfunction parentKeys(keyPath: string) {\n return keyPath.split(':').reduce((keys, item, index) => {\n keys.push(index ? keys[index - 1] + ':' + item : item);\n return keys;\n }, []);\n}\n\n\nfunction reduceNestedItems(items: Item[], itemKey: string | undefined, reducer: (previousValue: T, info: ItemInfo) => T, initialValue: T, level = 0, parent?: ItemInfo): T {\n return items.reduce((currentValue, item, index) => {\n if (!item) {\n return currentValue;\n }\n const key = String((itemKey ? item[itemKey] : item.key) ?? (item.key ?? index));\n const keyPath = parent ? `${parent.keyPath}:${key}` : key;\n const itemInfo = {\n key,\n level,\n keyPath,\n parentKey: parent?.keyPath,\n parent: parent,\n data: item,\n children: [],\n };\n if (parent) {\n parent.children.push(itemInfo);\n }\n currentValue = reducer(currentValue, itemInfo);\n if (Array.isArray(item.items)) {\n return reduceNestedItems(item.items as Item[], itemKey, reducer, currentValue, level + 1, itemInfo);\n }\n return currentValue;\n }, initialValue);\n}\n\nexport class NestedList

    extends List {\n static defaultProps: Partial = {\n ...List.defaultProps,\n defaultNestedShow: false,\n level: 0,\n indent: 20,\n } as Partial;\n\n static inheritNestedProps = ['component', 'name', 'itemName', 'itemKey', 'indent', 'hover', 'divider', 'multiline', 'toggleIcons', 'nestedToggle', 'accordion', 'itemRender', 'itemProps', 'beforeRenderItem', 'onToggle', 'checkbox', 'getItem', 'checkOnClick', 'selectOnChecked', 'checkedState', 'onClickItem', 'activeOnHover', 'multipleActive', 'onActive'];\n\n protected declare _hasNestedItems: boolean;\n\n protected declare _needHandleHover: boolean;\n\n protected declare _storeID: string;\n\n protected declare _renderedItemMap: Map;\n\n protected declare _itemMap?: Map;\n\n protected declare _needInitChecks?: boolean;\n\n protected declare _hoverInfo?: {timer: number, info: MouseEventInfo};\n\n constructor(props: P) {\n super(props);\n const {defaultNestedShow, preserve, nestedShow} = props;\n $.extend(\n this.state,\n typeof defaultNestedShow === 'boolean' ? {defaultShow: defaultNestedShow, nestedShow: {}} : {nestedShow: defaultNestedShow || {}},\n nestedShow !== undefined ? {nestedShow} : null,\n );\n if (preserve && nestedShow === undefined) {\n this._storeID = `${this.constructor.NAME}:${preserve}:state`;\n const storeState = store.get(this._storeID) as NestedListState;\n if (storeState) {\n (this.state as NestedListState).nestedShow = storeState.nestedShow;\n }\n }\n\n if (!props.level) {\n const nestedState = this.state.nestedShow;\n if (nestedState) {\n Object.keys(nestedState).forEach(key => {\n if (!nestedState[key]) {\n return;\n }\n parentKeys(key).forEach(parentKey => {\n nestedState[parentKey] = true;\n });\n });\n }\n this._needInitChecks = true;\n }\n\n this._renderedItemMap = new Map();\n this._handleHover = this._handleHover.bind(this);\n this._handleClick = this._handleClick.bind(this);\n this._beforeRenderNestedItem = this._beforeRenderNestedItem.bind(this);\n this._handleNestedToggle = this._handleNestedToggle.bind(this);\n this._handleNestedCheck = this._handleNestedCheck.bind(this);\n this._preserveState = this._preserveState.bind(this);\n }\n\n get isRoot() {\n return !this.props.level;\n }\n\n get nestedShow() {\n return this.props.nestedShow ?? this.state.nestedShow ?? false;\n }\n\n get isHoverTrigger() {\n return this.props.nestedTrigger === 'hover';\n }\n\n async setItems(items?: Item[] | undefined, error?: Error | undefined) {\n if (this.isRoot) {\n this._needInitChecks = true;\n }\n const state = await super.setItems(items, error);\n if (items && this.props.parent?.checked === true) {\n this.toggleChecked(this._renderedItems.map(x => x.key!), true);\n } else if (items?.some((x) => x.checked)) {\n this._needInitChecks = true;\n this.forceUpdate();\n }\n return state;\n }\n\n getItemMap() {\n if (!this._itemMap) {\n let needCheckRenderItems = false;\n const map: Map = reduceNestedItems(this._items, this.props.itemKey, (currentMap, info) => {\n currentMap.set(info.keyPath, info);\n if (info.data.items && !Array.isArray(info.data.items)) {\n needCheckRenderItems = true;\n }\n return currentMap;\n }, new Map());\n if (needCheckRenderItems) {\n this._renderedItemMap.forEach((item, keyPath) => {\n if (map.has(keyPath)) {\n return;\n }\n map.set(keyPath, {\n key: item.key,\n level: item._level,\n keyPath,\n parentKey: `${keyPath.split(':').slice(0, -1).join(':')}`,\n children: [],\n data: item,\n } as ItemInfo);\n });\n map.forEach((info) => {\n const {parentKey} = info;\n if (!parentKey) {\n return;\n }\n const parent = map.get(parentKey);\n if (parent) {\n parent.children.push(info);\n info.parent = parent;\n }\n });\n return map;\n }\n this._itemMap = map;\n }\n return this._itemMap;\n }\n\n getRenderedItem(keyPath: string): Item | undefined {\n return this._renderedItemMap.get(keyPath);\n }\n\n getItem(keyPath: string) {\n if (this._itemMap) {\n return this._itemMap.get(keyPath)?.data;\n }\n const renderedItem = this.getRenderedItem(keyPath);\n return renderedItem ? (renderedItem._item as Item) : super.getItem(keyPath);\n }\n\n isExpanded(keyPath: string) {\n const {nestedShow} = this;\n if (typeof nestedShow === 'boolean') {\n return nestedShow;\n }\n return !!(nestedShow[keyPath] ?? this.state.defaultShow);\n }\n\n async toggle(keyPath: string, toggle?: boolean) {\n const isExpanded = this.isExpanded(keyPath);\n if (toggle === isExpanded) {\n return;\n }\n if (toggle === undefined) {\n toggle = !isExpanded;\n }\n const {nestedShow, onToggle, accordion} = this.props;\n if (onToggle && onToggle.call(this, keyPath, toggle) === false) {\n return;\n }\n if (nestedShow !== undefined) {\n return;\n }\n await this.changeState(prevState => {\n let newNestedShow: Record = {\n ...prevState.nestedShow,\n [keyPath]: toggle!,\n };\n if (toggle && accordion) {\n let parentKey = `${keyPath.split(':').slice(0, -1).join(':')}`;\n if (parentKey.length) {\n parentKey += ':';\n }\n Object.keys(newNestedShow).forEach(key => {\n if (key !== keyPath && key.startsWith(parentKey)) {\n newNestedShow[key] = false;\n }\n });\n }\n newNestedShow = toggle ? parentKeys(keyPath).reduce>((map, key) => {\n map[key] = toggle!;\n return map;\n }, newNestedShow) : newNestedShow;\n if (this.isHoverTrigger && !toggle) {\n Object.keys(newNestedShow).forEach(key => {\n if (!newNestedShow[key] || !key.startsWith(`${keyPath}:`)) {\n return;\n }\n parentKeys(keyPath).forEach(k => {\n newNestedShow[k] = true;\n });\n });\n }\n return {\n nestedShow: newNestedShow,\n } as Partial;\n }, this._preserveState);\n }\n\n toggleAll(show: boolean) {\n if (this.props.nestedShow !== undefined) {\n return;\n }\n return this.setState({nestedShow: {}, defaultShow: show}, this._preserveState);\n }\n\n getChecks() {\n return Array.from(this.getItemMap().values()).reduce((checks, {keyPath, data}) => {\n const checkState = this.state.checked[keyPath];\n if ((checkState === true || (data.checked && checkState !== false)) === true) {\n checks.push(keyPath);\n }\n return checks;\n }, []);\n }\n\n isChecked(key: ItemKey, index?: number, defaultChecked: CheckedType = false): CheckedType {\n const item = (typeof index === 'number' ? this._items[index] : this.getItem(key)) || {};\n if (this.isRoot) {\n return this.state.checked[key] ?? (item.checked as CheckedType) ?? defaultChecked;\n }\n return this.props.checkedState![`${this.props.parentKey}:${key}`] ?? (item.checked as CheckedType) ?? defaultChecked;\n }\n\n async toggleChecked(keyOrChange: ItemKey | ItemKey[] | Record, checked?: CheckedType) {\n let change: Record;\n if (Array.isArray(keyOrChange)) {\n if (!keyOrChange.length) {\n return;\n }\n if (checked === undefined) {\n checked = !this.isChecked(keyOrChange[0]);\n }\n change = keyOrChange.reduce>((map, key) => {\n map[key] = checked!;\n return map;\n }, {});\n } else if (typeof keyOrChange === 'object') {\n change = keyOrChange;\n } else {\n if (checked === undefined) {\n checked = !this.isChecked(keyOrChange);\n }\n change = {[keyOrChange]: checked!};\n }\n if (!Object.keys(change).length) {\n return;\n }\n if (this.isRoot) {\n const map = this.getItemMap();\n await this.changeState(({checked: prevChecked}) => {\n const isChecked = (item: ItemInfo) => {\n return change[item.keyPath] ?? prevChecked[item.keyPath] ?? item.data.checked ?? false;\n };\n Object.keys(change).forEach(key => {\n checked = change[key];\n const item = map.get(key);\n if (!item) {\n return;\n }\n forEachChild(item, child => {\n if (isChecked(child) !== checked) {\n change[child.keyPath] = checked!;\n }\n });\n forEachParent(item, parent => {\n const {children} = parent;\n const checkedCount = children.reduce((count, child) => {\n if (isChecked(child)) {\n count++;\n }\n return count;\n }, 0);\n\n change[parent.keyPath] = checkedCount === children.length ? true : (checkedCount ? 'indeterminate' : false);\n });\n });\n return {\n checked: {\n ...prevChecked,\n ...change,\n },\n } as Partial;\n }, () => {\n const checkState = this.state.checked;\n this.props.onCheck?.call(this, change, Object.keys(checkState).filter(x => checkState[x] === true));\n });\n return;\n }\n\n const {parentKey, onCheck} = this.props;\n const nestedChange = Object.keys(change).reduce>((map, key) => {\n map[`${parentKey !== undefined ? `${parentKey}:` : ''}${key}`] = change[key];\n return map;\n }, {});\n onCheck!.call(this, nestedChange, []);\n }\n\n getKeyPath(key: string) {\n if (this.isRoot) {\n return key;\n }\n const parentKey = this.props.parentKey!;\n if (!key.startsWith(parentKey + ':')) {\n return `${parentKey}:${key}`;\n }\n return key;\n }\n\n isActive(keyPath: string | Item) {\n if (typeof keyPath === 'object') {\n const keyOrKeyPath = (keyPath._keyPath ?? keyPath.key) as (string | undefined);\n if (keyOrKeyPath === undefined) {\n return false;\n }\n keyPath = keyOrKeyPath;\n }\n return this._activeSet.cache.has(this.getKeyPath(keyPath));\n }\n\n async toggleActive(keys: string | string[], active?: boolean) {\n if (typeof keys === 'string') {\n keys = [keys];\n }\n keys = keys.map(key => this.getKeyPath(key));\n if (this.isRoot) {\n await super.toggleActive(keys, active);\n if (this.props.toggleOnActive) {\n (keys as string[]).forEach(key => {\n if (this.isActive(key) && !this.isExpanded(key)) {\n this.toggle(key, true);\n }\n });\n }\n return;\n }\n\n this.props.onActive!.call(this, keys, active ?? !this.isActive(keys[0]));\n }\n\n activeNext(condition?: (item: Item, index: number) => boolean, step = 1) {\n const nextItem = this.getNextItem(this.getActiveKey(), condition, step);\n if (nextItem) {\n this.toggleActive(nextItem._keyPath as string);\n }\n }\n\n getNextItem(key: string | undefined, condition?: (item: Item, index: number) => boolean, step = 1, items: Item[] | undefined = undefined): Item | undefined {\n items = items || reduceNestedItems(this._items, this.props.itemKey, (list, info) => {\n if (info.data.disabled) {\n return list;\n }\n list.push({\n _keyPath: info.keyPath,\n type: 'item',\n ...info.data,\n ...this._renderedItemMap.get(info.keyPath),\n key: info.keyPath,\n });\n return list;\n }, []);\n return super.getNextItem(key, condition, step, items);\n }\n\n protected _afterRender(firstRender: boolean): void {\n super._afterRender(firstRender);\n if (this._needInitChecks) {\n const initChecks: Record = {};\n const itemMap = this.getItemMap();\n itemMap.forEach(item => {\n if (item.data.checked !== undefined) {\n initChecks[item.keyPath] = item.data.checked as CheckedType;\n }\n });\n this.toggleChecked(initChecks);\n this._needInitChecks = false;\n }\n }\n\n protected _preserveState() {\n if (this._storeID) {\n store.set(this._storeID, {nestedShow: this.state.nestedShow});\n }\n }\n\n protected _getClassName(props: RenderableProps

    ): ClassNameLike {\n return [super._getClassName(props), 'is-nested', props.level ? 'is-nested-sub' : 'is-nested-root'];\n }\n\n protected _getNestedProps(props: RenderableProps

    , items: ListItemsSetting, item: NestedItem, expanded: boolean): NestedListProps {\n const {\n parentKey,\n level = 0,\n } = props;\n const {isRoot} = this;\n return mergeProps(((this.constructor as typeof NestedList).inheritNestedProps.reduce>((propMap, key) => {\n propMap[key] = props[key as keyof P];\n return propMap;\n }, {})), {\n key: item.key,\n level: level + 1,\n className: `is-nested-${expanded ? 'expanded' : 'collapsed'}`,\n items,\n parent: item,\n parentKey: parentKey ? `${parentKey}:${item.key}` : item.key,\n nestedShow: this.nestedShow,\n defaultNestedShow: this.state.defaultShow,\n checkedState: props.checkedState || this.state.checked,\n onCheck: isRoot ? this._handleNestedCheck : props.onCheck,\n onToggle: isRoot ? this._handleNestedToggle : props.onToggle,\n beforeRenderItem: isRoot ? this._beforeRenderNestedItem : props.beforeRenderItem,\n active: isRoot ? this.getActiveKeys() : props.active,\n onActive: isRoot ? this.toggleActive.bind(this) : props.onActive,\n }, item.listProps);\n }\n\n protected _renderNestedList(props: RenderableProps

    , items: ListItemsSetting, item: NestedItem, expanded: boolean): ComponentChildren {\n if (!expanded && !props.renderCollapsedList) {\n return;\n }\n const nestedListProps = this._getNestedProps(props, items, item, expanded);\n const NestedListComponent = this.constructor as typeof NestedList;\n return ;\n }\n\n protected _renderNestedToggle(props: RenderableProps

    , isExpanded: boolean | undefined): ComponentChild {\n let toggleIcon: ComponentChild;\n let toggleClass = '';\n const {toggleIcons = {}} = props;\n if (typeof isExpanded === 'boolean') {\n toggleIcon = isExpanded ? (toggleIcons.expanded || ) : (toggleIcons.collapsed || );\n toggleClass = `state is-${isExpanded ? 'expanded' : 'collapsed'}`;\n } else {\n toggleIcon = ;\n toggleClass = 'is-empty';\n }\n return {toggleIcon};\n }\n\n protected _getItems(props: RenderableProps

    ): Item[] {\n const items = super._getItems(props);\n if (this.isRoot && items !== this._items) {\n this._itemMap = undefined;\n }\n return items;\n }\n\n protected _getItem(props: RenderableProps

    , item: NestedItem, index: number): NestedItem | false {\n const nestedItem = super._getItem(props, item, index) ?? item;\n if (!nestedItem) {\n return nestedItem;\n }\n const {parentKey} = props;\n const key = nestedItem.key!;\n const keyPath = `${parentKey !== undefined ? `${parentKey}:` : ''}${key}`;\n if (nestedItem.items) {\n const expanded = nestedItem.expanded ?? this.isExpanded(keyPath);\n mergeProps(nestedItem, {\n expanded: expanded,\n className: ['is-nested', `is-nested-${expanded ? 'show' : 'hide'}`],\n });\n this._hasNestedItems = true;\n }\n return mergeProps(nestedItem, {\n _level: props.level,\n _keyPath: keyPath,\n parentKey,\n });\n }\n\n protected _beforeRenderNestedItem(item: NestedItem): NestedItem | false {\n this._renderedItemMap.set(item._keyPath as string, item);\n return item;\n }\n\n protected _renderItem(props: RenderableProps

    , renderedItem: NestedItem, index: number): ComponentChildren {\n if (this._hasNestedItems && renderedItem.type === 'item' && renderedItem.toggleIcon === undefined) {\n renderedItem.toggleIcon = this._renderNestedToggle(props, renderedItem.expanded as boolean | undefined);\n }\n const nestedListContent = renderedItem.items ? this._renderNestedList(props, renderedItem.items, renderedItem, renderedItem.expanded as boolean) : null;\n renderedItem = mergeProps(renderedItem, {\n 'z-parent': renderedItem.parentKey,\n 'z-key-path': renderedItem._keyPath,\n }, this._needHandleHover ? {\n onMouseEnter: this._handleHover,\n onMouseLeave: this._handleHover,\n } : null, nestedListContent ? {children: nestedListContent} : null);\n this._renderedItemMap.set(renderedItem._keyPath as string, renderedItem);\n return super._renderItem(props, renderedItem, index);\n }\n\n protected _getItemFromEvent(event: MouseEvent, target?: HTMLElement): MouseEventInfo | undefined {\n const info = super._getItemFromEvent(event, target) as MouseEventInfo;\n if (!info) {\n return;\n }\n if (event.type === 'mouseenter' || event.type === 'mouseleave') {\n info.hover = event.type === 'mouseenter';\n }\n const {parentKey} = this.props;\n return {...info, parentKey, keyPath: `${parentKey !== undefined ? `${parentKey}:` : ''}${info.key}`, target: target || event.target as HTMLElement};\n }\n\n protected _toggleFromEvent(info: MouseEventInfo) {\n const {item, hover, event, keyPath, target} = info;\n const {nestedToggle} = this.props;\n const {isHoverTrigger} = this;\n if (!item.items || event.defaultPrevented || (isHoverTrigger && hover === undefined) || (!isHoverTrigger && event.type !== 'click') || target.closest('.not-nested-toggle') || (nestedToggle && !item.disabled && !target.closest(nestedToggle)) || (!nestedToggle && !item.disabled && target.closest('a,.btn,.item-checkbox,.open-url') && !target.closest('.nested-toggle-icon,.item-icon'))) {\n return info;\n }\n const toggle = typeof hover === 'boolean' ? hover : undefined;\n this.toggle(keyPath, toggle);\n event.preventDefault();\n }\n\n protected _handleNestedToggle(key: ItemKey, toggle: boolean) {\n this.toggle(key, toggle);\n }\n\n protected _handleClick(event: MouseEvent) {\n const info = super._handleClick(event);\n if (info) {\n return this._toggleFromEvent(info as MouseEventInfo);\n }\n return info;\n }\n\n protected _handleHover(event: MouseEvent) {\n const info = this._getItemFromEvent(event);\n if (!info) {\n return;\n }\n this.props.onHoverItem?.call(this, info as {hover: boolean, item: NestedItem, index: number, event: MouseEvent});\n if (!this.isHoverTrigger) {\n return;\n }\n const lastHover = this._hoverInfo;\n if (lastHover) {\n if (lastHover.info.keyPath === info.keyPath) {\n clearTimeout(lastHover.timer);\n } else {\n this._toggleFromEvent(lastHover.info);\n }\n }\n this._hoverInfo = {\n info,\n timer: window.setTimeout(() => {\n this._hoverInfo = undefined;\n this._toggleFromEvent(info);\n }, info.hover ? 0 : 200),\n };\n }\n\n protected _handleNestedCheck(change: Record) {\n this.toggleChecked(change);\n }\n\n protected _getProps(props: RenderableProps

    ): Record {\n const {level = 0, indent = 20, parentKey} = props;\n const finalProps = mergeProps(super._getProps(props), {\n 'z-level': level,\n 'z-parent-key': parentKey,\n style: {'--list-nested-indent': `${level * indent}px`, '--list-indent': `${indent}px`},\n className: this._hasNestedItems ? 'has-nested-items' : 'no-nested-items',\n });\n finalProps.className = classes(finalProps.className as ClassNameLike);\n return finalProps;\n }\n\n protected _beforeRender(props: RenderableProps

    ): void | RenderableProps

    | undefined {\n this._renderedItemMap.clear();\n this._hasIcons = false;\n this._hasNestedItems = !this.isRoot;\n this._needHandleHover = !!(props.onHoverItem || this.isHoverTrigger);\n return super._beforeRender(props);\n }\n}\n","import {CustomContent, classes, mergeProps} from '@zui/core';\nimport {NestedList, Listitem} from '@zui/list/src/component';\n\nimport type {Attributes, ComponentChildren, RenderableProps} from 'preact';\nimport type {ClassNameLike} from '@zui/core';\nimport type {NestedListState} from '@zui/list';\nimport type {MenuOptions, MenuSetting} from '../types';\n\nexport class Menu extends NestedList {\n static NAME = 'menu';\n\n static TAG = 'menu';\n\n static inheritNestedProps = [...NestedList.inheritNestedProps, 'compact'];\n\n static ItemComponents: typeof NestedList.ItemComponents = {\n ...NestedList.ItemComponents,\n item: [Listitem, {innerComponent: 'a'}],\n };\n\n static defaultProps: Partial = {\n ...NestedList.defaultProps,\n scrollbarHover: true,\n };\n\n protected _getClassName(props: RenderableProps): ClassNameLike {\n return [super._getClassName(props), this._hasNestedItems ? 'menu-nested' : '', props.className, props.wrap ? {'scrollbar-thin': props.scrollbarThin, 'scrollbar-hover': props.scrollbarHover} : {popup: props.popup, compact: props.compact}];\n }\n\n protected _getWrapClass(props: RenderableProps): ClassNameLike {\n return ['menu-wrapper', props.wrapClass, {popup: props.popup, compact: props.compact}];\n }\n\n protected _getWrapperProps(props: RenderableProps): Record {\n const {wrapAttrs, height, maxHeight} = props;\n const wrapProps = mergeProps({}, wrapAttrs, (height || maxHeight) ? {style: {height, maxHeight}} : null);\n wrapProps.className = classes(this._getWrapClass(props), wrapProps.className as ClassNameLike);\n return wrapProps;\n }\n\n protected _renderWrapperHeader(props: RenderableProps): ComponentChildren {\n return ;\n }\n\n protected _renderWrapperFooter(props: RenderableProps): ComponentChildren {\n return ;\n }\n\n render(props: RenderableProps) {\n const menuView = super.render(props);\n if (props.wrap) {\n return (\n

    \n {this._renderWrapperHeader(props)}\n {menuView}\n {this._renderWrapperFooter(props)}\n \n );\n }\n return super.render(props);\n }\n\n static render(this: unknown, setting: MenuSetting | undefined, args: T, defaultProps?: Partial & Attributes, thisObject?: unknown) {\n let menuOptions = typeof setting === 'function' ? setting.call(thisObject ?? this, ...args) : setting;\n if (!menuOptions) {\n return;\n }\n if (Array.isArray(menuOptions)) {\n menuOptions = {\n items: menuOptions,\n };\n }\n if (defaultProps) {\n menuOptions = mergeProps(defaultProps as Record, menuOptions);\n }\n return ;\n }\n}\n","import {Component, createRef} from 'preact';\nimport {$, classes, getHotkeysMap, Icon, nextGid} from '@zui/core';\nimport '../style';\n\nimport type {ComponentChildren, RenderableProps} from 'preact';\nimport type {SearchBoxOptions, SearchBoxState} from '../types';\n\nexport class SearchBox extends Component {\n static defaultProps: Partial = {\n clearIcon: true,\n searchIcon: true,\n delay: 500,\n hotkeys: true,\n };\n\n protected _gid: string;\n\n protected _input = createRef();\n\n protected _timer = 0;\n\n protected _hotkeysScope?: string;\n\n constructor(props: SearchBoxOptions) {\n super(props);\n this.state = {focus: false, value: props.defaultValue || ''};\n this._gid = props.id || `search-box-${nextGid()}`;\n }\n\n componentDidMount(): void {\n const {hotkeys} = this.props;\n if (hotkeys) {\n const hotkeysMap = getHotkeysMap(hotkeys, {\n clear: {\n keys: 'Escape',\n handler: (event) => {\n this.clear(event);\n },\n },\n enter: {\n keys: 'Enter',\n handler: (event) => {\n this.props.onEnter?.(this.state.value, event);\n },\n },\n });\n if (hotkeysMap) {\n this._hotkeysScope = `SearchBox_${this._gid}`;\n $(this.input).hotkeys(hotkeysMap, {\n scope: this._hotkeysScope,\n event: 'keydown',\n });\n }\n }\n }\n\n componentWillUnmount(): void {\n if (this._hotkeysScope) {\n $(this.input).unbindHotkeys(this._hotkeysScope);\n }\n }\n\n get id() {\n return this._gid;\n }\n\n get input() {\n return this._input.current;\n }\n\n focus() {\n this.input?.focus();\n }\n\n blur() {\n this.input?.blur();\n }\n\n clear(event?: Event) {\n const oldValue = this.state.value;\n this.setState({value: ''}, () => {\n const {onChange, onClear} = this.props;\n onClear?.(event);\n this.focus();\n if (oldValue.trim() !== '') {\n onChange?.('', event);\n }\n });\n }\n\n _handleClearBtnClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.clear(event);\n };\n\n _handleChange = (event: Event) => {\n const oldValue = this.state.value;\n const value = (event.target as HTMLInputElement).value;\n const {onChange, delay} = this.props;\n this.setState({value}, () => {\n if (!onChange || oldValue === value) {\n return;\n }\n if (delay) {\n this._clearTimer();\n this._timer = window.setTimeout(() => {\n onChange(value, event);\n this._timer = 0;\n }, delay);\n } else {\n onChange(value, event);\n }\n });\n };\n\n _handleFocus = (event: FocusEvent) => {\n const focus = event.type === 'focus';\n this.setState({focus}, () => {\n const callback = focus ? this.props.onFocus : this.props.onBlur;\n callback?.(event);\n });\n };\n\n _clearTimer() {\n if (this._timer) {\n clearTimeout(this._timer);\n }\n this._timer = 0;\n }\n\n render(props: RenderableProps, state: Readonly) {\n const {style, className, rootClass, rootStyle, readonly, disabled, circle, placeholder, mergeIcon, searchIcon, clearIcon, value: controlledValue, compact, prefixClass, suffixClass} = props;\n const {focus, value} = state;\n const {id} = this;\n const finalValue = controlledValue ?? value;\n const empty = typeof finalValue !== 'string' || !finalValue.trim().length;\n let prefixView: ComponentChildren;\n let suffixView: ComponentChildren;\n let searchIconView: ComponentChildren;\n if (searchIcon) {\n searchIconView = searchIcon === true ? : ;\n }\n if (!mergeIcon && searchIcon) {\n prefixView = ;\n }\n if (clearIcon && !empty) {\n suffixView = (\n \n {clearIcon === true ? : }\n \n );\n } else if (mergeIcon && searchIcon) {\n suffixView = searchIconView;\n }\n if (suffixView) {\n suffixView = (\n \n );\n }\n\n return (\n
    \n {prefixView}\n \n {suffixView}\n
    \n );\n }\n}\n","import {$, classes} from '@zui/core';\nimport {SearchBox} from '@zui/search-box/src/components';\nimport {Menu} from './menu';\n\nimport {type ComponentChild, type ComponentChildren, type RenderableProps} from 'preact';\nimport type {ClassNameLike} from '@zui/core';\nimport type {Item, ItemKey} from '@zui/common-list';\nimport type {ListItemsSetting, NestedItem, NestedListItem, NestedListProps} from '@zui/list';\nimport type {SearchBoxOptions} from '@zui/search-box';\nimport type {SearchMenuOptions, SearchMenuState} from '../types';\n\nexport class SearchMenu extends Menu {\n static inheritNestedProps = [...Menu.inheritNestedProps, 'isItemMatch', 'search', 'underlineKeys'];\n\n static defaultProps: Partial = {\n ...Menu.defaultProps,\n defaultNestedShow: true,\n wrap: true,\n };\n\n protected declare _searchKeys: string[];\n\n protected declare _matchedParents: Set;\n\n protected declare _showCount: number;\n\n constructor(props: T) {\n super(props);\n (this.state as SearchMenuState).search = props.search ?? props.defaultSearch;\n this._searchKeys = (this.constructor as typeof SearchMenu).getSearchKeys(this.state.search);\n this._isNestedItemMatch = this._isNestedItemMatch.bind(this);\n }\n\n componentWillUpdate(nextProps: Readonly): void {\n if (this.isRoot) {\n if (nextProps.search !== undefined && nextProps.search !== this.props.search) {\n this._searchKeys = (this.constructor as typeof SearchMenu).getSearchKeys(nextProps.search);\n }\n }\n }\n\n componentDidMount(): void {\n super.componentDidMount();\n this._updateMatchedParents();\n }\n\n componentDidUpdate(): void {\n super.componentDidUpdate();\n this._updateMatchedParents();\n }\n\n isExpanded(keyPath: string): boolean {\n if (this.props.expandOnSearch && this._searchKeys.length) {\n return true;\n }\n return super.isExpanded(keyPath);\n }\n\n protected _updateMatchedParents(): void {\n if (!this.isRoot) {\n return;\n }\n const $element = $(this.element);\n const $matchedChildren = $element.find('.item.is-nested.is-not-match').filter((_, element) => this._matchedParents.has(element.getAttribute('z-key-path') || '')).addClass('has-match-child');\n $element.parent().toggleClass('no-match-child', !!this._searchKeys?.length && !$matchedChildren.length && !$element.children('.item').not('.is-not-match').length);\n }\n\n protected _handleSearchChange = (search: string) => {\n const searchKeys = (this.constructor as typeof SearchMenu).getSearchKeys(search);\n this._searchKeys = searchKeys;\n this.setState({search: searchKeys.join(' ')});\n };\n\n protected _isItemMatch(props: RenderableProps, item: NestedItem, index: number, parentKey: ItemKey | undefined) {\n const {isItemMatch} = props;\n const isMatch = isItemMatch ? isItemMatch.call(this, item, this._searchKeys, index, parentKey) : (this.constructor as typeof SearchMenu).isItemMatch(item, this._searchKeys, props.searchProps);\n if (this.isRoot && isMatch && parentKey !== undefined) {\n let key = '';\n String(parentKey).split(':').forEach(x => {\n key += `${key.length ? ':' : ''}${x}`;\n this._matchedParents.add(key);\n });\n }\n return isMatch;\n }\n\n protected _isNestedItemMatch(item: NestedItem, _searchKeys: string[], index: number, parentKey: ItemKey | undefined): boolean {\n return this._isItemMatch(this.props, item, index, parentKey);\n }\n\n protected _getNestedProps(props: RenderableProps, items: ListItemsSetting, item: NestedItem, expanded: boolean): NestedListProps {\n const nestedProps = super._getNestedProps(props, items, item, expanded) as SearchMenuOptions;\n if (this.isRoot) {\n nestedProps.isItemMatch = this._isNestedItemMatch;\n nestedProps.search = this._searchKeys.join(' ');\n }\n return nestedProps;\n }\n\n protected _getItem(props: RenderableProps, item: NestedItem, index: number): NestedItem | false {\n const finalItem = super._getItem(props, item, index);\n if (!finalItem) {\n return finalItem;\n }\n if (this.isRoot && this.props.limit && this._showCount >= this.props.limit) {\n return false;\n }\n finalItem.hidden = !this._isItemMatch(props, item, index, props.parentKey);\n if (!finalItem.hidden) {\n this._showCount++;\n }\n return finalItem;\n }\n\n protected _renderItem(props: RenderableProps, item: Item, index: number): ComponentChildren {\n item.className = [item.className, item.hidden ? 'is-not-match' : ''];\n if (props.underlineKeys && this._searchKeys.length) {\n ['text', 'title', 'subtitle', 'content'].forEach(key => {\n if (typeof item[key] === 'string') {\n item[key] = (this.constructor as typeof SearchMenu).underlineKeys(this._searchKeys, [item[key] as string]);\n }\n });\n }\n return super._renderItem(props, item, index);\n }\n\n protected _getWrapClass(props: RenderableProps): ClassNameLike {\n const isSearchMode = this.isRoot && this._searchKeys.length;\n return classes(super._getWrapClass(props), 'search-menu', props.searchBox ? `search-menu-on-${props.searchPlacement || 'top'}` : '', isSearchMode ? 'is-search-mode' : '', isSearchMode && props.expandOnSearch ? 'no-toggle-on-search' : '');\n }\n\n protected _renderSearchBox(props: RenderableProps): ComponentChildren {\n const {searchBox} = props;\n if (!searchBox || !this.isRoot) {\n return null;\n }\n const searchOptions: SearchBoxOptions = {\n compact: true,\n onChange: this._handleSearchChange,\n };\n if (typeof searchBox === 'object') {\n $.extend(searchOptions, searchBox);\n }\n if (props.search !== undefined) {\n searchOptions.value = this._searchKeys.join(' ');\n searchOptions.disabled = true;\n }\n return ;\n }\n\n protected _renderWrapperHeader(props: RenderableProps): ComponentChildren {\n const hasHeader = props.header;\n const hasTopSearchBox = this.isRoot && props.searchBox && props.searchPlacement !== 'bottom';\n const {noMatchHint} = props;\n if (!hasHeader && !hasTopSearchBox && !noMatchHint) {\n return null;\n }\n return [\n noMatchHint ?
    {noMatchHint}
    : null,\n (hasHeader || hasTopSearchBox) ? (
    \n {hasHeader ? super._renderWrapperHeader(props) : null}\n {hasTopSearchBox ? this._renderSearchBox(props) : null}\n
    ) : null,\n ];\n }\n\n protected _renderWrapperFooter(props: RenderableProps): ComponentChildren {\n const hasFooter = props.footer;\n const hasBottomSearchBox = this.isRoot && props.searchBox && props.searchPlacement === 'bottom';\n if (!hasFooter && !hasBottomSearchBox) {\n return null;\n }\n return (\n
    \n {hasFooter ? super._renderWrapperFooter(props) : null}\n {this._renderSearchBox(props)}\n
    \n );\n }\n\n protected _beforeRender(props: RenderableProps): void | RenderableProps | undefined {\n if (this.isRoot) {\n this._matchedParents = new Set();\n this._showCount = 0;\n }\n return super._beforeRender(props);\n }\n\n /**\n * Check whether item is matched.\n *\n * @param item Item to match.\n * @param searchKeys Search keys.\n * @returns Whether item is matched.\n */\n static isItemMatch(item: Item, searchKeys: string[], searchProps = ['keys', 'text', 'title', 'subtitle']) {\n if (!searchKeys.length) {\n return true;\n }\n return searchKeys.every(searchKey => searchProps.some(propName => {\n const propValue = item[propName];\n return typeof propValue === 'string' && propValue.length && propValue.toLowerCase().includes(searchKey);\n }));\n }\n\n /**\n * Convert search string to search keys.\n *\n * @param search Search string.\n * @returns Search keys array.\n */\n static getSearchKeys(search: string = ''): string[] {\n return $.unique((search).toLowerCase().split(' ').filter(x => x.length)) as string[];\n }\n\n static underlineKeys(searchKeys: string[], text: string[], className = 'is-match-keys'): ComponentChild[] {\n return searchKeys.reduce((result, key) => {\n return [...result].reduce((list, span) => {\n if (typeof span !== 'string') {\n list.push(span);\n return list;\n }\n const parts = span.toLowerCase().split(key);\n if (parts.length === 1) {\n list.push(span);\n return list;\n }\n let start = 0;\n parts.forEach((part, index) => {\n if (index) {\n list.push({span.substring(start, start + key.length)});\n start += key.length;\n }\n list.push(span.substring(start, start + part.length));\n start += part.length;\n });\n return list;\n }, []);\n }, text);\n }\n}\n","import {ComponentFromReact} from '@zui/core';\nimport {Menu as MenuReact} from '../component';\n\nimport type {MenuOptions} from '../types';\n\nexport class Menu extends ComponentFromReact> {\n static NAME = 'Menu';\n\n static Component = MenuReact;\n\n static replace = MenuReact.TAG;\n}\n","import {ComponentFromReact} from '@zui/core';\nimport {SearchMenu as MenuReact} from '../component';\n\nimport type {SearchMenuOptions} from '../types';\n\nexport class SearchMenu extends ComponentFromReact {\n static NAME = 'SearchMenu';\n\n static Component = MenuReact;\n\n static replace = MenuReact.TAG;\n}\n","import {registerReactComponent} from '@zui/core';\nimport * as components from './index';\n\nregisterReactComponent(components);\n","import {isValidElement, ComponentChildren} from 'preact';\nimport {classes, CustomContent, Icon} from '@zui/core';\nimport {Button} from '@zui/button/src/component/button';\nimport type {ButtonProps} from '@zui/button';\nimport '@zui/css-icons/src/icons/close.css';\nimport {AlertOptions} from '../types';\nimport {Toolbar} from '@zui/toolbar/src/component';\n\nexport function Alert({\n className,\n style,\n actions,\n heading,\n content,\n contentClass,\n children,\n close,\n onClose,\n icon,\n iconClass,\n ...others\n}: AlertOptions) {\n let closeButton: ComponentChildren;\n if (close === true) {\n closeButton = ;\n } else if (isValidElement(close)) {\n closeButton = close;\n } else if (typeof close === 'object') {\n closeButton =