From b2fa2b90b85f14bc0b1477ee09d9b38352487e91 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E4=BB=AA=E5=BC=8F?= <854085467@qq.com>
Date: Mon, 27 Sep 2021 06:09:33 +0800
Subject: [PATCH] =?UTF-8?q?[=E5=85=B6=E4=BB=96]=20=E5=88=9D=E5=A7=8B?=
=?UTF-8?q?=E5=8C=96=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.browserslistrc | 3 +
.eslintrc.js | 26 +
.github/workflows/build docs.yml | 27 +
.github/workflows/test.yml | 20 +
.gitignore | 20 +
.helperrc.js | 53 +
.lintstagedrc | 4 +
.postcssrc.json | 9 +
.prettierrc | 4 +
LICENSE | 20 +
README.md | 102 +
docs/docs/en-US/components/button.md | 700 +++
docs/docs/en-US/guide/home.md | 1 +
docs/docs/en-US/guide/index.md | 5 +
docs/docs/zh-CN/components/button.md | 32 +
docs/docs/zh-CN/guide/home.md | 1 +
docs/docs/zh-CN/guide/index.md | 5 +
docs/index.html | 23 +
docs/prerender.js | 47 +
docs/public/favicon.ico | Bin 0 -> 4286 bytes
docs/src/App.vue | 3 +
docs/src/components/LayCode.vue | 152 +
docs/src/entry-client.ts | 7 +
docs/src/entry-server.ts | 51 +
docs/src/layouts/Layout.vue | 25 +
docs/src/main.ts | 25 +
docs/src/plugin/common-plugins.ts | 47 +
docs/src/plugin/create-container.ts | 33 +
docs/src/plugin/demo.ts | 146 +
docs/src/plugin/highlight.ts | 46 +
docs/src/plugin/pre-wrapper.ts | 11 +
docs/src/plugin/snippet.ts | 49 +
docs/src/router/index.ts | 20 +
docs/src/router/zh-CN.ts | 32 +
docs/src/styles/code.css | 214 +
docs/src/styles/custom-blocks.css | 71 +
docs/src/styles/index.css | 4 +
docs/src/styles/markdown.css | 220 +
docs/src/styles/vars.css | 52 +
docs/src/tsconfig.json | 4 +
docs/vite.config.ts | 13 +
jest.config.js | 27 +
package.json | 98 +
shims-vue.d.ts | 25 +
src/css/layui.css | 6593 ++++++++++++++++++++++++++
src/font/iconfont.eot | Bin 0 -> 52080 bytes
src/font/iconfont.svg | 387 ++
src/font/iconfont.ttf | Bin 0 -> 51904 bytes
src/font/iconfont.woff | Bin 0 -> 33172 bytes
src/font/iconfont.woff2 | Bin 0 -> 28556 bytes
src/index.ts | 50 +
src/module/body/index.ts | 9 +
src/module/body/index.vue | 9 +
src/module/button/index.ts | 9 +
src/module/button/index.vue | 14 +
src/module/footer/index.ts | 9 +
src/module/footer/index.vue | 9 +
src/module/header/index.ts | 9 +
src/module/header/index.vue | 9 +
src/module/icon/index.ts | 9 +
src/module/icon/index.vue | 7 +
src/module/layout/index.ts | 9 +
src/module/layout/index.vue | 9 +
src/module/logo/index.ts | 9 +
src/module/logo/index.vue | 9 +
src/module/radio/index.ts | 9 +
src/module/radio/index.vue | 7 +
src/module/side/index.ts | 9 +
src/module/side/index.vue | 9 +
src/module/type/index.ts | 1 +
src/module/type/public.ts | 17 +
tsconfig.json | 20 +
vite.config.ts | 44 +
73 files changed, 9752 insertions(+)
create mode 100644 .browserslistrc
create mode 100644 .eslintrc.js
create mode 100644 .github/workflows/build docs.yml
create mode 100644 .github/workflows/test.yml
create mode 100644 .gitignore
create mode 100644 .helperrc.js
create mode 100644 .lintstagedrc
create mode 100644 .postcssrc.json
create mode 100644 .prettierrc
create mode 100644 LICENSE
create mode 100644 README.md
create mode 100644 docs/docs/en-US/components/button.md
create mode 100644 docs/docs/en-US/guide/home.md
create mode 100644 docs/docs/en-US/guide/index.md
create mode 100644 docs/docs/zh-CN/components/button.md
create mode 100644 docs/docs/zh-CN/guide/home.md
create mode 100644 docs/docs/zh-CN/guide/index.md
create mode 100644 docs/index.html
create mode 100644 docs/prerender.js
create mode 100644 docs/public/favicon.ico
create mode 100644 docs/src/App.vue
create mode 100644 docs/src/components/LayCode.vue
create mode 100644 docs/src/entry-client.ts
create mode 100644 docs/src/entry-server.ts
create mode 100644 docs/src/layouts/Layout.vue
create mode 100644 docs/src/main.ts
create mode 100644 docs/src/plugin/common-plugins.ts
create mode 100644 docs/src/plugin/create-container.ts
create mode 100644 docs/src/plugin/demo.ts
create mode 100644 docs/src/plugin/highlight.ts
create mode 100644 docs/src/plugin/pre-wrapper.ts
create mode 100644 docs/src/plugin/snippet.ts
create mode 100644 docs/src/router/index.ts
create mode 100644 docs/src/router/zh-CN.ts
create mode 100644 docs/src/styles/code.css
create mode 100644 docs/src/styles/custom-blocks.css
create mode 100644 docs/src/styles/index.css
create mode 100644 docs/src/styles/markdown.css
create mode 100644 docs/src/styles/vars.css
create mode 100644 docs/src/tsconfig.json
create mode 100644 docs/vite.config.ts
create mode 100644 jest.config.js
create mode 100644 package.json
create mode 100644 shims-vue.d.ts
create mode 100644 src/css/layui.css
create mode 100644 src/font/iconfont.eot
create mode 100644 src/font/iconfont.svg
create mode 100644 src/font/iconfont.ttf
create mode 100644 src/font/iconfont.woff
create mode 100644 src/font/iconfont.woff2
create mode 100644 src/index.ts
create mode 100644 src/module/body/index.ts
create mode 100644 src/module/body/index.vue
create mode 100644 src/module/button/index.ts
create mode 100644 src/module/button/index.vue
create mode 100644 src/module/footer/index.ts
create mode 100644 src/module/footer/index.vue
create mode 100644 src/module/header/index.ts
create mode 100644 src/module/header/index.vue
create mode 100644 src/module/icon/index.ts
create mode 100644 src/module/icon/index.vue
create mode 100644 src/module/layout/index.ts
create mode 100644 src/module/layout/index.vue
create mode 100644 src/module/logo/index.ts
create mode 100644 src/module/logo/index.vue
create mode 100644 src/module/radio/index.ts
create mode 100644 src/module/radio/index.vue
create mode 100644 src/module/side/index.ts
create mode 100644 src/module/side/index.vue
create mode 100644 src/module/type/index.ts
create mode 100644 src/module/type/public.ts
create mode 100644 tsconfig.json
create mode 100644 vite.config.ts
diff --git a/.browserslistrc b/.browserslistrc
new file mode 100644
index 00000000..b29aeba8
--- /dev/null
+++ b/.browserslistrc
@@ -0,0 +1,3 @@
+current node
+last 2 versions and > 2%
+ie > 10
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 00000000..60e16ae9
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,26 @@
+module.exports = {
+ env: {
+ browser: true,
+ node: true,
+ },
+ parser: 'vue-eslint-parser',
+ parserOptions: {
+ parser: '@typescript-eslint/parser',
+ sourceType: 'module',
+ ecmaVersion: 10,
+ },
+ plugins: ['@typescript-eslint', 'prettier'],
+ extends: [
+ 'eslint:recommended',
+ 'plugin:vue/vue3-recommended',
+ 'plugin:@typescript-eslint/recommended',
+ ],
+ rules: {
+ 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
+ quotes: ['error', 'single'],
+ semi: ['error', 'never'],
+ 'no-unused-vars': 'off',
+ '@typescript-eslint/no-unused-vars': 'off',
+ },
+}
diff --git a/.github/workflows/build docs.yml b/.github/workflows/build docs.yml
new file mode 100644
index 00000000..ca01066d
--- /dev/null
+++ b/.github/workflows/build docs.yml
@@ -0,0 +1,27 @@
+name: build docs
+
+on:
+ push:
+ branches: [ master ]
+
+jobs:
+ build-and-deploy:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2.3.1
+ with:
+ persist-credentials: false
+
+ - name: Install and Build
+ run: |
+ npm install
+ npm run build:docs
+ - name: Deploy
+ uses: JamesIves/github-pages-deploy-action@3.6.2
+ with:
+ GITHUB_TOKEN: ${{ secrets.TOKEN }}
+ BRANCH: gh-pages
+ FOLDER: docs/dist
+ CLEAN: true
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 00000000..a5a3745a
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,20 @@
+name: test
+
+on:
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2.3.1
+ with:
+ persist-credentials: false
+
+ - name: Install and Test
+ run: |
+ npm install
+ npm run test
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..c89ed60e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,20 @@
+.DS_Store
+node_modules/
+dist/
+example/dist/
+lib/
+/types/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+yarn.lock
+package-lock.json
+
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
diff --git a/.helperrc.js b/.helperrc.js
new file mode 100644
index 00000000..54245a3f
--- /dev/null
+++ b/.helperrc.js
@@ -0,0 +1,53 @@
+const helper = require('components-helper')
+const { name, version } = require('./package.json')
+
+helper({
+ name,
+ version,
+ entry: 'docs/docs/en-US/components/*.md',
+ outDir: 'lib',
+ reComponentName,
+ reDocUrl,
+ reAttribute,
+ titleRegExp: '#+\\s+(.*)\n+>\\s*([^(#|\\n)]*)',
+ tableRegExp:
+ '#+\\s+(.*\\s*Props|.*\\s*Events|.*\\s*Slots|.*\\s*Directives)\\s*\\n+(\\|?.+\\|.+)\\n\\|?\\s*:?-+:?\\s*\\|.+((\\n\\|?.+\\|.+)+)',
+})
+
+function reComponentName(title) {
+ return 'ele-' + title.replace(/\B([A-Z])/g, '-$1').toLowerCase()
+}
+
+function reDocUrl(fileName, header) {
+ // TODO: `zh-CN` -> `en-US`
+ const docs = 'https://gitee.com/Jmysy/layui-vue'
+ const _header = header ? header.replace(/[ ]+/g, '-') : undefined
+ return docs + fileName + (_header ? '#' + header : '')
+}
+
+function reAttribute(value, key) {
+ if (key === 'Name' && /^(-|—)$/.test(value)) {
+ return 'default'
+ } else if (key === 'Name' && /v-model:(.+)/.test(value)) {
+ const _value = value.match(/v-model:(.+)/)
+ return _value ? _value[1] : undefined
+ } else if (key === 'Name' && /v-model/.test(value)) {
+ return 'model-value'
+ } else if (key === 'Name') {
+ return value.replace(/\B([A-Z])/g, '-$1').toLowerCase()
+ } else if (key === 'Type') {
+ return value
+ .replace(/\s*\/\s*/g, '|')
+ .replace(/\s*,\s*/g, '|')
+ .replace(/\(.*\)/g, '')
+ .toLowerCase()
+ } else if (value === '' || /^(-|—)$/.test(value)) {
+ return undefined
+ } else if (key === 'Options') {
+ return /\[.+\]\(.+\)/.test(value) || /^\*$/.test(value)
+ ? undefined
+ : value.replace(/`/g, '')
+ } else {
+ return value
+ }
+}
\ No newline at end of file
diff --git a/.lintstagedrc b/.lintstagedrc
new file mode 100644
index 00000000..9e87aea5
--- /dev/null
+++ b/.lintstagedrc
@@ -0,0 +1,4 @@
+{
+ "*.{ts,vue,js,tsx,jsx}": ["prettier --write --no-verify ", "eslint --fix"],
+ "*.{html,css,md,json}": "prettier --write",
+}
\ No newline at end of file
diff --git a/.postcssrc.json b/.postcssrc.json
new file mode 100644
index 00000000..67ab504b
--- /dev/null
+++ b/.postcssrc.json
@@ -0,0 +1,9 @@
+{
+ "map": false,
+ "plugins": {
+ "postcss-preset-env": {
+ "stage": 1
+ },
+ "autoprefixer": {}
+ }
+}
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 00000000..fd496a82
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,4 @@
+{
+ "singleQuote": true,
+ "semi": false
+}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..5d5d01c2
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright 2019 Jmys
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..3032dd3d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,102 @@
+
+
+a component library for Vue 3 base on element-plus
+
+
+
+
+
+
+
+
+
+
+
+
+
+[开 发 文 档](https://jmysy.github.io/layui-vue) | [更 新 日 志](https://gitee.com/Jmysy/layui-vue/releases) | [常 见 问 题](https://gitee.com/Jmysy/layui-vue/issues)
+
+##### 📖 概述
+
+Element Enhance 是基于 Element Plus 而开发的模板组件,提供了更高级别的抽象支持,开箱即用,更加专注于页面。
+
+### Status: Beta
+
+This project is still under heavy development. Feel free to join us and make your first pull request.
+
+[![Edit layui-vue](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/layui-vue-template-vh9bg?fontsize=14&hidenavigation=1&theme=dark)
+
+##### 📢 理念
+
+Element Plus 定义了基础的设计规范,对应也提供了大量的基础组件。但是对于中后台类应用,我们希望提供更高程度的抽象,提供更上层的设计规范,并且对应提供相应的组件使得开发者可以快速搭建出高质量的页面。
+
+列表页应该可以用 EleLayout + EleTable 完成,编辑页应该使用 EleLayout + EleForm 完成,详情页可以用 EleLayout + EleDescriptions 完成。 一个页面在开发工程中只需要关注几个重型组件,降低心智负担,专注于更核心的业务逻辑。
+
+##### ✒️ 特性
+
+该组件库的开发理念就是面向未来,如果查看源码你就会发现像是 vue 3 的 [script setup](https://github.com/vuejs/rfcs/pull/227.) 实验性功能、像是 CSSNext 的 [CSS Variables](https://developer.mozilla.org/en-US/docs/Web/CSS/--*)。在保证大部分浏览器的兼容性的情况下,会更多的使用新特性、新功能来开发
+
+##### 💡 计划
+
+- [x] PageContainer: 为了减少繁杂的面包屑配置和标题。
+- [ ] StatisticCard: 指标卡结合统计数值用于展示某主题的核心指标。
+- [ ] Search: 有些是时候表单要与别的组件组合使用,需要一些特殊形态的表单。
+
+##### ☁️ 入门
+
+让 Element Plus 更简单, 更通用, 更流行
+
+
+
+安装
+
+```
+npm install element-plus --save
+
+npm install layui-vue --save
+```
+
+引入
+
+```js
+import { createApp } from 'vue'
+import App from './App.vue'
+import ElementEnhance from 'layui-vue'
+import 'layui-vue/lib/style.css'
+import ElementPlus from 'element-plus'
+import 'element-plus/lib/theme-chalk/index.css'
+
+const app = createApp(App)
+
+app.use(ElementEnhance)
+app.use(ElementPlus)
+app.mount('#app')
+```
+
+使用
+
+```vue
+
+
+
+
+
+```
+
+效果
+
+![输入图片说明](https://images.gitee.com/uploads/images/2021/0530/172502_95f955fc_4835367.png '屏幕截图.png')
+
+##### 🔥 案例
+
+[Element Enhance Admin](https://gitee.com/Jmysy/layui-vue-admin) : 基于 Element Enhance 的 前端 Cli template
+
+##### 📈 趋势
+
+[![Giteye chart](https://chart.giteye.net/gitee/Jmysy/layui-vue/9X8CXNEY.png)](https://giteye.net/chart/9X8CXNEY)
+
+##### 🍚 贡献
+
+组件库还处于早期开发阶段,功能还需要完善。如果你希望参与贡献,欢迎 [Pull Request](https://github.com/Jmysy/layui-vue/pulls)。如果只是简单的文档相关的错误修正,你可以直接 PR,但如果是当前组件的 BUG 或者新功能、新组件等,最好优先提 [issues](https://github.com/Jmysy/layui-vue/issues)
+
+[![Giteye chart](https://chart.giteye.net/gitee/Jmysy/layui-vue/57W94KFG.png)](https://giteye.net/chart/57W94KFG)
diff --git a/docs/docs/en-US/components/button.md b/docs/docs/en-US/components/button.md
new file mode 100644
index 00000000..f48affb6
--- /dev/null
+++ b/docs/docs/en-US/components/button.md
@@ -0,0 +1,700 @@
+##### 基础
+
+::: demo 传入 columns 数据,自动生成表格
+
+
+
+
+
+
+
+:::
+
+##### 索引
+
+::: demo 通过配置 index 显示索引列,支持 columns 的参数
+
+
+
+
+
+
+
+:::
+
+##### 多选
+
+::: demo 通过配置 selection 显示多选框,支持 columns 的参数
+
+
+
+
+
+
+
+:::
+
+##### 展开
+
+::: demo 通过配置 expand 开启展开插槽,通过 #expand 插槽定制显示内容,支持 columns 的参数
+
+
+
+
+ {{ row }}
+
+
+
+
+
+
+:::
+
+##### 操作
+
+::: demo 通过配置 menu 开启按钮插槽,通过 #menu 插槽定制显示内容,支持 columns 的参数
+
+
+
+
+
+ 详情
+
+
+
+
+
+
+
+:::
+
+##### 插槽
+
+::: demo
+
+
+
+
+ {{ column.label }}
+
+
+
+ {{ row?.name }}
+
+
+
+
+ 详情
+
+
+
+
+
+
+
+:::
+
+##### 分页
+
+::: demo 当传入 total 数据时,将自动显示分页。可以通过 `v-model:current-page` 绑定当前页数、通过 `v-model:page-size` 绑定每页显示条目个数
+
+
+
+
+
+
+
+:::
+
+##### 多级
+
+::: demo 通过 columns 的 `children` 配置多级表头
+
+
+
+
+
+
+
+:::
+
+##### 配置
+
+| 参数 | 说明 | 类型 | 可选值 | 默认值 |
+| :---------------------- | :------------------------------------------------------------------ | :------------------------------------------------------ | :----------------------------- | :--------------------------------------------------- |
+| data | 显示的数据 | array | - | - |
+| columns | 自动生成表单的参数,参考下面 columns | array | - | - |
+| selection | 显示多选框,支持 columns 的配置 | boolean / object | - | false |
+| index | 显示索引,支持 columns 的配置 | boolean / object | - | false |
+| expand | 开启展开插槽,支持 columns 的配置 | boolean / object | - | false |
+| menu | 开启操作按钮插槽,支持 columns 的配置 | boolean / object | - | false |
+| show-overflow-tooltip | 当内容过长被隐藏时显示 tooltip | boolean | - | false |
+| align | 对齐方式 | string | left / center / right | left |
+| header-align | 表头对齐方式 | string | left / center / right | 同 align |
+| total | 总条目数 | number | - | - |
+| current-page | 当前页数,可以通过 `v-model:current-page` 绑定值 | number | - | - |
+| page-size | 每页显示条目个数,可以通过 `v-model:page-size` 绑定值 | number | - | - |
+| pagination | pagination 的配置,同 el-pagination | object | - | [参考全局配置](../guide/index#全局配置) |
+| height | Table 的高度 | string / number | - | 自动高度 |
+| max-height | Table 的最大高度 | string / number | - | - |
+| stripe | 是否为斑马纹 table | boolean | - | false |
+| border | 是否带有纵向边框 | boolean | - | false |
+| size | Table 的尺寸 | string | medium / small / mini | - |
+| fit | 列的宽度是否自撑开 | boolean | - | true |
+| show-header | 是否显示表头 | boolean | - | true |
+| highlight-current-row | 是否要高亮当前行 | boolean | - | false |
+| current-row-key | 当前行的 key,只写属性 | string / number | - | - |
+| row-class-name | 为行增加 className | Function({row, rowIndex}) / string | - | - |
+| row-style | 为行增加 style | Function({row, rowIndex}) / object | - | - |
+| cell-class-name | 为单元格增加 className | Function({row, column, rowIndex, columnIndex}) / string | - | - |
+| cell-style | 为单元格增加 style | Function({row, column, rowIndex, columnIndex}) / object | - | - |
+| header-row-class-name | 为表头行增加 className | Function({row, rowIndex}) / string | - | - |
+| header-row-style | 为表头行增加 style | Function({row, rowIndex}) / object | - | - |
+| header-cell-class-name | 为表头单元格增加 className | Function({row, column, rowIndex, columnIndex}) / string | - | - |
+| header-cell-style | 为表头单元格增加 style | Function({row, column, rowIndex, columnIndex}) / object | - | - |
+| row-key | 行数据的 Key,使用 reserveSelection 功能时必填 | Function(row) / string | - | - |
+| empty-text | 空数据时显示的文本内容 | string | - | 暂无数据 |
+| default-expand-all | 是否默认展开所有行 | boolean | - | false |
+| expand-row-keys | Table 目前的展开行,与 row-key 配合使用 | array | - | - |
+| default-sort | 默认的排序列的 prop 和顺序 | Object | `order`: ascending, descending | ascending |
+| tooltip-effect | tooltip `effect` 属性 | String | dark / light | - |
+| show-summary | 是否在表尾显示合计行 | Boolean | - | false |
+| sum-text | 合计行第一列的文本 | String | - | 合计 |
+| summary-method | 自定义的合计计算方法 | Function({ columns, data }) | - | - |
+| span-method | 合并行或列的计算方法 | Function({ row, column, rowIndex, columnIndex }) | - | - |
+| select-on-indeterminate | 当仅有部分行被选中时,点击表头的多选框时的行为,配合 selection 使用 | boolean | - | true |
+| indent | 展示树形数据时,树节点的缩进 | number | - | 16 |
+| lazy | 是否懒加载子节点数据 | boolean | - | - |
+| load | 加载子节点数据的函数,lazy 为 true 时生效 | Function(row, treeNode, resolve) | - | - |
+| tree-props | 渲染嵌套数据的配置选项 | Object | - | { hasChildren: 'hasChildren', children: 'children' } |
+
+##### 参数
+
+| 参数 | 说明 | 类型 | 可选值 | 默认值 |
+| :------------------ | :-------------------------------------------------------------------- | :-------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------- |
+| prop | 对应 data 的字段名 (**必填,需要是唯一值**) | string | - | - |
+| label | 显示的标题 | string | - | - |
+| slot | 是否开启自定义插槽功能 | boolean | - | false |
+| hide | 是否在表格中隐藏 | boolean | - | false |
+| children | 实现多级表头 | array | - | - |
+| columnKey | 当前项的 key,使用 filter-change 事件时需要 | string | - | - |
+| width | 对应列的宽度 | string | - | - |
+| minWidth | 对应列的最小宽度 | string | - | - |
+| fixed | 列是否固定,true 表示固定在左侧 | string / boolean | true / left / right | - |
+| renderHeader | 列标题 Label 区域渲染使用的 Function | Function(h, { column, $index }) | - | - |
+| sortable | 对应列是否可以排序 | boolean / string | true / false / 'custom' | false |
+| sortMethod | 对数据进行排序的时候使用的方法 | Function(a, b) | - | - |
+| sortBy | 指定数据按照哪个属性进行排序 | string / array / Function(row, index) | - | - |
+| sortOrders | 数据在排序时所使用排序策略的轮转顺序 | array | `ascending` 表示升序,`descending` 表示降序,`null` 表示还原为原始顺序 | ['ascending', 'descending', null] |
+| resizable | 对应列是否可以通过拖动改变宽度,配合 border 使用 | boolean | - | true |
+| formatter | 用来格式化内容 | Function(row, column, cellValue, index) | - | - |
+| showOverflowTooltip | 当内容过长被隐藏时显示 tooltip | Boolean | - | false |
+| align | 对齐方式 | string | left / center / right | left |
+| headerAlign | 表头对齐方式 | string | left / center / right | 同 align |
+| className | 列的 className | string | - | - |
+| labelClassName | 当前列标题的自定义类名 | string | - | - |
+| filters | 数据过滤的选项 | Array[{ text, value }] | - | - |
+| filterPlacement | 过滤弹出框的定位 | string | top / top-start / top-end / bottom / bottom-start / bottom-end / left / left-start / left-end / right / right-start / right-end | - |
+| filterMultiple | 数据过滤的选项是否多选 | boolean | - | true |
+| filterMethod | 数据过滤使用的方法 | Function(value, row, column) | - | - |
+| filteredValue | 选中的数据过滤项 | array | - | - |
+| index | 自定义索引,只能够在 index 中配置 | Function(index) / number | - | - |
+| selectable | 这一行的 CheckBox 是否可以勾选,只能够在 selection 中配置 | Function(row, index) | - | - |
+| reserveSelection | 是否保留之前选中的数据(需指定 `row-key`),只能够在 selection 中配置 | boolean | - | false |
+
+##### 事件
+
+| 事件名 | 说明 | 参数 |
+| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
+| select | 当用户手动勾选数据行的 Checkbox 时触发的事件 | selection, row |
+| select-all | 当用户手动勾选全选 Checkbox 时触发的事件 | selection |
+| selection-change | 当选择项发生变化时会触发该事件 | selection |
+| cell-mouse-enter | 当单元格 hover 进入时会触发该事件 | row, column, cell, event |
+| cell-mouse-leave | 当单元格 hover 退出时会触发该事件 | row, column, cell, event |
+| cell-click | 当某个单元格被点击时会触发该事件 | row, column, cell, event |
+| cell-dblclick | 当某个单元格被双击击时会触发该事件 | row, column, cell, event |
+| row-click | 当某一行被点击时会触发该事件 | row, column, event |
+| row-contextmenu | 当某一行被鼠标右键点击时会触发该事件 | row, column, event |
+| row-dblclick | 当某一行被双击时会触发该事件 | row, column, event |
+| header-click | 当某一列的表头被点击时会触发该事件 | column, event |
+| header-contextmenu | 当某一列的表头被鼠标右键点击时触发该事件 | column, event |
+| sort-change | 当表格的排序条件发生变化的时候会触发该事件 | { column, prop, order } |
+| filter-change | 当表格的筛选条件发生变化的时候会触发该事件,参数的值是一个对象,对象的 key 是 column 的 columnKey,对应的 value 为用户选择的筛选条件的数组。 | filters |
+| current-change | 当表格的当前行发生变化的时候会触发该事件,如果要高亮当前行,请打开表格的 highlight-current-row 属性 | currentRow, oldCurrentRow |
+| header-dragend | 当拖动表头改变了列的宽度的时候会触发该事件 | newWidth, oldWidth, column, event |
+| expand-change | 当用户对某一行展开或者关闭的时候会触发该事件(展开行时,回调的第二个参数为 expandedRows;树形表格时第二参数为 expanded) | row, (expandedRows \| expanded) |
+| size-change | pageSize 改变时会触发 | 每页条数 |
+| current-change | currentPage 改变时会触发 | 当前页 |
+| prev-click | 用户点击上一页按钮改变当前页后触发 | 当前页 |
+| next-click | 用户点击下一页按钮改变当前页后触发 | 当前页 |
+
+##### 方法
+
+| 方法名 | 说明 | 参数 |
+| ------------------ | ----------------------------------------------------------------------------------------------------------------------- | --------------------------- |
+| clearSelection | 用于多选表格,清空用户的选择 | - |
+| toggleRowSelection | 用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中) | row, selected |
+| toggleAllSelection | 用于多选表格,切换全选和全不选 | - |
+| toggleRowExpansion | 用于可展开表格与树形表格,切换某一行的展开状态,如果使用了第二个参数,则是设置这一行展开与否(expanded 为 true 则展开) | row, expanded |
+| setCurrentRow | 用于单选表格,设定某一行为选中行,如果调用时不加参数,则会取消目前高亮行的选中状态。 | row |
+| clearSort | 用于清空排序条件,数据会恢复成未排序的状态 | - |
+| clearFilter | 不传入参数时用于清空所有过滤条件,数据会恢复成未过滤的状态,也可传入由 columnKey 组成的数组以清除指定列的过滤条件 | columnKey |
+| doLayout | 对 Table 进行重新布局。当 Table 或其祖先元素由隐藏切换为显示时,可能需要调用此方法 | - |
+| sort | 手动对 Table 进行排序。参数`prop`属性指定排序列,`order`指定排序顺序。 | prop: string, order: string |
+
+::: tip 提示
+如果使用 `typescript` 可以从组件中导出 `ITableExpose` 提供更好的类型推导
+:::
+
+### 插槽
+
+| name | 说明 |
+| :------------ | :----------------------------------------------------------------------- |
+| - | 在右侧菜单前插入的任意内容 |
+| menu | 表格右侧自定义按钮,参数为 { size, row, column, $index } |
+| expand | 当 expand 为 true 时,配置展开显示的内容,参数为 { row, column, $index } |
+| append | 插入至表格最后一行之后的内容 |
+| [prop] | 当前这列的内容,参数为 { size, row, column, $index } |
+| [prop]-header | 当前这列表头的内容,参数为 { size, column, $index } |
+
+::: tip 提示
+[prop] 为 columns 中定义的 prop
+:::
diff --git a/docs/docs/en-US/guide/home.md b/docs/docs/en-US/guide/home.md
new file mode 100644
index 00000000..0a75d65a
--- /dev/null
+++ b/docs/docs/en-US/guide/home.md
@@ -0,0 +1 @@
+##### 介绍
diff --git a/docs/docs/en-US/guide/index.md b/docs/docs/en-US/guide/index.md
new file mode 100644
index 00000000..d89e87a8
--- /dev/null
+++ b/docs/docs/en-US/guide/index.md
@@ -0,0 +1,5 @@
+##### 安装
+
+```
+npm install layui-vue --save
+```
diff --git a/docs/docs/zh-CN/components/button.md b/docs/docs/zh-CN/components/button.md
new file mode 100644
index 00000000..11fb5515
--- /dev/null
+++ b/docs/docs/zh-CN/components/button.md
@@ -0,0 +1,32 @@
+##### 基础
+
+::: demo 传入 columns 数据,自动生成表格
+
+
+ 原始按钮
+ 默认按钮
+ 百搭按钮
+ 暖色按钮
+ 警告按钮
+ 禁用按钮
+
+
+
+
+:::
+
+#### 插槽
+
+| name | 说明 |
+| :------------ | :----------------------------------------------------------------------- |
+| type | 按钮类型 |
\ No newline at end of file
diff --git a/docs/docs/zh-CN/guide/home.md b/docs/docs/zh-CN/guide/home.md
new file mode 100644
index 00000000..0a75d65a
--- /dev/null
+++ b/docs/docs/zh-CN/guide/home.md
@@ -0,0 +1 @@
+##### 介绍
diff --git a/docs/docs/zh-CN/guide/index.md b/docs/docs/zh-CN/guide/index.md
new file mode 100644
index 00000000..d89e87a8
--- /dev/null
+++ b/docs/docs/zh-CN/guide/index.md
@@ -0,0 +1,5 @@
+##### 安装
+
+```
+npm install layui-vue --save
+```
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 00000000..a6b47b89
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/prerender.js b/docs/prerender.js
new file mode 100644
index 00000000..c3224d9e
--- /dev/null
+++ b/docs/prerender.js
@@ -0,0 +1,47 @@
+/* eslint-disable @typescript-eslint/no-var-requires */
+const fs = require('fs')
+const path = require('path')
+
+const toAbsolute = (p) => path.resolve(__dirname, p).replace(/\\/, '/')
+
+const manifest = require('./dist/static/ssr-manifest.json')
+const template = fs.readFileSync(toAbsolute('dist/static/index.html'), 'utf-8')
+const { render } = require('./dist/server/entry-server.js')
+
+const writeFileRecursive = function (path, buffer) {
+ const lastPath = path.substring(0, path.lastIndexOf('/'))
+
+ fs.mkdir(lastPath, { recursive: true }, () => {
+ fs.writeFileSync(path, buffer)
+ })
+}
+
+const fileDisplay = (file) => {
+ fs.readdirSync(toAbsolute(file)).forEach(async (filename) => {
+ const filedir = path.join(file, filename).replace(/\\/, '/')
+
+ if (fs.statSync(toAbsolute(filedir)).isDirectory()) {
+ fileDisplay(filedir)
+ } else {
+ const url = filedir
+ .replace(/^docs/, '')
+ .replace(/\.(vue|md)$/, '')
+ .replace(/index$/, '')
+ .replace(/\/([^/]*)$/, (item) =>
+ item.replace(/\B([A-Z])/g, '-$1').toLowerCase()
+ )
+ const [appHtml, preloadLinks] = await render(url, manifest)
+ const html = template
+ .replace('', preloadLinks)
+ .replace('', appHtml)
+
+ const filePath = `dist/static${url.replace(/\/$/, '/index')}.html`
+ writeFileRecursive(toAbsolute(filePath), html)
+ console.log('pre-rendered:', filePath)
+ }
+ })
+}
+
+fileDisplay('docs')
+
+fs.unlinkSync(toAbsolute('dist/static/ssr-manifest.json'))
diff --git a/docs/public/favicon.ico b/docs/public/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..b2d220434ec7e9f1ba5c30e5dc38b7b053467d9d
GIT binary patch
literal 4286
zcmcJTeN>m_8OJY#BNA-X+{BtrR)<96guK7}`0+!b?CmsL&Nj1jJKM5Zf2@X169wNQ
z--hubqNW>X2xrWxr>(F&YfGIlr@7Svb4{6vs41AD#LK2jFY}{rM(lw0)GmvY<&xA5m)50bo-1&Ln9bwm
z_^Kp150_Ua-#H+e16fr5%vdpH6Xer;mzeVVUTP_2U-`|>oX<>3|O|l$YdBxU^Ym$SJJrk@C9bE4jJ}sZG_f%k?
zIAe^plQF-Oy4?8wAo_iNU}22pK7Pg4f1VfVi_DC+^`5HE*V5V@On6k|gE?Ss1^cq|
zyklcp13Z^B7p9CfznUP8Yh1z_DVwR0cLmI2
zl>{5t*gcrN|x0kqL*3*q{`>qRgoo%FV9Tcr?EpkFQ*J5RVJMJ?^!q72UTJ8}1cP
zeADMMUAz53se0kwJ{;gF#E)a^o!+)?+u+&TQk?p2*7&!qOO=|eXzSlkRwspHhbUA1
zn4HarPvg^i7Nf9FDSR(@@i+sw)o1fvqs*r9Vh(+$55AtC^F{7S`0uQ<4_)e!HJ39#
z%xs>ZI)a-juV;n}?*v;siH&s49NrCOub``ZurzKkd?&$sH+pnB^038@qbm{vRoC8^
zDbIkrdv@2_4s2ZkpGdO@-3rj{tw&|g{K)QY=qK3oyU5ow*a_ATv@j)ApmZF>e5TkZV02dIC2a6U&U`|UYjzSA!X0r-Dj;nAXcQ}
z*|9$8{0Kg%>5}i{qYvQsee(1zl|Q-1ueHQe)f3;-M`lm_w1(ya_vrJ5eeL9IJhmcH
z-d`Li>IZV;?Znq2{NL#Cz%Q-%uoB<7iI2B$4Byj0Y=NKR!1bAlBRP;A>%aMj;e&`1
z`<}Cy4CW3vwK+WS&q?g#_$|77QUgL4Vn
zm*I$a@WVxi2fv%(R!FSwxiNfCV^fjFe~PWc`>xT~9U%|x{&}R(3&`Qz_`&4=$IyMB
z!$D{K({Ww=3Y-6CvsTx)VY6I%p08=W(z>m6C2xADbNqVDE1vp>_GQwLmt<=(zeCXb
zC46$in+LyZJ2!el7(MpujrJJo=56I
z2=`Bb5sE#!@l~1HW%06WcBIW6hZe>9kzXEU%`UI_(Ojo}-3)9M1dc49HqwXKNP*in
z__jLO@I3*)9Bh4u+T}=Yg4GZH$;8D4-f6EP`{{LcI9K_s(Q=wThrZI*HhQ1iSo?g(
z2G3zfHheyZ*A8;qlbo$p;GXV&M;?Sr`GsQb!`Ik8@eTStYE{7Qc~ODLyB}_s&|&e;
zpG5{9%!v(R407Js+_x#+oKouwu|Cpn;OpHl#g-~hNy4;u{f4q
zF-A&%G{y(KC7h}EkfA+o2Wvm!{s3be<8}wP_pCmtoOO@&$-8r-e6e*py1xl_o1-)O
z90xCp7#^-MMPF+5{>`j0awsQO(#PH^U}O^CIw7l-XnaTeyNt>9&2v&W|E+<*yQjMU*9m3<7ml=jmndW+JyZp=##
z
+
+
diff --git a/docs/src/components/LayCode.vue b/docs/src/components/LayCode.vue
new file mode 100644
index 00000000..fbbe32e1
--- /dev/null
+++ b/docs/src/components/LayCode.vue
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
diff --git a/docs/src/entry-client.ts b/docs/src/entry-client.ts
new file mode 100644
index 00000000..d552319c
--- /dev/null
+++ b/docs/src/entry-client.ts
@@ -0,0 +1,7 @@
+import { createApp } from './main'
+
+const { app, router } = createApp()
+
+router.isReady().then(() => {
+ app.mount('#app')
+})
diff --git a/docs/src/entry-server.ts b/docs/src/entry-server.ts
new file mode 100644
index 00000000..f418790e
--- /dev/null
+++ b/docs/src/entry-server.ts
@@ -0,0 +1,51 @@
+import { createApp } from './main'
+import { renderToString } from '@vue/server-renderer'
+
+export async function render(url, manifest): Promise {
+ const { app, router } = createApp()
+
+ // set the router to the desired URL before rendering
+ router.push(url)
+ await router.isReady()
+
+ // passing SSR context object which will be available via useSSRContext()
+ // @vitejs/plugin-vue injects code into a component's setup() that registers
+ // itself on ctx.modules. After the render, ctx.modules would contain all the
+ // components that have been instantiated during this render call.
+ const ctx = {}
+ const html = await renderToString(app, ctx)
+
+ // the SSR manifest generated by Vite contains module -> chunk/asset mapping
+ // which we can then use to determine what files need to be preloaded for this
+ // request.
+ const preloadLinks = renderPreloadLinks(ctx.modules, manifest)
+ return [html, preloadLinks]
+}
+
+function renderPreloadLinks(modules, manifest) {
+ let links = ''
+ const seen = new Set()
+ modules.forEach((id) => {
+ const files = manifest[id]
+ if (files) {
+ files.forEach((file) => {
+ if (!seen.has(file)) {
+ seen.add(file)
+ links += renderPreloadLink(file)
+ }
+ })
+ }
+ })
+ return links
+}
+
+function renderPreloadLink(file) {
+ if (file.endsWith('.js')) {
+ return ``
+ } else if (file.endsWith('.css')) {
+ return ``
+ } else {
+ // TODO
+ return ''
+ }
+}
diff --git a/docs/src/layouts/Layout.vue b/docs/src/layouts/Layout.vue
new file mode 100644
index 00000000..c0747059
--- /dev/null
+++ b/docs/src/layouts/Layout.vue
@@ -0,0 +1,25 @@
+
+
+
+ layui-logo
+
+
+ 布局
+ 按钮
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/src/main.ts b/docs/src/main.ts
new file mode 100644
index 00000000..3f943e0d
--- /dev/null
+++ b/docs/src/main.ts
@@ -0,0 +1,25 @@
+import Layout from './App.vue'
+import { App, createApp as _createApp, createSSRApp } from 'vue'
+import { createRouter } from './router/index'
+import { Router } from 'vue-router'
+import Layui from '/@src/index'
+import LayCode from './components/LayCode.vue'
+import './styles/index.css'
+
+export function createApp(): {
+ app: App
+ router: Router
+} {
+ const app =
+ import.meta.env.MODE === 'production'
+ ? createSSRApp(Layout)
+ : _createApp(Layout)
+ const router = createRouter()
+
+ app
+ .use(router)
+ .component('LayCode', LayCode)
+ .use(Layui)
+
+ return { app, router }
+}
diff --git a/docs/src/plugin/common-plugins.ts b/docs/src/plugin/common-plugins.ts
new file mode 100644
index 00000000..c940c96c
--- /dev/null
+++ b/docs/src/plugin/common-plugins.ts
@@ -0,0 +1,47 @@
+import vue from '@vitejs/plugin-vue'
+import Markdown from 'vite-plugin-md'
+import container from 'markdown-it-container'
+import highlight from './highlight'
+import snippet from './snippet'
+import demo from './demo'
+import createContainer from './create-container'
+import preWrapper from './pre-wrapper'
+import type Token from 'markdown-it/lib/token'
+
+const plugins = [
+ vue({
+ include: [/\.vue$/, /\.md$/],
+ }),
+ Markdown({
+ markdownItOptions: {
+ html: true,
+ linkify: true,
+ typographer: true,
+ highlight,
+ },
+ markdownItSetup(md) {
+ md.use(snippet)
+ .use(preWrapper)
+ .use(container, 'demo', demo)
+ .use(...createContainer('tip', 'TIP'))
+ .use(...createContainer('warning', 'WARNING'))
+ .use(...createContainer('danger', 'WARNING'))
+ .use(container, 'v-pre', {
+ render: (tokens: Token[], idx: number) =>
+ tokens[idx].nesting === 1 ? '\n' : '
\n',
+ })
+ .use(container, 'details', {
+ render: (tokens: Token[], idx: number) => {
+ const info = tokens[idx].info.trim().slice(7).trim() // 7 = 'details'.length
+ return tokens[idx].nesting === 1
+ ? `${
+ info ? `${info}
` : ''
+ }\n`
+ : ' '
+ },
+ })
+ },
+ }),
+]
+
+export default plugins
diff --git a/docs/src/plugin/create-container.ts b/docs/src/plugin/create-container.ts
new file mode 100644
index 00000000..8a403568
--- /dev/null
+++ b/docs/src/plugin/create-container.ts
@@ -0,0 +1,33 @@
+import container from 'markdown-it-container'
+import type Token from 'markdown-it/lib/token'
+
+type ContainerArgs = [
+ typeof container,
+ string,
+ {
+ render(tokens: Token[], idx: number): string
+ }
+]
+
+export default function createContainer(
+ klass: string,
+ defaultTitle: string
+): ContainerArgs {
+ return [
+ container,
+ klass,
+ {
+ render(tokens, idx) {
+ const token = tokens[idx]
+ const info = token.info.trim().slice(klass.length).trim()
+ if (token.nesting === 1) {
+ return `${
+ info || defaultTitle
+ }
\n`
+ } else {
+ return '
\n'
+ }
+ },
+ },
+ ]
+}
diff --git a/docs/src/plugin/demo.ts b/docs/src/plugin/demo.ts
new file mode 100644
index 00000000..588474c9
--- /dev/null
+++ b/docs/src/plugin/demo.ts
@@ -0,0 +1,146 @@
+import markdown from 'markdown-it'
+import highlight from './highlight'
+import type Token from 'markdown-it/lib/token'
+
+/**
+ * Combine the script content
+ * @param {string} script script string
+ */
+function assignScript(script: string) {
+ const dependencies = {} as Record
+ const attrs = {} as Record
+ const content = script
+ // import { ref } from 'vue' -> ''
+ .replace(/import\s?\{.*\}.*/g, (item) => {
+ const key = getInnerString(item.replace(/'/g, '"'), '"', '"')
+ const value = getInnerString(item.replace(/\s+/g, ''), '{', '}')
+ const list = value ? value.split(',') : []
+ if (key && dependencies[key]) {
+ dependencies[key] = dependencies[key].concat(list)
+ } else if (key) {
+ dependencies[key] = list
+ }
+ return ''
+ })
+ /**
+ * const -> let
+ *
+ * const a = -> let a =
+ * const a = -> a =
+ */
+ .replace(/(const|let|var)\s\w*\s?=/g, (item) => {
+ const attr = getInnerString(item, '\\s', '\\s?=')
+ if (attr && !(attr in attrs)) {
+ attrs[attr] = attr
+ return `let ${attr} =`
+ } else {
+ return attr + ' ='
+ }
+ })
+ // Remove extra line breaks
+ .replace(/\n+/gm, '\n')
+ // Combine the import
+ const reImport = Object.keys(dependencies).reduce((all, item) => {
+ const filterAttrs = [...new Set(dependencies[item])]
+ return all + `import {${filterAttrs + ','}} from '${item}';\n`
+ }, '')
+
+ return reImport + content
+}
+
+/**
+ * Extract part of the new string from the middle of the string
+ * @param {string} string string
+ * @param {string} prefix RegExp string
+ * @param {string} postfix RegExp string
+ * @param {string} type g | m | i
+ */
+function getInnerString(
+ string: string,
+ prefix: string,
+ postfix = '',
+ type: 'i' | 'g' | 'm' = 'i'
+): string | undefined {
+ const result = new RegExp(`${prefix}(.*)${postfix}`, type)
+ const match = string.match(result)
+ return match ? match[1].trim() : undefined
+}
+
+let script = '' // Record the `
+ }
+ }
+ }
+
+ return `
+
+ ${description ? `${descTemplate}` : ''}
+ ${highlight(str, 'vue')}
+ `
+ },
+}
diff --git a/docs/src/plugin/highlight.ts b/docs/src/plugin/highlight.ts
new file mode 100644
index 00000000..c16d210c
--- /dev/null
+++ b/docs/src/plugin/highlight.ts
@@ -0,0 +1,46 @@
+// copy from [vitepress](https://github.com/vuejs/vitepress)
+import prism from 'prismjs'
+import loadLanguages from 'prismjs/components/index'
+import escapeHtml from 'escape-html'
+
+// required to make embedded highlighting work...
+loadLanguages(['markup', 'css', 'javascript'])
+
+function wrap(code: string, lang: string): string {
+ if (lang === 'text') {
+ code = escapeHtml(code)
+ }
+ return `${code}
`
+}
+
+export default (str: string, lang: string): string => {
+ if (!lang) {
+ return wrap(str, 'text')
+ }
+ lang = lang.toLowerCase()
+ const rawLang = lang
+ if (lang === 'vue' || lang === 'html') {
+ lang = 'markup'
+ }
+ if (lang === 'md') {
+ lang = 'markdown'
+ }
+ if (lang === 'ts') {
+ lang = 'typescript'
+ }
+ if (lang === 'py') {
+ lang = 'python'
+ }
+ if (!prism.languages[lang]) {
+ try {
+ loadLanguages([lang])
+ } catch (e) {
+ console.warn(lang, e)
+ }
+ }
+ if (prism.languages[lang]) {
+ const code = prism.highlight(str, prism.languages[lang], lang)
+ return wrap(code, rawLang)
+ }
+ return wrap(str, 'text')
+}
diff --git a/docs/src/plugin/pre-wrapper.ts b/docs/src/plugin/pre-wrapper.ts
new file mode 100644
index 00000000..edef8176
--- /dev/null
+++ b/docs/src/plugin/pre-wrapper.ts
@@ -0,0 +1,11 @@
+import MarkdownIt from 'markdown-it'
+
+export default (md: MarkdownIt): void => {
+ const fence = md.renderer.rules.fence!
+ md.renderer.rules.fence = (...args) => {
+ const [tokens, idx] = args
+ const token = tokens[idx]
+ const rawCode = fence(...args)
+ return `${rawCode}
`
+ }
+}
diff --git a/docs/src/plugin/snippet.ts b/docs/src/plugin/snippet.ts
new file mode 100644
index 00000000..730a3686
--- /dev/null
+++ b/docs/src/plugin/snippet.ts
@@ -0,0 +1,49 @@
+// copy from [vitepress](https://github.com/vuejs/vitepress)
+import fs from 'fs'
+import MarkdownIt from 'markdown-it'
+import { RuleBlock } from 'markdown-it/lib/parser_block'
+
+export default (md: MarkdownIt): void => {
+ const parser: RuleBlock = (state, startLine, endLine, silent) => {
+ const CH = '<'.charCodeAt(0)
+ const pos = state.bMarks[startLine] + state.tShift[startLine]
+ const max = state.eMarks[startLine]
+
+ // if it's indented more than 3 spaces, it should be a code block
+ if (state.sCount[startLine] - state.blkIndent >= 4) {
+ return false
+ }
+
+ for (let i = 0; i < 3; ++i) {
+ const ch = state.src.charCodeAt(pos + i)
+ if (ch !== CH || pos + i >= max) return false
+ }
+
+ if (silent) {
+ return true
+ }
+
+ const start = pos + 3
+ const end = state.skipSpacesBack(max, pos)
+ const rawPath = state.src
+ .slice(start, end)
+ .trim()
+ .replace(/^@/, process.cwd())
+ const content = fs.existsSync(rawPath)
+ ? fs.readFileSync(rawPath).toString()
+ : 'Not found: ' + rawPath
+ const meta = rawPath.replace(rawPath, '')
+
+ state.line = startLine + 1
+
+ const token = state.push('fence', 'code', 0)
+ token.info = rawPath.split('.').pop() + meta
+ token.content = content
+ token.markup = '```'
+ token.map = [startLine, startLine + 1]
+
+ return true
+ }
+
+ md.block.ruler.before('fence', 'snippet', parser)
+}
diff --git a/docs/src/router/index.ts b/docs/src/router/index.ts
new file mode 100644
index 00000000..6074573e
--- /dev/null
+++ b/docs/src/router/index.ts
@@ -0,0 +1,20 @@
+import {
+ createMemoryHistory,
+ createRouter as _createRouter,
+ createWebHistory,
+ Router,
+} from 'vue-router'
+import zhCN from './zh-CN'
+import type { IRouteRecordRaw } from '/@src/index'
+
+const routes: IRouteRecordRaw[] = [...zhCN]
+
+export function createRouter(): Router {
+ const baseUrl = import.meta.env.BASE_URL
+ return _createRouter({
+ history: import.meta.env.SSR
+ ? createMemoryHistory(baseUrl)
+ : createWebHistory(baseUrl),
+ routes: routes
+ })
+}
\ No newline at end of file
diff --git a/docs/src/router/zh-CN.ts b/docs/src/router/zh-CN.ts
new file mode 100644
index 00000000..c7152e86
--- /dev/null
+++ b/docs/src/router/zh-CN.ts
@@ -0,0 +1,32 @@
+import BaseLayout from '../layouts/Layout.vue'
+
+const zhCN = [
+ {
+ path: '/',
+ redirect: '/zh-CN/guide/',
+ component: BaseLayout,
+ meta: { title: '指南', icon: 'el-icon-position' },
+ children: [
+ {
+ path: '/zh-CN/guide/',
+ component: () => import('../../docs/zh-CN/guide/home.md'),
+ meta: { title: '介绍' },
+ }
+ ],
+ },
+ {
+ path: '/zh-CN/components/',
+ redirect: '/zh-CN/components/button',
+ component: BaseLayout,
+ meta: { title: '组件', icon: 'el-icon-copy-document' },
+ children: [
+ {
+ path: '/zh-CN/components/button',
+ component: () => import('../../docs/zh-CN/components/button.md'),
+ meta: { title: '按钮' },
+ }
+ ],
+ },
+]
+
+export default zhCN
diff --git a/docs/src/styles/code.css b/docs/src/styles/code.css
new file mode 100644
index 00000000..447ae812
--- /dev/null
+++ b/docs/src/styles/code.css
@@ -0,0 +1,214 @@
+/* copy from [vitepress](https://github.com/vuejs/vitepress) */
+code {
+ margin: 0;
+ border-radius: 3px;
+ padding: 0.25rem 0.5rem;
+ font-family: var(--code-font-family);
+ font-size: 0.85em;
+ color: var(--c-text-light);
+ background-color: var(--code-inline-bg-color);
+}
+
+code .token.deleted {
+ color: #ec5975;
+}
+
+code .token.inserted {
+ color: var(--c-brand);
+}
+
+div[class*='language-'] {
+ position: relative;
+ margin: 1rem -1.5rem;
+ background-color: #fafafa;
+ overflow-x: auto;
+ border: 1px solid #eaeefb;
+}
+
+li > div[class*='language-'] {
+ border-radius: 6px 0 0 6px;
+ margin: 1rem -1.5rem 1rem -1.25rem;
+}
+
+@media (min-width: 420px) {
+ div[class*='language-'] {
+ margin: 1rem 0;
+ border-radius: 6px;
+ }
+
+ li > div[class*='language-'] {
+ margin: 1rem 0 1rem 0rem;
+ border-radius: 6px;
+ }
+}
+
+[class*='language-'] pre,
+[class*='language-'] code {
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+
+[class*='language-'] pre {
+ position: relative;
+ z-index: 1;
+ margin: 0;
+ padding: 1.25rem 1.5rem;
+ background: transparent;
+ overflow-x: auto;
+}
+
+[class*='language-'] pre p {
+ margin: auto !important;
+}
+
+[class*='language-'] code {
+ padding: 0;
+ line-height: var(--code-line-height);
+ font-size: var(--code-font-size);
+ color: #000;
+ background-color: #fafafa;
+}
+
+/* Line highlighting */
+
+.highlight-lines {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ padding: 1.25rem 0;
+ width: 100%;
+ line-height: var(--code-line-height);
+ font-family: var(--code-font-family);
+ font-size: var(--code-font-size);
+ user-select: none;
+ overflow: hidden;
+}
+
+.highlight-lines .highlighted {
+ background-color: rgba(0, 0, 0, 0.66);
+}
+
+/* Line numbers mode */
+
+div[class*='language-'].line-numbers-mode {
+ padding-left: 3.5rem;
+}
+
+.line-numbers-wrapper {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 3;
+ border-right: 1px solid rgba(0, 0, 0, 0.5);
+ padding: 1.25rem 0;
+ width: 3.5rem;
+ text-align: center;
+ line-height: var(--code-line-height);
+ font-family: var(--code-font-family);
+ font-size: var(--code-font-size);
+ color: #888;
+}
+
+/* Language marker */
+
+[class*='language-']:before {
+ position: absolute;
+ top: 0.6em;
+ right: 1em;
+ z-index: 2;
+ font-size: 0.8rem;
+ color: #888;
+}
+
+/**
+ * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML.
+ * Based on https://github.com/chriskempson/tomorrow-theme
+ *
+ * @author Rose Pritchard
+ */
+.token.comment,
+.token.block-comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: #999;
+}
+
+.token.punctuation {
+ color: #ccc;
+}
+
+.token.tag,
+.token.attr-name,
+.token.namespace,
+.token.deleted {
+ color: #e2777a;
+}
+
+.token.function-name {
+ color: #6196cc;
+}
+
+.token.boolean,
+.token.number,
+.token.function {
+ color: #f08d49;
+}
+
+.token.property,
+.token.class-name,
+.token.constant,
+.token.symbol {
+ color: #f8c555;
+}
+
+.token.selector,
+.token.important,
+.token.atrule,
+.token.keyword,
+.token.builtin {
+ color: #cc99cd;
+}
+
+.token.string,
+.token.char,
+.token.attr-value,
+.token.regex,
+.token.variable {
+ color: #7ec699;
+}
+
+.token.operator,
+.token.entity,
+.token.url {
+ color: #67cdcc;
+}
+
+.token.important,
+.token.bold {
+ font-weight: bold;
+}
+
+.token.italic {
+ font-style: italic;
+}
+
+.token.entity {
+ cursor: help;
+}
+
+.token.inserted {
+ color: green;
+}
diff --git a/docs/src/styles/custom-blocks.css b/docs/src/styles/custom-blocks.css
new file mode 100644
index 00000000..5feed973
--- /dev/null
+++ b/docs/src/styles/custom-blocks.css
@@ -0,0 +1,71 @@
+.custom-block.tip,
+.custom-block.warning,
+.custom-block.danger {
+ margin: 1rem 0;
+ border-left: 0.3rem solid;
+ padding: 0.1rem 1.5rem;
+ overflow-x: auto;
+ border-radius: 4px;
+}
+
+.custom-block.tip {
+ background-color: #f3f5f7;
+ border-color: #409eff;
+}
+
+.custom-block.warning {
+ border-color: #e7c000;
+ color: #6b5900;
+ background-color: rgba(255, 229, 100, 0.3);
+}
+
+.custom-block.warning .custom-block-title {
+ color: #b29400;
+}
+
+.custom-block.warning a {
+ color: var(--c-text);
+}
+
+.custom-block.danger {
+ border-color: #c00;
+ color: #4d0000;
+ background-color: #ffe6e6;
+}
+
+.custom-block.danger .custom-block-title {
+ color: #900;
+}
+
+.custom-block.danger a {
+ color: var(--c-text);
+}
+
+.custom-block.details {
+ position: relative;
+ display: block;
+ border-radius: 2px;
+ margin: 1.6em 0;
+ padding: 1.6em;
+ background-color: #eee;
+}
+
+.custom-block.details h4 {
+ margin-top: 0;
+}
+
+.custom-block.details figure:last-child,
+.custom-block.details p:last-child {
+ margin-bottom: 0;
+ padding-bottom: 0;
+}
+
+.custom-block.details summary {
+ outline: none;
+ cursor: pointer;
+}
+
+.custom-block-title {
+ margin-bottom: -0.4rem;
+ font-weight: 600;
+}
diff --git a/docs/src/styles/index.css b/docs/src/styles/index.css
new file mode 100644
index 00000000..5221e9cf
--- /dev/null
+++ b/docs/src/styles/index.css
@@ -0,0 +1,4 @@
+@import './code.css';
+@import './custom-blocks.css';
+@import './markdown.css';
+@import './vars.css';
diff --git a/docs/src/styles/markdown.css b/docs/src/styles/markdown.css
new file mode 100644
index 00000000..7397fe02
--- /dev/null
+++ b/docs/src/styles/markdown.css
@@ -0,0 +1,220 @@
+html {
+ line-height: 1.4;
+ font-size: 16px;
+ -webkit-text-size-adjust: 100%;
+}
+
+h4 {
+ font-weight: 700 !important;
+ font-size: 16.8px !important;
+ margin-top: 20px !important;
+ margin-bottom: 20px !important;
+}
+
+h5 {
+ font-weight: 700;
+ font-size: 16.8px;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 0;
+ color: #303133;
+ line-height: 1.25;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+strong,
+b {
+ font-weight: 600;
+}
+
+h1:hover .header-anchor,
+h1:focus .header-anchor,
+h2:hover .header-anchor,
+h2:focus .header-anchor,
+h3:hover .header-anchor,
+h3:focus .header-anchor,
+h4:hover .header-anchor,
+h4:focus .header-anchor,
+h5:hover .header-anchor,
+h5:focus .header-anchor,
+h6:hover .header-anchor,
+h6:focus .header-anchor {
+ opacity: 1;
+}
+
+h1 {
+ margin-top: 1.5rem;
+ font-size: 1.9rem;
+}
+
+@media screen and (min-width: 420px) {
+ h1 {
+ font-size: 2.2rem;
+ }
+}
+
+h2 {
+ margin-top: 2.25rem;
+ margin-bottom: 1.25rem;
+ border-bottom: 1px solid var(--c-divider);
+ padding-bottom: 0.3rem;
+ line-height: 1.25;
+ font-size: 1.65rem;
+ /* overflow-x: auto; */
+}
+
+h2 + h3 {
+ margin-top: 1.5rem;
+}
+
+h3 {
+ margin-top: 2rem;
+ font-size: 1.35rem;
+}
+
+h4 {
+ font-size: 1.15rem;
+}
+
+h1 {
+ margin-top: 4px !important;
+ margin-bottom: 22px !important;
+ color: #000000d9 !important;
+ font-weight: 500 !important;
+ font-size: 20px !important;
+ font-family: Avenir, -apple-system, BlinkMacSystemFont, segoe ui, Roboto,
+ helvetica neue, Arial, noto sans, sans-serif, apple color emoji,
+ segoe ui emoji, segoe ui symbol, noto color emoji, sans-serif;
+ line-height: 38px;
+}
+
+h2 {
+ margin-top: 4px !important;
+ margin-bottom: 16px !important;
+ color: #000000d9 !important;
+ font-weight: 500 !important;
+ font-size: 16px !important;
+ border-bottom: 0px;
+ font-family: Avenir, -apple-system, BlinkMacSystemFont, segoe ui, Roboto,
+ helvetica neue, Arial, noto sans, sans-serif, apple color emoji,
+ segoe ui emoji, segoe ui symbol, noto color emoji, sans-serif;
+ line-height: 38px;
+}
+
+p,
+ol,
+ul {
+ margin: 1rem 0;
+ line-height: 1.7;
+}
+
+p {
+ color: #454d64 !important;
+ margin-top: 20px !important;
+ font-size: 14px !important;
+}
+
+a,
+area,
+button,
+[role='button'],
+input,
+label,
+select,
+summary,
+textarea {
+ touch-action: manipulation;
+}
+
+a {
+ text-decoration: none;
+ color: var(--c-brand);
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.header-anchor {
+ float: left;
+ margin-top: 0.125em;
+ margin-left: -0.87em;
+ padding-right: 0.23em;
+ font-size: 0.85em;
+ opacity: 0;
+}
+
+a.header-anchor:hover,
+a.header-anchor:focus {
+ text-decoration: none;
+}
+
+figure {
+ margin: 0;
+}
+
+img {
+ max-width: 100%;
+}
+
+ul,
+ol {
+ padding-left: 1.25em;
+}
+
+li > ul,
+li > ol {
+ margin: 0;
+}
+
+blockquote {
+ margin: 1rem 0;
+ border-left: 0.2rem solid #dfe2e5;
+ padding: 0.25rem 0 0.25rem 1rem;
+ font-size: 1rem;
+ color: #999;
+}
+
+blockquote > p {
+ margin: 0;
+}
+
+form {
+ margin: 0;
+}
+
+table {
+ width: 100%; /*表格宽度*/
+ border-collapse: collapse; /*使用单一线条的边框*/
+ empty-cells: show; /*单元格无内容依旧绘制边框*/
+}
+
+table th,
+table td {
+ font-size: 14px;
+ color: #606266;
+ height: 50px; /*统一每一行的默认高度*/
+ border-top: 1px solid whitesmoke; /*内部边框样式*/
+ padding: 0 10px; /*内边距*/
+}
+
+table tr:hover {
+ background: #efefef;
+}
+table th {
+ white-space: nowrap; /*表头内容强制在一行显示*/
+}
+table td {
+ white-space: nowrap;
+}
diff --git a/docs/src/styles/vars.css b/docs/src/styles/vars.css
new file mode 100644
index 00000000..701a36fd
--- /dev/null
+++ b/docs/src/styles/vars.css
@@ -0,0 +1,52 @@
+/* TODO: rebuild... copy from [vitepress](https://github.com/vuejs/vitepress) */
+:root {
+ --c-white: #ffffff;
+ --c-black: #000000;
+
+ --c-divider-light: rgba(60, 60, 67, 0.12);
+ --c-divider-dark: rgba(84, 84, 88, 0.48);
+
+ --c-text-light-1: #2c3e50;
+ --c-text-light-2: #476582;
+ --c-text-light-3: #90a4b7;
+
+ --c-brand: #409eff;
+ --c-brand-light: #4abf8a;
+
+ /**
+ * Typography
+ * --------------------------------------------------------------------- */
+
+ --font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+ sans-serif;
+ --font-family-mono: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
+ monospace;
+
+ /**
+ * Shadows
+ * --------------------------------------------------------------------- */
+
+ --shadow-1: 0 1px 2px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.06);
+ --shadow-2: 0 3px 12px rgba(0, 0, 0, 0.07), 0 1px 4px rgba(0, 0, 0, 0.07);
+ --shadow-3: 0 12px 32px rgba(0, 0, 0, 0.1), 0 2px 6px rgba(0, 0, 0, 0.08);
+ --shadow-4: 0 14px 44px rgba(0, 0, 0, 0.12), 0 3px 9px rgba(0, 0, 0, 0.12);
+ --shadow-5: 0 18px 56px rgba(0, 0, 0, 0.16), 0 4px 12px rgba(0, 0, 0, 0.16);
+}
+
+/** Fallback Styles */
+:root {
+ --c-divider: var(--c-divider-light);
+
+ --c-text: var(--c-text-light-1);
+ --c-text-light: var(--c-text-light-2);
+ --c-text-lighter: var(--c-text-light-3);
+
+ --c-bg: var(--c-white);
+
+ --code-line-height: 24px;
+ --code-font-family: var(--font-family-mono);
+ --code-font-size: 14px;
+ --code-inline-bg-color: rgba(27, 31, 35, 0.05);
+ --code-bg-color: #282c34;
+}
diff --git a/docs/src/tsconfig.json b/docs/src/tsconfig.json
new file mode 100644
index 00000000..f42260bf
--- /dev/null
+++ b/docs/src/tsconfig.json
@@ -0,0 +1,4 @@
+{
+ "extends": "../../tsconfig.json",
+ "include": [".", "../../shims-vue.d.ts"]
+}
diff --git a/docs/vite.config.ts b/docs/vite.config.ts
new file mode 100644
index 00000000..bb79e7d7
--- /dev/null
+++ b/docs/vite.config.ts
@@ -0,0 +1,13 @@
+import path from 'path'
+import { defineConfig } from 'vite'
+import plugins from './src/plugin/common-plugins'
+
+export default defineConfig({
+ base: '/layui-vue/',
+ resolve: {
+ alias: {
+ '/@src': path.resolve(__dirname, '../src'),
+ },
+ },
+ plugins,
+})
diff --git a/jest.config.js b/jest.config.js
new file mode 100644
index 00000000..eb9a2f41
--- /dev/null
+++ b/jest.config.js
@@ -0,0 +1,27 @@
+module.exports = {
+ roots: ['/test'],
+ preset: 'ts-jest',
+ testEnvironment: 'jsdom',
+ moduleFileExtensions: ['ts', 'vue', 'js', 'jsx', 'tsx', 'json', 'node'],
+ transformIgnorePatterns: ['node_modules/(?!(@vue/shared|element-plus)/)'],
+ moduleNameMapper: { '\\.css$': '/test/__mocks__/css.ts' },
+ transform: {
+ '^.+\\.vue$': 'vue-jest',
+ '^.+\\.(t|j)sx?$': [
+ 'babel-jest',
+ {
+ presets: [
+ [
+ '@babel/preset-env',
+ {
+ targets: {
+ node: 'current',
+ },
+ },
+ ],
+ '@babel/preset-typescript',
+ ],
+ },
+ ],
+ },
+}
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..e6a76176
--- /dev/null
+++ b/package.json
@@ -0,0 +1,98 @@
+{
+ "name": "layui-vue",
+ "version": "0.3.7",
+ "description": "a component library for Vue 3 base on layui-vue",
+ "main": "lib/layui-vue.umd.js",
+ "module": "lib/layui-vue.es.js",
+ "exports": {
+ ".": {
+ "import": "./lib/layui-vue.es.js",
+ "require": "./lib/layui-vue.umd.js"
+ },
+ "./lib/": "./lib/"
+ },
+ "types": "types/index.d.ts",
+ "style": "lib/style.css",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build --emptyOutDir && npm run build:helper && npm run build:types",
+ "build:types": "rimraf types && tsc -d",
+ "build:helper": "node .helperrc.js",
+ "build:docs": "vite build docs",
+ "test": "jest",
+ "lint": "eslint . --fix --ext .ts,.vue,.js --ignore-pattern \"/lib/\" --ignore-pattern \"/types/\"",
+ "prettier": "prettier --check --write --ignore-unknown \"{example,src,docs,test}/**\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://gitee.com/Jmysy/layui-vue"
+ },
+ "keywords": [
+ "layui-vue",
+ "layui",
+ "vue"
+ ],
+ "author": "<就眠仪式 jmys1992@gmail.com>",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://gitee.com/Jmysy/layui-vue/issues"
+ },
+ "homepage": "https://gitee.com/Jmysy/layui-vue/blob/master/README.md",
+ "peerDependencies": {
+ "vue": "^3.1.2",
+ "vue-router": "^4.0.10"
+ },
+ "dependencies": {
+ "vue": "^3.1.2",
+ "vue-router": "^4.0.10"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.14.0",
+ "@babel/preset-env": "^7.14.0",
+ "@babel/preset-typescript": "^7.13.0",
+ "@types/jest": "^26.0.23",
+ "@types/markdown-it": "^12.0.1",
+ "@types/markdown-it-container": "^2.0.3",
+ "@typescript-eslint/eslint-plugin": "^4.22.0",
+ "@typescript-eslint/parser": "^4.22.0",
+ "@vitejs/plugin-vue": "^1.2.2",
+ "@vue/compiler-sfc": "^3.1.2",
+ "@vue/server-renderer": "^3.1.1",
+ "@vue/test-utils": "^2.0.0-rc.6",
+ "babel-jest": "^26.6.3",
+ "components-helper": "^1.0.3",
+ "escape-html": "^1.0.3",
+ "eslint": "^7.25.0",
+ "eslint-plugin-prettier": "^3.4.0",
+ "eslint-plugin-vue": "^7.9.0",
+ "husky": "^4.3.6",
+ "jest": "^26.6.3",
+ "lint-staged": "^10.5.4",
+ "markdown-it-container": "^3.0.0",
+ "postcss": "^8.2.13",
+ "postcss-preset-env": "^6.7.0",
+ "prettier": "2.2.1",
+ "prismjs": "^1.23.0",
+ "rimraf": "^3.0.2",
+ "rollup-plugin-babel": "^4.4.0",
+ "ts-jest": "^26.5.5",
+ "typescript": "^4.2.4",
+ "vite": "2.3.7",
+ "vite-plugin-md": "^0.6.3",
+ "vue-jest": "^5.0.0-alpha.8"
+ },
+ "vetur": {
+ "tags": "lib/tags.json",
+ "attributes": "lib/attributes.json"
+ },
+ "web-types": "lib/web-types.json",
+ "files": [
+ "lib",
+ "types"
+ ],
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ }
+}
diff --git a/shims-vue.d.ts b/shims-vue.d.ts
new file mode 100644
index 00000000..94bb18ed
--- /dev/null
+++ b/shims-vue.d.ts
@@ -0,0 +1,25 @@
+declare module '*.vue' {
+ import { DefineComponent } from 'vue'
+ const comp: DefineComponent
+ export default comp
+}
+
+declare module '*.md' {
+ import { DefineComponent } from 'vue'
+ const comp: DefineComponent
+ export default comp
+}
+
+declare module 'prismjs'
+declare module 'prismjs/components/index'
+declare module 'escape-html'
+
+interface ImportMeta {
+ env: {
+ MODE: string
+ BASE_URL: string
+ PROD: boolean
+ DEV: boolean
+ SSR: boolean
+ }
+}
diff --git a/src/css/layui.css b/src/css/layui.css
new file mode 100644
index 00000000..a10e959e
--- /dev/null
+++ b/src/css/layui.css
@@ -0,0 +1,6593 @@
+.layui-inline,
+img {
+ display: inline-block;
+ vertical-align: middle
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-weight: 400
+}
+
+a,
+body {
+ color: #333
+}
+
+.layui-edge,
+.layui-header,
+.layui-inline,
+.layui-main {
+ position: relative
+}
+
+.layui-edge,
+hr {
+ height: 0;
+ overflow: hidden
+}
+
+.layui-layout-body,
+.layui-side,
+.layui-side-scroll {
+ overflow-x: hidden
+}
+
+.layui-edge,
+.layui-elip,
+hr {
+ overflow: hidden
+}
+
+.layui-btn,
+.layui-edge,
+.layui-inline,
+img {
+ vertical-align: middle
+}
+
+.layui-btn,
+.layui-disabled,
+.layui-icon,
+.layui-unselect {
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ -ms-user-select: none
+}
+
+.layui-elip,
+.layui-form-checkbox span,
+.layui-form-pane .layui-form-label {
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+blockquote,
+body,
+button,
+dd,
+div,
+dl,
+dt,
+form,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+input,
+li,
+ol,
+p,
+pre,
+td,
+textarea,
+th,
+ul {
+ margin: 0;
+ padding: 0;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
+}
+
+a:active,
+a:hover {
+ outline: 0
+}
+
+img {
+ border: none
+}
+
+li {
+ list-style: none
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0
+}
+
+h4,
+h5,
+h6 {
+ font-size: 100%
+}
+
+button,
+input,
+optgroup,
+option,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ font-style: inherit;
+ font-weight: inherit;
+ outline: 0
+}
+
+pre {
+ white-space: pre-wrap;
+ white-space: -moz-pre-wrap;
+ white-space: -pre-wrap;
+ white-space: -o-pre-wrap;
+ word-wrap: break-word
+}
+
+body {
+ line-height: 1.6;
+ color: rgba(0, 0, 0, .85);
+ font: 14px Helvetica Neue, Helvetica, PingFang SC, Tahoma, Arial, sans-serif
+}
+
+hr {
+ line-height: 0;
+ margin: 10px 0;
+ padding: 0;
+ border: none !important;
+ border-bottom: 1px solid #eee !important;
+ clear: both;
+ background: 0 0
+}
+
+a {
+ text-decoration: none
+}
+
+a:hover {
+ color: #777
+}
+
+a cite {
+ font-style: normal;
+ *cursor: pointer
+}
+
+.layui-border-box,
+.layui-border-box * {
+ box-sizing: border-box
+}
+
+.layui-box,
+.layui-box * {
+ box-sizing: content-box
+}
+
+.layui-clear {
+ clear: both;
+ *zoom: 1
+}
+
+.layui-clear:after {
+ content: '\20';
+ clear: both;
+ *zoom: 1;
+ display: block;
+ height: 0
+}
+
+.layui-inline {
+ *display: inline;
+ *zoom: 1
+}
+
+.layui-btn,
+.layui-btn-group,
+.layui-edge {
+ display: inline-block
+}
+
+.layui-inline-container>.layui-inline {
+ margin-right: 10px;
+ margin-bottom: 10px
+}
+
+.layui-edge {
+ width: 0;
+ border-width: 6px;
+ border-style: dashed;
+ border-color: transparent
+}
+
+.layui-edge-top {
+ top: -4px;
+ border-bottom-color: #999;
+ border-bottom-style: solid
+}
+
+.layui-edge-right {
+ border-left-color: #999;
+ border-left-style: solid
+}
+
+.layui-edge-bottom {
+ top: 2px;
+ border-top-color: #999;
+ border-top-style: solid
+}
+
+.layui-edge-left {
+ border-right-color: #999;
+ border-right-style: solid
+}
+
+.layui-disabled,
+.layui-disabled:hover {
+ color: #d2d2d2 !important;
+ cursor: not-allowed !important
+}
+
+.layui-circle {
+ border-radius: 100%
+}
+
+.layui-show {
+ display: block !important
+}
+
+.layui-hide {
+ display: none !important
+}
+
+.layui-show-v {
+ visibility: visible !important
+}
+
+.layui-hide-v {
+ visibility: hidden !important
+}
+
+@font-face {
+ font-family: layui-icon;
+ src: url(../font/iconfont.eot?t=270);
+ src: url(../font/iconfont.eot?t=270#iefix) format('embedded-opentype'), url(../font/iconfont.woff2?t=270) format('woff2'), url(../font/iconfont.woff?t=270) format('woff'), url(../font/iconfont.ttf?t=270) format('truetype'), url(../font/iconfont.svg?t=270#layui-icon) format('svg')
+}
+
+.layui-icon {
+ font-family: layui-icon !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+.layui-icon-eye:before {
+ content: "\e695"
+}
+
+.layui-icon-eye-invisible:before {
+ content: "\e696"
+}
+
+.layui-icon-backspace:before {
+ content: "\e694"
+}
+
+.layui-icon-help-circle:before {
+ content: "\e77c"
+}
+
+.layui-icon-tips-fill:before {
+ content: "\eb2e"
+}
+
+.layui-icon-test:before {
+ content: "\e692"
+}
+
+.layui-icon-clear:before {
+ content: "\e788"
+}
+
+.layui-icon-keyboard:before {
+ content: "\e693"
+}
+
+.layui-icon-heart-fill:before {
+ content: "\e68f"
+}
+
+.layui-icon-light:before {
+ content: "\e748"
+}
+
+.layui-icon-music:before {
+ content: "\e690"
+}
+
+.layui-icon-time:before {
+ content: "\e68d"
+}
+
+.layui-icon-ie:before {
+ content: "\e7bb"
+}
+
+.layui-icon-firefox:before {
+ content: "\e686"
+}
+
+.layui-icon-at:before {
+ content: "\e687"
+}
+
+.layui-icon-bluetooth:before {
+ content: "\e689"
+}
+
+.layui-icon-chrome:before {
+ content: "\e68a"
+}
+
+.layui-icon-edge:before {
+ content: "\e68b"
+}
+
+.layui-icon-heart:before {
+ content: "\e68c"
+}
+
+.layui-icon-key:before {
+ content: "\e683"
+}
+
+.layui-icon-android:before {
+ content: "\e684"
+}
+
+.layui-icon-mike:before {
+ content: "\e6dc"
+}
+
+.layui-icon-mute:before {
+ content: "\e685"
+}
+
+.layui-icon-gift:before {
+ content: "\e627"
+}
+
+.layui-icon-windows:before {
+ content: "\e67f"
+}
+
+.layui-icon-ios:before {
+ content: "\e680"
+}
+
+.layui-icon-logout:before {
+ content: "\e682"
+}
+
+.layui-icon-wifi:before {
+ content: "\e7e0"
+}
+
+.layui-icon-rss:before {
+ content: "\e808"
+}
+
+.layui-icon-email:before {
+ content: "\e618"
+}
+
+.layui-icon-reduce-circle:before {
+ content: "\e616"
+}
+
+.layui-icon-transfer:before {
+ content: "\e691"
+}
+
+.layui-icon-service:before {
+ content: "\e626"
+}
+
+.layui-icon-addition:before {
+ content: "\e624"
+}
+
+.layui-icon-subtraction:before {
+ content: "\e67e"
+}
+
+.layui-icon-slider:before {
+ content: "\e714"
+}
+
+.layui-icon-print:before {
+ content: "\e66d"
+}
+
+.layui-icon-export:before {
+ content: "\e67d"
+}
+
+.layui-icon-cols:before {
+ content: "\e610"
+}
+
+.layui-icon-screen-full:before {
+ content: "\e622"
+}
+
+.layui-icon-screen-restore:before {
+ content: "\e758"
+}
+
+.layui-icon-rate-half:before {
+ content: "\e6c9"
+}
+
+.layui-icon-rate-solid:before {
+ content: "\e67a"
+}
+
+.layui-icon-rate:before {
+ content: "\e67b"
+}
+
+.layui-icon-cellphone:before {
+ content: "\e678"
+}
+
+.layui-icon-vercode:before {
+ content: "\e679"
+}
+
+.layui-icon-login-weibo:before {
+ content: "\e675"
+}
+
+.layui-icon-login-qq:before {
+ content: "\e676"
+}
+
+.layui-icon-login-wechat:before {
+ content: "\e677"
+}
+
+.layui-icon-username:before {
+ content: "\e66f"
+}
+
+.layui-icon-password:before {
+ content: "\e673"
+}
+
+.layui-icon-refresh-3:before {
+ content: "\e9aa"
+}
+
+.layui-icon-auz:before {
+ content: "\e672"
+}
+
+.layui-icon-shrink-right:before {
+ content: "\e668"
+}
+
+.layui-icon-spread-left:before {
+ content: "\e66b"
+}
+
+.layui-icon-snowflake:before {
+ content: "\e6b1"
+}
+
+.layui-icon-tips:before {
+ content: "\e702"
+}
+
+.layui-icon-note:before {
+ content: "\e66e"
+}
+
+.layui-icon-senior:before {
+ content: "\e674"
+}
+
+.layui-icon-refresh-1:before {
+ content: "\e666"
+}
+
+.layui-icon-refresh:before {
+ content: "\e669"
+}
+
+.layui-icon-flag:before {
+ content: "\e66c"
+}
+
+.layui-icon-theme:before {
+ content: "\e66a"
+}
+
+.layui-icon-notice:before {
+ content: "\e667"
+}
+
+.layui-icon-console:before {
+ content: "\e665"
+}
+
+.layui-icon-website:before {
+ content: "\e7ae"
+}
+
+.layui-icon-face-surprised:before {
+ content: "\e664"
+}
+
+.layui-icon-set:before {
+ content: "\e716"
+}
+
+.layui-icon-template:before {
+ content: "\e663"
+}
+
+.layui-icon-app:before {
+ content: "\e653"
+}
+
+.layui-icon-template-1:before {
+ content: "\e656"
+}
+
+.layui-icon-home:before {
+ content: "\e68e"
+}
+
+.layui-icon-female:before {
+ content: "\e661"
+}
+
+.layui-icon-male:before {
+ content: "\e662"
+}
+
+.layui-icon-tread:before {
+ content: "\e6c5"
+}
+
+.layui-icon-praise:before {
+ content: "\e6c6"
+}
+
+.layui-icon-rmb:before {
+ content: "\e65e"
+}
+
+.layui-icon-more:before {
+ content: "\e65f"
+}
+
+.layui-icon-camera:before {
+ content: "\e660"
+}
+
+.layui-icon-cart-simple:before {
+ content: "\e698"
+}
+
+.layui-icon-face-cry:before {
+ content: "\e69c"
+}
+
+.layui-icon-face-smile:before {
+ content: "\e6af"
+}
+
+.layui-icon-survey:before {
+ content: "\e6b2"
+}
+
+.layui-icon-read:before {
+ content: "\e705"
+}
+
+.layui-icon-location:before {
+ content: "\e715"
+}
+
+.layui-icon-dollar:before {
+ content: "\e659"
+}
+
+.layui-icon-diamond:before {
+ content: "\e735"
+}
+
+.layui-icon-return:before {
+ content: "\e65c"
+}
+
+.layui-icon-camera-fill:before {
+ content: "\e65d"
+}
+
+.layui-icon-fire:before {
+ content: "\e756"
+}
+
+.layui-icon-more-vertical:before {
+ content: "\e671"
+}
+
+.layui-icon-cart:before {
+ content: "\e657"
+}
+
+.layui-icon-star-fill:before {
+ content: "\e658"
+}
+
+.layui-icon-prev:before {
+ content: "\e65a"
+}
+
+.layui-icon-next:before {
+ content: "\e65b"
+}
+
+.layui-icon-upload:before {
+ content: "\e67c"
+}
+
+.layui-icon-upload-drag:before {
+ content: "\e681"
+}
+
+.layui-icon-user:before {
+ content: "\e770"
+}
+
+.layui-icon-file-b:before {
+ content: "\e655"
+}
+
+.layui-icon-component:before {
+ content: "\e857"
+}
+
+.layui-icon-find-fill:before {
+ content: "\e670"
+}
+
+.layui-icon-loading:before {
+ content: "\e63d"
+}
+
+.layui-icon-loading-1:before {
+ content: "\e63e"
+}
+
+.layui-icon-add-1:before {
+ content: "\e654"
+}
+
+.layui-icon-pause:before {
+ content: "\e651"
+}
+
+.layui-icon-play:before {
+ content: "\e652"
+}
+
+.layui-icon-video:before {
+ content: "\e6ed"
+}
+
+.layui-icon-headset:before {
+ content: "\e6fc"
+}
+
+.layui-icon-voice:before {
+ content: "\e688"
+}
+
+.layui-icon-speaker:before {
+ content: "\e645"
+}
+
+.layui-icon-fonts-del:before {
+ content: "\e64f"
+}
+
+.layui-icon-fonts-html:before {
+ content: "\e64b"
+}
+
+.layui-icon-fonts-code:before {
+ content: "\e64e"
+}
+
+.layui-icon-fonts-strong:before {
+ content: "\e62b"
+}
+
+.layui-icon-unlink:before {
+ content: "\e64d"
+}
+
+.layui-icon-picture:before {
+ content: "\e64a"
+}
+
+.layui-icon-link:before {
+ content: "\e64c"
+}
+
+.layui-icon-face-smile-b:before {
+ content: "\e650"
+}
+
+.layui-icon-align-center:before {
+ content: "\e647"
+}
+
+.layui-icon-align-right:before {
+ content: "\e648"
+}
+
+.layui-icon-align-left:before {
+ content: "\e649"
+}
+
+.layui-icon-fonts-u:before {
+ content: "\e646"
+}
+
+.layui-icon-fonts-i:before {
+ content: "\e644"
+}
+
+.layui-icon-tabs:before {
+ content: "\e62a"
+}
+
+.layui-icon-circle:before {
+ content: "\e63f"
+}
+
+.layui-icon-radio:before {
+ content: "\e643"
+}
+
+.layui-icon-share:before {
+ content: "\e641"
+}
+
+.layui-icon-edit:before {
+ content: "\e642"
+}
+
+.layui-icon-delete:before {
+ content: "\e640"
+}
+
+.layui-icon-engine:before {
+ content: "\e628"
+}
+
+.layui-icon-chart-screen:before {
+ content: "\e629"
+}
+
+.layui-icon-chart:before {
+ content: "\e62c"
+}
+
+.layui-icon-table:before {
+ content: "\e62d"
+}
+
+.layui-icon-tree:before {
+ content: "\e62e"
+}
+
+.layui-icon-upload-circle:before {
+ content: "\e62f"
+}
+
+.layui-icon-templeate-1:before {
+ content: "\e630"
+}
+
+.layui-icon-util:before {
+ content: "\e631"
+}
+
+.layui-icon-layouts:before {
+ content: "\e632"
+}
+
+.layui-icon-prev-circle:before {
+ content: "\e633"
+}
+
+.layui-icon-carousel:before {
+ content: "\e634"
+}
+
+.layui-icon-code-circle:before {
+ content: "\e635"
+}
+
+.layui-icon-water:before {
+ content: "\e636"
+}
+
+.layui-icon-date:before {
+ content: "\e637"
+}
+
+.layui-icon-layer:before {
+ content: "\e638"
+}
+
+.layui-icon-fonts-clear:before {
+ content: "\e639"
+}
+
+.layui-icon-dialogue:before {
+ content: "\e63a"
+}
+
+.layui-icon-cellphone-fine:before {
+ content: "\e63b"
+}
+
+.layui-icon-form:before {
+ content: "\e63c"
+}
+
+.layui-icon-file:before {
+ content: "\e621"
+}
+
+.layui-icon-triangle-r:before {
+ content: "\e623"
+}
+
+.layui-icon-triangle-d:before {
+ content: "\e625"
+}
+
+.layui-icon-set-sm:before {
+ content: "\e620"
+}
+
+.layui-icon-add-circle:before {
+ content: "\e61f"
+}
+
+.layui-icon-layim-download:before {
+ content: "\e61e"
+}
+
+.layui-icon-layim-uploadfile:before {
+ content: "\e61d"
+}
+
+.layui-icon-404:before {
+ content: "\e61c"
+}
+
+.layui-icon-about:before {
+ content: "\e60b"
+}
+
+.layui-icon-layim-theme:before {
+ content: "\e61b"
+}
+
+.layui-icon-down:before {
+ content: "\e61a"
+}
+
+.layui-icon-up:before {
+ content: "\e619"
+}
+
+.layui-icon-circle-dot:before {
+ content: "\e617"
+}
+
+.layui-icon-set-fill:before {
+ content: "\e614"
+}
+
+.layui-icon-search:before {
+ content: "\e615"
+}
+
+.layui-icon-friends:before {
+ content: "\e612"
+}
+
+.layui-icon-group:before {
+ content: "\e613"
+}
+
+.layui-icon-reply-fill:before {
+ content: "\e611"
+}
+
+.layui-icon-menu-fill:before {
+ content: "\e60f"
+}
+
+.layui-icon-face-smile-fine:before {
+ content: "\e60c"
+}
+
+.layui-icon-picture-fine:before {
+ content: "\e60d"
+}
+
+.layui-icon-log:before {
+ content: "\e60e"
+}
+
+.layui-icon-list:before {
+ content: "\e60a"
+}
+
+.layui-icon-release:before {
+ content: "\e609"
+}
+
+.layui-icon-add-circle-fine:before {
+ content: "\e608"
+}
+
+.layui-icon-ok:before {
+ content: "\e605"
+}
+
+.layui-icon-help:before {
+ content: "\e607"
+}
+
+.layui-icon-chat:before {
+ content: "\e606"
+}
+
+.layui-icon-top:before {
+ content: "\e604"
+}
+
+.layui-icon-right:before {
+ content: "\e602"
+}
+
+.layui-icon-left:before {
+ content: "\e603"
+}
+
+.layui-icon-star:before {
+ content: "\e600"
+}
+
+.layui-icon-download-circle:before {
+ content: "\e601"
+}
+
+.layui-icon-close:before {
+ content: "\1006"
+}
+
+.layui-icon-close-fill:before {
+ content: "\1007"
+}
+
+.layui-icon-ok-circle:before {
+ content: "\1005"
+}
+
+.layui-main {
+ width: 1140px;
+ margin: 0 auto
+}
+
+.layui-header {
+ z-index: 1000;
+ height: 60px
+}
+
+.layui-header a:hover {
+ transition: all .5s;
+ -webkit-transition: all .5s
+}
+
+.layui-side {
+ position: fixed;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ z-index: 999;
+ width: 200px
+}
+
+.layui-side-scroll {
+ position: relative;
+ width: 220px;
+ height: 100%
+}
+
+.layui-body {
+ position: relative;
+ left: 200px;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ z-index: 900;
+ width: auto;
+ box-sizing: border-box
+}
+
+.layui-layout-admin .layui-header {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ background-color: #23262E
+}
+
+.layui-layout-admin .layui-side {
+ top: 60px;
+ width: 200px;
+ overflow-x: hidden
+}
+
+.layui-layout-admin .layui-body {
+ position: absolute;
+ top: 60px;
+ padding-bottom: 44px
+}
+
+.layui-layout-admin .layui-main {
+ width: auto;
+ margin: 0 15px
+}
+
+.layui-layout-admin .layui-footer {
+ position: fixed;
+ left: 200px;
+ right: 0;
+ bottom: 0;
+ z-index: 990;
+ height: 44px;
+ line-height: 44px;
+ padding: 0 15px;
+ box-shadow: -1px 0 4px rgb(0 0 0 / 12%);
+ background-color: #FAFAFA
+}
+
+.layui-layout-admin .layui-logo {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 200px;
+ height: 100%;
+ line-height: 60px;
+ text-align: center;
+ color: #009688;
+ font-size: 16px;
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 15%)
+}
+
+.layui-layout-admin .layui-header .layui-nav {
+ background: 0 0
+}
+
+.layui-layout-left {
+ position: absolute !important;
+ left: 200px;
+ top: 0
+}
+
+.layui-layout-right {
+ position: absolute !important;
+ right: 0;
+ top: 0
+}
+
+.layui-container {
+ position: relative;
+ margin: 0 auto;
+ padding: 0 15px;
+ box-sizing: border-box
+}
+
+.layui-fluid {
+ position: relative;
+ margin: 0 auto;
+ padding: 0 15px
+}
+
+.layui-row:after,
+.layui-row:before {
+ content: "";
+ display: block;
+ clear: both
+}
+
+.layui-col-lg1,
+.layui-col-lg10,
+.layui-col-lg11,
+.layui-col-lg12,
+.layui-col-lg2,
+.layui-col-lg3,
+.layui-col-lg4,
+.layui-col-lg5,
+.layui-col-lg6,
+.layui-col-lg7,
+.layui-col-lg8,
+.layui-col-lg9,
+.layui-col-md1,
+.layui-col-md10,
+.layui-col-md11,
+.layui-col-md12,
+.layui-col-md2,
+.layui-col-md3,
+.layui-col-md4,
+.layui-col-md5,
+.layui-col-md6,
+.layui-col-md7,
+.layui-col-md8,
+.layui-col-md9,
+.layui-col-sm1,
+.layui-col-sm10,
+.layui-col-sm11,
+.layui-col-sm12,
+.layui-col-sm2,
+.layui-col-sm3,
+.layui-col-sm4,
+.layui-col-sm5,
+.layui-col-sm6,
+.layui-col-sm7,
+.layui-col-sm8,
+.layui-col-sm9,
+.layui-col-xs1,
+.layui-col-xs10,
+.layui-col-xs11,
+.layui-col-xs12,
+.layui-col-xs2,
+.layui-col-xs3,
+.layui-col-xs4,
+.layui-col-xs5,
+.layui-col-xs6,
+.layui-col-xs7,
+.layui-col-xs8,
+.layui-col-xs9 {
+ position: relative;
+ display: block;
+ box-sizing: border-box
+}
+
+.layui-col-xs1,
+.layui-col-xs10,
+.layui-col-xs11,
+.layui-col-xs12,
+.layui-col-xs2,
+.layui-col-xs3,
+.layui-col-xs4,
+.layui-col-xs5,
+.layui-col-xs6,
+.layui-col-xs7,
+.layui-col-xs8,
+.layui-col-xs9 {
+ float: left
+}
+
+.layui-col-xs1 {
+ width: 8.33333333%
+}
+
+.layui-col-xs2 {
+ width: 16.66666667%
+}
+
+.layui-col-xs3 {
+ width: 25%
+}
+
+.layui-col-xs4 {
+ width: 33.33333333%
+}
+
+.layui-col-xs5 {
+ width: 41.66666667%
+}
+
+.layui-col-xs6 {
+ width: 50%
+}
+
+.layui-col-xs7 {
+ width: 58.33333333%
+}
+
+.layui-col-xs8 {
+ width: 66.66666667%
+}
+
+.layui-col-xs9 {
+ width: 75%
+}
+
+.layui-col-xs10 {
+ width: 83.33333333%
+}
+
+.layui-col-xs11 {
+ width: 91.66666667%
+}
+
+.layui-col-xs12 {
+ width: 100%
+}
+
+.layui-col-xs-offset1 {
+ margin-left: 8.33333333%
+}
+
+.layui-col-xs-offset2 {
+ margin-left: 16.66666667%
+}
+
+.layui-col-xs-offset3 {
+ margin-left: 25%
+}
+
+.layui-col-xs-offset4 {
+ margin-left: 33.33333333%
+}
+
+.layui-col-xs-offset5 {
+ margin-left: 41.66666667%
+}
+
+.layui-col-xs-offset6 {
+ margin-left: 50%
+}
+
+.layui-col-xs-offset7 {
+ margin-left: 58.33333333%
+}
+
+.layui-col-xs-offset8 {
+ margin-left: 66.66666667%
+}
+
+.layui-col-xs-offset9 {
+ margin-left: 75%
+}
+
+.layui-col-xs-offset10 {
+ margin-left: 83.33333333%
+}
+
+.layui-col-xs-offset11 {
+ margin-left: 91.66666667%
+}
+
+.layui-col-xs-offset12 {
+ margin-left: 100%
+}
+
+@media screen and (max-width:768px) {
+ .layui-hide-xs {
+ display: none !important
+ }
+
+ .layui-show-xs-block {
+ display: block !important
+ }
+
+ .layui-show-xs-inline {
+ display: inline !important
+ }
+
+ .layui-show-xs-inline-block {
+ display: inline-block !important
+ }
+}
+
+@media screen and (min-width:768px) {
+ .layui-container {
+ width: 750px
+ }
+
+ .layui-hide-sm {
+ display: none !important
+ }
+
+ .layui-show-sm-block {
+ display: block !important
+ }
+
+ .layui-show-sm-inline {
+ display: inline !important
+ }
+
+ .layui-show-sm-inline-block {
+ display: inline-block !important
+ }
+
+ .layui-col-sm1,
+ .layui-col-sm10,
+ .layui-col-sm11,
+ .layui-col-sm12,
+ .layui-col-sm2,
+ .layui-col-sm3,
+ .layui-col-sm4,
+ .layui-col-sm5,
+ .layui-col-sm6,
+ .layui-col-sm7,
+ .layui-col-sm8,
+ .layui-col-sm9 {
+ float: left
+ }
+
+ .layui-col-sm1 {
+ width: 8.33333333%
+ }
+
+ .layui-col-sm2 {
+ width: 16.66666667%
+ }
+
+ .layui-col-sm3 {
+ width: 25%
+ }
+
+ .layui-col-sm4 {
+ width: 33.33333333%
+ }
+
+ .layui-col-sm5 {
+ width: 41.66666667%
+ }
+
+ .layui-col-sm6 {
+ width: 50%
+ }
+
+ .layui-col-sm7 {
+ width: 58.33333333%
+ }
+
+ .layui-col-sm8 {
+ width: 66.66666667%
+ }
+
+ .layui-col-sm9 {
+ width: 75%
+ }
+
+ .layui-col-sm10 {
+ width: 83.33333333%
+ }
+
+ .layui-col-sm11 {
+ width: 91.66666667%
+ }
+
+ .layui-col-sm12 {
+ width: 100%
+ }
+
+ .layui-col-sm-offset1 {
+ margin-left: 8.33333333%
+ }
+
+ .layui-col-sm-offset2 {
+ margin-left: 16.66666667%
+ }
+
+ .layui-col-sm-offset3 {
+ margin-left: 25%
+ }
+
+ .layui-col-sm-offset4 {
+ margin-left: 33.33333333%
+ }
+
+ .layui-col-sm-offset5 {
+ margin-left: 41.66666667%
+ }
+
+ .layui-col-sm-offset6 {
+ margin-left: 50%
+ }
+
+ .layui-col-sm-offset7 {
+ margin-left: 58.33333333%
+ }
+
+ .layui-col-sm-offset8 {
+ margin-left: 66.66666667%
+ }
+
+ .layui-col-sm-offset9 {
+ margin-left: 75%
+ }
+
+ .layui-col-sm-offset10 {
+ margin-left: 83.33333333%
+ }
+
+ .layui-col-sm-offset11 {
+ margin-left: 91.66666667%
+ }
+
+ .layui-col-sm-offset12 {
+ margin-left: 100%
+ }
+}
+
+@media screen and (min-width:992px) {
+ .layui-container {
+ width: 970px
+ }
+
+ .layui-hide-md {
+ display: none !important
+ }
+
+ .layui-show-md-block {
+ display: block !important
+ }
+
+ .layui-show-md-inline {
+ display: inline !important
+ }
+
+ .layui-show-md-inline-block {
+ display: inline-block !important
+ }
+
+ .layui-col-md1,
+ .layui-col-md10,
+ .layui-col-md11,
+ .layui-col-md12,
+ .layui-col-md2,
+ .layui-col-md3,
+ .layui-col-md4,
+ .layui-col-md5,
+ .layui-col-md6,
+ .layui-col-md7,
+ .layui-col-md8,
+ .layui-col-md9 {
+ float: left
+ }
+
+ .layui-col-md1 {
+ width: 8.33333333%
+ }
+
+ .layui-col-md2 {
+ width: 16.66666667%
+ }
+
+ .layui-col-md3 {
+ width: 25%
+ }
+
+ .layui-col-md4 {
+ width: 33.33333333%
+ }
+
+ .layui-col-md5 {
+ width: 41.66666667%
+ }
+
+ .layui-col-md6 {
+ width: 50%
+ }
+
+ .layui-col-md7 {
+ width: 58.33333333%
+ }
+
+ .layui-col-md8 {
+ width: 66.66666667%
+ }
+
+ .layui-col-md9 {
+ width: 75%
+ }
+
+ .layui-col-md10 {
+ width: 83.33333333%
+ }
+
+ .layui-col-md11 {
+ width: 91.66666667%
+ }
+
+ .layui-col-md12 {
+ width: 100%
+ }
+
+ .layui-col-md-offset1 {
+ margin-left: 8.33333333%
+ }
+
+ .layui-col-md-offset2 {
+ margin-left: 16.66666667%
+ }
+
+ .layui-col-md-offset3 {
+ margin-left: 25%
+ }
+
+ .layui-col-md-offset4 {
+ margin-left: 33.33333333%
+ }
+
+ .layui-col-md-offset5 {
+ margin-left: 41.66666667%
+ }
+
+ .layui-col-md-offset6 {
+ margin-left: 50%
+ }
+
+ .layui-col-md-offset7 {
+ margin-left: 58.33333333%
+ }
+
+ .layui-col-md-offset8 {
+ margin-left: 66.66666667%
+ }
+
+ .layui-col-md-offset9 {
+ margin-left: 75%
+ }
+
+ .layui-col-md-offset10 {
+ margin-left: 83.33333333%
+ }
+
+ .layui-col-md-offset11 {
+ margin-left: 91.66666667%
+ }
+
+ .layui-col-md-offset12 {
+ margin-left: 100%
+ }
+}
+
+@media screen and (min-width:1200px) {
+ .layui-container {
+ width: 1170px
+ }
+
+ .layui-hide-lg {
+ display: none !important
+ }
+
+ .layui-show-lg-block {
+ display: block !important
+ }
+
+ .layui-show-lg-inline {
+ display: inline !important
+ }
+
+ .layui-show-lg-inline-block {
+ display: inline-block !important
+ }
+
+ .layui-col-lg1,
+ .layui-col-lg10,
+ .layui-col-lg11,
+ .layui-col-lg12,
+ .layui-col-lg2,
+ .layui-col-lg3,
+ .layui-col-lg4,
+ .layui-col-lg5,
+ .layui-col-lg6,
+ .layui-col-lg7,
+ .layui-col-lg8,
+ .layui-col-lg9 {
+ float: left
+ }
+
+ .layui-col-lg1 {
+ width: 8.33333333%
+ }
+
+ .layui-col-lg2 {
+ width: 16.66666667%
+ }
+
+ .layui-col-lg3 {
+ width: 25%
+ }
+
+ .layui-col-lg4 {
+ width: 33.33333333%
+ }
+
+ .layui-col-lg5 {
+ width: 41.66666667%
+ }
+
+ .layui-col-lg6 {
+ width: 50%
+ }
+
+ .layui-col-lg7 {
+ width: 58.33333333%
+ }
+
+ .layui-col-lg8 {
+ width: 66.66666667%
+ }
+
+ .layui-col-lg9 {
+ width: 75%
+ }
+
+ .layui-col-lg10 {
+ width: 83.33333333%
+ }
+
+ .layui-col-lg11 {
+ width: 91.66666667%
+ }
+
+ .layui-col-lg12 {
+ width: 100%
+ }
+
+ .layui-col-lg-offset1 {
+ margin-left: 8.33333333%
+ }
+
+ .layui-col-lg-offset2 {
+ margin-left: 16.66666667%
+ }
+
+ .layui-col-lg-offset3 {
+ margin-left: 25%
+ }
+
+ .layui-col-lg-offset4 {
+ margin-left: 33.33333333%
+ }
+
+ .layui-col-lg-offset5 {
+ margin-left: 41.66666667%
+ }
+
+ .layui-col-lg-offset6 {
+ margin-left: 50%
+ }
+
+ .layui-col-lg-offset7 {
+ margin-left: 58.33333333%
+ }
+
+ .layui-col-lg-offset8 {
+ margin-left: 66.66666667%
+ }
+
+ .layui-col-lg-offset9 {
+ margin-left: 75%
+ }
+
+ .layui-col-lg-offset10 {
+ margin-left: 83.33333333%
+ }
+
+ .layui-col-lg-offset11 {
+ margin-left: 91.66666667%
+ }
+
+ .layui-col-lg-offset12 {
+ margin-left: 100%
+ }
+}
+
+.layui-col-space1 {
+ margin: -.5px
+}
+
+.layui-col-space1>* {
+ padding: .5px
+}
+
+.layui-col-space2 {
+ margin: -1px
+}
+
+.layui-col-space2>* {
+ padding: 1px
+}
+
+.layui-col-space4 {
+ margin: -2px
+}
+
+.layui-col-space4>* {
+ padding: 2px
+}
+
+.layui-col-space5 {
+ margin: -2.5px
+}
+
+.layui-col-space5>* {
+ padding: 2.5px
+}
+
+.layui-col-space6 {
+ margin: -3px
+}
+
+.layui-col-space6>* {
+ padding: 3px
+}
+
+.layui-col-space8 {
+ margin: -4px
+}
+
+.layui-col-space8>* {
+ padding: 4px
+}
+
+.layui-col-space10 {
+ margin: -5px
+}
+
+.layui-col-space10>* {
+ padding: 5px
+}
+
+.layui-col-space12 {
+ margin: -6px
+}
+
+.layui-col-space12>* {
+ padding: 6px
+}
+
+.layui-col-space14 {
+ margin: -7px
+}
+
+.layui-col-space14>* {
+ padding: 7px
+}
+
+.layui-col-space15 {
+ margin: -7.5px
+}
+
+.layui-col-space15>* {
+ padding: 7.5px
+}
+
+.layui-col-space16 {
+ margin: -8px
+}
+
+.layui-col-space16>* {
+ padding: 8px
+}
+
+.layui-col-space18 {
+ margin: -9px
+}
+
+.layui-col-space18>* {
+ padding: 9px
+}
+
+.layui-col-space20 {
+ margin: -10px
+}
+
+.layui-col-space20>* {
+ padding: 10px
+}
+
+.layui-col-space22 {
+ margin: -11px
+}
+
+.layui-col-space22>* {
+ padding: 11px
+}
+
+.layui-col-space24 {
+ margin: -12px
+}
+
+.layui-col-space24>* {
+ padding: 12px
+}
+
+.layui-col-space25 {
+ margin: -12.5px
+}
+
+.layui-col-space25>* {
+ padding: 12.5px
+}
+
+.layui-col-space26 {
+ margin: -13px
+}
+
+.layui-col-space26>* {
+ padding: 13px
+}
+
+.layui-col-space28 {
+ margin: -14px
+}
+
+.layui-col-space28>* {
+ padding: 14px
+}
+
+.layui-col-space30 {
+ margin: -15px
+}
+
+.layui-col-space30>* {
+ padding: 15px
+}
+
+.layui-btn,
+.layui-input,
+.layui-select,
+.layui-textarea,
+.layui-upload-button {
+ outline: 0;
+ -webkit-appearance: none;
+ transition: all .3s;
+ -webkit-transition: all .3s;
+ box-sizing: border-box
+}
+
+.layui-elem-quote {
+ margin-bottom: 10px;
+ padding: 15px;
+ line-height: 1.6;
+ border-left: 5px solid #5FB878;
+ border-radius: 0 2px 2px 0;
+ background-color: #FAFAFA
+}
+
+.layui-quote-nm {
+ border-style: solid;
+ border-width: 1px 1px 1px 5px;
+ background: 0 0
+}
+
+.layui-elem-field {
+ margin-bottom: 10px;
+ padding: 0;
+ border-width: 1px;
+ border-style: solid
+}
+
+.layui-elem-field legend {
+ margin-left: 20px;
+ padding: 0 10px;
+ font-size: 20px;
+ font-weight: 300
+}
+
+.layui-field-title {
+ margin: 10px 0 20px;
+ border-width: 1px 0 0
+}
+
+.layui-field-box {
+ padding: 15px
+}
+
+.layui-field-title .layui-field-box {
+ padding: 10px 0
+}
+
+.layui-progress {
+ position: relative;
+ height: 6px;
+ border-radius: 20px;
+ background-color: #eee
+}
+
+.layui-progress-bar {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 0;
+ max-width: 100%;
+ height: 6px;
+ border-radius: 20px;
+ text-align: right;
+ background-color: #5FB878;
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-progress-big,
+.layui-progress-big .layui-progress-bar {
+ height: 18px;
+ line-height: 18px
+}
+
+.layui-progress-text {
+ position: relative;
+ top: -20px;
+ line-height: 18px;
+ font-size: 12px;
+ color: #666
+}
+
+.layui-progress-big .layui-progress-text {
+ position: static;
+ padding: 0 10px;
+ color: #fff
+}
+
+.layui-collapse {
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px
+}
+
+.layui-colla-content,
+.layui-colla-item {
+ border-top-width: 1px;
+ border-top-style: solid
+}
+
+.layui-colla-item:first-child {
+ border-top: none
+}
+
+.layui-colla-title {
+ position: relative;
+ height: 42px;
+ line-height: 42px;
+ padding: 0 15px 0 35px;
+ color: #333;
+ background-color: #FAFAFA;
+ cursor: pointer;
+ font-size: 14px;
+ overflow: hidden
+}
+
+.layui-colla-content {
+ display: none;
+ padding: 10px 15px;
+ line-height: 1.6;
+ color: #666
+}
+
+.layui-colla-icon {
+ position: absolute;
+ left: 15px;
+ top: 0;
+ font-size: 14px
+}
+
+.layui-card-body,
+.layui-card-header,
+.layui-form-label,
+.layui-form-mid,
+.layui-input-block,
+.layui-input-inline,
+.layui-input-wrap,
+.layui-panel,
+.layui-textarea {
+ position: relative
+}
+
+.layui-card {
+ margin-bottom: 15px;
+ border-radius: 2px;
+ background-color: #fff;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05)
+}
+
+.layui-form-select dl,
+.layui-panel {
+ box-shadow: 1px 1px 4px rgb(0 0 0 / 8%)
+}
+
+.layui-card:last-child {
+ margin-bottom: 0
+}
+
+.layui-card-header {
+ height: 42px;
+ line-height: 42px;
+ padding: 0 15px;
+ border-bottom: 1px solid #f6f6f6;
+ color: #333;
+ border-radius: 2px 2px 0 0;
+ font-size: 14px
+}
+
+.layui-card-body {
+ padding: 10px 15px;
+ line-height: 24px
+}
+
+.layui-card-body[pad15] {
+ padding: 15px
+}
+
+.layui-card-body[pad20] {
+ padding: 20px
+}
+
+.layui-card-body .layui-table {
+ margin: 5px 0
+}
+
+.layui-card .layui-tab {
+ margin: 0
+}
+
+.layui-panel {
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px;
+ background-color: #fff;
+ color: #666
+}
+
+.layui-bg-black,
+.layui-bg-blue,
+.layui-bg-cyan,
+.layui-bg-green,
+.layui-bg-orange,
+.layui-bg-red {
+ color: #fff !important
+}
+
+.layui-panel-window {
+ position: relative;
+ padding: 15px;
+ border-radius: 0;
+ border-top: 5px solid #eee;
+ background-color: #fff
+}
+
+.layui-border,
+.layui-border-black,
+.layui-border-blue,
+.layui-border-cyan,
+.layui-border-green,
+.layui-border-orange,
+.layui-border-red {
+ border-width: 1px;
+ border-style: solid
+}
+
+.layui-auxiliar-moving {
+ position: fixed;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ width: 100%;
+ height: 100%;
+ background: 0 0;
+ z-index: 9999999999
+}
+
+.layui-bg-red {
+ background-color: #FF5722 !important
+}
+
+.layui-bg-orange {
+ background-color: #FFB800 !important
+}
+
+.layui-bg-green {
+ background-color: #009688 !important
+}
+
+.layui-bg-cyan {
+ background-color: #2F4056 !important
+}
+
+.layui-bg-blue {
+ background-color: #1E9FFF !important
+}
+
+.layui-bg-black {
+ background-color: #393D49 !important
+}
+
+.layui-bg-gray {
+ background-color: #FAFAFA !important;
+ color: #666 !important
+}
+
+.layui-badge-rim,
+.layui-border,
+.layui-colla-content,
+.layui-colla-item,
+.layui-collapse,
+.layui-elem-field,
+.layui-form-pane .layui-form-item[pane],
+.layui-form-pane .layui-form-label,
+.layui-iconpicker,
+.layui-iconpicker-main,
+.layui-input,
+.layui-input-split,
+.layui-layedit,
+.layui-layedit-tool,
+.layui-panel,
+.layui-quote-nm,
+.layui-select,
+.layui-tab-bar,
+.layui-tab-card,
+.layui-tab-title,
+.layui-tab-title .layui-this:after,
+.layui-textarea {
+ border-color: #eee
+}
+
+.layui-border-red {
+ border-color: #FF5722 !important;
+ color: #FF5722 !important
+}
+
+.layui-border-orange {
+ border-color: #FFB800 !important;
+ color: #FFB800 !important
+}
+
+.layui-border-green {
+ border-color: #009688 !important;
+ color: #009688 !important
+}
+
+.layui-border-cyan {
+ border-color: #2F4056 !important;
+ color: #2F4056 !important
+}
+
+.layui-border-blue {
+ border-color: #1E9FFF !important;
+ color: #1E9FFF !important
+}
+
+.layui-border-black {
+ border-color: #393D49 !important;
+ color: #393D49 !important
+}
+
+.layui-timeline-item:before {
+ background-color: #eee
+}
+
+.layui-text {
+ line-height: 1.6;
+ font-size: 14px;
+ color: #666
+}
+
+.layui-text h1,
+.layui-text h2,
+.layui-text h3 {
+ font-weight: 500;
+ color: #333
+}
+
+.layui-text h1 {
+ font-size: 30px
+}
+
+.layui-text h2 {
+ font-size: 24px
+}
+
+.layui-text h3 {
+ font-size: 18px
+}
+
+.layui-text a:not(.layui-btn) {
+ color: #01AAED
+}
+
+.layui-text a:not(.layui-btn):hover {
+ text-decoration: underline
+}
+
+.layui-text ul {
+ padding: 5px 0 5px 15px
+}
+
+.layui-text ul li {
+ margin-top: 5px;
+ list-style-type: disc
+}
+
+.layui-text em,
+.layui-word-aux {
+ color: #999 !important;
+ padding-left: 5px !important;
+ padding-right: 5px !important
+}
+
+.layui-text p {
+ margin: 10px 0
+}
+
+.layui-text p:first-child {
+ margin-top: 0
+}
+
+.layui-font-12 {
+ font-size: 12px !important
+}
+
+.layui-font-14 {
+ font-size: 14px !important
+}
+
+.layui-font-16 {
+ font-size: 16px !important
+}
+
+.layui-font-18 {
+ font-size: 18px !important
+}
+
+.layui-font-20 {
+ font-size: 20px !important
+}
+
+.layui-font-22 {
+ font-size: 22px !important
+}
+
+.layui-font-24 {
+ font-size: 24px !important
+}
+
+.layui-font-26 {
+ font-size: 26px !important
+}
+
+.layui-font-28 {
+ font-size: 28px !important
+}
+
+.layui-font-30 {
+ font-size: 30px !important
+}
+
+.layui-font-red {
+ color: #FF5722 !important
+}
+
+.layui-font-orange {
+ color: #FFB800 !important
+}
+
+.layui-font-green {
+ color: #009688 !important
+}
+
+.layui-font-cyan {
+ color: #2F4056 !important
+}
+
+.layui-font-blue {
+ color: #01AAED !important
+}
+
+.layui-font-black {
+ color: #000 !important
+}
+
+.layui-font-gray {
+ color: #c2c2c2 !important
+}
+
+.layui-btn {
+ height: 38px;
+ line-height: 38px;
+ border: 1px solid transparent;
+ padding: 0 18px;
+ background-color: #009688;
+ color: #fff;
+ white-space: nowrap;
+ text-align: center;
+ font-size: 14px;
+ border-radius: 2px;
+ cursor: pointer
+}
+
+.layui-btn:hover {
+ opacity: .8;
+ filter: alpha(opacity=80);
+ color: #fff
+}
+
+.layui-btn:active {
+ opacity: 1;
+ filter: alpha(opacity=100)
+}
+
+.layui-btn+.layui-btn {
+ margin-left: 10px
+}
+
+.layui-btn-container {
+ font-size: 0
+}
+
+.layui-btn-container .layui-btn {
+ margin-right: 10px;
+ margin-bottom: 10px
+}
+
+.layui-btn-container .layui-btn+.layui-btn {
+ margin-left: 0
+}
+
+.layui-table .layui-btn-container .layui-btn {
+ margin-bottom: 9px
+}
+
+.layui-btn-radius {
+ border-radius: 100px
+}
+
+.layui-btn .layui-icon {
+ padding: 0 2px;
+ vertical-align: middle\9;
+ vertical-align: bottom
+}
+
+.layui-btn-primary {
+ border-color: #d2d2d2;
+ background: 0 0;
+ color: #666
+}
+
+.layui-btn-primary:hover {
+ border-color: #009688;
+ color: #333
+}
+
+.layui-btn-normal {
+ background-color: #1E9FFF
+}
+
+.layui-btn-warm {
+ background-color: #FFB800
+}
+
+.layui-btn-danger {
+ background-color: #FF5722
+}
+
+.layui-btn-checked {
+ background-color: #5FB878
+}
+
+.layui-btn-disabled,
+.layui-btn-disabled:active,
+.layui-btn-disabled:hover {
+ border-color: #eee !important;
+ background-color: #FBFBFB !important;
+ color: #d2d2d2 !important;
+ cursor: not-allowed !important;
+ opacity: 1
+}
+
+.layui-btn-lg {
+ height: 44px;
+ line-height: 44px;
+ padding: 0 25px;
+ font-size: 16px
+}
+
+.layui-btn-sm {
+ height: 30px;
+ line-height: 30px;
+ padding: 0 10px;
+ font-size: 12px
+}
+
+.layui-btn-xs {
+ height: 22px;
+ line-height: 22px;
+ padding: 0 5px;
+ font-size: 12px
+}
+
+.layui-btn-xs i {
+ font-size: 12px !important
+}
+
+.layui-btn-group {
+ vertical-align: middle;
+ font-size: 0
+}
+
+.layui-btn-group .layui-btn {
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+ border-left: 1px solid rgba(255, 255, 255, .5);
+ border-radius: 0
+}
+
+.layui-btn-group .layui-btn-primary {
+ border-left: none
+}
+
+.layui-btn-group .layui-btn-primary:hover {
+ border-color: #d2d2d2;
+ color: #009688
+}
+
+.layui-btn-group .layui-btn:first-child {
+ border-left: none;
+ border-radius: 2px 0 0 2px
+}
+
+.layui-btn-group .layui-btn-primary:first-child {
+ border-left: 1px solid #d2d2d2
+}
+
+.layui-btn-group .layui-btn:last-child {
+ border-radius: 0 2px 2px 0
+}
+
+.layui-btn-group .layui-btn+.layui-btn {
+ margin-left: 0
+}
+
+.layui-btn-group+.layui-btn-group {
+ margin-left: 10px
+}
+
+.layui-btn-fluid {
+ width: 100%
+}
+
+.layui-input,
+.layui-select,
+.layui-textarea {
+ height: 38px;
+ line-height: 1.3;
+ line-height: 38px\9;
+ border-width: 1px;
+ border-style: solid;
+ background-color: #fff;
+ color: rgba(0, 0, 0, .85);
+ border-radius: 2px
+}
+
+.layui-input::-webkit-input-placeholder,
+.layui-select::-webkit-input-placeholder,
+.layui-textarea::-webkit-input-placeholder {
+ line-height: 1.3
+}
+
+.layui-input,
+.layui-textarea {
+ display: block;
+ width: 100%;
+ padding-left: 10px
+}
+
+.layui-input:hover,
+.layui-textarea:hover {
+ border-color: #eee !important
+}
+
+.layui-input:focus,
+.layui-textarea:focus {
+ border-color: #d2d2d2 !important
+}
+
+.layui-textarea {
+ min-height: 100px;
+ height: auto;
+ line-height: 20px;
+ padding: 6px 10px;
+ resize: vertical
+}
+
+.layui-select {
+ padding: 0 10px
+}
+
+.layui-form input[type=checkbox],
+.layui-form input[type=radio],
+.layui-form select {
+ display: none
+}
+
+.layui-form [lay-ignore] {
+ display: initial
+}
+
+.layui-form-item {
+ margin-bottom: 15px;
+ clear: both;
+ *zoom: 1
+}
+
+.layui-form-item:after {
+ content: '\20';
+ clear: both;
+ *zoom: 1;
+ display: block;
+ height: 0
+}
+
+.layui-form-label {
+ float: left;
+ display: block;
+ padding: 9px 15px;
+ width: 80px;
+ font-weight: 400;
+ line-height: 20px;
+ text-align: right
+}
+
+.layui-form-label-col {
+ display: block;
+ float: none;
+ padding: 9px 0;
+ line-height: 20px;
+ text-align: left
+}
+
+.layui-form-item .layui-inline {
+ margin-bottom: 5px;
+ margin-right: 10px
+}
+
+.layui-input-block {
+ margin-left: 110px;
+ min-height: 36px
+}
+
+.layui-input-inline {
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-form-item .layui-input-inline {
+ float: left;
+ width: 190px;
+ margin-right: 10px
+}
+
+.layui-form-text .layui-input-inline {
+ width: auto
+}
+
+.layui-form-mid {
+ float: left;
+ display: block;
+ padding: 9px 0 !important;
+ line-height: 20px;
+ margin-right: 10px
+}
+
+.layui-form-danger+.layui-form-select .layui-input,
+.layui-form-danger:focus {
+ border-color: #FF5722 !important
+}
+
+.layui-input-wrap {
+ height: 38px;
+ line-height: 38px
+}
+
+.layui-input-wrap .layui-input {
+ padding-right: 35px;
+ cursor: pointer
+}
+
+.layui-input-wrap .layui-input::-ms-clear,
+.layui-input-wrap .layui-input::-ms-reveal {
+ display: none
+}
+
+.layui-input-wrap-prefix .layui-input {
+ padding-left: 35px
+}
+
+.layui-input-prefix,
+.layui-input-split,
+.layui-input-suffix {
+ position: absolute;
+ right: 0;
+ top: 0;
+ padding: 0 10px;
+ width: 35px;
+ height: 100%;
+ text-align: center;
+ transition: all .3s;
+ cursor: pointer;
+ pointer-events: none;
+ box-sizing: border-box
+}
+
+.layui-input-prefix {
+ left: 0;
+ border-radius: 2px 0 0 2px
+}
+
+.layui-input-suffix {
+ right: 0;
+ border-radius: 0 2px 2px 0
+}
+
+.layui-input-wrap .layui-input:focus+.layui-input-split {
+ border-color: #d2d2d2
+}
+
+.layui-input-prefix .layui-icon,
+.layui-input-split .layui-icon,
+.layui-input-suffix .layui-icon {
+ position: relative;
+ font-size: 16px;
+ color: rgba(0, 0, 0, .6);
+ transition: all .3s
+}
+
+.layui-input-wrap .layui-input-prefix.layui-input-split {
+ border-width: 0 1px 0 0
+}
+
+.layui-input-wrap-prefix .layui-form-select {
+ position: static
+}
+
+.layui-input-affix-event .layui-icon {
+ color: rgba(0, 0, 0, .8)
+}
+
+.layui-input-affix-event .layui-icon-clear {
+ color: rgba(0, 0, 0, .3)
+}
+
+.layui-input-affix-event .layui-icon:hover {
+ color: rgba(0, 0, 0, .6)
+}
+
+.layui-input-split {
+ border-width: 1px;
+ border-style: solid
+}
+
+.layui-input-affix-event {
+ pointer-events: auto
+}
+
+.layui-input-group {
+ position: relative;
+ display: inline-table;
+ cursor: pointer
+}
+
+.layui-input-group>* {
+ display: table-cell;
+ vertical-align: middle;
+ position: relative;
+ cursor: pointer
+}
+
+.layui-input-group .layui-input {
+ padding-right: 15px
+}
+
+.layui-input-group .layui-input-prefix {
+ width: auto;
+ border-right: 0
+}
+
+.layui-input-group .layui-input-suffix {
+ width: auto;
+ border-left: 0
+}
+
+.layui-form-select {
+ position: relative
+}
+
+.layui-form-select .layui-input {
+ padding-right: 30px;
+ cursor: pointer
+}
+
+.layui-form-select .layui-edge {
+ position: absolute;
+ right: 10px;
+ top: 50%;
+ margin-top: -3px;
+ cursor: pointer;
+ border-width: 6px;
+ border-top-color: #c2c2c2;
+ border-top-style: solid;
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-form-select dl {
+ display: none;
+ position: absolute;
+ left: 0;
+ top: 42px;
+ padding: 5px 0;
+ z-index: 899;
+ min-width: 100%;
+ border: 1px solid #eee;
+ max-height: 300px;
+ overflow-y: auto;
+ background-color: #fff;
+ border-radius: 2px;
+ box-sizing: border-box
+}
+
+.layui-form-select dl dd,
+.layui-form-select dl dt {
+ padding: 0 10px;
+ line-height: 36px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis
+}
+
+.layui-form-select dl dt {
+ font-size: 12px;
+ color: #999
+}
+
+.layui-form-select dl dd {
+ cursor: pointer
+}
+
+.layui-form-select dl dd:hover {
+ background-color: #F6F6F6;
+ -webkit-transition: .5s all;
+ transition: .5s all
+}
+
+.layui-form-select .layui-select-group dd {
+ padding-left: 20px
+}
+
+.layui-form-select dl dd.layui-select-tips {
+ padding-left: 10px !important;
+ color: #999
+}
+
+.layui-form-select dl dd.layui-this {
+ background-color: #F6F6F6;
+ color: #5FB878;
+ font-weight: 700
+}
+
+.layui-form-checkbox,
+.layui-form-select dl dd.layui-disabled {
+ background-color: #fff
+}
+
+.layui-form-selected dl {
+ display: block
+}
+
+.layui-form-checkbox,
+.layui-form-checkbox *,
+.layui-form-switch {
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-form-selected .layui-edge {
+ margin-top: -9px;
+ -webkit-transform: rotate(180deg);
+ transform: rotate(180deg);
+ margin-top: -3px\9
+}
+
+:root .layui-form-selected .layui-edge {
+ margin-top: -9px\0/IE9
+}
+
+.layui-form-selectup dl {
+ top: auto;
+ bottom: 42px
+}
+
+.layui-select-none {
+ margin: 5px 0;
+ text-align: center;
+ color: #999
+}
+
+.layui-select-disabled .layui-disabled {
+ border-color: #eee !important
+}
+
+.layui-select-disabled .layui-edge {
+ border-top-color: #d2d2d2
+}
+
+.layui-form-checkbox {
+ position: relative;
+ height: 30px;
+ line-height: 30px;
+ margin-right: 10px;
+ padding-right: 30px;
+ cursor: pointer;
+ font-size: 0;
+ -webkit-transition: .1s linear;
+ transition: .1s linear;
+ box-sizing: border-box
+}
+
+.layui-form-checkbox span {
+ padding: 0 10px;
+ height: 100%;
+ font-size: 14px;
+ border-radius: 2px 0 0 2px;
+ background-color: #d2d2d2;
+ color: #fff;
+ overflow: hidden
+}
+
+.layui-form-checkbox:hover span {
+ background-color: #c2c2c2
+}
+
+.layui-form-checkbox i {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 30px;
+ height: 28px;
+ border: 1px solid #d2d2d2;
+ border-left: none;
+ border-radius: 0 2px 2px 0;
+ color: #fff;
+ font-size: 20px;
+ text-align: center
+}
+
+.layui-form-checkbox:hover i {
+ border-color: #c2c2c2;
+ color: #c2c2c2
+}
+
+.layui-form-checked,
+.layui-form-checked:hover {
+ border-color: #5FB878
+}
+
+.layui-form-checked span,
+.layui-form-checked:hover span {
+ background-color: #5FB878
+}
+
+.layui-form-checked i,
+.layui-form-checked:hover i {
+ color: #5FB878
+}
+
+.layui-form-item .layui-form-checkbox {
+ margin-top: 4px
+}
+
+.layui-form-checkbox[lay-skin=primary] {
+ height: auto !important;
+ line-height: normal !important;
+ min-width: 18px;
+ min-height: 18px;
+ border: none !important;
+ margin-right: 0;
+ padding-left: 28px;
+ padding-right: 0;
+ background: 0 0
+}
+
+.layui-form-checkbox[lay-skin=primary] span {
+ padding-left: 0;
+ padding-right: 15px;
+ line-height: 18px;
+ background: 0 0;
+ color: #666
+}
+
+.layui-form-checkbox[lay-skin=primary] i {
+ right: auto;
+ left: 0;
+ width: 16px;
+ height: 16px;
+ line-height: 16px;
+ border: 1px solid #d2d2d2;
+ font-size: 12px;
+ border-radius: 2px;
+ background-color: #fff;
+ -webkit-transition: .1s linear;
+ transition: .1s linear
+}
+
+.layui-form-checkbox[lay-skin=primary]:hover i {
+ border-color: #5FB878;
+ color: #fff
+}
+
+.layui-form-checked[lay-skin=primary] i {
+ border-color: #5FB878 !important;
+ background-color: #5FB878;
+ color: #fff
+}
+
+.layui-checkbox-disabled[lay-skin=primary] span {
+ background: 0 0 !important;
+ color: #c2c2c2 !important
+}
+
+.layui-checkbox-disabled[lay-skin=primary]:hover i {
+ border-color: #d2d2d2
+}
+
+.layui-form-item .layui-form-checkbox[lay-skin=primary] {
+ margin-top: 10px
+}
+
+.layui-form-switch {
+ position: relative;
+ height: 22px;
+ line-height: 22px;
+ min-width: 35px;
+ padding: 0 5px;
+ margin-top: 8px;
+ border: 1px solid #d2d2d2;
+ border-radius: 20px;
+ cursor: pointer;
+ background-color: #fff;
+ -webkit-transition: .1s linear;
+ transition: .1s linear
+}
+
+.layui-form-switch i {
+ position: absolute;
+ left: 5px;
+ top: 3px;
+ width: 16px;
+ height: 16px;
+ border-radius: 20px;
+ background-color: #d2d2d2;
+ -webkit-transition: .1s linear;
+ transition: .1s linear
+}
+
+.layui-form-switch em {
+ position: relative;
+ top: 0;
+ width: 25px;
+ margin-left: 21px;
+ padding: 0 !important;
+ text-align: center !important;
+ color: #999 !important;
+ font-style: normal !important;
+ font-size: 12px
+}
+
+.layui-form-onswitch {
+ border-color: #5FB878;
+ background-color: #5FB878
+}
+
+.layui-checkbox-disabled,
+.layui-checkbox-disabled i {
+ border-color: #eee !important
+}
+
+.layui-form-onswitch i {
+ left: 100%;
+ margin-left: -21px;
+ background-color: #fff
+}
+
+.layui-form-onswitch em {
+ margin-left: 5px;
+ margin-right: 21px;
+ color: #fff !important
+}
+
+.layui-checkbox-disabled span {
+ background-color: #eee !important
+}
+
+.layui-checkbox-disabled em {
+ color: #d2d2d2 !important
+}
+
+.layui-checkbox-disabled:hover i {
+ color: #fff !important
+}
+
+[lay-radio] {
+ display: none
+}
+
+.layui-form-radio,
+.layui-form-radio * {
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-form-radio {
+ line-height: 28px;
+ margin: 6px 10px 0 0;
+ padding-right: 10px;
+ cursor: pointer;
+ font-size: 0
+}
+
+.layui-form-radio * {
+ font-size: 14px
+}
+
+.layui-form-radio>i {
+ margin-right: 8px;
+ font-size: 22px;
+ color: #c2c2c2
+}
+
+.layui-form-radio:hover *,
+.layui-form-radioed,
+.layui-form-radioed>i {
+ color: #5FB878
+}
+
+.layui-radio-disabled>i {
+ color: #eee !important
+}
+
+.layui-radio-disabled * {
+ color: #c2c2c2 !important
+}
+
+.layui-form-pane .layui-form-label {
+ width: 110px;
+ padding: 8px 15px;
+ height: 38px;
+ line-height: 20px;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px 0 0 2px;
+ text-align: center;
+ background-color: #FAFAFA;
+ overflow: hidden;
+ box-sizing: border-box
+}
+
+.layui-form-pane .layui-input-inline {
+ margin-left: -1px
+}
+
+.layui-form-pane .layui-input-block {
+ margin-left: 110px;
+ left: -1px
+}
+
+.layui-form-pane .layui-input {
+ border-radius: 0 2px 2px 0
+}
+
+.layui-form-pane .layui-form-text .layui-form-label {
+ float: none;
+ width: 100%;
+ border-radius: 2px;
+ box-sizing: border-box;
+ text-align: left
+}
+
+.layui-form-pane .layui-form-text .layui-input-inline {
+ display: block;
+ margin: 0;
+ top: -1px;
+ clear: both
+}
+
+.layui-form-pane .layui-form-text .layui-input-block {
+ margin: 0;
+ left: 0;
+ top: -1px
+}
+
+.layui-form-pane .layui-form-text .layui-textarea {
+ min-height: 100px;
+ border-radius: 0 0 2px 2px
+}
+
+.layui-form-pane .layui-form-checkbox {
+ margin: 4px 0 4px 10px
+}
+
+.layui-form-pane .layui-form-radio,
+.layui-form-pane .layui-form-switch {
+ margin-top: 6px;
+ margin-left: 10px
+}
+
+.layui-form-pane .layui-form-item[pane] {
+ position: relative;
+ border-width: 1px;
+ border-style: solid
+}
+
+.layui-form-pane .layui-form-item[pane] .layui-form-label {
+ position: absolute;
+ left: 0;
+ top: 0;
+ height: 100%;
+ border-width: 0 1px 0 0
+}
+
+.layui-form-pane .layui-form-item[pane] .layui-input-inline {
+ margin-left: 110px
+}
+
+@media screen and (max-width:450px) {
+ .layui-form-item .layui-form-label {
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap
+ }
+
+ .layui-form-item .layui-inline {
+ display: block;
+ margin-right: 0;
+ margin-bottom: 20px;
+ clear: both
+ }
+
+ .layui-form-item .layui-inline:after {
+ content: '\20';
+ clear: both;
+ display: block;
+ height: 0
+ }
+
+ .layui-form-item .layui-input-inline {
+ display: block;
+ float: none;
+ left: -3px;
+ width: auto !important;
+ margin: 0 0 10px 112px
+ }
+
+ .layui-form-item .layui-input-inline+.layui-form-mid {
+ margin-left: 110px;
+ top: -5px;
+ padding: 0
+ }
+
+ .layui-form-item .layui-form-checkbox {
+ margin-right: 5px;
+ margin-bottom: 5px
+ }
+}
+
+.layui-layedit {
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px
+}
+
+.layui-layedit-tool {
+ padding: 3px 5px;
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+ font-size: 0
+}
+
+.layedit-tool-fixed {
+ position: fixed;
+ top: 0;
+ border-top: 1px solid #eee
+}
+
+.layui-layedit-tool .layedit-tool-mid,
+.layui-layedit-tool .layui-icon {
+ display: inline-block;
+ vertical-align: middle;
+ text-align: center;
+ font-size: 14px
+}
+
+.layui-layedit-tool .layui-icon {
+ position: relative;
+ width: 32px;
+ height: 30px;
+ line-height: 30px;
+ margin: 3px 5px;
+ color: #777;
+ cursor: pointer;
+ border-radius: 2px
+}
+
+.layui-layedit-tool .layui-icon:hover {
+ color: #393D49
+}
+
+.layui-layedit-tool .layui-icon:active {
+ color: #000
+}
+
+.layui-layedit-tool .layedit-tool-active {
+ background-color: #eee;
+ color: #000
+}
+
+.layui-layedit-tool .layui-disabled,
+.layui-layedit-tool .layui-disabled:hover {
+ color: #d2d2d2;
+ cursor: not-allowed
+}
+
+.layui-layedit-tool .layedit-tool-mid {
+ width: 1px;
+ height: 18px;
+ margin: 0 10px;
+ background-color: #d2d2d2
+}
+
+.layedit-tool-html {
+ width: 50px !important;
+ font-size: 30px !important
+}
+
+.layedit-tool-b,
+.layedit-tool-code,
+.layedit-tool-help {
+ font-size: 16px !important
+}
+
+.layedit-tool-d,
+.layedit-tool-face,
+.layedit-tool-image,
+.layedit-tool-unlink {
+ font-size: 18px !important
+}
+
+.layedit-tool-image input {
+ position: absolute;
+ font-size: 0;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ opacity: .01;
+ filter: Alpha(opacity=1);
+ cursor: pointer
+}
+
+.layui-layedit-iframe iframe {
+ display: block;
+ width: 100%
+}
+
+#LAY_layedit_code {
+ overflow: hidden
+}
+
+.layui-laypage {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ vertical-align: middle;
+ margin: 10px 0;
+ font-size: 0
+}
+
+.layui-laypage>a:first-child,
+.layui-laypage>a:first-child em {
+ border-radius: 2px 0 0 2px
+}
+
+.layui-laypage>a:last-child,
+.layui-laypage>a:last-child em {
+ border-radius: 0 2px 2px 0
+}
+
+.layui-laypage>:first-child {
+ margin-left: 0 !important
+}
+
+.layui-laypage>:last-child {
+ margin-right: 0 !important
+}
+
+.layui-laypage a,
+.layui-laypage button,
+.layui-laypage input,
+.layui-laypage select,
+.layui-laypage span {
+ border: 1px solid #eee
+}
+
+.layui-laypage a,
+.layui-laypage span {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ vertical-align: middle;
+ padding: 0 15px;
+ height: 28px;
+ line-height: 28px;
+ margin: 0 -1px 5px 0;
+ background-color: #fff;
+ color: #333;
+ font-size: 12px
+}
+
+.layui-laypage a:hover {
+ color: #009688
+}
+
+.layui-laypage em {
+ font-style: normal
+}
+
+.layui-laypage .layui-laypage-spr {
+ color: #999;
+ font-weight: 700
+}
+
+.layui-laypage a {
+ text-decoration: none
+}
+
+.layui-laypage .layui-laypage-curr {
+ position: relative
+}
+
+.layui-laypage .layui-laypage-curr em {
+ position: relative;
+ color: #fff
+}
+
+.layui-laypage .layui-laypage-curr .layui-laypage-em {
+ position: absolute;
+ left: -1px;
+ top: -1px;
+ padding: 1px;
+ width: 100%;
+ height: 100%;
+ background-color: #009688
+}
+
+.layui-laypage-em {
+ border-radius: 2px
+}
+
+.layui-laypage-next em,
+.layui-laypage-prev em {
+ font-family: Sim sun;
+ font-size: 16px
+}
+
+.layui-laypage .layui-laypage-count,
+.layui-laypage .layui-laypage-limits,
+.layui-laypage .layui-laypage-refresh,
+.layui-laypage .layui-laypage-skip {
+ margin-left: 10px;
+ margin-right: 10px;
+ padding: 0;
+ border: none
+}
+
+.layui-laypage .layui-laypage-limits,
+.layui-laypage .layui-laypage-refresh {
+ vertical-align: top
+}
+
+.layui-laypage .layui-laypage-refresh i {
+ font-size: 18px;
+ cursor: pointer
+}
+
+.layui-laypage select {
+ height: 22px;
+ padding: 3px;
+ border-radius: 2px;
+ cursor: pointer
+}
+
+.layui-laypage .layui-laypage-skip {
+ height: 30px;
+ line-height: 30px;
+ color: #999
+}
+
+.layui-laypage button,
+.layui-laypage input {
+ height: 30px;
+ line-height: 30px;
+ border-radius: 2px;
+ vertical-align: top;
+ background-color: #fff;
+ box-sizing: border-box
+}
+
+.layui-laypage input {
+ display: inline-block;
+ width: 40px;
+ margin: 0 10px;
+ padding: 0 3px;
+ text-align: center
+}
+
+.layui-laypage input:focus,
+.layui-laypage select:focus {
+ border-color: #009688 !important
+}
+
+.layui-laypage button {
+ margin-left: 10px;
+ padding: 0 10px;
+ cursor: pointer
+}
+
+.layui-table,
+.layui-table-view {
+ margin: 10px 0
+}
+
+.layui-flow-more {
+ margin: 10px 0;
+ text-align: center;
+ color: #999;
+ font-size: 14px
+}
+
+.layui-flow-more a {
+ height: 32px;
+ line-height: 32px
+}
+
+.layui-flow-more a * {
+ display: inline-block;
+ vertical-align: top
+}
+
+.layui-flow-more a cite {
+ padding: 0 20px;
+ border-radius: 3px;
+ background-color: #eee;
+ color: #333;
+ font-style: normal
+}
+
+.layui-flow-more a cite:hover {
+ opacity: .8
+}
+
+.layui-flow-more a i {
+ font-size: 30px;
+ color: #737383
+}
+
+.layui-table {
+ width: 100%;
+ background-color: #fff;
+ color: #666
+}
+
+.layui-table tr {
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-table th {
+ text-align: left;
+ font-weight: 400
+}
+
+.layui-table tbody tr:hover,
+.layui-table thead tr,
+.layui-table-click,
+.layui-table-header,
+.layui-table-hover,
+.layui-table-mend,
+.layui-table-patch,
+.layui-table-tool,
+.layui-table-total,
+.layui-table-total tr,
+.layui-table[lay-even] tr:nth-child(even) {
+ background-color: #FAFAFA
+}
+
+.layui-table td,
+.layui-table th,
+.layui-table-col-set,
+.layui-table-fixed-r,
+.layui-table-grid-down,
+.layui-table-header,
+.layui-table-page,
+.layui-table-tips-main,
+.layui-table-tool,
+.layui-table-total,
+.layui-table-view,
+.layui-table[lay-skin=line],
+.layui-table[lay-skin=row] {
+ border-width: 1px;
+ border-style: solid;
+ border-color: #eee
+}
+
+.layui-table td,
+.layui-table th {
+ position: relative;
+ padding: 9px 15px;
+ min-height: 20px;
+ line-height: 20px;
+ font-size: 14px
+}
+
+.layui-table[lay-skin=line] td,
+.layui-table[lay-skin=line] th {
+ border-width: 0 0 1px
+}
+
+.layui-table[lay-skin=row] td,
+.layui-table[lay-skin=row] th {
+ border-width: 0 1px 0 0
+}
+
+.layui-table[lay-skin=nob] td,
+.layui-table[lay-skin=nob] th {
+ border: none
+}
+
+.layui-table img {
+ max-width: 100px
+}
+
+.layui-table[lay-size=lg] td,
+.layui-table[lay-size=lg] th {
+ padding: 15px 30px
+}
+
+.layui-table-view .layui-table[lay-size=lg] .layui-table-cell {
+ height: 40px;
+ line-height: 40px
+}
+
+.layui-table[lay-size=sm] td,
+.layui-table[lay-size=sm] th {
+ font-size: 12px;
+ padding: 5px 10px
+}
+
+.layui-table-view .layui-table[lay-size=sm] .layui-table-cell {
+ height: 20px;
+ line-height: 20px
+}
+
+.layui-table[lay-data] {
+ display: none
+}
+
+.layui-table-box {
+ position: relative;
+ overflow: hidden
+}
+
+.layui-table-view .layui-table {
+ position: relative;
+ width: auto;
+ margin: 0;
+ border-collapse: separate
+}
+
+.layui-table-view .layui-table[lay-skin=line] {
+ border-width: 0 1px 0 0
+}
+
+.layui-table-view .layui-table[lay-skin=row] {
+ border-width: 0 0 1px
+}
+
+.layui-table-view .layui-table td,
+.layui-table-view .layui-table th {
+ padding: 5px 0;
+ border-top: none;
+ border-left: none
+}
+
+.layui-table-view .layui-table th.layui-unselect .layui-table-cell span {
+ cursor: pointer
+}
+
+.layui-table-view .layui-table td {
+ cursor: default
+}
+
+.layui-table-view .layui-table td[data-edit=text] {
+ cursor: text
+}
+
+.layui-table-view .layui-form-checkbox[lay-skin=primary] i {
+ width: 18px;
+ height: 18px
+}
+
+.layui-table-view .layui-form-radio {
+ line-height: 0;
+ padding: 0
+}
+
+.layui-table-view .layui-form-radio>i {
+ margin: 0;
+ font-size: 20px
+}
+
+.layui-table-init {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ text-align: center;
+ z-index: 110
+}
+
+.layui-table-init .layui-icon {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ margin: -15px 0 0 -15px;
+ font-size: 30px;
+ color: #c2c2c2
+}
+
+.layui-table-header {
+ border-width: 0 0 1px;
+ overflow: hidden
+}
+
+.layui-table-header .layui-table {
+ margin-bottom: -1px
+}
+
+.layui-table-tool .layui-inline[lay-event] {
+ position: relative;
+ width: 26px;
+ height: 26px;
+ padding: 5px;
+ line-height: 16px;
+ margin-right: 10px;
+ text-align: center;
+ color: #333;
+ border: 1px solid #ccc;
+ cursor: pointer;
+ -webkit-transition: .5s all;
+ transition: .5s all
+}
+
+.layui-table-tool .layui-inline[lay-event]:hover {
+ border: 1px solid #999
+}
+
+.layui-table-tool-temp {
+ padding-right: 120px
+}
+
+.layui-table-tool-self {
+ position: absolute;
+ right: 17px;
+ top: 10px
+}
+
+.layui-table-tool .layui-table-tool-self .layui-inline[lay-event] {
+ margin: 0 0 0 10px
+}
+
+.layui-table-tool-panel {
+ position: absolute;
+ top: 29px;
+ left: -1px;
+ padding: 5px 0;
+ min-width: 150px;
+ min-height: 40px;
+ border: 1px solid #d2d2d2;
+ text-align: left;
+ overflow-y: auto;
+ background-color: #fff;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, .12)
+}
+
+.layui-table-cell,
+.layui-table-tool-panel li {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.layui-table-tool-panel li {
+ padding: 0 10px;
+ line-height: 30px;
+ -webkit-transition: .5s all;
+ transition: .5s all
+}
+
+.layui-iconpicker-list li,
+.layui-keyboard-list li,
+.layui-menu li,
+.layui-menu-body-title a:hover,
+.layui-menu-body-title>.layui-icon:hover,
+.layui-nav .layui-nav-item a {
+ transition: all .3s
+}
+
+.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] {
+ width: 100%;
+ padding-left: 28px
+}
+
+.layui-table-tool-panel li:hover {
+ background-color: #F6F6F6
+}
+
+.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i {
+ position: absolute;
+ left: 0;
+ top: 0
+}
+
+.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span {
+ padding: 0
+}
+
+.layui-table-tool .layui-table-tool-self .layui-table-tool-panel {
+ left: auto;
+ right: -1px
+}
+
+.layui-table-col-set {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 20px;
+ height: 100%;
+ border-width: 0 0 0 1px;
+ background-color: #fff
+}
+
+.layui-table-sort {
+ width: 10px;
+ height: 20px;
+ margin-left: 5px;
+ cursor: pointer !important
+}
+
+.layui-table-sort .layui-edge {
+ position: absolute;
+ left: 5px;
+ border-width: 5px
+}
+
+.layui-table-sort .layui-table-sort-asc {
+ top: 3px;
+ border-top: none;
+ border-bottom-style: solid;
+ border-bottom-color: #b2b2b2
+}
+
+.layui-table-sort .layui-table-sort-asc:hover {
+ border-bottom-color: #666
+}
+
+.layui-table-sort .layui-table-sort-desc {
+ bottom: 5px;
+ border-bottom: none;
+ border-top-style: solid;
+ border-top-color: #b2b2b2
+}
+
+.layui-table-sort .layui-table-sort-desc:hover {
+ border-top-color: #666
+}
+
+.layui-table-sort[lay-sort=asc] .layui-table-sort-asc {
+ border-bottom-color: #000
+}
+
+.layui-table-sort[lay-sort=desc] .layui-table-sort-desc {
+ border-top-color: #000
+}
+
+.layui-table-cell {
+ height: 28px;
+ line-height: 28px;
+ padding: 0 15px;
+ position: relative;
+ box-sizing: border-box
+}
+
+.layui-table-cell .layui-form-checkbox[lay-skin=primary] {
+ top: -1px;
+ padding: 0
+}
+
+.layui-table-cell .layui-table-link {
+ color: #01AAED
+}
+
+.laytable-cell-checkbox,
+.laytable-cell-numbers,
+.laytable-cell-radio,
+.laytable-cell-space {
+ padding: 0;
+ text-align: center;
+ -webkit-box-pack: center
+}
+
+.layui-table-body {
+ position: relative;
+ overflow: auto;
+ margin-right: -1px;
+ margin-bottom: -1px
+}
+
+.layui-table-body .layui-none {
+ line-height: 26px;
+ padding: 30px 15px;
+ text-align: center;
+ color: #999
+}
+
+.layui-table-fixed {
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 101
+}
+
+.layui-table-fixed .layui-table-body {
+ overflow: hidden
+}
+
+.layui-table-fixed-l {
+ box-shadow: 1px 0 8px rgba(0, 0, 0, .08)
+}
+
+.layui-table-fixed-r {
+ left: auto;
+ right: -1px;
+ border-width: 0 0 0 1px;
+ box-shadow: -1px 0 8px rgba(0, 0, 0, .08)
+}
+
+.layui-table-fixed-r .layui-table-header {
+ position: relative;
+ overflow: visible
+}
+
+.layui-table-mend {
+ position: absolute;
+ right: -49px;
+ top: 0;
+ height: 100%;
+ width: 50px
+}
+
+.layui-table-tool {
+ position: relative;
+ z-index: 890;
+ width: 100%;
+ min-height: 50px;
+ line-height: 30px;
+ padding: 10px 15px;
+ border-width: 0 0 1px;
+ box-shadow: 0 2px 8px rgb(0 0 0 / 8%)
+}
+
+.layui-table-tool .layui-btn-container {
+ margin-bottom: -10px
+}
+
+.layui-table-page,
+.layui-table-total {
+ border-width: 1px 0 0;
+ margin-bottom: -1px;
+ overflow: hidden
+}
+
+.layui-table-page {
+ position: relative;
+ width: 100%;
+ padding: 7px 7px 0;
+ height: 41px;
+ font-size: 12px;
+ white-space: nowrap
+}
+
+.layui-table-page>div {
+ height: 26px
+}
+
+.layui-table-page .layui-laypage {
+ margin: 0
+}
+
+.layui-table-page .layui-laypage a,
+.layui-table-page .layui-laypage span {
+ height: 26px;
+ line-height: 26px;
+ margin-bottom: 10px;
+ border: none;
+ background: 0 0
+}
+
+.layui-table-page .layui-laypage a,
+.layui-table-page .layui-laypage span.layui-laypage-curr {
+ padding: 0 12px
+}
+
+.layui-table-page .layui-laypage span {
+ margin-left: 0;
+ padding: 0
+}
+
+.layui-table-page .layui-laypage .layui-laypage-prev {
+ margin-left: -7px !important
+}
+
+.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em {
+ left: 0;
+ top: 0;
+ padding: 0
+}
+
+.layui-table-page .layui-laypage button,
+.layui-table-page .layui-laypage input {
+ height: 26px;
+ line-height: 26px
+}
+
+.layui-table-page .layui-laypage input {
+ width: 40px
+}
+
+.layui-table-page .layui-laypage button {
+ padding: 0 10px
+}
+
+.layui-table-page select {
+ height: 18px
+}
+
+.layui-table-pagebar {
+ float: right;
+ line-height: 26px
+}
+
+.layui-table-view select[lay-ignore] {
+ display: inline-block
+}
+
+.layui-table-patch .layui-table-cell {
+ padding: 0;
+ width: 30px
+}
+
+.layui-table-edit {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ padding: 0 14px 1px;
+ border-radius: 0;
+ box-shadow: 1px 1px 20px rgba(0, 0, 0, .15)
+}
+
+.layui-table-edit:focus {
+ border-color: #5FB878 !important
+}
+
+select.layui-table-edit {
+ padding: 0 0 0 10px;
+ border-color: #d2d2d2
+}
+
+.layui-table-view .layui-form-checkbox,
+.layui-table-view .layui-form-radio,
+.layui-table-view .layui-form-switch {
+ top: 0;
+ margin: 0;
+ box-sizing: content-box
+}
+
+.layui-colorpicker-alpha-slider,
+.layui-colorpicker-side-slider,
+.layui-menu,
+.layui-menu *,
+.layui-nav {
+ box-sizing: border-box
+}
+
+.layui-table-view .layui-form-checkbox {
+ top: -1px;
+ height: 26px;
+ line-height: 26px
+}
+
+.layui-table-view .layui-form-checkbox i {
+ height: 26px
+}
+
+.layui-table-grid .layui-table-cell {
+ overflow: visible
+}
+
+.layui-table-grid-down {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 26px;
+ height: 100%;
+ padding: 5px 0;
+ border-width: 0 0 0 1px;
+ text-align: center;
+ background-color: #fff;
+ color: #999;
+ cursor: pointer
+}
+
+.layui-table-grid-down .layui-icon {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin: -8px 0 0 -8px
+}
+
+.layui-table-grid-down:hover {
+ background-color: #fbfbfb
+}
+
+body .layui-table-tips .layui-layer-content {
+ background: 0 0;
+ padding: 0;
+ box-shadow: 0 1px 6px rgba(0, 0, 0, .12)
+}
+
+.layui-table-tips-main {
+ margin: -44px 0 0 -1px;
+ max-height: 150px;
+ padding: 8px 15px;
+ font-size: 14px;
+ overflow-y: scroll;
+ background-color: #fff;
+ color: #666
+}
+
+.layui-table-tips-c {
+ position: absolute;
+ right: -3px;
+ top: -13px;
+ width: 20px;
+ height: 20px;
+ padding: 3px;
+ cursor: pointer;
+ background-color: #666;
+ border-radius: 50%;
+ color: #fff
+}
+
+.layui-table-tips-c:hover {
+ background-color: #777
+}
+
+.layui-table-tips-c:before {
+ position: relative;
+ right: -2px
+}
+
+.layui-upload-file {
+ display: none !important;
+ opacity: .01;
+ filter: Alpha(opacity=1)
+}
+
+.layui-upload-drag,
+.layui-upload-form,
+.layui-upload-wrap {
+ display: inline-block
+}
+
+.layui-upload-list {
+ margin: 10px 0
+}
+
+.layui-upload-choose {
+ max-width: 200px;
+ padding: 0 10px;
+ color: #999;
+ font-size: 14px;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap
+}
+
+.layui-upload-drag {
+ position: relative;
+ padding: 30px;
+ border: 1px dashed #e2e2e2;
+ background-color: #fff;
+ text-align: center;
+ cursor: pointer;
+ color: #999
+}
+
+.layui-upload-drag .layui-icon {
+ font-size: 50px;
+ color: #009688
+}
+
+.layui-upload-drag[lay-over] {
+ border-color: #009688
+}
+
+.layui-upload-iframe {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border: 0;
+ visibility: hidden
+}
+
+.layui-upload-wrap {
+ position: relative;
+ vertical-align: middle
+}
+
+.layui-upload-wrap .layui-upload-file {
+ display: block !important;
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 10;
+ font-size: 100px;
+ width: 100%;
+ height: 100%;
+ opacity: .01;
+ filter: Alpha(opacity=1);
+ cursor: pointer
+}
+
+.layui-btn-container .layui-upload-choose {
+ padding-left: 0
+}
+
+.layui-menu {
+ position: relative;
+ margin: 5px 0;
+ background-color: #fff
+}
+
+.layui-menu li,
+.layui-menu-body-title a {
+ padding: 5px 15px
+}
+
+.layui-menu li {
+ position: relative;
+ margin: 1px 0;
+ width: calc(100% + 1px);
+ line-height: 26px;
+ color: rgba(0, 0, 0, .8);
+ font-size: 14px;
+ white-space: nowrap;
+ cursor: pointer
+}
+
+.layui-menu li:hover {
+ background-color: #F6F6F6
+}
+
+.layui-menu-item-parent:hover>.layui-menu-body-panel {
+ display: block;
+ animation-name: layui-fadein;
+ animation-duration: .3s;
+ animation-fill-mode: both;
+ animation-delay: .2s
+}
+
+.layui-menu-item-group .layui-menu-body-title,
+.layui-menu-item-parent .layui-menu-body-title {
+ padding-right: 25px
+}
+
+.layui-menu .layui-menu-item-divider:hover,
+.layui-menu .layui-menu-item-group:hover,
+.layui-menu .layui-menu-item-none:hover {
+ background: 0 0;
+ cursor: default
+}
+
+.layui-menu .layui-menu-item-group>ul {
+ margin: 5px 0 -5px
+}
+
+.layui-menu .layui-menu-item-group>.layui-menu-body-title {
+ color: rgba(0, 0, 0, .35);
+ user-select: none
+}
+
+.layui-menu .layui-menu-item-none {
+ color: rgba(0, 0, 0, .35);
+ cursor: default;
+ text-align: center
+}
+
+.layui-menu .layui-menu-item-divider {
+ margin: 5px 0;
+ padding: 0;
+ height: 0;
+ line-height: 0;
+ border-bottom: 1px solid #eee;
+ overflow: hidden
+}
+
+.layui-menu .layui-menu-item-down:hover,
+.layui-menu .layui-menu-item-up:hover {
+ cursor: pointer
+}
+
+.layui-menu .layui-menu-item-up>.layui-menu-body-title {
+ color: rgba(0, 0, 0, .8)
+}
+
+.layui-menu .layui-menu-item-up>ul {
+ visibility: hidden;
+ height: 0;
+ overflow: hidden
+}
+
+.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,
+.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon {
+ color: rgba(0, 0, 0, 1)
+}
+
+.layui-menu .layui-menu-item-down>ul {
+ visibility: visible;
+ height: auto
+}
+
+.layui-breadcrumb,
+.layui-tree-btnGroup {
+ visibility: hidden
+}
+
+.layui-menu .layui-menu-item-checked,
+.layui-menu .layui-menu-item-checked2 {
+ background-color: #F6F6F6 !important;
+ color: #5FB878
+}
+
+.layui-menu .layui-menu-item-checked a,
+.layui-menu .layui-menu-item-checked2 a {
+ color: #5FB878
+}
+
+.layui-menu .layui-menu-item-checked:after {
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ border-right: 3px solid #5FB878;
+ content: ""
+}
+
+.layui-menu-body-title {
+ position: relative;
+ overflow: hidden;
+ text-overflow: ellipsis
+}
+
+.layui-menu-body-title a {
+ display: block;
+ margin: -5px -15px;
+ color: rgba(0, 0, 0, .8)
+}
+
+.layui-menu-body-title>.layui-icon {
+ position: absolute;
+ right: 0;
+ top: 0;
+ font-size: 14px
+}
+
+.layui-menu-body-title>.layui-icon-right {
+ right: -1px
+}
+
+.layui-menu-body-panel {
+ display: none;
+ position: absolute;
+ top: -7px;
+ left: 100%;
+ z-index: 1000;
+ margin-left: 13px;
+ padding: 5px 0
+}
+
+.layui-menu-body-panel:before {
+ content: "";
+ position: absolute;
+ width: 20px;
+ left: -16px;
+ top: 0;
+ bottom: 0
+}
+
+.layui-menu-body-panel-left {
+ left: auto;
+ right: 100%;
+ margin: 0 13px
+}
+
+.layui-menu-body-panel-left:before {
+ left: auto;
+ right: -16px
+}
+
+.layui-menu-lg li {
+ line-height: 32px
+}
+
+.layui-menu-lg .layui-menu-body-title a:hover,
+.layui-menu-lg li:hover {
+ background: 0 0;
+ color: #5FB878
+}
+
+.layui-menu-lg li .layui-menu-body-panel {
+ margin-left: 14px
+}
+
+.layui-menu-lg li .layui-menu-body-panel-left {
+ margin: 0 15px
+}
+
+.layui-dropdown {
+ position: absolute;
+ left: -999999px;
+ top: -999999px;
+ z-index: 66666666;
+ margin: 5px 0;
+ min-width: 100px
+}
+
+.layui-dropdown:before {
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 6px;
+ left: 0;
+ top: -6px
+}
+
+.layui-dropdown .layui-none {
+ line-height: 26px;
+ color: #999;
+ text-align: center
+}
+
+.layui-iconpicker {
+ position: relative;
+ height: 38px;
+ line-height: 38px;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px;
+ cursor: pointer
+}
+
+.layui-iconpicker .layui-inline {
+ height: 36px;
+ line-height: 36px;
+ vertical-align: top
+}
+
+.layui-iconpicker-title {
+ padding-left: 5px
+}
+
+.layui-iconpicker-main {
+ padding: 0 10px
+}
+
+.layui-iconpicker-main .layui-icon {
+ font-size: 20px
+}
+
+.layui-iconpicker-main .layui-inline {
+ vertical-align: top
+}
+
+.layui-iconpicker-split .layui-iconpicker-main {
+ padding: 0 15px;
+ border-right-width: 1px;
+ border-right-style: solid
+}
+
+.layui-iconpicker-suffix {
+ position: relative;
+ width: 35px;
+ text-align: center
+}
+
+.layui-iconpicker-suffix .layui-icon {
+ font-size: 14px;
+ color: rgba(0, 0, 0, .5);
+ transition: all .3s
+}
+
+.layui-iconpicker-down .layui-iconpicker-suffix .layui-icon-down {
+ transform: rotate(180deg)
+}
+
+.layui-iconpicker-none {
+ color: rgba(0, 0, 0, .5)
+}
+
+.layui-iconpicker-search {
+ padding: 10px;
+ box-shadow: 0 2px 8px #f0f1f2;
+ border-bottom: 1px solid whitesmoke;
+}
+
+.layui-iconpicker-list {
+ padding: 10px 10px 5px
+}
+
+.layui-iconpicker-list ul {
+ width: 262px;
+ margin-right: -6px
+}
+
+.layui-iconpicker-list li {
+ display: inline-block;
+ vertical-align: top;
+ width: 60px;
+ margin: 0 5px 5px 0;
+ padding: 5px;
+ border: 1px solid #eee;
+ border-radius: 2px;
+ cursor: pointer;
+ text-align: center
+}
+
+.layui-iconpicker-list li:hover {
+ background-color: #FAFAFA;
+ color: rgba(0, 0, 0, .5)
+}
+
+.layui-iconpicker-list li.layui-this {
+ border-color: #5FB878;
+ color: #5FB878
+}
+
+.layui-iconpicker-list li .layui-icon {
+ font-size: 20px
+}
+
+.layui-iconpicker-list li .layui-elip {
+ margin-top: 2px;
+ line-height: 20px;
+ font-size: 12px
+}
+
+.layui-iconpicker-list .layui-none {
+ margin: 30px 0 35px
+}
+
+.layui-iconpicker-scroll .layui-iconpicker-list {
+ max-height: 194px;
+ overflow: auto
+}
+
+.layui-iconpicker-page {
+ position: relative;
+ padding: 10px 10px 5px;
+ border-top: 1px solid #eee;
+ text-align: right
+}
+
+.layui-iconpicker-page .layui-laypage {
+ margin: 0
+}
+
+.layui-iconpicker-page .layui-laypage a,
+.layui-iconpicker-page .layui-laypage span {
+ padding: 0 10px;
+ color: #666
+}
+
+.layui-iconpicker-page .layui-laypage-count {
+ position: absolute;
+ left: 10px
+}
+
+.layui-iconpicker-page .layui-laypage-curr .layui-laypage-em {
+ background: 0 0
+}
+
+.layui-iconpicker-page .layui-laypage-curr em {
+ color: #666;
+ color: rgba(0, 0, 0, .6)
+}
+
+.layui-iconpicker-page .layui-laypage-first,
+.layui-iconpicker-page .layui-laypage-last,
+.layui-iconpicker-page .layui-laypage-spr {
+ display: none
+}
+
+.layui-keyboard-header {
+ height: 40px;
+ line-height: 40px;
+ padding: 0 60px;
+ text-align: center;
+ background-color: #fff;
+ box-shadow: 0 2px 8px #f0f1f2;
+ border-bottom: 1px solid whitesmoke;
+}
+
+.layui-keyboard-list {
+ padding: 10px 10px 5px;
+ text-align: center
+}
+
+.layui-keyboard-header button {
+ position: absolute;
+ right: 10px;
+ top: 10px;
+ height: 20px;
+ line-height: 20px;
+ border: none;
+ color: #009688
+}
+
+.layui-keyboard-header button:first-child {
+ left: 10px;
+ right: auto;
+ color: #999
+}
+
+.layui-keyboard-list ul {
+ margin-right: -5px
+}
+
+.layui-keyboard-list li {
+ display: inline-block;
+ vertical-align: top;
+ margin: 0 5px 5px 0;
+ padding: 5px;
+ width: 30px;
+ height: 36px;
+ line-height: 26px;
+ border: 1px solid #eee;
+ border-radius: 2px;
+ cursor: pointer;
+ text-align: center;
+ background-color: #fff
+}
+
+.layui-keyboard-list li:hover {
+ background-color: #FAFAFA;
+ color: rgba(0, 0, 0, .5)
+}
+
+.layui-keyboard-list li.layui-this {
+ border-color: #5FB878;
+ color: #5FB878
+}
+
+.layui-nav {
+ position: relative;
+ padding: 0 20px;
+ background-color: #393D49;
+ color: #fff;
+ border-radius: 2px;
+ font-size: 0
+}
+
+.layui-nav * {
+ font-size: 14px
+}
+
+.layui-nav .layui-nav-item {
+ position: relative;
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ vertical-align: middle;
+ line-height: 60px
+}
+
+.layui-nav .layui-nav-item a {
+ display: block;
+ padding: 0 20px;
+ color: #fff;
+ color: rgba(255, 255, 255, .7);
+ -webkit-transition: all .3s
+}
+
+.layui-nav .layui-this:after,
+.layui-nav-bar {
+ content: "";
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 0;
+ height: 5px;
+ background-color: #5FB878;
+ transition: all .2s;
+ -webkit-transition: all .2s;
+ pointer-events: none
+}
+
+.layui-nav-bar {
+ z-index: 1000
+}
+
+.layui-nav[lay-bar=disabled] .layui-nav-bar {
+ display: none
+}
+
+.layui-nav .layui-nav-item a:hover,
+.layui-nav .layui-this a {
+ color: #fff
+}
+
+.layui-nav .layui-this:after {
+ top: auto;
+ bottom: 0;
+ width: 100%
+}
+
+.layui-nav-img {
+ width: 30px;
+ height: 30px;
+ margin-right: 5px;
+ border-radius: 50%
+}
+
+.layui-nav .layui-nav-more {
+ position: absolute;
+ top: 0;
+ right: 3px;
+ left: auto !important;
+ margin-top: 0;
+ font-size: 12.5px !important;
+ cursor: pointer;
+ transition: all .2s;
+ -webkit-transition: all .2s
+}
+
+.layui-nav .layui-nav-mored,
+.layui-nav-itemed>a .layui-nav-more {
+ transform: rotate(180deg)
+}
+
+.layui-nav-child {
+ display: none;
+ position: absolute;
+ left: 0;
+ top: 65px;
+ min-width: 100%;
+ line-height: 36px;
+ padding: 5px 0;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, .12);
+ border: 1px solid #eee;
+ background-color: #fff;
+ z-index: 100;
+ border-radius: 2px;
+ white-space: nowrap
+}
+
+.layui-nav .layui-nav-child a {
+ color: #666;
+ color: rgba(0, 0, 0, .8)
+}
+
+.layui-nav .layui-nav-child a:hover {
+ background-color: #F6F6F6;
+ color: rgba(0, 0, 0, .8)
+}
+
+.layui-nav-child dd {
+ margin: 1px 0;
+ position: relative
+}
+
+.layui-nav-child dd.layui-this {
+ background-color: #F6F6F6;
+ color: #000
+}
+
+.layui-nav-child dd.layui-this:after {
+ display: none
+}
+
+.layui-nav-child-r {
+ left: auto;
+ right: 0
+}
+
+.layui-nav-child-c {
+ text-align: center
+}
+
+.layui-nav-tree {
+ width: 200px;
+ padding: 0
+}
+
+.layui-nav-tree .layui-nav-item {
+ display: block;
+ width: 100%;
+ line-height: 40px
+}
+
+.layui-nav-tree .layui-nav-item a {
+ position: relative;
+ height: 40px;
+ line-height: 40px;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap
+}
+
+.layui-nav-tree .layui-nav-item>a {
+ padding-top: 5px;
+ padding-bottom: 5px
+}
+
+.layui-nav-tree .layui-nav-more {
+ right: 15px
+}
+
+.layui-nav-tree .layui-nav-item>a .layui-nav-more {
+ padding: 5px 0
+}
+
+.layui-nav-tree .layui-nav-bar {
+ width: 5px;
+ height: 0;
+ background-color: #009688
+}
+
+.layui-side .layui-nav-tree .layui-nav-bar {
+ width: 2px
+}
+
+.layui-nav-tree .layui-nav-child dd.layui-this,
+.layui-nav-tree .layui-nav-child dd.layui-this a,
+.layui-nav-tree .layui-this,
+.layui-nav-tree .layui-this>a,
+.layui-nav-tree .layui-this>a:hover {
+ background-color: #009688;
+ color: #fff
+}
+
+.layui-nav-tree .layui-this:after {
+ display: none
+}
+
+.layui-nav-itemed>a,
+.layui-nav-tree .layui-nav-title a,
+.layui-nav-tree .layui-nav-title a:hover {
+ color: #fff !important
+}
+
+.layui-nav-tree .layui-nav-child {
+ position: relative;
+ z-index: 0;
+ top: 0;
+ border: none;
+ box-shadow: none
+}
+
+.layui-nav-tree .layui-nav-child dd {
+ margin: 0
+}
+
+.layui-nav-tree .layui-nav-child a {
+ color: #fff;
+ color: rgba(255, 255, 255, .7)
+}
+
+.layui-nav-tree .layui-nav-child,
+.layui-nav-tree .layui-nav-child a:hover {
+ background: 0 0;
+ color: #fff
+}
+
+.layui-nav-itemed>.layui-nav-child {
+ display: block;
+ background-color: rgba(0, 0, 0, .3) !important
+}
+
+.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child {
+ display: block
+}
+
+.layui-nav-tree.layui-bg-gray a,
+.layui-nav.layui-bg-gray .layui-nav-item a {
+ color: #666 !important;
+ color: rgba(0, 0, 0, .8) !important
+}
+
+.layui-nav-tree.layui-bg-gray .layui-nav-itemed>.layui-nav-child {
+ background: 0 0 !important
+}
+
+.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,
+.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a {
+ background: 0 0 !important;
+ color: #5FB878 !important;
+ font-weight: 700
+}
+
+.layui-nav.layui-bg-gray .layui-nav-bar {
+ background-color: #5FB878
+}
+
+.layui-nav-side {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ overflow-x: hidden;
+ z-index: 999
+}
+
+.layui-breadcrumb {
+ font-size: 0
+}
+
+.layui-breadcrumb>* {
+ font-size: 14px
+}
+
+.layui-breadcrumb a:hover {
+ color: #5FB878 !important
+}
+
+.layui-breadcrumb a cite {
+ color: #999;
+ font-style: normal
+}
+
+.layui-breadcrumb span[lay-separator] {
+ margin: 0 10px;
+ color: #ccc
+}
+
+.layui-tab {
+ margin: 10px 0;
+ text-align: left !important
+}
+
+.layui-tab[overflow]>.layui-tab-title {
+ overflow: hidden
+}
+
+.layui-tab-title {
+ position: relative;
+ left: 0;
+ height: 40px;
+ white-space: nowrap;
+ font-size: 0;
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+ transition: all .2s;
+ -webkit-transition: all .2s
+}
+
+.layui-tab-title li {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ vertical-align: middle;
+ font-size: 14px;
+ transition: all .2s;
+ -webkit-transition: all .2s;
+ position: relative;
+ line-height: 40px;
+ min-width: 65px;
+ padding: 0 15px;
+ text-align: center;
+ cursor: pointer
+}
+
+.layui-tab-title li a {
+ display: block;
+ padding: 0 15px;
+ margin: 0 -15px
+}
+
+.layui-tab-title .layui-this {
+ color: #000
+}
+
+.layui-tab-title .layui-this:after {
+ position: absolute;
+ left: 0;
+ top: 0;
+ content: "";
+ width: 100%;
+ height: 41px;
+ border-width: 1px;
+ border-style: solid;
+ border-bottom-color: #fff;
+ border-radius: 2px 2px 0 0;
+ box-sizing: border-box;
+ pointer-events: none
+}
+
+.layui-tab-bar {
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 10;
+ width: 30px;
+ height: 39px;
+ line-height: 39px;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px;
+ text-align: center;
+ background-color: #fff;
+ cursor: pointer
+}
+
+.layui-tab-bar .layui-icon {
+ position: relative;
+ display: inline-block;
+ top: 3px;
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-tab-item {
+ display: none
+}
+
+.layui-tab-more {
+ padding-right: 30px;
+ height: auto !important;
+ white-space: normal !important
+}
+
+.layui-tab-more li.layui-this:after {
+ border-bottom-color: #eee;
+ border-radius: 2px
+}
+
+.layui-tab-more .layui-tab-bar .layui-icon {
+ top: -2px;
+ top: 3px\9;
+ -webkit-transform: rotate(180deg);
+ transform: rotate(180deg)
+}
+
+:root .layui-tab-more .layui-tab-bar .layui-icon {
+ top: -2px\0/IE9
+}
+
+.layui-tab-content {
+ padding: 15px 0
+}
+
+.layui-tab-title li .layui-tab-close {
+ position: relative;
+ display: inline-block;
+ width: 18px;
+ height: 18px;
+ line-height: 20px;
+ margin-left: 8px;
+ top: 1px;
+ text-align: center;
+ font-size: 14px;
+ color: #c2c2c2;
+ transition: all .2s;
+ -webkit-transition: all .2s
+}
+
+.layui-tab-title li .layui-tab-close:hover {
+ border-radius: 2px;
+ background-color: #FF5722;
+ color: #fff
+}
+
+.layui-tab-brief>.layui-tab-title .layui-this {
+ color: #009688
+}
+
+.layui-tab-brief>.layui-tab-more li.layui-this:after,
+.layui-tab-brief>.layui-tab-title .layui-this:after {
+ border: none;
+ border-radius: 0;
+ border-bottom: 2px solid #5FB878
+}
+
+.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after {
+ top: -1px
+}
+
+.layui-tab-card {
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px;
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .1)
+}
+
+.layui-tab-card>.layui-tab-title {
+ background-color: #FAFAFA
+}
+
+.layui-tab-card>.layui-tab-title li {
+ margin-right: -1px;
+ margin-left: -1px
+}
+
+.layui-tab-card>.layui-tab-title .layui-this {
+ background-color: #fff
+}
+
+.layui-tab-card>.layui-tab-title .layui-this:after {
+ border-top: none;
+ border-width: 1px;
+ border-bottom-color: #fff
+}
+
+.layui-tab-card>.layui-tab-title .layui-tab-bar {
+ height: 40px;
+ line-height: 40px;
+ border-radius: 0;
+ border-top: none;
+ border-right: none
+}
+
+.layui-tab-card>.layui-tab-more .layui-this {
+ background: 0 0;
+ color: #5FB878
+}
+
+.layui-tab-card>.layui-tab-more .layui-this:after {
+ border: none
+}
+
+.layui-timeline {
+ padding-left: 5px
+}
+
+.layui-timeline-item {
+ position: relative;
+ padding-bottom: 20px
+}
+
+.layui-timeline-axis {
+ position: absolute;
+ left: -5px;
+ top: 0;
+ z-index: 10;
+ width: 20px;
+ height: 20px;
+ line-height: 20px;
+ background-color: #fff;
+ color: #5FB878;
+ border-radius: 50%;
+ text-align: center;
+ cursor: pointer
+}
+
+.layui-timeline-axis:hover {
+ color: #FF5722
+}
+
+.layui-timeline-item:before {
+ content: "";
+ position: absolute;
+ left: 5px;
+ top: 0;
+ z-index: 0;
+ width: 1px;
+ height: 100%
+}
+
+.layui-timeline-item:first-child:before {
+ display: block
+}
+
+.layui-timeline-item:last-child:before {
+ display: none
+}
+
+.layui-timeline-content {
+ padding-left: 25px
+}
+
+.layui-timeline-title {
+ position: relative;
+ margin-bottom: 10px;
+ line-height: 22px
+}
+
+.layui-badge,
+.layui-badge-dot,
+.layui-badge-rim {
+ position: relative;
+ display: inline-block;
+ padding: 0 6px;
+ font-size: 12px;
+ text-align: center;
+ background-color: #FF5722;
+ color: #fff;
+ border-radius: 2px
+}
+
+.layui-badge {
+ height: 18px;
+ line-height: 18px
+}
+
+.layui-badge-dot {
+ width: 8px;
+ height: 8px;
+ padding: 0;
+ border-radius: 50%
+}
+
+.layui-badge-rim {
+ height: 18px;
+ line-height: 18px;
+ border-width: 1px;
+ border-style: solid;
+ background-color: #fff;
+ color: #666
+}
+
+.layui-btn .layui-badge,
+.layui-btn .layui-badge-dot {
+ margin-left: 5px
+}
+
+.layui-nav .layui-badge,
+.layui-nav .layui-badge-dot {
+ position: absolute;
+ top: 50%;
+ margin: -5px 6px 0
+}
+
+.layui-nav .layui-badge {
+ margin-top: -10px
+}
+
+.layui-tab-title .layui-badge,
+.layui-tab-title .layui-badge-dot {
+ left: 5px;
+ top: -2px
+}
+
+.layui-carousel {
+ position: relative;
+ left: 0;
+ top: 0;
+ background-color: #f8f8f8
+}
+
+.layui-carousel>[carousel-item] {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ overflow: hidden
+}
+
+.layui-carousel>[carousel-item]:before {
+ position: absolute;
+ content: '\e63d';
+ left: 50%;
+ top: 50%;
+ width: 100px;
+ line-height: 20px;
+ margin: -10px 0 0 -50px;
+ text-align: center;
+ color: #c2c2c2;
+ font-family: layui-icon !important;
+ font-size: 30px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+.layui-carousel>[carousel-item]>* {
+ display: none;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: #f8f8f8;
+ transition-duration: .3s;
+ -webkit-transition-duration: .3s
+}
+
+.layui-carousel-updown>* {
+ -webkit-transition: .3s ease-in-out up;
+ transition: .3s ease-in-out up
+}
+
+.layui-carousel-arrow {
+ display: none\9;
+ opacity: 0;
+ position: absolute;
+ left: 10px;
+ top: 50%;
+ margin-top: -18px;
+ width: 36px;
+ height: 36px;
+ line-height: 36px;
+ text-align: center;
+ font-size: 20px;
+ border: 0;
+ border-radius: 50%;
+ background-color: rgba(0, 0, 0, .2);
+ color: #fff;
+ -webkit-transition-duration: .3s;
+ transition-duration: .3s;
+ cursor: pointer
+}
+
+.layui-carousel-arrow[lay-type=add] {
+ left: auto !important;
+ right: 10px
+}
+
+.layui-carousel:hover .layui-carousel-arrow[lay-type=add],
+.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add] {
+ right: 20px
+}
+
+.layui-carousel[lay-arrow=always] .layui-carousel-arrow {
+ opacity: 1;
+ left: 20px
+}
+
+.layui-carousel[lay-arrow=none] .layui-carousel-arrow {
+ display: none
+}
+
+.layui-carousel-arrow:hover,
+.layui-carousel-ind ul:hover {
+ background-color: rgba(0, 0, 0, .35)
+}
+
+.layui-carousel:hover .layui-carousel-arrow {
+ display: block\9;
+ opacity: 1;
+ left: 20px
+}
+
+.layui-carousel-ind {
+ position: relative;
+ top: -35px;
+ width: 100%;
+ line-height: 0 !important;
+ text-align: center;
+ font-size: 0
+}
+
+.layui-carousel[lay-indicator=outside] {
+ margin-bottom: 30px
+}
+
+.layui-carousel[lay-indicator=outside] .layui-carousel-ind {
+ top: 10px
+}
+
+.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul {
+ background-color: rgba(0, 0, 0, .5)
+}
+
+.layui-carousel[lay-indicator=none] .layui-carousel-ind {
+ display: none
+}
+
+.layui-carousel-ind ul {
+ display: inline-block;
+ padding: 5px;
+ background-color: rgba(0, 0, 0, .2);
+ border-radius: 10px;
+ -webkit-transition-duration: .3s;
+ transition-duration: .3s
+}
+
+.layui-carousel-ind li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 0 3px;
+ font-size: 14px;
+ background-color: #eee;
+ background-color: rgba(255, 255, 255, .5);
+ border-radius: 50%;
+ cursor: pointer;
+ -webkit-transition-duration: .3s;
+ transition-duration: .3s
+}
+
+.layui-carousel-ind li:hover {
+ background-color: rgba(255, 255, 255, .7)
+}
+
+.layui-carousel-ind li.layui-this {
+ background-color: #fff
+}
+
+.layui-carousel>[carousel-item]>.layui-carousel-next,
+.layui-carousel>[carousel-item]>.layui-carousel-prev,
+.layui-carousel>[carousel-item]>.layui-this {
+ display: block
+}
+
+.layui-carousel>[carousel-item]>.layui-this {
+ left: 0
+}
+
+.layui-carousel>[carousel-item]>.layui-carousel-prev {
+ left: -100%
+}
+
+.layui-carousel>[carousel-item]>.layui-carousel-next {
+ left: 100%
+}
+
+.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,
+.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right {
+ left: 0
+}
+
+.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left {
+ left: -100%
+}
+
+.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right {
+ left: 100%
+}
+
+.layui-carousel[lay-anim=updown] .layui-carousel-arrow {
+ left: 50% !important;
+ top: 20px;
+ margin: 0 0 0 -18px
+}
+
+.layui-carousel[lay-anim=updown]>[carousel-item]>*,
+.layui-carousel[lay-anim=fade]>[carousel-item]>* {
+ left: 0 !important
+}
+
+.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add] {
+ top: auto !important;
+ bottom: 20px
+}
+
+.layui-carousel[lay-anim=updown] .layui-carousel-ind {
+ position: absolute;
+ top: 50%;
+ right: 20px;
+ width: auto;
+ height: auto
+}
+
+.layui-carousel[lay-anim=updown] .layui-carousel-ind ul {
+ padding: 3px 5px
+}
+
+.layui-carousel[lay-anim=updown] .layui-carousel-ind li {
+ display: block;
+ margin: 6px 0
+}
+
+.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this {
+ top: 0
+}
+
+.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev {
+ top: -100%
+}
+
+.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next {
+ top: 100%
+}
+
+.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,
+.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right {
+ top: 0
+}
+
+.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left {
+ top: -100%
+}
+
+.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right {
+ top: 100%
+}
+
+.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,
+.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev {
+ opacity: 0
+}
+
+.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,
+.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right {
+ opacity: 1
+}
+
+.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,
+.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right {
+ opacity: 0
+}
+
+.layui-fixbar {
+ position: fixed;
+ right: 15px;
+ bottom: 15px;
+ z-index: 999999
+}
+
+.layui-fixbar li {
+ width: 50px;
+ height: 50px;
+ line-height: 50px;
+ margin-bottom: 1px;
+ text-align: center;
+ cursor: pointer;
+ font-size: 30px;
+ background-color: #9F9F9F;
+ color: #fff;
+ border-radius: 2px;
+ opacity: .95
+}
+
+.layui-fixbar li:hover {
+ opacity: .85
+}
+
+.layui-fixbar li:active {
+ opacity: 1
+}
+
+.layui-fixbar .layui-fixbar-top {
+ display: none;
+ font-size: 40px
+}
+
+body .layui-util-face {
+ border: none;
+ background: 0 0
+}
+
+body .layui-util-face .layui-layer-content {
+ padding: 0;
+ background-color: #fff;
+ color: #666;
+ box-shadow: none
+}
+
+.layui-util-face .layui-layer-TipsG {
+ display: none
+}
+
+.layui-transfer-active,
+.layui-transfer-box {
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-util-face ul {
+ position: relative;
+ width: 372px;
+ padding: 10px;
+ border: 1px solid #D9D9D9;
+ background-color: #fff;
+ box-shadow: 0 0 20px rgba(0, 0, 0, .2)
+}
+
+.layui-util-face ul li {
+ cursor: pointer;
+ float: left;
+ border: 1px solid #e8e8e8;
+ height: 22px;
+ width: 26px;
+ overflow: hidden;
+ margin: -1px 0 0 -1px;
+ padding: 4px 2px;
+ text-align: center
+}
+
+.layui-util-face ul li:hover {
+ position: relative;
+ z-index: 2;
+ border: 1px solid #eb7350;
+ background: #fff9ec
+}
+
+.layui-code {
+ position: relative;
+ margin: 10px 0;
+ padding: 15px;
+ line-height: 20px;
+ border: 1px solid #eee;
+ border-left-width: 6px;
+ background-color: #FAFAFA;
+ color: #333;
+ font-family: Courier New;
+ font-size: 12px
+}
+
+.layui-transfer-box,
+.layui-transfer-header,
+.layui-transfer-search {
+ border-width: 0;
+ border-style: solid;
+ border-color: #eee
+}
+
+.layui-transfer-box {
+ position: relative;
+ border-width: 1px;
+ width: 200px;
+ height: 360px;
+ border-radius: 2px;
+ background-color: #fff
+}
+
+.layui-transfer-box .layui-form-checkbox {
+ width: 100%;
+ margin: 0 !important
+}
+
+.layui-transfer-header {
+ height: 38px;
+ line-height: 38px;
+ padding: 0 10px;
+ border-bottom-width: 1px
+}
+
+.layui-transfer-search {
+ position: relative;
+ padding: 10px;
+ border-bottom-width: 1px
+}
+
+.layui-transfer-search .layui-input {
+ height: 32px;
+ padding-left: 30px;
+ font-size: 12px
+}
+
+.layui-transfer-search .layui-icon-search {
+ position: absolute;
+ left: 20px;
+ top: 50%;
+ margin-top: -8px;
+ color: #666
+}
+
+.layui-transfer-active {
+ margin: 0 15px
+}
+
+.layui-transfer-active .layui-btn {
+ display: block;
+ margin: 0;
+ padding: 0 15px;
+ background-color: #5FB878;
+ border-color: #5FB878;
+ color: #fff
+}
+
+.layui-transfer-active .layui-btn-disabled {
+ background-color: #FBFBFB;
+ border-color: #eee;
+ color: #d2d2d2
+}
+
+.layui-transfer-active .layui-btn:first-child {
+ margin-bottom: 15px
+}
+
+.layui-transfer-active .layui-btn .layui-icon {
+ margin: 0;
+ font-size: 14px !important
+}
+
+.layui-transfer-data {
+ padding: 5px 0;
+ overflow: auto
+}
+
+.layui-transfer-data li {
+ height: 32px;
+ line-height: 32px;
+ padding: 0 10px
+}
+
+.layui-transfer-data li:hover {
+ background-color: #F6F6F6;
+ transition: .5s all
+}
+
+.layui-transfer-data .layui-none {
+ padding: 15px 10px;
+ text-align: center;
+ color: #999
+}
+
+.layui-rate,
+.layui-rate * {
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-rate {
+ padding: 10px 5px 10px 0;
+ font-size: 0
+}
+
+.layui-rate li i.layui-icon {
+ font-size: 20px;
+ color: #FFB800;
+ margin-right: 5px;
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-rate li i:hover {
+ cursor: pointer;
+ transform: scale(1.12);
+ -webkit-transform: scale(1.12)
+}
+
+.layui-rate[readonly] li i:hover {
+ cursor: default;
+ transform: scale(1)
+}
+
+.layui-colorpicker {
+ width: 26px;
+ height: 26px;
+ border: 1px solid #eee;
+ padding: 5px;
+ border-radius: 2px;
+ line-height: 24px;
+ display: inline-block;
+ cursor: pointer;
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-colorpicker:hover {
+ border-color: #d2d2d2
+}
+
+.layui-colorpicker.layui-colorpicker-lg {
+ width: 34px;
+ height: 34px;
+ line-height: 32px
+}
+
+.layui-colorpicker.layui-colorpicker-sm {
+ width: 24px;
+ height: 24px;
+ line-height: 22px
+}
+
+.layui-colorpicker.layui-colorpicker-xs {
+ width: 22px;
+ height: 22px;
+ line-height: 20px
+}
+
+.layui-colorpicker-trigger-bgcolor {
+ display: block;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);
+ border-radius: 2px
+}
+
+.layui-colorpicker-trigger-span {
+ display: block;
+ height: 100%;
+ box-sizing: border-box;
+ border: 1px solid rgba(0, 0, 0, .15);
+ border-radius: 2px;
+ text-align: center
+}
+
+.layui-colorpicker-trigger-i {
+ display: inline-block;
+ color: #FFF;
+ font-size: 12px
+}
+
+.layui-colorpicker-trigger-i.layui-icon-close {
+ color: #999
+}
+
+.layui-colorpicker-main {
+ position: absolute;
+ left: -999999px;
+ top: -999999px;
+ z-index: 66666666;
+ width: 280px;
+ margin: 5px 0;
+ padding: 7px;
+ background: #FFF;
+ border: 1px solid #d2d2d2;
+ border-radius: 2px;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, .12)
+}
+
+.layui-colorpicker-main-wrapper {
+ height: 180px;
+ position: relative
+}
+
+.layui-colorpicker-basis {
+ width: 260px;
+ height: 100%;
+ position: relative
+}
+
+.layui-colorpicker-basis-white {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background: linear-gradient(90deg, #FFF, hsla(0, 0%, 100%, 0))
+}
+
+.layui-colorpicker-basis-black {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background: linear-gradient(0deg, #000, transparent)
+}
+
+.layui-colorpicker-basis-cursor {
+ width: 10px;
+ height: 10px;
+ border: 1px solid #FFF;
+ border-radius: 50%;
+ position: absolute;
+ top: -3px;
+ right: -3px;
+ cursor: pointer
+}
+
+.layui-colorpicker-side {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 12px;
+ height: 100%;
+ background: linear-gradient(red, #FF0, #0F0, #0FF, #00F, #F0F, red)
+}
+
+.layui-colorpicker-side-slider {
+ width: 100%;
+ height: 5px;
+ box-shadow: 0 0 1px #888;
+ background: #FFF;
+ border-radius: 1px;
+ border: 1px solid #f0f0f0;
+ cursor: pointer;
+ position: absolute;
+ left: 0
+}
+
+.layui-colorpicker-main-alpha {
+ display: none;
+ height: 12px;
+ margin-top: 7px;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)
+}
+
+.layui-colorpicker-alpha-bgcolor {
+ height: 100%;
+ position: relative
+}
+
+.layui-colorpicker-alpha-slider {
+ width: 5px;
+ height: 100%;
+ box-shadow: 0 0 1px #888;
+ background: #FFF;
+ border-radius: 1px;
+ border: 1px solid #f0f0f0;
+ cursor: pointer;
+ position: absolute;
+ top: 0
+}
+
+.layui-colorpicker-main-pre {
+ padding-top: 7px;
+ font-size: 0
+}
+
+.layui-colorpicker-pre {
+ width: 20px;
+ height: 20px;
+ border-radius: 2px;
+ display: inline-block;
+ margin-left: 6px;
+ margin-bottom: 7px;
+ cursor: pointer
+}
+
+.layui-colorpicker-pre:nth-child(11n+1) {
+ margin-left: 0
+}
+
+.layui-colorpicker-pre-isalpha {
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)
+}
+
+.layui-colorpicker-pre.layui-this {
+ box-shadow: 0 0 3px 2px rgba(0, 0, 0, .15)
+}
+
+.layui-colorpicker-pre>div {
+ height: 100%;
+ border-radius: 2px
+}
+
+.layui-colorpicker-main-input {
+ text-align: right;
+ padding-top: 7px
+}
+
+.layui-colorpicker-main-input .layui-btn-container .layui-btn {
+ margin: 0 0 0 10px
+}
+
+.layui-colorpicker-main-input div.layui-inline {
+ float: left;
+ margin-right: 10px;
+ font-size: 14px
+}
+
+.layui-colorpicker-main-input input.layui-input {
+ width: 150px;
+ height: 30px;
+ color: #666
+}
+
+.layui-slider {
+ height: 4px;
+ background: #eee;
+ border-radius: 3px;
+ position: relative;
+ cursor: pointer
+}
+
+.layui-slider-bar {
+ border-radius: 3px;
+ position: absolute;
+ height: 100%
+}
+
+.layui-slider-step {
+ position: absolute;
+ top: 0;
+ width: 4px;
+ height: 4px;
+ border-radius: 50%;
+ background: #FFF;
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%)
+}
+
+.layui-slider-wrap {
+ width: 36px;
+ height: 36px;
+ position: absolute;
+ top: -16px;
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%);
+ z-index: 10;
+ text-align: center
+}
+
+.layui-slider-wrap-btn {
+ width: 12px;
+ height: 12px;
+ border-radius: 50%;
+ background: #FFF;
+ display: inline-block;
+ vertical-align: middle;
+ cursor: pointer;
+ transition: .3s
+}
+
+.layui-slider-wrap:after {
+ content: "";
+ height: 100%;
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-slider-wrap-btn.layui-slider-hover,
+.layui-slider-wrap-btn:hover {
+ transform: scale(1.2)
+}
+
+.layui-slider-wrap-btn.layui-disabled:hover {
+ transform: scale(1) !important
+}
+
+.layui-slider-tips {
+ position: absolute;
+ top: -42px;
+ z-index: 66666666;
+ white-space: nowrap;
+ display: none;
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%);
+ color: #FFF;
+ background: #000;
+ border-radius: 3px;
+ height: 25px;
+ line-height: 25px;
+ padding: 0 10px
+}
+
+.layui-slider-tips:after {
+ content: "";
+ position: absolute;
+ bottom: -12px;
+ left: 50%;
+ margin-left: -6px;
+ width: 0;
+ height: 0;
+ border-width: 6px;
+ border-style: solid;
+ border-color: #000 transparent transparent
+}
+
+.layui-slider-input {
+ width: 70px;
+ height: 32px;
+ border: 1px solid #eee;
+ border-radius: 3px;
+ font-size: 16px;
+ line-height: 32px;
+ position: absolute;
+ right: 0;
+ top: -14px
+}
+
+.layui-slider-input-btn {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 20px;
+ height: 100%;
+ border-left: 1px solid #eee
+}
+
+.layui-slider-input-btn i {
+ cursor: pointer;
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ width: 20px;
+ height: 50%;
+ font-size: 12px;
+ line-height: 16px;
+ text-align: center;
+ color: #999
+}
+
+.layui-slider-input-btn i:first-child {
+ top: 0;
+ border-bottom: 1px solid #eee
+}
+
+.layui-slider-input-txt {
+ height: 100%;
+ font-size: 14px
+}
+
+.layui-slider-input-txt input {
+ height: 100%;
+ border: none
+}
+
+.layui-slider-input-btn i:hover {
+ color: #009688
+}
+
+.layui-slider-vertical {
+ width: 4px;
+ margin-left: 33px
+}
+
+.layui-slider-vertical .layui-slider-bar {
+ width: 4px
+}
+
+.layui-slider-vertical .layui-slider-step {
+ top: auto;
+ left: 0;
+ -webkit-transform: translateY(50%);
+ transform: translateY(50%)
+}
+
+.layui-slider-vertical .layui-slider-wrap {
+ top: auto;
+ left: -16px;
+ -webkit-transform: translateY(50%);
+ transform: translateY(50%)
+}
+
+.layui-slider-vertical .layui-slider-tips {
+ top: auto;
+ left: 2px
+}
+
+@media \0screen {
+ .layui-slider-wrap-btn {
+ margin-left: -20px
+ }
+
+ .layui-slider-vertical .layui-slider-wrap-btn {
+ margin-left: 0;
+ margin-bottom: -20px
+ }
+
+ .layui-slider-vertical .layui-slider-tips {
+ margin-left: -8px
+ }
+
+ .layui-slider>span {
+ margin-left: 8px
+ }
+}
+
+.layui-tree {
+ line-height: 22px
+}
+
+.layui-tree .layui-form-checkbox {
+ margin: 0 !important
+}
+
+.layui-tree-set {
+ width: 100%;
+ position: relative
+}
+
+.layui-tree-pack {
+ display: none;
+ padding-left: 20px;
+ position: relative
+}
+
+.layui-tree-iconClick,
+.layui-tree-main {
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-tree-line .layui-tree-pack {
+ padding-left: 27px
+}
+
+.layui-tree-line .layui-tree-set .layui-tree-set:after {
+ content: "";
+ position: absolute;
+ top: 14px;
+ left: -9px;
+ width: 17px;
+ height: 0;
+ border-top: 1px dotted #c0c4cc
+}
+
+.layui-tree-entry {
+ position: relative;
+ padding: 3px 0;
+ height: 20px;
+ white-space: nowrap
+}
+
+.layui-tree-entry:hover {
+ background-color: #eee
+}
+
+.layui-tree-line .layui-tree-entry:hover {
+ background-color: rgba(0, 0, 0, 0)
+}
+
+.layui-tree-line .layui-tree-entry:hover .layui-tree-txt {
+ color: #999;
+ text-decoration: underline;
+ transition: .3s
+}
+
+.layui-tree-main {
+ cursor: pointer;
+ padding-right: 10px
+}
+
+.layui-tree-line .layui-tree-set:before {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: -9px;
+ width: 0;
+ height: 100%;
+ border-left: 1px dotted #c0c4cc
+}
+
+.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before {
+ height: 13px
+}
+
+.layui-tree-line .layui-tree-set.layui-tree-setHide:before {
+ height: 0
+}
+
+.layui-tree-iconClick {
+ position: relative;
+ height: 20px;
+ line-height: 20px;
+ margin: 0 10px;
+ color: #c0c4cc
+}
+
+.layui-tree-icon {
+ height: 12px;
+ line-height: 12px;
+ width: 12px;
+ text-align: center;
+ border: 1px solid #c0c4cc
+}
+
+.layui-tree-iconClick .layui-icon {
+ font-size: 18px
+}
+
+.layui-tree-icon .layui-icon {
+ font-size: 12px;
+ color: #666
+}
+
+.layui-tree-iconArrow {
+ padding: 0 5px
+}
+
+.layui-tree-iconArrow:after {
+ content: "";
+ position: absolute;
+ left: 4px;
+ top: 3px;
+ z-index: 100;
+ width: 0;
+ height: 0;
+ border-width: 5px;
+ border-style: solid;
+ border-color: transparent transparent transparent #c0c4cc;
+ transition: .5s
+}
+
+.layui-tree-btnGroup,
+.layui-tree-editInput {
+ position: relative;
+ vertical-align: middle;
+ display: inline-block
+}
+
+.layui-tree-spread>.layui-tree-entry>.layui-tree-iconClick>.layui-tree-iconArrow:after {
+ transform: rotate(90deg) translate(3px, 4px)
+}
+
+.layui-tree-txt {
+ display: inline-block;
+ vertical-align: middle;
+ color: #555
+}
+
+.layui-tree-search {
+ margin-bottom: 15px;
+ color: #666
+}
+
+.layui-tree-btnGroup .layui-icon {
+ display: inline-block;
+ vertical-align: middle;
+ padding: 0 2px;
+ cursor: pointer
+}
+
+.layui-tree-btnGroup .layui-icon:hover {
+ color: #999;
+ transition: .3s
+}
+
+.layui-tree-entry:hover .layui-tree-btnGroup {
+ visibility: visible
+}
+
+.layui-tree-editInput {
+ height: 20px;
+ line-height: 20px;
+ padding: 0 3px;
+ border: none;
+ background-color: rgba(0, 0, 0, .05)
+}
+
+.layui-tree-emptyText {
+ text-align: center;
+ color: #999
+}
+
+.layui-anim {
+ -webkit-animation-duration: .3s;
+ -webkit-animation-fill-mode: both;
+ animation-duration: .3s;
+ animation-fill-mode: both
+}
+
+.layui-anim.layui-icon {
+ display: inline-block
+}
+
+.layui-anim-loop {
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite
+}
+
+.layui-trans,
+.layui-trans a {
+ transition: all .2s;
+ -webkit-transition: all .2s
+}
+
+@-webkit-keyframes layui-rotate {
+ from {
+ -webkit-transform: rotate(0)
+ }
+
+ to {
+ -webkit-transform: rotate(360deg)
+ }
+}
+
+@keyframes layui-rotate {
+ from {
+ transform: rotate(0)
+ }
+
+ to {
+ transform: rotate(360deg)
+ }
+}
+
+.layui-anim-rotate {
+ -webkit-animation-name: layui-rotate;
+ animation-name: layui-rotate;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear
+}
+
+@-webkit-keyframes layui-up {
+ from {
+ -webkit-transform: translate3d(0, 100%, 0);
+ opacity: .3
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ opacity: 1
+ }
+}
+
+@keyframes layui-up {
+ from {
+ transform: translate3d(0, 100%, 0);
+ opacity: .3
+ }
+
+ to {
+ transform: translate3d(0, 0, 0);
+ opacity: 1
+ }
+}
+
+.layui-anim-up {
+ -webkit-animation-name: layui-up;
+ animation-name: layui-up
+}
+
+@-webkit-keyframes layui-upbit {
+ from {
+ -webkit-transform: translate3d(0, 15px, 0);
+ opacity: .3
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ opacity: 1
+ }
+}
+
+@keyframes layui-upbit {
+ from {
+ transform: translate3d(0, 15px, 0);
+ opacity: .3
+ }
+
+ to {
+ transform: translate3d(0, 0, 0);
+ opacity: 1
+ }
+}
+
+.layui-anim-upbit {
+ -webkit-animation-name: layui-upbit;
+ animation-name: layui-upbit
+}
+
+@keyframes layui-down {
+ 0% {
+ opacity: .3;
+ transform: translate3d(0, -100%, 0)
+ }
+
+ 100% {
+ opacity: 1;
+ transform: translate3d(0, 0, 0)
+ }
+}
+
+.layui-anim-down {
+ animation-name: layui-down
+}
+
+@keyframes layui-downbit {
+ 0% {
+ opacity: .3;
+ transform: translate3d(0, -5px, 0)
+ }
+
+ 100% {
+ opacity: 1;
+ transform: translate3d(0, 0, 0)
+ }
+}
+
+.layui-anim-downbit {
+ animation-name: layui-downbit
+}
+
+@-webkit-keyframes layui-scale {
+ 0% {
+ opacity: .3;
+ -webkit-transform: scale(.5)
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: scale(1)
+ }
+}
+
+@keyframes layui-scale {
+ 0% {
+ opacity: .3;
+ -ms-transform: scale(.5);
+ transform: scale(.5)
+ }
+
+ 100% {
+ opacity: 1;
+ -ms-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+.layui-anim-scale {
+ -webkit-animation-name: layui-scale;
+ animation-name: layui-scale
+}
+
+@-webkit-keyframes layui-scale-spring {
+ 0% {
+ opacity: .5;
+ -webkit-transform: scale(.5)
+ }
+
+ 80% {
+ opacity: .8;
+ -webkit-transform: scale(1.1)
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: scale(1)
+ }
+}
+
+@keyframes layui-scale-spring {
+ 0% {
+ opacity: .5;
+ transform: scale(.5)
+ }
+
+ 80% {
+ opacity: .8;
+ transform: scale(1.1)
+ }
+
+ 100% {
+ opacity: 1;
+ transform: scale(1)
+ }
+}
+
+.layui-anim-scaleSpring {
+ -webkit-animation-name: layui-scale-spring;
+ animation-name: layui-scale-spring
+}
+
+@keyframes layui-scalesmall {
+ 0% {
+ opacity: .3;
+ transform: scale(1.5)
+ }
+
+ 100% {
+ opacity: 1;
+ transform: scale(1)
+ }
+}
+
+.layui-anim-scalesmall {
+ animation-name: layui-scalesmall
+}
+
+@keyframes layui-scalesmall-spring {
+ 0% {
+ opacity: .3;
+ transform: scale(1.5)
+ }
+
+ 80% {
+ opacity: .8;
+ transform: scale(.9)
+ }
+
+ 100% {
+ opacity: 1;
+ transform: scale(1)
+ }
+}
+
+.layui-anim-scalesmall-spring {
+ animation-name: layui-scalesmall-spring
+}
+
+@-webkit-keyframes layui-fadein {
+ 0% {
+ opacity: 0
+ }
+
+ 100% {
+ opacity: 1
+ }
+}
+
+@keyframes layui-fadein {
+ 0% {
+ opacity: 0
+ }
+
+ 100% {
+ opacity: 1
+ }
+}
+
+.layui-anim-fadein {
+ -webkit-animation-name: layui-fadein;
+ animation-name: layui-fadein
+}
+
+@-webkit-keyframes layui-fadeout {
+ 0% {
+ opacity: 1
+ }
+
+ 100% {
+ opacity: 0
+ }
+}
+
+@keyframes layui-fadeout {
+ 0% {
+ opacity: 1
+ }
+
+ 100% {
+ opacity: 0
+ }
+}
+
+.layui-anim-fadeout {
+ -webkit-animation-name: layui-fadeout;
+ animation-name: layui-fadeout
+}
\ No newline at end of file
diff --git a/src/font/iconfont.eot b/src/font/iconfont.eot
new file mode 100644
index 0000000000000000000000000000000000000000..7bc337451f6b30351732415a5cb950f7a8e5ad89
GIT binary patch
literal 52080
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
literal 0
HcmV?d00001
diff --git a/src/font/iconfont.svg b/src/font/iconfont.svg
new file mode 100644
index 00000000..b64f7915
--- /dev/null
+++ b/src/font/iconfont.svg
@@ -0,0 +1,387 @@
+
+
+
diff --git a/src/font/iconfont.ttf b/src/font/iconfont.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..8661b19ee649d7e7be0ba65c5c844ef62741d919
GIT binary patch
literal 51904
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