From 964b9603823e9ae00dbe4cc357007ac04871792e Mon Sep 17 00:00:00 2001 From: catouse Date: Tue, 29 Oct 2024 03:09:47 +0000 Subject: [PATCH] deploy: 2a9d358b0768a320553400108643ea056cf45ee6 --- dev/404.html | 6 ++-- ...vy.js => guide_start_index.md.hfMj7ftQ.js} | 34 +++++++++--------- ... => guide_start_index.md.hfMj7ftQ.lean.js} | 32 ++++++++--------- 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 | 12 +++---- dev/guide/start/intro.html | 6 ++-- dev/guide/start/tutorial.html | 10 +++--- 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 | 8 ++--- dev/lib/basic/core/zui-on.html | 8 ++--- 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 | 8 ++--- dev/lib/components/button/index.html | 8 ++--- dev/lib/components/color-picker/index.html | 8 ++--- 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 | 6 ++-- 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 | 16 ++++----- 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 | 6 ++-- dev/lib/components/progress-circle/index.html | 6 ++-- dev/lib/components/progress/index.html | 8 ++--- dev/lib/components/scrollbar/index.html | 6 ++-- dev/lib/components/search-box/index.html | 6 ++-- 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 1051143 -> 1051231 bytes dev/zui/zui.esm.js | 14 ++++---- dev/zui/zui.esm.js.map | 2 +- dev/zui/zui.js | 2 +- dev/zui/zui.js.map | 2 +- 152 files changed, 556 insertions(+), 556 deletions(-) rename dev/assets/{guide_start_index.md.DFrC31vy.js => guide_start_index.md.hfMj7ftQ.js} (92%) rename dev/assets/{guide_start_index.md.DFrC31vy.lean.js => guide_start_index.md.hfMj7ftQ.lean.js} (79%) diff --git a/dev/404.html b/dev/404.html index ed0da1ec65..6deae5fa26 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.DFrC31vy.js b/dev/assets/guide_start_index.md.hfMj7ftQ.js similarity index 92% rename from dev/assets/guide_start_index.md.DFrC31vy.js rename to dev/assets/guide_start_index.md.hfMj7ftQ.js index afdfb6e486..bff725af71 100644 --- a/dev/assets/guide_start_index.md.DFrC31vy.js +++ b/dev/assets/guide_start_index.md.hfMj7ftQ.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),T=["href"],A=s("i",{class:"icon icon-github icon-lg"},null,-1),D=a(`

下载后将如下文件解压到你的项目中:

text
zui/
+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(`

下载后将如下文件解压到你的项目中:

text
zui/
 ├── zui.css
 ├── zui.js
 └── zui.esm.js

下载后在页面中导入:

html
<!doctype html>
@@ -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),V=a('<html lang="zh-CN">',1),z=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"}},Z=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),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),L={class:"line highlighted"},$=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),O=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Q=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Y=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),G={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},K=a(' crossorigin="anonymous"></script>',6),W=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),Ts=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),As=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),Vs=a('<html lang="zh-CN">',1),zs=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"}},Zs=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),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),Ls={class:"line highlighted"},$s=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Os=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Qs=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Ys=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Gs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Ks=a(' crossorigin="anonymous"></script>',6),Ws=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>
+</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),P={class:"shiki shiki-themes github-light github-dark vp-code"},q=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"},j=a(' <link rel="stylesheet" href=',7),U={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),J=a(' <h1>ZUI is awesome!</h1>',1),L=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),H={class:"line highlighted"},Y=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),$=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),O=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Q=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),W={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),Ps={class:"shiki shiki-themes github-light github-dark vp-code"},qs=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"},js=a(' <link rel="stylesheet" href=',7),Us={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),Js=a(' <h1>ZUI is awesome!</h1>',1),Ls=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),Hs={class:"line highlighted"},Ys=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),$s=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Os=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Qs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Ws={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;
@@ -51,19 +51,19 @@ 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
 zui.Messager.show('Hello!');

如果你仅仅需要 ZUI 中的单个组件,例如 数据表格,你可以这样导入:

js
import {DTable} from 'zui/lib/dtable';
 import 'zui/lib/dtable/css';
 
-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"},[A,i(" 从 GitHub 下载")],8,T)]),D,s("div",m,[B,s("div",b,[s("div",v,[S,I,s("pre",q,[s("code",null,[P,i(` -`),V,i(` +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",P,[s("code",null,[q,i(` `),z,i(` +`),V,i(` `),N,i(` `),f,i(` `),w,i(` -`),s("span",R,[U,s("span",j,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.css"',1),Z]),i(` -`),x,i(` +`),s("span",R,[j,s("span",U,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.css"',1),x]),i(` +`),Z,i(` `),M,i(` `),J,i(` -`),H,i(` -`),s("span",L,[$,O,Q,Y,s("span",G,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.js"',1),K]),i(` -`),W,i(` +`),L,i(` +`),s("span",H,[Y,$,O,Q,s("span",W,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.js"',1),G]),i(` +`),K,i(` `),X])])]),s("div",ss,[is,as,s("pre",ts,[s("code",null,[hs,i(` `),ns,i(` `),ls,i(` @@ -75,19 +75,19 @@ 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 `),os,i(` `),ys,i(` `),cs,i(` -`),s("span",Fs,[us,Cs,Ts,As,s("span",Ds,'"///cdn.bootcdn.net/ajax/libs/zui/'+l(t.zui.version)+'/zui.js"',1),ms]),i(` +`),s("span",Fs,[us,Cs,As,Ts,s("span",Ds,'"///cdn.bootcdn.net/ajax/libs/zui/'+l(t.zui.version)+'/zui.js"',1),ms]),i(` `),Bs,i(` -`),bs])])]),s("div",vs,[Ss,Is,s("pre",qs,[s("code",null,[Ps,i(` -`),Vs,i(` +`),bs])])]),s("div",vs,[Ss,Is,s("pre",Ps,[s("code",null,[qs,i(` `),zs,i(` +`),Vs,i(` `),Ns,i(` `),fs,i(` `),ws,i(` -`),s("span",Rs,[Us,s("span",js,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.css"',1),Zs]),i(` -`),xs,i(` +`),s("span",Rs,[js,s("span",Us,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.css"',1),xs]),i(` +`),Zs,i(` `),Ms,i(` `),Js,i(` -`),Hs,i(` -`),s("span",Ls,[$s,Os,Qs,Ys,s("span",Gs,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.js"',1),Ks]),i(` -`),Ws,i(` +`),Ls,i(` +`),s("span",Hs,[Ys,$s,Os,Qs,s("span",Ws,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.js"',1),Gs]),i(` +`),Ks,i(` `),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.DFrC31vy.lean.js b/dev/assets/guide_start_index.md.hfMj7ftQ.lean.js similarity index 79% rename from dev/assets/guide_start_index.md.DFrC31vy.lean.js rename to dev/assets/guide_start_index.md.hfMj7ftQ.lean.js index ae762c35e2..76466d9aa4 100644 --- a/dev/assets/guide_start_index.md.DFrC31vy.lean.js +++ b/dev/assets/guide_start_index.md.hfMj7ftQ.lean.js @@ -1,21 +1,21 @@ -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),T=["href"],A=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),V=a("",1),z=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"}},Z=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),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),L={class:"line highlighted"},$=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),O=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Q=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Y=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),G={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},K=a("",6),W=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),Ts=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),As=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),Vs=a("",1),zs=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"}},Zs=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),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),Ls={class:"line highlighted"},$s=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Os=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Qs=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Ys=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Gs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Ks=a("",6),Ws=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(` +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),P={class:"shiki shiki-themes github-light github-dark vp-code"},q=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"},j=a("",7),U={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),J=a("",1),L=a("",1),H={class:"line highlighted"},Y=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),$=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),O=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Q=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),W={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),Ps={class:"shiki shiki-themes github-light github-dark vp-code"},qs=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"},js=a("",7),Us={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),Js=a("",1),Ls=a("",1),Hs={class:"line highlighted"},Ys=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),$s=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Os=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Qs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Ws={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(` `),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"}},'"'),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"},[A,i(" 从 GitHub 下载")],8,T)]),D,s("div",m,[B,s("div",b,[s("div",v,[S,I,s("pre",q,[s("code",null,[P,i(` -`),V,i(` +`),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",P,[s("code",null,[q,i(` `),z,i(` +`),V,i(` `),N,i(` `),f,i(` `),w,i(` -`),s("span",R,[U,s("span",j,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.css"',1),Z]),i(` -`),x,i(` +`),s("span",R,[j,s("span",U,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.css"',1),x]),i(` +`),Z,i(` `),M,i(` `),J,i(` -`),H,i(` -`),s("span",L,[$,O,Q,Y,s("span",G,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.js"',1),K]),i(` -`),W,i(` +`),L,i(` +`),s("span",H,[Y,$,O,Q,s("span",W,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.js"',1),G]),i(` +`),K,i(` `),X])])]),s("div",ss,[is,as,s("pre",ts,[s("code",null,[hs,i(` `),ns,i(` `),ls,i(` @@ -27,19 +27,19 @@ 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 `),os,i(` `),ys,i(` `),cs,i(` -`),s("span",Fs,[us,Cs,Ts,As,s("span",Ds,'"///cdn.bootcdn.net/ajax/libs/zui/'+l(t.zui.version)+'/zui.js"',1),ms]),i(` +`),s("span",Fs,[us,Cs,As,Ts,s("span",Ds,'"///cdn.bootcdn.net/ajax/libs/zui/'+l(t.zui.version)+'/zui.js"',1),ms]),i(` `),Bs,i(` -`),bs])])]),s("div",vs,[Ss,Is,s("pre",qs,[s("code",null,[Ps,i(` -`),Vs,i(` +`),bs])])]),s("div",vs,[Ss,Is,s("pre",Ps,[s("code",null,[qs,i(` `),zs,i(` +`),Vs,i(` `),Ns,i(` `),fs,i(` `),ws,i(` -`),s("span",Rs,[Us,s("span",js,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.css"',1),Zs]),i(` -`),xs,i(` +`),s("span",Rs,[js,s("span",Us,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.css"',1),xs]),i(` +`),Zs,i(` `),Ms,i(` `),Js,i(` -`),Hs,i(` -`),s("span",Ls,[$s,Os,Qs,Ys,s("span",Gs,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.js"',1),Ks]),i(` -`),Ws,i(` +`),Ls,i(` +`),s("span",Hs,[Ys,$s,Os,Qs,s("span",Ws,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.js"',1),Gs]),i(` +`),Ks,i(` `),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 1b0d772aa2..e08d6ae1c1 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 00cea7e39e..ede8e26ee5 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 f7c89792db..40a0c0ae27 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 c4e9fa097e..9981dbf236 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 960dc9ef39..9cd3b659a3 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 e8e8749441..bbb9ec64b7 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 95d24af2d5..6d41556ca1 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 29d179df9f..6fdcf9d77d 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 0d0aa76b79..5fd618f0de 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 d186ef9cb3..31c516d31c 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 e85753251a..ca4a6c217f 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 4f50d7dd58..af0c40ec2d 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">
@@ -101,14 +101,14 @@
 });
 
 Messager.show('你好,今天是:' + formatDate(new Date(), 'yyyy年M月d日'));
-</script>

使用 zui-create 声明组件

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

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

注意

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

使用 npm

你可以使用 npm 安装 ZUI:

bash
$ npm install zui

然后在 JS 代码中导入:

js
import zui from 'zui';
+</script>

使用 zui-create 声明组件

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

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

注意

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

使用 npm

你可以使用 npm 安装 ZUI:

bash
$ npm install zui

然后在 JS 代码中导入:

js
import zui from 'zui';
 import 'zui/css';
 
 zui.Messager.show('Hello!');

如果你仅仅需要 ZUI 中的单个组件,例如 数据表格,你可以这样导入:

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

- +
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 d7d5d1a67a..45f2758b8e 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)

- +
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 d8ed20f8f3..f74c96c81f 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 b634c70b6b..2a87b97379 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 4a5a66a7cc..a09c02e329 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 5246339a95..82a08291a3 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 d83f866598..446dca0837 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 bf678bf50b..770ae4c000 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)

- +
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 c1461347d7..b865c068dc 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)

- +
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 9537d39194..d02c196a60 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)

- +
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 5886b96359..93816af21a 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 82692c5894..c522fe9537 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 6a7d2ae09e..084aba4422 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 41fc8bb762..65a257af51 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 b1e7008f88..d0cfe1dfda 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 6052e6b0ef..e0bb86ab90 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 eea332c4ee..b529ff7643 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 5ef68df7bd..b4d046fa42 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)

    - + \ No newline at end of file diff --git a/dev/lib/components/menu/index.html b/dev/lib/components/menu/index.html index b702f38876..4ffe11bb01 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 0a88e6f73a..bb305b7744 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 8f053887ba..7e813503c9 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 4fa4057d5f..544c72fe39 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 1e0cf782f4..9c9b181b99 100644 --- a/dev/lib/components/modal/trigger.html +++ b/dev/lib/components/modal/trigger.html @@ -14,18 +14,18 @@ - - + + -
    Skip to content

    对话框触发器

    对话框触发器允许你不需要书写静态对话框 HTML,直接使用触发按钮或者一行 JS 代码即可让一个全新的对话框展现。支持使用 Ajax 从远程获取内容,或者通过 iframe 加载任何页面内容,当然不使用远程内容,直接使用本地内容也是很方便。

    Ajax 对话框

    在对话框触发按钮上通过 data-url 属性指定远程内容的 URL 地址。

    Ajax 对话框支持手动通过 Modal.open 方法按需打开:

    js
    zui.Modal.open({
    +    
    Skip to content

    对话框触发器

    对话框触发器允许你不需要书写静态对话框 HTML,直接使用触发按钮或者一行 JS 代码即可让一个全新的对话框展现。支持使用 Ajax 从远程获取内容,或者通过 iframe 加载任何页面内容,当然不使用远程内容,直接使用本地内容也是很方便。

    Ajax 对话框

    在对话框触发按钮上通过 data-url 属性指定远程内容的 URL 地址。

    Ajax 对话框支持手动通过 Modal.open 方法按需打开:

    js
    zui.Modal.open({
         url: '/assets/modal/ajax-modal.html',
    -});

    iframe 对话框

    在对话框触发按钮上通过 data-type="iframe" 属性指定对话框类型为 iframe 对话框,然后通过 data-url 属性指定对话框内容页面地址。

    iframe 对话框支持手动通过 Modal.open 方法按需打开:

    js
    zui.Modal.open({
    +});

    iframe 对话框

    在对话框触发按钮上通过 data-type="iframe" 属性指定对话框类型为 iframe 对话框,然后通过 data-url 属性指定对话框内容页面地址。

    iframe 对话框支持手动通过 Modal.open 方法按需打开:

    js
    zui.Modal.open({
         type: 'iframe',
         url: '/assets/modal/iframe-modal.html',
    -});

    自定义信息提示弹窗

    在对话框触发按钮上通过 data-title 属性指定对话框标题,通过 data-content 属性指定对话框内容。

    iframe 对话框支持手动通过 Modal.open 方法按需打开:

    js
    zui.Modal.open({
    +});

    自定义信息提示弹窗

    在对话框触发按钮上通过 data-title 属性指定对话框标题,通过 data-content 属性指定对话框内容。

    iframe 对话框支持手动通过 Modal.open 方法按需打开:

    js
    zui.Modal.open({
         title: '自定义对话框',
         content: '这里是对话框内容',
     });

    系统对话框

    警告框

    通过 zui.Modal.alert() 方法可以打开一个警告框,该方法定义如下:

    ts
    /* 直接指定要提示的消息文本 */
    @@ -47,15 +47,15 @@
     
         /* 当点击提示按钮时的回调函数 */
         onClickAction?: (item: ToolbarItemOptions, modal: Modal) => false | void;
    -}

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

    下面为一个示例:

    确认框

    通过 Modal.confirm() 方法可以打开一个确认框,该方法定义如下:

    ts
    /* 直接指定要提示的消息文本 */
    +}

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

    下面为一个示例:

    确认框

    通过 Modal.confirm() 方法可以打开一个确认框,该方法定义如下:

    ts
    /* 直接指定要提示的消息文本 */
     Modal.confirm(message: string): Promise<string | undefined>;
     
     /* 通过一个选项对象定义个性化对话框 */
     Modal.confirm(options: ModalComfirmOptions): Promise<string | undefined>;

    其中参数定义如下:

    • message:要提示的消息文本;
    • options:一个警告框选项对象 ModalConfirmOptions,定义如下:
    ts
    interface ModalConfirmOptions extends ModalAlertOptions {
         /* 当用户点击确认或取消时的回调函数 */
         onResult?: (confirmed: boolean, modal: Modal) => void;
    -}

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

    下面为一个示例:

    MIT License (MIT)

    - +}

    该方法会通过 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 66b5754315..dcff7400c5 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 d4c308a71a..92f74d3c6c 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 00e6970d7f..885888f8a7 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 6a68b72c49..82c3d3c0ba 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 922878c3ad..a814fdb652 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)

    - + \ 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 d3b30b9e50..a1158e1405 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 3c36a95c99..8ee3f1b4c4 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)

    - +
    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 a3650bf2e6..05fd710180 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 2c9093ed07..19e69254d6 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 311bb5c09f..43ff8131c2 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 08fa7989b2..9810a4e43e 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 0a9adb5723..94d5ac821d 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 2c42f95f8c..8e4af258b4 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 3128280ff6..bf98d7718d 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 d3830bd70e..503ad0328a 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 6c13bbf2e7..529e7bde2b 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 28f5a97791..dc5ead4f9a 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 8f85deac4b..46c516e688 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 4e34b3725d..80c65b9333 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 5b6fe787ff..00c51a5863 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 0c63591184..984f22c6e2 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 44624bff0f..e93e2c1b56 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 9697310815..5626c00a66 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 89e80377b3..64f04bb2ea 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 130225f8e9..36c729729d 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 723eba0230..27c87f7bfd 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 10f5bd72ee..b901368ce9 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 89b99bc33f..26b15fc73d 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 abbc645d22..76f4d00e3e 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 c1937f57f7..deecfffb20 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 0c2c55abc1..b0332a1240 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 ef66315398..94a2232c5f 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 59ee4c1bad..ff7ec7fd45 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 ab5b04325d..a5478d2682 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 03034a3f2a..181de2f04c 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 b3e826350f..c37df71e62 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 b08600ce09..a9c97fe78c 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 8cac6ea379..e83d44372d 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 452888befe..126e227516 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 1144504fbe..f46e8ef499 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 3b8d5d9e10..9dcd8fcb9b 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 69d067c5b4..9c8b9e5f77 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 6beaada38c..7ac1132daf 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 d27af10e2e..d30e1f6c50 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 9a49e2536c..50da9149ed 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 a29047ad12..5a1676c620 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 7824b8764e..cc15e42a5e 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 32d31387cd..1334faec59 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 4c69899a97..9f174991ed 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 490a6a32ad..932c4d81e5 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 d0ee5c9c59..4267dc8d1f 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 4c86ead61c..68ceb22c49 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 281420ff4e..6b433dec0f 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 41f7efba27..09e6b9d93e 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 1966a5574b..766236efdf 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 7e6c275ee6..8f37c7855a 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 5dc0a8f577..2811f4e5e2 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 78c82fa536..1ac8929d4b 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 f794020ca6..8a594824f8 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 ae4904241f..436cda01ef 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 4376e84133..d7f31ad6ec 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 cfc0757068..74f60c1e03 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 ba7ee28870..4abac853e7 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 ca51a5c031..b019a69622 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 f78fa6ab44..908458a231 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 20f59a6d50..5855c5499c 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 88242f3f4d..e683e80c6d 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 6992d59bef..558a2dcfd1 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 0aa99874b1..83f89a6365 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 7e0fd9f451..c235e875f3 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 18ef67b001..a4295941b0 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 14204232bd..fb9dec5441 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 cdd85d9589..e5ddb924dd 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 82a434c46c..5c0ed4115d 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 032b37fb01..09cfe4511a 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 0dd873f72b..7925902511 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 c3d231012b..a3c651f7e5 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 852f11a0e7..e161a1d5bb 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 0d2b6b14d0..58b9780ee5 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 7b2887b592..b3ee528f5a 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 92f575ee2f..b90da603ee 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 d1ebf5b6c8..349ebe377f 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 6fbba27d3f..10944cf56a 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 d8483e762b..b08d2696cf 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 8576404955..2ba7946d72 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 0255556cb2..1620f1bde9 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 35e12cc1db..b434cd379d 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 b06811e2cc..6e3d243cd7 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 46102e6724..bd44b5bc13 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 f770b69d7c..202a0537fe 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 5c3306b1c0..9dd1373abb 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 5d7f595e47..fd2e4af93b 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 67274fdb22..3a0256e6a0 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 4dead0e2f8..9d7d8bf2b4 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 db3f31ce51..846b8c1591 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 1ce2021db8..26b058a8ef 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 82a2a483c8..0da44b1f54 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 6d44147884..8c51466b0b 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 983a5dc810..d0fa9726ed 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 c9e2bfe63e..91f9dfb01a 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 c5a356ed1f..fe41f7c413 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 60e6c2814f4cfb0e0d672bceb121939f40d52fef..0735510287617c61e7597d842ccbccbd7e077831 100644 GIT binary patch delta 600690 zcmV(-K-|BFltABe6q1)0}FrKwGA6s+w;l5 z?gtxK12z`^Gw$7;f8q1G&xlM?J#DWoK*fw3H}3P?bI<#nr&aW!jvhsE(T|#bq>|{- z7t!^DD9TTxc%>PP(>gAa1PY?48CT^+bZ|9Oe|uF`R&j4PEsC;Dsr19XYG8ED ze*hZNgR60HeV%wfI&nwXkLqyV7gY{jHf4L-H8fnyv}tx;p{I_S<@_2b?r>8 z8JE1M@O4(gWTL$heBb+Qurb)^^`jkp+WgID8=Jq`{Or@;{qEPl=|?ZA#;htw^Q_6s z0;+w5(;Ai8e5wlQ=b(Vci@X?>7yW2ff5O98%|O52n<%a|Q~V->&2E$w4^H5-_^SrS zbcP?!RNNco=QzgITArKqWTLR-?L?QHl%p#w*{^g-g^$-!Uhh;@dbJgO2TK5BZpsF> zeG9fTx`nFr66?X_v$WZYo=*C(=95NMP$%!h29MO`>(j01sO(46bhZ^;!H?Oze;#i| zFQ9Hc$unr~9181l3crrvqk6`rA1Bnw6kfi@p|1b%SMlSm;rolV!<+Z-2RFkX-d}EP zti8WXHx83eR@Y%6x!U`|9rd13z0U^^zkr8#^3lb^)%EQMr}KigCA!LK+Y>qjyt%mI zKThI?ptn-ZyeguVBD%SWR#fzhe_uo^V+AkiSJU9H$I6c zL}g7`?a;Z0!}K7-E~7sbc7D|yYs3us*L2hwKk>2GQ{Fajeym}V{>!N0f7cT@$_Q|c ztzF`h=!W%@=1@oB3VtOuxh{VCTBgV=3QL>gTytlxPp+Pi05{#SV9#tjkE7iZ|87Mv zbZPDsPYjj80IBR0{y4<|2(TnMoQIWKPu5?H+el4nMFT%m9ZNFK>j9$VD*>GdCO9a{ zkwP4blZWX(dIaa5W=fMEf7XZ4A$>Vf#aT0kGX0aAI4!Fv#%0DO+~`Mmbe;O!Q2u#T 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
    KexL=s^ZP9uPD>Q*zxmGcB1l)w@Y%H1u)HjwWdI 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
  • G4aHys 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
  • YT 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�mqlIF$kFf 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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 {Component} from 'preact';\nimport type {LazyContentProps, CustomContentType} from '../types';\nimport {fetchData, type Ajax} from '../../ajax';\nimport {HtmlContent} from './html-content';\nimport {CustomContent} from './custom-content';\n\nexport type LazyContentState = {\n loading?: boolean;\n error?: Error;\n content?: CustomContentType;\n};\n\nexport class LazyContent extends Component {\n static defaultProps: Partial = {\n type: 'html',\n };\n\n state: LazyContentState = {};\n\n protected _ajax?: Ajax;\n\n async load() {\n const {props} = this;\n const {fetcher, type} = props;\n this.setState({loading: true, error: undefined, content: undefined});\n try {\n const content = await fetchData(fetcher, [props], {throws: true, dataType: type === 'custom' ? 'json' : 'text'}, this, (ajax) => {\n this._ajax = ajax;\n });\n this.setState({content, loading: false});\n } catch (error) {\n this.setState({error: error as Error, loading: false});\n }\n this._ajax = undefined;\n }\n\n componentDidMount(): void {\n this.load();\n }\n\n componentWillUnmount(): void {\n this._ajax?.abort();\n }\n\n render(props: LazyContentProps) {\n const {loading, error, content = ''} = this.state;\n const {loadingText, errorText, type, ...others} = props;\n if (loading) {\n return loadingText;\n }\n if (error) {\n return errorText ?? error.message;\n }\n if (type === 'html') {\n return ;\n }\n if (type === 'text') {\n return content;\n }\n return ;\n }\n}\n","import {isValidElement} from 'preact';\nimport {HtmlContent} from './html-content';\nimport {HElement} from './h-element';\nimport {LazyContent} from './lazy-content';\nimport {mergeProps} from '../../helpers';\n\nimport type {ComponentChildren, VNode} from 'preact';\nimport type {HtmlContentProps, HElementProps, CustomContentType, CustomContentGenerator, CustomContentProps, LazyContentProps} 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 || (content as LazyContentProps).fetcher)) {\n if ((content as LazyContentProps).fetcher) {\n return ;\n }\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 {LazyContent} from './lazy-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 LazyContent,\n custom: CustomContent,\n lazy: LazyContent,\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, iconClass, text, textClass, children, trailingIcon, trailingIconClass, 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, command} = 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 if (command) {\n componentProps['zui-command'] = command;\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 const {getItems} = props;\n if (getItems) {\n const result = getItems.call(this, items as Item[]);\n if (result !== undefined) {\n return result;\n }\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","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 iconClass,\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 trailingIconClass,\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', className: 'item-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 command,\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 }, command ? {'zui-command': command} : null, 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 _beforeRender(props: RenderableProps

    ): void | RenderableProps

    | undefined {\n return this.props.beforeRender?.call(this, props);\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 (renderedItem.checkbox === false) {\n renderedItem.checked = undefined;\n } else if (checkbox || renderedItem.checkbox) {\n renderedItem.checked = this.isChecked(renderedItem.key!, index, renderedItem.checked as CheckedType);\n if (typeof checkbox === 'object' && renderedItem.checkbox !== false) {\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 || !info.renderedItem) {\n return info;\n }\n const renderedItem = info.renderedItem;\n const itemCheckbox = renderedItem.checkbox;\n const hasCheckbox = itemCheckbox !== false && (this.props.checkbox || itemCheckbox || renderedItem.checked !== undefined);\n if (hasCheckbox && !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' : ''), props.hoverItemActions ? 'with-hover-actions' : ''];\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, $, isValidElement} 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', 'onToggle', 'checkbox', 'getItem', 'getItems', 'checkOnClick', 'selectOnChecked', 'checkedState', 'onClickItem', 'activeOnHover', 'multipleActive', 'onActive', 'hoverItemActions'];\n\n protected declare _hasNestedItems: boolean;\n\n protected declare _storeID: string;\n\n protected declare _renderedItemMap: Map;\n\n protected declare _itemMap?: Map;\n\n protected declare _itemMapCache: Map;\n\n protected declare _needInitChecks?: boolean;\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._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 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(useCache?: boolean) {\n if (useCache && (this._itemMap || this._itemMapCache)) {\n return this._itemMap || this._itemMapCache;\n }\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 this._itemMapCache = map;\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 const itemMap = this._itemMap || this._itemMapCache;\n if (itemMap) {\n return 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, reset?: boolean) {\n const isExpanded = this.isExpanded(keyPath);\n if (!reset && 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, reset) === false) {\n return;\n }\n if (nestedShow !== undefined) {\n return;\n }\n await this.changeState(prevState => {\n let newNestedShow: Record = {\n ...(reset ? {} : 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 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(true).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 await this.changeState(({checked: prevChecked, nestedShow: preNestedShow}) => {\n const isChecked = (item: ItemInfo) => {\n return change[item.keyPath] ?? prevChecked[item.keyPath] ?? item.data.checked ?? false;\n };\n const map = this.getItemMap();\n const nestedShow: Record = {};\n const {expandChildrenOnCheck} = this.props;\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 if (expandChildrenOnCheck && checked && item.data.items) {\n nestedShow[key] = true;\n }\n });\n return {\n checked: {\n ...prevChecked,\n ...change,\n },\n nestedShow: {\n ...preNestedShow,\n ...nestedShow,\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 if (!isValidElement(toggleIcon)) {\n toggleIcon = ;\n }\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, index: number): NestedItem | false {\n const {beforeRenderItem} = this.props;\n if (beforeRenderItem) {\n const result = beforeRenderItem.call(this, item, index);\n if (result !== undefined) {\n item = result;\n }\n }\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 || !this.isRoot) && 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 }, 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 target = target || event.target as HTMLElement;\n let info = super._getItemFromEvent(event, target) as MouseEventInfo;\n if (!info) {\n const listEle = target.closest('[z-list]') as HTMLElement;\n if (listEle) {\n const listKey = listEle.getAttribute('z-list')!;\n const item = this.getItem(listKey);\n const renderedItem = this.getRenderedItem(listKey);\n if (!item || !renderedItem) {\n return;\n }\n info = {\n target,\n index: renderedItem._index as number,\n item,\n element: listEle,\n event,\n key: listKey,\n keyPath: listKey,\n renderedItem,\n };\n }\n return;\n }\n if (event.type === 'mouseenter' || event.type === 'mouseleave' || event.type === 'mouseover') {\n info.hover = event.type !== 'mouseleave';\n }\n const {parentKey} = this.props;\n return {...info, parentKey, keyPath: `${parentKey !== undefined ? `${parentKey}:` : ''}${info.key}`, target};\n }\n\n protected _handleNestedToggle(key: ItemKey, toggle: boolean, reset?: boolean) {\n this.toggle(key, toggle, reset);\n }\n\n protected _handleClick(event: MouseEvent) {\n const info = super._handleClick(event);\n if (info) {\n const {renderedItem: item, keyPath, target} = info as MouseEventInfo;\n const {nestedToggle} = this.props;\n if (!item.items || event.defaultPrevented || target.closest('.not-nested-toggle') || (nestedToggle && !item.disabled && !target.closest(nestedToggle)) || (!nestedToggle && !item.disabled && target.closest('a,.btn,.item-checkbox,.open-url,input,select,textarea') && !target.closest('.nested-toggle-icon,.item-icon'))) {\n return info;\n }\n this.toggle(keyPath);\n event.preventDefault();\n }\n return info;\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-list': 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 = false;\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 declare _hoverInfo?: {timer: number, keyPath?: string | null, shown?: boolean};\n\n constructor(props: T) {\n super(props);\n this._handleHover = this._handleHover.bind(this);\n }\n\n get isHoverTrigger() {\n return this.props.nestedTrigger === 'hover';\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, parentKey} = props;\n const wrapProps = mergeProps(\n {'z-list-wrapper': parentKey},\n wrapAttrs,\n (height || maxHeight) ? {style: {height, maxHeight}} : null,\n this.isRoot && this.isHoverTrigger ? {\n onMouseEnter: this._handleHover,\n onMouseLeave: this._handleHover,\n onMouseOver: this._handleHover,\n } : null,\n );\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 protected _handleHover(event: MouseEvent) {\n const target = event.target;\n if (!(target instanceof HTMLElement) || !this.isHoverTrigger) {\n return;\n }\n\n let keyPath: string | null | undefined;\n if (event.type !== 'mouseleave') {\n const itemEle = target.closest('[z-item]');\n if (itemEle) {\n keyPath = itemEle.getAttribute('z-key-path') as string;\n if (!itemEle.classList.contains('is-nested')) {\n keyPath = itemEle.getAttribute('z-parent') as string;\n }\n } else {\n const listEle = target.closest('[z-list-wrapper]');\n keyPath = listEle?.getAttribute('z-list-wrapper');\n }\n }\n\n const lastInfo = this._hoverInfo;\n const lastKeyPath = lastInfo?.keyPath;\n if (lastKeyPath === keyPath) {\n return;\n }\n if (lastInfo?.timer) {\n clearTimeout(lastInfo.timer);\n }\n const hasKey = typeof keyPath === 'string';\n const lastHasKey = typeof lastKeyPath === 'string';\n const delay = hasKey ? ((lastHasKey && lastInfo?.shown) ? 50 : 200) : (lastInfo?.shown ? 100 : 200);\n this._hoverInfo = {\n keyPath,\n timer: window.setTimeout(() => {\n if (hasKey) {\n this.toggle(keyPath!, true, true);\n this._hoverInfo!.shown = true;\n } else {\n this.toggleAll(false);\n this._hoverInfo = undefined;\n }\n }, delay),\n };\n }\n\n componentWillUnmount(): void {\n super.componentWillUnmount();\n const timer = this._hoverInfo?.timer;\n if (timer) {\n clearTimeout(timer);\n }\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 menuView;\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, mergeProps} from '@zui/core';\nimport {formatString} from '@zui/helpers';\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', 'nestedSearch'];\n\n static defaultProps: Partial = {\n ...Menu.defaultProps,\n defaultNestedShow: true,\n wrap: true,\n nestedSearch: true,\n underlineKeys: 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, nestedSearch} = 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 ((nestedSearch && 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 && props.nestedSearch) {\n nestedProps.isItemMatch = this._isNestedItemMatch;\n nestedProps.search = this._searchKeys.join(' ');\n } else if (!props.nestedSearch) {\n mergeProps(nestedProps as Record, {search: undefined, defaultSearch: undefined}, item.listProps);\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 _getSearchBoxProps(props: RenderableProps): SearchBoxOptions {\n const {searchBox} = props;\n const searchOptions: SearchBoxOptions = {\n compact: true,\n className: 'not-nested-toggle',\n onChange: this._handleSearchChange,\n };\n if (typeof searchBox === 'object') {\n mergeProps(searchOptions, searchBox);\n }\n if (props.search !== undefined) {\n searchOptions.value = this._searchKeys.join(' ');\n searchOptions.disabled = true;\n }\n return searchOptions;\n }\n\n protected _renderSearchBox(props: RenderableProps): ComponentChildren {\n const searchBoxOptions = this._getSearchBoxProps(props);\n return ;\n }\n\n protected _renderWrapperHeader(props: RenderableProps): ComponentChildren {\n const hasHeader = props.header;\n const {noMatchHint, searchBox, searchPlacement, nestedSearch, headerClass} = props;\n const hasTopSearchBox = (!nestedSearch || this.isRoot) && searchBox && searchPlacement !== 'bottom';\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 {searchBox, searchPlacement, nestedSearch, footerClass, exceedLimitHint, limit} = props;\n const hasBottomSearchBox = (!nestedSearch || this.isRoot) && searchBox && searchPlacement === 'bottom';\n const hasExceedLimitHint = exceedLimitHint && limit && this._items.length > limit;\n if (!hasFooter && !hasBottomSearchBox && !hasExceedLimitHint) {\n return null;\n }\n return (\n
    \n {hasExceedLimitHint ?
    {formatString(exceedLimitHint, this._items.length - limit)}
    : null}\n {hasFooter ? super._renderWrapperFooter(props) : null}\n {hasBottomSearchBox ? this._renderSearchBox(props) : null}\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: (string | ((item: Item) => string | undefined))[] = ['keys', 'text', 'title', 'subtitle']) {\n if (!searchKeys.length) {\n return true;\n }\n return searchKeys.every(searchKey => searchProps.some(propSetting => {\n const propValue = typeof propSetting === 'function' ? propSetting(item) : item[propSetting];\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 =